162306a36Sopenharmony_ciBroadcom BCM6345-style Level 1 interrupt controller 262306a36Sopenharmony_ci 362306a36Sopenharmony_ciThis block is a first level interrupt controller that is typically connected 462306a36Sopenharmony_cidirectly to one of the HW INT lines on each CPU. 562306a36Sopenharmony_ci 662306a36Sopenharmony_ciKey elements of the hardware design include: 762306a36Sopenharmony_ci 862306a36Sopenharmony_ci- 32, 64 or 128 incoming level IRQ lines 962306a36Sopenharmony_ci 1062306a36Sopenharmony_ci- Most onchip peripherals are wired directly to an L1 input 1162306a36Sopenharmony_ci 1262306a36Sopenharmony_ci- A separate instance of the register set for each CPU, allowing individual 1362306a36Sopenharmony_ci peripheral IRQs to be routed to any CPU 1462306a36Sopenharmony_ci 1562306a36Sopenharmony_ci- Contains one or more enable/status word pairs per CPU 1662306a36Sopenharmony_ci 1762306a36Sopenharmony_ci- No atomic set/clear operations 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci- No polarity/level/edge settings 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_ci- No FIFO or priority encoder logic; software is expected to read all 2262306a36Sopenharmony_ci 2-4 status words to determine which IRQs are pending 2362306a36Sopenharmony_ci 2462306a36Sopenharmony_ciRequired properties: 2562306a36Sopenharmony_ci 2662306a36Sopenharmony_ci- compatible: should be "brcm,bcm<soc>-l1-intc", "brcm,bcm6345-l1-intc" 2762306a36Sopenharmony_ci- reg: specifies the base physical address and size of the registers; 2862306a36Sopenharmony_ci the number of supported IRQs is inferred from the size argument 2962306a36Sopenharmony_ci- interrupt-controller: identifies the node as an interrupt controller 3062306a36Sopenharmony_ci- #interrupt-cells: specifies the number of cells needed to encode an interrupt 3162306a36Sopenharmony_ci source, should be 1. 3262306a36Sopenharmony_ci- interrupts: specifies the interrupt line(s) in the interrupt-parent controller 3362306a36Sopenharmony_ci node; valid values depend on the type of parent interrupt controller 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_ciIf multiple reg ranges and interrupt-parent entries are present on an SMP 3662306a36Sopenharmony_cisystem, the driver will allow IRQ SMP affinity to be set up through the 3762306a36Sopenharmony_ci/proc/irq/ interface. In the simplest possible configuration, only one 3862306a36Sopenharmony_cireg range and one interrupt-parent is needed. 3962306a36Sopenharmony_ci 4062306a36Sopenharmony_ciThe driver operates in native CPU endian by default, there is no support for 4162306a36Sopenharmony_cispecifying an alternative endianness. 4262306a36Sopenharmony_ci 4362306a36Sopenharmony_ciExample: 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ciperiph_intc: interrupt-controller@10000000 { 4662306a36Sopenharmony_ci compatible = "brcm,bcm63168-l1-intc", "brcm,bcm6345-l1-intc"; 4762306a36Sopenharmony_ci reg = <0x10000020 0x20>, 4862306a36Sopenharmony_ci <0x10000040 0x20>; 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci interrupt-controller; 5162306a36Sopenharmony_ci #interrupt-cells = <1>; 5262306a36Sopenharmony_ci 5362306a36Sopenharmony_ci interrupt-parent = <&cpu_intc>; 5462306a36Sopenharmony_ci interrupts = <2>, <3>; 5562306a36Sopenharmony_ci}; 56