xref: /arm-trusted-firmware/docs/resources/diagrams/plantuml/io_dev_init_and_check.puml (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu@startuml
2*91f16700Schasinglulu
3*91f16700Schasingluluparticipant arm_io_storage
4*91f16700Schasingluluparticipant io_storage
5*91f16700Schasinglulu
6*91f16700Schasinglulu -> arm_io_storage : plat_get_image_source(image_id, &dev_handle, &image_spec)
7*91f16700Schasinglulu
8*91f16700Schasinglulugroup init and check device (image_id)
9*91f16700Schasinglulu
10*91f16700Schasinglulualt image_id = BL2_IMAGE_ID
11*91f16700Schasinglulunote over arm_io_storage
12*91f16700Schasinglulu	get BL2_IMAGE_ID policy:
13*91f16700Schasinglulu	- fip_dev_handle
14*91f16700Schasinglulu	- open_fip()
15*91f16700Schasingluluend note
16*91f16700Schasingluluopt policy->check()
17*91f16700Schasinglulu	arm_io_storage -> arm_io_storage : open_fip(spec)
18*91f16700Schasinglulu	activate arm_io_storage
19*91f16700Schasinglulu	arm_io_storage -> io_storage : io_dev_init(fip_dev_handle, FIP_IMAGE_ID)
20*91f16700Schasinglulu	ref over io_storage : dev_init() on fip device
21*91f16700Schasinglulu
22*91f16700Schasinglulu	arm_io_storage -> io_storage : io_open(fip_dev_handle, spec, &local_image_handle)
23*91f16700Schasinglulu	ref over io_storage : io_open() on fip device
24*91f16700Schasinglulu
25*91f16700Schasinglulu	arm_io_storage -> io_storage : io_close(local_image_handle)
26*91f16700Schasinglulu	ref over io_storage : io_close() on fip device
27*91f16700Schasinglulu
28*91f16700Schasinglulu	hnote over arm_io_storage
29*91f16700Schasinglulu		fip_dev_handle ready
30*91f16700Schasinglulu	end note
31*91f16700Schasingluluend opt
32*91f16700Schasingluludeactivate arm_io_storage
33*91f16700Schasinglulu
34*91f16700Schasingluluelse image_id = FIP_IMAGE_ID
35*91f16700Schasingluluactivate arm_io_storage
36*91f16700Schasinglulunote over arm_io_storage
37*91f16700Schasinglulu	get FIP_IMAGE_ID policy:
38*91f16700Schasinglulu	- memmap_dev_handle
39*91f16700Schasinglulu	- open_memmap()
40*91f16700Schasingluluend note
41*91f16700Schasingluluopt policy->check()
42*91f16700Schasinglulu	arm_io_storage -> arm_io_storage : open_memmap(spec)
43*91f16700Schasinglulu	activate arm_io_storage
44*91f16700Schasinglulu	arm_io_storage -> io_storage : io_dev_init(memmap_dev_handle, NULL)
45*91f16700Schasinglulu	ref over io_storage : dev_init() on memmap device
46*91f16700Schasinglulu
47*91f16700Schasinglulu	arm_io_storage -> io_storage : io_open(memmap_dev_handle, spec, &local_image_handle)
48*91f16700Schasinglulu	ref over io_storage : io_open() on memmap device
49*91f16700Schasinglulu
50*91f16700Schasinglulu	arm_io_storage -> io_storage : io_close(local_image_handle)
51*91f16700Schasinglulu	ref over io_storage : io_close() on memmap device
52*91f16700Schasinglulu
53*91f16700Schasinglulu	hnote over arm_io_storage
54*91f16700Schasinglulu		memmap_dev_handle ready
55*91f16700Schasinglulu	end note
56*91f16700Schasinglulu	deactivate arm_io_storage
57*91f16700Schasingluluend  opt
58*91f16700Schasingluludeactivate arm_io_storage
59*91f16700Schasingluluend alt
60*91f16700Schasinglulu
61*91f16700Schasingluluend group
62*91f16700Schasinglulu@enduml
63