On Wed, 7 Mar 2012 13:57:05 +0100, "Cousson, Benoit" <b-cousson@xxxxxx> wrote: > Hi Grant, > > That fix is tightly coupled with the previous twl4030-irq change, so it > will be good to pulled it with the twl series through MFD if you are OK > with that? > > Care to ack this one and the next one? > > Thanks, > Benoit > > > On 3/2/2012 5:50 PM, Benoit Cousson wrote: > > Do not use the board pdata for irq_base, but allocate them dynamically > > to allow a proper support of SPARSE_IRQ. > > > > Fix an unneeded line wrap. > > > > Signed-off-by: Benoit Cousson<b-cousson@xxxxxx> > > Acked-by: Felipe Balbi<balbi@xxxxxx> Acked-by: Grant Likely <grant.likely@xxxxxxxxxxxx> > > --- > > drivers/gpio/gpio-twl4030.c | 33 +++++++++++++++++---------------- > > 1 files changed, 17 insertions(+), 16 deletions(-) > > > > diff --git a/drivers/gpio/gpio-twl4030.c b/drivers/gpio/gpio-twl4030.c > > index 697396c..49e5c6e 100644 > > --- a/drivers/gpio/gpio-twl4030.c > > +++ b/drivers/gpio/gpio-twl4030.c > > @@ -395,23 +395,26 @@ static int gpio_twl4030_remove(struct platform_device *pdev); > > static int __devinit gpio_twl4030_probe(struct platform_device *pdev) > > { > > struct twl4030_gpio_platform_data *pdata = pdev->dev.platform_data; > > - int ret; > > + int ret, irq_base; > > > > /* maybe setup IRQs */ > > - if (pdata->irq_base) { > > - if (is_module()) { > > - dev_err(&pdev->dev, > > - "can't dispatch IRQs from modules\n"); > > - goto no_irqs; > > - } > > - ret = twl4030_sih_setup(&pdev->dev, TWL4030_MODULE_GPIO, > > - pdata->irq_base); > > - if (ret< 0) > > - return ret; > > - WARN_ON(ret != pdata->irq_base); > > - twl4030_gpio_irq_base = ret; > > + if (is_module()) { > > + dev_err(&pdev->dev, "can't dispatch IRQs from modules\n"); > > + goto no_irqs; > > + } > > + > > + irq_base = irq_alloc_descs(-1, 0, TWL4030_GPIO_MAX, 0); > > + if (irq_base< 0) { > > + dev_err(&pdev->dev, "Failed to alloc irq_descs\n"); > > + return irq_base; > > } > > > > + ret = twl4030_sih_setup(&pdev->dev, TWL4030_MODULE_GPIO, irq_base); > > + if (ret< 0) > > + return ret; > > + > > + twl4030_gpio_irq_base = irq_base; > > + > > no_irqs: > > /* > > * NOTE: boards may waste power if they don't set pullups > > @@ -443,9 +446,7 @@ no_irqs: > > > > ret = gpiochip_add(&twl_gpiochip); > > if (ret< 0) { > > - dev_err(&pdev->dev, > > - "could not register gpiochip, %d\n", > > - ret); > > + dev_err(&pdev->dev, "could not register gpiochip, %d\n", ret); > > twl_gpiochip.ngpio = 0; > > gpio_twl4030_remove(pdev); > > } else if (pdata->setup) { > -- Grant Likely, B.Sc, P.Eng. Secret Lab Technologies,Ltd. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html