diff options
| author | Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org> | 2008-09-26 10:44:43 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-10-01 17:45:24 -0400 |
| commit | 0ac4ed9d76400e7c073b9d81cea13f8613d24361 (patch) | |
| tree | d253356a40019b589cd5f58596ffeaea6e0f088c /drivers | |
| parent | b0dbcf511c4bd10350902e79a1bdd4f5dcca66b6 (diff) | |
[NET] 5268/1: cs89x0: add support for i.MX31ADS ARM board.
Add support for i.MX31ADS board to the cs89x0 ethernet driver.
Rework Kconfig options for the cs89x0 driver to reduce the #ifdef
clutter.
Signed-off-by: Gilles Chanteperdrix <gilles.chanteperdrix@xenomai.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/net/Kconfig | 8 | ||||
| -rw-r--r-- | drivers/net/cs89x0.c | 12 |
2 files changed, 17 insertions, 3 deletions
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index a5c141cecd4e..ad26f1fdf273 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig | |||
| @@ -1386,7 +1386,8 @@ config FORCEDETH_NAPI | |||
| 1386 | 1386 | ||
| 1387 | config CS89x0 | 1387 | config CS89x0 |
| 1388 | tristate "CS89x0 support" | 1388 | tristate "CS89x0 support" |
| 1389 | depends on NET_PCI && (ISA || MACH_IXDP2351 || ARCH_IXDP2X01 || ARCH_PNX010X) | 1389 | depends on NET_ETHERNET && (ISA || EISA || MACH_IXDP2351 \ |
| 1390 | || ARCH_IXDP2X01 || ARCH_PNX010X || MACH_MX31ADS) | ||
| 1390 | ---help--- | 1391 | ---help--- |
| 1391 | Support for CS89x0 chipset based Ethernet cards. If you have a | 1392 | Support for CS89x0 chipset based Ethernet cards. If you have a |
| 1392 | network (Ethernet) card of this type, say Y and read the | 1393 | network (Ethernet) card of this type, say Y and read the |
| @@ -1397,6 +1398,11 @@ config CS89x0 | |||
| 1397 | To compile this driver as a module, choose M here. The module | 1398 | To compile this driver as a module, choose M here. The module |
| 1398 | will be called cs89x0. | 1399 | will be called cs89x0. |
| 1399 | 1400 | ||
| 1401 | config CS89x0_NONISA_IRQ | ||
| 1402 | def_bool y | ||
| 1403 | depends on CS89x0 != n | ||
| 1404 | depends on MACH_IXDP2351 || ARCH_IXDP2X01 || ARCH_PNX010X || MACH_MX31ADS | ||
| 1405 | |||
| 1400 | config TC35815 | 1406 | config TC35815 |
| 1401 | tristate "TOSHIBA TC35815 Ethernet support" | 1407 | tristate "TOSHIBA TC35815 Ethernet support" |
| 1402 | depends on NET_PCI && PCI && MIPS | 1408 | depends on NET_PCI && PCI && MIPS |
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index ea6144a9565e..5890a917a628 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c | |||
| @@ -194,6 +194,12 @@ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0}; | |||
| 194 | #define CIRRUS_DEFAULT_IRQ VH_INTC_INT_NUM_CASCADED_INTERRUPT_1 /* Event inputs bank 1 - ID 35/bit 3 */ | 194 | #define CIRRUS_DEFAULT_IRQ VH_INTC_INT_NUM_CASCADED_INTERRUPT_1 /* Event inputs bank 1 - ID 35/bit 3 */ |
| 195 | static unsigned int netcard_portlist[] __used __initdata = {CIRRUS_DEFAULT_BASE, 0}; | 195 | static unsigned int netcard_portlist[] __used __initdata = {CIRRUS_DEFAULT_BASE, 0}; |
| 196 | static unsigned int cs8900_irq_map[] = {CIRRUS_DEFAULT_IRQ, 0, 0, 0}; | 196 | static unsigned int cs8900_irq_map[] = {CIRRUS_DEFAULT_IRQ, 0, 0, 0}; |
| 197 | #elif defined(CONFIG_MACH_MX31ADS) | ||
| 198 | #include <mach/board-mx31ads.h> | ||
| 199 | static unsigned int netcard_portlist[] __used __initdata = { | ||
| 200 | PBC_BASE_ADDRESS + PBC_CS8900A_IOBASE + 0x300, 0 | ||
| 201 | }; | ||
| 202 | static unsigned cs8900_irq_map[] = {EXPIO_INT_ENET_INT, 0, 0, 0}; | ||
| 197 | #else | 203 | #else |
| 198 | static unsigned int netcard_portlist[] __used __initdata = | 204 | static unsigned int netcard_portlist[] __used __initdata = |
| 199 | { 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0}; | 205 | { 0x300, 0x320, 0x340, 0x360, 0x200, 0x220, 0x240, 0x260, 0x280, 0x2a0, 0x2c0, 0x2e0, 0}; |
| @@ -802,7 +808,7 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular) | |||
| 802 | } else { | 808 | } else { |
| 803 | i = lp->isa_config & INT_NO_MASK; | 809 | i = lp->isa_config & INT_NO_MASK; |
| 804 | if (lp->chip_type == CS8900) { | 810 | if (lp->chip_type == CS8900) { |
| 805 | #if defined(CONFIG_MACH_IXDP2351) || defined(CONFIG_ARCH_IXDP2X01) || defined(CONFIG_ARCH_PNX010X) | 811 | #ifdef CONFIG_CS89x0_NONISA_IRQ |
| 806 | i = cs8900_irq_map[0]; | 812 | i = cs8900_irq_map[0]; |
| 807 | #else | 813 | #else |
| 808 | /* Translate the IRQ using the IRQ mapping table. */ | 814 | /* Translate the IRQ using the IRQ mapping table. */ |
| @@ -1029,6 +1035,7 @@ skip_this_frame: | |||
| 1029 | 1035 | ||
| 1030 | void __init reset_chip(struct net_device *dev) | 1036 | void __init reset_chip(struct net_device *dev) |
| 1031 | { | 1037 | { |
| 1038 | #if !defined(CONFIG_MACH_MX31ADS) | ||
| 1032 | #if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) | 1039 | #if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) |
| 1033 | struct net_local *lp = netdev_priv(dev); | 1040 | struct net_local *lp = netdev_priv(dev); |
| 1034 | int ioaddr = dev->base_addr; | 1041 | int ioaddr = dev->base_addr; |
| @@ -1057,6 +1064,7 @@ void __init reset_chip(struct net_device *dev) | |||
| 1057 | reset_start_time = jiffies; | 1064 | reset_start_time = jiffies; |
| 1058 | while( (readreg(dev, PP_SelfST) & INIT_DONE) == 0 && jiffies - reset_start_time < 2) | 1065 | while( (readreg(dev, PP_SelfST) & INIT_DONE) == 0 && jiffies - reset_start_time < 2) |
| 1059 | ; | 1066 | ; |
| 1067 | #endif /* !CONFIG_MACH_MX31ADS */ | ||
| 1060 | } | 1068 | } |
| 1061 | 1069 | ||
| 1062 | 1070 | ||
| @@ -1304,7 +1312,7 @@ net_open(struct net_device *dev) | |||
| 1304 | else | 1312 | else |
| 1305 | #endif | 1313 | #endif |
| 1306 | { | 1314 | { |
| 1307 | #if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) && !defined(CONFIG_ARCH_PNX010X) | 1315 | #ifndef CONFIG_CS89x0_NONISA_IRQ |
| 1308 | if (((1 << dev->irq) & lp->irq_map) == 0) { | 1316 | if (((1 << dev->irq) & lp->irq_map) == 0) { |
| 1309 | printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n", | 1317 | printk(KERN_ERR "%s: IRQ %d is not in our map of allowable IRQs, which is %x\n", |
| 1310 | dev->name, dev->irq, lp->irq_map); | 1318 | dev->name, dev->irq, lp->irq_map); |
