sequenceDiagram participant caller as caller participant irq as irq.c participant irqdomain as irqdomain.c participant irqdesc as irqdesc.c participant bitmap as bitmap.c activate caller caller ->> irq: irq_of_parse_and_map activate irq Note right of irq: irq_of_parse_and_map irq ->> irq: of_irq_parse_one irq ->> irqdomain: irq_create_of_mapping activate irqdomain Note right of irqdomain :irq_create_of_mapping irqdomain ->> irqdomain: of_phandle_args_to_fwspec irqdomain ->> irqdomain: irq_create_fwspec_mapping activate irqdomain Note right of irqdomain :irq_create_fwspec_mapping irqdomain ->> irqdomain: irq_domain_translate irqdomain ->> irqdomain: irq_find_mapping opt irq_find_mapping > 0 irqdomain -->> irq: return irq -->> caller: return end alt irq_domain_is_hierarchy irqdomain ->> irqdomain: irq_domain_alloc_irqs irqdomain ->> irqdesc: irq_domain_alloc_descs activate irqdesc Note right of irqdesc :irq_domain_alloc_descs else irqdomain ->> irqdomain: irq_create_mapping irqdomain ->> irqdesc: irq_domain_alloc_descs end irqdesc ->> irqdesc : __irq_alloc_descs activate irqdesc Note right of irqdesc: __irq_alloc_descs irqdesc ->> bitmap: bitmap_find_next_zero_area activate bitmap bitmap ->> bitmap: bitmap_find_next_zero_area_off bitmap -->> irqdesc: return deactivate bitmap irqdesc -->> irqdomain: return deactivate irqdomain deactivate irqdesc deactivate irqdesc irqdomain -->> irq: return deactivate irqdomain irq -->> caller: return deactivate irq deactivate caller