130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * omap3isp.h 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * TI OMAP3 ISP - User-space API 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 2010 Nokia Corporation 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 2009 Texas Instruments, Inc. 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Contacts: Laurent Pinchart <laurent.pinchart@ideasonboard.com> 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Sakari Ailus <sakari.ailus@iki.fi> 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * it under the terms of the GNU General Public License version 2 as 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * published by the Free Software Foundation. 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is distributed in the hope that it will be useful, but 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * WITHOUT ANY WARRANTY; without even the implied warranty of 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * General Public License for more details. 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * You should have received a copy of the GNU General Public License 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * along with this program; if not, write to the Free Software 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 02110-1301 USA 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef OMAP3_ISP_USER_H 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3_ISP_USER_H 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/videodev2.h> 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Private IOCTLs 3530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_CCDC_CFG: Set CCDC configuration 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_PRV_CFG: Set preview engine configuration 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_AEWB_CFG: Set AEWB module configuration 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_HIST_CFG: Set histogram module configuration 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_AF_CFG: Set auto-focus module configuration 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_STAT_REQ: Read statistics (AEWB/AF/histogram) data 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * VIDIOC_OMAP3ISP_STAT_EN: Enable/disable a statistics module 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_CCDC_CFG \ 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 1, struct omap3isp_ccdc_update_config) 4730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_PRV_CFG \ 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 2, struct omap3isp_prev_update_config) 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_AEWB_CFG \ 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 3, struct omap3isp_h3a_aewb_config) 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_HIST_CFG \ 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 4, struct omap3isp_hist_config) 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_AF_CFG \ 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 5, struct omap3isp_h3a_af_config) 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_STAT_REQ \ 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 6, struct omap3isp_stat_data) 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define VIDIOC_OMAP3ISP_STAT_EN \ 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng _IOWR('V', BASE_VIDIOC_PRIVATE + 7, unsigned long) 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Events 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * V4L2_EVENT_OMAP3ISP_AEWB: AEWB statistics data ready 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * V4L2_EVENT_OMAP3ISP_AF: AF statistics data ready 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * V4L2_EVENT_OMAP3ISP_HIST: Histogram statistics data ready 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define V4L2_EVENT_OMAP3ISP_CLASS (V4L2_EVENT_PRIVATE_START | 0x100) 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define V4L2_EVENT_OMAP3ISP_AEWB (V4L2_EVENT_OMAP3ISP_CLASS | 0x1) 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define V4L2_EVENT_OMAP3ISP_AF (V4L2_EVENT_OMAP3ISP_CLASS | 0x2) 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define V4L2_EVENT_OMAP3ISP_HIST (V4L2_EVENT_OMAP3ISP_CLASS | 0x3) 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_stat_event_status { 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 frame_number; 7530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 config_counter; 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 buf_err; 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* AE/AWB related structures and flags*/ 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* H3A Range Constants */ 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_SATURATION_LIM 1023 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MIN_WIN_H 2 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_WIN_H 256 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MIN_WIN_W 6 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_WIN_W 256 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MIN_WINVC 1 8830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MIN_WINHC 1 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_WINVC 128 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_WINHC 36 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_WINSTART 4095 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MIN_SUB_INC 2 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_SUB_INC 32 9430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AEWB_MAX_BUF_SIZE 83600 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_IIRSH_MIN 0 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_IIRSH_MAX 4095 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HORIZONTAL_COUNT_MIN 1 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HORIZONTAL_COUNT_MAX 36 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_VERTICAL_COUNT_MIN 1 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_VERTICAL_COUNT_MAX 128 10230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_INCREMENT_MIN 2 10330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_INCREMENT_MAX 32 10430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HEIGHT_MIN 2 10530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HEIGHT_MAX 256 10630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_WIDTH_MIN 16 10730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_WIDTH_MAX 256 10830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HZSTART_MIN 1 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_HZSTART_MAX 4095 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_VTSTART_MIN 0 11130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_VTSTART_MAX 4095 11230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_THRESHOLD_MAX 255 11330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_COEF_MAX 4095 11430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_PAXEL_SIZE 48 11530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_MAX_BUF_SIZE 221184 11630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 11830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_h3a_aewb_config - AE AWB configuration reset values 11930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * saturation_limit: Saturation limit. 12030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @win_height: Window Height. Range 2 - 256, even values only. 12130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @win_width: Window Width. Range 6 - 256, even values only. 12230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ver_win_count: Vertical Window Count. Range 1 - 128. 12330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @hor_win_count: Horizontal Window Count. Range 1 - 36. 12430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ver_win_start: Vertical Window Start. Range 0 - 4095. 12530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @hor_win_start: Horizontal Window Start. Range 0 - 4095. 12630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blk_ver_win_start: Black Vertical Windows Start. Range 0 - 4095. 12730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blk_win_height: Black Window Height. Range 2 - 256, even values only. 12830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @subsample_ver_inc: Subsample Vertical points increment Range 2 - 32, even 12930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * values only. 13030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @subsample_hor_inc: Subsample Horizontal points increment Range 2 - 32, even 13130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * values only. 13230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @alaw_enable: AEW ALAW EN flag. 13330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 13430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_h3a_aewb_config { 13530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* 13630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Common fields. 13730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * They should be the first ones and must be in the same order as in 13830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ispstat_generic_config struct. 13930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 14030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_size; 14130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 config_counter; 14230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 14330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Private fields */ 14430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 saturation_limit; 14530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 win_height; 14630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 win_width; 14730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 ver_win_count; 14830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 hor_win_count; 14930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 ver_win_start; 15030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 hor_win_start; 15130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 blk_ver_win_start; 15230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 blk_win_height; 15330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 subsample_ver_inc; 15430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 subsample_hor_inc; 15530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 alaw_enable; 15630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 15730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 15830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 15930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_stat_data - Statistic data sent to or received from user 16030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @ts: Timestamp of returned framestats. 16130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @buf: Pointer to pass to user. 16230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @frame_number: Frame number of requested stats. 16330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @cur_frame: Current frame number being processed. 16430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @config_counter: Number of the configuration associated with the data. 16530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 16630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_stat_data { 16730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct timeval ts; 16830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng void __user *buf; 16930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_size; 17030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 frame_number; 17130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 cur_frame; 17230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 config_counter; 17330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 17430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Histogram related structs */ 17730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 17830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Flags for number of bins */ 17930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_BINS_32 0 18030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_BINS_64 1 18130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_BINS_128 2 18230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_BINS_256 3 18330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Number of bins * 4 colors * 4-bytes word */ 18530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MEM_SIZE_BINS(n) ((1 << ((n)+5))*4*4) 18630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 18730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MEM_SIZE 1024 18830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MIN_REGIONS 1 18930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MAX_REGIONS 4 19030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MAX_WB_GAIN 255 19130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MIN_WB_GAIN 0 19230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MAX_BIT_WIDTH 14 19330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MIN_BIT_WIDTH 8 19430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MAX_WG 4 19530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_MAX_BUF_SIZE 4096 19630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 19730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Source */ 19830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_SOURCE_CCDC 0 19930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_SOURCE_MEM 1 20030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* CFA pattern */ 20230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_CFA_BAYER 0 20330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_HIST_CFA_FOVEONX3 1 20430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 20530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_hist_region { 20630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_start; 20730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_end; 20830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 v_start; 20930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 v_end; 21030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 21130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 21230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_hist_config { 21330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* 21430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Common fields. 21530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * They should be the first ones and must be in the same order as in 21630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ispstat_generic_config struct. 21730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 21830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_size; 21930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 config_counter; 22030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 22130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 num_acc_frames; /* Num of image frames to be processed and 22230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng accumulated for each histogram frame */ 22330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 hist_bins; /* number of bins: 32, 64, 128, or 256 */ 22430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 cfa; /* BAYER or FOVEON X3 */ 22530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 wg[OMAP3ISP_HIST_MAX_WG]; /* White Balance Gain */ 22630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 num_regions; /* number of regions to be configured */ 22730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_hist_region region[OMAP3ISP_HIST_MAX_REGIONS]; 22830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 22930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Auto Focus related structs */ 23130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_AF_NUM_COEF 11 23330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23430692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum omap3isp_h3a_af_fvmode { 23530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_MODE_SUMMED = 0, 23630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_MODE_PEAK = 1 23730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 23830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 23930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Red, Green, and blue pixel location in the AF windows */ 24030692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum omap3isp_h3a_af_rgbpos { 24130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_GR_GB_BAYER = 0, /* GR and GB as Bayer pattern */ 24230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_RG_GB_BAYER = 1, /* RG and GB as Bayer pattern */ 24330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_GR_BG_BAYER = 2, /* GR and BG as Bayer pattern */ 24430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_RG_BG_BAYER = 3, /* RG and BG as Bayer pattern */ 24530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_GG_RB_CUSTOM = 4, /* GG and RB as custom pattern */ 24630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_AF_RB_GG_CUSTOM = 5 /* RB and GG as custom pattern */ 24730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 24830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 24930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Contains the information regarding the Horizontal Median Filter */ 25030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_h3a_af_hmf { 25130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 enable; /* Status of Horizontal Median Filter */ 25230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 threshold; /* Threshold Value for Horizontal Median Filter */ 25330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 25430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 25530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Contains the information regarding the IIR Filters */ 25630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_h3a_af_iir { 25730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_start; /* IIR horizontal start */ 25830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 coeff_set0[OMAP3ISP_AF_NUM_COEF]; /* Filter coefficient, set 0 */ 25930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 coeff_set1[OMAP3ISP_AF_NUM_COEF]; /* Filter coefficient, set 1 */ 26030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 26130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 26230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Contains the information regarding the Paxels Structure in AF Engine */ 26330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_h3a_af_paxel { 26430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_start; /* Horizontal Start Position */ 26530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 v_start; /* Vertical Start Position */ 26630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 width; /* Width of the Paxel */ 26730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 height; /* Height of the Paxel */ 26830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 h_cnt; /* Horizontal Count */ 26930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 v_cnt; /* vertical Count */ 27030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 line_inc; /* Line Increment */ 27130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 27230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 27330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Contains the parameters required for hardware set up of AF Engine */ 27430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_h3a_af_config { 27530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* 27630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Common fields. 27730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * They should be the first ones and must be in the same order as in 27830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * ispstat_generic_config struct. 27930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 28030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 buf_size; 28130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 config_counter; 28230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 28330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_h3a_af_hmf hmf; /* HMF configurations */ 28430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_h3a_af_iir iir; /* IIR filter configurations */ 28530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_h3a_af_paxel paxel; /* Paxel parameters */ 28630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum omap3isp_h3a_af_rgbpos rgb_pos; /* RGB Positions */ 28730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum omap3isp_h3a_af_fvmode fvmode; /* Accumulator mode */ 28830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 alaw_enable; /* AF ALAW status */ 28930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 29030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 29130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* ISP CCDC structs */ 29230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 29330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Abstraction layer CCDC configurations */ 29430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_ALAW (1 << 0) 29530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_LPF (1 << 1) 29630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_BLCLAMP (1 << 2) 29730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_BCOMP (1 << 3) 29830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_FPC (1 << 4) 29930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_CULL (1 << 5) 30030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_CONFIG_LSC (1 << 7) 30130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_CCDC_TBL_LSC (1 << 8) 30230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_RGB_MAX 3 30430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 30530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Enumeration constants for Alaw input width */ 30630692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum omap3isp_alaw_ipwidth { 30730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_ALAW_BIT12_3 = 0x3, 30830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_ALAW_BIT11_2 = 0x4, 30930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_ALAW_BIT10_1 = 0x5, 31030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_ALAW_BIT9_0 = 0x6 31130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 31230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 31330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 31430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_ccdc_lsc_config - LSC configuration 31530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @offset: Table Offset of the gain table. 31630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gain_mode_n: Vertical dimension of a paxel in LSC configuration. 31730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gain_mode_m: Horizontal dimension of a paxel in LSC configuration. 31830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gain_format: Gain table format. 31930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fmtsph: Start pixel horizontal from start of the HS sync pulse. 32030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fmtlnh: Number of pixels in horizontal direction to use for the data 32130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * reformatter. 32230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fmtslv: Start line from start of VS sync pulse for the data reformatter. 32330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fmtlnv: Number of lines in vertical direction for the data reformatter. 32430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @initial_x: X position, in pixels, of the first active pixel in reference 32530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to the first active paxel. Must be an even number. 32630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @initial_y: Y position, in pixels, of the first active pixel in reference 32730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * to the first active paxel. Must be an even number. 32830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @size: Size of LSC gain table. Filled when loaded from userspace. 32930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 33030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_lsc_config { 33130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 offset; 33230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gain_mode_n; 33330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gain_mode_m; 33430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gain_format; 33530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 fmtsph; 33630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 fmtlnh; 33730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 fmtslv; 33830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 fmtlnv; 33930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 initial_x; 34030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 initial_y; 34130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 size; 34230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 34330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 34430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 34530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_ccdc_bclamp - Optical & Digital black clamp subtract 34630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @obgain: Optical black average gain. 34730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @obstpixel: Start Pixel w.r.t. HS pulse in Optical black sample. 34830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @oblines: Optical Black Sample lines. 34930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @oblen: Optical Black Sample Length. 35030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @dcsubval: Digital Black Clamp subtract value. 35130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 35230692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_bclamp { 35330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 obgain; 35430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 obstpixel; 35530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 oblines; 35630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 oblen; 35730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 dcsubval; 35830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 35930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 36030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 36130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_ccdc_fpc - Faulty Pixels Correction 36230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fpnum: Number of faulty pixels to be corrected in the frame. 36330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fpcaddr: Memory address of the FPC Table 36430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 36530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_fpc { 36630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 fpnum; 36730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 fpcaddr; 36830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 36930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 37030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 37130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_ccdc_blcomp - Black Level Compensation parameters 37230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @b_mg: B/Mg pixels. 2's complement. -128 to +127. 37330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gb_g: Gb/G pixels. 2's complement. -128 to +127. 37430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gr_cy: Gr/Cy pixels. 2's complement. -128 to +127. 37530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @r_ye: R/Ye pixels. 2's complement. -128 to +127. 37630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 37730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_blcomp { 37830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 b_mg; 37930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gb_g; 38030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gr_cy; 38130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 r_ye; 38230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 38330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 38430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 38530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * omap3isp_ccdc_culling - Culling parameters 38630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @v_pattern: Vertical culling pattern. 38730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @h_odd: Horizontal Culling pattern for odd lines. 38830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @h_even: Horizontal Culling pattern for even lines. 38930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 39030692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_culling { 39130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 v_pattern; 39230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_odd; 39330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 h_even; 39430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 39530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 39630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 39730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * omap3isp_ccdc_update_config - CCDC configuration 39830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @update: Specifies which CCDC registers should be updated. 39930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flag: Specifies which CCDC functions should be enabled. 40030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @alawip: Enable/Disable A-Law compression. 40130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @bclamp: Black clamp control register. 40230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blcomp: Black level compensation value for RGrGbB Pixels. 2's complement. 40330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @fpc: Number of faulty pixels corrected in the frame, address of FPC table. 40430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @cull: Cull control register. 40530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @lsc: Pointer to LSC gain table. 40630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 40730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_ccdc_update_config { 40830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 update; 40930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 flag; 41030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum omap3isp_alaw_ipwidth alawip; 41130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_ccdc_bclamp __user *bclamp; 41230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_ccdc_blcomp __user *blcomp; 41330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_ccdc_fpc __user *fpc; 41430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_ccdc_lsc_config __user *lsc_cfg; 41530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_ccdc_culling __user *cull; 41630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 __user *lsc; 41730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 41830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 41930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Preview configurations */ 42030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_LUMAENH (1 << 0) 42130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_INVALAW (1 << 1) 42230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_HRZ_MED (1 << 2) 42330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_CFA (1 << 3) 42430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_CHROMA_SUPP (1 << 4) 42530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_WB (1 << 5) 42630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_BLKADJ (1 << 6) 42730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_RGB2RGB (1 << 7) 42830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_COLOR_CONV (1 << 8) 42930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_YC_LIMIT (1 << 9) 43030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_DEFECT_COR (1 << 10) 43130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* Bit 11 was OMAP3ISP_PREV_GAMMABYPASS, now merged with OMAP3ISP_PREV_GAMMA */ 43230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_DRK_FRM_CAPTURE (1 << 12) 43330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_DRK_FRM_SUBTRACT (1 << 13) 43430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_LENS_SHADING (1 << 14) 43530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_NF (1 << 15) 43630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_GAMMA (1 << 16) 43730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 43830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_NF_TBL_SIZE 64 43930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_CFA_TBL_SIZE 576 44030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_CFA_BLK_SIZE (OMAP3ISP_PREV_CFA_TBL_SIZE / 4) 44130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_GAMMA_TBL_SIZE 1024 44230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_YENH_TBL_SIZE 128 44330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 44430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS 4 44530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 44630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 44730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_hmed - Horizontal Median Filter 44830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @odddist: Distance between consecutive pixels of same color in the odd line. 44930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @evendist: Distance between consecutive pixels of same color in the even 45030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * line. 45130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @thres: Horizontal median filter threshold. 45230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 45330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_hmed { 45430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 odddist; 45530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 evendist; 45630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 thres; 45730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 45830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 45930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 46030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Enumeration for CFA Formats supported by preview 46130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 46230692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum omap3isp_cfa_fmt { 46330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_BAYER, 46430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_SONYVGA, 46530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_RGBFOVEON, 46630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_DNSPL, 46730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_HONEYCOMB, 46830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng OMAP3ISP_CFAFMT_RRGGBBFOVEON 46930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 47030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 47130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 47230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_cfa - CFA Interpolation 47330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @format: CFA Format Enum value supported by preview. 47430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gradthrs_vert: CFA Gradient Threshold - Vertical. 47530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gradthrs_horz: CFA Gradient Threshold - Horizontal. 47630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @table: Pointer to the CFA table. 47730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 47830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_cfa { 47930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum omap3isp_cfa_fmt format; 48030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gradthrs_vert; 48130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gradthrs_horz; 48230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 table[4][OMAP3ISP_PREV_CFA_BLK_SIZE]; 48330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 48430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 48530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 48630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_csup - Chrominance Suppression 48730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gain: Gain. 48830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @thres: Threshold. 48930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @hypf_en: Flag to enable/disable the High Pass Filter. 49030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 49130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_csup { 49230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 gain; 49330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 thres; 49430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 hypf_en; 49530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 49630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 49730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 49830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_wbal - White Balance 49930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @dgain: Digital gain (U10Q8). 50030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @coef3: White balance gain - COEF 3 (U8Q5). 50130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @coef2: White balance gain - COEF 2 (U8Q5). 50230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @coef1: White balance gain - COEF 1 (U8Q5). 50330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @coef0: White balance gain - COEF 0 (U8Q5). 50430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 50530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_wbal { 50630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 dgain; 50730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 coef3; 50830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 coef2; 50930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 coef1; 51030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 coef0; 51130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 51230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 51330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 51430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_blkadj - Black Level Adjustment 51530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @red: Black level offset adjustment for Red in 2's complement format 51630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @green: Black level offset adjustment for Green in 2's complement format 51730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blue: Black level offset adjustment for Blue in 2's complement format 51830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 51930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_blkadj { 52030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /*Black level offset adjustment for Red in 2's complement format */ 52130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 red; 52230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /*Black level offset adjustment for Green in 2's complement format */ 52330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 green; 52430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Black level offset adjustment for Blue in 2's complement format */ 52530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 blue; 52630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 52730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 52830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 52930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_rgbtorgb - RGB to RGB Blending 53030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @matrix: Blending values(S12Q8 format) 53130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [RR] [GR] [BR] 53230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [RG] [GG] [BG] 53330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [RB] [GB] [BB] 53430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @offset: Blending offset value for R,G,B in 2's complement integer format. 53530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 53630692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_rgbtorgb { 53730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX]; 53830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 offset[OMAP3ISP_RGB_MAX]; 53930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 54030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 54130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 54230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_csc - Color Space Conversion from RGB-YCbYCr 54330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @matrix: Color space conversion coefficients(S10Q8) 54430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [CSCRY] [CSCGY] [CSCBY] 54530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [CSCRCB] [CSCGCB] [CSCBCB] 54630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * [CSCRCR] [CSCGCR] [CSCBCR] 54730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @offset: CSC offset values for Y offset, CB offset and CR offset respectively 54830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 54930692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_csc { 55030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u16 matrix[OMAP3ISP_RGB_MAX][OMAP3ISP_RGB_MAX]; 55130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __s16 offset[OMAP3ISP_RGB_MAX]; 55230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 55330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 55430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 55530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_yclimit - Y, C Value Limit 55630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @minC: Minimum C value 55730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @maxC: Maximum C value 55830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @minY: Minimum Y value 55930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @maxY: Maximum Y value 56030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 56130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_yclimit { 56230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 minC; 56330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 maxC; 56430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 minY; 56530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 maxY; 56630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 56730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 56830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 56930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_dcor - Defect correction 57030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @couplet_mode_en: Flag to enable or disable the couplet dc Correction in NF 57130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @detect_correct: Thresholds for correction bit 0:10 detect 16:25 correct 57230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 57330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_dcor { 57430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 couplet_mode_en; 57530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 detect_correct[OMAP3ISP_PREV_DETECT_CORRECT_CHANNELS]; 57630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 57730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 57830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 57930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_nf - Noise Filter 58030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @spread: Spread value to be used in Noise Filter 58130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @table: Pointer to the Noise Filter table 58230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 58330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_nf { 58430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u8 spread; 58530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 table[OMAP3ISP_PREV_NF_TBL_SIZE]; 58630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 58730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 58830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 58930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_gtables - Gamma correction tables 59030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @red: Array for red gamma table. 59130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @green: Array for green gamma table. 59230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blue: Array for blue gamma table. 59330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 59430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_gtables { 59530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 red[OMAP3ISP_PREV_GAMMA_TBL_SIZE]; 59630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 green[OMAP3ISP_PREV_GAMMA_TBL_SIZE]; 59730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 blue[OMAP3ISP_PREV_GAMMA_TBL_SIZE]; 59830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 59930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 60030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 60130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_luma - Luma enhancement 60230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @table: Array for luma enhancement table. 60330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 60430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_luma { 60530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 table[OMAP3ISP_PREV_YENH_TBL_SIZE]; 60630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 60730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 60830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/** 60930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * struct omap3isp_prev_update_config - Preview engine configuration (user) 61030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @update: Specifies which ISP Preview registers should be updated. 61130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @flag: Specifies which ISP Preview functions should be enabled. 61230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @shading_shift: 3bit value of shift used in shading compensation. 61330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @luma: Pointer to luma enhancement structure. 61430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @hmed: Pointer to structure containing the odd and even distance. 61530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * between the pixels in the image along with the filter threshold. 61630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @cfa: Pointer to structure containing the CFA interpolation table, CFA. 61730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * format in the image, vertical and horizontal gradient threshold. 61830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @csup: Pointer to Structure for Chrominance Suppression coefficients. 61930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @wbal: Pointer to structure for White Balance. 62030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @blkadj: Pointer to structure for Black Adjustment. 62130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @rgb2rgb: Pointer to structure for RGB to RGB Blending. 62230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @csc: Pointer to structure for Color Space Conversion from RGB-YCbYCr. 62330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @yclimit: Pointer to structure for Y, C Value Limit. 62430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @dcor: Pointer to structure for defect correction. 62530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @nf: Pointer to structure for Noise Filter 62630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * @gamma: Pointer to gamma structure. 62730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 62830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct omap3isp_prev_update_config { 62930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 update; 63030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 flag; 63130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 shading_shift; 63230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_luma __user *luma; 63330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_hmed __user *hmed; 63430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_cfa __user *cfa; 63530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_csup __user *csup; 63630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_wbal __user *wbal; 63730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_blkadj __user *blkadj; 63830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_rgbtorgb __user *rgb2rgb; 63930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_csc __user *csc; 64030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_yclimit __user *yclimit; 64130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_dcor __user *dcor; 64230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_nf __user *nf; 64330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng struct omap3isp_prev_gtables __user *gamma; 64430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 64530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 64630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* OMAP3_ISP_USER_H */ 647