All of lore.kernel.org
 help / color / mirror / Atom feed
From: Peng Fan (OSS) <peng.fan@oss.nxp.com>
To: u-boot@lists.denx.de
Subject: [PATCH 37/37] arm: imx: add i.MX8ULP EVK support
Date: Mon, 12 Apr 2021 20:13:06 +0800	[thread overview]
Message-ID: <20210412121306.11484-38-peng.fan@oss.nxp.com> (raw)
In-Reply-To: <20210412121306.11484-1-peng.fan@oss.nxp.com>

From: Peng Fan <peng.fan@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@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 = <&reg_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 = <&ethphy>;
+	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@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

  parent reply	other threads:[~2021-04-12 12:13 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-04-12 12:12 [PATCH 00/37] imx: add i.MX8ULP support Peng Fan
2021-04-12 12:12 ` [PATCH 01/37] arm: imx: add i.MX8ULP basic Kconfig option Peng Fan
2021-04-12 12:12 ` [PATCH 02/37] arm: imx: add i.MX8ULP cpu type and helper Peng Fan
2021-04-12 12:12 ` [PATCH 03/37] arm: imx: sys_proto: move boot mode define to common header Peng Fan
2021-04-12 12:12 ` [PATCH 04/37] arm: imx8ulp: support print cpu info Peng Fan
2021-04-12 12:12 ` [PATCH 05/37] imx: imx8ulp: add get reset cause Peng Fan
2021-04-12 12:12 ` [PATCH 06/37] arm: imx: basic i.MX8ULP support Peng Fan
2021-04-12 12:12 ` [PATCH 07/37] arm: imx8: Move container parser and image to mach-imx common folder Peng Fan
2021-04-12 12:12 ` [PATCH 08/37] arm: imx8: Move container image header file to mach-imx Peng Fan
2021-04-12 12:12 ` [PATCH 09/37] arm: imx: parse-container: guard included header files Peng Fan
2021-04-12 12:12 ` [PATCH 10/37] arm: imx8ulp: add container support Peng Fan
2021-04-12 12:12 ` [PATCH 11/37] arm: imx: move container Kconfig under mach-imx Peng Fan
2021-04-12 12:12 ` [PATCH 12/37] driver: misc: Add MU and S400 API to communicate with Sentinel Peng Fan
2021-04-12 12:12 ` [PATCH 13/37] net: fec_mxc: support i.MX8ULP Peng Fan
2021-04-15  1:42   ` Ramon Fried
2021-04-12 12:12 ` [PATCH 14/37] pinctrl: Add pinctrl driver for imx8ulp Peng Fan
2021-04-12 12:12 ` [PATCH 15/37] driver: serial: fsl_lpuart: support i.MX8ULP Peng Fan
2021-04-12 12:12 ` [PATCH 16/37] arm: imx8ulp: add clock support Peng Fan
2021-04-12 12:12 ` [PATCH 17/37] drivers: mmc: fsl_esdhc_imx: support i.MX8ULP Peng Fan
2021-04-12 12:12 ` [PATCH 18/37] arm: imx8ulp: soc: Change to use CMC1 to get bootcfg Peng Fan
2021-04-12 12:12 ` [PATCH 19/37] arm: imx8ulp: Enable full L2 cache in SPL Peng Fan
2021-04-12 12:12 ` [PATCH 20/37] arm: imx8ulp: disable wdog3 Peng Fan
2021-04-12 12:12 ` [PATCH 21/37] arm: imx8ulp: Update the reset vector in u-boot Peng Fan
2021-04-12 12:12 ` [PATCH 22/37] drivers: misc: s400_api: Update S400_SUCCESS_IND to 0xd6 Peng Fan
2021-04-12 12:12 ` [PATCH 23/37] drivers: misc: imx8ulp: Add S400 API for image authentication Peng Fan
2021-04-12 12:12 ` [PATCH 24/37] drivers: misc: imx8ulp: Update S400 API for release RDC Peng Fan
2021-04-12 12:12 ` [PATCH 25/37] drivers: misc: s400_api: Update API for fuse read and write Peng Fan
2021-04-12 12:12 ` [PATCH 26/37] arm: imx8ulp: release and configure XRDC at early phase Peng Fan
2021-04-12 12:12 ` [PATCH 27/37] arm: imx8ulp: add xrdc support Peng Fan
2021-04-12 12:12 ` [PATCH 28/37] arm: imx8ulp: add trdc release request Peng Fan
2021-04-12 12:12 ` [PATCH 29/37] arm: imx8ulp: release trdc and assign lpav from RTD to APD Peng Fan
2021-04-12 12:12 ` [PATCH 30/37] arm: imx8ulp: Probe the S400 MU device in arch init Peng Fan
2021-04-12 12:13 ` [PATCH 31/37] arm: iMX8ULP: Add boot device relevant functions Peng Fan
2021-04-12 12:13 ` [PATCH 32/37] arm: imx8ulp: Allocate DCNANO and MIPI_DSI to AD domain Peng Fan
2021-04-12 12:13 ` [PATCH 33/37] arm: imx8ulp: add dummy imx_get_mac_from_fuse Peng Fan
2021-04-12 12:13 ` [PATCH 34/37] arm: imx8ulp: add iomuxc support Peng Fan
2021-04-12 12:13 ` [PATCH 35/37] driver: misc: imx8ulp: Add fuse driver for imx8ulp Peng Fan
2021-04-12 12:13 ` [PATCH 36/37] arm: dts: add i.MX8ULP dtsi Peng Fan
2021-04-12 12:13 ` Peng Fan [this message]
2021-04-23 16:57   ` [PATCH 37/37] arm: imx: add i.MX8ULP EVK support Fabio Estevam
2021-04-23 17:18     ` Fabio Estevam
2021-04-25  1:36       ` Peng Fan

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20210412121306.11484-38-peng.fan@oss.nxp.com \
    --to=peng.fan@oss.nxp.com \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.