diff options
Diffstat (limited to 'drivers/net')
-rw-r--r-- | drivers/net/3c527.h | 50 | ||||
-rw-r--r-- | drivers/net/Kconfig | 2 | ||||
-rw-r--r-- | drivers/net/cs89x0.c | 138 | ||||
-rw-r--r-- | drivers/net/cs89x0.h | 19 | ||||
-rw-r--r-- | drivers/net/hamradio/mkiss.c | 1 | ||||
-rw-r--r-- | drivers/net/irda/vlsi_ir.h | 4 | ||||
-rw-r--r-- | drivers/net/smc91x.c | 5 | ||||
-rw-r--r-- | drivers/net/smc91x.h | 18 | ||||
-rw-r--r-- | drivers/net/wan/sdla.c | 6 |
9 files changed, 145 insertions, 98 deletions
diff --git a/drivers/net/3c527.h b/drivers/net/3c527.h index c10f009ce9b6..53b5b071df08 100644 --- a/drivers/net/3c527.h +++ b/drivers/net/3c527.h | |||
@@ -32,43 +32,43 @@ | |||
32 | 32 | ||
33 | struct mc32_mailbox | 33 | struct mc32_mailbox |
34 | { | 34 | { |
35 | u16 mbox __attribute((packed)); | 35 | u16 mbox; |
36 | u16 data[1] __attribute((packed)); | 36 | u16 data[1]; |
37 | }; | 37 | } __attribute((packed)); |
38 | 38 | ||
39 | struct skb_header | 39 | struct skb_header |
40 | { | 40 | { |
41 | u8 status __attribute((packed)); | 41 | u8 status; |
42 | u8 control __attribute((packed)); | 42 | u8 control; |
43 | u16 next __attribute((packed)); /* Do not change! */ | 43 | u16 next; /* Do not change! */ |
44 | u16 length __attribute((packed)); | 44 | u16 length; |
45 | u32 data __attribute((packed)); | 45 | u32 data; |
46 | }; | 46 | } __attribute((packed)); |
47 | 47 | ||
48 | struct mc32_stats | 48 | struct mc32_stats |
49 | { | 49 | { |
50 | /* RX Errors */ | 50 | /* RX Errors */ |
51 | u32 rx_crc_errors __attribute((packed)); | 51 | u32 rx_crc_errors; |
52 | u32 rx_alignment_errors __attribute((packed)); | 52 | u32 rx_alignment_errors; |
53 | u32 rx_overrun_errors __attribute((packed)); | 53 | u32 rx_overrun_errors; |
54 | u32 rx_tooshort_errors __attribute((packed)); | 54 | u32 rx_tooshort_errors; |
55 | u32 rx_toolong_errors __attribute((packed)); | 55 | u32 rx_toolong_errors; |
56 | u32 rx_outofresource_errors __attribute((packed)); | 56 | u32 rx_outofresource_errors; |
57 | 57 | ||
58 | u32 rx_discarded __attribute((packed)); /* via card pattern match filter */ | 58 | u32 rx_discarded; /* via card pattern match filter */ |
59 | 59 | ||
60 | /* TX Errors */ | 60 | /* TX Errors */ |
61 | u32 tx_max_collisions __attribute((packed)); | 61 | u32 tx_max_collisions; |
62 | u32 tx_carrier_errors __attribute((packed)); | 62 | u32 tx_carrier_errors; |
63 | u32 tx_underrun_errors __attribute((packed)); | 63 | u32 tx_underrun_errors; |
64 | u32 tx_cts_errors __attribute((packed)); | 64 | u32 tx_cts_errors; |
65 | u32 tx_timeout_errors __attribute((packed)) ; | 65 | u32 tx_timeout_errors; |
66 | 66 | ||
67 | /* various cruft */ | 67 | /* various cruft */ |
68 | u32 dataA[6] __attribute((packed)); | 68 | u32 dataA[6]; |
69 | u16 dataB[5] __attribute((packed)); | 69 | u16 dataB[5]; |
70 | u32 dataC[14] __attribute((packed)); | 70 | u32 dataC[14]; |
71 | }; | 71 | } __attribute((packed)); |
72 | 72 | ||
73 | #define STATUS_MASK 0x0F | 73 | #define STATUS_MASK 0x0F |
74 | #define COMPLETED (1<<7) | 74 | #define COMPLETED (1<<7) |
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index e2fa29b612cd..1960961bf28e 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
@@ -1374,7 +1374,7 @@ config FORCEDETH | |||
1374 | 1374 | ||
1375 | config CS89x0 | 1375 | config CS89x0 |
1376 | tristate "CS89x0 support" | 1376 | tristate "CS89x0 support" |
1377 | depends on (NET_PCI && (ISA || ARCH_IXDP2X01)) || ARCH_PNX0105 | 1377 | depends on NET_PCI && (ISA || ARCH_IXDP2X01 || ARCH_PNX010X) |
1378 | ---help--- | 1378 | ---help--- |
1379 | Support for CS89x0 chipset based Ethernet cards. If you have a | 1379 | Support for CS89x0 chipset based Ethernet cards. If you have a |
1380 | network (Ethernet) card of this type, say Y and read the | 1380 | network (Ethernet) card of this type, say Y and read the |
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index a6078ad9b654..907c01009746 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c | |||
@@ -175,7 +175,7 @@ static unsigned int cs8900_irq_map[] = {1,0,0,0}; | |||
175 | #include <asm/irq.h> | 175 | #include <asm/irq.h> |
176 | static unsigned int netcard_portlist[] __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0}; | 176 | static unsigned int netcard_portlist[] __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0}; |
177 | static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0}; | 177 | static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0}; |
178 | #elif defined(CONFIG_ARCH_PNX0105) | 178 | #elif defined(CONFIG_ARCH_PNX010X) |
179 | #include <asm/irq.h> | 179 | #include <asm/irq.h> |
180 | #include <asm/arch/gpio.h> | 180 | #include <asm/arch/gpio.h> |
181 | #define CIRRUS_DEFAULT_BASE IO_ADDRESS(EXT_STATIC2_s0_BASE + 0x200000) /* = Physical address 0x48200000 */ | 181 | #define CIRRUS_DEFAULT_BASE IO_ADDRESS(EXT_STATIC2_s0_BASE + 0x200000) /* = Physical address 0x48200000 */ |
@@ -338,30 +338,86 @@ out: | |||
338 | } | 338 | } |
339 | #endif | 339 | #endif |
340 | 340 | ||
341 | #if defined(CONFIG_ARCH_IXDP2X01) | ||
341 | static int | 342 | static int |
342 | readreg(struct net_device *dev, int portno) | 343 | readword(unsigned long base_addr, int portno) |
343 | { | 344 | { |
344 | outw(portno, dev->base_addr + ADD_PORT); | 345 | return (u16)__raw_readl(base_addr + (portno << 1)); |
345 | return inw(dev->base_addr + DATA_PORT); | ||
346 | } | 346 | } |
347 | 347 | ||
348 | static void | 348 | static void |
349 | writereg(struct net_device *dev, int portno, int value) | 349 | writeword(unsigned long base_addr, int portno, int value) |
350 | { | 350 | { |
351 | outw(portno, dev->base_addr + ADD_PORT); | 351 | __raw_writel((u16)value, base_addr + (portno << 1)); |
352 | outw(value, dev->base_addr + DATA_PORT); | 352 | } |
353 | #else | ||
354 | #if defined(CONFIG_ARCH_PNX010X) | ||
355 | static int | ||
356 | readword(unsigned long base_addr, int portno) | ||
357 | { | ||
358 | return inw(base_addr + (portno << 1)); | ||
359 | } | ||
360 | |||
361 | static void | ||
362 | writeword(unsigned long base_addr, int portno, int value) | ||
363 | { | ||
364 | outw(value, base_addr + (portno << 1)); | ||
365 | } | ||
366 | #else | ||
367 | static int | ||
368 | readword(unsigned long base_addr, int portno) | ||
369 | { | ||
370 | return inw(base_addr + portno); | ||
371 | } | ||
372 | |||
373 | static void | ||
374 | writeword(unsigned long base_addr, int portno, int value) | ||
375 | { | ||
376 | outw(value, base_addr + portno); | ||
377 | } | ||
378 | #endif | ||
379 | #endif | ||
380 | |||
381 | static void | ||
382 | readwords(unsigned long base_addr, int portno, void *buf, int length) | ||
383 | { | ||
384 | u8 *buf8 = (u8 *)buf; | ||
385 | |||
386 | do { | ||
387 | u32 tmp32; | ||
388 | |||
389 | tmp32 = readword(base_addr, portno); | ||
390 | *buf8++ = (u8)tmp32; | ||
391 | *buf8++ = (u8)(tmp32 >> 8); | ||
392 | } while (--length); | ||
393 | } | ||
394 | |||
395 | static void | ||
396 | writewords(unsigned long base_addr, int portno, void *buf, int length) | ||
397 | { | ||
398 | u8 *buf8 = (u8 *)buf; | ||
399 | |||
400 | do { | ||
401 | u32 tmp32; | ||
402 | |||
403 | tmp32 = *buf8++; | ||
404 | tmp32 |= (*buf8++) << 8; | ||
405 | writeword(base_addr, portno, tmp32); | ||
406 | } while (--length); | ||
353 | } | 407 | } |
354 | 408 | ||
355 | static int | 409 | static int |
356 | readword(struct net_device *dev, int portno) | 410 | readreg(struct net_device *dev, int regno) |
357 | { | 411 | { |
358 | return inw(dev->base_addr + portno); | 412 | writeword(dev->base_addr, ADD_PORT, regno); |
413 | return readword(dev->base_addr, DATA_PORT); | ||
359 | } | 414 | } |
360 | 415 | ||
361 | static void | 416 | static void |
362 | writeword(struct net_device *dev, int portno, int value) | 417 | writereg(struct net_device *dev, int regno, int value) |
363 | { | 418 | { |
364 | outw(value, dev->base_addr + portno); | 419 | writeword(dev->base_addr, ADD_PORT, regno); |
420 | writeword(dev->base_addr, DATA_PORT, value); | ||
365 | } | 421 | } |
366 | 422 | ||
367 | static int __init | 423 | static int __init |
@@ -456,7 +512,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
456 | #endif | 512 | #endif |
457 | } | 513 | } |
458 | 514 | ||
459 | #ifdef CONFIG_ARCH_PNX0105 | 515 | #ifdef CONFIG_ARCH_PNX010X |
460 | initialize_ebi(); | 516 | initialize_ebi(); |
461 | 517 | ||
462 | /* Map GPIO registers for the pins connected to the CS8900a. */ | 518 | /* Map GPIO registers for the pins connected to the CS8900a. */ |
@@ -491,8 +547,8 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
491 | 547 | ||
492 | #ifdef CONFIG_SH_HICOSH4 | 548 | #ifdef CONFIG_SH_HICOSH4 |
493 | /* truely reset the chip */ | 549 | /* truely reset the chip */ |
494 | outw(0x0114, ioaddr + ADD_PORT); | 550 | writeword(ioaddr, ADD_PORT, 0x0114); |
495 | outw(0x0040, ioaddr + DATA_PORT); | 551 | writeword(ioaddr, DATA_PORT, 0x0040); |
496 | #endif | 552 | #endif |
497 | 553 | ||
498 | /* if they give us an odd I/O address, then do ONE write to | 554 | /* if they give us an odd I/O address, then do ONE write to |
@@ -503,24 +559,24 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
503 | if (net_debug > 1) | 559 | if (net_debug > 1) |
504 | printk(KERN_INFO "%s: odd ioaddr 0x%x\n", dev->name, ioaddr); | 560 | printk(KERN_INFO "%s: odd ioaddr 0x%x\n", dev->name, ioaddr); |
505 | if ((ioaddr & 2) != 2) | 561 | if ((ioaddr & 2) != 2) |
506 | if ((inw((ioaddr & ~3)+ ADD_PORT) & ADD_MASK) != ADD_SIG) { | 562 | if ((readword(ioaddr & ~3, ADD_PORT) & ADD_MASK) != ADD_SIG) { |
507 | printk(KERN_ERR "%s: bad signature 0x%x\n", | 563 | printk(KERN_ERR "%s: bad signature 0x%x\n", |
508 | dev->name, inw((ioaddr & ~3)+ ADD_PORT)); | 564 | dev->name, readword(ioaddr & ~3, ADD_PORT)); |
509 | retval = -ENODEV; | 565 | retval = -ENODEV; |
510 | goto out2; | 566 | goto out2; |
511 | } | 567 | } |
512 | } | 568 | } |
513 | printk(KERN_DEBUG "PP_addr at %x: 0x%x\n", | 569 | printk(KERN_DEBUG "PP_addr at %x[%x]: 0x%x\n", |
514 | ioaddr + ADD_PORT, inw(ioaddr + ADD_PORT)); | 570 | ioaddr, ADD_PORT, readword(ioaddr, ADD_PORT)); |
515 | 571 | ||
516 | ioaddr &= ~3; | 572 | ioaddr &= ~3; |
517 | outw(PP_ChipID, ioaddr + ADD_PORT); | 573 | writeword(ioaddr, ADD_PORT, PP_ChipID); |
518 | 574 | ||
519 | tmp = inw(ioaddr + DATA_PORT); | 575 | tmp = readword(ioaddr, DATA_PORT); |
520 | if (tmp != CHIP_EISA_ID_SIG) { | 576 | if (tmp != CHIP_EISA_ID_SIG) { |
521 | printk(KERN_DEBUG "%s: incorrect signature at %x: 0x%x!=" | 577 | printk(KERN_DEBUG "%s: incorrect signature at %x[%x]: 0x%x!=" |
522 | CHIP_EISA_ID_SIG_STR "\n", | 578 | CHIP_EISA_ID_SIG_STR "\n", |
523 | dev->name, ioaddr + DATA_PORT, tmp); | 579 | dev->name, ioaddr, DATA_PORT, tmp); |
524 | retval = -ENODEV; | 580 | retval = -ENODEV; |
525 | goto out2; | 581 | goto out2; |
526 | } | 582 | } |
@@ -724,7 +780,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
724 | } else { | 780 | } else { |
725 | i = lp->isa_config & INT_NO_MASK; | 781 | i = lp->isa_config & INT_NO_MASK; |
726 | if (lp->chip_type == CS8900) { | 782 | if (lp->chip_type == CS8900) { |
727 | #if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX0105) | 783 | #if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X) |
728 | i = cs8900_irq_map[0]; | 784 | i = cs8900_irq_map[0]; |
729 | #else | 785 | #else |
730 | /* Translate the IRQ using the IRQ mapping table. */ | 786 | /* Translate the IRQ using the IRQ mapping table. */ |
@@ -790,7 +846,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
790 | goto out3; | 846 | goto out3; |
791 | return 0; | 847 | return 0; |
792 | out3: | 848 | out3: |
793 | outw(PP_ChipID, dev->base_addr + ADD_PORT); | 849 | writeword(dev->base_addr, ADD_PORT, PP_ChipID); |
794 | out2: | 850 | out2: |
795 | release_region(ioaddr & ~3, NETCARD_IO_EXTENT); | 851 | release_region(ioaddr & ~3, NETCARD_IO_EXTENT); |
796 | out1: | 852 | out1: |
@@ -970,11 +1026,11 @@ void __init reset_chip(struct net_device *dev) | |||
970 | #ifndef CONFIG_ARCH_IXDP2X01 | 1026 | #ifndef CONFIG_ARCH_IXDP2X01 |
971 | if (lp->chip_type != CS8900) { | 1027 | if (lp->chip_type != CS8900) { |
972 | /* Hardware problem requires PNP registers to be reconfigured after a reset */ | 1028 | /* Hardware problem requires PNP registers to be reconfigured after a reset */ |
973 | outw(PP_CS8920_ISAINT, ioaddr + ADD_PORT); | 1029 | writeword(ioaddr, ADD_PORT, PP_CS8920_ISAINT); |
974 | outb(dev->irq, ioaddr + DATA_PORT); | 1030 | outb(dev->irq, ioaddr + DATA_PORT); |
975 | outb(0, ioaddr + DATA_PORT + 1); | 1031 | outb(0, ioaddr + DATA_PORT + 1); |
976 | 1032 | ||
977 | outw(PP_CS8920_ISAMemB, ioaddr + ADD_PORT); | 1033 | writeword(ioaddr, ADD_PORT, PP_CS8920_ISAMemB); |
978 | outb((dev->mem_start >> 16) & 0xff, ioaddr + DATA_PORT); | 1034 | outb((dev->mem_start >> 16) & 0xff, ioaddr + DATA_PORT); |
979 | outb((dev->mem_start >> 8) & 0xff, ioaddr + DATA_PORT + 1); | 1035 | outb((dev->mem_start >> 8) & 0xff, ioaddr + DATA_PORT + 1); |
980 | } | 1036 | } |
@@ -1104,8 +1160,8 @@ send_test_pkt(struct net_device *dev) | |||
1104 | memcpy(test_packet, dev->dev_addr, ETH_ALEN); | 1160 | memcpy(test_packet, dev->dev_addr, ETH_ALEN); |
1105 | memcpy(test_packet+ETH_ALEN, dev->dev_addr, ETH_ALEN); | 1161 | memcpy(test_packet+ETH_ALEN, dev->dev_addr, ETH_ALEN); |
1106 | 1162 | ||
1107 | writeword(dev, TX_CMD_PORT, TX_AFTER_ALL); | 1163 | writeword(dev->base_addr, TX_CMD_PORT, TX_AFTER_ALL); |
1108 | writeword(dev, TX_LEN_PORT, ETH_ZLEN); | 1164 | writeword(dev->base_addr, TX_LEN_PORT, ETH_ZLEN); |
1109 | 1165 | ||
1110 | /* Test to see if the chip has allocated memory for the packet */ | 1166 | /* Test to see if the chip has allocated memory for the packet */ |
1111 | while (jiffies - timenow < 5) | 1167 | while (jiffies - timenow < 5) |
@@ -1115,7 +1171,7 @@ send_test_pkt(struct net_device *dev) | |||
1115 | return 0; /* this shouldn't happen */ | 1171 | return 0; /* this shouldn't happen */ |
1116 | 1172 | ||
1117 | /* Write the contents of the packet */ | 1173 | /* Write the contents of the packet */ |
1118 | outsw(dev->base_addr + TX_FRAME_PORT,test_packet,(ETH_ZLEN+1) >>1); | 1174 | writewords(dev->base_addr, TX_FRAME_PORT,test_packet,(ETH_ZLEN+1) >>1); |
1119 | 1175 | ||
1120 | if (net_debug > 1) printk("Sending test packet "); | 1176 | if (net_debug > 1) printk("Sending test packet "); |
1121 | /* wait a couple of jiffies for packet to be received */ | 1177 | /* wait a couple of jiffies for packet to be received */ |
@@ -1200,7 +1256,7 @@ net_open(struct net_device *dev) | |||
1200 | int i; | 1256 | int i; |
1201 | int ret; | 1257 | int ret; |
1202 | 1258 | ||
1203 | #if !defined(CONFIG_SH_HICOSH4) && !defined(CONFIG_ARCH_PNX0105) /* uses irq#1, so this won't work */ | 1259 | #if !defined(CONFIG_SH_HICOSH4) && !defined(CONFIG_ARCH_PNX010X) /* uses irq#1, so this won't work */ |
1204 | if (dev->irq < 2) { | 1260 | if (dev->irq < 2) { |
1205 | /* Allow interrupts to be generated by the chip */ | 1261 | /* Allow interrupts to be generated by the chip */ |
1206 | /* Cirrus' release had this: */ | 1262 | /* Cirrus' release had this: */ |
@@ -1231,7 +1287,7 @@ net_open(struct net_device *dev) | |||
1231 | else | 1287 | else |
1232 | #endif | 1288 | #endif |
1233 | { | 1289 | { |
1234 | #if !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX0105) | 1290 | #if !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X) |
1235 | if (((1 << dev->irq) & lp->irq_map) == 0) { | 1291 | if (((1 << dev->irq) & lp->irq_map) == 0) { |
1236 | printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n", | 1292 | printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n", |
1237 | dev->name, dev->irq, lp->irq_map); | 1293 | dev->name, dev->irq, lp->irq_map); |
@@ -1316,7 +1372,7 @@ net_open(struct net_device *dev) | |||
1316 | case A_CNF_MEDIA_10B_2: result = lp->adapter_cnf & A_CNF_10B_2; break; | 1372 | case A_CNF_MEDIA_10B_2: result = lp->adapter_cnf & A_CNF_10B_2; break; |
1317 | default: result = lp->adapter_cnf & (A_CNF_10B_T | A_CNF_AUI | A_CNF_10B_2); | 1373 | default: result = lp->adapter_cnf & (A_CNF_10B_T | A_CNF_AUI | A_CNF_10B_2); |
1318 | } | 1374 | } |
1319 | #ifdef CONFIG_ARCH_PNX0105 | 1375 | #ifdef CONFIG_ARCH_PNX010X |
1320 | result = A_CNF_10B_T; | 1376 | result = A_CNF_10B_T; |
1321 | #endif | 1377 | #endif |
1322 | if (!result) { | 1378 | if (!result) { |
@@ -1457,8 +1513,8 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
1457 | netif_stop_queue(dev); | 1513 | netif_stop_queue(dev); |
1458 | 1514 | ||
1459 | /* initiate a transmit sequence */ | 1515 | /* initiate a transmit sequence */ |
1460 | writeword(dev, TX_CMD_PORT, lp->send_cmd); | 1516 | writeword(dev->base_addr, TX_CMD_PORT, lp->send_cmd); |
1461 | writeword(dev, TX_LEN_PORT, skb->len); | 1517 | writeword(dev->base_addr, TX_LEN_PORT, skb->len); |
1462 | 1518 | ||
1463 | /* Test to see if the chip has allocated memory for the packet */ | 1519 | /* Test to see if the chip has allocated memory for the packet */ |
1464 | if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) { | 1520 | if ((readreg(dev, PP_BusST) & READY_FOR_TX_NOW) == 0) { |
@@ -1472,7 +1528,7 @@ static int net_send_packet(struct sk_buff *skb, struct net_device *dev) | |||
1472 | return 1; | 1528 | return 1; |
1473 | } | 1529 | } |
1474 | /* Write the contents of the packet */ | 1530 | /* Write the contents of the packet */ |
1475 | outsw(dev->base_addr + TX_FRAME_PORT,skb->data,(skb->len+1) >>1); | 1531 | writewords(dev->base_addr, TX_FRAME_PORT,skb->data,(skb->len+1) >>1); |
1476 | spin_unlock_irq(&lp->lock); | 1532 | spin_unlock_irq(&lp->lock); |
1477 | lp->stats.tx_bytes += skb->len; | 1533 | lp->stats.tx_bytes += skb->len; |
1478 | dev->trans_start = jiffies; | 1534 | dev->trans_start = jiffies; |
@@ -1512,7 +1568,7 @@ static irqreturn_t net_interrupt(int irq, void *dev_id, struct pt_regs * regs) | |||
1512 | course, if you're on a slow machine, and packets are arriving | 1568 | course, if you're on a slow machine, and packets are arriving |
1513 | faster than you can read them off, you're screwed. Hasta la | 1569 | faster than you can read them off, you're screwed. Hasta la |
1514 | vista, baby! */ | 1570 | vista, baby! */ |
1515 | while ((status = readword(dev, ISQ_PORT))) { | 1571 | while ((status = readword(dev->base_addr, ISQ_PORT))) { |
1516 | if (net_debug > 4)printk("%s: event=%04x\n", dev->name, status); | 1572 | if (net_debug > 4)printk("%s: event=%04x\n", dev->name, status); |
1517 | handled = 1; | 1573 | handled = 1; |
1518 | switch(status & ISQ_EVENT_MASK) { | 1574 | switch(status & ISQ_EVENT_MASK) { |
@@ -1606,8 +1662,8 @@ net_rx(struct net_device *dev) | |||
1606 | int status, length; | 1662 | int status, length; |
1607 | 1663 | ||
1608 | int ioaddr = dev->base_addr; | 1664 | int ioaddr = dev->base_addr; |
1609 | status = inw(ioaddr + RX_FRAME_PORT); | 1665 | status = readword(ioaddr, RX_FRAME_PORT); |
1610 | length = inw(ioaddr + RX_FRAME_PORT); | 1666 | length = readword(ioaddr, RX_FRAME_PORT); |
1611 | 1667 | ||
1612 | if ((status & RX_OK) == 0) { | 1668 | if ((status & RX_OK) == 0) { |
1613 | count_rx_errors(status, lp); | 1669 | count_rx_errors(status, lp); |
@@ -1626,9 +1682,9 @@ net_rx(struct net_device *dev) | |||
1626 | skb_reserve(skb, 2); /* longword align L3 header */ | 1682 | skb_reserve(skb, 2); /* longword align L3 header */ |
1627 | skb->dev = dev; | 1683 | skb->dev = dev; |
1628 | 1684 | ||
1629 | insw(ioaddr + RX_FRAME_PORT, skb_put(skb, length), length >> 1); | 1685 | readwords(ioaddr, RX_FRAME_PORT, skb_put(skb, length), length >> 1); |
1630 | if (length & 1) | 1686 | if (length & 1) |
1631 | skb->data[length-1] = inw(ioaddr + RX_FRAME_PORT); | 1687 | skb->data[length-1] = readword(ioaddr, RX_FRAME_PORT); |
1632 | 1688 | ||
1633 | if (net_debug > 3) { | 1689 | if (net_debug > 3) { |
1634 | printk( "%s: received %d byte packet of type %x\n", | 1690 | printk( "%s: received %d byte packet of type %x\n", |
@@ -1901,7 +1957,7 @@ void | |||
1901 | cleanup_module(void) | 1957 | cleanup_module(void) |
1902 | { | 1958 | { |
1903 | unregister_netdev(dev_cs89x0); | 1959 | unregister_netdev(dev_cs89x0); |
1904 | outw(PP_ChipID, dev_cs89x0->base_addr + ADD_PORT); | 1960 | writeword(dev_cs89x0->base_addr, ADD_PORT, PP_ChipID); |
1905 | release_region(dev_cs89x0->base_addr, NETCARD_IO_EXTENT); | 1961 | release_region(dev_cs89x0->base_addr, NETCARD_IO_EXTENT); |
1906 | free_netdev(dev_cs89x0); | 1962 | free_netdev(dev_cs89x0); |
1907 | } | 1963 | } |
diff --git a/drivers/net/cs89x0.h b/drivers/net/cs89x0.h index decea264f121..bd954aaa636f 100644 --- a/drivers/net/cs89x0.h +++ b/drivers/net/cs89x0.h | |||
@@ -16,13 +16,6 @@ | |||
16 | 16 | ||
17 | #include <linux/config.h> | 17 | #include <linux/config.h> |
18 | 18 | ||
19 | #if defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX0105) | ||
20 | /* IXDP2401/IXDP2801 uses dword-aligned register addressing */ | ||
21 | #define CS89x0_PORT(reg) ((reg) * 2) | ||
22 | #else | ||
23 | #define CS89x0_PORT(reg) (reg) | ||
24 | #endif | ||
25 | |||
26 | #define PP_ChipID 0x0000 /* offset 0h -> Corp -ID */ | 19 | #define PP_ChipID 0x0000 /* offset 0h -> Corp -ID */ |
27 | /* offset 2h -> Model/Product Number */ | 20 | /* offset 2h -> Model/Product Number */ |
28 | /* offset 3h -> Chip Revision Number */ | 21 | /* offset 3h -> Chip Revision Number */ |
@@ -332,16 +325,16 @@ | |||
332 | #define RAM_SIZE 0x1000 /* The card has 4k bytes or RAM */ | 325 | #define RAM_SIZE 0x1000 /* The card has 4k bytes or RAM */ |
333 | #define PKT_START PP_TxFrame /* Start of packet RAM */ | 326 | #define PKT_START PP_TxFrame /* Start of packet RAM */ |
334 | 327 | ||
335 | #define RX_FRAME_PORT CS89x0_PORT(0x0000) | 328 | #define RX_FRAME_PORT 0x0000 |
336 | #define TX_FRAME_PORT RX_FRAME_PORT | 329 | #define TX_FRAME_PORT RX_FRAME_PORT |
337 | #define TX_CMD_PORT CS89x0_PORT(0x0004) | 330 | #define TX_CMD_PORT 0x0004 |
338 | #define TX_NOW 0x0000 /* Tx packet after 5 bytes copied */ | 331 | #define TX_NOW 0x0000 /* Tx packet after 5 bytes copied */ |
339 | #define TX_AFTER_381 0x0040 /* Tx packet after 381 bytes copied */ | 332 | #define TX_AFTER_381 0x0040 /* Tx packet after 381 bytes copied */ |
340 | #define TX_AFTER_ALL 0x00c0 /* Tx packet after all bytes copied */ | 333 | #define TX_AFTER_ALL 0x00c0 /* Tx packet after all bytes copied */ |
341 | #define TX_LEN_PORT CS89x0_PORT(0x0006) | 334 | #define TX_LEN_PORT 0x0006 |
342 | #define ISQ_PORT CS89x0_PORT(0x0008) | 335 | #define ISQ_PORT 0x0008 |
343 | #define ADD_PORT CS89x0_PORT(0x000A) | 336 | #define ADD_PORT 0x000A |
344 | #define DATA_PORT CS89x0_PORT(0x000C) | 337 | #define DATA_PORT 0x000C |
345 | 338 | ||
346 | #define EEPROM_WRITE_EN 0x00F0 | 339 | #define EEPROM_WRITE_EN 0x00F0 |
347 | #define EEPROM_WRITE_DIS 0x0000 | 340 | #define EEPROM_WRITE_DIS 0x0000 |
diff --git a/drivers/net/hamradio/mkiss.c b/drivers/net/hamradio/mkiss.c index 3e9accf137e7..41b3d83c2ab8 100644 --- a/drivers/net/hamradio/mkiss.c +++ b/drivers/net/hamradio/mkiss.c | |||
@@ -524,6 +524,7 @@ static void ax_encaps(struct net_device *dev, unsigned char *icp, int len) | |||
524 | ax->dev->trans_start = jiffies; | 524 | ax->dev->trans_start = jiffies; |
525 | ax->xleft = count - actual; | 525 | ax->xleft = count - actual; |
526 | ax->xhead = ax->xbuff + actual; | 526 | ax->xhead = ax->xbuff + actual; |
527 | spin_unlock_bh(&ax->buflock); | ||
527 | } | 528 | } |
528 | 529 | ||
529 | /* Encapsulate an AX.25 packet and kick it into a TTY queue. */ | 530 | /* Encapsulate an AX.25 packet and kick it into a TTY queue. */ |
diff --git a/drivers/net/irda/vlsi_ir.h b/drivers/net/irda/vlsi_ir.h index 741aecc655df..a82a4ba8de4f 100644 --- a/drivers/net/irda/vlsi_ir.h +++ b/drivers/net/irda/vlsi_ir.h | |||
@@ -577,8 +577,8 @@ struct ring_descr_hw { | |||
577 | struct { | 577 | struct { |
578 | u8 addr_res[3]; | 578 | u8 addr_res[3]; |
579 | volatile u8 status; /* descriptor status */ | 579 | volatile u8 status; /* descriptor status */ |
580 | } rd_s __attribute__((packed)); | 580 | } __attribute__((packed)) rd_s; |
581 | } rd_u __attribute((packed)); | 581 | } __attribute((packed)) rd_u; |
582 | } __attribute__ ((packed)); | 582 | } __attribute__ ((packed)); |
583 | 583 | ||
584 | #define rd_addr rd_u.addr | 584 | #define rd_addr rd_u.addr |
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index 28bf2e69eb5e..7ec08127c9d6 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c | |||
@@ -88,7 +88,6 @@ static const char version[] = | |||
88 | #include <linux/skbuff.h> | 88 | #include <linux/skbuff.h> |
89 | 89 | ||
90 | #include <asm/io.h> | 90 | #include <asm/io.h> |
91 | #include <asm/irq.h> | ||
92 | 91 | ||
93 | #include "smc91x.h" | 92 | #include "smc91x.h" |
94 | 93 | ||
@@ -2007,12 +2006,10 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr) | |||
2007 | } | 2006 | } |
2008 | 2007 | ||
2009 | /* Grab the IRQ */ | 2008 | /* Grab the IRQ */ |
2010 | retval = request_irq(dev->irq, &smc_interrupt, 0, dev->name, dev); | 2009 | retval = request_irq(dev->irq, &smc_interrupt, SMC_IRQ_FLAGS, dev->name, dev); |
2011 | if (retval) | 2010 | if (retval) |
2012 | goto err_out; | 2011 | goto err_out; |
2013 | 2012 | ||
2014 | set_irq_type(dev->irq, SMC_IRQ_TRIGGER_TYPE); | ||
2015 | |||
2016 | #ifdef SMC_USE_PXA_DMA | 2013 | #ifdef SMC_USE_PXA_DMA |
2017 | { | 2014 | { |
2018 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, | 2015 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, |
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h index 5c2824be4ee6..e0efd1964e72 100644 --- a/drivers/net/smc91x.h +++ b/drivers/net/smc91x.h | |||
@@ -90,7 +90,7 @@ | |||
90 | __l--; \ | 90 | __l--; \ |
91 | } \ | 91 | } \ |
92 | } while (0) | 92 | } while (0) |
93 | #define set_irq_type(irq, type) | 93 | #define SMC_IRQ_FLAGS (0) |
94 | 94 | ||
95 | #elif defined(CONFIG_SA1100_PLEB) | 95 | #elif defined(CONFIG_SA1100_PLEB) |
96 | /* We can only do 16-bit reads and writes in the static memory space. */ | 96 | /* We can only do 16-bit reads and writes in the static memory space. */ |
@@ -109,7 +109,7 @@ | |||
109 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) | 109 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) |
110 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) | 110 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) |
111 | 111 | ||
112 | #define set_irq_type(irq, type) do {} while (0) | 112 | #define SMC_IRQ_FLAGS (0) |
113 | 113 | ||
114 | #elif defined(CONFIG_SA1100_ASSABET) | 114 | #elif defined(CONFIG_SA1100_ASSABET) |
115 | 115 | ||
@@ -185,11 +185,11 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
185 | #include <asm/mach-types.h> | 185 | #include <asm/mach-types.h> |
186 | #include <asm/arch/cpu.h> | 186 | #include <asm/arch/cpu.h> |
187 | 187 | ||
188 | #define SMC_IRQ_TRIGGER_TYPE (( \ | 188 | #define SMC_IRQ_FLAGS (( \ |
189 | machine_is_omap_h2() \ | 189 | machine_is_omap_h2() \ |
190 | || machine_is_omap_h3() \ | 190 | || machine_is_omap_h3() \ |
191 | || (machine_is_omap_innovator() && !cpu_is_omap1510()) \ | 191 | || (machine_is_omap_innovator() && !cpu_is_omap1510()) \ |
192 | ) ? IRQT_FALLING : IRQT_RISING) | 192 | ) ? SA_TRIGGER_FALLING : SA_TRIGGER_RISING) |
193 | 193 | ||
194 | 194 | ||
195 | #elif defined(CONFIG_SH_SH4202_MICRODEV) | 195 | #elif defined(CONFIG_SH_SH4202_MICRODEV) |
@@ -209,7 +209,7 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
209 | #define SMC_insw(a, r, p, l) insw((a) + (r) - 0xa0000000, p, l) | 209 | #define SMC_insw(a, r, p, l) insw((a) + (r) - 0xa0000000, p, l) |
210 | #define SMC_outsw(a, r, p, l) outsw((a) + (r) - 0xa0000000, p, l) | 210 | #define SMC_outsw(a, r, p, l) outsw((a) + (r) - 0xa0000000, p, l) |
211 | 211 | ||
212 | #define set_irq_type(irq, type) do {} while(0) | 212 | #define SMC_IRQ_FLAGS (0) |
213 | 213 | ||
214 | #elif defined(CONFIG_ISA) | 214 | #elif defined(CONFIG_ISA) |
215 | 215 | ||
@@ -237,7 +237,7 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
237 | #define SMC_insw(a, r, p, l) insw(((u32)a) + (r), p, l) | 237 | #define SMC_insw(a, r, p, l) insw(((u32)a) + (r), p, l) |
238 | #define SMC_outsw(a, r, p, l) outsw(((u32)a) + (r), p, l) | 238 | #define SMC_outsw(a, r, p, l) outsw(((u32)a) + (r), p, l) |
239 | 239 | ||
240 | #define set_irq_type(irq, type) do {} while(0) | 240 | #define SMC_IRQ_FLAGS (0) |
241 | 241 | ||
242 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX | 242 | #define RPC_LSA_DEFAULT RPC_LED_TX_RX |
243 | #define RPC_LSB_DEFAULT RPC_LED_100_10 | 243 | #define RPC_LSB_DEFAULT RPC_LED_100_10 |
@@ -319,7 +319,7 @@ static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l) | |||
319 | au_writew(*_p++ , _a); \ | 319 | au_writew(*_p++ , _a); \ |
320 | } while(0) | 320 | } while(0) |
321 | 321 | ||
322 | #define set_irq_type(irq, type) do {} while (0) | 322 | #define SMC_IRQ_FLAGS (0) |
323 | 323 | ||
324 | #else | 324 | #else |
325 | 325 | ||
@@ -342,8 +342,8 @@ static inline void SMC_outsw (unsigned long a, int r, unsigned char* p, int l) | |||
342 | 342 | ||
343 | #endif | 343 | #endif |
344 | 344 | ||
345 | #ifndef SMC_IRQ_TRIGGER_TYPE | 345 | #ifndef SMC_IRQ_FLAGS |
346 | #define SMC_IRQ_TRIGGER_TYPE IRQT_RISING | 346 | #define SMC_IRQ_FLAGS SA_TRIGGER_RISING |
347 | #endif | 347 | #endif |
348 | 348 | ||
349 | #ifdef SMC_USE_PXA_DMA | 349 | #ifdef SMC_USE_PXA_DMA |
diff --git a/drivers/net/wan/sdla.c b/drivers/net/wan/sdla.c index 036adc4f8ba7..22e794071cf4 100644 --- a/drivers/net/wan/sdla.c +++ b/drivers/net/wan/sdla.c | |||
@@ -329,9 +329,9 @@ static int sdla_cpuspeed(struct net_device *dev, struct ifreq *ifr) | |||
329 | 329 | ||
330 | struct _dlci_stat | 330 | struct _dlci_stat |
331 | { | 331 | { |
332 | short dlci __attribute__((packed)); | 332 | short dlci; |
333 | char flags __attribute__((packed)); | 333 | char flags; |
334 | }; | 334 | } __attribute__((packed)); |
335 | 335 | ||
336 | struct _frad_stat | 336 | struct _frad_stat |
337 | { | 337 | { |