diff options
author | Rajendra Nayak <rnayak@codeaurora.org> | 2015-12-01 11:12:15 -0500 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2016-02-11 19:34:03 -0500 |
commit | 7e824d507909e3683699dfc0bba14a5c971984f9 (patch) | |
tree | 4c44343fa43fc103688dc415955b1f8c78bbc3a0 | |
parent | 52111672f7916537c8f50857088aaa4e709324e7 (diff) |
clk: qcom: gdsc: Add mmcc gdscs for msm8996 family
Add all gdsc data which are part of mmcc on msm8996 family
Signed-off-by: Rajendra Nayak <rnayak@codeaurora.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
-rw-r--r-- | drivers/clk/qcom/mmcc-msm8996.c | 157 | ||||
-rw-r--r-- | include/dt-bindings/clock/qcom,mmcc-msm8996.h | 17 |
2 files changed, 174 insertions, 0 deletions
diff --git a/drivers/clk/qcom/mmcc-msm8996.c b/drivers/clk/qcom/mmcc-msm8996.c index 064f3eaa39d0..6df7ff36b416 100644 --- a/drivers/clk/qcom/mmcc-msm8996.c +++ b/drivers/clk/qcom/mmcc-msm8996.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include "clk-rcg.h" | 32 | #include "clk-rcg.h" |
33 | #include "clk-branch.h" | 33 | #include "clk-branch.h" |
34 | #include "reset.h" | 34 | #include "reset.h" |
35 | #include "gdsc.h" | ||
35 | 36 | ||
36 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } | 37 | #define F(f, s, h, m, n) { (f), (s), (2 * (h) - 1), (m), (n) } |
37 | 38 | ||
@@ -2917,6 +2918,144 @@ static struct clk_hw *mmcc_msm8996_hws[] = { | |||
2917 | &gpll0_div.hw, | 2918 | &gpll0_div.hw, |
2918 | }; | 2919 | }; |
2919 | 2920 | ||
2921 | static struct gdsc mmagic_video_gdsc = { | ||
2922 | .gdscr = 0x119c, | ||
2923 | .gds_hw_ctrl = 0x120c, | ||
2924 | .pd = { | ||
2925 | .name = "mmagic_video", | ||
2926 | }, | ||
2927 | .pwrsts = PWRSTS_OFF_ON, | ||
2928 | .flags = VOTABLE, | ||
2929 | }; | ||
2930 | |||
2931 | static struct gdsc mmagic_mdss_gdsc = { | ||
2932 | .gdscr = 0x247c, | ||
2933 | .gds_hw_ctrl = 0x2480, | ||
2934 | .pd = { | ||
2935 | .name = "mmagic_mdss", | ||
2936 | }, | ||
2937 | .pwrsts = PWRSTS_OFF_ON, | ||
2938 | .flags = VOTABLE, | ||
2939 | }; | ||
2940 | |||
2941 | static struct gdsc mmagic_camss_gdsc = { | ||
2942 | .gdscr = 0x3c4c, | ||
2943 | .gds_hw_ctrl = 0x3c50, | ||
2944 | .pd = { | ||
2945 | .name = "mmagic_camss", | ||
2946 | }, | ||
2947 | .pwrsts = PWRSTS_OFF_ON, | ||
2948 | .flags = VOTABLE, | ||
2949 | }; | ||
2950 | |||
2951 | static struct gdsc venus_gdsc = { | ||
2952 | .gdscr = 0x1024, | ||
2953 | .cxcs = (unsigned int []){ 0x1028, 0x1034, 0x1038 }, | ||
2954 | .cxc_count = 3, | ||
2955 | .pd = { | ||
2956 | .name = "venus", | ||
2957 | }, | ||
2958 | .parent = &mmagic_video_gdsc.pd, | ||
2959 | .pwrsts = PWRSTS_OFF_ON, | ||
2960 | }; | ||
2961 | |||
2962 | static struct gdsc venus_core0_gdsc = { | ||
2963 | .gdscr = 0x1040, | ||
2964 | .cxcs = (unsigned int []){ 0x1048 }, | ||
2965 | .cxc_count = 1, | ||
2966 | .pd = { | ||
2967 | .name = "venus_core0", | ||
2968 | }, | ||
2969 | .pwrsts = PWRSTS_OFF_ON, | ||
2970 | }; | ||
2971 | |||
2972 | static struct gdsc venus_core1_gdsc = { | ||
2973 | .gdscr = 0x1044, | ||
2974 | .cxcs = (unsigned int []){ 0x104c }, | ||
2975 | .cxc_count = 1, | ||
2976 | .pd = { | ||
2977 | .name = "venus_core1", | ||
2978 | }, | ||
2979 | .pwrsts = PWRSTS_OFF_ON, | ||
2980 | }; | ||
2981 | |||
2982 | static struct gdsc camss_gdsc = { | ||
2983 | .gdscr = 0x34a0, | ||
2984 | .cxcs = (unsigned int []){ 0x36bc, 0x36c4 }, | ||
2985 | .cxc_count = 2, | ||
2986 | .pd = { | ||
2987 | .name = "camss", | ||
2988 | }, | ||
2989 | .parent = &mmagic_camss_gdsc.pd, | ||
2990 | .pwrsts = PWRSTS_OFF_ON, | ||
2991 | }; | ||
2992 | |||
2993 | static struct gdsc vfe0_gdsc = { | ||
2994 | .gdscr = 0x3664, | ||
2995 | .cxcs = (unsigned int []){ 0x36a8 }, | ||
2996 | .cxc_count = 1, | ||
2997 | .pd = { | ||
2998 | .name = "vfe0", | ||
2999 | }, | ||
3000 | .parent = &camss_gdsc.pd, | ||
3001 | .pwrsts = PWRSTS_OFF_ON, | ||
3002 | }; | ||
3003 | |||
3004 | static struct gdsc vfe1_gdsc = { | ||
3005 | .gdscr = 0x3674, | ||
3006 | .cxcs = (unsigned int []){ 0x36ac }, | ||
3007 | .cxc_count = 1, | ||
3008 | .pd = { | ||
3009 | .name = "vfe0", | ||
3010 | }, | ||
3011 | .parent = &camss_gdsc.pd, | ||
3012 | .pwrsts = PWRSTS_OFF_ON, | ||
3013 | }; | ||
3014 | |||
3015 | static struct gdsc jpeg_gdsc = { | ||
3016 | .gdscr = 0x35a4, | ||
3017 | .cxcs = (unsigned int []){ 0x35a8, 0x35b0, 0x35c0, 0x35b8 }, | ||
3018 | .cxc_count = 4, | ||
3019 | .pd = { | ||
3020 | .name = "jpeg", | ||
3021 | }, | ||
3022 | .parent = &camss_gdsc.pd, | ||
3023 | .pwrsts = PWRSTS_OFF_ON, | ||
3024 | }; | ||
3025 | |||
3026 | static struct gdsc cpp_gdsc = { | ||
3027 | .gdscr = 0x36d4, | ||
3028 | .cxcs = (unsigned int []){ 0x36b0 }, | ||
3029 | .cxc_count = 1, | ||
3030 | .pd = { | ||
3031 | .name = "cpp", | ||
3032 | }, | ||
3033 | .parent = &camss_gdsc.pd, | ||
3034 | .pwrsts = PWRSTS_OFF_ON, | ||
3035 | }; | ||
3036 | |||
3037 | static struct gdsc fd_gdsc = { | ||
3038 | .gdscr = 0x3b64, | ||
3039 | .cxcs = (unsigned int []){ 0x3b68, 0x3b6c }, | ||
3040 | .cxc_count = 2, | ||
3041 | .pd = { | ||
3042 | .name = "fd", | ||
3043 | }, | ||
3044 | .parent = &camss_gdsc.pd, | ||
3045 | .pwrsts = PWRSTS_OFF_ON, | ||
3046 | }; | ||
3047 | |||
3048 | static struct gdsc mdss_gdsc = { | ||
3049 | .gdscr = 0x2304, | ||
3050 | .cxcs = (unsigned int []){ 0x2310, 0x231c }, | ||
3051 | .cxc_count = 2, | ||
3052 | .pd = { | ||
3053 | .name = "mdss", | ||
3054 | }, | ||
3055 | .parent = &mmagic_mdss_gdsc.pd, | ||
3056 | .pwrsts = PWRSTS_OFF_ON, | ||
3057 | }; | ||
3058 | |||
2920 | static struct clk_regmap *mmcc_msm8996_clocks[] = { | 3059 | static struct clk_regmap *mmcc_msm8996_clocks[] = { |
2921 | [MMPLL0_EARLY] = &mmpll0_early.clkr, | 3060 | [MMPLL0_EARLY] = &mmpll0_early.clkr, |
2922 | [MMPLL0_PLL] = &mmpll0.clkr, | 3061 | [MMPLL0_PLL] = &mmpll0.clkr, |
@@ -3093,6 +3232,22 @@ static struct clk_regmap *mmcc_msm8996_clocks[] = { | |||
3093 | [FD_AHB_CLK] = &fd_ahb_clk.clkr, | 3232 | [FD_AHB_CLK] = &fd_ahb_clk.clkr, |
3094 | }; | 3233 | }; |
3095 | 3234 | ||
3235 | static struct gdsc *mmcc_msm8996_gdscs[] = { | ||
3236 | [MMAGIC_VIDEO_GDSC] = &mmagic_video_gdsc, | ||
3237 | [MMAGIC_MDSS_GDSC] = &mmagic_mdss_gdsc, | ||
3238 | [MMAGIC_CAMSS_GDSC] = &mmagic_camss_gdsc, | ||
3239 | [VENUS_GDSC] = &venus_gdsc, | ||
3240 | [VENUS_CORE0_GDSC] = &venus_core0_gdsc, | ||
3241 | [VENUS_CORE1_GDSC] = &venus_core1_gdsc, | ||
3242 | [CAMSS_GDSC] = &camss_gdsc, | ||
3243 | [VFE0_GDSC] = &vfe0_gdsc, | ||
3244 | [VFE1_GDSC] = &vfe1_gdsc, | ||
3245 | [JPEG_GDSC] = &jpeg_gdsc, | ||
3246 | [CPP_GDSC] = &cpp_gdsc, | ||
3247 | [FD_GDSC] = &fd_gdsc, | ||
3248 | [MDSS_GDSC] = &mdss_gdsc, | ||
3249 | }; | ||
3250 | |||
3096 | static const struct qcom_reset_map mmcc_msm8996_resets[] = { | 3251 | static const struct qcom_reset_map mmcc_msm8996_resets[] = { |
3097 | [MMAGICAHB_BCR] = { 0x5020 }, | 3252 | [MMAGICAHB_BCR] = { 0x5020 }, |
3098 | [MMAGIC_CFG_BCR] = { 0x5050 }, | 3253 | [MMAGIC_CFG_BCR] = { 0x5050 }, |
@@ -3170,6 +3325,8 @@ static const struct qcom_cc_desc mmcc_msm8996_desc = { | |||
3170 | .num_clks = ARRAY_SIZE(mmcc_msm8996_clocks), | 3325 | .num_clks = ARRAY_SIZE(mmcc_msm8996_clocks), |
3171 | .resets = mmcc_msm8996_resets, | 3326 | .resets = mmcc_msm8996_resets, |
3172 | .num_resets = ARRAY_SIZE(mmcc_msm8996_resets), | 3327 | .num_resets = ARRAY_SIZE(mmcc_msm8996_resets), |
3328 | .gdscs = mmcc_msm8996_gdscs, | ||
3329 | .num_gdscs = ARRAY_SIZE(mmcc_msm8996_gdscs), | ||
3173 | }; | 3330 | }; |
3174 | 3331 | ||
3175 | static const struct of_device_id mmcc_msm8996_match_table[] = { | 3332 | static const struct of_device_id mmcc_msm8996_match_table[] = { |
diff --git a/include/dt-bindings/clock/qcom,mmcc-msm8996.h b/include/dt-bindings/clock/qcom,mmcc-msm8996.h index 9b81ca65fcec..7d3a7fa1a1bd 100644 --- a/include/dt-bindings/clock/qcom,mmcc-msm8996.h +++ b/include/dt-bindings/clock/qcom,mmcc-msm8996.h | |||
@@ -282,4 +282,21 @@ | |||
282 | #define FD_BCR 58 | 282 | #define FD_BCR 58 |
283 | #define MMSS_SPDM_RM_BCR 59 | 283 | #define MMSS_SPDM_RM_BCR 59 |
284 | 284 | ||
285 | /* Indexes for GDSCs */ | ||
286 | #define MMAGIC_VIDEO_GDSC 0 | ||
287 | #define MMAGIC_MDSS_GDSC 1 | ||
288 | #define MMAGIC_CAMSS_GDSC 2 | ||
289 | #define GPU_GDSC 3 | ||
290 | #define VENUS_GDSC 4 | ||
291 | #define VENUS_CORE0_GDSC 5 | ||
292 | #define VENUS_CORE1_GDSC 6 | ||
293 | #define CAMSS_GDSC 7 | ||
294 | #define VFE0_GDSC 8 | ||
295 | #define VFE1_GDSC 9 | ||
296 | #define JPEG_GDSC 10 | ||
297 | #define CPP_GDSC 11 | ||
298 | #define FD_GDSC 12 | ||
299 | #define MDSS_GDSC 13 | ||
300 | #define GPU_GX_GDSC 14 | ||
301 | |||
285 | #endif | 302 | #endif |