arm: omap5+: Add board specific ldo powering
authorLokesh Vutla <lokeshvutla@ti.com>
Mon, 21 Aug 2017 07:20:49 +0000 (12:50 +0530)
committerTom Rini <trini@konsulko.com>
Mon, 11 Sep 2017 20:19:35 +0000 (16:19 -0400)
It is not necessary all omap5+ based uses the same PMIC
to poweron mmc. So add support for enabling mmc based on board.

Reviewed-by: Tom Rini <trini@konsulko.com>
Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/include/asm/omap_mmc.h
arch/arm/mach-omap2/omap5/hwinit.c
board/ti/dra7xx/evm.c

index f6eb51ee3c61cca7b39aa60daa61e22c79a70fbf..fd33408622a1ad09cbb79a9a5686c7ef77bab16a 100644 (file)
@@ -174,4 +174,5 @@ int omap_mmc_init(int dev_index, uint host_caps_mask, uint f_max, int cd_gpio,
                int wp_gpio);
 
 void vmmc_pbias_config(uint voltage);
+void board_mmc_poweron_ldo(uint voltage);
 #endif /* OMAP_MMC_H_ */
index afe59e0b58260180191dd91d036fc17f6fd30098..cb2a5ab7eaa01fcb26bf89ca019e9ec1f0dcb059 100644 (file)
@@ -455,10 +455,14 @@ void v7_arch_cp15_set_acr(u32 acr, u32 cpu_midr, u32 cpu_rev_comb,
 }
 
 #if defined(CONFIG_PALMAS_POWER)
+__weak void board_mmc_poweron_ldo(uint voltage)
+{
+       palmas_mmc1_poweron_ldo(voltage);
+}
+
 void vmmc_pbias_config(uint voltage)
 {
        u32 value = 0;
-       struct vcores_data const *vcores = *omap_vcores;
 
        value = readl((*ctrl)->control_pbias);
        value &= ~SDCARD_PWRDNZ;
@@ -467,15 +471,7 @@ void vmmc_pbias_config(uint voltage)
        value &= ~SDCARD_BIAS_PWRDNZ;
        writel(value, (*ctrl)->control_pbias);
 
-       if (vcores->core.pmic->i2c_slave_addr == 0x60) {
-               if (voltage == LDO_VOLT_3V0)
-                       voltage = 0x19;
-               else if (voltage == LDO_VOLT_1V8)
-                       voltage = 0xa;
-               lp873x_mmc1_poweron_ldo(voltage);
-       } else {
-               palmas_mmc1_poweron_ldo(voltage);
-       }
+       board_mmc_poweron_ldo(voltage);
 
        value = readl((*ctrl)->control_pbias);
        value |= SDCARD_BIAS_PWRDNZ;
index 93d3d0b54ebab0c9b6cd63fa1cf0674528f939d8..6767fd217925c569afbc9c59fa1b6d4826b5a587 100644 (file)
@@ -710,6 +710,19 @@ int board_mmc_init(bd_t *bis)
        omap_mmc_init(1, 0, 0, -1, -1);
        return 0;
 }
+
+void board_mmc_poweron_ldo(uint voltage)
+{
+       if (board_is_dra71x_evm()) {
+               if (voltage == LDO_VOLT_3V0)
+                       voltage = 0x19;
+               else if (voltage == LDO_VOLT_1V8)
+                       voltage = 0xa;
+               lp873x_mmc1_poweron_ldo(voltage);
+       } else {
+               palmas_mmc1_poweron_ldo(voltage);
+       }
+}
 #endif
 
 #ifdef CONFIG_USB_DWC3