[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