Merge branch 'for-linus' of git://git390.marist.edu/pub/scm/linux-2.6
[sfrench/cifs-2.6.git] / arch / arm / mach-omap2 / clock44xx_data.c
index de9ec8ddd2ae21673964c8c3cf6224c180ae3c78..276992d3b7fba19b8873e2ff3cae068424b441e0 100644 (file)
@@ -278,8 +278,10 @@ static struct clk dpll_abe_ck = {
 static struct clk dpll_abe_x2_ck = {
        .name           = "dpll_abe_x2_ck",
        .parent         = &dpll_abe_ck,
-       .ops            = &clkops_null,
+       .flags          = CLOCK_CLKOUTX2,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap3_clkoutx2_recalc,
+       .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_ABE,
 };
 
 static const struct clksel_rate div31_1to31_rates[] = {
@@ -328,7 +330,7 @@ static struct clk dpll_abe_m2x2_ck = {
        .clksel         = dpll_abe_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_ABE,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -395,7 +397,7 @@ static struct clk dpll_abe_m3x2_ck = {
        .clksel         = dpll_abe_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M3_DPLL_ABE,
        .clksel_mask    = OMAP4430_DPLL_CLKOUTHIF_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -443,13 +445,14 @@ static struct clk dpll_core_ck = {
        .parent         = &sys_clkin_ck,
        .dpll_data      = &dpll_core_dd,
        .init           = &omap2_init_dpll_parent,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap3_core_dpll_ops,
        .recalc         = &omap3_dpll_recalc,
 };
 
 static struct clk dpll_core_x2_ck = {
        .name           = "dpll_core_x2_ck",
        .parent         = &dpll_core_ck,
+       .flags          = CLOCK_CLKOUTX2,
        .ops            = &clkops_null,
        .recalc         = &omap3_clkoutx2_recalc,
 };
@@ -465,7 +468,7 @@ static struct clk dpll_core_m6x2_ck = {
        .clksel         = dpll_core_m6x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M6_DPLL_CORE,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -495,7 +498,7 @@ static struct clk dpll_core_m2_ck = {
        .clksel         = dpll_core_m2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_CORE,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -515,7 +518,7 @@ static struct clk dpll_core_m5x2_ck = {
        .clksel         = dpll_core_m6x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M5_DPLL_CORE,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -581,7 +584,7 @@ static struct clk dpll_core_m4x2_ck = {
        .clksel         = dpll_core_m6x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M4_DPLL_CORE,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -606,7 +609,7 @@ static struct clk dpll_abe_m2_ck = {
        .clksel         = dpll_abe_m2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_ABE,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -632,7 +635,7 @@ static struct clk dpll_core_m7x2_ck = {
        .clksel         = dpll_core_m6x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M7_DPLL_CORE,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -689,6 +692,7 @@ static struct clk dpll_iva_ck = {
 static struct clk dpll_iva_x2_ck = {
        .name           = "dpll_iva_x2_ck",
        .parent         = &dpll_iva_ck,
+       .flags          = CLOCK_CLKOUTX2,
        .ops            = &clkops_null,
        .recalc         = &omap3_clkoutx2_recalc,
 };
@@ -704,7 +708,7 @@ static struct clk dpll_iva_m4x2_ck = {
        .clksel         = dpll_iva_m4x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M4_DPLL_IVA,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -716,7 +720,7 @@ static struct clk dpll_iva_m5x2_ck = {
        .clksel         = dpll_iva_m4x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M5_DPLL_IVA,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -764,7 +768,7 @@ static struct clk dpll_mpu_m2_ck = {
        .clksel         = dpll_mpu_m2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_MPU,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -837,7 +841,7 @@ static struct clk dpll_per_m2_ck = {
        .clksel         = dpll_per_m2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_PER,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -846,8 +850,10 @@ static struct clk dpll_per_m2_ck = {
 static struct clk dpll_per_x2_ck = {
        .name           = "dpll_per_x2_ck",
        .parent         = &dpll_per_ck,
-       .ops            = &clkops_null,
+       .flags          = CLOCK_CLKOUTX2,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap3_clkoutx2_recalc,
+       .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_PER,
 };
 
 static const struct clksel dpll_per_m2x2_div[] = {
@@ -861,7 +867,7 @@ static struct clk dpll_per_m2x2_ck = {
        .clksel         = dpll_per_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_PER,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -887,7 +893,7 @@ static struct clk dpll_per_m4x2_ck = {
        .clksel         = dpll_per_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M4_DPLL_PER,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT1_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -899,7 +905,7 @@ static struct clk dpll_per_m5x2_ck = {
        .clksel         = dpll_per_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M5_DPLL_PER,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT2_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -911,7 +917,7 @@ static struct clk dpll_per_m6x2_ck = {
        .clksel         = dpll_per_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M6_DPLL_PER,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT3_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -923,7 +929,7 @@ static struct clk dpll_per_m7x2_ck = {
        .clksel         = dpll_per_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M7_DPLL_PER,
        .clksel_mask    = OMAP4430_HSDIVIDER_CLKOUT4_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -964,6 +970,7 @@ static struct clk dpll_unipro_ck = {
 static struct clk dpll_unipro_x2_ck = {
        .name           = "dpll_unipro_x2_ck",
        .parent         = &dpll_unipro_ck,
+       .flags          = CLOCK_CLKOUTX2,
        .ops            = &clkops_null,
        .recalc         = &omap3_clkoutx2_recalc,
 };
@@ -979,7 +986,7 @@ static struct clk dpll_unipro_m2x2_ck = {
        .clksel         = dpll_unipro_m2x2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_UNIPRO,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -1028,7 +1035,8 @@ static struct clk dpll_usb_ck = {
 static struct clk dpll_usb_clkdcoldo_ck = {
        .name           = "dpll_usb_clkdcoldo_ck",
        .parent         = &dpll_usb_ck,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
+       .clksel_reg     = OMAP4430_CM_CLKDCOLDO_DPLL_USB,
        .recalc         = &followparent_recalc,
 };
 
@@ -1043,7 +1051,7 @@ static struct clk dpll_usb_m2_ck = {
        .clksel         = dpll_usb_m2_div,
        .clksel_reg     = OMAP4430_CM_DIV_M2_DPLL_USB,
        .clksel_mask    = OMAP4430_DPLL_CLKOUT_DIV_0_6_MASK,
-       .ops            = &clkops_null,
+       .ops            = &clkops_omap4_dpllmx_ops,
        .recalc         = &omap2_clksel_recalc,
        .round_rate     = &omap2_clksel_round_rate,
        .set_rate       = &omap2_clksel_set_rate,
@@ -3106,11 +3114,16 @@ static struct omap_clk omap44xx_clks[] = {
        CLK(NULL,       "dmic_sync_mux_ck",             &dmic_sync_mux_ck,      CK_443X),
        CLK(NULL,       "dmic_fck",                     &dmic_fck,      CK_443X),
        CLK(NULL,       "dsp_fck",                      &dsp_fck,       CK_443X),
-       CLK(NULL,       "dss_sys_clk",                  &dss_sys_clk,   CK_443X),
-       CLK(NULL,       "dss_tv_clk",                   &dss_tv_clk,    CK_443X),
-       CLK(NULL,       "dss_dss_clk",                  &dss_dss_clk,   CK_443X),
-       CLK(NULL,       "dss_48mhz_clk",                &dss_48mhz_clk, CK_443X),
-       CLK(NULL,       "dss_fck",                      &dss_fck,       CK_443X),
+       CLK("omapdss_dss",      "sys_clk",                      &dss_sys_clk,   CK_443X),
+       CLK("omapdss_dss",      "tv_clk",                       &dss_tv_clk,    CK_443X),
+       CLK("omapdss_dss",      "dss_clk",                      &dss_dss_clk,   CK_443X),
+       CLK("omapdss_dss",      "video_clk",                    &dss_48mhz_clk, CK_443X),
+       CLK("omapdss_dss",      "fck",                          &dss_fck,       CK_443X),
+       /*
+        * On OMAP4, DSS ick is a dummy clock; this is needed for compatibility
+        * with OMAP2/3.
+        */
+       CLK("omapdss_dss",      "ick",                          &dummy_ck,      CK_443X),
        CLK(NULL,       "efuse_ctrl_cust_fck",          &efuse_ctrl_cust_fck,   CK_443X),
        CLK(NULL,       "emif1_fck",                    &emif1_fck,     CK_443X),
        CLK(NULL,       "emif2_fck",                    &emif2_fck,     CK_443X),
@@ -3158,11 +3171,11 @@ static struct omap_clk omap44xx_clks[] = {
        CLK("omap2_mcspi.2",    "fck",                          &mcspi2_fck,    CK_443X),
        CLK("omap2_mcspi.3",    "fck",                          &mcspi3_fck,    CK_443X),
        CLK("omap2_mcspi.4",    "fck",                          &mcspi4_fck,    CK_443X),
-       CLK("mmci-omap-hs.0",   "fck",                          &mmc1_fck,      CK_443X),
-       CLK("mmci-omap-hs.1",   "fck",                          &mmc2_fck,      CK_443X),
-       CLK("mmci-omap-hs.2",   "fck",                          &mmc3_fck,      CK_443X),
-       CLK("mmci-omap-hs.3",   "fck",                          &mmc4_fck,      CK_443X),
-       CLK("mmci-omap-hs.4",   "fck",                          &mmc5_fck,      CK_443X),
+       CLK("omap_hsmmc.0",     "fck",                          &mmc1_fck,      CK_443X),
+       CLK("omap_hsmmc.1",     "fck",                          &mmc2_fck,      CK_443X),
+       CLK("omap_hsmmc.2",     "fck",                          &mmc3_fck,      CK_443X),
+       CLK("omap_hsmmc.3",     "fck",                          &mmc4_fck,      CK_443X),
+       CLK("omap_hsmmc.4",     "fck",                          &mmc5_fck,      CK_443X),
        CLK(NULL,       "ocp2scp_usb_phy_phy_48m",      &ocp2scp_usb_phy_phy_48m,       CK_443X),
        CLK(NULL,       "ocp2scp_usb_phy_ick",          &ocp2scp_usb_phy_ick,   CK_443X),
        CLK(NULL,       "ocp_wp_noc_ick",               &ocp_wp_noc_ick,        CK_443X),
@@ -3197,7 +3210,7 @@ static struct omap_clk omap44xx_clks[] = {
        CLK(NULL,       "uart3_fck",                    &uart3_fck,     CK_443X),
        CLK(NULL,       "uart4_fck",                    &uart4_fck,     CK_443X),
        CLK(NULL,       "usb_host_fs_fck",              &usb_host_fs_fck,       CK_443X),
-       CLK("ehci-omap.0",      "fs_fck",               &usb_host_fs_fck,       CK_443X),
+       CLK("usbhs-omap.0",     "fs_fck",               &usb_host_fs_fck,       CK_443X),
        CLK(NULL,       "utmi_p1_gfclk",                &utmi_p1_gfclk, CK_443X),
        CLK(NULL,       "usb_host_hs_utmi_p1_clk",      &usb_host_hs_utmi_p1_clk,       CK_443X),
        CLK(NULL,       "utmi_p2_gfclk",                &utmi_p2_gfclk, CK_443X),
@@ -3209,8 +3222,8 @@ static struct omap_clk omap44xx_clks[] = {
        CLK(NULL,       "usb_host_hs_hsic480m_p2_clk",  &usb_host_hs_hsic480m_p2_clk,   CK_443X),
        CLK(NULL,       "usb_host_hs_func48mclk",       &usb_host_hs_func48mclk,        CK_443X),
        CLK(NULL,       "usb_host_hs_fck",              &usb_host_hs_fck,       CK_443X),
-       CLK("ehci-omap.0",      "hs_fck",               &usb_host_hs_fck,       CK_443X),
-       CLK("ehci-omap.0",      "usbhost_ick",          &dummy_ck,              CK_443X),
+       CLK("usbhs-omap.0",     "hs_fck",               &usb_host_hs_fck,       CK_443X),
+       CLK("usbhs-omap.0",     "usbhost_ick",          &dummy_ck,              CK_443X),
        CLK(NULL,       "otg_60m_gfclk",                &otg_60m_gfclk, CK_443X),
        CLK(NULL,       "usb_otg_hs_xclk",              &usb_otg_hs_xclk,       CK_443X),
        CLK("musb-omap2430",    "ick",                          &usb_otg_hs_ick,        CK_443X),
@@ -3219,8 +3232,8 @@ static struct omap_clk omap44xx_clks[] = {
        CLK(NULL,       "usb_tll_hs_usb_ch0_clk",       &usb_tll_hs_usb_ch0_clk,        CK_443X),
        CLK(NULL,       "usb_tll_hs_usb_ch1_clk",       &usb_tll_hs_usb_ch1_clk,        CK_443X),
        CLK(NULL,       "usb_tll_hs_ick",               &usb_tll_hs_ick,        CK_443X),
-       CLK("ehci-omap.0",      "usbtll_ick",           &usb_tll_hs_ick,        CK_443X),
-       CLK("ehci-omap.0",      "usbtll_fck",           &dummy_ck,      CK_443X),
+       CLK("usbhs-omap.0",     "usbtll_ick",           &usb_tll_hs_ick,        CK_443X),
+       CLK("usbhs-omap.0",     "usbtll_fck",           &dummy_ck,      CK_443X),
        CLK(NULL,       "usim_ck",                      &usim_ck,       CK_443X),
        CLK(NULL,       "usim_fclk",                    &usim_fclk,     CK_443X),
        CLK(NULL,       "usim_fck",                     &usim_fck,      CK_443X),
@@ -3245,11 +3258,11 @@ static struct omap_clk omap44xx_clks[] = {
        CLK("omap_i2c.2",       "ick",                          &dummy_ck,      CK_443X),
        CLK("omap_i2c.3",       "ick",                          &dummy_ck,      CK_443X),
        CLK("omap_i2c.4",       "ick",                          &dummy_ck,      CK_443X),
-       CLK("mmci-omap-hs.0",   "ick",                          &dummy_ck,      CK_443X),
-       CLK("mmci-omap-hs.1",   "ick",                          &dummy_ck,      CK_443X),
-       CLK("mmci-omap-hs.2",   "ick",                          &dummy_ck,      CK_443X),
-       CLK("mmci-omap-hs.3",   "ick",                          &dummy_ck,      CK_443X),
-       CLK("mmci-omap-hs.4",   "ick",                          &dummy_ck,      CK_443X),
+       CLK("omap_hsmmc.0",     "ick",                          &dummy_ck,      CK_443X),
+       CLK("omap_hsmmc.1",     "ick",                          &dummy_ck,      CK_443X),
+       CLK("omap_hsmmc.2",     "ick",                          &dummy_ck,      CK_443X),
+       CLK("omap_hsmmc.3",     "ick",                          &dummy_ck,      CK_443X),
+       CLK("omap_hsmmc.4",     "ick",                          &dummy_ck,      CK_443X),
        CLK("omap-mcbsp.1",     "ick",                          &dummy_ck,      CK_443X),
        CLK("omap-mcbsp.2",     "ick",                          &dummy_ck,      CK_443X),
        CLK("omap-mcbsp.3",     "ick",                          &dummy_ck,      CK_443X),
@@ -3301,6 +3314,9 @@ int __init omap4xxx_clk_init(void)
                        omap2_init_clk_clkdm(c->lk.clk);
                }
 
+       /* Disable autoidle on all clocks; let the PM code enable it later */
+       omap_clk_disable_autoidle_all();
+
        recalculate_root_clocks();
 
        /*