2626#define CLKS_NR_PERIC0 (CLK_GOUT_PERIC0_SYSREG_PERIC0_PCLK + 1)
2727#define CLKS_NR_PERIC1 (CLK_GOUT_PERIC1_SYSREG_PERIC1_PCLK + 1)
2828
29+ #define GS101_GATE_DBG_OFFSET 0x4000
30+ #define GS101_DRCG_EN_OFFSET 0x104
31+ #define GS101_MEMCLK_OFFSET 0x108
32+
2933/* ---- CMU_TOP ------------------------------------------------------------- */
3034
3135/* Register Offset definitions for CMU_TOP (0x1e080000) */
@@ -1433,6 +1437,9 @@ static const struct samsung_cmu_info top_cmu_info __initconst = {
14331437 .nr_clk_ids = CLKS_NR_TOP ,
14341438 .clk_regs = cmu_top_clk_regs ,
14351439 .nr_clk_regs = ARRAY_SIZE (cmu_top_clk_regs ),
1440+ .auto_clock_gate = true,
1441+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
1442+ .option_offset = CMU_CMU_TOP_CONTROLLER_OPTION ,
14361443};
14371444
14381445static void __init gs101_cmu_top_init (struct device_node * np )
@@ -1900,6 +1907,11 @@ static const struct samsung_gate_clock apm_gate_clks[] __initconst = {
19001907 CLK_CON_GAT_GOUT_BLK_APM_UID_XIU_DP_APM_IPCLKPORT_ACLK , 21 , CLK_IS_CRITICAL , 0 ),
19011908};
19021909
1910+ static const unsigned long dcrg_memclk_sysreg [] __initconst = {
1911+ GS101_DRCG_EN_OFFSET ,
1912+ GS101_MEMCLK_OFFSET ,
1913+ };
1914+
19031915static const struct samsung_cmu_info apm_cmu_info __initconst = {
19041916 .mux_clks = apm_mux_clks ,
19051917 .nr_mux_clks = ARRAY_SIZE (apm_mux_clks ),
@@ -1912,6 +1924,12 @@ static const struct samsung_cmu_info apm_cmu_info __initconst = {
19121924 .nr_clk_ids = CLKS_NR_APM ,
19131925 .clk_regs = apm_clk_regs ,
19141926 .nr_clk_regs = ARRAY_SIZE (apm_clk_regs ),
1927+ .sysreg_clk_regs = dcrg_memclk_sysreg ,
1928+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_memclk_sysreg ),
1929+ .auto_clock_gate = true,
1930+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
1931+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
1932+ .memclk_offset = GS101_MEMCLK_OFFSET ,
19151933};
19161934
19171935/* ---- CMU_HSI0 ------------------------------------------------------------ */
@@ -2375,7 +2393,14 @@ static const struct samsung_cmu_info hsi0_cmu_info __initconst = {
23752393 .nr_clk_ids = CLKS_NR_HSI0 ,
23762394 .clk_regs = hsi0_clk_regs ,
23772395 .nr_clk_regs = ARRAY_SIZE (hsi0_clk_regs ),
2396+ .sysreg_clk_regs = dcrg_memclk_sysreg ,
2397+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_memclk_sysreg ),
23782398 .clk_name = "bus" ,
2399+ .auto_clock_gate = true,
2400+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
2401+ .option_offset = HSI0_CMU_HSI0_CONTROLLER_OPTION ,
2402+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
2403+ .memclk_offset = GS101_MEMCLK_OFFSET ,
23792404};
23802405
23812406/* ---- CMU_HSI2 ------------------------------------------------------------ */
@@ -2863,7 +2888,14 @@ static const struct samsung_cmu_info hsi2_cmu_info __initconst = {
28632888 .nr_clk_ids = CLKS_NR_HSI2 ,
28642889 .clk_regs = cmu_hsi2_clk_regs ,
28652890 .nr_clk_regs = ARRAY_SIZE (cmu_hsi2_clk_regs ),
2891+ .sysreg_clk_regs = dcrg_memclk_sysreg ,
2892+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_memclk_sysreg ),
28662893 .clk_name = "bus" ,
2894+ .auto_clock_gate = true,
2895+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
2896+ .option_offset = HSI2_CMU_HSI2_CONTROLLER_OPTION ,
2897+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
2898+ .memclk_offset = GS101_MEMCLK_OFFSET ,
28672899};
28682900
28692901/* ---- CMU_MISC ------------------------------------------------------------ */
@@ -3423,7 +3455,14 @@ static const struct samsung_cmu_info misc_cmu_info __initconst = {
34233455 .nr_clk_ids = CLKS_NR_MISC ,
34243456 .clk_regs = misc_clk_regs ,
34253457 .nr_clk_regs = ARRAY_SIZE (misc_clk_regs ),
3458+ .sysreg_clk_regs = dcrg_memclk_sysreg ,
3459+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_memclk_sysreg ),
34263460 .clk_name = "bus" ,
3461+ .auto_clock_gate = true,
3462+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
3463+ .option_offset = MISC_CMU_MISC_CONTROLLER_OPTION ,
3464+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
3465+ .memclk_offset = GS101_MEMCLK_OFFSET ,
34273466};
34283467
34293468static void __init gs101_cmu_misc_init (struct device_node * np )
@@ -4010,6 +4049,10 @@ static const struct samsung_gate_clock peric0_gate_clks[] __initconst = {
40104049 21 , 0 , 0 ),
40114050};
40124051
4052+ static const unsigned long dcrg_sysreg [] __initconst = {
4053+ GS101_DRCG_EN_OFFSET ,
4054+ };
4055+
40134056static const struct samsung_cmu_info peric0_cmu_info __initconst = {
40144057 .mux_clks = peric0_mux_clks ,
40154058 .nr_mux_clks = ARRAY_SIZE (peric0_mux_clks ),
@@ -4020,7 +4063,13 @@ static const struct samsung_cmu_info peric0_cmu_info __initconst = {
40204063 .nr_clk_ids = CLKS_NR_PERIC0 ,
40214064 .clk_regs = peric0_clk_regs ,
40224065 .nr_clk_regs = ARRAY_SIZE (peric0_clk_regs ),
4066+ .sysreg_clk_regs = dcrg_sysreg ,
4067+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_sysreg ),
40234068 .clk_name = "bus" ,
4069+ .auto_clock_gate = true,
4070+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
4071+ .option_offset = PERIC0_CMU_PERIC0_CONTROLLER_OPTION ,
4072+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
40244073};
40254074
40264075/* ---- CMU_PERIC1 ---------------------------------------------------------- */
@@ -4368,7 +4417,13 @@ static const struct samsung_cmu_info peric1_cmu_info __initconst = {
43684417 .nr_clk_ids = CLKS_NR_PERIC1 ,
43694418 .clk_regs = peric1_clk_regs ,
43704419 .nr_clk_regs = ARRAY_SIZE (peric1_clk_regs ),
4420+ .sysreg_clk_regs = dcrg_sysreg ,
4421+ .nr_sysreg_clk_regs = ARRAY_SIZE (dcrg_sysreg ),
43714422 .clk_name = "bus" ,
4423+ .auto_clock_gate = true,
4424+ .gate_dbg_offset = GS101_GATE_DBG_OFFSET ,
4425+ .option_offset = PERIC1_CMU_PERIC1_CONTROLLER_OPTION ,
4426+ .drcg_offset = GS101_DRCG_EN_OFFSET ,
43724427};
43734428
43744429/* ---- platform_driver ----------------------------------------------------- */
0 commit comments