Re: [PATCH v2 5/8] dt-bindings: interrupt-controller: amazon,al-fic: add mask selection

From: Radu Rendec

Date: Sun Oct 04 2026 - 17:06:17 EST


On Sun, 2026-09-27 at 08:06 +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.
>
>  .../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";
>      };

Reviewed-by: Radu Rendec <radu@xxxxxxxxxx>