|
20 | 20 | #define CLKS_NR_TOP (GOUT_CLKCMU_PERIS_BUS + 1)
|
21 | 21 | #define CLKS_NR_BUSMC (CLK_GOUT_BUSMC_SPDMA_PCLK + 1)
|
22 | 22 | #define CLKS_NR_CORE (CLK_GOUT_CORE_CMU_CORE_PCLK + 1)
|
| 23 | +#define CLKS_NR_DPUM (CLK_GOUT_DPUM_SYSMMU_D3_CLK + 1) |
23 | 24 | #define CLKS_NR_FSYS0 (CLK_GOUT_FSYS0_PCIE_GEN3B_4L_CLK + 1)
|
24 | 25 | #define CLKS_NR_FSYS1 (CLK_GOUT_FSYS1_USB30_1_ACLK + 1)
|
25 | 26 | #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 = {
|
1076 | 1077 | .clk_name = "dout_clkcmu_core_bus",
|
1077 | 1078 | };
|
1078 | 1079 |
|
| 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 | + |
1079 | 1159 | /* ---- CMU_FSYS0 ---------------------------------------------------------- */
|
1080 | 1160 |
|
1081 | 1161 | /* Register Offset definitions for CMU_FSYS2 (0x17700000) */
|
@@ -2085,6 +2165,9 @@ static const struct of_device_id exynosautov9_cmu_of_match[] = {
|
2085 | 2165 | }, {
|
2086 | 2166 | .compatible = "samsung,exynosautov9-cmu-core",
|
2087 | 2167 | .data = &core_cmu_info,
|
| 2168 | + }, { |
| 2169 | + .compatible = "samsung,exynosautov9-cmu-dpum", |
| 2170 | + .data = &dpum_cmu_info, |
2088 | 2171 | }, {
|
2089 | 2172 | .compatible = "samsung,exynosautov9-cmu-fsys0",
|
2090 | 2173 | .data = &fsys0_cmu_info,
|
|
0 commit comments