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