blob: 53594c2baa60d0b0c007c5b41cf1b3348bef9061 [file] [log] [blame]
@startuml
package arm_io_storage {
class plat_io_policy {
dev_handle : uintptr_t*
image_spec : uintptr_t
{abstract} check() : fctptr
}
class FIP_IMAGE_ID {
memmap_dev_handle
fip_block_spec
open_memmap()
}
class BL2_IMAGE_ID{
fip_dev_handle
bl2_uuid_spec
open_fip()
}
class xxx_IMAGE_ID{
fip_dev_handle
xxx_uuid_spec
open_fip()
}
class arm_io_storage {
fip_dev_con : io_dev_connector_t*
fip_dev_handle : uintptr_t
memmap_dev_con : io_dev_connector_t*
memmap_dev_handle : uintptr_t
fip_block_spec : io_block_spec_t
policies : plat_io_policy[1..*]
-open_fip()
-open_memmap()
+arm_io_setup()
+plat_get_image_source()
}
FIP_IMAGE_ID -up-|> plat_io_policy
BL2_IMAGE_ID -up-|> plat_io_policy
xxx_IMAGE_ID -up-|> plat_io_policy
arm_io_storage *-"1..*" plat_io_policy
}
package IO {
class io_storage {
io_dev_open()
io_dev_init()
io_dev_close()
.. synchronous operations ..
io_open()
io_seek()
io_size()
io_read()
io_write()
io_close()
io_register_device()
}
class io_fip {
register_io_dev_fip()
.. io_dev_funcs_t interface ..
fip_dev_funcs : io_dev_funcs_t
}
class io_memmap {
register_io_dev_memmap()
.. io_dev_funcs_t interface ..
memmap_dev_funcs : io_dev_funcs_t
}
interface io_driver {
io_entity_t
io_dev_info_t
.. io_dev_connector_t interface ..
dev_open()
.. io_dev_funcs_t interface ..
type()
open()
seek()
size()
read()
write()
close()
dev_init()
dev_close()
io_register_device()
}
}
arm_io_storage .. io_driver
arm_io_storage .. io_fip
arm_io_storage .. io_memmap
arm_io_storage .. io_storage
@enduml