In order to simplify cleanup actions, use devres-enabled version of
gpiochip_add_data().
Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
---
drivers/pinctrl/qcom/pinctrl-msm.c | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
index 88dd462516c76d58b43d49accbddeea38af8f1ec..b2e8f7b3f3e3d5d232b2bd60e5cace62b21ffb03 100644
--- a/drivers/pinctrl/qcom/pinctrl-msm.c
+++ b/drivers/pinctrl/qcom/pinctrl-msm.c
@@ -1449,7 +1449,7 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
girq->handler = handle_bad_irq;
girq->parents[0] = pctrl->irq;
- ret = gpiochip_add_data(&pctrl->chip, pctrl);
+ ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
if (ret) {
dev_err(pctrl->dev, "Failed register gpiochip\n");
return ret;
@@ -1470,7 +1470,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
dev_name(pctrl->dev), 0, 0, chip->ngpio);
if (ret) {
dev_err(pctrl->dev, "Failed to add pin range\n");
- gpiochip_remove(&pctrl->chip);
return ret;
}
}
@@ -1608,9 +1607,6 @@ EXPORT_SYMBOL(msm_pinctrl_probe);
void msm_pinctrl_remove(struct platform_device *pdev)
{
- struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
-
- gpiochip_remove(&pctrl->chip);
}
EXPORT_SYMBOL(msm_pinctrl_remove);
--
2.39.5
On Sat, 3 May 2025 at 07:32, Dmitry Baryshkov
<dmitry.baryshkov@oss.qualcomm.com> wrote:
>
> In order to simplify cleanup actions, use devres-enabled version of
> gpiochip_add_data().
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
> drivers/pinctrl/qcom/pinctrl-msm.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
> index 88dd462516c76d58b43d49accbddeea38af8f1ec..b2e8f7b3f3e3d5d232b2bd60e5cace62b21ffb03 100644
> --- a/drivers/pinctrl/qcom/pinctrl-msm.c
> +++ b/drivers/pinctrl/qcom/pinctrl-msm.c
> @@ -1449,7 +1449,7 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> girq->handler = handle_bad_irq;
> girq->parents[0] = pctrl->irq;
>
> - ret = gpiochip_add_data(&pctrl->chip, pctrl);
> + ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
> if (ret) {
> dev_err(pctrl->dev, "Failed register gpiochip\n");
> return ret;
> @@ -1470,7 +1470,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> dev_name(pctrl->dev), 0, 0, chip->ngpio);
> if (ret) {
> dev_err(pctrl->dev, "Failed to add pin range\n");
> - gpiochip_remove(&pctrl->chip);
> return ret;
> }
> }
> @@ -1608,9 +1607,6 @@ EXPORT_SYMBOL(msm_pinctrl_probe);
>
> void msm_pinctrl_remove(struct platform_device *pdev)
> {
> - struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
> -
> - gpiochip_remove(&pctrl->chip);
> }
> EXPORT_SYMBOL(msm_pinctrl_remove);
>
>
> --
> 2.39.5
>
If you're at it then why not remove this function here and the
callback assignment throughout the pinctrl/qcom/ directory?
Bart
On Tue, 6 May 2025 at 19:18, Bartosz Golaszewski
<bartosz.golaszewski@linaro.org> wrote:
>
> On Sat, 3 May 2025 at 07:32, Dmitry Baryshkov
> <dmitry.baryshkov@oss.qualcomm.com> wrote:
> >
> > In order to simplify cleanup actions, use devres-enabled version of
> > gpiochip_add_data().
> >
> > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > ---
> > drivers/pinctrl/qcom/pinctrl-msm.c | 6 +-----
> > 1 file changed, 1 insertion(+), 5 deletions(-)
> >
> > diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
> > index 88dd462516c76d58b43d49accbddeea38af8f1ec..b2e8f7b3f3e3d5d232b2bd60e5cace62b21ffb03 100644
> > --- a/drivers/pinctrl/qcom/pinctrl-msm.c
> > +++ b/drivers/pinctrl/qcom/pinctrl-msm.c
> > @@ -1449,7 +1449,7 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> > girq->handler = handle_bad_irq;
> > girq->parents[0] = pctrl->irq;
> >
> > - ret = gpiochip_add_data(&pctrl->chip, pctrl);
> > + ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
> > if (ret) {
> > dev_err(pctrl->dev, "Failed register gpiochip\n");
> > return ret;
> > @@ -1470,7 +1470,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> > dev_name(pctrl->dev), 0, 0, chip->ngpio);
> > if (ret) {
> > dev_err(pctrl->dev, "Failed to add pin range\n");
> > - gpiochip_remove(&pctrl->chip);
> > return ret;
> > }
> > }
> > @@ -1608,9 +1607,6 @@ EXPORT_SYMBOL(msm_pinctrl_probe);
> >
> > void msm_pinctrl_remove(struct platform_device *pdev)
> > {
> > - struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
> > -
> > - gpiochip_remove(&pctrl->chip);
> > }
> > EXPORT_SYMBOL(msm_pinctrl_remove);
> >
> >
> > --
> > 2.39.5
> >
>
> If you're at it then why not remove this function here and the
> callback assignment throughout the pinctrl/qcom/ directory?
>
> Bart
Ah, it's in the next patch. I'd make it one commit though, no reason
to split it IMO.
Bartosz
On Tue, May 06, 2025 at 07:23:10PM +0200, Bartosz Golaszewski wrote:
> On Tue, 6 May 2025 at 19:18, Bartosz Golaszewski
> <bartosz.golaszewski@linaro.org> wrote:
> >
> > On Sat, 3 May 2025 at 07:32, Dmitry Baryshkov
> > <dmitry.baryshkov@oss.qualcomm.com> wrote:
> > >
> > > In order to simplify cleanup actions, use devres-enabled version of
> > > gpiochip_add_data().
> > >
> > > Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> > > ---
> > > drivers/pinctrl/qcom/pinctrl-msm.c | 6 +-----
> > > 1 file changed, 1 insertion(+), 5 deletions(-)
> > >
> > > diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
> > > index 88dd462516c76d58b43d49accbddeea38af8f1ec..b2e8f7b3f3e3d5d232b2bd60e5cace62b21ffb03 100644
> > > --- a/drivers/pinctrl/qcom/pinctrl-msm.c
> > > +++ b/drivers/pinctrl/qcom/pinctrl-msm.c
> > > @@ -1449,7 +1449,7 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> > > girq->handler = handle_bad_irq;
> > > girq->parents[0] = pctrl->irq;
> > >
> > > - ret = gpiochip_add_data(&pctrl->chip, pctrl);
> > > + ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
> > > if (ret) {
> > > dev_err(pctrl->dev, "Failed register gpiochip\n");
> > > return ret;
> > > @@ -1470,7 +1470,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> > > dev_name(pctrl->dev), 0, 0, chip->ngpio);
> > > if (ret) {
> > > dev_err(pctrl->dev, "Failed to add pin range\n");
> > > - gpiochip_remove(&pctrl->chip);
> > > return ret;
> > > }
> > > }
> > > @@ -1608,9 +1607,6 @@ EXPORT_SYMBOL(msm_pinctrl_probe);
> > >
> > > void msm_pinctrl_remove(struct platform_device *pdev)
> > > {
> > > - struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
> > > -
> > > - gpiochip_remove(&pctrl->chip);
> > > }
> > > EXPORT_SYMBOL(msm_pinctrl_remove);
> > >
> > >
> > > --
> > > 2.39.5
> > >
> >
> > If you're at it then why not remove this function here and the
> > callback assignment throughout the pinctrl/qcom/ directory?
> >
> > Bart
>
> Ah, it's in the next patch. I'd make it one commit though, no reason
> to split it IMO.
Up to you, but from my POV it's cleaner this way: first patch removes
the contents, second one removes the function. Otherwise it's too easy
to loose the functional changes (of gpiochip_remove() removal) in the
noise of updating all the platform files.
If you wish, I can add a note to the commit message telling that the
actual function will be dropped in the next commit.
--
With best wishes
Dmitry
On 03/05/2025 08:32, Dmitry Baryshkov wrote:
> In order to simplify cleanup actions, use devres-enabled version of
> gpiochip_add_data().
>
> Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@oss.qualcomm.com>
> ---
> drivers/pinctrl/qcom/pinctrl-msm.c | 6 +-----
> 1 file changed, 1 insertion(+), 5 deletions(-)
>
> diff --git a/drivers/pinctrl/qcom/pinctrl-msm.c b/drivers/pinctrl/qcom/pinctrl-msm.c
> index 88dd462516c76d58b43d49accbddeea38af8f1ec..b2e8f7b3f3e3d5d232b2bd60e5cace62b21ffb03 100644
> --- a/drivers/pinctrl/qcom/pinctrl-msm.c
> +++ b/drivers/pinctrl/qcom/pinctrl-msm.c
> @@ -1449,7 +1449,7 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> girq->handler = handle_bad_irq;
> girq->parents[0] = pctrl->irq;
>
> - ret = gpiochip_add_data(&pctrl->chip, pctrl);
> + ret = devm_gpiochip_add_data(pctrl->dev, &pctrl->chip, pctrl);
> if (ret) {
> dev_err(pctrl->dev, "Failed register gpiochip\n");
> return ret;
> @@ -1470,7 +1470,6 @@ static int msm_gpio_init(struct msm_pinctrl *pctrl)
> dev_name(pctrl->dev), 0, 0, chip->ngpio);
> if (ret) {
> dev_err(pctrl->dev, "Failed to add pin range\n");
> - gpiochip_remove(&pctrl->chip);
> return ret;
> }
> }
> @@ -1608,9 +1607,6 @@ EXPORT_SYMBOL(msm_pinctrl_probe);
>
> void msm_pinctrl_remove(struct platform_device *pdev)
> {
> - struct msm_pinctrl *pctrl = platform_get_drvdata(pdev);
> -
> - gpiochip_remove(&pctrl->chip);
> }
> EXPORT_SYMBOL(msm_pinctrl_remove);
I suppose this should also make the time window when the GPIO chip has
gone, but pinmux is still there (to call the 'gpiochip_line_is_valid()')
smaller.
FWIW:
Reviewed-by: Matti Vaittinen <mazziesaccount@gmail.com>
Yours,
-- Matti
© 2016 - 2026 Red Hat, Inc.