162306a36Sopenharmony_ci# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 262306a36Sopenharmony_ci%YAML 1.2 362306a36Sopenharmony_ci--- 462306a36Sopenharmony_ci$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm7038-l1-intc.yaml# 562306a36Sopenharmony_ci$schema: http://devicetree.org/meta-schemas/core.yaml# 662306a36Sopenharmony_ci 762306a36Sopenharmony_cititle: Broadcom BCM7038-style Level 1 interrupt controller 862306a36Sopenharmony_ci 962306a36Sopenharmony_cidescription: > 1062306a36Sopenharmony_ci This block is a first level interrupt controller that is typically connected 1162306a36Sopenharmony_ci directly to one of the HW INT lines on each CPU. Every BCM7xxx set-top chip 1262306a36Sopenharmony_ci since BCM7038 has contained this hardware. 1362306a36Sopenharmony_ci 1462306a36Sopenharmony_ci Key elements of the hardware design include: 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci - 64, 96, 128, or 160 incoming level IRQ lines 1762306a36Sopenharmony_ci 1862306a36Sopenharmony_ci - Most onchip peripherals are wired directly to an L1 input 1962306a36Sopenharmony_ci 2062306a36Sopenharmony_ci - A separate instance of the register set for each CPU, allowing individual 2162306a36Sopenharmony_ci peripheral IRQs to be routed to any CPU 2262306a36Sopenharmony_ci 2362306a36Sopenharmony_ci - Atomic mask/unmask operations 2462306a36Sopenharmony_ci 2562306a36Sopenharmony_ci - No polarity/level/edge settings 2662306a36Sopenharmony_ci 2762306a36Sopenharmony_ci - No FIFO or priority encoder logic; software is expected to read all 2862306a36Sopenharmony_ci 2-5 status words to determine which IRQs are pending 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci If multiple reg ranges and interrupt-parent entries are present on an SMP 3162306a36Sopenharmony_ci system, the driver will allow IRQ SMP affinity to be set up through the 3262306a36Sopenharmony_ci /proc/irq/ interface. In the simplest possible configuration, only one 3362306a36Sopenharmony_ci reg range and one interrupt-parent is needed. 3462306a36Sopenharmony_ci 3562306a36Sopenharmony_cimaintainers: 3662306a36Sopenharmony_ci - Florian Fainelli <f.fainelli@gmail.com> 3762306a36Sopenharmony_ci 3862306a36Sopenharmony_ciallOf: 3962306a36Sopenharmony_ci - $ref: /schemas/interrupt-controller.yaml# 4062306a36Sopenharmony_ci 4162306a36Sopenharmony_ciproperties: 4262306a36Sopenharmony_ci compatible: 4362306a36Sopenharmony_ci const: brcm,bcm7038-l1-intc 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci reg: 4662306a36Sopenharmony_ci description: > 4762306a36Sopenharmony_ci Specifies the base physical address and size of the registers 4862306a36Sopenharmony_ci the number of supported IRQs is inferred from the size argument 4962306a36Sopenharmony_ci 5062306a36Sopenharmony_ci interrupt-controller: true 5162306a36Sopenharmony_ci 5262306a36Sopenharmony_ci "#interrupt-cells": 5362306a36Sopenharmony_ci const: 1 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci interrupts: 5662306a36Sopenharmony_ci description: > 5762306a36Sopenharmony_ci Specifies the interrupt line(s) in the interrupt-parent controller node; 5862306a36Sopenharmony_ci valid values depend on the type of parent interrupt controller 5962306a36Sopenharmony_ci 6062306a36Sopenharmony_ci brcm,irq-can-wake: 6162306a36Sopenharmony_ci type: boolean 6262306a36Sopenharmony_ci description: > 6362306a36Sopenharmony_ci If present, this means the L1 controller can be used as a 6462306a36Sopenharmony_ci wakeup source for system suspend/resume. 6562306a36Sopenharmony_ci 6662306a36Sopenharmony_ci brcm,int-fwd-mask: 6762306a36Sopenharmony_ci $ref: /schemas/types.yaml#/definitions/uint32-array 6862306a36Sopenharmony_ci description: 6962306a36Sopenharmony_ci If present, a bit mask to indicate which interrupts have already been 7062306a36Sopenharmony_ci configured by the firmware and should be left unmanaged. This should 7162306a36Sopenharmony_ci have one 32-bit word per status/set/clear/mask group. 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_cirequired: 7462306a36Sopenharmony_ci - compatible 7562306a36Sopenharmony_ci - reg 7662306a36Sopenharmony_ci - interrupt-controller 7762306a36Sopenharmony_ci - "#interrupt-cells" 7862306a36Sopenharmony_ci - interrupts 7962306a36Sopenharmony_ci 8062306a36Sopenharmony_ciadditionalProperties: false 8162306a36Sopenharmony_ci 8262306a36Sopenharmony_ciexamples: 8362306a36Sopenharmony_ci - | 8462306a36Sopenharmony_ci periph_intc: interrupt-controller@1041a400 { 8562306a36Sopenharmony_ci compatible = "brcm,bcm7038-l1-intc"; 8662306a36Sopenharmony_ci reg = <0x1041a400 0x30>, <0x1041a600 0x30>; 8762306a36Sopenharmony_ci interrupt-controller; 8862306a36Sopenharmony_ci #interrupt-cells = <1>; 8962306a36Sopenharmony_ci interrupt-parent = <&cpu_intc>; 9062306a36Sopenharmony_ci interrupts = <2>, <3>; 9162306a36Sopenharmony_ci }; 92