aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRajendra Nayak <rnayak@ti.com>2010-12-21 23:08:14 -0500
committerPaul Walmsley <paul@pwsan.com>2010-12-21 23:08:14 -0500
commite0cb70c565acffb210ffa2a4590637d1844d13c5 (patch)
tree1c1c201b056d1b8def83890c224235f44ec22701
parent768ab94f8b2b16a23fa10900430c10ec44f2643e (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.c175
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
2827static 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
2834static 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
2847static 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
2860static 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};
2872static 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
2885static 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
2898static 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
2911static 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
2921static 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
2932static 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
2943static 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
2954static 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
2965static 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
2976static 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
3081int __init omap4xxx_clk_init(void) 3256int __init omap4xxx_clk_init(void)