clk: samsung: exynos990: Replace bogus divs with fixed-factor clocks
commit a66dabcd2cb8389fd73cab8896fd727fa2ea8d8b upstream.
HSI1/2 PCIe and HSI0 USBDP debug outputs are fixed divide-by-8.
OTP also uses 1/8 from oscclk. Replace incorrect div clocks with
fixed-factor clocks to reflect hardware.
Fixes: bdd03ebf72 ("clk: samsung: Introduce Exynos990 clock controller driver")
Signed-off-by: Denzeel Oliva <wachiturroxd150@gmail.com>
Cc: <stable@vger.kernel.org>
Link: https://lore.kernel.org/r/20250830-fix-cmu-top-v5-3-7c62f608309e@gmail.com
Signed-off-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
fd9f8ed06f
commit
a6055732ea
@@ -931,16 +931,11 @@ static const struct samsung_div_clock top_div_clks[] __initconst = {
|
||||
CLK_CON_DIV_CLKCMU_HSI0_DPGTC, 0, 3),
|
||||
DIV(CLK_DOUT_CMU_HSI0_USB31DRD, "dout_cmu_hsi0_usb31drd",
|
||||
"gout_cmu_hsi0_usb31drd", CLK_CON_DIV_CLKCMU_HSI0_USB31DRD, 0, 4),
|
||||
DIV(CLK_DOUT_CMU_HSI0_USBDP_DEBUG, "dout_cmu_hsi0_usbdp_debug",
|
||||
"gout_cmu_hsi0_usbdp_debug", CLK_CON_DIV_CLKCMU_HSI0_USBDP_DEBUG,
|
||||
0, 4),
|
||||
DIV(CLK_DOUT_CMU_HSI1_BUS, "dout_cmu_hsi1_bus", "gout_cmu_hsi1_bus",
|
||||
CLK_CON_DIV_CLKCMU_HSI1_BUS, 0, 3),
|
||||
DIV(CLK_DOUT_CMU_HSI1_MMC_CARD, "dout_cmu_hsi1_mmc_card",
|
||||
"gout_cmu_hsi1_mmc_card", CLK_CON_DIV_CLKCMU_HSI1_MMC_CARD,
|
||||
0, 9),
|
||||
DIV(CLK_DOUT_CMU_HSI1_PCIE, "dout_cmu_hsi1_pcie", "gout_cmu_hsi1_pcie",
|
||||
CLK_CON_DIV_CLKCMU_HSI1_PCIE, 0, 7),
|
||||
DIV(CLK_DOUT_CMU_HSI1_UFS_CARD, "dout_cmu_hsi1_ufs_card",
|
||||
"gout_cmu_hsi1_ufs_card", CLK_CON_DIV_CLKCMU_HSI1_UFS_CARD,
|
||||
0, 3),
|
||||
@@ -949,8 +944,6 @@ static const struct samsung_div_clock top_div_clks[] __initconst = {
|
||||
0, 3),
|
||||
DIV(CLK_DOUT_CMU_HSI2_BUS, "dout_cmu_hsi2_bus", "gout_cmu_hsi2_bus",
|
||||
CLK_CON_DIV_CLKCMU_HSI2_BUS, 0, 4),
|
||||
DIV(CLK_DOUT_CMU_HSI2_PCIE, "dout_cmu_hsi2_pcie", "gout_cmu_hsi2_pcie",
|
||||
CLK_CON_DIV_CLKCMU_HSI2_PCIE, 0, 7),
|
||||
DIV(CLK_DOUT_CMU_IPP_BUS, "dout_cmu_ipp_bus", "gout_cmu_ipp_bus",
|
||||
CLK_CON_DIV_CLKCMU_IPP_BUS, 0, 4),
|
||||
DIV(CLK_DOUT_CMU_ITP_BUS, "dout_cmu_itp_bus", "gout_cmu_itp_bus",
|
||||
@@ -990,6 +983,16 @@ static const struct samsung_div_clock top_div_clks[] __initconst = {
|
||||
CLK_CON_DIV_DIV_CLKCMU_DPU, 0, 3),
|
||||
};
|
||||
|
||||
static const struct samsung_fixed_factor_clock cmu_top_ffactor[] __initconst = {
|
||||
FFACTOR(CLK_DOUT_CMU_HSI1_PCIE, "dout_cmu_hsi1_pcie",
|
||||
"gout_cmu_hsi1_pcie", 1, 8, 0),
|
||||
FFACTOR(CLK_DOUT_CMU_OTP, "dout_cmu_otp", "oscclk", 1, 8, 0),
|
||||
FFACTOR(CLK_DOUT_CMU_HSI0_USBDP_DEBUG, "dout_cmu_hsi0_usbdp_debug",
|
||||
"gout_cmu_hsi0_usbdp_debug", 1, 8, 0),
|
||||
FFACTOR(CLK_DOUT_CMU_HSI2_PCIE, "dout_cmu_hsi2_pcie",
|
||||
"gout_cmu_hsi2_pcie", 1, 8, 0),
|
||||
};
|
||||
|
||||
static const struct samsung_gate_clock top_gate_clks[] __initconst = {
|
||||
GATE(CLK_GOUT_CMU_APM_BUS, "gout_cmu_apm_bus", "mout_cmu_apm_bus",
|
||||
CLK_CON_GAT_GATE_CLKCMU_APM_BUS, 21, CLK_IGNORE_UNUSED, 0),
|
||||
@@ -1133,6 +1136,8 @@ static const struct samsung_cmu_info top_cmu_info __initconst = {
|
||||
.nr_mux_clks = ARRAY_SIZE(top_mux_clks),
|
||||
.div_clks = top_div_clks,
|
||||
.nr_div_clks = ARRAY_SIZE(top_div_clks),
|
||||
.fixed_factor_clks = cmu_top_ffactor,
|
||||
.nr_fixed_factor_clks = ARRAY_SIZE(cmu_top_ffactor),
|
||||
.gate_clks = top_gate_clks,
|
||||
.nr_gate_clks = ARRAY_SIZE(top_gate_clks),
|
||||
.nr_clk_ids = CLKS_NR_TOP,
|
||||
|
||||
Reference in New Issue
Block a user