aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajendra Nayak <rnayak@codeaurora.org>2015-12-01 11:12:15 -0500
committerStephen Boyd <sboyd@codeaurora.org>2016-02-11 19:34:03 -0500
commit7e824d507909e3683699dfc0bba14a5c971984f9 (patch)
tree4c44343fa43fc103688dc415955b1f8c78bbc3a0
parent52111672f7916537c8f50857088aaa4e709324e7 (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.c157
-rw-r--r--include/dt-bindings/clock/qcom,mmcc-msm8996.h17
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
2921static 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
2931static 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
2941static 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
2951static 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
2962static 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
2972static 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
2982static 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
2993static 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
3004static 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
3015static 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
3026static 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
3037static 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
3048static 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
2920static struct clk_regmap *mmcc_msm8996_clocks[] = { 3059static 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
3235static 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
3096static const struct qcom_reset_map mmcc_msm8996_resets[] = { 3251static 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
3175static const struct of_device_id mmcc_msm8996_match_table[] = { 3332static 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