Re: [PATCH v3 2/3] i2c: mpc: Use of_property_read_u32 instead of of_get_property
From: Chris Packham
Date: Sun Mar 12 2023 - 21:53:18 EST
On 13/03/23 12:36, Andi Shyti wrote:
> "of_property_read_u32()" is preferred to "of_get_property()" for
> retreiving u32 from the device tree. Replace it.
>
> Suggested-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
> Signed-off-by: Andi Shyti <andi.shyti@xxxxxxxxxx>
Reviewed-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
Gave the patches a spin on a P2041RDB so
Tested-by: Chris Packham <chris.packham@xxxxxxxxxxxxxxxxxxx>
> ---
> drivers/i2c/busses/i2c-mpc.c | 25 +++++++++++++------------
> 1 file changed, 13 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-mpc.c b/drivers/i2c/busses/i2c-mpc.c
> index 81ac92bb4f6f..87e5c1725750 100644
> --- a/drivers/i2c/busses/i2c-mpc.c
> +++ b/drivers/i2c/busses/i2c-mpc.c
> @@ -770,7 +770,6 @@ static const struct i2c_algorithm mpc_algo = {
> static struct i2c_adapter mpc_ops = {
> .owner = THIS_MODULE,
> .algo = &mpc_algo,
> - .timeout = HZ,
> };
>
> static struct i2c_bus_recovery_info fsl_i2c_recovery_info = {
> @@ -781,11 +780,9 @@ static int fsl_i2c_probe(struct platform_device *op)
> {
> const struct mpc_i2c_data *data;
> struct mpc_i2c *i2c;
> - const u32 *prop;
> - u32 clock = MPC_I2C_CLOCK_LEGACY;
> - int result = 0;
> - int plen;
> struct clk *clk;
> + int result;
> + u32 clock;
> int err;
>
> i2c = devm_kzalloc(&op->dev, sizeof(*i2c), GFP_KERNEL);
> @@ -831,10 +828,10 @@ static int fsl_i2c_probe(struct platform_device *op)
> if (of_property_read_bool(op->dev.of_node, "fsl,preserve-clocking")) {
> clock = MPC_I2C_CLOCK_PRESERVE;
> } else {
> - prop = of_get_property(op->dev.of_node, "clock-frequency",
> - &plen);
> - if (prop && plen == sizeof(u32))
> - clock = *prop;
> + result = of_property_read_u32(op->dev.of_node,
> + "clock-frequency", &clock);
> + if (result)
> + clock = MPC_I2C_CLOCK_LEGACY;
> }
>
> data = device_get_match_data(&op->dev);
> @@ -846,12 +843,16 @@ static int fsl_i2c_probe(struct platform_device *op)
> mpc_i2c_setup_8xxx(op->dev.of_node, i2c, clock);
> }
>
> - prop = of_get_property(op->dev.of_node, "fsl,timeout", &plen);
> - if (prop && plen == sizeof(u32)) {
> - mpc_ops.timeout = *prop * HZ / 1000000;
> + result = of_property_read_u32(op->dev.of_node,
> + "fsl,timeout", &mpc_ops.timeout);
> + if (!result) {
> + mpc_ops.timeout *= HZ / 1000000;
> if (mpc_ops.timeout < 5)
> mpc_ops.timeout = 5;
> + } else {
> + mpc_ops.timeout = HZ;
> }
> +
> dev_info(i2c->dev, "timeout %u us\n", mpc_ops.timeout * 1000000 / HZ);
>
> if (of_property_read_bool(op->dev.of_node, "fsl,i2c-erratum-a004447"))