* Re: [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents
@ 2026-06-13 13:06 Denzeel Oliva
0 siblings, 0 replies; 3+ messages in thread
From: Denzeel Oliva @ 2026-06-13 13:06 UTC (permalink / raw)
To: linux-samsung-soc; +Cc: linux-clk, linux-kernel
On Sat, Jun 13, 2026, Sashiko AI wrote:
> Does reordering the mout_peris_clk_peris_gic_p array break the hardware
> register mapping?
>
> In the Exynos clock framework, the indices of the PNAME array correspond
> directly to the hardware multiplexer register bit values...
The reorder does not break the mapping — it corrects it. The original
upstream PNAME order was a porting bug that inverted the parents.
The downstream Exynos9830 source confirms the hardware register encoding
(drivers/soc/samsung/cal-if/exynos9830/cmucal-node.c:1093-1096):
enum clk_id cmucal_mux_clk_peris_gic_parents[] = {
MUX_CLKCMU_PERIS_BUS_USER, // index 0 → mux value 0
OSCCLK_PERIS, // index 1 → mux value 1
};
So hardware mux value 0 selects MUX_CLKCMU_PERIS_BUS_USER (upstream:
mout_peris_bus_user), not oscclk. The original upstream had these
swapped, which would cause clk_set_parent() to write the wrong mux
register value.
This patch fixes that inversion.
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v3 0/3] clk: samsung: exynos990: Fix PERIS gate clock parents and add TMU_SUB
@ 2026-06-13 12:36 Denzeel Oliva
2026-06-13 12:36 ` [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents Denzeel Oliva
0 siblings, 1 reply; 3+ messages in thread
From: Denzeel Oliva @ 2026-06-13 12:36 UTC (permalink / raw)
To: Krzysztof Kozlowski, Sylwester Nawrocki, Chanwoo Choi,
Peter Griffin, Alim Akhtar, Michael Turquette, Stephen Boyd,
Brian Masney, Rob Herring, Conor Dooley
Cc: linux-samsung-soc, linux-clk, devicetree, linux-arm-kernel,
linux-kernel, Denzeel Oliva
Fix several PERIS CMU clock parent mismatches and add the missing
TMU_SUB_PCLK gate clock. The dt-bindings patch adds the new clock
ID. The second patch adds the TMU_SUB_PCLK gate. The third patch
corrects eight gate clock parents and reorders the GIC mux parents.
Signed-off-by: Denzeel Oliva <wachiturroxd150@gmail.com>
---
v2 -> v3:
- Split TMU_SUB gate addition from parent fixes into separate
patches (Krzysztof)
- Now three patches: dt-bindings, add gate, fix parents
v2: https://lore.kernel.org/r/20260613-exynos990-peris-fix-v2-v2-0-3dff7ade75b3@gmail.com
v1: https://lore.kernel.org/r/20260528-exynos990-peris-fix-v1-1-5b65aa7def2d@gmail.com
---
Denzeel Oliva (3):
dt-bindings: clock: exynos990: Add CLK_GOUT_PERIS_TMU_SUB_PCLK
clk: samsung: exynos990: Add PERIS TMU_SUB_PCLK gate
clk: samsung: exynos990: Fix PERIS gate clock parents
drivers/clk/samsung/clk-exynos990.c | 24 ++++++++++++++----------
include/dt-bindings/clock/samsung,exynos990.h | 1 +
2 files changed, 15 insertions(+), 10 deletions(-)
---
base-commit: c425609d6ac4012c8bbf01ec2e10e801b1923a7b
change-id: 20260613-exynos990-peris-fix-v3-fac19b879206
Best regards,
--
Denzeel Oliva <wachiturroxd150@gmail.com>
^ permalink raw reply [flat|nested] 3+ messages in thread* [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents 2026-06-13 12:36 [PATCH v3 0/3] clk: samsung: exynos990: Fix PERIS gate clock parents and add TMU_SUB Denzeel Oliva @ 2026-06-13 12:36 ` Denzeel Oliva 2026-06-13 12:41 ` sashiko-bot 0 siblings, 1 reply; 3+ messages in thread From: Denzeel Oliva @ 2026-06-13 12:36 UTC (permalink / raw) To: Krzysztof Kozlowski, Sylwester Nawrocki, Chanwoo Choi, Peter Griffin, Alim Akhtar, Michael Turquette, Stephen Boyd, Brian Masney, Rob Herring, Conor Dooley Cc: linux-samsung-soc, linux-clk, devicetree, linux-arm-kernel, linux-kernel, Denzeel Oliva Correct eight PERIS gate clock parents to match the hardware clock tree and reorder the GIC mux parents so mout_peris_bus_user is the default source. Signed-off-by: Denzeel Oliva <wachiturroxd150@gmail.com> --- drivers/clk/samsung/clk-exynos990.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/drivers/clk/samsung/clk-exynos990.c b/drivers/clk/samsung/clk-exynos990.c index ee3566b8e57c..df5928833b23 100644 --- a/drivers/clk/samsung/clk-exynos990.c +++ b/drivers/clk/samsung/clk-exynos990.c @@ -2551,7 +2551,7 @@ static const unsigned long peris_clk_regs[] __initconst = { /* Parent clock list for CMU_PERIS muxes */ PNAME(mout_peris_bus_user_p) = { "oscclk", "mout_cmu_peris_bus" }; -PNAME(mout_peris_clk_peris_gic_p) = { "oscclk", "mout_peris_bus_user" }; +PNAME(mout_peris_clk_peris_gic_p) = { "mout_peris_bus_user", "oscclk" }; static const struct samsung_mux_clock peris_mux_clks[] __initconst = { MUX(CLK_MOUT_PERIS_BUS_USER, "mout_peris_bus_user", @@ -2584,15 +2584,15 @@ static const struct samsung_gate_clock peris_gate_clks[] __initconst = { CLK_CON_GAT_GOUT_BLK_PERIS_UID_RSTNSYNC_CLK_PERIS_BUSP_IPCLKPORT_CLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_CLK_PERIS_OSCCLK_CLK, - "gout_peris_clk_peris_oscclk_clk", "mout_peris_bus_user", + "gout_peris_clk_peris_oscclk_clk", "oscclk", CLK_CON_GAT_CLK_BLK_PERIS_UID_RSTNSYNC_CLK_PERIS_OSCCLK_IPCLKPORT_CLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_CLK_PERIS_GIC_CLK, - "gout_peris_clk_peris_gic_clk", "mout_peris_bus_user", + "gout_peris_clk_peris_gic_clk", "mout_peris_clk_peris_gic", CLK_CON_GAT_GOUT_BLK_PERIS_UID_RSTNSYNC_CLK_PERIS_GIC_IPCLKPORT_CLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_AD_AXI_P_PERIS_ACLKM, - "gout_peris_ad_axi_p_peris_aclkm", "mout_peris_bus_user", + "gout_peris_ad_axi_p_peris_aclkm", "mout_peris_clk_peris_gic", CLK_CON_GAT_GOUT_BLK_PERIS_UID_AD_AXI_P_PERIS_IPCLKPORT_ACLKM, 21, CLK_IGNORE_UNUSED, 0), GATE(CLK_GOUT_PERIS_OTP_CON_BIRA_PCLK, @@ -2600,19 +2600,19 @@ static const struct samsung_gate_clock peris_gate_clks[] __initconst = { CLK_CON_GAT_GOUT_BLK_PERIS_UID_OTP_CON_BIRA_IPCLKPORT_PCLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_GIC_CLK, - "gout_peris_gic_clk", "mout_peris_bus_user", + "gout_peris_gic_clk", "mout_peris_clk_peris_gic", CLK_CON_GAT_GOUT_BLK_PERIS_UID_GIC_IPCLKPORT_CLK, 21, CLK_IS_CRITICAL, 0), GATE(CLK_GOUT_PERIS_LHM_AXI_P_PERIS_CLK, - "gout_peris_lhm_axi_p_peris_clk", "oscclk", + "gout_peris_lhm_axi_p_peris_clk", "mout_peris_bus_user", CLK_CON_GAT_GOUT_BLK_PERIS_UID_LHM_AXI_P_PERIS_IPCLKPORT_I_CLK, 21, CLK_IGNORE_UNUSED, 0), GATE(CLK_GOUT_PERIS_MCT_PCLK, - "gout_peris_mct_pclk", "mout_peris_clk_peris_gic", + "gout_peris_mct_pclk", "mout_peris_bus_user", CLK_CON_GAT_GOUT_BLK_PERIS_UID_MCT_IPCLKPORT_PCLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_OTP_CON_TOP_PCLK, - "gout_peris_otp_con_top_pclk", "mout_peris_clk_peris_gic", + "gout_peris_otp_con_top_pclk", "mout_peris_bus_user", CLK_CON_GAT_GOUT_BLK_PERIS_UID_OTP_CON_TOP_IPCLKPORT_PCLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_D_TZPC_PERIS_PCLK, @@ -2624,7 +2624,7 @@ static const struct samsung_gate_clock peris_gate_clks[] __initconst = { CLK_CON_GAT_GOUT_BLK_PERIS_UID_TMU_SUB_IPCLKPORT_PCLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_TMU_TOP_PCLK, - "gout_peris_tmu_top_pclk", "mout_peris_clk_peris_gic", + "gout_peris_tmu_top_pclk", "mout_peris_bus_user", CLK_CON_GAT_GOUT_BLK_PERIS_UID_TMU_TOP_IPCLKPORT_PCLK, 21, 0, 0), GATE(CLK_GOUT_PERIS_OTP_CON_BIRA_OSCCLK, -- 2.54.0 ^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents 2026-06-13 12:36 ` [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents Denzeel Oliva @ 2026-06-13 12:41 ` sashiko-bot 0 siblings, 0 replies; 3+ messages in thread From: sashiko-bot @ 2026-06-13 12:41 UTC (permalink / raw) To: Denzeel Oliva; +Cc: robh, conor+dt, devicetree Thank you for your contribution! Sashiko AI review found 1 potential issue(s) to consider: - [High] Reordering a clock parent array (PNAME) to change the default clock parent falsifies the hardware register mapping. -- commit 053886a8fb5adfd1285c3768f792e89fdc6baa21 Author: Denzeel Oliva <wachiturroxd150@gmail.com> clk: samsung: exynos990: Fix PERIS gate clock parents This commit corrects eight PERIS gate clock parents to match the hardware clock tree. It also reorders the GIC mux parents to make mout_peris_bus_user the default source. > diff --git a/drivers/clk/samsung/clk-exynos990.c b/drivers/clk/samsung/clk-exynos990.c > index ee3566b8e57c9..df5928833b232 100644 > --- a/drivers/clk/samsung/clk-exynos990.c > +++ b/drivers/clk/samsung/clk-exynos990.c > @@ -2551,7 +2551,7 @@ static const unsigned long peris_clk_regs[] __initconst = { > > /* Parent clock list for CMU_PERIS muxes */ > PNAME(mout_peris_bus_user_p) = { "oscclk", "mout_cmu_peris_bus" }; > -PNAME(mout_peris_clk_peris_gic_p) = { "oscclk", "mout_peris_bus_user" }; > +PNAME(mout_peris_clk_peris_gic_p) = { "mout_peris_bus_user", "oscclk" }; [Severity: High] Does reordering the mout_peris_clk_peris_gic_p array break the hardware register mapping? In the Exynos clock framework, the indices of the PNAME array correspond directly to the hardware multiplexer register bit values (where index 0 maps to register value 0). Reordering the array to change the default parent could cause the framework to write the wrong index to the mux register when clk_set_parent() is called. Should the default clock parent be configured using the assigned-clocks and assigned-clock-parents properties in the Device Tree instead of modifying the driver's hardware description? [ ... ] -- Sashiko AI review · https://sashiko.dev/#/patchset/20260613-exynos990-peris-fix-v3-v3-0-2b230db78ae4@gmail.com?part=3 ^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-06-13 13:06 UTC | newest] Thread overview: 3+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2026-06-13 13:06 [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents Denzeel Oliva -- strict thread matches above, loose matches on Subject: below -- 2026-06-13 12:36 [PATCH v3 0/3] clk: samsung: exynos990: Fix PERIS gate clock parents and add TMU_SUB Denzeel Oliva 2026-06-13 12:36 ` [PATCH v3 3/3] clk: samsung: exynos990: Fix PERIS gate clock parents Denzeel Oliva 2026-06-13 12:41 ` sashiko-bot
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.