[PATCH 7/9] ddr: imx9: Add Synopsys LPDDR training data collect

Peng Fan (OSS) peng.fan at oss.nxp.com
Mon Jul 28 05:24:53 CEST 2025


From: Viorel Suman <viorel.suman at nxp.com>

Add the functionality required for collecting Synopsys LPDDR training
data in SPL context.

Signed-off-by: Viorel Suman <viorel.suman at nxp.com>
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
 arch/arm/include/asm/arch-imx9/ddr.h |   20 +
 drivers/ddr/imx/imx9/Kconfig         |    8 +
 drivers/ddr/imx/imx9/ddr_init.c      |   11 +
 drivers/ddr/imx/phy/Kconfig          |    6 +
 drivers/ddr/imx/phy/Makefile         |    1 +
 drivers/ddr/imx/phy/ddrphy_qb_gen.c  | 1842 ++++++++++++++++++++++++++++++++++
 drivers/ddr/imx/phy/ddrphy_utils.c   |    2 +-
 7 files changed, 1889 insertions(+), 1 deletion(-)

diff --git a/arch/arm/include/asm/arch-imx9/ddr.h b/arch/arm/include/asm/arch-imx9/ddr.h
index 31c420198f667f0dd334c896fe9ab0b06797641e..4c092509111c66c09cd006711131db107dbf17e3 100644
--- a/arch/arm/include/asm/arch-imx9/ddr.h
+++ b/arch/arm/include/asm/arch-imx9/ddr.h
@@ -101,6 +101,26 @@ struct dram_timing_info {
 
 extern struct dram_timing_info dram_timing;
 
+#if defined(CONFIG_IMX_SNPS_DDR_PHY_QB_GEN)
+#define DDRPHY_QB_FSP_SIZE	3
+#define DDRPHY_QB_CSR_SIZE	1792
+#define DDRPHY_QB_FLAG_2D	BIT(0)	/* =1 if First boot used 2D training, =0 otherwise */
+
+struct ddrphy_qb_state {
+	u32 crc;
+	u32 flags;
+	u32 fsp[DDRPHY_QB_FSP_SIZE];
+	u32 csr[DDRPHY_QB_CSR_SIZE];
+};
+
+#define DDRPHY_QB_STATE_SIZE \
+	(sizeof(u32) * (1 + DDRPHY_QB_FSP_SIZE + DDRPHY_QB_CSR_SIZE))
+
+extern struct ddrphy_qb_state qb_state;
+
+int ddrphy_qb_save(void);
+#endif
+
 void ddr_load_train_firmware(enum fw_type type);
 int ddr_init(struct dram_timing_info *timing_info);
 int ddr_cfg_phy(struct dram_timing_info *timing_info);
diff --git a/drivers/ddr/imx/imx9/Kconfig b/drivers/ddr/imx/imx9/Kconfig
index 0a45340ffb6549d1e7a7e273e19abefbcc6793b3..450ca0abb952a13b23322751596bf6d5c617e2b4 100644
--- a/drivers/ddr/imx/imx9/Kconfig
+++ b/drivers/ddr/imx/imx9/Kconfig
@@ -29,4 +29,12 @@ config SAVED_DRAM_TIMING_BASE
 	  info into memory for low power use.
 	default 0x2051C000
 
+config SAVED_QB_STATE_BASE
+	hex "Define the base address for saved QuickBoot state"
+	depends on IMX_SNPS_DDR_PHY_QB_GEN
+	help
+	  Once DRAM is trained, need to save the dram related timing
+	  info into memory in order to be reachable from U-Boot.
+	default 0x83100000
+
 endmenu
diff --git a/drivers/ddr/imx/imx9/ddr_init.c b/drivers/ddr/imx/imx9/ddr_init.c
index 50c2dbd40084c6a4d750f628c5c1fc76fa017596..758a4049139228198a86449bdf2f9106c0773040 100644
--- a/drivers/ddr/imx/imx9/ddr_init.c
+++ b/drivers/ddr/imx/imx9/ddr_init.c
@@ -381,10 +381,17 @@ int ddr_init(struct dram_timing_info *dram_timing)
 	 */
 	debug("DDRINFO:ddrphy config start\n");
 
+#if defined(CONFIG_IMX_SNPS_DDR_PHY_QB_GEN)
+	qb_state.flags = 0;
+#endif
+
 	ret = ddr_cfg_phy(dram_timing);
 	if (ret)
 		return ret;
 
+#if defined(CONFIG_IMX_SNPS_DDR_PHY_QB_GEN)
+	ddrphy_qb_save();
+#endif
 	/* save the ddr PHY trained CSR in memory for low power use */
 	ddrphy_trained_csr_save(dram_timing->ddrphy_trained_csr,
 				dram_timing->ddrphy_trained_csr_num);
@@ -447,6 +454,10 @@ int ddr_init(struct dram_timing_info *dram_timing)
 					  ARRAY_SIZE(saved_timing->fsp_cfg[1].mr_cfg));
 	}
 
+#if defined(CONFIG_IMX_SNPS_DDR_PHY_QB_GEN)
+	memcpy((struct ddrphy_qb_state *)CONFIG_SAVED_QB_STATE_BASE,
+		&qb_state, sizeof(struct ddrphy_qb_state));
+#endif
 	return 0;
 }
 
diff --git a/drivers/ddr/imx/phy/Kconfig b/drivers/ddr/imx/phy/Kconfig
index d3e589b23c48fb0b5e09e9fcdf462e85215c3e64..28a9eca0788f96355e8459427a92832446be0e02 100644
--- a/drivers/ddr/imx/phy/Kconfig
+++ b/drivers/ddr/imx/phy/Kconfig
@@ -2,3 +2,9 @@ config IMX_SNPS_DDR_PHY
 	bool "i.MX Snopsys DDR PHY"
 	help
 	  Select the DDR PHY driver support on i.MX8M and i.MX9 SOC.
+
+config IMX_SNPS_DDR_PHY_QB_GEN
+	bool "i.MX Synopsys DDR PHY training data generation for QuickBoot mode"
+	depends on IMX_SNPS_DDR_PHY
+	help
+	  Select the DDR PHY training data generation for QuickBoot support on i.MX9 SOC.
diff --git a/drivers/ddr/imx/phy/Makefile b/drivers/ddr/imx/phy/Makefile
index 95c93ba16d52270df6e8c669b948d1a194bddfce..d82842759e72d104aba41110b9c6e01b997d78fb 100644
--- a/drivers/ddr/imx/phy/Makefile
+++ b/drivers/ddr/imx/phy/Makefile
@@ -6,4 +6,5 @@
 
 ifdef CONFIG_XPL_BUILD
 obj-$(CONFIG_IMX_SNPS_DDR_PHY) += helper.o ddrphy_utils.o ddrphy_train.o
+obj-$(CONFIG_IMX_SNPS_DDR_PHY_QB_GEN) += ddrphy_qb_gen.o
 endif
diff --git a/drivers/ddr/imx/phy/ddrphy_qb_gen.c b/drivers/ddr/imx/phy/ddrphy_qb_gen.c
new file mode 100644
index 0000000000000000000000000000000000000000..d77bb8480d85770d29e4408c2a723b20377833f0
--- /dev/null
+++ b/drivers/ddr/imx/phy/ddrphy_qb_gen.c
@@ -0,0 +1,1842 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2025 NXP
+ */
+
+#include <asm/arch/ddr.h>
+#include <linux/errno.h>
+#include <linux/kernel.h>
+#include <linux/types.h>
+#include <u-boot/crc.h>
+
+static const u32 ddrphy_csr_cfg[DDRPHY_QB_CSR_SIZE] = {
+	0x00090201,
+	0x00090202,
+	0x00090203,
+	0x00090204,
+	0x00090205,
+	0x00090206,
+	0x00090207,
+	0x00090208,
+	0x00190201,
+	0x00190202,
+	0x00190203,
+	0x00190204,
+	0x00190205,
+	0x00190206,
+	0x00190207,
+	0x00190208,
+	0x00290201,
+	0x00290202,
+	0x00290203,
+	0x00290204,
+	0x00290205,
+	0x00290206,
+	0x00290207,
+	0x00290208,
+	0x00390201,
+	0x00390202,
+	0x00390203,
+	0x00390204,
+	0x00390205,
+	0x00390206,
+	0x00390207,
+	0x00390208,
+	0x00090000,
+	0x00090001,
+	0x00090002,
+	0x00090003,
+	0x00090004,
+	0x00090005,
+	0x00090006,
+	0x00090007,
+	0x00090008,
+	0x00090009,
+	0x0009000a,
+	0x0009000b,
+	0x0009000c,
+	0x0009000d,
+	0x0009000e,
+	0x0009000f,
+	0x00090010,
+	0x00090011,
+	0x00090012,
+	0x00090013,
+	0x00090014,
+	0x00090015,
+	0x00090016,
+	0x00090017,
+	0x00090018,
+	0x00090019,
+	0x0009001a,
+	0x0009001b,
+	0x0009001c,
+	0x0009001d,
+	0x0009001e,
+	0x0009001f,
+	0x00090020,
+	0x00090021,
+	0x00090022,
+	0x00090023,
+	0x00090024,
+	0x00090025,
+	0x00090026,
+	0x00090027,
+	0x00090028,
+	0x00090029,
+	0x0009002a,
+	0x0009002b,
+	0x0009002c,
+	0x0009002d,
+	0x0009002e,
+	0x0009002f,
+	0x00090030,
+	0x00090031,
+	0x00090032,
+	0x00090033,
+	0x00090034,
+	0x00090035,
+	0x00090036,
+	0x00090037,
+	0x00090038,
+	0x00090039,
+	0x0009003a,
+	0x0009003b,
+	0x0009003c,
+	0x0009003d,
+	0x0009003e,
+	0x0009003f,
+	0x00090040,
+	0x00090041,
+	0x00090042,
+	0x00090043,
+	0x00090044,
+	0x00090045,
+	0x00090046,
+	0x00090047,
+	0x00090048,
+	0x00090049,
+	0x0009004a,
+	0x0009004b,
+	0x0009004c,
+	0x0009004d,
+	0x0009004e,
+	0x0009004f,
+	0x00090050,
+	0x00090051,
+	0x00090052,
+	0x00090053,
+	0x00090054,
+	0x00090055,
+	0x00090056,
+	0x00090057,
+	0x00090058,
+	0x00090059,
+	0x0009005a,
+	0x0009005b,
+	0x0009005c,
+	0x0009005d,
+	0x0009005e,
+	0x0009005f,
+	0x00090060,
+	0x00090061,
+	0x00090062,
+	0x00090063,
+	0x00090064,
+	0x00090065,
+	0x00090066,
+	0x00090067,
+	0x00090068,
+	0x00090069,
+	0x0009006a,
+	0x0009006b,
+	0x0009006c,
+	0x0009006d,
+	0x0009006e,
+	0x0009006f,
+	0x00090070,
+	0x00090071,
+	0x00090072,
+	0x00090073,
+	0x00090074,
+	0x00090075,
+	0x00090076,
+	0x00090077,
+	0x00090078,
+	0x00090079,
+	0x0009007a,
+	0x0009007b,
+	0x0009007c,
+	0x0009007d,
+	0x0009007e,
+	0x0009007f,
+	0x00090080,
+	0x00090081,
+	0x00090082,
+	0x00090083,
+	0x00090084,
+	0x00090085,
+	0x00090086,
+	0x00090087,
+	0x00090088,
+	0x00090089,
+	0x0009008a,
+	0x0009008b,
+	0x0009008c,
+	0x0009008d,
+	0x0009008e,
+	0x0009008f,
+	0x00090090,
+	0x00090091,
+	0x00090092,
+	0x00090093,
+	0x00090094,
+	0x00090095,
+	0x00090096,
+	0x00090097,
+	0x00090098,
+	0x00090099,
+	0x0009009a,
+	0x0009009b,
+	0x0009009c,
+	0x0009009d,
+	0x0009009e,
+	0x0009009f,
+	0x000900a0,
+	0x000900a1,
+	0x000900a2,
+	0x000900a3,
+	0x000900a4,
+	0x000900a5,
+	0x000900a6,
+	0x000900a7,
+	0x000900a8,
+	0x000900a9,
+	0x000900aa,
+	0x000900ab,
+	0x000900ac,
+	0x000900ad,
+	0x000900ae,
+	0x000900af,
+	0x000900b0,
+	0x000900b1,
+	0x000900b2,
+	0x000900b3,
+	0x000900b4,
+	0x000900b5,
+	0x000900b6,
+	0x000900b7,
+	0x000900b8,
+	0x000900b9,
+	0x000900ba,
+	0x000900bb,
+	0x000900bc,
+	0x000900bd,
+	0x000900be,
+	0x000900bf,
+	0x000900c0,
+	0x000900c1,
+	0x000900c2,
+	0x000900c3,
+	0x000900c4,
+	0x000900c5,
+	0x000900c6,
+	0x000900c7,
+	0x000900c8,
+	0x000900c9,
+	0x000900ca,
+	0x000900cb,
+	0x000900cc,
+	0x000900cd,
+	0x000900ce,
+	0x000900cf,
+	0x000900d0,
+	0x000900d1,
+	0x000900d2,
+	0x000900d3,
+	0x000900d4,
+	0x000900d5,
+	0x000900d6,
+	0x000900d7,
+	0x000900d8,
+	0x000900d9,
+	0x000900da,
+	0x000900db,
+	0x000900dc,
+	0x000900dd,
+	0x000900de,
+	0x000900df,
+	0x000900e0,
+	0x000900e1,
+	0x000900e2,
+	0x000900e3,
+	0x000900e4,
+	0x000900e5,
+	0x000900e6,
+	0x000900e7,
+	0x000900e8,
+	0x000900e9,
+	0x000900ea,
+	0x000900eb,
+	0x000900ec,
+	0x000900ed,
+	0x000900ee,
+	0x000900ef,
+	0x000900f0,
+	0x000900f1,
+	0x000900f2,
+	0x000900f3,
+	0x000900f4,
+	0x000900f5,
+	0x000900f6,
+	0x000900f7,
+	0x000900f8,
+	0x000900f9,
+	0x000900fa,
+	0x000900fb,
+	0x000900fc,
+	0x000900fd,
+	0x000900fe,
+	0x000900ff,
+	0x00090100,
+	0x00090101,
+	0x00090102,
+	0x00090103,
+	0x00090104,
+	0x00090105,
+	0x00090106,
+	0x00090107,
+	0x00090108,
+	0x00090109,
+	0x0009010a,
+	0x0009010b,
+	0x0009010c,
+	0x0009010d,
+	0x0009010e,
+	0x0009010f,
+	0x00090110,
+	0x00090111,
+	0x00090112,
+	0x00090113,
+	0x00090114,
+	0x00090115,
+	0x00090116,
+	0x00090117,
+	0x00090118,
+	0x00090119,
+	0x0009011a,
+	0x0009011b,
+	0x0009011c,
+	0x0009011d,
+	0x0009011e,
+	0x0009011f,
+	0x00090120,
+	0x00090121,
+	0x00090122,
+	0x00090123,
+	0x00090124,
+	0x00090125,
+	0x00090126,
+	0x00090127,
+	0x00090128,
+	0x00090129,
+	0x0009012a,
+	0x0009012b,
+	0x0009012c,
+	0x0009012d,
+	0x0009012e,
+	0x0009012f,
+	0x00090130,
+	0x00090131,
+	0x00090132,
+	0x00090133,
+	0x00090134,
+	0x00090135,
+	0x00090136,
+	0x00090137,
+	0x00090138,
+	0x00090139,
+	0x0009013a,
+	0x0009013b,
+	0x0009013c,
+	0x0009013d,
+	0x0009013e,
+	0x0009013f,
+	0x00090140,
+	0x00090141,
+	0x00090142,
+	0x00090143,
+	0x00090144,
+	0x00090145,
+	0x00090146,
+	0x00090147,
+	0x00090148,
+	0x00090149,
+	0x0009014a,
+	0x0009014b,
+	0x0009014c,
+	0x0009014d,
+	0x0009014e,
+	0x0009014f,
+	0x00090150,
+	0x00090151,
+	0x00090152,
+	0x00090153,
+	0x00090154,
+	0x00090155,
+	0x00090156,
+	0x00090157,
+	0x00090158,
+	0x00090159,
+	0x0009015a,
+	0x0009015b,
+	0x0009015c,
+	0x0009015d,
+	0x0009015e,
+	0x0009015f,
+	0x00090160,
+	0x00090161,
+	0x00090162,
+	0x00090163,
+	0x00090164,
+	0x00090165,
+	0x00090166,
+	0x00090167,
+	0x00090168,
+	0x00090169,
+	0x0009016a,
+	0x0009016b,
+	0x0009016c,
+	0x0009016d,
+	0x0009016e,
+	0x0009016f,
+	0x00090170,
+	0x00090171,
+	0x00090172,
+	0x00090173,
+	0x00090174,
+	0x00090175,
+	0x00090176,
+	0x00090177,
+	0x00090178,
+	0x00090179,
+	0x0009017a,
+	0x0009017b,
+	0x0009017c,
+	0x0009017d,
+	0x0009017e,
+	0x0009017f,
+	0x00090180,
+	0x00090181,
+	0x00090182,
+	0x00090183,
+	0x00090184,
+	0x00090185,
+	0x00090186,
+	0x00090187,
+	0x00090188,
+	0x00090189,
+	0x0009018a,
+	0x0009018b,
+	0x0009018c,
+	0x0009018d,
+	0x0009018e,
+	0x0009018f,
+	0x00090190,
+	0x00090191,
+	0x00090192,
+	0x00090193,
+	0x00090194,
+	0x00090195,
+	0x00090196,
+	0x00090197,
+	0x00090198,
+	0x00090199,
+	0x0009019a,
+	0x0009019b,
+	0x000902ff,
+	0x00040080,
+	0x00040081,
+	0x00040082,
+	0x00040083,
+	0x00040084,
+	0x00040085,
+	0x00040086,
+	0x00040087,
+	0x00040088,
+	0x00040089,
+	0x0004008a,
+	0x0004008b,
+	0x0004008c,
+	0x0004008d,
+	0x0004008e,
+	0x0004008f,
+	0x00140080,
+	0x00140081,
+	0x00140082,
+	0x00140083,
+	0x00140084,
+	0x00140085,
+	0x00140086,
+	0x00140087,
+	0x00140088,
+	0x00140089,
+	0x0014008a,
+	0x0014008b,
+	0x0014008c,
+	0x0014008d,
+	0x0014008e,
+	0x0014008f,
+	0x00240080,
+	0x00240081,
+	0x00240082,
+	0x00240083,
+	0x00240084,
+	0x00240085,
+	0x00240086,
+	0x00240087,
+	0x00240088,
+	0x00240089,
+	0x0024008a,
+	0x0024008b,
+	0x0024008c,
+	0x0024008d,
+	0x0024008e,
+	0x0024008f,
+	0x00340080,
+	0x00340081,
+	0x00340082,
+	0x00340083,
+	0x00340084,
+	0x00340085,
+	0x00340086,
+	0x00340087,
+	0x00340088,
+	0x00340089,
+	0x0034008a,
+	0x0034008b,
+	0x0034008c,
+	0x0034008d,
+	0x0034008e,
+	0x0034008f,
+	0x00040000,
+	0x00040001,
+	0x00040002,
+	0x00040003,
+	0x00040004,
+	0x00040005,
+	0x00040006,
+	0x00040007,
+	0x00040008,
+	0x00040009,
+	0x0004000a,
+	0x0004000b,
+	0x0004000c,
+	0x0004000d,
+	0x0004000e,
+	0x0004000f,
+	0x00040010,
+	0x00040011,
+	0x00040012,
+	0x00040013,
+	0x00040014,
+	0x00040015,
+	0x00040016,
+	0x00040017,
+	0x00040018,
+	0x00040019,
+	0x0004001a,
+	0x0004001b,
+	0x0004001c,
+	0x0004001d,
+	0x0004001e,
+	0x0004001f,
+	0x00040020,
+	0x00040021,
+	0x00040022,
+	0x00040023,
+	0x00040024,
+	0x00040025,
+	0x00040026,
+	0x00040027,
+	0x00040028,
+	0x00040029,
+	0x0004002a,
+	0x0004002b,
+	0x0004002c,
+	0x0004002d,
+	0x0004002e,
+	0x0004002f,
+	0x00040030,
+	0x00040031,
+	0x00040032,
+	0x00040033,
+	0x00040034,
+	0x00040035,
+	0x00040036,
+	0x00040037,
+	0x00040038,
+	0x00040039,
+	0x0004003a,
+	0x0004003b,
+	0x0004003c,
+	0x0004003d,
+	0x0004003e,
+	0x0004003f,
+	0x00040040,
+	0x00040041,
+	0x00040042,
+	0x00040043,
+	0x00040044,
+	0x00040045,
+	0x00040046,
+	0x00040047,
+	0x00040048,
+	0x00040049,
+	0x0004004a,
+	0x0004004b,
+	0x0004004c,
+	0x0004004d,
+	0x0004004e,
+	0x0004004f,
+	0x00040050,
+	0x00040051,
+	0x00040052,
+	0x00040053,
+	0x00040054,
+	0x00040055,
+	0x00040056,
+	0x00040057,
+	0x00040058,
+	0x00040059,
+	0x0004005a,
+	0x0004005b,
+	0x0004005c,
+	0x0004005d,
+	0x0004005e,
+	0x0004005f,
+	0x00040060,
+	0x00040061,
+	0x00040062,
+	0x00040063,
+	0x00040064,
+	0x00040065,
+	0x00040066,
+	0x00040067,
+	0x00040068,
+	0x00040069,
+	0x0004006a,
+	0x0004006b,
+	0x0004006c,
+	0x0004006d,
+	0x0004006e,
+	0x0004006f,
+	0x00040070,
+	0x00040071,
+	0x00040072,
+	0x00040073,
+	0x00040074,
+	0x00040075,
+	0x00040076,
+	0x00040077,
+	0x00040078,
+	0x00040079,
+	0x0004007a,
+	0x0004007b,
+	0x0004007c,
+	0x0004007d,
+	0x0004007e,
+	0x0004007f,
+	0x00040080,
+	0x00040081,
+	0x00040082,
+	0x00040083,
+	0x00040084,
+	0x00040085,
+	0x00040086,
+	0x00040087,
+	0x00040088,
+	0x00040089,
+	0x0004008a,
+	0x0004008b,
+	0x0004008c,
+	0x0004008d,
+	0x0004008e,
+	0x0004008f,
+	0x00040090,
+	0x00040091,
+	0x00040092,
+	0x00040093,
+	0x00040094,
+	0x00040095,
+	0x00040096,
+	0x00040097,
+	0x00040098,
+	0x00040099,
+	0x0004009a,
+	0x0004009b,
+	0x0004009c,
+	0x0004009d,
+	0x0004009e,
+	0x0004009f,
+	0x000400a0,
+	0x000400a1,
+	0x000400a2,
+	0x000400a3,
+	0x000400a4,
+	0x000400a5,
+	0x000400a6,
+	0x000400a7,
+	0x000400a8,
+	0x000400a9,
+	0x000400aa,
+	0x000400ab,
+	0x000400ac,
+	0x000400ad,
+	0x000400ae,
+	0x000400af,
+	0x000400b0,
+	0x000400b1,
+	0x000400b2,
+	0x000400b3,
+	0x000400b4,
+	0x000400b5,
+	0x000400b6,
+	0x000400b7,
+	0x000400b8,
+	0x000400b9,
+	0x000400ba,
+	0x000400bb,
+	0x000400bc,
+	0x000400bd,
+	0x000400be,
+	0x000400bf,
+	0x000400c0,
+	0x000400c1,
+	0x000400c2,
+	0x000400c3,
+	0x000400c4,
+	0x000400c5,
+	0x000400c6,
+	0x000400c7,
+	0x000400c8,
+	0x000400c9,
+	0x000400ca,
+	0x000400cb,
+	0x000400cc,
+	0x000400cd,
+	0x000400ce,
+	0x000400cf,
+	0x000400d0,
+	0x000400d1,
+	0x000400d2,
+	0x000400d3,
+	0x000400d4,
+	0x000400d5,
+	0x000400d6,
+	0x000400d7,
+	0x000400d8,
+	0x000400d9,
+	0x000400da,
+	0x000400db,
+	0x000400dc,
+	0x000400dd,
+	0x000400de,
+	0x000400df,
+	0x000400e0,
+	0x000400e1,
+	0x000400e2,
+	0x000400e3,
+	0x000400e4,
+	0x000400e5,
+	0x000400e6,
+	0x000400e7,
+	0x000400e8,
+	0x000400e9,
+	0x000400ea,
+	0x000400eb,
+	0x000400ec,
+	0x000400ed,
+	0x000400ee,
+	0x000400ef,
+	0x000400f0,
+	0x000400f1,
+	0x000400f2,
+	0x000400f3,
+	0x000400f4,
+	0x000400f5,
+	0x000400f6,
+	0x000400f7,
+	0x000400f8,
+	0x000400f9,
+	0x000400fa,
+	0x000400fb,
+	0x000400fc,
+	0x000400fd,
+	0x000400fe,
+	0x000400ff,
+	0x000100b2,
+	0x000100b4,
+	0x000101b2,
+	0x000101b4,
+	0x000102b2,
+	0x000102b4,
+	0x000103b2,
+	0x000103b4,
+	0x000104b2,
+	0x000104b4,
+	0x000105b2,
+	0x000105b4,
+	0x000106b2,
+	0x000106b4,
+	0x000107b2,
+	0x000107b4,
+	0x000108b2,
+	0x000108b4,
+	0x00010011,
+	0x00010012,
+	0x00010013,
+	0x00010018,
+	0x00010002,
+	0x000110b2,
+	0x000110b4,
+	0x000111b2,
+	0x000111b4,
+	0x000112b2,
+	0x000112b4,
+	0x000113b2,
+	0x000113b4,
+	0x000114b2,
+	0x000114b4,
+	0x000115b2,
+	0x000115b4,
+	0x000116b2,
+	0x000116b4,
+	0x000117b2,
+	0x000117b4,
+	0x000118b2,
+	0x000118b4,
+	0x00011011,
+	0x00011012,
+	0x00011013,
+	0x00011018,
+	0x00011002,
+	0x000120b2,
+	0x000120b4,
+	0x000121b2,
+	0x000121b4,
+	0x000122b2,
+	0x000122b4,
+	0x000123b2,
+	0x000123b4,
+	0x000124b2,
+	0x000124b4,
+	0x000125b2,
+	0x000125b4,
+	0x000126b2,
+	0x000126b4,
+	0x000127b2,
+	0x000127b4,
+	0x000128b2,
+	0x000128b4,
+	0x00012011,
+	0x00012012,
+	0x00012013,
+	0x00012018,
+	0x00012002,
+	0x000130b2,
+	0x000130b4,
+	0x000131b2,
+	0x000131b4,
+	0x000132b2,
+	0x000132b4,
+	0x000133b2,
+	0x000133b4,
+	0x000134b2,
+	0x000134b4,
+	0x000135b2,
+	0x000135b4,
+	0x000136b2,
+	0x000136b4,
+	0x000137b2,
+	0x000137b4,
+	0x000138b2,
+	0x000138b4,
+	0x00013011,
+	0x00013012,
+	0x00013013,
+	0x00013018,
+	0x00013002,
+	0x000140b2,
+	0x000140b4,
+	0x000141b2,
+	0x000141b4,
+	0x000142b2,
+	0x000142b4,
+	0x000143b2,
+	0x000143b4,
+	0x000144b2,
+	0x000144b4,
+	0x000145b2,
+	0x000145b4,
+	0x000146b2,
+	0x000146b4,
+	0x000147b2,
+	0x000147b4,
+	0x000148b2,
+	0x000148b4,
+	0x00014011,
+	0x00014012,
+	0x00014013,
+	0x00014018,
+	0x00014002,
+	0x000150b2,
+	0x000150b4,
+	0x000151b2,
+	0x000151b4,
+	0x000152b2,
+	0x000152b4,
+	0x000153b2,
+	0x000153b4,
+	0x000154b2,
+	0x000154b4,
+	0x000155b2,
+	0x000155b4,
+	0x000156b2,
+	0x000156b4,
+	0x000157b2,
+	0x000157b4,
+	0x000158b2,
+	0x000158b4,
+	0x00015011,
+	0x00015012,
+	0x00015013,
+	0x00015018,
+	0x00015002,
+	0x000160b2,
+	0x000160b4,
+	0x000161b2,
+	0x000161b4,
+	0x000162b2,
+	0x000162b4,
+	0x000163b2,
+	0x000163b4,
+	0x000164b2,
+	0x000164b4,
+	0x000165b2,
+	0x000165b4,
+	0x000166b2,
+	0x000166b4,
+	0x000167b2,
+	0x000167b4,
+	0x000168b2,
+	0x000168b4,
+	0x00016011,
+	0x00016012,
+	0x00016013,
+	0x00016018,
+	0x00016002,
+	0x000170b2,
+	0x000170b4,
+	0x000171b2,
+	0x000171b4,
+	0x000172b2,
+	0x000172b4,
+	0x000173b2,
+	0x000173b4,
+	0x000174b2,
+	0x000174b4,
+	0x000175b2,
+	0x000175b4,
+	0x000176b2,
+	0x000176b4,
+	0x000177b2,
+	0x000177b4,
+	0x000178b2,
+	0x000178b4,
+	0x00017011,
+	0x00017012,
+	0x00017013,
+	0x00017018,
+	0x00017002,
+	0x000180b2,
+	0x000180b4,
+	0x000181b2,
+	0x000181b4,
+	0x000182b2,
+	0x000182b4,
+	0x000183b2,
+	0x000183b4,
+	0x000184b2,
+	0x000184b4,
+	0x000185b2,
+	0x000185b4,
+	0x000186b2,
+	0x000186b4,
+	0x000187b2,
+	0x000187b4,
+	0x000188b2,
+	0x000188b4,
+	0x00018011,
+	0x00018012,
+	0x00018013,
+	0x00018018,
+	0x00018002,
+	0x000190b2,
+	0x000190b4,
+	0x000191b2,
+	0x000191b4,
+	0x000192b2,
+	0x000192b4,
+	0x000193b2,
+	0x000193b4,
+	0x000194b2,
+	0x000194b4,
+	0x000195b2,
+	0x000195b4,
+	0x000196b2,
+	0x000196b4,
+	0x000197b2,
+	0x000197b4,
+	0x000198b2,
+	0x000198b4,
+	0x00019011,
+	0x00019012,
+	0x00019013,
+	0x00019018,
+	0x00019002,
+	0x00020010,
+	0x00020011,
+	0x00120010,
+	0x00120011,
+	0x00220010,
+	0x00220011,
+	0x00320010,
+	0x00320011,
+	0x00020088,
+	0x000200f0,
+	0x000200f1,
+	0x000200f2,
+	0x000200f3,
+	0x000200f4,
+	0x000200f5,
+	0x000200f6,
+	0x000200f7,
+	0x0002000b,
+	0x0002000c,
+	0x0002000d,
+	0x0002000e,
+	0x0002002e,
+	0x00020024,
+	0x00020056,
+	0x00020008,
+	0x0002007c,
+	0x000200b2,
+	0x000200fa,
+	0x00020019,
+	0x0002002d,
+	0x000200b0,
+	0x000200b4,
+	0x000200c5,
+	0x00020062,
+	0x00020063,
+	0x00020064,
+	0x00020065,
+	0x00020066,
+	0x00020067,
+	0x00020068,
+	0x000200f0,
+	0x000200f1,
+	0x000200f2,
+	0x000200f3,
+	0x000200f4,
+	0x000200f5,
+	0x000200f6,
+	0x000200f7,
+	0x0012000b,
+	0x0012000c,
+	0x0012000d,
+	0x0012000e,
+	0x0012002e,
+	0x00120024,
+	0x00120056,
+	0x00120008,
+	0x0012007c,
+	0x001200b2,
+	0x001200fa,
+	0x00120019,
+	0x0012002d,
+	0x001200b0,
+	0x001200b4,
+	0x001200c5,
+	0x00120062,
+	0x00120063,
+	0x00120064,
+	0x00120065,
+	0x00120066,
+	0x00120067,
+	0x00120068,
+	0x000200f0,
+	0x000200f1,
+	0x000200f2,
+	0x000200f3,
+	0x000200f4,
+	0x000200f5,
+	0x000200f6,
+	0x000200f7,
+	0x0022000b,
+	0x0022000c,
+	0x0022000d,
+	0x0022000e,
+	0x0022002e,
+	0x00220024,
+	0x00220056,
+	0x00220008,
+	0x0022007c,
+	0x002200b2,
+	0x002200fa,
+	0x00220019,
+	0x0022002d,
+	0x002200b0,
+	0x002200b4,
+	0x002200c5,
+	0x00220062,
+	0x00220063,
+	0x00220064,
+	0x00220065,
+	0x00220066,
+	0x00220067,
+	0x00220068,
+	0x000200f0,
+	0x000200f1,
+	0x000200f2,
+	0x000200f3,
+	0x000200f4,
+	0x000200f5,
+	0x000200f6,
+	0x000200f7,
+	0x0032000b,
+	0x0032000c,
+	0x0032000d,
+	0x0032000e,
+	0x0032002e,
+	0x00320024,
+	0x00320056,
+	0x00320008,
+	0x0032007c,
+	0x003200b2,
+	0x003200fa,
+	0x00320019,
+	0x0032002d,
+	0x003200b0,
+	0x003200b4,
+	0x003200c5,
+	0x00320062,
+	0x00320063,
+	0x00320064,
+	0x00320065,
+	0x00320066,
+	0x00320067,
+	0x00320068,
+	0x0002003a,
+	0x00020018,
+	0x00020075,
+	0x00020050,
+	0x00020088,
+	0x0002005b,
+	0x0002005c,
+	0x00020025,
+	0x00020131,
+	0x00020130,
+	0x00020137,
+	0x00020138,
+	0x00020139,
+	0x0002013a,
+	0x00020001,
+	0x0002002c,
+	0x00020027,
+	0x00020021,
+	0x00020023,
+	0x00020071,
+	0x00020098,
+	0x000200ef,
+	0x00020060,
+	0x00020061,
+	0x00020120,
+	0x00020132,
+	0x00020135,
+	0x00020100,
+	0x00020110,
+	0x00020121,
+	0x00020133,
+	0x00020136,
+	0x00020101,
+	0x00020111,
+	0x00020122,
+	0x00020134,
+	0x00020102,
+	0x00020112,
+	0x00020123,
+	0x00020103,
+	0x00020113,
+	0x00020124,
+	0x00020104,
+	0x00020114,
+	0x00020125,
+	0x00020105,
+	0x00020115,
+	0x00020126,
+	0x00020106,
+	0x00020116,
+	0x00020127,
+	0x00020107,
+	0x00020117,
+	0x00020128,
+	0x00020108,
+	0x00020118,
+	0x00020129,
+	0x00020109,
+	0x00020119,
+	0x0002012a,
+	0x0002012b,
+	0x0002012c,
+	0x0002012d,
+	0x0002012e,
+	0x0002012f,
+	0x00000043,
+	0x00000055,
+	0x00001043,
+	0x00001055,
+	0x00002043,
+	0x00002055,
+	0x00003043,
+	0x00003055,
+	0x00004043,
+	0x00004055,
+	0x00005043,
+	0x00005055,
+	0x00006043,
+	0x00006055,
+	0x00007043,
+	0x00007055,
+	0x00008043,
+	0x00008055,
+	0x00009043,
+	0x00009055,
+	0x0000a043,
+	0x0000a055,
+	0x0000b043,
+	0x0000b055,
+	0x0002007d,
+	0x00020020,
+	0x0012007d,
+	0x00120020,
+	0x0022007d,
+	0x00220020,
+	0x0032007d,
+	0x00320020,
+	0x00020077,
+	0x00020072,
+	0x00020073,
+	0x00020005,
+	0x000200cb,
+	0x00000080,
+	0x00100080,
+	0x00200080,
+	0x00300080,
+	0x00001080,
+	0x00101080,
+	0x00201080,
+	0x00301080,
+	0x00002080,
+	0x00102080,
+	0x00202080,
+	0x00302080,
+	0x00003080,
+	0x00103080,
+	0x00203080,
+	0x00303080,
+	0x00004080,
+	0x00104080,
+	0x00204080,
+	0x00304080,
+	0x00005080,
+	0x00105080,
+	0x00205080,
+	0x00305080,
+	0x00006080,
+	0x00106080,
+	0x00206080,
+	0x00306080,
+	0x00007080,
+	0x00107080,
+	0x00207080,
+	0x00307080,
+	0x00008080,
+	0x00108080,
+	0x00208080,
+	0x00308080,
+	0x00009080,
+	0x00109080,
+	0x00209080,
+	0x00309080,
+	0x0000a080,
+	0x0010a080,
+	0x0020a080,
+	0x0030a080,
+	0x0000b080,
+	0x0010b080,
+	0x0020b080,
+	0x0030b080,
+	0x000100c0,
+	0x00010068,
+	0x00010040,
+	0x00010030,
+	0x00010062,
+	0x000101c0,
+	0x00010168,
+	0x00010140,
+	0x00010130,
+	0x00010162,
+	0x000102c0,
+	0x00010268,
+	0x00010240,
+	0x00010230,
+	0x00010262,
+	0x000103c0,
+	0x00010368,
+	0x00010340,
+	0x00010330,
+	0x00010362,
+	0x000104c0,
+	0x00010468,
+	0x00010440,
+	0x00010430,
+	0x00010462,
+	0x000105c0,
+	0x00010568,
+	0x00010540,
+	0x00010530,
+	0x00010562,
+	0x000106c0,
+	0x00010668,
+	0x00010640,
+	0x00010630,
+	0x00010662,
+	0x000107c0,
+	0x00010768,
+	0x00010740,
+	0x00010730,
+	0x00010762,
+	0x000108c0,
+	0x00010868,
+	0x00010840,
+	0x00010830,
+	0x00010862,
+	0x000100d0,
+	0x0001008c,
+	0x00010090,
+	0x00010080,
+	0x000101d0,
+	0x0001018c,
+	0x00010190,
+	0x00010180,
+	0x000100c1,
+	0x00010069,
+	0x000101c1,
+	0x00010169,
+	0x000102c1,
+	0x00010269,
+	0x000103c1,
+	0x00010369,
+	0x000104c1,
+	0x00010469,
+	0x000105c1,
+	0x00010569,
+	0x000106c1,
+	0x00010669,
+	0x000107c1,
+	0x00010769,
+	0x000108c1,
+	0x00010869,
+	0x000100d1,
+	0x0001008d,
+	0x00010091,
+	0x00010081,
+	0x000101d1,
+	0x0001018d,
+	0x00010191,
+	0x00010181,
+	0x00010020,
+	0x000100ae,
+	0x000100af,
+	0x00010048,
+	0x00010041,
+	0x0001004b,
+	0x0001004d,
+	0x00010049,
+	0x00010043,
+	0x0001005f,
+	0x00010141,
+	0x0001014b,
+	0x0001014d,
+	0x00010149,
+	0x00010143,
+	0x0001015f,
+	0x001100c0,
+	0x001101c0,
+	0x001102c0,
+	0x001103c0,
+	0x001104c0,
+	0x001105c0,
+	0x001106c0,
+	0x001107c0,
+	0x001108c0,
+	0x001100d0,
+	0x0011008c,
+	0x00110090,
+	0x00110080,
+	0x001101d0,
+	0x0011018c,
+	0x00110190,
+	0x00110180,
+	0x001100c1,
+	0x001101c1,
+	0x001102c1,
+	0x001103c1,
+	0x001104c1,
+	0x001105c1,
+	0x001106c1,
+	0x001107c1,
+	0x001108c1,
+	0x001100d1,
+	0x0011008d,
+	0x00110091,
+	0x00110081,
+	0x001101d1,
+	0x0011018d,
+	0x00110191,
+	0x00110181,
+	0x00110020,
+	0x001100ae,
+	0x001100af,
+	0x00110048,
+	0x00110041,
+	0x0011004b,
+	0x0011004d,
+	0x00110049,
+	0x00110043,
+	0x0011005f,
+	0x00110141,
+	0x0011014b,
+	0x0011014d,
+	0x00110149,
+	0x00110143,
+	0x0011015f,
+	0x002100c0,
+	0x002101c0,
+	0x002102c0,
+	0x002103c0,
+	0x002104c0,
+	0x002105c0,
+	0x002106c0,
+	0x002107c0,
+	0x002108c0,
+	0x002100d0,
+	0x0021008c,
+	0x00210090,
+	0x00210080,
+	0x002101d0,
+	0x0021018c,
+	0x00210190,
+	0x00210180,
+	0x002100c1,
+	0x002101c1,
+	0x002102c1,
+	0x002103c1,
+	0x002104c1,
+	0x002105c1,
+	0x002106c1,
+	0x002107c1,
+	0x002108c1,
+	0x002100d1,
+	0x0021008d,
+	0x00210091,
+	0x00210081,
+	0x002101d1,
+	0x0021018d,
+	0x00210191,
+	0x00210181,
+	0x00210020,
+	0x002100ae,
+	0x002100af,
+	0x00210048,
+	0x00210041,
+	0x0021004b,
+	0x0021004d,
+	0x00210049,
+	0x00210043,
+	0x0021005f,
+	0x00210141,
+	0x0021014b,
+	0x0021014d,
+	0x00210149,
+	0x00210143,
+	0x0021015f,
+	0x003100c0,
+	0x003101c0,
+	0x003102c0,
+	0x003103c0,
+	0x003104c0,
+	0x003105c0,
+	0x003106c0,
+	0x003107c0,
+	0x003108c0,
+	0x003100d0,
+	0x0031008c,
+	0x00310090,
+	0x00310080,
+	0x003101d0,
+	0x0031018c,
+	0x00310190,
+	0x00310180,
+	0x003100c1,
+	0x003101c1,
+	0x003102c1,
+	0x003103c1,
+	0x003104c1,
+	0x003105c1,
+	0x003106c1,
+	0x003107c1,
+	0x003108c1,
+	0x003100d1,
+	0x0031008d,
+	0x00310091,
+	0x00310081,
+	0x003101d1,
+	0x0031018d,
+	0x00310191,
+	0x00310181,
+	0x00310020,
+	0x003100ae,
+	0x003100af,
+	0x00310048,
+	0x00310041,
+	0x0031004b,
+	0x0031004d,
+	0x00310049,
+	0x00310043,
+	0x0031005f,
+	0x00310141,
+	0x0031014b,
+	0x0031014d,
+	0x00310149,
+	0x00310143,
+	0x0031015f,
+	0x000100aa,
+	0x00010001,
+	0x000100a0,
+	0x000100a1,
+	0x000100a2,
+	0x000100a3,
+	0x000100a4,
+	0x000100a5,
+	0x000100a6,
+	0x000100a7,
+	0x00010000,
+	0x0001004a,
+	0x000110c0,
+	0x00011068,
+	0x00011040,
+	0x00011030,
+	0x00011062,
+	0x000111c0,
+	0x00011168,
+	0x00011140,
+	0x00011130,
+	0x00011162,
+	0x000112c0,
+	0x00011268,
+	0x00011240,
+	0x00011230,
+	0x00011262,
+	0x000113c0,
+	0x00011368,
+	0x00011340,
+	0x00011330,
+	0x00011362,
+	0x000114c0,
+	0x00011468,
+	0x00011440,
+	0x00011430,
+	0x00011462,
+	0x000115c0,
+	0x00011568,
+	0x00011540,
+	0x00011530,
+	0x00011562,
+	0x000116c0,
+	0x00011668,
+	0x00011640,
+	0x00011630,
+	0x00011662,
+	0x000117c0,
+	0x00011768,
+	0x00011740,
+	0x00011730,
+	0x00011762,
+	0x000118c0,
+	0x00011868,
+	0x00011840,
+	0x00011830,
+	0x00011862,
+	0x000110d0,
+	0x0001108c,
+	0x00011090,
+	0x00011080,
+	0x000111d0,
+	0x0001118c,
+	0x00011190,
+	0x00011180,
+	0x000110c1,
+	0x00011069,
+	0x000111c1,
+	0x00011169,
+	0x000112c1,
+	0x00011269,
+	0x000113c1,
+	0x00011369,
+	0x000114c1,
+	0x00011469,
+	0x000115c1,
+	0x00011569,
+	0x000116c1,
+	0x00011669,
+	0x000117c1,
+	0x00011769,
+	0x000118c1,
+	0x00011869,
+	0x000110d1,
+	0x0001108d,
+	0x00011091,
+	0x00011081,
+	0x000111d1,
+	0x0001118d,
+	0x00011191,
+	0x00011181,
+	0x00011020,
+	0x000110ae,
+	0x000110af,
+	0x00011048,
+	0x00011041,
+	0x0001104b,
+	0x0001104d,
+	0x00011049,
+	0x00011043,
+	0x0001105f,
+	0x00011141,
+	0x0001114b,
+	0x0001114d,
+	0x00011149,
+	0x00011143,
+	0x0001115f,
+	0x001110c0,
+	0x001111c0,
+	0x001112c0,
+	0x001113c0,
+	0x001114c0,
+	0x001115c0,
+	0x001116c0,
+	0x001117c0,
+	0x001118c0,
+	0x001110d0,
+	0x0011108c,
+	0x00111090,
+	0x00111080,
+	0x001111d0,
+	0x0011118c,
+	0x00111190,
+	0x00111180,
+	0x001110c1,
+	0x001111c1,
+	0x001112c1,
+	0x001113c1,
+	0x001114c1,
+	0x001115c1,
+	0x001116c1,
+	0x001117c1,
+	0x001118c1,
+	0x001110d1,
+	0x0011108d,
+	0x00111091,
+	0x00111081,
+	0x001111d1,
+	0x0011118d,
+	0x00111191,
+	0x00111181,
+	0x00111020,
+	0x001110ae,
+	0x001110af,
+	0x00111048,
+	0x00111041,
+	0x0011104b,
+	0x0011104d,
+	0x00111049,
+	0x00111043,
+	0x0011105f,
+	0x00111141,
+	0x0011114b,
+	0x0011114d,
+	0x00111149,
+	0x00111143,
+	0x0011115f,
+	0x002110c0,
+	0x002111c0,
+	0x002112c0,
+	0x002113c0,
+	0x002114c0,
+	0x002115c0,
+	0x002116c0,
+	0x002117c0,
+	0x002118c0,
+	0x002110d0,
+	0x0021108c,
+	0x00211090,
+	0x00211080,
+	0x002111d0,
+	0x0021118c,
+	0x00211190,
+	0x00211180,
+	0x002110c1,
+	0x002111c1,
+	0x002112c1,
+	0x002113c1,
+	0x002114c1,
+	0x002115c1,
+	0x002116c1,
+	0x002117c1,
+	0x002118c1,
+	0x002110d1,
+	0x0021108d,
+	0x00211091,
+	0x00211081,
+	0x002111d1,
+	0x0021118d,
+	0x00211191,
+	0x00211181,
+	0x00211020,
+	0x002110ae,
+	0x002110af,
+	0x00211048,
+	0x00211041,
+	0x0021104b,
+	0x0021104d,
+	0x00211049,
+	0x00211043,
+	0x0021105f,
+	0x00211141,
+	0x0021114b,
+	0x0021114d,
+	0x00211149,
+	0x00211143,
+	0x0021115f,
+	0x003110c0,
+	0x003111c0,
+	0x003112c0,
+	0x003113c0,
+	0x003114c0,
+	0x003115c0,
+	0x003116c0,
+	0x003117c0,
+	0x003118c0,
+	0x003110d0,
+	0x0031108c,
+	0x00311090,
+	0x00311080,
+	0x003111d0,
+	0x0031118c,
+	0x00311190,
+	0x00311180,
+	0x003110c1,
+	0x003111c1,
+	0x003112c1,
+	0x003113c1,
+	0x003114c1,
+	0x003115c1,
+	0x003116c1,
+	0x003117c1,
+	0x003118c1,
+	0x003110d1,
+	0x0031108d,
+	0x00311091,
+	0x00311081,
+	0x003111d1,
+	0x0031118d,
+	0x00311191,
+	0x00311181,
+	0x00311020,
+	0x003110ae,
+	0x003110af,
+	0x00311048,
+	0x00311041,
+	0x0031104b,
+	0x0031104d,
+	0x00311049,
+	0x00311043,
+	0x0031105f,
+	0x00311141,
+	0x0031114b,
+	0x0031114d,
+	0x00311149,
+	0x00311143,
+	0x0031115f,
+	0x000110aa,
+	0x00011001,
+	0x000110a0,
+	0x000110a1,
+	0x000110a2,
+	0x000110a3,
+	0x000110a4,
+	0x000110a5,
+	0x000110a6,
+	0x000110a7,
+	0x00011000,
+	0x0001104a,
+};
+
+static const u32 ddrphy_fsp_cfg[DDRPHY_QB_FSP_SIZE] = {
+	0x00054026, /* TrainedVREFDQ_A0,   Byte offset 0x4d,      CSR Addr 0x54026 */
+	0x00054027, /* TrainedVREFDQ_A1,   Byte offset 0x4e,      CSR Addr 0x54027 */
+	0x00054040, /* TrainedVREFDQ_B0&1, Byte offset 0x80&0x81, CSR Addr 0x54040 */
+};
+
+struct ddrphy_qb_state qb_state;
+
+int ddrphy_qb_save(void)
+{
+	int i;
+
+	/* enable the ddrphy apb */
+	dwc_ddrphy_apb_wr(0xd0000, 0x0);
+
+	for (i = 0; i < DDRPHY_QB_CSR_SIZE; i++)
+		qb_state.csr[i] = dwc_ddrphy_apb_rd(ddrphy_csr_cfg[i]);
+
+	/* disable the ddrphy apb */
+	dwc_ddrphy_apb_wr(0xd0000, 0x1);
+
+	qb_state.crc = crc32(0, (void *)&qb_state.flags, DDRPHY_QB_STATE_SIZE);
+	return 0;
+}
+
+void ddrphy_init_read_msg_block(enum fw_type type)
+{
+	int i;
+
+	if (type != FW_2D_IMAGE)
+		return;
+
+	qb_state.flags |= DDRPHY_QB_FLAG_2D;
+	for (i = 0; i < DDRPHY_QB_FSP_SIZE; i++)
+		qb_state.fsp[i] = dwc_ddrphy_apb_rd(ddrphy_fsp_cfg[i]);
+}
diff --git a/drivers/ddr/imx/phy/ddrphy_utils.c b/drivers/ddr/imx/phy/ddrphy_utils.c
index 8e350de8315e40372f583c7a84c3ee5ed8b827d9..33275656469ecc24853f228b760229572e73aa48 100644
--- a/drivers/ddr/imx/phy/ddrphy_utils.c
+++ b/drivers/ddr/imx/phy/ddrphy_utils.c
@@ -184,6 +184,6 @@ void ddrphy_init_set_dfi_clk(unsigned int drate)
 	}
 }
 
-void ddrphy_init_read_msg_block(enum fw_type type)
+__weak void ddrphy_init_read_msg_block(enum fw_type type)
 {
 }

-- 
2.35.3



More information about the U-Boot mailing list