2019-07-26 02:29:42

by Chuhong Yuan

[permalink] [raw]
Subject: [PATCH v2] counter/ftm-quaddec: Use device-managed registration API

Make use of devm_counter_register.
Then we can remove redundant unregistration API
usage to make code simpler.

Signed-off-by: Chuhong Yuan <[email protected]>
---
Changes in v2:
- Use devm_add_action_or_reset to keep
resource release order.
- _remove() function is redundant now,
delete it.

drivers/counter/ftm-quaddec.c | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)

diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c
index 68a9b7393457..76c70a6c3593 100644
--- a/drivers/counter/ftm-quaddec.c
+++ b/drivers/counter/ftm-quaddec.c
@@ -100,16 +100,17 @@ static void ftm_quaddec_init(struct ftm_quaddec *ftm)
ftm_set_write_protection(ftm);
}

-static void ftm_quaddec_disable(struct ftm_quaddec *ftm)
+static void ftm_quaddec_disable(void *ftm)
{
- ftm_clear_write_protection(ftm);
- ftm_write(ftm, FTM_MODE, 0);
- ftm_write(ftm, FTM_QDCTRL, 0);
+ struct ftm_quaddec *ftm_qua = ftm;

+ ftm_clear_write_protection(ftm_qua);
+ ftm_write(ftm_qua, FTM_MODE, 0);
+ ftm_write(ftm_qua, FTM_QDCTRL, 0);
/*
* This is enough to disable the counter. No clock has been
* selected by writing to FTM_SC in init()
*/
- ftm_set_write_protection(ftm);
+ ftm_set_write_protection(ftm_qua);
}

static int ftm_quaddec_get_prescaler(struct counter_device *counter,
@@ -316,22 +317,13 @@ static int ftm_quaddec_probe(struct platform_device *pdev)
mutex_init(&ftm->ftm_quaddec_mutex);

ftm_quaddec_init(ftm);
-
- ret = counter_register(&ftm->counter);
+ ret = devm_add_action_or_reset(&pdev->dev, ftm_quaddec_disable, ftm);
if (ret)
- ftm_quaddec_disable(ftm);
-
- return ret;
-}
-
-static int ftm_quaddec_remove(struct platform_device *pdev)
-{
- struct ftm_quaddec *ftm = platform_get_drvdata(pdev);
-
- counter_unregister(&ftm->counter);
-
- ftm_quaddec_disable(ftm);
+ return ret;

+ ret = devm_counter_register(&pdev->dev, &ftm->counter);
+ if (ret)
+ return ret;
return 0;
}

@@ -346,7 +338,6 @@ static struct platform_driver ftm_quaddec_driver = {
.of_match_table = ftm_quaddec_match,
},
.probe = ftm_quaddec_probe,
- .remove = ftm_quaddec_remove,
};

module_platform_driver(ftm_quaddec_driver);
--
2.20.1



2019-07-26 13:24:17

by Chuhong Yuan

[permalink] [raw]
Subject: Re: [PATCH v2] counter/ftm-quaddec: Use device-managed registration API

Patrick Havelange <[email protected]> 于2019年7月26日周五 下午8:51写道:
>
> Hello,
>
> On Fri, Jul 26, 2019 at 4:28 AM Chuhong Yuan <[email protected]> wrote:
> >
> > Make use of devm_counter_register.
> > Then we can remove redundant unregistration API
> > usage to make code simpler.
> >
> > Signed-off-by: Chuhong Yuan <[email protected]>
> > ---
> > Changes in v2:
> > - Use devm_add_action_or_reset to keep
> > resource release order.
>
> This is better now indeed.
>
> However it seems there is an issue with the mail/patch format, I'm
> unable to apply it with git am, and if you look at
> https://lore.kernel.org/patchwork/patch/1105782/ the diff section is
> missing the beginning of the patch. I don't know why, but I think it
> should be looked into.
>
> Otherwise, it's fine by me.
>
> Regards,
>
> Patrick Havelange

I am also not clear about why this issue happened.
Maybe it is caused by changelog format.
I will revise changelog and resend it later.



>
>
> > - _remove() function is redundant now,
> > delete it.
> >
> > drivers/counter/ftm-quaddec.c | 31 +++++++++++--------------------
> > 1 file changed, 11 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c
> > index 68a9b7393457..76c70a6c3593 100644
> > --- a/drivers/counter/ftm-quaddec.c
> > +++ b/drivers/counter/ftm-quaddec.c
> > @@ -100,16 +100,17 @@ static void ftm_quaddec_init(struct ftm_quaddec *ftm)
> > ftm_set_write_protection(ftm);
> > }
> >
> > -static void ftm_quaddec_disable(struct ftm_quaddec *ftm)
> > +static void ftm_quaddec_disable(void *ftm)
> > {
> > - ftm_clear_write_protection(ftm);
> > - ftm_write(ftm, FTM_MODE, 0);
> > - ftm_write(ftm, FTM_QDCTRL, 0);
> > + struct ftm_quaddec *ftm_qua = ftm;
> >
> > + ftm_clear_write_protection(ftm_qua);
> > + ftm_write(ftm_qua, FTM_MODE, 0);
> > + ftm_write(ftm_qua, FTM_QDCTRL, 0);
> > /*
> > * This is enough to disable the counter. No clock has been
> > * selected by writing to FTM_SC in init()
> > */
> > - ftm_set_write_protection(ftm);
> > + ftm_set_write_protection(ftm_qua);
> > }
> >
> > static int ftm_quaddec_get_prescaler(struct counter_device *counter,
> > @@ -316,22 +317,13 @@ static int ftm_quaddec_probe(struct platform_device *pdev)
> > mutex_init(&ftm->ftm_quaddec_mutex);
> >
> > ftm_quaddec_init(ftm);
> > -
> > - ret = counter_register(&ftm->counter);
> > + ret = devm_add_action_or_reset(&pdev->dev, ftm_quaddec_disable, ftm);
> > if (ret)
> > - ftm_quaddec_disable(ftm);
> > -
> > - return ret;
> > -}
> > -
> > -static int ftm_quaddec_remove(struct platform_device *pdev)
> > -{
> > - struct ftm_quaddec *ftm = platform_get_drvdata(pdev);
> > -
> > - counter_unregister(&ftm->counter);
> > -
> > - ftm_quaddec_disable(ftm);
> > + return ret;
> >
> > + ret = devm_counter_register(&pdev->dev, &ftm->counter);
> > + if (ret)
> > + return ret;
> > return 0;
> > }
> >
> > @@ -346,7 +338,6 @@ static struct platform_driver ftm_quaddec_driver = {
> > .of_match_table = ftm_quaddec_match,
> > },
> > .probe = ftm_quaddec_probe,
> > - .remove = ftm_quaddec_remove,
> > };
> >
> > module_platform_driver(ftm_quaddec_driver);
> > --
> > 2.20.1
> >

2019-07-26 15:56:31

by Patrick Havelange

[permalink] [raw]
Subject: Re: [PATCH v2] counter/ftm-quaddec: Use device-managed registration API

Hello,

On Fri, Jul 26, 2019 at 4:28 AM Chuhong Yuan <[email protected]> wrote:
>
> Make use of devm_counter_register.
> Then we can remove redundant unregistration API
> usage to make code simpler.
>
> Signed-off-by: Chuhong Yuan <[email protected]>
> ---
> Changes in v2:
> - Use devm_add_action_or_reset to keep
> resource release order.

This is better now indeed.

However it seems there is an issue with the mail/patch format, I'm
unable to apply it with git am, and if you look at
https://lore.kernel.org/patchwork/patch/1105782/ the diff section is
missing the beginning of the patch. I don't know why, but I think it
should be looked into.

Otherwise, it's fine by me.

Regards,

Patrick Havelange


> - _remove() function is redundant now,
> delete it.
>
> drivers/counter/ftm-quaddec.c | 31 +++++++++++--------------------
> 1 file changed, 11 insertions(+), 20 deletions(-)
>
> diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c
> index 68a9b7393457..76c70a6c3593 100644
> --- a/drivers/counter/ftm-quaddec.c
> +++ b/drivers/counter/ftm-quaddec.c
> @@ -100,16 +100,17 @@ static void ftm_quaddec_init(struct ftm_quaddec *ftm)
> ftm_set_write_protection(ftm);
> }
>
> -static void ftm_quaddec_disable(struct ftm_quaddec *ftm)
> +static void ftm_quaddec_disable(void *ftm)
> {
> - ftm_clear_write_protection(ftm);
> - ftm_write(ftm, FTM_MODE, 0);
> - ftm_write(ftm, FTM_QDCTRL, 0);
> + struct ftm_quaddec *ftm_qua = ftm;
>
> + ftm_clear_write_protection(ftm_qua);
> + ftm_write(ftm_qua, FTM_MODE, 0);
> + ftm_write(ftm_qua, FTM_QDCTRL, 0);
> /*
> * This is enough to disable the counter. No clock has been
> * selected by writing to FTM_SC in init()
> */
> - ftm_set_write_protection(ftm);
> + ftm_set_write_protection(ftm_qua);
> }
>
> static int ftm_quaddec_get_prescaler(struct counter_device *counter,
> @@ -316,22 +317,13 @@ static int ftm_quaddec_probe(struct platform_device *pdev)
> mutex_init(&ftm->ftm_quaddec_mutex);
>
> ftm_quaddec_init(ftm);
> -
> - ret = counter_register(&ftm->counter);
> + ret = devm_add_action_or_reset(&pdev->dev, ftm_quaddec_disable, ftm);
> if (ret)
> - ftm_quaddec_disable(ftm);
> -
> - return ret;
> -}
> -
> -static int ftm_quaddec_remove(struct platform_device *pdev)
> -{
> - struct ftm_quaddec *ftm = platform_get_drvdata(pdev);
> -
> - counter_unregister(&ftm->counter);
> -
> - ftm_quaddec_disable(ftm);
> + return ret;
>
> + ret = devm_counter_register(&pdev->dev, &ftm->counter);
> + if (ret)
> + return ret;
> return 0;
> }
>
> @@ -346,7 +338,6 @@ static struct platform_driver ftm_quaddec_driver = {
> .of_match_table = ftm_quaddec_match,
> },
> .probe = ftm_quaddec_probe,
> - .remove = ftm_quaddec_remove,
> };
>
> module_platform_driver(ftm_quaddec_driver);
> --
> 2.20.1
>

2019-07-27 13:33:04

by Jonathan Cameron

[permalink] [raw]
Subject: Re: [PATCH v2] counter/ftm-quaddec: Use device-managed registration API

On Fri, 26 Jul 2019 14:51:30 +0200
Patrick Havelange <[email protected]> wrote:

> Hello,
>
> On Fri, Jul 26, 2019 at 4:28 AM Chuhong Yuan <[email protected]> wrote:
> >
> > Make use of devm_counter_register.
> > Then we can remove redundant unregistration API
> > usage to make code simpler.
> >
> > Signed-off-by: Chuhong Yuan <[email protected]>
> > ---
> > Changes in v2:
> > - Use devm_add_action_or_reset to keep
> > resource release order.
>
> This is better now indeed.
>
> However it seems there is an issue with the mail/patch format, I'm
> unable to apply it with git am, and if you look at
> https://lore.kernel.org/patchwork/patch/1105782/ the diff section is
> missing the beginning of the patch. I don't know why, but I think it
> should be looked into.
>
> Otherwise, it's fine by me.
Hi Patrick,

A formal, Acked-by or Reviewed-by definitely preferred if you are happy
to give one.

This looks fine to me as well. William, if you are happy with the resend
of this, then let me know if you want me to queue it up.

Thanks,

Jonathan

>
> Regards,
>
> Patrick Havelange
>
>
> > - _remove() function is redundant now,
> > delete it.
> >
> > drivers/counter/ftm-quaddec.c | 31 +++++++++++--------------------
> > 1 file changed, 11 insertions(+), 20 deletions(-)
> >
> > diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c
> > index 68a9b7393457..76c70a6c3593 100644
> > --- a/drivers/counter/ftm-quaddec.c
> > +++ b/drivers/counter/ftm-quaddec.c
> > @@ -100,16 +100,17 @@ static void ftm_quaddec_init(struct ftm_quaddec *ftm)
> > ftm_set_write_protection(ftm);
> > }
> >
> > -static void ftm_quaddec_disable(struct ftm_quaddec *ftm)
> > +static void ftm_quaddec_disable(void *ftm)
> > {
> > - ftm_clear_write_protection(ftm);
> > - ftm_write(ftm, FTM_MODE, 0);
> > - ftm_write(ftm, FTM_QDCTRL, 0);
> > + struct ftm_quaddec *ftm_qua = ftm;
> >
> > + ftm_clear_write_protection(ftm_qua);
> > + ftm_write(ftm_qua, FTM_MODE, 0);
> > + ftm_write(ftm_qua, FTM_QDCTRL, 0);
> > /*
> > * This is enough to disable the counter. No clock has been
> > * selected by writing to FTM_SC in init()
> > */
> > - ftm_set_write_protection(ftm);
> > + ftm_set_write_protection(ftm_qua);
> > }
> >
> > static int ftm_quaddec_get_prescaler(struct counter_device *counter,
> > @@ -316,22 +317,13 @@ static int ftm_quaddec_probe(struct platform_device *pdev)
> > mutex_init(&ftm->ftm_quaddec_mutex);
> >
> > ftm_quaddec_init(ftm);
> > -
> > - ret = counter_register(&ftm->counter);
> > + ret = devm_add_action_or_reset(&pdev->dev, ftm_quaddec_disable, ftm);
> > if (ret)
> > - ftm_quaddec_disable(ftm);
> > -
> > - return ret;
> > -}
> > -
> > -static int ftm_quaddec_remove(struct platform_device *pdev)
> > -{
> > - struct ftm_quaddec *ftm = platform_get_drvdata(pdev);
> > -
> > - counter_unregister(&ftm->counter);
> > -
> > - ftm_quaddec_disable(ftm);
> > + return ret;
> >
> > + ret = devm_counter_register(&pdev->dev, &ftm->counter);
> > + if (ret)
> > + return ret;
> > return 0;
> > }
> >
> > @@ -346,7 +338,6 @@ static struct platform_driver ftm_quaddec_driver = {
> > .of_match_table = ftm_quaddec_match,
> > },
> > .probe = ftm_quaddec_probe,
> > - .remove = ftm_quaddec_remove,
> > };
> >
> > module_platform_driver(ftm_quaddec_driver);
> > --
> > 2.20.1
> >


2019-07-27 18:23:15

by William Breathitt Gray

[permalink] [raw]
Subject: Re: [PATCH v2] counter/ftm-quaddec: Use device-managed registration API

On Sat, Jul 27, 2019 at 02:31:33PM +0100, Jonathan Cameron wrote:
> On Fri, 26 Jul 2019 14:51:30 +0200
> Patrick Havelange <[email protected]> wrote:
>
> > Hello,
> >
> > On Fri, Jul 26, 2019 at 4:28 AM Chuhong Yuan <[email protected]> wrote:
> > >
> > > Make use of devm_counter_register.
> > > Then we can remove redundant unregistration API
> > > usage to make code simpler.
> > >
> > > Signed-off-by: Chuhong Yuan <[email protected]>
> > > ---
> > > Changes in v2:
> > > - Use devm_add_action_or_reset to keep
> > > resource release order.
> >
> > This is better now indeed.
> >
> > However it seems there is an issue with the mail/patch format, I'm
> > unable to apply it with git am, and if you look at
> > https://lore.kernel.org/patchwork/patch/1105782/ the diff section is
> > missing the beginning of the patch. I don't know why, but I think it
> > should be looked into.
> >
> > Otherwise, it's fine by me.
> Hi Patrick,
>
> A formal, Acked-by or Reviewed-by definitely preferred if you are happy
> to give one.
>
> This looks fine to me as well. William, if you are happy with the resend
> of this, then let me know if you want me to queue it up.
>
> Thanks,
>
> Jonathan

I'm all right with these changes too. Feel free to queue up the resend
version in your tree when you are ready.

William Breathitt Gray

>
> >
> > Regards,
> >
> > Patrick Havelange
> >
> >
> > > - _remove() function is redundant now,
> > > delete it.
> > >
> > > drivers/counter/ftm-quaddec.c | 31 +++++++++++--------------------
> > > 1 file changed, 11 insertions(+), 20 deletions(-)
> > >
> > > diff --git a/drivers/counter/ftm-quaddec.c b/drivers/counter/ftm-quaddec.c
> > > index 68a9b7393457..76c70a6c3593 100644
> > > --- a/drivers/counter/ftm-quaddec.c
> > > +++ b/drivers/counter/ftm-quaddec.c
> > > @@ -100,16 +100,17 @@ static void ftm_quaddec_init(struct ftm_quaddec *ftm)
> > > ftm_set_write_protection(ftm);
> > > }
> > >
> > > -static void ftm_quaddec_disable(struct ftm_quaddec *ftm)
> > > +static void ftm_quaddec_disable(void *ftm)
> > > {
> > > - ftm_clear_write_protection(ftm);
> > > - ftm_write(ftm, FTM_MODE, 0);
> > > - ftm_write(ftm, FTM_QDCTRL, 0);
> > > + struct ftm_quaddec *ftm_qua = ftm;
> > >
> > > + ftm_clear_write_protection(ftm_qua);
> > > + ftm_write(ftm_qua, FTM_MODE, 0);
> > > + ftm_write(ftm_qua, FTM_QDCTRL, 0);
> > > /*
> > > * This is enough to disable the counter. No clock has been
> > > * selected by writing to FTM_SC in init()
> > > */
> > > - ftm_set_write_protection(ftm);
> > > + ftm_set_write_protection(ftm_qua);
> > > }
> > >
> > > static int ftm_quaddec_get_prescaler(struct counter_device *counter,
> > > @@ -316,22 +317,13 @@ static int ftm_quaddec_probe(struct platform_device *pdev)
> > > mutex_init(&ftm->ftm_quaddec_mutex);
> > >
> > > ftm_quaddec_init(ftm);
> > > -
> > > - ret = counter_register(&ftm->counter);
> > > + ret = devm_add_action_or_reset(&pdev->dev, ftm_quaddec_disable, ftm);
> > > if (ret)
> > > - ftm_quaddec_disable(ftm);
> > > -
> > > - return ret;
> > > -}
> > > -
> > > -static int ftm_quaddec_remove(struct platform_device *pdev)
> > > -{
> > > - struct ftm_quaddec *ftm = platform_get_drvdata(pdev);
> > > -
> > > - counter_unregister(&ftm->counter);
> > > -
> > > - ftm_quaddec_disable(ftm);
> > > + return ret;
> > >
> > > + ret = devm_counter_register(&pdev->dev, &ftm->counter);
> > > + if (ret)
> > > + return ret;
> > > return 0;
> > > }
> > >
> > > @@ -346,7 +338,6 @@ static struct platform_driver ftm_quaddec_driver = {
> > > .of_match_table = ftm_quaddec_match,
> > > },
> > > .probe = ftm_quaddec_probe,
> > > - .remove = ftm_quaddec_remove,
> > > };
> > >
> > > module_platform_driver(ftm_quaddec_driver);
> > > --
> > > 2.20.1
> > >
>