diff options
Diffstat (limited to 'arch/arm/mach-omap2/clock2430_data.c')
-rw-r--r-- | arch/arm/mach-omap2/clock2430_data.c | 244 |
1 files changed, 126 insertions, 118 deletions
diff --git a/arch/arm/mach-omap2/clock2430_data.c b/arch/arm/mach-omap2/clock2430_data.c index c047dcd007e5..bba018331a71 100644 --- a/arch/arm/mach-omap2/clock2430_data.c +++ b/arch/arm/mach-omap2/clock2430_data.c | |||
@@ -1,12 +1,12 @@ | |||
1 | /* | 1 | /* |
2 | * linux/arch/arm/mach-omap2/clock2430_data.c | 2 | * OMAP2430 clock data |
3 | * | 3 | * |
4 | * Copyright (C) 2005-2009 Texas Instruments, Inc. | 4 | * Copyright (C) 2005-2009 Texas Instruments, Inc. |
5 | * Copyright (C) 2004-2010 Nokia Corporation | 5 | * Copyright (C) 2004-2011 Nokia Corporation |
6 | * | 6 | * |
7 | * Contacts: | 7 | * Contacts: |
8 | * Richard Woodruff <r-woodruff2@ti.com> | 8 | * Richard Woodruff <r-woodruff2@ti.com> |
9 | * Paul Walmsley | 9 | * Paul Walmsley |
10 | * | 10 | * |
11 | * This program is free software; you can redistribute it and/or modify | 11 | * This program is free software; you can redistribute it and/or modify |
12 | * it under the terms of the GNU General Public License version 2 as | 12 | * it under the terms of the GNU General Public License version 2 as |
@@ -34,18 +34,15 @@ | |||
34 | /* | 34 | /* |
35 | * 2430 clock tree. | 35 | * 2430 clock tree. |
36 | * | 36 | * |
37 | * NOTE:In many cases here we are assigning a 'default' parent. In many | 37 | * NOTE:In many cases here we are assigning a 'default' parent. In |
38 | * cases the parent is selectable. The get/set parent calls will also | 38 | * many cases the parent is selectable. The set parent calls will |
39 | * switch sources. | 39 | * also switch sources. |
40 | * | ||
41 | * Many some clocks say always_enabled, but they can be auto idled for | ||
42 | * power savings. They will always be available upon clock request. | ||
43 | * | 40 | * |
44 | * Several sources are given initial rates which may be wrong, this will | 41 | * Several sources are given initial rates which may be wrong, this will |
45 | * be fixed up in the init func. | 42 | * be fixed up in the init func. |
46 | * | 43 | * |
47 | * Things are broadly separated below by clock domains. It is | 44 | * Things are broadly separated below by clock domains. It is |
48 | * noteworthy that most periferals have dependencies on multiple clock | 45 | * noteworthy that most peripherals have dependencies on multiple clock |
49 | * domains. Many get their interface clocks from the L4 domain, but get | 46 | * domains. Many get their interface clocks from the L4 domain, but get |
50 | * functional clocks from fixed sources or other core domain derived | 47 | * functional clocks from fixed sources or other core domain derived |
51 | * clocks. | 48 | * clocks. |
@@ -55,7 +52,7 @@ | |||
55 | static struct clk func_32k_ck = { | 52 | static struct clk func_32k_ck = { |
56 | .name = "func_32k_ck", | 53 | .name = "func_32k_ck", |
57 | .ops = &clkops_null, | 54 | .ops = &clkops_null, |
58 | .rate = 32000, | 55 | .rate = 32768, |
59 | .clkdm_name = "wkup_clkdm", | 56 | .clkdm_name = "wkup_clkdm", |
60 | }; | 57 | }; |
61 | 58 | ||
@@ -116,7 +113,6 @@ static struct dpll_data dpll_dd = { | |||
116 | .max_multiplier = 1023, | 113 | .max_multiplier = 1023, |
117 | .min_divider = 1, | 114 | .min_divider = 1, |
118 | .max_divider = 16, | 115 | .max_divider = 16, |
119 | .rate_tolerance = DEFAULT_DPLL_RATE_TOLERANCE | ||
120 | }; | 116 | }; |
121 | 117 | ||
122 | /* | 118 | /* |
@@ -125,7 +121,7 @@ static struct dpll_data dpll_dd = { | |||
125 | */ | 121 | */ |
126 | static struct clk dpll_ck = { | 122 | static struct clk dpll_ck = { |
127 | .name = "dpll_ck", | 123 | .name = "dpll_ck", |
128 | .ops = &clkops_null, | 124 | .ops = &clkops_omap2xxx_dpll_ops, |
129 | .parent = &sys_ck, /* Can be func_32k also */ | 125 | .parent = &sys_ck, /* Can be func_32k also */ |
130 | .dpll_data = &dpll_dd, | 126 | .dpll_data = &dpll_dd, |
131 | .clkdm_name = "wkup_clkdm", | 127 | .clkdm_name = "wkup_clkdm", |
@@ -434,37 +430,23 @@ static struct clk dsp_fck = { | |||
434 | .recalc = &omap2_clksel_recalc, | 430 | .recalc = &omap2_clksel_recalc, |
435 | }; | 431 | }; |
436 | 432 | ||
437 | /* DSP interface clock */ | 433 | static const struct clksel dsp_ick_clksel[] = { |
438 | static const struct clksel_rate dsp_irate_ick_rates[] = { | 434 | { .parent = &dsp_fck, .rates = dsp_ick_rates }, |
439 | { .div = 1, .val = 1, .flags = RATE_IN_24XX }, | ||
440 | { .div = 2, .val = 2, .flags = RATE_IN_24XX }, | ||
441 | { .div = 3, .val = 3, .flags = RATE_IN_243X }, | ||
442 | { .div = 0 }, | ||
443 | }; | ||
444 | |||
445 | static const struct clksel dsp_irate_ick_clksel[] = { | ||
446 | { .parent = &dsp_fck, .rates = dsp_irate_ick_rates }, | ||
447 | { .parent = NULL } | 435 | { .parent = NULL } |
448 | }; | 436 | }; |
449 | 437 | ||
450 | /* This clock does not exist as such in the TRM. */ | ||
451 | static struct clk dsp_irate_ick = { | ||
452 | .name = "dsp_irate_ick", | ||
453 | .ops = &clkops_null, | ||
454 | .parent = &dsp_fck, | ||
455 | .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), | ||
456 | .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK, | ||
457 | .clksel = dsp_irate_ick_clksel, | ||
458 | .recalc = &omap2_clksel_recalc, | ||
459 | }; | ||
460 | |||
461 | /* 2430 only - EN_DSP controls both dsp fclk and iclk on 2430 */ | 438 | /* 2430 only - EN_DSP controls both dsp fclk and iclk on 2430 */ |
462 | static struct clk iva2_1_ick = { | 439 | static struct clk iva2_1_ick = { |
463 | .name = "iva2_1_ick", | 440 | .name = "iva2_1_ick", |
464 | .ops = &clkops_omap2_dflt_wait, | 441 | .ops = &clkops_omap2_dflt_wait, |
465 | .parent = &dsp_irate_ick, | 442 | .parent = &dsp_fck, |
443 | .clkdm_name = "dsp_clkdm", | ||
466 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), | 444 | .enable_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_FCLKEN), |
467 | .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, | 445 | .enable_bit = OMAP24XX_CM_FCLKEN_DSP_EN_DSP_SHIFT, |
446 | .clksel_reg = OMAP_CM_REGADDR(OMAP24XX_DSP_MOD, CM_CLKSEL), | ||
447 | .clksel_mask = OMAP24XX_CLKSEL_DSP_IF_MASK, | ||
448 | .clksel = dsp_ick_clksel, | ||
449 | .recalc = &omap2_clksel_recalc, | ||
468 | }; | 450 | }; |
469 | 451 | ||
470 | /* | 452 | /* |
@@ -525,7 +507,7 @@ static const struct clksel usb_l4_ick_clksel[] = { | |||
525 | /* It is unclear from TRM whether usb_l4_ick is really in L3 or L4 clkdm */ | 507 | /* It is unclear from TRM whether usb_l4_ick is really in L3 or L4 clkdm */ |
526 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ | 508 | static struct clk usb_l4_ick = { /* FS-USB interface clock */ |
527 | .name = "usb_l4_ick", | 509 | .name = "usb_l4_ick", |
528 | .ops = &clkops_omap2_dflt_wait, | 510 | .ops = &clkops_omap2_iclk_dflt_wait, |
529 | .parent = &core_l3_ck, | 511 | .parent = &core_l3_ck, |
530 | .clkdm_name = "core_l4_clkdm", | 512 | .clkdm_name = "core_l4_clkdm", |
531 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 513 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -606,7 +588,7 @@ static struct clk ssi_ssr_sst_fck = { | |||
606 | */ | 588 | */ |
607 | static struct clk ssi_l4_ick = { | 589 | static struct clk ssi_l4_ick = { |
608 | .name = "ssi_l4_ick", | 590 | .name = "ssi_l4_ick", |
609 | .ops = &clkops_omap2_dflt_wait, | 591 | .ops = &clkops_omap2_iclk_dflt_wait, |
610 | .parent = &l4_ck, | 592 | .parent = &l4_ck, |
611 | .clkdm_name = "core_l4_clkdm", | 593 | .clkdm_name = "core_l4_clkdm", |
612 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 594 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -661,6 +643,7 @@ static struct clk gfx_2d_fck = { | |||
661 | .recalc = &omap2_clksel_recalc, | 643 | .recalc = &omap2_clksel_recalc, |
662 | }; | 644 | }; |
663 | 645 | ||
646 | /* This interface clock does not have a CM_AUTOIDLE bit */ | ||
664 | static struct clk gfx_ick = { | 647 | static struct clk gfx_ick = { |
665 | .name = "gfx_ick", /* From l3 */ | 648 | .name = "gfx_ick", /* From l3 */ |
666 | .ops = &clkops_omap2_dflt_wait, | 649 | .ops = &clkops_omap2_dflt_wait, |
@@ -693,7 +676,7 @@ static const struct clksel mdm_ick_clksel[] = { | |||
693 | 676 | ||
694 | static struct clk mdm_ick = { /* used both as a ick and fck */ | 677 | static struct clk mdm_ick = { /* used both as a ick and fck */ |
695 | .name = "mdm_ick", | 678 | .name = "mdm_ick", |
696 | .ops = &clkops_omap2_dflt_wait, | 679 | .ops = &clkops_omap2_iclk_dflt_wait, |
697 | .parent = &core_ck, | 680 | .parent = &core_ck, |
698 | .clkdm_name = "mdm_clkdm", | 681 | .clkdm_name = "mdm_clkdm", |
699 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN), | 682 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_ICLKEN), |
@@ -706,7 +689,7 @@ static struct clk mdm_ick = { /* used both as a ick and fck */ | |||
706 | 689 | ||
707 | static struct clk mdm_osc_ck = { | 690 | static struct clk mdm_osc_ck = { |
708 | .name = "mdm_osc_ck", | 691 | .name = "mdm_osc_ck", |
709 | .ops = &clkops_omap2_dflt_wait, | 692 | .ops = &clkops_omap2_mdmclk_dflt_wait, |
710 | .parent = &osc_ck, | 693 | .parent = &osc_ck, |
711 | .clkdm_name = "mdm_clkdm", | 694 | .clkdm_name = "mdm_clkdm", |
712 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_FCLKEN), | 695 | .enable_reg = OMAP_CM_REGADDR(OMAP2430_MDM_MOD, CM_FCLKEN), |
@@ -751,7 +734,7 @@ static const struct clksel dss1_fck_clksel[] = { | |||
751 | 734 | ||
752 | static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */ | 735 | static struct clk dss_ick = { /* Enables both L3,L4 ICLK's */ |
753 | .name = "dss_ick", | 736 | .name = "dss_ick", |
754 | .ops = &clkops_omap2_dflt, | 737 | .ops = &clkops_omap2_iclk_dflt, |
755 | .parent = &l4_ck, /* really both l3 and l4 */ | 738 | .parent = &l4_ck, /* really both l3 and l4 */ |
756 | .clkdm_name = "dss_clkdm", | 739 | .clkdm_name = "dss_clkdm", |
757 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 740 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -813,6 +796,14 @@ static struct clk dss_54m_fck = { /* Alt clk used in power management */ | |||
813 | .recalc = &followparent_recalc, | 796 | .recalc = &followparent_recalc, |
814 | }; | 797 | }; |
815 | 798 | ||
799 | static struct clk wu_l4_ick = { | ||
800 | .name = "wu_l4_ick", | ||
801 | .ops = &clkops_null, | ||
802 | .parent = &sys_ck, | ||
803 | .clkdm_name = "wkup_clkdm", | ||
804 | .recalc = &followparent_recalc, | ||
805 | }; | ||
806 | |||
816 | /* | 807 | /* |
817 | * CORE power domain ICLK & FCLK defines. | 808 | * CORE power domain ICLK & FCLK defines. |
818 | * Many of the these can have more than one possible parent. Entries | 809 | * Many of the these can have more than one possible parent. Entries |
@@ -833,9 +824,9 @@ static const struct clksel omap24xx_gpt_clksel[] = { | |||
833 | 824 | ||
834 | static struct clk gpt1_ick = { | 825 | static struct clk gpt1_ick = { |
835 | .name = "gpt1_ick", | 826 | .name = "gpt1_ick", |
836 | .ops = &clkops_omap2_dflt_wait, | 827 | .ops = &clkops_omap2_iclk_dflt_wait, |
837 | .parent = &l4_ck, | 828 | .parent = &wu_l4_ick, |
838 | .clkdm_name = "core_l4_clkdm", | 829 | .clkdm_name = "wkup_clkdm", |
839 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 830 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
840 | .enable_bit = OMAP24XX_EN_GPT1_SHIFT, | 831 | .enable_bit = OMAP24XX_EN_GPT1_SHIFT, |
841 | .recalc = &followparent_recalc, | 832 | .recalc = &followparent_recalc, |
@@ -859,7 +850,7 @@ static struct clk gpt1_fck = { | |||
859 | 850 | ||
860 | static struct clk gpt2_ick = { | 851 | static struct clk gpt2_ick = { |
861 | .name = "gpt2_ick", | 852 | .name = "gpt2_ick", |
862 | .ops = &clkops_omap2_dflt_wait, | 853 | .ops = &clkops_omap2_iclk_dflt_wait, |
863 | .parent = &l4_ck, | 854 | .parent = &l4_ck, |
864 | .clkdm_name = "core_l4_clkdm", | 855 | .clkdm_name = "core_l4_clkdm", |
865 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 856 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -883,7 +874,7 @@ static struct clk gpt2_fck = { | |||
883 | 874 | ||
884 | static struct clk gpt3_ick = { | 875 | static struct clk gpt3_ick = { |
885 | .name = "gpt3_ick", | 876 | .name = "gpt3_ick", |
886 | .ops = &clkops_omap2_dflt_wait, | 877 | .ops = &clkops_omap2_iclk_dflt_wait, |
887 | .parent = &l4_ck, | 878 | .parent = &l4_ck, |
888 | .clkdm_name = "core_l4_clkdm", | 879 | .clkdm_name = "core_l4_clkdm", |
889 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 880 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -907,7 +898,7 @@ static struct clk gpt3_fck = { | |||
907 | 898 | ||
908 | static struct clk gpt4_ick = { | 899 | static struct clk gpt4_ick = { |
909 | .name = "gpt4_ick", | 900 | .name = "gpt4_ick", |
910 | .ops = &clkops_omap2_dflt_wait, | 901 | .ops = &clkops_omap2_iclk_dflt_wait, |
911 | .parent = &l4_ck, | 902 | .parent = &l4_ck, |
912 | .clkdm_name = "core_l4_clkdm", | 903 | .clkdm_name = "core_l4_clkdm", |
913 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 904 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -931,7 +922,7 @@ static struct clk gpt4_fck = { | |||
931 | 922 | ||
932 | static struct clk gpt5_ick = { | 923 | static struct clk gpt5_ick = { |
933 | .name = "gpt5_ick", | 924 | .name = "gpt5_ick", |
934 | .ops = &clkops_omap2_dflt_wait, | 925 | .ops = &clkops_omap2_iclk_dflt_wait, |
935 | .parent = &l4_ck, | 926 | .parent = &l4_ck, |
936 | .clkdm_name = "core_l4_clkdm", | 927 | .clkdm_name = "core_l4_clkdm", |
937 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 928 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -955,7 +946,7 @@ static struct clk gpt5_fck = { | |||
955 | 946 | ||
956 | static struct clk gpt6_ick = { | 947 | static struct clk gpt6_ick = { |
957 | .name = "gpt6_ick", | 948 | .name = "gpt6_ick", |
958 | .ops = &clkops_omap2_dflt_wait, | 949 | .ops = &clkops_omap2_iclk_dflt_wait, |
959 | .parent = &l4_ck, | 950 | .parent = &l4_ck, |
960 | .clkdm_name = "core_l4_clkdm", | 951 | .clkdm_name = "core_l4_clkdm", |
961 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 952 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -979,8 +970,9 @@ static struct clk gpt6_fck = { | |||
979 | 970 | ||
980 | static struct clk gpt7_ick = { | 971 | static struct clk gpt7_ick = { |
981 | .name = "gpt7_ick", | 972 | .name = "gpt7_ick", |
982 | .ops = &clkops_omap2_dflt_wait, | 973 | .ops = &clkops_omap2_iclk_dflt_wait, |
983 | .parent = &l4_ck, | 974 | .parent = &l4_ck, |
975 | .clkdm_name = "core_l4_clkdm", | ||
984 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 976 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
985 | .enable_bit = OMAP24XX_EN_GPT7_SHIFT, | 977 | .enable_bit = OMAP24XX_EN_GPT7_SHIFT, |
986 | .recalc = &followparent_recalc, | 978 | .recalc = &followparent_recalc, |
@@ -1002,7 +994,7 @@ static struct clk gpt7_fck = { | |||
1002 | 994 | ||
1003 | static struct clk gpt8_ick = { | 995 | static struct clk gpt8_ick = { |
1004 | .name = "gpt8_ick", | 996 | .name = "gpt8_ick", |
1005 | .ops = &clkops_omap2_dflt_wait, | 997 | .ops = &clkops_omap2_iclk_dflt_wait, |
1006 | .parent = &l4_ck, | 998 | .parent = &l4_ck, |
1007 | .clkdm_name = "core_l4_clkdm", | 999 | .clkdm_name = "core_l4_clkdm", |
1008 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1000 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1026,7 +1018,7 @@ static struct clk gpt8_fck = { | |||
1026 | 1018 | ||
1027 | static struct clk gpt9_ick = { | 1019 | static struct clk gpt9_ick = { |
1028 | .name = "gpt9_ick", | 1020 | .name = "gpt9_ick", |
1029 | .ops = &clkops_omap2_dflt_wait, | 1021 | .ops = &clkops_omap2_iclk_dflt_wait, |
1030 | .parent = &l4_ck, | 1022 | .parent = &l4_ck, |
1031 | .clkdm_name = "core_l4_clkdm", | 1023 | .clkdm_name = "core_l4_clkdm", |
1032 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1024 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1050,7 +1042,7 @@ static struct clk gpt9_fck = { | |||
1050 | 1042 | ||
1051 | static struct clk gpt10_ick = { | 1043 | static struct clk gpt10_ick = { |
1052 | .name = "gpt10_ick", | 1044 | .name = "gpt10_ick", |
1053 | .ops = &clkops_omap2_dflt_wait, | 1045 | .ops = &clkops_omap2_iclk_dflt_wait, |
1054 | .parent = &l4_ck, | 1046 | .parent = &l4_ck, |
1055 | .clkdm_name = "core_l4_clkdm", | 1047 | .clkdm_name = "core_l4_clkdm", |
1056 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1048 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1074,7 +1066,7 @@ static struct clk gpt10_fck = { | |||
1074 | 1066 | ||
1075 | static struct clk gpt11_ick = { | 1067 | static struct clk gpt11_ick = { |
1076 | .name = "gpt11_ick", | 1068 | .name = "gpt11_ick", |
1077 | .ops = &clkops_omap2_dflt_wait, | 1069 | .ops = &clkops_omap2_iclk_dflt_wait, |
1078 | .parent = &l4_ck, | 1070 | .parent = &l4_ck, |
1079 | .clkdm_name = "core_l4_clkdm", | 1071 | .clkdm_name = "core_l4_clkdm", |
1080 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1072 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1098,7 +1090,7 @@ static struct clk gpt11_fck = { | |||
1098 | 1090 | ||
1099 | static struct clk gpt12_ick = { | 1091 | static struct clk gpt12_ick = { |
1100 | .name = "gpt12_ick", | 1092 | .name = "gpt12_ick", |
1101 | .ops = &clkops_omap2_dflt_wait, | 1093 | .ops = &clkops_omap2_iclk_dflt_wait, |
1102 | .parent = &l4_ck, | 1094 | .parent = &l4_ck, |
1103 | .clkdm_name = "core_l4_clkdm", | 1095 | .clkdm_name = "core_l4_clkdm", |
1104 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1096 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1122,7 +1114,7 @@ static struct clk gpt12_fck = { | |||
1122 | 1114 | ||
1123 | static struct clk mcbsp1_ick = { | 1115 | static struct clk mcbsp1_ick = { |
1124 | .name = "mcbsp1_ick", | 1116 | .name = "mcbsp1_ick", |
1125 | .ops = &clkops_omap2_dflt_wait, | 1117 | .ops = &clkops_omap2_iclk_dflt_wait, |
1126 | .parent = &l4_ck, | 1118 | .parent = &l4_ck, |
1127 | .clkdm_name = "core_l4_clkdm", | 1119 | .clkdm_name = "core_l4_clkdm", |
1128 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1120 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1162,7 +1154,7 @@ static struct clk mcbsp1_fck = { | |||
1162 | 1154 | ||
1163 | static struct clk mcbsp2_ick = { | 1155 | static struct clk mcbsp2_ick = { |
1164 | .name = "mcbsp2_ick", | 1156 | .name = "mcbsp2_ick", |
1165 | .ops = &clkops_omap2_dflt_wait, | 1157 | .ops = &clkops_omap2_iclk_dflt_wait, |
1166 | .parent = &l4_ck, | 1158 | .parent = &l4_ck, |
1167 | .clkdm_name = "core_l4_clkdm", | 1159 | .clkdm_name = "core_l4_clkdm", |
1168 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1160 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1186,7 +1178,7 @@ static struct clk mcbsp2_fck = { | |||
1186 | 1178 | ||
1187 | static struct clk mcbsp3_ick = { | 1179 | static struct clk mcbsp3_ick = { |
1188 | .name = "mcbsp3_ick", | 1180 | .name = "mcbsp3_ick", |
1189 | .ops = &clkops_omap2_dflt_wait, | 1181 | .ops = &clkops_omap2_iclk_dflt_wait, |
1190 | .parent = &l4_ck, | 1182 | .parent = &l4_ck, |
1191 | .clkdm_name = "core_l4_clkdm", | 1183 | .clkdm_name = "core_l4_clkdm", |
1192 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1184 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1210,7 +1202,7 @@ static struct clk mcbsp3_fck = { | |||
1210 | 1202 | ||
1211 | static struct clk mcbsp4_ick = { | 1203 | static struct clk mcbsp4_ick = { |
1212 | .name = "mcbsp4_ick", | 1204 | .name = "mcbsp4_ick", |
1213 | .ops = &clkops_omap2_dflt_wait, | 1205 | .ops = &clkops_omap2_iclk_dflt_wait, |
1214 | .parent = &l4_ck, | 1206 | .parent = &l4_ck, |
1215 | .clkdm_name = "core_l4_clkdm", | 1207 | .clkdm_name = "core_l4_clkdm", |
1216 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1208 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1234,7 +1226,7 @@ static struct clk mcbsp4_fck = { | |||
1234 | 1226 | ||
1235 | static struct clk mcbsp5_ick = { | 1227 | static struct clk mcbsp5_ick = { |
1236 | .name = "mcbsp5_ick", | 1228 | .name = "mcbsp5_ick", |
1237 | .ops = &clkops_omap2_dflt_wait, | 1229 | .ops = &clkops_omap2_iclk_dflt_wait, |
1238 | .parent = &l4_ck, | 1230 | .parent = &l4_ck, |
1239 | .clkdm_name = "core_l4_clkdm", | 1231 | .clkdm_name = "core_l4_clkdm", |
1240 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1232 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1258,7 +1250,7 @@ static struct clk mcbsp5_fck = { | |||
1258 | 1250 | ||
1259 | static struct clk mcspi1_ick = { | 1251 | static struct clk mcspi1_ick = { |
1260 | .name = "mcspi1_ick", | 1252 | .name = "mcspi1_ick", |
1261 | .ops = &clkops_omap2_dflt_wait, | 1253 | .ops = &clkops_omap2_iclk_dflt_wait, |
1262 | .parent = &l4_ck, | 1254 | .parent = &l4_ck, |
1263 | .clkdm_name = "core_l4_clkdm", | 1255 | .clkdm_name = "core_l4_clkdm", |
1264 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1256 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1278,7 +1270,7 @@ static struct clk mcspi1_fck = { | |||
1278 | 1270 | ||
1279 | static struct clk mcspi2_ick = { | 1271 | static struct clk mcspi2_ick = { |
1280 | .name = "mcspi2_ick", | 1272 | .name = "mcspi2_ick", |
1281 | .ops = &clkops_omap2_dflt_wait, | 1273 | .ops = &clkops_omap2_iclk_dflt_wait, |
1282 | .parent = &l4_ck, | 1274 | .parent = &l4_ck, |
1283 | .clkdm_name = "core_l4_clkdm", | 1275 | .clkdm_name = "core_l4_clkdm", |
1284 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1276 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1298,7 +1290,7 @@ static struct clk mcspi2_fck = { | |||
1298 | 1290 | ||
1299 | static struct clk mcspi3_ick = { | 1291 | static struct clk mcspi3_ick = { |
1300 | .name = "mcspi3_ick", | 1292 | .name = "mcspi3_ick", |
1301 | .ops = &clkops_omap2_dflt_wait, | 1293 | .ops = &clkops_omap2_iclk_dflt_wait, |
1302 | .parent = &l4_ck, | 1294 | .parent = &l4_ck, |
1303 | .clkdm_name = "core_l4_clkdm", | 1295 | .clkdm_name = "core_l4_clkdm", |
1304 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1296 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1318,7 +1310,7 @@ static struct clk mcspi3_fck = { | |||
1318 | 1310 | ||
1319 | static struct clk uart1_ick = { | 1311 | static struct clk uart1_ick = { |
1320 | .name = "uart1_ick", | 1312 | .name = "uart1_ick", |
1321 | .ops = &clkops_omap2_dflt_wait, | 1313 | .ops = &clkops_omap2_iclk_dflt_wait, |
1322 | .parent = &l4_ck, | 1314 | .parent = &l4_ck, |
1323 | .clkdm_name = "core_l4_clkdm", | 1315 | .clkdm_name = "core_l4_clkdm", |
1324 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1316 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1338,7 +1330,7 @@ static struct clk uart1_fck = { | |||
1338 | 1330 | ||
1339 | static struct clk uart2_ick = { | 1331 | static struct clk uart2_ick = { |
1340 | .name = "uart2_ick", | 1332 | .name = "uart2_ick", |
1341 | .ops = &clkops_omap2_dflt_wait, | 1333 | .ops = &clkops_omap2_iclk_dflt_wait, |
1342 | .parent = &l4_ck, | 1334 | .parent = &l4_ck, |
1343 | .clkdm_name = "core_l4_clkdm", | 1335 | .clkdm_name = "core_l4_clkdm", |
1344 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1336 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1358,7 +1350,7 @@ static struct clk uart2_fck = { | |||
1358 | 1350 | ||
1359 | static struct clk uart3_ick = { | 1351 | static struct clk uart3_ick = { |
1360 | .name = "uart3_ick", | 1352 | .name = "uart3_ick", |
1361 | .ops = &clkops_omap2_dflt_wait, | 1353 | .ops = &clkops_omap2_iclk_dflt_wait, |
1362 | .parent = &l4_ck, | 1354 | .parent = &l4_ck, |
1363 | .clkdm_name = "core_l4_clkdm", | 1355 | .clkdm_name = "core_l4_clkdm", |
1364 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1356 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1378,9 +1370,9 @@ static struct clk uart3_fck = { | |||
1378 | 1370 | ||
1379 | static struct clk gpios_ick = { | 1371 | static struct clk gpios_ick = { |
1380 | .name = "gpios_ick", | 1372 | .name = "gpios_ick", |
1381 | .ops = &clkops_omap2_dflt_wait, | 1373 | .ops = &clkops_omap2_iclk_dflt_wait, |
1382 | .parent = &l4_ck, | 1374 | .parent = &wu_l4_ick, |
1383 | .clkdm_name = "core_l4_clkdm", | 1375 | .clkdm_name = "wkup_clkdm", |
1384 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1376 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1385 | .enable_bit = OMAP24XX_EN_GPIOS_SHIFT, | 1377 | .enable_bit = OMAP24XX_EN_GPIOS_SHIFT, |
1386 | .recalc = &followparent_recalc, | 1378 | .recalc = &followparent_recalc, |
@@ -1398,9 +1390,9 @@ static struct clk gpios_fck = { | |||
1398 | 1390 | ||
1399 | static struct clk mpu_wdt_ick = { | 1391 | static struct clk mpu_wdt_ick = { |
1400 | .name = "mpu_wdt_ick", | 1392 | .name = "mpu_wdt_ick", |
1401 | .ops = &clkops_omap2_dflt_wait, | 1393 | .ops = &clkops_omap2_iclk_dflt_wait, |
1402 | .parent = &l4_ck, | 1394 | .parent = &wu_l4_ick, |
1403 | .clkdm_name = "core_l4_clkdm", | 1395 | .clkdm_name = "wkup_clkdm", |
1404 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1396 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1405 | .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT, | 1397 | .enable_bit = OMAP24XX_EN_MPU_WDT_SHIFT, |
1406 | .recalc = &followparent_recalc, | 1398 | .recalc = &followparent_recalc, |
@@ -1418,10 +1410,10 @@ static struct clk mpu_wdt_fck = { | |||
1418 | 1410 | ||
1419 | static struct clk sync_32k_ick = { | 1411 | static struct clk sync_32k_ick = { |
1420 | .name = "sync_32k_ick", | 1412 | .name = "sync_32k_ick", |
1421 | .ops = &clkops_omap2_dflt_wait, | 1413 | .ops = &clkops_omap2_iclk_dflt_wait, |
1422 | .parent = &l4_ck, | ||
1423 | .flags = ENABLE_ON_INIT, | 1414 | .flags = ENABLE_ON_INIT, |
1424 | .clkdm_name = "core_l4_clkdm", | 1415 | .parent = &wu_l4_ick, |
1416 | .clkdm_name = "wkup_clkdm", | ||
1425 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1417 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1426 | .enable_bit = OMAP24XX_EN_32KSYNC_SHIFT, | 1418 | .enable_bit = OMAP24XX_EN_32KSYNC_SHIFT, |
1427 | .recalc = &followparent_recalc, | 1419 | .recalc = &followparent_recalc, |
@@ -1429,9 +1421,9 @@ static struct clk sync_32k_ick = { | |||
1429 | 1421 | ||
1430 | static struct clk wdt1_ick = { | 1422 | static struct clk wdt1_ick = { |
1431 | .name = "wdt1_ick", | 1423 | .name = "wdt1_ick", |
1432 | .ops = &clkops_omap2_dflt_wait, | 1424 | .ops = &clkops_omap2_iclk_dflt_wait, |
1433 | .parent = &l4_ck, | 1425 | .parent = &wu_l4_ick, |
1434 | .clkdm_name = "core_l4_clkdm", | 1426 | .clkdm_name = "wkup_clkdm", |
1435 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1427 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1436 | .enable_bit = OMAP24XX_EN_WDT1_SHIFT, | 1428 | .enable_bit = OMAP24XX_EN_WDT1_SHIFT, |
1437 | .recalc = &followparent_recalc, | 1429 | .recalc = &followparent_recalc, |
@@ -1439,10 +1431,10 @@ static struct clk wdt1_ick = { | |||
1439 | 1431 | ||
1440 | static struct clk omapctrl_ick = { | 1432 | static struct clk omapctrl_ick = { |
1441 | .name = "omapctrl_ick", | 1433 | .name = "omapctrl_ick", |
1442 | .ops = &clkops_omap2_dflt_wait, | 1434 | .ops = &clkops_omap2_iclk_dflt_wait, |
1443 | .parent = &l4_ck, | ||
1444 | .flags = ENABLE_ON_INIT, | 1435 | .flags = ENABLE_ON_INIT, |
1445 | .clkdm_name = "core_l4_clkdm", | 1436 | .parent = &wu_l4_ick, |
1437 | .clkdm_name = "wkup_clkdm", | ||
1446 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1438 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1447 | .enable_bit = OMAP24XX_EN_OMAPCTRL_SHIFT, | 1439 | .enable_bit = OMAP24XX_EN_OMAPCTRL_SHIFT, |
1448 | .recalc = &followparent_recalc, | 1440 | .recalc = &followparent_recalc, |
@@ -1450,9 +1442,9 @@ static struct clk omapctrl_ick = { | |||
1450 | 1442 | ||
1451 | static struct clk icr_ick = { | 1443 | static struct clk icr_ick = { |
1452 | .name = "icr_ick", | 1444 | .name = "icr_ick", |
1453 | .ops = &clkops_omap2_dflt_wait, | 1445 | .ops = &clkops_omap2_iclk_dflt_wait, |
1454 | .parent = &l4_ck, | 1446 | .parent = &wu_l4_ick, |
1455 | .clkdm_name = "core_l4_clkdm", | 1447 | .clkdm_name = "wkup_clkdm", |
1456 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), | 1448 | .enable_reg = OMAP_CM_REGADDR(WKUP_MOD, CM_ICLKEN), |
1457 | .enable_bit = OMAP2430_EN_ICR_SHIFT, | 1449 | .enable_bit = OMAP2430_EN_ICR_SHIFT, |
1458 | .recalc = &followparent_recalc, | 1450 | .recalc = &followparent_recalc, |
@@ -1460,7 +1452,7 @@ static struct clk icr_ick = { | |||
1460 | 1452 | ||
1461 | static struct clk cam_ick = { | 1453 | static struct clk cam_ick = { |
1462 | .name = "cam_ick", | 1454 | .name = "cam_ick", |
1463 | .ops = &clkops_omap2_dflt, | 1455 | .ops = &clkops_omap2_iclk_dflt, |
1464 | .parent = &l4_ck, | 1456 | .parent = &l4_ck, |
1465 | .clkdm_name = "core_l4_clkdm", | 1457 | .clkdm_name = "core_l4_clkdm", |
1466 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1458 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1485,7 +1477,7 @@ static struct clk cam_fck = { | |||
1485 | 1477 | ||
1486 | static struct clk mailboxes_ick = { | 1478 | static struct clk mailboxes_ick = { |
1487 | .name = "mailboxes_ick", | 1479 | .name = "mailboxes_ick", |
1488 | .ops = &clkops_omap2_dflt_wait, | 1480 | .ops = &clkops_omap2_iclk_dflt_wait, |
1489 | .parent = &l4_ck, | 1481 | .parent = &l4_ck, |
1490 | .clkdm_name = "core_l4_clkdm", | 1482 | .clkdm_name = "core_l4_clkdm", |
1491 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1483 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1495,7 +1487,7 @@ static struct clk mailboxes_ick = { | |||
1495 | 1487 | ||
1496 | static struct clk wdt4_ick = { | 1488 | static struct clk wdt4_ick = { |
1497 | .name = "wdt4_ick", | 1489 | .name = "wdt4_ick", |
1498 | .ops = &clkops_omap2_dflt_wait, | 1490 | .ops = &clkops_omap2_iclk_dflt_wait, |
1499 | .parent = &l4_ck, | 1491 | .parent = &l4_ck, |
1500 | .clkdm_name = "core_l4_clkdm", | 1492 | .clkdm_name = "core_l4_clkdm", |
1501 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1493 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1515,7 +1507,7 @@ static struct clk wdt4_fck = { | |||
1515 | 1507 | ||
1516 | static struct clk mspro_ick = { | 1508 | static struct clk mspro_ick = { |
1517 | .name = "mspro_ick", | 1509 | .name = "mspro_ick", |
1518 | .ops = &clkops_omap2_dflt_wait, | 1510 | .ops = &clkops_omap2_iclk_dflt_wait, |
1519 | .parent = &l4_ck, | 1511 | .parent = &l4_ck, |
1520 | .clkdm_name = "core_l4_clkdm", | 1512 | .clkdm_name = "core_l4_clkdm", |
1521 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1513 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1535,7 +1527,7 @@ static struct clk mspro_fck = { | |||
1535 | 1527 | ||
1536 | static struct clk fac_ick = { | 1528 | static struct clk fac_ick = { |
1537 | .name = "fac_ick", | 1529 | .name = "fac_ick", |
1538 | .ops = &clkops_omap2_dflt_wait, | 1530 | .ops = &clkops_omap2_iclk_dflt_wait, |
1539 | .parent = &l4_ck, | 1531 | .parent = &l4_ck, |
1540 | .clkdm_name = "core_l4_clkdm", | 1532 | .clkdm_name = "core_l4_clkdm", |
1541 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1533 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1555,7 +1547,7 @@ static struct clk fac_fck = { | |||
1555 | 1547 | ||
1556 | static struct clk hdq_ick = { | 1548 | static struct clk hdq_ick = { |
1557 | .name = "hdq_ick", | 1549 | .name = "hdq_ick", |
1558 | .ops = &clkops_omap2_dflt_wait, | 1550 | .ops = &clkops_omap2_iclk_dflt_wait, |
1559 | .parent = &l4_ck, | 1551 | .parent = &l4_ck, |
1560 | .clkdm_name = "core_l4_clkdm", | 1552 | .clkdm_name = "core_l4_clkdm", |
1561 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1553 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1579,7 +1571,7 @@ static struct clk hdq_fck = { | |||
1579 | */ | 1571 | */ |
1580 | static struct clk i2c2_ick = { | 1572 | static struct clk i2c2_ick = { |
1581 | .name = "i2c2_ick", | 1573 | .name = "i2c2_ick", |
1582 | .ops = &clkops_omap2_dflt_wait, | 1574 | .ops = &clkops_omap2_iclk_dflt_wait, |
1583 | .parent = &l4_ck, | 1575 | .parent = &l4_ck, |
1584 | .clkdm_name = "core_l4_clkdm", | 1576 | .clkdm_name = "core_l4_clkdm", |
1585 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1577 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1603,7 +1595,7 @@ static struct clk i2chs2_fck = { | |||
1603 | */ | 1595 | */ |
1604 | static struct clk i2c1_ick = { | 1596 | static struct clk i2c1_ick = { |
1605 | .name = "i2c1_ick", | 1597 | .name = "i2c1_ick", |
1606 | .ops = &clkops_omap2_dflt_wait, | 1598 | .ops = &clkops_omap2_iclk_dflt_wait, |
1607 | .parent = &l4_ck, | 1599 | .parent = &l4_ck, |
1608 | .clkdm_name = "core_l4_clkdm", | 1600 | .clkdm_name = "core_l4_clkdm", |
1609 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), | 1601 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN1), |
@@ -1621,12 +1613,18 @@ static struct clk i2chs1_fck = { | |||
1621 | .recalc = &followparent_recalc, | 1613 | .recalc = &followparent_recalc, |
1622 | }; | 1614 | }; |
1623 | 1615 | ||
1616 | /* | ||
1617 | * The enable_reg/enable_bit in this clock is only used for CM_AUTOIDLE | ||
1618 | * accesses derived from this data. | ||
1619 | */ | ||
1624 | static struct clk gpmc_fck = { | 1620 | static struct clk gpmc_fck = { |
1625 | .name = "gpmc_fck", | 1621 | .name = "gpmc_fck", |
1626 | .ops = &clkops_null, /* RMK: missing? */ | 1622 | .ops = &clkops_omap2_iclk_idle_only, |
1627 | .parent = &core_l3_ck, | 1623 | .parent = &core_l3_ck, |
1628 | .flags = ENABLE_ON_INIT, | 1624 | .flags = ENABLE_ON_INIT, |
1629 | .clkdm_name = "core_l3_clkdm", | 1625 | .clkdm_name = "core_l3_clkdm", |
1626 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), | ||
1627 | .enable_bit = OMAP24XX_AUTO_GPMC_SHIFT, | ||
1630 | .recalc = &followparent_recalc, | 1628 | .recalc = &followparent_recalc, |
1631 | }; | 1629 | }; |
1632 | 1630 | ||
@@ -1638,20 +1636,26 @@ static struct clk sdma_fck = { | |||
1638 | .recalc = &followparent_recalc, | 1636 | .recalc = &followparent_recalc, |
1639 | }; | 1637 | }; |
1640 | 1638 | ||
1639 | /* | ||
1640 | * The enable_reg/enable_bit in this clock is only used for CM_AUTOIDLE | ||
1641 | * accesses derived from this data. | ||
1642 | */ | ||
1641 | static struct clk sdma_ick = { | 1643 | static struct clk sdma_ick = { |
1642 | .name = "sdma_ick", | 1644 | .name = "sdma_ick", |
1643 | .ops = &clkops_null, /* RMK: missing? */ | 1645 | .ops = &clkops_omap2_iclk_idle_only, |
1644 | .parent = &l4_ck, | 1646 | .parent = &core_l3_ck, |
1645 | .clkdm_name = "core_l3_clkdm", | 1647 | .clkdm_name = "core_l3_clkdm", |
1648 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), | ||
1649 | .enable_bit = OMAP24XX_AUTO_SDMA_SHIFT, | ||
1646 | .recalc = &followparent_recalc, | 1650 | .recalc = &followparent_recalc, |
1647 | }; | 1651 | }; |
1648 | 1652 | ||
1649 | static struct clk sdrc_ick = { | 1653 | static struct clk sdrc_ick = { |
1650 | .name = "sdrc_ick", | 1654 | .name = "sdrc_ick", |
1651 | .ops = &clkops_omap2_dflt_wait, | 1655 | .ops = &clkops_omap2_iclk_idle_only, |
1652 | .parent = &l4_ck, | 1656 | .parent = &core_l3_ck, |
1653 | .flags = ENABLE_ON_INIT, | 1657 | .flags = ENABLE_ON_INIT, |
1654 | .clkdm_name = "core_l4_clkdm", | 1658 | .clkdm_name = "core_l3_clkdm", |
1655 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), | 1659 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN3), |
1656 | .enable_bit = OMAP2430_EN_SDRC_SHIFT, | 1660 | .enable_bit = OMAP2430_EN_SDRC_SHIFT, |
1657 | .recalc = &followparent_recalc, | 1661 | .recalc = &followparent_recalc, |
@@ -1659,7 +1663,7 @@ static struct clk sdrc_ick = { | |||
1659 | 1663 | ||
1660 | static struct clk des_ick = { | 1664 | static struct clk des_ick = { |
1661 | .name = "des_ick", | 1665 | .name = "des_ick", |
1662 | .ops = &clkops_omap2_dflt_wait, | 1666 | .ops = &clkops_omap2_iclk_dflt_wait, |
1663 | .parent = &l4_ck, | 1667 | .parent = &l4_ck, |
1664 | .clkdm_name = "core_l4_clkdm", | 1668 | .clkdm_name = "core_l4_clkdm", |
1665 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | 1669 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), |
@@ -1669,7 +1673,7 @@ static struct clk des_ick = { | |||
1669 | 1673 | ||
1670 | static struct clk sha_ick = { | 1674 | static struct clk sha_ick = { |
1671 | .name = "sha_ick", | 1675 | .name = "sha_ick", |
1672 | .ops = &clkops_omap2_dflt_wait, | 1676 | .ops = &clkops_omap2_iclk_dflt_wait, |
1673 | .parent = &l4_ck, | 1677 | .parent = &l4_ck, |
1674 | .clkdm_name = "core_l4_clkdm", | 1678 | .clkdm_name = "core_l4_clkdm", |
1675 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | 1679 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), |
@@ -1679,7 +1683,7 @@ static struct clk sha_ick = { | |||
1679 | 1683 | ||
1680 | static struct clk rng_ick = { | 1684 | static struct clk rng_ick = { |
1681 | .name = "rng_ick", | 1685 | .name = "rng_ick", |
1682 | .ops = &clkops_omap2_dflt_wait, | 1686 | .ops = &clkops_omap2_iclk_dflt_wait, |
1683 | .parent = &l4_ck, | 1687 | .parent = &l4_ck, |
1684 | .clkdm_name = "core_l4_clkdm", | 1688 | .clkdm_name = "core_l4_clkdm", |
1685 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | 1689 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), |
@@ -1689,7 +1693,7 @@ static struct clk rng_ick = { | |||
1689 | 1693 | ||
1690 | static struct clk aes_ick = { | 1694 | static struct clk aes_ick = { |
1691 | .name = "aes_ick", | 1695 | .name = "aes_ick", |
1692 | .ops = &clkops_omap2_dflt_wait, | 1696 | .ops = &clkops_omap2_iclk_dflt_wait, |
1693 | .parent = &l4_ck, | 1697 | .parent = &l4_ck, |
1694 | .clkdm_name = "core_l4_clkdm", | 1698 | .clkdm_name = "core_l4_clkdm", |
1695 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | 1699 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), |
@@ -1699,7 +1703,7 @@ static struct clk aes_ick = { | |||
1699 | 1703 | ||
1700 | static struct clk pka_ick = { | 1704 | static struct clk pka_ick = { |
1701 | .name = "pka_ick", | 1705 | .name = "pka_ick", |
1702 | .ops = &clkops_omap2_dflt_wait, | 1706 | .ops = &clkops_omap2_iclk_dflt_wait, |
1703 | .parent = &l4_ck, | 1707 | .parent = &l4_ck, |
1704 | .clkdm_name = "core_l4_clkdm", | 1708 | .clkdm_name = "core_l4_clkdm", |
1705 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), | 1709 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_ICLKEN4), |
@@ -1719,7 +1723,7 @@ static struct clk usb_fck = { | |||
1719 | 1723 | ||
1720 | static struct clk usbhs_ick = { | 1724 | static struct clk usbhs_ick = { |
1721 | .name = "usbhs_ick", | 1725 | .name = "usbhs_ick", |
1722 | .ops = &clkops_omap2_dflt_wait, | 1726 | .ops = &clkops_omap2_iclk_dflt_wait, |
1723 | .parent = &core_l3_ck, | 1727 | .parent = &core_l3_ck, |
1724 | .clkdm_name = "core_l3_clkdm", | 1728 | .clkdm_name = "core_l3_clkdm", |
1725 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1729 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1729,7 +1733,7 @@ static struct clk usbhs_ick = { | |||
1729 | 1733 | ||
1730 | static struct clk mmchs1_ick = { | 1734 | static struct clk mmchs1_ick = { |
1731 | .name = "mmchs1_ick", | 1735 | .name = "mmchs1_ick", |
1732 | .ops = &clkops_omap2_dflt_wait, | 1736 | .ops = &clkops_omap2_iclk_dflt_wait, |
1733 | .parent = &l4_ck, | 1737 | .parent = &l4_ck, |
1734 | .clkdm_name = "core_l4_clkdm", | 1738 | .clkdm_name = "core_l4_clkdm", |
1735 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1739 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1741,7 +1745,7 @@ static struct clk mmchs1_fck = { | |||
1741 | .name = "mmchs1_fck", | 1745 | .name = "mmchs1_fck", |
1742 | .ops = &clkops_omap2_dflt_wait, | 1746 | .ops = &clkops_omap2_dflt_wait, |
1743 | .parent = &func_96m_ck, | 1747 | .parent = &func_96m_ck, |
1744 | .clkdm_name = "core_l3_clkdm", | 1748 | .clkdm_name = "core_l4_clkdm", |
1745 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | 1749 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), |
1746 | .enable_bit = OMAP2430_EN_MMCHS1_SHIFT, | 1750 | .enable_bit = OMAP2430_EN_MMCHS1_SHIFT, |
1747 | .recalc = &followparent_recalc, | 1751 | .recalc = &followparent_recalc, |
@@ -1749,7 +1753,7 @@ static struct clk mmchs1_fck = { | |||
1749 | 1753 | ||
1750 | static struct clk mmchs2_ick = { | 1754 | static struct clk mmchs2_ick = { |
1751 | .name = "mmchs2_ick", | 1755 | .name = "mmchs2_ick", |
1752 | .ops = &clkops_omap2_dflt_wait, | 1756 | .ops = &clkops_omap2_iclk_dflt_wait, |
1753 | .parent = &l4_ck, | 1757 | .parent = &l4_ck, |
1754 | .clkdm_name = "core_l4_clkdm", | 1758 | .clkdm_name = "core_l4_clkdm", |
1755 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1759 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1761,6 +1765,7 @@ static struct clk mmchs2_fck = { | |||
1761 | .name = "mmchs2_fck", | 1765 | .name = "mmchs2_fck", |
1762 | .ops = &clkops_omap2_dflt_wait, | 1766 | .ops = &clkops_omap2_dflt_wait, |
1763 | .parent = &func_96m_ck, | 1767 | .parent = &func_96m_ck, |
1768 | .clkdm_name = "core_l4_clkdm", | ||
1764 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), | 1769 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, OMAP24XX_CM_FCLKEN2), |
1765 | .enable_bit = OMAP2430_EN_MMCHS2_SHIFT, | 1770 | .enable_bit = OMAP2430_EN_MMCHS2_SHIFT, |
1766 | .recalc = &followparent_recalc, | 1771 | .recalc = &followparent_recalc, |
@@ -1768,7 +1773,7 @@ static struct clk mmchs2_fck = { | |||
1768 | 1773 | ||
1769 | static struct clk gpio5_ick = { | 1774 | static struct clk gpio5_ick = { |
1770 | .name = "gpio5_ick", | 1775 | .name = "gpio5_ick", |
1771 | .ops = &clkops_omap2_dflt_wait, | 1776 | .ops = &clkops_omap2_iclk_dflt_wait, |
1772 | .parent = &l4_ck, | 1777 | .parent = &l4_ck, |
1773 | .clkdm_name = "core_l4_clkdm", | 1778 | .clkdm_name = "core_l4_clkdm", |
1774 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1779 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1788,7 +1793,7 @@ static struct clk gpio5_fck = { | |||
1788 | 1793 | ||
1789 | static struct clk mdm_intc_ick = { | 1794 | static struct clk mdm_intc_ick = { |
1790 | .name = "mdm_intc_ick", | 1795 | .name = "mdm_intc_ick", |
1791 | .ops = &clkops_omap2_dflt_wait, | 1796 | .ops = &clkops_omap2_iclk_dflt_wait, |
1792 | .parent = &l4_ck, | 1797 | .parent = &l4_ck, |
1793 | .clkdm_name = "core_l4_clkdm", | 1798 | .clkdm_name = "core_l4_clkdm", |
1794 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), | 1799 | .enable_reg = OMAP_CM_REGADDR(CORE_MOD, CM_ICLKEN2), |
@@ -1880,7 +1885,6 @@ static struct omap_clk omap2430_clks[] = { | |||
1880 | CLK(NULL, "mpu_ck", &mpu_ck, CK_243X), | 1885 | CLK(NULL, "mpu_ck", &mpu_ck, CK_243X), |
1881 | /* dsp domain clocks */ | 1886 | /* dsp domain clocks */ |
1882 | CLK(NULL, "dsp_fck", &dsp_fck, CK_243X), | 1887 | CLK(NULL, "dsp_fck", &dsp_fck, CK_243X), |
1883 | CLK(NULL, "dsp_irate_ick", &dsp_irate_ick, CK_243X), | ||
1884 | CLK(NULL, "iva2_1_ick", &iva2_1_ick, CK_243X), | 1888 | CLK(NULL, "iva2_1_ick", &iva2_1_ick, CK_243X), |
1885 | /* GFX domain clocks */ | 1889 | /* GFX domain clocks */ |
1886 | CLK(NULL, "gfx_3d_fck", &gfx_3d_fck, CK_243X), | 1890 | CLK(NULL, "gfx_3d_fck", &gfx_3d_fck, CK_243X), |
@@ -1901,6 +1905,7 @@ static struct omap_clk omap2430_clks[] = { | |||
1901 | /* L4 domain clocks */ | 1905 | /* L4 domain clocks */ |
1902 | CLK(NULL, "l4_ck", &l4_ck, CK_243X), | 1906 | CLK(NULL, "l4_ck", &l4_ck, CK_243X), |
1903 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X), | 1907 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X), |
1908 | CLK(NULL, "wu_l4_ick", &wu_l4_ick, CK_243X), | ||
1904 | /* virtual meta-group clock */ | 1909 | /* virtual meta-group clock */ |
1905 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X), | 1910 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X), |
1906 | /* general l4 interface ck, multi-parent functional clk */ | 1911 | /* general l4 interface ck, multi-parent functional clk */ |
@@ -1984,15 +1989,15 @@ static struct omap_clk omap2430_clks[] = { | |||
1984 | CLK(NULL, "pka_ick", &pka_ick, CK_243X), | 1989 | CLK(NULL, "pka_ick", &pka_ick, CK_243X), |
1985 | CLK(NULL, "usb_fck", &usb_fck, CK_243X), | 1990 | CLK(NULL, "usb_fck", &usb_fck, CK_243X), |
1986 | CLK("musb-omap2430", "ick", &usbhs_ick, CK_243X), | 1991 | CLK("musb-omap2430", "ick", &usbhs_ick, CK_243X), |
1987 | CLK("mmci-omap-hs.0", "ick", &mmchs1_ick, CK_243X), | 1992 | CLK("omap_hsmmc.0", "ick", &mmchs1_ick, CK_243X), |
1988 | CLK("mmci-omap-hs.0", "fck", &mmchs1_fck, CK_243X), | 1993 | CLK("omap_hsmmc.0", "fck", &mmchs1_fck, CK_243X), |
1989 | CLK("mmci-omap-hs.1", "ick", &mmchs2_ick, CK_243X), | 1994 | CLK("omap_hsmmc.1", "ick", &mmchs2_ick, CK_243X), |
1990 | CLK("mmci-omap-hs.1", "fck", &mmchs2_fck, CK_243X), | 1995 | CLK("omap_hsmmc.1", "fck", &mmchs2_fck, CK_243X), |
1991 | CLK(NULL, "gpio5_ick", &gpio5_ick, CK_243X), | 1996 | CLK(NULL, "gpio5_ick", &gpio5_ick, CK_243X), |
1992 | CLK(NULL, "gpio5_fck", &gpio5_fck, CK_243X), | 1997 | CLK(NULL, "gpio5_fck", &gpio5_fck, CK_243X), |
1993 | CLK(NULL, "mdm_intc_ick", &mdm_intc_ick, CK_243X), | 1998 | CLK(NULL, "mdm_intc_ick", &mdm_intc_ick, CK_243X), |
1994 | CLK("mmci-omap-hs.0", "mmchsdb_fck", &mmchsdb1_fck, CK_243X), | 1999 | CLK("omap_hsmmc.0", "mmchsdb_fck", &mmchsdb1_fck, CK_243X), |
1995 | CLK("mmci-omap-hs.1", "mmchsdb_fck", &mmchsdb2_fck, CK_243X), | 2000 | CLK("omap_hsmmc.1", "mmchsdb_fck", &mmchsdb2_fck, CK_243X), |
1996 | }; | 2001 | }; |
1997 | 2002 | ||
1998 | /* | 2003 | /* |
@@ -2028,6 +2033,9 @@ int __init omap2430_clk_init(void) | |||
2028 | omap2_init_clk_clkdm(c->lk.clk); | 2033 | omap2_init_clk_clkdm(c->lk.clk); |
2029 | } | 2034 | } |
2030 | 2035 | ||
2036 | /* Disable autoidle on all clocks; let the PM code enable it later */ | ||
2037 | omap_clk_disable_autoidle_all(); | ||
2038 | |||
2031 | /* Check the MPU rate set by bootloader */ | 2039 | /* Check the MPU rate set by bootloader */ |
2032 | clkrate = omap2xxx_clk_get_core_rate(&dpll_ck); | 2040 | clkrate = omap2xxx_clk_get_core_rate(&dpll_ck); |
2033 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { | 2041 | for (prcm = rate_table; prcm->mpu_speed; prcm++) { |