aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
authorNishanth Menon <nm@ti.com>2012-01-05 12:15:55 -0600
committerZiyann <jaraidaniel@gmail.com>2014-10-01 12:57:15 +0200
commite0871393670690a26f2fbe5e2e0cf6e29bc167f6 (patch)
treeac0b130473568fef03672c094454ead86c816cdb /arch
parent5b83415333333163a96acacd5e18baefbe212c06 (diff)
downloadkernel_samsung_tuna-e0871393670690a26f2fbe5e2e0cf6e29bc167f6.tar.gz
kernel_samsung_tuna-e0871393670690a26f2fbe5e2e0cf6e29bc167f6.tar.bz2
kernel_samsung_tuna-e0871393670690a26f2fbe5e2e0cf6e29bc167f6.zip
OMAP4: OPP: enable all higher OPPs for VDD_IVA
The standard PMICs used with OMAP44xx are TWL603x. OMAP hooks its VDD_IVA net to one of TWL's regulators. OMAP | PMIC / REG | Max REG current | Max VDD_IVA current ----------+------------------+-----------------+--------------------- OMAP4430 | TWL6030 / VCORE2 | 1000mA [1] | 700mA [3] OMAP4460 | TWL6030 / VCORE2 | 1000mA [1] | 1000mA [4] OMAP4470 | TWL6032 / SMPS5 | 1100mA [2] | 1100mA [5] Max regulator's current, definitely allows us to enable higher OPPs on VDD_IVA. This enables the possibility of doing better performing DVFS on IVA intensive usecases. VDD_IVA has DSP and IVA devices connected. This allows the OPP Turbo to be enabled for all OMAP44xx devices. On OMAP4460/70 OPP Nitro can be enabled for Standard silicon while OPP NitroSB can be enabled for Performance silicon. Footnotes: [1] TWL6030 datasheet SWCS045B (June 2011) [2] TWL6032 datasheet SWCS075C (Nov 2011) [3] OMAP4470 Data Manual SWPS045B (Oct 2011) [4] OMAP4460 Data Manual SWPS042J (Nov 2011) [5] OMAP4430 Data Manual SWPS040P (Oct 2011) Change-Id: I2a812bb1b65ec5d0c2321d65695d844b6c01792d [nm@ti.com: original patch author] Signed-off-by: Nishanth Menon <nm@ti.com> [taras@ti.com: added OMAP4470 part] Signed-off-by: Taras Kondratiuk <taras@ti.com>
Diffstat (limited to 'arch')
-rwxr-xr-xarch/arm/mach-omap2/opp4xxx_data.c62
1 files changed, 28 insertions, 34 deletions
diff --git a/arch/arm/mach-omap2/opp4xxx_data.c b/arch/arm/mach-omap2/opp4xxx_data.c
index 4176ccd369c..61bf045ccec 100755
--- a/arch/arm/mach-omap2/opp4xxx_data.c
+++ b/arch/arm/mach-omap2/opp4xxx_data.c
@@ -133,7 +133,7 @@ static struct omap_opp_def __initdata omap443x_opp_def_list[] = {
/* IVA OPP2 - OPP100 */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 266100000, OMAP4430_VDD_IVA_OPP100_UV),
/* IVA OPP3 - OPP-Turbo */
- OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 332000000, OMAP4430_VDD_IVA_OPPTURBO_UV),
+ OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 332000000, OMAP4430_VDD_IVA_OPPTURBO_UV),
/* SGX OPP1 - OPP50 */
OPP_INITIALIZER("gpu", "dpll_per_m7x2_ck", "core", true, 153600000, OMAP4430_VDD_CORE_OPP50_UV),
/* SGX OPP2 - OPP100 */
@@ -149,7 +149,7 @@ static struct omap_opp_def __initdata omap443x_opp_def_list[] = {
/* DSP OPP2 - OPP100 */
OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 465500000, OMAP4430_VDD_IVA_OPP100_UV),
/* DSP OPP3 - OPPTB */
- OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", false, 496000000, OMAP4430_VDD_IVA_OPPTURBO_UV),
+ OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 496000000, OMAP4430_VDD_IVA_OPPTURBO_UV),
/* HSI OPP1 - OPP50 */
OPP_INITIALIZER("hsi", "hsi_fck", "core", true, 96000000, OMAP4430_VDD_CORE_OPP50_UV),
/* HSI OPP2 - OPP100 */
@@ -257,13 +257,8 @@ static struct omap_opp_def __initdata omap446x_opp_def_list[] = {
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 133000000, OMAP4460_VDD_IVA_OPP50_UV),
/* IVA OPP2 - OPP100 */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 266100000, OMAP4460_VDD_IVA_OPP100_UV),
- /*
- * IVA OPP3 - OPP-Turbo + Disabled as the reference schematics
- * recommends Phoenix VCORE2 which can supply only 600mA - so the ones
- * above this OPP frequency, even though OMAP is capable, should be
- * enabled by board file which is sure of the chip power capability
- */
- OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 332000000, OMAP4460_VDD_IVA_OPPTURBO_UV),
+ /* IVA OPP3 - OPP-Turbo */
+ OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 332000000, OMAP4460_VDD_IVA_OPPTURBO_UV),
/* IVA OPP4 - OPP-Nitro */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 430000000, OMAP4460_VDD_IVA_OPPNITRO_UV),
/* IVA OPP5 - OPP-Nitro SpeedBin*/
@@ -286,7 +281,7 @@ static struct omap_opp_def __initdata omap446x_opp_def_list[] = {
/* DSP OPP2 - OPP100 */
OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 465500000, OMAP4460_VDD_IVA_OPP100_UV),
/* DSP OPP3 - OPPTB */
- OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", false, 496000000, OMAP4460_VDD_IVA_OPPTURBO_UV),
+ OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 496000000, OMAP4460_VDD_IVA_OPPTURBO_UV),
/* HSI OPP1 - OPP50 */
OPP_INITIALIZER("hsi", "hsi_fck", "core", true, 96000000, OMAP4460_VDD_CORE_OPP50_UV),
/* HSI OPP2 - OPP100 */
@@ -400,13 +395,8 @@ static struct omap_opp_def __initdata omap447x_opp_low_def_list[] = {
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 133000000, OMAP4470_VDD_IVA_OPP50_UV),
/* IVA OPP2 - OPP100 */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 266100000, OMAP4470_VDD_IVA_OPP100_UV),
- /*
- * IVA OPP3 - OPP-Turbo + Disabled as the reference schematics
- * recommends Phoenix VCORE2 which can supply only 600mA - so the ones
- * above this OPP frequency, even though OMAP is capable, should be
- * enabled by board file which is sure of the chip power capability
- */
- OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 332000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
+ /* IVA OPP3 - OPP-Turbo */
+ OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 332000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
/* IVA OPP4 - OPP-Nitro */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 430000000, OMAP4470_VDD_IVA_OPPNITRO_UV),
/* IVA OPP5 - OPP-Nitro SpeedBin*/
@@ -429,7 +419,7 @@ static struct omap_opp_def __initdata omap447x_opp_low_def_list[] = {
/* DSP OPP2 - OPP100 */
OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 465500000, OMAP4470_VDD_IVA_OPP100_UV),
/* DSP OPP3 - OPPTB */
- OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", false, 496000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
+ OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 496000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
/* HSI OPP1 - OPP50 */
OPP_INITIALIZER("hsi", "hsi_fck", "core", true, 96000000, OMAP4470_VDD_CORE_OPP50_UV),
/* HSI OPP2 - OPP100 */
@@ -460,13 +450,8 @@ static struct omap_opp_def __initdata omap447x_opp_high_def_list[] = {
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 133000000, OMAP4470_VDD_IVA_OPP50_UV),
/* IVA OPP2 - OPP100 */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 266100000, OMAP4470_VDD_IVA_OPP100_UV),
- /*
- * IVA OPP3 - OPP-Turbo + Disabled as the reference schematics
- * recommends Phoenix VCORE2 which can supply only 600mA - so the ones
- * above this OPP frequency, even though OMAP is capable, should be
- * enabled by board file which is sure of the chip power capability
- */
- OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 332000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
+ /* IVA OPP3 - OPP-Turbo */
+ OPP_INITIALIZER("iva", "virt_iva_ck", "iva", true, 332000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
/* IVA OPP4 - OPP-Nitro */
OPP_INITIALIZER("iva", "virt_iva_ck", "iva", false, 430000000, OMAP4470_VDD_IVA_OPPNITRO_UV),
/* IVA OPP5 - OPP-Nitro SpeedBin*/
@@ -488,7 +473,7 @@ static struct omap_opp_def __initdata omap447x_opp_high_def_list[] = {
/* DSP OPP2 - OPP100 */
OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 465500000, OMAP4470_VDD_IVA_OPP100_UV),
/* DSP OPP3 - OPPTB */
- OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", false, 496000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
+ OPP_INITIALIZER("dsp_c0", "virt_dsp_ck", "iva", true, 496000000, OMAP4470_VDD_IVA_OPPTURBO_UV),
/* HSI OPP1 - OPP50 */
OPP_INITIALIZER("hsi", "hsi_fck", "core", true, 96000000, OMAP4470_VDD_CORE_OPP50_UV),
/* HSI OPP2 - OPP100 */
@@ -560,15 +545,24 @@ int __init omap4_opp_init(void)
ARRAY_SIZE(omap447x_opp_low_def_list));
}
- if (!r) {
- if (omap4_has_mpu_1_2ghz())
- omap4_opp_enable("mpu", 1200000000);
- if (!trimmed)
- pr_info("This is DPLL un-trimmed SOM. OPP is limited at 1.2 GHz\n");
- if (omap4_has_mpu_1_5ghz() && trimmed)
- omap4_opp_enable("mpu", 1500000000);
- }
+ if (r)
+ goto out;
+
+ /* Enable Nitro and NitroSB IVA OPPs */
+ if (omap4_has_iva_430mhz())
+ omap4_opp_enable("iva", 430000000);
+ if (omap4_has_iva_500mhz())
+ omap4_opp_enable("iva", 500000000);
+
+ /* Enable Nitro and NitroSB MPU OPPs */
+ if (omap4_has_mpu_1_2ghz())
+ omap4_opp_enable("mpu", 1200000000);
+ if (!trimmed)
+ pr_info("This is DPLL un-trimmed SOM. OPP is limited at 1.2 GHz\n");
+ if (omap4_has_mpu_1_5ghz() && trimmed)
+ omap4_opp_enable("mpu", 1500000000);
+out:
return r;
}
device_initcall(omap4_opp_init);