diff options
author | Nishanth Menon <nm@ti.com> | 2012-01-05 12:15:55 -0600 |
---|---|---|
committer | Ziyann <jaraidaniel@gmail.com> | 2014-10-01 12:57:15 +0200 |
commit | e0871393670690a26f2fbe5e2e0cf6e29bc167f6 (patch) | |
tree | ac0b130473568fef03672c094454ead86c816cdb /arch | |
parent | 5b83415333333163a96acacd5e18baefbe212c06 (diff) | |
download | kernel_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-x | arch/arm/mach-omap2/opp4xxx_data.c | 62 |
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); |