ARM: DRA: Enable VTT regulator
authorLokesh Vutla <lokeshvutla@ti.com>
Mon, 4 Aug 2014 14:12:24 +0000 (19:42 +0530)
committerTom Rini <trini@ti.com>
Mon, 25 Aug 2014 14:48:13 +0000 (10:48 -0400)
DRA7 evm REV G and later boards uses a vtt regulator for DDR3 termination
and this is controlled by gpio7_11. Configuring gpio7_11.
The pad A22(offset 0x3b4) is used by gpio7_11 on REV G and later boards,
and left unused on previous boards, so it is safe enough to enable gpio
on all DRA7 boards.

Signed-off-by: Lokesh Vutla <lokeshvutla@ti.com>
arch/arm/cpu/armv7/omap-common/hwinit-common.c
board/ti/dra7xx/evm.c
board/ti/dra7xx/mux_data.h
include/configs/dra7xx_evm.h

index 1b4477f4690020837c55b162684a74c8fd3eb795..dd52e938a9508171ff27dd909c0590f1c1ca7e22 100644 (file)
@@ -140,6 +140,9 @@ void s_init(void)
 #endif
        prcm_init();
 #ifdef CONFIG_SPL_BUILD
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+       board_early_init_f();
+#endif
        /* For regular u-boot sdram_init() is called from dram_init() */
        sdram_init();
 #endif
index ae50d88c5792a2f4bcc9ec3e61494be304ac114b..5592fc5defebd4faab3403b072e3e233dc572780 100644 (file)
@@ -13,6 +13,8 @@
 #include <common.h>
 #include <palmas.h>
 #include <sata.h>
+#include <asm/gpio.h>
+#include <asm/arch/gpio.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mmc_host_def.h>
 #include <asm/arch/sata.h>
@@ -26,6 +28,9 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
+/* GPIO 7_11 */
+#define GPIO_DDR_VTT_EN 203
+
 const struct omap_sysinfo sysinfo = {
        "Board: DRA7xx\n"
 };
@@ -272,3 +277,29 @@ int board_eth_init(bd_t *bis)
        return ret;
 }
 #endif
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+/* VTT regulator enable */
+static inline void vtt_regulator_enable(void)
+{
+       if (omap_hw_init_context() == OMAP_INIT_CONTEXT_UBOOT_AFTER_SPL)
+               return;
+
+       /* Do not enable VTT for DRA722 */
+       if (omap_revision() == DRA722_ES1_0)
+               return;
+
+       /*
+        * EVM Rev G and later use gpio7_11 for DDR3 termination.
+        * This is safe enough to do on older revs.
+        */
+       gpio_request(GPIO_DDR_VTT_EN, "ddr_vtt_en");
+       gpio_direction_output(GPIO_DDR_VTT_EN, 1);
+}
+
+int board_early_init_f(void)
+{
+       vtt_regulator_enable();
+       return 0;
+}
+#endif
index 5bc4fc9bf16fc55322de5268b65c322e12ae28fa..7276014f1db90edf08def7277f3df2fde1345d64 100644 (file)
@@ -139,5 +139,6 @@ const struct pad_conf_entry core_padconf_array_essential[] = {
        {GPMC_CS3, (IEN | PTU | PDIS | M1)},    /* QSPI1_CS1*/
 #endif /* CONFIG_NAND || CONFIG_NOR */
        {USB2_DRVVBUS, (M0 | IEN | FSC) },
+       {SPI1_CS1, (PEN | IDIS | M14) },
 };
 #endif /* _MUX_DATA_DRA7XX_H_ */
index d7d6d304c652a5d93da8b1ef1a3c863730c0bb6a..4143a4ddeb4283ed1473128f9ca850ecc5a26d7e 100644 (file)
@@ -13,6 +13,7 @@
 #define __CONFIG_DRA7XX_EVM_H
 
 #define CONFIG_DRA7XX
+#define CONFIG_BOARD_EARLY_INIT_F
 
 #ifndef CONFIG_QSPI_BOOT
 /* MMC ENV related defines */