]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - glsdk/infoadas-u-boot.git/commitdiff
board: dra71: Fix selection of OPPs
authorLokesh Vutla <lokeshvutla@ti.com>
Thu, 20 Apr 2017 08:37:52 +0000 (14:07 +0530)
committerJean-Jacques Hiblot <jjhiblot@ti.com>
Wed, 7 Jun 2017 07:53:00 +0000 (09:53 +0200)
commit 6cc96bc upstream

As per the DM[1] Dated June 2016–Revised February 2017, Table 5-3,
DRA71 supports the following OPPs for various voltage domains:

VDD_MPU: OPP_NOM
VDD_CORE: OPP_NOM
VDD_GPU: OPP_NOM
VDD_DSPEVE: OPP_NOM, OPP_HIGH
VDD_IVA: OPP_NOM, OPP_HIGH

This patch add support for selection of the above OPPs instead of
using OPP_NOM for all voltage domains.

[1] http://www.ti.com/lit/ds/symlink/dra718.pdf

Reported-by: Vishal Mahaveer <vishalm@ti.com>
Signed-off-by: Suman Anna <s-anna@ti.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
board/ti/dra7xx/evm.c

index 2267a0734f9526f5a237f1d6f173f242bb451aa1..00b1d5b8ba66a18b604bcadd12e578ac23f9de3b 100644 (file)
@@ -438,14 +438,18 @@ struct vcores_data dra718_volts = {
         * and are powered by BUCK1 of LP873X PMIC
         */
        .eve.value[OPP_NOM]     = VDD_EVE_DRA7_NOM,
+       .eve.value[OPP_HIGH]    = VDD_EVE_DRA7_HIGH,
        .eve.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_DSPEVE_NOM,
+       .eve.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_DSPEVE_HIGH,
        .eve.efuse.reg_bits = DRA752_EFUSE_REGBITS,
        .eve.addr       = LP873X_REG_ADDR_BUCK1,
        .eve.pmic       = &lp8733,
        .eve.abb_tx_done_mask = OMAP_ABB_EVE_TXDONE_MASK,
 
        .iva.value[OPP_NOM]     = VDD_IVA_DRA7_NOM,
+       .iva.value[OPP_HIGH]    = VDD_IVA_DRA7_HIGH,
        .iva.efuse.reg[OPP_NOM] = STD_FUSE_OPP_VMIN_IVA_NOM,
+       .iva.efuse.reg[OPP_HIGH] = STD_FUSE_OPP_VMIN_IVA_HIGH,
        .iva.efuse.reg_bits = DRA752_EFUSE_REGBITS,
        .iva.addr       = LP873X_REG_ADDR_BUCK1,
        .iva.pmic       = &lp8733,
@@ -456,27 +460,44 @@ int get_voltrail_opp(int rail_offset)
 {
        int opp;
 
-       /*
-        * DRA71x supports only OPP_NOM.
-        */
-       if (board_is_dra71x_evm())
-               return OPP_NOM;
-
        switch (rail_offset) {
        case VOLT_MPU:
                opp = DRA7_MPU_OPP;
+               /* DRA71x supports only OPP_NOM for MPU */
+               if (board_is_dra71x_evm())
+                       opp = OPP_NOM;
                break;
        case VOLT_CORE:
                opp = DRA7_CORE_OPP;
+               /* DRA71x supports only OPP_NOM for CORE */
+               if (board_is_dra71x_evm())
+                       opp = OPP_NOM;
                break;
        case VOLT_GPU:
                opp = DRA7_GPU_OPP;
+               /* DRA71x supports only OPP_NOM for GPU */
+               if (board_is_dra71x_evm())
+                       opp = OPP_NOM;
                break;
        case VOLT_EVE:
                opp = DRA7_DSPEVE_OPP;
+               /*
+                * DRA71x does not support OPP_OD for EVE.
+                * If OPP_OD is selected by menuconfig, fallback
+                * to OPP_NOM.
+                */
+               if (board_is_dra71x_evm() && opp == OPP_OD)
+                       opp = OPP_NOM;
                break;
        case VOLT_IVA:
                opp = DRA7_IVA_OPP;
+               /*
+                * DRA71x does not support OPP_OD for IVA.
+                * If OPP_OD is selected by menuconfig, fallback
+                * to OPP_NOM.
+                */
+               if (board_is_dra71x_evm() && opp == OPP_OD)
+                       opp = OPP_NOM;
                break;
        default:
                opp = OPP_NOM;