summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMax Krummenacher <max.krummenacher@toradex.com>2021-05-04 19:43:44 +0200
committerMax Krummenacher <max.krummenacher@toradex.com>2021-05-04 19:51:30 +0200
commitf8c8fd216f821d0dceb626d73f1e9f92e1301d7d (patch)
tree86807b0ce14439b7c6f82f8cf022dd69d7aeec75
parent76fd4496a40b9dd7271ceb9ff330982c954fe8e9 (diff)
parent185bdaaaf5644319284566e5c340927d28954a1a (diff)
Merge remote-tracking branch 'nxp/imx_v2020.04_5.4.70_2.3.0' into toradex_imx_v2020.04_5.4.70_2.3.0
Update to NXP BSP tag rel_imx_5.4.70_2.3.2 https://source.codeaurora.org/external/imx/uboot-imx/tag/?h=rel_imx_5.4.70_2.3.2 Related-to: ELB-3957 Signed-off-by: Max Krummenacher <max.krummenacher@toradex.com>
-rwxr-xr-x[-rw-r--r--]board/freescale/imx8mp_evk/lpddr4_timing.c172
-rw-r--r--board/freescale/imx8mp_evk/spl.c5
-rw-r--r--configs/imx8mm_ddr4_evk_android_defconfig2
-rw-r--r--configs/imx8mm_evk_android_defconfig2
-rw-r--r--configs/imx8mm_evk_android_dual_defconfig2
-rw-r--r--configs/imx8mm_evk_android_trusty_defconfig3
-rw-r--r--configs/imx8mm_evk_android_trusty_dual_defconfig3
-rw-r--r--configs/imx8mm_evk_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8mn_ddr4_evk_android_defconfig2
-rw-r--r--configs/imx8mn_evk_android_defconfig2
-rw-r--r--configs/imx8mn_evk_android_dual_defconfig2
-rw-r--r--configs/imx8mn_evk_android_trusty_defconfig3
-rw-r--r--configs/imx8mn_evk_android_trusty_dual_defconfig3
-rw-r--r--configs/imx8mn_evk_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8mp_evk_android_defconfig2
-rw-r--r--configs/imx8mp_evk_android_dual_defconfig2
-rw-r--r--configs/imx8mp_evk_android_powersave_defconfig169
-rw-r--r--configs/imx8mp_evk_android_trusty_defconfig3
-rw-r--r--configs/imx8mp_evk_android_trusty_dual_defconfig3
-rw-r--r--configs/imx8mp_evk_android_trusty_powersave_defconfig176
-rw-r--r--configs/imx8mp_evk_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8mq_evk_android_defconfig2
-rw-r--r--configs/imx8mq_evk_android_dual_defconfig2
-rw-r--r--configs/imx8mq_evk_android_trusty_defconfig3
-rw-r--r--configs/imx8mq_evk_android_trusty_dual_defconfig3
-rw-r--r--configs/imx8mq_evk_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8qm_mek_android_defconfig2
-rw-r--r--configs/imx8qm_mek_android_hdmi_defconfig2
-rw-r--r--configs/imx8qm_mek_android_trusty_defconfig3
-rw-r--r--configs/imx8qm_mek_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8qm_mek_androidauto2_trusty_defconfig4
-rw-r--r--configs/imx8qm_mek_androidauto2_trusty_md_defconfig4
-rw-r--r--configs/imx8qm_mek_androidauto_trusty_defconfig2
-rw-r--r--configs/imx8qm_mek_androidauto_trusty_secure_unlock_defconfig2
-rw-r--r--configs/imx8qm_mek_androidauto_xen_defconfig1
-rw-r--r--configs/imx8qxp_mek_android_defconfig2
-rw-r--r--configs/imx8qxp_mek_android_trusty_defconfig3
-rw-r--r--configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig3
-rw-r--r--configs/imx8qxp_mek_androidauto2_trusty_defconfig4
-rw-r--r--configs/imx8qxp_mek_androidauto_trusty_defconfig2
-rw-r--r--configs/imx8qxp_mek_androidauto_trusty_secure_unlock_defconfig2
-rw-r--r--disk/part_efi.c56
-rw-r--r--drivers/ddr/imx/imx8m/Kconfig8
-rw-r--r--drivers/fastboot/fb_fsl/fb_fsl_command.c43
-rw-r--r--include/configs/imx8mm_evk_android.h12
-rw-r--r--include/configs/imx8mn_evk_android.h12
-rw-r--r--include/configs/imx8mp_evk_android.h12
-rw-r--r--include/configs/imx8mq_evk_android.h12
-rw-r--r--include/configs/imx8qm_mek_android.h12
-rw-r--r--include/configs/imx8qm_mek_android_auto.h8
-rw-r--r--include/configs/imx8qxp_mek_android.h11
-rw-r--r--include/configs/imx8qxp_mek_android_auto.h8
-rw-r--r--include/fb_fsl.h1
-rw-r--r--include/interface/keymaster/keymaster.h7
-rw-r--r--include/part.h5
-rw-r--r--include/trusty/keymaster.h8
-rw-r--r--include/trusty/keymaster_serializable.h8
-rw-r--r--lib/Kconfig10
-rwxr-xr-xlib/avb/fsl/fsl_bootctrl.c42
-rw-r--r--lib/trusty/ql-tipc/keymaster.c49
-rw-r--r--lib/trusty/ql-tipc/keymaster_serializable.c17
61 files changed, 886 insertions, 72 deletions
diff --git a/board/freescale/imx8mp_evk/lpddr4_timing.c b/board/freescale/imx8mp_evk/lpddr4_timing.c
index a532595687..2a95580c72 100644..100755
--- 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/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..1051ede460 100644
--- a/configs/imx8mm_evk_android_trusty_defconfig
+++ b/configs/imx8mm_evk_android_trusty_defconfig
@@ -156,5 +156,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8mm_evk_android_trusty_dual_defconfig b/configs/imx8mm_evk_android_trusty_dual_defconfig
index 82b93db825..7313620bbe 100644
--- a/configs/imx8mm_evk_android_trusty_dual_defconfig
+++ b/configs/imx8mm_evk_android_trusty_dual_defconfig
@@ -158,5 +158,6 @@ 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
+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 949e9fe195..4564fce00b 100644
--- a/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8mm_evk_android_trusty_secure_unlock_defconfig
@@ -158,5 +158,6 @@ 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
+CONFIG_ID_ATTESTATION=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..d775a4513e 100644
--- a/configs/imx8mn_evk_android_trusty_defconfig
+++ b/configs/imx8mn_evk_android_trusty_defconfig
@@ -156,5 +156,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8mn_evk_android_trusty_dual_defconfig b/configs/imx8mn_evk_android_trusty_dual_defconfig
index 0342cf9909..e300825d26 100644
--- a/configs/imx8mn_evk_android_trusty_dual_defconfig
+++ b/configs/imx8mn_evk_android_trusty_dual_defconfig
@@ -158,5 +158,6 @@ 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
+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 c7737a4c0d..7c0b2e2dd3 100644
--- a/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8mn_evk_android_trusty_secure_unlock_defconfig
@@ -158,5 +158,6 @@ 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
+CONFIG_ID_ATTESTATION=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_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/configs/imx8mp_evk_android_trusty_defconfig b/configs/imx8mp_evk_android_trusty_defconfig
index b3ce199aad..ffbd21df5b 100644
--- a/configs/imx8mp_evk_android_trusty_defconfig
+++ b/configs/imx8mp_evk_android_trusty_defconfig
@@ -168,5 +168,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8mp_evk_android_trusty_dual_defconfig b/configs/imx8mp_evk_android_trusty_dual_defconfig
index d1adfd052c..d6e04928b0 100644
--- a/configs/imx8mp_evk_android_trusty_dual_defconfig
+++ b/configs/imx8mp_evk_android_trusty_dual_defconfig
@@ -170,5 +170,6 @@ 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
+CONFIG_ID_ATTESTATION=y
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
diff --git a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig
index 8ab36c8fbf..e1b2492035 100644
--- a/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8mp_evk_android_trusty_secure_unlock_defconfig
@@ -170,5 +170,6 @@ 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
+CONFIG_ID_ATTESTATION=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..9235f80966 100644
--- a/configs/imx8mq_evk_android_trusty_defconfig
+++ b/configs/imx8mq_evk_android_trusty_defconfig
@@ -148,5 +148,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8mq_evk_android_trusty_dual_defconfig b/configs/imx8mq_evk_android_trusty_dual_defconfig
index f7c8703853..fac2460c2b 100644
--- a/configs/imx8mq_evk_android_trusty_dual_defconfig
+++ b/configs/imx8mq_evk_android_trusty_dual_defconfig
@@ -150,5 +150,6 @@ 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
+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 b24fe36efc..4bd166e396 100644
--- a/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8mq_evk_android_trusty_secure_unlock_defconfig
@@ -150,5 +150,6 @@ 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
+CONFIG_ID_ATTESTATION=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..950fdf771b 100644
--- a/configs/imx8qm_mek_android_trusty_defconfig
+++ b/configs/imx8qm_mek_android_trusty_defconfig
@@ -191,5 +191,6 @@ 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
+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 344e54a17e..fdf72c08b5 100644
--- a/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8qm_mek_android_trusty_secure_unlock_defconfig
@@ -193,5 +193,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8qm_mek_androidauto2_trusty_defconfig b/configs/imx8qm_mek_androidauto2_trusty_defconfig
index a2af03de7a..a135e362cd 100644
--- a/configs/imx8qm_mek_androidauto2_trusty_defconfig
+++ b/configs/imx8qm_mek_androidauto2_trusty_defconfig
@@ -172,7 +172,9 @@ 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
+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 b601dba9d5..fa3fed0ace 100644
--- a/configs/imx8qm_mek_androidauto2_trusty_md_defconfig
+++ b/configs/imx8qm_mek_androidauto2_trusty_md_defconfig
@@ -174,8 +174,10 @@ 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
+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/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..b1ff68e39e 100644
--- a/configs/imx8qxp_mek_android_trusty_defconfig
+++ b/configs/imx8qxp_mek_android_trusty_defconfig
@@ -192,5 +192,6 @@ 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
+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 39f245d3b1..a558316d81 100644
--- a/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig
+++ b/configs/imx8qxp_mek_android_trusty_secure_unlock_defconfig
@@ -194,5 +194,6 @@ 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
+CONFIG_ID_ATTESTATION=y
diff --git a/configs/imx8qxp_mek_androidauto2_trusty_defconfig b/configs/imx8qxp_mek_androidauto2_trusty_defconfig
index 522c0f9c7b..e5dbcdbbae 100644
--- a/configs/imx8qxp_mek_androidauto2_trusty_defconfig
+++ b/configs/imx8qxp_mek_androidauto2_trusty_defconfig
@@ -182,7 +182,9 @@ 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
+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
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/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
diff --git a/drivers/fastboot/fb_fsl/fb_fsl_command.c b/drivers/fastboot/fb_fsl/fb_fsl_command.c
index 5cf3bd83c7..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)) {
@@ -831,6 +862,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",
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/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/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
@@ -68,6 +68,14 @@ 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
* ownership of |*out|. Returns one of trusty_err.
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/avb/fsl/fsl_bootctrl.c b/lib/avb/fsl/fsl_bootctrl.c
index 38733cebb1..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 {
@@ -888,10 +876,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 +947,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 +1026,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 +1191,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 +1263,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 +1352,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 &&
diff --git a/lib/trusty/ql-tipc/keymaster.c b/lib/trusty/ql-tipc/keymaster.c
index b4fa8cac7f..90a34e5d2c 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,
@@ -554,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)
{