summaryrefslogtreecommitdiff
path: root/include/configs
AgeCommit message (Collapse)Author
2020-03-05apalis-imx8: set device tree to Apalis DT by defaultStefan Agner
Signed-off-by: Stefan Agner <stefan.agner@toradex.com> (cherry picked from commit 04e7012224b6971972cb76415980c835a2ba9654) (cherry picked from commit 0759efaef277ff5e0583a4808593a36d7de0353d) (cherry picked from commit 6ceb16bf22088785c53d751328347f0b6579fafe) (cherry picked from commit c5844221c59cda20f645ae83352944ffa570c3f1)
2020-03-05apalis-imx8: use UART1 as console UARTStefan Agner
NXP LPUART1 is used as Apalis UART1, which is the main console on our Linux BSP. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> (cherry picked from commit 360629c1fd6187de19d0f50feb85c725995e49cc) (cherry picked from commit 63030dac6afc51d17b04d23ce41af4788f03717e) (cherry picked from commit 7bbe1708e0cebf3432c234ea74f8d6fb632a023b) (cherry picked from commit d58fa8f3247edc18bdbf716fa9a45bcf5fce9cb8)
2020-03-05apalis-imx8: fix EthernetStefan Agner
Make sure that all pins connected to the Micrel KSZ9031 PHY are muxed. Properly reset the PHY after all muxing has been applied. This makes sure that strapping is not overwritten by the SoC default mux (particularly it makes sure that CLK125_NDO is not driven low during reset). Make sure to not use CONFIG_DM_ETH as it seems to break ETH support as is. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> (cherry picked from commit f0a1ceb6f5e2ab3b3618190541b1e7a9fd4c1e4a) (cherry picked from commit 8f6405070189a8744c2f6a9d9a6e041554fb9046) (cherry picked from commit 6f24c637fd7725a27249d6a950f587134f30b97c) (cherry picked from commit 1b3c97e1eb50a56066820596a6b1b83da465af7f)
2020-03-05apalis-imx8: remove PCA9557 GPIO controllersStefan Agner
The Apalis iMX8 module does not have PCA9557 GPIO controllers on the module. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> (cherry picked from commit c80b3bfbe693d5a8851129f4878d0cd3a7325d13) (cherry picked from commit 898ae105703cd0019a542bc0a17649339c934fa6) (cherry picked from commit 69d385444efa79d2909f772c4a4b404d1bd7274d) (cherry picked from commit 0f5887d5b80f8535a7f422b73d7a0bf4a4e445af)
2020-03-05apalis-imx8: initial addStefan Agner
Initial board support for Apalis iMX8 using a copy of NXP iMX8QM ARM2 LPDDR4 board. Signed-off-by: Stefan Agner <stefan.agner@toradex.com> (cherry picked from commit 68e401998ba0654292b7914b85433d8453202ec8) (cherry picked from commit 6b9234fa1f5889f0eeecc6147afffbc859933c99) (cherry picked from commit 0b7feded806717b4292615373ed6c018324b8ef5) Conflicts: arch/arm/cpu/armv8/imx8/Kconfig, file moved (cherry picked from commit 393dd8dd4061833fcc3cfd85886d49160b515ce0)
2020-01-15MLK-23241 imx8dx_mek: Add iMX8DX MEK board supportYe Li
iMX8DX MEK board has similar design with 8QXP MEK. The major changes are 1. DDR changed to 16bits 1GB DDR part 2. USB3.0 is removed and only support OTG on typec port. (No SW change needed) This patch adds new defconfigs and DTS file for this new board. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> (cherry picked from commit 5efb4275f6cfefb5dd342f2e498834b40b989883)
2019-12-10MA-16048 Fix imx8q u-boot hangJi Luo
Address 0x8880_0000 is reserved for M4 image on imx8q, which leaves limited memory region for the malloc pool. The avb will consume much heap memory to verify the kernel and dtbo image, memory conflicts may happen as the kernel/dtbo image size is getting larger. As the avb will load kernel/dtbo in every avb_slot_verify(), but will only free the memory after both slots are checked(if needed). And for trusty enabled platforms, extra heap memory will be used to do the hash calculation. This commit will free the slot memory once it's marked as unbootable and will use fixed memory started from CONFIG_FASTBOOT_BUF_ADDR to help store the data to do the hash calculation. With above change, we get a chance to decrease the malloc pool size. Test: boot on imx8qxp and imx8mn. Change-Id: Id95b9becf6fa7fae4f120a4dc9e9a3ba90da578c Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-12-09MLK-23101 imx8mn: Fix address conflict in SPLYe Li
The latest patch "MLK-23081 imx8mn: Change SPL malloc and BSS address" changed SPL runtime data to OCRAM_S. But this introduced a conflict with CONFIG_SAVED_DRAM_TIMING_BASE which is also using OCRAM_S for DDR parameters. To fix the issue, adjust the SPL runtime data addresses to reserve 16KB space for DDR parameter and move SPL BSS to OCRAM. Signed-off-by: Ye Li <ye.li@nxp.com> Acked-by: Peng Fan <peng.fan@nxp.com> (cherry picked from commit 20fdadfa50227b518d1a185da4c59e756eb8e594)
2019-12-05MLK-23081 imx8mn: Change SPL malloc and BSS addressYe Li
Android's build has large size of SPL which overlays with malloc pool, and causes DDR FW image destroyed by the malloc. Adjust some SPL addresses to align with iMX8MQ and allow SPL + DDRFW using the 312 KB OCRAM from 0x912000 to 0x960000. Since the max DDR FW size is 96KB, we set max SPL size to be 216KB. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com> (cherry picked from commit e3df1f1cf9972ce8ed84de09d183599bd52a5c47)
2019-10-15MLK-22759-3 imx8mn: Add LPDDR4 EVK board supportYe Li
Add support for iMX8MN LPDDR4 EVK board which uses 2GB LPDDR4 and PCA9450B PMIC. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-10-09MA-15582 Fix imx8mn u-boot hangJi Luo
The u-boot-spl.bin is getting larger and it will break the ddr firmware which will cause ddr training fail. Disable unnecessary configs for imx8mn to reduce the spl image size. Test: boot on imx8mn_evk. Change-Id: Id105b0adf8669e471752495f78012314efad24c0 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-08-26MA-15334-2 enable trusty for imx8q standard Android ubootfaqiang.zhu
"CONFIG_IMX_TRUSTY_OS=y" is added to the corresponding defconfig files to include trusty related code. "CONFIG_SPL_ENV_SUPPORT=y" and "CONFIG_SPL_LIBDISK_SUPPORT=y" are added because "mmc_get_env_dev()" and "blk_get_dev()" are invoked in SPL stage with trusty related code. "CONFIG_SHA256=y" is added since SPL will access RPMB now. MACROs are added in corresponding header files. standard android uboot has more content than android auto uboot, the uboot malloc pool size is changed from 76MB to 86MB to make the boot process can be handed over to kernel without malloc problem. Change-Id: I7505adeb2e30ddaecc8217cee991e6d7b0785af0 Signed-off-by: faqiang.zhu <faqiang.zhu@nxp.com>
2019-07-30MLK-22179-2 imx8mn_evk: Enable FSPI DQS loopback for high freqYe Li
There is an divider on imx8mn will always divide 2 to flexspi root clock. So actual SCLK output to device is 50Mhz on imx8mn not 100Mhz. After changing the root clock setting to configure SCLK to 100Mhz, found the read data is not correct. Must enable the internal DQS pad loopback to fix the problem. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-07-30MA-15217-2 Enable dual bootloader for imx8mJi Luo
Open configs to enable dual bootloader feature for imx8m platforms. Test: A/B slot switch and spl recovery mode test. Change-Id: I3fe0217c858b4cb1e06bd76f829a4f8977370cde Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-07-17MLK-22279-4 imx8mn_evk: Enable multiple env storagesYe Li
Enable multiple environment storage devices on iMX8MN DDR4 EVK board. Remove duplicated CONFIG_ENV_OFFSET since we use env_get_offset to override it. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-07-08MA-14981-1 Add evk_imx8mm 4GB DDR supportJi Luo
Add configs to support evk_imx8mm 4GB DDR board. The 4GB DDR will be split into two banks, one is 3GB (0x4000_0000~0xffff_0000) and another is 1GB(0x1_0000_0000~0x1_4000_0000). Test: build and boot with or without trusty. Change-Id: I02f6465fc5709b15fd76820edb846452d011dd56 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-06-25MLK-22101 configs: imx8mn: add jailhouse envPeng Fan
Add jailhouse env for booting linux to support jailhouse Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Ye Li <ye.li@nxp.com>
2019-06-19MA-14989-1 Add 2GB ddr support for AIYJi Luo
Add support for AIY 2GB DDR size. Wrap support for 3GB DDR board with CONFIG_AIY_LPDDR4_3G because of the limited ocram size. Test: build and boot on 2GB AIY board. Change-Id: I04da60cc0d0b22c6c32ff705bcab4095068ba6ea Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-06-06MLK-21961 imx: fix tee_addr for nand bootPeng Fan
teeaddr is not set. Align with sd/emmc, use tee_addr and set tee_addr. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reported-by: Jessie Lee <jessie.lee@nxp.com> Reviewed-by: Ye Li <ye.li@nxp.com> (cherry picked from commit 5fb43e3f8fba534d49d8066411644285eaa279b4)
2019-05-30MA-14893-2 Add android build target for imx8mnJi Luo
Add configs to support evk_imx8mn android build. Test: build and boot on eMMC and sd. Change-Id: Id5c63b31e45357d791425976358635c18de928eb Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-05-30MA-14873-3 add android car defconfig in kernel4.19zhang sanshan
uboot will hang at ulz4fn which is used to unzip Image.lz4 to Image in uboot on car2 image. It will hang at last frame unzip process. The unzip Image size is about 32M(0x82280000) has overlaped with malloc memory. malloc memory end address is 0x88000000 and the end of kernel&dtb is at arround 0x83400000 The max size of malloc should be 80M. Change-Id: I0a099a94635fb087b71f4cfcf58b2cee6eb8d141 Signed-off-by: zhang sanshan <pete.zhang@nxp.com>
2019-05-29MLK-21889-11 imx8mn_evk: Add board codes and defconfig for iMX8M Nano EVKYe Li
Add board level codes, header file, and defconfig for iMX8M Nano EVK board. The board has similar design as iMX8MM EVK. Signed-off-by: Ye Li <ye.li@nxp.com> Signed-off-by: Jacky Bai <ping.bai@nxp.com>
2019-05-21MA-14759-2 Memory refine for evk_imx8mm 1GB DRAM boardJi Luo
Config the memory size of evk_imx8mm to 1GB. Change-Id: I8f605a099b4f825c2ded6326c5209b52b5ba3925 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-05-06MLK-21660 imx8qm: Disable SATA driver by defaultYe Li
The imx8 SATA driver will cause crash when some gen3 SATA device is connected. As there is no booting from SATA supported by ROM, so enabling this driver is not necessary, change to disable it at default. And will fix the issue in future. Users who need to use the driver, have to set "CONFIG_SATA_IMX=y" in defconfig to enable it. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-05-05MA-14693 AIY: Decrease the spl image size to fix panicJi Luo
imx8mq has very limited TCM memory (about 256k bytes) to store the spl code and lpddr4 training binaries, u-boot may panic when the spl code size becomes too large. This problem is much worse on AIY because we have to support multiple ddr size. And on some daily build servers, the u-boot binary will be slight larger than the binary built on other servers (which is quite confusing...). This patch disables some unused configs to decrease the spl size, it will help fix u-boot panic built from daily build servers. Test: build and boot on AIY. Change-Id: I6e216bf4d88fb29c9cacd945e9dc93ddf9e73451 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-04-23MA-14651-2 add dependence between CONFIG_ANDROID_AB_SUPPORT and ↵zhang sanshan
CONFIG_SYSTEM_RAMDISK_SUPPORT system can't enable CONFIG_SYSTEM_RAMDISK_SUPPORT in non-AB system. boot.img have normal boot kernel and recovery ramdisk. So ota can't update boot.img in both normal boot and recovery mode. Change-Id: I137b098ba58e4fbd97105382903683e6713b8b29 Signed-off-by: zhang sanshan <pete.zhang@nxp.com>
2019-04-23MA-14651-1 [Android] refine the logic of CONFIG_SYSTEM_RAMDISK_SUPPORT and ↵zhang sanshan
CONFIG_ANDROID_AB_SUPPORT enlarge max bootargs number from 32 to 64 to align imx8 devices. refine the usage of CONFIG_ANDROID_AB_SUPPORT and CONFIG_SYSTEM_RAMDISK_SUPPORT Change-Id: I4cef6d87559e0881460c37bde202b35037e3110a Signed-off-by: zhang sanshan <pete.zhang@nxp.com>
2019-04-23MLK-21515 configs/imx8: Remove earlycon=lpuart32 valueLeonard Crestez
All our imx8qm/8qxp dts files have a chosen/stdout-path parameter so passing an earlycon value is not required: the kernel can figure it out based from dtb. Passing earlycon=lpuart32 only works with nxp internal linux tree because we made "lpuart32" add a 0x10 offset by default. That does not seem upstreamable without breaking other lpuart earlycon users such as layerscape. See commit 5481bac06657 ("MLK-13911-12 tty: serial: fsl: add earlycon support"), inherited in various forms from imx_4.9.y. This commit makes uboot imx_v2018.03 work out-of-the-box with upstream linux on imx8qxp-mek. Signed-off-by: Leonard Crestez <leonard.crestez@nxp.com> Acked-by: Ye Li <ye.li@nxp.com>
2019-04-02MA-14501[Android] change BOOTAUX_RESERVED_MEM macro to defconfigZhang Bo
As the M4 use different DDR memory size in normal android/car2 and car image, use different defconfig for car2 to decrease DDR memory reservation. So memory reserved for each M4 core is 8MB in car2 and normal android image. it's 32MB for car image. Change-Id: Idf608f539cd614a154c78e3a1af28eff1da5c1f2 Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
2019-04-01MA-14494 Support DVT AIY 1G boardJi Luo
Add support for DVT AIY 1G board, distinguish the board type with the board id. TYPE: ID: Micron 1G 0x5 HYNIX 1G 0x3 Micron 3G 0x1 Test: Boot on AIY 1G/3G ddr board. Change-Id: I3c7b6ebe8bc5d4e59917fcc3947e9ebfefc940da Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-03-29MLK-21291 imx8mm: evk: not restrict uart4 when enabling jailhousePeng Fan
When booting dual linux with jailhouse, inmate linux will use the 2nd uart, so not restrict access the uart for jailhouse case. The best solution would be using SIP call to ATF, for simplicity, directly modify the RDC register. Signed-off-by: Peng Fan <peng.fan@nxp.com> (cherry picked from commit b22b70ff0b5bbacea7383bde9e8893bb504199c3)
2019-03-28MLK-21277: imx8qm: spl: Add support for container parsing on validation boardTeo Hall
Sync support for container parsing for validation board as on MEK boards. Signed-off-by: Teo Hall <teo.hall@nxp.com>
2019-03-13MLK-21022: imx8qxp: change the mtd rootfs index numberHan Xu
change the mtd rootfs partition index number for i.MX8QXP lpddr4 validation board. Signed-off-by: Han Xu <han.xu@nxp.com>
2019-03-12MA-14318-1 Support dual bootloader for xenJi Luo
Trusty is not supported for xen so we don't need to check the keyslot package or rollback index in spl. Reassign the dram address for spl and u-boot to avoid conflicts. Support serial init functions to enable debug console in spl when xen is running. Test: Boot and A/B slot switch on imx8qm_mek. Change-Id: If6829252f1ec2e32255f951715c8747181951fd0 Signed-off-by: Ji Luo <ji.luo@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-03-12MA-14296-1[Android]Change uboot malloc size and change hdmi fw load addressZhang Bo
Image size is about 30M and 0x8028000+30M has overlaped with malloc memory. malloc memory end address is 0x88000000 and need to decrease the malloc size to reserve enough memory for loading kernel and dtb image. The memory address 0x90000000~0x92000000 has been reserved for M4 in SCFW. Need to change the HDMI firmware loading address to 0x84000000 which is aligned with BSP image. Change-Id: I6f9b6e05a9c9d8b5f7d385632a0ef54a0c20667d Signed-off-by: Zhang Bo <bo.zhang@nxp.com>
2019-03-08MA-14289-1 Revert "imx8q: Move spl to dram to fix reboot issue"Ji Luo
Move spl to 0x8000_0000 will cause cpu1 ~ cpu3 jump to spl when boot/reboot, revert this patch. This reverts commit 7d111f4c8bac25c234b0fc24af885421ce8bb188. Change-Id: I9adcd980b42a7539d6309cafaabff9d079ca993d
2019-03-07MA-14273-1 imx8q: Move spl to dram to fix reboot issueJi Luo
The spl is located at ocram which will be lost when suspend/resume, partition reboot will make A core reboot from the start address of ATF, which blocks dual bootloader feature on Android Auto. Move the spl to dram and make the partition reboot from spl to fix this issue. The memory map will be changed to: SPL: 0x0000_0000 --------> 0x8000_0000 ATF: 0x8000_0000 --------> 0x8004_0000 U-boot: 0x8002_0000 --------> 0x8006_0000 Test: reboot ok on imx8qm/imx8qxp. Change-Id: I49e8be51bf427dd00eb7507de22a787c6f6e1582 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-03-05MA-14173-1 Enable trusty for imx8mq_aiyJi Luo
Create new config file based on "imx8mq_aiy_android_defconfig" and enable the CONFIG_IMX_TRUSTY_OS to supprt Trusty OS for AIY. Also enlarge the malloc poll to 96 MB because calculate hash with CAAM will consume more heap memory. Test: Trusty OS boots up and CAAM functions work. Change-Id: Ia4bdf4c32617cb4d2951b63f34f3a4a83f4af1b5 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-02-27MA-14141 imx8q: Set default environment "panel=NULL"Ji Luo
Set the default environment "panel" as "NULL" to fix the LVDS0-HDMI not work issue. Test: LVDS0-HDMI works fine on imx8qm_mek. Change-Id: I115b0a185717762af911fe1e9237fb26ecbb7e3e Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-02-25MLK-20987-1 imx8qm/qxp: spl: Fix SPL flexspi boot breakYe Li
The CONFIG_QSPI_BOOT has been removed from SPL flexspi build, because we have to change the u-boot ENV to SD/MMC, and this configuration will set relevant configurations. But we don't clean up CONFIG_QSPI_BOOT for SPL completely, SPL still has some places using it and cause problem to flexspi boot. Using CONFIG_SPL_SPI_SUPPORT to replace the CONFIG_QSPI_BOOT. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-26MLK-20976-1 imx8qm: mek: remove partition creation for domuPeng Fan
Partition creation will be done in xen, remove it from uboot. And add domu-android-auto property Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Flynn xu <flynn.xu@nxp.com>
2019-02-25MLK-20980 imx8qm/qxp_mek: Set kernel fdt according to M4 bootYe Li
When M4 is booted by ROM, we have to enable RPMSG in kernel, so need to select the -rpmsg.dtb. If M4 is not enabled, use default kernel dtb. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-02-25MLK-20974 imx8qm: remove trusty support in domuPeng Fan
Remove trusty support in domu, since trusty EL3 not ready to handle tipc being interrupt by xen. But we still leave the memory for trusty, then it could be easy to add trusty back. Signed-off-by: Peng Fan <peng.fan@nxp.com> Reviewed-by: Flynn xu <flynn.xu@nxp.com>
2019-02-22MLK-20953 mx6ul/ull/ulz: Add "emmc_ack=1" env for EVK boardYe Li
The imx6ul/ull/ulz EVK boards enable eMMC fastboot with ack by default bootcfg. So when using uuu to burn eMMC, we have to set ack to 1 in "mmc partconf" command. Add this env for these board, so that uuu can use it to solve the problem by executing "if env exists emmc_ack; then ; else setenv emmc_ack 0; fi;" to use the emmc_ack at runtime. Signed-off-by: Ye Li <ye.li@nxp.com>
2019-02-21MA-14120 Add config to guard append bootargs supportJi Luo
Grant user the permission to change the bootargs can be very dangerous, so add config 'CONFIG_APPEND_BOOTARGS' to guard the bootargs appending feature. Test: bootargs can't be appended if "CONFIG_APPEND_BOOTARGS" is not set. Change-Id: I6d6879415ca251c806b56490290e5032aef24277 Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-02-19MLK-20945-7 imx8qm/qxp: Update MEK SPL configurationsYe Li
Update MEK SPL configs to enable SPL NOR support and change ENV to SD as default. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-02-17MLK-20938 imx8: Change signed os container loading addressYe Li
Current signed OS container loading address is 0x88000000. It conflicts with DDR memory reserved for M4. If we build image with ALT_CONFIG enabled. SCFW will assign that memory to M4. Then authentication to kernel image will have problem. So modify to new address 0x98000000 which is safe. Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-01-31MA-14051 Enable trusty for imx8q xenJi Luo
Open configs to add trusty os support for imx8q xen build. The rpmb keyslot package must be checked and copied to secure memory before trusty os boot. Change-Id: I66201783fa8439f2685377c10f257f064057dcfa Signed-off-by: Ji Luo <ji.luo@nxp.com>
2019-01-24MLK-20794-3 imx8qxp_arm2: Using CONFIG_DEFAULT_FDT_FILE for kernel FDTYe Li
Since different ARM2/Validation boards use different kernel FDT, configure them to CONFIG_DEFAULT_FDT_FILE in defconfig Signed-off-by: Ye Li <ye.li@nxp.com> Reviewed-by: Peng Fan <peng.fan@nxp.com>
2019-01-24MLK-20794-2 imx8qxp_arm2: Add support for 17x17 validation boardsYe Li
There are two new validation boards: LPDDR4 board (30123) and DDR3L board (30010) for imx8x family 17x17 chips. These two boards have same design except the DDR. Since SCFW is resposible for DDR initialization, U-boot could use one build to cover two boards. The 8DX 17x17 DDR3L ARM2 has been added into u-boot before, so we rename the config CONFIG_TARGET_IMX8DX_DDR3_ARM2 to CONFIG_TARGET_IMX8X_17X17_VAL to cover DDR3L and LPDDR4. Considering 8DX and 8QXP 17x17 may solder to the boards, we create two defconfig: one for DX and another for 8qxp to share with the CONFIG_TARGET_IMX8X_17X17_VAL but with different FDTs. Signed-off-by: Ye Li <ye.li@nxp.com>