6db4831e98
Android 14
177 lines
4.2 KiB
C
177 lines
4.2 KiB
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (c) 2020 MediaTek Inc.
|
|
*/
|
|
|
|
#ifndef __MTK_SMI_H__
|
|
#define __MTK_SMI_H__
|
|
|
|
#define MTK_SMI_MAJOR_NUMBER 190
|
|
|
|
enum MTK_SMI_BWC_SCEN {
|
|
SMI_BWC_SCEN_NORMAL,
|
|
SMI_BWC_SCEN_UI_IDLE,
|
|
SMI_BWC_SCEN_VPMJC,
|
|
SMI_BWC_SCEN_FORCE_MMDVFS,
|
|
SMI_BWC_SCEN_HDMI,
|
|
SMI_BWC_SCEN_HDMI4K,
|
|
SMI_BWC_SCEN_WFD,
|
|
SMI_BWC_SCEN_VENC,
|
|
SMI_BWC_SCEN_SWDEC_VP,
|
|
SMI_BWC_SCEN_VP,
|
|
SMI_BWC_SCEN_VP_HIGH_FPS,
|
|
SMI_BWC_SCEN_VP_HIGH_RESOLUTION,
|
|
SMI_BWC_SCEN_VR,
|
|
SMI_BWC_SCEN_VR_SLOW,
|
|
SMI_BWC_SCEN_VSS,
|
|
SMI_BWC_SCEN_CAM_PV,
|
|
SMI_BWC_SCEN_CAM_CP,
|
|
SMI_BWC_SCEN_ICFP,
|
|
SMI_BWC_SCEN_MM_GPU,
|
|
SMI_BWC_SCEN_CNT
|
|
};
|
|
|
|
static char *MTK_SMI_BWC_SCEN_NAME[SMI_BWC_SCEN_CNT] = {
|
|
"SMI_BWC_SCEN_NORMAL", "SMI_BWC_SCEN_UI_IDLE", "SMI_BWC_SCEN_VPMJC",
|
|
"SMI_BWC_SCEN_FORCE_MMDVFS", "SMI_BWC_SCEN_HDMI", "SMI_BWC_SCEN_HDMI4K",
|
|
"SMI_BWC_SCEN_WFD", "SMI_BWC_SCEN_SWDEC_VP",
|
|
/* libvcodec */
|
|
"SMI_BWC_SCEN_VP", "SMI_BWC_SCEN_VP_HIGH_FPS",
|
|
"SMI_BWC_SCEN_VP_HIGH_RESOLUTION", "SMI_BWC_SCEN_VENC",
|
|
/* mtkcam */
|
|
"SMI_BWC_SCEN_VR", "SMI_BWC_SCEN_VR_SLOW", "SMI_BWC_SCEN_VSS",
|
|
"SMI_BWC_SCEN_CAM_PV", "SMI_BWC_SCEN_CAM_CP", "SMI_BWC_SCEN_ICFP",
|
|
"SMI_BWC_SCEN_MM_GPU",
|
|
};
|
|
|
|
static inline char *smi_bwc_scen_name_get(const enum MTK_SMI_BWC_SCEN scen)
|
|
{
|
|
if (scen >= 0 && scen < SMI_BWC_SCEN_CNT)
|
|
return MTK_SMI_BWC_SCEN_NAME[scen];
|
|
else
|
|
return "SMI_BWC_SCEN_UNKNOWN";
|
|
}
|
|
|
|
struct MTK_SMI_BWC_CONF {
|
|
u32 scen;
|
|
u32 b_on;
|
|
};
|
|
|
|
#define MTK_IOC_SMI_BWC_CONF _IOW('O', 24, struct MTK_SMI_BWC_CONF)
|
|
|
|
enum {SMI_IPI_INIT, SMI_IPI_ENABLE, NR_SMI_IPI,};
|
|
|
|
struct smi_ipi_data_s {
|
|
u32 cmd;
|
|
union {
|
|
struct {
|
|
u32 phys;
|
|
u32 size;
|
|
} ctrl;
|
|
struct {
|
|
u32 enable;
|
|
} logger;
|
|
} u;
|
|
};
|
|
|
|
/* MMDVFS */
|
|
enum mmdvfs_voltage_enum {
|
|
MMDVFS_VOLTAGE_DEFAULT,
|
|
MMDVFS_VOLTAGE_0 = MMDVFS_VOLTAGE_DEFAULT,
|
|
MMDVFS_VOLTAGE_LOW = MMDVFS_VOLTAGE_0,
|
|
MMDVFS_VOLTAGE_1,
|
|
MMDVFS_VOLTAGE_HIGH = MMDVFS_VOLTAGE_1,
|
|
MMDVFS_VOLTAGE_DEFAULT_STEP,
|
|
MMDVFS_VOLTAGE_LOW_LOW,
|
|
MMDVFS_VOLTAGE_COUNT
|
|
};
|
|
|
|
#define MMDVFS_CAMERA_MODE_FLAG_DEFAULT 1
|
|
#define MMDVFS_CAMERA_MODE_FLAG_PIP (1 << 1)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_VFB (1 << 2)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_EIS_2_0 (1 << 3)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_IVHDR (1 << 4)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_STEREO (1 << 5)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_MVHDR (1 << 6)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_ZVHDR (1 << 7)
|
|
#define MMDVFS_CAMERA_MODE_FLAG_DUAL_ZOOM (1 << 8)
|
|
|
|
|
|
struct MTK_MMDVFS_CMD {
|
|
unsigned int type;
|
|
enum MTK_SMI_BWC_SCEN scen;
|
|
|
|
unsigned int sensor_size;
|
|
unsigned int sensor_fps;
|
|
unsigned int camera_mode;
|
|
unsigned int boost_disable;
|
|
unsigned int ddr_type;
|
|
unsigned int step;
|
|
unsigned int venc_size;
|
|
unsigned int preview_size;
|
|
|
|
unsigned int ret;
|
|
};
|
|
|
|
#define MTK_MMDVFS_CMD_TYPE_SET 0
|
|
#define MTK_MMDVFS_CMD_TYPE_QUERY 1
|
|
#define MTK_MMDVFS_CMD_TYPE_GET 2
|
|
#define MTK_MMDVFS_CMD_TYPE_CONFIG 3
|
|
#define MTK_MMDVFS_CMD_TYPE_STEP_SET 4
|
|
#define MTK_MMDVFS_CMD_TYPE_VPU_STEP_SET 10
|
|
#define MTK_MMDVFS_CMD_TYPE_VPU_STEP_GET 11
|
|
|
|
|
|
enum MTK_SMI_BWC_INFO_ID {
|
|
SMI_BWC_INFO_CON_PROFILE = 0,
|
|
SMI_BWC_INFO_SENSOR_SIZE,
|
|
SMI_BWC_INFO_VIDEO_RECORD_SIZE,
|
|
SMI_BWC_INFO_DISP_SIZE,
|
|
SMI_BWC_INFO_TV_OUT_SIZE,
|
|
SMI_BWC_INFO_FPS,
|
|
SMI_BWC_INFO_VIDEO_ENCODE_CODEC,
|
|
SMI_BWC_INFO_VIDEO_DECODE_CODEC,
|
|
SMI_BWC_INFO_HW_OVL_LIMIT,
|
|
SMI_BWC_INFO_CNT
|
|
};
|
|
|
|
struct MTK_SMI_BWC_INFO_SET {
|
|
int property;
|
|
int value1;
|
|
int value2;
|
|
};
|
|
|
|
|
|
struct MTK_SMI_BWC_MM_INFO {
|
|
unsigned int flag; /* Reserved */
|
|
int concurrent_profile;
|
|
int sensor_size[2];
|
|
int video_record_size[2];
|
|
int display_size[2];
|
|
int tv_out_size[2];
|
|
int fps;
|
|
int video_encode_codec;
|
|
int video_decode_codec;
|
|
int hw_ovl_limit;
|
|
};
|
|
#define MTK_IOC_SMI_BWC_INFO_SET _IOWR('O', 28, struct MTK_SMI_BWC_INFO_SET)
|
|
#define MTK_IOC_SMI_BWC_INFO_GET _IOWR('O', 29, struct MTK_SMI_BWC_MM_INFO)
|
|
#define MTK_IOC_MMDVFS_CMD _IOW('O', 88, struct MTK_MMDVFS_CMD)
|
|
|
|
struct MTK_MMDVFS_QOS_CMD {
|
|
unsigned int type;
|
|
unsigned int max_cam_bw;
|
|
unsigned int ret;
|
|
};
|
|
|
|
#define MTK_MMDVFS_QOS_CMD_TYPE_SET 0
|
|
#define MTK_IOC_MMDVFS_QOS_CMD \
|
|
_IOW('O', 89, struct MTK_MMDVFS_QOS_CMD)
|
|
|
|
#ifdef CONFIG_MTK_SMI_VARIANT
|
|
int mtk_smi_larb_clock_on(int larbid, bool pm);
|
|
void mtk_smi_larb_clock_off(int larbid, bool pm);
|
|
unsigned long mtk_smi_larb_get_base(int larbid);
|
|
#endif
|
|
#endif
|