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 53struct 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 */ 68struct 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 */ 80enum cg_mode_e { 81 GAIN_MODE_LCG, 82 GAIN_MODE_HCG, 83}; 84 85/** 86 * struct preisp_hdrae_exp_s - hdrae exposure 87 * 88 */ 89struct 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