18c2ecf20Sopenharmony_ciSome socs have a large number of interrupts requests to service 28c2ecf20Sopenharmony_cithe needs of its many peripherals and subsystems. All of the 38c2ecf20Sopenharmony_ciinterrupt lines from the subsystems are not needed at the same 48c2ecf20Sopenharmony_citime, so they have to be muxed to the irq-controller appropriately. 58c2ecf20Sopenharmony_ciIn such places a interrupt controllers are preceded by an CROSSBAR 68c2ecf20Sopenharmony_cithat provides flexibility in muxing the device requests to the controller 78c2ecf20Sopenharmony_ciinputs. 88c2ecf20Sopenharmony_ci 98c2ecf20Sopenharmony_ciRequired properties: 108c2ecf20Sopenharmony_ci- compatible : Should be "ti,irq-crossbar" 118c2ecf20Sopenharmony_ci- reg: Base address and the size of the crossbar registers. 128c2ecf20Sopenharmony_ci- interrupt-controller: indicates that this block is an interrupt controller. 138c2ecf20Sopenharmony_ci- ti,max-irqs: Total number of irqs available at the parent interrupt controller. 148c2ecf20Sopenharmony_ci- ti,max-crossbar-sources: Maximum number of crossbar sources that can be routed. 158c2ecf20Sopenharmony_ci- ti,reg-size: Size of a individual register in bytes. Every individual 168c2ecf20Sopenharmony_ci register is assumed to be of same size. Valid sizes are 1, 2, 4. 178c2ecf20Sopenharmony_ci- ti,irqs-reserved: List of the reserved irq lines that are not muxed using 188c2ecf20Sopenharmony_ci crossbar. These interrupt lines are reserved in the soc, 198c2ecf20Sopenharmony_ci so crossbar bar driver should not consider them as free 208c2ecf20Sopenharmony_ci lines. 218c2ecf20Sopenharmony_ci 228c2ecf20Sopenharmony_ciOptional properties: 238c2ecf20Sopenharmony_ci- ti,irqs-skip: This is similar to "ti,irqs-reserved", but these are for 248c2ecf20Sopenharmony_ci SOC-specific hard-wiring of those irqs which unexpectedly bypasses the 258c2ecf20Sopenharmony_ci crossbar. These irqs have a crossbar register, but still cannot be used. 268c2ecf20Sopenharmony_ci 278c2ecf20Sopenharmony_ci- ti,irqs-safe-map: integer which maps to a safe configuration to use 288c2ecf20Sopenharmony_ci when the interrupt controller irq is unused (when not provided, default is 0) 298c2ecf20Sopenharmony_ci 308c2ecf20Sopenharmony_ciExamples: 318c2ecf20Sopenharmony_ci crossbar_mpu: crossbar@4a002a48 { 328c2ecf20Sopenharmony_ci compatible = "ti,irq-crossbar"; 338c2ecf20Sopenharmony_ci reg = <0x4a002a48 0x130>; 348c2ecf20Sopenharmony_ci ti,max-irqs = <160>; 358c2ecf20Sopenharmony_ci ti,max-crossbar-sources = <400>; 368c2ecf20Sopenharmony_ci ti,reg-size = <2>; 378c2ecf20Sopenharmony_ci ti,irqs-reserved = <0 1 2 3 5 6 131 132>; 388c2ecf20Sopenharmony_ci ti,irqs-skip = <10 133 139 140>; 398c2ecf20Sopenharmony_ci }; 408c2ecf20Sopenharmony_ci 418c2ecf20Sopenharmony_ciConsumer: 428c2ecf20Sopenharmony_ci======== 438c2ecf20Sopenharmony_ciSee Documentation/devicetree/bindings/interrupt-controller/interrupts.txt and 448c2ecf20Sopenharmony_ciDocumentation/devicetree/bindings/interrupt-controller/arm,gic.yaml for 458c2ecf20Sopenharmony_cifurther details. 468c2ecf20Sopenharmony_ci 478c2ecf20Sopenharmony_ciAn interrupt consumer on an SoC using crossbar will use: 488c2ecf20Sopenharmony_ci interrupts = <GIC_SPI request_number interrupt_level> 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ciExample: 518c2ecf20Sopenharmony_ci device_x@4a023000 { 528c2ecf20Sopenharmony_ci /* Crossbar 8 used */ 538c2ecf20Sopenharmony_ci interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>; 548c2ecf20Sopenharmony_ci ... 558c2ecf20Sopenharmony_ci }; 56