2020-04-08 10:24:27

by Aishwarya Ramakrishnan

[permalink] [raw]
Subject: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

Use of_property_read_u32 to read the "reg" and "i2c-address" property
instead of using of_get_property to check the return values.

Signed-off-by: Aishwarya R <[email protected]>
---
drivers/i2c/busses/i2c-powermac.c | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)

diff --git a/drivers/i2c/busses/i2c-powermac.c b/drivers/i2c/busses/i2c-powermac.c
index d565714c1f13..81506c2dab65 100644
--- a/drivers/i2c/busses/i2c-powermac.c
+++ b/drivers/i2c/busses/i2c-powermac.c
@@ -207,18 +207,18 @@ static u32 i2c_powermac_get_addr(struct i2c_adapter *adap,
struct pmac_i2c_bus *bus,
struct device_node *node)
{
- const __be32 *prop;
- int len;
+ u32 prop;
+ int ret;

/* First check for valid "reg" */
- prop = of_get_property(node, "reg", &len);
- if (prop && (len >= sizeof(int)))
- return (be32_to_cpup(prop) & 0xff) >> 1;
+ ret = of_property_read_u32(node, "reg", &prop);
+ if (ret == 0)
+ return (prop & 0xff) >> 1;

/* Then check old-style "i2c-address" */
- prop = of_get_property(node, "i2c-address", &len);
- if (prop && (len >= sizeof(int)))
- return (be32_to_cpup(prop) & 0xff) >> 1;
+ ret = of_property_read_u32(node, "i2c-address", &prop);
+ if (ret == 0)
+ return (prop & 0xff) >> 1;

/* Now handle some devices with missing "reg" properties */
if (of_node_name_eq(node, "cereal"))
--
2.17.1


2020-04-15 23:00:11

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

On Wed, Apr 08, 2020 at 03:33:53PM +0530, Aishwarya R wrote:
> Use of_property_read_u32 to read the "reg" and "i2c-address" property
> instead of using of_get_property to check the return values.
>
> Signed-off-by: Aishwarya R <[email protected]>

This is quite a fragile driver. Have you tested it on HW?


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

2020-04-16 00:06:04

by Aishwarya Ramakrishnan

[permalink] [raw]
Subject: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

>> Use of_property_read_u32 to read the "reg" and "i2c-address" property
>> instead of using of_get_property to check the return values.
>>
>> Signed-off-by: Aishwarya R <[email protected]>

> This is quite a fragile driver. Have you tested it on HW?

This change is not tested with the Hardware.
But of_property_read_u32 is better here than generic of_get_property.
This make sure that value read properly independent of system endianess.

2020-04-21 09:38:58

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

On Wed, Apr 15, 2020 at 06:49:14PM +0530, Aishwarya R wrote:
> >> Use of_property_read_u32 to read the "reg" and "i2c-address" property
> >> instead of using of_get_property to check the return values.
> >>
> >> Signed-off-by: Aishwarya R <[email protected]>
>
> > This is quite a fragile driver. Have you tested it on HW?
>
> This change is not tested with the Hardware.
> But of_property_read_u32 is better here than generic of_get_property.
> This make sure that value read properly independent of system endianess.

This driver is only used on PPC_BE. And it is *very* fragile. The gain
is not enough for me to accept it without testing. Maybe Erhard (CCed)
is interested. If not, you may find someone on the ppc lists.


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

2020-04-22 21:11:16

by Erhard Furtner

[permalink] [raw]
Subject: Re: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

On Tue, 21 Apr 2020 11:37:13 +0200
Wolfram Sang <[email protected]> wrote:

> On Wed, Apr 15, 2020 at 06:49:14PM +0530, Aishwarya R wrote:
> > >> Use of_property_read_u32 to read the "reg" and "i2c-address" property
> > >> instead of using of_get_property to check the return values.
> > >>
> > >> Signed-off-by: Aishwarya R <[email protected]>
> >
> > > This is quite a fragile driver. Have you tested it on HW?
> >
> > This change is not tested with the Hardware.
> > But of_property_read_u32 is better here than generic of_get_property.
> > This make sure that value read properly independent of system endianess.
>
> This driver is only used on PPC_BE. And it is *very* fragile. The gain
> is not enough for me to accept it without testing. Maybe Erhard (CCed)
> is interested. If not, you may find someone on the ppc lists.
>

I applied the patch on top of kernel 5.6.6 and tested it on a PowerMac G4 3,6 DP and a PowerMac G5 11,2. Both machines run without anything suspicious going on. dmesg | grep i2c looks the same with patch and without patch.

Tested-by: Erhard Furtner <[email protected]>

2020-04-26 08:34:15

by Wolfram Sang

[permalink] [raw]
Subject: Re: [PATCH] i2c: powermac: Simplify reading the "reg" and "i2c-address" property

On Wed, Apr 08, 2020 at 03:33:53PM +0530, Aishwarya R wrote:
> Use of_property_read_u32 to read the "reg" and "i2c-address" property
> instead of using of_get_property to check the return values.
>
> Signed-off-by: Aishwarya R <[email protected]>

Applied to for-next, thanks!


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