2020-03-26 21:10:58

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 0/1] char: convert to use new I2C API

We are deprecating calls which return NULL in favor of new variants which
return an ERR_PTR. Only build tested.


Wolfram Sang (1):
char: ipmi: convert to use i2c_new_client_device()

drivers/char/ipmi/ipmi_ssif.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

--
2.20.1


2020-03-26 21:11:23

by Wolfram Sang

[permalink] [raw]
Subject: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

Move away from the deprecated API.

Signed-off-by: Wolfram Sang <[email protected]>
---
drivers/char/ipmi/ipmi_ssif.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index 8ac390c2b514..2791b799e33d 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -1945,8 +1945,8 @@ static int ssif_adapter_handler(struct device *adev, void *opaque)
if (adev->type != &i2c_adapter_type)
return 0;

- addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
- &addr_info->binfo);
+ addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
+ &addr_info->binfo);

if (!addr_info->adapter_name)
return 1; /* Only try the first I2C adapter by default. */
--
2.20.1

2020-05-12 16:32:36

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

On Thu, Mar 26, 2020 at 10:09:58PM +0100, Wolfram Sang wrote:
> Move away from the deprecated API.
>
> Signed-off-by: Wolfram Sang <[email protected]>

Can we have this now so I can remove the old API in the next merge
window?

> ---
> drivers/char/ipmi/ipmi_ssif.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
> index 8ac390c2b514..2791b799e33d 100644
> --- a/drivers/char/ipmi/ipmi_ssif.c
> +++ b/drivers/char/ipmi/ipmi_ssif.c
> @@ -1945,8 +1945,8 @@ static int ssif_adapter_handler(struct device *adev, void *opaque)
> if (adev->type != &i2c_adapter_type)
> return 0;
>
> - addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
> - &addr_info->binfo);
> + addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
> + &addr_info->binfo);
>
> if (!addr_info->adapter_name)
> return 1; /* Only try the first I2C adapter by default. */
> --
> 2.20.1
>


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

2020-05-12 18:27:11

by Corey Minyard

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

On Thu, Mar 26, 2020 at 10:09:58PM +0100, Wolfram Sang wrote:
> Move away from the deprecated API.
>
> Signed-off-by: Wolfram Sang <[email protected]>

Ok by me.

Acked-by: Corey Minyard <[email protected]>

Do you want me to take this, or is this part of something else? I can
submit it if you like.

-corey

> ---
> drivers/char/ipmi/ipmi_ssif.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
> index 8ac390c2b514..2791b799e33d 100644
> --- a/drivers/char/ipmi/ipmi_ssif.c
> +++ b/drivers/char/ipmi/ipmi_ssif.c
> @@ -1945,8 +1945,8 @@ static int ssif_adapter_handler(struct device *adev, void *opaque)
> if (adev->type != &i2c_adapter_type)
> return 0;
>
> - addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
> - &addr_info->binfo);
> + addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
> + &addr_info->binfo);
>
> if (!addr_info->adapter_name)
> return 1; /* Only try the first I2C adapter by default. */
> --
> 2.20.1
>

2020-05-12 20:09:49

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

On Tue, May 12, 2020 at 01:25:17PM -0500, Corey Minyard wrote:
> On Thu, Mar 26, 2020 at 10:09:58PM +0100, Wolfram Sang wrote:
> > Move away from the deprecated API.
> >
> > Signed-off-by: Wolfram Sang <[email protected]>
>
> Ok by me.
>
> Acked-by: Corey Minyard <[email protected]>
>
> Do you want me to take this, or is this part of something else? I can
> submit it if you like.

I'd prefer if you take it. But I can take it if it is easier for you.

Thanks!


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

2020-05-12 21:16:20

by Corey Minyard

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

On Thu, Mar 26, 2020 at 10:09:58PM +0100, Wolfram Sang wrote:
> Move away from the deprecated API.

Well, I should have looked a little closer first... comment inline

>
> Signed-off-by: Wolfram Sang <[email protected]>
> ---
> drivers/char/ipmi/ipmi_ssif.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
> index 8ac390c2b514..2791b799e33d 100644
> --- a/drivers/char/ipmi/ipmi_ssif.c
> +++ b/drivers/char/ipmi/ipmi_ssif.c
> @@ -1945,8 +1945,8 @@ static int ssif_adapter_handler(struct device *adev, void *opaque)
> if (adev->type != &i2c_adapter_type)
> return 0;
>
> - addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
> - &addr_info->binfo);
> + addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
> + &addr_info->binfo);

i2c_new_client_device returns an ERR_PTR, not NULL on error. So this
needs some more work. I'll send something out soon.

-corey

>
> if (!addr_info->adapter_name)
> return 1; /* Only try the first I2C adapter by default. */
> --
> 2.20.1
>

2020-05-12 21:48:07

by Corey Minyard

[permalink] [raw]
Subject: [PATCH] char: ipmi: convert to use i2c_new_client_device()

From: Wolfram Sang <[email protected]>

Move away from the deprecated API.

Based on a patch by Wolfram Sang <[email protected]>.

Signed-off-by: Corey Minyard <[email protected]>
---
I think this works.

drivers/char/ipmi/ipmi_ssif.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/char/ipmi/ipmi_ssif.c b/drivers/char/ipmi/ipmi_ssif.c
index b7145f370d3b..65563e5e5731 100644
--- a/drivers/char/ipmi/ipmi_ssif.c
+++ b/drivers/char/ipmi/ipmi_ssif.c
@@ -1943,12 +1943,14 @@ static int ssif_probe(struct i2c_client *client, const struct i2c_device_id *id)
static int ssif_adapter_handler(struct device *adev, void *opaque)
{
struct ssif_addr_info *addr_info = opaque;
+ struct i2c_client *cl;

if (adev->type != &i2c_adapter_type)
return 0;

- addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
- &addr_info->binfo);
+ cl = i2c_new_client_device(to_i2c_adapter(adev), &addr_info->binfo);
+ if (!IS_ERR(cl))
+ addr_info->added_client = cl;

if (!addr_info->adapter_name)
return 1; /* Only try the first I2C adapter by default. */
--
2.17.1

2020-05-13 07:51:09

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()


> > - addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
> > - &addr_info->binfo);
> > + addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
> > + &addr_info->binfo);
>
> i2c_new_client_device returns an ERR_PTR, not NULL on error. So this

Yes, this is the main motivation for the new API.

> needs some more work. I'll send something out soon.

Why does it need that work? 'added_client' is only used with
i2c_unregister_device() which has been fixed to handle ERR_PTR as well.
Or am I missing something?


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

2020-05-13 08:42:02

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH] char: ipmi: convert to use i2c_new_client_device()

On Tue, May 12, 2020 at 04:45:32PM -0500, [email protected] wrote:
> From: Wolfram Sang <[email protected]>
>
> Move away from the deprecated API.
>
> Based on a patch by Wolfram Sang <[email protected]>.
>
> Signed-off-by: Corey Minyard <[email protected]>
> ---
> I think this works.

Yes, we can do it like this (despite the question from earlier if it is
really needed). I fixed other drivers using this pattern, too.

As Stephen Rothwell pointed out, you either need to remove my "From:" or
add my SoB. I am fine with both.

Thanks,

Wolfram


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

2020-05-13 12:33:49

by Corey Minyard

[permalink] [raw]
Subject: Re: [PATCH 1/1] char: ipmi: convert to use i2c_new_client_device()

On Wed, May 13, 2020 at 09:10:04AM +0200, Wolfram Sang wrote:
>
> > > - addr_info->added_client = i2c_new_device(to_i2c_adapter(adev),
> > > - &addr_info->binfo);
> > > + addr_info->added_client = i2c_new_client_device(to_i2c_adapter(adev),
> > > + &addr_info->binfo);
> >
> > i2c_new_client_device returns an ERR_PTR, not NULL on error. So this
>
> Yes, this is the main motivation for the new API.
>
> > needs some more work. I'll send something out soon.
>
> Why does it need that work? 'added_client' is only used with
> i2c_unregister_device() which has been fixed to handle ERR_PTR as well.
> Or am I missing something?
>

No, I didn't look to see if i2c_unregister_device could handle that.

-corey

2020-05-13 20:36:52

by Corey Minyard

[permalink] [raw]
Subject: Re: [PATCH] char: ipmi: convert to use i2c_new_client_device()

On Wed, May 13, 2020 at 10:37:46AM +0200, Wolfram Sang wrote:
> On Tue, May 12, 2020 at 04:45:32PM -0500, [email protected] wrote:
> > From: Wolfram Sang <[email protected]>
> >
> > Move away from the deprecated API.
> >
> > Based on a patch by Wolfram Sang <[email protected]>.
> >
> > Signed-off-by: Corey Minyard <[email protected]>
> > ---
> > I think this works.
>
> Yes, we can do it like this (despite the question from earlier if it is
> really needed). I fixed other drivers using this pattern, too.

I was wondering whether this is really needed, too, but I'm not 100%
sure it can be removed in all cases. This is the safer route.

>
> As Stephen Rothwell pointed out, you either need to remove my "From:" or
> add my SoB. I am fine with both.

It was enough of a rewrite that you as the author didn't seem right.
I've fixed the From line, sorry about that.

-corey

>
> Thanks,
>
> Wolfram
>