aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLokesh Vutla2017-07-24 10:11:50 -0500
committerJean-Jacques Hiblot2017-08-02 09:11:37 -0500
commit6448a4072f7ccd4608e7995c845f4d732313d52d (patch)
tree417c30fe47e1004b823cc9e8e71e88c2b530bf7b
parent04faefb0b0eabc22f3794e58e481c29bfb5fa9cb (diff)
downloadinfoadas-u-boot-6448a4072f7ccd4608e7995c845f4d732313d52d.tar.gz
infoadas-u-boot-6448a4072f7ccd4608e7995c845f4d732313d52d.tar.xz
infoadas-u-boot-6448a4072f7ccd4608e7995c845f4d732313d52d.zip
arm: omap5+: Add board specific ldo powering
It is not necessary all omap5+ based uses the same PMIC to poweron mmc. So add support for enabling mmc based on board. Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com> Signed-off-by: Jean-Jacques Hiblot <jjhiblot@ti.com>
-rw-r--r--arch/arm/cpu/armv7/omap5/hwinit.c16
-rw-r--r--arch/arm/include/asm/omap_mmc.h1
-rw-r--r--board/ti/dra7xx/evm.c13
3 files changed, 20 insertions, 10 deletions
diff --git a/arch/arm/cpu/armv7/omap5/hwinit.c b/arch/arm/cpu/armv7/omap5/hwinit.c
index 839d79d10204..cd56067bdc8c 100644
--- a/arch/arm/cpu/armv7/omap5/hwinit.c
+++ b/arch/arm/cpu/armv7/omap5/hwinit.c
@@ -454,10 +454,14 @@ void v7_arch_cp15_set_acr(u32 acr, u32 cpu_midr, u32 cpu_rev_comb,
454} 454}
455 455
456#if defined(CONFIG_PALMAS_POWER) 456#if defined(CONFIG_PALMAS_POWER)
457__weak void board_mmc_poweron_ldo(uint voltage)
458{
459 palmas_mmc1_poweron_ldo(voltage);
460}
461
457void vmmc_pbias_config(uint voltage) 462void vmmc_pbias_config(uint voltage)
458{ 463{
459 u32 value = 0; 464 u32 value = 0;
460 struct vcores_data const *vcores = *omap_vcores;
461 465
462 value = readl((*ctrl)->control_pbias); 466 value = readl((*ctrl)->control_pbias);
463 value &= ~SDCARD_PWRDNZ; 467 value &= ~SDCARD_PWRDNZ;
@@ -466,15 +470,7 @@ void vmmc_pbias_config(uint voltage)
466 value &= ~SDCARD_BIAS_PWRDNZ; 470 value &= ~SDCARD_BIAS_PWRDNZ;
467 writel(value, (*ctrl)->control_pbias); 471 writel(value, (*ctrl)->control_pbias);
468 472
469 if (vcores->core.pmic->i2c_slave_addr == 0x60) { 473 board_mmc_poweron_ldo(voltage);
470 if (voltage == LDO_VOLT_3V0)
471 voltage = 0x19;
472 else if (voltage == LDO_VOLT_1V8)
473 voltage = 0xa;
474 lp873x_mmc1_poweron_ldo(voltage);
475 } else {
476 palmas_mmc1_poweron_ldo(voltage);
477 }
478 474
479 value = readl((*ctrl)->control_pbias); 475 value = readl((*ctrl)->control_pbias);
480 value |= SDCARD_BIAS_PWRDNZ; 476 value |= SDCARD_BIAS_PWRDNZ;
diff --git a/arch/arm/include/asm/omap_mmc.h b/arch/arm/include/asm/omap_mmc.h
index 406010bbbe93..abfdc2ef4f64 100644
--- a/arch/arm/include/asm/omap_mmc.h
+++ b/arch/arm/include/asm/omap_mmc.h
@@ -229,4 +229,5 @@ int platform_fixup_disable_uhs_mode(void);
229struct omap_hsmmc_pinctrl_state *platform_fixup_get_pinctrl_by_mode 229struct omap_hsmmc_pinctrl_state *platform_fixup_get_pinctrl_by_mode
230 (struct hsmmc *base, const char *mode); 230 (struct hsmmc *base, const char *mode);
231void vmmc_pbias_config(uint voltage); 231void vmmc_pbias_config(uint voltage);
232void board_mmc_poweron_ldo(uint voltage);
232#endif /* OMAP_MMC_H_ */ 233#endif /* OMAP_MMC_H_ */
diff --git a/board/ti/dra7xx/evm.c b/board/ti/dra7xx/evm.c
index 39808474ccb4..558a7fdc2c9a 100644
--- a/board/ti/dra7xx/evm.c
+++ b/board/ti/dra7xx/evm.c
@@ -707,6 +707,19 @@ int board_mmc_init(bd_t *bis)
707 omap_mmc_init(1, 0, 0, -1, -1); 707 omap_mmc_init(1, 0, 0, -1, -1);
708 return 0; 708 return 0;
709} 709}
710
711void board_mmc_poweron_ldo(uint voltage)
712{
713 if (board_is_dra71x_evm()) {
714 if (voltage == LDO_VOLT_3V0)
715 voltage = 0x19;
716 else if (voltage == LDO_VOLT_1V8)
717 voltage = 0xa;
718 lp873x_mmc1_poweron_ldo(voltage);
719 } else {
720 palmas_mmc1_poweron_ldo(voltage);
721 }
722}
710#endif 723#endif
711 724
712#ifdef CONFIG_OMAP_HSMMC 725#ifdef CONFIG_OMAP_HSMMC