69typedef enum : uintptr_t {
87typedef enum : uint16_t {
111typedef enum : uint8_t {
132typedef enum : uint8_t {
147typedef enum : uint8_t {
164typedef enum : uint32_t {
192typedef enum : uint32_t {
217typedef enum : uint32_t {
239typedef enum : uint32_t {
256typedef enum : uint32_t {
270typedef enum : uint32_t {
289typedef enum : uint32_t {
309typedef enum : uint8_t {
326typedef enum : uint16_t {
342typedef enum : uint8_t {
466 return (
volatile uint32_t*)base;
493 return (uint8_t)(channel >> 1U);
Annotation-attribute framework macros for ra8-firmware.
#define RA8_HW_REGISTER_ACCESS
Mark an MMIO accessor function (returns volatile register pointer).
static volatile r_ipc_channel_regs_t * ra8_ipc_channel(uint8_t channel)
Get a pointer to one IPC FIFO channel register window.
static volatile r_ipc_nmi_regs_t * ra8_ipc_nmi(uint8_t unit)
Get a pointer to one IPC NMI unit register window.
static volatile uint32_t * ra8_ipc_ipcpar(void)
Get a pointer to the IPCPAR Privileged Attribution register.
ra8_ipc_elc_event_t
ELC event numbers for the IPC maskable IRQs.
@ k_ra8_ipc_elc_event_irq0
Receiving-side IRQ for IPC0_*.
@ k_ra8_ipc_elc_event_irq1
Receiving-side IRQ for IPC1_*.
static volatile uint32_t * ra8_ipc_ipcsar(void)
Get a pointer to the IPCSAR Security Attribution register.
ra8_ipc_core_id_t
Logical CPU core identifiers used by attribution helpers.
@ k_ra8_ipc_core_cpu0
Cortex-M85 (primary core).
@ k_ra8_ipc_core_cpu1
Cortex-M33 (secondary core).
ra8_ipc_attr_shift_t
Bit positions of SAIPCIRn / PAIPCIRn within IPCSAR / IPCPAR.
@ k_ra8_ipc_attr_shift_nmi_base
SAIPCNMI0 / PAIPCNMI0 position.
@ k_ra8_ipc_attr_shift_ir_base
SAIPCIR0 / PAIPCIR0 bit position.
ra8_ipc_nmi_mask_t
Bit masks for the IPC NMI status / set / clear registers.
@ k_ra8_ipc_nmi_mask_bit
Single-bit NMI request / status.
ra8_ipcpar_mask_t
Bit masks for the IPCPAR Privileged Attribution Register.
@ k_ra8_ipcpar_mask_paipcir0
IPC0 channel 0 priv attr.
@ k_ra8_ipcpar_mask_paipcnmi0
IPC0NMI* priv attr.
@ k_ra8_ipcpar_mask_paipcnmi1
IPC1NMI* priv attr.
@ k_ra8_ipcpar_mask_paipcsem1
IPCSEM8..15 priv attr.
@ k_ra8_ipcpar_mask_paipcir2
IPC1 channel 0 priv attr.
@ k_ra8_ipcpar_mask_paipcir3
IPC1 channel 1 priv attr.
@ k_ra8_ipcpar_mask_paipcsem0
IPCSEM0..7 priv attr.
@ k_ra8_ipcpar_mask_paipcir1
IPC0 channel 1 priv attr.
ra8_ipc_iset_mask_t
Bit masks for the IPCnISETm "IRQ Request Set" registers.
@ k_ra8_ipc_iset_mask_set4
SET4 -> IRQ4 request.
@ k_ra8_ipc_iset_mask_all
All eight SET bits.
@ k_ra8_ipc_iset_mask_set3
SET3 -> IRQ3 request.
@ k_ra8_ipc_iset_mask_set2
SET2 -> IRQ2 request.
@ k_ra8_ipc_iset_mask_set5
SET5 -> IRQ5 request.
@ k_ra8_ipc_iset_mask_set6
SET6 -> IRQ6 request.
@ k_ra8_ipc_iset_mask_set0
SET0 -> IRQ0 request.
@ k_ra8_ipc_iset_mask_set7
SET7 -> IRQ7 request.
@ k_ra8_ipc_iset_mask_set1
SET1 -> IRQ1 request.
ra8_ipc_addr_t
Memory-mapped base addresses for the IPC block and the CPSCU window that holds IPCSAR / IPCPAR.
@ k_ra8_ipc_ipcpar_addr
IPC Privileged Attribution Reg.
@ k_ra8_ipc_base_addr
IPC block base (Secure).
@ k_ra8_ipc_cpscu_addr
CPSCU base for IPCSAR/IPCPAR.
@ k_ra8_ipc_ipcsar_addr
IPC Security Attribution Reg.
ra8_ipc_offset_t
In-block offsets relative to k_ra8_ipc_base_addr.
@ k_ra8_ipc_offset_ipc0nmiset
IPC0 NMI set.
@ k_ra8_ipc_offset_ipc1nmiclr
IPC1 NMI clear.
@ k_ra8_ipc_offset_ipcsem0
First semaphore register.
@ k_ra8_ipc_offset_ipc1_ch0
IPC1 channel 0 STA (FIFO10).
@ k_ra8_ipc_offset_ipc0nmiclr
IPC0 NMI clear.
@ k_ra8_ipc_offset_ipcsem15
Last semaphore register.
@ k_ra8_ipc_offset_ipc0_ch0
IPC0 channel 0 STA (FIFO00).
@ k_ra8_ipc_offset_ipc1_ch1
IPC1 channel 1 STA (FIFO11).
@ k_ra8_ipc_offset_ipc0nmista
IPC0 NMI status (CPU1 -> CPU0).
@ k_ra8_ipc_offset_ipc0_ch1
IPC0 channel 1 STA (FIFO01).
@ k_ra8_ipc_offset_ipc1nmista
IPC1 NMI status (CPU0 -> CPU1).
@ k_ra8_ipc_offset_ipc1nmiset
IPC1 NMI set.
static volatile uint32_t * ra8_ipc_sem(uint8_t sem_id)
Get a pointer to one IPCSEM hardware semaphore register.
ra8_ipc_sta_mask_t
Bit masks for the IPCnSTAm "Status" registers.
@ k_ra8_ipc_sta_mask_rerr
RERR: read-while-empty.
@ k_ra8_ipc_sta_mask_irq5
IRQ5 event.
@ k_ra8_ipc_sta_mask_event
Any event the ISR cares about.
@ k_ra8_ipc_sta_mask_irq4
IRQ4 event.
@ k_ra8_ipc_sta_mask_irq3
IRQ3 event.
@ k_ra8_ipc_sta_mask_irq2
IRQ2 event.
@ k_ra8_ipc_sta_mask_err_any
RERR | FERR.
@ k_ra8_ipc_sta_mask_full
FULL: FIFO full.
@ k_ra8_ipc_sta_mask_irq1
IRQ1 event.
@ k_ra8_ipc_sta_mask_ferr
FERR: write-while-full.
@ k_ra8_ipc_sta_mask_rdy
RDY: FIFO non-empty.
@ k_ra8_ipc_sta_mask_irq0
IRQ0 event.
@ k_ra8_ipc_sta_mask_irq_all
IRQ7..IRQ0 event bits.
@ k_ra8_ipc_sta_mask_irq7
IRQ7 event.
@ k_ra8_ipc_sta_mask_irq6
IRQ6 event.
ra8_ipc_clr_mask_t
Bit masks for the IPCnCLRm "Clear" registers.
@ k_ra8_ipc_clr_mask_all
Every clearable bit.
@ k_ra8_ipc_clr_mask_fclr
FCLR: clear FERR.
@ k_ra8_ipc_clr_mask_clr3
CLR3 -> drop STA.IRQ3.
@ k_ra8_ipc_clr_mask_clr5
CLR5 -> drop STA.IRQ5.
@ k_ra8_ipc_clr_mask_clr2
CLR2 -> drop STA.IRQ2.
@ k_ra8_ipc_clr_mask_clr0
CLR0 -> drop STA.IRQ0.
@ k_ra8_ipc_clr_mask_rst
RST: reset message FIFO.
@ k_ra8_ipc_clr_mask_clr6
CLR6 -> drop STA.IRQ6.
@ k_ra8_ipc_clr_mask_clr7
CLR7 -> drop STA.IRQ7.
@ k_ra8_ipc_clr_mask_clr1
CLR1 -> drop STA.IRQ1.
@ k_ra8_ipc_clr_mask_rclr
RCLR: clear RERR.
@ k_ra8_ipc_clr_mask_irq_all
CLR7..CLR0 -> clear IRQn.
@ k_ra8_ipc_clr_mask_clr4
CLR4 -> drop STA.IRQ4.
ra8_ipc_limits_t
Counts and strides used by the driver / accessors.
@ k_ra8_ipc_channel_stride
Bytes between channel windows.
@ k_ra8_ipc_sem_count
IPCSEM0..IPCSEM15.
@ k_ra8_ipc_fifo_depth
4 stages per FIFO (HUM 3.1).
@ k_ra8_ipc_irq_event_count
8 IRQ event lines per channel.
@ k_ra8_ipc_nmi_unit_count
IPC0 + IPC1 NMI units.
@ k_ra8_ipc_channel_count
Total FIFO channels: 2 per unit x 2.
@ k_ra8_ipc_nmi_stride
Bytes between NMI unit windows.
ra8_ipcsar_mask_t
Bit masks for the IPCSAR Security Attribution Register.
@ k_ra8_ipcsar_mask_saipcir3
IPC1 channel 1 secure attr.
@ k_ra8_ipcsar_mask_saipcir2
IPC1 channel 0 secure attr.
@ k_ra8_ipcsar_mask_saipcir0
IPC0 channel 0 secure attr.
@ k_ra8_ipcsar_mask_saipcsem1
IPCSEM8..15 secure attr.
@ k_ra8_ipcsar_mask_saipcnmi0
IPC0NMI* secure attr.
@ k_ra8_ipcsar_mask_saipcsem0
IPCSEM0..7 secure attr.
@ k_ra8_ipcsar_mask_saipcnmi1
IPC1NMI* secure attr.
@ k_ra8_ipcsar_mask_saipcir1
IPC0 channel 1 secure attr.
ra8_ipc_sem_attr_group_t
IPCSEMn attribution-group selector (HUM Ch 3.3.1 p 227-228).
@ k_ra8_ipc_sem_group_low
IPCSEM0..IPCSEM7 attribution group.
@ k_ra8_ipc_sem_group_high
IPCSEM8..IPCSEM15 attribution group.
ra8_ipc_sem_mask_t
Bit masks for the IPCSEMn semaphore register.
@ k_ra8_ipc_sem_mask_lock
LOCK bit (read-to-acquire).
static uint8_t ra8_ipc_channel_to_unit(uint8_t channel)
Map a logical channel id to its containing IPC unit.
ra8_ipc_unit_id_t
Logical IPC unit identifiers (IPC0 vs IPC1).
@ k_ra8_ipc_unit_ipc0
CPU1 -> CPU0 (M33 sends, M85 receives).
@ k_ra8_ipc_unit_ipc1
CPU0 -> CPU1 (M85 sends, M33 receives).
Per-FIFO-channel register window (5 x 32-bit at +0x20 stride).
volatile uint32_t ISET
+0x04 IRQ request set (W).
volatile uint32_t CLR
+0x10 Status / error / FIFO clear (W).
volatile uint32_t RXD
+0x0C FIFO receive data (R).
volatile uint32_t TXD
+0x08 FIFO transmit data (W).
volatile uint32_t STA
+0x00 Status (RDY/FULL/RERR/FERR/IRQn).
volatile uint32_t _pad[3]
+0x14..+0x1F padding to next channel.
Per-NMI-unit register window (3 x 32-bit at +0x10 stride).
volatile uint32_t _pad
+0x0C padding to next unit.
volatile uint32_t NMICLR
+0x08 NMI clear (W).
volatile uint32_t NMISTA
+0x00 NMI status (R).
volatile uint32_t NMISET
+0x04 NMI set (W).