Back to home page

OSCL-LXR

 
 

    


0001 Some socs have a large number of interrupts requests to service
0002 the needs of its many peripherals and subsystems. All of the
0003 interrupt lines from the subsystems are not needed at the same
0004 time, so they have to be muxed to the irq-controller appropriately.
0005 In such places a interrupt controllers are preceded by an CROSSBAR
0006 that provides flexibility in muxing the device requests to the controller
0007 inputs.
0008 
0009 Required properties:
0010 - compatible : Should be "ti,irq-crossbar"
0011 - reg: Base address and the size of the crossbar registers.
0012 - interrupt-controller: indicates that this block is an interrupt controller.
0013 - ti,max-irqs: Total number of irqs available at the parent interrupt controller.
0014 - ti,max-crossbar-sources: Maximum number of crossbar sources that can be routed.
0015 - ti,reg-size: Size of a individual register in bytes. Every individual
0016             register is assumed to be of same size. Valid sizes are 1, 2, 4.
0017 - ti,irqs-reserved: List of the reserved irq lines that are not muxed using
0018                  crossbar. These interrupt lines are reserved in the soc,
0019                  so crossbar bar driver should not consider them as free
0020                  lines.
0021 
0022 Optional properties:
0023 - ti,irqs-skip: This is similar to "ti,irqs-reserved", but these are for
0024   SOC-specific hard-wiring of those irqs which unexpectedly bypasses the
0025   crossbar. These irqs have a crossbar register, but still cannot be used.
0026 
0027 - ti,irqs-safe-map: integer which maps to a safe configuration to use
0028   when the interrupt controller irq is unused (when not provided, default is 0)
0029 
0030 Examples:
0031                 crossbar_mpu: crossbar@4a002a48 {
0032                         compatible = "ti,irq-crossbar";
0033                         reg = <0x4a002a48 0x130>;
0034                         ti,max-irqs = <160>;
0035                         ti,max-crossbar-sources = <400>;
0036                         ti,reg-size = <2>;
0037                         ti,irqs-reserved = <0 1 2 3 5 6 131 132>;
0038                         ti,irqs-skip = <10 133 139 140>;
0039                 };
0040 
0041 Consumer:
0042 ========
0043 See Documentation/devicetree/bindings/interrupt-controller/interrupts.txt and
0044 Documentation/devicetree/bindings/interrupt-controller/arm,gic.yaml for
0045 further details.
0046 
0047 An interrupt consumer on an SoC using crossbar will use:
0048         interrupts = <GIC_SPI request_number interrupt_level>
0049 
0050 Example:
0051         device_x@4a023000 {
0052                 /* Crossbar 8 used */
0053                 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
0054                 ...
0055         };