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