xref: /aosp_15_r20/external/kernel-headers/original/uapi/linux/am437x-vpfe.h (revision f80ad8b4341604f5951dab671d41019a6d7087ce)
1*f80ad8b4SAndroid Build Coastguard Worker /* SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note */
2*f80ad8b4SAndroid Build Coastguard Worker /*
3*f80ad8b4SAndroid Build Coastguard Worker  * Copyright (C) 2013 - 2014 Texas Instruments, Inc.
4*f80ad8b4SAndroid Build Coastguard Worker  *
5*f80ad8b4SAndroid Build Coastguard Worker  * Benoit Parrot <[email protected]>
6*f80ad8b4SAndroid Build Coastguard Worker  * Lad, Prabhakar <[email protected]>
7*f80ad8b4SAndroid Build Coastguard Worker  *
8*f80ad8b4SAndroid Build Coastguard Worker  * This program is free software; you may redistribute it and/or modify
9*f80ad8b4SAndroid Build Coastguard Worker  * it under the terms of the GNU General Public License as published by
10*f80ad8b4SAndroid Build Coastguard Worker  * the Free Software Foundation; version 2 of the License.
11*f80ad8b4SAndroid Build Coastguard Worker  *
12*f80ad8b4SAndroid Build Coastguard Worker  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
13*f80ad8b4SAndroid Build Coastguard Worker  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
14*f80ad8b4SAndroid Build Coastguard Worker  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15*f80ad8b4SAndroid Build Coastguard Worker  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
16*f80ad8b4SAndroid Build Coastguard Worker  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
17*f80ad8b4SAndroid Build Coastguard Worker  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
18*f80ad8b4SAndroid Build Coastguard Worker  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
19*f80ad8b4SAndroid Build Coastguard Worker  * SOFTWARE.
20*f80ad8b4SAndroid Build Coastguard Worker  */
21*f80ad8b4SAndroid Build Coastguard Worker 
22*f80ad8b4SAndroid Build Coastguard Worker #ifndef AM437X_VPFE_USER_H
23*f80ad8b4SAndroid Build Coastguard Worker #define AM437X_VPFE_USER_H
24*f80ad8b4SAndroid Build Coastguard Worker 
25*f80ad8b4SAndroid Build Coastguard Worker #include <linux/videodev2.h>
26*f80ad8b4SAndroid Build Coastguard Worker 
27*f80ad8b4SAndroid Build Coastguard Worker enum vpfe_ccdc_data_size {
28*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_16BITS = 0,
29*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_15BITS,
30*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_14BITS,
31*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_13BITS,
32*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_12BITS,
33*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_11BITS,
34*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_10BITS,
35*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_DATA_8BITS,
36*f80ad8b4SAndroid Build Coastguard Worker };
37*f80ad8b4SAndroid Build Coastguard Worker 
38*f80ad8b4SAndroid Build Coastguard Worker /* enum for No of pixel per line to be avg. in Black Clamping*/
39*f80ad8b4SAndroid Build Coastguard Worker enum vpfe_ccdc_sample_length {
40*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_1PIXELS = 0,
41*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_2PIXELS,
42*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_4PIXELS,
43*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_8PIXELS,
44*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_16PIXELS,
45*f80ad8b4SAndroid Build Coastguard Worker };
46*f80ad8b4SAndroid Build Coastguard Worker 
47*f80ad8b4SAndroid Build Coastguard Worker /* enum for No of lines in Black Clamping */
48*f80ad8b4SAndroid Build Coastguard Worker enum vpfe_ccdc_sample_line {
49*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_1LINES = 0,
50*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_2LINES,
51*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_4LINES,
52*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_8LINES,
53*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_SAMPLE_16LINES,
54*f80ad8b4SAndroid Build Coastguard Worker };
55*f80ad8b4SAndroid Build Coastguard Worker 
56*f80ad8b4SAndroid Build Coastguard Worker /* enum for Alaw gamma width */
57*f80ad8b4SAndroid Build Coastguard Worker enum vpfe_ccdc_gamma_width {
58*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_15_6 = 0,	/* use bits 15-6 for gamma */
59*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_14_5,
60*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_13_4,
61*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_12_3,
62*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_11_2,
63*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_10_1,
64*f80ad8b4SAndroid Build Coastguard Worker 	VPFE_CCDC_GAMMA_BITS_09_0,	/* use bits 9-0 for gamma */
65*f80ad8b4SAndroid Build Coastguard Worker };
66*f80ad8b4SAndroid Build Coastguard Worker 
67*f80ad8b4SAndroid Build Coastguard Worker /* structure for ALaw */
68*f80ad8b4SAndroid Build Coastguard Worker struct vpfe_ccdc_a_law {
69*f80ad8b4SAndroid Build Coastguard Worker 	/* Enable/disable A-Law */
70*f80ad8b4SAndroid Build Coastguard Worker 	unsigned char enable;
71*f80ad8b4SAndroid Build Coastguard Worker 	/* Gamma Width Input */
72*f80ad8b4SAndroid Build Coastguard Worker 	enum vpfe_ccdc_gamma_width gamma_wd;
73*f80ad8b4SAndroid Build Coastguard Worker };
74*f80ad8b4SAndroid Build Coastguard Worker 
75*f80ad8b4SAndroid Build Coastguard Worker /* structure for Black Clamping */
76*f80ad8b4SAndroid Build Coastguard Worker struct vpfe_ccdc_black_clamp {
77*f80ad8b4SAndroid Build Coastguard Worker 	unsigned char enable;
78*f80ad8b4SAndroid Build Coastguard Worker 	/* only if bClampEnable is TRUE */
79*f80ad8b4SAndroid Build Coastguard Worker 	enum vpfe_ccdc_sample_length sample_pixel;
80*f80ad8b4SAndroid Build Coastguard Worker 	/* only if bClampEnable is TRUE */
81*f80ad8b4SAndroid Build Coastguard Worker 	enum vpfe_ccdc_sample_line sample_ln;
82*f80ad8b4SAndroid Build Coastguard Worker 	/* only if bClampEnable is TRUE */
83*f80ad8b4SAndroid Build Coastguard Worker 	unsigned short start_pixel;
84*f80ad8b4SAndroid Build Coastguard Worker 	/* only if bClampEnable is TRUE */
85*f80ad8b4SAndroid Build Coastguard Worker 	unsigned short sgain;
86*f80ad8b4SAndroid Build Coastguard Worker 	/* only if bClampEnable is FALSE */
87*f80ad8b4SAndroid Build Coastguard Worker 	unsigned short dc_sub;
88*f80ad8b4SAndroid Build Coastguard Worker };
89*f80ad8b4SAndroid Build Coastguard Worker 
90*f80ad8b4SAndroid Build Coastguard Worker /* structure for Black Level Compensation */
91*f80ad8b4SAndroid Build Coastguard Worker struct vpfe_ccdc_black_compensation {
92*f80ad8b4SAndroid Build Coastguard Worker 	/* Constant value to subtract from Red component */
93*f80ad8b4SAndroid Build Coastguard Worker 	char r;
94*f80ad8b4SAndroid Build Coastguard Worker 	/* Constant value to subtract from Gr component */
95*f80ad8b4SAndroid Build Coastguard Worker 	char gr;
96*f80ad8b4SAndroid Build Coastguard Worker 	/* Constant value to subtract from Blue component */
97*f80ad8b4SAndroid Build Coastguard Worker 	char b;
98*f80ad8b4SAndroid Build Coastguard Worker 	/* Constant value to subtract from Gb component */
99*f80ad8b4SAndroid Build Coastguard Worker 	char gb;
100*f80ad8b4SAndroid Build Coastguard Worker };
101*f80ad8b4SAndroid Build Coastguard Worker 
102*f80ad8b4SAndroid Build Coastguard Worker /* Structure for CCDC configuration parameters for raw capture mode passed
103*f80ad8b4SAndroid Build Coastguard Worker  * by application
104*f80ad8b4SAndroid Build Coastguard Worker  */
105*f80ad8b4SAndroid Build Coastguard Worker struct vpfe_ccdc_config_params_raw {
106*f80ad8b4SAndroid Build Coastguard Worker 	/* data size value from 8 to 16 bits */
107*f80ad8b4SAndroid Build Coastguard Worker 	enum vpfe_ccdc_data_size data_sz;
108*f80ad8b4SAndroid Build Coastguard Worker 	/* Structure for Optional A-Law */
109*f80ad8b4SAndroid Build Coastguard Worker 	struct vpfe_ccdc_a_law alaw;
110*f80ad8b4SAndroid Build Coastguard Worker 	/* Structure for Optical Black Clamp */
111*f80ad8b4SAndroid Build Coastguard Worker 	struct vpfe_ccdc_black_clamp blk_clamp;
112*f80ad8b4SAndroid Build Coastguard Worker 	/* Structure for Black Compensation */
113*f80ad8b4SAndroid Build Coastguard Worker 	struct vpfe_ccdc_black_compensation blk_comp;
114*f80ad8b4SAndroid Build Coastguard Worker };
115*f80ad8b4SAndroid Build Coastguard Worker 
116*f80ad8b4SAndroid Build Coastguard Worker /*
117*f80ad8b4SAndroid Build Coastguard Worker  *  Private IOCTL
118*f80ad8b4SAndroid Build Coastguard Worker  * VIDIOC_AM437X_CCDC_CFG - Set CCDC configuration for raw capture
119*f80ad8b4SAndroid Build Coastguard Worker  * This is an experimental ioctl that will change in future kernels. So use
120*f80ad8b4SAndroid Build Coastguard Worker  * this ioctl with care !
121*f80ad8b4SAndroid Build Coastguard Worker  **/
122*f80ad8b4SAndroid Build Coastguard Worker #define VIDIOC_AM437X_CCDC_CFG \
123*f80ad8b4SAndroid Build Coastguard Worker 	_IOW('V', BASE_VIDIOC_PRIVATE + 1, void *)
124*f80ad8b4SAndroid Build Coastguard Worker 
125*f80ad8b4SAndroid Build Coastguard Worker #endif		/* AM437X_VPFE_USER_H */
126