1*91f16700Schasinglulu@startuml 2*91f16700Schasinglulu 3*91f16700Schasingluluparticipant arm_io_storage 4*91f16700Schasingluluparticipant io_storage 5*91f16700Schasinglulu 6*91f16700Schasinglulu -> arm_io_storage : plat_get_image_source(image_id, &dev_handle, &image_spec) 7*91f16700Schasinglulu 8*91f16700Schasinglulugroup init and check device (image_id) 9*91f16700Schasinglulu 10*91f16700Schasinglulualt image_id = BL2_IMAGE_ID 11*91f16700Schasinglulunote over arm_io_storage 12*91f16700Schasinglulu get BL2_IMAGE_ID policy: 13*91f16700Schasinglulu - fip_dev_handle 14*91f16700Schasinglulu - open_fip() 15*91f16700Schasingluluend note 16*91f16700Schasingluluopt policy->check() 17*91f16700Schasinglulu arm_io_storage -> arm_io_storage : open_fip(spec) 18*91f16700Schasinglulu activate arm_io_storage 19*91f16700Schasinglulu arm_io_storage -> io_storage : io_dev_init(fip_dev_handle, FIP_IMAGE_ID) 20*91f16700Schasinglulu ref over io_storage : dev_init() on fip device 21*91f16700Schasinglulu 22*91f16700Schasinglulu arm_io_storage -> io_storage : io_open(fip_dev_handle, spec, &local_image_handle) 23*91f16700Schasinglulu ref over io_storage : io_open() on fip device 24*91f16700Schasinglulu 25*91f16700Schasinglulu arm_io_storage -> io_storage : io_close(local_image_handle) 26*91f16700Schasinglulu ref over io_storage : io_close() on fip device 27*91f16700Schasinglulu 28*91f16700Schasinglulu hnote over arm_io_storage 29*91f16700Schasinglulu fip_dev_handle ready 30*91f16700Schasinglulu end note 31*91f16700Schasingluluend opt 32*91f16700Schasingluludeactivate arm_io_storage 33*91f16700Schasinglulu 34*91f16700Schasingluluelse image_id = FIP_IMAGE_ID 35*91f16700Schasingluluactivate arm_io_storage 36*91f16700Schasinglulunote over arm_io_storage 37*91f16700Schasinglulu get FIP_IMAGE_ID policy: 38*91f16700Schasinglulu - memmap_dev_handle 39*91f16700Schasinglulu - open_memmap() 40*91f16700Schasingluluend note 41*91f16700Schasingluluopt policy->check() 42*91f16700Schasinglulu arm_io_storage -> arm_io_storage : open_memmap(spec) 43*91f16700Schasinglulu activate arm_io_storage 44*91f16700Schasinglulu arm_io_storage -> io_storage : io_dev_init(memmap_dev_handle, NULL) 45*91f16700Schasinglulu ref over io_storage : dev_init() on memmap device 46*91f16700Schasinglulu 47*91f16700Schasinglulu arm_io_storage -> io_storage : io_open(memmap_dev_handle, spec, &local_image_handle) 48*91f16700Schasinglulu ref over io_storage : io_open() on memmap device 49*91f16700Schasinglulu 50*91f16700Schasinglulu arm_io_storage -> io_storage : io_close(local_image_handle) 51*91f16700Schasinglulu ref over io_storage : io_close() on memmap device 52*91f16700Schasinglulu 53*91f16700Schasinglulu hnote over arm_io_storage 54*91f16700Schasinglulu memmap_dev_handle ready 55*91f16700Schasinglulu end note 56*91f16700Schasinglulu deactivate arm_io_storage 57*91f16700Schasingluluend opt 58*91f16700Schasingluludeactivate arm_io_storage 59*91f16700Schasingluluend alt 60*91f16700Schasinglulu 61*91f16700Schasingluluend group 62*91f16700Schasinglulu@enduml 63