1 /* SPDX-License-Identifier: ((GPL-2.0+ WITH Linux-syscall-note) OR MIT) */ 2 /* 3 * Rockchip preisp driver 4 * Copyright (C) 2018 Rockchip Electronics Co., Ltd. 5 */ 6 7 #ifndef _UAPI_RKPREISP_H 8 #define _UAPI_RKPREISP_H 9 10 #include <linux/types.h> 11 12 #define PREISP_FW_NAME_LEN 128 13 14 #define PREISP_LSCTBL_SIZE 289 15 16 #define PREISP_CMD_SET_HDRAE_EXP \ 17 _IOW('V', BASE_VIDIOC_PRIVATE + 0, struct preisp_hdrae_exp_s) 18 19 #define PREISP_CMD_SAVE_HDRAE_PARAM \ 20 _IOW('V', BASE_VIDIOC_PRIVATE + 1, struct preisp_hdrae_para_s) 21 22 #define PREISP_DISP_SET_FRAME_OUTPUT \ 23 _IOW('V', BASE_VIDIOC_PRIVATE + 4, int) 24 25 #define PREISP_DISP_SET_FRAME_FORMAT \ 26 _IOW('V', BASE_VIDIOC_PRIVATE + 5, unsigned int) 27 28 #define PREISP_DISP_SET_FRAME_TYPE \ 29 _IOW('V', BASE_VIDIOC_PRIVATE + 6, unsigned int) 30 31 #define PREISP_DISP_SET_PRO_TIME \ 32 _IOW('V', BASE_VIDIOC_PRIVATE + 7, unsigned int) 33 34 #define PREISP_DISP_SET_PRO_CURRENT \ 35 _IOW('V', BASE_VIDIOC_PRIVATE + 8, unsigned int) 36 37 #define PREISP_DISP_SET_DENOISE \ 38 _IOW('V', BASE_VIDIOC_PRIVATE + 9, unsigned int[2]) 39 40 #define PREISP_DISP_WRITE_EEPROM \ 41 _IO('V', BASE_VIDIOC_PRIVATE + 10) 42 43 #define PREISP_DISP_READ_EEPROM \ 44 _IO('V', BASE_VIDIOC_PRIVATE + 11) 45 46 #define PREISP_DISP_SET_LED_ON_OFF \ 47 _IOW('V', BASE_VIDIOC_PRIVATE + 12, unsigned int) 48 49 #define PREISP_POWER_ON _IO('p', 1) 50 #define PREISP_POWER_OFF _IO('p', 2) 51 #define PREISP_REQUEST_SLEEP _IOW('p', 3, s32) 52 #define PREISP_WAKEUP _IO('p', 4) 53 #define PREISP_DOWNLOAD_FW _IOW('p', 5, char[PREISP_FW_NAME_LEN]) 54 #define PREISP_WRITE _IOW('p', 6, struct preisp_apb_pkt) 55 #define PREISP_READ _IOR('p', 7, struct preisp_apb_pkt) 56 #define PREISP_ST_QUERY _IOR('p', 8, s32) 57 #define PREISP_IRQ_REQUEST _IOW('p', 9, s32) 58 #define PREISP_SEND_MSG _IOW('p', 11, s32) 59 #define PREISP_QUERY_MSG _IOR('p', 12, s32) 60 #define PREISP_RECV_MSG _IOR('p', 13, s32) 61 #define PREISP_CLIENT_CONNECT _IOW('p', 15, s32) 62 #define PREISP_CLIENT_DISCONNECT _IO('p', 16) 63 64 struct preisp_apb_pkt { 65 s32 data_len; 66 s32 addr; 67 s32 *data; 68 }; 69 70 /** 71 * struct preisp_hdrae_para_s - awb and lsc para for preisp 72 * 73 * @r_gain: awb r gain 74 * @b_gain: awb b gain 75 * @gr_gain: awb gr gain 76 * @gb_gain: awb gb gain 77 * @lsc_table: lsc data of gr 78 */ 79 struct preisp_hdrae_para_s { 80 unsigned short r_gain; 81 unsigned short b_gain; 82 unsigned short gr_gain; 83 unsigned short gb_gain; 84 int lsc_table[PREISP_LSCTBL_SIZE]; 85 }; 86 87 /* 88 * enum cg_mode_e conversion gain 89 * 90 */ 91 enum cg_mode_e { 92 GAIN_MODE_LCG, 93 GAIN_MODE_HCG, 94 }; 95 96 /** 97 * struct preisp_hdrae_exp_s - hdrae exposure 98 * 99 */ 100 struct preisp_hdrae_exp_s { 101 unsigned int long_exp_reg; 102 unsigned int long_gain_reg; 103 unsigned int middle_exp_reg; 104 unsigned int middle_gain_reg; 105 unsigned int short_exp_reg; 106 unsigned int short_gain_reg; 107 unsigned int long_exp_val; 108 unsigned int long_gain_val; 109 unsigned int middle_exp_val; 110 unsigned int middle_gain_val; 111 unsigned int short_exp_val; 112 unsigned int short_gain_val; 113 unsigned char long_cg_mode; 114 unsigned char middle_cg_mode; 115 unsigned char short_cg_mode; 116 }; 117 118 #endif /* _UAPI_RKPREISP_H */ 119