Re: [PATCH v2 5/8] dt-bindings: interrupt-controller: amazon,al-fic: add mask selection
From: Conor Dooley
Date: Mon Sep 28 2026 - 13:05:04 EST
On Sun, Sep 27, 2026 at 08:06:34AM +0000, Eliav Farber wrote:
> The block this driver calls a FIC is the generic Annapurna Labs interrupt
> controller. It is built from groups of up to 32 triggers each; the number
> of groups differs from one controller to another, and each group has its
> own 0x40 register block.
>
> A node in this binding describes one group, not a whole controller. reg
> points at that group's 0x40 block, and the 32 hwirqs of the domain are
> that group's triggers. A controller with several groups appears as several
> nodes, and controllers cascade when a tree needs more triggers than one
> controller has.
>
> A group has one cause register and three mask registers, which decide
> which output a set cause bit drives:
>
> 0x10 info mask gates the info output
> 0x2c error mask gates the error output
> 0x34 fatal mask gates the fatal output
>
> The three outputs are aggregated into three separate interrupt trees
> (info, error, fatal); mapping one event to more than one severity is
> forbidden by the interrupt methodology, so a group belongs to exactly one
> tree. Which output a group drives is fixed when the SoC is wired and is
> not discoverable from any register, so it must be described in the
> devicetree.
>
> The error and fatal outputs, and their mask registers, exist only on
> controller revisions that implement them; earlier revisions provide the
> info output only. A controller reports its revision in the group control
> register (bits 29-28), so the revision itself does not need to appear in
> the devicetree and no per-revision compatible string is needed.
>
> Describe which output a group drives with a new optional property,
> amazon,al-fic-mask (info, error or fatal; default info).
>
> Signed-off-by: Eliav Farber <farbere@xxxxxxxxxx>
> ---
> v2: redesigned in response to Conor Dooley's review of v1.
> - Drop the two proposed per-output compatible strings
> (amazon,al-fic-error / amazon,al-fic-fatal). A node describes one group,
> and a controller reports its revision in the group control register
> (bits 29-28), so no per-revision or per-output compatible is needed.
> - Instead add an optional amazon,al-fic-mask property (info, error, fatal;
> default info) selecting which output a group drives. Existing
> amazon,al-fic nodes keep behaving as before.
> - Rewrite the commit message to describe the hardware and the group
> granularity, and add an example fragment to the YAML, as requested.
Acked-by: Conor Dooley <conor.dooley@xxxxxxxxxxxxx>
pw-bot: not-applicable
Thanks,
Conor.
>
> .../interrupt-controller/amazon,al-fic.yaml | 16 +++++++++++++++-
> 1 file changed, 15 insertions(+), 1 deletion(-)
>
> diff --git a/Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.yaml b/Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.yaml
> index 26bc05dee0bc..1ebf9a427f2f 100644
> --- a/Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.yaml
> +++ b/Documentation/devicetree/bindings/interrupt-controller/amazon,al-fic.yaml
> @@ -24,6 +24,19 @@ properties:
> interrupts:
> maxItems: 1
>
> + amazon,al-fic-mask:
> + $ref: /schemas/types.yaml#/definitions/string
> + description:
> + Selects which of the controller's severity outputs this group drives,
> + and thus which mask register the driver programs. A group has one cause
> + register and three severity outputs - info, error and fatal - each
> + gated by its own mask register. Each output is aggregated into a
> + separate interrupt tree, and a group belongs to exactly one of them.
> + The error and fatal outputs exist only on controller revisions that
> + implement them; earlier revisions provide the info output only.
> + enum: [info, error, fatal]
> + default: info
> +
> required:
> - compatible
> - reg
> @@ -39,8 +52,9 @@ examples:
>
> interrupt-controller@fd8a8500 {
> compatible = "amazon,al-fic";
> - reg = <0xfd8a8500 0x1000>;
> + reg = <0xfd8a8500 0x40>;
> interrupt-controller;
> #interrupt-cells = <2>;
> interrupts = <GIC_SPI 0x0 IRQ_TYPE_LEVEL_HIGH>;
> + amazon,al-fic-mask = "error";
> };
> --
> 2.47.3
>
Attachment:
signature.asc
Description: PGP signature