2021-03-01 13:56:27

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH v3 0/3] clk: provide new devm helpers for prepared and enabled clocks

Hello,

this is a brown paper bag version (aka v3) of my series adding
devm_clk_get_enabled() et al.

Changes since v2 (sent with Message-Id:
[email protected]):

- send it from the right email account to have the sender matching the
SoB line
- make __devm_clk_get static
- fix EXPORT_SYMBOL usage

The last two were found by the kernel test robot.

Range-diff can be found below.

Best regards
Uwe

Uwe Kleine-König (3):
clk: generalize devm_clk_get() a bit
clk: Provide new devm_clk_helpers for prepared and enabled clocks
pwm: atmel: Simplify using devm_clk_get_prepared()

drivers/clk/clk-devres.c | 96 +++++++++++++++++++++++++++++++++-------
drivers/pwm/pwm-atmel.c | 15 +------
include/linux/clk.h | 87 +++++++++++++++++++++++++++++++++++-
3 files changed, 168 insertions(+), 30 deletions(-)

Range-diff against v2:
1: 7203dc0837af ! 1: 3faadae49fed clk: generalize devm_clk_get a bit
@@ drivers/clk/clk-devres.c
}

-struct clk *devm_clk_get(struct device *dev, const char *id)
-+struct clk *__devm_clk_get(struct device *dev, const char *id,
-+ struct clk *(*get)(struct device *dev, const char *id),
-+ int (*init)(struct clk *clk),
-+ void (*exit)(struct clk *clk))
++static struct clk *__devm_clk_get(struct device *dev, const char *id,
++ struct clk *(*get)(struct device *dev, const char *id),
++ int (*init)(struct clk *clk),
++ void (*exit)(struct clk *clk))
{
- struct clk **ptr, *clk;
+ struct devm_clk_state *state;
2: 4d2107992b8c ! 2: 82005b4a9ea1 clk: Provide new devm_clk_helpers for prepared and enabled clocks
@@ drivers/clk/clk-devres.c: struct clk *devm_clk_get(struct device *dev, const cha
+ clk_prepare_enable, clk_disable_unprepare);
+
+}
-+EXPORT_SYMBOL(devm_clk_get_prepared);
++EXPORT_SYMBOL(devm_clk_get_enabled);
+
struct clk *devm_clk_get_optional(struct device *dev, const char *id)
{
@@ drivers/clk/clk-devres.c: struct clk *devm_clk_get(struct device *dev, const cha
+ clk_prepare_enable, clk_disable_unprepare);
+
+}
-+EXPORT_SYMBOL(devm_clk_get_optional_prepared);
++EXPORT_SYMBOL(devm_clk_get_optional_enabled);
+
struct clk_bulk_devres {
struct clk_bulk_data *clks;
3: 63f799a4ff32 = 3: 1f73d17d4da7 pwm: atmel: Simplify using devm_clk_get_prepared()

base-commit: fe07bfda2fb9cdef8a4d4008a409bb02f35f1bd8
--
2.30.0


2021-03-01 13:56:33

by Uwe Kleine-König

[permalink] [raw]
Subject: [PATCH v3 3/3] pwm: atmel: Simplify using devm_clk_get_prepared()

With devm_clk_get_prepared() caring to unprepare the clock the error
path and remove callback can be simplified accordingly.

Signed-off-by: Uwe Kleine-König <[email protected]>
---
drivers/pwm/pwm-atmel.c | 15 ++-------------
1 file changed, 2 insertions(+), 13 deletions(-)

diff --git a/drivers/pwm/pwm-atmel.c b/drivers/pwm/pwm-atmel.c
index 5813339b597b..d65e23da2582 100644
--- a/drivers/pwm/pwm-atmel.c
+++ b/drivers/pwm/pwm-atmel.c
@@ -415,16 +415,10 @@ static int atmel_pwm_probe(struct platform_device *pdev)
if (IS_ERR(atmel_pwm->base))
return PTR_ERR(atmel_pwm->base);

- atmel_pwm->clk = devm_clk_get(&pdev->dev, NULL);
+ atmel_pwm->clk = devm_clk_get_prepared(&pdev->dev, NULL);
if (IS_ERR(atmel_pwm->clk))
return PTR_ERR(atmel_pwm->clk);

- ret = clk_prepare(atmel_pwm->clk);
- if (ret) {
- dev_err(&pdev->dev, "failed to prepare PWM clock\n");
- return ret;
- }
-
atmel_pwm->chip.dev = &pdev->dev;
atmel_pwm->chip.ops = &atmel_pwm_ops;
atmel_pwm->chip.of_xlate = of_pwm_xlate_with_flags;
@@ -435,23 +429,18 @@ static int atmel_pwm_probe(struct platform_device *pdev)
ret = pwmchip_add(&atmel_pwm->chip);
if (ret < 0) {
dev_err(&pdev->dev, "failed to add PWM chip %d\n", ret);
- goto unprepare_clk;
+ return ret;
}

platform_set_drvdata(pdev, atmel_pwm);

return ret;
-
-unprepare_clk:
- clk_unprepare(atmel_pwm->clk);
- return ret;
}

static int atmel_pwm_remove(struct platform_device *pdev)
{
struct atmel_pwm_chip *atmel_pwm = platform_get_drvdata(pdev);

- clk_unprepare(atmel_pwm->clk);
mutex_destroy(&atmel_pwm->isr_lock);

return pwmchip_remove(&atmel_pwm->chip);
--
2.30.0

2021-03-22 14:25:02

by Uwe Kleine-König

[permalink] [raw]
Subject: Re: [PATCH v3 0/3] clk: provide new devm helpers for prepared and enabled clocks

Hello,

On Mon, Mar 01, 2021 at 02:50:50PM +0100, Uwe Kleine-K?nig wrote:
> Uwe Kleine-K?nig (3):
> clk: generalize devm_clk_get() a bit
> clk: Provide new devm_clk_helpers for prepared and enabled clocks
> pwm: atmel: Simplify using devm_clk_get_prepared()
>
> drivers/clk/clk-devres.c | 96 +++++++++++++++++++++++++++++++++-------
> drivers/pwm/pwm-atmel.c | 15 +------
> include/linux/clk.h | 87 +++++++++++++++++++++++++++++++++++-
> 3 files changed, 168 insertions(+), 30 deletions(-)

can I get some feedback on this series please? The idea is on the list
since October last year with absolutely no maintainer feedback.

I think it's a good idea and not too hard to review, so I wonder what is
stopping you.

Best regards
Uwe

--
Pengutronix e.K. | Uwe Kleine-K?nig |
Industrial Linux Solutions | https://www.pengutronix.de/ |


Attachments:
(No filename) (929.00 B)
signature.asc (499.00 B)
Download all attachments