Zephyr API Documentation 4.4.99
A Scalable Open Source RTOS
Loading...
Searching...
No Matches
riscv_aplic_direct.h File Reference

RISC-V APLIC direct delivery mode driver API. More...

#include <zephyr/device.h>
#include <zephyr/types.h>
#include <zephyr/arch/riscv/csr.h>

Go to the source code of this file.

Functions

int riscv_aplic_direct_mode_enable (const struct device *dev, bool enable)
 Enable or disable the APLIC delivery mode.
int riscv_aplic_is_enabled (uint32_t local_irq)
 Check if a riscv APLIC-specific interrupt line is enabled.
int riscv_aplic_set_priority (uint32_t local_irq, uint32_t prio)
 Configure the priority for a specified interrupt source for a domain with direct delivery mode enabled.
unsigned int riscv_aplic_get_saved_irq (void)
 Get active interrupt ID.
const struct deviceriscv_aplic_get_saved_dev (void)
 Get active interrupt controller device.
void aplic_irq_handler (const struct device *dev)
 IRQ handler for APLIC direct-mode interrupts.
int aplic_direct_init (const struct device *dev)
 Initialization for APLIC with direct delivery mode enabled.

Detailed Description

RISC-V APLIC direct delivery mode driver API.

This header provides the API for the RISC-V Advanced Platform-Level Interrupt Controller (APLIC) operating in direct delivery mode. In direct mode, interrupts are delivered directly to the hart's MEXT interrupt line rather than via MSI.

Function Documentation

◆ aplic_direct_init()

int aplic_direct_init ( const struct device * dev)

Initialization for APLIC with direct delivery mode enabled.

Parameters
devAPLIC device
Returns
0 on success, negative error code on failure

◆ aplic_irq_handler()

void aplic_irq_handler ( const struct device * dev)

IRQ handler for APLIC direct-mode interrupts.

Parameters
devAPLIC device

◆ riscv_aplic_direct_mode_enable()

int riscv_aplic_direct_mode_enable ( const struct device * dev,
bool enable )

Enable or disable the APLIC delivery mode.

Controls the delivery mode bit in the domain configuration register.

Parameters
devAPLIC device
enabletrue to enable direct delivery mode, false to disable
Returns
0 on success, negative error code on failure

◆ riscv_aplic_get_saved_dev()

const struct device * riscv_aplic_get_saved_dev ( void )

Get active interrupt controller device.

Note
Should be called with interrupt locked
Returns
Returns device pointer of the active interrupt device

◆ riscv_aplic_get_saved_irq()

unsigned int riscv_aplic_get_saved_irq ( void )

Get active interrupt ID.

Note
Should be called with interrupt locked
Returns
Returns the ID of an active interrupt

◆ riscv_aplic_is_enabled()

int riscv_aplic_is_enabled ( uint32_t local_irq)

Check if a riscv APLIC-specific interrupt line is enabled.

Parameters
local_irqLocal IRQ number to check
Returns
1 if enabled, 0 otherwise

◆ riscv_aplic_set_priority()

int riscv_aplic_set_priority ( uint32_t local_irq,
uint32_t prio )

Configure the priority for a specified interrupt source for a domain with direct delivery mode enabled.

Parameters
local_irqLocal IRQ whose target register will be configured
prioPriority value to set
Returns
0 on success, negative error code on failure