Commit a26de6e05563d3e3e6734e0d99e464437aa89db5

Authored by Peng Fan
Committed by Ye Li
1 parent d260e97be3

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.

Signed-off-by: Peng Fan <peng.fan@nxp.com>
(cherry picked from commit a4e932cae433b9d2e1cff6a94b12e4abcac45543)

Showing 6 changed files with 244 additions and 2 deletions Side-by-side Diff

arch/arm/dts/Makefile
... ... @@ -467,6 +467,7 @@
467 467 dtb-$(CONFIG_ARCH_IMX8) += fsl-imx8qm-ddr4-arm2.dtb \
468 468 fsl-imx8qm-lpddr4-arm2.dtb \
469 469 fsl-imx8qm-mek.dtb \
  470 + fsl-imx8qm-mek-xen.dtb \
470 471 fsl-imx8qxp-lpddr4-arm2.dtb \
471 472 fsl-imx8qxp-mek.dtb
472 473  
arch/arm/dts/fsl-imx8qm-mek-xen.dts
  1 +/*
  2 + * Copyright 2018 NXP
  3 + *
  4 + * This program is free software; you can redistribute it and/or
  5 + * modify it under the terms of the GNU General Public License
  6 + * as published by the Free Software Foundation; either version 2
  7 + * of the License, or (at your option) any later version.
  8 + *
  9 + * This program is distributed in the hope that it will be useful,
  10 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
  11 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12 + * GNU General Public License for more details.
  13 + */
  14 +
  15 +/dts-v1/;
  16 +
  17 +#include "fsl-imx8qm-mek.dts"
  18 +
  19 +&usdhc1 {
  20 + /* Need to be same as iomem for sdhc1 in domu.cfg */
  21 + reg = <0x1 0x5b010000 0x0 0x10000>;
  22 +};
  23 +
  24 +&usdhc2 {
  25 + /* Need to be same as iomem for sdhc2 in domu.cfg */
  26 + reg = <0x1 0x5b020000 0x0 0x10000>;
  27 + status = "disabled";
  28 +};
  29 +
  30 +&gpio2 {
  31 + status = "disabled";
  32 +};
  33 +
  34 +&gpio4 {
  35 + status = "disabled";
  36 +};
  37 +
  38 +&gpio5 {
  39 + status = "disabled";
  40 +};
  41 +
  42 +&usb2 {
  43 + status = "disabled";
  44 +};
  45 +
  46 +&fec1 {
  47 + status = "disabled";
  48 +};
  49 +
  50 +&fec2 {
  51 + status = "disabled";
  52 +};
  53 +
  54 +&flexspi0 {
  55 + status = "disabled";
  56 +};
  57 +
  58 +&i2c0 {
  59 + status = "disabled";
  60 +};
  61 +
  62 +&i2c1_lvds0 {
  63 + status = "disabled";
  64 +};
  65 +
  66 +&i2c1_lvds1 {
  67 + status = "disabled";
  68 +};
  69 +
  70 +&lpspi0 {
  71 + status = "disabled";
  72 +};
  73 +
  74 +&lpuart0 {
  75 + status = "disabled";
  76 +};
board/freescale/imx8qm_mek/imx8qm_mek.c
... ... @@ -65,6 +65,10 @@
65 65 sc_ipc_t ipcHndl = 0;
66 66 sc_err_t sciErr = 0;
67 67  
  68 + /* When start u-boot in XEN VM, directly return */
  69 + if (IS_ENABLED(CONFIG_XEN))
  70 + return 0;
  71 +
68 72 ipcHndl = gd->arch.ipc_channel_handle;
69 73  
70 74 /* Power up UART0, this is very early while power domain is not working */
... ... @@ -273,7 +277,7 @@
273 277 }
274 278 #endif
275 279  
276   -#ifdef CONFIG_USB
  280 +#ifdef CONFIG_USB_XHCI_IMX8
277 281  
278 282 #define USB_TYPEC_SEL IMX_GPIO_NR(4, 6)
279 283 #define USB_TYPEC_EN IMX_GPIO_NR(4, 19)
... ... @@ -392,6 +396,9 @@
392 396  
393 397 int board_init(void)
394 398 {
  399 + if (IS_ENABLED(CONFIG_XEN))
  400 + return 0;
  401 +
395 402 /* Power up base board */
396 403 sc_pm_set_resource_power_mode(gd->arch.ipc_channel_handle,
397 404 SC_R_BOARD_R1, SC_PM_PW_MODE_ON);
... ... @@ -407,7 +414,7 @@
407 414 #endif
408 415 #endif
409 416  
410   -#ifdef CONFIG_USB
  417 +#ifdef CONFIG_USB_XHCI_IMX8
411 418 setup_typec();
412 419 #endif
413 420  
... ... @@ -420,6 +427,9 @@
420 427 "dma_lpuart0",
421 428 };
422 429  
  430 + if (IS_ENABLED(CONFIG_XEN))
  431 + return;
  432 +
423 433 power_off_pd_devices(power_on_devices, ARRAY_SIZE(power_on_devices));
424 434 }
425 435  
426 436  
... ... @@ -448,11 +458,19 @@
448 458  
449 459 int board_mmc_get_env_dev(int devno)
450 460 {
  461 + /* Use EMMC */
  462 + if (IS_ENABLED(CONFIG_XEN))
  463 + return 0;
  464 +
451 465 return devno;
452 466 }
453 467  
454 468 int mmc_map_to_kernel_blk(int dev_no)
455 469 {
  470 + /* Use EMMC */
  471 + if (IS_ENABLED(CONFIG_XEN))
  472 + return 0;
  473 +
456 474 return dev_no;
457 475 }
458 476  
configs/imx8qm_mek_androidauto_xen_defconfig
  1 +CONFIG_ARM=y
  2 +CONFIG_ARCH_IMX8=y
  3 +CONFIG_DEFAULT_DEVICE_TREE="fsl-imx8qm-mek-xen"
  4 +CONFIG_SYS_EXTRA_OPTIONS="ANDROID_AUTO_SUPPORT"
  5 +CONFIG_TARGET_IMX8QM_MEK=y
  6 +CONFIG_SYS_TEXT_BASE=0x40080000
  7 +CONFIG_EFI_PARTITION=y
  8 +CONFIG_SYS_MALLOC_F_LEN=0x2000
  9 +CONFIG_DM=y
  10 +CONFIG_DM_WARN=n
  11 +CONFIG_DM_DEVICE_REMOVE=n
  12 +
  13 +CONFIG_DM_SERIAL=n
  14 +CONFIG_FSL_LPUART=n
  15 +CONFIG_OF_CONTROL=y
  16 +CONFIG_DM_I2C=n
  17 +# CONFIG_DM_I2C_COMPAT is not set
  18 +CONFIG_SYS_I2C_IMX_LPI2C=n
  19 +CONFIG_CMD_I2C=n
  20 +
  21 +CONFIG_USB_XHCI_HCD=n
  22 +CONFIG_USB_XHCI_IMX8=n
  23 +
  24 +CONFIG_DM_USB=n
  25 +CONFIG_USB_EHCI_HCD=y
  26 +CONFIG_CMD_USB=y
  27 +CONFIG_USB=y
  28 +CONFIG_USB_TCPC=n
  29 +
  30 +CONFIG_USB_GADGET=y
  31 +CONFIG_CI_UDC=y
  32 +CONFIG_USB_GADGET_DOWNLOAD=y
  33 +CONFIG_USB_GADGET_MANUFACTURER="FSL"
  34 +CONFIG_USB_GADGET_VENDOR_NUM=0x18d1
  35 +CONFIG_USB_GADGET_PRODUCT_NUM=0x0d02
  36 +
  37 +CONFIG_USB_CDNS3=n
  38 +CONFIG_USB_CDNS3_GADGET=n
  39 +CONFIG_USB_GADGET_DUALSPEED=y
  40 +
  41 +CONFIG_DM_GPIO=n
  42 +CONFIG_DM_PCA953X=n
  43 +CONFIG_BOOTDELAY=1
  44 +CONFIG_CMD_MMC=y
  45 +CONFIG_DM_MMC=y
  46 +CONFIG_MMC_IO_VOLTAGE=y
  47 +CONFIG_MMC_UHS_SUPPORT=y
  48 +CONFIG_MMC_HS400_SUPPORT=y
  49 +CONFIG_FSL_FSPI=n
  50 +CONFIG_DM_SPI=n
  51 +CONFIG_DM_SPI_FLASH=n
  52 +CONFIG_SPI_FLASH=n
  53 +CONFIG_SPI_FLASH_4BYTES_ADDR=n
  54 +CONFIG_SPI_FLASH_STMICRO=n
  55 +
  56 +CONFIG_DM_REGULATOR=y
  57 +CONFIG_DM_REGULATOR_FIXED=n
  58 +CONFIG_DM_REGULATOR_GPIO=n
  59 +
  60 +CONFIG_PINCTRL=y
  61 +CONFIG_PINCTRL_IMX8=y
  62 +
  63 +CONFIG_CMD_NET=n
  64 +CONFIG_CMD_NFS=n
  65 +CONFIG_CMD_BDI=n
  66 +CONFIG_CMD_CONSOLE=n
  67 +CONFIG_CMD_BOOTD=n
  68 +CONFIG_CMD_BOOTEFI=n
  69 +CONFIG_CMD_BOOTEFI_HELLO_COMPILE=n
  70 +CONFIG_CMD_ELF=n
  71 +CONFIG_CMD_GO=n
  72 +CONFIG_CMD_RUN=n
  73 +CONFIG_CMD_IMI=n
  74 +CONFIG_CMD_IMLS=n
  75 +CONFIG_CMD_XIMG=n
  76 +CONFIG_CMD_EXPORTENV=n
  77 +CONFIG_CMD_IMPORTENV=n
  78 +CONFIG_CMD_EDITENV=n
  79 +CONFIG_CMD_ENV_EXISTS=n
  80 +CONFIG_CMD_MEMORY=n
  81 +CONFIG_CMD_CRC32=n
  82 +CONFIG_CMD_DM=n
  83 +CONFIG_CMD_LOADB=n
  84 +CONFIG_CMD_LOADS=n
  85 +CONFIG_CMD_FLASH=n
  86 +CONFIG_CMD_GPT=n
  87 +CONFIG_CMD_FPGA=n
  88 +CONFIG_CMD_ECHO=n
  89 +CONFIG_CMD_ITEST=n
  90 +CONFIG_CMD_SOURCE=n
  91 +CONFIG_CMD_SETEXPR=n
  92 +CONFIG_CMD_MISC=n
  93 +
  94 +CONFIG_DISPLAY_CPUINFO=n
  95 +CONFIG_DISPLAY_BOARDINFO=n
  96 +CONFIG_EFI_LOADER=n
  97 +
  98 +CONFIG_POWER_DOMAIN=y
  99 +CONFIG_IMX8_POWER_DOMAIN=y
  100 +
  101 +CONFIG_DM_THERMAL=n
  102 +CONFIG_IMX_SC_THERMAL=n
  103 +
  104 +CONFIG_ENV_IS_IN_MMC=y
  105 +CONFIG_LZ4=y
  106 +CONFIG_XEN=y
  107 +CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y
  108 +CONFIG_XEN_DEBUG_SERIAL=y
include/configs/imx8qm_mek_android_auto.h
... ... @@ -90,5 +90,9 @@
90 90 #undef CONFIG_PHY_ATHEROS
91 91 #undef CONFIG_USB_FUNCTION_MASS_STORAGE
92 92  
  93 +#if defined(CONFIG_XEN)
  94 +#include "imx8qm_mek_android_auto_xen.h"
  95 +#endif
  96 +
93 97 #endif /* IMX8QM_MEK_ANDROID_AUTO_H */
include/configs/imx8qm_mek_android_auto_xen.h
  1 +/*
  2 + * Copyright 2018 NXP
  3 + *
  4 + * SPDX-License-Identifier: GPL-2.0+
  5 + */
  6 +
  7 +#ifndef IMX8QM_MEK_ANDROID_AUTO_XEN_H
  8 +#define IMX8QM_MEK_ANDROID_AUTO_XEN_H
  9 +
  10 +#undef CONFIG_SYS_SDRAM_BASE
  11 +#undef CONFIG_NR_DRAM_BANKS
  12 +#undef PHYS_SDRAM_1
  13 +#undef PHYS_SDRAM_2
  14 +#undef PHYS_SDRAM_1_SIZE
  15 +#undef PHYS_SDRAM_2_SIZE
  16 +
  17 +#define CONFIG_SYS_SDRAM_BASE 0x40000000
  18 +#define CONFIG_NR_DRAM_BANKS 2
  19 +#define PHYS_SDRAM_1 0x40000000
  20 +#define PHYS_SDRAM_2 0x200000000
  21 +#define PHYS_SDRAM_1_SIZE 0xC0000000 /* 3 GB */
  22 +#define PHYS_SDRAM_2_SIZE 0x20000000 /* 512 MB */
  23 +
  24 +#undef CONFIG_LOADADDR
  25 +#define CONFIG_LOADADDR 0x40280000
  26 +#undef CONFIG_SYS_INIT_SP_ADDR
  27 +#define CONFIG_SYS_INIT_SP_ADDR 0x40200000
  28 +
  29 +#undef CONFIG_REQUIRE_SERIAL_CONSOLE
  30 +#undef CONFIG_IMX_SMMU
  31 +
  32 +/* This needs to be stay same in iomem in domu.cfg */
  33 +#define SC_IPC_CH 0x15d1d0000
  34 +
  35 +#endif /* IMX8QM_MEK_ANDROID_AUTO_XEN_H */