• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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