Commit 05bd831fcdf4ce08ae5b832cfe03a303245fb135

Authored by Al Viro
Committed by Jeff Garzik
1 parent 176f65f3ef

ni52: more unbreaking

missed read*/write* plus a bunch of wrong-sized ones...

Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Signed-off-by: Jeff Garzik <jeff@garzik.org>

Showing 1 changed file with 16 additions and 15 deletions Side-by-side Diff

... ... @@ -134,7 +134,7 @@
134 134 #define ni_disint() { outb(0, dev->base_addr + NI52_INTDIS); }
135 135 #define ni_enaint() { outb(0, dev->base_addr + NI52_INTENA); }
136 136  
137   -#define make32(ptr16) (p->memtop + (short) (ptr16))
  137 +#define make32(ptr16) ((void __iomem *)(p->memtop + (short) (ptr16)))
138 138 #define make24(ptr32) ((char __iomem *)(ptr32)) - p->base
139 139 #define make16(ptr32) ((unsigned short) ((char __iomem *)(ptr32)\
140 140 - p->memtop))
... ... @@ -241,7 +241,8 @@
241 241 udelay(4);
242 242 if (i == 16383) {
243 243 printk(KERN_ERR "%s: scb_cmd (ruc) timed out: %04x,%04x .. disabling i82586!!\n",
244   - dev->name, p->scb->cmd_ruc, p->scb->rus);
  244 + dev->name, readb(&p->scb->cmd_ruc),
  245 + readb(&p->scb->rus));
245 246 if (!p->reset) {
246 247 p->reset = 1;
247 248 ni_reset586();
... ... @@ -627,7 +628,7 @@
627 628 writeb(0x01, &cfg_cmd->promisc);
628 629 writeb(0x00, &cfg_cmd->carr_coll);
629 630 writew(make16(cfg_cmd), &p->scb->cbl_offset);
630   - writew(0, &p->scb->cmd_ruc);
  631 + writeb(0, &p->scb->cmd_ruc);
631 632  
632 633 writeb(CUC_START, &p->scb->cmd_cuc); /* cmd.-unit start */
633 634 ni_attn586();
... ... @@ -898,7 +899,7 @@
898 899 if (readb(&p->scb->rus) & RU_SUSPEND) {
899 900 /* special case: RU_SUSPEND */
900 901 wait_for_scb_cmd(dev);
901   - p->scb->cmd_ruc = RUC_RESUME;
  902 + writeb(RUC_RESUME, &p->scb->cmd_ruc);
902 903 ni_attn586();
903 904 wait_for_scb_cmd_ruc(dev);
904 905 } else {
... ... @@ -925,7 +926,7 @@
925 926  
926 927 /* Wait for ack. (ni52_xmt_int can be faster than ack!!) */
927 928 wait_for_scb_cmd(dev);
928   - if (p->scb->cmd_cuc) { /* timed out? */
  929 + if (readb(&p->scb->cmd_cuc)) { /* timed out? */
929 930 printk(KERN_ERR "%s: Acknowledge timed out.\n",
930 931 dev->name);
931 932 ni_disint();
... ... @@ -955,7 +956,7 @@
955 956 printk("R");
956 957  
957 958 for (; (status = readb(&p->rfd_top->stat_high)) & RFD_COMPL;) {
958   - rbd = (struct rbd_struct __iomem *) make32(p->rfd_top->rbd_offset);
  959 + rbd = make32(readw(&p->rfd_top->rbd_offset));
959 960 if (status & RFD_OK) { /* frame received without error? */
960 961 totlen = readw(&rbd->status);
961 962 if (totlen & RBD_LAST) {
... ... @@ -966,7 +967,7 @@
966 967 if (skb != NULL) {
967 968 skb_reserve(skb, 2);
968 969 skb_put(skb, totlen);
969   - skb_copy_to_linear_data(skb, p->base + (unsigned long) rbd->buffer, totlen);
  970 + memcpy_fromio(skb->data, p->base + readl(&rbd->buffer), totlen);
970 971 skb->protocol = eth_type_trans(skb, dev);
971 972 netif_rx(skb);
972 973 dev->last_rx = jiffies;
... ... @@ -985,7 +986,7 @@
985 986 break;
986 987 }
987 988 writew(0, &rbd->status);
988   - rbd = (struct rbd_struct __iomem *) make32(readl(&rbd->next));
  989 + rbd = make32(readw(&rbd->next));
989 990 }
990 991 totlen += rstat & RBD_MASK;
991 992 writew(0, &rbd->status);
... ... @@ -1003,7 +1004,7 @@
1003 1004 writew(0xffff, &p->rfd_top->rbd_offset);
1004 1005 writeb(0, &p->rfd_last->last); /* delete RFD_SUSP */
1005 1006 p->rfd_last = p->rfd_top;
1006   - p->rfd_top = (struct rfd_struct __iomem *) make32(p->rfd_top->next); /* step to next RFD */
  1007 + p->rfd_top = make32(readw(&p->rfd_top->next)); /* step to next RFD */
1007 1008 writew(make16(p->rfd_top), &p->scb->rfa_offset);
1008 1009  
1009 1010 if (debuglevel > 0)
... ... @@ -1052,7 +1053,8 @@
1052 1053 /* maybe add a check here, before restarting the RU */
1053 1054 startrecv586(dev); /* restart RU */
1054 1055  
1055   - printk(KERN_ERR "%s: Receive-Unit restarted. Status: %04x\n", dev->name, p->scb->rus);
  1056 + printk(KERN_ERR "%s: Receive-Unit restarted. Status: %04x\n",
  1057 + dev->name, readb(&p->scb->rus));
1056 1058  
1057 1059 }
1058 1060  
1059 1061  
... ... @@ -1184,12 +1186,11 @@
1184 1186  
1185 1187 netif_stop_queue(dev);
1186 1188  
1187   - skb_copy_from_linear_data(skb, (char *)p->xmit_cbuffs[p->xmit_count],
1188   - skb->len);
  1189 + memcpy_toio(p->xmit_cbuffs[p->xmit_count], skb->data, skb->len);
1189 1190 len = skb->len;
1190 1191 if (len < ETH_ZLEN) {
1191 1192 len = ETH_ZLEN;
1192   - memset((char *)p->xmit_cbuffs[p->xmit_count]+skb->len, 0,
  1193 + memset_io(p->xmit_cbuffs[p->xmit_count]+skb->len, 0,
1193 1194 len - skb->len);
1194 1195 }
1195 1196  
1196 1197  
... ... @@ -1197,14 +1198,14 @@
1197 1198 # ifdef NO_NOPCOMMANDS
1198 1199  
1199 1200 #ifdef DEBUG
1200   - if (p->scb->cus & CU_ACTIVE) {
  1201 + if (readb(&p->scb->cus) & CU_ACTIVE) {
1201 1202 printk(KERN_ERR "%s: Hmmm .. CU is still running and we wanna send a new packet.\n", dev->name);
1202 1203 printk(KERN_ERR "%s: stat: %04x %04x\n",
1203 1204 dev->name, readb(&p->scb->cus),
1204 1205 readw(&p->xmit_cmds[0]->cmd_status));
1205 1206 }
1206 1207 #endif
1207   - writew(TBD_LAST | len, &p->xmit_buffs[0]->size);;
  1208 + writew(TBD_LAST | len, &p->xmit_buffs[0]->size);
1208 1209 for (i = 0; i < 16; i++) {
1209 1210 writew(0, &p->xmit_cmds[0]->cmd_status);
1210 1211 wait_for_scb_cmd(dev);