diff options
| author | Russell King <rmk@dyn-67.arm.linux.org.uk> | 2008-07-13 07:05:49 -0400 |
|---|---|---|
| committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-07-13 07:05:49 -0400 |
| commit | 044e5f45e4ad890d03bd1e8bb44c634397cac24d (patch) | |
| tree | a6063f77bd719d933823915d2273eaadb6331611 /drivers/net | |
| parent | f0006314d37639714da9658cf4ff3f1f9f420764 (diff) | |
| parent | faf64ed4968e354624f330c6da6c1ce8b05a0713 (diff) | |
Merge branch 'pxa' into devel
Conflicts:
arch/arm/configs/em_x270_defconfig
arch/arm/configs/xm_x270_defconfig
Diffstat (limited to 'drivers/net')
| -rw-r--r-- | drivers/net/irda/pxaficp_ir.c | 24 | ||||
| -rw-r--r-- | drivers/net/smc91x.c | 94 | ||||
| -rw-r--r-- | drivers/net/smc91x.h | 76 |
3 files changed, 88 insertions, 106 deletions
diff --git a/drivers/net/irda/pxaficp_ir.c b/drivers/net/irda/pxaficp_ir.c index d5c2d27f3ea4..f76b0b6c277d 100644 --- a/drivers/net/irda/pxaficp_ir.c +++ b/drivers/net/irda/pxaficp_ir.c | |||
| @@ -13,16 +13,8 @@ | |||
| 13 | * | 13 | * |
| 14 | */ | 14 | */ |
| 15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
| 16 | #include <linux/types.h> | ||
| 17 | #include <linux/init.h> | ||
| 18 | #include <linux/errno.h> | ||
| 19 | #include <linux/netdevice.h> | 16 | #include <linux/netdevice.h> |
| 20 | #include <linux/slab.h> | ||
| 21 | #include <linux/rtnetlink.h> | ||
| 22 | #include <linux/interrupt.h> | ||
| 23 | #include <linux/dma-mapping.h> | ||
| 24 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
| 25 | #include <linux/pm.h> | ||
| 26 | #include <linux/clk.h> | 18 | #include <linux/clk.h> |
| 27 | 19 | ||
| 28 | #include <net/irda/irda.h> | 20 | #include <net/irda/irda.h> |
| @@ -30,17 +22,9 @@ | |||
| 30 | #include <net/irda/wrapper.h> | 22 | #include <net/irda/wrapper.h> |
| 31 | #include <net/irda/irda_device.h> | 23 | #include <net/irda/irda_device.h> |
| 32 | 24 | ||
| 33 | #include <asm/irq.h> | ||
| 34 | #include <asm/dma.h> | 25 | #include <asm/dma.h> |
| 35 | #include <asm/delay.h> | ||
| 36 | #include <asm/hardware.h> | ||
| 37 | #include <asm/arch/irda.h> | 26 | #include <asm/arch/irda.h> |
| 38 | #include <asm/arch/pxa-regs.h> | 27 | #include <asm/arch/pxa-regs.h> |
| 39 | #include <asm/arch/pxa2xx-gpio.h> | ||
| 40 | |||
| 41 | #ifdef CONFIG_MACH_MAINSTONE | ||
| 42 | #include <asm/arch/mainstone.h> | ||
| 43 | #endif | ||
| 44 | 28 | ||
| 45 | #define IrSR_RXPL_NEG_IS_ZERO (1<<4) | 29 | #define IrSR_RXPL_NEG_IS_ZERO (1<<4) |
| 46 | #define IrSR_RXPL_POS_IS_ZERO 0x0 | 30 | #define IrSR_RXPL_POS_IS_ZERO 0x0 |
| @@ -163,10 +147,6 @@ static int pxa_irda_set_speed(struct pxa_irda *si, int speed) | |||
| 163 | /* set board transceiver to SIR mode */ | 147 | /* set board transceiver to SIR mode */ |
| 164 | si->pdata->transceiver_mode(si->dev, IR_SIRMODE); | 148 | si->pdata->transceiver_mode(si->dev, IR_SIRMODE); |
| 165 | 149 | ||
| 166 | /* configure GPIO46/47 */ | ||
| 167 | pxa_gpio_mode(GPIO46_STRXD_MD); | ||
| 168 | pxa_gpio_mode(GPIO47_STTXD_MD); | ||
| 169 | |||
| 170 | /* enable the STUART clock */ | 150 | /* enable the STUART clock */ |
| 171 | pxa_irda_enable_sirclk(si); | 151 | pxa_irda_enable_sirclk(si); |
| 172 | } | 152 | } |
| @@ -201,10 +181,6 @@ static int pxa_irda_set_speed(struct pxa_irda *si, int speed) | |||
| 201 | /* set board transceiver to FIR mode */ | 181 | /* set board transceiver to FIR mode */ |
| 202 | si->pdata->transceiver_mode(si->dev, IR_FIRMODE); | 182 | si->pdata->transceiver_mode(si->dev, IR_FIRMODE); |
| 203 | 183 | ||
| 204 | /* configure GPIO46/47 */ | ||
| 205 | pxa_gpio_mode(GPIO46_ICPRXD_MD); | ||
| 206 | pxa_gpio_mode(GPIO47_ICPTXD_MD); | ||
| 207 | |||
| 208 | /* enable the FICP clock */ | 184 | /* enable the FICP clock */ |
| 209 | pxa_irda_enable_firclk(si); | 185 | pxa_irda_enable_firclk(si); |
| 210 | 186 | ||
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c index f2051b209da2..2040965d7724 100644 --- a/drivers/net/smc91x.c +++ b/drivers/net/smc91x.c | |||
| @@ -308,7 +308,7 @@ static void smc_reset(struct net_device *dev) | |||
| 308 | * can't handle it then there will be no recovery except for | 308 | * can't handle it then there will be no recovery except for |
| 309 | * a hard reset or power cycle | 309 | * a hard reset or power cycle |
| 310 | */ | 310 | */ |
| 311 | if (nowait) | 311 | if (lp->cfg.flags & SMC91X_NOWAIT) |
| 312 | cfg |= CONFIG_NO_WAIT; | 312 | cfg |= CONFIG_NO_WAIT; |
| 313 | 313 | ||
| 314 | /* | 314 | /* |
| @@ -1939,8 +1939,11 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr, | |||
| 1939 | if (retval) | 1939 | if (retval) |
| 1940 | goto err_out; | 1940 | goto err_out; |
| 1941 | 1941 | ||
| 1942 | #ifdef SMC_USE_PXA_DMA | 1942 | #ifdef CONFIG_ARCH_PXA |
| 1943 | { | 1943 | # ifdef SMC_USE_PXA_DMA |
| 1944 | lp->cfg.flags |= SMC91X_USE_DMA; | ||
| 1945 | # endif | ||
| 1946 | if (lp->cfg.flags & SMC91X_USE_DMA) { | ||
| 1944 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, | 1947 | int dma = pxa_request_dma(dev->name, DMA_PRIO_LOW, |
| 1945 | smc_pxa_dma_irq, NULL); | 1948 | smc_pxa_dma_irq, NULL); |
| 1946 | if (dma >= 0) | 1949 | if (dma >= 0) |
| @@ -1980,7 +1983,7 @@ static int __init smc_probe(struct net_device *dev, void __iomem *ioaddr, | |||
| 1980 | } | 1983 | } |
| 1981 | 1984 | ||
| 1982 | err_out: | 1985 | err_out: |
| 1983 | #ifdef SMC_USE_PXA_DMA | 1986 | #ifdef CONFIG_ARCH_PXA |
| 1984 | if (retval && dev->dma != (unsigned char)-1) | 1987 | if (retval && dev->dma != (unsigned char)-1) |
| 1985 | pxa_free_dma(dev->dma); | 1988 | pxa_free_dma(dev->dma); |
| 1986 | #endif | 1989 | #endif |
| @@ -2050,9 +2053,11 @@ static int smc_enable_device(struct platform_device *pdev) | |||
| 2050 | return 0; | 2053 | return 0; |
| 2051 | } | 2054 | } |
| 2052 | 2055 | ||
| 2053 | static int smc_request_attrib(struct platform_device *pdev) | 2056 | static int smc_request_attrib(struct platform_device *pdev, |
| 2057 | struct net_device *ndev) | ||
| 2054 | { | 2058 | { |
| 2055 | struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-attrib"); | 2059 | struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-attrib"); |
| 2060 | struct smc_local *lp = netdev_priv(ndev); | ||
| 2056 | 2061 | ||
| 2057 | if (!res) | 2062 | if (!res) |
| 2058 | return 0; | 2063 | return 0; |
| @@ -2063,9 +2068,11 @@ static int smc_request_attrib(struct platform_device *pdev) | |||
| 2063 | return 0; | 2068 | return 0; |
| 2064 | } | 2069 | } |
| 2065 | 2070 | ||
| 2066 | static void smc_release_attrib(struct platform_device *pdev) | 2071 | static void smc_release_attrib(struct platform_device *pdev, |
| 2072 | struct net_device *ndev) | ||
| 2067 | { | 2073 | { |
| 2068 | struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-attrib"); | 2074 | struct resource * res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-attrib"); |
| 2075 | struct smc_local *lp = netdev_priv(ndev); | ||
| 2069 | 2076 | ||
| 2070 | if (res) | 2077 | if (res) |
| 2071 | release_mem_region(res->start, ATTRIB_SIZE); | 2078 | release_mem_region(res->start, ATTRIB_SIZE); |
| @@ -2123,27 +2130,14 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
| 2123 | struct net_device *ndev; | 2130 | struct net_device *ndev; |
| 2124 | struct resource *res, *ires; | 2131 | struct resource *res, *ires; |
| 2125 | unsigned int __iomem *addr; | 2132 | unsigned int __iomem *addr; |
| 2133 | unsigned long irq_flags = SMC_IRQ_FLAGS; | ||
| 2126 | int ret; | 2134 | int ret; |
| 2127 | 2135 | ||
| 2128 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs"); | ||
| 2129 | if (!res) | ||
| 2130 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
| 2131 | if (!res) { | ||
| 2132 | ret = -ENODEV; | ||
| 2133 | goto out; | ||
| 2134 | } | ||
| 2135 | |||
| 2136 | |||
| 2137 | if (!request_mem_region(res->start, SMC_IO_EXTENT, CARDNAME)) { | ||
| 2138 | ret = -EBUSY; | ||
| 2139 | goto out; | ||
| 2140 | } | ||
| 2141 | |||
| 2142 | ndev = alloc_etherdev(sizeof(struct smc_local)); | 2136 | ndev = alloc_etherdev(sizeof(struct smc_local)); |
| 2143 | if (!ndev) { | 2137 | if (!ndev) { |
| 2144 | printk("%s: could not allocate device.\n", CARDNAME); | 2138 | printk("%s: could not allocate device.\n", CARDNAME); |
| 2145 | ret = -ENOMEM; | 2139 | ret = -ENOMEM; |
| 2146 | goto out_release_io; | 2140 | goto out; |
| 2147 | } | 2141 | } |
| 2148 | SET_NETDEV_DEV(ndev, &pdev->dev); | 2142 | SET_NETDEV_DEV(ndev, &pdev->dev); |
| 2149 | 2143 | ||
| @@ -2152,37 +2146,47 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
| 2152 | */ | 2146 | */ |
| 2153 | 2147 | ||
| 2154 | lp = netdev_priv(ndev); | 2148 | lp = netdev_priv(ndev); |
| 2155 | lp->cfg.irq_flags = SMC_IRQ_FLAGS; | ||
| 2156 | 2149 | ||
| 2157 | #ifdef SMC_DYNAMIC_BUS_CONFIG | 2150 | if (pd) { |
| 2158 | if (pd) | ||
| 2159 | memcpy(&lp->cfg, pd, sizeof(lp->cfg)); | 2151 | memcpy(&lp->cfg, pd, sizeof(lp->cfg)); |
| 2160 | else { | 2152 | lp->io_shift = SMC91X_IO_SHIFT(lp->cfg.flags); |
| 2161 | lp->cfg.flags = SMC91X_USE_8BIT; | 2153 | } else { |
| 2162 | lp->cfg.flags |= SMC91X_USE_16BIT; | 2154 | lp->cfg.flags |= (SMC_CAN_USE_8BIT) ? SMC91X_USE_8BIT : 0; |
| 2163 | lp->cfg.flags |= SMC91X_USE_32BIT; | 2155 | lp->cfg.flags |= (SMC_CAN_USE_16BIT) ? SMC91X_USE_16BIT : 0; |
| 2156 | lp->cfg.flags |= (SMC_CAN_USE_32BIT) ? SMC91X_USE_32BIT : 0; | ||
| 2157 | lp->cfg.flags |= (nowait) ? SMC91X_NOWAIT : 0; | ||
| 2164 | } | 2158 | } |
| 2165 | 2159 | ||
| 2166 | lp->cfg.flags &= ~(SMC_CAN_USE_8BIT ? 0 : SMC91X_USE_8BIT); | ||
| 2167 | lp->cfg.flags &= ~(SMC_CAN_USE_16BIT ? 0 : SMC91X_USE_16BIT); | ||
| 2168 | lp->cfg.flags &= ~(SMC_CAN_USE_32BIT ? 0 : SMC91X_USE_32BIT); | ||
| 2169 | #endif | ||
| 2170 | |||
| 2171 | ndev->dma = (unsigned char)-1; | 2160 | ndev->dma = (unsigned char)-1; |
| 2172 | 2161 | ||
| 2162 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs"); | ||
| 2163 | if (!res) | ||
| 2164 | res = platform_get_resource(pdev, IORESOURCE_MEM, 0); | ||
| 2165 | if (!res) { | ||
| 2166 | ret = -ENODEV; | ||
| 2167 | goto out_free_netdev; | ||
| 2168 | } | ||
| 2169 | |||
| 2170 | |||
| 2171 | if (!request_mem_region(res->start, SMC_IO_EXTENT, CARDNAME)) { | ||
| 2172 | ret = -EBUSY; | ||
| 2173 | goto out_free_netdev; | ||
| 2174 | } | ||
| 2175 | |||
| 2173 | ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0); | 2176 | ires = platform_get_resource(pdev, IORESOURCE_IRQ, 0); |
| 2174 | if (!ires) { | 2177 | if (!ires) { |
| 2175 | ret = -ENODEV; | 2178 | ret = -ENODEV; |
| 2176 | goto out_free_netdev; | 2179 | goto out_release_io; |
| 2177 | } | 2180 | } |
| 2178 | 2181 | ||
| 2179 | ndev->irq = ires->start; | 2182 | ndev->irq = ires->start; |
| 2180 | if (SMC_IRQ_FLAGS == -1) | ||
| 2181 | lp->cfg.irq_flags = ires->flags & IRQF_TRIGGER_MASK; | ||
| 2182 | 2183 | ||
| 2183 | ret = smc_request_attrib(pdev); | 2184 | if (ires->flags & IRQF_TRIGGER_MASK) |
| 2185 | irq_flags = ires->flags & IRQF_TRIGGER_MASK; | ||
| 2186 | |||
| 2187 | ret = smc_request_attrib(pdev, ndev); | ||
| 2184 | if (ret) | 2188 | if (ret) |
| 2185 | goto out_free_netdev; | 2189 | goto out_release_io; |
| 2186 | #if defined(CONFIG_SA1100_ASSABET) | 2190 | #if defined(CONFIG_SA1100_ASSABET) |
| 2187 | NCR_0 |= NCR_ENET_OSC_EN; | 2191 | NCR_0 |= NCR_ENET_OSC_EN; |
| 2188 | #endif | 2192 | #endif |
| @@ -2197,7 +2201,7 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
| 2197 | goto out_release_attrib; | 2201 | goto out_release_attrib; |
| 2198 | } | 2202 | } |
| 2199 | 2203 | ||
| 2200 | #ifdef SMC_USE_PXA_DMA | 2204 | #ifdef CONFIG_ARCH_PXA |
| 2201 | { | 2205 | { |
| 2202 | struct smc_local *lp = netdev_priv(ndev); | 2206 | struct smc_local *lp = netdev_priv(ndev); |
| 2203 | lp->device = &pdev->dev; | 2207 | lp->device = &pdev->dev; |
| @@ -2205,7 +2209,7 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
| 2205 | } | 2209 | } |
| 2206 | #endif | 2210 | #endif |
| 2207 | 2211 | ||
| 2208 | ret = smc_probe(ndev, addr, lp->cfg.irq_flags); | 2212 | ret = smc_probe(ndev, addr, irq_flags); |
| 2209 | if (ret != 0) | 2213 | if (ret != 0) |
| 2210 | goto out_iounmap; | 2214 | goto out_iounmap; |
| 2211 | 2215 | ||
| @@ -2217,11 +2221,11 @@ static int smc_drv_probe(struct platform_device *pdev) | |||
| 2217 | platform_set_drvdata(pdev, NULL); | 2221 | platform_set_drvdata(pdev, NULL); |
| 2218 | iounmap(addr); | 2222 | iounmap(addr); |
| 2219 | out_release_attrib: | 2223 | out_release_attrib: |
| 2220 | smc_release_attrib(pdev); | 2224 | smc_release_attrib(pdev, ndev); |
| 2221 | out_free_netdev: | ||
| 2222 | free_netdev(ndev); | ||
| 2223 | out_release_io: | 2225 | out_release_io: |
| 2224 | release_mem_region(res->start, SMC_IO_EXTENT); | 2226 | release_mem_region(res->start, SMC_IO_EXTENT); |
| 2227 | out_free_netdev: | ||
| 2228 | free_netdev(ndev); | ||
| 2225 | out: | 2229 | out: |
| 2226 | printk("%s: not found (%d).\n", CARDNAME, ret); | 2230 | printk("%s: not found (%d).\n", CARDNAME, ret); |
| 2227 | 2231 | ||
| @@ -2240,14 +2244,14 @@ static int smc_drv_remove(struct platform_device *pdev) | |||
| 2240 | 2244 | ||
| 2241 | free_irq(ndev->irq, ndev); | 2245 | free_irq(ndev->irq, ndev); |
| 2242 | 2246 | ||
| 2243 | #ifdef SMC_USE_PXA_DMA | 2247 | #ifdef CONFIG_ARCH_PXA |
| 2244 | if (ndev->dma != (unsigned char)-1) | 2248 | if (ndev->dma != (unsigned char)-1) |
| 2245 | pxa_free_dma(ndev->dma); | 2249 | pxa_free_dma(ndev->dma); |
| 2246 | #endif | 2250 | #endif |
| 2247 | iounmap(lp->base); | 2251 | iounmap(lp->base); |
| 2248 | 2252 | ||
| 2249 | smc_release_datacs(pdev,ndev); | 2253 | smc_release_datacs(pdev,ndev); |
| 2250 | smc_release_attrib(pdev); | 2254 | smc_release_attrib(pdev,ndev); |
| 2251 | 2255 | ||
| 2252 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs"); | 2256 | res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs"); |
| 2253 | if (!res) | 2257 | if (!res) |
diff --git a/drivers/net/smc91x.h b/drivers/net/smc91x.h index 8606818653f8..22209b6f1405 100644 --- a/drivers/net/smc91x.h +++ b/drivers/net/smc91x.h | |||
| @@ -40,23 +40,46 @@ | |||
| 40 | * Define your architecture specific bus configuration parameters here. | 40 | * Define your architecture specific bus configuration parameters here. |
| 41 | */ | 41 | */ |
| 42 | 42 | ||
| 43 | #if defined(CONFIG_ARCH_LUBBOCK) | 43 | #if defined(CONFIG_ARCH_LUBBOCK) ||\ |
| 44 | defined(CONFIG_MACH_MAINSTONE) ||\ | ||
| 45 | defined(CONFIG_MACH_ZYLONITE) ||\ | ||
| 46 | defined(CONFIG_MACH_LITTLETON) | ||
| 44 | 47 | ||
| 45 | /* We can only do 16-bit reads and writes in the static memory space. */ | 48 | #include <asm/mach-types.h> |
| 46 | #define SMC_CAN_USE_8BIT 0 | 49 | |
| 50 | /* Now the bus width is specified in the platform data | ||
| 51 | * pretend here to support all I/O access types | ||
| 52 | */ | ||
| 53 | #define SMC_CAN_USE_8BIT 1 | ||
| 47 | #define SMC_CAN_USE_16BIT 1 | 54 | #define SMC_CAN_USE_16BIT 1 |
| 48 | #define SMC_CAN_USE_32BIT 0 | 55 | #define SMC_CAN_USE_32BIT 1 |
| 49 | #define SMC_NOWAIT 1 | 56 | #define SMC_NOWAIT 1 |
| 50 | 57 | ||
| 51 | /* The first two address lines aren't connected... */ | 58 | #define SMC_IO_SHIFT (lp->io_shift) |
| 52 | #define SMC_IO_SHIFT 2 | ||
| 53 | 59 | ||
| 60 | #define SMC_inb(a, r) readb((a) + (r)) | ||
| 54 | #define SMC_inw(a, r) readw((a) + (r)) | 61 | #define SMC_inw(a, r) readw((a) + (r)) |
| 55 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) | 62 | #define SMC_inl(a, r) readl((a) + (r)) |
| 63 | #define SMC_outb(v, a, r) writeb(v, (a) + (r)) | ||
| 64 | #define SMC_outl(v, a, r) writel(v, (a) + (r)) | ||
| 56 | #define SMC_insw(a, r, p, l) readsw((a) + (r), p, l) | 65 | #define SMC_insw(a, r, p, l) readsw((a) + (r), p, l) |
| 57 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) | 66 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) |
| 67 | #define SMC_insl(a, r, p, l) readsl((a) + (r), p, l) | ||
| 68 | #define SMC_outsl(a, r, p, l) writesl((a) + (r), p, l) | ||
| 58 | #define SMC_IRQ_FLAGS (-1) /* from resource */ | 69 | #define SMC_IRQ_FLAGS (-1) /* from resource */ |
| 59 | 70 | ||
| 71 | /* We actually can't write halfwords properly if not word aligned */ | ||
| 72 | static inline void SMC_outw(u16 val, void __iomem *ioaddr, int reg) | ||
| 73 | { | ||
| 74 | if (machine_is_mainstone() && reg & 2) { | ||
| 75 | unsigned int v = val << 16; | ||
| 76 | v |= readl(ioaddr + (reg & ~2)) & 0xffff; | ||
| 77 | writel(v, ioaddr + (reg & ~2)); | ||
| 78 | } else { | ||
| 79 | writew(val, ioaddr + reg); | ||
| 80 | } | ||
| 81 | } | ||
| 82 | |||
| 60 | #elif defined(CONFIG_BLACKFIN) | 83 | #elif defined(CONFIG_BLACKFIN) |
| 61 | 84 | ||
| 62 | #define SMC_IRQ_FLAGS IRQF_TRIGGER_HIGH | 85 | #define SMC_IRQ_FLAGS IRQF_TRIGGER_HIGH |
| @@ -195,7 +218,6 @@ | |||
| 195 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) | 218 | #define SMC_outsw(a, r, p, l) writesw((a) + (r), p, l) |
| 196 | 219 | ||
| 197 | #elif defined(CONFIG_ARCH_INNOKOM) || \ | 220 | #elif defined(CONFIG_ARCH_INNOKOM) || \ |
| 198 | defined(CONFIG_MACH_MAINSTONE) || \ | ||
| 199 | defined(CONFIG_ARCH_PXA_IDP) || \ | 221 | defined(CONFIG_ARCH_PXA_IDP) || \ |
| 200 | defined(CONFIG_ARCH_RAMSES) || \ | 222 | defined(CONFIG_ARCH_RAMSES) || \ |
| 201 | defined(CONFIG_ARCH_PCM027) | 223 | defined(CONFIG_ARCH_PCM027) |
| @@ -229,22 +251,6 @@ SMC_outw(u16 val, void __iomem *ioaddr, int reg) | |||
| 229 | } | 251 | } |
| 230 | } | 252 | } |
| 231 | 253 | ||
| 232 | #elif defined(CONFIG_MACH_ZYLONITE) | ||
| 233 | |||
| 234 | #define SMC_CAN_USE_8BIT 1 | ||
| 235 | #define SMC_CAN_USE_16BIT 1 | ||
| 236 | #define SMC_CAN_USE_32BIT 0 | ||
| 237 | #define SMC_IO_SHIFT 0 | ||
| 238 | #define SMC_NOWAIT 1 | ||
| 239 | #define SMC_USE_PXA_DMA 1 | ||
| 240 | #define SMC_inb(a, r) readb((a) + (r)) | ||
| 241 | #define SMC_inw(a, r) readw((a) + (r)) | ||
| 242 | #define SMC_insw(a, r, p, l) insw((a) + (r), p, l) | ||
| 243 | #define SMC_outsw(a, r, p, l) outsw((a) + (r), p, l) | ||
| 244 | #define SMC_outb(v, a, r) writeb(v, (a) + (r)) | ||
| 245 | #define SMC_outw(v, a, r) writew(v, (a) + (r)) | ||
| 246 | #define SMC_IRQ_FLAGS (-1) /* from resource */ | ||
| 247 | |||
| 248 | #elif defined(CONFIG_ARCH_OMAP) | 254 | #elif defined(CONFIG_ARCH_OMAP) |
| 249 | 255 | ||
| 250 | /* We can only do 16-bit reads and writes in the static memory space. */ | 256 | /* We can only do 16-bit reads and writes in the static memory space. */ |
| @@ -454,7 +460,6 @@ static inline void LPD7_SMC_outsw (unsigned char* a, int r, | |||
| 454 | #define RPC_LSA_DEFAULT RPC_LED_100_10 | 460 | #define RPC_LSA_DEFAULT RPC_LED_100_10 |
| 455 | #define RPC_LSB_DEFAULT RPC_LED_TX_RX | 461 | #define RPC_LSB_DEFAULT RPC_LED_TX_RX |
| 456 | 462 | ||
| 457 | #define SMC_DYNAMIC_BUS_CONFIG | ||
| 458 | #endif | 463 | #endif |
| 459 | 464 | ||
| 460 | 465 | ||
| @@ -493,7 +498,7 @@ struct smc_local { | |||
| 493 | 498 | ||
| 494 | spinlock_t lock; | 499 | spinlock_t lock; |
| 495 | 500 | ||
| 496 | #ifdef SMC_USE_PXA_DMA | 501 | #ifdef CONFIG_ARCH_PXA |
| 497 | /* DMA needs the physical address of the chip */ | 502 | /* DMA needs the physical address of the chip */ |
| 498 | u_long physaddr; | 503 | u_long physaddr; |
| 499 | struct device *device; | 504 | struct device *device; |
| @@ -501,20 +506,17 @@ struct smc_local { | |||
| 501 | void __iomem *base; | 506 | void __iomem *base; |
| 502 | void __iomem *datacs; | 507 | void __iomem *datacs; |
| 503 | 508 | ||
| 509 | /* the low address lines on some platforms aren't connected... */ | ||
| 510 | int io_shift; | ||
| 511 | |||
| 504 | struct smc91x_platdata cfg; | 512 | struct smc91x_platdata cfg; |
| 505 | }; | 513 | }; |
| 506 | 514 | ||
| 507 | #ifdef SMC_DYNAMIC_BUS_CONFIG | 515 | #define SMC_8BIT(p) ((p)->cfg.flags & SMC91X_USE_8BIT) |
| 508 | #define SMC_8BIT(p) (((p)->cfg.flags & SMC91X_USE_8BIT) && SMC_CAN_USE_8BIT) | 516 | #define SMC_16BIT(p) ((p)->cfg.flags & SMC91X_USE_16BIT) |
| 509 | #define SMC_16BIT(p) (((p)->cfg.flags & SMC91X_USE_16BIT) && SMC_CAN_USE_16BIT) | 517 | #define SMC_32BIT(p) ((p)->cfg.flags & SMC91X_USE_32BIT) |
| 510 | #define SMC_32BIT(p) (((p)->cfg.flags & SMC91X_USE_32BIT) && SMC_CAN_USE_32BIT) | ||
| 511 | #else | ||
| 512 | #define SMC_8BIT(p) SMC_CAN_USE_8BIT | ||
| 513 | #define SMC_16BIT(p) SMC_CAN_USE_16BIT | ||
| 514 | #define SMC_32BIT(p) SMC_CAN_USE_32BIT | ||
| 515 | #endif | ||
| 516 | 518 | ||
| 517 | #ifdef SMC_USE_PXA_DMA | 519 | #ifdef CONFIG_ARCH_PXA |
| 518 | /* | 520 | /* |
| 519 | * Let's use the DMA engine on the XScale PXA2xx for RX packets. This is | 521 | * Let's use the DMA engine on the XScale PXA2xx for RX packets. This is |
| 520 | * always happening in irq context so no need to worry about races. TX is | 522 | * always happening in irq context so no need to worry about races. TX is |
| @@ -608,7 +610,7 @@ smc_pxa_dma_irq(int dma, void *dummy) | |||
| 608 | { | 610 | { |
| 609 | DCSR(dma) = 0; | 611 | DCSR(dma) = 0; |
| 610 | } | 612 | } |
| 611 | #endif /* SMC_USE_PXA_DMA */ | 613 | #endif /* CONFIG_ARCH_PXA */ |
| 612 | 614 | ||
| 613 | 615 | ||
| 614 | /* | 616 | /* |
