xref: /arm-trusted-firmware/docs/resources/diagrams/plantuml/io_arm_class_diagram.puml (revision 91f16700b400a8c0651d24a598fc48ee2997a0d7)
1*91f16700Schasinglulu@startuml
2*91f16700Schasinglulu
3*91f16700Schasinglulupackage arm_io_storage {
4*91f16700Schasinglulu
5*91f16700Schasinglulu	class plat_io_policy {
6*91f16700Schasinglulu		dev_handle : uintptr_t*
7*91f16700Schasinglulu		image_spec : uintptr_t
8*91f16700Schasinglulu		{abstract} check() : fctptr
9*91f16700Schasinglulu	}
10*91f16700Schasinglulu
11*91f16700Schasinglulu	class FIP_IMAGE_ID {
12*91f16700Schasinglulu		memmap_dev_handle
13*91f16700Schasinglulu		fip_block_spec
14*91f16700Schasinglulu		open_memmap()
15*91f16700Schasinglulu	}
16*91f16700Schasinglulu
17*91f16700Schasinglulu	class BL2_IMAGE_ID{
18*91f16700Schasinglulu		fip_dev_handle
19*91f16700Schasinglulu		bl2_uuid_spec
20*91f16700Schasinglulu		open_fip()
21*91f16700Schasinglulu	}
22*91f16700Schasinglulu
23*91f16700Schasinglulu	class xxx_IMAGE_ID{
24*91f16700Schasinglulu		fip_dev_handle
25*91f16700Schasinglulu		xxx_uuid_spec
26*91f16700Schasinglulu		open_fip()
27*91f16700Schasinglulu	}
28*91f16700Schasinglulu
29*91f16700Schasinglulu	class arm_io_storage {
30*91f16700Schasinglulu		fip_dev_con : io_dev_connector_t*
31*91f16700Schasinglulu		fip_dev_handle : uintptr_t
32*91f16700Schasinglulu		memmap_dev_con : io_dev_connector_t*
33*91f16700Schasinglulu		memmap_dev_handle : uintptr_t
34*91f16700Schasinglulu
35*91f16700Schasinglulu		fip_block_spec : io_block_spec_t
36*91f16700Schasinglulu
37*91f16700Schasinglulu		policies : plat_io_policy[1..*]
38*91f16700Schasinglulu
39*91f16700Schasinglulu		-open_fip()
40*91f16700Schasinglulu		-open_memmap()
41*91f16700Schasinglulu
42*91f16700Schasinglulu		+arm_io_setup()
43*91f16700Schasinglulu		+plat_get_image_source()
44*91f16700Schasinglulu	}
45*91f16700Schasinglulu
46*91f16700Schasinglulu	FIP_IMAGE_ID -up-|> plat_io_policy
47*91f16700Schasinglulu	BL2_IMAGE_ID -up-|> plat_io_policy
48*91f16700Schasinglulu	xxx_IMAGE_ID -up-|> plat_io_policy
49*91f16700Schasinglulu
50*91f16700Schasinglulu	arm_io_storage *-"1..*" plat_io_policy
51*91f16700Schasinglulu}
52*91f16700Schasinglulu
53*91f16700Schasinglulupackage IO {
54*91f16700Schasinglulu	class  io_storage {
55*91f16700Schasinglulu		io_dev_open()
56*91f16700Schasinglulu		io_dev_init()
57*91f16700Schasinglulu		io_dev_close()
58*91f16700Schasinglulu
59*91f16700Schasinglulu		.. synchronous operations ..
60*91f16700Schasinglulu		io_open()
61*91f16700Schasinglulu		io_seek()
62*91f16700Schasinglulu		io_size()
63*91f16700Schasinglulu		io_read()
64*91f16700Schasinglulu		io_write()
65*91f16700Schasinglulu		io_close()
66*91f16700Schasinglulu
67*91f16700Schasinglulu		io_register_device()
68*91f16700Schasinglulu	}
69*91f16700Schasinglulu
70*91f16700Schasinglulu	class io_fip {
71*91f16700Schasinglulu		register_io_dev_fip()
72*91f16700Schasinglulu		.. io_dev_funcs_t interface ..
73*91f16700Schasinglulu		fip_dev_funcs : io_dev_funcs_t
74*91f16700Schasinglulu	}
75*91f16700Schasinglulu
76*91f16700Schasinglulu	class io_memmap {
77*91f16700Schasinglulu		register_io_dev_memmap()
78*91f16700Schasinglulu		.. io_dev_funcs_t interface ..
79*91f16700Schasinglulu		memmap_dev_funcs : io_dev_funcs_t
80*91f16700Schasinglulu	}
81*91f16700Schasinglulu
82*91f16700Schasinglulu	interface io_driver {
83*91f16700Schasinglulu		io_entity_t
84*91f16700Schasinglulu		io_dev_info_t
85*91f16700Schasinglulu
86*91f16700Schasinglulu		.. io_dev_connector_t interface ..
87*91f16700Schasinglulu		dev_open()
88*91f16700Schasinglulu
89*91f16700Schasinglulu		.. io_dev_funcs_t interface ..
90*91f16700Schasinglulu			type()
91*91f16700Schasinglulu			open()
92*91f16700Schasinglulu			seek()
93*91f16700Schasinglulu			size()
94*91f16700Schasinglulu			read()
95*91f16700Schasinglulu			write()
96*91f16700Schasinglulu			close()
97*91f16700Schasinglulu			dev_init()
98*91f16700Schasinglulu			dev_close()
99*91f16700Schasinglulu
100*91f16700Schasinglulu		io_register_device()
101*91f16700Schasinglulu	}
102*91f16700Schasinglulu}
103*91f16700Schasingluluarm_io_storage .. io_driver
104*91f16700Schasingluluarm_io_storage .. io_fip
105*91f16700Schasingluluarm_io_storage .. io_memmap
106*91f16700Schasingluluarm_io_storage .. io_storage
107*91f16700Schasinglulu
108*91f16700Schasinglulu
109*91f16700Schasinglulu@enduml
110