diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2015-08-06 06:37:48 -0400 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2015-09-16 18:22:44 -0400 |
commit | 8108b23ca7270ff2c2b551f447e57436d534d23a (patch) | |
tree | 2b945e78666e35370178d65bf5ae4589eb5b5009 | |
parent | 340029efdc83c7ba682dae731feff0d72a0ffd66 (diff) |
clk: qcom: gdsc: Add GDSCs in msm8974 MMCC
Add the GDSC instances that exist as part of msm8974 MMCC block
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
-rw-r--r-- | drivers/clk/qcom/Kconfig | 1 | ||||
-rw-r--r-- | drivers/clk/qcom/mmcc-msm8974.c | 72 | ||||
-rw-r--r-- | include/dt-bindings/clock/qcom,mmcc-msm8974.h | 8 |
3 files changed, 81 insertions, 0 deletions
diff --git a/drivers/clk/qcom/Kconfig b/drivers/clk/qcom/Kconfig index a6fcb1ddb567..edab1724537b 100644 --- a/drivers/clk/qcom/Kconfig +++ b/drivers/clk/qcom/Kconfig | |||
@@ -98,6 +98,7 @@ config MSM_GCC_8974 | |||
98 | config MSM_MMCC_8974 | 98 | config MSM_MMCC_8974 |
99 | tristate "MSM8974 Multimedia Clock Controller" | 99 | tristate "MSM8974 Multimedia Clock Controller" |
100 | select MSM_GCC_8974 | 100 | select MSM_GCC_8974 |
101 | select QCOM_GDSC | ||
101 | depends on COMMON_CLK_QCOM | 102 | depends on COMMON_CLK_QCOM |
102 | help | 103 | help |
103 | Support for the multimedia clock controller on msm8974 devices. | 104 | Support for the multimedia clock controller on msm8974 devices. |
diff --git a/drivers/clk/qcom/mmcc-msm8974.c b/drivers/clk/qcom/mmcc-msm8974.c index 197700e3b2c9..fe8320dc41db 100644 --- a/drivers/clk/qcom/mmcc-msm8974.c +++ b/drivers/clk/qcom/mmcc-msm8974.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include "clk-rcg.h" | 31 | #include "clk-rcg.h" |
32 | #include "clk-branch.h" | 32 | #include "clk-branch.h" |
33 | #include "reset.h" | 33 | #include "reset.h" |
34 | #include "gdsc.h" | ||
34 | 35 | ||
35 | enum { | 36 | enum { |
36 | P_XO, | 37 | P_XO, |
@@ -2342,6 +2343,66 @@ static struct pll_config mmpll3_config = { | |||
2342 | .aux_output_mask = BIT(1), | 2343 | .aux_output_mask = BIT(1), |
2343 | }; | 2344 | }; |
2344 | 2345 | ||
2346 | static struct gdsc venus0_gdsc = { | ||
2347 | .gdscr = 0x1024, | ||
2348 | .cxcs = (unsigned int []){ 0x1028 }, | ||
2349 | .cxc_count = 1, | ||
2350 | .resets = (unsigned int []){ VENUS0_RESET }, | ||
2351 | .reset_count = 1, | ||
2352 | .pd = { | ||
2353 | .name = "venus0", | ||
2354 | }, | ||
2355 | .pwrsts = PWRSTS_ON, | ||
2356 | }; | ||
2357 | |||
2358 | static struct gdsc mdss_gdsc = { | ||
2359 | .gdscr = 0x2304, | ||
2360 | .cxcs = (unsigned int []){ 0x231c, 0x2320 }, | ||
2361 | .cxc_count = 2, | ||
2362 | .pd = { | ||
2363 | .name = "mdss", | ||
2364 | }, | ||
2365 | .pwrsts = PWRSTS_RET_ON, | ||
2366 | }; | ||
2367 | |||
2368 | static struct gdsc camss_jpeg_gdsc = { | ||
2369 | .gdscr = 0x35a4, | ||
2370 | .cxcs = (unsigned int []){ 0x35a8, 0x35ac, 0x35b0 }, | ||
2371 | .cxc_count = 3, | ||
2372 | .pd = { | ||
2373 | .name = "camss_jpeg", | ||
2374 | }, | ||
2375 | .pwrsts = PWRSTS_OFF_ON, | ||
2376 | }; | ||
2377 | |||
2378 | static struct gdsc camss_vfe_gdsc = { | ||
2379 | .gdscr = 0x36a4, | ||
2380 | .cxcs = (unsigned int []){ 0x36a8, 0x36ac, 0x3704, 0x3714, 0x36b0 }, | ||
2381 | .cxc_count = 5, | ||
2382 | .pd = { | ||
2383 | .name = "camss_vfe", | ||
2384 | }, | ||
2385 | .pwrsts = PWRSTS_OFF_ON, | ||
2386 | }; | ||
2387 | |||
2388 | static struct gdsc oxili_gdsc = { | ||
2389 | .gdscr = 0x4024, | ||
2390 | .cxcs = (unsigned int []){ 0x4028 }, | ||
2391 | .cxc_count = 1, | ||
2392 | .pd = { | ||
2393 | .name = "oxili", | ||
2394 | }, | ||
2395 | .pwrsts = PWRSTS_OFF_ON, | ||
2396 | }; | ||
2397 | |||
2398 | static struct gdsc oxilicx_gdsc = { | ||
2399 | .gdscr = 0x4034, | ||
2400 | .pd = { | ||
2401 | .name = "oxilicx", | ||
2402 | }, | ||
2403 | .pwrsts = PWRSTS_OFF_ON, | ||
2404 | }; | ||
2405 | |||
2345 | static struct clk_regmap *mmcc_msm8974_clocks[] = { | 2406 | static struct clk_regmap *mmcc_msm8974_clocks[] = { |
2346 | [MMSS_AHB_CLK_SRC] = &mmss_ahb_clk_src.clkr, | 2407 | [MMSS_AHB_CLK_SRC] = &mmss_ahb_clk_src.clkr, |
2347 | [MMSS_AXI_CLK_SRC] = &mmss_axi_clk_src.clkr, | 2408 | [MMSS_AXI_CLK_SRC] = &mmss_axi_clk_src.clkr, |
@@ -2518,6 +2579,15 @@ static const struct qcom_reset_map mmcc_msm8974_resets[] = { | |||
2518 | [OCMEMNOC_RESET] = { 0x50b0 }, | 2579 | [OCMEMNOC_RESET] = { 0x50b0 }, |
2519 | }; | 2580 | }; |
2520 | 2581 | ||
2582 | static struct gdsc *mmcc_msm8974_gdscs[] = { | ||
2583 | [VENUS0_GDSC] = &venus0_gdsc, | ||
2584 | [MDSS_GDSC] = &mdss_gdsc, | ||
2585 | [CAMSS_JPEG_GDSC] = &camss_jpeg_gdsc, | ||
2586 | [CAMSS_VFE_GDSC] = &camss_vfe_gdsc, | ||
2587 | [OXILI_GDSC] = &oxili_gdsc, | ||
2588 | [OXILICX_GDSC] = &oxilicx_gdsc, | ||
2589 | }; | ||
2590 | |||
2521 | static const struct regmap_config mmcc_msm8974_regmap_config = { | 2591 | static const struct regmap_config mmcc_msm8974_regmap_config = { |
2522 | .reg_bits = 32, | 2592 | .reg_bits = 32, |
2523 | .reg_stride = 4, | 2593 | .reg_stride = 4, |
@@ -2532,6 +2602,8 @@ static const struct qcom_cc_desc mmcc_msm8974_desc = { | |||
2532 | .num_clks = ARRAY_SIZE(mmcc_msm8974_clocks), | 2602 | .num_clks = ARRAY_SIZE(mmcc_msm8974_clocks), |
2533 | .resets = mmcc_msm8974_resets, | 2603 | .resets = mmcc_msm8974_resets, |
2534 | .num_resets = ARRAY_SIZE(mmcc_msm8974_resets), | 2604 | .num_resets = ARRAY_SIZE(mmcc_msm8974_resets), |
2605 | .gdscs = mmcc_msm8974_gdscs, | ||
2606 | .num_gdscs = ARRAY_SIZE(mmcc_msm8974_gdscs), | ||
2535 | }; | 2607 | }; |
2536 | 2608 | ||
2537 | static const struct of_device_id mmcc_msm8974_match_table[] = { | 2609 | static const struct of_device_id mmcc_msm8974_match_table[] = { |
diff --git a/include/dt-bindings/clock/qcom,mmcc-msm8974.h b/include/dt-bindings/clock/qcom,mmcc-msm8974.h index 032ed87ef0f3..28651e54c9ae 100644 --- a/include/dt-bindings/clock/qcom,mmcc-msm8974.h +++ b/include/dt-bindings/clock/qcom,mmcc-msm8974.h | |||
@@ -158,4 +158,12 @@ | |||
158 | #define SPDM_RM_AXI 141 | 158 | #define SPDM_RM_AXI 141 |
159 | #define SPDM_RM_OCMEMNOC 142 | 159 | #define SPDM_RM_OCMEMNOC 142 |
160 | 160 | ||
161 | /* gdscs */ | ||
162 | #define VENUS0_GDSC 0 | ||
163 | #define MDSS_GDSC 1 | ||
164 | #define CAMSS_JPEG_GDSC 2 | ||
165 | #define CAMSS_VFE_GDSC 3 | ||
166 | #define OXILI_GDSC 4 | ||
167 | #define OXILICX_GDSC 5 | ||
168 | |||
161 | #endif | 169 | #endif |