diff options
Diffstat (limited to 'drivers/net/cs89x0.c')
| -rw-r--r-- | drivers/net/cs89x0.c | 19 | 
1 files changed, 15 insertions, 4 deletions
diff --git a/drivers/net/cs89x0.c b/drivers/net/cs89x0.c index d325e01a53e0..537a4b2e2020 100644 --- a/drivers/net/cs89x0.c +++ b/drivers/net/cs89x0.c @@ -95,6 +95,9 @@    Dmitry Pervushin  : dpervushin@ru.mvista.com                      : PNX010X platform support +  Domenico Andreoli : cavokz@gmail.com +                    : QQ2440 platform support +  */  /* Always include 'config.h' first in case the user wants to turn on @@ -176,6 +179,10 @@ static unsigned int cs8900_irq_map[] = {IRQ_IXDP2351_CS8900, 0, 0, 0};  #elif defined(CONFIG_ARCH_IXDP2X01)  static unsigned int netcard_portlist[] __used __initdata = {IXDP2X01_CS8900_VIRT_BASE, 0};  static unsigned int cs8900_irq_map[] = {IRQ_IXDP2X01_CS8900, 0, 0, 0}; +#elif defined(CONFIG_MACH_QQ2440) +#include <mach/qq2440.h> +static unsigned int netcard_portlist[] __used __initdata = { QQ2440_CS8900_VIRT_BASE + 0x300, 0 }; +static unsigned int cs8900_irq_map[] = { QQ2440_CS8900_IRQ, 0, 0, 0 };  #elif defined(CONFIG_MACH_MX31ADS)  #include <mach/board-mx31ads.h>  static unsigned int netcard_portlist[] __used __initdata = { @@ -521,6 +528,10 @@ cs89x0_probe1(struct net_device *dev, int ioaddr, int modular)  #endif  		lp->force = g_cs89x0_media__force;  #endif + +#if defined(CONFIG_MACH_QQ2440) +		lp->force |= FORCE_RJ45 | FORCE_FULL; +#endif          }  	/* Grab the region so we can find another board if autoIRQ fails. */ @@ -943,10 +954,10 @@ skip_this_frame:  static void __init reset_chip(struct net_device *dev)  {  #if !defined(CONFIG_MACH_MX31ADS) -#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) +#if !defined(CS89x0_NONISA_IRQ)  	struct net_local *lp = netdev_priv(dev);  	int ioaddr = dev->base_addr; -#endif +#endif /* CS89x0_NONISA_IRQ */  	int reset_start_time;  	writereg(dev, PP_SelfCTL, readreg(dev, PP_SelfCTL) | POWER_ON_RESET); @@ -954,7 +965,7 @@ static void __init reset_chip(struct net_device *dev)  	/* wait 30 ms */  	msleep(30); -#if !defined(CONFIG_MACH_IXDP2351) && !defined(CONFIG_ARCH_IXDP2X01) +#if !defined(CS89x0_NONISA_IRQ)  	if (lp->chip_type != CS8900) {  		/* Hardware problem requires PNP registers to be reconfigured after a reset */  		writeword(ioaddr, ADD_PORT, PP_CS8920_ISAINT); @@ -965,7 +976,7 @@ static void __init reset_chip(struct net_device *dev)  		outb((dev->mem_start >> 16) & 0xff, ioaddr + DATA_PORT);  		outb((dev->mem_start >> 8) & 0xff,   ioaddr + DATA_PORT + 1);  	} -#endif	/* IXDP2x01 */ +#endif /* CS89x0_NONISA_IRQ */  	/* Wait until the chip is reset */  	reset_start_time = jiffies;  | 
