MLK-22351 iMX8DXL: Add iMX8DXL phantom chip MEK board
authorYe Li <ye.li@nxp.com>
Wed, 12 Jun 2019 03:27:12 +0000 (20:27 -0700)
committerYe Li <ye.li@nxp.com>
Wed, 31 Jul 2019 10:00:37 +0000 (03:00 -0700)
The iMX8DXL phantom chip is 15x15 iMX8QXP, so we will use 8QXP as SOC,
add configs and codes for the new board.

Signed-off-by: Ye Li <ye.li@nxp.com>
12 files changed:
arch/arm/dts/Makefile
arch/arm/dts/fsl-imx8dxl-phantom-mek-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/fsl-imx8dxl-phantom-mek.dts [new file with mode: 0644]
arch/arm/mach-imx/imx8/Kconfig
board/freescale/imx8dxl_phantom_mek/Kconfig [new file with mode: 0644]
board/freescale/imx8dxl_phantom_mek/Makefile [new file with mode: 0644]
board/freescale/imx8dxl_phantom_mek/imx8dxl_phantom_mek.c [new file with mode: 0644]
board/freescale/imx8dxl_phantom_mek/imximage.cfg [new file with mode: 0644]
board/freescale/imx8dxl_phantom_mek/spl.c [new file with mode: 0644]
configs/imx8dxl_phantom_mek_defconfig [new file with mode: 0644]
configs/imx8dxl_phantom_mek_fspi_defconfig [new file with mode: 0644]
include/configs/imx8dxl_phantom_mek.h [new file with mode: 0644]

index 7c5b9f7..d7e473f 100644 (file)
@@ -623,7 +623,8 @@ dtb-$(CONFIG_ARCH_IMX8) += fsl-imx8qxp-mek.dtb \
        fsl-imx8qxp-lpddr4-arm2.dtb \
        fsl-imx8qxp-lpddr4-arm2-gpmi-nand.dtb \
        fsl-imx8qxp-17x17-val.dtb \
-       fsl-imx8dx-17x17-val.dtb
+       fsl-imx8dx-17x17-val.dtb \
+       fsl-imx8dxl-phantom-mek.dtb
 
 dtb-$(CONFIG_ARCH_IMX8M) += fsl-imx8mq-evk.dtb \
                fsl-imx8mq-ddr3l-arm2.dtb \
diff --git a/arch/arm/dts/fsl-imx8dxl-phantom-mek-u-boot.dtsi b/arch/arm/dts/fsl-imx8dxl-phantom-mek-u-boot.dtsi
new file mode 100644 (file)
index 0000000..6f85bbf
--- /dev/null
@@ -0,0 +1,151 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019 NXP
+ */
+
+/ {
+       aliases {
+               usbgadget0 = &usbg1;
+       };
+
+       usbg1: usbg1 {
+               compatible = "fsl,imx27-usb-gadget";
+               dr_mode = "peripheral";
+               chipidea,usb = <&usbotg1>;
+               status = "okay";
+               u-boot,dm-spl;
+       };
+};
+
+&{/imx8qx-pm} {
+
+       u-boot,dm-spl;
+};
+
+&mu {
+       u-boot,dm-spl;
+};
+
+&clk {
+       u-boot,dm-spl;
+};
+
+&iomuxc {
+       u-boot,dm-spl;
+};
+
+&{/regulators} {
+       u-boot,dm-spl;
+};
+
+&reg_usdhc2_vmmc {
+       u-boot,dm-spl;
+};
+
+&{/mu@5d1c0000/iomuxc/imx8qxp-mek} {
+       u-boot,dm-spl;
+};
+
+&pinctrl_lpuart0 {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc2_gpio {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc2 {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc2_100mhz {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc2_200mhz {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc1 {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc1_100mhz {
+       u-boot,dm-spl;
+};
+
+&pinctrl_usdhc1_200mhz {
+       u-boot,dm-spl;
+};
+
+&pinctrl_flexspi0 {
+       u-boot,dm-spl;
+};
+
+&pd_lsio {
+       u-boot,dm-spl;
+};
+
+&pd_lsio_gpio4 {
+       u-boot,dm-spl;
+};
+
+&pd_conn {
+       u-boot,dm-spl;
+};
+
+&pd_conn_sdch0 {
+       u-boot,dm-spl;
+};
+
+&pd_conn_sdch1 {
+       u-boot,dm-spl;
+};
+
+&pd_lsio_flexspi0 {
+       u-boot,dm-spl;
+};
+
+&pd_conn_usbotg0 {
+       u-boot,dm-spl;
+};
+
+&pd_conn_usbotg0_phy {
+       u-boot,dm-spl;
+};
+
+&gpio4 {
+       u-boot,dm-spl;
+};
+
+&lpuart0 {
+       u-boot,dm-spl;
+};
+
+&usdhc1 {
+       u-boot,dm-spl;
+};
+
+&usdhc2 {
+       u-boot,dm-spl;
+};
+
+&flexspi0 {
+       u-boot,dm-spl;
+};
+
+&flash0 {
+       u-boot,dm-spl;
+};
+
+&usbmisc1 {
+       u-boot,dm-spl;
+};
+
+&usbphy1 {
+       u-boot,dm-spl;
+};
+
+&usbotg1 {
+       u-boot,dm-spl;
+};
diff --git a/arch/arm/dts/fsl-imx8dxl-phantom-mek.dts b/arch/arm/dts/fsl-imx8dxl-phantom-mek.dts
new file mode 100644 (file)
index 0000000..c7316ff
--- /dev/null
@@ -0,0 +1,287 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019 NXP
+ */
+
+/dts-v1/;
+
+#include "fsl-imx8qxp.dtsi"
+
+/ {
+       model = "Freescale i.MX8DXL PHANTOM MEK";
+       compatible = "fsl,imx8qxp-mek", "fsl,imx8qxp";
+
+       chosen {
+               bootargs = "console=ttyLP0,115200 earlycon=lpuart32,0x5a060000,115200";
+               stdout-path = &lpuart0;
+       };
+
+       regulators {
+               compatible = "simple-bus";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               reg_usdhc2_vmmc: usdhc2_vmmc {
+                       compatible = "regulator-fixed";
+                       regulator-name = "SD1_SPWR";
+                       regulator-min-microvolt = <3000000>;
+                       regulator-max-microvolt = <3000000>;
+                       gpio = <&gpio4 19 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+                       startup-delay-us = <100>;
+                       u-boot,off-on-delay-us = <12000>;
+               };
+
+               reg_usb_otg1_vbus: regulator@0 {
+                       compatible = "regulator-fixed";
+                       reg = <0>;
+                       regulator-name = "usb_otg1_vbus";
+                       regulator-min-microvolt = <5000000>;
+                       regulator-max-microvolt = <5000000>;
+                       gpio = <&gpio4 3 GPIO_ACTIVE_HIGH>;
+                       enable-active-high;
+               };
+
+       };
+};
+
+&iomuxc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_hog>;
+
+       imx8qxp-mek {
+               pinctrl_hog: hoggrp {
+                       fsl,pins = <
+                               SC_P_MCLK_OUT0_ADMA_ACM_MCLK_OUT0       0x0600004c
+                               SC_P_COMP_CTL_GPIO_1V8_3V3_GPIORHB_PAD  0x000514a0
+                               SC_P_USB_SS3_TC0_LSIO_GPIO4_IO03 0x00000021
+                       >;
+               };
+
+               pinctrl_fec2: fec2grp {
+                       fsl,pins = <
+                               SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB0_PAD      0x000014a0
+                               SC_P_COMP_CTL_GPIO_1V8_3V3_ENET_ENETB1_PAD      0x000014a0
+                               SC_P_ENET0_MDC_CONN_ENET1_MDC                   0x06000020
+                               SC_P_ENET0_MDIO_CONN_ENET1_MDIO                 0x06000020
+                               SC_P_ESAI0_SCKR_CONN_ENET1_RGMII_TX_CTL         0x00000060
+                               SC_P_ESAI0_FSR_CONN_ENET1_RGMII_TXC             0x00000060
+                               SC_P_ESAI0_TX4_RX1_CONN_ENET1_RGMII_TXD0        0x00000060
+                               SC_P_ESAI0_TX5_RX0_CONN_ENET1_RGMII_TXD1        0x00000060
+                               SC_P_ESAI0_FST_CONN_ENET1_RGMII_TXD2            0x00000060
+                               SC_P_ESAI0_SCKT_CONN_ENET1_RGMII_TXD3           0x00000060
+                               SC_P_ESAI0_TX0_CONN_ENET1_RGMII_RXC             0x00000060
+                               SC_P_SPDIF0_TX_CONN_ENET1_RGMII_RX_CTL          0x00000060
+                               SC_P_SPDIF0_RX_CONN_ENET1_RGMII_RXD0            0x00000060
+                               SC_P_ESAI0_TX3_RX2_CONN_ENET1_RGMII_RXD1        0x00000060
+                               SC_P_ESAI0_TX2_RX3_CONN_ENET1_RGMII_RXD2        0x00000060
+                               SC_P_ESAI0_TX1_CONN_ENET1_RGMII_RXD3            0x00000060
+                               SC_P_ENET0_REFCLK_125M_25M_LSIO_GPIO5_IO09 0x00000021
+                       >;
+               };
+
+               pinctrl_lpuart0: lpuart0grp {
+                       fsl,pins = <
+                               SC_P_UART0_RX_ADMA_UART0_RX     0x06000020
+                               SC_P_UART0_TX_ADMA_UART0_TX     0x06000020
+                       >;
+               };
+
+               pinctrl_usdhc1: usdhc1grp {
+                       fsl,pins = <
+                               SC_P_EMMC0_CLK_CONN_EMMC0_CLK           0x06000041
+                               SC_P_EMMC0_CMD_CONN_EMMC0_CMD           0x00000021
+                               SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0       0x00000021
+                               SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1       0x00000021
+                               SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2       0x00000021
+                               SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3       0x00000021
+                               SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4       0x00000021
+                               SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5       0x00000021
+                               SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6       0x00000021
+                               SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7       0x00000021
+                               SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE     0x00000041
+                       >;
+               };
+
+               pinctrl_usdhc1_100mhz: usdhc1grp100mhz {
+                       fsl,pins = <
+                               SC_P_EMMC0_CLK_CONN_EMMC0_CLK           0x06000041
+                               SC_P_EMMC0_CMD_CONN_EMMC0_CMD           0x00000021
+                               SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0       0x00000021
+                               SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1       0x00000021
+                               SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2       0x00000021
+                               SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3       0x00000021
+                               SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4       0x00000021
+                               SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5       0x00000021
+                               SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6       0x00000021
+                               SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7       0x00000021
+                               SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE     0x00000041
+                       >;
+               };
+
+               pinctrl_usdhc1_200mhz: usdhc1grp200mhz {
+                       fsl,pins = <
+                               SC_P_EMMC0_CLK_CONN_EMMC0_CLK           0x06000041
+                               SC_P_EMMC0_CMD_CONN_EMMC0_CMD           0x00000021
+                               SC_P_EMMC0_DATA0_CONN_EMMC0_DATA0       0x00000021
+                               SC_P_EMMC0_DATA1_CONN_EMMC0_DATA1       0x00000021
+                               SC_P_EMMC0_DATA2_CONN_EMMC0_DATA2       0x00000021
+                               SC_P_EMMC0_DATA3_CONN_EMMC0_DATA3       0x00000021
+                               SC_P_EMMC0_DATA4_CONN_EMMC0_DATA4       0x00000021
+                               SC_P_EMMC0_DATA5_CONN_EMMC0_DATA5       0x00000021
+                               SC_P_EMMC0_DATA6_CONN_EMMC0_DATA6       0x00000021
+                               SC_P_EMMC0_DATA7_CONN_EMMC0_DATA7       0x00000021
+                               SC_P_EMMC0_STROBE_CONN_EMMC0_STROBE     0x00000041
+                       >;
+               };
+
+               pinctrl_usdhc2_gpio: usdhc2gpiogrp {
+                       fsl,pins = <
+                               SC_P_USDHC1_RESET_B_LSIO_GPIO4_IO19     0x00000021
+                               SC_P_USDHC1_WP_LSIO_GPIO4_IO21          0x00000021
+                               SC_P_USDHC1_CD_B_LSIO_GPIO4_IO22        0x00000021
+                       >;
+               };
+
+               pinctrl_usdhc2: usdhc2grp {
+                       fsl,pins = <
+                               SC_P_ENET0_RGMII_RXC_CONN_USDHC1_CLK            0x06000041
+                               SC_P_ENET0_RGMII_RX_CTL_CONN_USDHC1_CMD         0x00000021
+                               SC_P_ENET0_RGMII_RXD0_CONN_USDHC1_DATA0 0x00000021
+                               SC_P_ENET0_RGMII_RXD1_CONN_USDHC1_DATA1 0x00000021
+                               SC_P_ENET0_RGMII_RXD2_CONN_USDHC1_DATA2 0x00000021
+                               SC_P_ENET0_RGMII_RXD3_CONN_USDHC1_DATA3 0x00000021
+                               SC_P_USDHC1_VSELECT_CONN_USDHC1_VSELECT 0x00000021
+                       >;
+               };
+
+               pinctrl_usdhc2_100mhz: usdhc2grp100mhz {
+                       fsl,pins = <
+                               SC_P_ENET0_RGMII_RXC_CONN_USDHC1_CLK            0x06000041
+                               SC_P_ENET0_RGMII_RX_CTL_CONN_USDHC1_CMD         0x00000021
+                               SC_P_ENET0_RGMII_RXD0_CONN_USDHC1_DATA0 0x00000021
+                               SC_P_ENET0_RGMII_RXD1_CONN_USDHC1_DATA1 0x00000021
+                               SC_P_ENET0_RGMII_RXD2_CONN_USDHC1_DATA2 0x00000021
+                               SC_P_ENET0_RGMII_RXD3_CONN_USDHC1_DATA3 0x00000021
+                               SC_P_USDHC1_VSELECT_CONN_USDHC1_VSELECT 0x00000021
+                       >;
+               };
+
+               pinctrl_usdhc2_200mhz: usdhc2grp200mhz {
+                       fsl,pins = <
+                               SC_P_ENET0_RGMII_RXC_CONN_USDHC1_CLK            0x06000041
+                               SC_P_ENET0_RGMII_RX_CTL_CONN_USDHC1_CMD         0x00000021
+                               SC_P_ENET0_RGMII_RXD0_CONN_USDHC1_DATA0 0x00000021
+                               SC_P_ENET0_RGMII_RXD1_CONN_USDHC1_DATA1 0x00000021
+                               SC_P_ENET0_RGMII_RXD2_CONN_USDHC1_DATA2 0x00000021
+                               SC_P_ENET0_RGMII_RXD3_CONN_USDHC1_DATA3 0x00000021
+                               SC_P_USDHC1_VSELECT_CONN_USDHC1_VSELECT 0x00000021
+                       >;
+               };
+
+               pinctrl_flexspi0: flexspi0grp {
+                       fsl,pins = <
+                               SC_P_QSPI0A_DATA0_LSIO_QSPI0A_DATA0     0x06000021
+                               SC_P_QSPI0A_DATA1_LSIO_QSPI0A_DATA1     0x06000021
+                               SC_P_QSPI0A_DATA2_LSIO_QSPI0A_DATA2     0x06000021
+                               SC_P_QSPI0A_DATA3_LSIO_QSPI0A_DATA3     0x06000021
+                               SC_P_QSPI0A_DQS_LSIO_QSPI0A_DQS         0x06000021
+                               SC_P_QSPI0A_SS0_B_LSIO_QSPI0A_SS0_B     0x06000021
+                               SC_P_QSPI0A_SCLK_LSIO_QSPI0A_SCLK       0x06000021
+                               SC_P_QSPI0B_DATA0_LSIO_QSPI0B_DATA0     0x06000021
+                               SC_P_QSPI0B_DATA1_LSIO_QSPI0B_DATA1     0x06000021
+                               SC_P_QSPI0B_DATA2_LSIO_QSPI0B_DATA2     0x06000021
+                               SC_P_QSPI0B_DATA3_LSIO_QSPI0B_DATA3     0x06000021
+                       >;
+               };
+       };
+};
+
+&A35_0 {
+       u-boot,dm-pre-reloc;
+};
+
+&lpuart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_lpuart0>;
+       status = "okay";
+};
+
+&gpio4 {
+       status = "okay";
+};
+
+&gpio5 {
+       status = "okay";
+};
+
+&flexspi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_flexspi0>;
+       status = "okay";
+
+       flash0: mt35xu512aba@0 {
+               reg = <0>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-flash";
+               spi-max-frequency = <29000000>;
+               spi-nor,ddr-quad-read-dummy = <8>;
+       };
+};
+
+&usdhc1 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc1>;
+       pinctrl-1 = <&pinctrl_usdhc1_100mhz>;
+       pinctrl-2 = <&pinctrl_usdhc1_200mhz>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+};
+
+&usdhc2 {
+       pinctrl-names = "default", "state_100mhz", "state_200mhz";
+       pinctrl-0 = <&pinctrl_usdhc2>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-1 = <&pinctrl_usdhc2_100mhz>, <&pinctrl_usdhc2_gpio>;
+       pinctrl-2 = <&pinctrl_usdhc2_200mhz>, <&pinctrl_usdhc2_gpio>;
+       bus-width = <4>;
+       cd-gpios = <&gpio4 22 GPIO_ACTIVE_LOW>;
+       wp-gpios = <&gpio4 21 GPIO_ACTIVE_HIGH>;
+       vmmc-supply = <&reg_usdhc2_vmmc>;
+       status = "okay";
+};
+
+&fec2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_fec2>;
+       phy-mode = "rgmii";
+       phy-handle = <&ethphy0>;
+       fsl,ar8031-phy-fixup;
+       fsl,magic-packet;
+       status = "okay";
+
+       phy-reset-gpios = <&gpio5 9 GPIO_ACTIVE_LOW>;
+       phy-reset-duration = <10>;
+       phy-reset-post-delay = <150>;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               ethphy0: ethernet-phy@0 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <0>;
+               };
+       };
+};
+
+&usbotg1 {
+       vbus-supply = <&reg_usb_otg1_vbus>;
+       srp-disable;
+       hnp-disable;
+       adp-disable;
+       power-polarity-active-high;
+       disable-over-current;
+       status = "okay";
+};
index b82e415..6b09a45 100644 (file)
@@ -98,11 +98,17 @@ config TARGET_IMX8X_17X17_VAL
        select BOARD_LATE_INIT
        select IMX8QXP
 
+config TARGET_IMX8DXL_PHANTOM_MEK
+       bool "Support i.MX8DXL PHANTOM MEK board"
+       select BOARD_LATE_INIT
+       select IMX8QXP
+
 endchoice
 
 source "board/freescale/imx8qxp_mek/Kconfig"
 source "board/freescale/imx8qm_mek/Kconfig"
 source "board/freescale/imx8qxp_arm2/Kconfig"
 source "board/freescale/imx8qm_arm2/Kconfig"
+source "board/freescale/imx8dxl_phantom_mek/Kconfig"
 
 endif
diff --git a/board/freescale/imx8dxl_phantom_mek/Kconfig b/board/freescale/imx8dxl_phantom_mek/Kconfig
new file mode 100644 (file)
index 0000000..33ff367
--- /dev/null
@@ -0,0 +1,14 @@
+if  TARGET_IMX8DXL_PHANTOM_MEK
+
+config SYS_BOARD
+       default "imx8dxl_phantom_mek"
+
+config SYS_VENDOR
+       default "freescale"
+
+config SYS_CONFIG_NAME
+       default "imx8dxl_phantom_mek"
+
+source "board/freescale/common/Kconfig"
+
+endif
diff --git a/board/freescale/imx8dxl_phantom_mek/Makefile b/board/freescale/imx8dxl_phantom_mek/Makefile
new file mode 100644 (file)
index 0000000..a2684eb
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Copyright 2019 NXP
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += imx8dxl_phantom_mek.o
+obj-$(CONFIG_SPL_BUILD) += spl.o
diff --git a/board/freescale/imx8dxl_phantom_mek/imx8dxl_phantom_mek.c b/board/freescale/imx8dxl_phantom_mek/imx8dxl_phantom_mek.c
new file mode 100644 (file)
index 0000000..decb526
--- /dev/null
@@ -0,0 +1,279 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019 NXP
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <linux/libfdt.h>
+#include <environment.h>
+#include <fsl_esdhc.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sci/sci.h>
+#include <asm/arch/imx8-pins.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/sys_proto.h>
+#include <imx8_hsio.h>
+#include <usb.h>
+#include <asm/mach-imx/video.h>
+#include <asm/arch/video_common.h>
+#include <power-domain.h>
+#include "../common/tcpc.h"
+#include <cdns3-uboot.h>
+#include <asm/arch/lpcg.h>
+#include <bootm.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define ENET_INPUT_PAD_CTRL    ((SC_PAD_CONFIG_OD_IN << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
+                                               | (SC_PAD_28FDSOI_DSE_18V_10MA << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
+
+#define ENET_NORMAL_PAD_CTRL   ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) \
+                                               | (SC_PAD_28FDSOI_DSE_18V_10MA << PADRING_DSE_SHIFT) | (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
+
+#define GPIO_PAD_CTRL  ((SC_PAD_CONFIG_NORMAL << PADRING_CONFIG_SHIFT) | \
+                        (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) | \
+                        (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | \
+                        (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
+
+#define UART_PAD_CTRL  ((SC_PAD_CONFIG_OUT_IN << PADRING_CONFIG_SHIFT) | \
+                        (SC_PAD_ISO_OFF << PADRING_LPCONFIG_SHIFT) | \
+                        (SC_PAD_28FDSOI_DSE_DV_HIGH << PADRING_DSE_SHIFT) | \
+                        (SC_PAD_28FDSOI_PS_PU << PADRING_PULL_SHIFT))
+
+static iomux_cfg_t uart0_pads[] = {
+       SC_P_UART0_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+       SC_P_UART0_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static void setup_iomux_uart(void)
+{
+       imx8_iomux_setup_multiple_pads(uart0_pads, ARRAY_SIZE(uart0_pads));
+}
+
+int board_early_init_f(void)
+{
+       int ret;
+       /* Set UART0 clock root to 80 MHz */
+       sc_pm_clock_rate_t rate = 80000000;
+
+       /* Power up UART0 */
+       ret = sc_pm_set_resource_power_mode(-1, SC_R_UART_0, SC_PM_PW_MODE_ON);
+       if (ret)
+               return ret;
+
+       ret = sc_pm_set_clock_rate(-1, SC_R_UART_0, 2, &rate);
+       if (ret)
+               return ret;
+
+       /* Enable UART0 clock root */
+       ret = sc_pm_clock_enable(-1, SC_R_UART_0, 2, true, false);
+       if (ret)
+               return ret;
+
+       lpcg_all_clock_on(LPUART_0_LPCG);
+
+       setup_iomux_uart();
+
+       return 0;
+}
+
+#if IS_ENABLED(CONFIG_DM_GPIO)
+static void board_gpio_init(void)
+{
+}
+#else
+static inline void board_gpio_init(void) {}
+#endif
+
+#if IS_ENABLED(CONFIG_FEC_MXC)
+#include <miiphy.h>
+
+int board_phy_config(struct phy_device *phydev)
+{
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x1f);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x8);
+
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x00);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x82ee);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x05);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x100);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
+#endif
+
+int checkboard(void)
+{
+       puts("Board: iMX8DXL Phantom MEK\n");
+
+       print_bootinfo();
+
+       return 0;
+}
+
+#ifdef CONFIG_FSL_HSIO
+
+#define PCIE_PAD_CTRL  ((SC_PAD_CONFIG_OD_IN << PADRING_CONFIG_SHIFT))
+static iomux_cfg_t board_pcie_pins[] = {
+       SC_P_PCIE_CTRL0_CLKREQ_B | MUX_MODE_ALT(0) | MUX_PAD_CTRL(PCIE_PAD_CTRL),
+       SC_P_PCIE_CTRL0_WAKE_B | MUX_MODE_ALT(0) | MUX_PAD_CTRL(PCIE_PAD_CTRL),
+       SC_P_PCIE_CTRL0_PERST_B | MUX_MODE_ALT(0) | MUX_PAD_CTRL(PCIE_PAD_CTRL),
+};
+
+static void imx8qxp_hsio_initialize(void)
+{
+       struct power_domain pd;
+       int ret;
+
+       if (!power_domain_lookup_name("hsio_pcie1", &pd)) {
+               ret = power_domain_on(&pd);
+               if (ret)
+                       printf("hsio_pcie1 Power up failed! (error = %d)\n", ret);
+       }
+
+       if (!power_domain_lookup_name("hsio_gpio", &pd)) {
+               ret = power_domain_on(&pd);
+               if (ret)
+                        printf("hsio_gpio Power up failed! (error = %d)\n", ret);
+       }
+
+       lpcg_all_clock_on(HSIO_PCIE_X1_LPCG);
+       lpcg_all_clock_on(HSIO_PHY_X1_LPCG);
+       lpcg_all_clock_on(HSIO_PHY_X1_CRR1_LPCG);
+       lpcg_all_clock_on(HSIO_PCIE_X1_CRR3_LPCG);
+       lpcg_all_clock_on(HSIO_MISC_LPCG);
+       lpcg_all_clock_on(HSIO_GPIO_LPCG);
+
+       imx8_iomux_setup_multiple_pads(board_pcie_pins, ARRAY_SIZE(board_pcie_pins));
+}
+
+void pci_init_board(void)
+{
+       imx8qxp_hsio_initialize();
+
+       /* test the 1 lane mode of the PCIe A controller */
+       mx8qxp_pcie_init();
+}
+
+#endif
+
+#ifdef CONFIG_USB
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       int ret = 0;
+
+       if (index == 0) {
+               if (init == USB_INIT_DEVICE) {
+#ifdef CONFIG_SPL_BUILD
+                       ret = sc_pm_set_resource_power_mode(-1, SC_R_USB_0, SC_PM_PW_MODE_ON);
+                       if (ret != SC_ERR_NONE)
+                               printf("conn_usb0 Power up failed! (error = %d)\n", ret);
+
+                       ret = sc_pm_set_resource_power_mode(-1, SC_R_USB_0_PHY, SC_PM_PW_MODE_ON);
+                       if (ret != SC_ERR_NONE)
+                               printf("conn_usb0_phy Power up failed! (error = %d)\n", ret);
+#endif
+               }
+       }
+       return ret;
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+       int ret = 0;
+
+       if (index == 0) {
+               if (init == USB_INIT_DEVICE) {
+#ifdef CONFIG_SPL_BUILD
+                       ret = sc_pm_set_resource_power_mode(-1, SC_R_USB_0, SC_PM_PW_MODE_OFF);
+                       if (ret != SC_ERR_NONE)
+                               printf("conn_usb0 Power down failed! (error = %d)\n", ret);
+
+                       ret = sc_pm_set_resource_power_mode(-1, SC_R_USB_0_PHY, SC_PM_PW_MODE_OFF);
+                       if (ret != SC_ERR_NONE)
+                               printf("conn_usb0_phy Power down failed! (error = %d)\n", ret);
+#endif
+               }
+       }
+       return ret;
+}
+#endif
+
+int board_init(void)
+{
+       board_gpio_init();
+
+       return 0;
+}
+
+void board_quiesce_devices()
+{
+       const char *power_on_devices[] = {
+               "dma_lpuart0",
+
+               /* HIFI DSP boot */
+               "audio_sai0",
+               "audio_ocram",
+       };
+
+       power_off_pd_devices(power_on_devices, ARRAY_SIZE(power_on_devices));
+}
+
+void detail_board_ddr_info(void)
+{
+       puts("\nDDR    ");
+}
+
+/*
+ * Board specific reset that is system reset.
+ */
+void reset_cpu(ulong addr)
+{
+       /* TODO */
+}
+
+#ifdef CONFIG_OF_BOARD_SETUP
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       return 0;
+}
+#endif
+
+int board_late_init(void)
+{
+       char *fdt_file;
+       bool m4_boot;
+
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       env_set("board_name", "MEK");
+       env_set("board_rev", "iMX8DXL Phantom");
+#endif
+
+       env_set("sec_boot", "no");
+#ifdef CONFIG_AHAB_BOOT
+       env_set("sec_boot", "yes");
+#endif
+
+       fdt_file = env_get("fdt_file");
+       m4_boot = check_m4_parts_boot();
+
+       if (fdt_file && !strcmp(fdt_file, "undefined")) {
+               if (m4_boot)
+                       env_set("fdt_file", "fsl-imx8dxl-phantom-mek-rpmsg.dtb");
+               else
+                       env_set("fdt_file", "fsl-imx8dxl-phantom-mek.dtb");
+       }
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+       board_late_mmc_env_init();
+#endif
+
+       return 0;
+}
diff --git a/board/freescale/imx8dxl_phantom_mek/imximage.cfg b/board/freescale/imx8dxl_phantom_mek/imximage.cfg
new file mode 100644 (file)
index 0000000..c203eac
--- /dev/null
@@ -0,0 +1,22 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 NXP
+ *
+ * Refer doc/README.imx8image for more details about how-to configure
+ * and create imx8image boot image
+ */
+
+#define __ASSEMBLY__
+
+/* Boot from SD, sector size 0x400 */
+BOOT_FROM SD 0x400
+/* SoC type IMX8QX */
+SOC_TYPE IMX8QX
+/* Append seco container image */
+APPEND ahab-container.img
+/* Create the 2nd container */
+CONTAINER
+/* Add scfw image with exec attribute */
+IMAGE SCU mx8qx-mek-scfw-tcm.bin
+/* Add ATF image with exec attribute */
+IMAGE A35 spl/u-boot-spl.bin 0x00100000
diff --git a/board/freescale/imx8dxl_phantom_mek/spl.c b/board/freescale/imx8dxl_phantom_mek/spl.c
new file mode 100644 (file)
index 0000000..4d27db2
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright 2019 NXP
+ *
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <spl.h>
+#include <dm/uclass.h>
+#include <dm/device.h>
+#include <dm/uclass-internal.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
+#include <bootm.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+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();
+
+       timer_init();
+
+       preloader_console_init();
+
+       puts("Normal Boot\n");
+}
+
+void spl_board_prepare_for_boot(void)
+{
+       board_quiesce_devices();
+}
+
+#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);
+
+       arch_cpu_init();
+
+       board_init_r(NULL, 0);
+}
diff --git a/configs/imx8dxl_phantom_mek_defconfig b/configs/imx8dxl_phantom_mek_defconfig
new file mode 100644 (file)
index 0000000..cbbd285
--- /dev/null
@@ -0,0 +1,136 @@
+CONFIG_ARM=y
+CONFIG_ARCH_IMX8=y
+CONFIG_SYS_TEXT_BASE=0x80020000
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x8000
+CONFIG_TARGET_IMX8DXL_PHANTOM_MEK=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_EFI_PARTITION=n
+CONFIG_SPL_DOS_PARTITION=n
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_USE_TINY_PRINTF=y
+CONFIG_SPL=y
+CONFIG_PANIC_HANG=y
+CONFIG_NR_DRAM_BANKS=4
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8dxl_phantom_mek/imximage.cfg"
+CONFIG_BOOTDELAY=3
+CONFIG_LOG=y
+CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SPL_POWER_DOMAIN=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_CPU=y
+# CONFIG_CMD_IMPORTENV is not set
+CONFIG_CMD_CLK=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_FAT=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8dxl-phantom-mek"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_IMX8=y
+CONFIG_CPU=y
+CONFIG_DM_GPIO=y
+CONFIG_MXC_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_IMX_LPI2C=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_MISC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_IO_VOLTAGE=y
+CONFIG_MMC_UHS_SUPPORT=y
+CONFIG_MMC_HS400_SUPPORT=y
+CONFIG_EFI_PARTITION=y
+CONFIG_PHYLIB=y
+CONFIG_PHY_ADDR_ENABLE=y
+CONFIG_PHY_ATHEROS=y
+CONFIG_DM_ETH=y
+CONFIG_PHY_GIGE=y
+CONFIG_FEC_MXC=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_PINCTRL_IMX8=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_IMX8_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_SPL_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_SPL_DM_REGULATOR_FIXED=y
+CONFIG_DM_SERIAL=y
+CONFIG_FSL_LPUART=y
+CONFIG_SPL_TINY_MEMSET=y
+# CONFIG_EFI_LOADER is not set
+
+CONFIG_CMD_FUSE=y
+CONFIG_SMC_FUSE=y
+CONFIG_CMD_MEMTEST=y
+
+CONFIG_IMX_BOOTAUX=y
+
+CONFIG_DM_THERMAL=y
+CONFIG_IMX_SC_THERMAL=y
+
+CONFIG_SPI=y
+CONFIG_FSL_FSPI=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_CMD_SF=y
+CONFIG_SF_DEFAULT_BUS=0
+CONFIG_SF_DEFAULT_CS=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SF_DEFAULT_MODE=0
+
+CONFIG_USB_EHCI_HCD=y
+CONFIG_DM_USB=y
+CONFIG_USB=y
+CONFIG_USB_TCPC=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+# CONFIG_USB_CDNS3=y
+# CONFIG_USB_CDNS3_GADGET=y
+# CONFIG_USB_GADGET_DUALSPEED=y
+
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_CMD_FASTBOOT=y
+CONFIG_ANDROID_BOOT_IMAGE=y
+CONFIG_FASTBOOT_UUU_SUPPORT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x82800000
+CONFIG_FASTBOOT_BUF_SIZE=0x40000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_USB_DEV=0
+
+CONFIG_SPL_USB_HOST_SUPPORT=y
+CONFIG_SPL_USB_GADGET=y
+CONFIG_SPL_USB_SDP_SUPPORT=y
+CONFIG_SPL_DM_USB=n
+CONFIG_SDP_LOADADDR=0x80400000
+
+CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
+CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
diff --git a/configs/imx8dxl_phantom_mek_fspi_defconfig b/configs/imx8dxl_phantom_mek_fspi_defconfig
new file mode 100644 (file)
index 0000000..c1b6cb0
--- /dev/null
@@ -0,0 +1,137 @@
+CONFIG_ARM=y
+CONFIG_ARCH_IMX8=y
+CONFIG_SYS_TEXT_BASE=0x80020000
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x8000
+CONFIG_TARGET_IMX8DXL_PHANTOM_MEK=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_SPL_SPI_LOAD=y
+CONFIG_SPL_SPI_FLASH_TINY=y
+CONFIG_SPL_EFI_PARTITION=n
+CONFIG_SPL_DOS_PARTITION=n
+CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_DRIVERS_MISC_SUPPORT=y
+CONFIG_SPL_NOR_SUPPORT=y
+CONFIG_USE_TINY_PRINTF=y
+CONFIG_SPL=y
+CONFIG_PANIC_HANG=y
+CONFIG_NR_DRAM_BANKS=4
+CONFIG_FIT=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/imx8dxl_phantom_mek/imximage.cfg"
+CONFIG_BOOTDELAY=3
+CONFIG_LOG=y
+CONFIG_SPL_BOARD_INIT=y
+# CONFIG_SPL_SYS_MALLOC_SIMPLE is not set
+CONFIG_SPL_SEPARATE_BSS=y
+CONFIG_SPL_POWER_SUPPORT=y
+CONFIG_SPL_POWER_DOMAIN=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_CPU=y
+# CONFIG_CMD_IMPORTENV is not set
+CONFIG_CMD_CLK=y
+CONFIG_CMD_DM=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_FAT=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8dxl-phantom-mek"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_CLK=y
+CONFIG_CLK_IMX8=y
+CONFIG_CPU=y
+CONFIG_DM_GPIO=y
+CONFIG_MXC_GPIO=y
+CONFIG_DM_PCA953X=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_IMX_LPI2C=y
+CONFIG_I2C_MUX=y
+CONFIG_I2C_MUX_PCA954x=y
+CONFIG_MISC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_IO_VOLTAGE=y
+CONFIG_MMC_UHS_SUPPORT=y
+CONFIG_MMC_HS400_SUPPORT=y
+CONFIG_EFI_PARTITION=y
+CONFIG_PHYLIB=y
+CONFIG_PHY_ADDR_ENABLE=y
+CONFIG_PHY_ATHEROS=y
+CONFIG_DM_ETH=y
+CONFIG_PHY_GIGE=y
+CONFIG_FEC_MXC=y
+CONFIG_MII=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_PINCTRL_IMX8=y
+CONFIG_POWER_DOMAIN=y
+CONFIG_IMX8_POWER_DOMAIN=y
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_REGULATOR_GPIO=y
+CONFIG_DM_SERIAL=y
+CONFIG_FSL_LPUART=y
+CONFIG_SPL_TINY_MEMSET=y
+# CONFIG_EFI_LOADER is not set
+
+CONFIG_CMD_FUSE=y
+CONFIG_SMC_FUSE=y
+CONFIG_CMD_MEMTEST=y
+
+CONFIG_IMX_BOOTAUX=y
+
+CONFIG_DM_THERMAL=y
+CONFIG_IMX_SC_THERMAL=y
+
+CONFIG_SPI=y
+CONFIG_FSL_FSPI=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_CMD_SF=y
+CONFIG_SF_DEFAULT_BUS=0
+CONFIG_SF_DEFAULT_CS=0
+CONFIG_SF_DEFAULT_SPEED=40000000
+CONFIG_SF_DEFAULT_MODE=0
+
+CONFIG_USB_EHCI_HCD=y
+CONFIG_DM_USB=y
+CONFIG_USB=y
+CONFIG_USB_TCPC=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_USB_GADGET_MANUFACTURER="FSL"
+CONFIG_USB_GADGET_VENDOR_NUM=0x0525
+CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5
+# CONFIG_USB_CDNS3=y
+# CONFIG_USB_CDNS3_GADGET=y
+# CONFIG_USB_GADGET_DUALSPEED=y
+
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_CMD_FASTBOOT=y
+CONFIG_ANDROID_BOOT_IMAGE=y
+CONFIG_FASTBOOT_UUU_SUPPORT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x82800000
+CONFIG_FASTBOOT_BUF_SIZE=0x40000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_USB_DEV=0
+
+CONFIG_SPL_USB_HOST_SUPPORT=y
+CONFIG_SPL_USB_GADGET=y
+CONFIG_SPL_USB_SDP_SUPPORT=y
+CONFIG_SPL_DM_USB=n
+CONFIG_SDP_LOADADDR=0x80400000
+
+CONFIG_BOOTAUX_RESERVED_MEM_BASE=0x88000000
+CONFIG_BOOTAUX_RESERVED_MEM_SIZE=0x08000000
diff --git a/include/configs/imx8dxl_phantom_mek.h b/include/configs/imx8dxl_phantom_mek.h
new file mode 100644 (file)
index 0000000..15bf04c
--- /dev/null
@@ -0,0 +1,355 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright 2019 NXP
+ */
+
+#ifndef __IMX8DXL_PHANTOM_MEK_H
+#define __IMX8DXL_PHANTOM_MEK_H
+
+#include <linux/sizes.h>
+#include <asm/arch/imx-regs.h>
+
+#include "imx_env.h"
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_PARSE_CONTAINER
+#define CONFIG_SPL_TEXT_BASE                           0x100000
+#define CONFIG_SPL_MAX_SIZE                            (192 * 1024)
+#define CONFIG_SYS_MONITOR_LEN                         (1024 * 1024)
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR                0x1040 /* (32K + 2Mb)/sector_size */
+#define CONFIG_SYS_SPI_U_BOOT_OFFS 0x200000
+
+/*
+ * 0x08081000 - 0x08180FFF is for m4_0 xip image,
+  * So 3rd container image may start from 0x8181000
+ */
+#define CONFIG_SYS_UBOOT_BASE 0x08181000
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION             0
+
+#define CONFIG_SPL_LDSCRIPT            "arch/arm/cpu/armv8/u-boot-spl.lds"
+/*
+ * The memory layout on stack:  DATA section save + gd + early malloc
+ * the idea is re-use the early malloc (CONFIG_SYS_MALLOC_F_LEN) with
+ * CONFIG_SYS_SPL_MALLOC_START
+ */
+#define CONFIG_SPL_STACK               0x013fff0
+#define CONFIG_SPL_BSS_START_ADDR      0x00130000
+#define CONFIG_SPL_BSS_MAX_SIZE                0x1000  /* 4 KB */
+#define CONFIG_SYS_SPL_MALLOC_START    0x82200000
+#define CONFIG_SYS_SPL_MALLOC_SIZE     0x80000 /* 512 KB */
+#define CONFIG_SERIAL_LPUART_BASE      0x5a060000
+#define CONFIG_SYS_ICACHE_OFF
+#define CONFIG_SYS_DCACHE_OFF
+#define CONFIG_MALLOC_F_ADDR           0x00138000
+
+#define CONFIG_SPL_RAW_IMAGE_ARM_TRUSTED_FIRMWARE
+
+#define CONFIG_SPL_ABORT_ON_RAW_IMAGE
+
+#define CONFIG_OF_EMBED
+#endif
+
+#define CONFIG_REMAKE_ELF
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_ARCH_MISC_INIT
+
+#define CONFIG_CMD_READ
+
+/* Flat Device Tree Definitions */
+#define CONFIG_OF_BOARD_SETUP
+
+#undef CONFIG_CMD_EXPORTENV
+#undef CONFIG_CMD_IMPORTENV
+#undef CONFIG_CMD_IMLS
+
+#undef CONFIG_CMD_CRC32
+#undef CONFIG_BOOTM_NETBSD
+
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR       0
+#define USDHC1_BASE_ADDR                0x5B010000
+#define USDHC2_BASE_ADDR                0x5B020000
+#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
+
+#define CONFIG_ENV_OVERWRITE
+
+
+#define CONFIG_FSL_HSIO
+#ifdef CONFIG_FSL_HSIO
+#define CONFIG_PCIE_IMX8X
+#define CONFIG_CMD_PCI
+#define CONFIG_PCI
+#define CONFIG_PCI_PNP
+#define CONFIG_PCI_SCAN_SHOW
+#endif
+
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
+#ifdef CONFIG_AHAB_BOOT
+#define AHAB_ENV "sec_boot=yes\0"
+#else
+#define AHAB_ENV "sec_boot=no\0"
+#endif
+
+/* Boot M4 */
+#define M4_BOOT_ENV \
+       "m4_0_image=m4_0.bin\0" \
+       "loadm4image_0=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${m4_0_image}\0" \
+       "m4boot_0=run loadm4image_0; dcache flush; bootaux ${loadaddr} 0\0" \
+
+#define CONFIG_MFG_ENV_SETTINGS \
+       CONFIG_MFG_ENV_SETTINGS_DEFAULT \
+       "initrd_addr=0x83100000\0" \
+       "initrd_high=0xffffffffffffffff\0" \
+       "emmc_dev=0\0" \
+       "sd_dev=1\0" \
+
+#define JAILHOUSE_ENV \
+       "jh_mmcboot=" \
+               "setenv fdt_file fsl-imx8qxp-mek-root.dtb;"\
+               "setenv boot_os 'scu_rm dtb ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};'; " \
+               "run mmcboot; \0" \
+       "jh_netboot=" \
+               "setenv fdt_file fsl-imx8qxp-mek-root.dtb;"\
+               "setenv boot_os 'scu_rm dtb ${fdt_addr}; booti ${loadaddr} - ${fdt_addr};'; " \
+               "run netboot; \0"
+
+#define XEN_BOOT_ENV \
+            "xenhyper_bootargs=console=dtuart dtuart=/serial@5a060000 dom0_mem=1024M dom0_max_vcpus=2 dom0_vcpus_pin=true\0" \
+            "xenlinux_bootargs= \0" \
+            "xenlinux_console=hvc0 earlycon=xen\0" \
+            "xenlinux_addr=0x9e000000\0" \
+           "dom0fdt_file=fsl-imx8qxp-mek-dom0.dtb\0" \
+            "xenboot_common=" \
+                "${get_cmd} ${loadaddr} xen;" \
+                "${get_cmd} ${fdt_addr} ${dom0fdt_file};" \
+                "${get_cmd} ${xenlinux_addr} ${image};" \
+                "fdt addr ${fdt_addr};" \
+                "fdt resize 256;" \
+                "fdt set /chosen/module@0 reg <0x00000000 ${xenlinux_addr} 0x00000000 0x${filesize}>; " \
+                "fdt set /chosen/module@0 bootargs \"${bootargs} ${xenlinux_bootargs}\"; " \
+                "setenv bootargs ${xenhyper_bootargs};" \
+                "booti ${loadaddr} - ${fdt_addr};" \
+            "\0" \
+            "xennetboot=" \
+                "setenv get_cmd dhcp;" \
+                "setenv console ${xenlinux_console};" \
+                "run netargs;" \
+                "run xenboot_common;" \
+            "\0" \
+            "xenmmcboot=" \
+                "setenv get_cmd \"fatload mmc ${mmcdev}:${mmcpart}\";" \
+                "setenv console ${xenlinux_console};" \
+                "run mmcargs;" \
+                "run xenboot_common;" \
+            "\0" \
+
+/* Initial environment variables */
+#define CONFIG_EXTRA_ENV_SETTINGS              \
+       CONFIG_MFG_ENV_SETTINGS \
+       M4_BOOT_ENV \
+       XEN_BOOT_ENV \
+       JAILHOUSE_ENV\
+       AHAB_ENV \
+       "script=boot.scr\0" \
+       "image=Image\0" \
+       "panel=NULL\0" \
+       "console=ttyLP0\0" \
+       "fdt_addr=0x83000000\0"                 \
+       "fdt_high=0xffffffffffffffff\0"         \
+       "cntr_addr=0x98000000\0"                        \
+       "cntr_file=os_cntr_signed.bin\0" \
+       "boot_fdt=try\0" \
+       "fdt_file=undefined\0" \
+       "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
+       "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
+       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "mmcautodetect=yes\0" \
+       "mmcargs=setenv bootargs console=${console},${baudrate} earlycon root=${mmcroot}\0 " \
+       "loadbootscript=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
+       "bootscript=echo Running bootscript from mmc ...; " \
+               "source\0" \
+       "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
+       "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
+       "loadcntr=fatload mmc ${mmcdev}:${mmcpart} ${cntr_addr} ${cntr_file}\0" \
+       "auth_os=auth_cntr ${cntr_addr}\0" \
+       "boot_os=booti ${loadaddr} - ${fdt_addr};\0" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs; " \
+               "if test ${sec_boot} = yes; then " \
+                       "if run auth_os; then " \
+                               "run boot_os; " \
+                       "else " \
+                               "echo ERR: failed to authenticate; " \
+                       "fi; " \
+               "else " \
+                       "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                               "if run loadfdt; then " \
+                                       "run boot_os; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "else " \
+                               "echo wait for boot; " \
+                       "fi;" \
+               "fi;\0" \
+       "netargs=setenv bootargs console=${console},${baudrate} earlycon " \
+               "root=/dev/nfs " \
+               "ip=dhcp nfsroot=${serverip}:${nfsroot},v3,tcp\0" \
+       "netboot=echo Booting from net ...; " \
+               "run netargs;  " \
+               "if test ${ip_dyn} = yes; then " \
+                       "setenv get_cmd dhcp; " \
+               "else " \
+                       "setenv get_cmd tftp; " \
+               "fi; " \
+               "if test ${sec_boot} = yes; then " \
+                       "${get_cmd} ${cntr_addr} ${cntr_file}; " \
+                       "if run auth_os; then " \
+                               "run boot_os; " \
+                       "else " \
+                               "echo ERR: failed to authenticate; " \
+                       "fi; " \
+               "else " \
+                       "${get_cmd} ${loadaddr} ${image}; " \
+                       "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
+                               "if ${get_cmd} ${fdt_addr} ${fdt_file}; then " \
+                                       "run boot_os; " \
+                               "else " \
+                                       "echo WARN: Cannot load the DT; " \
+                               "fi; " \
+                       "else " \
+                               "booti; " \
+                       "fi;" \
+               "fi;\0"
+
+#define CONFIG_BOOTCOMMAND \
+          "mmc dev ${mmcdev}; if mmc rescan; then " \
+                  "if run loadbootscript; then " \
+                          "run bootscript; " \
+                  "else " \
+                          "if test ${sec_boot} = yes; then " \
+                                  "if run loadcntr; then " \
+                                          "run mmcboot; " \
+                                  "else run netboot; " \
+                                  "fi; " \
+                           "else " \
+                                  "if run loadimage; then " \
+                                          "run mmcboot; " \
+                                  "else run netboot; " \
+                                  "fi; " \
+                        "fi; " \
+                  "fi; " \
+          "else booti ${loadaddr} - ${fdt_addr}; fi"
+
+/* Link Definitions */
+#define CONFIG_LOADADDR                        0x80280000
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+
+#define CONFIG_SYS_INIT_SP_ADDR         0x80200000
+
+/* Default environment is in SD */
+#define CONFIG_ENV_SIZE                        0x2000
+#ifdef CONFIG_QSPI_BOOT
+#define CONFIG_ENV_OFFSET       (4 * 1024 * 1024)
+#define CONFIG_ENV_SECT_SIZE   (128 * 1024)
+#define CONFIG_ENV_SPI_BUS     CONFIG_SF_DEFAULT_BUS
+#define CONFIG_ENV_SPI_CS      CONFIG_SF_DEFAULT_CS
+#define CONFIG_ENV_SPI_MODE    CONFIG_SF_DEFAULT_MODE
+#define CONFIG_ENV_SPI_MAX_HZ  CONFIG_SF_DEFAULT_SPEED
+#else
+#define CONFIG_ENV_OFFSET       (64 * SZ_64K)
+#define CONFIG_SYS_MMC_ENV_PART                0       /* user area */
+#endif
+
+#define CONFIG_SYS_MMC_IMG_LOAD_PART   1
+
+/* USDHC1 is for eMMC, USDHC2 is for SD. However SD can't boot due to pinmux in ROM */
+#define CONFIG_SYS_MMC_ENV_DEV         0   /* USDHC1 */
+#define CONFIG_MMCROOT                 "/dev/mmcblk0p2"  /* USDHC1 */
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN          ((CONFIG_ENV_SIZE + (32 * 1024)) * 1024)
+
+#define CONFIG_SYS_SDRAM_BASE          0x80000000
+#define PHYS_SDRAM_1                   0x80000000
+#define PHYS_SDRAM_2                   0x880000000
+
+/* total DDR is 1GB */
+#define PHYS_SDRAM_1_SIZE              0x40000000      /* 1 GB */
+#define PHYS_SDRAM_2_SIZE              0x00000000
+
+#define CONFIG_SYS_MEMTEST_START    0xA0000000
+#define CONFIG_SYS_MEMTEST_END      (CONFIG_SYS_MEMTEST_START + (PHYS_SDRAM_1_SIZE >> 2))
+
+/* Serial */
+#define CONFIG_BAUDRATE                        115200
+
+/* 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)
+
+/* Generic Timer Definitions */
+#define COUNTER_FREQUENCY              8000000 /* 8MHz */
+
+#ifndef CONFIG_DM_PCA953X
+#define CONFIG_PCA953X
+#define CONFIG_CMD_PCA953X
+#define CONFIG_CMD_PCA953X_INFO
+#endif
+
+/* MT35XU512ABA1G12 has only one Die, so QSPI0 B won't work */
+#ifdef CONFIG_FSL_FSPI
+#define FSL_FSPI_FLASH_SIZE            SZ_64M
+#define FSL_FSPI_FLASH_NUM             1
+#define FSPI0_BASE_ADDR                        0x5d120000
+#define FSPI0_AMBA_BASE                        0
+#define CONFIG_SYS_FSL_FSPI_AHB
+#endif
+
+#define CONFIG_SERIAL_TAG
+
+/* USB Config */
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_CMD_USB
+#define CONFIG_USB_STORAGE
+#define CONFIG_USBD_HS
+
+#define CONFIG_CMD_USB_MASS_STORAGE
+#define CONFIG_USB_GADGET_MASS_STORAGE
+#define CONFIG_USB_FUNCTION_MASS_STORAGE
+#endif
+
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 1
+
+/* USB OTG controller configs */
+#ifdef CONFIG_USB_EHCI_HCD
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC          (PORT_PTS_UTMI | PORT_PTS_PTW)
+#endif
+
+/* Networking */
+#define IMX_FEC_BASE                   0x5B050000
+#define CONFIG_FEC_MXC_PHYADDR          0x0
+#define CONFIG_ETHPRIME                 "eth1"
+
+#define CONFIG_FEC_XCV_TYPE            RGMII
+#define FEC_QUIRK_ENET_MAC
+
+#ifndef CONFIG_LIB_RAND
+#define CONFIG_LIB_RAND
+#endif
+#define CONFIG_NET_RANDOM_ETHADDR
+
+#define CONFIG_OF_SYSTEM_SETUP
+#endif /* __IMX8DXL_PHANTOM_MEK_H */