diff options
| author | Neil Armstrong <narmstrong@baylibre.com> | 2019-03-04 08:11:29 -0500 |
|---|---|---|
| committer | Neil Armstrong <narmstrong@baylibre.com> | 2019-04-01 04:45:11 -0400 |
| commit | 370294e2667fa1648eb05aab6c4657419634ff83 (patch) | |
| tree | 3311a34764422bfdca967965cc927260e9b85d57 | |
| parent | 77a725ff7a640ab24ff9cf9450e6eae072c49f16 (diff) | |
clk: meson: g12a: add cpu clocks
Add the Amlogic G12A Family CPU Clock tree in read/only for now.
The CPU clock can either use the SYS_PLL for > 1GHz frequencies or
use a couple of div+mux from 1GHz/667MHz/24MHz source with 2 non-glitch
muxes.
Proper DVFS support will come in a second time.
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
Reviewed-by: Martin Blumenstingl <martin.blumenstingl@googlemail.com>
Acked-by: Jerome Brunet <jbrunet@baylibre.com>
[narmstrong: fixed cpu clocks namings]
Link: https://lkml.kernel.org/r/20190304131129.7762-3-narmstrong@baylibre.com
| -rw-r--r-- | drivers/clk/meson/g12a.c | 350 | ||||
| -rw-r--r-- | drivers/clk/meson/g12a.h | 22 |
2 files changed, 371 insertions, 1 deletions
diff --git a/drivers/clk/meson/g12a.c b/drivers/clk/meson/g12a.c index 0e1ce8c03259..10ba8bc4646d 100644 --- a/drivers/clk/meson/g12a.c +++ b/drivers/clk/meson/g12a.c | |||
| @@ -150,6 +150,318 @@ static struct clk_regmap g12a_sys_pll = { | |||
| 150 | }, | 150 | }, |
| 151 | }; | 151 | }; |
| 152 | 152 | ||
| 153 | static struct clk_regmap g12a_sys_pll_div16_en = { | ||
| 154 | .data = &(struct clk_regmap_gate_data){ | ||
| 155 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 156 | .bit_idx = 24, | ||
| 157 | }, | ||
| 158 | .hw.init = &(struct clk_init_data) { | ||
| 159 | .name = "sys_pll_div16_en", | ||
| 160 | .ops = &clk_regmap_gate_ro_ops, | ||
| 161 | .parent_names = (const char *[]){ "sys_pll" }, | ||
| 162 | .num_parents = 1, | ||
| 163 | /* | ||
| 164 | * This clock is used to debug the sys_pll range | ||
| 165 | * Linux should not change it at runtime | ||
| 166 | */ | ||
| 167 | }, | ||
| 168 | }; | ||
| 169 | |||
| 170 | static struct clk_fixed_factor g12a_sys_pll_div16 = { | ||
| 171 | .mult = 1, | ||
| 172 | .div = 16, | ||
| 173 | .hw.init = &(struct clk_init_data){ | ||
| 174 | .name = "sys_pll_div16", | ||
| 175 | .ops = &clk_fixed_factor_ops, | ||
| 176 | .parent_names = (const char *[]){ "sys_pll_div16_en" }, | ||
| 177 | .num_parents = 1, | ||
| 178 | }, | ||
| 179 | }; | ||
| 180 | |||
| 181 | /* Datasheet names this field as "premux0" */ | ||
| 182 | static struct clk_regmap g12a_cpu_clk_premux0 = { | ||
| 183 | .data = &(struct clk_regmap_mux_data){ | ||
| 184 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 185 | .mask = 0x3, | ||
| 186 | .shift = 0, | ||
| 187 | }, | ||
| 188 | .hw.init = &(struct clk_init_data){ | ||
| 189 | .name = "cpu_clk_dyn0_sel", | ||
| 190 | .ops = &clk_regmap_mux_ro_ops, | ||
| 191 | .parent_names = (const char *[]){ IN_PREFIX "xtal", | ||
| 192 | "fclk_div2", | ||
| 193 | "fclk_div3" }, | ||
| 194 | .num_parents = 3, | ||
| 195 | }, | ||
| 196 | }; | ||
| 197 | |||
| 198 | /* Datasheet names this field as "mux0_divn_tcnt" */ | ||
| 199 | static struct clk_regmap g12a_cpu_clk_mux0_div = { | ||
| 200 | .data = &(struct clk_regmap_div_data){ | ||
| 201 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 202 | .shift = 4, | ||
| 203 | .width = 6, | ||
| 204 | }, | ||
| 205 | .hw.init = &(struct clk_init_data){ | ||
| 206 | .name = "cpu_clk_dyn0_div", | ||
| 207 | .ops = &clk_regmap_divider_ro_ops, | ||
| 208 | .parent_names = (const char *[]){ "cpu_clk_dyn0_sel" }, | ||
| 209 | .num_parents = 1, | ||
| 210 | }, | ||
| 211 | }; | ||
| 212 | |||
| 213 | /* Datasheet names this field as "postmux0" */ | ||
| 214 | static struct clk_regmap g12a_cpu_clk_postmux0 = { | ||
| 215 | .data = &(struct clk_regmap_mux_data){ | ||
| 216 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 217 | .mask = 0x1, | ||
| 218 | .shift = 2, | ||
| 219 | }, | ||
| 220 | .hw.init = &(struct clk_init_data){ | ||
| 221 | .name = "cpu_clk_dyn0", | ||
| 222 | .ops = &clk_regmap_mux_ro_ops, | ||
| 223 | .parent_names = (const char *[]){ "cpu_clk_dyn0_sel", | ||
| 224 | "cpu_clk_dyn0_div" }, | ||
| 225 | .num_parents = 2, | ||
| 226 | }, | ||
| 227 | }; | ||
| 228 | |||
| 229 | /* Datasheet names this field as "premux1" */ | ||
| 230 | static struct clk_regmap g12a_cpu_clk_premux1 = { | ||
| 231 | .data = &(struct clk_regmap_mux_data){ | ||
| 232 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 233 | .mask = 0x3, | ||
| 234 | .shift = 16, | ||
| 235 | }, | ||
| 236 | .hw.init = &(struct clk_init_data){ | ||
| 237 | .name = "cpu_clk_dyn1_sel", | ||
| 238 | .ops = &clk_regmap_mux_ro_ops, | ||
| 239 | .parent_names = (const char *[]){ IN_PREFIX "xtal", | ||
| 240 | "fclk_div2", | ||
| 241 | "fclk_div3" }, | ||
| 242 | .num_parents = 3, | ||
| 243 | }, | ||
| 244 | }; | ||
| 245 | |||
| 246 | /* Datasheet names this field as "Mux1_divn_tcnt" */ | ||
| 247 | static struct clk_regmap g12a_cpu_clk_mux1_div = { | ||
| 248 | .data = &(struct clk_regmap_div_data){ | ||
| 249 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 250 | .shift = 20, | ||
| 251 | .width = 6, | ||
| 252 | }, | ||
| 253 | .hw.init = &(struct clk_init_data){ | ||
| 254 | .name = "cpu_clk_dyn1_div", | ||
| 255 | .ops = &clk_regmap_divider_ro_ops, | ||
| 256 | .parent_names = (const char *[]){ "cpu_clk_dyn1_sel" }, | ||
| 257 | .num_parents = 1, | ||
| 258 | }, | ||
| 259 | }; | ||
| 260 | |||
| 261 | /* Datasheet names this field as "postmux1" */ | ||
| 262 | static struct clk_regmap g12a_cpu_clk_postmux1 = { | ||
| 263 | .data = &(struct clk_regmap_mux_data){ | ||
| 264 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 265 | .mask = 0x1, | ||
| 266 | .shift = 18, | ||
| 267 | }, | ||
| 268 | .hw.init = &(struct clk_init_data){ | ||
| 269 | .name = "cpu_clk_dyn1", | ||
| 270 | .ops = &clk_regmap_mux_ro_ops, | ||
| 271 | .parent_names = (const char *[]){ "cpu_clk_dyn1_sel", | ||
| 272 | "cpu_clk_dyn1_div" }, | ||
| 273 | .num_parents = 2, | ||
| 274 | }, | ||
| 275 | }; | ||
| 276 | |||
| 277 | /* Datasheet names this field as "Final_dyn_mux_sel" */ | ||
| 278 | static struct clk_regmap g12a_cpu_clk_dyn = { | ||
| 279 | .data = &(struct clk_regmap_mux_data){ | ||
| 280 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 281 | .mask = 0x1, | ||
| 282 | .shift = 10, | ||
| 283 | }, | ||
| 284 | .hw.init = &(struct clk_init_data){ | ||
| 285 | .name = "cpu_clk_dyn", | ||
| 286 | .ops = &clk_regmap_mux_ro_ops, | ||
| 287 | .parent_names = (const char *[]){ "cpu_clk_dyn0", | ||
| 288 | "cpu_clk_dyn1" }, | ||
| 289 | .num_parents = 2, | ||
| 290 | }, | ||
| 291 | }; | ||
| 292 | |||
| 293 | /* Datasheet names this field as "Final_mux_sel" */ | ||
| 294 | static struct clk_regmap g12a_cpu_clk = { | ||
| 295 | .data = &(struct clk_regmap_mux_data){ | ||
| 296 | .offset = HHI_SYS_CPU_CLK_CNTL0, | ||
| 297 | .mask = 0x1, | ||
| 298 | .shift = 11, | ||
| 299 | }, | ||
| 300 | .hw.init = &(struct clk_init_data){ | ||
| 301 | .name = "cpu_clk", | ||
| 302 | .ops = &clk_regmap_mux_ro_ops, | ||
| 303 | .parent_names = (const char *[]){ "cpu_clk_dyn", | ||
| 304 | "sys_pll" }, | ||
| 305 | .num_parents = 2, | ||
| 306 | }, | ||
| 307 | }; | ||
| 308 | |||
| 309 | static struct clk_regmap g12a_cpu_clk_div16_en = { | ||
| 310 | .data = &(struct clk_regmap_gate_data){ | ||
| 311 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 312 | .bit_idx = 1, | ||
| 313 | }, | ||
| 314 | .hw.init = &(struct clk_init_data) { | ||
| 315 | .name = "cpu_clk_div16_en", | ||
| 316 | .ops = &clk_regmap_gate_ro_ops, | ||
| 317 | .parent_names = (const char *[]){ "cpu_clk" }, | ||
| 318 | .num_parents = 1, | ||
| 319 | /* | ||
| 320 | * This clock is used to debug the cpu_clk range | ||
| 321 | * Linux should not change it at runtime | ||
| 322 | */ | ||
| 323 | }, | ||
| 324 | }; | ||
| 325 | |||
| 326 | static struct clk_fixed_factor g12a_cpu_clk_div16 = { | ||
| 327 | .mult = 1, | ||
| 328 | .div = 16, | ||
| 329 | .hw.init = &(struct clk_init_data){ | ||
| 330 | .name = "cpu_clk_div16", | ||
| 331 | .ops = &clk_fixed_factor_ops, | ||
| 332 | .parent_names = (const char *[]){ "cpu_clk_div16_en" }, | ||
| 333 | .num_parents = 1, | ||
| 334 | }, | ||
| 335 | }; | ||
| 336 | |||
| 337 | static struct clk_regmap g12a_cpu_clk_apb_div = { | ||
| 338 | .data = &(struct clk_regmap_div_data){ | ||
| 339 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 340 | .shift = 3, | ||
| 341 | .width = 3, | ||
| 342 | .flags = CLK_DIVIDER_POWER_OF_TWO, | ||
| 343 | }, | ||
| 344 | .hw.init = &(struct clk_init_data){ | ||
| 345 | .name = "cpu_clk_apb_div", | ||
| 346 | .ops = &clk_regmap_divider_ro_ops, | ||
| 347 | .parent_names = (const char *[]){ "cpu_clk" }, | ||
| 348 | .num_parents = 1, | ||
| 349 | }, | ||
| 350 | }; | ||
| 351 | |||
| 352 | static struct clk_regmap g12a_cpu_clk_apb = { | ||
| 353 | .data = &(struct clk_regmap_gate_data){ | ||
| 354 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 355 | .bit_idx = 1, | ||
| 356 | }, | ||
| 357 | .hw.init = &(struct clk_init_data) { | ||
| 358 | .name = "cpu_clk_apb", | ||
| 359 | .ops = &clk_regmap_gate_ro_ops, | ||
| 360 | .parent_names = (const char *[]){ "cpu_clk_apb_div" }, | ||
| 361 | .num_parents = 1, | ||
| 362 | /* | ||
| 363 | * This clock is set by the ROM monitor code, | ||
| 364 | * Linux should not change it at runtime | ||
| 365 | */ | ||
| 366 | }, | ||
| 367 | }; | ||
| 368 | |||
| 369 | static struct clk_regmap g12a_cpu_clk_atb_div = { | ||
| 370 | .data = &(struct clk_regmap_div_data){ | ||
| 371 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 372 | .shift = 6, | ||
| 373 | .width = 3, | ||
| 374 | .flags = CLK_DIVIDER_POWER_OF_TWO, | ||
| 375 | }, | ||
| 376 | .hw.init = &(struct clk_init_data){ | ||
| 377 | .name = "cpu_clk_atb_div", | ||
| 378 | .ops = &clk_regmap_divider_ro_ops, | ||
| 379 | .parent_names = (const char *[]){ "cpu_clk" }, | ||
| 380 | .num_parents = 1, | ||
| 381 | }, | ||
| 382 | }; | ||
| 383 | |||
| 384 | static struct clk_regmap g12a_cpu_clk_atb = { | ||
| 385 | .data = &(struct clk_regmap_gate_data){ | ||
| 386 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 387 | .bit_idx = 17, | ||
| 388 | }, | ||
| 389 | .hw.init = &(struct clk_init_data) { | ||
| 390 | .name = "cpu_clk_atb", | ||
| 391 | .ops = &clk_regmap_gate_ro_ops, | ||
| 392 | .parent_names = (const char *[]){ "cpu_clk_atb_div" }, | ||
| 393 | .num_parents = 1, | ||
| 394 | /* | ||
| 395 | * This clock is set by the ROM monitor code, | ||
| 396 | * Linux should not change it at runtime | ||
| 397 | */ | ||
| 398 | }, | ||
| 399 | }; | ||
| 400 | |||
| 401 | static struct clk_regmap g12a_cpu_clk_axi_div = { | ||
| 402 | .data = &(struct clk_regmap_div_data){ | ||
| 403 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 404 | .shift = 9, | ||
| 405 | .width = 3, | ||
| 406 | .flags = CLK_DIVIDER_POWER_OF_TWO, | ||
| 407 | }, | ||
| 408 | .hw.init = &(struct clk_init_data){ | ||
| 409 | .name = "cpu_clk_axi_div", | ||
| 410 | .ops = &clk_regmap_divider_ro_ops, | ||
| 411 | .parent_names = (const char *[]){ "cpu_clk" }, | ||
| 412 | .num_parents = 1, | ||
| 413 | }, | ||
| 414 | }; | ||
| 415 | |||
| 416 | static struct clk_regmap g12a_cpu_clk_axi = { | ||
| 417 | .data = &(struct clk_regmap_gate_data){ | ||
| 418 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 419 | .bit_idx = 18, | ||
| 420 | }, | ||
| 421 | .hw.init = &(struct clk_init_data) { | ||
| 422 | .name = "cpu_clk_axi", | ||
| 423 | .ops = &clk_regmap_gate_ro_ops, | ||
| 424 | .parent_names = (const char *[]){ "cpu_clk_axi_div" }, | ||
| 425 | .num_parents = 1, | ||
| 426 | /* | ||
| 427 | * This clock is set by the ROM monitor code, | ||
| 428 | * Linux should not change it at runtime | ||
| 429 | */ | ||
| 430 | }, | ||
| 431 | }; | ||
| 432 | |||
| 433 | static struct clk_regmap g12a_cpu_clk_trace_div = { | ||
| 434 | .data = &(struct clk_regmap_div_data){ | ||
| 435 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 436 | .shift = 20, | ||
| 437 | .width = 3, | ||
| 438 | .flags = CLK_DIVIDER_POWER_OF_TWO, | ||
| 439 | }, | ||
| 440 | .hw.init = &(struct clk_init_data){ | ||
| 441 | .name = "cpu_clk_trace_div", | ||
| 442 | .ops = &clk_regmap_divider_ro_ops, | ||
| 443 | .parent_names = (const char *[]){ "cpu_clk" }, | ||
| 444 | .num_parents = 1, | ||
| 445 | }, | ||
| 446 | }; | ||
| 447 | |||
| 448 | static struct clk_regmap g12a_cpu_clk_trace = { | ||
| 449 | .data = &(struct clk_regmap_gate_data){ | ||
| 450 | .offset = HHI_SYS_CPU_CLK_CNTL1, | ||
| 451 | .bit_idx = 23, | ||
| 452 | }, | ||
| 453 | .hw.init = &(struct clk_init_data) { | ||
| 454 | .name = "cpu_clk_trace", | ||
| 455 | .ops = &clk_regmap_gate_ro_ops, | ||
| 456 | .parent_names = (const char *[]){ "cpu_clk_trace_div" }, | ||
| 457 | .num_parents = 1, | ||
| 458 | /* | ||
| 459 | * This clock is set by the ROM monitor code, | ||
| 460 | * Linux should not change it at runtime | ||
| 461 | */ | ||
| 462 | }, | ||
| 463 | }; | ||
| 464 | |||
| 153 | static const struct pll_mult_range g12a_gp0_pll_mult_range = { | 465 | static const struct pll_mult_range g12a_gp0_pll_mult_range = { |
| 154 | .min = 55, | 466 | .min = 55, |
| 155 | .max = 255, | 467 | .max = 255, |
| @@ -2167,6 +2479,26 @@ static struct clk_hw_onecell_data g12a_hw_onecell_data = { | |||
| 2167 | [CLKID_MALI] = &g12a_mali.hw, | 2479 | [CLKID_MALI] = &g12a_mali.hw, |
| 2168 | [CLKID_MPLL_5OM_DIV] = &g12a_mpll_50m_div.hw, | 2480 | [CLKID_MPLL_5OM_DIV] = &g12a_mpll_50m_div.hw, |
| 2169 | [CLKID_MPLL_5OM] = &g12a_mpll_50m.hw, | 2481 | [CLKID_MPLL_5OM] = &g12a_mpll_50m.hw, |
| 2482 | [CLKID_SYS_PLL_DIV16_EN] = &g12a_sys_pll_div16_en.hw, | ||
| 2483 | [CLKID_SYS_PLL_DIV16] = &g12a_sys_pll_div16.hw, | ||
| 2484 | [CLKID_CPU_CLK_DYN0_SEL] = &g12a_cpu_clk_premux0.hw, | ||
| 2485 | [CLKID_CPU_CLK_DYN0_DIV] = &g12a_cpu_clk_mux0_div.hw, | ||
| 2486 | [CLKID_CPU_CLK_DYN0] = &g12a_cpu_clk_postmux0.hw, | ||
| 2487 | [CLKID_CPU_CLK_DYN1_SEL] = &g12a_cpu_clk_premux1.hw, | ||
| 2488 | [CLKID_CPU_CLK_DYN1_DIV] = &g12a_cpu_clk_mux1_div.hw, | ||
| 2489 | [CLKID_CPU_CLK_DYN1] = &g12a_cpu_clk_postmux1.hw, | ||
| 2490 | [CLKID_CPU_CLK_DYN] = &g12a_cpu_clk_dyn.hw, | ||
| 2491 | [CLKID_CPU_CLK] = &g12a_cpu_clk.hw, | ||
| 2492 | [CLKID_CPU_CLK_DIV16_EN] = &g12a_cpu_clk_div16_en.hw, | ||
| 2493 | [CLKID_CPU_CLK_DIV16] = &g12a_cpu_clk_div16.hw, | ||
| 2494 | [CLKID_CPU_CLK_APB_DIV] = &g12a_cpu_clk_apb_div.hw, | ||
| 2495 | [CLKID_CPU_CLK_APB] = &g12a_cpu_clk_apb.hw, | ||
| 2496 | [CLKID_CPU_CLK_ATB_DIV] = &g12a_cpu_clk_atb_div.hw, | ||
| 2497 | [CLKID_CPU_CLK_ATB] = &g12a_cpu_clk_atb.hw, | ||
| 2498 | [CLKID_CPU_CLK_AXI_DIV] = &g12a_cpu_clk_axi_div.hw, | ||
| 2499 | [CLKID_CPU_CLK_AXI] = &g12a_cpu_clk_axi.hw, | ||
| 2500 | [CLKID_CPU_CLK_TRACE_DIV] = &g12a_cpu_clk_trace_div.hw, | ||
| 2501 | [CLKID_CPU_CLK_TRACE] = &g12a_cpu_clk_trace.hw, | ||
| 2170 | [NR_CLKS] = NULL, | 2502 | [NR_CLKS] = NULL, |
| 2171 | }, | 2503 | }, |
| 2172 | .num = NR_CLKS, | 2504 | .num = NR_CLKS, |
| @@ -2335,6 +2667,24 @@ static struct clk_regmap *const g12a_clk_regmaps[] = { | |||
| 2335 | &g12a_mali_1, | 2667 | &g12a_mali_1, |
| 2336 | &g12a_mali, | 2668 | &g12a_mali, |
| 2337 | &g12a_mpll_50m, | 2669 | &g12a_mpll_50m, |
| 2670 | &g12a_sys_pll_div16_en, | ||
| 2671 | &g12a_cpu_clk_premux0, | ||
| 2672 | &g12a_cpu_clk_mux0_div, | ||
| 2673 | &g12a_cpu_clk_postmux0, | ||
| 2674 | &g12a_cpu_clk_premux1, | ||
| 2675 | &g12a_cpu_clk_mux1_div, | ||
| 2676 | &g12a_cpu_clk_postmux1, | ||
| 2677 | &g12a_cpu_clk_dyn, | ||
| 2678 | &g12a_cpu_clk, | ||
| 2679 | &g12a_cpu_clk_div16_en, | ||
| 2680 | &g12a_cpu_clk_apb_div, | ||
| 2681 | &g12a_cpu_clk_apb, | ||
| 2682 | &g12a_cpu_clk_atb_div, | ||
| 2683 | &g12a_cpu_clk_atb, | ||
| 2684 | &g12a_cpu_clk_axi_div, | ||
| 2685 | &g12a_cpu_clk_axi, | ||
| 2686 | &g12a_cpu_clk_trace_div, | ||
| 2687 | &g12a_cpu_clk_trace, | ||
| 2338 | }; | 2688 | }; |
| 2339 | 2689 | ||
| 2340 | static const struct meson_eeclkc_data g12a_clkc_data = { | 2690 | static const struct meson_eeclkc_data g12a_clkc_data = { |
diff --git a/drivers/clk/meson/g12a.h b/drivers/clk/meson/g12a.h index f399dfe1401c..70aa469ca1cf 100644 --- a/drivers/clk/meson/g12a.h +++ b/drivers/clk/meson/g12a.h | |||
| @@ -50,6 +50,7 @@ | |||
| 50 | #define HHI_GCLK_MPEG2 0x148 | 50 | #define HHI_GCLK_MPEG2 0x148 |
| 51 | #define HHI_GCLK_OTHER 0x150 | 51 | #define HHI_GCLK_OTHER 0x150 |
| 52 | #define HHI_GCLK_OTHER2 0x154 | 52 | #define HHI_GCLK_OTHER2 0x154 |
| 53 | #define HHI_SYS_CPU_CLK_CNTL1 0x15c | ||
| 53 | #define HHI_VID_CLK_DIV 0x164 | 54 | #define HHI_VID_CLK_DIV 0x164 |
| 54 | #define HHI_MPEG_CLK_CNTL 0x174 | 55 | #define HHI_MPEG_CLK_CNTL 0x174 |
| 55 | #define HHI_AUD_CLK_CNTL 0x178 | 56 | #define HHI_AUD_CLK_CNTL 0x178 |
| @@ -166,8 +167,27 @@ | |||
| 166 | #define CLKID_MALI_0_DIV 170 | 167 | #define CLKID_MALI_0_DIV 170 |
| 167 | #define CLKID_MALI_1_DIV 173 | 168 | #define CLKID_MALI_1_DIV 173 |
| 168 | #define CLKID_MPLL_5OM_DIV 176 | 169 | #define CLKID_MPLL_5OM_DIV 176 |
| 170 | #define CLKID_SYS_PLL_DIV16_EN 178 | ||
| 171 | #define CLKID_SYS_PLL_DIV16 179 | ||
| 172 | #define CLKID_CPU_CLK_DYN0_SEL 180 | ||
| 173 | #define CLKID_CPU_CLK_DYN0_DIV 181 | ||
| 174 | #define CLKID_CPU_CLK_DYN0 182 | ||
| 175 | #define CLKID_CPU_CLK_DYN1_SEL 183 | ||
| 176 | #define CLKID_CPU_CLK_DYN1_DIV 184 | ||
| 177 | #define CLKID_CPU_CLK_DYN1 185 | ||
| 178 | #define CLKID_CPU_CLK_DYN 186 | ||
| 179 | #define CLKID_CPU_CLK_DIV16_EN 188 | ||
| 180 | #define CLKID_CPU_CLK_DIV16 189 | ||
| 181 | #define CLKID_CPU_CLK_APB_DIV 190 | ||
| 182 | #define CLKID_CPU_CLK_APB 191 | ||
| 183 | #define CLKID_CPU_CLK_ATB_DIV 192 | ||
| 184 | #define CLKID_CPU_CLK_ATB 193 | ||
| 185 | #define CLKID_CPU_CLK_AXI_DIV 194 | ||
| 186 | #define CLKID_CPU_CLK_AXI 195 | ||
| 187 | #define CLKID_CPU_CLK_TRACE_DIV 196 | ||
| 188 | #define CLKID_CPU_CLK_TRACE 197 | ||
| 169 | 189 | ||
| 170 | #define NR_CLKS 178 | 190 | #define NR_CLKS 198 |
| 171 | 191 | ||
| 172 | /* include the CLKIDs that have been made part of the DT binding */ | 192 | /* include the CLKIDs that have been made part of the DT binding */ |
| 173 | #include <dt-bindings/clock/g12a-clkc.h> | 193 | #include <dt-bindings/clock/g12a-clkc.h> |
