Skip to content

Commit ae07389

Browse files
KwangSonkrzk
authored andcommitted
clk: samsung: exynosautov9: add dpum clock support
Add dpum clock for exynosautov9. Signed-off-by: Kwanghoon Son <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Krzysztof Kozlowski <[email protected]>
1 parent 2a93f5f commit ae07389

File tree

1 file changed

+83
-0
lines changed

1 file changed

+83
-0
lines changed

drivers/clk/samsung/clk-exynosautov9.c

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#define CLKS_NR_TOP (GOUT_CLKCMU_PERIS_BUS + 1)
2121
#define CLKS_NR_BUSMC (CLK_GOUT_BUSMC_SPDMA_PCLK + 1)
2222
#define CLKS_NR_CORE (CLK_GOUT_CORE_CMU_CORE_PCLK + 1)
23+
#define CLKS_NR_DPUM (CLK_GOUT_DPUM_SYSMMU_D3_CLK + 1)
2324
#define CLKS_NR_FSYS0 (CLK_GOUT_FSYS0_PCIE_GEN3B_4L_CLK + 1)
2425
#define CLKS_NR_FSYS1 (CLK_GOUT_FSYS1_USB30_1_ACLK + 1)
2526
#define CLKS_NR_FSYS2 (CLK_GOUT_FSYS2_UFS_EMBD1_UNIPRO + 1)
@@ -1076,6 +1077,85 @@ static const struct samsung_cmu_info core_cmu_info __initconst = {
10761077
.clk_name = "dout_clkcmu_core_bus",
10771078
};
10781079

1080+
/* ---- CMU_DPUM ---------------------------------------------------------- */
1081+
1082+
/* Register Offset definitions for CMU_DPUM (0x18c00000) */
1083+
#define PLL_CON0_MUX_CLKCMU_DPUM_BUS_USER 0x0600
1084+
#define CLK_CON_DIV_DIV_CLK_DPUM_BUSP 0x1800
1085+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DECON 0x202c
1086+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DMA 0x2030
1087+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DPP 0x2034
1088+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D0_DPUM_IPCLKPORT_CLK_S1 0x207c
1089+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D1_DPUM_IPCLKPORT_CLK_S1 0x2084
1090+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D2_DPUM_IPCLKPORT_CLK_S1 0x208c
1091+
#define CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D3_DPUM_IPCLKPORT_CLK_S1 0x2094
1092+
1093+
static const unsigned long dpum_clk_regs[] __initconst = {
1094+
PLL_CON0_MUX_CLKCMU_DPUM_BUS_USER,
1095+
CLK_CON_DIV_DIV_CLK_DPUM_BUSP,
1096+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DECON,
1097+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DMA,
1098+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DPP,
1099+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D0_DPUM_IPCLKPORT_CLK_S1,
1100+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D1_DPUM_IPCLKPORT_CLK_S1,
1101+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D2_DPUM_IPCLKPORT_CLK_S1,
1102+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D3_DPUM_IPCLKPORT_CLK_S1,
1103+
};
1104+
1105+
PNAME(mout_dpum_bus_user_p) = { "oscclk", "dout_clkcmu_dpum_bus" };
1106+
1107+
static const struct samsung_mux_clock dpum_mux_clks[] __initconst = {
1108+
MUX(CLK_MOUT_DPUM_BUS_USER, "mout_dpum_bus_user",
1109+
mout_dpum_bus_user_p, PLL_CON0_MUX_CLKCMU_DPUM_BUS_USER, 4, 1),
1110+
};
1111+
1112+
static const struct samsung_div_clock dpum_div_clks[] __initconst = {
1113+
DIV(CLK_DOUT_DPUM_BUSP, "dout_dpum_busp", "mout_dpum_bus_user",
1114+
CLK_CON_DIV_DIV_CLK_DPUM_BUSP, 0, 3),
1115+
};
1116+
1117+
static const struct samsung_gate_clock dpum_gate_clks[] __initconst = {
1118+
GATE(CLK_GOUT_DPUM_ACLK_DECON, "gout_dpum_decon_aclk",
1119+
"mout_dpum_bus_user",
1120+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DECON, 21,
1121+
0, 0),
1122+
GATE(CLK_GOUT_DPUM_ACLK_DMA, "gout_dpum_dma_aclk", "mout_dpum_bus_user",
1123+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DMA, 21,
1124+
0, 0),
1125+
GATE(CLK_GOUT_DPUM_ACLK_DPP, "gout_dpum_dpp_aclk", "mout_dpum_bus_user",
1126+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_DPUM_IPCLKPORT_ACLK_DPP, 21,
1127+
0, 0),
1128+
GATE(CLK_GOUT_DPUM_SYSMMU_D0_CLK, "gout_dpum_sysmmu_d0_clk",
1129+
"mout_dpum_bus_user",
1130+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D0_DPUM_IPCLKPORT_CLK_S1, 21,
1131+
0, 0),
1132+
GATE(CLK_GOUT_DPUM_SYSMMU_D1_CLK, "gout_dpum_sysmmu_d1_clk",
1133+
"mout_dpum_bus_user",
1134+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D1_DPUM_IPCLKPORT_CLK_S1, 21,
1135+
0, 0),
1136+
GATE(CLK_GOUT_DPUM_SYSMMU_D2_CLK, "gout_dpum_sysmmu_d2_clk",
1137+
"mout_dpum_bus_user",
1138+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D2_DPUM_IPCLKPORT_CLK_S1, 21,
1139+
0, 0),
1140+
GATE(CLK_GOUT_DPUM_SYSMMU_D3_CLK, "gout_dpum_sysmmu_d3_clk",
1141+
"mout_dpum_bus_user",
1142+
CLK_CON_GAT_GOUT_BLK_DPUM_UID_SYSMMU_D3_DPUM_IPCLKPORT_CLK_S1, 21,
1143+
0, 0),
1144+
};
1145+
1146+
static const struct samsung_cmu_info dpum_cmu_info __initconst = {
1147+
.mux_clks = dpum_mux_clks,
1148+
.nr_mux_clks = ARRAY_SIZE(dpum_mux_clks),
1149+
.div_clks = dpum_div_clks,
1150+
.nr_div_clks = ARRAY_SIZE(dpum_div_clks),
1151+
.gate_clks = dpum_gate_clks,
1152+
.nr_gate_clks = ARRAY_SIZE(dpum_gate_clks),
1153+
.nr_clk_ids = CLKS_NR_DPUM,
1154+
.clk_regs = dpum_clk_regs,
1155+
.nr_clk_regs = ARRAY_SIZE(dpum_clk_regs),
1156+
.clk_name = "bus",
1157+
};
1158+
10791159
/* ---- CMU_FSYS0 ---------------------------------------------------------- */
10801160

10811161
/* Register Offset definitions for CMU_FSYS2 (0x17700000) */
@@ -2085,6 +2165,9 @@ static const struct of_device_id exynosautov9_cmu_of_match[] = {
20852165
}, {
20862166
.compatible = "samsung,exynosautov9-cmu-core",
20872167
.data = &core_cmu_info,
2168+
}, {
2169+
.compatible = "samsung,exynosautov9-cmu-dpum",
2170+
.data = &dpum_cmu_info,
20882171
}, {
20892172
.compatible = "samsung,exynosautov9-cmu-fsys0",
20902173
.data = &fsys0_cmu_info,

0 commit comments

Comments
 (0)