* [PATCH v2 0/3] Use devm_clk_get_enabled() helpers
@ 2024-08-22 14:04 Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 1/3] i2c: emev2: " Rong Qianfeng
` (2 more replies)
0 siblings, 3 replies; 7+ messages in thread
From: Rong Qianfeng @ 2024-08-22 14:04 UTC (permalink / raw)
To: biju.das.jz, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel, Rong Qianfeng
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids the calls to clk_disable_unprepare().
While at it, no need to save clk pointer, drop sclk from struct
em_i2c_device.
Rong Qianfeng (3):
i2c: emev2: Use devm_clk_get_enabled() helpers
i2c: emev2: Drop sclk from struct em_i2c_device
i2c: jz4780: Use devm_clk_get_enabled() helpers
drivers/i2c/busses/i2c-emev2.c | 23 +++++++----------------
drivers/i2c/busses/i2c-jz4780.c | 21 ++++++---------------
2 files changed, 13 insertions(+), 31 deletions(-)
--
2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] i2c: emev2: Use devm_clk_get_enabled() helpers
2024-08-22 14:04 [PATCH v2 0/3] Use devm_clk_get_enabled() helpers Rong Qianfeng
@ 2024-08-22 14:04 ` Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers Rong Qianfeng
2 siblings, 0 replies; 7+ messages in thread
From: Rong Qianfeng @ 2024-08-22 14:04 UTC (permalink / raw)
To: biju.das.jz, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel, Rong Qianfeng
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids the calls to clk_disable_unprepare().
Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
---
drivers/i2c/busses/i2c-emev2.c | 17 ++++-------------
1 file changed, 4 insertions(+), 13 deletions(-)
diff --git a/drivers/i2c/busses/i2c-emev2.c b/drivers/i2c/busses/i2c-emev2.c
index 557409410445..20efe0b0cb85 100644
--- a/drivers/i2c/busses/i2c-emev2.c
+++ b/drivers/i2c/busses/i2c-emev2.c
@@ -373,14 +373,10 @@ static int em_i2c_probe(struct platform_device *pdev)
strscpy(priv->adap.name, "EMEV2 I2C", sizeof(priv->adap.name));
- priv->sclk = devm_clk_get(&pdev->dev, "sclk");
+ priv->sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
if (IS_ERR(priv->sclk))
return PTR_ERR(priv->sclk);
- ret = clk_prepare_enable(priv->sclk);
- if (ret)
- return ret;
-
priv->adap.timeout = msecs_to_jiffies(100);
priv->adap.retries = 5;
priv->adap.dev.parent = &pdev->dev;
@@ -397,26 +393,22 @@ static int em_i2c_probe(struct platform_device *pdev)
ret = platform_get_irq(pdev, 0);
if (ret < 0)
- goto err_clk;
+ return ret;
priv->irq = ret;
ret = devm_request_irq(&pdev->dev, priv->irq, em_i2c_irq_handler, 0,
"em_i2c", priv);
if (ret)
- goto err_clk;
+ return ret;
ret = i2c_add_adapter(&priv->adap);
if (ret)
- goto err_clk;
+ return ret;
dev_info(&pdev->dev, "Added i2c controller %d, irq %d\n", priv->adap.nr,
priv->irq);
return 0;
-
-err_clk:
- clk_disable_unprepare(priv->sclk);
- return ret;
}
static void em_i2c_remove(struct platform_device *dev)
@@ -424,7 +416,6 @@ static void em_i2c_remove(struct platform_device *dev)
struct em_i2c_device *priv = platform_get_drvdata(dev);
i2c_del_adapter(&priv->adap);
- clk_disable_unprepare(priv->sclk);
}
static const struct of_device_id em_i2c_ids[] = {
--
2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device
2024-08-22 14:04 [PATCH v2 0/3] Use devm_clk_get_enabled() helpers Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 1/3] i2c: emev2: " Rong Qianfeng
@ 2024-08-22 14:04 ` Rong Qianfeng
2024-08-22 14:22 ` Biju Das
2024-08-22 14:04 ` [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers Rong Qianfeng
2 siblings, 1 reply; 7+ messages in thread
From: Rong Qianfeng @ 2024-08-22 14:04 UTC (permalink / raw)
To: biju.das.jz, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel, Rong Qianfeng
For no need to save clk pointer, drop sclk from struct em_i2c_device.
Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
---
drivers/i2c/busses/i2c-emev2.c | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/drivers/i2c/busses/i2c-emev2.c b/drivers/i2c/busses/i2c-emev2.c
index 20efe0b0cb85..2a5d9d658246 100644
--- a/drivers/i2c/busses/i2c-emev2.c
+++ b/drivers/i2c/busses/i2c-emev2.c
@@ -67,7 +67,6 @@ struct em_i2c_device {
void __iomem *base;
struct i2c_adapter adap;
struct completion msg_done;
- struct clk *sclk;
struct i2c_client *slave;
int irq;
};
@@ -361,6 +360,7 @@ static const struct i2c_algorithm em_i2c_algo = {
static int em_i2c_probe(struct platform_device *pdev)
{
struct em_i2c_device *priv;
+ struct clk *sclk;
int ret;
priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL);
@@ -373,9 +373,9 @@ static int em_i2c_probe(struct platform_device *pdev)
strscpy(priv->adap.name, "EMEV2 I2C", sizeof(priv->adap.name));
- priv->sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
- if (IS_ERR(priv->sclk))
- return PTR_ERR(priv->sclk);
+ sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
+ if (IS_ERR(sclk))
+ return PTR_ERR(sclk);
priv->adap.timeout = msecs_to_jiffies(100);
priv->adap.retries = 5;
--
2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers
2024-08-22 14:04 [PATCH v2 0/3] Use devm_clk_get_enabled() helpers Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 1/3] i2c: emev2: " Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device Rong Qianfeng
@ 2024-08-22 14:04 ` Rong Qianfeng
2024-08-22 14:21 ` Biju Das
2 siblings, 1 reply; 7+ messages in thread
From: Rong Qianfeng @ 2024-08-22 14:04 UTC (permalink / raw)
To: biju.das.jz, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel, Rong Qianfeng
The devm_clk_get_enabled() helpers:
- call devm_clk_get()
- call clk_prepare_enable() and register what is needed in order to
call clk_disable_unprepare() when needed, as a managed resource.
This simplifies the code and avoids the calls to clk_disable_unprepare().
While at it, no more special handling needed here, remove the goto
label "err:".
Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
Acked-by: Paul Cercueil <paul@crapouillou.net>
---
drivers/i2c/busses/i2c-jz4780.c | 21 ++++++---------------
1 file changed, 6 insertions(+), 15 deletions(-)
diff --git a/drivers/i2c/busses/i2c-jz4780.c b/drivers/i2c/busses/i2c-jz4780.c
index 4aafdfab6305..f5362c5dfb50 100644
--- a/drivers/i2c/busses/i2c-jz4780.c
+++ b/drivers/i2c/busses/i2c-jz4780.c
@@ -792,26 +792,22 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
platform_set_drvdata(pdev, i2c);
- i2c->clk = devm_clk_get(&pdev->dev, NULL);
+ i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
if (IS_ERR(i2c->clk))
return PTR_ERR(i2c->clk);
- ret = clk_prepare_enable(i2c->clk);
- if (ret)
- return ret;
-
ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
&clk_freq);
if (ret) {
dev_err(&pdev->dev, "clock-frequency not specified in DT\n");
- goto err;
+ return ret;
}
i2c->speed = clk_freq / 1000;
if (i2c->speed == 0) {
ret = -EINVAL;
dev_err(&pdev->dev, "clock-frequency minimum is 1000\n");
- goto err;
+ return ret;
}
jz4780_i2c_set_speed(i2c);
@@ -827,29 +823,24 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
ret = platform_get_irq(pdev, 0);
if (ret < 0)
- goto err;
+ return ret;
i2c->irq = ret;
ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0,
dev_name(&pdev->dev), i2c);
if (ret)
- goto err;
+ return ret;
ret = i2c_add_adapter(&i2c->adap);
if (ret < 0)
- goto err;
+ return ret;
return 0;
-
-err:
- clk_disable_unprepare(i2c->clk);
- return ret;
}
static void jz4780_i2c_remove(struct platform_device *pdev)
{
struct jz4780_i2c *i2c = platform_get_drvdata(pdev);
- clk_disable_unprepare(i2c->clk);
i2c_del_adapter(&i2c->adap);
}
--
2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers
2024-08-22 14:04 ` [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers Rong Qianfeng
@ 2024-08-22 14:21 ` Biju Das
2024-08-23 2:36 ` Rong Qianfeng
0 siblings, 1 reply; 7+ messages in thread
From: Biju Das @ 2024-08-22 14:21 UTC (permalink / raw)
To: Rong Qianfeng, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel
Hi Rong Qianfeng,
Thanks for the patch
> -----Original Message-----
> From: Rong Qianfeng <rongqianfeng@vivo.com>
> Sent: Thursday, August 22, 2024 3:04 PM
> Subject: [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers
>
> The devm_clk_get_enabled() helpers:
> - call devm_clk_get()
> - call clk_prepare_enable() and register what is needed in order to
> call clk_disable_unprepare() when needed, as a managed resource.
>
> This simplifies the code and avoids the calls to clk_disable_unprepare().
>
> While at it, no more special handling needed here, remove the goto label "err:".
>
> Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
> Acked-by: Paul Cercueil <paul@crapouillou.net>
> ---
> drivers/i2c/busses/i2c-jz4780.c | 21 ++++++---------------
> 1 file changed, 6 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-jz4780.c b/drivers/i2c/busses/i2c-jz4780.c index
> 4aafdfab6305..f5362c5dfb50 100644
> --- a/drivers/i2c/busses/i2c-jz4780.c
> +++ b/drivers/i2c/busses/i2c-jz4780.c
> @@ -792,26 +792,22 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
>
> platform_set_drvdata(pdev, i2c);
>
> - i2c->clk = devm_clk_get(&pdev->dev, NULL);
> + i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
> if (IS_ERR(i2c->clk))
> return PTR_ERR(i2c->clk);
>
> - ret = clk_prepare_enable(i2c->clk);
> - if (ret)
> - return ret;
> -
> ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
> &clk_freq);
> if (ret) {
> dev_err(&pdev->dev, "clock-frequency not specified in DT\n");
> - goto err;
> + return ret;
Nitpick:
Leaving it to you.
If needed, you could send another patch to use dev_err_probe
if (ret)
return dev_err_probe(&pdev->dev, ret, "clock-frequency not specified in DT\n");
> }
>
> i2c->speed = clk_freq / 1000;
> if (i2c->speed == 0) {
> ret = -EINVAL;
> dev_err(&pdev->dev, "clock-frequency minimum is 1000\n");
return dev_err_probe(&pdev->dev, -EINVAL, "clock-frequency minimum is 1000\n ");
Cheers,
Biju
> - goto err;
> + return ret;
> }
> jz4780_i2c_set_speed(i2c);
>
> @@ -827,29 +823,24 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
>
> ret = platform_get_irq(pdev, 0);
> if (ret < 0)
> - goto err;
> + return ret;
> i2c->irq = ret;
> ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0,
> dev_name(&pdev->dev), i2c);
> if (ret)
> - goto err;
> + return ret;
>
> ret = i2c_add_adapter(&i2c->adap);
> if (ret < 0)
> - goto err;
> + return ret;
>
> return 0;
> -
> -err:
> - clk_disable_unprepare(i2c->clk);
> - return ret;
> }
>
> static void jz4780_i2c_remove(struct platform_device *pdev) {
> struct jz4780_i2c *i2c = platform_get_drvdata(pdev);
>
> - clk_disable_unprepare(i2c->clk);
> i2c_del_adapter(&i2c->adap);
> }
>
> --
> 2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* RE: [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device
2024-08-22 14:04 ` [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device Rong Qianfeng
@ 2024-08-22 14:22 ` Biju Das
0 siblings, 0 replies; 7+ messages in thread
From: Biju Das @ 2024-08-22 14:22 UTC (permalink / raw)
To: Rong Qianfeng, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel
Hi Rong Qianfeng,
> -----Original Message-----
> From: Rong Qianfeng <rongqianfeng@vivo.com>
> Sent: Thursday, August 22, 2024 3:04 PM
> Subject: [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device
>
> For no need to save clk pointer, drop sclk from struct em_i2c_device.
>
> Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
Reviewed-by: Biju Das <biju.das.jz@bp.renesas.com>
Cheers,
Biju
> ---
> drivers/i2c/busses/i2c-emev2.c | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/i2c/busses/i2c-emev2.c b/drivers/i2c/busses/i2c-emev2.c index
> 20efe0b0cb85..2a5d9d658246 100644
> --- a/drivers/i2c/busses/i2c-emev2.c
> +++ b/drivers/i2c/busses/i2c-emev2.c
> @@ -67,7 +67,6 @@ struct em_i2c_device {
> void __iomem *base;
> struct i2c_adapter adap;
> struct completion msg_done;
> - struct clk *sclk;
> struct i2c_client *slave;
> int irq;
> };
> @@ -361,6 +360,7 @@ static const struct i2c_algorithm em_i2c_algo = { static int em_i2c_probe(struct
> platform_device *pdev) {
> struct em_i2c_device *priv;
> + struct clk *sclk;
> int ret;
>
> priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); @@ -373,9 +373,9 @@ static int
> em_i2c_probe(struct platform_device *pdev)
>
> strscpy(priv->adap.name, "EMEV2 I2C", sizeof(priv->adap.name));
>
> - priv->sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
> - if (IS_ERR(priv->sclk))
> - return PTR_ERR(priv->sclk);
> + sclk = devm_clk_get_enabled(&pdev->dev, "sclk");
> + if (IS_ERR(sclk))
> + return PTR_ERR(sclk);
>
> priv->adap.timeout = msecs_to_jiffies(100);
> priv->adap.retries = 5;
> --
> 2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers
2024-08-22 14:21 ` Biju Das
@ 2024-08-23 2:36 ` Rong Qianfeng
0 siblings, 0 replies; 7+ messages in thread
From: Rong Qianfeng @ 2024-08-23 2:36 UTC (permalink / raw)
To: Biju Das, Rong Qianfeng, Wolfram Sang, Andi Shyti, Paul Cercueil,
linux-renesas-soc, linux-i2c, linux-kernel, linux-mips
Cc: opensource.kernel
在 2024/8/22 22:21, Biju Das 写道:
> [Some people who received this message don't often get email from biju.das.jz@bp.renesas.com. Learn why this is important at https://aka.ms/LearnAboutSenderIdentification ]
>
> Hi Rong Qianfeng,
>
> Thanks for the patch
>
>> -----Original Message-----
>> From: Rong Qianfeng <rongqianfeng@vivo.com>
>> Sent: Thursday, August 22, 2024 3:04 PM
>> Subject: [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers
>>
>> The devm_clk_get_enabled() helpers:
>> - call devm_clk_get()
>> - call clk_prepare_enable() and register what is needed in order to
>> call clk_disable_unprepare() when needed, as a managed resource.
>>
>> This simplifies the code and avoids the calls to clk_disable_unprepare().
>>
>> While at it, no more special handling needed here, remove the goto label "err:".
>>
>> Signed-off-by: Rong Qianfeng <rongqianfeng@vivo.com>
>> Acked-by: Paul Cercueil <paul@crapouillou.net>
>> ---
>> drivers/i2c/busses/i2c-jz4780.c | 21 ++++++---------------
>> 1 file changed, 6 insertions(+), 15 deletions(-)
>>
>> diff --git a/drivers/i2c/busses/i2c-jz4780.c b/drivers/i2c/busses/i2c-jz4780.c index
>> 4aafdfab6305..f5362c5dfb50 100644
>> --- a/drivers/i2c/busses/i2c-jz4780.c
>> +++ b/drivers/i2c/busses/i2c-jz4780.c
>> @@ -792,26 +792,22 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
>>
>> platform_set_drvdata(pdev, i2c);
>>
>> - i2c->clk = devm_clk_get(&pdev->dev, NULL);
>> + i2c->clk = devm_clk_get_enabled(&pdev->dev, NULL);
>> if (IS_ERR(i2c->clk))
>> return PTR_ERR(i2c->clk);
>>
>> - ret = clk_prepare_enable(i2c->clk);
>> - if (ret)
>> - return ret;
>> -
>> ret = of_property_read_u32(pdev->dev.of_node, "clock-frequency",
>> &clk_freq);
>> if (ret) {
>> dev_err(&pdev->dev, "clock-frequency not specified in DT\n");
>> - goto err;
>> + return ret;
> Nitpick:
> Leaving it to you.
> If needed, you could send another patch to use dev_err_probe
>
> if (ret)
> return dev_err_probe(&pdev->dev, ret, "clock-frequency not specified in DT\n");
Thanks for taking the time to review my patch! I will send another patch
later.
>
>> }
>>
>> i2c->speed = clk_freq / 1000;
>> if (i2c->speed == 0) {
>> ret = -EINVAL;
>> dev_err(&pdev->dev, "clock-frequency minimum is 1000\n");
> return dev_err_probe(&pdev->dev, -EINVAL, "clock-frequency minimum is 1000\n ");
>
> Cheers,
> Biju
>
>> - goto err;
>> + return ret;
>> }
>> jz4780_i2c_set_speed(i2c);
>>
>> @@ -827,29 +823,24 @@ static int jz4780_i2c_probe(struct platform_device *pdev)
>>
>> ret = platform_get_irq(pdev, 0);
>> if (ret < 0)
>> - goto err;
>> + return ret;
>> i2c->irq = ret;
>> ret = devm_request_irq(&pdev->dev, i2c->irq, jz4780_i2c_irq, 0,
>> dev_name(&pdev->dev), i2c);
>> if (ret)
>> - goto err;
>> + return ret;
>>
>> ret = i2c_add_adapter(&i2c->adap);
>> if (ret < 0)
>> - goto err;
>> + return ret;
>>
>> return 0;
>> -
>> -err:
>> - clk_disable_unprepare(i2c->clk);
>> - return ret;
>> }
>>
>> static void jz4780_i2c_remove(struct platform_device *pdev) {
>> struct jz4780_i2c *i2c = platform_get_drvdata(pdev);
>>
>> - clk_disable_unprepare(i2c->clk);
>> i2c_del_adapter(&i2c->adap);
>> }
>>
>> --
>> 2.39.0
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2024-08-23 2:37 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-08-22 14:04 [PATCH v2 0/3] Use devm_clk_get_enabled() helpers Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 1/3] i2c: emev2: " Rong Qianfeng
2024-08-22 14:04 ` [PATCH v2 2/3] i2c: emev2: Drop sclk from struct em_i2c_device Rong Qianfeng
2024-08-22 14:22 ` Biju Das
2024-08-22 14:04 ` [PATCH v2 3/3] i2c: jz4780: Use devm_clk_get_enabled() helpers Rong Qianfeng
2024-08-22 14:21 ` Biju Das
2024-08-23 2:36 ` Rong Qianfeng
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®