lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <20250509222342.GA85203-robh@kernel.org>
Date: Fri, 9 May 2025 17:23:42 -0500
From: Rob Herring <robh@...nel.org>
To: Stefan Wahren <wahrenst@....net>
Cc: Thomas Gleixner <tglx@...utronix.de>,
	Krzysztof Kozlowski <krzk+dt@...nel.org>,
	Conor Dooley <conor+dt@...nel.org>,
	Florian Fainelli <florian.fainelli@...adcom.com>,
	Ray Jui <rjui@...adcom.com>, Scott Branden <sbranden@...adcom.com>,
	Broadcom internal kernel review list <bcm-kernel-feedback-list@...adcom.com>,
	linux-kernel@...r.kernel.org, devicetree@...r.kernel.org,
	linux-rpi-kernel@...ts.infradead.org,
	linux-arm-kernel@...ts.infradead.org, kernel-list@...pberrypi.com
Subject: Re: [PATCH] dt-bindings: interrupt-controller: Convert
 brcm,bcm2835-armctrl-ic to DT schema

On Mon, May 05, 2025 at 06:03:29PM +0200, Stefan Wahren wrote:
> Hi Rob,
> 
> Am 05.05.25 um 16:46 schrieb Rob Herring (Arm):
> > Convert the Broadcom BCM2835 ARMCTRL interrupt controller binding to
> > schema format. It's a straight-forward conversion of the typical
> > interrupt controller.
> i send a similiar patch on May 2nd:
> https://lore.kernel.org/linux-devicetree/20250502105213.39864-1-wahrenst@gmx.net/
> 
> I would prefer your version, but ...
> > 
> > Signed-off-by: Rob Herring (Arm) <robh@...nel.org>
> > ---
> >   .../brcm,bcm2835-armctrl-ic.txt               | 131 --------------
> >   .../brcm,bcm2835-armctrl-ic.yaml              | 161 ++++++++++++++++++
> >   2 files changed, 161 insertions(+), 131 deletions(-)
> >   delete mode 100644 Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
> >   create mode 100644 Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml
> > 
> > diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
> > deleted file mode 100644
> > index bdd173056f72..000000000000
> > --- a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.txt
> > +++ /dev/null
> > @@ -1,131 +0,0 @@
> > -BCM2835 Top-Level ("ARMCTRL") Interrupt Controller
> > -
> > -The BCM2835 contains a custom top-level interrupt controller, which supports
> > -72 interrupt sources using a 2-level register scheme. The interrupt
> > -controller, or the HW block containing it, is referred to occasionally
> > -as "armctrl" in the SoC documentation, hence naming of this binding.
> > -
> > -The BCM2836 contains the same interrupt controller with the same
> > -interrupts, but the per-CPU interrupt controller is the root, and an
> > -interrupt there indicates that the ARMCTRL has an interrupt to handle.
> > -
> > -Required properties:
> > -
> > -- compatible : should be "brcm,bcm2835-armctrl-ic" or
> > -                 "brcm,bcm2836-armctrl-ic"
> > -- reg : Specifies base physical address and size of the registers.
> > -- interrupt-controller : Identifies the node as an interrupt controller
> > -- #interrupt-cells : Specifies the number of cells needed to encode an
> > -  interrupt source. The value shall be 2.
> > -
> > -  The 1st cell is the interrupt bank; 0 for interrupts in the "IRQ basic
> > -  pending" register, or 1/2 respectively for interrupts in the "IRQ pending
> > -  1/2" register.
> > -
> > -  The 2nd cell contains the interrupt number within the bank. Valid values
> > -  are 0..7 for bank 0, and 0..31 for bank 1.
> > -
> > -Additional required properties for brcm,bcm2836-armctrl-ic:
> > -- interrupts : Specifies the interrupt on the parent for this interrupt
> > -  controller to handle.
> > -
> > -The interrupt sources are as follows:
> > -
> > -Bank 0:
> > -0: ARM_TIMER
> > -1: ARM_MAILBOX
> > -2: ARM_DOORBELL_0
> > -3: ARM_DOORBELL_1
> > -4: VPU0_HALTED
> > -5: VPU1_HALTED
> > -6: ILLEGAL_TYPE0
> > -7: ILLEGAL_TYPE1
> > -
> > -Bank 1:
> > -0: TIMER0
> > -1: TIMER1
> > -2: TIMER2
> > -3: TIMER3
> > -4: CODEC0
> > -5: CODEC1
> > -6: CODEC2
> > -7: VC_JPEG
> > -8: ISP
> > -9: VC_USB
> > -10: VC_3D
> > -11: TRANSPOSER
> > -12: MULTICORESYNC0
> > -13: MULTICORESYNC1
> > -14: MULTICORESYNC2
> > -15: MULTICORESYNC3
> > -16: DMA0
> > -17: DMA1
> > -18: VC_DMA2
> > -19: VC_DMA3
> > -20: DMA4
> > -21: DMA5
> > -22: DMA6
> > -23: DMA7
> > -24: DMA8
> > -25: DMA9
> > -26: DMA10
> > -27: DMA11-14 - shared interrupt for DMA 11 to 14
> > -28: DMAALL - triggers on all dma interrupts (including channel 15)
> > -29: AUX
> > -30: ARM
> > -31: VPUDMA
> > -
> > -Bank 2:
> > -0: HOSTPORT
> > -1: VIDEOSCALER
> > -2: CCP2TX
> > -3: SDC
> > -4: DSI0
> > -5: AVE
> > -6: CAM0
> > -7: CAM1
> > -8: HDMI0
> > -9: HDMI1
> > -10: PIXELVALVE1
> > -11: I2CSPISLV
> > -12: DSI1
> > -13: PWA0
> > -14: PWA1
> > -15: CPR
> > -16: SMI
> > -17: GPIO0
> > -18: GPIO1
> > -19: GPIO2
> > -20: GPIO3
> > -21: VC_I2C
> > -22: VC_SPI
> > -23: VC_I2SPCM
> > -24: VC_SDIO
> > -25: VC_UART
> > -26: SLIMBUS
> > -27: VEC
> > -28: CPG
> > -29: RNG
> > -30: VC_ARASANSDIO
> > -31: AVSPMON
> > -
> > -Example:
> > -
> > -/* BCM2835, first level */
> > -intc: interrupt-controller {
> > -	compatible = "brcm,bcm2835-armctrl-ic";
> > -	reg = <0x7e00b200 0x200>;
> > -	interrupt-controller;
> > -	#interrupt-cells = <2>;
> > -};
> > -
> > -/* BCM2836, second level */
> > -intc: interrupt-controller {
> > -	compatible = "brcm,bcm2836-armctrl-ic";
> > -	reg = <0x7e00b200 0x200>;
> > -	interrupt-controller;
> > -	#interrupt-cells = <2>;
> > -
> > -	interrupt-parent = <&local_intc>;
> > -	interrupts = <8>;
> > -};
> > diff --git a/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml
> > new file mode 100644
> > index 000000000000..4edc4c3ff6bd
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml
> > @@ -0,0 +1,161 @@
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/interrupt-controller/brcm,bcm2835-armctrl-ic.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: BCM2835 ARMCTRL Interrupt Controller
> > +
> > +maintainers:
> > +  - Florian Fainelli <florian.fainelli@...adcom.com>
> I would suggest to add
> 
> - Raspberry Pi Kernel Maintenance <kernel-list@...pberrypi.com>

Ok, added.

> > +
> > +description: >
> > +  The BCM2835 contains a custom top-level interrupt controller, which supports
> > +  72 interrupt sources using a 2-level register scheme. The interrupt
> > +  controller, or the HW block containing it, is referred to occasionally as
> > +  "armctrl" in the SoC documentation, hence naming of this binding.
> > +
> > +  The BCM2836 contains the same interrupt controller with the same interrupts,
> > +  but the per-CPU interrupt controller is the root, and an interrupt there
> > +  indicates that the ARMCTRL has an interrupt to handle.
> > +
> > +  The interrupt sources are as follows:
> > +
> > +  Bank 0:
> > +    0: ARM_TIMER
> > +    1: ARM_MAILBOX
> > +    2: ARM_DOORBELL_0
> > +    3: ARM_DOORBELL_1
> > +    4: VPU0_HALTED
> > +    5: VPU1_HALTED
> > +    6: ILLEGAL_TYPE0
> > +    7: ILLEGAL_TYPE1
> > +
> > +  Bank 1:
> > +    0: TIMER0
> > +    1: TIMER1
> > +    2: TIMER2
> > +    3: TIMER3
> > +    4: CODEC0
> > +    5: CODEC1
> > +    6: CODEC2
> > +    7: VC_JPEG
> > +    8: ISP
> > +    9: VC_USB
> > +    10: VC_3D
> > +    11: TRANSPOSER
> > +    12: MULTICORESYNC0
> > +    13: MULTICORESYNC1
> > +    14: MULTICORESYNC2
> > +    15: MULTICORESYNC3
> > +    16: DMA0
> > +    17: DMA1
> > +    18: VC_DMA2
> > +    19: VC_DMA3
> > +    20: DMA4
> > +    21: DMA5
> > +    22: DMA6
> > +    23: DMA7
> > +    24: DMA8
> > +    25: DMA9
> > +    26: DMA10
> > +    27: DMA11-14 - shared interrupt for DMA 11 to 14
> > +    28: DMAALL - triggers on all dma interrupts (including channel 15)
> > +    29: AUX
> > +    30: ARM
> > +    31: VPUDMA
> > +
> > +  Bank 2:
> > +    0: HOSTPORT
> > +    1: VIDEOSCALER
> > +    2: CCP2TX
> > +    3: SDC
> > +    4: DSI0
> > +    5: AVE
> > +    6: CAM0
> > +    7: CAM1
> > +    8: HDMI0
> > +    9: HDMI1
> > +    10: PIXELVALVE1
> > +    11: I2CSPISLV
> > +    12: DSI1
> > +    13: PWA0
> > +    14: PWA1
> > +    15: CPR
> > +    16: SMI
> > +    17: GPIO0
> > +    18: GPIO1
> > +    19: GPIO2
> > +    20: GPIO3
> > +    21: VC_I2C
> > +    22: VC_SPI
> > +    23: VC_I2SPCM
> > +    24: VC_SDIO
> > +    25: VC_UART
> > +    26: SLIMBUS
> > +    27: VEC
> > +    28: CPG
> > +    29: RNG
> > +    30: VC_ARASANSDIO
> > +    31: AVSPMON
> > +
> Don't we need something like
> 
> allOf:
>   - $ref: /schemas/interrupt-controller.yaml#
> 
> ?

No. It's not needed because you have to define the constraints here 
anyways. Really, only schemas with child nodes or that have properties 
without further constraints need the reference. It doesn't hurt to have 
it either. It just gets applied twice.

This could change though. Early on when there were not many device 
schemas, it was useful to apply interrupt-controller.yaml on all nodes 
named 'interrupt-controller', but that need has diminished.

Rob

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ