[PW_SID:1072727] AST2700-A2 interrupt controller hierarchy and route support#1670
[PW_SID:1072727] AST2700-A2 interrupt controller hierarchy and route support#1670linux-riscv-bot wants to merge 4 commits into
Conversation
…ad of A0
Introduce a new binding describing the AST2700 interrupt controller
architecture implemented in the A2 production silicon.
The AST2700 SoC has undergone multiple silicon revisions (A0, A1, A2)
prior to mass production. The interrupt architecture was substantially
reworked after the A0 revision for A1, and the A1 design is retained
unchanged in the A2 production silicon.
The existing AST2700 interrupt controller binding
("aspeed,ast2700-intc-ic")was written against the pre-production A0
design. That binding does not accurately describe the interrupt
hierarchy and routing model present in A1/A2, where interrupts can be
routed to multiple processor-local interrupt controllers (Primary
Service Processor (PSP) GIC, Secondary Service Processor (SSP)/Tertiary
Service Processor (TSP) NVICs, and BootMCU APLIC) depending on the
execution context.
Remove the binding for the pre-production A0 design in favour of the
binding for the A2 production design. There is no significant user
impact from the removal as there are no existing devicetrees in any
of Linux, u-boot or Zephyr that make use of the A0 binding.
Hardware connectivity between interrupt controllers is expressed using
the aspeed,interrupt-ranges property.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
The AST2700 interrupt fabric is shared by multiple integrated processors (PSP/SSP/TSP/BootMCU), each with its own interrupt controller and its own devicetree view of the system. As a result, interrupt routing cannot be treated as fixed: the valid route for a peripheral interrupt depends on which processor is consuming it. The INTC0 driver models this by creating a hierarchical irqdomain under the upstream interrupt controller selected by the interrupt-parent property in the devicetree. Information derived from this relationship is incorporated into the route resolution logic for the controller. The INTC1 driver implements the banked INTM-fed controller and forwards interrupts toward INTC0, without embedding assumptions about the final destination processor. Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
Add a KUnit suite for aspeed_intc0_resolve_route(). Cover invalid arguments, invalid domain/range data, connected and disconnected mappings, and malformed upstream range cases. Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com> Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
The existing AST2700 interrupt controller driver
("aspeed,ast2700-intc-ic") was written against the A0 pre-production
design.
From A1 onwards (retained in the A2 production silicon), the interrupt
fabric was re-architected: interrupt routing is programmable and
interrupt outputs can be directed to multiple upstream controllers
(PSP GIC, Secondary Service Processor (SSP) NVIC, Tertiary Service
Processor (TSP) NVIC, and Boot MCU interrupt controller). This design
requires route resolution and a controller hierarchy model which the
A0 driver cannot represent.
Remove driver support for A0 in favour of the driver for the A2
production design.
Signed-off-by: Ryan Chen <ryan_chen@aspeedtech.com>
Signed-off-by: Linux RISC-V bot <linux.riscv.bot@gmail.com>
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 1: "[v3,1/4] dt-bindings: interrupt-controller: Describe AST2700-A2 hardware instead of A0" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 2: "[v3,2/4] irqchip/ast2700-intc: Add AST2700-A2 support" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 3: "[v3,3/4] irqchip/ast2700-intc: Add KUnit tests for route resolution" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
|
Patch 4: "[v3,4/4] irqchip/aspeed-intc: Remove AST2700-A0 support" |
PR for series 1072727 applied to workflow__riscv__for-next
Name: AST2700-A2 interrupt controller hierarchy and route support
URL: https://patchwork.kernel.org/project/linux-riscv/list/?series=1072727
Version: 3