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