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 | /* |