From de4f81cd40b6516f14f46d97d38681b290538c93 Mon Sep 17 00:00:00 2001 From: Peng Fan Date: Tue, 12 Jun 2018 16:18:00 +0800 Subject: [PATCH] MLK-18577-7 imx8qm: mek: support uboot in vm We are targeting let uboot loading images from emmc to boot android. Currently only emmc1 is enabled, so other devices are disabled. Also change memory layout according to VM layout. The memory layout needs to be samesize as what you configured in as "memory = "3584"". Add a new dts dedicated for this kind uboot, add a new defconfig to select CONFIG_XEN/CONFIG_XEN_DEBUG_SERIAL, deselect CONFIG_DM_SERIAL, select CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK, and disable some devices compared with imx8qm_mek_androidauto_defconfig. Reviewed-by: Ye Li Signed-off-by: Peng Fan (cherry picked from commit a4e932cae433b9d2e1cff6a94b12e4abcac45543) (cherry picked from commit a26de6e05563d3e3e6734e0d99e464437aa89db5) (cherry picked from commit 74ac579ee195c4a2f6651ccc0f86efb0eebd889e) (cherry picked from commit 7efc2eca10c9d48da6e01ba6a5df63b6f619d7ab) --- arch/arm/dts/Makefile | 1 + arch/arm/dts/fsl-imx8qm-mek-xen.dts | 76 ++++++++++++++++++ board/freescale/imx8qm_mek/imx8qm_mek.c | 21 +++++ configs/imx8qm_mek_androidauto_xen_defconfig | 108 ++++++++++++++++++++++++++ include/configs/imx8qm_mek_android_auto.h | 4 + include/configs/imx8qm_mek_android_auto_xen.h | 35 +++++++++ 6 files changed, 245 insertions(+) create mode 100644 arch/arm/dts/fsl-imx8qm-mek-xen.dts create mode 100644 configs/imx8qm_mek_androidauto_xen_defconfig create mode 100644 include/configs/imx8qm_mek_android_auto_xen.h diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile index 87332b6..cd506c2 100644 --- a/arch/arm/dts/Makefile +++ b/arch/arm/dts/Makefile @@ -762,6 +762,7 @@ dtb-$(CONFIG_ARCH_IMX8) += \ fsl-imx8qm-mek.dtb \ fsl-imx8qm-ddr4-val.dtb \ fsl-imx8qm-lpddr4-val.dtb \ + fsl-imx8qm-mek-xen.dtb \ fsl-imx8qm-mek-auto.dtb \ fsl-imx8qm-mek-auto2.dtb \ imx8qm-rom7720-a1.dtb \ diff --git a/arch/arm/dts/fsl-imx8qm-mek-xen.dts b/arch/arm/dts/fsl-imx8qm-mek-xen.dts new file mode 100644 index 0000000..7c9703b --- /dev/null +++ b/arch/arm/dts/fsl-imx8qm-mek-xen.dts @@ -0,0 +1,76 @@ +/* + * Copyright 2018 NXP + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +/dts-v1/; + +#include "fsl-imx8qm-mek.dts" + +&usdhc1 { + /* Need to be same as iomem for sdhc1 in domu.cfg */ + reg = <0x1 0x5b010000 0x0 0x10000>; +}; + +&usdhc2 { + /* Need to be same as iomem for sdhc2 in domu.cfg */ + reg = <0x1 0x5b020000 0x0 0x10000>; + status = "disabled"; +}; + +&gpio2 { + status = "disabled"; +}; + +&gpio4 { + status = "disabled"; +}; + +&gpio5 { + status = "disabled"; +}; + +&usbotg3 { + status = "disabled"; +}; + +&fec1 { + status = "disabled"; +}; + +&fec2 { + status = "disabled"; +}; + +&flexspi0 { + status = "disabled"; +}; + +&i2c0 { + status = "disabled"; +}; + +&i2c1_lvds0 { + status = "disabled"; +}; + +&i2c1_lvds1 { + status = "disabled"; +}; + +&lpspi0 { + status = "disabled"; +}; + +&lpuart0 { + status = "disabled"; +}; diff --git a/board/freescale/imx8qm_mek/imx8qm_mek.c b/board/freescale/imx8qm_mek/imx8qm_mek.c index 694ff93..f3ba77c 100644 --- a/board/freescale/imx8qm_mek/imx8qm_mek.c +++ b/board/freescale/imx8qm_mek/imx8qm_mek.c @@ -367,6 +367,9 @@ int board_usb_cleanup(int index, enum usb_init_type init) int board_init(void) { + if (IS_ENABLED(CONFIG_XEN)) + return 0; + board_gpio_init(); @@ -417,6 +420,24 @@ int ft_board_setup(void *blob, bd_t *bd) } #endif +int board_mmc_get_env_dev(int devno) +{ + /* Use EMMC */ + if (IS_ENABLED(CONFIG_XEN)) + return 0; + + return devno; +} + +int mmc_map_to_kernel_blk(int dev_no) +{ + /* Use EMMC */ + if (IS_ENABLED(CONFIG_XEN)) + return 0; + + return dev_no; +} + extern uint32_t _end_ofs; int board_late_init(void) { diff --git a/configs/imx8qm_mek_androidauto_xen_defconfig b/configs/imx8qm_mek_androidauto_xen_defconfig new file mode 100644 index 0000000..41d567b --- /dev/null +++ b/configs/imx8qm_mek_androidauto_xen_defconfig @@ -0,0 +1,108 @@ +CONFIG_ARM=y +CONFIG_ARCH_IMX8=y +CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qm-mek-xen" +CONFIG_SYS_EXTRA_OPTIONS="ANDROID_AUTO_SUPPORT" +CONFIG_TARGET_IMX8QM_MEK=y +CONFIG_SYS_TEXT_BASE=0x40080000 +CONFIG_EFI_PARTITION=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_DM=y +CONFIG_DM_WARN=n +CONFIG_DM_DEVICE_REMOVE=n + +CONFIG_DM_SERIAL=n +CONFIG_FSL_LPUART=n +CONFIG_OF_CONTROL=y +CONFIG_DM_I2C=n +# CONFIG_DM_I2C_COMPAT is not set +CONFIG_SYS_I2C_IMX_LPI2C=n +CONFIG_CMD_I2C=n + +CONFIG_USB_XHCI_HCD=n +CONFIG_USB_XHCI_IMX8=n + +CONFIG_DM_USB=n +CONFIG_USB_EHCI_HCD=y +CONFIG_CMD_USB=y +CONFIG_USB=y +CONFIG_USB_TCPC=n + +CONFIG_USB_GADGET=y +CONFIG_CI_UDC=y +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_GADGET_MANUFACTURER="FSL" +CONFIG_USB_GADGET_VENDOR_NUM=0x18d1 +CONFIG_USB_GADGET_PRODUCT_NUM=0x0d02 + +CONFIG_USB_CDNS3=n +CONFIG_USB_CDNS3_GADGET=n +CONFIG_USB_GADGET_DUALSPEED=y + +CONFIG_DM_GPIO=n +CONFIG_DM_PCA953X=n +CONFIG_BOOTDELAY=1 +CONFIG_CMD_MMC=y +CONFIG_DM_MMC=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_HS400_SUPPORT=y +CONFIG_FSL_FSPI=n +CONFIG_DM_SPI=n +CONFIG_DM_SPI_FLASH=n +CONFIG_SPI_FLASH=n +CONFIG_SPI_FLASH_4BYTES_ADDR=n +CONFIG_SPI_FLASH_STMICRO=n + +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=n +CONFIG_DM_REGULATOR_GPIO=n + +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX8=y + +CONFIG_CMD_NET=n +CONFIG_CMD_NFS=n +CONFIG_CMD_BDI=n +CONFIG_CMD_CONSOLE=n +CONFIG_CMD_BOOTD=n +CONFIG_CMD_BOOTEFI=n +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=n +CONFIG_CMD_ELF=n +CONFIG_CMD_GO=n +CONFIG_CMD_RUN=n +CONFIG_CMD_IMI=n +CONFIG_CMD_IMLS=n +CONFIG_CMD_XIMG=n +CONFIG_CMD_EXPORTENV=n +CONFIG_CMD_IMPORTENV=n +CONFIG_CMD_EDITENV=n +CONFIG_CMD_ENV_EXISTS=n +CONFIG_CMD_MEMORY=n +CONFIG_CMD_CRC32=n +CONFIG_CMD_DM=n +CONFIG_CMD_LOADB=n +CONFIG_CMD_LOADS=n +CONFIG_CMD_FLASH=n +CONFIG_CMD_GPT=n +CONFIG_CMD_FPGA=n +CONFIG_CMD_ECHO=n +CONFIG_CMD_ITEST=n +CONFIG_CMD_SOURCE=n +CONFIG_CMD_SETEXPR=n +CONFIG_CMD_MISC=n + +CONFIG_DISPLAY_CPUINFO=n +CONFIG_DISPLAY_BOARDINFO=n +CONFIG_EFI_LOADER=n + +CONFIG_POWER_DOMAIN=y +CONFIG_IMX8_POWER_DOMAIN=y + +CONFIG_DM_THERMAL=n +CONFIG_IMX_SC_THERMAL=n + +CONFIG_ENV_IS_IN_MMC=y +CONFIG_LZ4=y +CONFIG_XEN=y +CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y +CONFIG_XEN_DEBUG_SERIAL=y diff --git a/include/configs/imx8qm_mek_android_auto.h b/include/configs/imx8qm_mek_android_auto.h index 0a89469..669d238 100644 --- a/include/configs/imx8qm_mek_android_auto.h +++ b/include/configs/imx8qm_mek_android_auto.h @@ -86,4 +86,8 @@ #define AVB_AB_I_UNDERSTAND_LIBAVB_AB_IS_DEPRECATED +#if defined(CONFIG_XEN) +#include "imx8qm_mek_android_auto_xen.h" +#endif + #endif /* IMX8QM_MEK_ANDROID_AUTO_H */ diff --git a/include/configs/imx8qm_mek_android_auto_xen.h b/include/configs/imx8qm_mek_android_auto_xen.h new file mode 100644 index 0000000..0cf548f --- /dev/null +++ b/include/configs/imx8qm_mek_android_auto_xen.h @@ -0,0 +1,35 @@ +/* + * Copyright 2018 NXP + * + * SPDX-License-Identifier: GPL-2.0+ + */ + +#ifndef IMX8QM_MEK_ANDROID_AUTO_XEN_H +#define IMX8QM_MEK_ANDROID_AUTO_XEN_H + +#undef CONFIG_SYS_SDRAM_BASE +#undef CONFIG_NR_DRAM_BANKS +#undef PHYS_SDRAM_1 +#undef PHYS_SDRAM_2 +#undef PHYS_SDRAM_1_SIZE +#undef PHYS_SDRAM_2_SIZE + +#define CONFIG_SYS_SDRAM_BASE 0x40000000 +#define CONFIG_NR_DRAM_BANKS 2 +#define PHYS_SDRAM_1 0x40000000 +#define PHYS_SDRAM_2 0x200000000 +#define PHYS_SDRAM_1_SIZE 0xC0000000 /* 3 GB */ +#define PHYS_SDRAM_2_SIZE 0x20000000 /* 512 MB */ + +#undef CONFIG_LOADADDR +#define CONFIG_LOADADDR 0x40280000 +#undef CONFIG_SYS_INIT_SP_ADDR +#define CONFIG_SYS_INIT_SP_ADDR 0x40200000 + +#undef CONFIG_REQUIRE_SERIAL_CONSOLE +#undef CONFIG_IMX_SMMU + +/* This needs to be stay same in iomem in domu.cfg */ +#define SC_IPC_CH 0x15d1d0000 + +#endif /* IMX8QM_MEK_ANDROID_AUTO_XEN_H */ -- 1.9.1