aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/isdn/hisax/s0box.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/isdn/hisax/s0box.c')
-rw-r--r--drivers/isdn/hisax/s0box.c132
1 files changed, 66 insertions, 66 deletions
diff --git a/drivers/isdn/hisax/s0box.c b/drivers/isdn/hisax/s0box.c
index 16d00b555c8c..383c4e7ce50b 100644
--- a/drivers/isdn/hisax/s0box.c
+++ b/drivers/isdn/hisax/s0box.c
@@ -20,73 +20,73 @@ static const char *s0box_revision = "$Revision: 2.6.2.4 $";
20 20
21static inline void 21static inline void
22writereg(unsigned int padr, signed int addr, u_char off, u_char val) { 22writereg(unsigned int padr, signed int addr, u_char off, u_char val) {
23 outb_p(0x1c,padr+2); 23 outb_p(0x1c, padr + 2);
24 outb_p(0x14,padr+2); 24 outb_p(0x14, padr + 2);
25 outb_p((addr+off)&0x7f,padr); 25 outb_p((addr + off) & 0x7f, padr);
26 outb_p(0x16,padr+2); 26 outb_p(0x16, padr + 2);
27 outb_p(val,padr); 27 outb_p(val, padr);
28 outb_p(0x17,padr+2); 28 outb_p(0x17, padr + 2);
29 outb_p(0x14,padr+2); 29 outb_p(0x14, padr + 2);
30 outb_p(0x1c,padr+2); 30 outb_p(0x1c, padr + 2);
31} 31}
32 32
33static u_char nibtab[] = { 1, 9, 5, 0xd, 3, 0xb, 7, 0xf, 33static u_char nibtab[] = { 1, 9, 5, 0xd, 3, 0xb, 7, 0xf,
34 0, 0, 0, 0, 0, 0, 0, 0, 34 0, 0, 0, 0, 0, 0, 0, 0,
35 0, 8, 4, 0xc, 2, 0xa, 6, 0xe } ; 35 0, 8, 4, 0xc, 2, 0xa, 6, 0xe };
36 36
37static inline u_char 37static inline u_char
38readreg(unsigned int padr, signed int addr, u_char off) { 38readreg(unsigned int padr, signed int addr, u_char off) {
39 register u_char n1, n2; 39 register u_char n1, n2;
40 40
41 outb_p(0x1c,padr+2); 41 outb_p(0x1c, padr + 2);
42 outb_p(0x14,padr+2); 42 outb_p(0x14, padr + 2);
43 outb_p((addr+off)|0x80,padr); 43 outb_p((addr + off) | 0x80, padr);
44 outb_p(0x16,padr+2); 44 outb_p(0x16, padr + 2);
45 outb_p(0x17,padr+2); 45 outb_p(0x17, padr + 2);
46 n1 = (inb_p(padr+1) >> 3) & 0x17; 46 n1 = (inb_p(padr + 1) >> 3) & 0x17;
47 outb_p(0x16,padr+2); 47 outb_p(0x16, padr + 2);
48 n2 = (inb_p(padr+1) >> 3) & 0x17; 48 n2 = (inb_p(padr + 1) >> 3) & 0x17;
49 outb_p(0x14,padr+2); 49 outb_p(0x14, padr + 2);
50 outb_p(0x1c,padr+2); 50 outb_p(0x1c, padr + 2);
51 return nibtab[n1] | (nibtab[n2] << 4); 51 return nibtab[n1] | (nibtab[n2] << 4);
52} 52}
53 53
54static inline void 54static inline void
55read_fifo(unsigned int padr, signed int adr, u_char * data, int size) 55read_fifo(unsigned int padr, signed int adr, u_char *data, int size)
56{ 56{
57 int i; 57 int i;
58 register u_char n1, n2; 58 register u_char n1, n2;
59 59
60 outb_p(0x1c, padr+2); 60 outb_p(0x1c, padr + 2);
61 outb_p(0x14, padr+2); 61 outb_p(0x14, padr + 2);
62 outb_p(adr|0x80, padr); 62 outb_p(adr | 0x80, padr);
63 outb_p(0x16, padr+2); 63 outb_p(0x16, padr + 2);
64 for (i=0; i<size; i++) { 64 for (i = 0; i < size; i++) {
65 outb_p(0x17, padr+2); 65 outb_p(0x17, padr + 2);
66 n1 = (inb_p(padr+1) >> 3) & 0x17; 66 n1 = (inb_p(padr + 1) >> 3) & 0x17;
67 outb_p(0x16,padr+2); 67 outb_p(0x16, padr + 2);
68 n2 = (inb_p(padr+1) >> 3) & 0x17; 68 n2 = (inb_p(padr + 1) >> 3) & 0x17;
69 *(data++)=nibtab[n1] | (nibtab[n2] << 4); 69 *(data++) = nibtab[n1] | (nibtab[n2] << 4);
70 } 70 }
71 outb_p(0x14,padr+2); 71 outb_p(0x14, padr + 2);
72 outb_p(0x1c,padr+2); 72 outb_p(0x1c, padr + 2);
73 return; 73 return;
74} 74}
75 75
76static inline void 76static inline void
77write_fifo(unsigned int padr, signed int adr, u_char * data, int size) 77write_fifo(unsigned int padr, signed int adr, u_char *data, int size)
78{ 78{
79 int i; 79 int i;
80 outb_p(0x1c, padr+2); 80 outb_p(0x1c, padr + 2);
81 outb_p(0x14, padr+2); 81 outb_p(0x14, padr + 2);
82 outb_p(adr&0x7f, padr); 82 outb_p(adr & 0x7f, padr);
83 for (i=0; i<size; i++) { 83 for (i = 0; i < size; i++) {
84 outb_p(0x16, padr+2); 84 outb_p(0x16, padr + 2);
85 outb_p(*(data++), padr); 85 outb_p(*(data++), padr);
86 outb_p(0x17, padr+2); 86 outb_p(0x17, padr + 2);
87 } 87 }
88 outb_p(0x14,padr+2); 88 outb_p(0x14, padr + 2);
89 outb_p(0x1c,padr+2); 89 outb_p(0x1c, padr + 2);
90 return; 90 return;
91} 91}
92 92
@@ -105,13 +105,13 @@ WriteISAC(struct IsdnCardState *cs, u_char offset, u_char value)
105} 105}
106 106
107static void 107static void
108ReadISACfifo(struct IsdnCardState *cs, u_char * data, int size) 108ReadISACfifo(struct IsdnCardState *cs, u_char *data, int size)
109{ 109{
110 read_fifo(cs->hw.teles3.cfg_reg, cs->hw.teles3.isacfifo, data, size); 110 read_fifo(cs->hw.teles3.cfg_reg, cs->hw.teles3.isacfifo, data, size);
111} 111}
112 112
113static void 113static void
114WriteISACfifo(struct IsdnCardState *cs, u_char * data, int size) 114WriteISACfifo(struct IsdnCardState *cs, u_char *data, int size)
115{ 115{
116 write_fifo(cs->hw.teles3.cfg_reg, cs->hw.teles3.isacfifo, data, size); 116 write_fifo(cs->hw.teles3.cfg_reg, cs->hw.teles3.isacfifo, data, size);
117} 117}
@@ -150,11 +150,11 @@ s0box_interrupt(int intno, void *dev_id)
150 150
151 spin_lock_irqsave(&cs->lock, flags); 151 spin_lock_irqsave(&cs->lock, flags);
152 val = readreg(cs->hw.teles3.cfg_reg, cs->hw.teles3.hscx[1], HSCX_ISTA); 152 val = readreg(cs->hw.teles3.cfg_reg, cs->hw.teles3.hscx[1], HSCX_ISTA);
153 Start_HSCX: 153Start_HSCX:
154 if (val) 154 if (val)
155 hscx_int_main(cs, val); 155 hscx_int_main(cs, val);
156 val = readreg(cs->hw.teles3.cfg_reg, cs->hw.teles3.isac, ISAC_ISTA); 156 val = readreg(cs->hw.teles3.cfg_reg, cs->hw.teles3.isac, ISAC_ISTA);
157 Start_ISAC: 157Start_ISAC:
158 if (val) 158 if (val)
159 isac_interrupt(cs, val); 159 isac_interrupt(cs, val);
160 count++; 160 count++;
@@ -194,20 +194,20 @@ S0Box_card_msg(struct IsdnCardState *cs, int mt, void *arg)
194 u_long flags; 194 u_long flags;
195 195
196 switch (mt) { 196 switch (mt) {
197 case CARD_RESET: 197 case CARD_RESET:
198 break; 198 break;
199 case CARD_RELEASE: 199 case CARD_RELEASE:
200 release_io_s0box(cs); 200 release_io_s0box(cs);
201 break; 201 break;
202 case CARD_INIT: 202 case CARD_INIT:
203 spin_lock_irqsave(&cs->lock, flags); 203 spin_lock_irqsave(&cs->lock, flags);
204 inithscxisac(cs, 3); 204 inithscxisac(cs, 3);
205 spin_unlock_irqrestore(&cs->lock, flags); 205 spin_unlock_irqrestore(&cs->lock, flags);
206 break; 206 break;
207 case CARD_TEST: 207 case CARD_TEST:
208 break; 208 break;
209 } 209 }
210 return(0); 210 return (0);
211} 211}
212 212
213int __devinit 213int __devinit
@@ -229,17 +229,17 @@ setup_s0box(struct IsdnCard *card)
229 cs->hw.teles3.hscxfifo[0] = cs->hw.teles3.hscx[0] + 0x3e; 229 cs->hw.teles3.hscxfifo[0] = cs->hw.teles3.hscx[0] + 0x3e;
230 cs->hw.teles3.hscxfifo[1] = cs->hw.teles3.hscx[1] + 0x3e; 230 cs->hw.teles3.hscxfifo[1] = cs->hw.teles3.hscx[1] + 0x3e;
231 cs->irq = card->para[0]; 231 cs->irq = card->para[0];
232 if (!request_region(cs->hw.teles3.cfg_reg,8, "S0Box parallel I/O")) { 232 if (!request_region(cs->hw.teles3.cfg_reg, 8, "S0Box parallel I/O")) {
233 printk(KERN_WARNING "HiSax: S0Box ports %x-%x already in use\n", 233 printk(KERN_WARNING "HiSax: S0Box ports %x-%x already in use\n",
234 cs->hw.teles3.cfg_reg, 234 cs->hw.teles3.cfg_reg,
235 cs->hw.teles3.cfg_reg + 7); 235 cs->hw.teles3.cfg_reg + 7);
236 return 0; 236 return 0;
237 } 237 }
238 printk(KERN_INFO "HiSax: S0Box config irq:%d isac:0x%x cfg:0x%x\n", 238 printk(KERN_INFO "HiSax: S0Box config irq:%d isac:0x%x cfg:0x%x\n",
239 cs->irq, 239 cs->irq,
240 cs->hw.teles3.isac, cs->hw.teles3.cfg_reg); 240 cs->hw.teles3.isac, cs->hw.teles3.cfg_reg);
241 printk(KERN_INFO "HiSax: hscx A:0x%x hscx B:0x%x\n", 241 printk(KERN_INFO "HiSax: hscx A:0x%x hscx B:0x%x\n",
242 cs->hw.teles3.hscx[0], cs->hw.teles3.hscx[1]); 242 cs->hw.teles3.hscx[0], cs->hw.teles3.hscx[1]);
243 setup_isac(cs); 243 setup_isac(cs);
244 cs->readisac = &ReadISAC; 244 cs->readisac = &ReadISAC;
245 cs->writeisac = &WriteISAC; 245 cs->writeisac = &WriteISAC;