201 lines
4.6 KiB
C
201 lines
4.6 KiB
C
|
|
#ifndef HAL_DVP_H
|
||
|
|
#define HAL_DVP_H
|
||
|
|
#ifdef __cplusplus
|
||
|
|
extern "C" {
|
||
|
|
#endif
|
||
|
|
|
||
|
|
/* User interrupt handle */
|
||
|
|
typedef int32(*dvp_irq_hdl)(uint32 irq_flags, uint32 irq_data, uint32 param);
|
||
|
|
|
||
|
|
/**
|
||
|
|
* @brief UART ioctl_cmd type
|
||
|
|
*/
|
||
|
|
enum dvp_ioctl_cmd {
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_FORMAT,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_RGB_2_YUV,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_SIZE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_ADR_1,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_ADR_2,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_SCEN,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_HSYNC_VAILD,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_VSYNC_VAILD,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_ONE_SAMPLE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_DEBOUNCE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_YCBCR_MODE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_DIS_UV_MODE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_FRAME_RATE,
|
||
|
|
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_SET_THRESHOLD,
|
||
|
|
|
||
|
|
DVP_IOCTL_CMD_EX_D5_D6,
|
||
|
|
|
||
|
|
DVP_IOCTL_CMD_SET_JPEG_LEN,
|
||
|
|
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_VSYNC_RST_TM,
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_10BITS_MAP,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_8BITS_MAP,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_PCLK_EDGE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_CROP_ENABLE,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_CROP_COORD_START,
|
||
|
|
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_CROP_COORD_END,
|
||
|
|
/*! Compatible version: V2;
|
||
|
|
*@ Describe:
|
||
|
|
*
|
||
|
|
*/
|
||
|
|
DVP_IOCTL_CMD_GET_STA,
|
||
|
|
|
||
|
|
};
|
||
|
|
|
||
|
|
struct dvp_device {
|
||
|
|
struct dev_obj dev;
|
||
|
|
};
|
||
|
|
|
||
|
|
struct dvp_hal_ops{
|
||
|
|
struct devobj_ops ops;
|
||
|
|
int32(*init)(struct dvp_device *dvp_dev);
|
||
|
|
int32(*deinit)(struct dvp_device *dvp_dev);
|
||
|
|
int32(*baudrate)(struct dvp_device *dvp_dev, uint32 baudrate);
|
||
|
|
int32(*open)(struct dvp_device *dvp_dev);
|
||
|
|
int32(*close)(struct dvp_device *dvp_dev);
|
||
|
|
int32(*ioctl)(struct dvp_device *dvp_dev, enum dvp_ioctl_cmd ioctl_cmd, uint32 param1, uint32 param2);
|
||
|
|
int32(*request_irq)(struct dvp_device *dvp_dev, uint32 irq_flag, dvp_irq_hdl irq_hdl, uint32 irq_data);
|
||
|
|
int32(*release_irq)(struct dvp_device *dvp_dev, uint32 irq_flag);
|
||
|
|
};
|
||
|
|
|
||
|
|
int32 dvp_open(struct dvp_device *p_dvp);
|
||
|
|
int32 dvp_close(struct dvp_device *p_dvp);
|
||
|
|
int32 dvp_init(struct dvp_device *p_dvp);
|
||
|
|
int32 dvp_deinit(struct dvp_device *p_dvp);
|
||
|
|
int32 dvp_set_baudrate(struct dvp_device *p_dvp, uint32 mclk);
|
||
|
|
int32 dvp_set_size(struct dvp_device *p_dvp, uint32 x_s, uint32 y_s, uint32 x_e, uint32 y_e);
|
||
|
|
int32 dvp_set_addr1(struct dvp_device *p_dvp, uint32 yuv_addr);
|
||
|
|
int32 dvp_set_addr2(struct dvp_device *p_dvp, uint32 yuv_addr);
|
||
|
|
int32 dvp_set_rgb2yuv(struct dvp_device *p_dvp, uint8 en);
|
||
|
|
int32 dvp_set_format(struct dvp_device *p_dvp, uint8 format);
|
||
|
|
int32 dvp_set_half_size(struct dvp_device *p_dvp, uint8 en);
|
||
|
|
int32 dvp_set_vsync_polarity(struct dvp_device *p_dvp, uint8 high_valid);
|
||
|
|
int32 dvp_set_hsync_polarity(struct dvp_device *p_dvp, uint8 high_valid);
|
||
|
|
int32 dvp_set_once_sampling(struct dvp_device *p_dvp, uint8 en);
|
||
|
|
int32 dvp_debounce_enable(struct dvp_device *p_dvp, uint8 en, uint8 pixel);
|
||
|
|
int32 dvp_set_ycbcr(struct dvp_device *p_dvp, uint8 mode);
|
||
|
|
int32 dvp_unload_uv(struct dvp_device *p_dvp, uint8 en);
|
||
|
|
int32 dvp_frame_load_precent(struct dvp_device *p_dvp, uint8 precent);
|
||
|
|
int32 dvp_low_high_threshold(struct dvp_device *p_dvp, bool low_high);
|
||
|
|
int32 dvp_jpeg_mode_set_len(struct dvp_device *p_dvp, uint32 len);
|
||
|
|
int32 dvp_request_irq(struct dvp_device *p_dvp, uint32 irq_flag, dvp_irq_hdl irq_hdl, uint32 irq_data);
|
||
|
|
int32 dvp_release_irq(struct dvp_device *p_dvp, uint32 irq_flag);
|
||
|
|
int32 dvp_set_exchange_d5_d6(struct dvp_device *p_dvp, uint8 en);
|
||
|
|
int32 dvp_10BITS_map(struct dvp_device *p_dvp, uint8 mode);
|
||
|
|
int32 dvp_8BITS_map(struct dvp_device *p_dvp, uint8 mode);
|
||
|
|
int32 dvp_set_vsync_rst_offline(struct dvp_device *p_dvp,uint8 enable,uint32 timeout);
|
||
|
|
|
||
|
|
|
||
|
|
|
||
|
|
#ifdef __cplusplus
|
||
|
|
}
|
||
|
|
#endif
|
||
|
|
#endif
|