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