]> git.sur5r.net Git - u-boot/commitdiff
board: dra71: Fix selection of OPPs
authorLokesh Vutla <lokeshvutla@ti.com>
Thu, 20 Apr 2017 08:37:52 +0000 (14:07 +0530)
committerTom Rini <trini@konsulko.com>
Thu, 27 Apr 2017 20:49:04 +0000 (16:49 -0400)
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>
board/ti/dra7xx/evm.c

index ae2d59da432ef26ff47a9948b31e93e898040181..ed0bc181cf5dc534749030b5199474531fea06d4 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;