18c2ecf20Sopenharmony_ciBroadcom BCM6345-style Level 1 interrupt controller 28c2ecf20Sopenharmony_ci 38c2ecf20Sopenharmony_ciThis block is a first level interrupt controller that is typically connected 48c2ecf20Sopenharmony_cidirectly to one of the HW INT lines on each CPU. 58c2ecf20Sopenharmony_ci 68c2ecf20Sopenharmony_ciKey elements of the hardware design include: 78c2ecf20Sopenharmony_ci 88c2ecf20Sopenharmony_ci- 32, 64 or 128 incoming level IRQ lines 98c2ecf20Sopenharmony_ci 108c2ecf20Sopenharmony_ci- Most onchip peripherals are wired directly to an L1 input 118c2ecf20Sopenharmony_ci 128c2ecf20Sopenharmony_ci- A separate instance of the register set for each CPU, allowing individual 138c2ecf20Sopenharmony_ci peripheral IRQs to be routed to any CPU 148c2ecf20Sopenharmony_ci 158c2ecf20Sopenharmony_ci- Contains one or more enable/status word pairs per CPU 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci- No atomic set/clear operations 188c2ecf20Sopenharmony_ci 198c2ecf20Sopenharmony_ci- No polarity/level/edge settings 208c2ecf20Sopenharmony_ci 218c2ecf20Sopenharmony_ci- No FIFO or priority encoder logic; software is expected to read all 228c2ecf20Sopenharmony_ci 2-4 status words to determine which IRQs are pending 238c2ecf20Sopenharmony_ci 248c2ecf20Sopenharmony_ciRequired properties: 258c2ecf20Sopenharmony_ci 268c2ecf20Sopenharmony_ci- compatible: should be "brcm,bcm<soc>-l1-intc", "brcm,bcm6345-l1-intc" 278c2ecf20Sopenharmony_ci- reg: specifies the base physical address and size of the registers; 288c2ecf20Sopenharmony_ci the number of supported IRQs is inferred from the size argument 298c2ecf20Sopenharmony_ci- interrupt-controller: identifies the node as an interrupt controller 308c2ecf20Sopenharmony_ci- #interrupt-cells: specifies the number of cells needed to encode an interrupt 318c2ecf20Sopenharmony_ci source, should be 1. 328c2ecf20Sopenharmony_ci- interrupts: specifies the interrupt line(s) in the interrupt-parent controller 338c2ecf20Sopenharmony_ci node; valid values depend on the type of parent interrupt controller 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ciIf multiple reg ranges and interrupt-parent entries are present on an SMP 368c2ecf20Sopenharmony_cisystem, the driver will allow IRQ SMP affinity to be set up through the 378c2ecf20Sopenharmony_ci/proc/irq/ interface. In the simplest possible configuration, only one 388c2ecf20Sopenharmony_cireg range and one interrupt-parent is needed. 398c2ecf20Sopenharmony_ci 408c2ecf20Sopenharmony_ciThe driver operates in native CPU endian by default, there is no support for 418c2ecf20Sopenharmony_cispecifying an alternative endianness. 428c2ecf20Sopenharmony_ci 438c2ecf20Sopenharmony_ciExample: 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ciperiph_intc: interrupt-controller@10000000 { 468c2ecf20Sopenharmony_ci compatible = "brcm,bcm63168-l1-intc", "brcm,bcm6345-l1-intc"; 478c2ecf20Sopenharmony_ci reg = <0x10000020 0x20>, 488c2ecf20Sopenharmony_ci <0x10000040 0x20>; 498c2ecf20Sopenharmony_ci 508c2ecf20Sopenharmony_ci interrupt-controller; 518c2ecf20Sopenharmony_ci #interrupt-cells = <1>; 528c2ecf20Sopenharmony_ci 538c2ecf20Sopenharmony_ci interrupt-parent = <&cpu_intc>; 548c2ecf20Sopenharmony_ci interrupts = <2>, <3>; 558c2ecf20Sopenharmony_ci}; 56