Commit 05bd831fcdf4ce08ae5b832cfe03a303245fb135
Committed by
Jeff Garzik
1 parent
176f65f3ef
Exists in
master
and in
4 other branches
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
drivers/net/ni52.c
... | ... | @@ -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); |