summaryrefslogtreecommitdiff
path: root/board/toradex/verdin-imx8mp/spl.c
diff options
context:
space:
mode:
Diffstat (limited to 'board/toradex/verdin-imx8mp/spl.c')
-rw-r--r--board/toradex/verdin-imx8mp/spl.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/board/toradex/verdin-imx8mp/spl.c b/board/toradex/verdin-imx8mp/spl.c
index 374538e133..db2e88a095 100644
--- a/board/toradex/verdin-imx8mp/spl.c
+++ b/board/toradex/verdin-imx8mp/spl.c
@@ -22,6 +22,8 @@
#include <power/pmic.h>
#include <spl.h>
+extern struct dram_timing_info dram_timing2;
+
DECLARE_GLOBAL_DATA_PTR;
int spl_board_boot_device(enum boot_device boot_dev_spl)
@@ -52,7 +54,13 @@ int spl_board_boot_device(enum boot_device boot_dev_spl)
void spl_dram_init(void)
{
- ddr_init(&dram_timing);
+ /*
+ * Try configuring for dual rank memory falling back to single rank
+ */
+ if (ddr_init(&dram_timing)) {
+ printf("Dual rank failed, attempting single rank configuration.\n");
+ ddr_init(&dram_timing2);
+ }
}
#define I2C_PAD_CTRL (PAD_CTL_DSE6 | PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PE)
@@ -195,7 +203,8 @@ int power_init_board(void)
/* set WDOG_B_CFG to cold reset */
pmic_reg_write(p, PCA9450_RESET_CTRL, 0xA1);
- /* set CONFIG2 to enable the I2C level translator */
+ /* set LDO4 and CONFIG2 to enable the I2C level translator */
+ pmic_reg_write(p, PCA9450_LDO4CTRL, 0x59);
pmic_reg_write(p, PCA9450_CONFIG2, 0x1);
return 0;