xref: /arm-trusted-firmware/docs/resources/diagrams/plantuml/io_dev_registration.puml (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu@startuml
2*91f16700Schasinglulu
3*91f16700Schasingluluparticipant arm_io_storage
4*91f16700Schasingluluparticipant io_storage
5*91f16700Schasingluluparticipant io_fip
6*91f16700Schasingluluparticipant io_memmap
7*91f16700Schasinglulu
8*91f16700Schasinglulu -> arm_io_storage : arm_io_setup()
9*91f16700Schasinglulu
10*91f16700Schasinglulugroup io dev registration
11*91f16700Schasinglulu
12*91f16700Schasingluluarm_io_storage -> io_fip : register_io_dev_fip(&fip_dev_con)
13*91f16700Schasingluluio_fip -> io_storage : io_register_device(&dev_info_pool[])
14*91f16700Schasinglulunote over io_storage
15*91f16700Schasinglulu	devices[dev_count] = (fip_)dev_info_pool
16*91f16700Schasinglulu	dev_count++
17*91f16700Schasingluluend note
18*91f16700Schasinglulu
19*91f16700Schasingluluarm_io_storage -> io_memmap : register_io_dev_memmap(&memmap_dev_con)
20*91f16700Schasingluluio_memmap -> io_storage : io_register_device(&memmap_dev_info)
21*91f16700Schasinglulunote over io_storage
22*91f16700Schasinglulu	devices[dev_count] = memmap_dev_info
23*91f16700Schasinglulu	dev_count++
24*91f16700Schasingluluend note
25*91f16700Schasinglulu
26*91f16700Schasingluluarm_io_storage -> io_storage : io_dev_open(fip_dev_con, NULL, fip_dev_handle)
27*91f16700Schasinglulu io_storage -> io_storage : dev_open(dev_con, dev_spec, handle)
28*91f16700Schasingluluactivate io_storage
29*91f16700Schasingluluopt dev_open() on fip device
30*91f16700Schasinglulu	io_storage -> io_fip : fip_dev_open(dev_spec, dev_info)
31*91f16700Schasinglulu	note over io_fip
32*91f16700Schasinglulu		dev_info = one of the
33*91f16700Schasinglulu		"fip_dev_info" from
34*91f16700Schasinglulu		dev_info_pool[]
35*91f16700Schasinglulu	end note
36*91f16700Schasingluluend opt
37*91f16700Schasingluludeactivate io_storage
38*91f16700Schasinglulu
39*91f16700Schasinglulu
40*91f16700Schasingluluarm_io_storage -> io_storage : io_dev_open(memmap_dev_con, NULL, memmap_dev_handle)
41*91f16700Schasingluluio_storage -> io_storage : dev_open(dev_con, dev_spec, handle)
42*91f16700Schasingluluactivate io_storage
43*91f16700Schasingluluopt dev_open() on memmap device
44*91f16700Schasinglulu	io_storage -> io_memmap : memmap_dev_open(dev_spec, dev_info)
45*91f16700Schasinglulu	note over io_memmap
46*91f16700Schasinglulu		dev_info = memmap_dev_info
47*91f16700Schasinglulu	end note
48*91f16700Schasingluluend opt
49*91f16700Schasingluludeactivate io_storage
50*91f16700Schasinglulu
51*91f16700Schasingluluend group
52*91f16700Schasinglulu@enduml
53