diff options
Diffstat (limited to 'recipes/linux/linux-omap-2.6.29/smsc/smsc911x-1.patch')
-rw-r--r-- | recipes/linux/linux-omap-2.6.29/smsc/smsc911x-1.patch | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/recipes/linux/linux-omap-2.6.29/smsc/smsc911x-1.patch b/recipes/linux/linux-omap-2.6.29/smsc/smsc911x-1.patch new file mode 100644 index 0000000000..1efe181872 --- /dev/null +++ b/recipes/linux/linux-omap-2.6.29/smsc/smsc911x-1.patch @@ -0,0 +1,71 @@ +From: Steve Glendinning <steve.glendinning@smsc.com> + +This patch adds support for the platform_device's resources to indicate +additional flags to use when registering the irq, for example +IORESOURCE_IRQ_LOWLEVEL (which corresponds to IRQF_TRIGGER_LOW). These +should be set in the irq resource flags field. + +Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com> +--- + drivers/net/smsc911x.c | 19 ++++++++++++++----- + 1 files changed, 14 insertions(+), 5 deletions(-) + +diff --git a/drivers/net/smsc911x.c b/drivers/net/smsc911x.c +index f513bdf..3565df1 100644 +--- a/drivers/net/smsc911x.c ++++ b/drivers/net/smsc911x.c +@@ -1892,9 +1892,9 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) + struct net_device *dev; + struct smsc911x_data *pdata; + struct smsc911x_platform_config *config = pdev->dev.platform_data; +- struct resource *res; ++ struct resource *res, *irq_res; + unsigned int intcfg = 0; +- int res_size; ++ int res_size, irq_flags; + int retval; + DECLARE_MAC_BUF(mac); + +@@ -1919,6 +1919,14 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) + } + res_size = res->end - res->start; + ++ irq_res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); ++ if (!irq_res) { ++ pr_warning("%s: Could not allocate irq resource.\n", ++ SMSC_CHIPNAME); ++ retval = -ENODEV; ++ goto out_0; ++ } ++ + if (!request_mem_region(res->start, res_size, SMSC_CHIPNAME)) { + retval = -EBUSY; + goto out_0; +@@ -1935,7 +1943,8 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) + + pdata = netdev_priv(dev); + +- dev->irq = platform_get_irq(pdev, 0); ++ dev->irq = irq_res->start; ++ irq_flags = irq_res->flags & IRQF_TRIGGER_MASK; + pdata->ioaddr = ioremap_nocache(res->start, res_size); + + /* copy config parameters across to pdata */ +@@ -1968,8 +1977,8 @@ static int __devinit smsc911x_drv_probe(struct platform_device *pdev) + smsc911x_reg_write(pdata, INT_EN, 0); + smsc911x_reg_write(pdata, INT_STS, 0xFFFFFFFF); + +- retval = request_irq(dev->irq, smsc911x_irqhandler, IRQF_DISABLED, +- dev->name, dev); ++ retval = request_irq(dev->irq, smsc911x_irqhandler, ++ irq_flags | IRQF_DISABLED, dev->name, dev); + if (retval) { + SMSC_WARNING(PROBE, + "Unable to claim requested irq: %d", dev->irq); +-- +1.6.0.6 + +-- +To unsubscribe from this list: send the line "unsubscribe netdev" in +the body of a message to majordomo@vger.kernel.org +More majordomo info at http://vger.kernel.org/majordomo-info.html |