diff options
author | Rajendra Nayak <rnayak@ti.com> | 2010-12-21 23:08:14 -0500 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2010-12-21 23:08:14 -0500 |
commit | e0cb70c565acffb210ffa2a4590637d1844d13c5 (patch) | |
tree | 1c1c201b056d1b8def83890c224235f44ec22701 | |
parent | 768ab94f8b2b16a23fa10900430c10ec44f2643e (diff) |
OMAP4: clock data: Add SCRM auxiliary clock nodes
Add support for auxiliary clocks nodes which are part of SCRM.
Signed-off-by: Rajendra Nayak <rnayak@ti.com>
Signed-off-by: Benoit Cousson <b-cousson@ti.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
-rw-r--r-- | arch/arm/mach-omap2/clock44xx_data.c | 175 |
1 files changed, 175 insertions, 0 deletions
diff --git a/arch/arm/mach-omap2/clock44xx_data.c b/arch/arm/mach-omap2/clock44xx_data.c index 39ef9867f784..74c4b43fb33f 100644 --- a/arch/arm/mach-omap2/clock44xx_data.c +++ b/arch/arm/mach-omap2/clock44xx_data.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include "prm44xx.h" | 37 | #include "prm44xx.h" |
38 | #include "prm-regbits-44xx.h" | 38 | #include "prm-regbits-44xx.h" |
39 | #include "control.h" | 39 | #include "control.h" |
40 | #include "scrm44xx.h" | ||
40 | 41 | ||
41 | /* OMAP4 modulemode control */ | 42 | /* OMAP4 modulemode control */ |
42 | #define OMAP4430_MODULEMODE_HWCTRL 0 | 43 | #define OMAP4430_MODULEMODE_HWCTRL 0 |
@@ -2821,6 +2822,168 @@ static struct clk trace_clk_div_ck = { | |||
2821 | .set_rate = &omap2_clksel_set_rate, | 2822 | .set_rate = &omap2_clksel_set_rate, |
2822 | }; | 2823 | }; |
2823 | 2824 | ||
2825 | /* SCRM aux clk nodes */ | ||
2826 | |||
2827 | static const struct clksel auxclk_sel[] = { | ||
2828 | { .parent = &sys_clkin_ck, .rates = div_1_0_rates }, | ||
2829 | { .parent = &dpll_core_m3x2_ck, .rates = div_1_1_rates }, | ||
2830 | { .parent = &dpll_per_m3x2_ck, .rates = div_1_2_rates }, | ||
2831 | { .parent = NULL }, | ||
2832 | }; | ||
2833 | |||
2834 | static struct clk auxclk0_ck = { | ||
2835 | .name = "auxclk0_ck", | ||
2836 | .parent = &sys_clkin_ck, | ||
2837 | .init = &omap2_init_clksel_parent, | ||
2838 | .ops = &clkops_omap2_dflt, | ||
2839 | .clksel = auxclk_sel, | ||
2840 | .clksel_reg = OMAP4_SCRM_AUXCLK0, | ||
2841 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2842 | .recalc = &omap2_clksel_recalc, | ||
2843 | .enable_reg = OMAP4_SCRM_AUXCLK0, | ||
2844 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2845 | }; | ||
2846 | |||
2847 | static struct clk auxclk1_ck = { | ||
2848 | .name = "auxclk1_ck", | ||
2849 | .parent = &sys_clkin_ck, | ||
2850 | .init = &omap2_init_clksel_parent, | ||
2851 | .ops = &clkops_omap2_dflt, | ||
2852 | .clksel = auxclk_sel, | ||
2853 | .clksel_reg = OMAP4_SCRM_AUXCLK1, | ||
2854 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2855 | .recalc = &omap2_clksel_recalc, | ||
2856 | .enable_reg = OMAP4_SCRM_AUXCLK1, | ||
2857 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2858 | }; | ||
2859 | |||
2860 | static struct clk auxclk2_ck = { | ||
2861 | .name = "auxclk2_ck", | ||
2862 | .parent = &sys_clkin_ck, | ||
2863 | .init = &omap2_init_clksel_parent, | ||
2864 | .ops = &clkops_omap2_dflt, | ||
2865 | .clksel = auxclk_sel, | ||
2866 | .clksel_reg = OMAP4_SCRM_AUXCLK2, | ||
2867 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2868 | .recalc = &omap2_clksel_recalc, | ||
2869 | .enable_reg = OMAP4_SCRM_AUXCLK2, | ||
2870 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2871 | }; | ||
2872 | static struct clk auxclk3_ck = { | ||
2873 | .name = "auxclk3_ck", | ||
2874 | .parent = &sys_clkin_ck, | ||
2875 | .init = &omap2_init_clksel_parent, | ||
2876 | .ops = &clkops_omap2_dflt, | ||
2877 | .clksel = auxclk_sel, | ||
2878 | .clksel_reg = OMAP4_SCRM_AUXCLK3, | ||
2879 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2880 | .recalc = &omap2_clksel_recalc, | ||
2881 | .enable_reg = OMAP4_SCRM_AUXCLK3, | ||
2882 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2883 | }; | ||
2884 | |||
2885 | static struct clk auxclk4_ck = { | ||
2886 | .name = "auxclk4_ck", | ||
2887 | .parent = &sys_clkin_ck, | ||
2888 | .init = &omap2_init_clksel_parent, | ||
2889 | .ops = &clkops_omap2_dflt, | ||
2890 | .clksel = auxclk_sel, | ||
2891 | .clksel_reg = OMAP4_SCRM_AUXCLK4, | ||
2892 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2893 | .recalc = &omap2_clksel_recalc, | ||
2894 | .enable_reg = OMAP4_SCRM_AUXCLK4, | ||
2895 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2896 | }; | ||
2897 | |||
2898 | static struct clk auxclk5_ck = { | ||
2899 | .name = "auxclk5_ck", | ||
2900 | .parent = &sys_clkin_ck, | ||
2901 | .init = &omap2_init_clksel_parent, | ||
2902 | .ops = &clkops_omap2_dflt, | ||
2903 | .clksel = auxclk_sel, | ||
2904 | .clksel_reg = OMAP4_SCRM_AUXCLK5, | ||
2905 | .clksel_mask = OMAP4_SRCSELECT_MASK, | ||
2906 | .recalc = &omap2_clksel_recalc, | ||
2907 | .enable_reg = OMAP4_SCRM_AUXCLK5, | ||
2908 | .enable_bit = OMAP4_ENABLE_SHIFT, | ||
2909 | }; | ||
2910 | |||
2911 | static const struct clksel auxclkreq_sel[] = { | ||
2912 | { .parent = &auxclk0_ck, .rates = div_1_0_rates }, | ||
2913 | { .parent = &auxclk1_ck, .rates = div_1_1_rates }, | ||
2914 | { .parent = &auxclk2_ck, .rates = div_1_2_rates }, | ||
2915 | { .parent = &auxclk3_ck, .rates = div_1_3_rates }, | ||
2916 | { .parent = &auxclk4_ck, .rates = div_1_4_rates }, | ||
2917 | { .parent = &auxclk5_ck, .rates = div_1_5_rates }, | ||
2918 | { .parent = NULL }, | ||
2919 | }; | ||
2920 | |||
2921 | static struct clk auxclkreq0_ck = { | ||
2922 | .name = "auxclkreq0_ck", | ||
2923 | .parent = &auxclk0_ck, | ||
2924 | .init = &omap2_init_clksel_parent, | ||
2925 | .ops = &clkops_null, | ||
2926 | .clksel = auxclkreq_sel, | ||
2927 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ0, | ||
2928 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2929 | .recalc = &omap2_clksel_recalc, | ||
2930 | }; | ||
2931 | |||
2932 | static struct clk auxclkreq1_ck = { | ||
2933 | .name = "auxclkreq1_ck", | ||
2934 | .parent = &auxclk1_ck, | ||
2935 | .init = &omap2_init_clksel_parent, | ||
2936 | .ops = &clkops_null, | ||
2937 | .clksel = auxclkreq_sel, | ||
2938 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ1, | ||
2939 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2940 | .recalc = &omap2_clksel_recalc, | ||
2941 | }; | ||
2942 | |||
2943 | static struct clk auxclkreq2_ck = { | ||
2944 | .name = "auxclkreq2_ck", | ||
2945 | .parent = &auxclk2_ck, | ||
2946 | .init = &omap2_init_clksel_parent, | ||
2947 | .ops = &clkops_null, | ||
2948 | .clksel = auxclkreq_sel, | ||
2949 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ2, | ||
2950 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2951 | .recalc = &omap2_clksel_recalc, | ||
2952 | }; | ||
2953 | |||
2954 | static struct clk auxclkreq3_ck = { | ||
2955 | .name = "auxclkreq3_ck", | ||
2956 | .parent = &auxclk3_ck, | ||
2957 | .init = &omap2_init_clksel_parent, | ||
2958 | .ops = &clkops_null, | ||
2959 | .clksel = auxclkreq_sel, | ||
2960 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ3, | ||
2961 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2962 | .recalc = &omap2_clksel_recalc, | ||
2963 | }; | ||
2964 | |||
2965 | static struct clk auxclkreq4_ck = { | ||
2966 | .name = "auxclkreq4_ck", | ||
2967 | .parent = &auxclk4_ck, | ||
2968 | .init = &omap2_init_clksel_parent, | ||
2969 | .ops = &clkops_null, | ||
2970 | .clksel = auxclkreq_sel, | ||
2971 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ4, | ||
2972 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2973 | .recalc = &omap2_clksel_recalc, | ||
2974 | }; | ||
2975 | |||
2976 | static struct clk auxclkreq5_ck = { | ||
2977 | .name = "auxclkreq5_ck", | ||
2978 | .parent = &auxclk5_ck, | ||
2979 | .init = &omap2_init_clksel_parent, | ||
2980 | .ops = &clkops_null, | ||
2981 | .clksel = auxclkreq_sel, | ||
2982 | .clksel_reg = OMAP4_SCRM_AUXCLKREQ5, | ||
2983 | .clksel_mask = OMAP4_MAPPING_MASK, | ||
2984 | .recalc = &omap2_clksel_recalc, | ||
2985 | }; | ||
2986 | |||
2824 | /* | 2987 | /* |
2825 | * clkdev | 2988 | * clkdev |
2826 | */ | 2989 | */ |
@@ -3076,6 +3239,18 @@ static struct omap_clk omap44xx_clks[] = { | |||
3076 | CLK(NULL, "uart3_ick", &dummy_ck, CK_443X), | 3239 | CLK(NULL, "uart3_ick", &dummy_ck, CK_443X), |
3077 | CLK(NULL, "uart4_ick", &dummy_ck, CK_443X), | 3240 | CLK(NULL, "uart4_ick", &dummy_ck, CK_443X), |
3078 | CLK("omap_wdt", "ick", &dummy_ck, CK_443X), | 3241 | CLK("omap_wdt", "ick", &dummy_ck, CK_443X), |
3242 | CLK(NULL, "auxclk0_ck", &auxclk0_ck, CK_443X), | ||
3243 | CLK(NULL, "auxclk1_ck", &auxclk1_ck, CK_443X), | ||
3244 | CLK(NULL, "auxclk2_ck", &auxclk2_ck, CK_443X), | ||
3245 | CLK(NULL, "auxclk3_ck", &auxclk3_ck, CK_443X), | ||
3246 | CLK(NULL, "auxclk4_ck", &auxclk4_ck, CK_443X), | ||
3247 | CLK(NULL, "auxclk5_ck", &auxclk5_ck, CK_443X), | ||
3248 | CLK(NULL, "auxclkreq0_ck", &auxclkreq0_ck, CK_443X), | ||
3249 | CLK(NULL, "auxclkreq1_ck", &auxclkreq1_ck, CK_443X), | ||
3250 | CLK(NULL, "auxclkreq2_ck", &auxclkreq2_ck, CK_443X), | ||
3251 | CLK(NULL, "auxclkreq3_ck", &auxclkreq3_ck, CK_443X), | ||
3252 | CLK(NULL, "auxclkreq4_ck", &auxclkreq4_ck, CK_443X), | ||
3253 | CLK(NULL, "auxclkreq5_ck", &auxclkreq5_ck, CK_443X), | ||
3079 | }; | 3254 | }; |
3080 | 3255 | ||
3081 | int __init omap4xxx_clk_init(void) | 3256 | int __init omap4xxx_clk_init(void) |