Re: [PATCH v3 2/3] i2c: mpc: Use of_property_read_u32 instead of of_get_property

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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"))




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux