diff options
author | Eric Miao <eric.miao@marvell.com> | 2008-06-06 05:13:02 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2008-07-12 16:52:40 -0400 |
commit | d280eadc4fba0bf99fb1c3b60e8c5e007f7da02c (patch) | |
tree | 3545255c30bf5cfc61b9c86b1f7f7d6313395575 /drivers/net | |
parent | 37d7035da5b1f184c610b038b376c0c647d8d72b (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/net')
-rw-r--r-- | drivers/net/smc91x.c | 9 |
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 | ||