123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218 |
- /*
- * Copyright (C) 2021 Alibaba Group Holding Limited
- * Author: Shenwuyi <shenwuyi.swy@alibaba-inc.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- */
- #ifndef _VI_PRE_IOC_H_
- #define _VI_PRE_IOC_H_
- #include <linux/ioctl.h>
- struct vi_pre_reg_t {
- unsigned int offset;
- unsigned int value;
- };
- #define VIPER_IOCTL_MAGIC 'r'
- #define VI_PRE_IOCTL_RESET _IOWR(VIPER_IOCTL_MAGIC, 1, int)
- #define VI_PRE_IOCTL_WRITE_REG _IOWR(VIPER_IOCTL_MAGIC, 2, int)
- #define VI_PRE_IOCTL_READ_REG _IOWR(VIPER_IOCTL_MAGIC, 3, int)
- #define VI_PRE_IOCTL_SET_IPI_RESOLUTION _IOWR(VIPER_IOCTL_MAGIC, 4, int)
- #define VI_PRE_IOCTL_SET_PIPLINE _IOWR(VIPER_IOCTL_MAGIC, 5, int)
- #define VI_PRE_IOCTL_SET_IPI_MODE _IOWR(VIPER_IOCTL_MAGIC, 6, int)
- #define VI_PRE_IOCTL_SET_IPI_IDNUM _IOWR(VIPER_IOCTL_MAGIC, 7, int)
- #define VI_PRE_IOCTL_ENABLE_IPI _IOWR(VIPER_IOCTL_MAGIC, 8, int)
- #define VI_PRE_IOCTL_DISABLE_IPI _IOWR(VIPER_IOCTL_MAGIC, 9, int)
- #define VI_PRE_IOCTL_SET_MIPI2DMA_M_FRMAE _IOWR(VIPER_IOCTL_MAGIC, 10, int)
- #define VI_PRE_IOCTL_SET_MIPI2DMA_N_LINE _IOWR(VIPER_IOCTL_MAGIC, 11, int)
- #define VI_PRE_IOCTL_SET_MIPI2DMA_START _IOWR(VIPER_IOCTL_MAGIC, 12, int)
- #define VI_PRE_IOCTL_SET_MIPI2DMA_STOP _IOWR(VIPER_IOCTL_MAGIC, 13, int)
- #define VI_PRE_IOCTL_SET_HDRPRO_MODE _IOWR(VIPER_IOCTL_MAGIC, 14, int)
- #define VI_PRE_IOCTL_SET_HDRPRO_RESOLUTION _IOWR(VIPER_IOCTL_MAGIC, 15, int)
- #define VI_PRE_IOCTL_SET_HDRPRO_BLACK_PARA _IOWR(VIPER_IOCTL_MAGIC, 16, int)
- #define VI_PRE_IOCTL_SET_HDRPRO_COLOR_PARA _IOWR(VIPER_IOCTL_MAGIC, 17, int)
- #define VI_PRE_IOCTL_SET_HDRPRO_MERGE_PARA _IOWR(VIPER_IOCTL_MAGIC, 18, int)
- #define VI_PRE_IOCTL_PRESS_INTERROR _IOWR(VIPER_IOCTL_MAGIC, 19, int)
- #define VI_PRE_IOCTL_HDRPRO_ENABLE _IOWR(VIPER_IOCTL_MAGIC, 20, int)
- #define VI_PRE_IOCTL_HDRPRO_DISABLE _IOWR(VIPER_IOCTL_MAGIC, 21, int)
- #define VI_PRE_IOCTL_SET_MFRAME_BUF _IOWR(VIPER_IOCTL_MAGIC, 22, int)
- #define VI_PRE_IOCTL_GET_MFRAME_DONE_ID _IOWR(VIPER_IOCTL_MAGIC, 23, int)
- #define VI_PRE_IOCTL_MFRAME_UPDATE_BUF _IOWR(VIPER_IOCTL_MAGIC, 24, int)
- #define VI_PRE_IOCTL_REQUEST_IRQ _IOWR(VIPER_IOCTL_MAGIC, 25, int)
- #define VI_PRE_IOCTL_FREE_IRQ _IOWR(VIPER_IOCTL_MAGIC, 26, int)
- #define VI_PRE_IOCTL_MAX _IOWR(VIPER_IOCTL_MAGIC, 27, int)
- typedef enum {
- IPI_MODE_NOMAL = 0,
- IPI_MODE_HDR_2_FRAME,
- IPI_MODE_HDR_3_FRAME,
- IPI_MODE_SONY_DOL_HDR_2_FRAME,
- IPI_MODE_SONY_DOL_HDR_3_FRAME,
- } ipi_mode_t;
- typedef struct {
- int glue_idx;
- ipi_mode_t mode;
- } ipi_mode_cfg_t;
- typedef struct {
- int glue_idx;
- int id_third_sync;
- int id_second_sync;
- int id_first_sync;
- int id_3;
- int id_2;
- int id_1;
- }ipi_idnum_cfg_t;
- enum hdrpro_raw_mode {
- //RAWMOD_HDRPRO
- HDRPRO_RAW6 = 0 << 21,
- HDRPRO_RAW7 = 1 << 21,
- HDRPRO_RAW8 = 2 << 21,
- HDRPRO_RAW10 = 3 << 21,
- HDRPRO_RAW12 = 4 << 21,
- };
- enum hdrpro_bayer_modesl {
- //BAYER_MODSEL
- HDRPRO_BAYER_MODSEL_BAYER_A = 0 << 19,
- HDRPRO_BAYER_MODSEL_BAYER_B = 1 << 19,
- HDRPRO_BAYER_MODSEL_BAYER_C = 2 << 19,
- HDRPRO_BAYER_MODSEL_BAYER_D = 3 << 19,
- };
- enum hdrpro_color_modesl {
- //COLOR_MODSEL
- HDRPRO_COLOR_MODSEL_BLACK_NODOWN_2X2 = 0 << 16,
- HDRPRO_COLOR_MODSEL_BLACK_DOWN_2X2 = 1 << 16,
- HDRPRO_COLOR_MODSEL_RGB_NODOWN_2X2 = 2 << 16,
- HDRPRO_COLOR_MODSEL_RGB_DOWN_2X2 = 3 << 16,
- HDRPRO_COLOR_MODSEL_RGB_NODOWN_3X3 = 4 << 16,
- HDRPRO_COLOR_MODSEL_RGB_DOWN_3X3 = 5 << 16,
- };
- enum hdrpro_enable {
- //HDRPRO_EN
- HDRPRO_BYPASS = 0 << 0,
- HDRPRO_EN = 1 << 0
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_para {
- unsigned int para[16];
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_black_weight_para {
- unsigned int wr;
- unsigned int wb;
- unsigned int wg0;
- unsigned int wg1;
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_color_weight_para {
- unsigned int pattern_00;
- unsigned int pattern_01;
- unsigned int pattern_02;
- unsigned int pattern_10;
- unsigned int pattern_11;
- unsigned int pattern_12;
- unsigned int pattern_20;
- unsigned int pattern_21;
- unsigned int pattern_22;
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_black_para {
- struct hdrpro_black_weight_para weight_para;
- };
- struct hdrpro_merge_para {
- struct hdrpro_para a;
- struct hdrpro_para b;
- struct hdrpro_para w;
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_color_para {
- struct hdrpro_color_weight_para wr;
- struct hdrpro_color_weight_para wb;
- struct hdrpro_color_weight_para wg0;
- struct hdrpro_color_weight_para wg1;
- };
- // need to use bit length to define para after the final register map released
- struct hdrpro_mode {
- enum hdrpro_raw_mode raw_mode;
- enum hdrpro_bayer_modesl bayer_modesel;
- enum hdrpro_color_modesl color_modesel;
- unsigned int last_delay;
- unsigned int id;
- };
- struct hdrpro_resolution {
- unsigned int width;
- unsigned int height;
- };
- typedef enum {
- VI_PRE_RAW_6BIT,
- VI_PRE_RAW_7BIT,
- VI_PRE_RAW_8BIT,
- VI_PRE_RAW_10BIT_16ALIGN,
- VI_PRE_RAW_12BIT,
- VI_PRE_RAW_10BIT,
- } vi_pre_data_width_t;
- typedef enum {
- VI_PRE_M_FRAME,
- VI_PRE_N_LANE,
- } vi_pre_dma_mode_t;
- typedef struct {
- int vc_num; //1~3
- vi_pre_data_width_t width;
- vi_pre_dma_mode_t mode;
- unsigned int resolution_h;
- unsigned int resolution_v;
- unsigned int line_size; //Data size of one line, unit byte; Must be 256-byte aligned
- unsigned int num; //n line num, or m frame num(m frme max is 4)
- unsigned int n_line_int;//only used for nline mode.(Generate an interrupt every time when n lines are completed). n_line_int <= num
- unsigned int buf_size;
- unsigned char *buf;
- } vi_pre_dma_cfg_t;
- typedef struct {
- int glue_idx;
- int h;
- int v;
- } vipre_resolution_cfg_t;
- typedef struct {
- int frame_id;
- int vc_num;
- void *buf_addr;
- int frame_size;
- } vi_pre_mframe_cfg_t;
- typedef struct {
- int frame_id;
- int vc_id;
- void *buf_addr;
- int frame_size;
- } vi_pre_mframe_update_t;
- typedef struct {
- int update_frame_id;
- int update_vc_id;
- } vi_pre_update_frame_info_t;
- extern unsigned int vi_pre_priv_ioctl(struct vi_pre_dev *dev, unsigned int cmd, void *args);
- #endif /* _VI_PRE_IOC_H_ */
|