113 lines
3.9 KiB
C
Executable File
113 lines
3.9 KiB
C
Executable File
/*
|
|
Copyright (c), 2001-2022, Shenshu Tech. Co., Ltd.
|
|
*/
|
|
|
|
#ifndef __OT_MIPI_TX_H__
|
|
#define __OT_MIPI_TX_H__
|
|
|
|
#include "osal_ioctl.h"
|
|
|
|
#define CMD_MAX_NUM 4
|
|
#define LANE_MAX_NUM 4
|
|
#define MIPI_TX_DISABLE_LANE_ID (-1)
|
|
#define MIPI_TX_SET_DATA_SIZE 800
|
|
#define MIPI_TX_GET_DATA_SIZE 160
|
|
|
|
#define OT_ALIGN_NUM 8
|
|
#define ATTRIBUTE __attribute__((aligned(OT_ALIGN_NUM)))
|
|
|
|
typedef enum {
|
|
OUT_MODE_CSI = 0x0, /* csi mode */
|
|
OUT_MODE_DSI_VIDEO = 0x1, /* dsi video mode */
|
|
OUT_MODE_DSI_CMD = 0x2, /* dsi command mode */
|
|
|
|
OUT_MODE_BUTT
|
|
} out_mode_t;
|
|
|
|
typedef enum {
|
|
MIPI_TX_WORK_MODE_LP = 0x0, /* LP(Low Power) work mode */
|
|
MIPI_TX_WORK_MODE_HS = 0x1, /* HS(High Speed) work mode */
|
|
|
|
MIPI_TX_WORK_MODE_BUTT
|
|
} mipi_tx_work_mode_t;
|
|
|
|
typedef enum {
|
|
BURST_MODE = 0x0,
|
|
NON_BURST_MODE_SYNC_PULSES = 0x1,
|
|
NON_BURST_MODE_SYNC_EVENTS = 0x2,
|
|
|
|
VIDEO_DATA_MODE_BUTT
|
|
} video_mode_t;
|
|
|
|
typedef enum {
|
|
OUT_FORMAT_RGB_16BIT = 0x0, /* DSI */
|
|
OUT_FORMAT_RGB_18BIT = 0x1,
|
|
OUT_FORMAT_RGB_18BIT_LOOSELY = 0x2,
|
|
OUT_FORMAT_RGB_24BIT = 0x3,
|
|
OUT_FORMAT_YUV420_12BIT = 0x4,
|
|
OUT_FORMAT_YUV422_16BIT = 0x5,
|
|
|
|
OUT_FORMAT_YUV420_8BIT_NORMAL = 0x6, /* CSI */
|
|
OUT_FORMAT_YUV420_8BIT_LEGACY = 0x7,
|
|
OUT_FORMAT_YUV422_8BIT = 0x8,
|
|
OUT_FORMAT_RGB_888 = 0x9,
|
|
OUT_FORMAT_RAW_8BIT = 0xa,
|
|
OUT_FORMAT_RAW_10BIT = 0xb,
|
|
OUT_FORMAT_RAW_12BIT = 0xc,
|
|
OUT_FORMAT_RAW_14BIT = 0xd,
|
|
OUT_FORMAT_RAW_16BIT = 0xe,
|
|
OUT_FORMAT_BUTT
|
|
} out_format_t;
|
|
|
|
typedef struct {
|
|
unsigned short hsa_pixels;
|
|
unsigned short hbp_pixels;
|
|
unsigned short hact_pixels;
|
|
unsigned short hfp_pixels;
|
|
|
|
unsigned short vsa_lines;
|
|
unsigned short vbp_lines;
|
|
unsigned short vact_lines;
|
|
unsigned short vfp_lines;
|
|
} sync_info_t;
|
|
|
|
typedef struct {
|
|
unsigned int devno; /* device number */
|
|
short lane_id[LANE_MAX_NUM]; /* lane_id: -1 - disable */
|
|
out_mode_t out_mode; /* output mode: CSI/DSI_VIDEO/DSI_CMD */
|
|
video_mode_t video_mode;
|
|
out_format_t out_format;
|
|
sync_info_t sync_info;
|
|
unsigned int phy_data_rate; /* Mbps */
|
|
unsigned int pixel_clk; /* KHz */
|
|
} combo_dev_cfg_t;
|
|
|
|
typedef struct {
|
|
unsigned int devno; /* device number */
|
|
mipi_tx_work_mode_t work_mode; /* work mode: low power mode, high speed mode. */
|
|
unsigned char lp_clk_en; /* low power clock enable. */
|
|
unsigned short data_type; /* data type */
|
|
unsigned short cmd_size;
|
|
const unsigned char ATTRIBUTE *cmd;
|
|
} cmd_info_t;
|
|
|
|
typedef struct {
|
|
unsigned int devno; /* device number */
|
|
mipi_tx_work_mode_t work_mode; /* work mode: low power mode, high speed mode. */
|
|
unsigned char lp_clk_en; /* low power clock enable. */
|
|
unsigned short data_type; /* DSI data type */
|
|
unsigned short data_param; /* data param,low 8 bit:first param.high 8 bit:second param, set 0 if not use */
|
|
unsigned short get_data_size; /* read data size */
|
|
unsigned char ATTRIBUTE *get_data; /* read data memory address, should malloc by user */
|
|
} get_cmd_info_t;
|
|
|
|
#define OT_MIPI_TX_IOC_MAGIC 't'
|
|
|
|
#define OT_MIPI_TX_SET_DEV_CFG _IOW(OT_MIPI_TX_IOC_MAGIC, 0x01, combo_dev_cfg_t)
|
|
#define OT_MIPI_TX_SET_CMD _IOW(OT_MIPI_TX_IOC_MAGIC, 0x02, cmd_info_t)
|
|
#define OT_MIPI_TX_ENABLE _IO(OT_MIPI_TX_IOC_MAGIC, 0x03)
|
|
#define OT_MIPI_TX_GET_CMD _IOWR(OT_MIPI_TX_IOC_MAGIC, 0x04, get_cmd_info_t)
|
|
#define OT_MIPI_TX_DISABLE _IO(OT_MIPI_TX_IOC_MAGIC, 0x05)
|
|
|
|
#endif /* end of #ifndef __OT_MIPI_TX_H__ */
|