 |
AM261x MCU+ SDK
11.01.00
|
|
Go to the documentation of this file.
33 #ifndef SIPC_NOTIFY_MAILBOX_H_
34 #define SIPC_NOTIFY_MAILBOX_H_
45 #define MAILBOX_MAX_SW_QUEUE_STRUCT_SIZE (sizeof(SIPC_SwQueue))
62 typedef struct SIPC_SwQueue_
71 #if defined(__aarch64__) || defined(__arm__)
72 static inline void asm_dsb_memory(
void)
74 __asm__ __volatile__(
"dsb sy" "\n\t": : :
"memory");
77 static inline void asm_isb_memory(
void)
79 __asm__ __volatile__(
"isb" "\n\t": : :
"memory");
88 uint32_t rdIdx = swQ->
rdIdx;
89 uint32_t wrIdx = swQ->
wrIdx;
91 if((rdIdx < swQ->Qlength) && (wrIdx < swQ->Qlength))
99 rdIdx = (rdIdx+1U)%swQ->
Qlength;
105 if (rdIdx < swQ->rdIdx)
109 #if defined(__aarch64__) || defined(__arm__)
126 volatile uint32_t rdIdx = swQ->
rdIdx;
127 volatile uint32_t wrIdx = swQ->
wrIdx;
129 if((rdIdx < swQ->Qlength) && (wrIdx < swQ->Qlength))
131 if( ( (wrIdx+1U)%swQ->
Qlength ) != rdIdx )
133 volatile uint32_t *addr = (uint32_t *)mailboxBaseAddr;
139 wrIdx = (wrIdx+1U)%swQ->
Qlength;
145 #
if defined(__aarch64__) || defined(__arm__)
151 *addr = (1U << (wrIntrBitPos));
161 volatile uint32_t *addr = (uint32_t *)mailboxBaseAddr;
167 volatile uint32_t *addr = (uint32_t *)mailboxBaseAddr;
174 volatile uint32_t *addr = ( uint32_t *)mailboxBaseAddr;
180 extern uint32_t gSIPCCoreIntrBitPos[];
182 uint32_t isPending = 0;
183 isPending = pendingIntr & (1U << gSIPCCoreIntrBitPos[coreId]);
static uint32_t SIPC_mailboxIsPendingIntr(uint32_t pendingIntr, uint32_t coreId)
Definition: sipc_notify_mailbox.h:178
static int32_t SIPC_mailboxWrite(uint32_t mailboxBaseAddr, uint32_t wrIntrBitPos, SIPC_SwQueue *swQ, uint8_t *Buff)
Definition: sipc_notify_mailbox.h:122
uint8_t * Qfifo
Definition: sipc_notify_mailbox.h:68
static uint32_t SIPC_mailboxGetPendingIntr(uint32_t mailboxBaseAddr)
Definition: sipc_notify_mailbox.h:165
void * SOC_phyToVirt(uint64_t phyAddr)
Physical to Virtual (CPU) address translation function.
uint16_t Qlength
Definition: sipc_notify_mailbox.h:67
SIPC swQ structure which holds the data pointer to a fifo Queue in HSM MBOX memory.
Definition: sipc_notify_mailbox.h:63
#define SystemP_SUCCESS
Return status when the API execution was successful.
Definition: SystemP.h:56
volatile uint32_t rdIdx
Definition: sipc_notify_mailbox.h:64
#define SystemP_FAILURE
Return status when the API execution was not successful due to a failure.
Definition: SystemP.h:61
uint16_t EleSize
Definition: sipc_notify_mailbox.h:66
static void SIPC_mailboxClearPendingIntr(uint32_t mailboxBaseAddr, uint32_t pendingIntr)
Definition: sipc_notify_mailbox.h:172
static void SIPC_mailboxClearAllInt(uint32_t mailboxBaseAddr)
Definition: sipc_notify_mailbox.h:159
static int32_t SIPC_mailboxRead(SIPC_SwQueue *swQ, uint8_t *Buff)
Definition: sipc_notify_mailbox.h:84
volatile uint32_t wrIdx
Definition: sipc_notify_mailbox.h:65