From c079188d06b3669df7836e1b8c6126558b1fa39e Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Wed, 24 Jul 2019 11:52:18 +0800 Subject: [PATCH] MA-15208 Remap mmc device id in spl MMC device id remap function "board_mmc_get_env_dev()" was removed in u-boot v2019 because we add the mmc device aliases in dts file. But we still need to remap the mmc device id in spl or read/write rpmb keyslot package will fail. This patch adds mmc device id remap function in spl to get the correct device id. Test: boot on imx8mm with trusty enabled. Change-Id: I41c46494326d9eb2658d2cda692968fb895d0292 Signed-off-by: Ji Luo --- .../imx8mm_evk_4g_android_trusty_defconfig | 1 - configs/imx8mm_evk_android_trusty_defconfig | 1 - .../imx8mn_ddr4_evk_android_trusty_defconfig | 1 - configs/imx8mq_aiy_android_trusty_defconfig | 1 - .../imx8qm_mek_androidauto2_trusty_defconfig | 1 - .../imx8qm_mek_androidauto_trusty_defconfig | 1 - .../imx8qxp_mek_androidauto2_trusty_defconfig | 1 - .../imx8qxp_mek_androidauto_trusty_defconfig | 1 - include/configs/imx8mm_evk_android.h | 4 -- include/configs/imx8mn_evk_android.h | 4 -- lib/avb/fsl/fsl_avbkey.c | 69 +++++++++++-------- 11 files changed, 41 insertions(+), 44 deletions(-) diff --git a/configs/imx8mm_evk_4g_android_trusty_defconfig b/configs/imx8mm_evk_4g_android_trusty_defconfig index c0d2ef5c00..8f24826ab0 100755 --- a/configs/imx8mm_evk_4g_android_trusty_defconfig +++ b/configs/imx8mm_evk_4g_android_trusty_defconfig @@ -68,7 +68,6 @@ CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_IMX_TRUSTY_OS=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/imx8mm_evk_android_trusty_defconfig b/configs/imx8mm_evk_android_trusty_defconfig index 1c81c6e950..c5217deffb 100755 --- a/configs/imx8mm_evk_android_trusty_defconfig +++ b/configs/imx8mm_evk_android_trusty_defconfig @@ -68,7 +68,6 @@ CONFIG_SPL_USB_HOST_SUPPORT=y CONFIG_SPL_USB_GADGET_SUPPORT=y CONFIG_SPL_USB_SDP_SUPPORT=y CONFIG_IMX_TRUSTY_OS=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_SPL_USB_GADGET=y diff --git a/configs/imx8mn_ddr4_evk_android_trusty_defconfig b/configs/imx8mn_ddr4_evk_android_trusty_defconfig index 7524f02578..c9bc61dd1a 100644 --- a/configs/imx8mn_ddr4_evk_android_trusty_defconfig +++ b/configs/imx8mn_ddr4_evk_android_trusty_defconfig @@ -87,4 +87,3 @@ CONFIG_LIBAVB=y CONFIG_FLASH_MCUFIRMWARE_SUPPORT=y CONFIG_IMX_TRUSTY_OS=y CONFIG_SPL_LIBDISK_SUPPORT=y -CONFIG_SPL_ENV_SUPPORT=y diff --git a/configs/imx8mq_aiy_android_trusty_defconfig b/configs/imx8mq_aiy_android_trusty_defconfig index ab6632721c..6c01a957c0 100644 --- a/configs/imx8mq_aiy_android_trusty_defconfig +++ b/configs/imx8mq_aiy_android_trusty_defconfig @@ -9,7 +9,6 @@ CONFIG_SPL=y CONFIG_FIT=y CONFIG_FIT_EXTERNAL_OFFSET=0x3000 CONFIG_SPL_LOAD_FIT=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_MMC_SUPPORT=y CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" diff --git a/configs/imx8qm_mek_androidauto2_trusty_defconfig b/configs/imx8qm_mek_androidauto2_trusty_defconfig index 9c92bd208e..66c41201a4 100644 --- a/configs/imx8qm_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qm_mek_androidauto2_trusty_defconfig @@ -12,7 +12,6 @@ CONFIG_SPL_DOS_PARTITION=n CONFIG_SPL_DM_SEQ_ALIAS=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL_DRIVERS_MISC_SUPPORT=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_USE_TINY_PRINTF=y CONFIG_SPL=y diff --git a/configs/imx8qm_mek_androidauto_trusty_defconfig b/configs/imx8qm_mek_androidauto_trusty_defconfig index d6cc3caeac..b18e3d54cd 100644 --- a/configs/imx8qm_mek_androidauto_trusty_defconfig +++ b/configs/imx8qm_mek_androidauto_trusty_defconfig @@ -12,7 +12,6 @@ CONFIG_SPL_DOS_PARTITION=n CONFIG_SPL_DM_SEQ_ALIAS=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL_DRIVERS_MISC_SUPPORT=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_USE_TINY_PRINTF=y CONFIG_SPL=y diff --git a/configs/imx8qxp_mek_androidauto2_trusty_defconfig b/configs/imx8qxp_mek_androidauto2_trusty_defconfig index 9d6de1bf74..420e33eb4b 100644 --- a/configs/imx8qxp_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qxp_mek_androidauto2_trusty_defconfig @@ -12,7 +12,6 @@ CONFIG_SPL_DOS_PARTITION=n CONFIG_SPL_DM_SEQ_ALIAS=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL_DRIVERS_MISC_SUPPORT=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_USE_TINY_PRINTF=y CONFIG_SPL=y diff --git a/configs/imx8qxp_mek_androidauto_trusty_defconfig b/configs/imx8qxp_mek_androidauto_trusty_defconfig index 43026c6c0a..264dc2d028 100644 --- a/configs/imx8qxp_mek_androidauto_trusty_defconfig +++ b/configs/imx8qxp_mek_androidauto_trusty_defconfig @@ -12,7 +12,6 @@ CONFIG_SPL_DOS_PARTITION=n CONFIG_SPL_DM_SEQ_ALIAS=y CONFIG_SPL_SERIAL_SUPPORT=y CONFIG_SPL_DRIVERS_MISC_SUPPORT=y -CONFIG_SPL_ENV_SUPPORT=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_USE_TINY_PRINTF=y CONFIG_SPL=y diff --git a/include/configs/imx8mm_evk_android.h b/include/configs/imx8mm_evk_android.h index da168a2ab5..23891cf1de 100644 --- a/include/configs/imx8mm_evk_android.h +++ b/include/configs/imx8mm_evk_android.h @@ -60,10 +60,6 @@ #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 -#ifdef CONFIG_SPL_BUILD -#undef CONFIG_BLK -#endif - #endif /* Enable CONFIG_ANDROID_LOW_MEMORY to config 1GB ddr */ diff --git a/include/configs/imx8mn_evk_android.h b/include/configs/imx8mn_evk_android.h index 57d133735b..fa12760072 100644 --- a/include/configs/imx8mn_evk_android.h +++ b/include/configs/imx8mn_evk_android.h @@ -60,10 +60,6 @@ #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 -#ifdef CONFIG_SPL_BUILD -#undef CONFIG_BLK -#endif - #endif #endif /* IMX8MN_EVK_ANDROID_H */ diff --git a/lib/avb/fsl/fsl_avbkey.c b/lib/avb/fsl/fsl_avbkey.c index 0dd24ff1fe..b971530f60 100644 --- a/lib/avb/fsl/fsl_avbkey.c +++ b/lib/avb/fsl/fsl_avbkey.c @@ -30,8 +30,7 @@ #ifdef CONFIG_ARCH_IMX8 #include #endif - -#if defined(CONFIG_SPL_BUILD) +#ifdef CONFIG_SPL_BUILD #include #endif @@ -45,14 +44,35 @@ extern int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value); -#ifdef AVB_RPMB -static int mmc_dev_no = -1; +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) +int spl_get_mmc_dev(void) +{ + u32 dev_no = spl_boot_device(); + switch (dev_no) { + case BOOT_DEVICE_MMC1: + return 0; + case BOOT_DEVICE_MMC2: + case BOOT_DEVICE_MMC2_2: + return 1; + } + +#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT + printf("spl: unsupported mmc boot device.\n"); +#endif + return -ENODEV; +} +#endif + +#ifdef AVB_RPMB struct mmc *get_mmc(void) { - extern int mmc_get_env_devno(void); + int mmc_dev_no; struct mmc *mmc; - if (mmc_dev_no < 0 && (mmc_dev_no = mmc_get_env_dev()) < 0) - return NULL; +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) + mmc_dev_no = spl_get_mmc_dev(); +#else + mmc_dev_no = mmc_get_env_dev(); +#endif mmc = find_mmc_device(mmc_dev_no); if (!mmc || mmc_init(mmc)) return NULL; @@ -70,33 +90,14 @@ void fill_secure_keyslot_package(struct keyslot_package *kp) { 0x100)); } -#if defined(CONFIG_SPL_BUILD) -static int spl_mmc_get_device_index(u32 boot_device) -{ - switch (boot_device) { - case BOOT_DEVICE_MMC1: - return 0; - case BOOT_DEVICE_MMC2: - case BOOT_DEVICE_MMC2_2: - return 1; - } - -#ifdef CONFIG_SPL_LIBCOMMON_SUPPORT - printf("spl: unsupported mmc boot device.\n"); -#endif - - return -ENODEV; -} -#endif - int read_keyslot_package(struct keyslot_package* kp) { char original_part; int blksz; unsigned char* fill = NULL; int ret = 0; /* load tee from boot1 of eMMC. */ -#if defined(CONFIG_SPL_BUILD) - int mmcc = spl_mmc_get_device_index(spl_boot_device()); +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) + int mmcc = spl_get_mmc_dev(); #else int mmcc = mmc_get_env_dev(); #endif @@ -184,7 +185,11 @@ bool rpmbkey_is_set(void) struct blk_desc *desc = NULL; /* Get current mmc device. */ +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) + mmcc = spl_get_mmc_dev(); +#else mmcc = mmc_get_env_dev(); +#endif mmc = find_mmc_device(mmcc); if (!mmc) { printf("error - cannot find '%d' mmc device\n", mmcc); @@ -580,7 +585,11 @@ int gen_rpmb_key(struct keyslot_package *kp) { int ret = -1; /* load tee from boot1 of eMMC. */ +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) + int mmcc = spl_get_mmc_dev(); +#else int mmcc = mmc_get_env_dev(); +#endif struct blk_desc *dev_desc = NULL; struct mmc *mmc; @@ -1170,7 +1179,11 @@ int do_rpmb_key_set(uint8_t *key, uint32_t key_size) memcpy(rpmb_key, key, RPMBKEY_LENGTH); /* Get current mmc device. */ +#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_MMC_SUPPORT) + mmcc = spl_get_mmc_dev(); +#else mmcc = mmc_get_env_dev(); +#endif mmc = find_mmc_device(mmcc); if (!mmc) { printf("error - cannot find '%d' mmc device\n", mmcc); -- 2.17.1