| @startuml |
| |
| box "BL1 common code" |
| participant bl1_main |
| participant bl_common |
| end box |
| |
| box "arm platform code" #LightBlue |
| participant fvp_bl1_setup |
| participant arm_bl1_setup |
| participant arm_io_storage |
| end box |
| |
| box "platform common code" |
| participant plat_bl1_common |
| participant fconf_dyn_cfg_getter |
| participant fconf |
| end box |
| |
| bl1_main -> fvp_bl1_setup : bl1_platform_setup() |
| fvp_bl1_setup -> arm_bl1_setup : arm_bl1_platform_setup() |
| arm_bl1_setup -> arm_io_storage : plat_arm_io_setup() |
| note over arm_io_storage : register and setup fip |
| arm_bl1_setup -> fconf : set_fw_config_info(fw_config_base, max_size) |
| note over fconf |
| set fw_config information |
| (address, size, image_id) |
| in global dtb_infos array. |
| end note |
| activate fconf |
| arm_bl1_setup -> fconf : fconf_load_config(FW_CONFIG_ID) |
| fconf -> fconf : FCONF_GET_PROPERTY(dyn_cfg, dtb, FW_CONFIG_ID) |
| fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(FW_CONFIG_ID) |
| fconf_dyn_cfg_getter -> fconf: fw_config_info |
| fconf -> bl_common : load_auth_image(FW_CONFIG_ID, &image_info) |
| activate bl_common |
| note over bl_common |
| load and auth image from fip |
| with info from plat_io_policy |
| end note |
| bl_common -> arm_io_storage |
| arm_io_storage -> fconf: FCONF_GET_PROPERTY(arm, arm_io_policies, FW_CONFIG_ID) |
| note over fconf: use statically defined policies in bl1 |
| fconf <- bl_common : image_info |
| deactivate bl_common |
| note over fconf : get fw_config_dtb from image_info |
| arm_bl1_setup -> fconf: FCONF_GET_PROPERTY(dyn_cfg, dtb, FW_CONFIG_ID) |
| fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(FW_CONFIG_ID) |
| fconf_dyn_cfg_getter -> arm_bl1_setup: fw_config_info |
| arm_bl1_setup -> fconf_dyn_cfg_getter: populate_dtb_registry(uintptr_t dtb) |
| arm_bl1_setup -> fconf: fconf_load_config(TB_FW_CONFIG_ID) |
| fconf -> fconf : FCONF_GET_PROPERTY(dyn_cfg, dtb, TB_FW_CONFIG_ID) |
| fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(TB_FW_CONFIG_ID) |
| fconf_dyn_cfg_getter -> fconf: tb_fw_config_info |
| fconf -> bl_common : load_auth_image(TB_FW_CONFIG_ID, &image_info) |
| activate bl_common |
| note over bl_common |
| load and auth image from fip |
| with info from plat_io_policy |
| end note |
| bl_common -> arm_io_storage |
| arm_io_storage -> fconf: FCONF_GET_PROPERTY(arm, arm_io_policies, TB_FW_CONFIG_ID) |
| note over fconf: use statically defined policies in bl1 |
| fconf <- bl_common : image_info |
| deactivate bl_common |
| note over fconf : get tb_fw_config_dtb from image_info |
| fconf -> arm_bl1_setup |
| arm_bl1_setup -> plat_bl1_common : bl1_plat_get_image_desc(BL2_IMAGE_ID) |
| arm_bl1_setup <- plat_bl1_common : BL2_IMAGE_DESC |
| note over arm_bl1_setup |
| set ep_info.args.arg0 of BL2_IMAGE_DESC |
| to FW_CONFIG base address |
| end note |
| deactivate fconf |
| |
| == load & auth, prepare and jump to BL2 == |
| |
| @enduml |