2021-10-31 02:12:02

by Shawn Guo

[permalink] [raw]
Subject: [PATCH 0/3] A few smd-rpm clock driver cleanups

Here are a few smd-rpm clock driver cleanups found in the code
inspection.

Shawn Guo (3):
clk: qcom: smd-rpm: Drop MFD qcom-rpm reference
clk: qcom: smd-rpm: Drop the use of struct rpm_cc
clk: qcom: smd-rpm: Drop binary value handling for buffered clock

drivers/clk/qcom/clk-smd-rpm.c | 31 ++++---------------------------
1 file changed, 4 insertions(+), 27 deletions(-)

--
2.17.1


2021-10-31 02:12:02

by Shawn Guo

[permalink] [raw]
Subject: [PATCH 3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock

The buffered clock binary value handling added by commit 36354c32bd76
("clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops")
is redundant, because buffered clock is branch type, and the binary
value handling for branch clock has been handled by
clk_smd_rpm_prepare/unprepare functions.

Signed-off-by: Shawn Guo <[email protected]>
---
drivers/clk/qcom/clk-smd-rpm.c | 8 --------
1 file changed, 8 deletions(-)

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index dd3d373a1309..ea28e45ca371 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -189,10 +189,6 @@ static int clk_smd_rpm_set_rate_active(struct clk_smd_rpm *r,
.value = cpu_to_le32(DIV_ROUND_UP(rate, 1000)), /* to kHz */
};

- /* Buffered clock needs a binary value */
- if (r->rpm_res_type == QCOM_SMD_RPM_CLK_BUF_A)
- req.value = cpu_to_le32(!!req.value);
-
return qcom_rpm_smd_write(r->rpm, QCOM_SMD_RPM_ACTIVE_STATE,
r->rpm_res_type, r->rpm_clk_id, &req,
sizeof(req));
@@ -207,10 +203,6 @@ static int clk_smd_rpm_set_rate_sleep(struct clk_smd_rpm *r,
.value = cpu_to_le32(DIV_ROUND_UP(rate, 1000)), /* to kHz */
};

- /* Buffered clock needs a binary value */
- if (r->rpm_res_type == QCOM_SMD_RPM_CLK_BUF_A)
- req.value = cpu_to_le32(!!req.value);
-
return qcom_rpm_smd_write(r->rpm, QCOM_SMD_RPM_SLEEP_STATE,
r->rpm_res_type, r->rpm_clk_id, &req,
sizeof(req));
--
2.17.1

2021-10-31 02:12:02

by Shawn Guo

[permalink] [raw]
Subject: [PATCH 2/3] clk: qcom: smd-rpm: Drop the use of struct rpm_cc

Considering that struct rpm_cc is now identical to rpm_smd_clk_desc,
and function qcom_smdrpm_clk_hw_get() uses rpm_cc in a read-only manner,
rpm_cc can be dropped by getting the function use rpm_smd_clk_desc
directly.

Signed-off-by: Shawn Guo <[email protected]>
---
drivers/clk/qcom/clk-smd-rpm.c | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index a27c0e740ab7..dd3d373a1309 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -150,11 +150,6 @@ struct clk_smd_rpm_req {
__le32 value;
};

-struct rpm_cc {
- struct clk_smd_rpm **clks;
- size_t num_clks;
-};
-
struct rpm_smd_clk_desc {
struct clk_smd_rpm **clks;
size_t num_clks;
@@ -1157,20 +1152,19 @@ MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
static struct clk_hw *qcom_smdrpm_clk_hw_get(struct of_phandle_args *clkspec,
void *data)
{
- struct rpm_cc *rcc = data;
+ const struct rpm_smd_clk_desc *desc = data;
unsigned int idx = clkspec->args[0];

- if (idx >= rcc->num_clks) {
+ if (idx >= desc->num_clks) {
pr_err("%s: invalid index %u\n", __func__, idx);
return ERR_PTR(-EINVAL);
}

- return rcc->clks[idx] ? &rcc->clks[idx]->hw : ERR_PTR(-ENOENT);
+ return desc->clks[idx] ? &desc->clks[idx]->hw : ERR_PTR(-ENOENT);
}

static int rpm_smd_clk_probe(struct platform_device *pdev)
{
- struct rpm_cc *rcc;
int ret;
size_t num_clks, i;
struct qcom_smd_rpm *rpm;
@@ -1190,13 +1184,6 @@ static int rpm_smd_clk_probe(struct platform_device *pdev)
rpm_smd_clks = desc->clks;
num_clks = desc->num_clks;

- rcc = devm_kzalloc(&pdev->dev, sizeof(*rcc), GFP_KERNEL);
- if (!rcc)
- return -ENOMEM;
-
- rcc->clks = rpm_smd_clks;
- rcc->num_clks = num_clks;
-
for (i = 0; i < num_clks; i++) {
if (!rpm_smd_clks[i])
continue;
@@ -1222,7 +1209,7 @@ static int rpm_smd_clk_probe(struct platform_device *pdev)
}

ret = devm_of_clk_add_hw_provider(&pdev->dev, qcom_smdrpm_clk_hw_get,
- rcc);
+ (void *)desc);
if (ret)
goto err;

--
2.17.1

2021-10-31 02:13:56

by Shawn Guo

[permalink] [raw]
Subject: [PATCH 1/3] clk: qcom: smd-rpm: Drop MFD qcom-rpm reference

The MFD qcom-rpm interface is not used by this driver. Drop the 'struct
qcom_rpm' reference and include of <dt-bindings/mfd/qcom-rpm.h>.

Signed-off-by: Shawn Guo <[email protected]>
---
drivers/clk/qcom/clk-smd-rpm.c | 2 --
1 file changed, 2 deletions(-)

diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
index 5776d85a1e5c..a27c0e740ab7 100644
--- a/drivers/clk/qcom/clk-smd-rpm.c
+++ b/drivers/clk/qcom/clk-smd-rpm.c
@@ -17,7 +17,6 @@
#include <linux/soc/qcom/smd-rpm.h>

#include <dt-bindings/clock/qcom,rpmcc.h>
-#include <dt-bindings/mfd/qcom-rpm.h>

#define QCOM_RPM_KEY_SOFTWARE_ENABLE 0x6e657773
#define QCOM_RPM_KEY_PIN_CTRL_CLK_BUFFER_ENABLE_KEY 0x62636370
@@ -152,7 +151,6 @@ struct clk_smd_rpm_req {
};

struct rpm_cc {
- struct qcom_rpm *rpm;
struct clk_smd_rpm **clks;
size_t num_clks;
};
--
2.17.1

2021-12-06 15:49:39

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 2/3] clk: qcom: smd-rpm: Drop the use of struct rpm_cc

On Sat 30 Oct 21:07 CDT 2021, Shawn Guo wrote:

> Considering that struct rpm_cc is now identical to rpm_smd_clk_desc,
> and function qcom_smdrpm_clk_hw_get() uses rpm_cc in a read-only manner,
> rpm_cc can be dropped by getting the function use rpm_smd_clk_desc
> directly.
>
> Signed-off-by: Shawn Guo <[email protected]>

Reviewed-by: Bjorn Andersson <[email protected]>

> ---
> drivers/clk/qcom/clk-smd-rpm.c | 21 ++++-----------------
> 1 file changed, 4 insertions(+), 17 deletions(-)
>
> diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
> index a27c0e740ab7..dd3d373a1309 100644
> --- a/drivers/clk/qcom/clk-smd-rpm.c
> +++ b/drivers/clk/qcom/clk-smd-rpm.c
> @@ -150,11 +150,6 @@ struct clk_smd_rpm_req {
> __le32 value;
> };
>
> -struct rpm_cc {
> - struct clk_smd_rpm **clks;
> - size_t num_clks;
> -};
> -
> struct rpm_smd_clk_desc {
> struct clk_smd_rpm **clks;
> size_t num_clks;
> @@ -1157,20 +1152,19 @@ MODULE_DEVICE_TABLE(of, rpm_smd_clk_match_table);
> static struct clk_hw *qcom_smdrpm_clk_hw_get(struct of_phandle_args *clkspec,
> void *data)
> {
> - struct rpm_cc *rcc = data;
> + const struct rpm_smd_clk_desc *desc = data;
> unsigned int idx = clkspec->args[0];
>
> - if (idx >= rcc->num_clks) {
> + if (idx >= desc->num_clks) {
> pr_err("%s: invalid index %u\n", __func__, idx);
> return ERR_PTR(-EINVAL);
> }
>
> - return rcc->clks[idx] ? &rcc->clks[idx]->hw : ERR_PTR(-ENOENT);
> + return desc->clks[idx] ? &desc->clks[idx]->hw : ERR_PTR(-ENOENT);
> }
>
> static int rpm_smd_clk_probe(struct platform_device *pdev)
> {
> - struct rpm_cc *rcc;
> int ret;
> size_t num_clks, i;
> struct qcom_smd_rpm *rpm;
> @@ -1190,13 +1184,6 @@ static int rpm_smd_clk_probe(struct platform_device *pdev)
> rpm_smd_clks = desc->clks;
> num_clks = desc->num_clks;
>
> - rcc = devm_kzalloc(&pdev->dev, sizeof(*rcc), GFP_KERNEL);
> - if (!rcc)
> - return -ENOMEM;
> -
> - rcc->clks = rpm_smd_clks;
> - rcc->num_clks = num_clks;
> -
> for (i = 0; i < num_clks; i++) {
> if (!rpm_smd_clks[i])
> continue;
> @@ -1222,7 +1209,7 @@ static int rpm_smd_clk_probe(struct platform_device *pdev)
> }
>
> ret = devm_of_clk_add_hw_provider(&pdev->dev, qcom_smdrpm_clk_hw_get,
> - rcc);
> + (void *)desc);
> if (ret)
> goto err;
>
> --
> 2.17.1
>

2021-12-06 15:56:22

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock

On Sat 30 Oct 21:07 CDT 2021, Shawn Guo wrote:

> The buffered clock binary value handling added by commit 36354c32bd76
> ("clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops")
> is redundant, because buffered clock is branch type, and the binary
> value handling for branch clock has been handled by
> clk_smd_rpm_prepare/unprepare functions.
>
> Signed-off-by: Shawn Guo <[email protected]>

Reviewed-by: Bjorn Andersson <[email protected]>

> ---
> drivers/clk/qcom/clk-smd-rpm.c | 8 --------
> 1 file changed, 8 deletions(-)
>
> diff --git a/drivers/clk/qcom/clk-smd-rpm.c b/drivers/clk/qcom/clk-smd-rpm.c
> index dd3d373a1309..ea28e45ca371 100644
> --- a/drivers/clk/qcom/clk-smd-rpm.c
> +++ b/drivers/clk/qcom/clk-smd-rpm.c
> @@ -189,10 +189,6 @@ static int clk_smd_rpm_set_rate_active(struct clk_smd_rpm *r,
> .value = cpu_to_le32(DIV_ROUND_UP(rate, 1000)), /* to kHz */
> };
>
> - /* Buffered clock needs a binary value */
> - if (r->rpm_res_type == QCOM_SMD_RPM_CLK_BUF_A)
> - req.value = cpu_to_le32(!!req.value);
> -
> return qcom_rpm_smd_write(r->rpm, QCOM_SMD_RPM_ACTIVE_STATE,
> r->rpm_res_type, r->rpm_clk_id, &req,
> sizeof(req));
> @@ -207,10 +203,6 @@ static int clk_smd_rpm_set_rate_sleep(struct clk_smd_rpm *r,
> .value = cpu_to_le32(DIV_ROUND_UP(rate, 1000)), /* to kHz */
> };
>
> - /* Buffered clock needs a binary value */
> - if (r->rpm_res_type == QCOM_SMD_RPM_CLK_BUF_A)
> - req.value = cpu_to_le32(!!req.value);
> -
> return qcom_rpm_smd_write(r->rpm, QCOM_SMD_RPM_SLEEP_STATE,
> r->rpm_res_type, r->rpm_clk_id, &req,
> sizeof(req));
> --
> 2.17.1
>

2021-12-06 22:21:19

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock

Quoting Bjorn Andersson (2021-12-06 07:26:44)
> On Sat 30 Oct 21:07 CDT 2021, Shawn Guo wrote:
>
> > The buffered clock binary value handling added by commit 36354c32bd76
> > ("clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops")
> > is redundant, because buffered clock is branch type, and the binary
> > value handling for branch clock has been handled by
> > clk_smd_rpm_prepare/unprepare functions.
> >
> > Signed-off-by: Shawn Guo <[email protected]>
>
> Reviewed-by: Bjorn Andersson <[email protected]>

Does that mean you picked it up? Or you want me to pick it up?

2021-12-06 22:31:19

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 0/3] A few smd-rpm clock driver cleanups

On Sun, 31 Oct 2021 10:07:12 +0800, Shawn Guo wrote:
> Here are a few smd-rpm clock driver cleanups found in the code
> inspection.
>
> Shawn Guo (3):
> clk: qcom: smd-rpm: Drop MFD qcom-rpm reference
> clk: qcom: smd-rpm: Drop the use of struct rpm_cc
> clk: qcom: smd-rpm: Drop binary value handling for buffered clock
>
> [...]

Applied, thanks!

[1/3] clk: qcom: smd-rpm: Drop MFD qcom-rpm reference
commit: 00a123e962f7f17163ee7f665f483d3ba25f54a6
[2/3] clk: qcom: smd-rpm: Drop the use of struct rpm_cc
commit: b406f5e92b3ba6c8fe89f16cb61e60190e45171b
[3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock
commit: b26ab06d0969ed9e901f93390242437ac5802c4d

Best regards,
--
Bjorn Andersson <[email protected]>

2021-12-06 22:35:26

by Bjorn Andersson

[permalink] [raw]
Subject: Re: [PATCH 3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock

On Mon 06 Dec 14:21 PST 2021, Stephen Boyd wrote:

> Quoting Bjorn Andersson (2021-12-06 07:26:44)
> > On Sat 30 Oct 21:07 CDT 2021, Shawn Guo wrote:
> >
> > > The buffered clock binary value handling added by commit 36354c32bd76
> > > ("clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops")
> > > is redundant, because buffered clock is branch type, and the binary
> > > value handling for branch clock has been handled by
> > > clk_smd_rpm_prepare/unprepare functions.
> > >
> > > Signed-off-by: Shawn Guo <[email protected]>
> >
> > Reviewed-by: Bjorn Andersson <[email protected]>
>
> Does that mean you picked it up? Or you want me to pick it up?

It meant that I reviewed the patch, but as it's not a regression I then
went on to pick it up for clk-next - there should be a "thank you" from
a few minutes ago.

I'll ensure to include a note for you in the future when it could go in
either branch.

Regards,
Bjorn

2021-12-06 22:43:01

by Stephen Boyd

[permalink] [raw]
Subject: Re: [PATCH 3/3] clk: qcom: smd-rpm: Drop binary value handling for buffered clock

Quoting Bjorn Andersson (2021-12-06 14:36:48)
> On Mon 06 Dec 14:21 PST 2021, Stephen Boyd wrote:
>
> > Quoting Bjorn Andersson (2021-12-06 07:26:44)
> > > On Sat 30 Oct 21:07 CDT 2021, Shawn Guo wrote:
> > >
> > > > The buffered clock binary value handling added by commit 36354c32bd76
> > > > ("clk: qcom: smd-rpm: Add .recalc_rate hook for clk_smd_rpm_branch_ops")
> > > > is redundant, because buffered clock is branch type, and the binary
> > > > value handling for branch clock has been handled by
> > > > clk_smd_rpm_prepare/unprepare functions.
> > > >
> > > > Signed-off-by: Shawn Guo <[email protected]>
> > >
> > > Reviewed-by: Bjorn Andersson <[email protected]>
> >
> > Does that mean you picked it up? Or you want me to pick it up?
>
> It meant that I reviewed the patch, but as it's not a regression I then
> went on to pick it up for clk-next - there should be a "thank you" from
> a few minutes ago.
>
> I'll ensure to include a note for you in the future when it could go in
> either branch.
>

Ok, thanks.