[PATCH 37/37] arm: imx: add i.MX8ULP EVK support
Peng Fan (OSS)
peng.fan at oss.nxp.com
Mon Apr 12 14:13:06 CEST 2021
From: Peng Fan <peng.fan at nxp.com>
Add i.MX8ULP EVK basic support, support SD/I2C/ENET/LPUART
Note: upower API currently not included.
Signed-off-by: Peng Fan <peng.fan at nxp.com>
---
arch/arm/dts/imx8ulp-emulator-u-boot.dtsi | 32 +
arch/arm/dts/imx8ulp-emulator.dts | 93 +
arch/arm/dts/imx8ulp-evk-u-boot.dtsi | 32 +
arch/arm/dts/imx8ulp-evk.dts | 204 +++
arch/arm/mach-imx/imx8ulp/Kconfig | 7 +
board/freescale/imx8ulp_evk/Kconfig | 14 +
board/freescale/imx8ulp_evk/MAINTAINERS | 6 +
board/freescale/imx8ulp_evk/Makefile | 7 +
board/freescale/imx8ulp_evk/ddr_init.c | 207 +++
board/freescale/imx8ulp_evk/imx8ulp_evk.c | 67 +
board/freescale/imx8ulp_evk/lpddr4_timing.c | 1696 +++++++++++++++++++
board/freescale/imx8ulp_evk/spl.c | 146 ++
configs/imx8ulp_evk_defconfig | 103 ++
include/configs/imx8ulp_evk.h | 108 ++
14 files changed, 2722 insertions(+)
create mode 100644 arch/arm/dts/imx8ulp-emulator-u-boot.dtsi
create mode 100644 arch/arm/dts/imx8ulp-emulator.dts
create mode 100644 arch/arm/dts/imx8ulp-evk-u-boot.dtsi
create mode 100644 arch/arm/dts/imx8ulp-evk.dts
create mode 100644 board/freescale/imx8ulp_evk/Kconfig
create mode 100644 board/freescale/imx8ulp_evk/MAINTAINERS
create mode 100644 board/freescale/imx8ulp_evk/Makefile
create mode 100644 board/freescale/imx8ulp_evk/ddr_init.c
create mode 100644 board/freescale/imx8ulp_evk/imx8ulp_evk.c
create mode 100644 board/freescale/imx8ulp_evk/lpddr4_timing.c
create mode 100644 board/freescale/imx8ulp_evk/spl.c
create mode 100644 configs/imx8ulp_evk_defconfig
create mode 100644 include/configs/imx8ulp_evk.h
diff --git a/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi b/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi
new file mode 100644
index 0000000000..21161520d8
--- /dev/null
+++ b/arch/arm/dts/imx8ulp-emulator-u-boot.dtsi
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2020 NXP
+ */
+
+&{/soc at 0} {
+ u-boot,dm-spl;
+};
+
+&per_bridge3 {
+ u-boot,dm-spl;
+};
+
+&per_bridge4 {
+ u-boot,dm-spl;
+};
+
+&iomuxc1 {
+ u-boot,dm-spl;
+};
+
+&pinctrl_lpuart4 {
+ u-boot,dm-spl;
+};
+
+&s400_mu {
+ u-boot,dm-spl;
+};
+
+&lpuart4 {
+ u-boot,dm-spl;
+};
diff --git a/arch/arm/dts/imx8ulp-emulator.dts b/arch/arm/dts/imx8ulp-emulator.dts
new file mode 100644
index 0000000000..924078b361
--- /dev/null
+++ b/arch/arm/dts/imx8ulp-emulator.dts
@@ -0,0 +1,93 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2020 NXP
+ */
+
+/dts-v1/;
+
+#include "imx8ulp.dtsi"
+
+/ {
+ model = "FSL i.MX8ULP Emulator";
+ compatible = "fsl,imx8ulp-emulator", "fsl,imx8ulp";
+
+ chosen {
+ stdout-path = &lpuart4;
+ };
+};
+
+&lpuart4 {
+ /* console */
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_lpuart4>;
+ pinctrl-1 = <&pinctrl_lpuart4>;
+ status = "okay";
+};
+
+&iomuxc1 {
+ pinctrl_lpuart4: lpuart4grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTE2__LPUART4_TX 0x3
+ MX8ULP_PAD_PTE3__LPUART4_RX 0x3
+ >;
+ bias-pull-up;
+ };
+
+ pinctrl_usdhc0: usdhc0grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTD0__SDHC0_RESET_B 0x43
+ MX8ULP_PAD_PTD1__SDHC0_CMD 0x43
+ MX8ULP_PAD_PTD2__SDHC0_CLK 0x10042
+ MX8ULP_PAD_PTD10__SDHC0_D0 0x43
+ MX8ULP_PAD_PTD9__SDHC0_D1 0x43
+ MX8ULP_PAD_PTD8__SDHC0_D2 0x43
+ MX8ULP_PAD_PTD7__SDHC0_D3 0x43
+ MX8ULP_PAD_PTD11__SDHC0_DQS 0x10042
+ >;
+ };
+
+ pinctrl_usdhc1_ptf: usdhc1ptfgrp {
+ fsl,pins = <
+ MX8ULP_PAD_PTF11__SDHC1_RESET_B 0x43
+ MX8ULP_PAD_PTF1__SDHC1_D0 0x43
+ MX8ULP_PAD_PTF0__SDHC1_D1 0x43
+ MX8ULP_PAD_PTF2__SDHC1_CLK 0x10042
+ MX8ULP_PAD_PTF3__SDHC1_CMD 0x43
+ MX8ULP_PAD_PTF4__SDHC1_D3 0x42
+ MX8ULP_PAD_PTF5__SDHC1_D2 0x42
+ >;
+ };
+};
+
+&usdhc0 {
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_usdhc0>;
+ pinctrl-1 = <&pinctrl_usdhc0>;
+ bus-width = <1>;
+ broken-cd;
+ non-removable;
+ status = "okay";
+};
+
+&usdhc1 {
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_usdhc1_ptf>;
+ pinctrl-1 = <&pinctrl_usdhc1_ptf>;
+ bus-width = <1>;
+ broken-cd;
+ non-removable;
+ status = "okay";
+};
+
+&flexspi2 {
+ status = "okay";
+
+ flash0: mt35xu512aba at 0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ spi-max-frequency = <29000000>;
+ spi-nor,ddr-quad-read-dummy = <8>;
+ };
+};
diff --git a/arch/arm/dts/imx8ulp-evk-u-boot.dtsi b/arch/arm/dts/imx8ulp-evk-u-boot.dtsi
new file mode 100644
index 0000000000..a3cfb1c853
--- /dev/null
+++ b/arch/arm/dts/imx8ulp-evk-u-boot.dtsi
@@ -0,0 +1,32 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2021 NXP
+ */
+
+&{/soc at 0} {
+ u-boot,dm-spl;
+};
+
+&per_bridge3 {
+ u-boot,dm-spl;
+};
+
+&per_bridge4 {
+ u-boot,dm-spl;
+};
+
+&iomuxc1 {
+ u-boot,dm-spl;
+};
+
+&pinctrl_lpuart5 {
+ u-boot,dm-spl;
+};
+
+&s400_mu {
+ u-boot,dm-spl;
+};
+
+&lpuart5 {
+ u-boot,dm-spl;
+};
diff --git a/arch/arm/dts/imx8ulp-evk.dts b/arch/arm/dts/imx8ulp-evk.dts
new file mode 100644
index 0000000000..1cdd855ccd
--- /dev/null
+++ b/arch/arm/dts/imx8ulp-evk.dts
@@ -0,0 +1,204 @@
+// SPDX-License-Identifier: (GPL-2.0 OR MIT)
+/*
+ * Copyright 2021 NXP
+ */
+
+/dts-v1/;
+
+#include "imx8ulp.dtsi"
+
+/ {
+ model = "FSL i.MX8ULP EVK";
+ compatible = "fsl,imx8ulp-evk", "fsl,imx8ulp";
+
+ chosen {
+ stdout-path = &lpuart5;
+ };
+
+ reg_usdhc2_vmmc: regulator-usdhc2 {
+ compatible = "regulator-fixed";
+ regulator-name = "VSD_3V3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pcal6408 0 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+ startup-delay-us = <100>;
+ off-on-delay-us = <12000>;
+ };
+};
+
+&lpuart5 {
+ /* console */
+ pinctrl-names = "default", "sleep";
+ pinctrl-0 = <&pinctrl_lpuart5>;
+ pinctrl-1 = <&pinctrl_lpuart5>;
+ status = "okay";
+};
+
+&iomuxc1 {
+ pinctrl_lpuart5: lpuart5grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTF14__LPUART5_TX 0x40
+ MX8ULP_PAD_PTF15__LPUART5_RX 0x40
+ >;
+ };
+
+ pinctrl_lpi2c7: lpi2c7grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTE12__LPI2C7_SCL 0x27
+ MX8ULP_PAD_PTE13__LPI2C7_SDA 0x27
+ >;
+ };
+
+ pinctrl_usdhc0: usdhc0grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTD0__SDHC0_RESET_B 0x43
+ MX8ULP_PAD_PTD1__SDHC0_CMD 0x43
+ MX8ULP_PAD_PTD2__SDHC0_CLK 0x10042
+ MX8ULP_PAD_PTD10__SDHC0_D0 0x43
+ MX8ULP_PAD_PTD9__SDHC0_D1 0x43
+ MX8ULP_PAD_PTD8__SDHC0_D2 0x43
+ MX8ULP_PAD_PTD7__SDHC0_D3 0x43
+ MX8ULP_PAD_PTD6__SDHC0_D4 0x43
+ MX8ULP_PAD_PTD5__SDHC0_D5 0x43
+ MX8ULP_PAD_PTD4__SDHC0_D6 0x43
+ MX8ULP_PAD_PTD3__SDHC0_D7 0x43
+ MX8ULP_PAD_PTD11__SDHC0_DQS 0x10042
+ >;
+ };
+
+ pinctrl_usdhc2: usdhc2grp {
+ fsl,pins = <
+ MX8ULP_PAD_PTE1__SDHC2_D0 0x43
+ MX8ULP_PAD_PTE0__SDHC2_D1 0x43
+ MX8ULP_PAD_PTE5__SDHC2_D2 0x42
+ MX8ULP_PAD_PTE4__SDHC2_D3 0x42
+ MX8ULP_PAD_PTE2__SDHC2_CLK 0x10042
+ MX8ULP_PAD_PTE3__SDHC2_CMD 0x43
+ >;
+ };
+
+ pinctrl_fec: fecgrp {
+ fsl,pins = <
+ MX8ULP_PAD_PTE14__ENET0_MDIO 0x43
+ MX8ULP_PAD_PTE15__ENET0_MDC 0x43
+ MX8ULP_PAD_PTE18__ENET0_CRS_DV 0x43
+ MX8ULP_PAD_PTE17__ENET0_RXER 0x43
+ MX8ULP_PAD_PTF1__ENET0_RXD0 0x43
+ MX8ULP_PAD_PTE20__ENET0_RXD1 0x43
+ MX8ULP_PAD_PTE16__ENET0_TXEN 0x43
+ MX8ULP_PAD_PTE23__ENET0_TXD0 0x43
+ MX8ULP_PAD_PTE22__ENET0_TXD1 0x43
+ MX8ULP_PAD_PTE19__ENET0_REFCLK 0x10043
+ MX8ULP_PAD_PTF10__ENET0_1588_CLKIN 0x10043
+ >;
+ };
+
+ pinctrl_usbotg0_id: otg0idgrp {
+ fsl,pins = <
+ MX8ULP_PAD_PTF2__USB0_ID 0x10003
+ >;
+ };
+
+ pinctrl_usbotg1_id: otg1idgrp {
+ fsl,pins = <
+ MX8ULP_PAD_PTD23__USB1_ID 0x10003
+ >;
+ };
+};
+
+&usdhc0 {
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
+ pinctrl-0 = <&pinctrl_usdhc0>;
+ pinctrl-1 = <&pinctrl_usdhc0>;
+ pinctrl-2 = <&pinctrl_usdhc0>;
+ bus-width = <8>;
+ non-removable;
+ status = "okay";
+};
+
+&usdhc2 {
+ pinctrl-names = "default", "state_100mhz", "state_200mhz";
+ pinctrl-0 = <&pinctrl_usdhc2>;
+ pinctrl-1 = <&pinctrl_usdhc2>;
+ pinctrl-2 = <&pinctrl_usdhc2>;
+ bus-width = <4>;
+ broken-cd;
+ vmmc-supply = <®_usdhc2_vmmc>;
+ status = "okay";
+};
+
+&lpi2c7 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_lpi2c7>;
+ status = "okay";
+
+ pcal6408: gpio at 21 {
+ compatible = "ti,tca6408";
+ reg = <0x21>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ };
+};
+
+&flexspi2 {
+ status = "okay";
+
+ flash0: mt35xu512aba at 0 {
+ reg = <0>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "jedec,spi-nor";
+ spi-max-frequency = <29000000>;
+ spi-nor,ddr-quad-read-dummy = <8>;
+ };
+};
+
+&fec {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_fec>;
+ phy-mode = "rmii";
+ phy-handle = <ðphy>;
+ status = "okay";
+
+ phy-reset-gpios = <&pcal6408 4 GPIO_ACTIVE_LOW>;
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ethphy: ethernet-phy at 1 {
+ reg = <1>;
+ micrel,led-mode = <1>;
+ };
+ };
+};
+
+&usbotg0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbotg0_id>;
+ srp-disable;
+ hnp-disable;
+ adp-disable;
+ status = "okay";
+};
+
+&usbphy0 {
+ fsl,tx-d-cal = <88>;
+};
+
+&usbotg1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_usbotg1_id>;
+ srp-disable;
+ hnp-disable;
+ adp-disable;
+ status = "okay";
+};
+
+&usbphy1 {
+ fsl,tx-d-cal = <88>;
+};
diff --git a/arch/arm/mach-imx/imx8ulp/Kconfig b/arch/arm/mach-imx/imx8ulp/Kconfig
index 167dbb3fb1..963fc93d34 100644
--- a/arch/arm/mach-imx/imx8ulp/Kconfig
+++ b/arch/arm/mach-imx/imx8ulp/Kconfig
@@ -11,6 +11,13 @@ choice
prompt "i.MX8ULP board select"
optional
+config TARGET_IMX8ULP_EVK
+ bool "imx8ulp_evk"
+ select IMX8ULP
+ select SUPPORT_SPL
+
endchoice
+source "board/freescale/imx8ulp_evk/Kconfig"
+
endif
diff --git a/board/freescale/imx8ulp_evk/Kconfig b/board/freescale/imx8ulp_evk/Kconfig
new file mode 100644
index 0000000000..1e461ee1da
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/Kconfig
@@ -0,0 +1,14 @@
+if TARGET_IMX8ULP_EVK
+
+config SYS_BOARD
+ default "imx8ulp_evk"
+
+config SYS_VENDOR
+ default "freescale"
+
+config SYS_CONFIG_NAME
+ default "imx8ulp_evk"
+
+source "board/freescale/common/Kconfig"
+
+endif
diff --git a/board/freescale/imx8ulp_evk/MAINTAINERS b/board/freescale/imx8ulp_evk/MAINTAINERS
new file mode 100644
index 0000000000..267b7b0caa
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/MAINTAINERS
@@ -0,0 +1,6 @@
+i.MX8ULP EVK BOARD
+M: Peng Fan <peng.fan at nxp.com>
+S: Maintained
+F: board/freescale/imx8ulp_evk/
+F: include/configs/imx8ulp_evk.h
+F: configs/imx8ulp_evk_defconfig
diff --git a/board/freescale/imx8ulp_evk/Makefile b/board/freescale/imx8ulp_evk/Makefile
new file mode 100644
index 0000000000..b2e72b4e85
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/Makefile
@@ -0,0 +1,7 @@
+# SPDX-License-Identifier: GPL-2.0+
+
+obj-y += imx8ulp_evk.o
+
+ifdef CONFIG_SPL_BUILD
+obj-y += spl.o ddr_init.o lpddr4_timing.o
+endif
diff --git a/board/freescale/imx8ulp_evk/ddr_init.c b/board/freescale/imx8ulp_evk/ddr_init.c
new file mode 100644
index 0000000000..f4238d29b3
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/ddr_init.c
@@ -0,0 +1,207 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2021 NXP
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/ddr.h>
+#include <asm/arch/imx-regs.h>
+
+#define DENALI_CTL_00 (DDR_CTL_BASE_ADDR)
+#define CTL_START 0x1
+
+#define DENALI_CTL_03 (DDR_CTL_BASE_ADDR + 4 * 3)
+#define DENALI_CTL_197 (DDR_CTL_BASE_ADDR + 4 * 197)
+#define DENALI_CTL_250 (DDR_CTL_BASE_ADDR + 4 * 250)
+#define DENALI_CTL_251 (DDR_CTL_BASE_ADDR + 4 * 251)
+#define DENALI_CTL_266 (DDR_CTL_BASE_ADDR + 4 * 266)
+#define DFI_INIT_COMPLETE 0x2
+
+#define DENALI_CTL_614 (DDR_CTL_BASE_ADDR + 4 * 614)
+#define DENALI_CTL_615 (DDR_CTL_BASE_ADDR + 4 * 615)
+
+#define DENALI_PI_00 (DDR_PI_BASE_ADDR)
+#define PI_START 0x1
+
+#define DENALI_PI_04 (DDR_PI_BASE_ADDR + 4 * 4)
+#define DENALI_PI_11 (DDR_PI_BASE_ADDR + 4 * 11)
+#define DENALI_PI_12 (DDR_PI_BASE_ADDR + 4 * 12)
+#define DENALI_CTL_23 (DDR_CTL_BASE_ADDR + 4 * 23)
+#define DENALI_CTL_25 (DDR_CTL_BASE_ADDR + 4 * 25)
+
+#define DENALI_PHY_1624 (DDR_PHY_BASE_ADDR + 4 * 1624)
+#define DENALI_PHY_1537 (DDR_PHY_BASE_ADDR + 4 * 1537)
+#define PHY_FREQ_SEL_MULTICAST_EN(X) ((X) << 8)
+#define PHY_FREQ_SEL_INDEX(X) ((X) << 16)
+
+#define DENALI_PHY_1547 (DDR_PHY_BASE_ADDR + 4 * 1547)
+#define DENALI_PHY_1555 (DDR_PHY_BASE_ADDR + 4 * 1555)
+#define DENALI_PHY_1564 (DDR_PHY_BASE_ADDR + 4 * 1564)
+#define DENALI_PHY_1565 (DDR_PHY_BASE_ADDR + 4 * 1565)
+
+int ddr_calibration(unsigned int fsp_table[3])
+{
+ u32 reg_val;
+ u32 int_status_init, phy_freq_req, phy_freq_type;
+ u32 lock_0, lock_1, lock_2;
+ u32 freq_chg_pt, freq_chg_cnt;
+
+ reg_val = readl(DENALI_CTL_250);
+ if (((reg_val >> 16) & 0x3) == 1)
+ freq_chg_cnt = 2;
+ else
+ freq_chg_cnt = 3;
+
+ reg_val = readl(DENALI_PI_12);
+ if (reg_val == 0x3) {
+ freq_chg_pt = 1;
+ } else if (reg_val == 0x7) {
+ freq_chg_pt = 2;
+ } else {
+ printf("frequency map(0x%x) is wrong, please check!\r\n", reg_val);
+ return -1;
+ }
+
+ debug("%s\n", __func__);
+
+ /* Assert PI_START parameter and then assert START parameter in Controller. */
+ reg_val = readl(DENALI_PI_00) | PI_START;
+ writel(reg_val, DENALI_PI_00);
+
+ reg_val = readl(DENALI_CTL_00) | CTL_START;
+ writel(reg_val, DENALI_CTL_00);
+
+ /* Poll for init_done_bit in Controller interrupt status register (INT_STATUS_INIT) */
+ do {
+ if (!freq_chg_cnt) {
+ int_status_init = (readl(DENALI_CTL_266) >> 8) & 0xff;
+ /* DDR subsystem is ready for traffic. */
+ if (int_status_init & DFI_INIT_COMPLETE) {
+ printf("complete\n");
+ break;
+ }
+ }
+
+ /*
+ * During leveling, PHY will request for freq change and SoC clock
+ * logic should provide requested frequency, Polling SIM LPDDR_CTRL2
+ * Bit phy_freq_chg_req until be 1'b1
+ */
+ reg_val = readl(AVD_SIM_LPDDR_CTRL2);
+ phy_freq_req = (reg_val >> 7) & 0x1;
+
+ if (phy_freq_req) {
+ phy_freq_type = reg_val & 0x1F;
+ if (!phy_freq_type) {
+ printf("Poll for freq_chg_req on SIM register and change to F0 frequency.\n");
+ set_ddr_clk(fsp_table[phy_freq_type] >> 1);
+
+ /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */
+ reg_val = readl(AVD_SIM_LPDDR_CTRL2);
+ writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2);
+ } else if (phy_freq_type == 0x01) {
+ printf("Poll for freq_chg_req on SIM register and change to F1 frequency.\n");
+ set_ddr_clk(fsp_table[phy_freq_type] >> 1);
+
+ /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */
+ reg_val = readl(AVD_SIM_LPDDR_CTRL2);
+ writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2);
+ if (freq_chg_pt == 1)
+ freq_chg_cnt--;
+ } else if (phy_freq_type == 0x02) {
+ printf("Poll for freq_chg_req on SIM register and change to F2 frequency.\n");
+ set_ddr_clk(fsp_table[phy_freq_type] >> 1);
+
+ /* Write 1'b1 at LPDDR_CTRL2 bit phy_freq_cfg_ack */
+ reg_val = readl(AVD_SIM_LPDDR_CTRL2);
+ writel(reg_val | (0x1 << 6), AVD_SIM_LPDDR_CTRL2);
+ if (freq_chg_pt == 2)
+ freq_chg_cnt--;
+ }
+ reg_val = readl(AVD_SIM_LPDDR_CTRL2);
+ }
+ } while (1);
+
+ /* Check PLL lock status */
+ lock_0 = readl(DENALI_PHY_1564) & 0xffff;
+ lock_1 = (readl(DENALI_PHY_1564) >> 16) & 0xffff;
+ lock_2 = readl(DENALI_PHY_1565) & 0xffff;
+
+ if ((lock_0 & 0x3) != 0x3 || (lock_1 & 0x3) != 0x3 || (lock_2 & 0x3) != 0x3) {
+ printf("De-Skew PLL failed to lock\n");
+ printf("lock_0=0x%x, lock_1=0x%x, lock_2=0x%x\n", lock_0, lock_1, lock_2);
+ return -1;
+ }
+
+ printf("De-Skew PLL is locked and ready\n");
+ return 0;
+}
+
+int ddr_init(struct dram_timing_info2 *dram_timing)
+{
+ int i;
+
+ debug("%s\n", __func__);
+
+ set_ddr_clk(dram_timing->fsp_table[0] >> 1); /* Set to boot freq */
+
+ /* Initialize CTL registers */
+ for (i = 0; i < dram_timing->ctl_cfg_num; i++)
+ writel(dram_timing->ctl_cfg[i].val, (ulong)dram_timing->ctl_cfg[i].reg);
+
+ /* Initialize PI registers */
+ for (i = 0; i < dram_timing->pi_cfg_num; i++)
+ writel(dram_timing->pi_cfg[i].val, (ulong)dram_timing->pi_cfg[i].reg);
+
+ /* Write PHY regiters for all 3 frequency points (48Mhz/384Mhz/528Mhz): f1_index=0 */
+ writel(PHY_FREQ_SEL_MULTICAST_EN(1) | PHY_FREQ_SEL_INDEX(0), DENALI_PHY_1537);
+ for (i = 0; i < dram_timing->phy_f1_cfg_num; i++)
+ writel(dram_timing->phy_f1_cfg[i].val, (ulong)dram_timing->phy_f1_cfg[i].reg);
+
+ /* Write PHY regiters for freqency point 2 (528Mhz): f2_index=1 */
+ writel(PHY_FREQ_SEL_MULTICAST_EN(0) | PHY_FREQ_SEL_INDEX(1), DENALI_PHY_1537);
+ for (i = 0; i < dram_timing->phy_f2_cfg_num; i++)
+ writel(dram_timing->phy_f2_cfg[i].val, (ulong)dram_timing->phy_f2_cfg[i].reg);
+
+ /* Re-enable MULTICAST mode */
+ writel(PHY_FREQ_SEL_MULTICAST_EN(1) | PHY_FREQ_SEL_INDEX(0), DENALI_PHY_1537);
+
+ return ddr_calibration(dram_timing->fsp_table);
+}
+
+void enable_bypass_mode(void)
+{
+ u32 reg_val;
+
+ /* PI_INIT_LVL_EN=0x0 (DENALI_PI_04) */
+ reg_val = readl(DENALI_PI_04) & ~0x1;
+ writel(reg_val, DENALI_PI_04);
+
+ /* PI_FREQ_MAP=0x1 (DENALI_PI_12) */
+ writel(0x1, DENALI_PI_12);
+
+ /* PI_INIT_WORK_FREQ=0x0 (DENALI_PI_11) */
+ reg_val = readl(DENALI_PI_11) & ~(0x1f << 8);
+ writel(reg_val, DENALI_PI_11);
+
+ /* DFIBUS_FREQ_INIT=0x0 (DENALI_CTL_23) */
+ reg_val = readl(DENALI_CTL_23) & ~(0x3 << 24);
+ writel(reg_val, DENALI_CTL_23);
+
+ /* PHY_LP4_BOOT_DISABLE=0x0 (DENALI_PHY_1547) */
+ reg_val = readl(DENALI_PHY_1547) & ~(0x1 << 8);
+ writel(reg_val, DENALI_PHY_1547);
+
+ /* PHY_PLL_BYPASS=0x1 (DENALI_PHY_1624) */
+ reg_val = readl(DENALI_PHY_1624) | 0x1;
+ writel(reg_val, DENALI_PHY_1624);
+
+ /* PHY_LP4_BOOT_PLL_BYPASS to 0x1 (DENALI_PHY_1555) */
+ reg_val = readl(DENALI_PHY_1555) | 0x1;
+ writel(reg_val, DENALI_PHY_1555);
+
+ /* FREQ_CHANGE_TYPE_F0 = 0x0/FREQ_CHANGE_TYPE_F1 = 0x1/FREQ_CHANGE_TYPE_F2 = 0x2 */
+ reg_val = 0x020100;
+ writel(reg_val, DENALI_CTL_25);
+}
diff --git a/board/freescale/imx8ulp_evk/imx8ulp_evk.c b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
new file mode 100644
index 0000000000..3ff4d43c99
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/imx8ulp_evk.c
@@ -0,0 +1,67 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2020 NXP
+ */
+
+#include <common.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/arch/imx8ulp-pins.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/pcc.h>
+#include <asm/arch/sys_proto.h>
+#include <miiphy.h>
+#include <netdev.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if IS_ENABLED(CONFIG_FEC_MXC)
+#define ENET_CLK_PAD_CTRL (PAD_CTL_PUS_UP | PAD_CTL_DSE | PAD_CTL_IBE_ENABLE)
+static iomux_cfg_t const enet_clk_pads[] = {
+ IMX8ULP_PAD_PTE19__ENET0_REFCLK | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
+ IMX8ULP_PAD_PTF10__ENET0_1588_CLKIN | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
+};
+
+static int setup_fec(void)
+{
+ /*
+ * Since ref clock and timestamp clock are from external,
+ * set the iomux prior the clock enablement
+ */
+ imx8ulp_iomux_setup_multiple_pads(enet_clk_pads, ARRAY_SIZE(enet_clk_pads));
+
+ /* Select enet time stamp clock: 001 - External Timestamp Clock */
+ cgc1_enet_stamp_sel(1);
+
+ /* enable FEC PCC */
+ pcc_clock_enable(4, ENET_PCC4_SLOT, true);
+ pcc_reset_peripheral(4, ENET_PCC4_SLOT, false);
+
+ return 0;
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+ if (phydev->drv->config)
+ phydev->drv->config(phydev);
+ return 0;
+}
+#endif
+
+int board_init(void)
+{
+ if (IS_ENABLED(CONFIG_FEC_MXC))
+ setup_fec();
+
+ return 0;
+}
+
+int board_early_init_f(void)
+{
+ return 0;
+}
+
+int board_late_init(void)
+{
+ return 0;
+}
diff --git a/board/freescale/imx8ulp_evk/lpddr4_timing.c b/board/freescale/imx8ulp_evk/lpddr4_timing.c
new file mode 100644
index 0000000000..e827f01cd7
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/lpddr4_timing.c
@@ -0,0 +1,1696 @@
+// SPDX-License-Identifier: GPL-2.0+ OR MIT
+/*
+ * Copyright 2021 NXP
+ *
+ * Generated code from MX8M_DDR_tool
+ *
+ */
+
+#include <linux/kernel.h>
+#include <asm/arch/ddr.h>
+
+/** CTL settings **/
+struct dram_cfg_param ddr_ctl_cfg[] = {
+ { 0x2e060000, 0xb00 }, /* 0 */
+ { 0x2e060004, 0x0 }, /* 1 */
+ { 0x2e060008, 0x0 }, /* 2 */
+ { 0x2e06000c, 0x0 }, /* 3 */
+ { 0x2e060010, 0x0 }, /* 4 */
+ { 0x2e060014, 0x0 }, /* 5 */
+ { 0x2e060018, 0x0 }, /* 6 */
+ { 0x2e06001c, 0x0 }, /* 7 */
+ { 0x2e060020, 0x0 }, /* 8 */
+ { 0x2e060024, 0x0 }, /* 9 */
+ { 0x2e060028, 0x258100 }, /* 10 */
+ { 0x2e06002c, 0x17702 }, /* 11 */
+ { 0x2e060030, 0x5 }, /* 12 */
+ { 0x2e060034, 0x61 }, /* 13 */
+ { 0x2e060038, 0x1a0ab }, /* 14 */
+ { 0x2e06003c, 0x1046ab }, /* 15 */
+ { 0x2e060040, 0x5 }, /* 16 */
+ { 0x2e060044, 0x42b }, /* 17 */
+ { 0x2e060048, 0xd056 }, /* 18 */
+ { 0x2e06004c, 0x82356 }, /* 19 */
+ { 0x2e060050, 0x5 }, /* 20 */
+ { 0x2e060054, 0x216 }, /* 21 */
+ { 0x2e060058, 0x1010000 }, /* 22 */
+ { 0x2e06005c, 0x1011001 }, /* 23 */
+ { 0x2e060060, 0x2010000 }, /* 24 */
+ { 0x2e060064, 0x20100 }, /* 25 */
+ { 0x2e060068, 0xa }, /* 26 */
+ { 0x2e06006c, 0x19 }, /* 27 */
+ { 0x2e060070, 0x0 }, /* 28 */
+ { 0x2e060074, 0x0 }, /* 29 */
+ { 0x2e060078, 0x2020200 }, /* 30 */
+ { 0x2e06007c, 0xb16 }, /* 31 */
+ { 0x2e060080, 0x0 }, /* 32 */
+ { 0x2e060084, 0x0 }, /* 33 */
+ { 0x2e060088, 0x0 }, /* 34 */
+ { 0x2e06008c, 0x0 }, /* 35 */
+ { 0x2e060090, 0x10 }, /* 36 */
+ { 0x2e060094, 0x0 }, /* 37 */
+ { 0x2e060098, 0x0 }, /* 38 */
+ { 0x2e06009c, 0x0 }, /* 39 */
+ { 0x2e0600a0, 0x0 }, /* 40 */
+ { 0x2e0600a4, 0x614040c }, /* 41 */
+ { 0x2e0600a8, 0x804040c }, /* 42 */
+ { 0x2e0600ac, 0x604 }, /* 43 */
+ { 0x2e0600b0, 0x3050003 }, /* 44 */
+ { 0x2e0600b4, 0x40002 }, /* 45 */
+ { 0x2e0600b8, 0x170021 }, /* 46 */
+ { 0x2e0600bc, 0x100a07 }, /* 47 */
+ { 0x2e0600c0, 0x1104 }, /* 48 */
+ { 0x2e0600c4, 0x505000c }, /* 49 */
+ { 0x2e0600c8, 0x8200008 }, /* 50 */
+ { 0x2e0600cc, 0xa0a }, /* 51 */
+ { 0x2e0600d0, 0x4000694 }, /* 52 */
+ { 0x2e0600d4, 0xa0a0804 }, /* 53 */
+ { 0x2e0600d8, 0x4004920 }, /* 54 */
+ { 0x2e0600dc, 0xa0a0804 }, /* 55 */
+ { 0x2e0600e0, 0x4002490 }, /* 56 */
+ { 0x2e0600e4, 0x2030404 }, /* 57 */
+ { 0x2e0600e8, 0xa040400 }, /* 58 */
+ { 0x2e0600ec, 0x806050b }, /* 59 */
+ { 0x2e0600f0, 0x7010100 }, /* 60 */
+ { 0x2e0600f4, 0x40b15 }, /* 61 */
+ { 0x2e0600fc, 0x1010000 }, /* 63 */
+ { 0x2e060100, 0x1000000 }, /* 64 */
+ { 0x2e060104, 0x90403 }, /* 65 */
+ { 0x2e060108, 0xb3 }, /* 66 */
+ { 0x2e06010c, 0x60 }, /* 67 */
+ { 0x2e060110, 0x818 }, /* 68 */
+ { 0x2e060114, 0x30 }, /* 69 */
+ { 0x2e060118, 0x408 }, /* 70 */
+ { 0x2e06011c, 0x5 }, /* 71 */
+ { 0x2e060120, 0x50000 }, /* 72 */
+ { 0x2e060124, 0x30000f }, /* 73 */
+ { 0x2e060128, 0x1800fc }, /* 74 */
+ { 0x2e06012c, 0x40007a }, /* 75 */
+ { 0x2e060130, 0x120103 }, /* 76 */
+ { 0x2e060134, 0x50005 }, /* 77 */
+ { 0x2e060138, 0xd070005 }, /* 78 */
+ { 0x2e06013c, 0x5050108 }, /* 79 */
+ { 0x2e060140, 0x101030a }, /* 80 */
+ { 0x2e060144, 0x30a0505 }, /* 81 */
+ { 0x2e060148, 0x5050101 }, /* 82 */
+ { 0x2e06014c, 0x1030a }, /* 83 */
+ { 0x2e060150, 0xa000a }, /* 84 */
+ { 0x2e060154, 0x640064 }, /* 85 */
+ { 0x2e060158, 0x320032 }, /* 86 */
+ { 0x2e06015c, 0x3050505 }, /* 87 */
+ { 0x2e060160, 0x3010403 }, /* 88 */
+ { 0x2e060164, 0x8050505 }, /* 89 */
+ { 0x2e060168, 0x3010403 }, /* 90 */
+ { 0x2e06016c, 0x4050505 }, /* 91 */
+ { 0x2e060170, 0x3010403 }, /* 92 */
+ { 0x2e060174, 0x3010000 }, /* 93 */
+ { 0x2e060178, 0x10000 }, /* 94 */
+ { 0x2e06017c, 0x0 }, /* 95 */
+ { 0x2e060180, 0x1000000 }, /* 96 */
+ { 0x2e060184, 0x80104002 }, /* 97 */
+ { 0x2e060188, 0x40003 }, /* 98 */
+ { 0x2e06018c, 0x40005 }, /* 99 */
+ { 0x2e060190, 0x30000 }, /* 100 */
+ { 0x2e060194, 0x50004 }, /* 101 */
+ { 0x2e060198, 0x4 }, /* 102 */
+ { 0x2e06019c, 0x40003 }, /* 103 */
+ { 0x2e0601a0, 0x40005 }, /* 104 */
+ { 0x2e0601a4, 0x0 }, /* 105 */
+ { 0x2e0601a8, 0x2cc0 }, /* 106 */
+ { 0x2e0601ac, 0x2cc0 }, /* 107 */
+ { 0x2e0601b0, 0x2cc0 }, /* 108 */
+ { 0x2e0601b4, 0x2cc0 }, /* 109 */
+ { 0x2e0601b8, 0x2cc0 }, /* 110 */
+ { 0x2e0601bc, 0x0 }, /* 111 */
+ { 0x2e0601c0, 0x4e5 }, /* 112 */
+ { 0x2e0601c4, 0x20600 }, /* 113 */
+ { 0x2e0601c8, 0x20600 }, /* 114 */
+ { 0x2e0601cc, 0x20600 }, /* 115 */
+ { 0x2e0601d0, 0x20600 }, /* 116 */
+ { 0x2e0601d4, 0x20600 }, /* 117 */
+ { 0x2e0601d8, 0x0 }, /* 118 */
+ { 0x2e0601dc, 0x38a8 }, /* 119 */
+ { 0x2e0601e0, 0x10200 }, /* 120 */
+ { 0x2e0601e4, 0x10200 }, /* 121 */
+ { 0x2e0601e8, 0x10200 }, /* 122 */
+ { 0x2e0601ec, 0x10200 }, /* 123 */
+ { 0x2e0601f0, 0x10200 }, /* 124 */
+ { 0x2e0601f4, 0x0 }, /* 125 */
+ { 0x2e0601f8, 0x1c38 }, /* 126 */
+ { 0x2e0601fc, 0x0 }, /* 127 */
+ { 0x2e060200, 0x0 }, /* 128 */
+ { 0x2e060204, 0x0 }, /* 129 */
+ { 0x2e060208, 0x0 }, /* 130 */
+ { 0x2e06020c, 0x0 }, /* 131 */
+ { 0x2e060210, 0x0 }, /* 132 */
+ { 0x2e060214, 0x0 }, /* 133 */
+ { 0x2e060218, 0x0 }, /* 134 */
+ { 0x2e06021c, 0x5000000 }, /* 135 */
+ { 0x2e060220, 0x5030503 }, /* 136 */
+ { 0x2e060224, 0x3 }, /* 137 */
+ { 0x2e060228, 0x7010a09 }, /* 138 */
+ { 0x2e06022c, 0xe0a09 }, /* 139 */
+ { 0x2e060230, 0x10a0900 }, /* 140 */
+ { 0x2e060234, 0xe0a0907 }, /* 141 */
+ { 0x2e060238, 0xa090000 }, /* 142 */
+ { 0x2e06023c, 0xa090701 }, /* 143 */
+ { 0x2e060240, 0x101000e }, /* 144 */
+ { 0x2e060244, 0x40003 }, /* 145 */
+ { 0x2e060248, 0x7 }, /* 146 */
+ { 0x2e06024c, 0x0 }, /* 147 */
+ { 0x2e060250, 0x0 }, /* 148 */
+ { 0x2e060254, 0x0 }, /* 149 */
+ { 0x2e060258, 0x0 }, /* 150 */
+ { 0x2e06025c, 0x0 }, /* 151 */
+ { 0x2e060260, 0x0 }, /* 152 */
+ { 0x2e060264, 0x4040100 }, /* 153 */
+ { 0x2e060268, 0x1000000 }, /* 154 */
+ { 0x2e06026c, 0x100000c0 }, /* 155 */
+ { 0x2e060270, 0x100000c0 }, /* 156 */
+ { 0x2e060274, 0x100000c0 }, /* 157 */
+ { 0x2e060278, 0x0 }, /* 158 */
+ { 0x2e06027c, 0x1600 }, /* 159 */
+ { 0x2e060280, 0x0 }, /* 160 */
+ { 0x2e060284, 0x1 }, /* 161 */
+ { 0x2e060288, 0x2 }, /* 162 */
+ { 0x2e06028c, 0x100e }, /* 163 */
+ { 0x2e060290, 0x0 }, /* 164 */
+ { 0x2e060294, 0x0 }, /* 165 */
+ { 0x2e060298, 0x0 }, /* 166 */
+ { 0x2e06029c, 0x0 }, /* 167 */
+ { 0x2e0602a0, 0x0 }, /* 168 */
+ { 0x2e0602a4, 0xa0000 }, /* 169 */
+ { 0x2e0602a8, 0xd0005 }, /* 170 */
+ { 0x2e0602ac, 0x404 }, /* 171 */
+ { 0x2e0602b0, 0xd }, /* 172 */
+ { 0x2e0602b4, 0x36006b }, /* 173 */
+ { 0x2e0602b8, 0x4040086 }, /* 174 */
+ { 0x2e0602bc, 0x86 }, /* 175 */
+ { 0x2e0602c0, 0x1b0036 }, /* 176 */
+ { 0x2e0602c4, 0x4040043 }, /* 177 */
+ { 0x2e0602c8, 0x43 }, /* 178 */
+ { 0x2e0602cc, 0x0 }, /* 179 */
+ { 0x2e0602d0, 0x0 }, /* 180 */
+ { 0x2e0602d4, 0x0 }, /* 181 */
+ { 0x2e0602d8, 0x9140004 }, /* 182 */
+ { 0x2e0602dc, 0x30000004 }, /* 183 */
+ { 0x2e0602e0, 0x3030 }, /* 184 */
+ { 0x2e0602e4, 0x44000000 }, /* 185 */
+ { 0x2e0602e8, 0x19191944 }, /* 186 */
+ { 0x2e0602ec, 0x19191908 }, /* 187 */
+ { 0x2e0602f0, 0x0 }, /* 188 */
+ { 0x2e0602f4, 0x40404 }, /* 189 */
+ { 0x2e0602f8, 0x40914 }, /* 190 */
+ { 0x2e0602fc, 0x30303000 }, /* 191 */
+ { 0x2e060300, 0x0 }, /* 192 */
+ { 0x2e060304, 0x19444400 }, /* 193 */
+ { 0x2e060308, 0x19081919 }, /* 194 */
+ { 0x2e06030c, 0x1919 }, /* 195 */
+ { 0x2e060310, 0x4040000 }, /* 196 */
+ { 0x2e060314, 0x20 }, /* 197 */
+ { 0x2e060318, 0x100 }, /* 198 */
+ { 0x2e06031c, 0x1 }, /* 199 */
+ { 0x2e060320, 0x0 }, /* 200 */
+ { 0x2e060324, 0x1000000 }, /* 201 */
+ { 0x2e060328, 0x1 }, /* 202 */
+ { 0x2e06032c, 0x0 }, /* 203 */
+ { 0x2e060330, 0x0 }, /* 204 */
+ { 0x2e060334, 0x0 }, /* 205 */
+ { 0x2e060338, 0x0 }, /* 206 */
+ { 0x2e06033c, 0x0 }, /* 207 */
+ { 0x2e060340, 0x0 }, /* 208 */
+ { 0x2e060344, 0x0 }, /* 209 */
+ { 0x2e060348, 0x0 }, /* 210 */
+ { 0x2e06034c, 0x0 }, /* 211 */
+ { 0x2e060350, 0x0 }, /* 212 */
+ { 0x2e060354, 0x11000000 }, /* 213 */
+ { 0x2e060358, 0x40c1815 }, /* 214 */
+ { 0x2e06035c, 0x0 }, /* 215 */
+ { 0x2e060360, 0x0 }, /* 216 */
+ { 0x2e060364, 0x0 }, /* 217 */
+ { 0x2e060368, 0x0 }, /* 218 */
+ { 0x2e06036c, 0x0 }, /* 219 */
+ { 0x2e060370, 0x0 }, /* 220 */
+ { 0x2e060374, 0x0 }, /* 221 */
+ { 0x2e060378, 0x0 }, /* 222 */
+ { 0x2e06037c, 0x0 }, /* 223 */
+ { 0x2e060380, 0x0 }, /* 224 */
+ { 0x2e060384, 0x0 }, /* 225 */
+ { 0x2e060388, 0x0 }, /* 226 */
+ { 0x2e06038c, 0x0 }, /* 227 */
+ { 0x2e060390, 0x30000 }, /* 228 */
+ { 0x2e060394, 0x1000200 }, /* 229 */
+ { 0x2e060398, 0x310040 }, /* 230 */
+ { 0x2e06039c, 0x20002 }, /* 231 */
+ { 0x2e0603a0, 0x400100 }, /* 232 */
+ { 0x2e0603a4, 0x100216 }, /* 233 */
+ { 0x2e0603a8, 0x1000200 }, /* 234 */
+ { 0x2e0603ac, 0x10b0040 }, /* 235 */
+ { 0x2e0603b0, 0x8 }, /* 236 */
+ { 0x2e0603b4, 0x1b0003 }, /* 237 */
+ { 0x2e0603b8, 0x100000e }, /* 238 */
+ { 0x2e0603bc, 0x0 }, /* 239 */
+ { 0x2e0603d4, 0x0 }, /* 245 */
+ { 0x2e0603d8, 0xffff0b00 }, /* 246 */
+ { 0x2e0603dc, 0x1010001 }, /* 247 */
+ { 0x2e0603e0, 0x1010101 }, /* 248 */
+ { 0x2e0603e4, 0x10b0101 }, /* 249 */
+ { 0x2e0603e8, 0x10000 }, /* 250 */
+ { 0x2e0603ec, 0x4010101 }, /* 251 */
+ { 0x2e0603f0, 0x1010000 }, /* 252 */
+ { 0x2e0603f4, 0x4 }, /* 253 */
+ { 0x2e0603f8, 0x0 }, /* 254 */
+ { 0x2e0603fc, 0x3030101 }, /* 255 */
+ { 0x2e060400, 0x103 }, /* 256 */
+ { 0x2e060404, 0x0 }, /* 257 */
+ { 0x2e060408, 0x0 }, /* 258 */
+ { 0x2e06040c, 0x0 }, /* 259 */
+ { 0x2e060410, 0x0 }, /* 260 */
+ { 0x2e060414, 0x0 }, /* 261 */
+ { 0x2e060418, 0x0 }, /* 262 */
+ { 0x2e06041c, 0x0 }, /* 263 */
+ { 0x2e060420, 0x0 }, /* 264 */
+ { 0x2e060424, 0x0 }, /* 265 */
+ { 0x2e060428, 0x0 }, /* 266 */
+ { 0x2e06042c, 0x0 }, /* 267 */
+ { 0x2e060430, 0x0 }, /* 268 */
+ { 0x2e060434, 0x0 }, /* 269 */
+ { 0x2e060438, 0x0 }, /* 270 */
+ { 0x2e06043c, 0x0 }, /* 271 */
+ { 0x2e060440, 0x0 }, /* 272 */
+ { 0x2e060444, 0x0 }, /* 273 */
+ { 0x2e060448, 0x0 }, /* 274 */
+ { 0x2e06044c, 0x0 }, /* 275 */
+ { 0x2e060450, 0x0 }, /* 276 */
+ { 0x2e060454, 0x0 }, /* 277 */
+ { 0x2e060458, 0x0 }, /* 278 */
+ { 0x2e06045c, 0x0 }, /* 279 */
+ { 0x2e060460, 0x0 }, /* 280 */
+ { 0x2e060464, 0x0 }, /* 281 */
+ { 0x2e060468, 0x0 }, /* 282 */
+ { 0x2e06046c, 0x0 }, /* 283 */
+ { 0x2e060470, 0x0 }, /* 284 */
+ { 0x2e060474, 0x0 }, /* 285 */
+ { 0x2e060478, 0x0 }, /* 286 */
+ { 0x2e06047c, 0x0 }, /* 287 */
+ { 0x2e060480, 0x0 }, /* 288 */
+ { 0x2e060484, 0x0 }, /* 289 */
+ { 0x2e060488, 0x0 }, /* 290 */
+ { 0x2e06048c, 0x0 }, /* 291 */
+ { 0x2e060490, 0x0 }, /* 292 */
+ { 0x2e060494, 0x0 }, /* 293 */
+ { 0x2e060498, 0x0 }, /* 294 */
+ { 0x2e06049c, 0x0 }, /* 295 */
+ { 0x2e0604a0, 0x0 }, /* 296 */
+ { 0x2e0604a4, 0x2020101 }, /* 297 */
+ { 0x2e0604a8, 0x10100 }, /* 298 */
+ { 0x2e0604ac, 0x1000101 }, /* 299 */
+ { 0x2e0604b0, 0x1010101 }, /* 300 */
+ { 0x2e0604b4, 0x3040300 }, /* 301 */
+ { 0x2e0604b8, 0x8050805 }, /* 302 */
+ { 0x2e0604bc, 0x8020808 }, /* 303 */
+ { 0x2e0604c0, 0xa020e00 }, /* 304 */
+ { 0x2e0604c4, 0x8020f00 }, /* 305 */
+ { 0x2e0604c8, 0x8000e00 }, /* 306 */
+ { 0x2e0604cc, 0x80a }, /* 307 */
+ { 0x2e0604d0, 0x1020101 }, /* 308 */
+ { 0x2e0604d4, 0x101 }, /* 309 */
+ { 0x2e0604d8, 0x404 }, /* 310 */
+ { 0x2e0604dc, 0x40400 }, /* 311 */
+ { 0x2e0604e0, 0x4040000 }, /* 312 */
+ { 0x2e0604e4, 0x4000000 }, /* 313 */
+ { 0x2e0604e8, 0x10004 }, /* 314 */
+ { 0x2e0604ec, 0x0 }, /* 315 */
+ { 0x2e0604f0, 0xfffff }, /* 316 */
+ { 0x2e0604f4, 0x0 }, /* 317 */
+ { 0x2e0604f8, 0xfffff }, /* 318 */
+ { 0x2e0604fc, 0x0 }, /* 319 */
+ { 0x2e060500, 0xfffff }, /* 320 */
+ { 0x2e060504, 0x0 }, /* 321 */
+ { 0x2e060508, 0xfffff }, /* 322 */
+ { 0x2e06050c, 0x0 }, /* 323 */
+ { 0x2e060510, 0xfffff }, /* 324 */
+ { 0x2e060514, 0x0 }, /* 325 */
+ { 0x2e060518, 0xfffff }, /* 326 */
+ { 0x2e06051c, 0x0 }, /* 327 */
+ { 0x2e060520, 0xfffff }, /* 328 */
+ { 0x2e060524, 0x0 }, /* 329 */
+ { 0x2e060528, 0xfffff }, /* 330 */
+ { 0x2e06052c, 0x0 }, /* 331 */
+ { 0x2e060530, 0xfffff }, /* 332 */
+ { 0x2e060534, 0x0 }, /* 333 */
+ { 0x2e060538, 0xfffff }, /* 334 */
+ { 0x2e06053c, 0x0 }, /* 335 */
+ { 0x2e060540, 0xfffff }, /* 336 */
+ { 0x2e060544, 0x0 }, /* 337 */
+ { 0x2e060548, 0xfffff }, /* 338 */
+ { 0x2e06054c, 0x0 }, /* 339 */
+ { 0x2e060550, 0xfffff }, /* 340 */
+ { 0x2e060554, 0x0 }, /* 341 */
+ { 0x2e060558, 0xfffff }, /* 342 */
+ { 0x2e06055c, 0x0 }, /* 343 */
+ { 0x2e060560, 0xfffff }, /* 344 */
+ { 0x2e060564, 0x0 }, /* 345 */
+ { 0x2e060568, 0xfffff }, /* 346 */
+ { 0x2e06056c, 0x0 }, /* 347 */
+ { 0x2e060570, 0xfffff }, /* 348 */
+ { 0x2e060574, 0x0 }, /* 349 */
+ { 0x2e060578, 0xfffff }, /* 350 */
+ { 0x2e06057c, 0x0 }, /* 351 */
+ { 0x2e060580, 0xfffff }, /* 352 */
+ { 0x2e060584, 0x0 }, /* 353 */
+ { 0x2e060588, 0xfffff }, /* 354 */
+ { 0x2e06058c, 0x0 }, /* 355 */
+ { 0x2e060590, 0xfffff }, /* 356 */
+ { 0x2e060594, 0x0 }, /* 357 */
+ { 0x2e060598, 0xfffff }, /* 358 */
+ { 0x2e06059c, 0x0 }, /* 359 */
+ { 0x2e0605a0, 0xfffff }, /* 360 */
+ { 0x2e0605a4, 0x0 }, /* 361 */
+ { 0x2e0605a8, 0xfffff }, /* 362 */
+ { 0x2e0605ac, 0x0 }, /* 363 */
+ { 0x2e0605b0, 0xfffff }, /* 364 */
+ { 0x2e0605b4, 0x0 }, /* 365 */
+ { 0x2e0605b8, 0xfffff }, /* 366 */
+ { 0x2e0605bc, 0x0 }, /* 367 */
+ { 0x2e0605c0, 0xfffff }, /* 368 */
+ { 0x2e0605c4, 0x0 }, /* 369 */
+ { 0x2e0605c8, 0xfffff }, /* 370 */
+ { 0x2e0605cc, 0x0 }, /* 371 */
+ { 0x2e0605d0, 0xfffff }, /* 372 */
+ { 0x2e0605d4, 0x0 }, /* 373 */
+ { 0x2e0605d8, 0xfffff }, /* 374 */
+ { 0x2e0605dc, 0x0 }, /* 375 */
+ { 0x2e0605e0, 0xfffff }, /* 376 */
+ { 0x2e0605e4, 0x0 }, /* 377 */
+ { 0x2e0605e8, 0xfffff }, /* 378 */
+ { 0x2e0605ec, 0x0 }, /* 379 */
+ { 0x2e0605f0, 0xfffff }, /* 380 */
+ { 0x2e0605f4, 0x0 }, /* 381 */
+ { 0x2e0605f8, 0xfffff }, /* 382 */
+ { 0x2e0605fc, 0x0 }, /* 383 */
+ { 0x2e060600, 0xfffff }, /* 384 */
+ { 0x2e060604, 0x0 }, /* 385 */
+ { 0x2e060608, 0xfffff }, /* 386 */
+ { 0x2e06060c, 0x0 }, /* 387 */
+ { 0x2e060610, 0xfffff }, /* 388 */
+ { 0x2e060614, 0x0 }, /* 389 */
+ { 0x2e060618, 0xfffff }, /* 390 */
+ { 0x2e06061c, 0x0 }, /* 391 */
+ { 0x2e060620, 0xfffff }, /* 392 */
+ { 0x2e060624, 0x0 }, /* 393 */
+ { 0x2e060628, 0xfffff }, /* 394 */
+ { 0x2e06062c, 0x0 }, /* 395 */
+ { 0x2e060630, 0xfffff }, /* 396 */
+ { 0x2e060634, 0x0 }, /* 397 */
+ { 0x2e060638, 0xfffff }, /* 398 */
+ { 0x2e06063c, 0x0 }, /* 399 */
+ { 0x2e060640, 0xfffff }, /* 400 */
+ { 0x2e060644, 0x0 }, /* 401 */
+ { 0x2e060648, 0xfffff }, /* 402 */
+ { 0x2e06064c, 0x0 }, /* 403 */
+ { 0x2e060650, 0xfffff }, /* 404 */
+ { 0x2e060654, 0x0 }, /* 405 */
+ { 0x2e060658, 0xfffff }, /* 406 */
+ { 0x2e06065c, 0x0 }, /* 407 */
+ { 0x2e060660, 0xfffff }, /* 408 */
+ { 0x2e060664, 0x0 }, /* 409 */
+ { 0x2e060668, 0xfffff }, /* 410 */
+ { 0x2e06066c, 0x0 }, /* 411 */
+ { 0x2e060670, 0xfffff }, /* 412 */
+ { 0x2e060674, 0x0 }, /* 413 */
+ { 0x2e060678, 0xfffff }, /* 414 */
+ { 0x2e06067c, 0x0 }, /* 415 */
+ { 0x2e060680, 0xfffff }, /* 416 */
+ { 0x2e060684, 0x0 }, /* 417 */
+ { 0x2e060688, 0xfffff }, /* 418 */
+ { 0x2e06068c, 0x0 }, /* 419 */
+ { 0x2e060690, 0xfffff }, /* 420 */
+ { 0x2e060694, 0x0 }, /* 421 */
+ { 0x2e060698, 0xfffff }, /* 422 */
+ { 0x2e06069c, 0x0 }, /* 423 */
+ { 0x2e0606a0, 0xfffff }, /* 424 */
+ { 0x2e0606a4, 0x0 }, /* 425 */
+ { 0x2e0606a8, 0xfffff }, /* 426 */
+ { 0x2e0606ac, 0x0 }, /* 427 */
+ { 0x2e0606b0, 0xfffff }, /* 428 */
+ { 0x2e0606b4, 0x0 }, /* 429 */
+ { 0x2e0606b8, 0xfffff }, /* 430 */
+ { 0x2e0606bc, 0x0 }, /* 431 */
+ { 0x2e0606c0, 0xfffff }, /* 432 */
+ { 0x2e0606c4, 0x0 }, /* 433 */
+ { 0x2e0606c8, 0xfffff }, /* 434 */
+ { 0x2e0606cc, 0x0 }, /* 435 */
+ { 0x2e0606d0, 0xfffff }, /* 436 */
+ { 0x2e0606d4, 0x0 }, /* 437 */
+ { 0x2e0606d8, 0xfffff }, /* 438 */
+ { 0x2e0606dc, 0x0 }, /* 439 */
+ { 0x2e0606e0, 0xfffff }, /* 440 */
+ { 0x2e0606e4, 0x0 }, /* 441 */
+ { 0x2e0606e8, 0x30fffff }, /* 442 */
+ { 0x2e0606ec, 0xffffffff }, /* 443 */
+ { 0x2e0606f0, 0x30000 }, /* 444 */
+ { 0x2e0606f4, 0xffffffff }, /* 445 */
+ { 0x2e0606f8, 0x30000 }, /* 446 */
+ { 0x2e0606fc, 0xffffffff }, /* 447 */
+ { 0x2e060700, 0x30000 }, /* 448 */
+ { 0x2e060704, 0xffffffff }, /* 449 */
+ { 0x2e060708, 0x30000 }, /* 450 */
+ { 0x2e06070c, 0xffffffff }, /* 451 */
+ { 0x2e060710, 0x30000 }, /* 452 */
+ { 0x2e060714, 0xffffffff }, /* 453 */
+ { 0x2e060718, 0x30000 }, /* 454 */
+ { 0x2e06071c, 0xffffffff }, /* 455 */
+ { 0x2e060720, 0x30000 }, /* 456 */
+ { 0x2e060724, 0xffffffff }, /* 457 */
+ { 0x2e060728, 0x30000 }, /* 458 */
+ { 0x2e06072c, 0xffffffff }, /* 459 */
+ { 0x2e060730, 0x30000 }, /* 460 */
+ { 0x2e060734, 0xffffffff }, /* 461 */
+ { 0x2e060738, 0x30000 }, /* 462 */
+ { 0x2e06073c, 0xffffffff }, /* 463 */
+ { 0x2e060740, 0x30000 }, /* 464 */
+ { 0x2e060744, 0xffffffff }, /* 465 */
+ { 0x2e060748, 0x30000 }, /* 466 */
+ { 0x2e06074c, 0xffffffff }, /* 467 */
+ { 0x2e060750, 0x30000 }, /* 468 */
+ { 0x2e060754, 0xffffffff }, /* 469 */
+ { 0x2e060758, 0x30000 }, /* 470 */
+ { 0x2e06075c, 0xffffffff }, /* 471 */
+ { 0x2e060760, 0x30000 }, /* 472 */
+ { 0x2e060764, 0xffffffff }, /* 473 */
+ { 0x2e060768, 0x30000 }, /* 474 */
+ { 0x2e06076c, 0xffffffff }, /* 475 */
+ { 0x2e060770, 0x30000 }, /* 476 */
+ { 0x2e060774, 0xffffffff }, /* 477 */
+ { 0x2e060778, 0x30000 }, /* 478 */
+ { 0x2e06077c, 0xffffffff }, /* 479 */
+ { 0x2e060780, 0x30000 }, /* 480 */
+ { 0x2e060784, 0xffffffff }, /* 481 */
+ { 0x2e060788, 0x30000 }, /* 482 */
+ { 0x2e06078c, 0xffffffff }, /* 483 */
+ { 0x2e060790, 0x30000 }, /* 484 */
+ { 0x2e060794, 0xffffffff }, /* 485 */
+ { 0x2e060798, 0x30000 }, /* 486 */
+ { 0x2e06079c, 0xffffffff }, /* 487 */
+ { 0x2e0607a0, 0x30000 }, /* 488 */
+ { 0x2e0607a4, 0xffffffff }, /* 489 */
+ { 0x2e0607a8, 0x30000 }, /* 490 */
+ { 0x2e0607ac, 0xffffffff }, /* 491 */
+ { 0x2e0607b0, 0x30000 }, /* 492 */
+ { 0x2e0607b4, 0xffffffff }, /* 493 */
+ { 0x2e0607b8, 0x30000 }, /* 494 */
+ { 0x2e0607bc, 0xffffffff }, /* 495 */
+ { 0x2e0607c0, 0x30000 }, /* 496 */
+ { 0x2e0607c4, 0xffffffff }, /* 497 */
+ { 0x2e0607c8, 0x30000 }, /* 498 */
+ { 0x2e0607cc, 0xffffffff }, /* 499 */
+ { 0x2e0607d0, 0x30000 }, /* 500 */
+ { 0x2e0607d4, 0xffffffff }, /* 501 */
+ { 0x2e0607d8, 0x30000 }, /* 502 */
+ { 0x2e0607dc, 0xffffffff }, /* 503 */
+ { 0x2e0607e0, 0x30000 }, /* 504 */
+ { 0x2e0607e4, 0xffffffff }, /* 505 */
+ { 0x2e0607e8, 0x30000 }, /* 506 */
+ { 0x2e0607ec, 0xffffffff }, /* 507 */
+ { 0x2e0607f0, 0x30000 }, /* 508 */
+ { 0x2e0607f4, 0xffffffff }, /* 509 */
+ { 0x2e0607f8, 0x30000 }, /* 510 */
+ { 0x2e0607fc, 0xffffffff }, /* 511 */
+ { 0x2e060800, 0x30000 }, /* 512 */
+ { 0x2e060804, 0xffffffff }, /* 513 */
+ { 0x2e060808, 0x30000 }, /* 514 */
+ { 0x2e06080c, 0xffffffff }, /* 515 */
+ { 0x2e060810, 0x30000 }, /* 516 */
+ { 0x2e060814, 0xffffffff }, /* 517 */
+ { 0x2e060818, 0x30000 }, /* 518 */
+ { 0x2e06081c, 0xffffffff }, /* 519 */
+ { 0x2e060820, 0x30000 }, /* 520 */
+ { 0x2e060824, 0xffffffff }, /* 521 */
+ { 0x2e060828, 0x30000 }, /* 522 */
+ { 0x2e06082c, 0xffffffff }, /* 523 */
+ { 0x2e060830, 0x30000 }, /* 524 */
+ { 0x2e060834, 0xffffffff }, /* 525 */
+ { 0x2e060838, 0x30000 }, /* 526 */
+ { 0x2e06083c, 0xffffffff }, /* 527 */
+ { 0x2e060840, 0x30000 }, /* 528 */
+ { 0x2e060844, 0xffffffff }, /* 529 */
+ { 0x2e060848, 0x30000 }, /* 530 */
+ { 0x2e06084c, 0xffffffff }, /* 531 */
+ { 0x2e060850, 0x30000 }, /* 532 */
+ { 0x2e060854, 0xffffffff }, /* 533 */
+ { 0x2e060858, 0x30000 }, /* 534 */
+ { 0x2e06085c, 0xffffffff }, /* 535 */
+ { 0x2e060860, 0x30000 }, /* 536 */
+ { 0x2e060864, 0xffffffff }, /* 537 */
+ { 0x2e060868, 0x30000 }, /* 538 */
+ { 0x2e06086c, 0xffffffff }, /* 539 */
+ { 0x2e060870, 0x30000 }, /* 540 */
+ { 0x2e060874, 0xffffffff }, /* 541 */
+ { 0x2e060878, 0x30000 }, /* 542 */
+ { 0x2e06087c, 0xffffffff }, /* 543 */
+ { 0x2e060880, 0x30000 }, /* 544 */
+ { 0x2e060884, 0xffffffff }, /* 545 */
+ { 0x2e060888, 0x30000 }, /* 546 */
+ { 0x2e06088c, 0xffffffff }, /* 547 */
+ { 0x2e060890, 0x30000 }, /* 548 */
+ { 0x2e060894, 0xffffffff }, /* 549 */
+ { 0x2e060898, 0x30000 }, /* 550 */
+ { 0x2e06089c, 0xffffffff }, /* 551 */
+ { 0x2e0608a0, 0x30000 }, /* 552 */
+ { 0x2e0608a4, 0xffffffff }, /* 553 */
+ { 0x2e0608a8, 0x30000 }, /* 554 */
+ { 0x2e0608ac, 0xffffffff }, /* 555 */
+ { 0x2e0608b0, 0x30000 }, /* 556 */
+ { 0x2e0608b4, 0xffffffff }, /* 557 */
+ { 0x2e0608b8, 0x30000 }, /* 558 */
+ { 0x2e0608bc, 0xffffffff }, /* 559 */
+ { 0x2e0608c0, 0x30000 }, /* 560 */
+ { 0x2e0608c4, 0xffffffff }, /* 561 */
+ { 0x2e0608c8, 0x30000 }, /* 562 */
+ { 0x2e0608cc, 0xffffffff }, /* 563 */
+ { 0x2e0608d0, 0x30000 }, /* 564 */
+ { 0x2e0608d4, 0xffffffff }, /* 565 */
+ { 0x2e0608d8, 0x30000 }, /* 566 */
+ { 0x2e0608dc, 0xffffffff }, /* 567 */
+ { 0x2e0608e0, 0x30000 }, /* 568 */
+ { 0x2e0608e4, 0xffffffff }, /* 569 */
+ { 0x2e0608e8, 0x32070000 }, /* 570 */
+ { 0x2e0608ec, 0x1320001 }, /* 571 */
+ { 0x2e0608f0, 0x13200 }, /* 572 */
+ { 0x2e0608f4, 0x132 }, /* 573 */
+ { 0x2e0608f8, 0x0 }, /* 574 */
+ { 0x2e0608fc, 0x211b0000 }, /* 575 */
+ { 0x2e060900, 0x1d }, /* 576 */
+ { 0x2e060904, 0xa }, /* 577 */
+ { 0x2e060908, 0x166 }, /* 578 */
+ { 0x2e06090c, 0x200 }, /* 579 */
+ { 0x2e060910, 0x200 }, /* 580 */
+ { 0x2e060914, 0x200 }, /* 581 */
+ { 0x2e060918, 0x200 }, /* 582 */
+ { 0x2e06091c, 0x432 }, /* 583 */
+ { 0x2e060920, 0xdfc }, /* 584 */
+ { 0x2e060924, 0x204 }, /* 585 */
+ { 0x2e060928, 0x1030 }, /* 586 */
+ { 0x2e06092c, 0x200 }, /* 587 */
+ { 0x2e060930, 0x200 }, /* 588 */
+ { 0x2e060934, 0x200 }, /* 589 */
+ { 0x2e060938, 0x200 }, /* 590 */
+ { 0x2e06093c, 0x3090 }, /* 591 */
+ { 0x2e060940, 0xa1e0 }, /* 592 */
+ { 0x2e060944, 0x406 }, /* 593 */
+ { 0x2e060948, 0x810 }, /* 594 */
+ { 0x2e06094c, 0x200 }, /* 595 */
+ { 0x2e060950, 0x200 }, /* 596 */
+ { 0x2e060954, 0x200 }, /* 597 */
+ { 0x2e060958, 0x200 }, /* 598 */
+ { 0x2e06095c, 0x1830 }, /* 599 */
+ { 0x2e060960, 0x50a0 }, /* 600 */
+ { 0x2e060964, 0x2020204 }, /* 601 */
+ { 0x2e060968, 0x2030202 }, /* 602 */
+ { 0x2e06096c, 0x1000202 }, /* 603 */
+ { 0x2e060970, 0x1000304 }, /* 604 */
+ { 0x2e060974, 0x10105 }, /* 605 */
+ { 0x2e060978, 0x10101 }, /* 606 */
+ { 0x2e06097c, 0x10101 }, /* 607 */
+ { 0x2e060980, 0x10001 }, /* 608 */
+ { 0x2e060984, 0x101 }, /* 609 */
+ { 0x2e060988, 0x2000201 }, /* 610 */
+ { 0x2e06098c, 0x2010000 }, /* 611 */
+ { 0x2e060990, 0x6000200 }, /* 612 */
+ { 0x2e060994, 0x300060a }, /* 613 */
+ { 0x2e060998, 0x200060c }, /* 614 */
+ { 0x2e06099c, 0xf00 }, /* 615 */
+ { 0x2e0609a0, 0xf000f }, /* 616 */
+ { 0x2e0609a4, 0xf000f }, /* 617 */
+ { 0x2e0609a8, 0xf000f }, /* 618 */
+ { 0x2e0609ac, 0xf000f }, /* 619 */
+ { 0x2e0609b0, 0xf000f }, /* 620 */
+ { 0x2e0609b4, 0xf000f }, /* 621 */
+ { 0x2e0609b8, 0xf000f }, /* 622 */
+ { 0x2e0609bc, 0xf000f }, /* 623 */
+ { 0x2e0609c0, 0xf000f }, /* 624 */
+ { 0x2e0609c4, 0xf000f }, /* 625 */
+ { 0x2e0609c8, 0xf000f }, /* 626 */
+ { 0x2e0609cc, 0xf000f }, /* 627 */
+ { 0x2e0609d0, 0xf000f }, /* 628 */
+ { 0x2e0609d4, 0xf000f }, /* 629 */
+ { 0x2e0609d8, 0xf000f }, /* 630 */
+ { 0x2e0609dc, 0xf000f }, /* 631 */
+ { 0x2e0609e0, 0xf000f }, /* 632 */
+ { 0x2e0609e4, 0xf000f }, /* 633 */
+ { 0x2e0609e8, 0xf000f }, /* 634 */
+ { 0x2e0609ec, 0xf000f }, /* 635 */
+ { 0x2e0609f0, 0xf000f }, /* 636 */
+ { 0x2e0609f4, 0xf000f }, /* 637 */
+ { 0x2e0609f8, 0xf000f }, /* 638 */
+ { 0x2e0609fc, 0xf000f }, /* 639 */
+ { 0x2e060a00, 0xf000f }, /* 640 */
+ { 0x2e060a04, 0xf000f }, /* 641 */
+ { 0x2e060a08, 0xf000f }, /* 642 */
+ { 0x2e060a0c, 0xf000f }, /* 643 */
+ { 0x2e060a10, 0xf000f }, /* 644 */
+ { 0x2e060a14, 0xf000f }, /* 645 */
+ { 0x2e060a18, 0xf000f }, /* 646 */
+ { 0x2e060a1c, 0xf000f }, /* 647 */
+ { 0x2e060a20, 0xf000f }, /* 648 */
+ { 0x2e060a24, 0xf000f }, /* 649 */
+ { 0x2e060a28, 0xf000f }, /* 650 */
+ { 0x2e060a2c, 0xf000f }, /* 651 */
+ { 0x2e060a30, 0xf000f }, /* 652 */
+ { 0x2e060a34, 0xf000f }, /* 653 */
+ { 0x2e060a38, 0xf000f }, /* 654 */
+ { 0x2e060a3c, 0xf000f }, /* 655 */
+ { 0x2e060a40, 0xf000f }, /* 656 */
+ { 0x2e060a44, 0xf000f }, /* 657 */
+ { 0x2e060a48, 0xf000f }, /* 658 */
+ { 0x2e060a4c, 0xf000f }, /* 659 */
+ { 0x2e060a50, 0xf000f }, /* 660 */
+ { 0x2e060a54, 0xf000f }, /* 661 */
+ { 0x2e060a58, 0xf000f }, /* 662 */
+ { 0x2e060a5c, 0xf000f }, /* 663 */
+ { 0x2e060a60, 0xf000f }, /* 664 */
+ { 0x2e060a64, 0xf000f }, /* 665 */
+ { 0x2e060a68, 0xf000f }, /* 666 */
+ { 0x2e060a6c, 0xf000f }, /* 667 */
+ { 0x2e060a70, 0xf000f }, /* 668 */
+ { 0x2e060a74, 0xf000f }, /* 669 */
+ { 0x2e060a78, 0xf000f }, /* 670 */
+ { 0x2e060a7c, 0xf000f }, /* 671 */
+ { 0x2e060a80, 0xf000f }, /* 672 */
+ { 0x2e060a84, 0xf000f }, /* 673 */
+ { 0x2e060a88, 0xf000f }, /* 674 */
+ { 0x2e060a8c, 0xf000f }, /* 675 */
+ { 0x2e060a90, 0xf000f }, /* 676 */
+ { 0x2e060a94, 0xf000f }, /* 677 */
+ { 0x2e060a98, 0xf000f }, /* 678 */
+ { 0x2e060a9c, 0xf }, /* 679 */
+};
+
+/** PI settings **/
+struct dram_cfg_param ddr_pi_cfg[] = {
+ { 0x2e062000, 0xb00 }, /* 0 */
+ { 0x2e062004, 0xbeedb66f }, /* 1 */
+ { 0x2e062008, 0xabef6bd }, /* 2 */
+ { 0x2e06200c, 0x1001387 }, /* 3 */
+ { 0x2e062010, 0x1 }, /* 4 */
+ { 0x2e062014, 0x10064 }, /* 5 */
+ { 0x2e062018, 0x0 }, /* 6 */
+ { 0x2e06201c, 0x0 }, /* 7 */
+ { 0x2e062020, 0x0 }, /* 8 */
+ { 0x2e062024, 0x0 }, /* 9 */
+ { 0x2e062028, 0x0 }, /* 10 */
+ { 0x2e06202c, 0x101 }, /* 11 */
+ { 0x2e062030, 0x3 }, /* 12 */
+ { 0x2e062034, 0x50001 }, /* 13 */
+ { 0x2e062038, 0x3030800 }, /* 14 */
+ { 0x2e06203c, 0x1 }, /* 15 */
+ { 0x2e062040, 0x5 }, /* 16 */
+ { 0x2e062044, 0x0 }, /* 17 */
+ { 0x2e062048, 0x0 }, /* 18 */
+ { 0x2e06204c, 0x0 }, /* 19 */
+ { 0x2e062050, 0x0 }, /* 20 */
+ { 0x2e062054, 0x0 }, /* 21 */
+ { 0x2e062058, 0x0 }, /* 22 */
+ { 0x2e06205c, 0x0 }, /* 23 */
+ { 0x2e062060, 0x0 }, /* 24 */
+ { 0x2e062064, 0x1000000 }, /* 25 */
+ { 0x2e062068, 0xa000001 }, /* 26 */
+ { 0x2e06206c, 0x28 }, /* 27 */
+ { 0x2e062070, 0x1 }, /* 28 */
+ { 0x2e062074, 0x320005 }, /* 29 */
+ { 0x2e062078, 0x0 }, /* 30 */
+ { 0x2e06207c, 0x0 }, /* 31 */
+ { 0x2e062080, 0x10102 }, /* 32 */
+ { 0x2e062084, 0x1 }, /* 33 */
+ { 0x2e062088, 0xaa }, /* 34 */
+ { 0x2e06208c, 0x55 }, /* 35 */
+ { 0x2e062090, 0xb5 }, /* 36 */
+ { 0x2e062094, 0x4a }, /* 37 */
+ { 0x2e062098, 0x56 }, /* 38 */
+ { 0x2e06209c, 0xa9 }, /* 39 */
+ { 0x2e0620a0, 0xa9 }, /* 40 */
+ { 0x2e0620a4, 0xb5 }, /* 41 */
+ { 0x2e0620a8, 0x10000 }, /* 42 */
+ { 0x2e0620ac, 0x100 }, /* 43 */
+ { 0x2e0620b0, 0x5050000 }, /* 44 */
+ { 0x2e0620b4, 0x12 }, /* 45 */
+ { 0x2e0620b8, 0x7d0 }, /* 46 */
+ { 0x2e0620bc, 0x300 }, /* 47 */
+ { 0x2e0620c0, 0x0 }, /* 48 */
+ { 0x2e0620c4, 0x0 }, /* 49 */
+ { 0x2e0620c8, 0x1000000 }, /* 50 */
+ { 0x2e0620cc, 0x10101 }, /* 51 */
+ { 0x2e0620d0, 0x0 }, /* 52 */
+ { 0x2e0620d4, 0x0 }, /* 53 */
+ { 0x2e0620d8, 0x10003 }, /* 54 */
+ { 0x2e0620dc, 0x170500 }, /* 55 */
+ { 0x2e0620e0, 0x0 }, /* 56 */
+ { 0x2e0620e4, 0x0 }, /* 57 */
+ { 0x2e0620e8, 0x0 }, /* 58 */
+ { 0x2e0620ec, 0xa140a01 }, /* 59 */
+ { 0x2e0620f0, 0x204010a }, /* 60 */
+ { 0x2e0620f4, 0x21010 }, /* 61 */
+ { 0x2e0620f8, 0x40401 }, /* 62 */
+ { 0x2e0620fc, 0x10e0005 }, /* 63 */
+ { 0x2e062100, 0x5000001 }, /* 64 */
+ { 0x2e062104, 0x204 }, /* 65 */
+ { 0x2e062108, 0x34 }, /* 66 */
+ { 0x2e06210c, 0x0 }, /* 67 */
+ { 0x2e062110, 0x0 }, /* 68 */
+ { 0x2e062114, 0x1000000 }, /* 69 */
+ { 0x2e062118, 0x1000000 }, /* 70 */
+ { 0x2e06211c, 0x80200 }, /* 71 */
+ { 0x2e062120, 0x2000200 }, /* 72 */
+ { 0x2e062124, 0x1000100 }, /* 73 */
+ { 0x2e062128, 0x1000000 }, /* 74 */
+ { 0x2e06212c, 0x2000200 }, /* 75 */
+ { 0x2e062130, 0x200 }, /* 76 */
+ { 0x2e062134, 0x0 }, /* 77 */
+ { 0x2e062138, 0x0 }, /* 78 */
+ { 0x2e06213c, 0x0 }, /* 79 */
+ { 0x2e062140, 0x0 }, /* 80 */
+ { 0x2e062144, 0x0 }, /* 81 */
+ { 0x2e062148, 0x0 }, /* 82 */
+ { 0x2e06214c, 0x0 }, /* 83 */
+ { 0x2e062150, 0x0 }, /* 84 */
+ { 0x2e062154, 0x0 }, /* 85 */
+ { 0x2e062158, 0x0 }, /* 86 */
+ { 0x2e06215c, 0x0 }, /* 87 */
+ { 0x2e062160, 0x0 }, /* 88 */
+ { 0x2e062164, 0x400 }, /* 89 */
+ { 0x2e062168, 0x2010000 }, /* 90 */
+ { 0x2e06216c, 0x80103 }, /* 91 */
+ { 0x2e062170, 0x0 }, /* 92 */
+ { 0x2e062174, 0x10008 }, /* 93 */
+ { 0x2e062178, 0x0 }, /* 94 */
+ { 0x2e06217c, 0xaa00 }, /* 95 */
+ { 0x2e062180, 0x0 }, /* 96 */
+ { 0x2e062184, 0x0 }, /* 97 */
+ { 0x2e062188, 0x10000 }, /* 98 */
+ { 0x2e06218c, 0x0 }, /* 99 */
+ { 0x2e062190, 0x0 }, /* 100 */
+ { 0x2e062194, 0x0 }, /* 101 */
+ { 0x2e062198, 0x0 }, /* 102 */
+ { 0x2e06219c, 0x0 }, /* 103 */
+ { 0x2e0621a0, 0x0 }, /* 104 */
+ { 0x2e0621a4, 0x0 }, /* 105 */
+ { 0x2e0621a8, 0x0 }, /* 106 */
+ { 0x2e0621ac, 0x0 }, /* 107 */
+ { 0x2e0621b0, 0x0 }, /* 108 */
+ { 0x2e0621b4, 0x0 }, /* 109 */
+ { 0x2e0621b8, 0x0 }, /* 110 */
+ { 0x2e0621bc, 0x0 }, /* 111 */
+ { 0x2e0621c0, 0x0 }, /* 112 */
+ { 0x2e0621c4, 0x0 }, /* 113 */
+ { 0x2e0621c8, 0x0 }, /* 114 */
+ { 0x2e0621cc, 0x0 }, /* 115 */
+ { 0x2e0621d0, 0x0 }, /* 116 */
+ { 0x2e0621d4, 0x0 }, /* 117 */
+ { 0x2e0621d8, 0x0 }, /* 118 */
+ { 0x2e0621dc, 0x0 }, /* 119 */
+ { 0x2e0621e0, 0x0 }, /* 120 */
+ { 0x2e0621e4, 0x0 }, /* 121 */
+ { 0x2e0621e8, 0x0 }, /* 122 */
+ { 0x2e0621ec, 0x8 }, /* 123 */
+ { 0x2e0621f0, 0x0 }, /* 124 */
+ { 0x2e0621f4, 0x0 }, /* 125 */
+ { 0x2e0621f8, 0x0 }, /* 126 */
+ { 0x2e0621fc, 0x0 }, /* 127 */
+ { 0x2e062200, 0x0 }, /* 128 */
+ { 0x2e062204, 0x0 }, /* 129 */
+ { 0x2e062208, 0x0 }, /* 130 */
+ { 0x2e06220c, 0x0 }, /* 131 */
+ { 0x2e062210, 0x0 }, /* 132 */
+ { 0x2e062214, 0x0 }, /* 133 */
+ { 0x2e062218, 0xf0000 }, /* 134 */
+ { 0x2e06221c, 0xa }, /* 135 */
+ { 0x2e062220, 0x19 }, /* 136 */
+ { 0x2e062224, 0x0 }, /* 137 */
+ { 0x2e062228, 0x100 }, /* 138 */
+ { 0x2e06222c, 0x0 }, /* 139 */
+ { 0x2e062230, 0x0 }, /* 140 */
+ { 0x2e062234, 0x0 }, /* 141 */
+ { 0x2e062238, 0x1000000 }, /* 142 */
+ { 0x2e06223c, 0x10003 }, /* 143 */
+ { 0x2e062240, 0x2000101 }, /* 144 */
+ { 0x2e062244, 0x1030001 }, /* 145 */
+ { 0x2e062248, 0x10400 }, /* 146 */
+ { 0x2e06224c, 0x6000105 }, /* 147 */
+ { 0x2e062250, 0x1070001 }, /* 148 */
+ { 0x2e062254, 0x0 }, /* 149 */
+ { 0x2e062258, 0x0 }, /* 150 */
+ { 0x2e06225c, 0x0 }, /* 151 */
+ { 0x2e062260, 0x10001 }, /* 152 */
+ { 0x2e062264, 0x0 }, /* 153 */
+ { 0x2e062268, 0x0 }, /* 154 */
+ { 0x2e06226c, 0x0 }, /* 155 */
+ { 0x2e062270, 0x0 }, /* 156 */
+ { 0x2e062274, 0x401 }, /* 157 */
+ { 0x2e062278, 0x0 }, /* 158 */
+ { 0x2e06227c, 0x10000 }, /* 159 */
+ { 0x2e062280, 0x0 }, /* 160 */
+ { 0x2e062284, 0xb010000 }, /* 161 */
+ { 0x2e062288, 0x6 }, /* 162 */
+ { 0x2e06228c, 0x34 }, /* 163 */
+ { 0x2e062290, 0x3c }, /* 164 */
+ { 0x2e062294, 0x20036 }, /* 165 */
+ { 0x2e062298, 0x2000200 }, /* 166 */
+ { 0x2e06229c, 0x14060c04 }, /* 167 */
+ { 0x2e0622a0, 0x90c04 }, /* 168 */
+ { 0x2e0622a4, 0xb3 }, /* 169 */
+ { 0x2e0622a8, 0x60 }, /* 170 */
+ { 0x2e0622ac, 0x818 }, /* 171 */
+ { 0x2e0622b0, 0x30 }, /* 172 */
+ { 0x2e0622b4, 0x4000408 }, /* 173 */
+ { 0x2e0622b8, 0x1010404 }, /* 174 */
+ { 0x2e0622bc, 0x1501 }, /* 175 */
+ { 0x2e0622c0, 0x18001a }, /* 176 */
+ { 0x2e0622c4, 0x1000100 }, /* 177 */
+ { 0x2e0622c8, 0x100 }, /* 178 */
+ { 0x2e0622cc, 0x0 }, /* 179 */
+ { 0x2e0622d0, 0x5030403 }, /* 180 */
+ { 0x2e0622d4, 0x1010508 }, /* 181 */
+ { 0x2e0622d8, 0x1010101 }, /* 182 */
+ { 0x2e0622dc, 0x0 }, /* 183 */
+ { 0x2e0622e0, 0x0 }, /* 184 */
+ { 0x2e0622e4, 0x0 }, /* 185 */
+ { 0x2e0622e8, 0x2040604 }, /* 186 */
+ { 0x2e0622ec, 0x2020204 }, /* 187 */
+ { 0x2e0622f0, 0x3102 }, /* 188 */
+ { 0x2e0622f4, 0x360009 }, /* 189 */
+ { 0x2e0622f8, 0x34000e }, /* 190 */
+ { 0x2e0622fc, 0x101000c }, /* 191 */
+ { 0x2e062300, 0xd0101 }, /* 192 */
+ { 0x2e062304, 0x1008601 }, /* 193 */
+ { 0x2e062308, 0x1000043 }, /* 194 */
+ { 0x2e06230c, 0xe000e }, /* 195 */
+ { 0x2e062310, 0x870100 }, /* 196 */
+ { 0x2e062314, 0x1000087 }, /* 197 */
+ { 0x2e062318, 0x440044 }, /* 198 */
+ { 0x2e06231c, 0x220f220f }, /* 199 */
+ { 0x2e062320, 0x101220f }, /* 200 */
+ { 0x2e062324, 0xa070601 }, /* 201 */
+ { 0x2e062328, 0xa07070d }, /* 202 */
+ { 0x2e06232c, 0xa07060d }, /* 203 */
+ { 0x2e062330, 0xc00d }, /* 204 */
+ { 0x2e062334, 0xc01000 }, /* 205 */
+ { 0x2e062338, 0xc01000 }, /* 206 */
+ { 0x2e06233c, 0x21000 }, /* 207 */
+ { 0x2e062340, 0x14000d }, /* 208 */
+ { 0x2e062344, 0x110086 }, /* 209 */
+ { 0x2e062348, 0x150043 }, /* 210 */
+ { 0x2e06234c, 0x220f0056 }, /* 211 */
+ { 0x2e062350, 0x101 }, /* 212 */
+ { 0x2e062354, 0x560019 }, /* 213 */
+ { 0x2e062358, 0x101220f }, /* 214 */
+ { 0x2e06235c, 0x1500 }, /* 215 */
+ { 0x2e062360, 0x220f0056 }, /* 216 */
+ { 0x2e062364, 0x8000101 }, /* 217 */
+ { 0x2e062368, 0x4050403 }, /* 218 */
+ { 0x2e06236c, 0x5eb }, /* 219 */
+ { 0x2e062370, 0x20010003 }, /* 220 */
+ { 0x2e062374, 0x80a0a03 }, /* 221 */
+ { 0x2e062378, 0xb070a0c }, /* 222 */
+ { 0x2e06237c, 0x41d0 }, /* 223 */
+ { 0x2e062380, 0x20020017 }, /* 224 */
+ { 0x2e062384, 0x80a0a08 }, /* 225 */
+ { 0x2e062388, 0x6050506 }, /* 226 */
+ { 0x2e06238c, 0x20e8 }, /* 227 */
+ { 0x2e062390, 0x2001000c }, /* 228 */
+ { 0x2e062394, 0xa0a04 }, /* 229 */
+ { 0x2e062398, 0x166 }, /* 230 */
+ { 0x2e06239c, 0xdfc }, /* 231 */
+ { 0x2e0623a0, 0x1030 }, /* 232 */
+ { 0x2e0623a4, 0xa1e0 }, /* 233 */
+ { 0x2e0623a8, 0x810 }, /* 234 */
+ { 0x2e0623ac, 0x50a0 }, /* 235 */
+ { 0x2e0623b0, 0x64000a }, /* 236 */
+ { 0x2e0623b4, 0x3030032 }, /* 237 */
+ { 0x2e0623b8, 0x258103 }, /* 238 */
+ { 0x2e0623bc, 0x17702 }, /* 239 */
+ { 0x2e0623c0, 0x5 }, /* 240 */
+ { 0x2e0623c4, 0x61 }, /* 241 */
+ { 0x2e0623c8, 0xa }, /* 242 */
+ { 0x2e0623cc, 0x1a0ab }, /* 243 */
+ { 0x2e0623d0, 0x17702 }, /* 244 */
+ { 0x2e0623d4, 0x5 }, /* 245 */
+ { 0x2e0623d8, 0x42b }, /* 246 */
+ { 0x2e0623dc, 0x64 }, /* 247 */
+ { 0x2e0623e0, 0xd056 }, /* 248 */
+ { 0x2e0623e4, 0x17702 }, /* 249 */
+ { 0x2e0623e8, 0x5 }, /* 250 */
+ { 0x2e0623ec, 0x216 }, /* 251 */
+ { 0x2e0623f0, 0x1000032 }, /* 252 */
+ { 0x2e0623f4, 0x310040 }, /* 253 */
+ { 0x2e0623f8, 0x10002 }, /* 254 */
+ { 0x2e0623fc, 0x2160040 }, /* 255 */
+ { 0x2e062400, 0x10010 }, /* 256 */
+ { 0x2e062404, 0x10b0040 }, /* 257 */
+ { 0x2e062408, 0x308 }, /* 258 */
+ { 0x2e06240c, 0xe001b }, /* 259 */
+ { 0x2e062410, 0x1010101 }, /* 260 */
+ { 0x2e062414, 0x2020101 }, /* 261 */
+ { 0x2e062418, 0x8080404 }, /* 262 */
+ { 0x2e06241c, 0x5508 }, /* 263 */
+ { 0x2e062420, 0x83c5a00 }, /* 264 */
+ { 0x2e062424, 0x55 }, /* 265 */
+ { 0x2e062428, 0x55083c5a }, /* 266 */
+ { 0x2e06242c, 0x5a000000 }, /* 267 */
+ { 0x2e062430, 0x55083c }, /* 268 */
+ { 0x2e062434, 0x3c5a0000 }, /* 269 */
+ { 0x2e062438, 0xf0e0d0c }, /* 270 */
+ { 0x2e06243c, 0xb0a0908 }, /* 271 */
+ { 0x2e062440, 0x7060504 }, /* 272 */
+ { 0x2e062444, 0x3020100 }, /* 273 */
+ { 0x2e062448, 0x0 }, /* 274 */
+ { 0x2e06244c, 0x2020101 }, /* 275 */
+ { 0x2e062450, 0x8080404 }, /* 276 */
+ { 0x2e062454, 0x300004 }, /* 277 */
+ { 0x2e062458, 0x14004d4d }, /* 278 */
+ { 0x2e06245c, 0x19443009 }, /* 279 */
+ { 0x2e062460, 0x40419 }, /* 280 */
+ { 0x2e062464, 0x19194430 }, /* 281 */
+ { 0x2e062468, 0x30000404 }, /* 282 */
+ { 0x2e06246c, 0x44d4d00 }, /* 283 */
+ { 0x2e062470, 0x44300914 }, /* 284 */
+ { 0x2e062474, 0x4041919 }, /* 285 */
+ { 0x2e062478, 0x19443000 }, /* 286 */
+ { 0x2e06247c, 0x40419 }, /* 287 */
+ { 0x2e062480, 0x4d4d0030 }, /* 288 */
+ { 0x2e062484, 0x30091404 }, /* 289 */
+ { 0x2e062488, 0x4191944 }, /* 290 */
+ { 0x2e06248c, 0x44300004 }, /* 291 */
+ { 0x2e062490, 0x4041919 }, /* 292 */
+ { 0x2e062494, 0x4d003000 }, /* 293 */
+ { 0x2e062498, 0x914044d }, /* 294 */
+ { 0x2e06249c, 0x19194430 }, /* 295 */
+ { 0x2e0624a0, 0x30000404 }, /* 296 */
+ { 0x2e0624a4, 0x4191944 }, /* 297 */
+};
+
+/** PHY_F1 settings **/
+struct dram_cfg_param ddr_phy_f1_cfg[] = {
+ { 0x2e064000, 0x4f0 }, /* 0 */
+ { 0x2e064004, 0x0 }, /* 1 */
+ { 0x2e064008, 0x1030200 }, /* 2 */
+ { 0x2e06400c, 0x0 }, /* 3 */
+ { 0x2e064010, 0x0 }, /* 4 */
+ { 0x2e064014, 0x3000000 }, /* 5 */
+ { 0x2e064018, 0x1000001 }, /* 6 */
+ { 0x2e06401c, 0x3000400 }, /* 7 */
+ { 0x2e064020, 0x1 }, /* 8 */
+ { 0x2e064024, 0x1 }, /* 9 */
+ { 0x2e064028, 0x0 }, /* 10 */
+ { 0x2e06402c, 0x0 }, /* 11 */
+ { 0x2e064030, 0x10000 }, /* 12 */
+ { 0x2e064034, 0x0 }, /* 13 */
+ { 0x2e064038, 0xc00004 }, /* 14 */
+ { 0x2e06403c, 0xcc0008 }, /* 15 */
+ { 0x2e064040, 0x660601 }, /* 16 */
+ { 0x2e064044, 0x3 }, /* 17 */
+ { 0x2e064048, 0x0 }, /* 18 */
+ { 0x2e06404c, 0x1 }, /* 19 */
+ { 0x2e064050, 0xaaaa }, /* 20 */
+ { 0x2e064054, 0x5555 }, /* 21 */
+ { 0x2e064058, 0xb5b5 }, /* 22 */
+ { 0x2e06405c, 0x4a4a }, /* 23 */
+ { 0x2e064060, 0x5656 }, /* 24 */
+ { 0x2e064064, 0xa9a9 }, /* 25 */
+ { 0x2e064068, 0xb7b7 }, /* 26 */
+ { 0x2e06406c, 0x4848 }, /* 27 */
+ { 0x2e064070, 0x0 }, /* 28 */
+ { 0x2e064074, 0x0 }, /* 29 */
+ { 0x2e064078, 0x8000000 }, /* 30 */
+ { 0x2e06407c, 0x4010008 }, /* 31 */
+ { 0x2e064080, 0x408 }, /* 32 */
+ { 0x2e064084, 0x3102000 }, /* 33 */
+ { 0x2e064088, 0xc0020 }, /* 34 */
+ { 0x2e06408c, 0x10000 }, /* 35 */
+ { 0x2e064090, 0x55555555 }, /* 36 */
+ { 0x2e064094, 0xaaaaaaaa }, /* 37 */
+ { 0x2e064098, 0x55555555 }, /* 38 */
+ { 0x2e06409c, 0xaaaaaaaa }, /* 39 */
+ { 0x2e0640a0, 0x5555 }, /* 40 */
+ { 0x2e0640a4, 0x1000100 }, /* 41 */
+ { 0x2e0640a8, 0x800180 }, /* 42 */
+ { 0x2e0640ac, 0x1 }, /* 43 */
+ { 0x2e0640b0, 0x0 }, /* 44 */
+ { 0x2e0640b4, 0x0 }, /* 45 */
+ { 0x2e0640b8, 0x0 }, /* 46 */
+ { 0x2e0640bc, 0x0 }, /* 47 */
+ { 0x2e0640c0, 0x0 }, /* 48 */
+ { 0x2e0640c4, 0x0 }, /* 49 */
+ { 0x2e0640c8, 0x0 }, /* 50 */
+ { 0x2e0640cc, 0x0 }, /* 51 */
+ { 0x2e0640d0, 0x0 }, /* 52 */
+ { 0x2e0640d4, 0x0 }, /* 53 */
+ { 0x2e0640d8, 0x0 }, /* 54 */
+ { 0x2e0640dc, 0x0 }, /* 55 */
+ { 0x2e0640e0, 0x0 }, /* 56 */
+ { 0x2e0640e4, 0x0 }, /* 57 */
+ { 0x2e0640e8, 0x0 }, /* 58 */
+ { 0x2e0640ec, 0x0 }, /* 59 */
+ { 0x2e0640f0, 0x0 }, /* 60 */
+ { 0x2e0640f4, 0x0 }, /* 61 */
+ { 0x2e0640f8, 0x0 }, /* 62 */
+ { 0x2e0640fc, 0x0 }, /* 63 */
+ { 0x2e064100, 0x4 }, /* 64 */
+ { 0x2e064104, 0x0 }, /* 65 */
+ { 0x2e064108, 0x0 }, /* 66 */
+ { 0x2e06410c, 0x0 }, /* 67 */
+ { 0x2e064110, 0x0 }, /* 68 */
+ { 0x2e064114, 0x0 }, /* 69 */
+ { 0x2e064118, 0x0 }, /* 70 */
+ { 0x2e06411c, 0x41f07ff }, /* 71 */
+ { 0x2e064120, 0x1 }, /* 72 */
+ { 0x2e064124, 0x1cc0800 }, /* 73 */
+ { 0x2e064128, 0x3003cc08 }, /* 74 */
+ { 0x2e06412c, 0x2000014e }, /* 75 */
+ { 0x2e064130, 0x7ff0200 }, /* 76 */
+ { 0x2e064134, 0x301 }, /* 77 */
+ { 0x2e064138, 0x0 }, /* 78 */
+ { 0x2e06413c, 0x0 }, /* 79 */
+ { 0x2e064140, 0x30000 }, /* 80 */
+ { 0x2e064144, 0x0 }, /* 81 */
+ { 0x2e064148, 0x0 }, /* 82 */
+ { 0x2e06414c, 0x0 }, /* 83 */
+ { 0x2e064150, 0x0 }, /* 84 */
+ { 0x2e064154, 0x2000000 }, /* 85 */
+ { 0x2e064158, 0x51515042 }, /* 86 */
+ { 0x2e06415c, 0x31c06000 }, /* 87 */
+ { 0x2e064160, 0x9bf007f }, /* 88 */
+ { 0x2e064164, 0xc0c001 }, /* 89 */
+ { 0x2e064168, 0x3020000 }, /* 90 */
+ { 0x2e06416c, 0x10001000 }, /* 91 */
+ { 0x2e064170, 0xc043e42 }, /* 92 */
+ { 0x2e064174, 0xf0c1701 }, /* 93 */
+ { 0x2e064178, 0x1000140 }, /* 94 */
+ { 0x2e06417c, 0xc000120 }, /* 95 */
+ { 0x2e064180, 0x188 }, /* 96 */
+ { 0x2e064184, 0x3200203 }, /* 97 */
+ { 0x2e064188, 0x56417032 }, /* 98 */
+ { 0x2e06418c, 0x8 }, /* 99 */
+ { 0x2e064190, 0x3080308 }, /* 100 */
+ { 0x2e064194, 0x3080308 }, /* 101 */
+ { 0x2e064198, 0x3080308 }, /* 102 */
+ { 0x2e06419c, 0x3080308 }, /* 103 */
+ { 0x2e0641a0, 0x308 }, /* 104 */
+ { 0x2e0641a4, 0x8000 }, /* 105 */
+ { 0x2e0641a8, 0x800080 }, /* 106 */
+ { 0x2e0641ac, 0x800080 }, /* 107 */
+ { 0x2e0641b0, 0x800080 }, /* 108 */
+ { 0x2e0641b4, 0x800080 }, /* 109 */
+ { 0x2e0641b8, 0x800080 }, /* 110 */
+ { 0x2e0641bc, 0x800080 }, /* 111 */
+ { 0x2e0641c0, 0x800080 }, /* 112 */
+ { 0x2e0641c4, 0x800080 }, /* 113 */
+ { 0x2e0641c8, 0x1c40080 }, /* 114 */
+ { 0x2e0641cc, 0x1a00001 }, /* 115 */
+ { 0x2e0641d0, 0x0 }, /* 116 */
+ { 0x2e0641d4, 0x10000 }, /* 117 */
+ { 0x2e0641d8, 0x80200 }, /* 118 */
+ { 0x2e0641dc, 0x0 }, /* 119 */
+ { 0x2e0641e0, 0x0 }, /* 120 */
+ { 0x2e064400, 0x4f0 }, /* 256 */
+ { 0x2e064404, 0x0 }, /* 257 */
+ { 0x2e064408, 0x1030200 }, /* 258 */
+ { 0x2e06440c, 0x0 }, /* 259 */
+ { 0x2e064410, 0x0 }, /* 260 */
+ { 0x2e064414, 0x3000000 }, /* 261 */
+ { 0x2e064418, 0x1000001 }, /* 262 */
+ { 0x2e06441c, 0x3000400 }, /* 263 */
+ { 0x2e064420, 0x1 }, /* 264 */
+ { 0x2e064424, 0x1 }, /* 265 */
+ { 0x2e064428, 0x0 }, /* 266 */
+ { 0x2e06442c, 0x0 }, /* 267 */
+ { 0x2e064430, 0x10000 }, /* 268 */
+ { 0x2e064434, 0x0 }, /* 269 */
+ { 0x2e064438, 0xc00004 }, /* 270 */
+ { 0x2e06443c, 0xcc0008 }, /* 271 */
+ { 0x2e064440, 0x660601 }, /* 272 */
+ { 0x2e064444, 0x3 }, /* 273 */
+ { 0x2e064448, 0x0 }, /* 274 */
+ { 0x2e06444c, 0x1 }, /* 275 */
+ { 0x2e064450, 0xaaaa }, /* 276 */
+ { 0x2e064454, 0x5555 }, /* 277 */
+ { 0x2e064458, 0xb5b5 }, /* 278 */
+ { 0x2e06445c, 0x4a4a }, /* 279 */
+ { 0x2e064460, 0x5656 }, /* 280 */
+ { 0x2e064464, 0xa9a9 }, /* 281 */
+ { 0x2e064468, 0xb7b7 }, /* 282 */
+ { 0x2e06446c, 0x4848 }, /* 283 */
+ { 0x2e064470, 0x0 }, /* 284 */
+ { 0x2e064474, 0x0 }, /* 285 */
+ { 0x2e064478, 0x8000000 }, /* 286 */
+ { 0x2e06447c, 0x4010008 }, /* 287 */
+ { 0x2e064480, 0x408 }, /* 288 */
+ { 0x2e064484, 0x3102000 }, /* 289 */
+ { 0x2e064488, 0xc0020 }, /* 290 */
+ { 0x2e06448c, 0x10000 }, /* 291 */
+ { 0x2e064490, 0x55555555 }, /* 292 */
+ { 0x2e064494, 0xaaaaaaaa }, /* 293 */
+ { 0x2e064498, 0x55555555 }, /* 294 */
+ { 0x2e06449c, 0xaaaaaaaa }, /* 295 */
+ { 0x2e0644a0, 0x5555 }, /* 296 */
+ { 0x2e0644a4, 0x1000100 }, /* 297 */
+ { 0x2e0644a8, 0x800180 }, /* 298 */
+ { 0x2e0644ac, 0x0 }, /* 299 */
+ { 0x2e0644b0, 0x0 }, /* 300 */
+ { 0x2e0644b4, 0x0 }, /* 301 */
+ { 0x2e0644b8, 0x0 }, /* 302 */
+ { 0x2e0644bc, 0x0 }, /* 303 */
+ { 0x2e0644c0, 0x0 }, /* 304 */
+ { 0x2e0644c4, 0x0 }, /* 305 */
+ { 0x2e0644c8, 0x0 }, /* 306 */
+ { 0x2e0644cc, 0x0 }, /* 307 */
+ { 0x2e0644d0, 0x0 }, /* 308 */
+ { 0x2e0644d4, 0x0 }, /* 309 */
+ { 0x2e0644d8, 0x0 }, /* 310 */
+ { 0x2e0644dc, 0x0 }, /* 311 */
+ { 0x2e0644e0, 0x0 }, /* 312 */
+ { 0x2e0644e4, 0x0 }, /* 313 */
+ { 0x2e0644e8, 0x0 }, /* 314 */
+ { 0x2e0644ec, 0x0 }, /* 315 */
+ { 0x2e0644f0, 0x0 }, /* 316 */
+ { 0x2e0644f4, 0x0 }, /* 317 */
+ { 0x2e0644f8, 0x0 }, /* 318 */
+ { 0x2e0644fc, 0x0 }, /* 319 */
+ { 0x2e064500, 0x4 }, /* 320 */
+ { 0x2e064504, 0x0 }, /* 321 */
+ { 0x2e064508, 0x0 }, /* 322 */
+ { 0x2e06450c, 0x0 }, /* 323 */
+ { 0x2e064510, 0x0 }, /* 324 */
+ { 0x2e064514, 0x0 }, /* 325 */
+ { 0x2e064518, 0x0 }, /* 326 */
+ { 0x2e06451c, 0x41f07ff }, /* 327 */
+ { 0x2e064520, 0x1 }, /* 328 */
+ { 0x2e064524, 0x1cc0800 }, /* 329 */
+ { 0x2e064528, 0x3003cc08 }, /* 330 */
+ { 0x2e06452c, 0x2000014e }, /* 331 */
+ { 0x2e064530, 0x7ff0200 }, /* 332 */
+ { 0x2e064534, 0x301 }, /* 333 */
+ { 0x2e064538, 0x0 }, /* 334 */
+ { 0x2e06453c, 0x0 }, /* 335 */
+ { 0x2e064540, 0x30000 }, /* 336 */
+ { 0x2e064544, 0x0 }, /* 337 */
+ { 0x2e064548, 0x0 }, /* 338 */
+ { 0x2e06454c, 0x0 }, /* 339 */
+ { 0x2e064550, 0x0 }, /* 340 */
+ { 0x2e064554, 0x2000000 }, /* 341 */
+ { 0x2e064558, 0x51515042 }, /* 342 */
+ { 0x2e06455c, 0x31c06000 }, /* 343 */
+ { 0x2e064560, 0x9bf007f }, /* 344 */
+ { 0x2e064564, 0xc0c001 }, /* 345 */
+ { 0x2e064568, 0x3020000 }, /* 346 */
+ { 0x2e06456c, 0x10001000 }, /* 347 */
+ { 0x2e064570, 0xc043e42 }, /* 348 */
+ { 0x2e064574, 0xf0c1701 }, /* 349 */
+ { 0x2e064578, 0x1000140 }, /* 350 */
+ { 0x2e06457c, 0xc000120 }, /* 351 */
+ { 0x2e064580, 0x188 }, /* 352 */
+ { 0x2e064584, 0x3200203 }, /* 353 */
+ { 0x2e064588, 0x30217465 }, /* 354 */
+ { 0x2e06458c, 0x8 }, /* 355 */
+ { 0x2e064590, 0x3080308 }, /* 356 */
+ { 0x2e064594, 0x3080308 }, /* 357 */
+ { 0x2e064598, 0x3080308 }, /* 358 */
+ { 0x2e06459c, 0x3080308 }, /* 359 */
+ { 0x2e0645a0, 0x308 }, /* 360 */
+ { 0x2e0645a4, 0x8000 }, /* 361 */
+ { 0x2e0645a8, 0x800080 }, /* 362 */
+ { 0x2e0645ac, 0x800080 }, /* 363 */
+ { 0x2e0645b0, 0x800080 }, /* 364 */
+ { 0x2e0645b4, 0x800080 }, /* 365 */
+ { 0x2e0645b8, 0x800080 }, /* 366 */
+ { 0x2e0645bc, 0x800080 }, /* 367 */
+ { 0x2e0645c0, 0x800080 }, /* 368 */
+ { 0x2e0645c4, 0x800080 }, /* 369 */
+ { 0x2e0645c8, 0x1c40080 }, /* 370 */
+ { 0x2e0645cc, 0x1a00001 }, /* 371 */
+ { 0x2e0645d0, 0x0 }, /* 372 */
+ { 0x2e0645d4, 0x10000 }, /* 373 */
+ { 0x2e0645d8, 0x80200 }, /* 374 */
+ { 0x2e0645dc, 0x0 }, /* 375 */
+ { 0x2e0645e0, 0x0 }, /* 376 */
+ { 0x2e064800, 0x4f0 }, /* 512 */
+ { 0x2e064804, 0x0 }, /* 513 */
+ { 0x2e064808, 0x1030200 }, /* 514 */
+ { 0x2e06480c, 0x0 }, /* 515 */
+ { 0x2e064810, 0x0 }, /* 516 */
+ { 0x2e064814, 0x3000000 }, /* 517 */
+ { 0x2e064818, 0x1000001 }, /* 518 */
+ { 0x2e06481c, 0x3000400 }, /* 519 */
+ { 0x2e064820, 0x1 }, /* 520 */
+ { 0x2e064824, 0x1 }, /* 521 */
+ { 0x2e064828, 0x0 }, /* 522 */
+ { 0x2e06482c, 0x0 }, /* 523 */
+ { 0x2e064830, 0x10000 }, /* 524 */
+ { 0x2e064834, 0x0 }, /* 525 */
+ { 0x2e064838, 0xc00004 }, /* 526 */
+ { 0x2e06483c, 0xcc0008 }, /* 527 */
+ { 0x2e064840, 0x660601 }, /* 528 */
+ { 0x2e064844, 0x3 }, /* 529 */
+ { 0x2e064848, 0x0 }, /* 530 */
+ { 0x2e06484c, 0x1 }, /* 531 */
+ { 0x2e064850, 0xaaaa }, /* 532 */
+ { 0x2e064854, 0x5555 }, /* 533 */
+ { 0x2e064858, 0xb5b5 }, /* 534 */
+ { 0x2e06485c, 0x4a4a }, /* 535 */
+ { 0x2e064860, 0x5656 }, /* 536 */
+ { 0x2e064864, 0xa9a9 }, /* 537 */
+ { 0x2e064868, 0xb7b7 }, /* 538 */
+ { 0x2e06486c, 0x4848 }, /* 539 */
+ { 0x2e064870, 0x0 }, /* 540 */
+ { 0x2e064874, 0x0 }, /* 541 */
+ { 0x2e064878, 0x8000000 }, /* 542 */
+ { 0x2e06487c, 0x4010008 }, /* 543 */
+ { 0x2e064880, 0x408 }, /* 544 */
+ { 0x2e064884, 0x3102000 }, /* 545 */
+ { 0x2e064888, 0xc0020 }, /* 546 */
+ { 0x2e06488c, 0x10000 }, /* 547 */
+ { 0x2e064890, 0x55555555 }, /* 548 */
+ { 0x2e064894, 0xaaaaaaaa }, /* 549 */
+ { 0x2e064898, 0x55555555 }, /* 550 */
+ { 0x2e06489c, 0xaaaaaaaa }, /* 551 */
+ { 0x2e0648a0, 0x5555 }, /* 552 */
+ { 0x2e0648a4, 0x1000100 }, /* 553 */
+ { 0x2e0648a8, 0x800180 }, /* 554 */
+ { 0x2e0648ac, 0x1 }, /* 555 */
+ { 0x2e0648b0, 0x0 }, /* 556 */
+ { 0x2e0648b4, 0x0 }, /* 557 */
+ { 0x2e0648b8, 0x0 }, /* 558 */
+ { 0x2e0648bc, 0x0 }, /* 559 */
+ { 0x2e0648c0, 0x0 }, /* 560 */
+ { 0x2e0648c4, 0x0 }, /* 561 */
+ { 0x2e0648c8, 0x0 }, /* 562 */
+ { 0x2e0648cc, 0x0 }, /* 563 */
+ { 0x2e0648d0, 0x0 }, /* 564 */
+ { 0x2e0648d4, 0x0 }, /* 565 */
+ { 0x2e0648d8, 0x0 }, /* 566 */
+ { 0x2e0648dc, 0x0 }, /* 567 */
+ { 0x2e0648e0, 0x0 }, /* 568 */
+ { 0x2e0648e4, 0x0 }, /* 569 */
+ { 0x2e0648e8, 0x0 }, /* 570 */
+ { 0x2e0648ec, 0x0 }, /* 571 */
+ { 0x2e0648f0, 0x0 }, /* 572 */
+ { 0x2e0648f4, 0x0 }, /* 573 */
+ { 0x2e0648f8, 0x0 }, /* 574 */
+ { 0x2e0648fc, 0x0 }, /* 575 */
+ { 0x2e064900, 0x4 }, /* 576 */
+ { 0x2e064904, 0x0 }, /* 577 */
+ { 0x2e064908, 0x0 }, /* 578 */
+ { 0x2e06490c, 0x0 }, /* 579 */
+ { 0x2e064910, 0x0 }, /* 580 */
+ { 0x2e064914, 0x0 }, /* 581 */
+ { 0x2e064918, 0x0 }, /* 582 */
+ { 0x2e06491c, 0x41f07ff }, /* 583 */
+ { 0x2e064920, 0x1 }, /* 584 */
+ { 0x2e064924, 0x1cc0800 }, /* 585 */
+ { 0x2e064928, 0x3003cc08 }, /* 586 */
+ { 0x2e06492c, 0x2000014e }, /* 587 */
+ { 0x2e064930, 0x7ff0200 }, /* 588 */
+ { 0x2e064934, 0x301 }, /* 589 */
+ { 0x2e064938, 0x0 }, /* 590 */
+ { 0x2e06493c, 0x0 }, /* 591 */
+ { 0x2e064940, 0x30000 }, /* 592 */
+ { 0x2e064944, 0x0 }, /* 593 */
+ { 0x2e064948, 0x0 }, /* 594 */
+ { 0x2e06494c, 0x0 }, /* 595 */
+ { 0x2e064950, 0x0 }, /* 596 */
+ { 0x2e064954, 0x2000000 }, /* 597 */
+ { 0x2e064958, 0x51515042 }, /* 598 */
+ { 0x2e06495c, 0x31c06000 }, /* 599 */
+ { 0x2e064960, 0x9bf007f }, /* 600 */
+ { 0x2e064964, 0xc0c001 }, /* 601 */
+ { 0x2e064968, 0x3020000 }, /* 602 */
+ { 0x2e06496c, 0x10001000 }, /* 603 */
+ { 0x2e064970, 0xc043e42 }, /* 604 */
+ { 0x2e064974, 0xf0c1701 }, /* 605 */
+ { 0x2e064978, 0x1000140 }, /* 606 */
+ { 0x2e06497c, 0xc000120 }, /* 607 */
+ { 0x2e064980, 0x188 }, /* 608 */
+ { 0x2e064984, 0x3200203 }, /* 609 */
+ { 0x2e064988, 0x75436012 }, /* 610 */
+ { 0x2e06498c, 0x8 }, /* 611 */
+ { 0x2e064990, 0x3080308 }, /* 612 */
+ { 0x2e064994, 0x3080308 }, /* 613 */
+ { 0x2e064998, 0x3080308 }, /* 614 */
+ { 0x2e06499c, 0x3080308 }, /* 615 */
+ { 0x2e0649a0, 0x308 }, /* 616 */
+ { 0x2e0649a4, 0x8000 }, /* 617 */
+ { 0x2e0649a8, 0x800080 }, /* 618 */
+ { 0x2e0649ac, 0x800080 }, /* 619 */
+ { 0x2e0649b0, 0x800080 }, /* 620 */
+ { 0x2e0649b4, 0x800080 }, /* 621 */
+ { 0x2e0649b8, 0x800080 }, /* 622 */
+ { 0x2e0649bc, 0x800080 }, /* 623 */
+ { 0x2e0649c0, 0x800080 }, /* 624 */
+ { 0x2e0649c4, 0x800080 }, /* 625 */
+ { 0x2e0649c8, 0x1c40080 }, /* 626 */
+ { 0x2e0649cc, 0x1a00001 }, /* 627 */
+ { 0x2e0649d0, 0x0 }, /* 628 */
+ { 0x2e0649d4, 0x10000 }, /* 629 */
+ { 0x2e0649d8, 0x80200 }, /* 630 */
+ { 0x2e0649dc, 0x0 }, /* 631 */
+ { 0x2e0649e0, 0x0 }, /* 632 */
+ { 0x2e064c00, 0x4f0 }, /* 768 */
+ { 0x2e064c04, 0x0 }, /* 769 */
+ { 0x2e064c08, 0x1030200 }, /* 770 */
+ { 0x2e064c0c, 0x0 }, /* 771 */
+ { 0x2e064c10, 0x0 }, /* 772 */
+ { 0x2e064c14, 0x3000000 }, /* 773 */
+ { 0x2e064c18, 0x1000001 }, /* 774 */
+ { 0x2e064c1c, 0x3000400 }, /* 775 */
+ { 0x2e064c20, 0x1 }, /* 776 */
+ { 0x2e064c24, 0x1 }, /* 777 */
+ { 0x2e064c28, 0x0 }, /* 778 */
+ { 0x2e064c2c, 0x0 }, /* 779 */
+ { 0x2e064c30, 0x10000 }, /* 780 */
+ { 0x2e064c34, 0x0 }, /* 781 */
+ { 0x2e064c38, 0xc00004 }, /* 782 */
+ { 0x2e064c3c, 0xcc0008 }, /* 783 */
+ { 0x2e064c40, 0x660601 }, /* 784 */
+ { 0x2e064c44, 0x3 }, /* 785 */
+ { 0x2e064c48, 0x0 }, /* 786 */
+ { 0x2e064c4c, 0x1 }, /* 787 */
+ { 0x2e064c50, 0xaaaa }, /* 788 */
+ { 0x2e064c54, 0x5555 }, /* 789 */
+ { 0x2e064c58, 0xb5b5 }, /* 790 */
+ { 0x2e064c5c, 0x4a4a }, /* 791 */
+ { 0x2e064c60, 0x5656 }, /* 792 */
+ { 0x2e064c64, 0xa9a9 }, /* 793 */
+ { 0x2e064c68, 0xb7b7 }, /* 794 */
+ { 0x2e064c6c, 0x4848 }, /* 795 */
+ { 0x2e064c70, 0x0 }, /* 796 */
+ { 0x2e064c74, 0x0 }, /* 797 */
+ { 0x2e064c78, 0x8000000 }, /* 798 */
+ { 0x2e064c7c, 0x4010008 }, /* 799 */
+ { 0x2e064c80, 0x408 }, /* 800 */
+ { 0x2e064c84, 0x3102000 }, /* 801 */
+ { 0x2e064c88, 0xc0020 }, /* 802 */
+ { 0x2e064c8c, 0x10000 }, /* 803 */
+ { 0x2e064c90, 0x55555555 }, /* 804 */
+ { 0x2e064c94, 0xaaaaaaaa }, /* 805 */
+ { 0x2e064c98, 0x55555555 }, /* 806 */
+ { 0x2e064c9c, 0xaaaaaaaa }, /* 807 */
+ { 0x2e064ca0, 0x5555 }, /* 808 */
+ { 0x2e064ca4, 0x1000100 }, /* 809 */
+ { 0x2e064ca8, 0x800180 }, /* 810 */
+ { 0x2e064cac, 0x0 }, /* 811 */
+ { 0x2e064cb0, 0x0 }, /* 812 */
+ { 0x2e064cb4, 0x0 }, /* 813 */
+ { 0x2e064cb8, 0x0 }, /* 814 */
+ { 0x2e064cbc, 0x0 }, /* 815 */
+ { 0x2e064cc0, 0x0 }, /* 816 */
+ { 0x2e064cc4, 0x0 }, /* 817 */
+ { 0x2e064cc8, 0x0 }, /* 818 */
+ { 0x2e064ccc, 0x0 }, /* 819 */
+ { 0x2e064cd0, 0x0 }, /* 820 */
+ { 0x2e064cd4, 0x0 }, /* 821 */
+ { 0x2e064cd8, 0x0 }, /* 822 */
+ { 0x2e064cdc, 0x0 }, /* 823 */
+ { 0x2e064ce0, 0x0 }, /* 824 */
+ { 0x2e064ce4, 0x0 }, /* 825 */
+ { 0x2e064ce8, 0x0 }, /* 826 */
+ { 0x2e064cec, 0x0 }, /* 827 */
+ { 0x2e064cf0, 0x0 }, /* 828 */
+ { 0x2e064cf4, 0x0 }, /* 829 */
+ { 0x2e064cf8, 0x0 }, /* 830 */
+ { 0x2e064cfc, 0x0 }, /* 831 */
+ { 0x2e064d00, 0x4 }, /* 832 */
+ { 0x2e064d04, 0x0 }, /* 833 */
+ { 0x2e064d08, 0x0 }, /* 834 */
+ { 0x2e064d0c, 0x0 }, /* 835 */
+ { 0x2e064d10, 0x0 }, /* 836 */
+ { 0x2e064d14, 0x0 }, /* 837 */
+ { 0x2e064d18, 0x0 }, /* 838 */
+ { 0x2e064d1c, 0x41f07ff }, /* 839 */
+ { 0x2e064d20, 0x1 }, /* 840 */
+ { 0x2e064d24, 0x1cc0800 }, /* 841 */
+ { 0x2e064d28, 0x3003cc08 }, /* 842 */
+ { 0x2e064d2c, 0x2000014e }, /* 843 */
+ { 0x2e064d30, 0x7ff0200 }, /* 844 */
+ { 0x2e064d34, 0x301 }, /* 845 */
+ { 0x2e064d38, 0x0 }, /* 846 */
+ { 0x2e064d3c, 0x0 }, /* 847 */
+ { 0x2e064d40, 0x30000 }, /* 848 */
+ { 0x2e064d44, 0x0 }, /* 849 */
+ { 0x2e064d48, 0x0 }, /* 850 */
+ { 0x2e064d4c, 0x0 }, /* 851 */
+ { 0x2e064d50, 0x0 }, /* 852 */
+ { 0x2e064d54, 0x2000000 }, /* 853 */
+ { 0x2e064d58, 0x51515042 }, /* 854 */
+ { 0x2e064d5c, 0x31c06000 }, /* 855 */
+ { 0x2e064d60, 0x9bf007f }, /* 856 */
+ { 0x2e064d64, 0xc0c001 }, /* 857 */
+ { 0x2e064d68, 0x3020000 }, /* 858 */
+ { 0x2e064d6c, 0x10001000 }, /* 859 */
+ { 0x2e064d70, 0xc043e42 }, /* 860 */
+ { 0x2e064d74, 0xf0c1701 }, /* 861 */
+ { 0x2e064d78, 0x1000140 }, /* 862 */
+ { 0x2e064d7c, 0xc000120 }, /* 863 */
+ { 0x2e064d80, 0x188 }, /* 864 */
+ { 0x2e064d84, 0x3200203 }, /* 865 */
+ { 0x2e064d88, 0x32017465 }, /* 866 */
+ { 0x2e064d8c, 0x8 }, /* 867 */
+ { 0x2e064d90, 0x3080308 }, /* 868 */
+ { 0x2e064d94, 0x3080308 }, /* 869 */
+ { 0x2e064d98, 0x3080308 }, /* 870 */
+ { 0x2e064d9c, 0x3080308 }, /* 871 */
+ { 0x2e064da0, 0x308 }, /* 872 */
+ { 0x2e064da4, 0x8000 }, /* 873 */
+ { 0x2e064da8, 0x800080 }, /* 874 */
+ { 0x2e064dac, 0x800080 }, /* 875 */
+ { 0x2e064db0, 0x800080 }, /* 876 */
+ { 0x2e064db4, 0x800080 }, /* 877 */
+ { 0x2e064db8, 0x800080 }, /* 878 */
+ { 0x2e064dbc, 0x800080 }, /* 879 */
+ { 0x2e064dc0, 0x800080 }, /* 880 */
+ { 0x2e064dc4, 0x800080 }, /* 881 */
+ { 0x2e064dc8, 0x1c40080 }, /* 882 */
+ { 0x2e064dcc, 0x1a00001 }, /* 883 */
+ { 0x2e064dd0, 0x0 }, /* 884 */
+ { 0x2e064dd4, 0x10000 }, /* 885 */
+ { 0x2e064dd8, 0x80200 }, /* 886 */
+ { 0x2e064ddc, 0x0 }, /* 887 */
+ { 0x2e064de0, 0x0 }, /* 888 */
+ { 0x2e065000, 0x0 }, /* 1024 */
+ { 0x2e065004, 0x0 }, /* 1025 */
+ { 0x2e065008, 0x0 }, /* 1026 */
+ { 0x2e06500c, 0x0 }, /* 1027 */
+ { 0x2e065010, 0x0 }, /* 1028 */
+ { 0x2e065014, 0x100 }, /* 1029 */
+ { 0x2e065018, 0x201 }, /* 1030 */
+ { 0x2e06501c, 0x0 }, /* 1031 */
+ { 0x2e065020, 0x0 }, /* 1032 */
+ { 0x2e065024, 0x0 }, /* 1033 */
+ { 0x2e065028, 0x0 }, /* 1034 */
+ { 0x2e06502c, 0x400000 }, /* 1035 */
+ { 0x2e065030, 0x80 }, /* 1036 */
+ { 0x2e065034, 0xdcba98 }, /* 1037 */
+ { 0x2e065038, 0x3000000 }, /* 1038 */
+ { 0x2e06503c, 0x0 }, /* 1039 */
+ { 0x2e065040, 0x0 }, /* 1040 */
+ { 0x2e065044, 0x0 }, /* 1041 */
+ { 0x2e065048, 0x0 }, /* 1042 */
+ { 0x2e06504c, 0x2a }, /* 1043 */
+ { 0x2e065050, 0x15 }, /* 1044 */
+ { 0x2e065054, 0x15 }, /* 1045 */
+ { 0x2e065058, 0x2a }, /* 1046 */
+ { 0x2e06505c, 0x33 }, /* 1047 */
+ { 0x2e065060, 0xc }, /* 1048 */
+ { 0x2e065064, 0xc }, /* 1049 */
+ { 0x2e065068, 0x33 }, /* 1050 */
+ { 0x2e06506c, 0x543210 }, /* 1051 */
+ { 0x2e065070, 0x3f0000 }, /* 1052 */
+ { 0x2e065074, 0xf013f }, /* 1053 */
+ { 0x2e065078, 0xf }, /* 1054 */
+ { 0x2e06507c, 0x3cc }, /* 1055 */
+ { 0x2e065080, 0x30000 }, /* 1056 */
+ { 0x2e065084, 0x300 }, /* 1057 */
+ { 0x2e065088, 0x300 }, /* 1058 */
+ { 0x2e06508c, 0x300 }, /* 1059 */
+ { 0x2e065090, 0x300 }, /* 1060 */
+ { 0x2e065094, 0x300 }, /* 1061 */
+ { 0x2e065098, 0x42080010 }, /* 1062 */
+ { 0x2e06509c, 0x33e }, /* 1063 */
+ { 0x2e0650a0, 0x2 }, /* 1064 */
+ { 0x2e065400, 0x0 }, /* 1280 */
+ { 0x2e065404, 0x0 }, /* 1281 */
+ { 0x2e065408, 0x0 }, /* 1282 */
+ { 0x2e06540c, 0x0 }, /* 1283 */
+ { 0x2e065410, 0x0 }, /* 1284 */
+ { 0x2e065414, 0x100 }, /* 1285 */
+ { 0x2e065418, 0x201 }, /* 1286 */
+ { 0x2e06541c, 0x0 }, /* 1287 */
+ { 0x2e065420, 0x0 }, /* 1288 */
+ { 0x2e065424, 0x0 }, /* 1289 */
+ { 0x2e065428, 0x0 }, /* 1290 */
+ { 0x2e06542c, 0x400000 }, /* 1291 */
+ { 0x2e065430, 0x80 }, /* 1292 */
+ { 0x2e065434, 0xdcba98 }, /* 1293 */
+ { 0x2e065438, 0x3000000 }, /* 1294 */
+ { 0x2e06543c, 0x0 }, /* 1295 */
+ { 0x2e065440, 0x0 }, /* 1296 */
+ { 0x2e065444, 0x0 }, /* 1297 */
+ { 0x2e065448, 0x0 }, /* 1298 */
+ { 0x2e06544c, 0x2a }, /* 1299 */
+ { 0x2e065450, 0x15 }, /* 1300 */
+ { 0x2e065454, 0x15 }, /* 1301 */
+ { 0x2e065458, 0x2a }, /* 1302 */
+ { 0x2e06545c, 0x33 }, /* 1303 */
+ { 0x2e065460, 0xc }, /* 1304 */
+ { 0x2e065464, 0xc }, /* 1305 */
+ { 0x2e065468, 0x33 }, /* 1306 */
+ { 0x2e06546c, 0x543210 }, /* 1307 */
+ { 0x2e065470, 0x3f0000 }, /* 1308 */
+ { 0x2e065474, 0xf013f }, /* 1309 */
+ { 0x2e065478, 0xf }, /* 1310 */
+ { 0x2e06547c, 0x3cc }, /* 1311 */
+ { 0x2e065480, 0x30000 }, /* 1312 */
+ { 0x2e065484, 0x300 }, /* 1313 */
+ { 0x2e065488, 0x300 }, /* 1314 */
+ { 0x2e06548c, 0x300 }, /* 1315 */
+ { 0x2e065490, 0x300 }, /* 1316 */
+ { 0x2e065494, 0x300 }, /* 1317 */
+ { 0x2e065498, 0x42080010 }, /* 1318 */
+ { 0x2e06549c, 0x33e }, /* 1319 */
+ { 0x2e0654a0, 0x2 }, /* 1320 */
+ { 0x2e065800, 0x0 }, /* 1536 */
+ { 0x2e065804, 0x10100 }, /* 1537 */
+ { 0x2e065808, 0x0 }, /* 1538 */
+ { 0x2e06580c, 0x0 }, /* 1539 */
+ { 0x2e065810, 0x0 }, /* 1540 */
+ { 0x2e065814, 0x50000 }, /* 1541 */
+ { 0x2e065818, 0x4000100 }, /* 1542 */
+ { 0x2e06581c, 0x55 }, /* 1543 */
+ { 0x2e065820, 0x0 }, /* 1544 */
+ { 0x2e065824, 0x0 }, /* 1545 */
+ { 0x2e065828, 0x0 }, /* 1546 */
+ { 0x2e06582c, 0xf0001 }, /* 1547 */
+ { 0x2e065830, 0x280040 }, /* 1548 */
+ { 0x2e065834, 0x5002 }, /* 1549 */
+ { 0x2e065838, 0x10101 }, /* 1550 */
+ { 0x2e06583c, 0x0 }, /* 1551 */
+ { 0x2e065840, 0x90e0000 }, /* 1552 */
+ { 0x2e065844, 0x101010f }, /* 1553 */
+ { 0x2e065848, 0x10f0004 }, /* 1554 */
+ { 0x2e06584c, 0x0 }, /* 1555 */
+ { 0x2e065850, 0x0 }, /* 1556 */
+ { 0x2e065854, 0x64 }, /* 1557 */
+ { 0x2e065858, 0x0 }, /* 1558 */
+ { 0x2e06585c, 0x1000000 }, /* 1559 */
+ { 0x2e065860, 0x8040201 }, /* 1560 */
+ { 0x2e065864, 0x2010201 }, /* 1561 */
+ { 0x2e065868, 0xf0f0f }, /* 1562 */
+ { 0x2e06586c, 0x241b42 }, /* 1563 */
+ { 0x2e065870, 0x0 }, /* 1564 */
+ { 0x2e065874, 0x1020000 }, /* 1565 */
+ { 0x2e065878, 0x703 }, /* 1566 */
+ { 0x2e06587c, 0x54 }, /* 1567 */
+ { 0x2e065880, 0x4102000 }, /* 1568 */
+ { 0x2e065884, 0x24410 }, /* 1569 */
+ { 0x2e065888, 0x4410 }, /* 1570 */
+ { 0x2e06588c, 0x4410 }, /* 1571 */
+ { 0x2e065890, 0x4410 }, /* 1572 */
+ { 0x2e065894, 0x4410 }, /* 1573 */
+ { 0x2e065898, 0x4410 }, /* 1574 */
+ { 0x2e06589c, 0x4410 }, /* 1575 */
+ { 0x2e0658a0, 0x4410 }, /* 1576 */
+ { 0x2e0658a4, 0x4410 }, /* 1577 */
+ { 0x2e0658a8, 0x0 }, /* 1578 */
+ { 0x2e0658ac, 0x0 }, /* 1579 */
+ { 0x2e0658b0, 0x60000 }, /* 1580 */
+ { 0x2e0658b4, 0x0 }, /* 1581 */
+ { 0x2e0658b8, 0x96 }, /* 1582 */
+ { 0x2e0658bc, 0x10000 }, /* 1583 */
+ { 0x2e0658c0, 0x8 }, /* 1584 */
+ { 0x2e0658c4, 0x0 }, /* 1585 */
+ { 0x2e0658c8, 0x0 }, /* 1586 */
+ { 0x2e0658cc, 0x0 }, /* 1587 */
+ { 0x2e0658d0, 0x0 }, /* 1588 */
+ { 0x2e0658d4, 0x0 }, /* 1589 */
+ { 0x2e0658d8, 0x3000000 }, /* 1590 */
+ { 0x2e0658dc, 0x0 }, /* 1591 */
+ { 0x2e0658e0, 0x0 }, /* 1592 */
+ { 0x2e0658e4, 0x0 }, /* 1593 */
+ { 0x2e0658e8, 0x4102006 }, /* 1594 */
+ { 0x2e0658ec, 0x41020 }, /* 1595 */
+ { 0x2e0658f0, 0x1c98c98 }, /* 1596 */
+ { 0x2e0658f4, 0x3f400000 }, /* 1597 */
+ { 0x2e0658f8, 0x3f3f1f3f }, /* 1598 */
+ { 0x2e0658fc, 0x1f }, /* 1599 */
+ { 0x2e065900, 0x0 }, /* 1600 */
+ { 0x2e065904, 0x0 }, /* 1601 */
+ { 0x2e065908, 0x0 }, /* 1602 */
+ { 0x2e06590c, 0x1 }, /* 1603 */
+ { 0x2e065910, 0x0 }, /* 1604 */
+ { 0x2e065914, 0x0 }, /* 1605 */
+ { 0x2e065918, 0x0 }, /* 1606 */
+ { 0x2e06591c, 0x1 }, /* 1607 */
+ { 0x2e065920, 0x76543210 }, /* 1608 */
+ { 0x2e065924, 0x10198 }, /* 1609 */
+ { 0x2e065928, 0x0 }, /* 1610 */
+ { 0x2e06592c, 0x0 }, /* 1611 */
+ { 0x2e065930, 0x0 }, /* 1612 */
+ { 0x2e065934, 0x40700 }, /* 1613 */
+ { 0x2e065938, 0x0 }, /* 1614 */
+ { 0x2e06593c, 0x0 }, /* 1615 */
+ { 0x2e065940, 0x0 }, /* 1616 */
+ { 0x2e065944, 0x0 }, /* 1617 */
+ { 0x2e065948, 0x0 }, /* 1618 */
+ { 0x2e06594c, 0x2 }, /* 1619 */
+ { 0x2e065950, 0x0 }, /* 1620 */
+ { 0x2e065954, 0x0 }, /* 1621 */
+ { 0x2e065958, 0xf3c3 }, /* 1622 */
+ { 0x2e06595c, 0x3 }, /* 1623 */
+ { 0x2e065960, 0x0 }, /* 1624 */
+ { 0x2e065964, 0x1342 }, /* 1625 */
+ { 0x2e065968, 0x30209bf }, /* 1626 */
+ { 0x2e06596c, 0x30000 }, /* 1627 */
+ { 0x2e065970, 0x3000300 }, /* 1628 */
+ { 0x2e065974, 0x3000300 }, /* 1629 */
+ { 0x2e065978, 0x3000300 }, /* 1630 */
+ { 0x2e06597c, 0x3000300 }, /* 1631 */
+ { 0x2e065980, 0x300 }, /* 1632 */
+ { 0x2e065984, 0x300 }, /* 1633 */
+ { 0x2e065988, 0x300 }, /* 1634 */
+ { 0x2e06598c, 0x4bf77 }, /* 1635 */
+ { 0x2e065990, 0x77 }, /* 1636 */
+ { 0x2e065994, 0x27f }, /* 1637 */
+ { 0x2e065998, 0x0 }, /* 1638 */
+ { 0x2e06599c, 0x27f }, /* 1639 */
+ { 0x2e0659a0, 0x0 }, /* 1640 */
+ { 0x2e0659a4, 0x27f00 }, /* 1641 */
+ { 0x2e0659a8, 0x1980000 }, /* 1642 */
+ { 0x2e0659ac, 0x27fcc }, /* 1643 */
+ { 0x2e0659b0, 0x0 }, /* 1644 */
+ { 0x2e0659b4, 0x27f00 }, /* 1645 */
+ { 0x2e0659b8, 0x1980000 }, /* 1646 */
+ { 0x2e0659bc, 0x27f00 }, /* 1647 */
+ { 0x2e0659c0, 0x1980000 }, /* 1648 */
+ { 0x2e0659c4, 0x27f00 }, /* 1649 */
+ { 0x2e0659c8, 0x1980000 }, /* 1650 */
+ { 0x2e0659cc, 0x27f00 }, /* 1651 */
+ { 0x2e0659d0, 0x1980000 }, /* 1652 */
+ { 0x2e0659d4, 0x20040003 }, /* 1653 */
+};
+
+/** PHY_F2 settings **/
+struct dram_cfg_param ddr_phy_f2_cfg[] = {
+};
+
+/* ddr timing config params */
+struct dram_timing_info2 dram_timing = {
+ .ctl_cfg = ddr_ctl_cfg,
+ .ctl_cfg_num = ARRAY_SIZE(ddr_ctl_cfg),
+ .pi_cfg = ddr_pi_cfg,
+ .pi_cfg_num = ARRAY_SIZE(ddr_pi_cfg),
+ .phy_f1_cfg = ddr_phy_f1_cfg,
+ .phy_f1_cfg_num = ARRAY_SIZE(ddr_phy_f1_cfg),
+ .phy_f2_cfg = ddr_phy_f2_cfg,
+ .phy_f2_cfg_num = ARRAY_SIZE(ddr_phy_f2_cfg),
+ .fsp_table = { 96, 1056 },
+};
+
diff --git a/board/freescale/imx8ulp_evk/spl.c b/board/freescale/imx8ulp_evk/spl.c
new file mode 100644
index 0000000000..914986bbf8
--- /dev/null
+++ b/board/freescale/imx8ulp_evk/spl.c
@@ -0,0 +1,146 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2020 NXP
+ */
+
+#include <common.h>
+#include <init.h>
+#include <spl.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/imx8ulp-pins.h>
+#include <dm/uclass.h>
+#include <dm/device.h>
+#include <dm/uclass-internal.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
+#include <asm/arch/ddr.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void spl_dram_init(void)
+{
+ init_clk_ddr();
+ ddr_init(&dram_timing);
+}
+
+u32 spl_boot_device(void)
+{
+ return BOOT_DEVICE_BOOTROM;
+}
+
+#define PMIC_I2C_PAD_CTRL (PAD_CTL_PUS_UP | PAD_CTL_SRE_SLOW | PAD_CTL_ODE)
+#define PMIC_MODE_PAD_CTRL (PAD_CTL_PUS_UP)
+
+static iomux_cfg_t const pmic_pads[] = {
+ IMX8ULP_PAD_PTB7__PMIC0_MODE2 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL),
+ IMX8ULP_PAD_PTB8__PMIC0_MODE1 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL),
+ IMX8ULP_PAD_PTB9__PMIC0_MODE0 | MUX_PAD_CTRL(PMIC_MODE_PAD_CTRL),
+ IMX8ULP_PAD_PTB10__PMIC0_SDA | MUX_PAD_CTRL(PMIC_I2C_PAD_CTRL),
+ IMX8ULP_PAD_PTB11__PMIC0_SCL | MUX_PAD_CTRL(PMIC_I2C_PAD_CTRL),
+};
+
+static void setup_iomux_pmic(void)
+{
+ imx8ulp_iomux_setup_multiple_pads(pmic_pads, ARRAY_SIZE(pmic_pads));
+}
+
+static void xrdc_mrc_allow_access_sram1(void)
+{
+ ulong xrdc_base = 0x292f0000, off;
+
+ /* The MRC8 is for SRAM1 */
+ off = 0x2000 + 8 * 0x200;
+
+ writel(0x21000000, xrdc_base + off);
+ writel(0x2100FFFF, xrdc_base + off + 4);
+ writel(0x241249, xrdc_base + off + 8); /* allow for domain 2/3, HIFI DSP/LPAV */
+ writel(0x80000FFF, xrdc_base + off + 0x10);
+}
+
+static void xrdc_configure_mda(void)
+{
+ ulong xrdc_base = 0x292f0000, off;
+ u32 i = 0;
+
+ /* Set MDA3-5 for PXP, ENET, CAAM to DID 1*/
+ for (i = 3; i <= 5; i++) {
+ off = 0x800 + i * 0x20;
+ writel(0x200000A1, xrdc_base + off);
+ writel(0xA00000A1, xrdc_base + off);
+ }
+
+ /* Set MDA10 -15 to DID 3 for video */
+ for (i = 10; i <= 15; i++) {
+ off = 0x800 + i * 0x20;
+ writel(0x200000A3, xrdc_base + off);
+ writel(0xA00000A3, xrdc_base + off);
+ }
+}
+
+static void xrdc_mrc_allow_video_ddr(void)
+{
+ ulong xrdc_base = 0x292f0000, off;
+
+ /* The MRC6 is for video modules to ddr */
+ off = 0x2000 + 6 * 0x200;
+
+ writel(0x80000000, xrdc_base + off);
+ writel(0xffffffff, xrdc_base + off + 4);
+ writel(0x200, xrdc_base + off + 8); /* allow for domain 3 video */
+ writel(0x80000FFF, xrdc_base + off + 0x10);
+}
+
+void spl_board_init(void)
+{
+ struct udevice *dev;
+
+ uclass_find_first_device(UCLASS_MISC, &dev);
+
+ for (; dev; uclass_find_next_device(&dev)) {
+ if (device_probe(dev))
+ continue;
+ }
+
+ board_early_init_f();
+
+ preloader_console_init();
+
+ puts("Normal Boot\n");
+
+ if (get_boot_mode() == SINGLE_BOOT)
+ setup_iomux_pmic();
+
+ /* DDR initialization */
+ spl_dram_init();
+
+ xrdc_configure_mda();
+
+ xrdc_mrc_allow_access_sram1();
+
+ xrdc_mrc_allow_video_ddr();
+}
+
+#ifdef CONFIG_SPL_LOAD_FIT
+int board_fit_config_name_match(const char *name)
+{
+ /* Just empty function now - can't decide what to choose */
+ debug("%s: %s\n", __func__, name);
+
+ return 0;
+}
+#endif
+
+void board_init_f(ulong dummy)
+{
+ /* Clear the BSS. */
+ memset(__bss_start, 0, __bss_end - __bss_start);
+
+ timer_init();
+
+ arch_cpu_init();
+
+ board_init_r(NULL, 0);
+}
diff --git a/configs/imx8ulp_evk_defconfig b/configs/imx8ulp_evk_defconfig
new file mode 100644
index 0000000000..7711cfa3e7
--- /dev/null
+++ b/configs/imx8ulp_evk_defconfig
@@ -0,0 +1,103 @@
+CONFIG_ARM=y
+CONFIG_ARCH_IMX8ULP=y
+CONFIG_SYS_TEXT_BASE=0x80200000
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_DM_GPIO=y
+CONFIG_TARGET_IMX8ULP_EVK=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_SPL=y
+CONFIG_SPL_TEXT_BASE=0x22020000
+CONFIG_SPL_LOAD_IMX_CONTAINER=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_BOOTDELAY=0
+CONFIG_DEFAULT_FDT_FILE="imx8ulp-evk.dtb"
+CONFIG_SPL_BOARD_INIT=y
+CONFIG_SPL_SEPARATE_BSS=y
+#CONFIG_SPL_RAM_SUPPORT=y
+#CONFIG_SPL_RAM_DEVICE=y
+#CONFIG_SPL_MMC_SUPPORT=y
+
+CONFIG_SPL_BOOTROM_SUPPORT=y
+CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x88000000
+
+CONFIG_HUSH_PARSER=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="imx8ulp-evk"
+CONFIG_SPL_DM=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_IMX_LPI2C=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_PINCTRL_IMX8ULP=y
+CONFIG_DM_SERIAL=y
+CONFIG_FSL_LPUART=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_IO_VOLTAGE=y
+CONFIG_FSL_ESDHC_IMX=y
+CONFIG_FSL_USDHC=y
+CONFIG_CMD_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SPL_SYS_ICACHE_OFF=y
+CONFIG_SPL_SYS_DCACHE_OFF=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_MISC=y
+
+CONFIG_CMD_I2C=y
+CONFIG_CMD_FUSE=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_REGULATOR=y
+CONFIG_BAUDRATE=115200
+
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_ENV_SIZE=0x2000
+CONFIG_ENV_OFFSET=0x400000
+CONFIG_ENV_SECT_SIZE=0x10000
+
+CONFIG_ULP_WATCHDOG=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+
+CONFIG_CMD_SF=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_DM_SPI=y
+CONFIG_NXP_FSPI=y
+CONFIG_SPI=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SF_DEFAULT_BUS=0
+CONFIG_SF_DEFAULT_CS=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SF_DEFAULT_MODE=0
+
+CONFIG_IMX_RGPIO2P=y
+CONFIG_USE_ARCH_MEMCPY=y
+
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_PHY_MICREL_KSZ8XXX=y
+CONFIG_DM_ETH=y
+CONFIG_FEC_MXC=y
+CONFIG_MII=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_PING=y
+CONFIG_NET_RANDOM_ETHADDR=y
+
+CONFIG_EFI_PARTITION=y
+
+CONFIG_DM_PCA953X=y
+CONFIG_SYS_MMC_ENV_DEV=2
+CONFIG_CMD_READ=y
diff --git a/include/configs/imx8ulp_evk.h b/include/configs/imx8ulp_evk.h
new file mode 100644
index 0000000000..3ccb78e1b6
--- /dev/null
+++ b/include/configs/imx8ulp_evk.h
@@ -0,0 +1,108 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2020 NXP
+ */
+
+#ifndef __IMX8ULP_EVK_H
+#define __IMX8ULP_EVK_H
+
+#include <linux/sizes.h>
+#include <asm/arch/imx-regs.h>
+
+#define CONFIG_SYS_BOOTM_LEN (SZ_64M)
+#define CONFIG_SPL_MAX_SIZE (148 * 1024)
+#define CONFIG_SYS_MONITOR_LEN (512 * 1024)
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR 0x300
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION 1
+#define CONFIG_SYS_UBOOT_BASE (QSPI0_AMBA_BASE + CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR * 512)
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SPL_LDSCRIPT "arch/arm/cpu/armv8/u-boot-spl.lds"
+#define CONFIG_SPL_STACK 0x22050000
+#define CONFIG_SPL_BSS_START_ADDR 0x22048000
+#define CONFIG_SPL_BSS_MAX_SIZE 0x2000 /* 8 KB */
+#define CONFIG_SYS_SPL_MALLOC_START 0x22040000
+#define CONFIG_SYS_SPL_MALLOC_SIZE 0x8000 /* 32 KB */
+
+#define CONFIG_MALLOC_F_ADDR 0x22040000
+
+#define CONFIG_SPL_LOAD_FIT_ADDRESS 0x95000000 /* SPL_RAM needed */
+
+#define CONFIG_SPL_ABORT_ON_RAW_IMAGE /* For RAW image gives a error info not panic */
+
+#endif
+
+#define CONFIG_SERIAL_TAG
+
+#define CONFIG_REMAKE_ELF
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
+
+/* ENET Config */
+#if defined(CONFIG_FEC_MXC)
+#define CONFIG_ETHPRIME "FEC"
+#define PHY_ANEG_TIMEOUT 20000
+
+#define CONFIG_FEC_XCV_TYPE RMII
+#define CONFIG_FEC_MXC_PHYADDR 1
+#define FEC_QUIRK_ENET_MAC
+
+#define IMX_FEC_BASE 0x29950000
+#endif
+
+#ifndef CONFIG_SPL_BUILD
+#define BOOT_TARGET_DEVICES(func) \
+ func(MMC, mmc, 2) \
+ func(MMC, mmc, 1) \
+ func(DHCP, dhcp, na)
+
+#include <config_distro_bootcmd.h>
+#endif
+
+/* Initial environment variables */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+ BOOTENV \
+ "scriptaddr=" __stringify(CONFIG_LOADADDR) "\0" \
+ "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0" \
+ "image=Image\0" \
+ "console=ttyLP1,115200 earlycon\0" \
+ "fdt_addr_r=0x83000000\0" \
+ "boot_fit=no\0" \
+ "fdtfile=imx8ulp-evk.dtb\0" \
+ "initrd_addr=0x83800000\0" \
+ "bootm_size=0x10000000\0" \
+ "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
+ "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+
+/* Link Definitions */
+#define CONFIG_LOADADDR 0x80480000
+
+#define CONFIG_SYS_LOAD_ADDR CONFIG_LOADADDR
+
+#define CONFIG_SYS_INIT_RAM_ADDR 0x80000000
+#define CONFIG_SYS_INIT_RAM_SIZE 0x80000
+#define CONFIG_SYS_INIT_SP_OFFSET (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
+#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
+
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_MMCROOT "/dev/mmcblk2p2"
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN (CONFIG_ENV_SIZE + SZ_16M)
+
+#define CONFIG_SYS_SDRAM_BASE 0x80000000
+#define PHYS_SDRAM 0x80000000
+#define PHYS_SDRAM_SIZE 0x80000000 /* 2GB DDR */
+
+/* Monitor Command Prompt */
+#define CONFIG_SYS_PROMPT_HUSH_PS2 "> "
+#define CONFIG_SYS_CBSIZE 2048
+#define CONFIG_SYS_MAXARGS 64
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+
+/* Using ULP WDOG for reset */
+#define WDOG_BASE_ADDR WDG3_RBASE
+#endif
--
2.30.0
More information about the U-Boot
mailing list