no-OS
Loading...
Searching...
No Matches
riscvrx_irq.c File Reference
#include "no_os_error.h"
#include "no_os_irq.h"
#include "no_os_alloc.h"
#include "riscvrx_irq.h"
Include dependency graph for riscvrx_irq.c:

Functions

int32_t latt_irq_ctrl_init (struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
 Initialize the IRQ interrupts.
 
int32_t latt_trigger_level_set (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level level)
 Unused.
 
int32_t latt_irq_set_priority (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
 Set a priority level for an interrupt.
 
int32_t latt_irq_global_enable (struct no_os_irq_ctrl_desc *desc)
 Enable global interrupts.
 
int32_t latt_irq_global_disable (struct no_os_irq_ctrl_desc *desc)
 Disable global interrupts.
 
int32_t latt_irq_enable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Enable specific interrupt.
 
int32_t latt_irq_disable (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
 Disable specific interrupt.
 
int32_t latt_irq_register_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
 Register a callback to handle the irq events.
 
int32_t latt_irq_unregister_callback (struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
 Unregisters a generic IRQ handling function.
 
int32_t latt_irq_ctrl_remove (struct no_os_irq_ctrl_desc *desc)
 Free the resources allocated by no_os_irq_ctrl_init().
 

Variables

struct interrupt_entry plic_int_table []
 
const struct no_os_irq_platform_ops latt_irq_ops
 Lattice platform specific IRQ platform ops structure.
 

Function Documentation

◆ latt_irq_ctrl_init()

int32_t latt_irq_ctrl_init ( struct no_os_irq_ctrl_desc ** desc,
const struct no_os_irq_init_param * param )

Initialize the IRQ interrupts.

Parameters
desc- The IRQ controller descriptor.
param- The structure that contains the IRQ parameters.
Returns
0 in case of success, -1 otherwise.

◆ latt_irq_ctrl_remove()

int32_t latt_irq_ctrl_remove ( struct no_os_irq_ctrl_desc * desc)

Free the resources allocated by no_os_irq_ctrl_init().

Parameters
desc- The IRQ control descriptor.
Returns
0 in case of success, -1 otherwise.

◆ latt_irq_disable()

int32_t latt_irq_disable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Disable specific interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, -1 otherwise.

◆ latt_irq_enable()

int32_t latt_irq_enable ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id )

Enable specific interrupt.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
Returns
0 in case of success, -1 otherwise.

◆ latt_irq_global_disable()

int32_t latt_irq_global_disable ( struct no_os_irq_ctrl_desc * desc)

Disable global interrupts.

◆ latt_irq_global_enable()

int32_t latt_irq_global_enable ( struct no_os_irq_ctrl_desc * desc)

Enable global interrupts.

◆ latt_irq_register_callback()

int32_t latt_irq_register_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * callback_desc )

Register a callback to handle the irq events.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
callback_desc- Callback descriptor
Returns
0 in case of success, -1 otherwise.

◆ latt_irq_set_priority()

int32_t latt_irq_set_priority ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
uint32_t priority_level )

Set a priority level for an interrupt.

Parameters
desc- Interrupt controller descriptor.
irq_id- The interrupt vector entry id of the peripheral.
priority_level- The interrupt priority level.
Returns
0 if successful, error code otherwise.

◆ latt_irq_unregister_callback()

int32_t latt_irq_unregister_callback ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
struct no_os_callback_desc * cb )

Unregisters a generic IRQ handling function.

Parameters
desc- The IRQ controller descriptor.
irq_id- Interrupt identifier.
cb- Callback descriptor.
Returns
0 in case of success, -1 otherwise.

◆ latt_trigger_level_set()

int32_t latt_trigger_level_set ( struct no_os_irq_ctrl_desc * desc,
uint32_t irq_id,
enum no_os_irq_trig_level level )

Unused.

Parameters
desc- Irq descriptor.
irq_id- The interrupt vector entry id of the peripheral.
level- The trigger condition.
Returns
-ENOSYS

Variable Documentation

◆ latt_irq_ops

const struct no_os_irq_platform_ops latt_irq_ops
Initial value:
= {
.set_priority = &latt_irq_set_priority,
.register_callback = &latt_irq_register_callback,
.unregister_callback = &latt_irq_unregister_callback,
.global_enable = &latt_irq_global_enable,
.global_disable = &latt_irq_global_disable,
.trigger_level_set = &latt_trigger_level_set,
.enable = &latt_irq_enable,
.disable = &latt_irq_disable,
}
int32_t latt_irq_ctrl_init(struct no_os_irq_ctrl_desc **desc, const struct no_os_irq_init_param *param)
Initialize the IRQ interrupts.
Definition riscvrx_irq.c:66
int32_t latt_trigger_level_set(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, enum no_os_irq_trig_level level)
Unused.
Definition riscvrx_irq.c:114
int32_t latt_irq_disable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Disable specific interrupt.
Definition riscvrx_irq.c:207
int32_t latt_irq_set_priority(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, uint32_t priority_level)
Set a priority level for an interrupt.
Definition riscvrx_irq.c:128
int32_t latt_irq_register_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *callback_desc)
Register a callback to handle the irq events.
Definition riscvrx_irq.c:240
int32_t latt_irq_global_enable(struct no_os_irq_ctrl_desc *desc)
Enable global interrupts.
Definition riscvrx_irq.c:144
int32_t latt_irq_enable(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id)
Enable specific interrupt.
Definition riscvrx_irq.c:175
int32_t latt_irq_unregister_callback(struct no_os_irq_ctrl_desc *desc, uint32_t irq_id, struct no_os_callback_desc *cb)
Unregisters a generic IRQ handling function.
Definition riscvrx_irq.c:261
int32_t latt_irq_ctrl_remove(struct no_os_irq_ctrl_desc *desc)
Free the resources allocated by no_os_irq_ctrl_init().
Definition riscvrx_irq.c:296
int32_t latt_irq_global_disable(struct no_os_irq_ctrl_desc *desc)
Disable global interrupts.
Definition riscvrx_irq.c:158

Lattice platform specific IRQ platform ops structure.

Lattice specific IRQ platform ops structure.

◆ plic_int_table

struct interrupt_entry plic_int_table[]
extern