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.c30
1 files changed, 23 insertions, 7 deletions
diff --git a/board/toradex/verdin-imx8mp/spl.c b/board/toradex/verdin-imx8mp/spl.c
index 6f1931ffac..b901038e90 100644
--- a/board/toradex/verdin-imx8mp/spl.c
+++ b/board/toradex/verdin-imx8mp/spl.c
@@ -17,10 +17,11 @@
#include <asm/mach-imx/iomux-v3.h>
#include <asm/mach-imx/mxc_i2c.h>
#include <asm/arch/ddr.h>
+#include <dm/device.h>
+#include <dm/uclass.h>
#include <power/pmic.h>
#include <power/pca9450.h>
-
-extern struct dram_timing_info dram_timing2;
+#include "lpddr4_timing.h"
DECLARE_GLOBAL_DATA_PTR;
@@ -32,17 +33,32 @@ int spl_board_boot_device(enum boot_device boot_dev_spl)
void spl_dram_init(void)
{
/*
- * try configuring for quad die, dual rank aka 8 GB falling back to
- * dual die, single rank aka 1 GB (untested), 2 GB or 4 GB if it fails
+ * Try configuring for dual rank memory falling back to single rank
*/
- if (ddr_init(&dram_timing)) {
- printf("Quad die, dual rank failed, attempting dual die, single rank configuration.\n");
- ddr_init(&dram_timing2);
+ if (!ddr_init(&dram_timing)) {
+ printf("DDR configured as dual rank\n");
+ return;
+ }
+
+ lpddr4_single_rank_training_patch();
+ if (!ddr_init(&dram_timing)) {
+ printf("DDR configured as single rank\n");
+ return;
}
+ printf("DDR configuration failed\n");
}
void spl_board_init(void)
{
+ if (IS_ENABLED(CONFIG_FSL_CAAM)) {
+ struct udevice *dev;
+ int ret;
+
+ ret = uclass_get_device_by_driver(UCLASS_MISC, DM_DRIVER_GET(caam_jr), &dev);
+ if (ret)
+ printf("Failed to initialize caam_jr: %d\n", ret);
+ }
+
/*
* Set GIC clock to 500Mhz for OD VDD_SOC. Kernel driver does
* not allow to change it. Should set the clock after PMIC