162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Samsung Exynos4x12 FIMC-IS (Imaging Subsystem) driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * FIMC-IS command set definitions
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 2013 Samsung Electronics Co., Ltd.
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Authors: Younghwan Joo <yhwan.joo@samsung.com>
1062306a36Sopenharmony_ci *          Sylwester Nawrocki <s.nawrocki@samsung.com>
1162306a36Sopenharmony_ci */
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef FIMC_IS_CMD_H_
1462306a36Sopenharmony_ci#define FIMC_IS_CMD_H_
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define FIMC_IS_COMMAND_VER	110 /* FIMC-IS command set version 1.10 */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_ci/* Enumeration of commands between the FIMC-IS and the host processor. */
1962306a36Sopenharmony_ci
2062306a36Sopenharmony_ci/* HOST to FIMC-IS */
2162306a36Sopenharmony_ci#define HIC_PREVIEW_STILL	0x0001
2262306a36Sopenharmony_ci#define HIC_PREVIEW_VIDEO	0x0002
2362306a36Sopenharmony_ci#define HIC_CAPTURE_STILL	0x0003
2462306a36Sopenharmony_ci#define HIC_CAPTURE_VIDEO	0x0004
2562306a36Sopenharmony_ci#define HIC_STREAM_ON		0x0005
2662306a36Sopenharmony_ci#define HIC_STREAM_OFF		0x0006
2762306a36Sopenharmony_ci#define HIC_SET_PARAMETER	0x0007
2862306a36Sopenharmony_ci#define HIC_GET_PARAMETER	0x0008
2962306a36Sopenharmony_ci#define HIC_SET_TUNE		0x0009
3062306a36Sopenharmony_ci#define HIC_GET_STATUS		0x000b
3162306a36Sopenharmony_ci/* Sensor part */
3262306a36Sopenharmony_ci#define HIC_OPEN_SENSOR		0x000c
3362306a36Sopenharmony_ci#define HIC_CLOSE_SENSOR	0x000d
3462306a36Sopenharmony_ci#define HIC_SIMMIAN_INIT	0x000e
3562306a36Sopenharmony_ci#define HIC_SIMMIAN_WRITE	0x000f
3662306a36Sopenharmony_ci#define HIC_SIMMIAN_READ	0x0010
3762306a36Sopenharmony_ci#define HIC_POWER_DOWN		0x0011
3862306a36Sopenharmony_ci#define HIC_GET_SET_FILE_ADDR	0x0012
3962306a36Sopenharmony_ci#define HIC_LOAD_SET_FILE	0x0013
4062306a36Sopenharmony_ci#define HIC_MSG_CONFIG		0x0014
4162306a36Sopenharmony_ci#define HIC_MSG_TEST		0x0015
4262306a36Sopenharmony_ci/* FIMC-IS to HOST */
4362306a36Sopenharmony_ci#define IHC_GET_SENSOR_NUM	0x1000
4462306a36Sopenharmony_ci#define IHC_SET_SHOT_MARK	0x1001
4562306a36Sopenharmony_ci/* parameter1: frame number */
4662306a36Sopenharmony_ci/* parameter2: confidence level (smile 0~100) */
4762306a36Sopenharmony_ci/* parameter3: confidence level (blink 0~100) */
4862306a36Sopenharmony_ci#define IHC_SET_FACE_MARK	0x1002
4962306a36Sopenharmony_ci/* parameter1: coordinate count */
5062306a36Sopenharmony_ci/* parameter2: coordinate buffer address */
5162306a36Sopenharmony_ci#define IHC_FRAME_DONE		0x1003
5262306a36Sopenharmony_ci/* parameter1: frame start number */
5362306a36Sopenharmony_ci/* parameter2: frame count */
5462306a36Sopenharmony_ci#define IHC_AA_DONE		0x1004
5562306a36Sopenharmony_ci#define IHC_NOT_READY		0x1005
5662306a36Sopenharmony_ci
5762306a36Sopenharmony_ci#define IH_REPLY_DONE		0x2000
5862306a36Sopenharmony_ci#define IH_REPLY_NOT_DONE	0x2001
5962306a36Sopenharmony_ci
6062306a36Sopenharmony_cienum fimc_is_scenario {
6162306a36Sopenharmony_ci	IS_SC_PREVIEW_STILL,
6262306a36Sopenharmony_ci	IS_SC_PREVIEW_VIDEO,
6362306a36Sopenharmony_ci	IS_SC_CAPTURE_STILL,
6462306a36Sopenharmony_ci	IS_SC_CAPTURE_VIDEO,
6562306a36Sopenharmony_ci	IS_SC_MAX
6662306a36Sopenharmony_ci};
6762306a36Sopenharmony_ci
6862306a36Sopenharmony_cienum fimc_is_sub_scenario {
6962306a36Sopenharmony_ci	IS_SC_SUB_DEFAULT,
7062306a36Sopenharmony_ci	IS_SC_SUB_PS_VTCALL,
7162306a36Sopenharmony_ci	IS_SC_SUB_CS_VTCALL,
7262306a36Sopenharmony_ci	IS_SC_SUB_PV_VTCALL,
7362306a36Sopenharmony_ci	IS_SC_SUB_CV_VTCALL,
7462306a36Sopenharmony_ci};
7562306a36Sopenharmony_ci
7662306a36Sopenharmony_cistruct is_common_regs {
7762306a36Sopenharmony_ci	u32 hicmd;
7862306a36Sopenharmony_ci	u32 hic_sensorid;
7962306a36Sopenharmony_ci	u32 hic_param[4];
8062306a36Sopenharmony_ci	u32 reserved1[4];
8162306a36Sopenharmony_ci
8262306a36Sopenharmony_ci	u32 ihcmd;
8362306a36Sopenharmony_ci	u32 ihc_sensorid;
8462306a36Sopenharmony_ci	u32 ihc_param[4];
8562306a36Sopenharmony_ci	u32 reserved2[4];
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	u32 isp_sensor_id;
8862306a36Sopenharmony_ci	u32 isp_param[2];
8962306a36Sopenharmony_ci	u32 reserved3[1];
9062306a36Sopenharmony_ci
9162306a36Sopenharmony_ci	u32 scc_sensor_id;
9262306a36Sopenharmony_ci	u32 scc_param[2];
9362306a36Sopenharmony_ci	u32 reserved4[1];
9462306a36Sopenharmony_ci
9562306a36Sopenharmony_ci	u32 dnr_sensor_id;
9662306a36Sopenharmony_ci	u32 dnr_param[2];
9762306a36Sopenharmony_ci	u32 reserved5[1];
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci	u32 scp_sensor_id;
10062306a36Sopenharmony_ci	u32 scp_param[2];
10162306a36Sopenharmony_ci	u32 reserved6[29];
10262306a36Sopenharmony_ci} __packed;
10362306a36Sopenharmony_ci
10462306a36Sopenharmony_cistruct is_mcuctl_reg {
10562306a36Sopenharmony_ci	u32 mcuctl;
10662306a36Sopenharmony_ci	u32 bboar;
10762306a36Sopenharmony_ci
10862306a36Sopenharmony_ci	u32 intgr0;
10962306a36Sopenharmony_ci	u32 intcr0;
11062306a36Sopenharmony_ci	u32 intmr0;
11162306a36Sopenharmony_ci	u32 intsr0;
11262306a36Sopenharmony_ci	u32 intmsr0;
11362306a36Sopenharmony_ci
11462306a36Sopenharmony_ci	u32 intgr1;
11562306a36Sopenharmony_ci	u32 intcr1;
11662306a36Sopenharmony_ci	u32 intmr1;
11762306a36Sopenharmony_ci	u32 intsr1;
11862306a36Sopenharmony_ci	u32 intmsr1;
11962306a36Sopenharmony_ci
12062306a36Sopenharmony_ci	u32 intcr2;
12162306a36Sopenharmony_ci	u32 intmr2;
12262306a36Sopenharmony_ci	u32 intsr2;
12362306a36Sopenharmony_ci	u32 intmsr2;
12462306a36Sopenharmony_ci
12562306a36Sopenharmony_ci	u32 gpoctrl;
12662306a36Sopenharmony_ci	u32 cpoenctlr;
12762306a36Sopenharmony_ci	u32 gpictlr;
12862306a36Sopenharmony_ci
12962306a36Sopenharmony_ci	u32 reserved[0xd];
13062306a36Sopenharmony_ci
13162306a36Sopenharmony_ci	struct is_common_regs common;
13262306a36Sopenharmony_ci} __packed;
13362306a36Sopenharmony_ci
13462306a36Sopenharmony_ci#endif /* FIMC_IS_CMD_H_ */
135