162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Samsung EXYNOS4x12 FIMC-IS (Imaging Subsystem) driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd.
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Authors: Younghwan Joo <yhwan.joo@samsung.com>
862306a36Sopenharmony_ci *	    Sylwester Nawrocki <s.nawrocki@samsung.com>
962306a36Sopenharmony_ci */
1062306a36Sopenharmony_ci#ifndef FIMC_IS_PARAM_H_
1162306a36Sopenharmony_ci#define FIMC_IS_PARAM_H_
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#include <linux/compiler.h>
1462306a36Sopenharmony_ci
1562306a36Sopenharmony_ci#define FIMC_IS_CONFIG_TIMEOUT		3000 /* ms */
1662306a36Sopenharmony_ci#define IS_DEFAULT_WIDTH		1280
1762306a36Sopenharmony_ci#define IS_DEFAULT_HEIGHT		720
1862306a36Sopenharmony_ci
1962306a36Sopenharmony_ci#define DEFAULT_PREVIEW_STILL_WIDTH	IS_DEFAULT_WIDTH
2062306a36Sopenharmony_ci#define DEFAULT_PREVIEW_STILL_HEIGHT	IS_DEFAULT_HEIGHT
2162306a36Sopenharmony_ci#define DEFAULT_CAPTURE_STILL_WIDTH	IS_DEFAULT_WIDTH
2262306a36Sopenharmony_ci#define DEFAULT_CAPTURE_STILL_HEIGHT	IS_DEFAULT_HEIGHT
2362306a36Sopenharmony_ci#define DEFAULT_PREVIEW_VIDEO_WIDTH	IS_DEFAULT_WIDTH
2462306a36Sopenharmony_ci#define DEFAULT_PREVIEW_VIDEO_HEIGHT	IS_DEFAULT_HEIGHT
2562306a36Sopenharmony_ci#define DEFAULT_CAPTURE_VIDEO_WIDTH	IS_DEFAULT_WIDTH
2662306a36Sopenharmony_ci#define DEFAULT_CAPTURE_VIDEO_HEIGHT	IS_DEFAULT_HEIGHT
2762306a36Sopenharmony_ci
2862306a36Sopenharmony_ci#define DEFAULT_PREVIEW_STILL_FRAMERATE	30
2962306a36Sopenharmony_ci#define DEFAULT_CAPTURE_STILL_FRAMERATE	15
3062306a36Sopenharmony_ci#define DEFAULT_PREVIEW_VIDEO_FRAMERATE	30
3162306a36Sopenharmony_ci#define DEFAULT_CAPTURE_VIDEO_FRAMERATE	30
3262306a36Sopenharmony_ci
3362306a36Sopenharmony_ci#define FIMC_IS_REGION_VER		124 /* IS REGION VERSION 1.24 */
3462306a36Sopenharmony_ci#define FIMC_IS_PARAM_SIZE		(FIMC_IS_REGION_SIZE + 1)
3562306a36Sopenharmony_ci#define FIMC_IS_MAGIC_NUMBER		0x01020304
3662306a36Sopenharmony_ci#define FIMC_IS_PARAM_MAX_SIZE		64 /* in bytes */
3762306a36Sopenharmony_ci#define FIMC_IS_PARAM_MAX_ENTRIES	(FIMC_IS_PARAM_MAX_SIZE / 4)
3862306a36Sopenharmony_ci
3962306a36Sopenharmony_ci/* The parameter bitmask bit definitions. */
4062306a36Sopenharmony_cienum is_param_bit {
4162306a36Sopenharmony_ci	PARAM_GLOBAL_SHOTMODE,
4262306a36Sopenharmony_ci	PARAM_SENSOR_CONTROL,
4362306a36Sopenharmony_ci	PARAM_SENSOR_OTF_OUTPUT,
4462306a36Sopenharmony_ci	PARAM_SENSOR_FRAME_RATE,
4562306a36Sopenharmony_ci	PARAM_BUFFER_CONTROL,
4662306a36Sopenharmony_ci	PARAM_BUFFER_OTF_INPUT,
4762306a36Sopenharmony_ci	PARAM_BUFFER_OTF_OUTPUT,
4862306a36Sopenharmony_ci	PARAM_ISP_CONTROL,
4962306a36Sopenharmony_ci	PARAM_ISP_OTF_INPUT,
5062306a36Sopenharmony_ci	PARAM_ISP_DMA1_INPUT,
5162306a36Sopenharmony_ci	/* 10 */
5262306a36Sopenharmony_ci	PARAM_ISP_DMA2_INPUT,
5362306a36Sopenharmony_ci	PARAM_ISP_AA,
5462306a36Sopenharmony_ci	PARAM_ISP_FLASH,
5562306a36Sopenharmony_ci	PARAM_ISP_AWB,
5662306a36Sopenharmony_ci	PARAM_ISP_IMAGE_EFFECT,
5762306a36Sopenharmony_ci	PARAM_ISP_ISO,
5862306a36Sopenharmony_ci	PARAM_ISP_ADJUST,
5962306a36Sopenharmony_ci	PARAM_ISP_METERING,
6062306a36Sopenharmony_ci	PARAM_ISP_AFC,
6162306a36Sopenharmony_ci	PARAM_ISP_OTF_OUTPUT,
6262306a36Sopenharmony_ci	/* 20 */
6362306a36Sopenharmony_ci	PARAM_ISP_DMA1_OUTPUT,
6462306a36Sopenharmony_ci	PARAM_ISP_DMA2_OUTPUT,
6562306a36Sopenharmony_ci	PARAM_DRC_CONTROL,
6662306a36Sopenharmony_ci	PARAM_DRC_OTF_INPUT,
6762306a36Sopenharmony_ci	PARAM_DRC_DMA_INPUT,
6862306a36Sopenharmony_ci	PARAM_DRC_OTF_OUTPUT,
6962306a36Sopenharmony_ci	PARAM_SCALERC_CONTROL,
7062306a36Sopenharmony_ci	PARAM_SCALERC_OTF_INPUT,
7162306a36Sopenharmony_ci	PARAM_SCALERC_IMAGE_EFFECT,
7262306a36Sopenharmony_ci	PARAM_SCALERC_INPUT_CROP,
7362306a36Sopenharmony_ci	/* 30 */
7462306a36Sopenharmony_ci	PARAM_SCALERC_OUTPUT_CROP,
7562306a36Sopenharmony_ci	PARAM_SCALERC_OTF_OUTPUT,
7662306a36Sopenharmony_ci	PARAM_SCALERC_DMA_OUTPUT,
7762306a36Sopenharmony_ci	PARAM_ODC_CONTROL,
7862306a36Sopenharmony_ci	PARAM_ODC_OTF_INPUT,
7962306a36Sopenharmony_ci	PARAM_ODC_OTF_OUTPUT,
8062306a36Sopenharmony_ci	PARAM_DIS_CONTROL,
8162306a36Sopenharmony_ci	PARAM_DIS_OTF_INPUT,
8262306a36Sopenharmony_ci	PARAM_DIS_OTF_OUTPUT,
8362306a36Sopenharmony_ci	PARAM_TDNR_CONTROL,
8462306a36Sopenharmony_ci	/* 40 */
8562306a36Sopenharmony_ci	PARAM_TDNR_OTF_INPUT,
8662306a36Sopenharmony_ci	PARAM_TDNR_1ST_FRAME,
8762306a36Sopenharmony_ci	PARAM_TDNR_OTF_OUTPUT,
8862306a36Sopenharmony_ci	PARAM_TDNR_DMA_OUTPUT,
8962306a36Sopenharmony_ci	PARAM_SCALERP_CONTROL,
9062306a36Sopenharmony_ci	PARAM_SCALERP_OTF_INPUT,
9162306a36Sopenharmony_ci	PARAM_SCALERP_IMAGE_EFFECT,
9262306a36Sopenharmony_ci	PARAM_SCALERP_INPUT_CROP,
9362306a36Sopenharmony_ci	PARAM_SCALERP_OUTPUT_CROP,
9462306a36Sopenharmony_ci	PARAM_SCALERP_ROTATION,
9562306a36Sopenharmony_ci	/* 50 */
9662306a36Sopenharmony_ci	PARAM_SCALERP_FLIP,
9762306a36Sopenharmony_ci	PARAM_SCALERP_OTF_OUTPUT,
9862306a36Sopenharmony_ci	PARAM_SCALERP_DMA_OUTPUT,
9962306a36Sopenharmony_ci	PARAM_FD_CONTROL,
10062306a36Sopenharmony_ci	PARAM_FD_OTF_INPUT,
10162306a36Sopenharmony_ci	PARAM_FD_DMA_INPUT,
10262306a36Sopenharmony_ci	PARAM_FD_CONFIG,
10362306a36Sopenharmony_ci};
10462306a36Sopenharmony_ci
10562306a36Sopenharmony_ci/* Interrupt map */
10662306a36Sopenharmony_ci#define	FIMC_IS_INT_GENERAL			0
10762306a36Sopenharmony_ci#define	FIMC_IS_INT_FRAME_DONE_ISP		1
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci/* Input */
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci#define CONTROL_COMMAND_STOP			0
11262306a36Sopenharmony_ci#define CONTROL_COMMAND_START			1
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci#define CONTROL_BYPASS_DISABLE			0
11562306a36Sopenharmony_ci#define CONTROL_BYPASS_ENABLE			1
11662306a36Sopenharmony_ci
11762306a36Sopenharmony_ci#define CONTROL_ERROR_NONE			0
11862306a36Sopenharmony_ci
11962306a36Sopenharmony_ci/* OTF (On-The-Fly) input interface commands */
12062306a36Sopenharmony_ci#define OTF_INPUT_COMMAND_DISABLE		0
12162306a36Sopenharmony_ci#define OTF_INPUT_COMMAND_ENABLE		1
12262306a36Sopenharmony_ci
12362306a36Sopenharmony_ci/* OTF input interface color formats */
12462306a36Sopenharmony_cienum oft_input_fmt {
12562306a36Sopenharmony_ci	OTF_INPUT_FORMAT_BAYER			= 0, /* 1 channel */
12662306a36Sopenharmony_ci	OTF_INPUT_FORMAT_YUV444			= 1, /* 3 channels */
12762306a36Sopenharmony_ci	OTF_INPUT_FORMAT_YUV422			= 2, /* 3 channels */
12862306a36Sopenharmony_ci	OTF_INPUT_FORMAT_YUV420			= 3, /* 3 channels */
12962306a36Sopenharmony_ci	OTF_INPUT_FORMAT_STRGEN_COLORBAR_BAYER	= 10,
13062306a36Sopenharmony_ci	OTF_INPUT_FORMAT_BAYER_DMA		= 11,
13162306a36Sopenharmony_ci};
13262306a36Sopenharmony_ci
13362306a36Sopenharmony_ci#define OTF_INPUT_ORDER_BAYER_GR_BG		0
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci/* OTF input error codes */
13662306a36Sopenharmony_ci#define OTF_INPUT_ERROR_NONE			0 /* Input setting is done */
13762306a36Sopenharmony_ci
13862306a36Sopenharmony_ci/* DMA input commands */
13962306a36Sopenharmony_ci#define DMA_INPUT_COMMAND_DISABLE		0
14062306a36Sopenharmony_ci#define DMA_INPUT_COMMAND_ENABLE		1
14162306a36Sopenharmony_ci
14262306a36Sopenharmony_ci/* DMA input color formats */
14362306a36Sopenharmony_cienum dma_input_fmt {
14462306a36Sopenharmony_ci	DMA_INPUT_FORMAT_BAYER			= 0,
14562306a36Sopenharmony_ci	DMA_INPUT_FORMAT_YUV444			= 1,
14662306a36Sopenharmony_ci	DMA_INPUT_FORMAT_YUV422			= 2,
14762306a36Sopenharmony_ci	DMA_INPUT_FORMAT_YUV420			= 3,
14862306a36Sopenharmony_ci};
14962306a36Sopenharmony_ci
15062306a36Sopenharmony_cienum dma_input_order {
15162306a36Sopenharmony_ci	/* (for DMA_INPUT_PLANE_3) */
15262306a36Sopenharmony_ci	DMA_INPUT_ORDER_NO	= 0,
15362306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_PLANE_2) */
15462306a36Sopenharmony_ci	DMA_INPUT_ORDER_CBCR	= 1,
15562306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_PLANE_2) */
15662306a36Sopenharmony_ci	DMA_INPUT_ORDER_CRCB	= 2,
15762306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_PLANE_1 & DMA_INPUT_FORMAT_YUV444) */
15862306a36Sopenharmony_ci	DMA_INPUT_ORDER_YCBCR	= 3,
15962306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_YUV422 & DMA_INPUT_PLANE_1) */
16062306a36Sopenharmony_ci	DMA_INPUT_ORDER_YYCBCR	= 4,
16162306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_YUV422 & DMA_INPUT_PLANE_1) */
16262306a36Sopenharmony_ci	DMA_INPUT_ORDER_YCBYCR	= 5,
16362306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_YUV422 & DMA_INPUT_PLANE_1) */
16462306a36Sopenharmony_ci	DMA_INPUT_ORDER_YCRYCB	= 6,
16562306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_YUV422 & DMA_INPUT_PLANE_1) */
16662306a36Sopenharmony_ci	DMA_INPUT_ORDER_CBYCRY	= 7,
16762306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_YUV422 & DMA_INPUT_PLANE_1) */
16862306a36Sopenharmony_ci	DMA_INPUT_ORDER_CRYCBY	= 8,
16962306a36Sopenharmony_ci	/* (only valid at DMA_INPUT_FORMAT_BAYER) */
17062306a36Sopenharmony_ci	DMA_INPUT_ORDER_GR_BG	= 9
17162306a36Sopenharmony_ci};
17262306a36Sopenharmony_ci
17362306a36Sopenharmony_ci#define DMA_INPUT_ERROR_NONE			0 /* DMA input setting
17462306a36Sopenharmony_ci						     is done */
17562306a36Sopenharmony_ci/*
17662306a36Sopenharmony_ci * Data output parameter definitions
17762306a36Sopenharmony_ci */
17862306a36Sopenharmony_ci#define OTF_OUTPUT_CROP_DISABLE			0
17962306a36Sopenharmony_ci#define OTF_OUTPUT_CROP_ENABLE			1
18062306a36Sopenharmony_ci
18162306a36Sopenharmony_ci#define OTF_OUTPUT_COMMAND_DISABLE		0
18262306a36Sopenharmony_ci#define OTF_OUTPUT_COMMAND_ENABLE		1
18362306a36Sopenharmony_ci
18462306a36Sopenharmony_cienum otf_output_fmt {
18562306a36Sopenharmony_ci	OTF_OUTPUT_FORMAT_YUV444		= 1,
18662306a36Sopenharmony_ci	OTF_OUTPUT_FORMAT_YUV422		= 2,
18762306a36Sopenharmony_ci	OTF_OUTPUT_FORMAT_YUV420		= 3,
18862306a36Sopenharmony_ci	OTF_OUTPUT_FORMAT_RGB			= 4,
18962306a36Sopenharmony_ci};
19062306a36Sopenharmony_ci
19162306a36Sopenharmony_ci#define OTF_OUTPUT_ORDER_BAYER_GR_BG		0
19262306a36Sopenharmony_ci
19362306a36Sopenharmony_ci#define OTF_OUTPUT_ERROR_NONE			0 /* Output Setting is done */
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci#define DMA_OUTPUT_COMMAND_DISABLE		0
19662306a36Sopenharmony_ci#define DMA_OUTPUT_COMMAND_ENABLE		1
19762306a36Sopenharmony_ci
19862306a36Sopenharmony_cienum dma_output_fmt {
19962306a36Sopenharmony_ci	DMA_OUTPUT_FORMAT_BAYER			= 0,
20062306a36Sopenharmony_ci	DMA_OUTPUT_FORMAT_YUV444		= 1,
20162306a36Sopenharmony_ci	DMA_OUTPUT_FORMAT_YUV422		= 2,
20262306a36Sopenharmony_ci	DMA_OUTPUT_FORMAT_YUV420		= 3,
20362306a36Sopenharmony_ci	DMA_OUTPUT_FORMAT_RGB			= 4,
20462306a36Sopenharmony_ci};
20562306a36Sopenharmony_ci
20662306a36Sopenharmony_cienum dma_output_order {
20762306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_NO		= 0,
20862306a36Sopenharmony_ci	/* for DMA_OUTPUT_PLANE_3 */
20962306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CBCR		= 1,
21062306a36Sopenharmony_ci	/* only valid at DMA_INPUT_PLANE_2) */
21162306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CRCB		= 2,
21262306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_PLANE_2) */
21362306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_YYCBCR		= 3,
21462306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV422 & DMA_OUTPUT_PLANE_1 */
21562306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_YCBYCR		= 4,
21662306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV422 & DMA_OUTPUT_PLANE_1 */
21762306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_YCRYCB		= 5,
21862306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV422 & DMA_OUTPUT_PLANE_1 */
21962306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CBYCRY		= 6,
22062306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV422 & DMA_OUTPUT_PLANE_1 */
22162306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CRYCBY		= 7,
22262306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV422 & DMA_OUTPUT_PLANE_1 */
22362306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_YCBCR		= 8,
22462306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
22562306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CRYCB		= 9,
22662306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
22762306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CRCBY		= 10,
22862306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
22962306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CBYCR		= 11,
23062306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
23162306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_YCRCB		= 12,
23262306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
23362306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_CBCRY		= 13,
23462306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_YUV444 & DMA_OUPUT_PLANE_1 */
23562306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_BGR		= 14,
23662306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_RGB */
23762306a36Sopenharmony_ci	DMA_OUTPUT_ORDER_GB_BG		= 15
23862306a36Sopenharmony_ci	/* only valid at DMA_OUTPUT_FORMAT_BAYER */
23962306a36Sopenharmony_ci};
24062306a36Sopenharmony_ci
24162306a36Sopenharmony_ci/* enum dma_output_notify_dma_done */
24262306a36Sopenharmony_ci#define DMA_OUTPUT_NOTIFY_DMA_DONE_DISABLE	0
24362306a36Sopenharmony_ci#define DMA_OUTPUT_NOTIFY_DMA_DONE_ENABLE	1
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci/* DMA output error codes */
24662306a36Sopenharmony_ci#define DMA_OUTPUT_ERROR_NONE			0 /* DMA output setting
24762306a36Sopenharmony_ci						     is done */
24862306a36Sopenharmony_ci
24962306a36Sopenharmony_ci/* ----------------------  Global  ----------------------------------- */
25062306a36Sopenharmony_ci#define GLOBAL_SHOTMODE_ERROR_NONE		0 /* shot-mode setting
25162306a36Sopenharmony_ci						     is done */
25262306a36Sopenharmony_ci/* 3A lock commands */
25362306a36Sopenharmony_ci#define ISP_AA_COMMAND_START			0
25462306a36Sopenharmony_ci#define ISP_AA_COMMAND_STOP			1
25562306a36Sopenharmony_ci
25662306a36Sopenharmony_ci/* 3A lock target */
25762306a36Sopenharmony_ci#define ISP_AA_TARGET_AF			1
25862306a36Sopenharmony_ci#define ISP_AA_TARGET_AE			2
25962306a36Sopenharmony_ci#define ISP_AA_TARGET_AWB			4
26062306a36Sopenharmony_ci
26162306a36Sopenharmony_cienum isp_af_mode {
26262306a36Sopenharmony_ci	ISP_AF_MODE_MANUAL			= 0,
26362306a36Sopenharmony_ci	ISP_AF_MODE_SINGLE			= 1,
26462306a36Sopenharmony_ci	ISP_AF_MODE_CONTINUOUS			= 2,
26562306a36Sopenharmony_ci	ISP_AF_MODE_TOUCH			= 3,
26662306a36Sopenharmony_ci	ISP_AF_MODE_SLEEP			= 4,
26762306a36Sopenharmony_ci	ISP_AF_MODE_INIT			= 5,
26862306a36Sopenharmony_ci	ISP_AF_MODE_SET_CENTER_WINDOW		= 6,
26962306a36Sopenharmony_ci	ISP_AF_MODE_SET_TOUCH_WINDOW		= 7
27062306a36Sopenharmony_ci};
27162306a36Sopenharmony_ci
27262306a36Sopenharmony_ci/* Face AF commands */
27362306a36Sopenharmony_ci#define ISP_AF_FACE_DISABLE			0
27462306a36Sopenharmony_ci#define ISP_AF_FACE_ENABLE			1
27562306a36Sopenharmony_ci
27662306a36Sopenharmony_ci/* AF range */
27762306a36Sopenharmony_ci#define ISP_AF_RANGE_NORMAL			0
27862306a36Sopenharmony_ci#define ISP_AF_RANGE_MACRO			1
27962306a36Sopenharmony_ci
28062306a36Sopenharmony_ci/* AF sleep */
28162306a36Sopenharmony_ci#define ISP_AF_SLEEP_OFF			0
28262306a36Sopenharmony_ci#define ISP_AF_SLEEP_ON				1
28362306a36Sopenharmony_ci
28462306a36Sopenharmony_ci/* Continuous AF commands */
28562306a36Sopenharmony_ci#define ISP_AF_CONTINUOUS_DISABLE		0
28662306a36Sopenharmony_ci#define ISP_AF_CONTINUOUS_ENABLE		1
28762306a36Sopenharmony_ci
28862306a36Sopenharmony_ci/* ISP AF error codes */
28962306a36Sopenharmony_ci#define ISP_AF_ERROR_NONE			0 /* AF mode change is done */
29062306a36Sopenharmony_ci#define ISP_AF_ERROR_NONE_LOCK_DONE		1 /* AF lock is done */
29162306a36Sopenharmony_ci
29262306a36Sopenharmony_ci/* Flash commands */
29362306a36Sopenharmony_ci#define ISP_FLASH_COMMAND_DISABLE		0
29462306a36Sopenharmony_ci#define ISP_FLASH_COMMAND_MANUAL_ON		1 /* (forced flash) */
29562306a36Sopenharmony_ci#define ISP_FLASH_COMMAND_AUTO			2
29662306a36Sopenharmony_ci#define ISP_FLASH_COMMAND_TORCH			3 /* 3 sec */
29762306a36Sopenharmony_ci
29862306a36Sopenharmony_ci/* Flash red-eye commands */
29962306a36Sopenharmony_ci#define ISP_FLASH_REDEYE_DISABLE		0
30062306a36Sopenharmony_ci#define ISP_FLASH_REDEYE_ENABLE			1
30162306a36Sopenharmony_ci
30262306a36Sopenharmony_ci/* Flash error codes */
30362306a36Sopenharmony_ci#define ISP_FLASH_ERROR_NONE			0 /* Flash setting is done */
30462306a36Sopenharmony_ci
30562306a36Sopenharmony_ci/* --------------------------  AWB  ------------------------------------ */
30662306a36Sopenharmony_cienum isp_awb_command {
30762306a36Sopenharmony_ci	ISP_AWB_COMMAND_AUTO			= 0,
30862306a36Sopenharmony_ci	ISP_AWB_COMMAND_ILLUMINATION		= 1,
30962306a36Sopenharmony_ci	ISP_AWB_COMMAND_MANUAL			= 2
31062306a36Sopenharmony_ci};
31162306a36Sopenharmony_ci
31262306a36Sopenharmony_cienum isp_awb_illumination {
31362306a36Sopenharmony_ci	ISP_AWB_ILLUMINATION_DAYLIGHT		= 0,
31462306a36Sopenharmony_ci	ISP_AWB_ILLUMINATION_CLOUDY		= 1,
31562306a36Sopenharmony_ci	ISP_AWB_ILLUMINATION_TUNGSTEN		= 2,
31662306a36Sopenharmony_ci	ISP_AWB_ILLUMINATION_FLUORESCENT	= 3
31762306a36Sopenharmony_ci};
31862306a36Sopenharmony_ci
31962306a36Sopenharmony_ci/* ISP AWN error codes */
32062306a36Sopenharmony_ci#define ISP_AWB_ERROR_NONE			0 /* AWB setting is done */
32162306a36Sopenharmony_ci
32262306a36Sopenharmony_ci/* --------------------------  Effect  ----------------------------------- */
32362306a36Sopenharmony_cienum isp_imageeffect_command {
32462306a36Sopenharmony_ci	ISP_IMAGE_EFFECT_DISABLE		= 0,
32562306a36Sopenharmony_ci	ISP_IMAGE_EFFECT_MONOCHROME		= 1,
32662306a36Sopenharmony_ci	ISP_IMAGE_EFFECT_NEGATIVE_MONO		= 2,
32762306a36Sopenharmony_ci	ISP_IMAGE_EFFECT_NEGATIVE_COLOR		= 3,
32862306a36Sopenharmony_ci	ISP_IMAGE_EFFECT_SEPIA			= 4
32962306a36Sopenharmony_ci};
33062306a36Sopenharmony_ci
33162306a36Sopenharmony_ci/* Image effect error codes */
33262306a36Sopenharmony_ci#define ISP_IMAGE_EFFECT_ERROR_NONE		0 /* Image effect setting
33362306a36Sopenharmony_ci						     is done */
33462306a36Sopenharmony_ci/* ISO commands */
33562306a36Sopenharmony_ci#define ISP_ISO_COMMAND_AUTO			0
33662306a36Sopenharmony_ci#define ISP_ISO_COMMAND_MANUAL			1
33762306a36Sopenharmony_ci
33862306a36Sopenharmony_ci/* ISO error codes */
33962306a36Sopenharmony_ci#define ISP_ISO_ERROR_NONE			0 /* ISO setting is done */
34062306a36Sopenharmony_ci
34162306a36Sopenharmony_ci/* ISP adjust commands */
34262306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_AUTO			(0 << 0)
34362306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_CONTRAST	(1 << 0)
34462306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_SATURATION	(1 << 1)
34562306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_SHARPNESS	(1 << 2)
34662306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_EXPOSURE	(1 << 3)
34762306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_BRIGHTNESS	(1 << 4)
34862306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_HUE		(1 << 5)
34962306a36Sopenharmony_ci#define ISP_ADJUST_COMMAND_MANUAL_ALL		0x7f
35062306a36Sopenharmony_ci
35162306a36Sopenharmony_ci/* ISP adjustment error codes */
35262306a36Sopenharmony_ci#define ISP_ADJUST_ERROR_NONE			0 /* Adjust setting is done */
35362306a36Sopenharmony_ci
35462306a36Sopenharmony_ci/*
35562306a36Sopenharmony_ci *  Exposure metering
35662306a36Sopenharmony_ci */
35762306a36Sopenharmony_cienum isp_metering_command {
35862306a36Sopenharmony_ci	ISP_METERING_COMMAND_AVERAGE	= 0,
35962306a36Sopenharmony_ci	ISP_METERING_COMMAND_SPOT	= 1,
36062306a36Sopenharmony_ci	ISP_METERING_COMMAND_MATRIX	= 2,
36162306a36Sopenharmony_ci	ISP_METERING_COMMAND_CENTER	= 3
36262306a36Sopenharmony_ci};
36362306a36Sopenharmony_ci
36462306a36Sopenharmony_ci/* ISP metering error codes */
36562306a36Sopenharmony_ci#define ISP_METERING_ERROR_NONE		0 /* Metering setting is done */
36662306a36Sopenharmony_ci
36762306a36Sopenharmony_ci/*
36862306a36Sopenharmony_ci * AFC
36962306a36Sopenharmony_ci */
37062306a36Sopenharmony_cienum isp_afc_command {
37162306a36Sopenharmony_ci	ISP_AFC_COMMAND_DISABLE		= 0,
37262306a36Sopenharmony_ci	ISP_AFC_COMMAND_AUTO		= 1,
37362306a36Sopenharmony_ci	ISP_AFC_COMMAND_MANUAL		= 2,
37462306a36Sopenharmony_ci};
37562306a36Sopenharmony_ci
37662306a36Sopenharmony_ci#define ISP_AFC_MANUAL_50HZ		50
37762306a36Sopenharmony_ci#define ISP_AFC_MANUAL_60HZ		60
37862306a36Sopenharmony_ci
37962306a36Sopenharmony_ci/* ------------------------  SCENE MODE--------------------------------- */
38062306a36Sopenharmony_cienum isp_scene_mode {
38162306a36Sopenharmony_ci	ISP_SCENE_NONE			= 0,
38262306a36Sopenharmony_ci	ISP_SCENE_PORTRAIT		= 1,
38362306a36Sopenharmony_ci	ISP_SCENE_LANDSCAPE		= 2,
38462306a36Sopenharmony_ci	ISP_SCENE_SPORTS		= 3,
38562306a36Sopenharmony_ci	ISP_SCENE_PARTYINDOOR		= 4,
38662306a36Sopenharmony_ci	ISP_SCENE_BEACHSNOW		= 5,
38762306a36Sopenharmony_ci	ISP_SCENE_SUNSET		= 6,
38862306a36Sopenharmony_ci	ISP_SCENE_DAWN			= 7,
38962306a36Sopenharmony_ci	ISP_SCENE_FALL			= 8,
39062306a36Sopenharmony_ci	ISP_SCENE_NIGHT			= 9,
39162306a36Sopenharmony_ci	ISP_SCENE_AGAINSTLIGHTWLIGHT	= 10,
39262306a36Sopenharmony_ci	ISP_SCENE_AGAINSTLIGHTWOLIGHT	= 11,
39362306a36Sopenharmony_ci	ISP_SCENE_FIRE			= 12,
39462306a36Sopenharmony_ci	ISP_SCENE_TEXT			= 13,
39562306a36Sopenharmony_ci	ISP_SCENE_CANDLE		= 14
39662306a36Sopenharmony_ci};
39762306a36Sopenharmony_ci
39862306a36Sopenharmony_ci/* AFC error codes */
39962306a36Sopenharmony_ci#define ISP_AFC_ERROR_NONE		0 /* AFC setting is done */
40062306a36Sopenharmony_ci
40162306a36Sopenharmony_ci/* ----------------------------  FD  ------------------------------------- */
40262306a36Sopenharmony_cienum fd_config_command {
40362306a36Sopenharmony_ci	FD_CONFIG_COMMAND_MAXIMUM_NUMBER	= 0x1,
40462306a36Sopenharmony_ci	FD_CONFIG_COMMAND_ROLL_ANGLE		= 0x2,
40562306a36Sopenharmony_ci	FD_CONFIG_COMMAND_YAW_ANGLE		= 0x4,
40662306a36Sopenharmony_ci	FD_CONFIG_COMMAND_SMILE_MODE		= 0x8,
40762306a36Sopenharmony_ci	FD_CONFIG_COMMAND_BLINK_MODE		= 0x10,
40862306a36Sopenharmony_ci	FD_CONFIG_COMMAND_EYES_DETECT		= 0x20,
40962306a36Sopenharmony_ci	FD_CONFIG_COMMAND_MOUTH_DETECT		= 0x40,
41062306a36Sopenharmony_ci	FD_CONFIG_COMMAND_ORIENTATION		= 0x80,
41162306a36Sopenharmony_ci	FD_CONFIG_COMMAND_ORIENTATION_VALUE	= 0x100
41262306a36Sopenharmony_ci};
41362306a36Sopenharmony_ci
41462306a36Sopenharmony_cienum fd_config_roll_angle {
41562306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_BASIC		= 0,
41662306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_PRECISE_BASIC	= 1,
41762306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_SIDES		= 2,
41862306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_PRECISE_SIDES	= 3,
41962306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_FULL		= 4,
42062306a36Sopenharmony_ci	FD_CONFIG_ROLL_ANGLE_PRECISE_FULL	= 5,
42162306a36Sopenharmony_ci};
42262306a36Sopenharmony_ci
42362306a36Sopenharmony_cienum fd_config_yaw_angle {
42462306a36Sopenharmony_ci	FD_CONFIG_YAW_ANGLE_0			= 0,
42562306a36Sopenharmony_ci	FD_CONFIG_YAW_ANGLE_45			= 1,
42662306a36Sopenharmony_ci	FD_CONFIG_YAW_ANGLE_90			= 2,
42762306a36Sopenharmony_ci	FD_CONFIG_YAW_ANGLE_45_90		= 3,
42862306a36Sopenharmony_ci};
42962306a36Sopenharmony_ci
43062306a36Sopenharmony_ci/* Smile mode configuration */
43162306a36Sopenharmony_ci#define FD_CONFIG_SMILE_MODE_DISABLE		0
43262306a36Sopenharmony_ci#define FD_CONFIG_SMILE_MODE_ENABLE		1
43362306a36Sopenharmony_ci
43462306a36Sopenharmony_ci/* Blink mode configuration */
43562306a36Sopenharmony_ci#define FD_CONFIG_BLINK_MODE_DISABLE		0
43662306a36Sopenharmony_ci#define FD_CONFIG_BLINK_MODE_ENABLE		1
43762306a36Sopenharmony_ci
43862306a36Sopenharmony_ci/* Eyes detection configuration */
43962306a36Sopenharmony_ci#define FD_CONFIG_EYES_DETECT_DISABLE		0
44062306a36Sopenharmony_ci#define FD_CONFIG_EYES_DETECT_ENABLE		1
44162306a36Sopenharmony_ci
44262306a36Sopenharmony_ci/* Mouth detection configuration */
44362306a36Sopenharmony_ci#define FD_CONFIG_MOUTH_DETECT_DISABLE		0
44462306a36Sopenharmony_ci#define FD_CONFIG_MOUTH_DETECT_ENABLE		1
44562306a36Sopenharmony_ci
44662306a36Sopenharmony_ci#define FD_CONFIG_ORIENTATION_DISABLE		0
44762306a36Sopenharmony_ci#define FD_CONFIG_ORIENTATION_ENABLE		1
44862306a36Sopenharmony_ci
44962306a36Sopenharmony_cistruct param_control {
45062306a36Sopenharmony_ci	u32 cmd;
45162306a36Sopenharmony_ci	u32 bypass;
45262306a36Sopenharmony_ci	u32 buffer_address;
45362306a36Sopenharmony_ci	u32 buffer_size;
45462306a36Sopenharmony_ci	u32 skip_frames; /* only valid at ISP */
45562306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 6];
45662306a36Sopenharmony_ci	u32 err;
45762306a36Sopenharmony_ci};
45862306a36Sopenharmony_ci
45962306a36Sopenharmony_cistruct param_otf_input {
46062306a36Sopenharmony_ci	u32 cmd;
46162306a36Sopenharmony_ci	u32 width;
46262306a36Sopenharmony_ci	u32 height;
46362306a36Sopenharmony_ci	u32 format;
46462306a36Sopenharmony_ci	u32 bitwidth;
46562306a36Sopenharmony_ci	u32 order;
46662306a36Sopenharmony_ci	u32 crop_offset_x;
46762306a36Sopenharmony_ci	u32 crop_offset_y;
46862306a36Sopenharmony_ci	u32 crop_width;
46962306a36Sopenharmony_ci	u32 crop_height;
47062306a36Sopenharmony_ci	u32 frametime_min;
47162306a36Sopenharmony_ci	u32 frametime_max;
47262306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 13];
47362306a36Sopenharmony_ci	u32 err;
47462306a36Sopenharmony_ci};
47562306a36Sopenharmony_ci
47662306a36Sopenharmony_cistruct param_dma_input {
47762306a36Sopenharmony_ci	u32 cmd;
47862306a36Sopenharmony_ci	u32 width;
47962306a36Sopenharmony_ci	u32 height;
48062306a36Sopenharmony_ci	u32 format;
48162306a36Sopenharmony_ci	u32 bitwidth;
48262306a36Sopenharmony_ci	u32 plane;
48362306a36Sopenharmony_ci	u32 order;
48462306a36Sopenharmony_ci	u32 buffer_number;
48562306a36Sopenharmony_ci	u32 buffer_address;
48662306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 10];
48762306a36Sopenharmony_ci	u32 err;
48862306a36Sopenharmony_ci};
48962306a36Sopenharmony_ci
49062306a36Sopenharmony_cistruct param_otf_output {
49162306a36Sopenharmony_ci	u32 cmd;
49262306a36Sopenharmony_ci	u32 width;
49362306a36Sopenharmony_ci	u32 height;
49462306a36Sopenharmony_ci	u32 format;
49562306a36Sopenharmony_ci	u32 bitwidth;
49662306a36Sopenharmony_ci	u32 order;
49762306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 7];
49862306a36Sopenharmony_ci	u32 err;
49962306a36Sopenharmony_ci};
50062306a36Sopenharmony_ci
50162306a36Sopenharmony_cistruct param_dma_output {
50262306a36Sopenharmony_ci	u32 cmd;
50362306a36Sopenharmony_ci	u32 width;
50462306a36Sopenharmony_ci	u32 height;
50562306a36Sopenharmony_ci	u32 format;
50662306a36Sopenharmony_ci	u32 bitwidth;
50762306a36Sopenharmony_ci	u32 plane;
50862306a36Sopenharmony_ci	u32 order;
50962306a36Sopenharmony_ci	u32 buffer_number;
51062306a36Sopenharmony_ci	u32 buffer_address;
51162306a36Sopenharmony_ci	u32 notify_dma_done;
51262306a36Sopenharmony_ci	u32 dma_out_mask;
51362306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 12];
51462306a36Sopenharmony_ci	u32 err;
51562306a36Sopenharmony_ci};
51662306a36Sopenharmony_ci
51762306a36Sopenharmony_cistruct param_global_shotmode {
51862306a36Sopenharmony_ci	u32 cmd;
51962306a36Sopenharmony_ci	u32 skip_frames;
52062306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 3];
52162306a36Sopenharmony_ci	u32 err;
52262306a36Sopenharmony_ci};
52362306a36Sopenharmony_ci
52462306a36Sopenharmony_cistruct param_sensor_framerate {
52562306a36Sopenharmony_ci	u32 frame_rate;
52662306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 2];
52762306a36Sopenharmony_ci	u32 err;
52862306a36Sopenharmony_ci};
52962306a36Sopenharmony_ci
53062306a36Sopenharmony_cistruct param_isp_aa {
53162306a36Sopenharmony_ci	u32 cmd;
53262306a36Sopenharmony_ci	u32 target;
53362306a36Sopenharmony_ci	u32 mode;
53462306a36Sopenharmony_ci	u32 scene;
53562306a36Sopenharmony_ci	u32 sleep;
53662306a36Sopenharmony_ci	u32 face;
53762306a36Sopenharmony_ci	u32 touch_x;
53862306a36Sopenharmony_ci	u32 touch_y;
53962306a36Sopenharmony_ci	u32 manual_af_setting;
54062306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 10];
54162306a36Sopenharmony_ci	u32 err;
54262306a36Sopenharmony_ci};
54362306a36Sopenharmony_ci
54462306a36Sopenharmony_cistruct param_isp_flash {
54562306a36Sopenharmony_ci	u32 cmd;
54662306a36Sopenharmony_ci	u32 redeye;
54762306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 3];
54862306a36Sopenharmony_ci	u32 err;
54962306a36Sopenharmony_ci};
55062306a36Sopenharmony_ci
55162306a36Sopenharmony_cistruct param_isp_awb {
55262306a36Sopenharmony_ci	u32 cmd;
55362306a36Sopenharmony_ci	u32 illumination;
55462306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 3];
55562306a36Sopenharmony_ci	u32 err;
55662306a36Sopenharmony_ci};
55762306a36Sopenharmony_ci
55862306a36Sopenharmony_cistruct param_isp_imageeffect {
55962306a36Sopenharmony_ci	u32 cmd;
56062306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 2];
56162306a36Sopenharmony_ci	u32 err;
56262306a36Sopenharmony_ci};
56362306a36Sopenharmony_ci
56462306a36Sopenharmony_cistruct param_isp_iso {
56562306a36Sopenharmony_ci	u32 cmd;
56662306a36Sopenharmony_ci	u32 value;
56762306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 3];
56862306a36Sopenharmony_ci	u32 err;
56962306a36Sopenharmony_ci};
57062306a36Sopenharmony_ci
57162306a36Sopenharmony_cistruct param_isp_adjust {
57262306a36Sopenharmony_ci	u32 cmd;
57362306a36Sopenharmony_ci	s32 contrast;
57462306a36Sopenharmony_ci	s32 saturation;
57562306a36Sopenharmony_ci	s32 sharpness;
57662306a36Sopenharmony_ci	s32 exposure;
57762306a36Sopenharmony_ci	s32 brightness;
57862306a36Sopenharmony_ci	s32 hue;
57962306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 8];
58062306a36Sopenharmony_ci	u32 err;
58162306a36Sopenharmony_ci};
58262306a36Sopenharmony_ci
58362306a36Sopenharmony_cistruct param_isp_metering {
58462306a36Sopenharmony_ci	u32 cmd;
58562306a36Sopenharmony_ci	u32 win_pos_x;
58662306a36Sopenharmony_ci	u32 win_pos_y;
58762306a36Sopenharmony_ci	u32 win_width;
58862306a36Sopenharmony_ci	u32 win_height;
58962306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 6];
59062306a36Sopenharmony_ci	u32 err;
59162306a36Sopenharmony_ci};
59262306a36Sopenharmony_ci
59362306a36Sopenharmony_cistruct param_isp_afc {
59462306a36Sopenharmony_ci	u32 cmd;
59562306a36Sopenharmony_ci	u32 manual;
59662306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 3];
59762306a36Sopenharmony_ci	u32 err;
59862306a36Sopenharmony_ci};
59962306a36Sopenharmony_ci
60062306a36Sopenharmony_cistruct param_scaler_imageeffect {
60162306a36Sopenharmony_ci	u32 cmd;
60262306a36Sopenharmony_ci	u32 arbitrary_cb;
60362306a36Sopenharmony_ci	u32 arbitrary_cr;
60462306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 4];
60562306a36Sopenharmony_ci	u32 err;
60662306a36Sopenharmony_ci};
60762306a36Sopenharmony_ci
60862306a36Sopenharmony_cistruct param_scaler_input_crop {
60962306a36Sopenharmony_ci	u32 cmd;
61062306a36Sopenharmony_ci	u32 crop_offset_x;
61162306a36Sopenharmony_ci	u32 crop_offset_y;
61262306a36Sopenharmony_ci	u32 crop_width;
61362306a36Sopenharmony_ci	u32 crop_height;
61462306a36Sopenharmony_ci	u32 in_width;
61562306a36Sopenharmony_ci	u32 in_height;
61662306a36Sopenharmony_ci	u32 out_width;
61762306a36Sopenharmony_ci	u32 out_height;
61862306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 10];
61962306a36Sopenharmony_ci	u32 err;
62062306a36Sopenharmony_ci};
62162306a36Sopenharmony_ci
62262306a36Sopenharmony_cistruct param_scaler_output_crop {
62362306a36Sopenharmony_ci	u32 cmd;
62462306a36Sopenharmony_ci	u32 crop_offset_x;
62562306a36Sopenharmony_ci	u32 crop_offset_y;
62662306a36Sopenharmony_ci	u32 crop_width;
62762306a36Sopenharmony_ci	u32 crop_height;
62862306a36Sopenharmony_ci	u32 out_format;
62962306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 7];
63062306a36Sopenharmony_ci	u32 err;
63162306a36Sopenharmony_ci};
63262306a36Sopenharmony_ci
63362306a36Sopenharmony_cistruct param_scaler_rotation {
63462306a36Sopenharmony_ci	u32 cmd;
63562306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 2];
63662306a36Sopenharmony_ci	u32 err;
63762306a36Sopenharmony_ci};
63862306a36Sopenharmony_ci
63962306a36Sopenharmony_cistruct param_scaler_flip {
64062306a36Sopenharmony_ci	u32 cmd;
64162306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 2];
64262306a36Sopenharmony_ci	u32 err;
64362306a36Sopenharmony_ci};
64462306a36Sopenharmony_ci
64562306a36Sopenharmony_cistruct param_3dnr_1stframe {
64662306a36Sopenharmony_ci	u32 cmd;
64762306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 2];
64862306a36Sopenharmony_ci	u32 err;
64962306a36Sopenharmony_ci};
65062306a36Sopenharmony_ci
65162306a36Sopenharmony_cistruct param_fd_config {
65262306a36Sopenharmony_ci	u32 cmd;
65362306a36Sopenharmony_ci	u32 max_number;
65462306a36Sopenharmony_ci	u32 roll_angle;
65562306a36Sopenharmony_ci	u32 yaw_angle;
65662306a36Sopenharmony_ci	u32 smile_mode;
65762306a36Sopenharmony_ci	u32 blink_mode;
65862306a36Sopenharmony_ci	u32 eye_detect;
65962306a36Sopenharmony_ci	u32 mouth_detect;
66062306a36Sopenharmony_ci	u32 orientation;
66162306a36Sopenharmony_ci	u32 orientation_value;
66262306a36Sopenharmony_ci	u32 reserved[FIMC_IS_PARAM_MAX_ENTRIES - 11];
66362306a36Sopenharmony_ci	u32 err;
66462306a36Sopenharmony_ci};
66562306a36Sopenharmony_ci
66662306a36Sopenharmony_cistruct global_param {
66762306a36Sopenharmony_ci	struct param_global_shotmode	shotmode;
66862306a36Sopenharmony_ci};
66962306a36Sopenharmony_ci
67062306a36Sopenharmony_cistruct sensor_param {
67162306a36Sopenharmony_ci	struct param_control		control;
67262306a36Sopenharmony_ci	struct param_otf_output		otf_output;
67362306a36Sopenharmony_ci	struct param_sensor_framerate	frame_rate;
67462306a36Sopenharmony_ci} __packed;
67562306a36Sopenharmony_ci
67662306a36Sopenharmony_cistruct buffer_param {
67762306a36Sopenharmony_ci	struct param_control		control;
67862306a36Sopenharmony_ci	struct param_otf_input		otf_input;
67962306a36Sopenharmony_ci	struct param_otf_output		otf_output;
68062306a36Sopenharmony_ci} __packed;
68162306a36Sopenharmony_ci
68262306a36Sopenharmony_cistruct isp_param {
68362306a36Sopenharmony_ci	struct param_control		control;
68462306a36Sopenharmony_ci	struct param_otf_input		otf_input;
68562306a36Sopenharmony_ci	struct param_dma_input		dma1_input;
68662306a36Sopenharmony_ci	struct param_dma_input		dma2_input;
68762306a36Sopenharmony_ci	struct param_isp_aa		aa;
68862306a36Sopenharmony_ci	struct param_isp_flash		flash;
68962306a36Sopenharmony_ci	struct param_isp_awb		awb;
69062306a36Sopenharmony_ci	struct param_isp_imageeffect	effect;
69162306a36Sopenharmony_ci	struct param_isp_iso		iso;
69262306a36Sopenharmony_ci	struct param_isp_adjust		adjust;
69362306a36Sopenharmony_ci	struct param_isp_metering	metering;
69462306a36Sopenharmony_ci	struct param_isp_afc		afc;
69562306a36Sopenharmony_ci	struct param_otf_output		otf_output;
69662306a36Sopenharmony_ci	struct param_dma_output		dma1_output;
69762306a36Sopenharmony_ci	struct param_dma_output		dma2_output;
69862306a36Sopenharmony_ci} __packed;
69962306a36Sopenharmony_ci
70062306a36Sopenharmony_cistruct drc_param {
70162306a36Sopenharmony_ci	struct param_control		control;
70262306a36Sopenharmony_ci	struct param_otf_input		otf_input;
70362306a36Sopenharmony_ci	struct param_dma_input		dma_input;
70462306a36Sopenharmony_ci	struct param_otf_output		otf_output;
70562306a36Sopenharmony_ci} __packed;
70662306a36Sopenharmony_ci
70762306a36Sopenharmony_cistruct scalerc_param {
70862306a36Sopenharmony_ci	struct param_control		control;
70962306a36Sopenharmony_ci	struct param_otf_input		otf_input;
71062306a36Sopenharmony_ci	struct param_scaler_imageeffect	effect;
71162306a36Sopenharmony_ci	struct param_scaler_input_crop	input_crop;
71262306a36Sopenharmony_ci	struct param_scaler_output_crop	output_crop;
71362306a36Sopenharmony_ci	struct param_otf_output		otf_output;
71462306a36Sopenharmony_ci	struct param_dma_output		dma_output;
71562306a36Sopenharmony_ci} __packed;
71662306a36Sopenharmony_ci
71762306a36Sopenharmony_cistruct odc_param {
71862306a36Sopenharmony_ci	struct param_control		control;
71962306a36Sopenharmony_ci	struct param_otf_input		otf_input;
72062306a36Sopenharmony_ci	struct param_otf_output		otf_output;
72162306a36Sopenharmony_ci} __packed;
72262306a36Sopenharmony_ci
72362306a36Sopenharmony_cistruct dis_param {
72462306a36Sopenharmony_ci	struct param_control		control;
72562306a36Sopenharmony_ci	struct param_otf_output		otf_input;
72662306a36Sopenharmony_ci	struct param_otf_output		otf_output;
72762306a36Sopenharmony_ci} __packed;
72862306a36Sopenharmony_ci
72962306a36Sopenharmony_cistruct tdnr_param {
73062306a36Sopenharmony_ci	struct param_control		control;
73162306a36Sopenharmony_ci	struct param_otf_input		otf_input;
73262306a36Sopenharmony_ci	struct param_3dnr_1stframe	frame;
73362306a36Sopenharmony_ci	struct param_otf_output		otf_output;
73462306a36Sopenharmony_ci	struct param_dma_output		dma_output;
73562306a36Sopenharmony_ci} __packed;
73662306a36Sopenharmony_ci
73762306a36Sopenharmony_cistruct scalerp_param {
73862306a36Sopenharmony_ci	struct param_control		control;
73962306a36Sopenharmony_ci	struct param_otf_input		otf_input;
74062306a36Sopenharmony_ci	struct param_scaler_imageeffect	effect;
74162306a36Sopenharmony_ci	struct param_scaler_input_crop	input_crop;
74262306a36Sopenharmony_ci	struct param_scaler_output_crop	output_crop;
74362306a36Sopenharmony_ci	struct param_scaler_rotation	rotation;
74462306a36Sopenharmony_ci	struct param_scaler_flip	flip;
74562306a36Sopenharmony_ci	struct param_otf_output		otf_output;
74662306a36Sopenharmony_ci	struct param_dma_output		dma_output;
74762306a36Sopenharmony_ci} __packed;
74862306a36Sopenharmony_ci
74962306a36Sopenharmony_cistruct fd_param {
75062306a36Sopenharmony_ci	struct param_control		control;
75162306a36Sopenharmony_ci	struct param_otf_input		otf_input;
75262306a36Sopenharmony_ci	struct param_dma_input		dma_input;
75362306a36Sopenharmony_ci	struct param_fd_config		config;
75462306a36Sopenharmony_ci} __packed;
75562306a36Sopenharmony_ci
75662306a36Sopenharmony_cistruct is_param_region {
75762306a36Sopenharmony_ci	struct global_param		global;
75862306a36Sopenharmony_ci	struct sensor_param		sensor;
75962306a36Sopenharmony_ci	struct buffer_param		buf;
76062306a36Sopenharmony_ci	struct isp_param		isp;
76162306a36Sopenharmony_ci	struct drc_param		drc;
76262306a36Sopenharmony_ci	struct scalerc_param		scalerc;
76362306a36Sopenharmony_ci	struct odc_param		odc;
76462306a36Sopenharmony_ci	struct dis_param		dis;
76562306a36Sopenharmony_ci	struct tdnr_param		tdnr;
76662306a36Sopenharmony_ci	struct scalerp_param		scalerp;
76762306a36Sopenharmony_ci	struct fd_param			fd;
76862306a36Sopenharmony_ci} __packed;
76962306a36Sopenharmony_ci
77062306a36Sopenharmony_ci#define NUMBER_OF_GAMMA_CURVE_POINTS	32
77162306a36Sopenharmony_ci
77262306a36Sopenharmony_cistruct is_tune_sensor {
77362306a36Sopenharmony_ci	u32 exposure;
77462306a36Sopenharmony_ci	u32 analog_gain;
77562306a36Sopenharmony_ci	u32 frame_rate;
77662306a36Sopenharmony_ci	u32 actuator_position;
77762306a36Sopenharmony_ci};
77862306a36Sopenharmony_ci
77962306a36Sopenharmony_cistruct is_tune_gammacurve {
78062306a36Sopenharmony_ci	u32 num_pts_x[NUMBER_OF_GAMMA_CURVE_POINTS];
78162306a36Sopenharmony_ci	u32 num_pts_y_r[NUMBER_OF_GAMMA_CURVE_POINTS];
78262306a36Sopenharmony_ci	u32 num_pts_y_g[NUMBER_OF_GAMMA_CURVE_POINTS];
78362306a36Sopenharmony_ci	u32 num_pts_y_b[NUMBER_OF_GAMMA_CURVE_POINTS];
78462306a36Sopenharmony_ci};
78562306a36Sopenharmony_ci
78662306a36Sopenharmony_cistruct is_tune_isp {
78762306a36Sopenharmony_ci	/* Brightness level: range 0...100, default 7. */
78862306a36Sopenharmony_ci	u32 brightness_level;
78962306a36Sopenharmony_ci	/* Contrast level: range -127...127, default 0. */
79062306a36Sopenharmony_ci	s32 contrast_level;
79162306a36Sopenharmony_ci	/* Saturation level: range -127...127, default 0. */
79262306a36Sopenharmony_ci	s32 saturation_level;
79362306a36Sopenharmony_ci	s32 gamma_level;
79462306a36Sopenharmony_ci	struct is_tune_gammacurve gamma_curve[4];
79562306a36Sopenharmony_ci	/* Hue: range -127...127, default 0. */
79662306a36Sopenharmony_ci	s32 hue;
79762306a36Sopenharmony_ci	/* Sharpness blur: range -127...127, default 0. */
79862306a36Sopenharmony_ci	s32 sharpness_blur;
79962306a36Sopenharmony_ci	/* Despeckle : range -127~127, default : 0 */
80062306a36Sopenharmony_ci	s32 despeckle;
80162306a36Sopenharmony_ci	/* Edge color supression: range -127...127, default 0. */
80262306a36Sopenharmony_ci	s32 edge_color_supression;
80362306a36Sopenharmony_ci	/* Noise reduction: range -127...127, default 0. */
80462306a36Sopenharmony_ci	s32 noise_reduction;
80562306a36Sopenharmony_ci	/* (32 * 4 + 9) * 4 = 548 bytes */
80662306a36Sopenharmony_ci} __packed;
80762306a36Sopenharmony_ci
80862306a36Sopenharmony_cistruct is_tune_region {
80962306a36Sopenharmony_ci	struct is_tune_sensor sensor;
81062306a36Sopenharmony_ci	struct is_tune_isp isp;
81162306a36Sopenharmony_ci} __packed;
81262306a36Sopenharmony_ci
81362306a36Sopenharmony_cistruct rational {
81462306a36Sopenharmony_ci	u32 num;
81562306a36Sopenharmony_ci	u32 den;
81662306a36Sopenharmony_ci};
81762306a36Sopenharmony_ci
81862306a36Sopenharmony_cistruct srational {
81962306a36Sopenharmony_ci	s32 num;
82062306a36Sopenharmony_ci	s32 den;
82162306a36Sopenharmony_ci};
82262306a36Sopenharmony_ci
82362306a36Sopenharmony_ci#define FLASH_FIRED_SHIFT			0
82462306a36Sopenharmony_ci#define FLASH_NOT_FIRED				0
82562306a36Sopenharmony_ci#define FLASH_FIRED				1
82662306a36Sopenharmony_ci
82762306a36Sopenharmony_ci#define FLASH_STROBE_SHIFT			1
82862306a36Sopenharmony_ci#define FLASH_STROBE_NO_DETECTION		0
82962306a36Sopenharmony_ci#define FLASH_STROBE_RESERVED			1
83062306a36Sopenharmony_ci#define FLASH_STROBE_RETURN_LIGHT_NOT_DETECTED	2
83162306a36Sopenharmony_ci#define FLASH_STROBE_RETURN_LIGHT_DETECTED	3
83262306a36Sopenharmony_ci
83362306a36Sopenharmony_ci#define FLASH_MODE_SHIFT			3
83462306a36Sopenharmony_ci#define FLASH_MODE_UNKNOWN			0
83562306a36Sopenharmony_ci#define FLASH_MODE_COMPULSORY_FLASH_FIRING	1
83662306a36Sopenharmony_ci#define FLASH_MODE_COMPULSORY_FLASH_SUPPRESSION	2
83762306a36Sopenharmony_ci#define FLASH_MODE_AUTO_MODE			3
83862306a36Sopenharmony_ci
83962306a36Sopenharmony_ci#define FLASH_FUNCTION_SHIFT			5
84062306a36Sopenharmony_ci#define FLASH_FUNCTION_PRESENT			0
84162306a36Sopenharmony_ci#define FLASH_FUNCTION_NONE			1
84262306a36Sopenharmony_ci
84362306a36Sopenharmony_ci#define FLASH_RED_EYE_SHIFT			6
84462306a36Sopenharmony_ci#define FLASH_RED_EYE_DISABLED			0
84562306a36Sopenharmony_ci#define FLASH_RED_EYE_SUPPORTED			1
84662306a36Sopenharmony_ci
84762306a36Sopenharmony_cienum apex_aperture_value {
84862306a36Sopenharmony_ci	F1_0	= 0,
84962306a36Sopenharmony_ci	F1_4	= 1,
85062306a36Sopenharmony_ci	F2_0	= 2,
85162306a36Sopenharmony_ci	F2_8	= 3,
85262306a36Sopenharmony_ci	F4_0	= 4,
85362306a36Sopenharmony_ci	F5_6	= 5,
85462306a36Sopenharmony_ci	F8_9	= 6,
85562306a36Sopenharmony_ci	F11_0	= 7,
85662306a36Sopenharmony_ci	F16_0	= 8,
85762306a36Sopenharmony_ci	F22_0	= 9,
85862306a36Sopenharmony_ci	F32_0	= 10,
85962306a36Sopenharmony_ci};
86062306a36Sopenharmony_ci
86162306a36Sopenharmony_cistruct exif_attribute {
86262306a36Sopenharmony_ci	struct rational exposure_time;
86362306a36Sopenharmony_ci	struct srational shutter_speed;
86462306a36Sopenharmony_ci	u32 iso_speed_rating;
86562306a36Sopenharmony_ci	u32 flash;
86662306a36Sopenharmony_ci	struct srational brightness;
86762306a36Sopenharmony_ci} __packed;
86862306a36Sopenharmony_ci
86962306a36Sopenharmony_cistruct is_frame_header {
87062306a36Sopenharmony_ci	u32 valid;
87162306a36Sopenharmony_ci	u32 bad_mark;
87262306a36Sopenharmony_ci	u32 captured;
87362306a36Sopenharmony_ci	u32 frame_number;
87462306a36Sopenharmony_ci	struct exif_attribute exif;
87562306a36Sopenharmony_ci} __packed;
87662306a36Sopenharmony_ci
87762306a36Sopenharmony_cistruct is_fd_rect {
87862306a36Sopenharmony_ci	u32 offset_x;
87962306a36Sopenharmony_ci	u32 offset_y;
88062306a36Sopenharmony_ci	u32 width;
88162306a36Sopenharmony_ci	u32 height;
88262306a36Sopenharmony_ci};
88362306a36Sopenharmony_ci
88462306a36Sopenharmony_cistruct is_face_marker {
88562306a36Sopenharmony_ci	u32 frame_number;
88662306a36Sopenharmony_ci	struct is_fd_rect face;
88762306a36Sopenharmony_ci	struct is_fd_rect left_eye;
88862306a36Sopenharmony_ci	struct is_fd_rect right_eye;
88962306a36Sopenharmony_ci	struct is_fd_rect mouth;
89062306a36Sopenharmony_ci	u32 roll_angle;
89162306a36Sopenharmony_ci	u32 yaw_angle;
89262306a36Sopenharmony_ci	u32 confidence;
89362306a36Sopenharmony_ci	s32 smile_level;
89462306a36Sopenharmony_ci	s32 blink_level;
89562306a36Sopenharmony_ci} __packed;
89662306a36Sopenharmony_ci
89762306a36Sopenharmony_ci#define MAX_FRAME_COUNT				8
89862306a36Sopenharmony_ci#define MAX_FRAME_COUNT_PREVIEW			4
89962306a36Sopenharmony_ci#define MAX_FRAME_COUNT_CAPTURE			1
90062306a36Sopenharmony_ci#define MAX_FACE_COUNT				16
90162306a36Sopenharmony_ci#define MAX_SHARED_COUNT			500
90262306a36Sopenharmony_ci
90362306a36Sopenharmony_cistruct is_region {
90462306a36Sopenharmony_ci	struct is_param_region parameter;
90562306a36Sopenharmony_ci	struct is_tune_region tune;
90662306a36Sopenharmony_ci	struct is_frame_header header[MAX_FRAME_COUNT];
90762306a36Sopenharmony_ci	struct is_face_marker face[MAX_FACE_COUNT];
90862306a36Sopenharmony_ci	u32 shared[MAX_SHARED_COUNT];
90962306a36Sopenharmony_ci} __packed;
91062306a36Sopenharmony_ci
91162306a36Sopenharmony_ci/* Offset to the ISP DMA2 output buffer address array. */
91262306a36Sopenharmony_ci#define DMA2_OUTPUT_ADDR_ARRAY_OFFS \
91362306a36Sopenharmony_ci	(offsetof(struct is_region, shared) + 32 * sizeof(u32))
91462306a36Sopenharmony_ci
91562306a36Sopenharmony_cistruct is_debug_frame_descriptor {
91662306a36Sopenharmony_ci	u32 sensor_frame_time;
91762306a36Sopenharmony_ci	u32 sensor_exposure_time;
91862306a36Sopenharmony_ci	s32 sensor_analog_gain;
91962306a36Sopenharmony_ci	/* monitor for AA */
92062306a36Sopenharmony_ci	u32 req_lei;
92162306a36Sopenharmony_ci
92262306a36Sopenharmony_ci	u32 next_next_lei_exp;
92362306a36Sopenharmony_ci	u32 next_next_lei_a_gain;
92462306a36Sopenharmony_ci	u32 next_next_lei_d_gain;
92562306a36Sopenharmony_ci	u32 next_next_lei_statlei;
92662306a36Sopenharmony_ci	u32 next_next_lei_lei;
92762306a36Sopenharmony_ci
92862306a36Sopenharmony_ci	u32 dummy0;
92962306a36Sopenharmony_ci};
93062306a36Sopenharmony_ci
93162306a36Sopenharmony_ci#define MAX_FRAMEDESCRIPTOR_CONTEXT_NUM	(30*20)	/* 600 frames */
93262306a36Sopenharmony_ci#define MAX_VERSION_DISPLAY_BUF	32
93362306a36Sopenharmony_ci
93462306a36Sopenharmony_cistruct is_share_region {
93562306a36Sopenharmony_ci	u32 frame_time;
93662306a36Sopenharmony_ci	u32 exposure_time;
93762306a36Sopenharmony_ci	s32 analog_gain;
93862306a36Sopenharmony_ci
93962306a36Sopenharmony_ci	u32 r_gain;
94062306a36Sopenharmony_ci	u32 g_gain;
94162306a36Sopenharmony_ci	u32 b_gain;
94262306a36Sopenharmony_ci
94362306a36Sopenharmony_ci	u32 af_position;
94462306a36Sopenharmony_ci	u32 af_status;
94562306a36Sopenharmony_ci	/* 0 : SIRC_ISP_CAMERA_AUTOFOCUSMESSAGE_NOMESSAGE */
94662306a36Sopenharmony_ci	/* 1 : SIRC_ISP_CAMERA_AUTOFOCUSMESSAGE_REACHED */
94762306a36Sopenharmony_ci	/* 2 : SIRC_ISP_CAMERA_AUTOFOCUSMESSAGE_UNABLETOREACH */
94862306a36Sopenharmony_ci	/* 3 : SIRC_ISP_CAMERA_AUTOFOCUSMESSAGE_LOST */
94962306a36Sopenharmony_ci	/* default : unknown */
95062306a36Sopenharmony_ci	u32 af_scene_type;
95162306a36Sopenharmony_ci
95262306a36Sopenharmony_ci	u32 frame_descp_onoff_control;
95362306a36Sopenharmony_ci	u32 frame_descp_update_done;
95462306a36Sopenharmony_ci	u32 frame_descp_idx;
95562306a36Sopenharmony_ci	u32 frame_descp_max_idx;
95662306a36Sopenharmony_ci	struct is_debug_frame_descriptor
95762306a36Sopenharmony_ci		dbg_frame_descp_ctx[MAX_FRAMEDESCRIPTOR_CONTEXT_NUM];
95862306a36Sopenharmony_ci
95962306a36Sopenharmony_ci	u32 chip_id;
96062306a36Sopenharmony_ci	u32 chip_rev_no;
96162306a36Sopenharmony_ci	u8 isp_fw_ver_no[MAX_VERSION_DISPLAY_BUF];
96262306a36Sopenharmony_ci	u8 isp_fw_ver_date[MAX_VERSION_DISPLAY_BUF];
96362306a36Sopenharmony_ci	u8 sirc_sdk_ver_no[MAX_VERSION_DISPLAY_BUF];
96462306a36Sopenharmony_ci	u8 sirc_sdk_rev_no[MAX_VERSION_DISPLAY_BUF];
96562306a36Sopenharmony_ci	u8 sirc_sdk_rev_date[MAX_VERSION_DISPLAY_BUF];
96662306a36Sopenharmony_ci} __packed;
96762306a36Sopenharmony_ci
96862306a36Sopenharmony_cistruct is_debug_control {
96962306a36Sopenharmony_ci	u32 write_point;	/* 0~ 500KB boundary */
97062306a36Sopenharmony_ci	u32 assert_flag;	/* 0: Not invoked, 1: Invoked */
97162306a36Sopenharmony_ci	u32 pabort_flag;	/* 0: Not invoked, 1: Invoked */
97262306a36Sopenharmony_ci	u32 dabort_flag;	/* 0: Not invoked, 1: Invoked */
97362306a36Sopenharmony_ci};
97462306a36Sopenharmony_ci
97562306a36Sopenharmony_cistruct sensor_open_extended {
97662306a36Sopenharmony_ci	u32 actuator_type;
97762306a36Sopenharmony_ci	u32 mclk;
97862306a36Sopenharmony_ci	u32 mipi_lane_num;
97962306a36Sopenharmony_ci	u32 mipi_speed;
98062306a36Sopenharmony_ci	/* Skip setfile loading when fast_open_sensor is not 0 */
98162306a36Sopenharmony_ci	u32 fast_open_sensor;
98262306a36Sopenharmony_ci	/* Activating sensor self calibration mode (6A3) */
98362306a36Sopenharmony_ci	u32 self_calibration_mode;
98462306a36Sopenharmony_ci	/* This field is to adjust I2c clock based on ACLK200 */
98562306a36Sopenharmony_ci	/* This value is varied in case of rev 0.2 */
98662306a36Sopenharmony_ci	u32 i2c_sclk;
98762306a36Sopenharmony_ci};
98862306a36Sopenharmony_ci
98962306a36Sopenharmony_cistruct fimc_is;
99062306a36Sopenharmony_ci
99162306a36Sopenharmony_ciint fimc_is_hw_get_sensor_max_framerate(struct fimc_is *is);
99262306a36Sopenharmony_ciint __fimc_is_hw_update_param(struct fimc_is *is, u32 offset);
99362306a36Sopenharmony_civoid fimc_is_set_initial_params(struct fimc_is *is);
99462306a36Sopenharmony_ciunsigned int __get_pending_param_count(struct fimc_is *is);
99562306a36Sopenharmony_ci
99662306a36Sopenharmony_ciint  __is_hw_update_params(struct fimc_is *is);
99762306a36Sopenharmony_civoid __is_get_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf);
99862306a36Sopenharmony_civoid __is_set_frame_size(struct fimc_is *is, struct v4l2_mbus_framefmt *mf);
99962306a36Sopenharmony_civoid __is_set_sensor(struct fimc_is *is, int fps);
100062306a36Sopenharmony_civoid __is_set_isp_aa_ae(struct fimc_is *is);
100162306a36Sopenharmony_civoid __is_set_isp_flash(struct fimc_is *is, u32 cmd, u32 redeye);
100262306a36Sopenharmony_civoid __is_set_isp_awb(struct fimc_is *is, u32 cmd, u32 val);
100362306a36Sopenharmony_civoid __is_set_isp_effect(struct fimc_is *is, u32 cmd);
100462306a36Sopenharmony_civoid __is_set_isp_iso(struct fimc_is *is, u32 cmd, u32 val);
100562306a36Sopenharmony_civoid __is_set_isp_adjust(struct fimc_is *is, u32 cmd, u32 val);
100662306a36Sopenharmony_civoid __is_set_isp_metering(struct fimc_is *is, u32 id, u32 val);
100762306a36Sopenharmony_civoid __is_set_isp_afc(struct fimc_is *is, u32 cmd, u32 val);
100862306a36Sopenharmony_civoid __is_set_drc_control(struct fimc_is *is, u32 val);
100962306a36Sopenharmony_civoid __is_set_fd_control(struct fimc_is *is, u32 val);
101062306a36Sopenharmony_civoid __is_set_fd_config_maxface(struct fimc_is *is, u32 val);
101162306a36Sopenharmony_civoid __is_set_fd_config_rollangle(struct fimc_is *is, u32 val);
101262306a36Sopenharmony_civoid __is_set_fd_config_yawangle(struct fimc_is *is, u32 val);
101362306a36Sopenharmony_civoid __is_set_fd_config_smilemode(struct fimc_is *is, u32 val);
101462306a36Sopenharmony_civoid __is_set_fd_config_blinkmode(struct fimc_is *is, u32 val);
101562306a36Sopenharmony_civoid __is_set_fd_config_eyedetect(struct fimc_is *is, u32 val);
101662306a36Sopenharmony_civoid __is_set_fd_config_mouthdetect(struct fimc_is *is, u32 val);
101762306a36Sopenharmony_civoid __is_set_fd_config_orientation(struct fimc_is *is, u32 val);
101862306a36Sopenharmony_civoid __is_set_fd_config_orientation_val(struct fimc_is *is, u32 val);
101962306a36Sopenharmony_civoid __is_set_isp_aa_af_mode(struct fimc_is *is, int cmd);
102062306a36Sopenharmony_civoid __is_set_isp_aa_af_start_stop(struct fimc_is *is, int cmd);
102162306a36Sopenharmony_ci
102262306a36Sopenharmony_ci#endif
1023