From 0fffe007582f5b76eb5b34f04361967598c99d28 Mon Sep 17 00:00:00 2001 From: "faqiang.zhu" Date: Tue, 14 Apr 2020 15:44:58 +0800 Subject: MA-16954 set partition type to efi after flash gpt partition If the target device have DOS partition, uboot will save the partition type as dos partition at early stage when the driver bind the device. After the gpt partition is flashed, uboot will try to reload the DOS partition, instead of the the EFI partition. In this commit, if the GPT partition is successfully flashed, set the partition type to be PART_TYPE_EFI if necessary, so the EFI partitions will be reloaded. Change-Id: I6095cb56c73aecee24f76d169db89daba3783e29 Signed-off-by: faqiang.zhu --- drivers/fastboot/fb_fsl/fb_fsl_command.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/drivers/fastboot/fb_fsl/fb_fsl_command.c b/drivers/fastboot/fb_fsl/fb_fsl_command.c index 5cf3bd83c7..824c3d4223 100644 --- a/drivers/fastboot/fb_fsl/fb_fsl_command.c +++ b/drivers/fastboot/fb_fsl/fb_fsl_command.c @@ -831,6 +831,18 @@ static void flash(char *cmd, char *response) #if defined(CONFIG_FASTBOOT_LOCK) if (strncmp(cmd, "gpt", 3) == 0) { int gpt_valid = 0; + int status, mmc_no; + struct blk_desc *dev_desc; + mmc_no = fastboot_devinfo.dev_id; + dev_desc = blk_get_dev("mmc", mmc_no); + if (dev_desc) { + if (dev_desc->part_type != PART_TYPE_EFI) + dev_desc->part_type = PART_TYPE_EFI; + } + else { + fastboot_fail("", response); + return; + } gpt_valid = partition_table_valid(); /* If gpt is valid, load partitons table into memory. So if the next command is "fastboot reboot bootloader", -- cgit v1.2.3 From 933b8ef869c047edf98e0e41ebe3a218e73c6dfd Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Mon, 14 Dec 2020 14:47:04 +0800 Subject: MA-18406 Fix panic when provision keys on boards without rpmb key The keymaster client won't be initialized if the rpmb key is not set, return early with error in such case to avoid panic. Test: provision attestation keys & certs on boards without rpmb key set. Change-Id: I6f908aecafd15ab390629cb89b090c9ee817ba1e Signed-off-by: Ji Luo --- lib/trusty/ql-tipc/keymaster.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/lib/trusty/ql-tipc/keymaster.c b/lib/trusty/ql-tipc/keymaster.c index b4fa8cac7f..6b83db3fad 100644 --- a/lib/trusty/ql-tipc/keymaster.c +++ b/lib/trusty/ql-tipc/keymaster.c @@ -398,6 +398,10 @@ end: int trusty_set_attestation_key(const uint8_t *key, uint32_t key_size, keymaster_algorithm_t algorithm) { + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } return trusty_send_attestation_data(KM_SET_ATTESTATION_KEY, key, key_size, algorithm); } @@ -406,6 +410,10 @@ int trusty_append_attestation_cert_chain(const uint8_t *cert, uint32_t cert_size, keymaster_algorithm_t algorithm) { + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } return trusty_send_attestation_data(KM_APPEND_ATTESTATION_CERT_CHAIN, cert, cert_size, algorithm); } @@ -413,6 +421,10 @@ int trusty_append_attestation_cert_chain(const uint8_t *cert, int trusty_set_attestation_key_enc(const uint8_t *key, uint32_t key_size, keymaster_algorithm_t algorithm) { + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } return trusty_send_attestation_data(KM_SET_ATTESTATION_KEY_ENC, key, key_size, algorithm); } @@ -421,6 +433,10 @@ int trusty_append_attestation_cert_chain_enc(const uint8_t *cert, uint32_t cert_size, keymaster_algorithm_t algorithm) { + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } return trusty_send_attestation_data(KM_APPEND_ATTESTATION_CERT_CHAIN_ENC, cert, cert_size, algorithm); } @@ -501,6 +517,11 @@ int trusty_get_mppubk(uint8_t *mppubk, uint32_t *size) int rc = TRUSTY_ERR_GENERIC; struct km_get_mppubk_resp resp; + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } + rc = km_send_request(KM_GET_MPPUBK, NULL, 0); if (rc < 0) { trusty_error("%s: failed (%d) to send km mppubk request\n", __func__, rc); @@ -532,6 +553,11 @@ int trusty_verify_secure_unlock(uint8_t *unlock_credential, uint8_t *req = NULL; uint32_t req_size = 0; + if (!initialized) { + trusty_error("Keymaster TIPC client not initialized!\n"); + return -1; + } + struct km_secure_unlock_data secure_unlock_data = { .serial_size = serial_size, .serial_data = serial, -- cgit v1.2.3 From 970305d9f1ee9757230f986cdc7451a3039cffb3 Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Tue, 22 Dec 2020 19:28:26 +0800 Subject: MA-18458 Sync configs for Android 11 release As some features are not supported on Android 10, below commit sync configs for Android 10: commit 010173028e553b3ecde036402a46d7e33b928e00 Author: Ji Luo Date: Wed Nov 18 20:14:51 2020 +0800 MA-18292 Sync configs for Android 10 release Virtual A/B is not supported for Android 10 release, disable the configs here. And as the dual bootloader feature is enabled for car2 on Android 10, enable CONFIG_DUAL_BOOTLOADER for car2. This commit reverts the change to sync with Android 11 release. Test: Builds and boots on imx8qm. Change-Id: I39e876c47be2333b9f7dd8f71c837a762d25f1ac Signed-off-by: Ji Luo --- configs/imx8mm_ddr4_evk_android_defconfig | 2 +- configs/imx8mm_evk_android_defconfig | 2 +- configs/imx8mm_evk_android_dual_defconfig | 2 +- configs/imx8mm_evk_android_trusty_defconfig | 2 +- configs/imx8mm_evk_android_trusty_dual_defconfig | 2 +- configs/imx8mm_evk_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8mn_ddr4_evk_android_defconfig | 2 +- configs/imx8mn_evk_android_defconfig | 2 +- configs/imx8mn_evk_android_dual_defconfig | 2 +- configs/imx8mn_evk_android_trusty_defconfig | 2 +- configs/imx8mn_evk_android_trusty_dual_defconfig | 2 +- configs/imx8mn_evk_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8mp_evk_android_defconfig | 2 +- configs/imx8mp_evk_android_dual_defconfig | 2 +- configs/imx8mp_evk_android_trusty_defconfig | 2 +- configs/imx8mp_evk_android_trusty_dual_defconfig | 2 +- configs/imx8mp_evk_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8mq_evk_android_defconfig | 2 +- configs/imx8mq_evk_android_dual_defconfig | 2 +- configs/imx8mq_evk_android_trusty_defconfig | 2 +- configs/imx8mq_evk_android_trusty_dual_defconfig | 2 +- configs/imx8mq_evk_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8qm_mek_android_defconfig | 2 +- configs/imx8qm_mek_android_hdmi_defconfig | 2 +- configs/imx8qm_mek_android_trusty_defconfig | 2 +- configs/imx8qm_mek_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8qm_mek_androidauto2_trusty_defconfig | 2 +- configs/imx8qm_mek_androidauto2_trusty_md_defconfig | 2 +- configs/imx8qm_mek_androidauto_xen_defconfig | 1 + configs/imx8qxp_mek_android_defconfig | 2 +- configs/imx8qxp_mek_android_trusty_defconfig | 2 +- configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig | 2 +- configs/imx8qxp_mek_androidauto2_trusty_defconfig | 2 +- 33 files changed, 33 insertions(+), 32 deletions(-) diff --git a/configs/imx8mm_ddr4_evk_android_defconfig b/configs/imx8mm_ddr4_evk_android_defconfig index 3dd438f0d8..5b4266b181 100644 --- a/configs/imx8mm_ddr4_evk_android_defconfig +++ b/configs/imx8mm_ddr4_evk_android_defconfig @@ -147,4 +147,4 @@ CONFIG_APPEND_BOOTARGS=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mm_evk_android_defconfig b/configs/imx8mm_evk_android_defconfig index 5d4e1bd2e5..90ff0f4557 100644 --- a/configs/imx8mm_evk_android_defconfig +++ b/configs/imx8mm_evk_android_defconfig @@ -152,4 +152,4 @@ CONFIG_APPEND_BOOTARGS=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mm_evk_android_dual_defconfig b/configs/imx8mm_evk_android_dual_defconfig index bf0d0e7ff0..206ee9f6d2 100644 --- a/configs/imx8mm_evk_android_dual_defconfig +++ b/configs/imx8mm_evk_android_dual_defconfig @@ -154,4 +154,4 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mm_evk_android_trusty_defconfig b/configs/imx8mm_evk_android_trusty_defconfig index 3d1b2c8a5d..7c54c5fee1 100644 --- a/configs/imx8mm_evk_android_trusty_defconfig +++ b/configs/imx8mm_evk_android_trusty_defconfig @@ -156,5 +156,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mm_evk_android_trusty_dual_defconfig b/configs/imx8mm_evk_android_trusty_dual_defconfig index 82b93db825..e1f7b54948 100644 --- a/configs/imx8mm_evk_android_trusty_dual_defconfig +++ b/configs/imx8mm_evk_android_trusty_dual_defconfig @@ -158,5 +158,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig index 949e9fe195..ac779c79a1 100644 --- a/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig @@ -158,5 +158,5 @@ CONFIG_IMX_HAB=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mn_ddr4_evk_android_defconfig b/configs/imx8mn_ddr4_evk_android_defconfig index 8a0be502cf..2d7318e0c8 100644 --- a/configs/imx8mn_ddr4_evk_android_defconfig +++ b/configs/imx8mn_ddr4_evk_android_defconfig @@ -152,4 +152,4 @@ CONFIG_SPL_MMC_SUPPORT=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mn_evk_android_defconfig b/configs/imx8mn_evk_android_defconfig index 5d6687096a..5e13ac12d1 100644 --- a/configs/imx8mn_evk_android_defconfig +++ b/configs/imx8mn_evk_android_defconfig @@ -152,4 +152,4 @@ CONFIG_SPL_MMC_SUPPORT=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mn_evk_android_dual_defconfig b/configs/imx8mn_evk_android_dual_defconfig index cbf1a37c2c..b9410d3b91 100644 --- a/configs/imx8mn_evk_android_dual_defconfig +++ b/configs/imx8mn_evk_android_dual_defconfig @@ -154,4 +154,4 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mn_evk_android_trusty_defconfig b/configs/imx8mn_evk_android_trusty_defconfig index f028f5a57b..cac510ac4e 100644 --- a/configs/imx8mn_evk_android_trusty_defconfig +++ b/configs/imx8mn_evk_android_trusty_defconfig @@ -156,5 +156,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mn_evk_android_trusty_dual_defconfig b/configs/imx8mn_evk_android_trusty_dual_defconfig index 0342cf9909..29dcfe7b7c 100644 --- a/configs/imx8mn_evk_android_trusty_dual_defconfig +++ b/configs/imx8mn_evk_android_trusty_dual_defconfig @@ -158,5 +158,5 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig index c7737a4c0d..001c891537 100644 --- a/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig @@ -158,5 +158,5 @@ CONFIG_IMX_HAB=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mp_evk_android_defconfig b/configs/imx8mp_evk_android_defconfig index 057b2294e0..dd1efbccb7 100644 --- a/configs/imx8mp_evk_android_defconfig +++ b/configs/imx8mp_evk_android_defconfig @@ -164,4 +164,4 @@ CONFIG_SPL_MMC_SUPPORT=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mp_evk_android_dual_defconfig b/configs/imx8mp_evk_android_dual_defconfig index 6ad083ed29..070df50277 100644 --- a/configs/imx8mp_evk_android_dual_defconfig +++ b/configs/imx8mp_evk_android_dual_defconfig @@ -166,4 +166,4 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mp_evk_android_trusty_defconfig b/configs/imx8mp_evk_android_trusty_defconfig index b3ce199aad..1c3d97b50d 100644 --- a/configs/imx8mp_evk_android_trusty_defconfig +++ b/configs/imx8mp_evk_android_trusty_defconfig @@ -168,5 +168,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mp_evk_android_trusty_dual_defconfig b/configs/imx8mp_evk_android_trusty_dual_defconfig index d1adfd052c..8cf453bf16 100644 --- a/configs/imx8mp_evk_android_trusty_dual_defconfig +++ b/configs/imx8mp_evk_android_trusty_dual_defconfig @@ -170,5 +170,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig index 8ab36c8fbf..48d13c0b1c 100644 --- a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig @@ -170,5 +170,5 @@ CONFIG_IMX_HAB=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mq_evk_android_defconfig b/configs/imx8mq_evk_android_defconfig index c0ba6bb402..1ac4d8f571 100644 --- a/configs/imx8mq_evk_android_defconfig +++ b/configs/imx8mq_evk_android_defconfig @@ -144,4 +144,4 @@ CONFIG_APPEND_BOOTARGS=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mq_evk_android_dual_defconfig b/configs/imx8mq_evk_android_dual_defconfig index e7fa3c66bf..4a1e1966c1 100644 --- a/configs/imx8mq_evk_android_dual_defconfig +++ b/configs/imx8mq_evk_android_dual_defconfig @@ -146,4 +146,4 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8mq_evk_android_trusty_defconfig b/configs/imx8mq_evk_android_trusty_defconfig index 06ec9633e7..22339db3b6 100644 --- a/configs/imx8mq_evk_android_trusty_defconfig +++ b/configs/imx8mq_evk_android_trusty_defconfig @@ -148,5 +148,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mq_evk_android_trusty_dual_defconfig b/configs/imx8mq_evk_android_trusty_dual_defconfig index f7c8703853..921d9a3dfe 100644 --- a/configs/imx8mq_evk_android_trusty_dual_defconfig +++ b/configs/imx8mq_evk_android_trusty_dual_defconfig @@ -150,5 +150,5 @@ CONFIG_TRUSTY_UNLOCK_PERMISSION=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig index b24fe36efc..dc9a7fa9a5 100644 --- a/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig @@ -150,5 +150,5 @@ CONFIG_IMX_HAB=y CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8qm_mek_android_defconfig b/configs/imx8qm_mek_android_defconfig index 2f9327fceb..061987bd15 100644 --- a/configs/imx8qm_mek_android_defconfig +++ b/configs/imx8qm_mek_android_defconfig @@ -186,4 +186,4 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qm_mek_android_hdmi_defconfig b/configs/imx8qm_mek_android_hdmi_defconfig index 61702302d4..bf71acf55d 100644 --- a/configs/imx8qm_mek_android_hdmi_defconfig +++ b/configs/imx8qm_mek_android_hdmi_defconfig @@ -187,4 +187,4 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qm_mek_android_trusty_defconfig b/configs/imx8qm_mek_android_trusty_defconfig index 309b9abe8b..61893c7996 100644 --- a/configs/imx8qm_mek_android_trusty_defconfig +++ b/configs/imx8qm_mek_android_trusty_defconfig @@ -191,5 +191,5 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig b/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig index 344e54a17e..e53beebc9c 100644 --- a/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig +++ b/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig @@ -193,5 +193,5 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8qm_mek_androidauto2_trusty_defconfig b/configs/imx8qm_mek_androidauto2_trusty_defconfig index a2af03de7a..c1d5892984 100644 --- a/configs/imx8qm_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qm_mek_androidauto2_trusty_defconfig @@ -172,7 +172,7 @@ CONFIG_CMD_MMC_RPMB=y CONFIG_SUPPORT_EMMC_RPMB=y CONFIG_IMX_TRUSTY_OS=y CONFIG_TRUSTY_UNLOCK_PERMISSION=y -CONFIG_DUAL_BOOTLOADER=y CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qm_mek_androidauto2_trusty_md_defconfig b/configs/imx8qm_mek_androidauto2_trusty_md_defconfig index b601dba9d5..b84e9437d1 100644 --- a/configs/imx8qm_mek_androidauto2_trusty_md_defconfig +++ b/configs/imx8qm_mek_androidauto2_trusty_md_defconfig @@ -174,8 +174,8 @@ CONFIG_CMD_MMC_RPMB=y CONFIG_SUPPORT_EMMC_RPMB=y CONFIG_IMX_TRUSTY_OS=y CONFIG_TRUSTY_UNLOCK_PERMISSION=y -CONFIG_DUAL_BOOTLOADER=y CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX=y CONFIG_PSCI_BOARD_REBOOT=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qm_mek_androidauto_xen_defconfig b/configs/imx8qm_mek_androidauto_xen_defconfig index 4eabba1b2e..547d118878 100644 --- a/configs/imx8qm_mek_androidauto_xen_defconfig +++ b/configs/imx8qm_mek_androidauto_xen_defconfig @@ -201,3 +201,4 @@ CONFIG_XEN=y CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y CONFIG_XEN_DEBUG_SERIAL=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qxp_mek_android_defconfig b/configs/imx8qxp_mek_android_defconfig index 61eda22642..e4ed614e41 100644 --- a/configs/imx8qxp_mek_android_defconfig +++ b/configs/imx8qxp_mek_android_defconfig @@ -187,4 +187,4 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y diff --git a/configs/imx8qxp_mek_android_trusty_defconfig b/configs/imx8qxp_mek_android_trusty_defconfig index 96d792cbca..28da29247a 100644 --- a/configs/imx8qxp_mek_android_trusty_defconfig +++ b/configs/imx8qxp_mek_android_trusty_defconfig @@ -192,5 +192,5 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig b/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig index 39f245d3b1..d4101bbed5 100644 --- a/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig +++ b/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig @@ -194,5 +194,5 @@ CONFIG_AVB_WARNING_LOGO=y CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y -CONFIG_ANDROID_DYNAMIC_PARTITION=y +CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y diff --git a/configs/imx8qxp_mek_androidauto2_trusty_defconfig b/configs/imx8qxp_mek_androidauto2_trusty_defconfig index 522c0f9c7b..8049de2d5d 100644 --- a/configs/imx8qxp_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qxp_mek_androidauto2_trusty_defconfig @@ -182,7 +182,7 @@ CONFIG_CMD_MMC_RPMB=y CONFIG_SUPPORT_EMMC_RPMB=y CONFIG_IMX_TRUSTY_OS=y CONFIG_TRUSTY_UNLOCK_PERMISSION=y -CONFIG_DUAL_BOOTLOADER=y CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y +CONFIG_VIRTUAL_AB_SUPPORT=y -- cgit v1.2.3 From c3acd3ca3adf96be3e752100fe7ff94915bdbaa2 Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Fri, 4 Dec 2020 11:01:23 +0800 Subject: MA-18352-5 Support device IDs provision The device IDs are provisioned from bootloader, this commit add commands to provision the deivce IDs: $ fastboot oem append-device-id Test: Device IDs provision and attest. Change-Id: Id3c737d3da02f7ba463e51b0525f3cb9bcf0c6d1 Signed-off-by: Ji Luo --- drivers/fastboot/fb_fsl/fb_fsl_command.c | 31 +++++++++++++++++++++++++++++ include/configs/imx8mm_evk_android.h | 12 +++++++++++ include/configs/imx8mn_evk_android.h | 12 +++++++++++ include/configs/imx8mp_evk_android.h | 12 +++++++++++ include/configs/imx8mq_evk_android.h | 12 +++++++++++ include/configs/imx8qm_mek_android.h | 12 +++++++++++ include/configs/imx8qm_mek_android_auto.h | 8 ++++++++ include/configs/imx8qxp_mek_android.h | 11 ++++++++++ include/configs/imx8qxp_mek_android_auto.h | 8 ++++++++ include/fb_fsl.h | 1 + include/interface/keymaster/keymaster.h | 7 ++++++- include/trusty/keymaster.h | 8 ++++++++ include/trusty/keymaster_serializable.h | 8 ++++++++ lib/Kconfig | 10 ++++++++++ lib/trusty/ql-tipc/keymaster.c | 23 +++++++++++++++++++++ lib/trusty/ql-tipc/keymaster_serializable.c | 17 ++++++++++++++++ 16 files changed, 191 insertions(+), 1 deletion(-) diff --git a/drivers/fastboot/fb_fsl/fb_fsl_command.c b/drivers/fastboot/fb_fsl/fb_fsl_command.c index 824c3d4223..14a202ce58 100644 --- a/drivers/fastboot/fb_fsl/fb_fsl_command.c +++ b/drivers/fastboot/fb_fsl/fb_fsl_command.c @@ -664,6 +664,37 @@ static void flashing(char *cmd, char *response) strcpy(response, "OKAY"); } } +#ifdef CONFIG_ID_ATTESTATION + else if (endswith(cmd, FASTBOOT_APPEND_ATTESTATION_ID)) { + if (trusty_append_attestation_id(ATTESTATION_ID_BRAND, strlen(ATTESTATION_ID_BRAND))) { + printf("Error append ATTESTATION_ID_BRAND failed!\n"); + strcpy(response, "FAILAppend ATTESTATION_ID_BRAND failed!"); + } else if (trusty_append_attestation_id(ATTESTATION_ID_DEVICE, strlen(ATTESTATION_ID_DEVICE))) { + printf("Error append ATTESTATION_ID_DEVICE failed!\n"); + strcpy(response, "FAILAppend ATTESTATION_ID_DEVICE failed!"); + } else if (trusty_append_attestation_id(CONFIG_ATTESTATION_ID_PRODUCT, strlen(CONFIG_ATTESTATION_ID_PRODUCT))) { + printf("Error append ATTESTATION_ID_PRODUCT failed!\n"); + strcpy(response, "FAILAppend ATTESTATION_ID_PRODUCT failed!"); + } else if (trusty_append_attestation_id(ATTESTATION_ID_MANUFACTURER, strlen(ATTESTATION_ID_MANUFACTURER))) { + printf("Error append ATTESTATION_ID_MANUFACTURER failed!\n"); + strcpy(response, "FAILAppend ATTESTATION_ID_MANUFACTURER failed!"); + } else if (trusty_append_attestation_id(ATTESTATION_ID_MODEL, strlen(ATTESTATION_ID_MODEL))) { + printf("Error append ATTESTATION_ID_MODEL failed!\n"); + strcpy(response, "FAILAppend ATTESTATION_ID_MODEL failed!"); + } else { + char *serial = get_serial(); + + if (!serial) { + printf("Error Failed to append the serial number!\n"); + strcpy(response, "FAIL Failed to append the serial number!"); + } else if (trusty_append_attestation_id(serial, 16)) { + printf("Error Failed to append the serial number!\n"); + strcpy(response, "FAILFailed to append the serial number!"); + } else + strcpy(response, "OKAY"); + } + } +#endif #ifndef CONFIG_AVB_ATX else if (endswith(cmd, FASTBOOT_SET_RPMB_KEY)) { if (fastboot_set_rpmb_key(fastboot_buf_addr, fastboot_bytes_received)) { diff --git a/include/configs/imx8mm_evk_android.h b/include/configs/imx8mm_evk_android.h index 7c01037942..aa22b98539 100644 --- a/include/configs/imx8mm_evk_android.h +++ b/include/configs/imx8mm_evk_android.h @@ -56,6 +56,18 @@ #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "evk_8mm" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "EVK_8MM" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "evk_8mm" +#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 4eab9ca71f..0b7bf60432 100644 --- a/include/configs/imx8mn_evk_android.h +++ b/include/configs/imx8mn_evk_android.h @@ -56,6 +56,18 @@ #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "evk_8mn" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "EVK_8MN" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "evk_8mn" +#endif + #endif #endif /* IMX8MN_EVK_ANDROID_H */ diff --git a/include/configs/imx8mp_evk_android.h b/include/configs/imx8mp_evk_android.h index bcccf2876a..5db2a77602 100644 --- a/include/configs/imx8mp_evk_android.h +++ b/include/configs/imx8mp_evk_android.h @@ -56,6 +56,18 @@ #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "evk_8mp" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "EVK_8MP" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "evk_8mp" +#endif + #endif #endif /* IMX8MP_EVK_ANDROID_H */ diff --git a/include/configs/imx8mq_evk_android.h b/include/configs/imx8mq_evk_android.h index 5606de4a66..094e7f4429 100644 --- a/include/configs/imx8mq_evk_android.h +++ b/include/configs/imx8mq_evk_android.h @@ -56,6 +56,18 @@ #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x1FFF #define NS_ARCH_ARM64 1 + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "evk_8mq" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "EVK_8MQ" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "evk_8mq" +#endif + #endif #endif /* IMX8MQ_EVK_ANDROID_H */ diff --git a/include/configs/imx8qm_mek_android.h b/include/configs/imx8qm_mek_android.h index 7fd09ae63c..e3ed913c28 100644 --- a/include/configs/imx8qm_mek_android.h +++ b/include/configs/imx8qm_mek_android.h @@ -42,6 +42,18 @@ #define CONFIG_SPL_CRYPTO_SUPPORT #define CONFIG_SYS_FSL_SEC_LE #endif + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "mek_8q" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "MEK-MX8Q" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "mek_8q" +#endif + #endif #endif /* IMX8QM_MEK_ANDROID_H */ diff --git a/include/configs/imx8qm_mek_android_auto.h b/include/configs/imx8qm_mek_android_auto.h index 4574e8b053..d95aae3f7e 100644 --- a/include/configs/imx8qm_mek_android_auto.h +++ b/include/configs/imx8qm_mek_android_auto.h @@ -65,6 +65,14 @@ #define NS_ARCH_ARM64 1 #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x3FFF + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "mek_8q" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "MEK-MX8Q" +#endif + #endif #ifdef CONFIG_DUAL_BOOTLOADER diff --git a/include/configs/imx8qxp_mek_android.h b/include/configs/imx8qxp_mek_android.h index 01e86a21b5..71a7afbe17 100644 --- a/include/configs/imx8qxp_mek_android.h +++ b/include/configs/imx8qxp_mek_android.h @@ -40,6 +40,17 @@ #define CONFIG_SYS_FSL_SEC_LE #endif +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "mek_8q" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "MEK-MX8Q" +#ifdef CONFIG_ATTESTATION_ID_PRODUCT +#undef CONFIG_ATTESTATION_ID_PRODUCT +#endif +#define CONFIG_ATTESTATION_ID_PRODUCT "mek_8q" +#endif + #endif #endif /* IMX8QXP_MEK_ANDROID_H */ diff --git a/include/configs/imx8qxp_mek_android_auto.h b/include/configs/imx8qxp_mek_android_auto.h index 448bab7461..aeeb89ddac 100644 --- a/include/configs/imx8qxp_mek_android_auto.h +++ b/include/configs/imx8qxp_mek_android_auto.h @@ -57,6 +57,14 @@ #define AVB_RPMB #define KEYSLOT_HWPARTITION_ID 2 #define KEYSLOT_BLKS 0x3FFF + +#ifdef CONFIG_ID_ATTESTATION +#define ATTESTATION_ID_BRAND "Android" +#define ATTESTATION_ID_DEVICE "mek_8q" +#define ATTESTATION_ID_MANUFACTURER "nxp" +#define ATTESTATION_ID_MODEL "MEK-MX8Q" +#endif + #endif #ifdef CONFIG_DUAL_BOOTLOADER diff --git a/include/fb_fsl.h b/include/fb_fsl.h index 3c551afcb8..8e2f1c487a 100644 --- a/include/fb_fsl.h +++ b/include/fb_fsl.h @@ -103,6 +103,7 @@ #define FASTBOOT_APPEND_EC_ATTESTATION_CERT_ENC "append-ec-atte-cert-enc" #define FASTBOOT_GET_MPPUBK "get-mppubk" #define FASTBOOT_GET_SERIAL_NUMBER "get-serial-number" +#define FASTBOOT_APPEND_ATTESTATION_ID "append-device-id" #endif #ifdef CONFIG_ANDROID_THINGS_SUPPORT diff --git a/include/interface/keymaster/keymaster.h b/include/interface/keymaster/keymaster.h index c98442d757..928854e890 100644 --- a/include/interface/keymaster/keymaster.h +++ b/include/interface/keymaster/keymaster.h @@ -66,7 +66,8 @@ enum keymaster_command { KM_SET_ATTESTATION_KEY_ENC = (0xa000 << KEYMASTER_REQ_SHIFT), KM_APPEND_ATTESTATION_CERT_CHAIN_ENC = (0xb000 << KEYMASTER_REQ_SHIFT), KM_GET_MPPUBK = (0xc000 << KEYMASTER_REQ_SHIFT), - KM_VERIFY_SECURE_UNLOCK = (0xd000 << KEYMASTER_REQ_SHIFT) + KM_VERIFY_SECURE_UNLOCK = (0xd000 << KEYMASTER_REQ_SHIFT), + KM_APPEND_ATTESTATION_ID = (0xe000 << KEYMASTER_REQ_SHIFT) }; typedef enum { @@ -287,6 +288,10 @@ struct km_attestation_data { const uint8_t *data; } TRUSTY_ATTR_PACKED; +struct km_attestation_id_data { + uint32_t data_size; + const uint8_t *data; +} TRUSTY_ATTR_PACKED; /** * km_raw_buffer - represents a single raw buffer * diff --git a/include/trusty/keymaster.h b/include/trusty/keymaster.h index a44ae21987..2a5551cce8 100644 --- a/include/trusty/keymaster.h +++ b/include/trusty/keymaster.h @@ -169,4 +169,12 @@ int trusty_verify_secure_unlock(uint8_t *unlock_credential, uint32_t credential_size, uint8_t *serial, uint32_t serial_size); +/* + * trusty_append_attestation_id is called to set attestation Device ID. + * + * @ data: Device ID string + * @ data_size: Device ID size + * */ +int trusty_append_attestation_id(const char *data, uint32_t data_size); + #endif /* TRUSTY_KEYMASTER_H_ */ diff --git a/include/trusty/keymaster_serializable.h b/include/trusty/keymaster_serializable.h index a8295dffed..830c0ba13b 100644 --- a/include/trusty/keymaster_serializable.h +++ b/include/trusty/keymaster_serializable.h @@ -67,6 +67,14 @@ int km_boot_params_serialize(const struct km_boot_params *params, uint8_t **out, int km_attestation_data_serialize(const struct km_attestation_data *data, uint8_t **out, uint32_t *out_size); +/** + * Serializes a km_attestation_id_data structure. On success, allocates |*out_size| + * bytes to |*out| and writes the serialized |data| to |*out|. Caller takes + * ownership of |*out|. Returns one of trusty_err. + */ +int km_attestation_id_data_serialize(const struct km_attestation_id_data *data, + uint8_t** out, uint32_t *out_size); + /** * Serializes a km_secure_unlock_data structure. On success, allocates |*out_size| * bytes to |*out| and writes the serialized |data| to |*out|. Caller takes diff --git a/lib/Kconfig b/lib/Kconfig index c500c45881..fc20734b63 100644 --- a/lib/Kconfig +++ b/lib/Kconfig @@ -393,6 +393,16 @@ config LOAD_KEY_FROM_RPMB default n depends on IMX_TRUSTY_OS +config ID_ATTESTATION + bool "Support device ID attestation" + default n + depends on IMX_TRUSTY_OS + +config ATTESTATION_ID_PRODUCT + string "Product name for ID attestation" + depends on IMX_TRUSTY_OS && ID_ATTESTATION + default SYS_CONFIG_NAME + endmenu menu "Hashing Support" diff --git a/lib/trusty/ql-tipc/keymaster.c b/lib/trusty/ql-tipc/keymaster.c index 6b83db3fad..90a34e5d2c 100644 --- a/lib/trusty/ql-tipc/keymaster.c +++ b/lib/trusty/ql-tipc/keymaster.c @@ -580,3 +580,26 @@ end: } return rc; } + +int trusty_append_attestation_id(const char *data, uint32_t data_size) +{ + struct km_attestation_id_data attestation_id_data = { + .data_size = data_size, + .data = (uint8_t *)data, + }; + uint8_t *req = NULL; + uint32_t req_size = 0; + int rc = km_attestation_id_data_serialize(&attestation_id_data, &req, &req_size); + + if (rc < 0) { + trusty_error("failed (%d) to serialize request\n", rc); + goto end; + } + rc = km_do_tipc(KM_APPEND_ATTESTATION_ID, req, req_size, NULL, NULL); + +end: + if (req) { + trusty_free(req); + } + return rc; +} diff --git a/lib/trusty/ql-tipc/keymaster_serializable.c b/lib/trusty/ql-tipc/keymaster_serializable.c index 6d9297d099..232a093a9e 100644 --- a/lib/trusty/ql-tipc/keymaster_serializable.c +++ b/lib/trusty/ql-tipc/keymaster_serializable.c @@ -97,6 +97,23 @@ int km_attestation_data_serialize(const struct km_attestation_data *data, return TRUSTY_ERR_NONE; } +int km_attestation_id_data_serialize(const struct km_attestation_id_data *data, + uint8_t** out, uint32_t *out_size) +{ + if (!out || !data || !out_size) { + return TRUSTY_ERR_INVALID_ARGS; + } + *out_size = (sizeof(data->data_size) + data->data_size); + *out = trusty_calloc(*out_size, 1); + if (!*out) { + return TRUSTY_ERR_NO_MEMORY; + } + + append_sized_buf_to_buf(*out, data->data, data->data_size); + + return TRUSTY_ERR_NONE; +} + int km_secure_unlock_data_serialize(const struct km_secure_unlock_data *data, uint8_t** out, uint32_t *out_size) { -- cgit v1.2.3 From 5b339f5614b76a983f4aafd2b51af2948fa93415 Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Fri, 4 Dec 2020 11:49:10 +0800 Subject: MA-18352-6 Enable device IDs provision Enable configs to support ID attestation. Change-Id: I1478d4981e7a1a10e11e4e71dcbfd49c64331a9d Signed-off-by: Ji Luo --- configs/imx8mm_evk_android_trusty_defconfig | 1 + configs/imx8mm_evk_android_trusty_dual_defconfig | 1 + configs/imx8mm_evk_android_trusty_secure_unlock_defconfig | 1 + configs/imx8mn_evk_android_trusty_defconfig | 1 + configs/imx8mn_evk_android_trusty_dual_defconfig | 1 + configs/imx8mn_evk_android_trusty_secure_unlock_defconfig | 1 + configs/imx8mp_evk_android_trusty_defconfig | 1 + configs/imx8mp_evk_android_trusty_dual_defconfig | 1 + configs/imx8mp_evk_android_trusty_secure_unlock_defconfig | 1 + configs/imx8mq_evk_android_trusty_defconfig | 1 + configs/imx8mq_evk_android_trusty_dual_defconfig | 1 + configs/imx8mq_evk_android_trusty_secure_unlock_defconfig | 1 + configs/imx8qm_mek_android_trusty_defconfig | 1 + configs/imx8qm_mek_android_trusty_secure_unlock_defconfig | 1 + configs/imx8qm_mek_androidauto2_trusty_defconfig | 2 ++ configs/imx8qm_mek_androidauto2_trusty_md_defconfig | 2 ++ configs/imx8qm_mek_androidauto_trusty_defconfig | 2 ++ configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig | 2 ++ configs/imx8qxp_mek_android_trusty_defconfig | 1 + configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig | 1 + configs/imx8qxp_mek_androidauto2_trusty_defconfig | 2 ++ configs/imx8qxp_mek_androidauto_trusty_defconfig | 2 ++ configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig | 2 ++ 23 files changed, 30 insertions(+) diff --git a/configs/imx8mm_evk_android_trusty_defconfig b/configs/imx8mm_evk_android_trusty_defconfig index 7c54c5fee1..1051ede460 100644 --- a/configs/imx8mm_evk_android_trusty_defconfig +++ b/configs/imx8mm_evk_android_trusty_defconfig @@ -158,3 +158,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mm_evk_android_trusty_dual_defconfig b/configs/imx8mm_evk_android_trusty_dual_defconfig index e1f7b54948..7313620bbe 100644 --- a/configs/imx8mm_evk_android_trusty_dual_defconfig +++ b/configs/imx8mm_evk_android_trusty_dual_defconfig @@ -160,3 +160,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig index ac779c79a1..4564fce00b 100644 --- a/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig @@ -160,3 +160,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mn_evk_android_trusty_defconfig b/configs/imx8mn_evk_android_trusty_defconfig index cac510ac4e..d775a4513e 100644 --- a/configs/imx8mn_evk_android_trusty_defconfig +++ b/configs/imx8mn_evk_android_trusty_defconfig @@ -158,3 +158,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mn_evk_android_trusty_dual_defconfig b/configs/imx8mn_evk_android_trusty_dual_defconfig index 29dcfe7b7c..e300825d26 100644 --- a/configs/imx8mn_evk_android_trusty_dual_defconfig +++ b/configs/imx8mn_evk_android_trusty_dual_defconfig @@ -160,3 +160,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig index 001c891537..7c0b2e2dd3 100644 --- a/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig @@ -160,3 +160,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mp_evk_android_trusty_defconfig b/configs/imx8mp_evk_android_trusty_defconfig index 1c3d97b50d..ffbd21df5b 100644 --- a/configs/imx8mp_evk_android_trusty_defconfig +++ b/configs/imx8mp_evk_android_trusty_defconfig @@ -170,3 +170,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mp_evk_android_trusty_dual_defconfig b/configs/imx8mp_evk_android_trusty_dual_defconfig index 8cf453bf16..d6e04928b0 100644 --- a/configs/imx8mp_evk_android_trusty_dual_defconfig +++ b/configs/imx8mp_evk_android_trusty_dual_defconfig @@ -172,3 +172,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig index 48d13c0b1c..e1b2492035 100644 --- a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig @@ -172,3 +172,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x320 CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mq_evk_android_trusty_defconfig b/configs/imx8mq_evk_android_trusty_defconfig index 22339db3b6..9235f80966 100644 --- a/configs/imx8mq_evk_android_trusty_defconfig +++ b/configs/imx8mq_evk_android_trusty_defconfig @@ -150,3 +150,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mq_evk_android_trusty_dual_defconfig b/configs/imx8mq_evk_android_trusty_dual_defconfig index 921d9a3dfe..fac2460c2b 100644 --- a/configs/imx8mq_evk_android_trusty_dual_defconfig +++ b/configs/imx8mq_evk_android_trusty_dual_defconfig @@ -152,3 +152,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig index dc9a7fa9a5..4bd166e396 100644 --- a/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig +++ b/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig @@ -152,3 +152,4 @@ CONFIG_AVB_WARNING_LOGO_COLS=0x1E0 CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_android_trusty_defconfig b/configs/imx8qm_mek_android_trusty_defconfig index 61893c7996..950fdf771b 100644 --- a/configs/imx8qm_mek_android_trusty_defconfig +++ b/configs/imx8qm_mek_android_trusty_defconfig @@ -193,3 +193,4 @@ CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig b/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig index e53beebc9c..fdf72c08b5 100644 --- a/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig +++ b/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig @@ -195,3 +195,4 @@ CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_androidauto2_trusty_defconfig b/configs/imx8qm_mek_androidauto2_trusty_defconfig index c1d5892984..a135e362cd 100644 --- a/configs/imx8qm_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qm_mek_androidauto2_trusty_defconfig @@ -176,3 +176,5 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car2" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_androidauto2_trusty_md_defconfig b/configs/imx8qm_mek_androidauto2_trusty_md_defconfig index b84e9437d1..fa3fed0ace 100644 --- a/configs/imx8qm_mek_androidauto2_trusty_md_defconfig +++ b/configs/imx8qm_mek_androidauto2_trusty_md_defconfig @@ -179,3 +179,5 @@ CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_IMX_LOAD_HDMI_FIMRWARE_TX=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car2" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_androidauto_trusty_defconfig b/configs/imx8qm_mek_androidauto_trusty_defconfig index 68d48e766b..ee35a5a456 100644 --- a/configs/imx8qm_mek_androidauto_trusty_defconfig +++ b/configs/imx8qm_mek_androidauto_trusty_defconfig @@ -177,3 +177,5 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig b/configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig index 21b8e4efa7..9f95efd7c7 100644 --- a/configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig +++ b/configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig @@ -179,3 +179,5 @@ CONFIG_SECURE_UNLOCK=y CONFIG_AHAB_BOOT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qxp_mek_android_trusty_defconfig b/configs/imx8qxp_mek_android_trusty_defconfig index 28da29247a..b1ff68e39e 100644 --- a/configs/imx8qxp_mek_android_trusty_defconfig +++ b/configs/imx8qxp_mek_android_trusty_defconfig @@ -194,3 +194,4 @@ CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig b/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig index d4101bbed5..a558316d81 100644 --- a/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig +++ b/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig @@ -196,3 +196,4 @@ CONFIG_AVB_WARNING_LOGO_ROWS=0x60 CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qxp_mek_androidauto2_trusty_defconfig b/configs/imx8qxp_mek_androidauto2_trusty_defconfig index 8049de2d5d..e5dbcdbbae 100644 --- a/configs/imx8qxp_mek_androidauto2_trusty_defconfig +++ b/configs/imx8qxp_mek_androidauto2_trusty_defconfig @@ -186,3 +186,5 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_VIRTUAL_AB_SUPPORT=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car2" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qxp_mek_androidauto_trusty_defconfig b/configs/imx8qxp_mek_androidauto_trusty_defconfig index 09e3ac9657..637933ad41 100644 --- a/configs/imx8qxp_mek_androidauto_trusty_defconfig +++ b/configs/imx8qxp_mek_androidauto_trusty_defconfig @@ -188,3 +188,5 @@ CONFIG_SPL_MMC_WRITE=y CONFIG_SPL_LIBDISK_SUPPORT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car" +CONFIG_ID_ATTESTATION=y diff --git a/configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig b/configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig index d0fce82dc0..fd9f0c27d7 100644 --- a/configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig +++ b/configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig @@ -190,3 +190,5 @@ CONFIG_SECURE_UNLOCK=y CONFIG_AHAB_BOOT=y CONFIG_PSCI_BOARD_REBOOT=y CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ATTESTATION_ID_PRODUCT="mek_8q_car" +CONFIG_ID_ATTESTATION=y -- cgit v1.2.3 From 35ab562a3b610878146d94fb64ee5e200cd55f77 Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Thu, 17 Dec 2020 14:03:06 +0800 Subject: LFU-15 Fix using uninitialized value This commit fixes Coverity Issue: 11468195, avoid uninitialized value using. Test: AVB check. Change-Id: I04eb8faafd6c9a9fec1aeae0b29edc6940251094 Signed-off-by: Ji Luo --- lib/avb/fsl/fsl_bootctrl.c | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/lib/avb/fsl/fsl_bootctrl.c b/lib/avb/fsl/fsl_bootctrl.c index 38733cebb1..8afb41ff13 100755 --- a/lib/avb/fsl/fsl_bootctrl.c +++ b/lib/avb/fsl/fsl_bootctrl.c @@ -888,10 +888,9 @@ AvbABFlowResult avb_flow_dual_uboot(AvbABOps* ab_ops, AvbOps* ops = ab_ops->ops; AvbSlotVerifyData* slot_data = NULL; AvbSlotVerifyData* data = NULL; - AvbABFlowResult ret; + AvbABFlowResult ret = 0; struct bootloader_control ab_data, ab_data_orig; AvbIOResult io_ret; - bool saw_and_allowed_verification_error = false; AvbSlotVerifyResult verify_result; bool set_slot_unbootable = false; int target_slot, n; @@ -960,8 +959,7 @@ AvbABFlowResult avb_flow_dual_uboot(AvbABOps* ab_ops, "AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR " "is set.\n", NULL); - saw_and_allowed_verification_error = - true; + ret = AVB_AB_FLOW_RESULT_OK_WITH_VERIFICATION_ERROR; } else { set_slot_unbootable = true; } @@ -1040,13 +1038,6 @@ AvbABFlowResult avb_flow_dual_uboot(AvbABOps* ab_ops, avb_assert(slot_data != NULL); data = slot_data; slot_data = NULL; - if (saw_and_allowed_verification_error) { - avb_assert( - flags & AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR); - ret = AVB_AB_FLOW_RESULT_OK_WITH_VERIFICATION_ERROR; - } else { - ret = AVB_AB_FLOW_RESULT_OK; - } out: io_ret = fsl_save_metadata_if_changed(ab_ops, &ab_data, &ab_data_orig); @@ -1212,11 +1203,10 @@ AvbABFlowResult avb_ab_flow_fast(AvbABOps* ab_ops, AvbOps* ops = ab_ops->ops; AvbSlotVerifyData* slot_data[2] = {NULL, NULL}; AvbSlotVerifyData* data = NULL; - AvbABFlowResult ret; + AvbABFlowResult ret = 0; struct bootloader_control ab_data, ab_data_orig; size_t slot_index_to_boot, n; AvbIOResult io_ret; - bool saw_and_allowed_verification_error = false; size_t target_slot; AvbSlotVerifyResult verify_result; bool set_slot_unbootable = false; @@ -1285,9 +1275,8 @@ AvbABFlowResult avb_ab_flow_fast(AvbABOps* ab_ops, "AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR " "is set.\n", NULL); - saw_and_allowed_verification_error = - true; slot_index_to_boot = target_slot; + ret = AVB_AB_FLOW_RESULT_OK_WITH_VERIFICATION_ERROR; n = 2; } else { set_slot_unbootable = true; @@ -1375,13 +1364,6 @@ AvbABFlowResult avb_ab_flow_fast(AvbABOps* ab_ops, avb_assert(slot_data[slot_index_to_boot] != NULL); data = slot_data[slot_index_to_boot]; slot_data[slot_index_to_boot] = NULL; - if (saw_and_allowed_verification_error) { - avb_assert( - flags & AVB_SLOT_VERIFY_FLAGS_ALLOW_VERIFICATION_ERROR); - ret = AVB_AB_FLOW_RESULT_OK_WITH_VERIFICATION_ERROR; - } else { - ret = AVB_AB_FLOW_RESULT_OK; - } /* ... and decrement tries remaining, if applicable. */ if (!ab_data.slot_info[slot_index_to_boot].successful_boot && -- cgit v1.2.3 From 42ed8fa2873d577183779740dcb7115b0a26157a Mon Sep 17 00:00:00 2001 From: Ji Luo Date: Wed, 16 Dec 2020 21:07:13 +0800 Subject: MA-18422 Locate the misc partition by name Locating the misc partition by ID can help reduce the boot time but error may happen if the ID of the misc partition is changed. Moving the misc partition to the start of the GPT and locate the partition by name is another option but it will break the backward compatibility as the GPT is changed. part_get_info_by_name() will loop the PTE and return the matched partition info, but it will cost much time as it will reload the whole PTE from storage in each loop. This commit provides part_get_info_efi_by_name() to support return the partition info by name without reloading the whole PTE. Test: A/B slot switch in dual bootloader. Change-Id: I13cb2a7b3217f73aecc2aec6e06abc0d6e8abcdd Signed-off-by: Ji Luo --- disk/part_efi.c | 56 ++++++++++++++++++++++++++++++++++++++++++++++ include/part.h | 5 +++++ lib/avb/fsl/fsl_bootctrl.c | 16 ++----------- 3 files changed, 63 insertions(+), 14 deletions(-) diff --git a/disk/part_efi.c b/disk/part_efi.c index 0ac9ea6d9b..4f403d2e0e 100644 --- a/disk/part_efi.c +++ b/disk/part_efi.c @@ -333,6 +333,62 @@ int part_get_info_efi(struct blk_desc *dev_desc, int part, return 0; } +#if defined(CONFIG_DUAL_BOOTLOADER) && defined(CONFIG_SPL_BUILD) +int part_get_info_efi_by_name(struct blk_desc *dev_desc, const char *name, + disk_partition_t *info) +{ + ALLOC_CACHE_ALIGN_BUFFER_PAD(gpt_header, gpt_head, 1, dev_desc->blksz); + /* We don't free gpt_pte because the memory is allocated at + * CONFIG_SYS_SPL_PTE_RAM_BASE due to the limited memory at + * SPL stage. + */ + gpt_entry *gpt_pte = NULL; + int i = 0; + + if (name == NULL) { + printf("%s: Invalid Argument(s)\n", __func__); + return -1; + } + + /* This function validates AND fills in the GPT header and PTE */ + if (find_valid_gpt(dev_desc, gpt_head, &gpt_pte) != 1) + return -1; + + /* Search PTE to find matched partition. */ + for (i = 0; i < le32_to_cpu(gpt_head->num_partition_entries); i++) { + if (is_pte_valid(&gpt_pte[i]) && + strcmp(name, print_efiname(&gpt_pte[i])) == 0) { + /* Matched partition found, copy it. */ + /* The 'lbaint_t' casting may limit the maximum disk size to 2 TB */ + info->start = (lbaint_t)le64_to_cpu(gpt_pte[i].starting_lba); + /* The ending LBA is inclusive, to calculate size, add 1 to it */ + info->size = (lbaint_t)le64_to_cpu(gpt_pte[i].ending_lba) + 1 + - info->start; + info->blksz = dev_desc->blksz; + + snprintf((char *)info->name, sizeof(info->name), "%s", name); + strcpy((char *)info->type, "U-Boot"); + info->bootable = is_bootable(&gpt_pte[i]); +#if CONFIG_IS_ENABLED(PARTITION_UUIDS) + uuid_bin_to_str(gpt_pte[i].unique_partition_guid.b, info->uuid, + UUID_STR_FORMAT_GUID); +#endif +#ifdef CONFIG_PARTITION_TYPE_GUID + uuid_bin_to_str(gpt_pte[i].partition_type_guid.b, + info->type_guid, UUID_STR_FORMAT_GUID); +#endif + + debug("%s: start 0x" LBAF ", size 0x" LBAF ", name %s\n", __func__, + info->start, info->size, info->name); + + return i; + } + } + + return -1; +} +#endif /* CONFIG_DUAL_BOOTLOADER && CONFIG_SPL_BUILD */ + static int part_test_efi(struct blk_desc *dev_desc) { ALLOC_CACHE_ALIGN_BUFFER_PAD(legacy_mbr, legacymbr, 1, dev_desc->blksz); diff --git a/include/part.h b/include/part.h index 35c8fc45a4..c65c1c22d7 100644 --- a/include/part.h +++ b/include/part.h @@ -453,6 +453,11 @@ int gpt_verify_partitions(struct blk_desc *dev_desc, */ int get_disk_guid(struct blk_desc *dev_desc, char *guid); +#if defined(CONFIG_DUAL_BOOTLOADER) && defined(CONFIG_SPL_BUILD) +int part_get_info_efi_by_name(struct blk_desc *dev_desc, const char *name, + disk_partition_t *info); +#endif + #endif #if CONFIG_IS_ENABLED(DOS_PARTITION) diff --git a/lib/avb/fsl/fsl_bootctrl.c b/lib/avb/fsl/fsl_bootctrl.c index 8afb41ff13..53c4113890 100755 --- a/lib/avb/fsl/fsl_bootctrl.c +++ b/lib/avb/fsl/fsl_bootctrl.c @@ -462,10 +462,6 @@ out: #define PARTITION_NAME_LEN 13 #define PARTITION_BOOTLOADER "bootloader" -#ifdef CONFIG_ANDROID_AUTO_SUPPORT -/* This should always sync with the gpt */ -#define PARTITION_MISC_ID 9 -#endif extern int mmc_switch(struct mmc *mmc, u8 set, u8 index, u8 value); @@ -487,11 +483,7 @@ int fsl_save_metadata_if_changed_dual_uboot(struct blk_desc *dev_desc, /* Save metadata if changed. */ if (memcmp(ab_data, ab_data_orig, sizeof(struct bootloader_control)) != 0) { /* Get misc partition info */ -#ifdef CONFIG_ANDROID_AUTO_SUPPORT - if (part_get_info(dev_desc, PARTITION_MISC_ID, &info) == -1) { -#else - if (part_get_info_by_name(dev_desc, FASTBOOT_PARTITION_MISC, &info) == -1) { -#endif + if (part_get_info_efi_by_name(dev_desc, FASTBOOT_PARTITION_MISC, &info) == -1) { printf("Can't get partition info of partition: misc\n"); return -1; } @@ -519,11 +511,7 @@ int fsl_load_metadata_dual_uboot(struct blk_desc *dev_desc, struct bootloader_control serialized; size_t num_bytes; -#ifdef CONFIG_ANDROID_AUTO_SUPPORT - if (part_get_info(dev_desc, PARTITION_MISC_ID, &info) == -1) { -#else - if (part_get_info_by_name(dev_desc, FASTBOOT_PARTITION_MISC, &info) == -1) { -#endif + if (part_get_info_efi_by_name(dev_desc, FASTBOOT_PARTITION_MISC, &info) == -1) { printf("Can't get partition info of partition: misc\n"); return -1; } else { -- cgit v1.2.3 From 30549fb5266a9020cd7719c2e58ab858dc9e74b8 Mon Sep 17 00:00:00 2001 From: "haidong.zheng" Date: Mon, 12 Oct 2020 16:41:03 +0800 Subject: MA-18346-11 Android refine power on imx8mp board VDD SOC normal run changed to 0.85V LPDDR4 freq0 change from 4000MTS to 2400MTS Change-Id: I69676ea5b582a817fb3c367bd861db96ba647540 --- board/freescale/imx8mp_evk/lpddr4_timing.c | 172 ++++++++++++++++++++++++- board/freescale/imx8mp_evk/spl.c | 5 + configs/imx8mp_evk_android_powersave_defconfig | 169 ++++++++++++++++++++++++ drivers/ddr/imx/imx8m/Kconfig | 8 ++ 4 files changed, 351 insertions(+), 3 deletions(-) mode change 100644 => 100755 board/freescale/imx8mp_evk/lpddr4_timing.c create mode 100644 configs/imx8mp_evk_android_powersave_defconfig diff --git a/board/freescale/imx8mp_evk/lpddr4_timing.c b/board/freescale/imx8mp_evk/lpddr4_timing.c old mode 100644 new mode 100755 index a532595687..2a95580c72 --- a/board/freescale/imx8mp_evk/lpddr4_timing.c +++ b/board/freescale/imx8mp_evk/lpddr4_timing.c @@ -11,6 +11,16 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d400304, 0x1 }, { 0x3d400030, 0x1 }, { 0x3d400000, 0xa3080020 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x3d400020, 0x223 }, + { 0x3d400024, 0x124f800 }, + { 0x3d400064, 0x4900a8 }, + { 0x3d400070, 0x1027f90 }, + { 0x3d400074, 0x790 }, + { 0x3d4000d0, 0xc0030495 }, + { 0x3d4000d4, 0x770000 }, + { 0x3d4000dc, 0xc40024 }, +#else { 0x3d400020, 0x1323 }, { 0x3d400024, 0x1e84800 }, { 0x3d400064, 0x7a017c }, @@ -23,9 +33,29 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d4000d0, 0xc00307a3 }, { 0x3d4000d4, 0xc50000 }, { 0x3d4000dc, 0xf4003f }, +#endif { 0x3d4000e0, 0x330000 }, { 0x3d4000e8, 0x660048 }, { 0x3d4000ec, 0x160048 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x3d400100, 0x1618141a }, + { 0x3d400104, 0x504a6 }, + { 0x3d40010c, 0x909000 }, + { 0x3d400110, 0xb04060b }, + { 0x3d400114, 0x2030909 }, + { 0x3d400118, 0x1010006 }, + { 0x3d40011c, 0x301 }, + { 0x3d400130, 0x20500 }, + { 0x3d400134, 0xb100002 }, + { 0x3d400138, 0xad }, + { 0x3d400144, 0x78003c }, + { 0x3d400180, 0x2580012 }, + { 0x3d400184, 0x1e0493e }, + { 0x3d400188, 0x0 }, + { 0x3d400190, 0x4938208 }, + { 0x3d400194, 0x80303 }, + { 0x3d4001b4, 0x1308 }, +#else { 0x3d400100, 0x2028222a }, { 0x3d400104, 0x807bf }, { 0x3d40010c, 0xe0e000 }, @@ -43,6 +73,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d400190, 0x49f820e }, { 0x3d400194, 0x80303 }, { 0x3d4001b4, 0x1f0e }, +#endif { 0x3d4001a0, 0xe0400018 }, { 0x3d4001a4, 0xdf00e4 }, { 0x3d4001a8, 0x80000000 }, @@ -50,6 +81,30 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d4001c0, 0x1 }, { 0x3d4001c4, 0x1 }, { 0x3d4000f4, 0xc99 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x3d400108, 0x60c1514 }, + { 0x3d400200, 0x16 }, + { 0x3d40020c, 0x0 }, + { 0x3d400210, 0x1f1f }, + { 0x3d400204, 0x80808 }, + { 0x3d400214, 0x7070707 }, + { 0x3d400218, 0x68070707 }, + { 0x3d40021c, 0xf08 }, + { 0x3d400250, 0x1f05 }, + { 0x3d400254, 0x1f }, + { 0x3d400264, 0x90003ff }, + { 0x3d40026c, 0x20003ff }, + { 0x3d400400, 0x111 }, + { 0x3d400408, 0x72ff }, + { 0x3d400494, 0x1000e00 }, + { 0x3d400498, 0x3ff0000 }, + { 0x3d40049c, 0x1000e00 }, + { 0x3d4004a0, 0x3ff0000 }, + { 0x3d402020, 0x21 }, + { 0x3d402024, 0x30d400 }, + { 0x3d402050, 0x20d000 }, + { 0x3d402064, 0xc001c }, +#else { 0x3d400108, 0x9121c1c }, #ifdef CONFIG_IMX8M_DRAM_INLINE_ECC { 0x3d400200, 0x13 }, @@ -83,6 +138,7 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d402024, 0x30d400 }, { 0x3d402050, 0x20d000 }, { 0x3d402064, 0xc0026 }, +#endif { 0x3d4020dc, 0x840000 }, { 0x3d4020e0, 0x330000 }, { 0x3d4020e8, 0x660048 }, @@ -104,10 +160,17 @@ struct dram_cfg_param ddr_ddrc_cfg[] = { { 0x3d402194, 0x80303 }, { 0x3d4021b4, 0x100 }, { 0x3d4020f4, 0xc99 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x3d403020, 0x21 }, + { 0x3d403024, 0xc3500 }, + { 0x3d403050, 0x20d000 }, + { 0x3d403064, 0x30007 }, +#else { 0x3d403020, 0x1021 }, { 0x3d403024, 0xc3500 }, { 0x3d403050, 0x20d000 }, { 0x3d403064, 0x3000a }, +#endif { 0x3d4030dc, 0x840000 }, { 0x3d4030e0, 0x330000 }, { 0x3d4030e8, 0x660048 }, @@ -200,7 +263,11 @@ struct dram_cfg_param ddr_ddrphy_cfg[] = { { 0x7055, 0x1ff }, { 0x8055, 0x1ff }, { 0x9055, 0x1ff }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x200c5, 0xa }, +#else { 0x200c5, 0x18 }, +#endif { 0x1200c5, 0x7 }, { 0x2200c5, 0x7 }, { 0x2002e, 0x2 }, @@ -279,7 +346,11 @@ struct dram_cfg_param ddr_ddrphy_cfg[] = { { 0x20018, 0x3 }, { 0x20075, 0x4 }, { 0x20050, 0x0 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x20008, 0x258 }, +#else { 0x20008, 0x3e8 }, +#endif { 0x120008, 0x64 }, { 0x220008, 0x19 }, { 0x20088, 0x9 }, @@ -1066,6 +1137,38 @@ struct dram_cfg_param ddr_ddrphy_trained_csr[] = { /* P0 message block paremeter for training firmware */ struct dram_cfg_param ddr_fsp0_cfg[] = { +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0xd0000, 0x0 }, + { 0x54003, 0x960 }, + { 0x54004, 0x2 }, + { 0x54005, 0x2228 }, + { 0x54006, 0x14 }, + { 0x54008, 0x131f }, + { 0x54009, 0xc8 }, + { 0x5400b, 0x2 }, + { 0x5400f, 0x100 }, + { 0x54012, 0x310 }, + { 0x54019, 0x24c4 }, + { 0x5401a, 0x33 }, + { 0x5401b, 0x4866 }, + { 0x5401c, 0x4800 }, + { 0x5401e, 0x16 }, + { 0x5401f, 0x24c4 }, + { 0x54020, 0x33 }, + { 0x54021, 0x4866 }, + { 0x54022, 0x4800 }, + { 0x54024, 0x16 }, + { 0x5402b, 0x1000 }, + { 0x5402c, 0x3 }, + { 0x54032, 0xc400 }, + { 0x54033, 0x3324 }, + { 0x54034, 0x6600 }, + { 0x54035, 0x48 }, + { 0x54036, 0x48 }, + { 0x54037, 0x1600 }, + { 0x54038, 0xc400 }, + { 0x54039, 0x3324 }, +#else { 0xd0000, 0x0 }, { 0x54003, 0xfa0 }, { 0x54004, 0x2 }, @@ -1096,6 +1199,7 @@ struct dram_cfg_param ddr_fsp0_cfg[] = { { 0x54037, 0x1600 }, { 0x54038, 0xf400 }, { 0x54039, 0x333f }, +#endif { 0x5403a, 0x6600 }, { 0x5403b, 0x48 }, { 0x5403c, 0x48 }, @@ -1186,6 +1290,39 @@ struct dram_cfg_param ddr_fsp2_cfg[] = { /* P0 2D message block paremeter for training firmware */ struct dram_cfg_param ddr_fsp0_2d_cfg[] = { { 0xd0000, 0x0 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x54003, 0x960 }, + { 0x54004, 0x2 }, + { 0x54005, 0x2228 }, + { 0x54006, 0x14 }, + { 0x54008, 0x61 }, + { 0x54009, 0xc8 }, + { 0x5400b, 0x2 }, + { 0x5400d, 0x100 }, + { 0x5400f, 0x100 }, + { 0x54010, 0x1f7f }, + { 0x54012, 0x310 }, + { 0x54019, 0x24c4 }, + { 0x5401a, 0x33 }, + { 0x5401b, 0x4866 }, + { 0x5401c, 0x4800 }, + { 0x5401e, 0x16 }, + { 0x5401f, 0x24c4 }, + { 0x54020, 0x33 }, + { 0x54021, 0x4866 }, + { 0x54022, 0x4800 }, + { 0x54024, 0x16 }, + { 0x5402b, 0x1000 }, + { 0x5402c, 0x3 }, + { 0x54032, 0xc400 }, + { 0x54033, 0x3324 }, + { 0x54034, 0x6600 }, + { 0x54035, 0x48 }, + { 0x54036, 0x48 }, + { 0x54037, 0x1600 }, + { 0x54038, 0xc400 }, + { 0x54039, 0x3324 }, +#else { 0x54003, 0xfa0 }, { 0x54004, 0x2 }, { 0x54005, 0x2228 }, @@ -1217,6 +1354,7 @@ struct dram_cfg_param ddr_fsp0_2d_cfg[] = { { 0x54037, 0x1600 }, { 0x54038, 0xf400 }, { 0x54039, 0x333f }, +#endif { 0x5403a, 0x6600 }, { 0x5403b, 0x48 }, { 0x5403c, 0x48 }, @@ -1705,10 +1843,16 @@ struct dram_cfg_param ddr_phy_pie[] = { { 0x400d6, 0x20a }, { 0x400d7, 0x20b }, { 0x2003a, 0x2 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x2000b, 0x4b }, + { 0x2000c, 0x96 }, + { 0x2000d, 0x5dc }, +#else { 0x200be, 0x3 }, { 0x2000b, 0x7d }, { 0x2000c, 0xfa }, { 0x2000d, 0x9c4 }, +#endif { 0x2000e, 0x2c }, { 0x12000b, 0xc }, { 0x12000c, 0x19 }, @@ -1728,6 +1872,12 @@ struct dram_cfg_param ddr_phy_pie[] = { { 0x90013, 0x6152 }, { 0x20010, 0x5a }, { 0x20011, 0x3 }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + { 0x120010, 0x5a }, + { 0x120011, 0x3 }, + { 0x220010, 0x5a }, + { 0x220011, 0x3 }, +#endif { 0x40080, 0xe0 }, { 0x40081, 0x12 }, { 0x40082, 0xe0 }, @@ -1811,8 +1961,13 @@ struct dram_cfg_param ddr_phy_pie[] = { struct dram_fsp_msg ddr_dram_fsp_msg[] = { { +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + /* P0 2400mts 1D */ + .drate = 2400, +#else /* P0 4000mts 1D */ .drate = 4000, +#endif .fw_type = FW_1D_IMAGE, .fsp_cfg = ddr_fsp0_cfg, .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_cfg), @@ -1832,8 +1987,13 @@ struct dram_fsp_msg ddr_dram_fsp_msg[] = { .fsp_cfg_num = ARRAY_SIZE(ddr_fsp2_cfg), }, { - /* P0 4000mts 2D */ - .drate = 4000, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + /* P0 2400mts 2D */ + .drate = 2400, +#else + /* P0 4000mts 2D */ + .drate = 4000, +#endif .fw_type = FW_2D_IMAGE, .fsp_cfg = ddr_fsp0_2d_cfg, .fsp_cfg_num = ARRAY_SIZE(ddr_fsp0_2d_cfg), @@ -1852,9 +2012,14 @@ struct dram_timing_info dram_timing = { .ddrphy_trained_csr_num = ARRAY_SIZE(ddr_ddrphy_trained_csr), .ddrphy_pie = ddr_phy_pie, .ddrphy_pie_num = ARRAY_SIZE(ddr_phy_pie), - .fsp_table = { 4000, 400, 100, }, +#ifdef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS + .fsp_table = { 2400, 400, 100, }, +#else + .fsp_table = { 4000, 400, 100, }, +#endif }; +#ifndef CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS #ifdef CONFIG_IMX8M_DRAM_INLINE_ECC void board_dram_ecc_scrub(void) { @@ -1882,3 +2047,4 @@ void board_dram_ecc_scrub(void) ddrc_inline_ecc_scrub_end(0x0,0x5fffffff); } #endif +#endif diff --git a/board/freescale/imx8mp_evk/spl.c b/board/freescale/imx8mp_evk/spl.c index a26bc85633..f3723e947d 100644 --- a/board/freescale/imx8mp_evk/spl.c +++ b/board/freescale/imx8mp_evk/spl.c @@ -194,7 +194,12 @@ int power_init_board(void) * Enable DVS control through PMIC_STBY_REQ and * set B1_ENMODE=1 (ON by PMIC_ON_REQ=H) */ +#ifdef CONFIG_IMX8M_VDD_SOC_850MV + /* set DVS0 to 0.85v for special case*/ + pmic_reg_write(p, PCA9450_BUCK1OUT_DVS0, 0x14); +#else pmic_reg_write(p, PCA9450_BUCK1OUT_DVS0, 0x1C); +#endif pmic_reg_write(p, PCA9450_BUCK1OUT_DVS1, 0x14); pmic_reg_write(p, PCA9450_BUCK1CTRL, 0x59); diff --git a/configs/imx8mp_evk_android_powersave_defconfig b/configs/imx8mp_evk_android_powersave_defconfig new file mode 100644 index 0000000000..9c15cd91e3 --- /dev/null +++ b/configs/imx8mp_evk_android_powersave_defconfig @@ -0,0 +1,169 @@ +CONFIG_ARM=y +CONFIG_SPL_SYS_ICACHE_OFF=y +CONFIG_SPL_SYS_DCACHE_OFF=y +CONFIG_ARCH_IMX8M=y +CONFIG_SYS_TEXT_BASE=0x40200000 +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_SYS_I2C_MXC_I2C1=y +CONFIG_SYS_I2C_MXC_I2C2=y +CONFIG_SYS_I2C_MXC_I2C3=y +CONFIG_ENV_SIZE=0x1000 +CONFIG_ENV_OFFSET=0x400000 +CONFIG_ENV_SECT_SIZE=0x10000 +CONFIG_DM_GPIO=y +CONFIG_TARGET_IMX8MP_EVK=y +CONFIG_ARCH_MISC_INIT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_SPL=y +CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000 +CONFIG_CSF_SIZE=0x2000 +CONFIG_SPL_TEXT_BASE=0x920000 +CONFIG_FIT=y +CONFIG_FIT_EXTERNAL_OFFSET=0x3000 +CONFIG_SPL_LOAD_FIT=y +CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" +CONFIG_OF_SYSTEM_SETUP=y +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage-8mp-lpddr4.cfg, ANDROID_SUPPORT" +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" +CONFIG_BOARD_LATE_INIT=y +CONFIG_BOARD_EARLY_INIT_F=y +CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_POWER_SUPPORT=y +CONFIG_NR_DRAM_BANKS=3 +CONFIG_HUSH_PARSER=y +CONFIG_SYS_PROMPT="u-boot=> " +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +CONFIG_CMD_ERASEENV=y +# CONFIG_CMD_CRC32 is not set +# CONFIG_BOOTM_NETBSD is not set +CONFIG_CMD_CLK=y +CONFIG_CMD_FUSE=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_REGULATOR=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_SF=y +CONFIG_CMD_LED=y +CONFIG_OF_CONTROL=y +CONFIG_DEFAULT_DEVICE_TREE="imx8mp-evk" +CONFIG_ENV_IS_IN_MMC=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_ENV_IS_NOWHERE=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_CLK_COMPOSITE_CCF=y +CONFIG_CLK_IMX8MP=y +CONFIG_MXC_GPIO=y +CONFIG_DM_PCA953X=y +CONFIG_FASTBOOT=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_CMD_FASTBOOT=y +CONFIG_ANDROID_BOOT_IMAGE=y +CONFIG_FASTBOOT_UUU_SUPPORT=n +CONFIG_FASTBOOT_BUF_ADDR=0x42800000 +CONFIG_FASTBOOT_BUF_SIZE=0xc800000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_MXC=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_DM_MMC=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_HS400_SUPPORT=y +CONFIG_MMC_HS400_ES_SUPPORT=y +CONFIG_EFI_PARTITION=y +CONFIG_SUPPORT_EMMC_BOOT=y +CONFIG_FSL_ESDHC_IMX=y +CONFIG_DM_SPI_FLASH=y +CONFIG_DM_SPI=y +CONFIG_FSL_FSPI=y +CONFIG_SPI=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_BAR=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SF_DEFAULT_BUS=0 +CONFIG_SF_DEFAULT_CS=0 +CONFIG_SF_DEFAULT_SPEED=40000000 +CONFIG_SF_DEFAULT_MODE=0 + +CONFIG_DM_ETH=y +# CONFIG_DM_ETH_PHY=y +CONFIG_DWC_ETH_QOS=y + +CONFIG_PHY_GIGE=y +CONFIG_FEC_MXC=y +CONFIG_MII=y +CONFIG_PHYLIB=y +CONFIG_PHY_REALTEK=y + +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX8M=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y +CONFIG_MXC_UART=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_PSCI=y +CONFIG_DM_THERMAL=y +CONFIG_NXP_TMU=y +CONFIG_USB_TCPC=y +CONFIG_USB=y +CONFIG_USB_GADGET=y +CONFIG_DM_USB=y + +CONFIG_USB_GADGET_MANUFACTURER="FSL" +CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_IMX8M=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_GADGET=y + +CONFIG_OF_BOARD_SETUP=y + +CONFIG_REGMAP=y +CONFIG_SYSCON=y +CONFIG_VIDEO_IMX_LCDIFV3=y +CONFIG_VIDEO_IMX_SEC_DSI=y +CONFIG_DM_VIDEO=y +CONFIG_VIDEO_LCD_RAYDIUM_RM67191=y +CONFIG_VIDEO_ADV7535=y +CONFIG_SYS_WHITE_ON_BLACK=y + +CONFIG_LZ4=y +CONFIG_BCB_SUPPORT=y +CONFIG_ANDROID_RECOVERY=y +CONFIG_SUPPORT_RAW_INITRD=y +CONFIG_FLASH_MCUFIRMWARE_SUPPORT=y +CONFIG_FSL_FASTBOOT=y +CONFIG_FASTBOOT_LOCK=y +CONFIG_CMD_BOOTA=y +CONFIG_LIBAVB=y +CONFIG_AVB_SUPPORT=y +CONFIG_APPEND_BOOTARGS=y +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_AVB_WARNING_LOGO=y +CONFIG_AVB_WARNING_LOGO_COLS=0x320 +CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 +CONFIG_VIRTUAL_AB_SUPPORT=y +CONFIG_IMX8M_VDD_SOC_850MV=y +CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS=y diff --git a/drivers/ddr/imx/imx8m/Kconfig b/drivers/ddr/imx/imx8m/Kconfig index 8a1156c0fe..dcae464356 100644 --- a/drivers/ddr/imx/imx8m/Kconfig +++ b/drivers/ddr/imx/imx8m/Kconfig @@ -39,4 +39,12 @@ config IMX8M_DRAM_INLINE_ECC help Select this config if you want to use inline ecc feature for imx8mp-evk board. + +config IMX8M_VDD_SOC_850MV + bool "imx8mp change the vdd_soc voltage to 850mv" + depends on IMX8MP + +config IMX8M_LPDDR4_FREQ0_2400MTS + bool "imx8m PDDR4 freq0 change from 4000MTS to 2400MTS" + endmenu -- cgit v1.2.3 From 185bdaaaf5644319284566e5c340927d28954a1a Mon Sep 17 00:00:00 2001 From: "zhai.he" Date: Fri, 8 Jan 2021 16:55:37 +0800 Subject: MA-18534 imx8mp: Enable trusty for powersave config Add trusty support to the imx8mp powersave config. Change-Id: I269f565f9c50a3db4c4138fca9279d8aa7c47043 Signed-off-by: zhai.he --- .../imx8mp_evk_android_trusty_powersave_defconfig | 176 +++++++++++++++++++++ 1 file changed, 176 insertions(+) create mode 100644 configs/imx8mp_evk_android_trusty_powersave_defconfig diff --git a/configs/imx8mp_evk_android_trusty_powersave_defconfig b/configs/imx8mp_evk_android_trusty_powersave_defconfig new file mode 100644 index 0000000000..0c15d46c5f --- /dev/null +++ b/configs/imx8mp_evk_android_trusty_powersave_defconfig @@ -0,0 +1,176 @@ +CONFIG_ARM=y +CONFIG_SPL_SYS_ICACHE_OFF=y +CONFIG_SPL_SYS_DCACHE_OFF=y +CONFIG_ARCH_IMX8M=y +CONFIG_SYS_TEXT_BASE=0x40200000 +CONFIG_SPL_GPIO_SUPPORT=y +CONFIG_SPL_LIBCOMMON_SUPPORT=y +CONFIG_SPL_LIBGENERIC_SUPPORT=y +CONFIG_SYS_MALLOC_F_LEN=0x2000 +CONFIG_SYS_I2C_MXC_I2C1=y +CONFIG_SYS_I2C_MXC_I2C2=y +CONFIG_SYS_I2C_MXC_I2C3=y +CONFIG_ENV_SIZE=0x1000 +CONFIG_ENV_OFFSET=0x400000 +CONFIG_ENV_SECT_SIZE=0x10000 +CONFIG_DM_GPIO=y +CONFIG_TARGET_IMX8MP_EVK=y +CONFIG_ARCH_MISC_INIT=y +CONFIG_SPL_SERIAL_SUPPORT=y +CONFIG_SPL_DRIVERS_MISC_SUPPORT=y +CONFIG_SPL=y +CONFIG_SPL_IMX_ROMAPI_LOADADDR=0x48000000 +CONFIG_CSF_SIZE=0x2000 +CONFIG_SPL_TEXT_BASE=0x920000 +CONFIG_FIT=y +CONFIG_FIT_EXTERNAL_OFFSET=0x3000 +CONFIG_SPL_LOAD_FIT=y +CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-imx/mkimage_fit_atf.sh" +CONFIG_OF_SYSTEM_SETUP=y +CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/imx8m/imximage-8mp-lpddr4.cfg, ANDROID_SUPPORT" +CONFIG_DEFAULT_FDT_FILE="imx8mp-evk.dtb" +CONFIG_BOARD_LATE_INIT=y +CONFIG_BOARD_EARLY_INIT_F=y +CONFIG_SPL_BOARD_INIT=y +CONFIG_SPL_SEPARATE_BSS=y +CONFIG_SPL_I2C_SUPPORT=y +CONFIG_SPL_POWER_SUPPORT=y +CONFIG_NR_DRAM_BANKS=3 +CONFIG_HUSH_PARSER=y +CONFIG_SYS_PROMPT="u-boot=> " +# CONFIG_CMD_EXPORTENV is not set +# CONFIG_CMD_IMPORTENV is not set +CONFIG_CMD_ERASEENV=y +# CONFIG_CMD_CRC32 is not set +# CONFIG_BOOTM_NETBSD is not set +CONFIG_CMD_CLK=y +CONFIG_CMD_FUSE=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_REGULATOR=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_EXT2=y +CONFIG_CMD_EXT4=y +CONFIG_CMD_EXT4_WRITE=y +CONFIG_CMD_FAT=y +CONFIG_CMD_SF=y +CONFIG_CMD_LED=y +CONFIG_OF_CONTROL=y +CONFIG_DEFAULT_DEVICE_TREE="imx8mp-evk" +CONFIG_ENV_IS_IN_MMC=y +CONFIG_ENV_IS_IN_SPI_FLASH=y +CONFIG_ENV_IS_NOWHERE=y +CONFIG_SYS_RELOC_GD_ENV_ADDR=y +CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y +CONFIG_CLK_COMPOSITE_CCF=y +CONFIG_CLK_IMX8MP=y +CONFIG_MXC_GPIO=y +CONFIG_DM_PCA953X=y +CONFIG_FASTBOOT=y +CONFIG_USB_FUNCTION_FASTBOOT=y +CONFIG_CMD_FASTBOOT=y +CONFIG_ANDROID_BOOT_IMAGE=y +CONFIG_FASTBOOT_UUU_SUPPORT=n +CONFIG_FASTBOOT_BUF_ADDR=0x42800000 +CONFIG_FASTBOOT_BUF_SIZE=0xc800000 +CONFIG_FASTBOOT_FLASH=y +CONFIG_DM_I2C=y +CONFIG_SYS_I2C_MXC=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_DM_MMC=y +CONFIG_MMC_IO_VOLTAGE=y +CONFIG_MMC_UHS_SUPPORT=y +CONFIG_MMC_HS400_SUPPORT=y +CONFIG_MMC_HS400_ES_SUPPORT=y +CONFIG_EFI_PARTITION=y +CONFIG_SUPPORT_EMMC_BOOT=y +CONFIG_FSL_ESDHC_IMX=y +CONFIG_DM_SPI_FLASH=y +CONFIG_DM_SPI=y +CONFIG_FSL_FSPI=y +CONFIG_SPI=y +CONFIG_SPI_FLASH=y +CONFIG_SPI_FLASH_BAR=y +CONFIG_SPI_FLASH_STMICRO=y +CONFIG_SF_DEFAULT_BUS=0 +CONFIG_SF_DEFAULT_CS=0 +CONFIG_SF_DEFAULT_SPEED=40000000 +CONFIG_SF_DEFAULT_MODE=0 + +CONFIG_DM_ETH=y +# CONFIG_DM_ETH_PHY=y +CONFIG_DWC_ETH_QOS=y + +CONFIG_PHY_GIGE=y +CONFIG_FEC_MXC=y +CONFIG_MII=y +CONFIG_PHYLIB=y +CONFIG_PHY_REALTEK=y + +CONFIG_PINCTRL=y +CONFIG_PINCTRL_IMX8M=y +CONFIG_DM_REGULATOR=y +CONFIG_DM_REGULATOR_FIXED=y +CONFIG_DM_REGULATOR_GPIO=y +CONFIG_MXC_UART=y +CONFIG_SYSRESET=y +CONFIG_SYSRESET_PSCI=y +CONFIG_DM_THERMAL=y +CONFIG_NXP_TMU=y +CONFIG_USB_TCPC=y +CONFIG_USB=y +CONFIG_USB_GADGET=y +CONFIG_DM_USB=y + +CONFIG_USB_GADGET_MANUFACTURER="FSL" +CONFIG_USB_GADGET_VENDOR_NUM=0x0525 +CONFIG_USB_GADGET_PRODUCT_NUM=0xa4a5 +CONFIG_USB_GADGET_DOWNLOAD=y +CONFIG_USB_XHCI_HCD=y +CONFIG_USB_XHCI_IMX8M=y +CONFIG_USB_XHCI_DWC3=y +CONFIG_USB_DWC3=y +CONFIG_USB_DWC3_GADGET=y + +CONFIG_OF_BOARD_SETUP=y + +CONFIG_REGMAP=y +CONFIG_SYSCON=y +CONFIG_VIDEO_IMX_LCDIFV3=y +CONFIG_VIDEO_IMX_SEC_DSI=y +CONFIG_DM_VIDEO=y +CONFIG_VIDEO_LCD_RAYDIUM_RM67191=y +CONFIG_VIDEO_ADV7535=y +CONFIG_SYS_WHITE_ON_BLACK=y + +CONFIG_LZ4=y +CONFIG_BCB_SUPPORT=y +CONFIG_ANDROID_RECOVERY=y +CONFIG_SUPPORT_RAW_INITRD=y +CONFIG_FLASH_MCUFIRMWARE_SUPPORT=y +CONFIG_FSL_FASTBOOT=y +CONFIG_FASTBOOT_LOCK=y +CONFIG_CMD_BOOTA=y +CONFIG_LIBAVB=y +CONFIG_AVB_SUPPORT=y +CONFIG_APPEND_BOOTARGS=y +CONFIG_SPL_MMC_SUPPORT=y +CONFIG_AVB_WARNING_LOGO=y +CONFIG_AVB_WARNING_LOGO_COLS=0x320 +CONFIG_AVB_WARNING_LOGO_ROWS=0xc0 +CONFIG_VIRTUAL_AB_SUPPORT=y +CONFIG_IMX8M_VDD_SOC_850MV=y +CONFIG_IMX8M_LPDDR4_FREQ0_2400MTS=y + +CONFIG_CMD_MMC_RPMB=y +CONFIG_SUPPORT_EMMC_RPMB=y +CONFIG_IMX_TRUSTY_OS=y +CONFIG_TRUSTY_UNLOCK_PERMISSION=y +CONFIG_LOAD_KEY_FROM_RPMB=y +CONFIG_ID_ATTESTATION=y -- cgit v1.2.3