Skip to content

Commit bc471d1

Browse files
Sam ProtsenkoSylwester Nawrocki
authored andcommitted
clk: samsung: exynos850: Add missing sysreg clocks
System Register is used to configure system behavior, like USI protocol, etc. SYSREG clocks should be provided to corresponding syscon nodes, to make it possible to modify SYSREG registers. While at it, add also missing PMU and GPIO clocks, which looks necessary and might be needed for corresponding Exynos850 features soon. Signed-off-by: Sam Protsenko <[email protected]> Signed-off-by: Sylwester Nawrocki <[email protected]> Reviewed-by: Krzysztof Kozlowski <[email protected]> Acked-by: Chanwoo Choi <[email protected]> Link: https://lore.kernel.org/r/[email protected]
1 parent a949f2c commit bc471d1

File tree

1 file changed

+29
-0
lines changed

1 file changed

+29
-0
lines changed

drivers/clk/samsung/clk-exynos850.c

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,11 +426,14 @@ CLK_OF_DECLARE(exynos850_cmu_top, "samsung,exynos850-cmu-top",
426426
#define CLK_CON_DIV_DIV_CLK_APM_I3C 0x1808
427427
#define CLK_CON_GAT_CLKCMU_CMGP_BUS 0x2000
428428
#define CLK_CON_GAT_GATE_CLKCMU_CHUB_BUS 0x2014
429+
#define CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK 0x2018
430+
#define CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK 0x2020
429431
#define CLK_CON_GAT_GOUT_APM_APBIF_RTC_PCLK 0x2024
430432
#define CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_PCLK 0x2028
431433
#define CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK 0x2034
432434
#define CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK 0x2038
433435
#define CLK_CON_GAT_GOUT_APM_SPEEDY_APM_PCLK 0x20bc
436+
#define CLK_CON_GAT_GOUT_APM_SYSREG_APM_PCLK 0x20c0
434437

435438
static const unsigned long apm_clk_regs[] __initconst = {
436439
PLL_CON0_MUX_CLKCMU_APM_BUS_USER,
@@ -445,11 +448,14 @@ static const unsigned long apm_clk_regs[] __initconst = {
445448
CLK_CON_DIV_DIV_CLK_APM_I3C,
446449
CLK_CON_GAT_CLKCMU_CMGP_BUS,
447450
CLK_CON_GAT_GATE_CLKCMU_CHUB_BUS,
451+
CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK,
452+
CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK,
448453
CLK_CON_GAT_GOUT_APM_APBIF_RTC_PCLK,
449454
CLK_CON_GAT_GOUT_APM_APBIF_TOP_RTC_PCLK,
450455
CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_PCLK,
451456
CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK,
452457
CLK_CON_GAT_GOUT_APM_SPEEDY_APM_PCLK,
458+
CLK_CON_GAT_GOUT_APM_SYSREG_APM_PCLK,
453459
};
454460

455461
/* List of parent clocks for Muxes in CMU_APM */
@@ -512,6 +518,14 @@ static const struct samsung_gate_clock apm_gate_clks[] __initconst = {
512518
CLK_CON_GAT_GOUT_APM_I3C_APM_PMIC_I_SCLK, 21, 0, 0),
513519
GATE(CLK_GOUT_SPEEDY_PCLK, "gout_speedy_pclk", "dout_apm_bus",
514520
CLK_CON_GAT_GOUT_APM_SPEEDY_APM_PCLK, 21, 0, 0),
521+
/* TODO: Should be enabled in GPIO driver (or made CLK_IS_CRITICAL) */
522+
GATE(CLK_GOUT_GPIO_ALIVE_PCLK, "gout_gpio_alive_pclk", "dout_apm_bus",
523+
CLK_CON_GAT_GOUT_APM_APBIF_GPIO_ALIVE_PCLK, 21, CLK_IGNORE_UNUSED,
524+
0),
525+
GATE(CLK_GOUT_PMU_ALIVE_PCLK, "gout_pmu_alive_pclk", "dout_apm_bus",
526+
CLK_CON_GAT_GOUT_APM_APBIF_PMU_ALIVE_PCLK, 21, 0, 0),
527+
GATE(CLK_GOUT_SYSREG_APM_PCLK, "gout_sysreg_apm_pclk", "dout_apm_bus",
528+
CLK_CON_GAT_GOUT_APM_SYSREG_APM_PCLK, 21, 0, 0),
515529
};
516530

517531
static const struct samsung_cmu_info apm_cmu_info __initconst = {
@@ -541,6 +555,7 @@ static const struct samsung_cmu_info apm_cmu_info __initconst = {
541555
#define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0 0x200c
542556
#define CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1 0x2010
543557
#define CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK 0x2018
558+
#define CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP_PCLK 0x2040
544559
#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK 0x2044
545560
#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK 0x2048
546561
#define CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK 0x204c
@@ -556,6 +571,7 @@ static const unsigned long cmgp_clk_regs[] __initconst = {
556571
CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S0,
557572
CLK_CON_GAT_GOUT_CMGP_ADC_PCLK_S1,
558573
CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK,
574+
CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP_PCLK,
559575
CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK,
560576
CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK,
561577
CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK,
@@ -610,6 +626,9 @@ static const struct samsung_gate_clock cmgp_gate_clks[] __initconst = {
610626
GATE(CLK_GOUT_CMGP_USI1_PCLK, "gout_cmgp_usi1_pclk",
611627
"gout_clkcmu_cmgp_bus",
612628
CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_PCLK, 21, 0, 0),
629+
GATE(CLK_GOUT_SYSREG_CMGP_PCLK, "gout_sysreg_cmgp_pclk",
630+
"gout_clkcmu_cmgp_bus",
631+
CLK_CON_GAT_GOUT_CMGP_SYSREG_CMGP_PCLK, 21, 0, 0),
613632
};
614633

615634
static const struct samsung_cmu_info cmgp_cmu_info __initconst = {
@@ -910,10 +929,12 @@ CLK_OF_DECLARE(exynos850_cmu_peri, "samsung,exynos850-cmu-peri",
910929
#define CLK_CON_DIV_DIV_CLK_CORE_BUSP 0x1800
911930
#define CLK_CON_GAT_GOUT_CORE_CCI_550_ACLK 0x2038
912931
#define CLK_CON_GAT_GOUT_CORE_GIC_CLK 0x2040
932+
#define CLK_CON_GAT_GOUT_CORE_GPIO_CORE_PCLK 0x2044
913933
#define CLK_CON_GAT_GOUT_CORE_MMC_EMBD_I_ACLK 0x20e8
914934
#define CLK_CON_GAT_GOUT_CORE_MMC_EMBD_SDCLKIN 0x20ec
915935
#define CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK 0x2128
916936
#define CLK_CON_GAT_GOUT_CORE_SSS_I_PCLK 0x212c
937+
#define CLK_CON_GAT_GOUT_CORE_SYSREG_CORE_PCLK 0x2130
917938

918939
static const unsigned long core_clk_regs[] __initconst = {
919940
PLL_CON0_MUX_CLKCMU_CORE_BUS_USER,
@@ -924,10 +945,12 @@ static const unsigned long core_clk_regs[] __initconst = {
924945
CLK_CON_DIV_DIV_CLK_CORE_BUSP,
925946
CLK_CON_GAT_GOUT_CORE_CCI_550_ACLK,
926947
CLK_CON_GAT_GOUT_CORE_GIC_CLK,
948+
CLK_CON_GAT_GOUT_CORE_GPIO_CORE_PCLK,
927949
CLK_CON_GAT_GOUT_CORE_MMC_EMBD_I_ACLK,
928950
CLK_CON_GAT_GOUT_CORE_MMC_EMBD_SDCLKIN,
929951
CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK,
930952
CLK_CON_GAT_GOUT_CORE_SSS_I_PCLK,
953+
CLK_CON_GAT_GOUT_CORE_SYSREG_CORE_PCLK,
931954
};
932955

933956
/* List of parent clocks for Muxes in CMU_CORE */
@@ -972,6 +995,12 @@ static const struct samsung_gate_clock core_gate_clks[] __initconst = {
972995
CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK, 21, 0, 0),
973996
GATE(CLK_GOUT_SSS_PCLK, "gout_sss_pclk", "dout_core_busp",
974997
CLK_CON_GAT_GOUT_CORE_SSS_I_PCLK, 21, 0, 0),
998+
/* TODO: Should be enabled in GPIO driver (or made CLK_IS_CRITICAL) */
999+
GATE(CLK_GOUT_GPIO_CORE_PCLK, "gout_gpio_core_pclk", "dout_core_busp",
1000+
CLK_CON_GAT_GOUT_CORE_GPIO_CORE_PCLK, 21, CLK_IGNORE_UNUSED, 0),
1001+
GATE(CLK_GOUT_SYSREG_CORE_PCLK, "gout_sysreg_core_pclk",
1002+
"dout_core_busp",
1003+
CLK_CON_GAT_GOUT_CORE_SYSREG_CORE_PCLK, 21, 0, 0),
9751004
};
9761005

9771006
static const struct samsung_cmu_info core_cmu_info __initconst = {

0 commit comments

Comments
 (0)