ss928_framework/ss928sdk/include/ot_common_dsp.h
2024-12-16 13:31:45 +08:00

130 lines
5.0 KiB
C
Executable File

/*
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
*/
#ifndef OT_COMMON_DSP_H
#define OT_COMMON_DSP_H
#include "ot_common_svp.h"
#include "ot_common.h"
#include "ot_errno.h"
#include "ot_debug.h"
#ifdef __cplusplus
#if __cplusplus
extern "C" {
#endif
#endif
/* SVP_DSP Error Code */
typedef enum {
OT_ERR_SVP_DSP_SYS_TIMEOUT = 0x40, /* SVP_DSP process timeout */
OT_ERR_SVP_DSP_QUERY_TIMEOUT = 0x41, /* SVP_DSP query timeout */
OT_ERR_SVP_DSP_OPEN_FILE = 0x42, /* SVP_DSP open file error */
OT_ERR_SVP_DSP_READ_FILE = 0x43, /* SVP_DSP read file error */
OT_ERR_SVP_DSP_BUTT
} ot_svp_dsp_err_code;
/* Invalid device ID */
#define OT_ERR_SVP_DSP_INVALID_DEV_ID OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_INVALID_DEV_ID)
/* Invalid channel ID */
#define OT_ERR_SVP_DSP_INVALID_CHN_ID OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_INVALID_CHN_ID)
/* At least one parameter is illegal. For example, an illegal enumeration value exists. */
#define OT_ERR_SVP_DSP_ILLEGAL_PARAM OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_ILLEGAL_PARAM)
/* The channel exists. */
#define OT_ERR_SVP_DSP_EXIST OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_EXIST)
/* The UN exists. */
#define OT_ERR_SVP_DSP_UNEXIST OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_UNEXIST)
/* A null point is used. */
#define OT_ERR_SVP_DSP_NULL_PTR OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NULL_PTR)
/* Try to enable or initialize the system, device, or channel before configuring attributes. */
#define OT_ERR_SVP_DSP_NOT_CONFIG OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_CFG)
/* The operation is not supported currently. */
#define OT_ERR_SVP_DSP_NOT_SURPPORT OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_SUPPORT)
/* The operation, changing static attributes for example, is not permitted. */
#define OT_ERR_SVP_DSP_NOT_PERM OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_PERM)
/* A failure caused by the malloc memory occurs. */
#define OT_ERR_SVP_DSP_NO_MEM OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NO_MEM)
/* A failure caused by the malloc buffer occurs. */
#define OT_ERR_SVP_DSP_NO_BUF OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NO_BUF)
/* The buffer is empty. */
#define OT_ERR_SVP_DSP_BUF_EMPTY OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_BUF_EMPTY)
/* No buffer is provided for storing new data. */
#define OT_ERR_SVP_DSP_BUF_FULL OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_BUF_FULL)
/* The system is not ready because it may be not initialized or loaded.
* The error code is returned when a device file fails to be opened. */
#define OT_ERR_SVP_DSP_NOT_READY OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_NOT_READY)
/* The source address or target address is incorrect during the operations
such as calling copy_from_user or copy_to_user. */
#define OT_ERR_SVP_DSP_BAD_ADDR OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_BAD_ADDR)
/* The resource is busy during the operations such as destroying a VENC channel without deregistering it. */
#define OT_ERR_SVP_DSP_BUSY OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_BUSY)
/* SVP_DSP process timeout */
#define OT_ERR_SVP_DSP_SYS_TIMEOUT OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_SVP_DSP_SYS_TIMEOUT)
/* SVP_DSP query timeout */
#define OT_ERR_SVP_DSP_QUERY_TIMEOUT OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_SVP_DSP_QUERY_TIMEOUT)
/* SVP_DSP open file error */
#define OT_ERR_SVP_DSP_OPEN_FILE OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_SVP_DSP_OPEN_FILE)
/* SVP_DSP read file error */
#define OT_ERR_SVP_DSP_READ_FILE OT_DEFINE_ERR(OT_ID_SVP_DSP, OT_ERR_LEVEL_ERROR, OT_ERR_SVP_DSP_READ_FILE)
/* SVP_DSP core id */
typedef enum {
OT_SVP_DSP_ID_0 = 0x0,
OT_SVP_DSP_ID_1 = 0x1,
OT_SVP_DSP_ID_BUTT
} ot_svp_dsp_id;
/* SVP_DSP priority */
typedef enum {
OT_SVP_DSP_PRI_0 = 0x0,
OT_SVP_DSP_PRI_1 = 0x1,
OT_SVP_DSP_PRI_2 = 0x2,
OT_SVP_DSP_PRI_BUTT
} ot_svp_dsp_pri;
/* SVP_DSP memory type */
typedef enum {
OT_SVP_DSP_MEM_TYPE_SYS_DDR_DSP_0 = 0x0,
OT_SVP_DSP_MEM_TYPE_IRAM_DSP_0 = 0x1,
OT_SVP_DSP_MEM_TYPE_DRAM_0_DSP_0 = 0x2,
OT_SVP_DSP_MEM_TYPE_DRAM_1_DSP_0 = 0x3,
OT_SVP_DSP_MEM_TYPE_SYS_DDR_DSP_1 = 0x4,
OT_SVP_DSP_MEM_TYPE_IRAM_DSP_1 = 0x5,
OT_SVP_DSP_MEM_TYPE_DRAM_0_DSP_1 = 0x6,
OT_SVP_DSP_MEM_TYPE_DRAM_1_DSP_1 = 0x7,
OT_SVP_DSP_MEM_TYPE_BUTT
} ot_svp_dsp_mem_type;
/* SVP_DSP cmd */
typedef enum {
OT_SVP_DSP_CMD_INIT = 0x0,
OT_SVP_DSP_CMD_EXIT = 0x1,
OT_SVP_DSP_CMD_DILATE_3X3 = 0x2,
OT_SVP_DSP_CMD_ERODE_3X3 = 0x3,
#ifdef CONFIG_OT_PHOTO_SUPPORT
OT_SVP_DSP_CMD_PHOTO_PROC = 0x4,
#endif
OT_SVP_DSP_CMD_BUTT
} ot_svp_dsp_cmd;
/* SVP_DSP ARM->DSP request message */
typedef struct {
td_u32 cmd; /* CMD ID, user-defined SVP_DSP_CMD_BUTT + */
td_u32 msg_id; /* Message ID */
td_u64 body; /* Message body */
td_u32 body_len; /* Length of pBody */
} ot_svp_dsp_msg;
#ifdef __cplusplus
#if __cplusplus
}
#endif
#endif
#endif