2025-12-17 15:55:25 +08:00

40 lines
877 B
C

/**
* Kneron System API - IPC
*
* Copyright (C) 2019 Kneron, Inc. All rights reserved.
*
*/
#include "regbase.h"
#include "io.h"
#include "base.h"
#include "kdrv_ipc.h"
/* IPC Registers */
#define SCPU_IPC_REG_ADDR(base) (base + 0x0070)
#define NCPU_IPC_REG_ADDR(base) (base + 0x0074)
/* IPC-From bits */
#define IPC_CLR_FROM BIT(5)
#define IPC_STATUS_FROM BIT(4)
/* IPC-To bits */
#define IPC_INT_TO BIT(1)
#define IPC_ENABLE_TO BIT(0)
void kdrv_ipc_enable_to_ncpu_int(void)
{
masked_outw(SCPU_IPC_REG_ADDR(SCU_EXTREG_PA_BASE), IPC_ENABLE_TO, IPC_ENABLE_TO);
}
void kdrv_ipc_trigger_to_ncpu_int(void)
{
masked_outw(SCPU_IPC_REG_ADDR(SCU_EXTREG_PA_BASE), IPC_INT_TO, IPC_INT_TO);
}
void kdrv_ipc_clear_from_ncpu_int(void)
{
masked_outw(SCPU_IPC_REG_ADDR(SCU_EXTREG_PA_BASE), IPC_CLR_FROM, IPC_CLR_FROM);
}