1 /* $Id: eicon_isa.h,v 1.1.4.1 2001/11/20 14:19:35 kai Exp $
3 * ISDN low-level module for Eicon active ISDN-Cards.
5 * Copyright 1998 by Fritz Elfert (fritz@isdn4linux.de)
6 * Copyright 1998-2000 by Armin Schindler (mac@melware.de)
7 * Copyright 1999,2000 Cytronics & Melware (info@melware.de)
9 * This software may be used and distributed according to the terms
10 * of the GNU General Public License, incorporated herein by reference.
18 #include <linux/config.h>
20 /* Factory defaults for ISA-Cards */
21 #define EICON_ISA_MEMBASE 0xd0000
22 #define EICON_ISA_IRQ 3
23 /* shmem offset for Quadro parts */
24 #define EICON_ISA_QOFFSET 0x0800
27 __u16 length __attribute__ ((packed)); /* length of data/parameter field */
28 __u8 P[270]; /* data/parameter field */
31 /* General communication buffer */
33 __u8 Req; /* request register */
34 __u8 ReqId; /* request task/entity identification */
35 __u8 Rc; /* return code register */
36 __u8 RcId; /* return code task/entity identification */
37 __u8 Ind; /* Indication register */
38 __u8 IndId; /* Indication task/entity identification */
39 __u8 IMask; /* Interrupt Mask Flag */
40 __u8 RNR; /* Receiver Not Ready (set by PC) */
41 __u8 XLock; /* XBuffer locked Flag */
42 __u8 Int; /* ISDN interrupt */
43 __u8 ReqCh; /* Channel field for layer-3 Requests */
44 __u8 RcCh; /* Channel field for layer-3 Returncodes */
45 __u8 IndCh; /* Channel field for layer-3 Indications */
46 __u8 MInd; /* more data indication field */
47 __u16 MLength; /* more data total packet length */
48 __u8 ReadyInt; /* request field for ready interrupt */
49 __u8 Reserved[12]; /* reserved space */
50 __u8 IfType; /* 1 = 16k-Interface */
51 __u16 Signature __attribute__ ((packed)); /* ISDN adapter Signature */
52 eicon_scom_PBUFFER XBuffer; /* Transmit Buffer */
53 eicon_scom_PBUFFER RBuffer; /* Receive Buffer */
56 /* struct for downloading firmware */
62 __u16 ebit __attribute__ ((packed));
63 __u32 eloc __attribute__ ((packed));
65 __u16 signature __attribute__ ((packed));
72 unsigned char c[0x400];
83 unsigned long physmem; /* physical memory address */
85 int io; /* IO-port for MCA brand */
86 #endif /* CONFIG_MCA */
88 eicon_isa_shmem* shmem; /* Shared-memory area */
89 unsigned char* intack; /* Int-Acknowledge */
90 unsigned char* stopcpu; /* Writing here stops CPU */
91 unsigned char* startcpu; /* Writing here starts CPU */
92 unsigned char type; /* card type */
93 int channels; /* No. of channels */
94 unsigned char irqprobe; /* Flag: IRQ-probing */
95 unsigned char mvalid; /* Flag: Memory is valid */
96 unsigned char ivalid; /* Flag: IRQ is valid */
97 unsigned char master; /* Flag: Card ist Quadro 1/4 */
100 /* Offsets for special locations on standard cards */
101 #define INTACK 0x03fe
102 #define STOPCPU 0x0400
103 #define STARTCPU 0x0401
104 #define RAMSIZE 0x0400
105 /* Offsets for special location on PRI card */
106 #define INTACK_P 0x3ffc
107 #define STOPCPU_P 0x3ffe
108 #define STARTCPU_P 0x3fff
109 #define RAMSIZE_P 0x4000
112 extern int eicon_isa_load(eicon_isa_card *card, eicon_isa_codebuf *cb);
113 extern int eicon_isa_bootload(eicon_isa_card *card, eicon_isa_codebuf *cb);
114 extern void eicon_isa_release(eicon_isa_card *card);
115 extern void eicon_isa_printpar(eicon_isa_card *card);
116 extern void eicon_isa_transmit(eicon_isa_card *card);
117 extern int eicon_isa_find_card(int Mem, int Irq, char * Id);
119 #endif /* __KERNEL__ */
121 #endif /* eicon_isa_h */