1331ae5fcSSimon ArlottBroadcom BCM6345-style Level 1 interrupt controller 2331ae5fcSSimon Arlott 3331ae5fcSSimon ArlottThis block is a first level interrupt controller that is typically connected 4331ae5fcSSimon Arlottdirectly to one of the HW INT lines on each CPU. 5331ae5fcSSimon Arlott 6331ae5fcSSimon ArlottKey elements of the hardware design include: 7331ae5fcSSimon Arlott 8331ae5fcSSimon Arlott- 32, 64 or 128 incoming level IRQ lines 9331ae5fcSSimon Arlott 10331ae5fcSSimon Arlott- Most onchip peripherals are wired directly to an L1 input 11331ae5fcSSimon Arlott 12331ae5fcSSimon Arlott- A separate instance of the register set for each CPU, allowing individual 13331ae5fcSSimon Arlott peripheral IRQs to be routed to any CPU 14331ae5fcSSimon Arlott 15331ae5fcSSimon Arlott- Contains one or more enable/status word pairs per CPU 16331ae5fcSSimon Arlott 17331ae5fcSSimon Arlott- No atomic set/clear operations 18331ae5fcSSimon Arlott 19331ae5fcSSimon Arlott- No polarity/level/edge settings 20331ae5fcSSimon Arlott 21331ae5fcSSimon Arlott- No FIFO or priority encoder logic; software is expected to read all 22331ae5fcSSimon Arlott 2-4 status words to determine which IRQs are pending 23331ae5fcSSimon Arlott 24331ae5fcSSimon ArlottRequired properties: 25331ae5fcSSimon Arlott 26331ae5fcSSimon Arlott- compatible: should be "brcm,bcm<soc>-l1-intc", "brcm,bcm6345-l1-intc" 27331ae5fcSSimon Arlott- reg: specifies the base physical address and size of the registers; 28331ae5fcSSimon Arlott the number of supported IRQs is inferred from the size argument 29331ae5fcSSimon Arlott- interrupt-controller: identifies the node as an interrupt controller 30331ae5fcSSimon Arlott- #interrupt-cells: specifies the number of cells needed to encode an interrupt 31331ae5fcSSimon Arlott source, should be 1. 32331ae5fcSSimon Arlott- interrupts: specifies the interrupt line(s) in the interrupt-parent controller 33331ae5fcSSimon Arlott node; valid values depend on the type of parent interrupt controller 34331ae5fcSSimon Arlott 35331ae5fcSSimon ArlottIf multiple reg ranges and interrupt-parent entries are present on an SMP 36331ae5fcSSimon Arlottsystem, the driver will allow IRQ SMP affinity to be set up through the 37331ae5fcSSimon Arlott/proc/irq/ interface. In the simplest possible configuration, only one 38331ae5fcSSimon Arlottreg range and one interrupt-parent is needed. 39331ae5fcSSimon Arlott 40331ae5fcSSimon ArlottThe driver operates in native CPU endian by default, there is no support for 41331ae5fcSSimon Arlottspecifying an alternative endianness. 42331ae5fcSSimon Arlott 43331ae5fcSSimon ArlottExample: 44331ae5fcSSimon Arlott 45331ae5fcSSimon Arlottperiph_intc: interrupt-controller@10000000 { 46331ae5fcSSimon Arlott compatible = "brcm,bcm63168-l1-intc", "brcm,bcm6345-l1-intc"; 47331ae5fcSSimon Arlott reg = <0x10000020 0x20>, 48331ae5fcSSimon Arlott <0x10000040 0x20>; 49331ae5fcSSimon Arlott 50331ae5fcSSimon Arlott interrupt-controller; 51331ae5fcSSimon Arlott #interrupt-cells = <1>; 52331ae5fcSSimon Arlott 53331ae5fcSSimon Arlott interrupt-parent = <&cpu_intc>; 54331ae5fcSSimon Arlott interrupts = <2>, <3>; 55331ae5fcSSimon Arlott}; 56