1*ae5de77eSEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 2*ae5de77eSEmmanuel Vadot%YAML 1.2 3*ae5de77eSEmmanuel Vadot--- 4*ae5de77eSEmmanuel Vadot$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm6345-l1-intc.yaml# 5*ae5de77eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml# 6*ae5de77eSEmmanuel Vadot 7*ae5de77eSEmmanuel Vadottitle: Broadcom BCM6345-style Level 1 interrupt controller 8*ae5de77eSEmmanuel Vadot 9*ae5de77eSEmmanuel Vadotmaintainers: 10*ae5de77eSEmmanuel Vadot - Simon Arlott <simon@octiron.net> 11*ae5de77eSEmmanuel Vadot 12*ae5de77eSEmmanuel Vadotdescription: > 13*ae5de77eSEmmanuel Vadot This block is a first level interrupt controller that is typically connected 14*ae5de77eSEmmanuel Vadot directly to one of the HW INT lines on each CPU. 15*ae5de77eSEmmanuel Vadot 16*ae5de77eSEmmanuel Vadot Key elements of the hardware design include: 17*ae5de77eSEmmanuel Vadot 18*ae5de77eSEmmanuel Vadot - 32, 64 or 128 incoming level IRQ lines 19*ae5de77eSEmmanuel Vadot 20*ae5de77eSEmmanuel Vadot - Most onchip peripherals are wired directly to an L1 input 21*ae5de77eSEmmanuel Vadot 22*ae5de77eSEmmanuel Vadot - A separate instance of the register set for each CPU, allowing individual 23*ae5de77eSEmmanuel Vadot peripheral IRQs to be routed to any CPU 24*ae5de77eSEmmanuel Vadot 25*ae5de77eSEmmanuel Vadot - Contains one or more enable/status word pairs per CPU 26*ae5de77eSEmmanuel Vadot 27*ae5de77eSEmmanuel Vadot - No atomic set/clear operations 28*ae5de77eSEmmanuel Vadot 29*ae5de77eSEmmanuel Vadot - No polarity/level/edge settings 30*ae5de77eSEmmanuel Vadot 31*ae5de77eSEmmanuel Vadot - No FIFO or priority encoder logic; software is expected to read all 32*ae5de77eSEmmanuel Vadot 2-4 status words to determine which IRQs are pending 33*ae5de77eSEmmanuel Vadot 34*ae5de77eSEmmanuel Vadot If multiple reg ranges and interrupt-parent entries are present on an SMP 35*ae5de77eSEmmanuel Vadot system, the driver will allow IRQ SMP affinity to be set up through the 36*ae5de77eSEmmanuel Vadot /proc/irq/ interface. In the simplest possible configuration, only one 37*ae5de77eSEmmanuel Vadot reg range and one interrupt-parent is needed. 38*ae5de77eSEmmanuel Vadot 39*ae5de77eSEmmanuel Vadot The driver operates in native CPU endian by default, there is no support for 40*ae5de77eSEmmanuel Vadot specifying an alternative endianness. 41*ae5de77eSEmmanuel Vadot 42*ae5de77eSEmmanuel Vadotproperties: 43*ae5de77eSEmmanuel Vadot compatible: 44*ae5de77eSEmmanuel Vadot const: brcm,bcm6345-l1-intc 45*ae5de77eSEmmanuel Vadot 46*ae5de77eSEmmanuel Vadot reg: 47*ae5de77eSEmmanuel Vadot description: One entry per CPU core 48*ae5de77eSEmmanuel Vadot minItems: 1 49*ae5de77eSEmmanuel Vadot maxItems: 2 50*ae5de77eSEmmanuel Vadot 51*ae5de77eSEmmanuel Vadot interrupt-controller: true 52*ae5de77eSEmmanuel Vadot 53*ae5de77eSEmmanuel Vadot "#interrupt-cells": 54*ae5de77eSEmmanuel Vadot const: 1 55*ae5de77eSEmmanuel Vadot 56*ae5de77eSEmmanuel Vadot interrupts: 57*ae5de77eSEmmanuel Vadot description: One entry per CPU core 58*ae5de77eSEmmanuel Vadot minItems: 1 59*ae5de77eSEmmanuel Vadot maxItems: 2 60*ae5de77eSEmmanuel Vadot 61*ae5de77eSEmmanuel Vadotrequired: 62*ae5de77eSEmmanuel Vadot - compatible 63*ae5de77eSEmmanuel Vadot - reg 64*ae5de77eSEmmanuel Vadot - interrupt-controller 65*ae5de77eSEmmanuel Vadot - '#interrupt-cells' 66*ae5de77eSEmmanuel Vadot - interrupts 67*ae5de77eSEmmanuel Vadot 68*ae5de77eSEmmanuel VadotadditionalProperties: false 69*ae5de77eSEmmanuel Vadot 70*ae5de77eSEmmanuel Vadotexamples: 71*ae5de77eSEmmanuel Vadot - | 72*ae5de77eSEmmanuel Vadot interrupt-controller@10000000 { 73*ae5de77eSEmmanuel Vadot compatible = "brcm,bcm6345-l1-intc"; 74*ae5de77eSEmmanuel Vadot reg = <0x10000020 0x20>, 75*ae5de77eSEmmanuel Vadot <0x10000040 0x20>; 76*ae5de77eSEmmanuel Vadot 77*ae5de77eSEmmanuel Vadot interrupt-controller; 78*ae5de77eSEmmanuel Vadot #interrupt-cells = <1>; 79*ae5de77eSEmmanuel Vadot 80*ae5de77eSEmmanuel Vadot interrupts = <2>, <3>; 81*ae5de77eSEmmanuel Vadot }; 82