Initial import of NFC GNSS SDK project
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
#ifndef IPC_H
|
||||
#define IPC_H
|
||||
|
||||
#include <stdint.h>
|
||||
#include "cpu.h"
|
||||
#include "reg.h"
|
||||
|
||||
#define IPC_FLAGS_POLLING_MODE (1 << 0)
|
||||
#define IPC_FLAGS_IRQ_MODE (1 << 1)
|
||||
#define IPC_LINE_MAX 16
|
||||
/*---------------------------------------------------------------------------*/
|
||||
typedef void (*ipc_handler_t)(void *);
|
||||
/*---------------------------------------------------------------------------*/
|
||||
typedef enum {
|
||||
IPC_DEV_MCU_TO_CR5 = 0, /* MCU AP <--> CR5 */
|
||||
IPC_DEV_MCU_TO_SHUB = 1, /* MCU AP <--> SHUB */
|
||||
IPC_DEV_NUM_MAX,
|
||||
} ipc_dev_num_t;
|
||||
/*---------------------------------------------------------------------------*/
|
||||
typedef struct {
|
||||
uint32_t isrr;
|
||||
uint32_t wdr;
|
||||
uint32_t isrw;
|
||||
uint32_t icr;
|
||||
uint32_t iir;
|
||||
uint32_t rdr;
|
||||
} ipc_reg_t;
|
||||
/*---------------------------------------------------------------------------*/
|
||||
typedef struct {
|
||||
ipc_reg_t *regs;
|
||||
uint32_t clk_ctrl;
|
||||
int irq;
|
||||
uint32_t flags;
|
||||
struct process *ipc_process;
|
||||
ipc_handler_t handler[IPC_LINE_MAX];
|
||||
void *handler_arg[IPC_LINE_MAX];
|
||||
} ipc_dev_t;
|
||||
/*---------------------------------------------------------------------------*/
|
||||
int ipc_init(ipc_dev_num_t dev, uint32_t flags);
|
||||
int ipc_register_line_handler(ipc_dev_num_t dev, int line, ipc_handler_t handler, void *arg);
|
||||
int ipc_trigger(ipc_dev_num_t dev, int line);
|
||||
int ipc_exit(ipc_dev_num_t dev);
|
||||
/*---------------------------------------------------------------------------*/
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user