* [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting
@ 2014-04-11 6:14 Axel Lin
2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin
` (2 more replies)
0 siblings, 3 replies; 9+ messages in thread
From: Axel Lin @ 2014-04-11 6:14 UTC (permalink / raw)
To: Linus Walleij, Alexandre Courbot; +Cc: Florian Fainelli, linux-gpio
The valid gpio is GPIO0 ~ GPIO58, so ngpio should be RDC321X_MAX_GPIO + 1.
Signed-off-by: Axel Lin <axel.lin@ingics.com>
---
drivers/gpio/gpio-rdc321x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c
index 88577c3..9e7da2d 100644
--- a/drivers/gpio/gpio-rdc321x.c
+++ b/drivers/gpio/gpio-rdc321x.c
@@ -176,7 +176,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev)
rdc321x_gpio_dev->chip.get = rdc_gpio_get_value;
rdc321x_gpio_dev->chip.set = rdc_gpio_set_value;
rdc321x_gpio_dev->chip.base = 0;
- rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios;
+ rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios + 1;
platform_set_drvdata(pdev, rdc321x_gpio_dev);
--
1.8.3.2
^ permalink raw reply related [flat|nested] 9+ messages in thread* [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc 2014-04-11 6:14 [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Axel Lin @ 2014-04-11 6:16 ` Axel Lin 2014-04-20 18:32 ` Florian Fainelli 2014-04-23 13:27 ` Linus Walleij 2014-04-20 18:31 ` [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Florian Fainelli 2014-04-23 13:25 ` Linus Walleij 2 siblings, 2 replies; 9+ messages in thread From: Axel Lin @ 2014-04-11 6:16 UTC (permalink / raw) To: Linus Walleij; +Cc: Alexandre Courbot, Florian Fainelli, linux-gpio This saves a few unwind code. Signed-off-by: Axel Lin <axel.lin@ingics.com> --- drivers/gpio/gpio-rdc321x.c | 19 ++++++------------- 1 file changed, 6 insertions(+), 13 deletions(-) diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c index 9e7da2d..3027591 100644 --- a/drivers/gpio/gpio-rdc321x.c +++ b/drivers/gpio/gpio-rdc321x.c @@ -141,7 +141,8 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) return -ENODEV; } - rdc321x_gpio_dev = kzalloc(sizeof(struct rdc321x_gpio), GFP_KERNEL); + rdc321x_gpio_dev = devm_kzalloc(&pdev->dev, sizeof(struct rdc321x_gpio), + GFP_KERNEL); if (!rdc321x_gpio_dev) { dev_err(&pdev->dev, "failed to allocate private data\n"); return -ENOMEM; @@ -150,8 +151,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg1"); if (!r) { dev_err(&pdev->dev, "failed to get gpio-reg1 resource\n"); - err = -ENODEV; - goto out_free; + return -ENODEV; } spin_lock_init(&rdc321x_gpio_dev->lock); @@ -162,8 +162,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg2"); if (!r) { dev_err(&pdev->dev, "failed to get gpio-reg2 resource\n"); - err = -ENODEV; - goto out_free; + return -ENODEV; } rdc321x_gpio_dev->reg2_ctrl_base = r->start; @@ -187,21 +186,17 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) rdc321x_gpio_dev->reg1_data_base, &rdc321x_gpio_dev->data_reg[0]); if (err) - goto out_free; + return err; err = pci_read_config_dword(rdc321x_gpio_dev->sb_pdev, rdc321x_gpio_dev->reg2_data_base, &rdc321x_gpio_dev->data_reg[1]); if (err) - goto out_free; + return err; dev_info(&pdev->dev, "registering %d GPIOs\n", rdc321x_gpio_dev->chip.ngpio); return gpiochip_add(&rdc321x_gpio_dev->chip); - -out_free: - kfree(rdc321x_gpio_dev); - return err; } static int rdc321x_gpio_remove(struct platform_device *pdev) @@ -213,8 +208,6 @@ static int rdc321x_gpio_remove(struct platform_device *pdev) if (ret) dev_err(&pdev->dev, "failed to unregister chip\n"); - kfree(rdc321x_gpio_dev); - return ret; } -- 1.8.3.2 ^ permalink raw reply related [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc 2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin @ 2014-04-20 18:32 ` Florian Fainelli 2014-04-23 13:27 ` Linus Walleij 1 sibling, 0 replies; 9+ messages in thread From: Florian Fainelli @ 2014-04-20 18:32 UTC (permalink / raw) To: Axel Lin, Linus Walleij; +Cc: Alexandre Courbot, linux-gpio Le 10/04/2014 23:16, Axel Lin a écrit : > This saves a few unwind code. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Florian Fainelli <florian@openwrt.org> > --- > drivers/gpio/gpio-rdc321x.c | 19 ++++++------------- > 1 file changed, 6 insertions(+), 13 deletions(-) > > diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c > index 9e7da2d..3027591 100644 > --- a/drivers/gpio/gpio-rdc321x.c > +++ b/drivers/gpio/gpio-rdc321x.c > @@ -141,7 +141,8 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) > return -ENODEV; > } > > - rdc321x_gpio_dev = kzalloc(sizeof(struct rdc321x_gpio), GFP_KERNEL); > + rdc321x_gpio_dev = devm_kzalloc(&pdev->dev, sizeof(struct rdc321x_gpio), > + GFP_KERNEL); > if (!rdc321x_gpio_dev) { > dev_err(&pdev->dev, "failed to allocate private data\n"); > return -ENOMEM; > @@ -150,8 +151,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) > r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg1"); > if (!r) { > dev_err(&pdev->dev, "failed to get gpio-reg1 resource\n"); > - err = -ENODEV; > - goto out_free; > + return -ENODEV; > } > > spin_lock_init(&rdc321x_gpio_dev->lock); > @@ -162,8 +162,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) > r = platform_get_resource_byname(pdev, IORESOURCE_IO, "gpio-reg2"); > if (!r) { > dev_err(&pdev->dev, "failed to get gpio-reg2 resource\n"); > - err = -ENODEV; > - goto out_free; > + return -ENODEV; > } > > rdc321x_gpio_dev->reg2_ctrl_base = r->start; > @@ -187,21 +186,17 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) > rdc321x_gpio_dev->reg1_data_base, > &rdc321x_gpio_dev->data_reg[0]); > if (err) > - goto out_free; > + return err; > > err = pci_read_config_dword(rdc321x_gpio_dev->sb_pdev, > rdc321x_gpio_dev->reg2_data_base, > &rdc321x_gpio_dev->data_reg[1]); > if (err) > - goto out_free; > + return err; > > dev_info(&pdev->dev, "registering %d GPIOs\n", > rdc321x_gpio_dev->chip.ngpio); > return gpiochip_add(&rdc321x_gpio_dev->chip); > - > -out_free: > - kfree(rdc321x_gpio_dev); > - return err; > } > > static int rdc321x_gpio_remove(struct platform_device *pdev) > @@ -213,8 +208,6 @@ static int rdc321x_gpio_remove(struct platform_device *pdev) > if (ret) > dev_err(&pdev->dev, "failed to unregister chip\n"); > > - kfree(rdc321x_gpio_dev); > - > return ret; > } > > -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc 2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin 2014-04-20 18:32 ` Florian Fainelli @ 2014-04-23 13:27 ` Linus Walleij 1 sibling, 0 replies; 9+ messages in thread From: Linus Walleij @ 2014-04-23 13:27 UTC (permalink / raw) To: Axel Lin; +Cc: Alexandre Courbot, Florian Fainelli, linux-gpio@vger.kernel.org On Fri, Apr 11, 2014 at 8:16 AM, Axel Lin <axel.lin@ingics.com> wrote: > This saves a few unwind code. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> Patch applied with Florian's ACK. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting 2014-04-11 6:14 [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Axel Lin 2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin @ 2014-04-20 18:31 ` Florian Fainelli 2014-04-23 13:25 ` Linus Walleij 2 siblings, 0 replies; 9+ messages in thread From: Florian Fainelli @ 2014-04-20 18:31 UTC (permalink / raw) To: Axel Lin, Linus Walleij, Alexandre Courbot; +Cc: linux-gpio Le 10/04/2014 23:14, Axel Lin a écrit : > The valid gpio is GPIO0 ~ GPIO58, so ngpio should be RDC321X_MAX_GPIO + 1. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> Acked-by: Florian Fainelli <florian@openwrt.org> > --- > drivers/gpio/gpio-rdc321x.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/gpio/gpio-rdc321x.c b/drivers/gpio/gpio-rdc321x.c > index 88577c3..9e7da2d 100644 > --- a/drivers/gpio/gpio-rdc321x.c > +++ b/drivers/gpio/gpio-rdc321x.c > @@ -176,7 +176,7 @@ static int rdc321x_gpio_probe(struct platform_device *pdev) > rdc321x_gpio_dev->chip.get = rdc_gpio_get_value; > rdc321x_gpio_dev->chip.set = rdc_gpio_set_value; > rdc321x_gpio_dev->chip.base = 0; > - rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios; > + rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios + 1; > > platform_set_drvdata(pdev, rdc321x_gpio_dev); > > -- 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 ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting 2014-04-11 6:14 [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Axel Lin 2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin 2014-04-20 18:31 ` [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Florian Fainelli @ 2014-04-23 13:25 ` Linus Walleij 2014-04-23 14:00 ` Axel Lin 2 siblings, 1 reply; 9+ messages in thread From: Linus Walleij @ 2014-04-23 13:25 UTC (permalink / raw) To: Axel Lin; +Cc: Alexandre Courbot, Florian Fainelli, linux-gpio@vger.kernel.org On Fri, Apr 11, 2014 at 8:14 AM, Axel Lin <axel.lin@ingics.com> wrote: > The valid gpio is GPIO0 ~ GPIO58, so ngpio should be RDC321X_MAX_GPIO + 1. > > Signed-off-by: Axel Lin <axel.lin@ingics.com> (...) > - rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios; > + rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios + 1; This is counter-intuitive. "max_gpios" should be a name for the maximum number of gpios right? Not the maximum number of GPIOs minus one! It is better to patch include/linux/mfd/rdc321x.h: -#define RDC321X_MAX_GPIO 58 +#define RDC321X_MAX_GPIO 59 Which establishes the true character of this device. Yours, Linus Walleij ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting 2014-04-23 13:25 ` Linus Walleij @ 2014-04-23 14:00 ` Axel Lin 2014-04-23 21:53 ` Linus Walleij 0 siblings, 1 reply; 9+ messages in thread From: Axel Lin @ 2014-04-23 14:00 UTC (permalink / raw) To: Linus Walleij Cc: Alexandre Courbot, Florian Fainelli, linux-gpio@vger.kernel.org 2014-04-23 21:25 GMT+08:00 Linus Walleij <linus.walleij@linaro.org>: > On Fri, Apr 11, 2014 at 8:14 AM, Axel Lin <axel.lin@ingics.com> wrote: > >> The valid gpio is GPIO0 ~ GPIO58, so ngpio should be RDC321X_MAX_GPIO + 1. >> >> Signed-off-by: Axel Lin <axel.lin@ingics.com> > (...) >> - rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios; >> + rdc321x_gpio_dev->chip.ngpio = pdata->max_gpios + 1; > > This is counter-intuitive. "max_gpios" should be a name for the > maximum number of gpios right? Not the maximum number of > GPIOs minus one! > > It is better to patch include/linux/mfd/rdc321x.h: > > -#define RDC321X_MAX_GPIO 58 > +#define RDC321X_MAX_GPIO 59 Hi Linus, I'm wondering if it is better to define RDC321X_NUM_GPIO (59) rather than RDC321X_MAX_GPIO. How do you think? Regards, Axel ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting 2014-04-23 14:00 ` Axel Lin @ 2014-04-23 21:53 ` Linus Walleij 2014-04-23 21:55 ` Florian Fainelli 0 siblings, 1 reply; 9+ messages in thread From: Linus Walleij @ 2014-04-23 21:53 UTC (permalink / raw) To: Axel Lin; +Cc: Alexandre Courbot, Florian Fainelli, linux-gpio@vger.kernel.org On Wed, Apr 23, 2014 at 4:00 PM, Axel Lin <axel.lin@ingics.com> wrote: > 2014-04-23 21:25 GMT+08:00 Linus Walleij <linus.walleij@linaro.org>: >> -#define RDC321X_MAX_GPIO 58 >> +#define RDC321X_MAX_GPIO 59 > Hi Linus, > > I'm wondering if it is better to define RDC321X_NUM_GPIO (59) rather > than RDC321X_MAX_GPIO. > How do you think? I think yes. It's not a maximum really is it? It's the number available, they just mean the max enumerator you can use :-P Yours, Linus Walleij ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting 2014-04-23 21:53 ` Linus Walleij @ 2014-04-23 21:55 ` Florian Fainelli 0 siblings, 0 replies; 9+ messages in thread From: Florian Fainelli @ 2014-04-23 21:55 UTC (permalink / raw) To: Linus Walleij; +Cc: Axel Lin, Alexandre Courbot, linux-gpio@vger.kernel.org 2014-04-23 14:53 GMT-07:00 Linus Walleij <linus.walleij@linaro.org>: > On Wed, Apr 23, 2014 at 4:00 PM, Axel Lin <axel.lin@ingics.com> wrote: >> 2014-04-23 21:25 GMT+08:00 Linus Walleij <linus.walleij@linaro.org>: > >>> -#define RDC321X_MAX_GPIO 58 >>> +#define RDC321X_MAX_GPIO 59 >> Hi Linus, >> >> I'm wondering if it is better to define RDC321X_NUM_GPIO (59) rather >> than RDC321X_MAX_GPIO. >> How do you think? > > I think yes. It's not a maximum really is it? It's the number available, > they just mean the max enumerator you can use :-P Yes, NUM_GPIO is probably a better name for this, and it turns out to also be the maximum for that particular GPIO chip, then it's all good. -- Florian ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2014-04-23 21:55 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2014-04-11 6:14 [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Axel Lin 2014-04-11 6:16 ` [PATCH 2/2] gpio: rdc321x: Convert to use devm_kzalloc Axel Lin 2014-04-20 18:32 ` Florian Fainelli 2014-04-23 13:27 ` Linus Walleij 2014-04-20 18:31 ` [PATCH 1/2] gpio: rdc321x: Fix off-by-one for ngpio setting Florian Fainelli 2014-04-23 13:25 ` Linus Walleij 2014-04-23 14:00 ` Axel Lin 2014-04-23 21:53 ` Linus Walleij 2014-04-23 21:55 ` Florian Fainelli
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).