* [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers
@ 2025-04-25 12:12 Luca Weiss
2025-04-25 12:12 ` [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs Luca Weiss
` (4 more replies)
0 siblings, 5 replies; 10+ messages in thread
From: Luca Weiss @ 2025-04-25 12:12 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel, Luca Weiss
As described in the commit messages, keep the GDSC configs aligned with
the downstream kernel.
For reference, this was checked using the following code:
To: Bjorn Andersson <andersson@kernel.org>
To: Michael Turquette <mturquette@baylibre.com>
To: Stephen Boyd <sboyd@kernel.org>
To: Konrad Dybcio <konradybcio@kernel.org>
To: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
Cc: ~postmarketos/upstreaming@lists.sr.ht
Cc: phone-devel@vger.kernel.org
Cc: linux-arm-msm@vger.kernel.org
Cc: linux-clk@vger.kernel.org
Cc: linux-kernel@vger.kernel.org
diff --git a/drivers/clk/qcom/gdsc.c b/drivers/clk/qcom/gdsc.c
index fa5fe4c2a2ee..049fcbefba50 100644
--- a/drivers/clk/qcom/gdsc.c
+++ b/drivers/clk/qcom/gdsc.c
@@ -402,7 +402,7 @@ static bool gdsc_get_hwmode(struct generic_pm_domain *domain, struct device *dev
static int gdsc_init(struct gdsc *sc)
{
- u32 mask, val;
+ u32 mask, val, tmp;
int on, ret;
/*
@@ -420,6 +420,14 @@ static int gdsc_init(struct gdsc *sc)
if (!sc->clk_dis_wait_val)
sc->clk_dis_wait_val = CLK_DIS_WAIT_VAL;
+ regmap_read(sc->regmap, sc->gdscr, &tmp);
+ if (sc->en_rest_wait_val != ((tmp >> EN_REST_WAIT_SHIFT) & 0xf))
+ printk(KERN_ERR "gdsc_init: %s en_rest_wait_val mismatch: (new) 0x%x vs 0x%x (reset)\n", sc->pd.name, sc->en_rest_wait_val, (tmp >> EN_REST_WAIT_SHIFT) & 0xf);
+ if (sc->en_few_wait_val != ((tmp >> EN_FEW_WAIT_SHIFT) & 0xf))
+ printk(KERN_ERR "gdsc_init: %s en_few_wait_val mismatch: (new) 0x%x vs 0x%x (reset)\n", sc->pd.name, sc->en_few_wait_val, (tmp >> EN_FEW_WAIT_SHIFT) & 0xf);
+ if (sc->clk_dis_wait_val != ((tmp >> CLK_DIS_WAIT_SHIFT) & 0xf))
+ printk(KERN_ERR "gdsc_init: %s clk_dis_wait_val mismatch: (new) 0x%x vs 0x%x (reset)\n", sc->pd.name, sc->clk_dis_wait_val, (tmp >> CLK_DIS_WAIT_SHIFT) & 0xf);
+
val = sc->en_rest_wait_val << EN_REST_WAIT_SHIFT |
sc->en_few_wait_val << EN_FEW_WAIT_SHIFT |
sc->clk_dis_wait_val << CLK_DIS_WAIT_SHIFT;
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
Luca Weiss (4):
clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
drivers/clk/qcom/camcc-sm6350.c | 18 ++++++++++++++++++
drivers/clk/qcom/dispcc-sm6350.c | 3 +++
drivers/clk/qcom/gcc-sm6350.c | 6 ++++++
drivers/clk/qcom/gpucc-sm6350.c | 6 ++++++
4 files changed, 33 insertions(+)
---
base-commit: 9c32cda43eb78f78c73aee4aa344b777714e259b
change-id: 20250425-sm6350-gdsc-val-a0162752854f
Best regards,
--
Luca Weiss <luca.weiss@fairphone.com>
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
@ 2025-04-25 12:12 ` Luca Weiss
2025-04-28 17:37 ` Taniya Das
2025-04-25 12:12 ` [PATCH 2/4] clk: qcom: dispcc-sm6350: " Luca Weiss
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Luca Weiss @ 2025-04-25 12:12 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel, Luca Weiss
Compared to the msm-4.19 driver the mainline GDSC driver always sets the
bits for en_rest, en_few & clk_dis, and if those values are not set
per-GDSC in the respective driver then the default value from the GDSC
driver is used. The downstream driver only conditionally sets
clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
Correct this situation by explicitly setting those values. For all GDSCs
the reset value of those bits are used.
Fixes: 80f5451d9a7c ("clk: qcom: Add camera clock controller driver for SM6350")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/clk/qcom/camcc-sm6350.c | 18 ++++++++++++++++++
1 file changed, 18 insertions(+)
diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c
index 1871970fb046d7ad6f5b6bfcce9f8ae10b3f2e93..8aac97d29ce3ff0d12e7d09fe65fd51a5cb43c87 100644
--- a/drivers/clk/qcom/camcc-sm6350.c
+++ b/drivers/clk/qcom/camcc-sm6350.c
@@ -1695,6 +1695,9 @@ static struct clk_branch camcc_sys_tmr_clk = {
static struct gdsc bps_gdsc = {
.gdscr = 0x6004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "bps_gdsc",
},
@@ -1704,6 +1707,9 @@ static struct gdsc bps_gdsc = {
static struct gdsc ipe_0_gdsc = {
.gdscr = 0x7004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "ipe_0_gdsc",
},
@@ -1713,6 +1719,9 @@ static struct gdsc ipe_0_gdsc = {
static struct gdsc ife_0_gdsc = {
.gdscr = 0x9004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "ife_0_gdsc",
},
@@ -1721,6 +1730,9 @@ static struct gdsc ife_0_gdsc = {
static struct gdsc ife_1_gdsc = {
.gdscr = 0xa004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "ife_1_gdsc",
},
@@ -1729,6 +1741,9 @@ static struct gdsc ife_1_gdsc = {
static struct gdsc ife_2_gdsc = {
.gdscr = 0xb004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "ife_2_gdsc",
},
@@ -1737,6 +1752,9 @@ static struct gdsc ife_2_gdsc = {
static struct gdsc titan_top_gdsc = {
.gdscr = 0x14004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "titan_top_gdsc",
},
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 2/4] clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
2025-04-25 12:12 ` [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs Luca Weiss
@ 2025-04-25 12:12 ` Luca Weiss
2025-04-28 17:39 ` Taniya Das
2025-04-25 12:12 ` [PATCH 3/4] clk: qcom: gcc-sm6350: " Luca Weiss
` (2 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Luca Weiss @ 2025-04-25 12:12 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel, Luca Weiss
Compared to the msm-4.19 driver the mainline GDSC driver always sets the
bits for en_rest, en_few & clk_dis, and if those values are not set
per-GDSC in the respective driver then the default value from the GDSC
driver is used. The downstream driver only conditionally sets
clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
Correct this situation by explicitly setting those values. For all GDSCs
the reset value of those bits are used.
Fixes: 837519775f1d ("clk: qcom: Add display clock controller driver for SM6350")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/clk/qcom/dispcc-sm6350.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/drivers/clk/qcom/dispcc-sm6350.c b/drivers/clk/qcom/dispcc-sm6350.c
index e703ecf00e440473156f707498f23cde53fb7e22..b0bd163a449ccd2b27751e32eb17a982facf07d8 100644
--- a/drivers/clk/qcom/dispcc-sm6350.c
+++ b/drivers/clk/qcom/dispcc-sm6350.c
@@ -681,6 +681,9 @@ static struct clk_branch disp_cc_xo_clk = {
static struct gdsc mdss_gdsc = {
.gdscr = 0x1004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "mdss_gdsc",
},
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 3/4] clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
2025-04-25 12:12 ` [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs Luca Weiss
2025-04-25 12:12 ` [PATCH 2/4] clk: qcom: dispcc-sm6350: " Luca Weiss
@ 2025-04-25 12:12 ` Luca Weiss
2025-04-28 17:39 ` Taniya Das
2025-04-25 12:12 ` [PATCH 4/4] clk: qcom: gpucc-sm6350: " Luca Weiss
2025-05-07 5:18 ` [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Bjorn Andersson
4 siblings, 1 reply; 10+ messages in thread
From: Luca Weiss @ 2025-04-25 12:12 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel, Luca Weiss
Compared to the msm-4.19 driver the mainline GDSC driver always sets the
bits for en_rest, en_few & clk_dis, and if those values are not set
per-GDSC in the respective driver then the default value from the GDSC
driver is used. The downstream driver only conditionally sets
clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
Correct this situation by explicitly setting those values. For all GDSCs
the reset value of those bits are used.
Fixes: 131abae905df ("clk: qcom: Add SM6350 GCC driver")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/clk/qcom/gcc-sm6350.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/clk/qcom/gcc-sm6350.c b/drivers/clk/qcom/gcc-sm6350.c
index 74346dc026068a224e173fdc0472fbaf878052c4..a4d6dff9d0f7f1216c778165a1fe9604d9ae41dc 100644
--- a/drivers/clk/qcom/gcc-sm6350.c
+++ b/drivers/clk/qcom/gcc-sm6350.c
@@ -2320,6 +2320,9 @@ static struct clk_branch gcc_video_xo_clk = {
static struct gdsc usb30_prim_gdsc = {
.gdscr = 0x1a004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "usb30_prim_gdsc",
},
@@ -2328,6 +2331,9 @@ static struct gdsc usb30_prim_gdsc = {
static struct gdsc ufs_phy_gdsc = {
.gdscr = 0x3a004,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0xf,
.pd = {
.name = "ufs_phy_gdsc",
},
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH 4/4] clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
` (2 preceding siblings ...)
2025-04-25 12:12 ` [PATCH 3/4] clk: qcom: gcc-sm6350: " Luca Weiss
@ 2025-04-25 12:12 ` Luca Weiss
2025-04-28 17:41 ` Taniya Das
2025-05-07 5:18 ` [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Bjorn Andersson
4 siblings, 1 reply; 10+ messages in thread
From: Luca Weiss @ 2025-04-25 12:12 UTC (permalink / raw)
To: Bjorn Andersson, Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel, Luca Weiss
Compared to the msm-4.19 driver the mainline GDSC driver always sets the
bits for en_rest, en_few & clk_dis, and if those values are not set
per-GDSC in the respective driver then the default value from the GDSC
driver is used. The downstream driver only conditionally sets
clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
Correct this situation by explicitly setting those values. For all GDSCs
the reset value of those bits are used, with the exception of
gpu_cx_gdsc which has an explicit value (qcom,clk-dis-wait-val = <8>).
Fixes: 013804a727a0 ("clk: qcom: Add GPU clock controller driver for SM6350")
Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
---
drivers/clk/qcom/gpucc-sm6350.c | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c
index 35ed0500bc59319f9659aef81031b34d29fc06a4..ee89c42413f885f21f1470b1f7887d052e52a75e 100644
--- a/drivers/clk/qcom/gpucc-sm6350.c
+++ b/drivers/clk/qcom/gpucc-sm6350.c
@@ -413,6 +413,9 @@ static struct clk_branch gpu_cc_gx_vsense_clk = {
static struct gdsc gpu_cx_gdsc = {
.gdscr = 0x106c,
.gds_hw_ctrl = 0x1540,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0x8,
.pd = {
.name = "gpu_cx_gdsc",
},
@@ -423,6 +426,9 @@ static struct gdsc gpu_cx_gdsc = {
static struct gdsc gpu_gx_gdsc = {
.gdscr = 0x100c,
.clamp_io_ctrl = 0x1508,
+ .en_rest_wait_val = 0x2,
+ .en_few_wait_val = 0x2,
+ .clk_dis_wait_val = 0x2,
.pd = {
.name = "gpu_gx_gdsc",
.power_on = gdsc_gx_do_nothing_enable,
--
2.49.0
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 ` [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs Luca Weiss
@ 2025-04-28 17:37 ` Taniya Das
0 siblings, 0 replies; 10+ messages in thread
From: Taniya Das @ 2025-04-28 17:37 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Konrad Dybcio, AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel
On 4/25/2025 5:42 PM, Luca Weiss wrote:
> Compared to the msm-4.19 driver the mainline GDSC driver always sets the
> bits for en_rest, en_few & clk_dis, and if those values are not set
> per-GDSC in the respective driver then the default value from the GDSC
> driver is used. The downstream driver only conditionally sets
> clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
>
> Correct this situation by explicitly setting those values. For all GDSCs
> the reset value of those bits are used.
>
> Fixes: 80f5451d9a7c ("clk: qcom: Add camera clock controller driver for SM6350")
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/camcc-sm6350.c | 18 ++++++++++++++++++
> 1 file changed, 18 insertions(+)
>
> diff --git a/drivers/clk/qcom/camcc-sm6350.c b/drivers/clk/qcom/camcc-sm6350.c
> index 1871970fb046d7ad6f5b6bfcce9f8ae10b3f2e93..8aac97d29ce3ff0d12e7d09fe65fd51a5cb43c87 100644
> --- a/drivers/clk/qcom/camcc-sm6350.c
> +++ b/drivers/clk/qcom/camcc-sm6350.c
> @@ -1695,6 +1695,9 @@ static struct clk_branch camcc_sys_tmr_clk = {
>
> static struct gdsc bps_gdsc = {
> .gdscr = 0x6004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "bps_gdsc",
> },
> @@ -1704,6 +1707,9 @@ static struct gdsc bps_gdsc = {
>
> static struct gdsc ipe_0_gdsc = {
> .gdscr = 0x7004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "ipe_0_gdsc",
> },
> @@ -1713,6 +1719,9 @@ static struct gdsc ipe_0_gdsc = {
>
> static struct gdsc ife_0_gdsc = {
> .gdscr = 0x9004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "ife_0_gdsc",
> },
> @@ -1721,6 +1730,9 @@ static struct gdsc ife_0_gdsc = {
>
> static struct gdsc ife_1_gdsc = {
> .gdscr = 0xa004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "ife_1_gdsc",
> },
> @@ -1729,6 +1741,9 @@ static struct gdsc ife_1_gdsc = {
>
> static struct gdsc ife_2_gdsc = {
> .gdscr = 0xb004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "ife_2_gdsc",
> },
> @@ -1737,6 +1752,9 @@ static struct gdsc ife_2_gdsc = {
>
> static struct gdsc titan_top_gdsc = {
> .gdscr = 0x14004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "titan_top_gdsc",
> },
>
Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 2/4] clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 ` [PATCH 2/4] clk: qcom: dispcc-sm6350: " Luca Weiss
@ 2025-04-28 17:39 ` Taniya Das
0 siblings, 0 replies; 10+ messages in thread
From: Taniya Das @ 2025-04-28 17:39 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Konrad Dybcio, AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel
On 4/25/2025 5:42 PM, Luca Weiss wrote:
> Compared to the msm-4.19 driver the mainline GDSC driver always sets the
> bits for en_rest, en_few & clk_dis, and if those values are not set
> per-GDSC in the respective driver then the default value from the GDSC
> driver is used. The downstream driver only conditionally sets
> clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
>
> Correct this situation by explicitly setting those values. For all GDSCs
> the reset value of those bits are used.
>
> Fixes: 837519775f1d ("clk: qcom: Add display clock controller driver for SM6350")
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/dispcc-sm6350.c | 3 +++
> 1 file changed, 3 insertions(+)
>
> diff --git a/drivers/clk/qcom/dispcc-sm6350.c b/drivers/clk/qcom/dispcc-sm6350.c
> index e703ecf00e440473156f707498f23cde53fb7e22..b0bd163a449ccd2b27751e32eb17a982facf07d8 100644
> --- a/drivers/clk/qcom/dispcc-sm6350.c
> +++ b/drivers/clk/qcom/dispcc-sm6350.c
> @@ -681,6 +681,9 @@ static struct clk_branch disp_cc_xo_clk = {
>
> static struct gdsc mdss_gdsc = {
> .gdscr = 0x1004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "mdss_gdsc",
> },
>
Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 3/4] clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 ` [PATCH 3/4] clk: qcom: gcc-sm6350: " Luca Weiss
@ 2025-04-28 17:39 ` Taniya Das
0 siblings, 0 replies; 10+ messages in thread
From: Taniya Das @ 2025-04-28 17:39 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Konrad Dybcio, AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel
On 4/25/2025 5:42 PM, Luca Weiss wrote:
> Compared to the msm-4.19 driver the mainline GDSC driver always sets the
> bits for en_rest, en_few & clk_dis, and if those values are not set
> per-GDSC in the respective driver then the default value from the GDSC
> driver is used. The downstream driver only conditionally sets
> clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
>
> Correct this situation by explicitly setting those values. For all GDSCs
> the reset value of those bits are used.
>
> Fixes: 131abae905df ("clk: qcom: Add SM6350 GCC driver")
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/gcc-sm6350.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/clk/qcom/gcc-sm6350.c b/drivers/clk/qcom/gcc-sm6350.c
> index 74346dc026068a224e173fdc0472fbaf878052c4..a4d6dff9d0f7f1216c778165a1fe9604d9ae41dc 100644
> --- a/drivers/clk/qcom/gcc-sm6350.c
> +++ b/drivers/clk/qcom/gcc-sm6350.c
> @@ -2320,6 +2320,9 @@ static struct clk_branch gcc_video_xo_clk = {
>
> static struct gdsc usb30_prim_gdsc = {
> .gdscr = 0x1a004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "usb30_prim_gdsc",
> },
> @@ -2328,6 +2331,9 @@ static struct gdsc usb30_prim_gdsc = {
>
> static struct gdsc ufs_phy_gdsc = {
> .gdscr = 0x3a004,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0xf,
> .pd = {
> .name = "ufs_phy_gdsc",
> },
>
Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 4/4] clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
2025-04-25 12:12 ` [PATCH 4/4] clk: qcom: gpucc-sm6350: " Luca Weiss
@ 2025-04-28 17:41 ` Taniya Das
0 siblings, 0 replies; 10+ messages in thread
From: Taniya Das @ 2025-04-28 17:41 UTC (permalink / raw)
To: Luca Weiss, Bjorn Andersson, Michael Turquette, Stephen Boyd,
Konrad Dybcio, AngeloGioacchino Del Regno
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel
On 4/25/2025 5:42 PM, Luca Weiss wrote:
> Compared to the msm-4.19 driver the mainline GDSC driver always sets the
> bits for en_rest, en_few & clk_dis, and if those values are not set
> per-GDSC in the respective driver then the default value from the GDSC
> driver is used. The downstream driver only conditionally sets
> clk_dis_wait_val if qcom,clk-dis-wait-val is given in devicetree.
>
> Correct this situation by explicitly setting those values. For all GDSCs
> the reset value of those bits are used, with the exception of
> gpu_cx_gdsc which has an explicit value (qcom,clk-dis-wait-val = <8>).
>
> Fixes: 013804a727a0 ("clk: qcom: Add GPU clock controller driver for SM6350")
> Signed-off-by: Luca Weiss <luca.weiss@fairphone.com>
> ---
> drivers/clk/qcom/gpucc-sm6350.c | 6 ++++++
> 1 file changed, 6 insertions(+)
>
> diff --git a/drivers/clk/qcom/gpucc-sm6350.c b/drivers/clk/qcom/gpucc-sm6350.c
> index 35ed0500bc59319f9659aef81031b34d29fc06a4..ee89c42413f885f21f1470b1f7887d052e52a75e 100644
> --- a/drivers/clk/qcom/gpucc-sm6350.c
> +++ b/drivers/clk/qcom/gpucc-sm6350.c
> @@ -413,6 +413,9 @@ static struct clk_branch gpu_cc_gx_vsense_clk = {
> static struct gdsc gpu_cx_gdsc = {
> .gdscr = 0x106c,
> .gds_hw_ctrl = 0x1540,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0x8,
> .pd = {
> .name = "gpu_cx_gdsc",
> },
> @@ -423,6 +426,9 @@ static struct gdsc gpu_cx_gdsc = {
> static struct gdsc gpu_gx_gdsc = {
> .gdscr = 0x100c,
> .clamp_io_ctrl = 0x1508,
> + .en_rest_wait_val = 0x2,
> + .en_few_wait_val = 0x2,
> + .clk_dis_wait_val = 0x2,
> .pd = {
> .name = "gpu_gx_gdsc",
> .power_on = gdsc_gx_do_nothing_enable,
>
Reviewed-by: Taniya Das <quic_tdas@quicinc.com>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
` (3 preceding siblings ...)
2025-04-25 12:12 ` [PATCH 4/4] clk: qcom: gpucc-sm6350: " Luca Weiss
@ 2025-05-07 5:18 ` Bjorn Andersson
4 siblings, 0 replies; 10+ messages in thread
From: Bjorn Andersson @ 2025-05-07 5:18 UTC (permalink / raw)
To: Michael Turquette, Stephen Boyd, Konrad Dybcio,
AngeloGioacchino Del Regno, Luca Weiss
Cc: ~postmarketos/upstreaming, phone-devel, linux-arm-msm, linux-clk,
linux-kernel
On Fri, 25 Apr 2025 14:12:54 +0200, Luca Weiss wrote:
> As described in the commit messages, keep the GDSC configs aligned with
> the downstream kernel.
>
> For reference, this was checked using the following code:
>
> To: Bjorn Andersson <andersson@kernel.org>
> To: Michael Turquette <mturquette@baylibre.com>
> To: Stephen Boyd <sboyd@kernel.org>
> To: Konrad Dybcio <konradybcio@kernel.org>
> To: AngeloGioacchino Del Regno <angelogioacchino.delregno@somainline.org>
> Cc: ~postmarketos/upstreaming@lists.sr.ht
> Cc: phone-devel@vger.kernel.org
> Cc: linux-arm-msm@vger.kernel.org
> Cc: linux-clk@vger.kernel.org
> Cc: linux-kernel@vger.kernel.org
>
> [...]
Applied, thanks!
[0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers
(no commit info)
[1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs
commit: e7b1c13280ad866f3b935f6c658713c41db61635
[2/4] clk: qcom: dispcc-sm6350: Add *_wait_val values for GDSCs
commit: 673989d27123618afab56df1143a75454178b4ae
[3/4] clk: qcom: gcc-sm6350: Add *_wait_val values for GDSCs
commit: afdfd829a99e467869e3ca1955fb6c6e337c340a
[4/4] clk: qcom: gpucc-sm6350: Add *_wait_val values for GDSCs
commit: d988b0b866c2aeb23aa74022b5bbd463165a7a33
Best regards,
--
Bjorn Andersson <andersson@kernel.org>
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2025-05-07 5:18 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-04-25 12:12 [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Luca Weiss
2025-04-25 12:12 ` [PATCH 1/4] clk: qcom: camcc-sm6350: Add *_wait_val values for GDSCs Luca Weiss
2025-04-28 17:37 ` Taniya Das
2025-04-25 12:12 ` [PATCH 2/4] clk: qcom: dispcc-sm6350: " Luca Weiss
2025-04-28 17:39 ` Taniya Das
2025-04-25 12:12 ` [PATCH 3/4] clk: qcom: gcc-sm6350: " Luca Weiss
2025-04-28 17:39 ` Taniya Das
2025-04-25 12:12 ` [PATCH 4/4] clk: qcom: gpucc-sm6350: " Luca Weiss
2025-04-28 17:41 ` Taniya Das
2025-05-07 5:18 ` [PATCH 0/4] Add *_wait_val values for GDSCs in all SM6350 clock drivers Bjorn Andersson
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox