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