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