Files
TAIXIN/sdk/include/hal/csi2.h

187 lines
5.4 KiB
C

#ifndef HAL_MIPI_CSI_H
#define HAL_MIPI_CSI_H
#ifdef __cplusplus
extern "C" {
#endif
/* User interrupt handle */
typedef int32(*mipi_csi_irq_hdl)(uint32 irq_flags, uint32 irq_data, uint32 param);
/**
* @brief UART ioctl_cmd type
*/
enum mipi_csi_ioctl_cmd {
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_LANE_NUM,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_IMG_SIZE,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_IMG_SIZE,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_HSYNC_REC_TIME,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_HSYNC_REC_TIME,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_HSYNC_REC_EN,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_HSYNC_REC_EN,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_CROP_EN,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_CROP_EN,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_CROP_COORD_START,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_CROP_COORD_START,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_CROP_COORD_END,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_CROP_COORD_END,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_FORMAT_INPUT,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI1_FORMAT_INPUT,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_DPHY_CFG,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_DPHY_DBG,
/*! Compatible version: V2;
*@ Describe:
*
*/
MIPI_CSI_OPEN_VIRTUAL_CHANNEL,
MIPI_CSI_FTUSB3_OPEN,
MIPI_CSI_HS_RX_ZERO_CNT,
MIPI_CSI_GET_MATCH_VALUE,
MIPI_CSI_STOP_STATE,
};
struct mipi_csi_device {
struct dev_obj dev;
};
struct mipi_csi_hal_ops{
struct devobj_ops ops;
int32(*init)(struct mipi_csi_device *mipi_csi_dev,uint8_t lane_num);
int32(*deinit)(struct mipi_csi_device *mipi_csi_dev);
int32(*open)(struct mipi_csi_device *mipi_csi_dev);
int32(*baudrate)(struct mipi_csi_device *mipi_csi_dev, uint32 baudrate);
int32(*close)(struct mipi_csi_device *mipi_csi_dev);
int32(*ioctl)(struct mipi_csi_device *mipi_csi_dev, enum mipi_csi_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
int32(*request_irq)(struct mipi_csi_device *mipi_csi_dev, uint32 irq_flag, mipi_csi_irq_hdl irq_hdl, uint32 irq_data);
int32(*release_irq)(struct mipi_csi_device *mipi_csi_dev, uint32 irq_flag);
int32(*request_irq1)(struct mipi_csi_device *mipi_csi_dev, uint32 irq_flag, mipi_csi_irq_hdl irq_hdl, uint32 irq_data);
int32(*release_irq1)(struct mipi_csi_device *mipi_csi_dev, uint32 irq_flag);
};
int32 mipi_csi_open(struct mipi_csi_device *p_mipi_csi);
int32 mipi_csi_close(struct mipi_csi_device *p_mipi_csi);
int32 mipi_csi_init(struct mipi_csi_device *p_mipi_csi,uint8_t lane_num);
int32 mipi_csi_deinit(struct mipi_csi_device *p_mipi_csi);
int32 mipi_csi_set_baudrate(struct mipi_csi_device *p_mipi_csi, uint32 mclk);
int32 mipi_csi_request_irq(struct mipi_csi_device *p_mipi_csi, uint32 irq_flags, mipi_csi_irq_hdl irq_hdl, uint32 irq_data);
int32 mipi_csi_release_irq(struct mipi_csi_device *p_mipi_csi, uint32 irq_flags);
int32 mipi_csi1_request_irq(struct mipi_csi_device *p_mipi_csi, uint32 irq_flags, mipi_csi_irq_hdl irq_hdl, uint32 irq_data);
int32 mipi_csi1_release_irq(struct mipi_csi_device *p_mipi_csi, uint32 irq_flags);
int32 mipi_csi_set_lane_num(struct mipi_csi_device *p_mipi_csi,uint32 lane_num);
int32 mipi_csi_open_virtual_channel(struct mipi_csi_device *p_mipi_csi,uint8 open);
int32 mipi_csi_img_size(struct mipi_csi_device *p_mipi_csi,uint32 w,uint32 h);
int32 mipi_csi_hsync_rec_time(struct mipi_csi_device *p_mipi_csi,uint8 time);
int32 mipi_csi_hsync_rec_enable(struct mipi_csi_device *p_mipi_csi,uint8 enable);
int32 mipi_csi_crop_enable(struct mipi_csi_device *p_mipi_csi,uint8 enable);
int32 mipi_csi_crop_img_start(struct mipi_csi_device *p_mipi_csi,uint32 x,uint32 y);
int32 mipi_csi_crop_img_end(struct mipi_csi_device *p_mipi_csi,uint32 x,uint32 y);
int32 mipi_csi_input_format(struct mipi_csi_device *p_mipi_csi,uint8 format);
int32 mipi_csi_dphy_cfg(struct mipi_csi_device *p_mipi_csi,uint32 c0,uint32 c1,uint32 c2,uint32 c3,uint32 c4,uint32 c5,uint32 c6,uint32 c7);
int32 mipi_csi_dphy_dbg(struct mipi_csi_device *p_mipi_csi,uint32 d0,uint32 d1,uint32 d2,uint32 d3);
int32 mipi_csi_ftusb3_open(struct mipi_csi_device *p_mipi_csi, uint8 enable);
int32 mipi_csi1_img_size(struct mipi_csi_device *p_mipi_csi,uint32 w,uint32 h);
int32 mipi_csi1_hsync_rec_time(struct mipi_csi_device *p_mipi_csi,uint8 time);
int32 mipi_csi1_hsync_rec_enable(struct mipi_csi_device *p_mipi_csi,uint8 enable);
int32 mipi_csi1_crop_enable(struct mipi_csi_device *p_mipi_csi,uint8 enable);
int32 mipi_csi1_crop_img_start(struct mipi_csi_device *p_mipi_csi,uint32 x,uint32 y);
int32 mipi_csi1_crop_img_end(struct mipi_csi_device *p_mipi_csi,uint32 x,uint32 y);
int32 mipi_csi1_input_format(struct mipi_csi_device *p_mipi_csi,uint8 format);
int32 mipi_csi_hs_rx_zero_cnt_set(struct mipi_csi_device *p_mipi_csi, uint32 value);
int32 mipi_csi_get_match_value(struct mipi_csi_device *p_mipi_csi, uint32 *value);
int32 mipi_csi_get_stop_state(struct mipi_csi_device *p_mipi_csi, uint32 *value);
#ifdef __cplusplus
}
#endif
#endif