|
Zephyr Project API 4.4.99
A Scalable Open Source RTOS
|
RISC-V AIA (Advanced Interrupt Architecture) unified coordinator API. More...
#include <zephyr/device.h>#include <zephyr/types.h>#include <zephyr/drivers/interrupt_controller/riscv_aplic.h>#include <zephyr/drivers/interrupt_controller/riscv_imsic.h>Go to the source code of this file.
Functions | |
| void | riscv_aia_irq_enable (uint32_t irq) |
| Enable an AIA interrupt source. | |
| void | riscv_aia_irq_disable (uint32_t irq) |
| Disable an AIA interrupt source. | |
| int | riscv_aia_irq_is_enabled (uint32_t irq) |
| Check if an AIA interrupt source is enabled. | |
| void | riscv_aia_set_priority (uint32_t irq, uint32_t prio) |
| Set priority for an AIA interrupt source. | |
| static const struct device * | riscv_aia_get_dev (void) |
| Get the underlying APLIC device. | |
| void | riscv_aia_config_source (uint32_t irq, uint32_t mode) |
| Configure an APLIC source mode. | |
| void | riscv_aia_route_to_hart (uint32_t irq, uint32_t hart, uint32_t eiid) |
| Route an APLIC source to a specific hart. | |
| void | riscv_aia_inject_msi (uint32_t hart, uint32_t eiid) |
| Inject a software MSI via the APLIC GENMSI register. | |
| void | riscv_aia_enable_source (uint32_t irq) |
| Enable an APLIC source using the convenience wrapper. | |
| void | riscv_aia_dispatch_eiid (uint32_t eiid) |
| Dispatch an IMSIC EIID through the AIA second-level ISR table. | |
RISC-V AIA (Advanced Interrupt Architecture) unified coordinator API.
Provides a single API wrapping APLIC and IMSIC for Zephyr's interrupt management. The coordinator is exposed to Zephyr as a PLIC-like second-level interrupt controller; APLIC and IMSIC remain internal implementation details.
Configure an APLIC source mode.
| irq | Multi-level encoded interrupt ID. |
| mode | Source mode (trigger type) per RISC-V AIA spec section 4.5.2. |
| void riscv_aia_dispatch_eiid | ( | uint32_t | eiid | ) |
Dispatch an IMSIC EIID through the AIA second-level ISR table.
| eiid | IMSIC external interrupt identity. |
| void riscv_aia_enable_source | ( | uint32_t | irq | ) |
Enable an APLIC source using the convenience wrapper.
| irq | Multi-level encoded interrupt ID. |
|
inlinestatic |
Get the underlying APLIC device.
Inject a software MSI via the APLIC GENMSI register.
| hart | Target hart index. |
| eiid | EIID to inject. |
| void riscv_aia_irq_disable | ( | uint32_t | irq | ) |
Disable an AIA interrupt source.
Disables both the IMSIC EIID and the APLIC source.
| irq | Multi-level encoded interrupt ID. |
| void riscv_aia_irq_enable | ( | uint32_t | irq | ) |
Enable an AIA interrupt source.
Enables the EIID in IMSIC and configures/enables the APLIC source.
| irq | Multi-level encoded interrupt ID. |
| int riscv_aia_irq_is_enabled | ( | uint32_t | irq | ) |
Check if an AIA interrupt source is enabled.
| irq | Multi-level encoded interrupt ID. |
Route an APLIC source to a specific hart.
| irq | Multi-level encoded interrupt ID. |
| hart | Target hart index. |
| eiid | EIID to deliver to the target hart's IMSIC. |
Set priority for an AIA interrupt source.
APLIC-MSI mode has no per-source priority registers. Priority is handled via IMSIC EITHRESHOLD or implicit EIID ordering.
| irq | Multi-level encoded interrupt ID. |
| prio | Priority value (currently ignored in MSI mode). |