1@startuml 2 3box "BL1 common code" 4 participant bl1_main 5 participant bl_common 6end box 7 8box "arm platform code" #LightBlue 9 participant fvp_bl1_setup 10 participant arm_bl1_setup 11 participant arm_io_storage 12end box 13 14box "platform common code" 15 participant plat_bl1_common 16 participant fconf_dyn_cfg_getter 17 participant fconf 18end box 19 20bl1_main -> fvp_bl1_setup : bl1_platform_setup() 21fvp_bl1_setup -> arm_bl1_setup : arm_bl1_platform_setup() 22arm_bl1_setup -> arm_io_storage : plat_arm_io_setup() 23note over arm_io_storage : register and setup fip 24arm_bl1_setup -> fconf : set_fw_config_info(fw_config_base, max_size) 25note over fconf 26 set fw_config information 27 (address, size, image_id) 28 in global dtb_infos array. 29end note 30activate fconf 31 arm_bl1_setup -> fconf : fconf_load_config(FW_CONFIG_ID) 32 fconf -> fconf : FCONF_GET_PROPERTY(dyn_cfg, dtb, FW_CONFIG_ID) 33 fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(FW_CONFIG_ID) 34 fconf_dyn_cfg_getter -> fconf: fw_config_info 35 fconf -> bl_common : load_auth_image(FW_CONFIG_ID, &image_info) 36 activate bl_common 37 note over bl_common 38 load and auth image from fip 39 with info from plat_io_policy 40 end note 41 bl_common -> arm_io_storage 42 arm_io_storage -> fconf: FCONF_GET_PROPERTY(arm, arm_io_policies, FW_CONFIG_ID) 43 note over fconf: use statically defined policies in bl1 44 fconf <- bl_common : image_info 45 deactivate bl_common 46 note over fconf : get fw_config_dtb from image_info 47 arm_bl1_setup -> fconf: FCONF_GET_PROPERTY(dyn_cfg, dtb, FW_CONFIG_ID) 48 fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(FW_CONFIG_ID) 49 fconf_dyn_cfg_getter -> arm_bl1_setup: fw_config_info 50 arm_bl1_setup -> fconf_dyn_cfg_getter: populate_dtb_registry(uintptr_t dtb) 51 arm_bl1_setup -> fconf: fconf_load_config(TB_FW_CONFIG_ID) 52 fconf -> fconf : FCONF_GET_PROPERTY(dyn_cfg, dtb, TB_FW_CONFIG_ID) 53 fconf -> fconf_dyn_cfg_getter: dyn_cfg_dtb_info_getter(TB_FW_CONFIG_ID) 54 fconf_dyn_cfg_getter -> fconf: tb_fw_config_info 55 fconf -> bl_common : load_auth_image(TB_FW_CONFIG_ID, &image_info) 56 activate bl_common 57 note over bl_common 58 load and auth image from fip 59 with info from plat_io_policy 60 end note 61 bl_common -> arm_io_storage 62 arm_io_storage -> fconf: FCONF_GET_PROPERTY(arm, arm_io_policies, TB_FW_CONFIG_ID) 63 note over fconf: use statically defined policies in bl1 64 fconf <- bl_common : image_info 65 deactivate bl_common 66 note over fconf : get tb_fw_config_dtb from image_info 67 fconf -> arm_bl1_setup 68 arm_bl1_setup -> plat_bl1_common : bl1_plat_get_image_desc(BL2_IMAGE_ID) 69 arm_bl1_setup <- plat_bl1_common : BL2_IMAGE_DESC 70 note over arm_bl1_setup 71 set ep_info.args.arg0 of BL2_IMAGE_DESC 72 to FW_CONFIG base address 73 end note 74deactivate fconf 75 76== load & auth, prepare and jump to BL2 == 77 78@enduml 79