aboutsummaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorEric Miao <eric.miao@marvell.com>2008-06-06 05:13:02 -0400
committerRussell King <rmk+kernel@arm.linux.org.uk>2008-07-12 16:52:40 -0400
commitd280eadc4fba0bf99fb1c3b60e8c5e007f7da02c (patch)
tree3545255c30bf5cfc61b9c86b1f7f7d6313395575 /drivers
parent37d7035da5b1f184c610b038b376c0c647d8d72b (diff)
[NET] smc91x: remove "irq_flags" from "struct smc91x_platdata"
IRQ trigger type can be specified in the IRQ resource definition by IORESOURCE_IRQ_*, we need only one way to specify this. This also fixes the following small issue: To allow dynamic support for multiple platforms, when those relevant macros are not defined for one specific platform, the default case will be: - SMC_DYNAMIC_BUS_CONFIG defined - and SMC_IRQ_FLAGS = IRQF_TRIGGER_RISING While if "irq_flags" is missing when defining the smc91x_platdata, usually as follows: static struct smc91x_platdata xxxx_smc91x_data = { .flags = SMC91X_USE_XXBIT, }; The lp->cfg.irq_flags will always be overriden by the above structure (due to a memcpy), thus rendering lp->cfg.irq_flags to be "0" always. (regardless of the default SMC_IRQ_FLAGS or IORESOURCE_IRQ_* flags) Fixes this by forcing to use IORESOURCE_IRQ_* flags if present, and make the only user of smc91x_platdata.irq_flags (renesas/migor) to use IORESOURCE_IRQ_*. Signed-off-by: Eric Miao <eric.miao@marvell.com> Acked-by: Nicolas Pitre <nico@cam.org> Acked-by: Jeff Garzik <jgarzik@pobox.com> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/smc91x.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/drivers/net/smc91x.c b/drivers/net/smc91x.c
index f2051b209da2..e4a6c361995a 100644
--- a/drivers/net/smc91x.c
+++ b/drivers/net/smc91x.c
@@ -2123,6 +2123,7 @@ static int smc_drv_probe(struct platform_device *pdev)
2123 struct net_device *ndev; 2123 struct net_device *ndev;
2124 struct resource *res, *ires; 2124 struct resource *res, *ires;
2125 unsigned int __iomem *addr; 2125 unsigned int __iomem *addr;
2126 unsigned long irq_flags = SMC_IRQ_FLAGS;
2126 int ret; 2127 int ret;
2127 2128
2128 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs"); 2129 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "smc91x-regs");
@@ -2152,7 +2153,6 @@ static int smc_drv_probe(struct platform_device *pdev)
2152 */ 2153 */
2153 2154
2154 lp = netdev_priv(ndev); 2155 lp = netdev_priv(ndev);
2155 lp->cfg.irq_flags = SMC_IRQ_FLAGS;
2156 2156
2157#ifdef SMC_DYNAMIC_BUS_CONFIG 2157#ifdef SMC_DYNAMIC_BUS_CONFIG
2158 if (pd) 2158 if (pd)
@@ -2177,8 +2177,9 @@ static int smc_drv_probe(struct platform_device *pdev)
2177 } 2177 }
2178 2178
2179 ndev->irq = ires->start; 2179 ndev->irq = ires->start;
2180 if (SMC_IRQ_FLAGS == -1) 2180
2181 lp->cfg.irq_flags = ires->flags & IRQF_TRIGGER_MASK; 2181 if (ires->flags & IRQF_TRIGGER_MASK)
2182 irq_flags = ires->flags & IRQF_TRIGGER_MASK;
2182 2183
2183 ret = smc_request_attrib(pdev); 2184 ret = smc_request_attrib(pdev);
2184 if (ret) 2185 if (ret)
@@ -2205,7 +2206,7 @@ static int smc_drv_probe(struct platform_device *pdev)
2205 } 2206 }
2206#endif 2207#endif
2207 2208
2208 ret = smc_probe(ndev, addr, lp->cfg.irq_flags); 2209 ret = smc_probe(ndev, addr, irq_flags);
2209 if (ret != 0) 2210 if (ret != 0)
2210 goto out_iounmap; 2211 goto out_iounmap;
2211 2212