Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

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>

authored by

Al Viro and committed by
Jeff Garzik
05bd831f 176f65f3

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