aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2/cclock3xxx_data.c
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2013-11-14 13:38:43 -0500
committerTony Lindgren <tony@atomide.com>2013-11-14 13:38:43 -0500
commitb357787e74e6dcd82f5a4ac27d920f6425513a23 (patch)
treee1a74bbe2bd3dc66151cd10fe50e28fd1eaaf97a /arch/arm/mach-omap2/cclock3xxx_data.c
parent10d0c9705e80bbd3d587c5fad24599aabaca6688 (diff)
parent4ff7e3b65c8e1d8062365296b738fd262cfc2e9c (diff)
Merge tag 'for-v3.13/clock-fixes-a' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into xxx-dt
Several OMAP2+ DSS-related clock fixes for v3.13 from Tomi Valkeinen. Basic test logs at: http://www.pwsan.com/omap/testlogs/clock_fixes_v3.13/20131024090906/
Diffstat (limited to 'arch/arm/mach-omap2/cclock3xxx_data.c')
-rw-r--r--arch/arm/mach-omap2/cclock3xxx_data.c58
1 files changed, 49 insertions, 9 deletions
diff --git a/arch/arm/mach-omap2/cclock3xxx_data.c b/arch/arm/mach-omap2/cclock3xxx_data.c
index 03a2829beb8e..3b05aea56d1f 100644
--- a/arch/arm/mach-omap2/cclock3xxx_data.c
+++ b/arch/arm/mach-omap2/cclock3xxx_data.c
@@ -381,6 +381,42 @@ static struct clk_hw_omap dpll4_ck_hw = {
381 381
382DEFINE_STRUCT_CLK(dpll4_ck, dpll3_ck_parent_names, dpll4_ck_ops); 382DEFINE_STRUCT_CLK(dpll4_ck, dpll3_ck_parent_names, dpll4_ck_ops);
383 383
384static const struct clk_div_table dpll4_mx_ck_div_table[] = {
385 { .div = 1, .val = 1 },
386 { .div = 2, .val = 2 },
387 { .div = 3, .val = 3 },
388 { .div = 4, .val = 4 },
389 { .div = 5, .val = 5 },
390 { .div = 6, .val = 6 },
391 { .div = 7, .val = 7 },
392 { .div = 8, .val = 8 },
393 { .div = 9, .val = 9 },
394 { .div = 10, .val = 10 },
395 { .div = 11, .val = 11 },
396 { .div = 12, .val = 12 },
397 { .div = 13, .val = 13 },
398 { .div = 14, .val = 14 },
399 { .div = 15, .val = 15 },
400 { .div = 16, .val = 16 },
401 { .div = 17, .val = 17 },
402 { .div = 18, .val = 18 },
403 { .div = 19, .val = 19 },
404 { .div = 20, .val = 20 },
405 { .div = 21, .val = 21 },
406 { .div = 22, .val = 22 },
407 { .div = 23, .val = 23 },
408 { .div = 24, .val = 24 },
409 { .div = 25, .val = 25 },
410 { .div = 26, .val = 26 },
411 { .div = 27, .val = 27 },
412 { .div = 28, .val = 28 },
413 { .div = 29, .val = 29 },
414 { .div = 30, .val = 30 },
415 { .div = 31, .val = 31 },
416 { .div = 32, .val = 32 },
417 { .div = 0 },
418};
419
384DEFINE_CLK_DIVIDER(dpll4_m5_ck, "dpll4_ck", &dpll4_ck, 0x0, 420DEFINE_CLK_DIVIDER(dpll4_m5_ck, "dpll4_ck", &dpll4_ck, 0x0,
385 OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL), 421 OMAP_CM_REGADDR(OMAP3430_CAM_MOD, CM_CLKSEL),
386 OMAP3430_CLKSEL_CAM_SHIFT, OMAP3630_CLKSEL_CAM_WIDTH, 422 OMAP3430_CLKSEL_CAM_SHIFT, OMAP3630_CLKSEL_CAM_WIDTH,
@@ -524,10 +560,10 @@ static const struct clksel_rate clkout2_src_54m_rates[] = {
524 { .div = 0 } 560 { .div = 0 }
525}; 561};
526 562
527DEFINE_CLK_DIVIDER(dpll4_m3_ck, "dpll4_ck", &dpll4_ck, 0x0, 563DEFINE_CLK_DIVIDER_TABLE(dpll4_m3_ck, "dpll4_ck", &dpll4_ck, 0x0,
528 OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL), 564 OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
529 OMAP3430_CLKSEL_TV_SHIFT, OMAP3630_CLKSEL_TV_WIDTH, 565 OMAP3430_CLKSEL_TV_SHIFT, OMAP3630_CLKSEL_TV_WIDTH,
530 CLK_DIVIDER_ONE_BASED, NULL); 566 0, dpll4_mx_ck_div_table, NULL);
531 567
532static struct clk dpll4_m3x2_ck; 568static struct clk dpll4_m3x2_ck;
533 569
@@ -847,10 +883,10 @@ static struct clk dpll3_m3x2_ck_3630 = {
847 883
848DEFINE_CLK_FIXED_FACTOR(dpll3_x2_ck, "dpll3_ck", &dpll3_ck, 0x0, 2, 1); 884DEFINE_CLK_FIXED_FACTOR(dpll3_x2_ck, "dpll3_ck", &dpll3_ck, 0x0, 2, 1);
849 885
850DEFINE_CLK_DIVIDER(dpll4_m4_ck, "dpll4_ck", &dpll4_ck, 0x0, 886DEFINE_CLK_DIVIDER_TABLE(dpll4_m4_ck, "dpll4_ck", &dpll4_ck, 0x0,
851 OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL), 887 OMAP_CM_REGADDR(OMAP3430_DSS_MOD, CM_CLKSEL),
852 OMAP3430_CLKSEL_DSS1_SHIFT, OMAP3630_CLKSEL_DSS1_WIDTH, 888 OMAP3430_CLKSEL_DSS1_SHIFT, OMAP3630_CLKSEL_DSS1_WIDTH,
853 CLK_DIVIDER_ONE_BASED, NULL); 889 0, dpll4_mx_ck_div_table, NULL);
854 890
855static struct clk dpll4_m4x2_ck; 891static struct clk dpll4_m4x2_ck;
856 892
@@ -869,7 +905,8 @@ static struct clk_hw_omap dpll4_m4x2_ck_hw = {
869 .clkdm_name = "dpll4_clkdm", 905 .clkdm_name = "dpll4_clkdm",
870}; 906};
871 907
872DEFINE_STRUCT_CLK(dpll4_m4x2_ck, dpll4_m4x2_ck_parent_names, dpll4_m5x2_ck_ops); 908DEFINE_STRUCT_CLK_FLAGS(dpll4_m4x2_ck, dpll4_m4x2_ck_parent_names,
909 dpll4_m5x2_ck_ops, CLK_SET_RATE_PARENT);
873 910
874static struct clk dpll4_m4x2_ck_3630 = { 911static struct clk dpll4_m4x2_ck_3630 = {
875 .name = "dpll4_m4x2_ck", 912 .name = "dpll4_m4x2_ck",
@@ -877,6 +914,7 @@ static struct clk dpll4_m4x2_ck_3630 = {
877 .parent_names = dpll4_m4x2_ck_parent_names, 914 .parent_names = dpll4_m4x2_ck_parent_names,
878 .num_parents = ARRAY_SIZE(dpll4_m4x2_ck_parent_names), 915 .num_parents = ARRAY_SIZE(dpll4_m4x2_ck_parent_names),
879 .ops = &dpll4_m5x2_ck_3630_ops, 916 .ops = &dpll4_m5x2_ck_3630_ops,
917 .flags = CLK_SET_RATE_PARENT,
880}; 918};
881 919
882DEFINE_CLK_DIVIDER(dpll4_m6_ck, "dpll4_ck", &dpll4_ck, 0x0, 920DEFINE_CLK_DIVIDER(dpll4_m6_ck, "dpll4_ck", &dpll4_ck, 0x0,
@@ -968,8 +1006,9 @@ static struct clk_hw_omap dss1_alwon_fck_3430es1_hw = {
968 .clkdm_name = "dss_clkdm", 1006 .clkdm_name = "dss_clkdm",
969}; 1007};
970 1008
971DEFINE_STRUCT_CLK(dss1_alwon_fck_3430es1, dss1_alwon_fck_3430es1_parent_names, 1009DEFINE_STRUCT_CLK_FLAGS(dss1_alwon_fck_3430es1,
972 aes2_ick_ops); 1010 dss1_alwon_fck_3430es1_parent_names, aes2_ick_ops,
1011 CLK_SET_RATE_PARENT);
973 1012
974static struct clk dss1_alwon_fck_3430es2; 1013static struct clk dss1_alwon_fck_3430es2;
975 1014
@@ -983,8 +1022,9 @@ static struct clk_hw_omap dss1_alwon_fck_3430es2_hw = {
983 .clkdm_name = "dss_clkdm", 1022 .clkdm_name = "dss_clkdm",
984}; 1023};
985 1024
986DEFINE_STRUCT_CLK(dss1_alwon_fck_3430es2, dss1_alwon_fck_3430es1_parent_names, 1025DEFINE_STRUCT_CLK_FLAGS(dss1_alwon_fck_3430es2,
987 aes2_ick_ops); 1026 dss1_alwon_fck_3430es1_parent_names, aes2_ick_ops,
1027 CLK_SET_RATE_PARENT);
988 1028
989static struct clk dss2_alwon_fck; 1029static struct clk dss2_alwon_fck;
990 1030