2019-08-20 15:43:56

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()

I was about to simplify the call to i2c_unregister_device() when I
realized that converting to devm_i2c_new_dummy_device() will simplify
the driver a lot. So I took this approach.

Signed-off-by: Wolfram Sang <[email protected]>
---
Build tested only, buildbot is happy, too.

Please apply to your tree.

drivers/rtc/rtc-max77686.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)

diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c
index d04fd1024697..4027b33034dc 100644
--- a/drivers/rtc/rtc-max77686.c
+++ b/drivers/rtc/rtc-max77686.c
@@ -693,8 +693,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
goto add_rtc_irq;
}

- info->rtc = i2c_new_dummy_device(parent_i2c->adapter,
- info->drv_data->rtc_i2c_addr);
+ info->rtc = devm_i2c_new_dummy_device(info->dev, parent_i2c->adapter,
+ info->drv_data->rtc_i2c_addr);
if (IS_ERR(info->rtc)) {
dev_err(info->dev, "Failed to allocate I2C device for RTC\n");
return PTR_ERR(info->rtc);
@@ -705,7 +705,7 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
if (IS_ERR(info->rtc_regmap)) {
ret = PTR_ERR(info->rtc_regmap);
dev_err(info->dev, "Failed to allocate RTC regmap: %d\n", ret);
- goto err_unregister_i2c;
+ return ret;
}

add_rtc_irq:
@@ -715,15 +715,10 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
&info->rtc_irq_data);
if (ret < 0) {
dev_err(info->dev, "Failed to add RTC irq chip: %d\n", ret);
- goto err_unregister_i2c;
+ return ret;
}

return 0;
-
-err_unregister_i2c:
- if (info->rtc)
- i2c_unregister_device(info->rtc);
- return ret;
}

static int max77686_rtc_probe(struct platform_device *pdev)
@@ -786,8 +781,6 @@ static int max77686_rtc_probe(struct platform_device *pdev)

err_rtc:
regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
- if (info->rtc)
- i2c_unregister_device(info->rtc);

return ret;
}
@@ -798,8 +791,6 @@ static int max77686_rtc_remove(struct platform_device *pdev)

free_irq(info->virq, info);
regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
- if (info->rtc)
- i2c_unregister_device(info->rtc);

return 0;
}
--
2.20.1


2019-08-29 20:59:14

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()

On 20/08/2019 17:42:37+0200, Wolfram Sang wrote:
> I was about to simplify the call to i2c_unregister_device() when I
> realized that converting to devm_i2c_new_dummy_device() will simplify
> the driver a lot. So I took this approach.
>
> Signed-off-by: Wolfram Sang <[email protected]>
> ---
> Build tested only, buildbot is happy, too.
>
> Please apply to your tree.
>

I'm confused because I already applied:
https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=7150710f3084de8d35ce3221eeae2caee8813f92

> drivers/rtc/rtc-max77686.c | 17 ++++-------------
> 1 file changed, 4 insertions(+), 13 deletions(-)
>
> diff --git a/drivers/rtc/rtc-max77686.c b/drivers/rtc/rtc-max77686.c
> index d04fd1024697..4027b33034dc 100644
> --- a/drivers/rtc/rtc-max77686.c
> +++ b/drivers/rtc/rtc-max77686.c
> @@ -693,8 +693,8 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
> goto add_rtc_irq;
> }
>
> - info->rtc = i2c_new_dummy_device(parent_i2c->adapter,
> - info->drv_data->rtc_i2c_addr);
> + info->rtc = devm_i2c_new_dummy_device(info->dev, parent_i2c->adapter,
> + info->drv_data->rtc_i2c_addr);
> if (IS_ERR(info->rtc)) {
> dev_err(info->dev, "Failed to allocate I2C device for RTC\n");
> return PTR_ERR(info->rtc);
> @@ -705,7 +705,7 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
> if (IS_ERR(info->rtc_regmap)) {
> ret = PTR_ERR(info->rtc_regmap);
> dev_err(info->dev, "Failed to allocate RTC regmap: %d\n", ret);
> - goto err_unregister_i2c;
> + return ret;
> }
>
> add_rtc_irq:
> @@ -715,15 +715,10 @@ static int max77686_init_rtc_regmap(struct max77686_rtc_info *info)
> &info->rtc_irq_data);
> if (ret < 0) {
> dev_err(info->dev, "Failed to add RTC irq chip: %d\n", ret);
> - goto err_unregister_i2c;
> + return ret;
> }
>
> return 0;
> -
> -err_unregister_i2c:
> - if (info->rtc)
> - i2c_unregister_device(info->rtc);
> - return ret;
> }
>
> static int max77686_rtc_probe(struct platform_device *pdev)
> @@ -786,8 +781,6 @@ static int max77686_rtc_probe(struct platform_device *pdev)
>
> err_rtc:
> regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
> - if (info->rtc)
> - i2c_unregister_device(info->rtc);
>
> return ret;
> }
> @@ -798,8 +791,6 @@ static int max77686_rtc_remove(struct platform_device *pdev)
>
> free_irq(info->virq, info);
> regmap_del_irq_chip(info->rtc_irq, info->rtc_irq_data);
> - if (info->rtc)
> - i2c_unregister_device(info->rtc);
>
> return 0;
> }
> --
> 2.20.1
>

--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

2019-08-30 12:48:39

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()

On Thu, Aug 29, 2019 at 10:57:52PM +0200, Alexandre Belloni wrote:
> On 20/08/2019 17:42:37+0200, Wolfram Sang wrote:
> > I was about to simplify the call to i2c_unregister_device() when I
> > realized that converting to devm_i2c_new_dummy_device() will simplify
> > the driver a lot. So I took this approach.
> >
> > Signed-off-by: Wolfram Sang <[email protected]>
> > ---
> > Build tested only, buildbot is happy, too.
> >
> > Please apply to your tree.
> >
>
> I'm confused because I already applied:
> https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=7150710f3084de8d35ce3221eeae2caee8813f92

The above was a mass conversion to i2c_new_dummy_device() to make sure
all in-kernel users use the API returning an ERRPTR. Mass conversion to
the devm_ variant of the same function was too troublesome.

With another series, I wanted to remove superfluous error checking of
i2c_unregister_device() because it is NULL-ptr safe, like here:

> > - if (info->rtc)
> > - i2c_unregister_device(info->rtc);

But for these two RTC drivers, I figured moving to devm_* is way easier
than fixing up the mass conversion result from coccinelle.


Attachments:
(No filename) (1.19 kB)
signature.asc (849.00 B)
Download all attachments

2019-08-30 12:55:22

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()

On 30/08/2019 14:45:54+0200, Wolfram Sang wrote:
> On Thu, Aug 29, 2019 at 10:57:52PM +0200, Alexandre Belloni wrote:
> > On 20/08/2019 17:42:37+0200, Wolfram Sang wrote:
> > > I was about to simplify the call to i2c_unregister_device() when I
> > > realized that converting to devm_i2c_new_dummy_device() will simplify
> > > the driver a lot. So I took this approach.
> > >
> > > Signed-off-by: Wolfram Sang <[email protected]>
> > > ---
> > > Build tested only, buildbot is happy, too.
> > >
> > > Please apply to your tree.
> > >
> >
> > I'm confused because I already applied:
> > https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=7150710f3084de8d35ce3221eeae2caee8813f92
>
> The above was a mass conversion to i2c_new_dummy_device() to make sure
> all in-kernel users use the API returning an ERRPTR. Mass conversion to
> the devm_ variant of the same function was too troublesome.
>
> With another series, I wanted to remove superfluous error checking of
> i2c_unregister_device() because it is NULL-ptr safe, like here:
>
> > > - if (info->rtc)
> > > - i2c_unregister_device(info->rtc);
>
> But for these two RTC drivers, I figured moving to devm_* is way easier
> than fixing up the mass conversion result from coccinelle.
>

Ok so should I drop the previous patches and apply those instead?


--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

2019-08-30 13:02:39

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()


> > > I'm confused because I already applied:
> > > https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=7150710f3084de8d35ce3221eeae2caee8813f92
> >
> > The above was a mass conversion to i2c_new_dummy_device() to make sure
> > all in-kernel users use the API returning an ERRPTR. Mass conversion to
> > the devm_ variant of the same function was too troublesome.
> >
> > With another series, I wanted to remove superfluous error checking of
> > i2c_unregister_device() because it is NULL-ptr safe, like here:
> >
> > > > - if (info->rtc)
> > > > - i2c_unregister_device(info->rtc);
> >
> > But for these two RTC drivers, I figured moving to devm_* is way easier
> > than fixing up the mass conversion result from coccinelle.
> >
>
> Ok so should I drop the previous patches and apply those instead?

Nope, they should be incremental, aren't they?


Attachments:
(No filename) (916.00 B)
signature.asc (849.00 B)
Download all attachments

2019-08-30 13:07:30

by Alexandre Belloni

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()

On 30/08/2019 15:00:35+0200, Wolfram Sang wrote:
>
> > > > I'm confused because I already applied:
> > > > https://git.kernel.org/pub/scm/linux/kernel/git/abelloni/linux.git/commit/?h=rtc-next&id=7150710f3084de8d35ce3221eeae2caee8813f92
> > >
> > > The above was a mass conversion to i2c_new_dummy_device() to make sure
> > > all in-kernel users use the API returning an ERRPTR. Mass conversion to
> > > the devm_ variant of the same function was too troublesome.
> > >
> > > With another series, I wanted to remove superfluous error checking of
> > > i2c_unregister_device() because it is NULL-ptr safe, like here:
> > >
> > > > > - if (info->rtc)
> > > > > - i2c_unregister_device(info->rtc);
> > >
> > > But for these two RTC drivers, I figured moving to devm_* is way easier
> > > than fixing up the mass conversion result from coccinelle.
> > >
> >
> > Ok so should I drop the previous patches and apply those instead?
>
> Nope, they should be incremental, aren't they?
>
No, your patches don't apply on top of rtc-next


--
Alexandre Belloni, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com

2019-08-30 13:19:45

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/2] rtc: max77686: convert to devm_i2c_new_dummy_device()


> > Nope, they should be incremental, aren't they?
> >
> No, your patches don't apply on top of rtc-next

Looks like you edited some whitespaces to match opening parens before
applying? I'll resend to match these.


Attachments:
(No filename) (225.00 B)
signature.asc (849.00 B)
Download all attachments