diff options
author | Max Krummenacher <max.krummenacher@toradex.com> | 2021-05-04 19:43:44 +0200 |
---|---|---|
committer | Max Krummenacher <max.krummenacher@toradex.com> | 2021-05-04 19:51:30 +0200 |
commit | f8c8fd216f821d0dceb626d73f1e9f92e1301d7d (patch) | |
tree | 86807b0ce14439b7c6f82f8cf022dd69d7aeec75 | |
parent | 76fd4496a40b9dd7271ceb9ff330982c954fe8e9 (diff) | |
parent | 185bdaaaf5644319284566e5c340927d28954a1a (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>
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) { |