diff options
| author | Tony Lindgren <tony@atomide.com> | 2013-01-30 17:02:54 -0500 |
|---|---|---|
| committer | Tony Lindgren <tony@atomide.com> | 2013-01-30 17:02:54 -0500 |
| commit | 7b4bc07991564dfcdfd9e6e7cbebc9bf337111eb (patch) | |
| tree | 80fa1aa61a364aa6afaa1d14a92870e647954f5e | |
| parent | 949db153b6466c6f7cad5a427ecea94985927311 (diff) | |
| parent | aff2f7d90fc6553aa309db2a635d8e5d70d84916 (diff) | |
Merge tag 'omap-cleanup-a-for-3.9' of git://git.kernel.org/pub/scm/linux/kernel/git/pjw/omap-pending into omap-for-v3.9/pm
Remove some dead OMAP clock and device integration code and data.
Also, clean up the way that the OMAP device integration code blocks
WFI/WFE to use a consistent mechanism, controlled by a data flag.
Basic test logs for this branch are here:
http://www.pwsan.com/omap/testlogs/cleanup_a_3.9/20130126014242/
32 files changed, 292 insertions, 1163 deletions
diff --git a/arch/arm/mach-omap2/am35xx-emac.c b/arch/arm/mach-omap2/am35xx-emac.c index af11dcdb7e2c..a00d39107a21 100644 --- a/arch/arm/mach-omap2/am35xx-emac.c +++ b/arch/arm/mach-omap2/am35xx-emac.c | |||
| @@ -63,7 +63,7 @@ static int __init omap_davinci_emac_dev_init(struct omap_hwmod *oh, | |||
| 63 | struct platform_device *pdev; | 63 | struct platform_device *pdev; |
| 64 | 64 | ||
| 65 | pdev = omap_device_build(oh->class->name, 0, oh, pdata, pdata_len, | 65 | pdev = omap_device_build(oh->class->name, 0, oh, pdata, pdata_len, |
| 66 | NULL, 0, false); | 66 | false); |
| 67 | if (IS_ERR(pdev)) { | 67 | if (IS_ERR(pdev)) { |
| 68 | WARN(1, "Can't build omap_device for %s:%s.\n", | 68 | WARN(1, "Can't build omap_device for %s:%s.\n", |
| 69 | oh->class->name, oh->name); | 69 | oh->class->name, oh->name); |
diff --git a/arch/arm/mach-omap2/cclock2420_data.c b/arch/arm/mach-omap2/cclock2420_data.c index ab7e952d2070..0f0a97c1fcc0 100644 --- a/arch/arm/mach-omap2/cclock2420_data.c +++ b/arch/arm/mach-omap2/cclock2420_data.c | |||
| @@ -622,15 +622,10 @@ static struct clk_hw_omap gpios_fck_hw = { | |||
| 622 | 622 | ||
| 623 | DEFINE_STRUCT_CLK(gpios_fck, gpios_fck_parent_names, aes_ick_ops); | 623 | DEFINE_STRUCT_CLK(gpios_fck, gpios_fck_parent_names, aes_ick_ops); |
| 624 | 624 | ||
| 625 | static struct clk wu_l4_ick; | ||
| 626 | |||
| 627 | DEFINE_STRUCT_CLK_HW_OMAP(wu_l4_ick, "wkup_clkdm"); | ||
| 628 | DEFINE_STRUCT_CLK(wu_l4_ick, dpll_ck_parent_names, core_ck_ops); | ||
| 629 | |||
| 630 | static struct clk gpios_ick; | 625 | static struct clk gpios_ick; |
| 631 | 626 | ||
| 632 | static const char *gpios_ick_parent_names[] = { | 627 | static const char *gpios_ick_parent_names[] = { |
| 633 | "wu_l4_ick", | 628 | "sys_ck", |
| 634 | }; | 629 | }; |
| 635 | 630 | ||
| 636 | static struct clk_hw_omap gpios_ick_hw = { | 631 | static struct clk_hw_omap gpios_ick_hw = { |
| @@ -1682,13 +1677,6 @@ static struct clk_hw_omap wdt1_ick_hw = { | |||
| 1682 | 1677 | ||
| 1683 | DEFINE_STRUCT_CLK(wdt1_ick, gpios_ick_parent_names, aes_ick_ops); | 1678 | DEFINE_STRUCT_CLK(wdt1_ick, gpios_ick_parent_names, aes_ick_ops); |
| 1684 | 1679 | ||
| 1685 | static struct clk wdt1_osc_ck; | ||
| 1686 | |||
| 1687 | static const struct clk_ops wdt1_osc_ck_ops = {}; | ||
| 1688 | |||
| 1689 | DEFINE_STRUCT_CLK_HW_OMAP(wdt1_osc_ck, NULL); | ||
| 1690 | DEFINE_STRUCT_CLK(wdt1_osc_ck, sys_ck_parent_names, wdt1_osc_ck_ops); | ||
| 1691 | |||
| 1692 | static struct clk wdt3_fck; | 1680 | static struct clk wdt3_fck; |
| 1693 | 1681 | ||
| 1694 | static struct clk_hw_omap wdt3_fck_hw = { | 1682 | static struct clk_hw_omap wdt3_fck_hw = { |
| @@ -1767,7 +1755,6 @@ static struct omap_clk omap2420_clks[] = { | |||
| 1767 | CLK(NULL, "func_96m_ck", &func_96m_ck, CK_242X), | 1755 | CLK(NULL, "func_96m_ck", &func_96m_ck, CK_242X), |
| 1768 | CLK(NULL, "func_48m_ck", &func_48m_ck, CK_242X), | 1756 | CLK(NULL, "func_48m_ck", &func_48m_ck, CK_242X), |
| 1769 | CLK(NULL, "func_12m_ck", &func_12m_ck, CK_242X), | 1757 | CLK(NULL, "func_12m_ck", &func_12m_ck, CK_242X), |
| 1770 | CLK(NULL, "ck_wdt1_osc", &wdt1_osc_ck, CK_242X), | ||
| 1771 | CLK(NULL, "sys_clkout_src", &sys_clkout_src, CK_242X), | 1758 | CLK(NULL, "sys_clkout_src", &sys_clkout_src, CK_242X), |
| 1772 | CLK(NULL, "sys_clkout", &sys_clkout, CK_242X), | 1759 | CLK(NULL, "sys_clkout", &sys_clkout, CK_242X), |
| 1773 | CLK(NULL, "sys_clkout2_src", &sys_clkout2_src, CK_242X), | 1760 | CLK(NULL, "sys_clkout2_src", &sys_clkout2_src, CK_242X), |
| @@ -1797,7 +1784,6 @@ static struct omap_clk omap2420_clks[] = { | |||
| 1797 | /* L4 domain clocks */ | 1784 | /* L4 domain clocks */ |
| 1798 | CLK(NULL, "l4_ck", &l4_ck, CK_242X), | 1785 | CLK(NULL, "l4_ck", &l4_ck, CK_242X), |
| 1799 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_242X), | 1786 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_242X), |
| 1800 | CLK(NULL, "wu_l4_ick", &wu_l4_ick, CK_242X), | ||
| 1801 | /* virtual meta-group clock */ | 1787 | /* virtual meta-group clock */ |
| 1802 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_242X), | 1788 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_242X), |
| 1803 | /* general l4 interface ck, multi-parent functional clk */ | 1789 | /* general l4 interface ck, multi-parent functional clk */ |
diff --git a/arch/arm/mach-omap2/cclock2430_data.c b/arch/arm/mach-omap2/cclock2430_data.c index eb3dab68d536..aed8f74ca076 100644 --- a/arch/arm/mach-omap2/cclock2430_data.c +++ b/arch/arm/mach-omap2/cclock2430_data.c | |||
| @@ -601,15 +601,10 @@ static struct clk_hw_omap gpios_fck_hw = { | |||
| 601 | 601 | ||
| 602 | DEFINE_STRUCT_CLK(gpios_fck, gpio5_fck_parent_names, aes_ick_ops); | 602 | DEFINE_STRUCT_CLK(gpios_fck, gpio5_fck_parent_names, aes_ick_ops); |
| 603 | 603 | ||
| 604 | static struct clk wu_l4_ick; | ||
| 605 | |||
| 606 | DEFINE_STRUCT_CLK_HW_OMAP(wu_l4_ick, "wkup_clkdm"); | ||
| 607 | DEFINE_STRUCT_CLK(wu_l4_ick, dpll_ck_parent_names, core_ck_ops); | ||
| 608 | |||
| 609 | static struct clk gpios_ick; | 604 | static struct clk gpios_ick; |
| 610 | 605 | ||
| 611 | static const char *gpios_ick_parent_names[] = { | 606 | static const char *gpios_ick_parent_names[] = { |
| 612 | "wu_l4_ick", | 607 | "sys_ck", |
| 613 | }; | 608 | }; |
| 614 | 609 | ||
| 615 | static struct clk_hw_omap gpios_ick_hw = { | 610 | static struct clk_hw_omap gpios_ick_hw = { |
| @@ -1811,13 +1806,6 @@ static struct clk_hw_omap wdt1_ick_hw = { | |||
| 1811 | 1806 | ||
| 1812 | DEFINE_STRUCT_CLK(wdt1_ick, gpios_ick_parent_names, aes_ick_ops); | 1807 | DEFINE_STRUCT_CLK(wdt1_ick, gpios_ick_parent_names, aes_ick_ops); |
| 1813 | 1808 | ||
| 1814 | static struct clk wdt1_osc_ck; | ||
| 1815 | |||
| 1816 | static const struct clk_ops wdt1_osc_ck_ops = {}; | ||
| 1817 | |||
| 1818 | DEFINE_STRUCT_CLK_HW_OMAP(wdt1_osc_ck, NULL); | ||
| 1819 | DEFINE_STRUCT_CLK(wdt1_osc_ck, sys_ck_parent_names, wdt1_osc_ck_ops); | ||
| 1820 | |||
| 1821 | static struct clk wdt4_fck; | 1809 | static struct clk wdt4_fck; |
| 1822 | 1810 | ||
| 1823 | static struct clk_hw_omap wdt4_fck_hw = { | 1811 | static struct clk_hw_omap wdt4_fck_hw = { |
| @@ -1869,7 +1857,6 @@ static struct omap_clk omap2430_clks[] = { | |||
| 1869 | CLK(NULL, "func_96m_ck", &func_96m_ck, CK_243X), | 1857 | CLK(NULL, "func_96m_ck", &func_96m_ck, CK_243X), |
| 1870 | CLK(NULL, "func_48m_ck", &func_48m_ck, CK_243X), | 1858 | CLK(NULL, "func_48m_ck", &func_48m_ck, CK_243X), |
| 1871 | CLK(NULL, "func_12m_ck", &func_12m_ck, CK_243X), | 1859 | CLK(NULL, "func_12m_ck", &func_12m_ck, CK_243X), |
| 1872 | CLK(NULL, "ck_wdt1_osc", &wdt1_osc_ck, CK_243X), | ||
| 1873 | CLK(NULL, "sys_clkout_src", &sys_clkout_src, CK_243X), | 1860 | CLK(NULL, "sys_clkout_src", &sys_clkout_src, CK_243X), |
| 1874 | CLK(NULL, "sys_clkout", &sys_clkout, CK_243X), | 1861 | CLK(NULL, "sys_clkout", &sys_clkout, CK_243X), |
| 1875 | CLK(NULL, "emul_ck", &emul_ck, CK_243X), | 1862 | CLK(NULL, "emul_ck", &emul_ck, CK_243X), |
| @@ -1898,7 +1885,6 @@ static struct omap_clk omap2430_clks[] = { | |||
| 1898 | /* L4 domain clocks */ | 1885 | /* L4 domain clocks */ |
| 1899 | CLK(NULL, "l4_ck", &l4_ck, CK_243X), | 1886 | CLK(NULL, "l4_ck", &l4_ck, CK_243X), |
| 1900 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X), | 1887 | CLK(NULL, "ssi_l4_ick", &ssi_l4_ick, CK_243X), |
| 1901 | CLK(NULL, "wu_l4_ick", &wu_l4_ick, CK_243X), | ||
| 1902 | /* virtual meta-group clock */ | 1888 | /* virtual meta-group clock */ |
| 1903 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X), | 1889 | CLK(NULL, "virt_prcm_set", &virt_prcm_set, CK_243X), |
| 1904 | /* general l4 interface ck, multi-parent functional clk */ | 1890 | /* general l4 interface ck, multi-parent functional clk */ |
diff --git a/arch/arm/mach-omap2/cclock44xx_data.c b/arch/arm/mach-omap2/cclock44xx_data.c index a2cc046b47f4..cebe2b31943e 100644 --- a/arch/arm/mach-omap2/cclock44xx_data.c +++ b/arch/arm/mach-omap2/cclock44xx_data.c | |||
| @@ -16,6 +16,10 @@ | |||
| 16 | * XXX Some of the ES1 clocks have been removed/changed; once support | 16 | * XXX Some of the ES1 clocks have been removed/changed; once support |
| 17 | * is added for discriminating clocks by ES level, these should be added back | 17 | * is added for discriminating clocks by ES level, these should be added back |
| 18 | * in. | 18 | * in. |
| 19 | * | ||
| 20 | * XXX All of the remaining MODULEMODE clock nodes should be removed | ||
| 21 | * once the drivers are updated to use pm_runtime or to use the appropriate | ||
| 22 | * upstream clock node for rate/parent selection. | ||
| 19 | */ | 23 | */ |
| 20 | 24 | ||
| 21 | #include <linux/kernel.h> | 25 | #include <linux/kernel.h> |
| @@ -315,7 +319,7 @@ DEFINE_CLK_DIVIDER(dpll_abe_m2_ck, "dpll_abe_ck", &dpll_abe_ck, 0x0, | |||
| 315 | OMAP4430_CM_DIV_M2_DPLL_ABE, OMAP4430_DPLL_CLKOUT_DIV_SHIFT, | 319 | OMAP4430_CM_DIV_M2_DPLL_ABE, OMAP4430_DPLL_CLKOUT_DIV_SHIFT, |
| 316 | OMAP4430_DPLL_CLKOUT_DIV_WIDTH, CLK_DIVIDER_ONE_BASED, NULL); | 320 | OMAP4430_DPLL_CLKOUT_DIV_WIDTH, CLK_DIVIDER_ONE_BASED, NULL); |
| 317 | 321 | ||
| 318 | static const struct clk_ops dmic_fck_ops = { | 322 | static const struct clk_ops dpll_hsd_ops = { |
| 319 | .enable = &omap2_dflt_clk_enable, | 323 | .enable = &omap2_dflt_clk_enable, |
| 320 | .disable = &omap2_dflt_clk_disable, | 324 | .disable = &omap2_dflt_clk_disable, |
| 321 | .is_enabled = &omap2_dflt_clk_is_enabled, | 325 | .is_enabled = &omap2_dflt_clk_is_enabled, |
| @@ -325,6 +329,12 @@ static const struct clk_ops dmic_fck_ops = { | |||
| 325 | .init = &omap2_init_clk_clkdm, | 329 | .init = &omap2_init_clk_clkdm, |
| 326 | }; | 330 | }; |
| 327 | 331 | ||
| 332 | static const struct clk_ops func_dmic_abe_gfclk_ops = { | ||
| 333 | .recalc_rate = &omap2_clksel_recalc, | ||
| 334 | .get_parent = &omap2_clksel_find_parent_index, | ||
| 335 | .set_parent = &omap2_clksel_set_parent, | ||
| 336 | }; | ||
| 337 | |||
| 328 | static const char *dpll_core_m3x2_ck_parents[] = { | 338 | static const char *dpll_core_m3x2_ck_parents[] = { |
| 329 | "dpll_core_x2_ck", | 339 | "dpll_core_x2_ck", |
| 330 | }; | 340 | }; |
| @@ -340,7 +350,7 @@ DEFINE_CLK_OMAP_MUX_GATE(dpll_core_m3x2_ck, NULL, dpll_core_m3x2_div, | |||
| 340 | OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, | 350 | OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, |
| 341 | OMAP4430_CM_DIV_M3_DPLL_CORE, | 351 | OMAP4430_CM_DIV_M3_DPLL_CORE, |
| 342 | OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT, NULL, | 352 | OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT, NULL, |
| 343 | dpll_core_m3x2_ck_parents, dmic_fck_ops); | 353 | dpll_core_m3x2_ck_parents, dpll_hsd_ops); |
| 344 | 354 | ||
| 345 | DEFINE_CLK_OMAP_HSDIVIDER(dpll_core_m7x2_ck, "dpll_core_x2_ck", | 355 | DEFINE_CLK_OMAP_HSDIVIDER(dpll_core_m7x2_ck, "dpll_core_x2_ck", |
| 346 | &dpll_core_x2_ck, 0x0, OMAP4430_CM_DIV_M7_DPLL_CORE, | 356 | &dpll_core_x2_ck, 0x0, OMAP4430_CM_DIV_M7_DPLL_CORE, |
| @@ -547,7 +557,7 @@ DEFINE_CLK_OMAP_MUX_GATE(dpll_per_m3x2_ck, NULL, dpll_per_m3x2_div, | |||
| 547 | OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, | 557 | OMAP4430_DPLL_CLKOUTHIF_DIV_MASK, |
| 548 | OMAP4430_CM_DIV_M3_DPLL_PER, | 558 | OMAP4430_CM_DIV_M3_DPLL_PER, |
| 549 | OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT, NULL, | 559 | OMAP4430_DPLL_CLKOUTHIF_GATE_CTRL_SHIFT, NULL, |
| 550 | dpll_per_m3x2_ck_parents, dmic_fck_ops); | 560 | dpll_per_m3x2_ck_parents, dpll_hsd_ops); |
| 551 | 561 | ||
| 552 | DEFINE_CLK_OMAP_HSDIVIDER(dpll_per_m4x2_ck, "dpll_per_x2_ck", &dpll_per_x2_ck, | 562 | DEFINE_CLK_OMAP_HSDIVIDER(dpll_per_m4x2_ck, "dpll_per_x2_ck", &dpll_per_x2_ck, |
| 553 | 0x0, OMAP4430_CM_DIV_M4_DPLL_PER, | 563 | 0x0, OMAP4430_CM_DIV_M4_DPLL_PER, |
| @@ -749,10 +759,6 @@ DEFINE_CLK_GATE(aes2_fck, "l3_div_ck", &l3_div_ck, 0x0, | |||
| 749 | OMAP4430_CM_L4SEC_AES2_CLKCTRL, | 759 | OMAP4430_CM_L4SEC_AES2_CLKCTRL, |
| 750 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 760 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); |
| 751 | 761 | ||
| 752 | DEFINE_CLK_GATE(aess_fck, "aess_fclk", &aess_fclk, 0x0, | ||
| 753 | OMAP4430_CM1_ABE_AESS_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 754 | 0x0, NULL); | ||
| 755 | |||
| 756 | DEFINE_CLK_GATE(bandgap_fclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 762 | DEFINE_CLK_GATE(bandgap_fclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 757 | OMAP4430_CM_WKUP_BANDGAP_CLKCTRL, | 763 | OMAP4430_CM_WKUP_BANDGAP_CLKCTRL, |
| 758 | OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT, 0x0, NULL); | 764 | OMAP4430_OPTFCLKEN_BGAP_32K_SHIFT, 0x0, NULL); |
| @@ -774,11 +780,6 @@ DEFINE_CLK_GATE(bandgap_ts_fclk, "div_ts_ck", &div_ts_ck, 0x0, | |||
| 774 | OMAP4460_OPTFCLKEN_TS_FCLK_SHIFT, | 780 | OMAP4460_OPTFCLKEN_TS_FCLK_SHIFT, |
| 775 | 0x0, NULL); | 781 | 0x0, NULL); |
| 776 | 782 | ||
| 777 | DEFINE_CLK_GATE(des3des_fck, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 778 | OMAP4430_CM_L4SEC_DES3DES_CLKCTRL, | ||
| 779 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 780 | 0x0, NULL); | ||
| 781 | |||
| 782 | static const char *dmic_sync_mux_ck_parents[] = { | 783 | static const char *dmic_sync_mux_ck_parents[] = { |
| 783 | "abe_24m_fclk", "syc_clk_div_ck", "func_24m_clk", | 784 | "abe_24m_fclk", "syc_clk_div_ck", "func_24m_clk", |
| 784 | }; | 785 | }; |
| @@ -795,23 +796,13 @@ static const struct clksel func_dmic_abe_gfclk_sel[] = { | |||
| 795 | { .parent = NULL }, | 796 | { .parent = NULL }, |
| 796 | }; | 797 | }; |
| 797 | 798 | ||
| 798 | static const char *dmic_fck_parents[] = { | 799 | static const char *func_dmic_abe_gfclk_parents[] = { |
| 799 | "dmic_sync_mux_ck", "pad_clks_ck", "slimbus_clk", | 800 | "dmic_sync_mux_ck", "pad_clks_ck", "slimbus_clk", |
| 800 | }; | 801 | }; |
| 801 | 802 | ||
| 802 | /* Merged func_dmic_abe_gfclk into dmic */ | 803 | DEFINE_CLK_OMAP_MUX(func_dmic_abe_gfclk, "abe_clkdm", func_dmic_abe_gfclk_sel, |
| 803 | static struct clk dmic_fck; | 804 | OMAP4430_CM1_ABE_DMIC_CLKCTRL, OMAP4430_CLKSEL_SOURCE_MASK, |
| 804 | 805 | func_dmic_abe_gfclk_parents, func_dmic_abe_gfclk_ops); | |
| 805 | DEFINE_CLK_OMAP_MUX_GATE(dmic_fck, "abe_clkdm", func_dmic_abe_gfclk_sel, | ||
| 806 | OMAP4430_CM1_ABE_DMIC_CLKCTRL, | ||
| 807 | OMAP4430_CLKSEL_SOURCE_MASK, | ||
| 808 | OMAP4430_CM1_ABE_DMIC_CLKCTRL, | ||
| 809 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 810 | dmic_fck_parents, dmic_fck_ops); | ||
| 811 | |||
| 812 | DEFINE_CLK_GATE(dsp_fck, "dpll_iva_m4x2_ck", &dpll_iva_m4x2_ck, 0x0, | ||
| 813 | OMAP4430_CM_TESLA_TESLA_CLKCTRL, | ||
| 814 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 815 | 806 | ||
| 816 | DEFINE_CLK_GATE(dss_sys_clk, "syc_clk_div_ck", &syc_clk_div_ck, 0x0, | 807 | DEFINE_CLK_GATE(dss_sys_clk, "syc_clk_div_ck", &syc_clk_div_ck, 0x0, |
| 817 | OMAP4430_CM_DSS_DSS_CLKCTRL, | 808 | OMAP4430_CM_DSS_DSS_CLKCTRL, |
| @@ -833,177 +824,57 @@ DEFINE_CLK_GATE(dss_fck, "l3_div_ck", &l3_div_ck, 0x0, | |||
| 833 | OMAP4430_CM_DSS_DSS_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | 824 | OMAP4430_CM_DSS_DSS_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, |
| 834 | 0x0, NULL); | 825 | 0x0, NULL); |
| 835 | 826 | ||
| 836 | DEFINE_CLK_GATE(efuse_ctrl_cust_fck, "sys_clkin_ck", &sys_clkin_ck, 0x0, | ||
| 837 | OMAP4430_CM_CEFUSE_CEFUSE_CLKCTRL, | ||
| 838 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 839 | |||
| 840 | DEFINE_CLK_GATE(emif1_fck, "ddrphy_ck", &ddrphy_ck, 0x0, | ||
| 841 | OMAP4430_CM_MEMIF_EMIF_1_CLKCTRL, | ||
| 842 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 843 | |||
| 844 | DEFINE_CLK_GATE(emif2_fck, "ddrphy_ck", &ddrphy_ck, 0x0, | ||
| 845 | OMAP4430_CM_MEMIF_EMIF_2_CLKCTRL, | ||
| 846 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 847 | |||
| 848 | DEFINE_CLK_DIVIDER(fdif_fck, "dpll_per_m4x2_ck", &dpll_per_m4x2_ck, 0x0, | 827 | DEFINE_CLK_DIVIDER(fdif_fck, "dpll_per_m4x2_ck", &dpll_per_m4x2_ck, 0x0, |
| 849 | OMAP4430_CM_CAM_FDIF_CLKCTRL, OMAP4430_CLKSEL_FCLK_SHIFT, | 828 | OMAP4430_CM_CAM_FDIF_CLKCTRL, OMAP4430_CLKSEL_FCLK_SHIFT, |
| 850 | OMAP4430_CLKSEL_FCLK_WIDTH, CLK_DIVIDER_POWER_OF_TWO, NULL); | 829 | OMAP4430_CLKSEL_FCLK_WIDTH, CLK_DIVIDER_POWER_OF_TWO, NULL); |
| 851 | 830 | ||
| 852 | DEFINE_CLK_GATE(fpka_fck, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 853 | OMAP4430_CM_L4SEC_PKAEIP29_CLKCTRL, | ||
| 854 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 855 | |||
| 856 | DEFINE_CLK_GATE(gpio1_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 831 | DEFINE_CLK_GATE(gpio1_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 857 | OMAP4430_CM_WKUP_GPIO1_CLKCTRL, | 832 | OMAP4430_CM_WKUP_GPIO1_CLKCTRL, |
| 858 | OMAP4430_OPTFCLKEN_DBCLK_SHIFT, 0x0, NULL); | 833 | OMAP4430_OPTFCLKEN_DBCLK_SHIFT, 0x0, NULL); |
| 859 | 834 | ||
| 860 | DEFINE_CLK_GATE(gpio1_ick, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, 0x0, | ||
| 861 | OMAP4430_CM_WKUP_GPIO1_CLKCTRL, | ||
| 862 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 863 | |||
| 864 | DEFINE_CLK_GATE(gpio2_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 835 | DEFINE_CLK_GATE(gpio2_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 865 | OMAP4430_CM_L4PER_GPIO2_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, | 836 | OMAP4430_CM_L4PER_GPIO2_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, |
| 866 | 0x0, NULL); | 837 | 0x0, NULL); |
| 867 | 838 | ||
| 868 | DEFINE_CLK_GATE(gpio2_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 869 | OMAP4430_CM_L4PER_GPIO2_CLKCTRL, | ||
| 870 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 871 | |||
| 872 | DEFINE_CLK_GATE(gpio3_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 839 | DEFINE_CLK_GATE(gpio3_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 873 | OMAP4430_CM_L4PER_GPIO3_CLKCTRL, | 840 | OMAP4430_CM_L4PER_GPIO3_CLKCTRL, |
| 874 | OMAP4430_OPTFCLKEN_DBCLK_SHIFT, 0x0, NULL); | 841 | OMAP4430_OPTFCLKEN_DBCLK_SHIFT, 0x0, NULL); |
| 875 | 842 | ||
| 876 | DEFINE_CLK_GATE(gpio3_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 877 | OMAP4430_CM_L4PER_GPIO3_CLKCTRL, | ||
| 878 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 879 | |||
| 880 | DEFINE_CLK_GATE(gpio4_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 843 | DEFINE_CLK_GATE(gpio4_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 881 | OMAP4430_CM_L4PER_GPIO4_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, | 844 | OMAP4430_CM_L4PER_GPIO4_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, |
| 882 | 0x0, NULL); | 845 | 0x0, NULL); |
| 883 | 846 | ||
| 884 | DEFINE_CLK_GATE(gpio4_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 885 | OMAP4430_CM_L4PER_GPIO4_CLKCTRL, | ||
| 886 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 887 | |||
| 888 | DEFINE_CLK_GATE(gpio5_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 847 | DEFINE_CLK_GATE(gpio5_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 889 | OMAP4430_CM_L4PER_GPIO5_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, | 848 | OMAP4430_CM_L4PER_GPIO5_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, |
| 890 | 0x0, NULL); | 849 | 0x0, NULL); |
| 891 | 850 | ||
| 892 | DEFINE_CLK_GATE(gpio5_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 893 | OMAP4430_CM_L4PER_GPIO5_CLKCTRL, | ||
| 894 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 895 | |||
| 896 | DEFINE_CLK_GATE(gpio6_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, | 851 | DEFINE_CLK_GATE(gpio6_dbclk, "sys_32k_ck", &sys_32k_ck, 0x0, |
| 897 | OMAP4430_CM_L4PER_GPIO6_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, | 852 | OMAP4430_CM_L4PER_GPIO6_CLKCTRL, OMAP4430_OPTFCLKEN_DBCLK_SHIFT, |
| 898 | 0x0, NULL); | 853 | 0x0, NULL); |
| 899 | 854 | ||
| 900 | DEFINE_CLK_GATE(gpio6_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 901 | OMAP4430_CM_L4PER_GPIO6_CLKCTRL, | ||
| 902 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 903 | |||
| 904 | DEFINE_CLK_GATE(gpmc_ick, "l3_div_ck", &l3_div_ck, 0x0, | ||
| 905 | OMAP4430_CM_L3_2_GPMC_CLKCTRL, OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 906 | 0x0, NULL); | ||
| 907 | |||
| 908 | static const struct clksel sgx_clk_mux_sel[] = { | 855 | static const struct clksel sgx_clk_mux_sel[] = { |
| 909 | { .parent = &dpll_core_m7x2_ck, .rates = div_1_0_rates }, | 856 | { .parent = &dpll_core_m7x2_ck, .rates = div_1_0_rates }, |
| 910 | { .parent = &dpll_per_m7x2_ck, .rates = div_1_1_rates }, | 857 | { .parent = &dpll_per_m7x2_ck, .rates = div_1_1_rates }, |
| 911 | { .parent = NULL }, | 858 | { .parent = NULL }, |
| 912 | }; | 859 | }; |
| 913 | 860 | ||
| 914 | static const char *gpu_fck_parents[] = { | 861 | static const char *sgx_clk_mux_parents[] = { |
| 915 | "dpll_core_m7x2_ck", "dpll_per_m7x2_ck", | 862 | "dpll_core_m7x2_ck", "dpll_per_m7x2_ck", |
| 916 | }; | 863 | }; |
| 917 | 864 | ||
| 918 | /* Merged sgx_clk_mux into gpu */ | 865 | DEFINE_CLK_OMAP_MUX(sgx_clk_mux, "l3_gfx_clkdm", sgx_clk_mux_sel, |
| 919 | DEFINE_CLK_OMAP_MUX_GATE(gpu_fck, "l3_gfx_clkdm", sgx_clk_mux_sel, | 866 | OMAP4430_CM_GFX_GFX_CLKCTRL, OMAP4430_CLKSEL_SGX_FCLK_MASK, |
| 920 | OMAP4430_CM_GFX_GFX_CLKCTRL, | 867 | sgx_clk_mux_parents, func_dmic_abe_gfclk_ops); |
| 921 | OMAP4430_CLKSEL_SGX_FCLK_MASK, | ||
| 922 | OMAP4430_CM_GFX_GFX_CLKCTRL, | ||
| 923 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 924 | gpu_fck_parents, dmic_fck_ops); | ||
| 925 | |||
| 926 | DEFINE_CLK_GATE(hdq1w_fck, "func_12m_fclk", &func_12m_fclk, 0x0, | ||
| 927 | OMAP4430_CM_L4PER_HDQ1W_CLKCTRL, | ||
| 928 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 929 | 868 | ||
| 930 | DEFINE_CLK_DIVIDER(hsi_fck, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, 0x0, | 869 | DEFINE_CLK_DIVIDER(hsi_fck, "dpll_per_m2x2_ck", &dpll_per_m2x2_ck, 0x0, |
| 931 | OMAP4430_CM_L3INIT_HSI_CLKCTRL, OMAP4430_CLKSEL_24_25_SHIFT, | 870 | OMAP4430_CM_L3INIT_HSI_CLKCTRL, OMAP4430_CLKSEL_24_25_SHIFT, |
| 932 | OMAP4430_CLKSEL_24_25_WIDTH, CLK_DIVIDER_POWER_OF_TWO, | 871 | OMAP4430_CLKSEL_24_25_WIDTH, CLK_DIVIDER_POWER_OF_TWO, |
| 933 | NULL); | 872 | NULL); |
| 934 | 873 | ||
| 935 | DEFINE_CLK_GATE(i2c1_fck, "func_96m_fclk", &func_96m_fclk, 0x0, | ||
| 936 | OMAP4430_CM_L4PER_I2C1_CLKCTRL, | ||
| 937 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 938 | |||
| 939 | DEFINE_CLK_GATE(i2c2_fck, "func_96m_fclk", &func_96m_fclk, 0x0, | ||
| 940 | OMAP4430_CM_L4PER_I2C2_CLKCTRL, | ||
| 941 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 942 | |||
| 943 | DEFINE_CLK_GATE(i2c3_fck, "func_96m_fclk", &func_96m_fclk, 0x0, | ||
| 944 | OMAP4430_CM_L4PER_I2C3_CLKCTRL, | ||
| 945 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 946 | |||
| 947 | DEFINE_CLK_GATE(i2c4_fck, "func_96m_fclk", &func_96m_fclk, 0x0, | ||
| 948 | OMAP4430_CM_L4PER_I2C4_CLKCTRL, | ||
| 949 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 950 | |||
| 951 | DEFINE_CLK_GATE(ipu_fck, "ducati_clk_mux_ck", &ducati_clk_mux_ck, 0x0, | ||
| 952 | OMAP4430_CM_DUCATI_DUCATI_CLKCTRL, | ||
| 953 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 954 | |||
| 955 | DEFINE_CLK_GATE(iss_ctrlclk, "func_96m_fclk", &func_96m_fclk, 0x0, | 874 | DEFINE_CLK_GATE(iss_ctrlclk, "func_96m_fclk", &func_96m_fclk, 0x0, |
| 956 | OMAP4430_CM_CAM_ISS_CLKCTRL, OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT, | 875 | OMAP4430_CM_CAM_ISS_CLKCTRL, OMAP4430_OPTFCLKEN_CTRLCLK_SHIFT, |
| 957 | 0x0, NULL); | 876 | 0x0, NULL); |
| 958 | 877 | ||
| 959 | DEFINE_CLK_GATE(iss_fck, "ducati_clk_mux_ck", &ducati_clk_mux_ck, 0x0, | ||
| 960 | OMAP4430_CM_CAM_ISS_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 961 | 0x0, NULL); | ||
| 962 | |||
| 963 | DEFINE_CLK_GATE(iva_fck, "dpll_iva_m5x2_ck", &dpll_iva_m5x2_ck, 0x0, | ||
| 964 | OMAP4430_CM_IVAHD_IVAHD_CLKCTRL, | ||
| 965 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 966 | |||
| 967 | DEFINE_CLK_GATE(kbd_fck, "sys_32k_ck", &sys_32k_ck, 0x0, | ||
| 968 | OMAP4430_CM_WKUP_KEYBOARD_CLKCTRL, | ||
| 969 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 970 | |||
| 971 | static struct clk l3_instr_ick; | ||
| 972 | |||
| 973 | static const char *l3_instr_ick_parent_names[] = { | ||
| 974 | "l3_div_ck", | ||
| 975 | }; | ||
| 976 | |||
| 977 | static const struct clk_ops l3_instr_ick_ops = { | ||
| 978 | .enable = &omap2_dflt_clk_enable, | ||
| 979 | .disable = &omap2_dflt_clk_disable, | ||
| 980 | .is_enabled = &omap2_dflt_clk_is_enabled, | ||
| 981 | .init = &omap2_init_clk_clkdm, | ||
| 982 | }; | ||
| 983 | |||
| 984 | static struct clk_hw_omap l3_instr_ick_hw = { | ||
| 985 | .hw = { | ||
| 986 | .clk = &l3_instr_ick, | ||
| 987 | }, | ||
| 988 | .enable_reg = OMAP4430_CM_L3INSTR_L3_INSTR_CLKCTRL, | ||
| 989 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 990 | .clkdm_name = "l3_instr_clkdm", | ||
| 991 | }; | ||
| 992 | |||
| 993 | DEFINE_STRUCT_CLK(l3_instr_ick, l3_instr_ick_parent_names, l3_instr_ick_ops); | ||
| 994 | |||
| 995 | static struct clk l3_main_3_ick; | ||
| 996 | static struct clk_hw_omap l3_main_3_ick_hw = { | ||
| 997 | .hw = { | ||
| 998 | .clk = &l3_main_3_ick, | ||
| 999 | }, | ||
| 1000 | .enable_reg = OMAP4430_CM_L3INSTR_L3_3_CLKCTRL, | ||
| 1001 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 1002 | .clkdm_name = "l3_instr_clkdm", | ||
| 1003 | }; | ||
| 1004 | |||
| 1005 | DEFINE_STRUCT_CLK(l3_main_3_ick, l3_instr_ick_parent_names, l3_instr_ick_ops); | ||
| 1006 | |||
| 1007 | DEFINE_CLK_MUX(mcasp_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, | 878 | DEFINE_CLK_MUX(mcasp_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, |
| 1008 | OMAP4430_CM1_ABE_MCASP_CLKCTRL, | 879 | OMAP4430_CM1_ABE_MCASP_CLKCTRL, |
| 1009 | OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT, | 880 | OMAP4430_CLKSEL_INTERNAL_SOURCE_SHIFT, |
| @@ -1016,17 +887,13 @@ static const struct clksel func_mcasp_abe_gfclk_sel[] = { | |||
| 1016 | { .parent = NULL }, | 887 | { .parent = NULL }, |
| 1017 | }; | 888 | }; |
| 1018 | 889 | ||
| 1019 | static const char *mcasp_fck_parents[] = { | 890 | static const char *func_mcasp_abe_gfclk_parents[] = { |
| 1020 | "mcasp_sync_mux_ck", "pad_clks_ck", "slimbus_clk", | 891 | "mcasp_sync_mux_ck", "pad_clks_ck", "slimbus_clk", |
| 1021 | }; | 892 | }; |
| 1022 | 893 | ||
| 1023 | /* Merged func_mcasp_abe_gfclk into mcasp */ | 894 | DEFINE_CLK_OMAP_MUX(func_mcasp_abe_gfclk, "abe_clkdm", func_mcasp_abe_gfclk_sel, |
| 1024 | DEFINE_CLK_OMAP_MUX_GATE(mcasp_fck, "abe_clkdm", func_mcasp_abe_gfclk_sel, | 895 | OMAP4430_CM1_ABE_MCASP_CLKCTRL, OMAP4430_CLKSEL_SOURCE_MASK, |
| 1025 | OMAP4430_CM1_ABE_MCASP_CLKCTRL, | 896 | func_mcasp_abe_gfclk_parents, func_dmic_abe_gfclk_ops); |
| 1026 | OMAP4430_CLKSEL_SOURCE_MASK, | ||
| 1027 | OMAP4430_CM1_ABE_MCASP_CLKCTRL, | ||
| 1028 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1029 | mcasp_fck_parents, dmic_fck_ops); | ||
| 1030 | 897 | ||
| 1031 | DEFINE_CLK_MUX(mcbsp1_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, | 898 | DEFINE_CLK_MUX(mcbsp1_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, |
| 1032 | OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, | 899 | OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, |
| @@ -1040,17 +907,14 @@ static const struct clksel func_mcbsp1_gfclk_sel[] = { | |||
| 1040 | { .parent = NULL }, | 907 | { .parent = NULL }, |
| 1041 | }; | 908 | }; |
| 1042 | 909 | ||
| 1043 | static const char *mcbsp1_fck_parents[] = { | 910 | static const char *func_mcbsp1_gfclk_parents[] = { |
| 1044 | "mcbsp1_sync_mux_ck", "pad_clks_ck", "slimbus_clk", | 911 | "mcbsp1_sync_mux_ck", "pad_clks_ck", "slimbus_clk", |
| 1045 | }; | 912 | }; |
| 1046 | 913 | ||
| 1047 | /* Merged func_mcbsp1_gfclk into mcbsp1 */ | 914 | DEFINE_CLK_OMAP_MUX(func_mcbsp1_gfclk, "abe_clkdm", func_mcbsp1_gfclk_sel, |
| 1048 | DEFINE_CLK_OMAP_MUX_GATE(mcbsp1_fck, "abe_clkdm", func_mcbsp1_gfclk_sel, | 915 | OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, |
| 1049 | OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, | 916 | OMAP4430_CLKSEL_SOURCE_MASK, func_mcbsp1_gfclk_parents, |
| 1050 | OMAP4430_CLKSEL_SOURCE_MASK, | 917 | func_dmic_abe_gfclk_ops); |
| 1051 | OMAP4430_CM1_ABE_MCBSP1_CLKCTRL, | ||
| 1052 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1053 | mcbsp1_fck_parents, dmic_fck_ops); | ||
| 1054 | 918 | ||
| 1055 | DEFINE_CLK_MUX(mcbsp2_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, | 919 | DEFINE_CLK_MUX(mcbsp2_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, |
| 1056 | OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, | 920 | OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, |
| @@ -1064,17 +928,14 @@ static const struct clksel func_mcbsp2_gfclk_sel[] = { | |||
| 1064 | { .parent = NULL }, | 928 | { .parent = NULL }, |
| 1065 | }; | 929 | }; |
| 1066 | 930 | ||
| 1067 | static const char *mcbsp2_fck_parents[] = { | 931 | static const char *func_mcbsp2_gfclk_parents[] = { |
| 1068 | "mcbsp2_sync_mux_ck", "pad_clks_ck", "slimbus_clk", | 932 | "mcbsp2_sync_mux_ck", "pad_clks_ck", "slimbus_clk", |
| 1069 | }; | 933 | }; |
| 1070 | 934 | ||
| 1071 | /* Merged func_mcbsp2_gfclk into mcbsp2 */ | 935 | DEFINE_CLK_OMAP_MUX(func_mcbsp2_gfclk, "abe_clkdm", func_mcbsp2_gfclk_sel, |
| 1072 | DEFINE_CLK_OMAP_MUX_GATE(mcbsp2_fck, "abe_clkdm", func_mcbsp2_gfclk_sel, | 936 | OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, |
| 1073 | OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, | 937 | OMAP4430_CLKSEL_SOURCE_MASK, func_mcbsp2_gfclk_parents, |
| 1074 | OMAP4430_CLKSEL_SOURCE_MASK, | 938 | func_dmic_abe_gfclk_ops); |
| 1075 | OMAP4430_CM1_ABE_MCBSP2_CLKCTRL, | ||
| 1076 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1077 | mcbsp2_fck_parents, dmic_fck_ops); | ||
| 1078 | 939 | ||
| 1079 | DEFINE_CLK_MUX(mcbsp3_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, | 940 | DEFINE_CLK_MUX(mcbsp3_sync_mux_ck, dmic_sync_mux_ck_parents, NULL, 0x0, |
| 1080 | OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, | 941 | OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, |
| @@ -1088,17 +949,14 @@ static const struct clksel func_mcbsp3_gfclk_sel[] = { | |||
| 1088 | { .parent = NULL }, | 949 | { .parent = NULL }, |
| 1089 | }; | 950 | }; |
| 1090 | 951 | ||
| 1091 | static const char *mcbsp3_fck_parents[] = { | 952 | static const char *func_mcbsp3_gfclk_parents[] = { |
| 1092 | "mcbsp3_sync_mux_ck", "pad_clks_ck", "slimbus_clk", | 953 | "mcbsp3_sync_mux_ck", "pad_clks_ck", "slimbus_clk", |
| 1093 | }; | 954 | }; |
| 1094 | 955 | ||
| 1095 | /* Merged func_mcbsp3_gfclk into mcbsp3 */ | 956 | DEFINE_CLK_OMAP_MUX(func_mcbsp3_gfclk, "abe_clkdm", func_mcbsp3_gfclk_sel, |
| 1096 | DEFINE_CLK_OMAP_MUX_GATE(mcbsp3_fck, "abe_clkdm", func_mcbsp3_gfclk_sel, | 957 | OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, |
| 1097 | OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, | 958 | OMAP4430_CLKSEL_SOURCE_MASK, func_mcbsp3_gfclk_parents, |
| 1098 | OMAP4430_CLKSEL_SOURCE_MASK, | 959 | func_dmic_abe_gfclk_ops); |
| 1099 | OMAP4430_CM1_ABE_MCBSP3_CLKCTRL, | ||
| 1100 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1101 | mcbsp3_fck_parents, dmic_fck_ops); | ||
| 1102 | 960 | ||
| 1103 | static const char *mcbsp4_sync_mux_ck_parents[] = { | 961 | static const char *mcbsp4_sync_mux_ck_parents[] = { |
| 1104 | "func_96m_fclk", "per_abe_nc_fclk", | 962 | "func_96m_fclk", "per_abe_nc_fclk", |
| @@ -1115,37 +973,14 @@ static const struct clksel per_mcbsp4_gfclk_sel[] = { | |||
| 1115 | { .parent = NULL }, | 973 | { .parent = NULL }, |
| 1116 | }; | 974 | }; |
| 1117 | 975 | ||
| 1118 | static const char *mcbsp4_fck_parents[] = { | 976 | static const char *per_mcbsp4_gfclk_parents[] = { |
| 1119 | "mcbsp4_sync_mux_ck", "pad_clks_ck", | 977 | "mcbsp4_sync_mux_ck", "pad_clks_ck", |
| 1120 | }; | 978 | }; |
| 1121 | 979 | ||
| 1122 | /* Merged per_mcbsp4_gfclk into mcbsp4 */ | 980 | DEFINE_CLK_OMAP_MUX(per_mcbsp4_gfclk, "l4_per_clkdm", per_mcbsp4_gfclk_sel, |
| 1123 | DEFINE_CLK_OMAP_MUX_GATE(mcbsp4_fck, "l4_per_clkdm", per_mcbsp4_gfclk_sel, | 981 | OMAP4430_CM_L4PER_MCBSP4_CLKCTRL, |
| 1124 | OMAP4430_CM_L4PER_MCBSP4_CLKCTRL, | 982 | OMAP4430_CLKSEL_SOURCE_24_24_MASK, per_mcbsp4_gfclk_parents, |
| 1125 | OMAP4430_CLKSEL_SOURCE_24_24_MASK, | 983 | func_dmic_abe_gfclk_ops); |
| 1126 | OMAP4430_CM_L4PER_MCBSP4_CLKCTRL, | ||
| 1127 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1128 | mcbsp4_fck_parents, dmic_fck_ops); | ||
| 1129 | |||
| 1130 | DEFINE_CLK_GATE(mcpdm_fck, "pad_clks_ck", &pad_clks_ck, 0x0, | ||
| 1131 | OMAP4430_CM1_ABE_PDM_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 1132 | 0x0, NULL); | ||
| 1133 | |||
| 1134 | DEFINE_CLK_GATE(mcspi1_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1135 | OMAP4430_CM_L4PER_MCSPI1_CLKCTRL, | ||
| 1136 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1137 | |||
| 1138 | DEFINE_CLK_GATE(mcspi2_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1139 | OMAP4430_CM_L4PER_MCSPI2_CLKCTRL, | ||
| 1140 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1141 | |||
| 1142 | DEFINE_CLK_GATE(mcspi3_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1143 | OMAP4430_CM_L4PER_MCSPI3_CLKCTRL, | ||
| 1144 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1145 | |||
| 1146 | DEFINE_CLK_GATE(mcspi4_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1147 | OMAP4430_CM_L4PER_MCSPI4_CLKCTRL, | ||
| 1148 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1149 | 984 | ||
| 1150 | static const struct clksel hsmmc1_fclk_sel[] = { | 985 | static const struct clksel hsmmc1_fclk_sel[] = { |
| 1151 | { .parent = &func_64m_fclk, .rates = div_1_0_rates }, | 986 | { .parent = &func_64m_fclk, .rates = div_1_0_rates }, |
| @@ -1153,69 +988,22 @@ static const struct clksel hsmmc1_fclk_sel[] = { | |||
| 1153 | { .parent = NULL }, | 988 | { .parent = NULL }, |
| 1154 | }; | 989 | }; |
| 1155 | 990 | ||
| 1156 | static const char *mmc1_fck_parents[] = { | 991 | static const char *hsmmc1_fclk_parents[] = { |
| 1157 | "func_64m_fclk", "func_96m_fclk", | 992 | "func_64m_fclk", "func_96m_fclk", |
| 1158 | }; | 993 | }; |
| 1159 | 994 | ||
| 1160 | /* Merged hsmmc1_fclk into mmc1 */ | 995 | DEFINE_CLK_OMAP_MUX(hsmmc1_fclk, "l3_init_clkdm", hsmmc1_fclk_sel, |
| 1161 | DEFINE_CLK_OMAP_MUX_GATE(mmc1_fck, "l3_init_clkdm", hsmmc1_fclk_sel, | 996 | OMAP4430_CM_L3INIT_MMC1_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1162 | OMAP4430_CM_L3INIT_MMC1_CLKCTRL, OMAP4430_CLKSEL_MASK, | 997 | hsmmc1_fclk_parents, func_dmic_abe_gfclk_ops); |
| 1163 | OMAP4430_CM_L3INIT_MMC1_CLKCTRL, | ||
| 1164 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1165 | mmc1_fck_parents, dmic_fck_ops); | ||
| 1166 | |||
| 1167 | /* Merged hsmmc2_fclk into mmc2 */ | ||
| 1168 | DEFINE_CLK_OMAP_MUX_GATE(mmc2_fck, "l3_init_clkdm", hsmmc1_fclk_sel, | ||
| 1169 | OMAP4430_CM_L3INIT_MMC2_CLKCTRL, OMAP4430_CLKSEL_MASK, | ||
| 1170 | OMAP4430_CM_L3INIT_MMC2_CLKCTRL, | ||
| 1171 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1172 | mmc1_fck_parents, dmic_fck_ops); | ||
| 1173 | |||
| 1174 | DEFINE_CLK_GATE(mmc3_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1175 | OMAP4430_CM_L4PER_MMCSD3_CLKCTRL, | ||
| 1176 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1177 | |||
| 1178 | DEFINE_CLK_GATE(mmc4_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1179 | OMAP4430_CM_L4PER_MMCSD4_CLKCTRL, | ||
| 1180 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1181 | |||
| 1182 | DEFINE_CLK_GATE(mmc5_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1183 | OMAP4430_CM_L4PER_MMCSD5_CLKCTRL, | ||
| 1184 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1185 | |||
| 1186 | DEFINE_CLK_GATE(ocp2scp_usb_phy_phy_48m, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1187 | OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL, | ||
| 1188 | OMAP4430_OPTFCLKEN_PHY_48M_SHIFT, 0x0, NULL); | ||
| 1189 | |||
| 1190 | DEFINE_CLK_GATE(ocp2scp_usb_phy_ick, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 1191 | OMAP4430_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL, | ||
| 1192 | OMAP4430_MODULEMODE_HWCTRL_SHIFT, 0x0, NULL); | ||
| 1193 | |||
| 1194 | static struct clk ocp_wp_noc_ick; | ||
| 1195 | |||
| 1196 | static struct clk_hw_omap ocp_wp_noc_ick_hw = { | ||
| 1197 | .hw = { | ||
| 1198 | .clk = &ocp_wp_noc_ick, | ||
| 1199 | }, | ||
| 1200 | .enable_reg = OMAP4430_CM_L3INSTR_OCP_WP1_CLKCTRL, | ||
| 1201 | .enable_bit = OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 1202 | .clkdm_name = "l3_instr_clkdm", | ||
| 1203 | }; | ||
| 1204 | |||
| 1205 | DEFINE_STRUCT_CLK(ocp_wp_noc_ick, l3_instr_ick_parent_names, l3_instr_ick_ops); | ||
| 1206 | 998 | ||
| 1207 | DEFINE_CLK_GATE(rng_ick, "l4_div_ck", &l4_div_ck, 0x0, | 999 | DEFINE_CLK_OMAP_MUX(hsmmc2_fclk, "l3_init_clkdm", hsmmc1_fclk_sel, |
| 1208 | OMAP4430_CM_L4SEC_RNG_CLKCTRL, OMAP4430_MODULEMODE_HWCTRL_SHIFT, | 1000 | OMAP4430_CM_L3INIT_MMC2_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1209 | 0x0, NULL); | 1001 | hsmmc1_fclk_parents, func_dmic_abe_gfclk_ops); |
| 1210 | 1002 | ||
| 1211 | DEFINE_CLK_GATE(sha2md5_fck, "l3_div_ck", &l3_div_ck, 0x0, | 1003 | DEFINE_CLK_GATE(sha2md5_fck, "l3_div_ck", &l3_div_ck, 0x0, |
| 1212 | OMAP4430_CM_L4SEC_SHA2MD51_CLKCTRL, | 1004 | OMAP4430_CM_L4SEC_SHA2MD51_CLKCTRL, |
| 1213 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 1005 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); |
| 1214 | 1006 | ||
| 1215 | DEFINE_CLK_GATE(sl2if_ick, "dpll_iva_m5x2_ck", &dpll_iva_m5x2_ck, 0x0, | ||
| 1216 | OMAP4430_CM_IVAHD_SL2_CLKCTRL, OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 1217 | 0x0, NULL); | ||
| 1218 | |||
| 1219 | DEFINE_CLK_GATE(slimbus1_fclk_1, "func_24m_clk", &func_24m_clk, 0x0, | 1007 | DEFINE_CLK_GATE(slimbus1_fclk_1, "func_24m_clk", &func_24m_clk, 0x0, |
| 1220 | OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL, | 1008 | OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL, |
| 1221 | OMAP4430_OPTFCLKEN_FCLK1_SHIFT, 0x0, NULL); | 1009 | OMAP4430_OPTFCLKEN_FCLK1_SHIFT, 0x0, NULL); |
| @@ -1232,10 +1020,6 @@ DEFINE_CLK_GATE(slimbus1_slimbus_clk, "slimbus_clk", &slimbus_clk, 0x0, | |||
| 1232 | OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL, | 1020 | OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL, |
| 1233 | OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT, 0x0, NULL); | 1021 | OMAP4430_OPTFCLKEN_SLIMBUS_CLK_11_11_SHIFT, 0x0, NULL); |
| 1234 | 1022 | ||
| 1235 | DEFINE_CLK_GATE(slimbus1_fck, "ocp_abe_iclk", &ocp_abe_iclk, 0x0, | ||
| 1236 | OMAP4430_CM1_ABE_SLIMBUS_CLKCTRL, | ||
| 1237 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1238 | |||
| 1239 | DEFINE_CLK_GATE(slimbus2_fclk_1, "per_abe_24m_fclk", &per_abe_24m_fclk, 0x0, | 1023 | DEFINE_CLK_GATE(slimbus2_fclk_1, "per_abe_24m_fclk", &per_abe_24m_fclk, 0x0, |
| 1240 | OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL, | 1024 | OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL, |
| 1241 | OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT, 0x0, NULL); | 1025 | OMAP4430_OPTFCLKEN_PERABE24M_GFCLK_SHIFT, 0x0, NULL); |
| @@ -1249,10 +1033,6 @@ DEFINE_CLK_GATE(slimbus2_slimbus_clk, "pad_slimbus_core_clks_ck", | |||
| 1249 | OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL, | 1033 | OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL, |
| 1250 | OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT, 0x0, NULL); | 1034 | OMAP4430_OPTFCLKEN_SLIMBUS_CLK_SHIFT, 0x0, NULL); |
| 1251 | 1035 | ||
| 1252 | DEFINE_CLK_GATE(slimbus2_fck, "l4_div_ck", &l4_div_ck, 0x0, | ||
| 1253 | OMAP4430_CM_L4PER_SLIMBUS2_CLKCTRL, | ||
| 1254 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1255 | |||
| 1256 | DEFINE_CLK_GATE(smartreflex_core_fck, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, | 1036 | DEFINE_CLK_GATE(smartreflex_core_fck, "l4_wkup_clk_mux_ck", &l4_wkup_clk_mux_ck, |
| 1257 | 0x0, OMAP4430_CM_ALWON_SR_CORE_CLKCTRL, | 1037 | 0x0, OMAP4430_CM_ALWON_SR_CORE_CLKCTRL, |
| 1258 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 1038 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); |
| @@ -1271,52 +1051,35 @@ static const struct clksel dmt1_clk_mux_sel[] = { | |||
| 1271 | { .parent = NULL }, | 1051 | { .parent = NULL }, |
| 1272 | }; | 1052 | }; |
| 1273 | 1053 | ||
| 1274 | /* Merged dmt1_clk_mux into timer1 */ | 1054 | DEFINE_CLK_OMAP_MUX(dmt1_clk_mux, "l4_wkup_clkdm", dmt1_clk_mux_sel, |
| 1275 | DEFINE_CLK_OMAP_MUX_GATE(timer1_fck, "l4_wkup_clkdm", dmt1_clk_mux_sel, | 1055 | OMAP4430_CM_WKUP_TIMER1_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1276 | OMAP4430_CM_WKUP_TIMER1_CLKCTRL, OMAP4430_CLKSEL_MASK, | 1056 | abe_dpll_bypass_clk_mux_ck_parents, |
| 1277 | OMAP4430_CM_WKUP_TIMER1_CLKCTRL, | 1057 | func_dmic_abe_gfclk_ops); |
| 1278 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | 1058 | |
| 1279 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | 1059 | DEFINE_CLK_OMAP_MUX(cm2_dm10_mux, "l4_per_clkdm", dmt1_clk_mux_sel, |
| 1280 | 1060 | OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL, OMAP4430_CLKSEL_MASK, | |
| 1281 | /* Merged cm2_dm10_mux into timer10 */ | 1061 | abe_dpll_bypass_clk_mux_ck_parents, |
| 1282 | DEFINE_CLK_OMAP_MUX_GATE(timer10_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | 1062 | func_dmic_abe_gfclk_ops); |
| 1283 | OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL, | 1063 | |
| 1284 | OMAP4430_CLKSEL_MASK, | 1064 | DEFINE_CLK_OMAP_MUX(cm2_dm11_mux, "l4_per_clkdm", dmt1_clk_mux_sel, |
| 1285 | OMAP4430_CM_L4PER_DMTIMER10_CLKCTRL, | 1065 | OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1286 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | 1066 | abe_dpll_bypass_clk_mux_ck_parents, |
| 1287 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | 1067 | func_dmic_abe_gfclk_ops); |
| 1288 | 1068 | ||
| 1289 | /* Merged cm2_dm11_mux into timer11 */ | 1069 | DEFINE_CLK_OMAP_MUX(cm2_dm2_mux, "l4_per_clkdm", dmt1_clk_mux_sel, |
| 1290 | DEFINE_CLK_OMAP_MUX_GATE(timer11_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | 1070 | OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1291 | OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL, | 1071 | abe_dpll_bypass_clk_mux_ck_parents, |
| 1292 | OMAP4430_CLKSEL_MASK, | 1072 | func_dmic_abe_gfclk_ops); |
| 1293 | OMAP4430_CM_L4PER_DMTIMER11_CLKCTRL, | 1073 | |
| 1294 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | 1074 | DEFINE_CLK_OMAP_MUX(cm2_dm3_mux, "l4_per_clkdm", dmt1_clk_mux_sel, |
| 1295 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | 1075 | OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1296 | 1076 | abe_dpll_bypass_clk_mux_ck_parents, | |
| 1297 | /* Merged cm2_dm2_mux into timer2 */ | 1077 | func_dmic_abe_gfclk_ops); |
| 1298 | DEFINE_CLK_OMAP_MUX_GATE(timer2_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | 1078 | |
| 1299 | OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL, | 1079 | DEFINE_CLK_OMAP_MUX(cm2_dm4_mux, "l4_per_clkdm", dmt1_clk_mux_sel, |
| 1300 | OMAP4430_CLKSEL_MASK, | 1080 | OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1301 | OMAP4430_CM_L4PER_DMTIMER2_CLKCTRL, | 1081 | abe_dpll_bypass_clk_mux_ck_parents, |
| 1302 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | 1082 | func_dmic_abe_gfclk_ops); |
| 1303 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | ||
| 1304 | |||
| 1305 | /* Merged cm2_dm3_mux into timer3 */ | ||
| 1306 | DEFINE_CLK_OMAP_MUX_GATE(timer3_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | ||
| 1307 | OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL, | ||
| 1308 | OMAP4430_CLKSEL_MASK, | ||
| 1309 | OMAP4430_CM_L4PER_DMTIMER3_CLKCTRL, | ||
| 1310 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1311 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | ||
| 1312 | |||
| 1313 | /* Merged cm2_dm4_mux into timer4 */ | ||
| 1314 | DEFINE_CLK_OMAP_MUX_GATE(timer4_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | ||
| 1315 | OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL, | ||
| 1316 | OMAP4430_CLKSEL_MASK, | ||
| 1317 | OMAP4430_CM_L4PER_DMTIMER4_CLKCTRL, | ||
| 1318 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1319 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | ||
| 1320 | 1083 | ||
| 1321 | static const struct clksel timer5_sync_mux_sel[] = { | 1084 | static const struct clksel timer5_sync_mux_sel[] = { |
| 1322 | { .parent = &syc_clk_div_ck, .rates = div_1_0_rates }, | 1085 | { .parent = &syc_clk_div_ck, .rates = div_1_0_rates }, |
| @@ -1324,61 +1087,30 @@ static const struct clksel timer5_sync_mux_sel[] = { | |||
| 1324 | { .parent = NULL }, | 1087 | { .parent = NULL }, |
| 1325 | }; | 1088 | }; |
| 1326 | 1089 | ||
| 1327 | static const char *timer5_fck_parents[] = { | 1090 | static const char *timer5_sync_mux_parents[] = { |
| 1328 | "syc_clk_div_ck", "sys_32k_ck", | 1091 | "syc_clk_div_ck", "sys_32k_ck", |
| 1329 | }; | 1092 | }; |
| 1330 | 1093 | ||
| 1331 | /* Merged timer5_sync_mux into timer5 */ | 1094 | DEFINE_CLK_OMAP_MUX(timer5_sync_mux, "abe_clkdm", timer5_sync_mux_sel, |
| 1332 | DEFINE_CLK_OMAP_MUX_GATE(timer5_fck, "abe_clkdm", timer5_sync_mux_sel, | 1095 | OMAP4430_CM1_ABE_TIMER5_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1333 | OMAP4430_CM1_ABE_TIMER5_CLKCTRL, OMAP4430_CLKSEL_MASK, | 1096 | timer5_sync_mux_parents, func_dmic_abe_gfclk_ops); |
| 1334 | OMAP4430_CM1_ABE_TIMER5_CLKCTRL, | ||
| 1335 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1336 | timer5_fck_parents, dmic_fck_ops); | ||
| 1337 | |||
| 1338 | /* Merged timer6_sync_mux into timer6 */ | ||
| 1339 | DEFINE_CLK_OMAP_MUX_GATE(timer6_fck, "abe_clkdm", timer5_sync_mux_sel, | ||
| 1340 | OMAP4430_CM1_ABE_TIMER6_CLKCTRL, OMAP4430_CLKSEL_MASK, | ||
| 1341 | OMAP4430_CM1_ABE_TIMER6_CLKCTRL, | ||
| 1342 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1343 | timer5_fck_parents, dmic_fck_ops); | ||
| 1344 | |||
| 1345 | /* Merged timer7_sync_mux into timer7 */ | ||
| 1346 | DEFINE_CLK_OMAP_MUX_GATE(timer7_fck, "abe_clkdm", timer5_sync_mux_sel, | ||
| 1347 | OMAP4430_CM1_ABE_TIMER7_CLKCTRL, OMAP4430_CLKSEL_MASK, | ||
| 1348 | OMAP4430_CM1_ABE_TIMER7_CLKCTRL, | ||
| 1349 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1350 | timer5_fck_parents, dmic_fck_ops); | ||
| 1351 | |||
| 1352 | /* Merged timer8_sync_mux into timer8 */ | ||
| 1353 | DEFINE_CLK_OMAP_MUX_GATE(timer8_fck, "abe_clkdm", timer5_sync_mux_sel, | ||
| 1354 | OMAP4430_CM1_ABE_TIMER8_CLKCTRL, OMAP4430_CLKSEL_MASK, | ||
| 1355 | OMAP4430_CM1_ABE_TIMER8_CLKCTRL, | ||
| 1356 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1357 | timer5_fck_parents, dmic_fck_ops); | ||
| 1358 | |||
| 1359 | /* Merged cm2_dm9_mux into timer9 */ | ||
| 1360 | DEFINE_CLK_OMAP_MUX_GATE(timer9_fck, "l4_per_clkdm", dmt1_clk_mux_sel, | ||
| 1361 | OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL, | ||
| 1362 | OMAP4430_CLKSEL_MASK, | ||
| 1363 | OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL, | ||
| 1364 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, NULL, | ||
| 1365 | abe_dpll_bypass_clk_mux_ck_parents, dmic_fck_ops); | ||
| 1366 | |||
| 1367 | DEFINE_CLK_GATE(uart1_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | ||
| 1368 | OMAP4430_CM_L4PER_UART1_CLKCTRL, | ||
| 1369 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | ||
| 1370 | 1097 | ||
| 1371 | DEFINE_CLK_GATE(uart2_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | 1098 | DEFINE_CLK_OMAP_MUX(timer6_sync_mux, "abe_clkdm", timer5_sync_mux_sel, |
| 1372 | OMAP4430_CM_L4PER_UART2_CLKCTRL, | 1099 | OMAP4430_CM1_ABE_TIMER6_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1373 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 1100 | timer5_sync_mux_parents, func_dmic_abe_gfclk_ops); |
| 1374 | 1101 | ||
| 1375 | DEFINE_CLK_GATE(uart3_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | 1102 | DEFINE_CLK_OMAP_MUX(timer7_sync_mux, "abe_clkdm", timer5_sync_mux_sel, |
| 1376 | OMAP4430_CM_L4PER_UART3_CLKCTRL, | 1103 | OMAP4430_CM1_ABE_TIMER7_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1377 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 1104 | timer5_sync_mux_parents, func_dmic_abe_gfclk_ops); |
| 1378 | 1105 | ||
| 1379 | DEFINE_CLK_GATE(uart4_fck, "func_48m_fclk", &func_48m_fclk, 0x0, | 1106 | DEFINE_CLK_OMAP_MUX(timer8_sync_mux, "abe_clkdm", timer5_sync_mux_sel, |
| 1380 | OMAP4430_CM_L4PER_UART4_CLKCTRL, | 1107 | OMAP4430_CM1_ABE_TIMER8_CLKCTRL, OMAP4430_CLKSEL_MASK, |
| 1381 | OMAP4430_MODULEMODE_SWCTRL_SHIFT, 0x0, NULL); | 1108 | timer5_sync_mux_parents, func_dmic_abe_gfclk_ops); |
| 1109 | |||
| 1110 | DEFINE_CLK_OMAP_MUX(cm2_dm9_mux, "l4_per_clkdm", dmt1_clk_mux_sel, | ||
| 1111 | OMAP4430_CM_L4PER_DMTIMER9_CLKCTRL, OMAP4430_CLKSEL_MASK, | ||
| 1112 | abe_dpll_bypass_clk_mux_ck_parents, | ||
| 1113 | func_dmic_abe_gfclk_ops); | ||
| 1382 | 1114 | ||
| 1383 | static struct clk usb_host_fs_fck; | 1115 | static struct clk usb_host_fs_fck; |
| 1384 | 1116 | ||
| @@ -1512,18 +1244,6 @@ DEFINE_CLK_GATE(usim_fclk, "usim_ck", &usim_ck, 0x0, | |||
| 1512 | OMAP4430_CM_WKUP_USIM_CLKCTRL, OMAP4430_OPTFCLKEN_FCLK_SHIFT, | 1244 | OMAP4430_CM_WKUP_USIM_CLKCTRL, OMAP4430_OPTFCLKEN_FCLK_SHIFT, |
| 1513 | 0x0, NULL); | 1245 | 0x0, NULL); |
| 1514 | 1246 | ||
| 1515 | DEFINE_CLK_GATE(usim_fck, "sys_32k_ck", &sys_32k_ck, 0x0, | ||
| 1516 | OMAP4430_CM_WKUP_USIM_CLKCTRL, OMAP4430_MODULEMODE_HWCTRL_SHIFT, | ||
| 1517 | 0x0, NULL); | ||
| 1518 | |||
| 1519 | DEFINE_CLK_GATE(wd_timer2_fck, "sys_32k_ck", &sys_32k_ck, 0x0, | ||
| 1520 | OMAP4430_CM_WKUP_WDT2_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 1521 | 0x0, NULL); | ||
| 1522 | |||
| 1523 | DEFINE_CLK_GATE(wd_timer3_fck, "sys_32k_ck", &sys_32k_ck, 0x0, | ||
| 1524 | OMAP4430_CM1_ABE_WDT3_CLKCTRL, OMAP4430_MODULEMODE_SWCTRL_SHIFT, | ||
| 1525 | 0x0, NULL); | ||
| 1526 | |||
| 1527 | /* Remaining optional clocks */ | 1247 | /* Remaining optional clocks */ |
| 1528 | static const char *pmd_stm_clock_mux_ck_parents[] = { | 1248 | static const char *pmd_stm_clock_mux_ck_parents[] = { |
| 1529 | "sys_clkin_ck", "dpll_core_m6x2_ck", "tie_low_clock_ck", | 1249 | "sys_clkin_ck", "dpll_core_m6x2_ck", "tie_low_clock_ck", |
| @@ -1774,106 +1494,61 @@ static struct omap_clk omap44xx_clks[] = { | |||
| 1774 | CLK(NULL, "syc_clk_div_ck", &syc_clk_div_ck, CK_443X), | 1494 | CLK(NULL, "syc_clk_div_ck", &syc_clk_div_ck, CK_443X), |
| 1775 | CLK(NULL, "aes1_fck", &aes1_fck, CK_443X), | 1495 | CLK(NULL, "aes1_fck", &aes1_fck, CK_443X), |
| 1776 | CLK(NULL, "aes2_fck", &aes2_fck, CK_443X), | 1496 | CLK(NULL, "aes2_fck", &aes2_fck, CK_443X), |
| 1777 | CLK(NULL, "aess_fck", &aess_fck, CK_443X), | ||
| 1778 | CLK(NULL, "bandgap_fclk", &bandgap_fclk, CK_443X), | 1497 | CLK(NULL, "bandgap_fclk", &bandgap_fclk, CK_443X), |
| 1779 | CLK(NULL, "div_ts_ck", &div_ts_ck, CK_446X), | 1498 | CLK(NULL, "div_ts_ck", &div_ts_ck, CK_446X), |
| 1780 | CLK(NULL, "bandgap_ts_fclk", &bandgap_ts_fclk, CK_446X), | 1499 | CLK(NULL, "bandgap_ts_fclk", &bandgap_ts_fclk, CK_446X), |
| 1781 | CLK(NULL, "des3des_fck", &des3des_fck, CK_443X), | ||
| 1782 | CLK(NULL, "dmic_sync_mux_ck", &dmic_sync_mux_ck, CK_443X), | 1500 | CLK(NULL, "dmic_sync_mux_ck", &dmic_sync_mux_ck, CK_443X), |
| 1783 | CLK(NULL, "dmic_fck", &dmic_fck, CK_443X), | 1501 | CLK(NULL, "func_dmic_abe_gfclk", &func_dmic_abe_gfclk, CK_443X), |
| 1784 | CLK(NULL, "dsp_fck", &dsp_fck, CK_443X), | ||
| 1785 | CLK(NULL, "dss_sys_clk", &dss_sys_clk, CK_443X), | 1502 | CLK(NULL, "dss_sys_clk", &dss_sys_clk, CK_443X), |
| 1786 | CLK(NULL, "dss_tv_clk", &dss_tv_clk, CK_443X), | 1503 | CLK(NULL, "dss_tv_clk", &dss_tv_clk, CK_443X), |
| 1787 | CLK(NULL, "dss_dss_clk", &dss_dss_clk, CK_443X), | 1504 | CLK(NULL, "dss_dss_clk", &dss_dss_clk, CK_443X), |
| 1788 | CLK(NULL, "dss_48mhz_clk", &dss_48mhz_clk, CK_443X), | 1505 | CLK(NULL, "dss_48mhz_clk", &dss_48mhz_clk, CK_443X), |
| 1789 | CLK(NULL, "dss_fck", &dss_fck, CK_443X), | 1506 | CLK(NULL, "dss_fck", &dss_fck, CK_443X), |
| 1790 | CLK("omapdss_dss", "ick", &dss_fck, CK_443X), | 1507 | CLK("omapdss_dss", "ick", &dss_fck, CK_443X), |
| 1791 | CLK(NULL, "efuse_ctrl_cust_fck", &efuse_ctrl_cust_fck, CK_443X), | ||
| 1792 | CLK(NULL, "emif1_fck", &emif1_fck, CK_443X), | ||
| 1793 | CLK(NULL, "emif2_fck", &emif2_fck, CK_443X), | ||
| 1794 | CLK(NULL, "fdif_fck", &fdif_fck, CK_443X), | 1508 | CLK(NULL, "fdif_fck", &fdif_fck, CK_443X), |
| 1795 | CLK(NULL, "fpka_fck", &fpka_fck, CK_443X), | ||
| 1796 | CLK(NULL, "gpio1_dbclk", &gpio1_dbclk, CK_443X), | 1509 | CLK(NULL, "gpio1_dbclk", &gpio1_dbclk, CK_443X), |
| 1797 | CLK(NULL, "gpio1_ick", &gpio1_ick, CK_443X), | ||
| 1798 | CLK(NULL, "gpio2_dbclk", &gpio2_dbclk, CK_443X), | 1510 | CLK(NULL, "gpio2_dbclk", &gpio2_dbclk, CK_443X), |
| 1799 | CLK(NULL, "gpio2_ick", &gpio2_ick, CK_443X), | ||
| 1800 | CLK(NULL, "gpio3_dbclk", &gpio3_dbclk, CK_443X), | 1511 | CLK(NULL, "gpio3_dbclk", &gpio3_dbclk, CK_443X), |
| 1801 | CLK(NULL, "gpio3_ick", &gpio3_ick, CK_443X), | ||
| 1802 | CLK(NULL, "gpio4_dbclk", &gpio4_dbclk, CK_443X), | 1512 | CLK(NULL, "gpio4_dbclk", &gpio4_dbclk, CK_443X), |
| 1803 | CLK(NULL, "gpio4_ick", &gpio4_ick, CK_443X), | ||
| 1804 | CLK(NULL, "gpio5_dbclk", &gpio5_dbclk, CK_443X), | 1513 | CLK(NULL, "gpio5_dbclk", &gpio5_dbclk, CK_443X), |
| 1805 | CLK(NULL, "gpio5_ick", &gpio5_ick, CK_443X), | ||
| 1806 | CLK(NULL, "gpio6_dbclk", &gpio6_dbclk, CK_443X), | 1514 | CLK(NULL, "gpio6_dbclk", &gpio6_dbclk, CK_443X), |
| 1807 | CLK(NULL, "gpio6_ick", &gpio6_ick, CK_443X), | 1515 | CLK(NULL, "sgx_clk_mux", &sgx_clk_mux, CK_443X), |
| 1808 | CLK(NULL, "gpmc_ick", &gpmc_ick, CK_443X), | ||
| 1809 | CLK(NULL, "gpu_fck", &gpu_fck, CK_443X), | ||
| 1810 | CLK(NULL, "hdq1w_fck", &hdq1w_fck, CK_443X), | ||
| 1811 | CLK(NULL, "hsi_fck", &hsi_fck, CK_443X), | 1516 | CLK(NULL, "hsi_fck", &hsi_fck, CK_443X), |
| 1812 | CLK(NULL, "i2c1_fck", &i2c1_fck, CK_443X), | ||
| 1813 | CLK(NULL, "i2c2_fck", &i2c2_fck, CK_443X), | ||
| 1814 | CLK(NULL, "i2c3_fck", &i2c3_fck, CK_443X), | ||
| 1815 | CLK(NULL, "i2c4_fck", &i2c4_fck, CK_443X), | ||
| 1816 | CLK(NULL, "ipu_fck", &ipu_fck, CK_443X), | ||
| 1817 | CLK(NULL, "iss_ctrlclk", &iss_ctrlclk, CK_443X), | 1517 | CLK(NULL, "iss_ctrlclk", &iss_ctrlclk, CK_443X), |
| 1818 | CLK(NULL, "iss_fck", &iss_fck, CK_443X), | ||
| 1819 | CLK(NULL, "iva_fck", &iva_fck, CK_443X), | ||
| 1820 | CLK(NULL, "kbd_fck", &kbd_fck, CK_443X), | ||
| 1821 | CLK(NULL, "l3_instr_ick", &l3_instr_ick, CK_443X), | ||
| 1822 | CLK(NULL, "l3_main_3_ick", &l3_main_3_ick, CK_443X), | ||
| 1823 | CLK(NULL, "mcasp_sync_mux_ck", &mcasp_sync_mux_ck, CK_443X), | 1518 | CLK(NULL, "mcasp_sync_mux_ck", &mcasp_sync_mux_ck, CK_443X), |
| 1824 | CLK(NULL, "mcasp_fck", &mcasp_fck, CK_443X), | 1519 | CLK(NULL, "func_mcasp_abe_gfclk", &func_mcasp_abe_gfclk, CK_443X), |
| 1825 | CLK(NULL, "mcbsp1_sync_mux_ck", &mcbsp1_sync_mux_ck, CK_443X), | 1520 | CLK(NULL, "mcbsp1_sync_mux_ck", &mcbsp1_sync_mux_ck, CK_443X), |
| 1826 | CLK(NULL, "mcbsp1_fck", &mcbsp1_fck, CK_443X), | 1521 | CLK(NULL, "func_mcbsp1_gfclk", &func_mcbsp1_gfclk, CK_443X), |
| 1827 | CLK(NULL, "mcbsp2_sync_mux_ck", &mcbsp2_sync_mux_ck, CK_443X), | 1522 | CLK(NULL, "mcbsp2_sync_mux_ck", &mcbsp2_sync_mux_ck, CK_443X), |
| 1828 | CLK(NULL, "mcbsp2_fck", &mcbsp2_fck, CK_443X), | 1523 | CLK(NULL, "func_mcbsp2_gfclk", &func_mcbsp2_gfclk, CK_443X), |
| 1829 | CLK(NULL, "mcbsp3_sync_mux_ck", &mcbsp3_sync_mux_ck, CK_443X), | 1524 | CLK(NULL, "mcbsp3_sync_mux_ck", &mcbsp3_sync_mux_ck, CK_443X), |
| 1830 | CLK(NULL, "mcbsp3_fck", &mcbsp3_fck, CK_443X), | 1525 | CLK(NULL, "func_mcbsp3_gfclk", &func_mcbsp3_gfclk, CK_443X), |
| 1831 | CLK(NULL, "mcbsp4_sync_mux_ck", &mcbsp4_sync_mux_ck, CK_443X), | 1526 | CLK(NULL, "mcbsp4_sync_mux_ck", &mcbsp4_sync_mux_ck, CK_443X), |
| 1832 | CLK(NULL, "mcbsp4_fck", &mcbsp4_fck, CK_443X), | 1527 | CLK(NULL, "per_mcbsp4_gfclk", &per_mcbsp4_gfclk, CK_443X), |
| 1833 | CLK(NULL, "mcpdm_fck", &mcpdm_fck, CK_443X), | 1528 | CLK(NULL, "hsmmc1_fclk", &hsmmc1_fclk, CK_443X), |
| 1834 | CLK(NULL, "mcspi1_fck", &mcspi1_fck, CK_443X), | 1529 | CLK(NULL, "hsmmc2_fclk", &hsmmc2_fclk, CK_443X), |
| 1835 | CLK(NULL, "mcspi2_fck", &mcspi2_fck, CK_443X), | ||
| 1836 | CLK(NULL, "mcspi3_fck", &mcspi3_fck, CK_443X), | ||
| 1837 | CLK(NULL, "mcspi4_fck", &mcspi4_fck, CK_443X), | ||
| 1838 | CLK(NULL, "mmc1_fck", &mmc1_fck, CK_443X), | ||
| 1839 | CLK(NULL, "mmc2_fck", &mmc2_fck, CK_443X), | ||
| 1840 | CLK(NULL, "mmc3_fck", &mmc3_fck, CK_443X), | ||
| 1841 | CLK(NULL, "mmc4_fck", &mmc4_fck, CK_443X), | ||
| 1842 | CLK(NULL, "mmc5_fck", &mmc5_fck, CK_443X), | ||
| 1843 | CLK(NULL, "ocp2scp_usb_phy_phy_48m", &ocp2scp_usb_phy_phy_48m, CK_443X), | ||
| 1844 | CLK(NULL, "ocp2scp_usb_phy_ick", &ocp2scp_usb_phy_ick, CK_443X), | ||
| 1845 | CLK(NULL, "ocp_wp_noc_ick", &ocp_wp_noc_ick, CK_443X), | ||
| 1846 | CLK(NULL, "rng_ick", &rng_ick, CK_443X), | ||
| 1847 | CLK("omap_rng", "ick", &rng_ick, CK_443X), | ||
| 1848 | CLK(NULL, "sha2md5_fck", &sha2md5_fck, CK_443X), | 1530 | CLK(NULL, "sha2md5_fck", &sha2md5_fck, CK_443X), |
| 1849 | CLK(NULL, "sl2if_ick", &sl2if_ick, CK_443X), | ||
| 1850 | CLK(NULL, "slimbus1_fclk_1", &slimbus1_fclk_1, CK_443X), | 1531 | CLK(NULL, "slimbus1_fclk_1", &slimbus1_fclk_1, CK_443X), |
| 1851 | CLK(NULL, "slimbus1_fclk_0", &slimbus1_fclk_0, CK_443X), | 1532 | CLK(NULL, "slimbus1_fclk_0", &slimbus1_fclk_0, CK_443X), |
| 1852 | CLK(NULL, "slimbus1_fclk_2", &slimbus1_fclk_2, CK_443X), | 1533 | CLK(NULL, "slimbus1_fclk_2", &slimbus1_fclk_2, CK_443X), |
| 1853 | CLK(NULL, "slimbus1_slimbus_clk", &slimbus1_slimbus_clk, CK_443X), | 1534 | CLK(NULL, "slimbus1_slimbus_clk", &slimbus1_slimbus_clk, CK_443X), |
| 1854 | CLK(NULL, "slimbus1_fck", &slimbus1_fck, CK_443X), | ||
| 1855 | CLK(NULL, "slimbus2_fclk_1", &slimbus2_fclk_1, CK_443X), | 1535 | CLK(NULL, "slimbus2_fclk_1", &slimbus2_fclk_1, CK_443X), |
| 1856 | CLK(NULL, "slimbus2_fclk_0", &slimbus2_fclk_0, CK_443X), | 1536 | CLK(NULL, "slimbus2_fclk_0", &slimbus2_fclk_0, CK_443X), |
| 1857 | CLK(NULL, "slimbus2_slimbus_clk", &slimbus2_slimbus_clk, CK_443X), | 1537 | CLK(NULL, "slimbus2_slimbus_clk", &slimbus2_slimbus_clk, CK_443X), |
| 1858 | CLK(NULL, "slimbus2_fck", &slimbus2_fck, CK_443X), | ||
| 1859 | CLK(NULL, "smartreflex_core_fck", &smartreflex_core_fck, CK_443X), | 1538 | CLK(NULL, "smartreflex_core_fck", &smartreflex_core_fck, CK_443X), |
| 1860 | CLK(NULL, "smartreflex_iva_fck", &smartreflex_iva_fck, CK_443X), | 1539 | CLK(NULL, "smartreflex_iva_fck", &smartreflex_iva_fck, CK_443X), |
| 1861 | CLK(NULL, "smartreflex_mpu_fck", &smartreflex_mpu_fck, CK_443X), | 1540 | CLK(NULL, "smartreflex_mpu_fck", &smartreflex_mpu_fck, CK_443X), |
| 1862 | CLK(NULL, "timer1_fck", &timer1_fck, CK_443X), | 1541 | CLK(NULL, "dmt1_clk_mux", &dmt1_clk_mux, CK_443X), |
| 1863 | CLK(NULL, "timer10_fck", &timer10_fck, CK_443X), | 1542 | CLK(NULL, "cm2_dm10_mux", &cm2_dm10_mux, CK_443X), |
| 1864 | CLK(NULL, "timer11_fck", &timer11_fck, CK_443X), | 1543 | CLK(NULL, "cm2_dm11_mux", &cm2_dm11_mux, CK_443X), |
| 1865 | CLK(NULL, "timer2_fck", &timer2_fck, CK_443X), | 1544 | CLK(NULL, "cm2_dm2_mux", &cm2_dm2_mux, CK_443X), |
| 1866 | CLK(NULL, "timer3_fck", &timer3_fck, CK_443X), | 1545 | CLK(NULL, "cm2_dm3_mux", &cm2_dm3_mux, CK_443X), |
| 1867 | CLK(NULL, "timer4_fck", &timer4_fck, CK_443X), | 1546 | CLK(NULL, "cm2_dm4_mux", &cm2_dm4_mux, CK_443X), |
| 1868 | CLK(NULL, "timer5_fck", &timer5_fck, CK_443X), | 1547 | CLK(NULL, "timer5_sync_mux", &timer5_sync_mux, CK_443X), |
| 1869 | CLK(NULL, "timer6_fck", &timer6_fck, CK_443X), | 1548 | CLK(NULL, "timer6_sync_mux", &timer6_sync_mux, CK_443X), |
| 1870 | CLK(NULL, "timer7_fck", &timer7_fck, CK_443X), | 1549 | CLK(NULL, "timer7_sync_mux", &timer7_sync_mux, CK_443X), |
| 1871 | CLK(NULL, "timer8_fck", &timer8_fck, CK_443X), | 1550 | CLK(NULL, "timer8_sync_mux", &timer8_sync_mux, CK_443X), |
| 1872 | CLK(NULL, "timer9_fck", &timer9_fck, CK_443X), | 1551 | CLK(NULL, "cm2_dm9_mux", &cm2_dm9_mux, CK_443X), |
| 1873 | CLK(NULL, "uart1_fck", &uart1_fck, CK_443X), | ||
| 1874 | CLK(NULL, "uart2_fck", &uart2_fck, CK_443X), | ||
| 1875 | CLK(NULL, "uart3_fck", &uart3_fck, CK_443X), | ||
| 1876 | CLK(NULL, "uart4_fck", &uart4_fck, CK_443X), | ||
| 1877 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), | 1552 | CLK(NULL, "usb_host_fs_fck", &usb_host_fs_fck, CK_443X), |
| 1878 | CLK("usbhs_omap", "fs_fck", &usb_host_fs_fck, CK_443X), | 1553 | CLK("usbhs_omap", "fs_fck", &usb_host_fs_fck, CK_443X), |
| 1879 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), | 1554 | CLK(NULL, "utmi_p1_gfclk", &utmi_p1_gfclk, CK_443X), |
| @@ -1901,9 +1576,6 @@ static struct omap_clk omap44xx_clks[] = { | |||
| 1901 | CLK("usbhs_tll", "usbtll_ick", &usb_tll_hs_ick, CK_443X), | 1576 | CLK("usbhs_tll", "usbtll_ick", &usb_tll_hs_ick, CK_443X), |
| 1902 | CLK(NULL, "usim_ck", &usim_ck, CK_443X), | 1577 | CLK(NULL, "usim_ck", &usim_ck, CK_443X), |
| 1903 | CLK(NULL, "usim_fclk", &usim_fclk, CK_443X), | 1578 | CLK(NULL, "usim_fclk", &usim_fclk, CK_443X), |
| 1904 | CLK(NULL, "usim_fck", &usim_fck, CK_443X), | ||
| 1905 | CLK(NULL, "wd_timer2_fck", &wd_timer2_fck, CK_443X), | ||
| 1906 | CLK(NULL, "wd_timer3_fck", &wd_timer3_fck, CK_443X), | ||
| 1907 | CLK(NULL, "pmd_stm_clock_mux_ck", &pmd_stm_clock_mux_ck, CK_443X), | 1579 | CLK(NULL, "pmd_stm_clock_mux_ck", &pmd_stm_clock_mux_ck, CK_443X), |
| 1908 | CLK(NULL, "pmd_trace_clk_mux_ck", &pmd_trace_clk_mux_ck, CK_443X), | 1580 | CLK(NULL, "pmd_trace_clk_mux_ck", &pmd_trace_clk_mux_ck, CK_443X), |
| 1909 | CLK(NULL, "stm_clk_div_ck", &stm_clk_div_ck, CK_443X), | 1581 | CLK(NULL, "stm_clk_div_ck", &stm_clk_div_ck, CK_443X), |
| @@ -1980,15 +1652,6 @@ static struct omap_clk omap44xx_clks[] = { | |||
| 1980 | CLK(NULL, "cpufreq_ck", &dpll_mpu_ck, CK_443X), | 1652 | CLK(NULL, "cpufreq_ck", &dpll_mpu_ck, CK_443X), |
| 1981 | }; | 1653 | }; |
| 1982 | 1654 | ||
| 1983 | static const char *enable_init_clks[] = { | ||
| 1984 | "emif1_fck", | ||
| 1985 | "emif2_fck", | ||
| 1986 | "gpmc_ick", | ||
| 1987 | "l3_instr_ick", | ||
| 1988 | "l3_main_3_ick", | ||
| 1989 | "ocp_wp_noc_ick", | ||
| 1990 | }; | ||
| 1991 | |||
| 1992 | int __init omap4xxx_clk_init(void) | 1655 | int __init omap4xxx_clk_init(void) |
| 1993 | { | 1656 | { |
| 1994 | u32 cpu_clkflg; | 1657 | u32 cpu_clkflg; |
| @@ -2019,9 +1682,6 @@ int __init omap4xxx_clk_init(void) | |||
| 2019 | 1682 | ||
| 2020 | omap2_clk_disable_autoidle_all(); | 1683 | omap2_clk_disable_autoidle_all(); |
| 2021 | 1684 | ||
| 2022 | omap2_clk_enable_init_clocks(enable_init_clks, | ||
| 2023 | ARRAY_SIZE(enable_init_clks)); | ||
| 2024 | |||
| 2025 | /* | 1685 | /* |
| 2026 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power | 1686 | * On OMAP4460 the ABE DPLL fails to turn on if in idle low-power |
| 2027 | * state when turning the ABE clock domain. Workaround this by | 1687 | * state when turning the ABE clock domain. Workaround this by |
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c index 626f3ea3142f..d8a0cc3b9d2c 100644 --- a/arch/arm/mach-omap2/devices.c +++ b/arch/arm/mach-omap2/devices.c | |||
| @@ -61,8 +61,7 @@ static int __init omap3_l3_init(void) | |||
| 61 | if (!oh) | 61 | if (!oh) |
| 62 | pr_err("could not look up %s\n", oh_name); | 62 | pr_err("could not look up %s\n", oh_name); |
| 63 | 63 | ||
| 64 | pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0, | 64 | pdev = omap_device_build("omap_l3_smx", 0, oh, NULL, 0); |
| 65 | NULL, 0, 0); | ||
| 66 | 65 | ||
| 67 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); | 66 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); |
| 68 | 67 | ||
| @@ -96,8 +95,7 @@ static int __init omap4_l3_init(void) | |||
| 96 | pr_err("could not look up %s\n", oh_name); | 95 | pr_err("could not look up %s\n", oh_name); |
| 97 | } | 96 | } |
| 98 | 97 | ||
| 99 | pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, | 98 | pdev = omap_device_build_ss("omap_l3_noc", 0, oh, 3, NULL, 0); |
| 100 | 0, NULL, 0, 0); | ||
| 101 | 99 | ||
| 102 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); | 100 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); |
| 103 | 101 | ||
| @@ -273,7 +271,7 @@ int __init omap4_keyboard_init(struct omap4_keypad_platform_data | |||
| 273 | keypad_data = sdp4430_keypad_data; | 271 | keypad_data = sdp4430_keypad_data; |
| 274 | 272 | ||
| 275 | pdev = omap_device_build(name, id, oh, keypad_data, | 273 | pdev = omap_device_build(name, id, oh, keypad_data, |
| 276 | sizeof(struct omap4_keypad_platform_data), NULL, 0, 0); | 274 | sizeof(struct omap4_keypad_platform_data)); |
| 277 | 275 | ||
| 278 | if (IS_ERR(pdev)) { | 276 | if (IS_ERR(pdev)) { |
| 279 | WARN(1, "Can't build omap_device for %s:%s.\n", | 277 | WARN(1, "Can't build omap_device for %s:%s.\n", |
| @@ -297,7 +295,7 @@ static inline void __init omap_init_mbox(void) | |||
| 297 | return; | 295 | return; |
| 298 | } | 296 | } |
| 299 | 297 | ||
| 300 | pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0, NULL, 0, 0); | 298 | pdev = omap_device_build("omap-mailbox", -1, oh, NULL, 0); |
| 301 | WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n", | 299 | WARN(IS_ERR(pdev), "%s: could not build device, err %ld\n", |
| 302 | __func__, PTR_ERR(pdev)); | 300 | __func__, PTR_ERR(pdev)); |
| 303 | } | 301 | } |
| @@ -337,7 +335,7 @@ static void __init omap_init_mcpdm(void) | |||
| 337 | return; | 335 | return; |
| 338 | } | 336 | } |
| 339 | 337 | ||
| 340 | pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0, NULL, 0, 0); | 338 | pdev = omap_device_build("omap-mcpdm", -1, oh, NULL, 0); |
| 341 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-mcpdm.\n"); | 339 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-mcpdm.\n"); |
| 342 | } | 340 | } |
| 343 | #else | 341 | #else |
| @@ -358,7 +356,7 @@ static void __init omap_init_dmic(void) | |||
| 358 | return; | 356 | return; |
| 359 | } | 357 | } |
| 360 | 358 | ||
| 361 | pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0, NULL, 0, 0); | 359 | pdev = omap_device_build("omap-dmic", -1, oh, NULL, 0); |
| 362 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-dmic.\n"); | 360 | WARN(IS_ERR(pdev), "Can't build omap_device for omap-dmic.\n"); |
| 363 | } | 361 | } |
| 364 | #else | 362 | #else |
| @@ -384,8 +382,7 @@ static void __init omap_init_hdmi_audio(void) | |||
| 384 | return; | 382 | return; |
| 385 | } | 383 | } |
| 386 | 384 | ||
| 387 | pdev = omap_device_build("omap-hdmi-audio-dai", | 385 | pdev = omap_device_build("omap-hdmi-audio-dai", -1, oh, NULL, 0, 0); |
| 388 | -1, oh, NULL, 0, NULL, 0, 0); | ||
| 389 | WARN(IS_ERR(pdev), | 386 | WARN(IS_ERR(pdev), |
| 390 | "Can't build omap_device for omap-hdmi-audio-dai.\n"); | 387 | "Can't build omap_device for omap-hdmi-audio-dai.\n"); |
| 391 | 388 | ||
| @@ -429,8 +426,7 @@ static int __init omap_mcspi_init(struct omap_hwmod *oh, void *unused) | |||
| 429 | } | 426 | } |
| 430 | 427 | ||
| 431 | spi_num++; | 428 | spi_num++; |
| 432 | pdev = omap_device_build(name, spi_num, oh, pdata, | 429 | pdev = omap_device_build(name, spi_num, oh, pdata, sizeof(*pdata)); |
| 433 | sizeof(*pdata), NULL, 0, 0); | ||
| 434 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s\n", | 430 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s\n", |
| 435 | name, oh->name); | 431 | name, oh->name); |
| 436 | kfree(pdata); | 432 | kfree(pdata); |
| @@ -460,7 +456,7 @@ static void omap_init_rng(void) | |||
| 460 | if (!oh) | 456 | if (!oh) |
| 461 | return; | 457 | return; |
| 462 | 458 | ||
| 463 | pdev = omap_device_build("omap_rng", -1, oh, NULL, 0, NULL, 0, 0); | 459 | pdev = omap_device_build("omap_rng", -1, oh, NULL, 0); |
| 464 | WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n"); | 460 | WARN(IS_ERR(pdev), "Can't build omap_device for omap_rng\n"); |
| 465 | } | 461 | } |
| 466 | 462 | ||
| @@ -689,8 +685,7 @@ static void __init omap_init_ocp2scp(void) | |||
| 689 | 685 | ||
| 690 | pdata->dev_cnt = dev_cnt; | 686 | pdata->dev_cnt = dev_cnt; |
| 691 | 687 | ||
| 692 | pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata), NULL, | 688 | pdev = omap_device_build(name, bus_id, oh, pdata, sizeof(*pdata)); |
| 693 | 0, false); | ||
| 694 | if (IS_ERR(pdev)) { | 689 | if (IS_ERR(pdev)) { |
| 695 | pr_err("Could not build omap_device for %s %s\n", | 690 | pr_err("Could not build omap_device for %s %s\n", |
| 696 | name, oh_name); | 691 | name, oh_name); |
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c index cc75aaf6e764..ff37be1f6f93 100644 --- a/arch/arm/mach-omap2/display.c +++ b/arch/arm/mach-omap2/display.c | |||
| @@ -226,7 +226,7 @@ static struct platform_device *create_dss_pdev(const char *pdev_name, | |||
| 226 | dev_set_name(&pdev->dev, "%s", pdev->name); | 226 | dev_set_name(&pdev->dev, "%s", pdev->name); |
| 227 | 227 | ||
| 228 | ohs[0] = oh; | 228 | ohs[0] = oh; |
| 229 | od = omap_device_alloc(pdev, ohs, 1, NULL, 0); | 229 | od = omap_device_alloc(pdev, ohs, 1); |
| 230 | if (IS_ERR(od)) { | 230 | if (IS_ERR(od)) { |
| 231 | pr_err("Could not alloc omap_device for %s\n", pdev_name); | 231 | pr_err("Could not alloc omap_device for %s\n", pdev_name); |
| 232 | r = -ENOMEM; | 232 | r = -ENOMEM; |
diff --git a/arch/arm/mach-omap2/dma.c b/arch/arm/mach-omap2/dma.c index 612b98249873..491c5c8837fa 100644 --- a/arch/arm/mach-omap2/dma.c +++ b/arch/arm/mach-omap2/dma.c | |||
| @@ -248,7 +248,7 @@ static int __init omap2_system_dma_init_dev(struct omap_hwmod *oh, void *unused) | |||
| 248 | 248 | ||
| 249 | p->errata = configure_dma_errata(); | 249 | p->errata = configure_dma_errata(); |
| 250 | 250 | ||
| 251 | pdev = omap_device_build(name, 0, oh, p, sizeof(*p), NULL, 0, 0); | 251 | pdev = omap_device_build(name, 0, oh, p, sizeof(*p)); |
| 252 | kfree(p); | 252 | kfree(p); |
| 253 | if (IS_ERR(pdev)) { | 253 | if (IS_ERR(pdev)) { |
| 254 | pr_err("%s: Can't build omap_device for %s:%s.\n", | 254 | pr_err("%s: Can't build omap_device for %s:%s.\n", |
diff --git a/arch/arm/mach-omap2/drm.c b/arch/arm/mach-omap2/drm.c index 2a2cfa88ddbf..4d8d1a52ffe7 100644 --- a/arch/arm/mach-omap2/drm.c +++ b/arch/arm/mach-omap2/drm.c | |||
| @@ -51,8 +51,7 @@ static int __init omap_init_drm(void) | |||
| 51 | oh = omap_hwmod_lookup("dmm"); | 51 | oh = omap_hwmod_lookup("dmm"); |
| 52 | 52 | ||
| 53 | if (oh) { | 53 | if (oh) { |
| 54 | pdev = omap_device_build(oh->name, -1, oh, NULL, 0, NULL, 0, | 54 | pdev = omap_device_build(oh->name, -1, oh, NULL, 0); |
| 55 | false); | ||
| 56 | WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", | 55 | WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", |
| 57 | oh->name); | 56 | oh->name); |
| 58 | } | 57 | } |
diff --git a/arch/arm/mach-omap2/gpio.c b/arch/arm/mach-omap2/gpio.c index 399acabc3d0b..482ade1923b0 100644 --- a/arch/arm/mach-omap2/gpio.c +++ b/arch/arm/mach-omap2/gpio.c | |||
| @@ -131,8 +131,7 @@ static int __init omap2_gpio_dev_init(struct omap_hwmod *oh, void *unused) | |||
| 131 | pwrdm = omap_hwmod_get_pwrdm(oh); | 131 | pwrdm = omap_hwmod_get_pwrdm(oh); |
| 132 | pdata->loses_context = pwrdm_can_ever_lose_context(pwrdm); | 132 | pdata->loses_context = pwrdm_can_ever_lose_context(pwrdm); |
| 133 | 133 | ||
| 134 | pdev = omap_device_build(name, id - 1, oh, pdata, | 134 | pdev = omap_device_build(name, id - 1, oh, pdata, sizeof(*pdata)); |
| 135 | sizeof(*pdata), NULL, 0, false); | ||
| 136 | kfree(pdata); | 135 | kfree(pdata); |
| 137 | 136 | ||
| 138 | if (IS_ERR(pdev)) { | 137 | if (IS_ERR(pdev)) { |
diff --git a/arch/arm/mach-omap2/gpmc.c b/arch/arm/mach-omap2/gpmc.c index 8033cb747c86..bc0783364ad3 100644 --- a/arch/arm/mach-omap2/gpmc.c +++ b/arch/arm/mach-omap2/gpmc.c | |||
| @@ -1220,7 +1220,7 @@ static int __init omap_gpmc_init(void) | |||
| 1220 | return -ENODEV; | 1220 | return -ENODEV; |
| 1221 | } | 1221 | } |
| 1222 | 1222 | ||
| 1223 | pdev = omap_device_build(DEVICE_NAME, -1, oh, NULL, 0, NULL, 0, 0); | 1223 | pdev = omap_device_build(DEVICE_NAME, -1, oh, NULL, 0); |
| 1224 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); | 1224 | WARN(IS_ERR(pdev), "could not build omap_device for %s\n", oh_name); |
| 1225 | 1225 | ||
| 1226 | return IS_ERR(pdev) ? PTR_ERR(pdev) : 0; | 1226 | return IS_ERR(pdev) ? PTR_ERR(pdev) : 0; |
diff --git a/arch/arm/mach-omap2/hdq1w.c b/arch/arm/mach-omap2/hdq1w.c index ab7bf181a105..b7aa8ba2ccb2 100644 --- a/arch/arm/mach-omap2/hdq1w.c +++ b/arch/arm/mach-omap2/hdq1w.c | |||
| @@ -87,7 +87,7 @@ static int __init omap_init_hdq(void) | |||
| 87 | if (!oh) | 87 | if (!oh) |
| 88 | return 0; | 88 | return 0; |
| 89 | 89 | ||
| 90 | pdev = omap_device_build(devname, id, oh, NULL, 0, NULL, 0, 0); | 90 | pdev = omap_device_build(devname, id, oh, NULL, 0); |
| 91 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", | 91 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", |
| 92 | devname, oh->name); | 92 | devname, oh->name); |
| 93 | 93 | ||
diff --git a/arch/arm/mach-omap2/hsmmc.c b/arch/arm/mach-omap2/hsmmc.c index 4a964338992a..2ef1f8714fcf 100644 --- a/arch/arm/mach-omap2/hsmmc.c +++ b/arch/arm/mach-omap2/hsmmc.c | |||
| @@ -522,7 +522,7 @@ static void __init omap_hsmmc_init_one(struct omap2_hsmmc_info *hsmmcinfo, | |||
| 522 | } | 522 | } |
| 523 | dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); | 523 | dev_set_name(&pdev->dev, "%s.%d", pdev->name, pdev->id); |
| 524 | 524 | ||
| 525 | od = omap_device_alloc(pdev, ohs, 1, NULL, 0); | 525 | od = omap_device_alloc(pdev, ohs, 1); |
| 526 | if (IS_ERR(od)) { | 526 | if (IS_ERR(od)) { |
| 527 | pr_err("Could not allocate od for %s\n", name); | 527 | pr_err("Could not allocate od for %s\n", name); |
| 528 | goto put_pdev; | 528 | goto put_pdev; |
diff --git a/arch/arm/mach-omap2/hwspinlock.c b/arch/arm/mach-omap2/hwspinlock.c index 1df9b5feda16..c3688903f3d4 100644 --- a/arch/arm/mach-omap2/hwspinlock.c +++ b/arch/arm/mach-omap2/hwspinlock.c | |||
| @@ -46,8 +46,7 @@ static int __init hwspinlocks_init(void) | |||
| 46 | return -EINVAL; | 46 | return -EINVAL; |
| 47 | 47 | ||
| 48 | pdev = omap_device_build(dev_name, 0, oh, &omap_hwspinlock_pdata, | 48 | pdev = omap_device_build(dev_name, 0, oh, &omap_hwspinlock_pdata, |
| 49 | sizeof(struct hwspinlock_pdata), | 49 | sizeof(struct hwspinlock_pdata)); |
| 50 | NULL, 0, false); | ||
| 51 | if (IS_ERR(pdev)) { | 50 | if (IS_ERR(pdev)) { |
| 52 | pr_err("Can't build omap_device for %s:%s\n", dev_name, | 51 | pr_err("Can't build omap_device for %s:%s\n", dev_name, |
| 53 | oh_name); | 52 | oh_name); |
diff --git a/arch/arm/mach-omap2/i2c.c b/arch/arm/mach-omap2/i2c.c index b9074dde3b9c..c11a23fa9665 100644 --- a/arch/arm/mach-omap2/i2c.c +++ b/arch/arm/mach-omap2/i2c.c | |||
| @@ -178,8 +178,7 @@ int __init omap_i2c_add_bus(struct omap_i2c_bus_platform_data *i2c_pdata, | |||
| 178 | if (cpu_is_omap34xx()) | 178 | if (cpu_is_omap34xx()) |
| 179 | pdata->set_mpu_wkup_lat = omap_pm_set_max_mpu_wakeup_lat_compat; | 179 | pdata->set_mpu_wkup_lat = omap_pm_set_max_mpu_wakeup_lat_compat; |
| 180 | pdev = omap_device_build(name, bus_id, oh, pdata, | 180 | pdev = omap_device_build(name, bus_id, oh, pdata, |
| 181 | sizeof(struct omap_i2c_bus_platform_data), | 181 | sizeof(struct omap_i2c_bus_platform_data)); |
| 182 | NULL, 0, 0); | ||
| 183 | WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", name); | 182 | WARN(IS_ERR(pdev), "Could not build omap_device for %s\n", name); |
| 184 | 183 | ||
| 185 | return PTR_RET(pdev); | 184 | return PTR_RET(pdev); |
diff --git a/arch/arm/mach-omap2/mcbsp.c b/arch/arm/mach-omap2/mcbsp.c index df49f2a49461..453580410ae0 100644 --- a/arch/arm/mach-omap2/mcbsp.c +++ b/arch/arm/mach-omap2/mcbsp.c | |||
| @@ -101,7 +101,7 @@ static int __init omap_init_mcbsp(struct omap_hwmod *oh, void *unused) | |||
| 101 | count++; | 101 | count++; |
| 102 | } | 102 | } |
| 103 | pdev = omap_device_build_ss(name, id, oh_device, count, pdata, | 103 | pdev = omap_device_build_ss(name, id, oh_device, count, pdata, |
| 104 | sizeof(*pdata), NULL, 0, false); | 104 | sizeof(*pdata)); |
| 105 | kfree(pdata); | 105 | kfree(pdata); |
| 106 | if (IS_ERR(pdev)) { | 106 | if (IS_ERR(pdev)) { |
| 107 | pr_err("%s: Can't build omap_device for %s:%s.\n", __func__, | 107 | pr_err("%s: Can't build omap_device for %s:%s.\n", __func__, |
diff --git a/arch/arm/mach-omap2/msdi.c b/arch/arm/mach-omap2/msdi.c index aafdd4ca9f4f..c52d8b4a3e91 100644 --- a/arch/arm/mach-omap2/msdi.c +++ b/arch/arm/mach-omap2/msdi.c | |||
| @@ -150,7 +150,7 @@ void __init omap242x_init_mmc(struct omap_mmc_platform_data **mmc_data) | |||
| 150 | return; | 150 | return; |
| 151 | } | 151 | } |
| 152 | pdev = omap_device_build(dev_name, id, oh, mmc_data[0], | 152 | pdev = omap_device_build(dev_name, id, oh, mmc_data[0], |
| 153 | sizeof(struct omap_mmc_platform_data), NULL, 0, 0); | 153 | sizeof(struct omap_mmc_platform_data)); |
| 154 | if (IS_ERR(pdev)) | 154 | if (IS_ERR(pdev)) |
| 155 | WARN(1, "Can'd build omap_device for %s:%s.\n", | 155 | WARN(1, "Can'd build omap_device for %s:%s.\n", |
| 156 | dev_name, oh->name); | 156 | dev_name, oh->name); |
diff --git a/arch/arm/mach-omap2/omap-iommu.c b/arch/arm/mach-omap2/omap-iommu.c index 6da4f7ae9d7f..f7f38c7fd5ff 100644 --- a/arch/arm/mach-omap2/omap-iommu.c +++ b/arch/arm/mach-omap2/omap-iommu.c | |||
| @@ -41,8 +41,7 @@ static int __init omap_iommu_dev_init(struct omap_hwmod *oh, void *unused) | |||
| 41 | pdata->deassert_reset = omap_device_deassert_hardreset; | 41 | pdata->deassert_reset = omap_device_deassert_hardreset; |
| 42 | } | 42 | } |
| 43 | 43 | ||
| 44 | pdev = omap_device_build("omap-iommu", i, oh, pdata, sizeof(*pdata), | 44 | pdev = omap_device_build("omap-iommu", i, oh, pdata, sizeof(*pdata)); |
| 45 | NULL, 0, 0); | ||
| 46 | 45 | ||
| 47 | kfree(pdata); | 46 | kfree(pdata); |
| 48 | 47 | ||
diff --git a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c index e065daa537c0..6ee3ad3dd95a 100644 --- a/arch/arm/mach-omap2/omap_device.c +++ b/arch/arm/mach-omap2/omap_device.c | |||
| @@ -17,68 +17,15 @@ | |||
| 17 | * to control power management and interconnect properties of their | 17 | * to control power management and interconnect properties of their |
| 18 | * devices. | 18 | * devices. |
| 19 | * | 19 | * |
| 20 | * In the medium- to long-term, this code should either be | 20 | * In the medium- to long-term, this code should be implemented as a |
| 21 | * a) implemented via arch-specific pointers in platform_data | 21 | * proper omap_bus/omap_device in Linux, no more platform_data func |
| 22 | * or | 22 | * pointers |
| 23 | * b) implemented as a proper omap_bus/omap_device in Linux, no more | ||
| 24 | * platform_data func pointers | ||
| 25 | * | 23 | * |
| 26 | * | 24 | * |
| 27 | * Guidelines for usage by driver authors: | ||
| 28 | * | ||
| 29 | * 1. These functions are intended to be used by device drivers via | ||
| 30 | * function pointers in struct platform_data. As an example, | ||
| 31 | * omap_device_enable() should be passed to the driver as | ||
| 32 | * | ||
| 33 | * struct foo_driver_platform_data { | ||
| 34 | * ... | ||
| 35 | * int (*device_enable)(struct platform_device *pdev); | ||
| 36 | * ... | ||
| 37 | * } | ||
| 38 | * | ||
| 39 | * Note that the generic "device_enable" name is used, rather than | ||
| 40 | * "omap_device_enable". This is so other architectures can pass in their | ||
| 41 | * own enable/disable functions here. | ||
| 42 | * | ||
| 43 | * This should be populated during device setup: | ||
| 44 | * | ||
| 45 | * ... | ||
| 46 | * pdata->device_enable = omap_device_enable; | ||
| 47 | * ... | ||
| 48 | * | ||
| 49 | * 2. Drivers should first check to ensure the function pointer is not null | ||
| 50 | * before calling it, as in: | ||
| 51 | * | ||
| 52 | * if (pdata->device_enable) | ||
| 53 | * pdata->device_enable(pdev); | ||
| 54 | * | ||
| 55 | * This allows other architectures that don't use similar device_enable()/ | ||
| 56 | * device_shutdown() functions to execute normally. | ||
| 57 | * | ||
| 58 | * ... | ||
| 59 | * | ||
| 60 | * Suggested usage by device drivers: | ||
| 61 | * | ||
| 62 | * During device initialization: | ||
| 63 | * device_enable() | ||
| 64 | * | ||
| 65 | * During device idle: | ||
| 66 | * (save remaining device context if necessary) | ||
| 67 | * device_idle(); | ||
| 68 | * | ||
| 69 | * During device resume: | ||
| 70 | * device_enable(); | ||
| 71 | * (restore context if necessary) | ||
| 72 | * | ||
| 73 | * During device shutdown: | ||
| 74 | * device_shutdown() | ||
| 75 | * (device must be reinitialized at this point to use it again) | ||
| 76 | * | ||
| 77 | */ | 25 | */ |
| 78 | #undef DEBUG | 26 | #undef DEBUG |
| 79 | 27 | ||
| 80 | #include <linux/kernel.h> | 28 | #include <linux/kernel.h> |
| 81 | #include <linux/export.h> | ||
| 82 | #include <linux/platform_device.h> | 29 | #include <linux/platform_device.h> |
| 83 | #include <linux/slab.h> | 30 | #include <linux/slab.h> |
| 84 | #include <linux/err.h> | 31 | #include <linux/err.h> |
| @@ -92,155 +39,8 @@ | |||
| 92 | #include "omap_device.h" | 39 | #include "omap_device.h" |
| 93 | #include "omap_hwmod.h" | 40 | #include "omap_hwmod.h" |
| 94 | 41 | ||
| 95 | /* These parameters are passed to _omap_device_{de,}activate() */ | ||
| 96 | #define USE_WAKEUP_LAT 0 | ||
| 97 | #define IGNORE_WAKEUP_LAT 1 | ||
| 98 | |||
| 99 | static int omap_early_device_register(struct platform_device *pdev); | ||
| 100 | |||
| 101 | static struct omap_device_pm_latency omap_default_latency[] = { | ||
| 102 | { | ||
| 103 | .deactivate_func = omap_device_idle_hwmods, | ||
| 104 | .activate_func = omap_device_enable_hwmods, | ||
| 105 | .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, | ||
| 106 | } | ||
| 107 | }; | ||
| 108 | |||
| 109 | /* Private functions */ | 42 | /* Private functions */ |
| 110 | 43 | ||
| 111 | /** | ||
| 112 | * _omap_device_activate - increase device readiness | ||
| 113 | * @od: struct omap_device * | ||
| 114 | * @ignore_lat: increase to latency target (0) or full readiness (1)? | ||
| 115 | * | ||
| 116 | * Increase readiness of omap_device @od (thus decreasing device | ||
| 117 | * wakeup latency, but consuming more power). If @ignore_lat is | ||
| 118 | * IGNORE_WAKEUP_LAT, make the omap_device fully active. Otherwise, | ||
| 119 | * if @ignore_lat is USE_WAKEUP_LAT, and the device's maximum wakeup | ||
| 120 | * latency is greater than the requested maximum wakeup latency, step | ||
| 121 | * backwards in the omap_device_pm_latency table to ensure the | ||
| 122 | * device's maximum wakeup latency is less than or equal to the | ||
| 123 | * requested maximum wakeup latency. Returns 0. | ||
| 124 | */ | ||
| 125 | static int _omap_device_activate(struct omap_device *od, u8 ignore_lat) | ||
| 126 | { | ||
| 127 | struct timespec a, b, c; | ||
| 128 | |||
| 129 | dev_dbg(&od->pdev->dev, "omap_device: activating\n"); | ||
| 130 | |||
| 131 | while (od->pm_lat_level > 0) { | ||
| 132 | struct omap_device_pm_latency *odpl; | ||
| 133 | unsigned long long act_lat = 0; | ||
| 134 | |||
| 135 | od->pm_lat_level--; | ||
| 136 | |||
| 137 | odpl = od->pm_lats + od->pm_lat_level; | ||
| 138 | |||
| 139 | if (!ignore_lat && | ||
| 140 | (od->dev_wakeup_lat <= od->_dev_wakeup_lat_limit)) | ||
| 141 | break; | ||
| 142 | |||
| 143 | read_persistent_clock(&a); | ||
| 144 | |||
| 145 | /* XXX check return code */ | ||
| 146 | odpl->activate_func(od); | ||
| 147 | |||
| 148 | read_persistent_clock(&b); | ||
| 149 | |||
| 150 | c = timespec_sub(b, a); | ||
| 151 | act_lat = timespec_to_ns(&c); | ||
| 152 | |||
| 153 | dev_dbg(&od->pdev->dev, | ||
| 154 | "omap_device: pm_lat %d: activate: elapsed time %llu nsec\n", | ||
| 155 | od->pm_lat_level, act_lat); | ||
| 156 | |||
| 157 | if (act_lat > odpl->activate_lat) { | ||
| 158 | odpl->activate_lat_worst = act_lat; | ||
| 159 | if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) { | ||
| 160 | odpl->activate_lat = act_lat; | ||
| 161 | dev_dbg(&od->pdev->dev, | ||
| 162 | "new worst case activate latency %d: %llu\n", | ||
| 163 | od->pm_lat_level, act_lat); | ||
| 164 | } else | ||
| 165 | dev_warn(&od->pdev->dev, | ||
| 166 | "activate latency %d higher than expected. (%llu > %d)\n", | ||
| 167 | od->pm_lat_level, act_lat, | ||
| 168 | odpl->activate_lat); | ||
| 169 | } | ||
| 170 | |||
| 171 | od->dev_wakeup_lat -= odpl->activate_lat; | ||
| 172 | } | ||
| 173 | |||
| 174 | return 0; | ||
| 175 | } | ||
| 176 | |||
| 177 | /** | ||
| 178 | * _omap_device_deactivate - decrease device readiness | ||
| 179 | * @od: struct omap_device * | ||
| 180 | * @ignore_lat: decrease to latency target (0) or full inactivity (1)? | ||
| 181 | * | ||
| 182 | * Decrease readiness of omap_device @od (thus increasing device | ||
| 183 | * wakeup latency, but conserving power). If @ignore_lat is | ||
| 184 | * IGNORE_WAKEUP_LAT, make the omap_device fully inactive. Otherwise, | ||
| 185 | * if @ignore_lat is USE_WAKEUP_LAT, and the device's maximum wakeup | ||
| 186 | * latency is less than the requested maximum wakeup latency, step | ||
| 187 | * forwards in the omap_device_pm_latency table to ensure the device's | ||
| 188 | * maximum wakeup latency is less than or equal to the requested | ||
| 189 | * maximum wakeup latency. Returns 0. | ||
| 190 | */ | ||
| 191 | static int _omap_device_deactivate(struct omap_device *od, u8 ignore_lat) | ||
| 192 | { | ||
| 193 | struct timespec a, b, c; | ||
| 194 | |||
| 195 | dev_dbg(&od->pdev->dev, "omap_device: deactivating\n"); | ||
| 196 | |||
| 197 | while (od->pm_lat_level < od->pm_lats_cnt) { | ||
| 198 | struct omap_device_pm_latency *odpl; | ||
| 199 | unsigned long long deact_lat = 0; | ||
| 200 | |||
| 201 | odpl = od->pm_lats + od->pm_lat_level; | ||
| 202 | |||
| 203 | if (!ignore_lat && | ||
| 204 | ((od->dev_wakeup_lat + odpl->activate_lat) > | ||
| 205 | od->_dev_wakeup_lat_limit)) | ||
| 206 | break; | ||
| 207 | |||
| 208 | read_persistent_clock(&a); | ||
| 209 | |||
| 210 | /* XXX check return code */ | ||
| 211 | odpl->deactivate_func(od); | ||
| 212 | |||
| 213 | read_persistent_clock(&b); | ||
| 214 | |||
| 215 | c = timespec_sub(b, a); | ||
| 216 | deact_lat = timespec_to_ns(&c); | ||
| 217 | |||
| 218 | dev_dbg(&od->pdev->dev, | ||
| 219 | "omap_device: pm_lat %d: deactivate: elapsed time %llu nsec\n", | ||
| 220 | od->pm_lat_level, deact_lat); | ||
| 221 | |||
| 222 | if (deact_lat > odpl->deactivate_lat) { | ||
| 223 | odpl->deactivate_lat_worst = deact_lat; | ||
| 224 | if (odpl->flags & OMAP_DEVICE_LATENCY_AUTO_ADJUST) { | ||
| 225 | odpl->deactivate_lat = deact_lat; | ||
| 226 | dev_dbg(&od->pdev->dev, | ||
| 227 | "new worst case deactivate latency %d: %llu\n", | ||
| 228 | od->pm_lat_level, deact_lat); | ||
| 229 | } else | ||
| 230 | dev_warn(&od->pdev->dev, | ||
| 231 | "deactivate latency %d higher than expected. (%llu > %d)\n", | ||
| 232 | od->pm_lat_level, deact_lat, | ||
| 233 | odpl->deactivate_lat); | ||
| 234 | } | ||
| 235 | |||
| 236 | od->dev_wakeup_lat += odpl->activate_lat; | ||
| 237 | |||
| 238 | od->pm_lat_level++; | ||
| 239 | } | ||
| 240 | |||
| 241 | return 0; | ||
| 242 | } | ||
| 243 | |||
| 244 | static void _add_clkdev(struct omap_device *od, const char *clk_alias, | 44 | static void _add_clkdev(struct omap_device *od, const char *clk_alias, |
| 245 | const char *clk_name) | 45 | const char *clk_name) |
| 246 | { | 46 | { |
| @@ -315,9 +115,6 @@ static void _add_hwmod_clocks_clkdev(struct omap_device *od, | |||
| 315 | * @oh: ptr to the single omap_hwmod that backs this omap_device | 115 | * @oh: ptr to the single omap_hwmod that backs this omap_device |
| 316 | * @pdata: platform_data ptr to associate with the platform_device | 116 | * @pdata: platform_data ptr to associate with the platform_device |
| 317 | * @pdata_len: amount of memory pointed to by @pdata | 117 | * @pdata_len: amount of memory pointed to by @pdata |
| 318 | * @pm_lats: pointer to a omap_device_pm_latency array for this device | ||
| 319 | * @pm_lats_cnt: ARRAY_SIZE() of @pm_lats | ||
| 320 | * @is_early_device: should the device be registered as an early device or not | ||
| 321 | * | 118 | * |
| 322 | * Function for building an omap_device already registered from device-tree | 119 | * Function for building an omap_device already registered from device-tree |
| 323 | * | 120 | * |
| @@ -356,7 +153,7 @@ static int omap_device_build_from_dt(struct platform_device *pdev) | |||
| 356 | hwmods[i] = oh; | 153 | hwmods[i] = oh; |
| 357 | } | 154 | } |
| 358 | 155 | ||
| 359 | od = omap_device_alloc(pdev, hwmods, oh_cnt, NULL, 0); | 156 | od = omap_device_alloc(pdev, hwmods, oh_cnt); |
| 360 | if (!od) { | 157 | if (!od) { |
| 361 | dev_err(&pdev->dev, "Cannot allocate omap_device for :%s\n", | 158 | dev_err(&pdev->dev, "Cannot allocate omap_device for :%s\n", |
| 362 | oh_name); | 159 | oh_name); |
| @@ -407,6 +204,39 @@ static int _omap_device_notifier_call(struct notifier_block *nb, | |||
| 407 | return NOTIFY_DONE; | 204 | return NOTIFY_DONE; |
| 408 | } | 205 | } |
| 409 | 206 | ||
| 207 | /** | ||
| 208 | * _omap_device_enable_hwmods - call omap_hwmod_enable() on all hwmods | ||
| 209 | * @od: struct omap_device *od | ||
| 210 | * | ||
| 211 | * Enable all underlying hwmods. Returns 0. | ||
| 212 | */ | ||
| 213 | static int _omap_device_enable_hwmods(struct omap_device *od) | ||
| 214 | { | ||
| 215 | int i; | ||
| 216 | |||
| 217 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 218 | omap_hwmod_enable(od->hwmods[i]); | ||
| 219 | |||
| 220 | /* XXX pass along return value here? */ | ||
| 221 | return 0; | ||
| 222 | } | ||
| 223 | |||
| 224 | /** | ||
| 225 | * _omap_device_idle_hwmods - call omap_hwmod_idle() on all hwmods | ||
| 226 | * @od: struct omap_device *od | ||
| 227 | * | ||
| 228 | * Idle all underlying hwmods. Returns 0. | ||
| 229 | */ | ||
| 230 | static int _omap_device_idle_hwmods(struct omap_device *od) | ||
| 231 | { | ||
| 232 | int i; | ||
| 233 | |||
| 234 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 235 | omap_hwmod_idle(od->hwmods[i]); | ||
| 236 | |||
| 237 | /* XXX pass along return value here? */ | ||
| 238 | return 0; | ||
| 239 | } | ||
| 410 | 240 | ||
| 411 | /* Public functions for use by core code */ | 241 | /* Public functions for use by core code */ |
| 412 | 242 | ||
| @@ -526,18 +356,14 @@ static int _od_fill_dma_resources(struct omap_device *od, | |||
| 526 | * @oh: ptr to the single omap_hwmod that backs this omap_device | 356 | * @oh: ptr to the single omap_hwmod that backs this omap_device |
| 527 | * @pdata: platform_data ptr to associate with the platform_device | 357 | * @pdata: platform_data ptr to associate with the platform_device |
| 528 | * @pdata_len: amount of memory pointed to by @pdata | 358 | * @pdata_len: amount of memory pointed to by @pdata |
| 529 | * @pm_lats: pointer to a omap_device_pm_latency array for this device | ||
| 530 | * @pm_lats_cnt: ARRAY_SIZE() of @pm_lats | ||
| 531 | * | 359 | * |
| 532 | * Convenience function for allocating an omap_device structure and filling | 360 | * Convenience function for allocating an omap_device structure and filling |
| 533 | * hwmods, resources and pm_latency attributes. | 361 | * hwmods, and resources. |
| 534 | * | 362 | * |
| 535 | * Returns an struct omap_device pointer or ERR_PTR() on error; | 363 | * Returns an struct omap_device pointer or ERR_PTR() on error; |
| 536 | */ | 364 | */ |
| 537 | struct omap_device *omap_device_alloc(struct platform_device *pdev, | 365 | struct omap_device *omap_device_alloc(struct platform_device *pdev, |
| 538 | struct omap_hwmod **ohs, int oh_cnt, | 366 | struct omap_hwmod **ohs, int oh_cnt) |
| 539 | struct omap_device_pm_latency *pm_lats, | ||
| 540 | int pm_lats_cnt) | ||
| 541 | { | 367 | { |
| 542 | int ret = -ENOMEM; | 368 | int ret = -ENOMEM; |
| 543 | struct omap_device *od; | 369 | struct omap_device *od; |
| @@ -626,18 +452,6 @@ struct omap_device *omap_device_alloc(struct platform_device *pdev, | |||
| 626 | goto oda_exit3; | 452 | goto oda_exit3; |
| 627 | 453 | ||
| 628 | have_everything: | 454 | have_everything: |
| 629 | if (!pm_lats) { | ||
| 630 | pm_lats = omap_default_latency; | ||
| 631 | pm_lats_cnt = ARRAY_SIZE(omap_default_latency); | ||
| 632 | } | ||
| 633 | |||
| 634 | od->pm_lats_cnt = pm_lats_cnt; | ||
| 635 | od->pm_lats = kmemdup(pm_lats, | ||
| 636 | sizeof(struct omap_device_pm_latency) * pm_lats_cnt, | ||
| 637 | GFP_KERNEL); | ||
| 638 | if (!od->pm_lats) | ||
| 639 | goto oda_exit3; | ||
| 640 | |||
| 641 | pdev->archdata.od = od; | 455 | pdev->archdata.od = od; |
| 642 | 456 | ||
| 643 | for (i = 0; i < oh_cnt; i++) { | 457 | for (i = 0; i < oh_cnt; i++) { |
| @@ -663,7 +477,6 @@ void omap_device_delete(struct omap_device *od) | |||
| 663 | return; | 477 | return; |
| 664 | 478 | ||
| 665 | od->pdev->archdata.od = NULL; | 479 | od->pdev->archdata.od = NULL; |
| 666 | kfree(od->pm_lats); | ||
| 667 | kfree(od->hwmods); | 480 | kfree(od->hwmods); |
| 668 | kfree(od); | 481 | kfree(od); |
| 669 | } | 482 | } |
| @@ -675,9 +488,6 @@ void omap_device_delete(struct omap_device *od) | |||
| 675 | * @oh: ptr to the single omap_hwmod that backs this omap_device | 488 | * @oh: ptr to the single omap_hwmod that backs this omap_device |
| 676 | * @pdata: platform_data ptr to associate with the platform_device | 489 | * @pdata: platform_data ptr to associate with the platform_device |
| 677 | * @pdata_len: amount of memory pointed to by @pdata | 490 | * @pdata_len: amount of memory pointed to by @pdata |
| 678 | * @pm_lats: pointer to a omap_device_pm_latency array for this device | ||
| 679 | * @pm_lats_cnt: ARRAY_SIZE() of @pm_lats | ||
| 680 | * @is_early_device: should the device be registered as an early device or not | ||
| 681 | * | 491 | * |
| 682 | * Convenience function for building and registering a single | 492 | * Convenience function for building and registering a single |
| 683 | * omap_device record, which in turn builds and registers a | 493 | * omap_device record, which in turn builds and registers a |
| @@ -685,11 +495,10 @@ void omap_device_delete(struct omap_device *od) | |||
| 685 | * information. Returns ERR_PTR(-EINVAL) if @oh is NULL; otherwise, | 495 | * information. Returns ERR_PTR(-EINVAL) if @oh is NULL; otherwise, |
| 686 | * passes along the return value of omap_device_build_ss(). | 496 | * passes along the return value of omap_device_build_ss(). |
| 687 | */ | 497 | */ |
| 688 | struct platform_device __init *omap_device_build(const char *pdev_name, int pdev_id, | 498 | struct platform_device __init *omap_device_build(const char *pdev_name, |
| 689 | struct omap_hwmod *oh, void *pdata, | 499 | int pdev_id, |
| 690 | int pdata_len, | 500 | struct omap_hwmod *oh, |
| 691 | struct omap_device_pm_latency *pm_lats, | 501 | void *pdata, int pdata_len) |
| 692 | int pm_lats_cnt, int is_early_device) | ||
| 693 | { | 502 | { |
| 694 | struct omap_hwmod *ohs[] = { oh }; | 503 | struct omap_hwmod *ohs[] = { oh }; |
| 695 | 504 | ||
| @@ -697,8 +506,7 @@ struct platform_device __init *omap_device_build(const char *pdev_name, int pdev | |||
| 697 | return ERR_PTR(-EINVAL); | 506 | return ERR_PTR(-EINVAL); |
| 698 | 507 | ||
| 699 | return omap_device_build_ss(pdev_name, pdev_id, ohs, 1, pdata, | 508 | return omap_device_build_ss(pdev_name, pdev_id, ohs, 1, pdata, |
| 700 | pdata_len, pm_lats, pm_lats_cnt, | 509 | pdata_len); |
| 701 | is_early_device); | ||
| 702 | } | 510 | } |
| 703 | 511 | ||
| 704 | /** | 512 | /** |
| @@ -708,9 +516,6 @@ struct platform_device __init *omap_device_build(const char *pdev_name, int pdev | |||
| 708 | * @oh: ptr to the single omap_hwmod that backs this omap_device | 516 | * @oh: ptr to the single omap_hwmod that backs this omap_device |
| 709 | * @pdata: platform_data ptr to associate with the platform_device | 517 | * @pdata: platform_data ptr to associate with the platform_device |
| 710 | * @pdata_len: amount of memory pointed to by @pdata | 518 | * @pdata_len: amount of memory pointed to by @pdata |
| 711 | * @pm_lats: pointer to a omap_device_pm_latency array for this device | ||
| 712 | * @pm_lats_cnt: ARRAY_SIZE() of @pm_lats | ||
| 713 | * @is_early_device: should the device be registered as an early device or not | ||
| 714 | * | 519 | * |
| 715 | * Convenience function for building and registering an omap_device | 520 | * Convenience function for building and registering an omap_device |
| 716 | * subsystem record. Subsystem records consist of multiple | 521 | * subsystem record. Subsystem records consist of multiple |
| @@ -718,11 +523,11 @@ struct platform_device __init *omap_device_build(const char *pdev_name, int pdev | |||
| 718 | * platform_device record. Returns an ERR_PTR() on error, or passes | 523 | * platform_device record. Returns an ERR_PTR() on error, or passes |
| 719 | * along the return value of omap_device_register(). | 524 | * along the return value of omap_device_register(). |
| 720 | */ | 525 | */ |
| 721 | struct platform_device __init *omap_device_build_ss(const char *pdev_name, int pdev_id, | 526 | struct platform_device __init *omap_device_build_ss(const char *pdev_name, |
| 722 | struct omap_hwmod **ohs, int oh_cnt, | 527 | int pdev_id, |
| 723 | void *pdata, int pdata_len, | 528 | struct omap_hwmod **ohs, |
| 724 | struct omap_device_pm_latency *pm_lats, | 529 | int oh_cnt, void *pdata, |
| 725 | int pm_lats_cnt, int is_early_device) | 530 | int pdata_len) |
| 726 | { | 531 | { |
| 727 | int ret = -ENOMEM; | 532 | int ret = -ENOMEM; |
| 728 | struct platform_device *pdev; | 533 | struct platform_device *pdev; |
| @@ -746,7 +551,7 @@ struct platform_device __init *omap_device_build_ss(const char *pdev_name, int p | |||
| 746 | else | 551 | else |
| 747 | dev_set_name(&pdev->dev, "%s", pdev->name); | 552 | dev_set_name(&pdev->dev, "%s", pdev->name); |
| 748 | 553 | ||
| 749 | od = omap_device_alloc(pdev, ohs, oh_cnt, pm_lats, pm_lats_cnt); | 554 | od = omap_device_alloc(pdev, ohs, oh_cnt); |
| 750 | if (IS_ERR(od)) | 555 | if (IS_ERR(od)) |
| 751 | goto odbs_exit1; | 556 | goto odbs_exit1; |
| 752 | 557 | ||
| @@ -754,10 +559,7 @@ struct platform_device __init *omap_device_build_ss(const char *pdev_name, int p | |||
| 754 | if (ret) | 559 | if (ret) |
| 755 | goto odbs_exit2; | 560 | goto odbs_exit2; |
| 756 | 561 | ||
| 757 | if (is_early_device) | 562 | ret = omap_device_register(pdev); |
| 758 | ret = omap_early_device_register(pdev); | ||
| 759 | else | ||
| 760 | ret = omap_device_register(pdev); | ||
| 761 | if (ret) | 563 | if (ret) |
| 762 | goto odbs_exit2; | 564 | goto odbs_exit2; |
| 763 | 565 | ||
| @@ -774,24 +576,6 @@ odbs_exit: | |||
| 774 | return ERR_PTR(ret); | 576 | return ERR_PTR(ret); |
| 775 | } | 577 | } |
| 776 | 578 | ||
| 777 | /** | ||
| 778 | * omap_early_device_register - register an omap_device as an early platform | ||
| 779 | * device. | ||
| 780 | * @od: struct omap_device * to register | ||
| 781 | * | ||
| 782 | * Register the omap_device structure. This currently just calls | ||
| 783 | * platform_early_add_device() on the underlying platform_device. | ||
| 784 | * Returns 0 by default. | ||
| 785 | */ | ||
| 786 | static int __init omap_early_device_register(struct platform_device *pdev) | ||
| 787 | { | ||
| 788 | struct platform_device *devices[1]; | ||
| 789 | |||
| 790 | devices[0] = pdev; | ||
| 791 | early_platform_add_devices(devices, 1); | ||
| 792 | return 0; | ||
| 793 | } | ||
| 794 | |||
| 795 | #ifdef CONFIG_PM_RUNTIME | 579 | #ifdef CONFIG_PM_RUNTIME |
| 796 | static int _od_runtime_suspend(struct device *dev) | 580 | static int _od_runtime_suspend(struct device *dev) |
| 797 | { | 581 | { |
| @@ -902,10 +686,9 @@ int omap_device_register(struct platform_device *pdev) | |||
| 902 | * to be accessible and ready to operate. This generally involves | 686 | * to be accessible and ready to operate. This generally involves |
| 903 | * enabling clocks, setting SYSCONFIG registers; and in the future may | 687 | * enabling clocks, setting SYSCONFIG registers; and in the future may |
| 904 | * involve remuxing pins. Device drivers should call this function | 688 | * involve remuxing pins. Device drivers should call this function |
| 905 | * (through platform_data function pointers) where they would normally | 689 | * indirectly via pm_runtime_get*(). Returns -EINVAL if called when |
| 906 | * enable clocks, etc. Returns -EINVAL if called when the omap_device | 690 | * the omap_device is already enabled, or passes along the return |
| 907 | * is already enabled, or passes along the return value of | 691 | * value of _omap_device_enable_hwmods(). |
| 908 | * _omap_device_activate(). | ||
| 909 | */ | 692 | */ |
| 910 | int omap_device_enable(struct platform_device *pdev) | 693 | int omap_device_enable(struct platform_device *pdev) |
| 911 | { | 694 | { |
| @@ -921,14 +704,8 @@ int omap_device_enable(struct platform_device *pdev) | |||
| 921 | return -EINVAL; | 704 | return -EINVAL; |
| 922 | } | 705 | } |
| 923 | 706 | ||
| 924 | /* Enable everything if we're enabling this device from scratch */ | 707 | ret = _omap_device_enable_hwmods(od); |
| 925 | if (od->_state == OMAP_DEVICE_STATE_UNKNOWN) | ||
| 926 | od->pm_lat_level = od->pm_lats_cnt; | ||
| 927 | |||
| 928 | ret = _omap_device_activate(od, IGNORE_WAKEUP_LAT); | ||
| 929 | 708 | ||
| 930 | od->dev_wakeup_lat = 0; | ||
| 931 | od->_dev_wakeup_lat_limit = UINT_MAX; | ||
| 932 | od->_state = OMAP_DEVICE_STATE_ENABLED; | 709 | od->_state = OMAP_DEVICE_STATE_ENABLED; |
| 933 | 710 | ||
| 934 | return ret; | 711 | return ret; |
| @@ -938,14 +715,10 @@ int omap_device_enable(struct platform_device *pdev) | |||
| 938 | * omap_device_idle - idle an omap_device | 715 | * omap_device_idle - idle an omap_device |
| 939 | * @od: struct omap_device * to idle | 716 | * @od: struct omap_device * to idle |
| 940 | * | 717 | * |
| 941 | * Idle omap_device @od by calling as many .deactivate_func() entries | 718 | * Idle omap_device @od. Device drivers call this function indirectly |
| 942 | * in the omap_device's pm_lats table as is possible without exceeding | 719 | * via pm_runtime_put*(). Returns -EINVAL if the omap_device is not |
| 943 | * the device's maximum wakeup latency limit, pm_lat_limit. Device | ||
| 944 | * drivers should call this function (through platform_data function | ||
| 945 | * pointers) where they would normally disable clocks after operations | ||
| 946 | * complete, etc.. Returns -EINVAL if the omap_device is not | ||
| 947 | * currently enabled, or passes along the return value of | 720 | * currently enabled, or passes along the return value of |
| 948 | * _omap_device_deactivate(). | 721 | * _omap_device_idle_hwmods(). |
| 949 | */ | 722 | */ |
| 950 | int omap_device_idle(struct platform_device *pdev) | 723 | int omap_device_idle(struct platform_device *pdev) |
| 951 | { | 724 | { |
| @@ -961,7 +734,7 @@ int omap_device_idle(struct platform_device *pdev) | |||
| 961 | return -EINVAL; | 734 | return -EINVAL; |
| 962 | } | 735 | } |
| 963 | 736 | ||
| 964 | ret = _omap_device_deactivate(od, USE_WAKEUP_LAT); | 737 | ret = _omap_device_idle_hwmods(od); |
| 965 | 738 | ||
| 966 | od->_state = OMAP_DEVICE_STATE_IDLE; | 739 | od->_state = OMAP_DEVICE_STATE_IDLE; |
| 967 | 740 | ||
| @@ -969,42 +742,6 @@ int omap_device_idle(struct platform_device *pdev) | |||
| 969 | } | 742 | } |
| 970 | 743 | ||
| 971 | /** | 744 | /** |
| 972 | * omap_device_shutdown - shut down an omap_device | ||
| 973 | * @od: struct omap_device * to shut down | ||
| 974 | * | ||
| 975 | * Shut down omap_device @od by calling all .deactivate_func() entries | ||
| 976 | * in the omap_device's pm_lats table and then shutting down all of | ||
| 977 | * the underlying omap_hwmods. Used when a device is being "removed" | ||
| 978 | * or a device driver is being unloaded. Returns -EINVAL if the | ||
| 979 | * omap_device is not currently enabled or idle, or passes along the | ||
| 980 | * return value of _omap_device_deactivate(). | ||
| 981 | */ | ||
| 982 | int omap_device_shutdown(struct platform_device *pdev) | ||
| 983 | { | ||
| 984 | int ret, i; | ||
| 985 | struct omap_device *od; | ||
| 986 | |||
| 987 | od = to_omap_device(pdev); | ||
| 988 | |||
| 989 | if (od->_state != OMAP_DEVICE_STATE_ENABLED && | ||
| 990 | od->_state != OMAP_DEVICE_STATE_IDLE) { | ||
| 991 | dev_warn(&pdev->dev, | ||
| 992 | "omap_device: %s() called from invalid state %d\n", | ||
| 993 | __func__, od->_state); | ||
| 994 | return -EINVAL; | ||
| 995 | } | ||
| 996 | |||
| 997 | ret = _omap_device_deactivate(od, IGNORE_WAKEUP_LAT); | ||
| 998 | |||
| 999 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 1000 | omap_hwmod_shutdown(od->hwmods[i]); | ||
| 1001 | |||
| 1002 | od->_state = OMAP_DEVICE_STATE_SHUTDOWN; | ||
| 1003 | |||
| 1004 | return ret; | ||
| 1005 | } | ||
| 1006 | |||
| 1007 | /** | ||
| 1008 | * omap_device_assert_hardreset - set a device's hardreset line | 745 | * omap_device_assert_hardreset - set a device's hardreset line |
| 1009 | * @pdev: struct platform_device * to reset | 746 | * @pdev: struct platform_device * to reset |
| 1010 | * @name: const char * name of the reset line | 747 | * @name: const char * name of the reset line |
| @@ -1060,86 +797,6 @@ int omap_device_deassert_hardreset(struct platform_device *pdev, | |||
| 1060 | } | 797 | } |
| 1061 | 798 | ||
| 1062 | /** | 799 | /** |
| 1063 | * omap_device_align_pm_lat - activate/deactivate device to match wakeup lat lim | ||
| 1064 | * @od: struct omap_device * | ||
| 1065 | * | ||
| 1066 | * When a device's maximum wakeup latency limit changes, call some of | ||
| 1067 | * the .activate_func or .deactivate_func function pointers in the | ||
| 1068 | * omap_device's pm_lats array to ensure that the device's maximum | ||
| 1069 | * wakeup latency is less than or equal to the new latency limit. | ||
| 1070 | * Intended to be called by OMAP PM code whenever a device's maximum | ||
| 1071 | * wakeup latency limit changes (e.g., via | ||
| 1072 | * omap_pm_set_dev_wakeup_lat()). Returns 0 if nothing needs to be | ||
| 1073 | * done (e.g., if the omap_device is not currently idle, or if the | ||
| 1074 | * wakeup latency is already current with the new limit) or passes | ||
| 1075 | * along the return value of _omap_device_deactivate() or | ||
| 1076 | * _omap_device_activate(). | ||
| 1077 | */ | ||
| 1078 | int omap_device_align_pm_lat(struct platform_device *pdev, | ||
| 1079 | u32 new_wakeup_lat_limit) | ||
| 1080 | { | ||
| 1081 | int ret = -EINVAL; | ||
| 1082 | struct omap_device *od; | ||
| 1083 | |||
| 1084 | od = to_omap_device(pdev); | ||
| 1085 | |||
| 1086 | if (new_wakeup_lat_limit == od->dev_wakeup_lat) | ||
| 1087 | return 0; | ||
| 1088 | |||
| 1089 | od->_dev_wakeup_lat_limit = new_wakeup_lat_limit; | ||
| 1090 | |||
| 1091 | if (od->_state != OMAP_DEVICE_STATE_IDLE) | ||
| 1092 | return 0; | ||
| 1093 | else if (new_wakeup_lat_limit > od->dev_wakeup_lat) | ||
| 1094 | ret = _omap_device_deactivate(od, USE_WAKEUP_LAT); | ||
| 1095 | else if (new_wakeup_lat_limit < od->dev_wakeup_lat) | ||
| 1096 | ret = _omap_device_activate(od, USE_WAKEUP_LAT); | ||
| 1097 | |||
| 1098 | return ret; | ||
| 1099 | } | ||
| 1100 | |||
| 1101 | /** | ||
| 1102 | * omap_device_get_pwrdm - return the powerdomain * associated with @od | ||
| 1103 | * @od: struct omap_device * | ||
| 1104 | * | ||
| 1105 | * Return the powerdomain associated with the first underlying | ||
| 1106 | * omap_hwmod for this omap_device. Intended for use by core OMAP PM | ||
| 1107 | * code. Returns NULL on error or a struct powerdomain * upon | ||
| 1108 | * success. | ||
| 1109 | */ | ||
| 1110 | struct powerdomain *omap_device_get_pwrdm(struct omap_device *od) | ||
| 1111 | { | ||
| 1112 | /* | ||
| 1113 | * XXX Assumes that all omap_hwmod powerdomains are identical. | ||
| 1114 | * This may not necessarily be true. There should be a sanity | ||
| 1115 | * check in here to WARN() if any difference appears. | ||
| 1116 | */ | ||
| 1117 | if (!od->hwmods_cnt) | ||
| 1118 | return NULL; | ||
| 1119 | |||
| 1120 | return omap_hwmod_get_pwrdm(od->hwmods[0]); | ||
| 1121 | } | ||
| 1122 | |||
| 1123 | /** | ||
| 1124 | * omap_device_get_mpu_rt_va - return the MPU's virtual addr for the hwmod base | ||
| 1125 | * @od: struct omap_device * | ||
| 1126 | * | ||
| 1127 | * Return the MPU's virtual address for the base of the hwmod, from | ||
| 1128 | * the ioremap() that the hwmod code does. Only valid if there is one | ||
| 1129 | * hwmod associated with this device. Returns NULL if there are zero | ||
| 1130 | * or more than one hwmods associated with this omap_device; | ||
| 1131 | * otherwise, passes along the return value from | ||
| 1132 | * omap_hwmod_get_mpu_rt_va(). | ||
| 1133 | */ | ||
| 1134 | void __iomem *omap_device_get_rt_va(struct omap_device *od) | ||
| 1135 | { | ||
| 1136 | if (od->hwmods_cnt != 1) | ||
| 1137 | return NULL; | ||
| 1138 | |||
| 1139 | return omap_hwmod_get_mpu_rt_va(od->hwmods[0]); | ||
| 1140 | } | ||
| 1141 | |||
| 1142 | /** | ||
| 1143 | * omap_device_get_by_hwmod_name() - convert a hwmod name to | 800 | * omap_device_get_by_hwmod_name() - convert a hwmod name to |
| 1144 | * device pointer. | 801 | * device pointer. |
| 1145 | * @oh_name: name of the hwmod device | 802 | * @oh_name: name of the hwmod device |
| @@ -1173,82 +830,6 @@ struct device *omap_device_get_by_hwmod_name(const char *oh_name) | |||
| 1173 | 830 | ||
| 1174 | return &oh->od->pdev->dev; | 831 | return &oh->od->pdev->dev; |
| 1175 | } | 832 | } |
| 1176 | EXPORT_SYMBOL(omap_device_get_by_hwmod_name); | ||
| 1177 | |||
| 1178 | /* | ||
| 1179 | * Public functions intended for use in omap_device_pm_latency | ||
| 1180 | * .activate_func and .deactivate_func function pointers | ||
| 1181 | */ | ||
| 1182 | |||
| 1183 | /** | ||
| 1184 | * omap_device_enable_hwmods - call omap_hwmod_enable() on all hwmods | ||
| 1185 | * @od: struct omap_device *od | ||
| 1186 | * | ||
| 1187 | * Enable all underlying hwmods. Returns 0. | ||
| 1188 | */ | ||
| 1189 | int omap_device_enable_hwmods(struct omap_device *od) | ||
| 1190 | { | ||
| 1191 | int i; | ||
| 1192 | |||
| 1193 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 1194 | omap_hwmod_enable(od->hwmods[i]); | ||
| 1195 | |||
| 1196 | /* XXX pass along return value here? */ | ||
| 1197 | return 0; | ||
| 1198 | } | ||
| 1199 | |||
| 1200 | /** | ||
| 1201 | * omap_device_idle_hwmods - call omap_hwmod_idle() on all hwmods | ||
| 1202 | * @od: struct omap_device *od | ||
| 1203 | * | ||
| 1204 | * Idle all underlying hwmods. Returns 0. | ||
| 1205 | */ | ||
| 1206 | int omap_device_idle_hwmods(struct omap_device *od) | ||
| 1207 | { | ||
| 1208 | int i; | ||
| 1209 | |||
| 1210 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 1211 | omap_hwmod_idle(od->hwmods[i]); | ||
| 1212 | |||
| 1213 | /* XXX pass along return value here? */ | ||
| 1214 | return 0; | ||
| 1215 | } | ||
| 1216 | |||
| 1217 | /** | ||
| 1218 | * omap_device_disable_clocks - disable all main and interface clocks | ||
| 1219 | * @od: struct omap_device *od | ||
| 1220 | * | ||
| 1221 | * Disable the main functional clock and interface clock for all of the | ||
| 1222 | * omap_hwmods associated with the omap_device. Returns 0. | ||
| 1223 | */ | ||
| 1224 | int omap_device_disable_clocks(struct omap_device *od) | ||
| 1225 | { | ||
| 1226 | int i; | ||
| 1227 | |||
| 1228 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 1229 | omap_hwmod_disable_clocks(od->hwmods[i]); | ||
| 1230 | |||
| 1231 | /* XXX pass along return value here? */ | ||
| 1232 | return 0; | ||
| 1233 | } | ||
| 1234 | |||
| 1235 | /** | ||
| 1236 | * omap_device_enable_clocks - enable all main and interface clocks | ||
| 1237 | * @od: struct omap_device *od | ||
| 1238 | * | ||
| 1239 | * Enable the main functional clock and interface clock for all of the | ||
| 1240 | * omap_hwmods associated with the omap_device. Returns 0. | ||
| 1241 | */ | ||
| 1242 | int omap_device_enable_clocks(struct omap_device *od) | ||
| 1243 | { | ||
| 1244 | int i; | ||
| 1245 | |||
| 1246 | for (i = 0; i < od->hwmods_cnt; i++) | ||
| 1247 | omap_hwmod_enable_clocks(od->hwmods[i]); | ||
| 1248 | |||
| 1249 | /* XXX pass along return value here? */ | ||
| 1250 | return 0; | ||
| 1251 | } | ||
| 1252 | 833 | ||
| 1253 | static struct notifier_block platform_nb = { | 834 | static struct notifier_block platform_nb = { |
| 1254 | .notifier_call = _omap_device_notifier_call, | 835 | .notifier_call = _omap_device_notifier_call, |
diff --git a/arch/arm/mach-omap2/omap_device.h b/arch/arm/mach-omap2/omap_device.h index 0933c599bf89..044c31d50e5b 100644 --- a/arch/arm/mach-omap2/omap_device.h +++ b/arch/arm/mach-omap2/omap_device.h | |||
| @@ -13,20 +13,12 @@ | |||
| 13 | * it under the terms of the GNU General Public License version 2 as | 13 | * it under the terms of the GNU General Public License version 2 as |
| 14 | * published by the Free Software Foundation. | 14 | * published by the Free Software Foundation. |
| 15 | * | 15 | * |
| 16 | * Eventually this type of functionality should either be | 16 | * This type of functionality should be implemented as a proper |
| 17 | * a) implemented via arch-specific pointers in platform_device | 17 | * omap_bus/omap_device in Linux. |
| 18 | * or | ||
| 19 | * b) implemented as a proper omap_bus/omap_device in Linux, no more | ||
| 20 | * platform_device | ||
| 21 | * | 18 | * |
| 22 | * omap_device differs from omap_hwmod in that it includes external | 19 | * omap_device differs from omap_hwmod in that it includes external |
| 23 | * (e.g., board- and system-level) integration details. omap_hwmod | 20 | * (e.g., board- and system-level) integration details. omap_hwmod |
| 24 | * stores hardware data that is invariant for a given OMAP chip. | 21 | * stores hardware data that is invariant for a given OMAP chip. |
| 25 | * | ||
| 26 | * To do: | ||
| 27 | * - GPIO integration | ||
| 28 | * - regulator integration | ||
| 29 | * | ||
| 30 | */ | 22 | */ |
| 31 | #ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H | 23 | #ifndef __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H |
| 32 | #define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H | 24 | #define __ARCH_ARM_PLAT_OMAP_INCLUDE_MACH_OMAP_DEVICE_H |
| @@ -45,19 +37,14 @@ extern struct dev_pm_domain omap_device_pm_domain; | |||
| 45 | #define OMAP_DEVICE_STATE_SHUTDOWN 3 | 37 | #define OMAP_DEVICE_STATE_SHUTDOWN 3 |
| 46 | 38 | ||
| 47 | /* omap_device.flags values */ | 39 | /* omap_device.flags values */ |
| 48 | #define OMAP_DEVICE_SUSPENDED BIT(0) | 40 | #define OMAP_DEVICE_SUSPENDED BIT(0) |
| 49 | #define OMAP_DEVICE_NO_IDLE_ON_SUSPEND BIT(1) | 41 | #define OMAP_DEVICE_NO_IDLE_ON_SUSPEND BIT(1) |
| 50 | 42 | ||
| 51 | /** | 43 | /** |
| 52 | * struct omap_device - omap_device wrapper for platform_devices | 44 | * struct omap_device - omap_device wrapper for platform_devices |
| 53 | * @pdev: platform_device | 45 | * @pdev: platform_device |
| 54 | * @hwmods: (one .. many per omap_device) | 46 | * @hwmods: (one .. many per omap_device) |
| 55 | * @hwmods_cnt: ARRAY_SIZE() of @hwmods | 47 | * @hwmods_cnt: ARRAY_SIZE() of @hwmods |
| 56 | * @pm_lats: ptr to an omap_device_pm_latency table | ||
| 57 | * @pm_lats_cnt: ARRAY_SIZE() of what is passed to @pm_lats | ||
| 58 | * @pm_lat_level: array index of the last odpl entry executed - -1 if never | ||
| 59 | * @dev_wakeup_lat: dev wakeup latency in nanoseconds | ||
| 60 | * @_dev_wakeup_lat_limit: dev wakeup latency limit in nsec - set by OMAP PM | ||
| 61 | * @_state: one of OMAP_DEVICE_STATE_* (see above) | 48 | * @_state: one of OMAP_DEVICE_STATE_* (see above) |
| 62 | * @flags: device flags | 49 | * @flags: device flags |
| 63 | * @_driver_status: one of BUS_NOTIFY_*_DRIVER from <linux/device.h> | 50 | * @_driver_status: one of BUS_NOTIFY_*_DRIVER from <linux/device.h> |
| @@ -71,12 +58,7 @@ extern struct dev_pm_domain omap_device_pm_domain; | |||
| 71 | struct omap_device { | 58 | struct omap_device { |
| 72 | struct platform_device *pdev; | 59 | struct platform_device *pdev; |
| 73 | struct omap_hwmod **hwmods; | 60 | struct omap_hwmod **hwmods; |
| 74 | struct omap_device_pm_latency *pm_lats; | ||
| 75 | u32 dev_wakeup_lat; | ||
| 76 | u32 _dev_wakeup_lat_limit; | ||
| 77 | unsigned long _driver_status; | 61 | unsigned long _driver_status; |
| 78 | u8 pm_lats_cnt; | ||
| 79 | s8 pm_lat_level; | ||
| 80 | u8 hwmods_cnt; | 62 | u8 hwmods_cnt; |
| 81 | u8 _state; | 63 | u8 _state; |
| 82 | u8 flags; | 64 | u8 flags; |
| @@ -86,36 +68,25 @@ struct omap_device { | |||
| 86 | 68 | ||
| 87 | int omap_device_enable(struct platform_device *pdev); | 69 | int omap_device_enable(struct platform_device *pdev); |
| 88 | int omap_device_idle(struct platform_device *pdev); | 70 | int omap_device_idle(struct platform_device *pdev); |
| 89 | int omap_device_shutdown(struct platform_device *pdev); | ||
| 90 | 71 | ||
| 91 | /* Core code interface */ | 72 | /* Core code interface */ |
| 92 | 73 | ||
| 93 | struct platform_device *omap_device_build(const char *pdev_name, int pdev_id, | 74 | struct platform_device *omap_device_build(const char *pdev_name, int pdev_id, |
| 94 | struct omap_hwmod *oh, void *pdata, | 75 | struct omap_hwmod *oh, void *pdata, |
| 95 | int pdata_len, | 76 | int pdata_len); |
| 96 | struct omap_device_pm_latency *pm_lats, | ||
| 97 | int pm_lats_cnt, int is_early_device); | ||
| 98 | 77 | ||
| 99 | struct platform_device *omap_device_build_ss(const char *pdev_name, int pdev_id, | 78 | struct platform_device *omap_device_build_ss(const char *pdev_name, int pdev_id, |
| 100 | struct omap_hwmod **oh, int oh_cnt, | 79 | struct omap_hwmod **oh, int oh_cnt, |
| 101 | void *pdata, int pdata_len, | 80 | void *pdata, int pdata_len); |
| 102 | struct omap_device_pm_latency *pm_lats, | ||
| 103 | int pm_lats_cnt, int is_early_device); | ||
| 104 | 81 | ||
| 105 | struct omap_device *omap_device_alloc(struct platform_device *pdev, | 82 | struct omap_device *omap_device_alloc(struct platform_device *pdev, |
| 106 | struct omap_hwmod **ohs, int oh_cnt, | 83 | struct omap_hwmod **ohs, int oh_cnt); |
| 107 | struct omap_device_pm_latency *pm_lats, | ||
| 108 | int pm_lats_cnt); | ||
| 109 | void omap_device_delete(struct omap_device *od); | 84 | void omap_device_delete(struct omap_device *od); |
| 110 | int omap_device_register(struct platform_device *pdev); | 85 | int omap_device_register(struct platform_device *pdev); |
| 111 | 86 | ||
| 112 | void __iomem *omap_device_get_rt_va(struct omap_device *od); | ||
| 113 | struct device *omap_device_get_by_hwmod_name(const char *oh_name); | 87 | struct device *omap_device_get_by_hwmod_name(const char *oh_name); |
| 114 | 88 | ||
| 115 | /* OMAP PM interface */ | 89 | /* OMAP PM interface */ |
| 116 | int omap_device_align_pm_lat(struct platform_device *pdev, | ||
| 117 | u32 new_wakeup_lat_limit); | ||
| 118 | struct powerdomain *omap_device_get_pwrdm(struct omap_device *od); | ||
| 119 | int omap_device_get_context_loss_count(struct platform_device *pdev); | 90 | int omap_device_get_context_loss_count(struct platform_device *pdev); |
| 120 | 91 | ||
| 121 | /* Other */ | 92 | /* Other */ |
| @@ -124,40 +95,6 @@ int omap_device_assert_hardreset(struct platform_device *pdev, | |||
| 124 | const char *name); | 95 | const char *name); |
| 125 | int omap_device_deassert_hardreset(struct platform_device *pdev, | 96 | int omap_device_deassert_hardreset(struct platform_device *pdev, |
| 126 | const char *name); | 97 | const char *name); |
| 127 | int omap_device_idle_hwmods(struct omap_device *od); | ||
| 128 | int omap_device_enable_hwmods(struct omap_device *od); | ||
| 129 | |||
| 130 | int omap_device_disable_clocks(struct omap_device *od); | ||
| 131 | int omap_device_enable_clocks(struct omap_device *od); | ||
| 132 | |||
| 133 | /* | ||
| 134 | * Entries should be kept in latency order ascending | ||
| 135 | * | ||
| 136 | * deact_lat is the maximum number of microseconds required to complete | ||
| 137 | * deactivate_func() at the device's slowest OPP. | ||
| 138 | * | ||
| 139 | * act_lat is the maximum number of microseconds required to complete | ||
| 140 | * activate_func() at the device's slowest OPP. | ||
| 141 | * | ||
| 142 | * This will result in some suboptimal power management decisions at fast | ||
| 143 | * OPPs, but avoids having to recompute all device power management decisions | ||
| 144 | * if the system shifts from a fast OPP to a slow OPP (in order to meet | ||
| 145 | * latency requirements). | ||
| 146 | * | ||
| 147 | * XXX should deactivate_func/activate_func() take platform_device pointers | ||
| 148 | * rather than omap_device pointers? | ||
| 149 | */ | ||
| 150 | struct omap_device_pm_latency { | ||
| 151 | u32 deactivate_lat; | ||
| 152 | u32 deactivate_lat_worst; | ||
| 153 | int (*deactivate_func)(struct omap_device *od); | ||
| 154 | u32 activate_lat; | ||
| 155 | u32 activate_lat_worst; | ||
| 156 | int (*activate_func)(struct omap_device *od); | ||
| 157 | u32 flags; | ||
| 158 | }; | ||
| 159 | |||
| 160 | #define OMAP_DEVICE_LATENCY_AUTO_ADJUST BIT(1) | ||
| 161 | 98 | ||
| 162 | /* Get omap_device pointer from platform_device pointer */ | 99 | /* Get omap_device pointer from platform_device pointer */ |
| 163 | static inline struct omap_device *to_omap_device(struct platform_device *pdev) | 100 | static inline struct omap_device *to_omap_device(struct platform_device *pdev) |
diff --git a/arch/arm/mach-omap2/omap_hwmod.c b/arch/arm/mach-omap2/omap_hwmod.c index 4653efb87a27..6804d474a47d 100644 --- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c | |||
| @@ -139,6 +139,8 @@ | |||
| 139 | #include <linux/slab.h> | 139 | #include <linux/slab.h> |
| 140 | #include <linux/bootmem.h> | 140 | #include <linux/bootmem.h> |
| 141 | 141 | ||
| 142 | #include <asm/system_misc.h> | ||
| 143 | |||
| 142 | #include "clock.h" | 144 | #include "clock.h" |
| 143 | #include "omap_hwmod.h" | 145 | #include "omap_hwmod.h" |
| 144 | 146 | ||
| @@ -2134,6 +2136,8 @@ static int _enable(struct omap_hwmod *oh) | |||
| 2134 | _enable_clocks(oh); | 2136 | _enable_clocks(oh); |
| 2135 | if (soc_ops.enable_module) | 2137 | if (soc_ops.enable_module) |
| 2136 | soc_ops.enable_module(oh); | 2138 | soc_ops.enable_module(oh); |
| 2139 | if (oh->flags & HWMOD_BLOCK_WFI) | ||
| 2140 | disable_hlt(); | ||
| 2137 | 2141 | ||
| 2138 | if (soc_ops.update_context_lost) | 2142 | if (soc_ops.update_context_lost) |
| 2139 | soc_ops.update_context_lost(oh); | 2143 | soc_ops.update_context_lost(oh); |
| @@ -2195,6 +2199,8 @@ static int _idle(struct omap_hwmod *oh) | |||
| 2195 | _idle_sysc(oh); | 2199 | _idle_sysc(oh); |
| 2196 | _del_initiator_dep(oh, mpu_oh); | 2200 | _del_initiator_dep(oh, mpu_oh); |
| 2197 | 2201 | ||
| 2202 | if (oh->flags & HWMOD_BLOCK_WFI) | ||
| 2203 | enable_hlt(); | ||
| 2198 | if (soc_ops.disable_module) | 2204 | if (soc_ops.disable_module) |
| 2199 | soc_ops.disable_module(oh); | 2205 | soc_ops.disable_module(oh); |
| 2200 | 2206 | ||
| @@ -2303,6 +2309,8 @@ static int _shutdown(struct omap_hwmod *oh) | |||
| 2303 | if (oh->_state == _HWMOD_STATE_ENABLED) { | 2309 | if (oh->_state == _HWMOD_STATE_ENABLED) { |
| 2304 | _del_initiator_dep(oh, mpu_oh); | 2310 | _del_initiator_dep(oh, mpu_oh); |
| 2305 | /* XXX what about the other system initiators here? dma, dsp */ | 2311 | /* XXX what about the other system initiators here? dma, dsp */ |
| 2312 | if (oh->flags & HWMOD_BLOCK_WFI) | ||
| 2313 | enable_hlt(); | ||
| 2306 | if (soc_ops.disable_module) | 2314 | if (soc_ops.disable_module) |
| 2307 | soc_ops.disable_module(oh); | 2315 | soc_ops.disable_module(oh); |
| 2308 | _disable_clocks(oh); | 2316 | _disable_clocks(oh); |
diff --git a/arch/arm/mach-omap2/omap_hwmod.h b/arch/arm/mach-omap2/omap_hwmod.h index 3ae852a522f9..80c00e706d69 100644 --- a/arch/arm/mach-omap2/omap_hwmod.h +++ b/arch/arm/mach-omap2/omap_hwmod.h | |||
| @@ -451,6 +451,14 @@ struct omap_hwmod_omap4_prcm { | |||
| 451 | * enabled. This prevents the hwmod code from being able to | 451 | * enabled. This prevents the hwmod code from being able to |
| 452 | * enable and reset the IP block early. XXX Eventually it should | 452 | * enable and reset the IP block early. XXX Eventually it should |
| 453 | * be possible to query the clock framework for this information. | 453 | * be possible to query the clock framework for this information. |
| 454 | * HWMOD_BLOCK_WFI: Some OMAP peripherals apparently don't work | ||
| 455 | * correctly if the MPU is allowed to go idle while the | ||
| 456 | * peripherals are active. This is apparently true for the I2C on | ||
| 457 | * OMAP2420, and also the EMAC on AM3517/3505. It's unlikely that | ||
| 458 | * this is really true -- we're probably not configuring something | ||
| 459 | * correctly, or this is being abused to deal with some PM latency | ||
| 460 | * issues -- but we're currently suffering from a shortage of | ||
| 461 | * folks who are able to track these issues down properly. | ||
| 454 | */ | 462 | */ |
| 455 | #define HWMOD_SWSUP_SIDLE (1 << 0) | 463 | #define HWMOD_SWSUP_SIDLE (1 << 0) |
| 456 | #define HWMOD_SWSUP_MSTANDBY (1 << 1) | 464 | #define HWMOD_SWSUP_MSTANDBY (1 << 1) |
| @@ -462,6 +470,7 @@ struct omap_hwmod_omap4_prcm { | |||
| 462 | #define HWMOD_CONTROL_OPT_CLKS_IN_RESET (1 << 7) | 470 | #define HWMOD_CONTROL_OPT_CLKS_IN_RESET (1 << 7) |
| 463 | #define HWMOD_16BIT_REG (1 << 8) | 471 | #define HWMOD_16BIT_REG (1 << 8) |
| 464 | #define HWMOD_EXT_OPT_MAIN_CLK (1 << 9) | 472 | #define HWMOD_EXT_OPT_MAIN_CLK (1 << 9) |
| 473 | #define HWMOD_BLOCK_WFI (1 << 10) | ||
| 465 | 474 | ||
| 466 | /* | 475 | /* |
| 467 | * omap_hwmod._int_flags definitions | 476 | * omap_hwmod._int_flags definitions |
diff --git a/arch/arm/mach-omap2/omap_hwmod_2420_data.c b/arch/arm/mach-omap2/omap_hwmod_2420_data.c index b5efe58c0be0..6a764af6c6d3 100644 --- a/arch/arm/mach-omap2/omap_hwmod_2420_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_2420_data.c | |||
| @@ -121,7 +121,12 @@ static struct omap_hwmod omap2420_i2c1_hwmod = { | |||
| 121 | }, | 121 | }, |
| 122 | .class = &i2c_class, | 122 | .class = &i2c_class, |
| 123 | .dev_attr = &i2c_dev_attr, | 123 | .dev_attr = &i2c_dev_attr, |
| 124 | .flags = HWMOD_16BIT_REG, | 124 | /* |
| 125 | * From mach-omap2/pm24xx.c: "Putting MPU into the WFI state | ||
| 126 | * while a transfer is active seems to cause the I2C block to | ||
| 127 | * timeout. Why? Good question." | ||
| 128 | */ | ||
| 129 | .flags = (HWMOD_16BIT_REG | HWMOD_BLOCK_WFI), | ||
| 125 | }; | 130 | }; |
| 126 | 131 | ||
| 127 | /* I2C2 */ | 132 | /* I2C2 */ |
diff --git a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c index 793f54ac7d14..a1849a883702 100644 --- a/arch/arm/mach-omap2/omap_hwmod_44xx_data.c +++ b/arch/arm/mach-omap2/omap_hwmod_44xx_data.c | |||
| @@ -616,7 +616,7 @@ static struct omap_hwmod omap44xx_dmic_hwmod = { | |||
| 616 | .clkdm_name = "abe_clkdm", | 616 | .clkdm_name = "abe_clkdm", |
| 617 | .mpu_irqs = omap44xx_dmic_irqs, | 617 | .mpu_irqs = omap44xx_dmic_irqs, |
| 618 | .sdma_reqs = omap44xx_dmic_sdma_reqs, | 618 | .sdma_reqs = omap44xx_dmic_sdma_reqs, |
| 619 | .main_clk = "dmic_fck", | 619 | .main_clk = "func_dmic_abe_gfclk", |
| 620 | .prcm = { | 620 | .prcm = { |
| 621 | .omap4 = { | 621 | .omap4 = { |
| 622 | .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET, | 622 | .clkctrl_offs = OMAP4_CM1_ABE_DMIC_CLKCTRL_OFFSET, |
| @@ -1161,7 +1161,7 @@ static struct omap_hwmod omap44xx_gpio1_hwmod = { | |||
| 1161 | .class = &omap44xx_gpio_hwmod_class, | 1161 | .class = &omap44xx_gpio_hwmod_class, |
| 1162 | .clkdm_name = "l4_wkup_clkdm", | 1162 | .clkdm_name = "l4_wkup_clkdm", |
| 1163 | .mpu_irqs = omap44xx_gpio1_irqs, | 1163 | .mpu_irqs = omap44xx_gpio1_irqs, |
| 1164 | .main_clk = "gpio1_ick", | 1164 | .main_clk = "l4_wkup_clk_mux_ck", |
| 1165 | .prcm = { | 1165 | .prcm = { |
| 1166 | .omap4 = { | 1166 | .omap4 = { |
| 1167 | .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET, | 1167 | .clkctrl_offs = OMAP4_CM_WKUP_GPIO1_CLKCTRL_OFFSET, |
| @@ -1190,7 +1190,7 @@ static struct omap_hwmod omap44xx_gpio2_hwmod = { | |||
| 1190 | .clkdm_name = "l4_per_clkdm", | 1190 | .clkdm_name = "l4_per_clkdm", |
| 1191 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | 1191 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1192 | .mpu_irqs = omap44xx_gpio2_irqs, | 1192 | .mpu_irqs = omap44xx_gpio2_irqs, |
| 1193 | .main_clk = "gpio2_ick", | 1193 | .main_clk = "l4_div_ck", |
| 1194 | .prcm = { | 1194 | .prcm = { |
| 1195 | .omap4 = { | 1195 | .omap4 = { |
| 1196 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET, | 1196 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO2_CLKCTRL_OFFSET, |
| @@ -1219,7 +1219,7 @@ static struct omap_hwmod omap44xx_gpio3_hwmod = { | |||
| 1219 | .clkdm_name = "l4_per_clkdm", | 1219 | .clkdm_name = "l4_per_clkdm", |
| 1220 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | 1220 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1221 | .mpu_irqs = omap44xx_gpio3_irqs, | 1221 | .mpu_irqs = omap44xx_gpio3_irqs, |
| 1222 | .main_clk = "gpio3_ick", | 1222 | .main_clk = "l4_div_ck", |
| 1223 | .prcm = { | 1223 | .prcm = { |
| 1224 | .omap4 = { | 1224 | .omap4 = { |
| 1225 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET, | 1225 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO3_CLKCTRL_OFFSET, |
| @@ -1248,7 +1248,7 @@ static struct omap_hwmod omap44xx_gpio4_hwmod = { | |||
| 1248 | .clkdm_name = "l4_per_clkdm", | 1248 | .clkdm_name = "l4_per_clkdm", |
| 1249 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | 1249 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1250 | .mpu_irqs = omap44xx_gpio4_irqs, | 1250 | .mpu_irqs = omap44xx_gpio4_irqs, |
| 1251 | .main_clk = "gpio4_ick", | 1251 | .main_clk = "l4_div_ck", |
| 1252 | .prcm = { | 1252 | .prcm = { |
| 1253 | .omap4 = { | 1253 | .omap4 = { |
| 1254 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET, | 1254 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO4_CLKCTRL_OFFSET, |
| @@ -1277,7 +1277,7 @@ static struct omap_hwmod omap44xx_gpio5_hwmod = { | |||
| 1277 | .clkdm_name = "l4_per_clkdm", | 1277 | .clkdm_name = "l4_per_clkdm", |
| 1278 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | 1278 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1279 | .mpu_irqs = omap44xx_gpio5_irqs, | 1279 | .mpu_irqs = omap44xx_gpio5_irqs, |
| 1280 | .main_clk = "gpio5_ick", | 1280 | .main_clk = "l4_div_ck", |
| 1281 | .prcm = { | 1281 | .prcm = { |
| 1282 | .omap4 = { | 1282 | .omap4 = { |
| 1283 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET, | 1283 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO5_CLKCTRL_OFFSET, |
| @@ -1306,7 +1306,7 @@ static struct omap_hwmod omap44xx_gpio6_hwmod = { | |||
| 1306 | .clkdm_name = "l4_per_clkdm", | 1306 | .clkdm_name = "l4_per_clkdm", |
| 1307 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, | 1307 | .flags = HWMOD_CONTROL_OPT_CLKS_IN_RESET, |
| 1308 | .mpu_irqs = omap44xx_gpio6_irqs, | 1308 | .mpu_irqs = omap44xx_gpio6_irqs, |
| 1309 | .main_clk = "gpio6_ick", | 1309 | .main_clk = "l4_div_ck", |
| 1310 | .prcm = { | 1310 | .prcm = { |
| 1311 | .omap4 = { | 1311 | .omap4 = { |
| 1312 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET, | 1312 | .clkctrl_offs = OMAP4_CM_L4PER_GPIO6_CLKCTRL_OFFSET, |
| @@ -1405,7 +1405,7 @@ static struct omap_hwmod omap44xx_gpu_hwmod = { | |||
| 1405 | .class = &omap44xx_gpu_hwmod_class, | 1405 | .class = &omap44xx_gpu_hwmod_class, |
| 1406 | .clkdm_name = "l3_gfx_clkdm", | 1406 | .clkdm_name = "l3_gfx_clkdm", |
| 1407 | .mpu_irqs = omap44xx_gpu_irqs, | 1407 | .mpu_irqs = omap44xx_gpu_irqs, |
| 1408 | .main_clk = "gpu_fck", | 1408 | .main_clk = "sgx_clk_mux", |
| 1409 | .prcm = { | 1409 | .prcm = { |
| 1410 | .omap4 = { | 1410 | .omap4 = { |
| 1411 | .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET, | 1411 | .clkctrl_offs = OMAP4_CM_GFX_GFX_CLKCTRL_OFFSET, |
| @@ -1446,7 +1446,7 @@ static struct omap_hwmod omap44xx_hdq1w_hwmod = { | |||
| 1446 | .clkdm_name = "l4_per_clkdm", | 1446 | .clkdm_name = "l4_per_clkdm", |
| 1447 | .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */ | 1447 | .flags = HWMOD_INIT_NO_RESET, /* XXX temporary */ |
| 1448 | .mpu_irqs = omap44xx_hdq1w_irqs, | 1448 | .mpu_irqs = omap44xx_hdq1w_irqs, |
| 1449 | .main_clk = "hdq1w_fck", | 1449 | .main_clk = "func_12m_fclk", |
| 1450 | .prcm = { | 1450 | .prcm = { |
| 1451 | .omap4 = { | 1451 | .omap4 = { |
| 1452 | .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET, | 1452 | .clkctrl_offs = OMAP4_CM_L4PER_HDQ1W_CLKCTRL_OFFSET, |
| @@ -1550,7 +1550,7 @@ static struct omap_hwmod omap44xx_i2c1_hwmod = { | |||
| 1550 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, | 1550 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, |
| 1551 | .mpu_irqs = omap44xx_i2c1_irqs, | 1551 | .mpu_irqs = omap44xx_i2c1_irqs, |
| 1552 | .sdma_reqs = omap44xx_i2c1_sdma_reqs, | 1552 | .sdma_reqs = omap44xx_i2c1_sdma_reqs, |
| 1553 | .main_clk = "i2c1_fck", | 1553 | .main_clk = "func_96m_fclk", |
| 1554 | .prcm = { | 1554 | .prcm = { |
| 1555 | .omap4 = { | 1555 | .omap4 = { |
| 1556 | .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET, | 1556 | .clkctrl_offs = OMAP4_CM_L4PER_I2C1_CLKCTRL_OFFSET, |
| @@ -1580,7 +1580,7 @@ static struct omap_hwmod omap44xx_i2c2_hwmod = { | |||
| 1580 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, | 1580 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, |
| 1581 | .mpu_irqs = omap44xx_i2c2_irqs, | 1581 | .mpu_irqs = omap44xx_i2c2_irqs, |
| 1582 | .sdma_reqs = omap44xx_i2c2_sdma_reqs, | 1582 | .sdma_reqs = omap44xx_i2c2_sdma_reqs, |
| 1583 | .main_clk = "i2c2_fck", | 1583 | .main_clk = "func_96m_fclk", |
| 1584 | .prcm = { | 1584 | .prcm = { |
| 1585 | .omap4 = { | 1585 | .omap4 = { |
| 1586 | .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET, | 1586 | .clkctrl_offs = OMAP4_CM_L4PER_I2C2_CLKCTRL_OFFSET, |
| @@ -1610,7 +1610,7 @@ static struct omap_hwmod omap44xx_i2c3_hwmod = { | |||
| 1610 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, | 1610 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, |
| 1611 | .mpu_irqs = omap44xx_i2c3_irqs, | 1611 | .mpu_irqs = omap44xx_i2c3_irqs, |
| 1612 | .sdma_reqs = omap44xx_i2c3_sdma_reqs, | 1612 | .sdma_reqs = omap44xx_i2c3_sdma_reqs, |
| 1613 | .main_clk = "i2c3_fck", | 1613 | .main_clk = "func_96m_fclk", |
| 1614 | .prcm = { | 1614 | .prcm = { |
| 1615 | .omap4 = { | 1615 | .omap4 = { |
| 1616 | .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET, | 1616 | .clkctrl_offs = OMAP4_CM_L4PER_I2C3_CLKCTRL_OFFSET, |
| @@ -1640,7 +1640,7 @@ static struct omap_hwmod omap44xx_i2c4_hwmod = { | |||
| 1640 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, | 1640 | .flags = HWMOD_16BIT_REG | HWMOD_SET_DEFAULT_CLOCKACT, |
| 1641 | .mpu_irqs = omap44xx_i2c4_irqs, | 1641 | .mpu_irqs = omap44xx_i2c4_irqs, |
| 1642 | .sdma_reqs = omap44xx_i2c4_sdma_reqs, | 1642 | .sdma_reqs = omap44xx_i2c4_sdma_reqs, |
| 1643 | .main_clk = "i2c4_fck", | 1643 | .main_clk = "func_96m_fclk", |
| 1644 | .prcm = { | 1644 | .prcm = { |
| 1645 | .omap4 = { | 1645 | .omap4 = { |
| 1646 | .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET, | 1646 | .clkctrl_offs = OMAP4_CM_L4PER_I2C4_CLKCTRL_OFFSET, |
| @@ -1743,7 +1743,7 @@ static struct omap_hwmod omap44xx_iss_hwmod = { | |||
| 1743 | .clkdm_name = "iss_clkdm", | 1743 | .clkdm_name = "iss_clkdm", |
| 1744 | .mpu_irqs = omap44xx_iss_irqs, | 1744 | .mpu_irqs = omap44xx_iss_irqs, |
| 1745 | .sdma_reqs = omap44xx_iss_sdma_reqs, | 1745 | .sdma_reqs = omap44xx_iss_sdma_reqs, |
| 1746 | .main_clk = "iss_fck", | 1746 | .main_clk = "ducati_clk_mux_ck", |
| 1747 | .prcm = { | 1747 | .prcm = { |
| 1748 | .omap4 = { | 1748 | .omap4 = { |
| 1749 | .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET, | 1749 | .clkctrl_offs = OMAP4_CM_CAM_ISS_CLKCTRL_OFFSET, |
| @@ -1785,7 +1785,7 @@ static struct omap_hwmod omap44xx_iva_hwmod = { | |||
| 1785 | .mpu_irqs = omap44xx_iva_irqs, | 1785 | .mpu_irqs = omap44xx_iva_irqs, |
| 1786 | .rst_lines = omap44xx_iva_resets, | 1786 | .rst_lines = omap44xx_iva_resets, |
| 1787 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets), | 1787 | .rst_lines_cnt = ARRAY_SIZE(omap44xx_iva_resets), |
| 1788 | .main_clk = "iva_fck", | 1788 | .main_clk = "dpll_iva_m5x2_ck", |
| 1789 | .prcm = { | 1789 | .prcm = { |
| 1790 | .omap4 = { | 1790 | .omap4 = { |
| 1791 | .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET, | 1791 | .clkctrl_offs = OMAP4_CM_IVAHD_IVAHD_CLKCTRL_OFFSET, |
| @@ -1829,7 +1829,7 @@ static struct omap_hwmod omap44xx_kbd_hwmod = { | |||
| 1829 | .class = &omap44xx_kbd_hwmod_class, | 1829 | .class = &omap44xx_kbd_hwmod_class, |
| 1830 | .clkdm_name = "l4_wkup_clkdm", | 1830 | .clkdm_name = "l4_wkup_clkdm", |
| 1831 | .mpu_irqs = omap44xx_kbd_irqs, | 1831 | .mpu_irqs = omap44xx_kbd_irqs, |
| 1832 | .main_clk = "kbd_fck", | 1832 | .main_clk = "sys_32k_ck", |
| 1833 | .prcm = { | 1833 | .prcm = { |
| 1834 | .omap4 = { | 1834 | .omap4 = { |
| 1835 | .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET, | 1835 | .clkctrl_offs = OMAP4_CM_WKUP_KEYBOARD_CLKCTRL_OFFSET, |
| @@ -1920,7 +1920,7 @@ static struct omap_hwmod omap44xx_mcasp_hwmod = { | |||
| 1920 | .clkdm_name = "abe_clkdm", | 1920 | .clkdm_name = "abe_clkdm", |
| 1921 | .mpu_irqs = omap44xx_mcasp_irqs, | 1921 | .mpu_irqs = omap44xx_mcasp_irqs, |
| 1922 | .sdma_reqs = omap44xx_mcasp_sdma_reqs, | 1922 | .sdma_reqs = omap44xx_mcasp_sdma_reqs, |
| 1923 | .main_clk = "mcasp_fck", | 1923 | .main_clk = "func_mcasp_abe_gfclk", |
| 1924 | .prcm = { | 1924 | .prcm = { |
| 1925 | .omap4 = { | 1925 | .omap4 = { |
| 1926 | .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET, | 1926 | .clkctrl_offs = OMAP4_CM1_ABE_MCASP_CLKCTRL_OFFSET, |
| @@ -1972,7 +1972,7 @@ static struct omap_hwmod omap44xx_mcbsp1_hwmod = { | |||
| 1972 | .clkdm_name = "abe_clkdm", | 1972 | .clkdm_name = "abe_clkdm", |
| 1973 | .mpu_irqs = omap44xx_mcbsp1_irqs, | 1973 | .mpu_irqs = omap44xx_mcbsp1_irqs, |
| 1974 | .sdma_reqs = omap44xx_mcbsp1_sdma_reqs, | 1974 | .sdma_reqs = omap44xx_mcbsp1_sdma_reqs, |
| 1975 | .main_clk = "mcbsp1_fck", | 1975 | .main_clk = "func_mcbsp1_gfclk", |
| 1976 | .prcm = { | 1976 | .prcm = { |
| 1977 | .omap4 = { | 1977 | .omap4 = { |
| 1978 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET, | 1978 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP1_CLKCTRL_OFFSET, |
| @@ -2007,7 +2007,7 @@ static struct omap_hwmod omap44xx_mcbsp2_hwmod = { | |||
| 2007 | .clkdm_name = "abe_clkdm", | 2007 | .clkdm_name = "abe_clkdm", |
| 2008 | .mpu_irqs = omap44xx_mcbsp2_irqs, | 2008 | .mpu_irqs = omap44xx_mcbsp2_irqs, |
| 2009 | .sdma_reqs = omap44xx_mcbsp2_sdma_reqs, | 2009 | .sdma_reqs = omap44xx_mcbsp2_sdma_reqs, |
| 2010 | .main_clk = "mcbsp2_fck", | 2010 | .main_clk = "func_mcbsp2_gfclk", |
| 2011 | .prcm = { | 2011 | .prcm = { |
| 2012 | .omap4 = { | 2012 | .omap4 = { |
| 2013 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET, | 2013 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP2_CLKCTRL_OFFSET, |
| @@ -2042,7 +2042,7 @@ static struct omap_hwmod omap44xx_mcbsp3_hwmod = { | |||
| 2042 | .clkdm_name = "abe_clkdm", | 2042 | .clkdm_name = "abe_clkdm", |
| 2043 | .mpu_irqs = omap44xx_mcbsp3_irqs, | 2043 | .mpu_irqs = omap44xx_mcbsp3_irqs, |
| 2044 | .sdma_reqs = omap44xx_mcbsp3_sdma_reqs, | 2044 | .sdma_reqs = omap44xx_mcbsp3_sdma_reqs, |
| 2045 | .main_clk = "mcbsp3_fck", | 2045 | .main_clk = "func_mcbsp3_gfclk", |
| 2046 | .prcm = { | 2046 | .prcm = { |
| 2047 | .omap4 = { | 2047 | .omap4 = { |
| 2048 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET, | 2048 | .clkctrl_offs = OMAP4_CM1_ABE_MCBSP3_CLKCTRL_OFFSET, |
| @@ -2077,7 +2077,7 @@ static struct omap_hwmod omap44xx_mcbsp4_hwmod = { | |||
| 2077 | .clkdm_name = "l4_per_clkdm", | 2077 | .clkdm_name = "l4_per_clkdm", |
| 2078 | .mpu_irqs = omap44xx_mcbsp4_irqs, | 2078 | .mpu_irqs = omap44xx_mcbsp4_irqs, |
| 2079 | .sdma_reqs = omap44xx_mcbsp4_sdma_reqs, | 2079 | .sdma_reqs = omap44xx_mcbsp4_sdma_reqs, |
| 2080 | .main_clk = "mcbsp4_fck", | 2080 | .main_clk = "per_mcbsp4_gfclk", |
| 2081 | .prcm = { | 2081 | .prcm = { |
| 2082 | .omap4 = { | 2082 | .omap4 = { |
| 2083 | .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET, | 2083 | .clkctrl_offs = OMAP4_CM_L4PER_MCBSP4_CLKCTRL_OFFSET, |
| @@ -2140,7 +2140,7 @@ static struct omap_hwmod omap44xx_mcpdm_hwmod = { | |||
| 2140 | .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, | 2140 | .flags = HWMOD_EXT_OPT_MAIN_CLK | HWMOD_SWSUP_SIDLE, |
| 2141 | .mpu_irqs = omap44xx_mcpdm_irqs, | 2141 | .mpu_irqs = omap44xx_mcpdm_irqs, |
| 2142 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, | 2142 | .sdma_reqs = omap44xx_mcpdm_sdma_reqs, |
| 2143 | .main_clk = "mcpdm_fck", | 2143 | .main_clk = "pad_clks_ck", |
| 2144 | .prcm = { | 2144 | .prcm = { |
| 2145 | .omap4 = { | 2145 | .omap4 = { |
| 2146 | .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET, | 2146 | .clkctrl_offs = OMAP4_CM1_ABE_PDM_CLKCTRL_OFFSET, |
| @@ -2201,7 +2201,7 @@ static struct omap_hwmod omap44xx_mcspi1_hwmod = { | |||
| 2201 | .clkdm_name = "l4_per_clkdm", | 2201 | .clkdm_name = "l4_per_clkdm", |
| 2202 | .mpu_irqs = omap44xx_mcspi1_irqs, | 2202 | .mpu_irqs = omap44xx_mcspi1_irqs, |
| 2203 | .sdma_reqs = omap44xx_mcspi1_sdma_reqs, | 2203 | .sdma_reqs = omap44xx_mcspi1_sdma_reqs, |
| 2204 | .main_clk = "mcspi1_fck", | 2204 | .main_clk = "func_48m_fclk", |
| 2205 | .prcm = { | 2205 | .prcm = { |
| 2206 | .omap4 = { | 2206 | .omap4 = { |
| 2207 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET, | 2207 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI1_CLKCTRL_OFFSET, |
| @@ -2237,7 +2237,7 @@ static struct omap_hwmod omap44xx_mcspi2_hwmod = { | |||
| 2237 | .clkdm_name = "l4_per_clkdm", | 2237 | .clkdm_name = "l4_per_clkdm", |
| 2238 | .mpu_irqs = omap44xx_mcspi2_irqs, | 2238 | .mpu_irqs = omap44xx_mcspi2_irqs, |
| 2239 | .sdma_reqs = omap44xx_mcspi2_sdma_reqs, | 2239 | .sdma_reqs = omap44xx_mcspi2_sdma_reqs, |
| 2240 | .main_clk = "mcspi2_fck", | 2240 | .main_clk = "func_48m_fclk", |
| 2241 | .prcm = { | 2241 | .prcm = { |
| 2242 | .omap4 = { | 2242 | .omap4 = { |
| 2243 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET, | 2243 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI2_CLKCTRL_OFFSET, |
| @@ -2273,7 +2273,7 @@ static struct omap_hwmod omap44xx_mcspi3_hwmod = { | |||
| 2273 | .clkdm_name = "l4_per_clkdm", | 2273 | .clkdm_name = "l4_per_clkdm", |
| 2274 | .mpu_irqs = omap44xx_mcspi3_irqs, | 2274 | .mpu_irqs = omap44xx_mcspi3_irqs, |
| 2275 | .sdma_reqs = omap44xx_mcspi3_sdma_reqs, | 2275 | .sdma_reqs = omap44xx_mcspi3_sdma_reqs, |
| 2276 | .main_clk = "mcspi3_fck", | 2276 | .main_clk = "func_48m_fclk", |
| 2277 | .prcm = { | 2277 | .prcm = { |
| 2278 | .omap4 = { | 2278 | .omap4 = { |
| 2279 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET, | 2279 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI3_CLKCTRL_OFFSET, |
| @@ -2307,7 +2307,7 @@ static struct omap_hwmod omap44xx_mcspi4_hwmod = { | |||
| 2307 | .clkdm_name = "l4_per_clkdm", | 2307 | .clkdm_name = "l4_per_clkdm", |
| 2308 | .mpu_irqs = omap44xx_mcspi4_irqs, | 2308 | .mpu_irqs = omap44xx_mcspi4_irqs, |
| 2309 | .sdma_reqs = omap44xx_mcspi4_sdma_reqs, | 2309 | .sdma_reqs = omap44xx_mcspi4_sdma_reqs, |
| 2310 | .main_clk = "mcspi4_fck", | 2310 | .main_clk = "func_48m_fclk", |
| 2311 | .prcm = { | 2311 | .prcm = { |
| 2312 | .omap4 = { | 2312 | .omap4 = { |
| 2313 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET, | 2313 | .clkctrl_offs = OMAP4_CM_L4PER_MCSPI4_CLKCTRL_OFFSET, |
| @@ -2363,7 +2363,7 @@ static struct omap_hwmod omap44xx_mmc1_hwmod = { | |||
| 2363 | .clkdm_name = "l3_init_clkdm", | 2363 | .clkdm_name = "l3_init_clkdm", |
| 2364 | .mpu_irqs = omap44xx_mmc1_irqs, | 2364 | .mpu_irqs = omap44xx_mmc1_irqs, |
| 2365 | .sdma_reqs = omap44xx_mmc1_sdma_reqs, | 2365 | .sdma_reqs = omap44xx_mmc1_sdma_reqs, |
| 2366 | .main_clk = "mmc1_fck", | 2366 | .main_clk = "hsmmc1_fclk", |
| 2367 | .prcm = { | 2367 | .prcm = { |
| 2368 | .omap4 = { | 2368 | .omap4 = { |
| 2369 | .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET, | 2369 | .clkctrl_offs = OMAP4_CM_L3INIT_MMC1_CLKCTRL_OFFSET, |
| @@ -2392,7 +2392,7 @@ static struct omap_hwmod omap44xx_mmc2_hwmod = { | |||
| 2392 | .clkdm_name = "l3_init_clkdm", | 2392 | .clkdm_name = "l3_init_clkdm", |
| 2393 | .mpu_irqs = omap44xx_mmc2_irqs, | 2393 | .mpu_irqs = omap44xx_mmc2_irqs, |
| 2394 | .sdma_reqs = omap44xx_mmc2_sdma_reqs, | 2394 | .sdma_reqs = omap44xx_mmc2_sdma_reqs, |
| 2395 | .main_clk = "mmc2_fck", | 2395 | .main_clk = "hsmmc2_fclk", |
| 2396 | .prcm = { | 2396 | .prcm = { |
| 2397 | .omap4 = { | 2397 | .omap4 = { |
| 2398 | .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET, | 2398 | .clkctrl_offs = OMAP4_CM_L3INIT_MMC2_CLKCTRL_OFFSET, |
| @@ -2420,7 +2420,7 @@ static struct omap_hwmod omap44xx_mmc3_hwmod = { | |||
| 2420 | .clkdm_name = "l4_per_clkdm", | 2420 | .clkdm_name = "l4_per_clkdm", |
| 2421 | .mpu_irqs = omap44xx_mmc3_irqs, | 2421 | .mpu_irqs = omap44xx_mmc3_irqs, |
| 2422 | .sdma_reqs = omap44xx_mmc3_sdma_reqs, | 2422 | .sdma_reqs = omap44xx_mmc3_sdma_reqs, |
| 2423 | .main_clk = "mmc3_fck", | 2423 | .main_clk = "func_48m_fclk", |
| 2424 | .prcm = { | 2424 | .prcm = { |
| 2425 | .omap4 = { | 2425 | .omap4 = { |
| 2426 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET, | 2426 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD3_CLKCTRL_OFFSET, |
| @@ -2448,7 +2448,7 @@ static struct omap_hwmod omap44xx_mmc4_hwmod = { | |||
| 2448 | .clkdm_name = "l4_per_clkdm", | 2448 | .clkdm_name = "l4_per_clkdm", |
| 2449 | .mpu_irqs = omap44xx_mmc4_irqs, | 2449 | .mpu_irqs = omap44xx_mmc4_irqs, |
| 2450 | .sdma_reqs = omap44xx_mmc4_sdma_reqs, | 2450 | .sdma_reqs = omap44xx_mmc4_sdma_reqs, |
| 2451 | .main_clk = "mmc4_fck", | 2451 | .main_clk = "func_48m_fclk", |
| 2452 | .prcm = { | 2452 | .prcm = { |
| 2453 | .omap4 = { | 2453 | .omap4 = { |
| 2454 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET, | 2454 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD4_CLKCTRL_OFFSET, |
| @@ -2476,7 +2476,7 @@ static struct omap_hwmod omap44xx_mmc5_hwmod = { | |||
| 2476 | .clkdm_name = "l4_per_clkdm", | 2476 | .clkdm_name = "l4_per_clkdm", |
| 2477 | .mpu_irqs = omap44xx_mmc5_irqs, | 2477 | .mpu_irqs = omap44xx_mmc5_irqs, |
| 2478 | .sdma_reqs = omap44xx_mmc5_sdma_reqs, | 2478 | .sdma_reqs = omap44xx_mmc5_sdma_reqs, |
| 2479 | .main_clk = "mmc5_fck", | 2479 | .main_clk = "func_48m_fclk", |
| 2480 | .prcm = { | 2480 | .prcm = { |
| 2481 | .omap4 = { | 2481 | .omap4 = { |
| 2482 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET, | 2482 | .clkctrl_offs = OMAP4_CM_L4PER_MMCSD5_CLKCTRL_OFFSET, |
| @@ -2725,7 +2725,7 @@ static struct omap_hwmod omap44xx_ocp2scp_usb_phy_hwmod = { | |||
| 2725 | .name = "ocp2scp_usb_phy", | 2725 | .name = "ocp2scp_usb_phy", |
| 2726 | .class = &omap44xx_ocp2scp_hwmod_class, | 2726 | .class = &omap44xx_ocp2scp_hwmod_class, |
| 2727 | .clkdm_name = "l3_init_clkdm", | 2727 | .clkdm_name = "l3_init_clkdm", |
| 2728 | .main_clk = "ocp2scp_usb_phy_phy_48m", | 2728 | .main_clk = "func_48m_fclk", |
| 2729 | .prcm = { | 2729 | .prcm = { |
| 2730 | .omap4 = { | 2730 | .omap4 = { |
| 2731 | .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, | 2731 | .clkctrl_offs = OMAP4_CM_L3INIT_USBPHYOCP2SCP_CLKCTRL_OFFSET, |
| @@ -3162,7 +3162,7 @@ static struct omap_hwmod omap44xx_timer1_hwmod = { | |||
| 3162 | .clkdm_name = "l4_wkup_clkdm", | 3162 | .clkdm_name = "l4_wkup_clkdm", |
| 3163 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | 3163 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, |
| 3164 | .mpu_irqs = omap44xx_timer1_irqs, | 3164 | .mpu_irqs = omap44xx_timer1_irqs, |
| 3165 | .main_clk = "timer1_fck", | 3165 | .main_clk = "dmt1_clk_mux", |
| 3166 | .prcm = { | 3166 | .prcm = { |
| 3167 | .omap4 = { | 3167 | .omap4 = { |
| 3168 | .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET, | 3168 | .clkctrl_offs = OMAP4_CM_WKUP_TIMER1_CLKCTRL_OFFSET, |
| @@ -3185,7 +3185,7 @@ static struct omap_hwmod omap44xx_timer2_hwmod = { | |||
| 3185 | .clkdm_name = "l4_per_clkdm", | 3185 | .clkdm_name = "l4_per_clkdm", |
| 3186 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | 3186 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, |
| 3187 | .mpu_irqs = omap44xx_timer2_irqs, | 3187 | .mpu_irqs = omap44xx_timer2_irqs, |
| 3188 | .main_clk = "timer2_fck", | 3188 | .main_clk = "cm2_dm2_mux", |
| 3189 | .prcm = { | 3189 | .prcm = { |
| 3190 | .omap4 = { | 3190 | .omap4 = { |
| 3191 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET, | 3191 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER2_CLKCTRL_OFFSET, |
| @@ -3206,7 +3206,7 @@ static struct omap_hwmod omap44xx_timer3_hwmod = { | |||
| 3206 | .class = &omap44xx_timer_hwmod_class, | 3206 | .class = &omap44xx_timer_hwmod_class, |
| 3207 | .clkdm_name = "l4_per_clkdm", | 3207 | .clkdm_name = "l4_per_clkdm", |
| 3208 | .mpu_irqs = omap44xx_timer3_irqs, | 3208 | .mpu_irqs = omap44xx_timer3_irqs, |
| 3209 | .main_clk = "timer3_fck", | 3209 | .main_clk = "cm2_dm3_mux", |
| 3210 | .prcm = { | 3210 | .prcm = { |
| 3211 | .omap4 = { | 3211 | .omap4 = { |
| 3212 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET, | 3212 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER3_CLKCTRL_OFFSET, |
| @@ -3227,7 +3227,7 @@ static struct omap_hwmod omap44xx_timer4_hwmod = { | |||
| 3227 | .class = &omap44xx_timer_hwmod_class, | 3227 | .class = &omap44xx_timer_hwmod_class, |
| 3228 | .clkdm_name = "l4_per_clkdm", | 3228 | .clkdm_name = "l4_per_clkdm", |
| 3229 | .mpu_irqs = omap44xx_timer4_irqs, | 3229 | .mpu_irqs = omap44xx_timer4_irqs, |
| 3230 | .main_clk = "timer4_fck", | 3230 | .main_clk = "cm2_dm4_mux", |
| 3231 | .prcm = { | 3231 | .prcm = { |
| 3232 | .omap4 = { | 3232 | .omap4 = { |
| 3233 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET, | 3233 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER4_CLKCTRL_OFFSET, |
| @@ -3248,7 +3248,7 @@ static struct omap_hwmod omap44xx_timer5_hwmod = { | |||
| 3248 | .class = &omap44xx_timer_hwmod_class, | 3248 | .class = &omap44xx_timer_hwmod_class, |
| 3249 | .clkdm_name = "abe_clkdm", | 3249 | .clkdm_name = "abe_clkdm", |
| 3250 | .mpu_irqs = omap44xx_timer5_irqs, | 3250 | .mpu_irqs = omap44xx_timer5_irqs, |
| 3251 | .main_clk = "timer5_fck", | 3251 | .main_clk = "timer5_sync_mux", |
| 3252 | .prcm = { | 3252 | .prcm = { |
| 3253 | .omap4 = { | 3253 | .omap4 = { |
| 3254 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET, | 3254 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER5_CLKCTRL_OFFSET, |
| @@ -3270,8 +3270,7 @@ static struct omap_hwmod omap44xx_timer6_hwmod = { | |||
| 3270 | .class = &omap44xx_timer_hwmod_class, | 3270 | .class = &omap44xx_timer_hwmod_class, |
| 3271 | .clkdm_name = "abe_clkdm", | 3271 | .clkdm_name = "abe_clkdm", |
| 3272 | .mpu_irqs = omap44xx_timer6_irqs, | 3272 | .mpu_irqs = omap44xx_timer6_irqs, |
| 3273 | 3273 | .main_clk = "timer6_sync_mux", | |
| 3274 | .main_clk = "timer6_fck", | ||
| 3275 | .prcm = { | 3274 | .prcm = { |
| 3276 | .omap4 = { | 3275 | .omap4 = { |
| 3277 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET, | 3276 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER6_CLKCTRL_OFFSET, |
| @@ -3293,7 +3292,7 @@ static struct omap_hwmod omap44xx_timer7_hwmod = { | |||
| 3293 | .class = &omap44xx_timer_hwmod_class, | 3292 | .class = &omap44xx_timer_hwmod_class, |
| 3294 | .clkdm_name = "abe_clkdm", | 3293 | .clkdm_name = "abe_clkdm", |
| 3295 | .mpu_irqs = omap44xx_timer7_irqs, | 3294 | .mpu_irqs = omap44xx_timer7_irqs, |
| 3296 | .main_clk = "timer7_fck", | 3295 | .main_clk = "timer7_sync_mux", |
| 3297 | .prcm = { | 3296 | .prcm = { |
| 3298 | .omap4 = { | 3297 | .omap4 = { |
| 3299 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET, | 3298 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER7_CLKCTRL_OFFSET, |
| @@ -3315,7 +3314,7 @@ static struct omap_hwmod omap44xx_timer8_hwmod = { | |||
| 3315 | .class = &omap44xx_timer_hwmod_class, | 3314 | .class = &omap44xx_timer_hwmod_class, |
| 3316 | .clkdm_name = "abe_clkdm", | 3315 | .clkdm_name = "abe_clkdm", |
| 3317 | .mpu_irqs = omap44xx_timer8_irqs, | 3316 | .mpu_irqs = omap44xx_timer8_irqs, |
| 3318 | .main_clk = "timer8_fck", | 3317 | .main_clk = "timer8_sync_mux", |
| 3319 | .prcm = { | 3318 | .prcm = { |
| 3320 | .omap4 = { | 3319 | .omap4 = { |
| 3321 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET, | 3320 | .clkctrl_offs = OMAP4_CM1_ABE_TIMER8_CLKCTRL_OFFSET, |
| @@ -3337,7 +3336,7 @@ static struct omap_hwmod omap44xx_timer9_hwmod = { | |||
| 3337 | .class = &omap44xx_timer_hwmod_class, | 3336 | .class = &omap44xx_timer_hwmod_class, |
| 3338 | .clkdm_name = "l4_per_clkdm", | 3337 | .clkdm_name = "l4_per_clkdm", |
| 3339 | .mpu_irqs = omap44xx_timer9_irqs, | 3338 | .mpu_irqs = omap44xx_timer9_irqs, |
| 3340 | .main_clk = "timer9_fck", | 3339 | .main_clk = "cm2_dm9_mux", |
| 3341 | .prcm = { | 3340 | .prcm = { |
| 3342 | .omap4 = { | 3341 | .omap4 = { |
| 3343 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET, | 3342 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER9_CLKCTRL_OFFSET, |
| @@ -3360,7 +3359,7 @@ static struct omap_hwmod omap44xx_timer10_hwmod = { | |||
| 3360 | .clkdm_name = "l4_per_clkdm", | 3359 | .clkdm_name = "l4_per_clkdm", |
| 3361 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, | 3360 | .flags = HWMOD_SET_DEFAULT_CLOCKACT, |
| 3362 | .mpu_irqs = omap44xx_timer10_irqs, | 3361 | .mpu_irqs = omap44xx_timer10_irqs, |
| 3363 | .main_clk = "timer10_fck", | 3362 | .main_clk = "cm2_dm10_mux", |
| 3364 | .prcm = { | 3363 | .prcm = { |
| 3365 | .omap4 = { | 3364 | .omap4 = { |
| 3366 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET, | 3365 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER10_CLKCTRL_OFFSET, |
| @@ -3382,7 +3381,7 @@ static struct omap_hwmod omap44xx_timer11_hwmod = { | |||
| 3382 | .class = &omap44xx_timer_hwmod_class, | 3381 | .class = &omap44xx_timer_hwmod_class, |
| 3383 | .clkdm_name = "l4_per_clkdm", | 3382 | .clkdm_name = "l4_per_clkdm", |
| 3384 | .mpu_irqs = omap44xx_timer11_irqs, | 3383 | .mpu_irqs = omap44xx_timer11_irqs, |
| 3385 | .main_clk = "timer11_fck", | 3384 | .main_clk = "cm2_dm11_mux", |
| 3386 | .prcm = { | 3385 | .prcm = { |
| 3387 | .omap4 = { | 3386 | .omap4 = { |
| 3388 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET, | 3387 | .clkctrl_offs = OMAP4_CM_L4PER_DMTIMER11_CLKCTRL_OFFSET, |
| @@ -3433,7 +3432,7 @@ static struct omap_hwmod omap44xx_uart1_hwmod = { | |||
| 3433 | .clkdm_name = "l4_per_clkdm", | 3432 | .clkdm_name = "l4_per_clkdm", |
| 3434 | .mpu_irqs = omap44xx_uart1_irqs, | 3433 | .mpu_irqs = omap44xx_uart1_irqs, |
| 3435 | .sdma_reqs = omap44xx_uart1_sdma_reqs, | 3434 | .sdma_reqs = omap44xx_uart1_sdma_reqs, |
| 3436 | .main_clk = "uart1_fck", | 3435 | .main_clk = "func_48m_fclk", |
| 3437 | .prcm = { | 3436 | .prcm = { |
| 3438 | .omap4 = { | 3437 | .omap4 = { |
| 3439 | .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET, | 3438 | .clkctrl_offs = OMAP4_CM_L4PER_UART1_CLKCTRL_OFFSET, |
| @@ -3461,7 +3460,7 @@ static struct omap_hwmod omap44xx_uart2_hwmod = { | |||
| 3461 | .clkdm_name = "l4_per_clkdm", | 3460 | .clkdm_name = "l4_per_clkdm", |
| 3462 | .mpu_irqs = omap44xx_uart2_irqs, | 3461 | .mpu_irqs = omap44xx_uart2_irqs, |
| 3463 | .sdma_reqs = omap44xx_uart2_sdma_reqs, | 3462 | .sdma_reqs = omap44xx_uart2_sdma_reqs, |
| 3464 | .main_clk = "uart2_fck", | 3463 | .main_clk = "func_48m_fclk", |
| 3465 | .prcm = { | 3464 | .prcm = { |
| 3466 | .omap4 = { | 3465 | .omap4 = { |
| 3467 | .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET, | 3466 | .clkctrl_offs = OMAP4_CM_L4PER_UART2_CLKCTRL_OFFSET, |
| @@ -3490,7 +3489,7 @@ static struct omap_hwmod omap44xx_uart3_hwmod = { | |||
| 3490 | .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, | 3489 | .flags = HWMOD_INIT_NO_IDLE | HWMOD_INIT_NO_RESET, |
| 3491 | .mpu_irqs = omap44xx_uart3_irqs, | 3490 | .mpu_irqs = omap44xx_uart3_irqs, |
| 3492 | .sdma_reqs = omap44xx_uart3_sdma_reqs, | 3491 | .sdma_reqs = omap44xx_uart3_sdma_reqs, |
| 3493 | .main_clk = "uart3_fck", | 3492 | .main_clk = "func_48m_fclk", |
| 3494 | .prcm = { | 3493 | .prcm = { |
| 3495 | .omap4 = { | 3494 | .omap4 = { |
| 3496 | .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET, | 3495 | .clkctrl_offs = OMAP4_CM_L4PER_UART3_CLKCTRL_OFFSET, |
| @@ -3518,7 +3517,7 @@ static struct omap_hwmod omap44xx_uart4_hwmod = { | |||
| 3518 | .clkdm_name = "l4_per_clkdm", | 3517 | .clkdm_name = "l4_per_clkdm", |
| 3519 | .mpu_irqs = omap44xx_uart4_irqs, | 3518 | .mpu_irqs = omap44xx_uart4_irqs, |
| 3520 | .sdma_reqs = omap44xx_uart4_sdma_reqs, | 3519 | .sdma_reqs = omap44xx_uart4_sdma_reqs, |
| 3521 | .main_clk = "uart4_fck", | 3520 | .main_clk = "func_48m_fclk", |
| 3522 | .prcm = { | 3521 | .prcm = { |
| 3523 | .omap4 = { | 3522 | .omap4 = { |
| 3524 | .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET, | 3523 | .clkctrl_offs = OMAP4_CM_L4PER_UART4_CLKCTRL_OFFSET, |
| @@ -3797,7 +3796,7 @@ static struct omap_hwmod omap44xx_wd_timer2_hwmod = { | |||
| 3797 | .class = &omap44xx_wd_timer_hwmod_class, | 3796 | .class = &omap44xx_wd_timer_hwmod_class, |
| 3798 | .clkdm_name = "l4_wkup_clkdm", | 3797 | .clkdm_name = "l4_wkup_clkdm", |
| 3799 | .mpu_irqs = omap44xx_wd_timer2_irqs, | 3798 | .mpu_irqs = omap44xx_wd_timer2_irqs, |
| 3800 | .main_clk = "wd_timer2_fck", | 3799 | .main_clk = "sys_32k_ck", |
| 3801 | .prcm = { | 3800 | .prcm = { |
| 3802 | .omap4 = { | 3801 | .omap4 = { |
| 3803 | .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET, | 3802 | .clkctrl_offs = OMAP4_CM_WKUP_WDT2_CLKCTRL_OFFSET, |
| @@ -3818,7 +3817,7 @@ static struct omap_hwmod omap44xx_wd_timer3_hwmod = { | |||
| 3818 | .class = &omap44xx_wd_timer_hwmod_class, | 3817 | .class = &omap44xx_wd_timer_hwmod_class, |
| 3819 | .clkdm_name = "abe_clkdm", | 3818 | .clkdm_name = "abe_clkdm", |
| 3820 | .mpu_irqs = omap44xx_wd_timer3_irqs, | 3819 | .mpu_irqs = omap44xx_wd_timer3_irqs, |
| 3821 | .main_clk = "wd_timer3_fck", | 3820 | .main_clk = "sys_32k_ck", |
| 3822 | .prcm = { | 3821 | .prcm = { |
| 3823 | .omap4 = { | 3822 | .omap4 = { |
| 3824 | .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET, | 3823 | .clkctrl_offs = OMAP4_CM1_ABE_WDT3_CLKCTRL_OFFSET, |
diff --git a/arch/arm/mach-omap2/pm.c b/arch/arm/mach-omap2/pm.c index f4b3143a8b1d..9627547ee72a 100644 --- a/arch/arm/mach-omap2/pm.c +++ b/arch/arm/mach-omap2/pm.c | |||
| @@ -32,8 +32,6 @@ | |||
| 32 | #include "pm.h" | 32 | #include "pm.h" |
| 33 | #include "twl-common.h" | 33 | #include "twl-common.h" |
| 34 | 34 | ||
| 35 | static struct omap_device_pm_latency *pm_lats; | ||
| 36 | |||
| 37 | /* | 35 | /* |
| 38 | * omap_pm_suspend: points to a function that does the SoC-specific | 36 | * omap_pm_suspend: points to a function that does the SoC-specific |
| 39 | * suspend work | 37 | * suspend work |
| @@ -82,7 +80,7 @@ static int __init _init_omap_device(char *name) | |||
| 82 | __func__, name)) | 80 | __func__, name)) |
| 83 | return -ENODEV; | 81 | return -ENODEV; |
| 84 | 82 | ||
| 85 | pdev = omap_device_build(oh->name, 0, oh, NULL, 0, pm_lats, 0, false); | 83 | pdev = omap_device_build(oh->name, 0, oh, NULL, 0); |
| 86 | if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n", | 84 | if (WARN(IS_ERR(pdev), "%s: could not build omap_device for %s\n", |
| 87 | __func__, name)) | 85 | __func__, name)) |
| 88 | return -ENODEV; | 86 | return -ENODEV; |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index c333fa6dffa8..909ef53ba2ea 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
| @@ -140,14 +140,6 @@ no_sleep: | |||
| 140 | return 0; | 140 | return 0; |
| 141 | } | 141 | } |
| 142 | 142 | ||
| 143 | static int omap2_i2c_active(void) | ||
| 144 | { | ||
| 145 | u32 l; | ||
| 146 | |||
| 147 | l = omap2_cm_read_mod_reg(CORE_MOD, CM_FCLKEN1); | ||
| 148 | return l & (OMAP2420_EN_I2C2_MASK | OMAP2420_EN_I2C1_MASK); | ||
| 149 | } | ||
| 150 | |||
| 151 | static int sti_console_enabled; | 143 | static int sti_console_enabled; |
| 152 | 144 | ||
| 153 | static int omap2_allow_mpu_retention(void) | 145 | static int omap2_allow_mpu_retention(void) |
| @@ -172,11 +164,6 @@ static int omap2_allow_mpu_retention(void) | |||
| 172 | 164 | ||
| 173 | static void omap2_enter_mpu_retention(void) | 165 | static void omap2_enter_mpu_retention(void) |
| 174 | { | 166 | { |
| 175 | /* Putting MPU into the WFI state while a transfer is active | ||
| 176 | * seems to cause the I2C block to timeout. Why? Good question. */ | ||
| 177 | if (omap2_i2c_active()) | ||
| 178 | return; | ||
| 179 | |||
| 180 | /* The peripherals seem not to be able to wake up the MPU when | 167 | /* The peripherals seem not to be able to wake up the MPU when |
| 181 | * it is in retention mode. */ | 168 | * it is in retention mode. */ |
| 182 | if (omap2_allow_mpu_retention()) { | 169 | if (omap2_allow_mpu_retention()) { |
diff --git a/arch/arm/mach-omap2/pmu.c b/arch/arm/mach-omap2/pmu.c index eb78ae7a3464..0ef4d6aa758e 100644 --- a/arch/arm/mach-omap2/pmu.c +++ b/arch/arm/mach-omap2/pmu.c | |||
| @@ -48,8 +48,7 @@ static int __init omap2_init_pmu(unsigned oh_num, char *oh_names[]) | |||
| 48 | } | 48 | } |
| 49 | } | 49 | } |
| 50 | 50 | ||
| 51 | omap_pmu_dev = omap_device_build_ss(dev_name, -1, oh, oh_num, NULL, 0, | 51 | omap_pmu_dev = omap_device_build_ss(dev_name, -1, oh, oh_num, NULL, 0); |
| 52 | NULL, 0, 0); | ||
| 53 | WARN(IS_ERR(omap_pmu_dev), "Can't build omap_device for %s.\n", | 52 | WARN(IS_ERR(omap_pmu_dev), "Can't build omap_device for %s.\n", |
| 54 | dev_name); | 53 | dev_name); |
| 55 | 54 | ||
diff --git a/arch/arm/mach-omap2/serial.c b/arch/arm/mach-omap2/serial.c index 04fdbc4c499b..d01c373cbbef 100644 --- a/arch/arm/mach-omap2/serial.c +++ b/arch/arm/mach-omap2/serial.c | |||
| @@ -316,8 +316,7 @@ void __init omap_serial_init_port(struct omap_board_data *bdata, | |||
| 316 | if (WARN_ON(!oh)) | 316 | if (WARN_ON(!oh)) |
| 317 | return; | 317 | return; |
| 318 | 318 | ||
| 319 | pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size, | 319 | pdev = omap_device_build(name, uart->num, oh, pdata, pdata_size); |
| 320 | NULL, 0, false); | ||
| 321 | if (IS_ERR(pdev)) { | 320 | if (IS_ERR(pdev)) { |
| 322 | WARN(1, "Could not build omap_device for %s: %s.\n", name, | 321 | WARN(1, "Could not build omap_device for %s: %s.\n", name, |
| 323 | oh->name); | 322 | oh->name); |
diff --git a/arch/arm/mach-omap2/sr_device.c b/arch/arm/mach-omap2/sr_device.c index b9753fe27232..bb829e065400 100644 --- a/arch/arm/mach-omap2/sr_device.c +++ b/arch/arm/mach-omap2/sr_device.c | |||
| @@ -152,8 +152,7 @@ static int __init sr_dev_init(struct omap_hwmod *oh, void *user) | |||
| 152 | 152 | ||
| 153 | sr_data->enable_on_init = sr_enable_on_init; | 153 | sr_data->enable_on_init = sr_enable_on_init; |
| 154 | 154 | ||
| 155 | pdev = omap_device_build(name, i, oh, sr_data, sizeof(*sr_data), | 155 | pdev = omap_device_build(name, i, oh, sr_data, sizeof(*sr_data), 0); |
| 156 | NULL, 0, 0); | ||
| 157 | if (IS_ERR(pdev)) | 156 | if (IS_ERR(pdev)) |
| 158 | pr_warning("%s: Could not build omap_device for %s: %s.\n\n", | 157 | pr_warning("%s: Could not build omap_device for %s: %s.\n\n", |
| 159 | __func__, name, oh->name); | 158 | __func__, name, oh->name); |
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index b8ad6e632bb8..63e5fb017fd8 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c | |||
| @@ -702,8 +702,7 @@ static int __init omap_timer_init(struct omap_hwmod *oh, void *unused) | |||
| 702 | pdata->timer_errata = omap_dm_timer_get_errata(); | 702 | pdata->timer_errata = omap_dm_timer_get_errata(); |
| 703 | pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count; | 703 | pdata->get_context_loss_count = omap_pm_get_dev_context_loss_count; |
| 704 | 704 | ||
| 705 | pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata), | 705 | pdev = omap_device_build(name, id, oh, pdata, sizeof(*pdata)); |
| 706 | NULL, 0, 0); | ||
| 707 | 706 | ||
| 708 | if (IS_ERR(pdev)) { | 707 | if (IS_ERR(pdev)) { |
| 709 | pr_err("%s: Can't build omap_device for %s: %s.\n", | 708 | pr_err("%s: Can't build omap_device for %s: %s.\n", |
diff --git a/arch/arm/mach-omap2/usb-host.c b/arch/arm/mach-omap2/usb-host.c index 2e44e8a22884..99f04deb4c7f 100644 --- a/arch/arm/mach-omap2/usb-host.c +++ b/arch/arm/mach-omap2/usb-host.c | |||
| @@ -42,14 +42,6 @@ static struct usbtll_omap_platform_data usbtll_data; | |||
| 42 | static struct ehci_hcd_omap_platform_data ehci_data; | 42 | static struct ehci_hcd_omap_platform_data ehci_data; |
| 43 | static struct ohci_hcd_omap_platform_data ohci_data; | 43 | static struct ohci_hcd_omap_platform_data ohci_data; |
| 44 | 44 | ||
| 45 | static struct omap_device_pm_latency omap_uhhtll_latency[] = { | ||
| 46 | { | ||
| 47 | .deactivate_func = omap_device_idle_hwmods, | ||
| 48 | .activate_func = omap_device_enable_hwmods, | ||
| 49 | .flags = OMAP_DEVICE_LATENCY_AUTO_ADJUST, | ||
| 50 | }, | ||
| 51 | }; | ||
| 52 | |||
| 53 | /* MUX settings for EHCI pins */ | 45 | /* MUX settings for EHCI pins */ |
| 54 | /* | 46 | /* |
| 55 | * setup_ehci_io_mux - initialize IO pad mux for USBHOST | 47 | * setup_ehci_io_mux - initialize IO pad mux for USBHOST |
| @@ -530,9 +522,7 @@ void __init usbhs_init(const struct usbhs_omap_board_data *pdata) | |||
| 530 | } | 522 | } |
| 531 | 523 | ||
| 532 | pdev = omap_device_build(OMAP_USBTLL_DEVICE, bus_id, tll_hwm, | 524 | pdev = omap_device_build(OMAP_USBTLL_DEVICE, bus_id, tll_hwm, |
| 533 | &usbtll_data, sizeof(usbtll_data), | 525 | &usbtll_data, sizeof(usbtll_data)); |
| 534 | omap_uhhtll_latency, | ||
| 535 | ARRAY_SIZE(omap_uhhtll_latency), false); | ||
| 536 | if (IS_ERR(pdev)) { | 526 | if (IS_ERR(pdev)) { |
| 537 | pr_err("Could not build hwmod device %s\n", | 527 | pr_err("Could not build hwmod device %s\n", |
| 538 | USBHS_TLL_HWMODNAME); | 528 | USBHS_TLL_HWMODNAME); |
| @@ -540,9 +530,7 @@ void __init usbhs_init(const struct usbhs_omap_board_data *pdata) | |||
| 540 | } | 530 | } |
| 541 | 531 | ||
| 542 | pdev = omap_device_build(OMAP_USBHS_DEVICE, bus_id, uhh_hwm, | 532 | pdev = omap_device_build(OMAP_USBHS_DEVICE, bus_id, uhh_hwm, |
| 543 | &usbhs_data, sizeof(usbhs_data), | 533 | &usbhs_data, sizeof(usbhs_data)); |
| 544 | omap_uhhtll_latency, | ||
| 545 | ARRAY_SIZE(omap_uhhtll_latency), false); | ||
| 546 | if (IS_ERR(pdev)) { | 534 | if (IS_ERR(pdev)) { |
| 547 | pr_err("Could not build hwmod devices %s\n", | 535 | pr_err("Could not build hwmod devices %s\n", |
| 548 | USBHS_UHH_HWMODNAME); | 536 | USBHS_UHH_HWMODNAME); |
diff --git a/arch/arm/mach-omap2/usb-musb.c b/arch/arm/mach-omap2/usb-musb.c index 7b33b375fe77..8c4de2708cf2 100644 --- a/arch/arm/mach-omap2/usb-musb.c +++ b/arch/arm/mach-omap2/usb-musb.c | |||
| @@ -102,7 +102,7 @@ void __init usb_musb_init(struct omap_musb_board_data *musb_board_data) | |||
| 102 | return; | 102 | return; |
| 103 | 103 | ||
| 104 | pdev = omap_device_build(name, bus_id, oh, &musb_plat, | 104 | pdev = omap_device_build(name, bus_id, oh, &musb_plat, |
| 105 | sizeof(musb_plat), NULL, 0, false); | 105 | sizeof(musb_plat)); |
| 106 | if (IS_ERR(pdev)) { | 106 | if (IS_ERR(pdev)) { |
| 107 | pr_err("Could not build omap_device for %s %s\n", | 107 | pr_err("Could not build omap_device for %s %s\n", |
| 108 | name, oh_name); | 108 | name, oh_name); |
diff --git a/arch/arm/mach-omap2/wd_timer.c b/arch/arm/mach-omap2/wd_timer.c index 7c2b4ed38f02..910243f54a05 100644 --- a/arch/arm/mach-omap2/wd_timer.c +++ b/arch/arm/mach-omap2/wd_timer.c | |||
| @@ -124,8 +124,7 @@ static int __init omap_init_wdt(void) | |||
| 124 | pdata.read_reset_sources = prm_read_reset_sources; | 124 | pdata.read_reset_sources = prm_read_reset_sources; |
| 125 | 125 | ||
| 126 | pdev = omap_device_build(dev_name, id, oh, &pdata, | 126 | pdev = omap_device_build(dev_name, id, oh, &pdata, |
| 127 | sizeof(struct omap_wd_timer_platform_data), | 127 | sizeof(struct omap_wd_timer_platform_data)); |
| 128 | NULL, 0, 0); | ||
| 129 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", | 128 | WARN(IS_ERR(pdev), "Can't build omap_device for %s:%s.\n", |
| 130 | dev_name, oh->name); | 129 | dev_name, oh->name); |
| 131 | return 0; | 130 | return 0; |
