Message ID | 20170720170107.14612-1-thierry.reding@gmail.com |
---|---|
State | New |
Headers | show |
On Thu, Jul 20, 2017 at 07:01:07PM +0200, Thierry Reding wrote: > From: Thierry Reding <treding@nvidia.com> > > The GPIO offset is never initialized, which means that it will end up > being zero as per the devm_kzalloc() of the parent structure. > > Signed-off-by: Thierry Reding <treding@nvidia.com> > --- > I have no idea how the driver could've ever worked for anything other > than instances with a single bank, but maybe it did and I missed some > detail. > > drivers/pinctrl/sirf/pinctrl-atlas7.c | 1 + > 1 file changed, 1 insertion(+) Any comments on this one? Thierry > > diff --git a/drivers/pinctrl/sirf/pinctrl-atlas7.c b/drivers/pinctrl/sirf/pinctrl-atlas7.c > index 36b5c8d5471e..a2ca4a9472c7 100644 > --- a/drivers/pinctrl/sirf/pinctrl-atlas7.c > +++ b/drivers/pinctrl/sirf/pinctrl-atlas7.c > @@ -6078,6 +6078,7 @@ static int atlas7_gpio_probe(struct platform_device *pdev) > bank = &a7gc->banks[idx]; > /* Set ctrl registers' base of this bank */ > bank->base = ATLAS7_GPIO_BASE(a7gc, idx); > + bank->gpio_offset = idx * NGPIO_OF_BANK; > > /* Get interrupt number from DTS */ > ret = of_irq_get(np, idx); > -- > 2.13.3 >
On Thu, Jul 20, 2017 at 7:01 PM, Thierry Reding <thierry.reding@gmail.com> wrote: > From: Thierry Reding <treding@nvidia.com> > > The GPIO offset is never initialized, which means that it will end up > being zero as per the devm_kzalloc() of the parent structure. > > Signed-off-by: Thierry Reding <treding@nvidia.com> > --- > I have no idea how the driver could've ever worked for anything other > than instances with a single bank, but maybe it did and I missed some > detail. Patch applied. I went in and attack-patched this driver, see: commit 4e6fd26dcf5d70a7700a4c15d8f239103bdce91d "pinctrl: sirf/atlas7: stop poking around in GPIO internals" I don't know if I may have upset the SirF developers or something, or if I was an especially big asshole for not noticing the problem I fixed already in the first iteration of the patch, or if I have done something else evil, but I just haven't heard from the developers since. If the problem is me, I'm sorry :( I would like to have this driver up-to-date and verified working. Yours, Linus Walleij -- To unsubscribe from this list: send the line "unsubscribe linux-gpio" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/pinctrl/sirf/pinctrl-atlas7.c b/drivers/pinctrl/sirf/pinctrl-atlas7.c index 36b5c8d5471e..a2ca4a9472c7 100644 --- a/drivers/pinctrl/sirf/pinctrl-atlas7.c +++ b/drivers/pinctrl/sirf/pinctrl-atlas7.c @@ -6078,6 +6078,7 @@ static int atlas7_gpio_probe(struct platform_device *pdev) bank = &a7gc->banks[idx]; /* Set ctrl registers' base of this bank */ bank->base = ATLAS7_GPIO_BASE(a7gc, idx); + bank->gpio_offset = idx * NGPIO_OF_BANK; /* Get interrupt number from DTS */ ret = of_irq_get(np, idx);