SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
Functions | Variables
sys-clic.c File Reference
#include <io.h>
#include <stdarg.h>
#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
#include <types.h>
#include <log.h>
#include <mmu.h>
#include <reg-ncat.h>
#include <sys-clic.h>
#include <sys-intc.h>
Include dependency graph for sys-clic.c:

Functions

static int sunxi_plat_irq_init (void)
 
static void sunxi_clic_set_irq_ctrl_bit (uint32_t reg_addr, uint8_t mask, int is_set)
 
static void sunxi_clic_set_enable (uint32_t reg_addr, int enabled)
 
static void sunxi_clic_set_pending (uint32_t reg_addr, int pending)
 
static void sunxi_clic_set_vec_mode (uint32_t reg_addr, int vec_mode)
 
static void sunxi_clic_set_trigger_type (uint32_t reg_addr, irq_trigger_type_t type)
 
static int sunxi_clic_init (const struct irq_controller *ic)
 
static int sunxi_clic_irq_enable (const struct irq_controller *ic, uint32_t irq_id)
 
static int sunxi_clic_irq_disable (const struct irq_controller *ic, uint32_t irq_id)
 
static int sunxi_clic_irq_is_enabled (const struct irq_controller *ic, uint32_t irq_id)
 
static int sunxi_clic_irq_is_pending (const struct irq_controller *ic, uint32_t irq_id)
 
static int sunxi_clic_irq_set_pending (const struct irq_controller *ic, uint32_t irq_id, int pending)
 
static int sunxi_clic_irq_set_trigger_type (const struct irq_controller *ic, uint32_t irq_id, irq_trigger_type_t type)
 
static void default_isr (void *data)
 
static void sunxi_clic_spi_handler (int irq_no)
 
void irq_free_handler (int irq)
 Frees the resources associated with the specified IRQ handler.
 
int irq_enable (int irq_no)
 Enables the specified IRQ.
 
int irq_disable (int irq_no)
 Disables the specified IRQ.
 
void irq_install_handler (int irq, interrupt_handler_t handle_irq, void *data)
 Installs a handler for the specified IRQ.
 
void do_irq (uint64_t cause)
 Handles the IRQ.
 
int arch_interrupt_init (void)
 Initializes the interrupt mechanism.
 
int arch_interrupt_exit (void)
 Exits the interrupt mechanism.
 

Variables

static irq_handler_t sunxi_int_handlers [CLIC_IRQ_NUM]
 
static irq_controller_t sunxi_clic_controller
 

Function Documentation

◆ arch_interrupt_exit()

int arch_interrupt_exit ( void  )

Exits the interrupt mechanism.

Returns
0 on success, or an error code

◆ arch_interrupt_init()

int arch_interrupt_init ( void  )

Initializes the interrupt mechanism.

Returns
0 on success, or an error code

◆ default_isr()

static void default_isr ( void *  data)
static

◆ do_irq()

void do_irq ( uint64_t  cause)

Handles the IRQ.

◆ irq_disable()

int irq_disable ( int  irq_no)

Disables the specified IRQ.

Parameters
irq_noIRQ number to be disabled
Returns
0 on success, or an error code

◆ irq_enable()

int irq_enable ( int  irq_no)

Enables the specified IRQ.

Parameters
irq_noIRQ number to be enabled
Returns
0 on success, or an error code

◆ irq_free_handler()

void irq_free_handler ( int  irq)

Frees the resources associated with the specified IRQ handler.

Parameters
irqIRQ number

◆ irq_install_handler()

void irq_install_handler ( int  irq,
interrupt_handler_t  handle_irq,
void *  data 
)

Installs a handler for the specified IRQ.

Parameters
irqIRQ number
handle_irqFunction pointer to the interrupt handler function
dataPointer to data associated with the interrupt handler

◆ sunxi_clic_init()

static int sunxi_clic_init ( const struct irq_controller ic)
static

◆ sunxi_clic_irq_disable()

static int sunxi_clic_irq_disable ( const struct irq_controller ic,
uint32_t  irq_id 
)
static

◆ sunxi_clic_irq_enable()

static int sunxi_clic_irq_enable ( const struct irq_controller ic,
uint32_t  irq_id 
)
static

◆ sunxi_clic_irq_is_enabled()

static int sunxi_clic_irq_is_enabled ( const struct irq_controller ic,
uint32_t  irq_id 
)
static

◆ sunxi_clic_irq_is_pending()

static int sunxi_clic_irq_is_pending ( const struct irq_controller ic,
uint32_t  irq_id 
)
static

◆ sunxi_clic_irq_set_pending()

static int sunxi_clic_irq_set_pending ( const struct irq_controller ic,
uint32_t  irq_id,
int  pending 
)
static

◆ sunxi_clic_irq_set_trigger_type()

static int sunxi_clic_irq_set_trigger_type ( const struct irq_controller ic,
uint32_t  irq_id,
irq_trigger_type_t  type 
)
static

◆ sunxi_clic_set_enable()

static void sunxi_clic_set_enable ( uint32_t  reg_addr,
int  enabled 
)
inlinestatic

◆ sunxi_clic_set_irq_ctrl_bit()

static void sunxi_clic_set_irq_ctrl_bit ( uint32_t  reg_addr,
uint8_t  mask,
int  is_set 
)
inlinestatic

◆ sunxi_clic_set_pending()

static void sunxi_clic_set_pending ( uint32_t  reg_addr,
int  pending 
)
inlinestatic

◆ sunxi_clic_set_trigger_type()

static void sunxi_clic_set_trigger_type ( uint32_t  reg_addr,
irq_trigger_type_t  type 
)
inlinestatic

◆ sunxi_clic_set_vec_mode()

static void sunxi_clic_set_vec_mode ( uint32_t  reg_addr,
int  vec_mode 
)
inlinestatic

◆ sunxi_clic_spi_handler()

static void sunxi_clic_spi_handler ( int  irq_no)
static

◆ sunxi_plat_irq_init()

static int sunxi_plat_irq_init ( void  )
static

Variable Documentation

◆ sunxi_clic_controller

irq_controller_t sunxi_clic_controller
static

◆ sunxi_int_handlers

irq_handler_t sunxi_int_handlers[CLIC_IRQ_NUM]
static