summaryrefslogtreecommitdiffstats
path: root/drivers/media/platform/samsung/exynos4-is/fimc-is-command.h
blob: 87978609ad5568e55b679330b14ec623c6b9faea (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Samsung Exynos4x12 FIMC-IS (Imaging Subsystem) driver
 *
 * FIMC-IS command set definitions
 *
 * Copyright (C) 2013 Samsung Electronics Co., Ltd.
 *
 * Authors: Younghwan Joo <yhwan.joo@samsung.com>
 *          Sylwester Nawrocki <s.nawrocki@samsung.com>
 */

#ifndef FIMC_IS_CMD_H_
#define FIMC_IS_CMD_H_

#define FIMC_IS_COMMAND_VER	110 /* FIMC-IS command set version 1.10 */

/* Enumeration of commands between the FIMC-IS and the host processor. */

/* HOST to FIMC-IS */
#define HIC_PREVIEW_STILL	0x0001
#define HIC_PREVIEW_VIDEO	0x0002
#define HIC_CAPTURE_STILL	0x0003
#define HIC_CAPTURE_VIDEO	0x0004
#define HIC_STREAM_ON		0x0005
#define HIC_STREAM_OFF		0x0006
#define HIC_SET_PARAMETER	0x0007
#define HIC_GET_PARAMETER	0x0008
#define HIC_SET_TUNE		0x0009
#define HIC_GET_STATUS		0x000b
/* Sensor part */
#define HIC_OPEN_SENSOR		0x000c
#define HIC_CLOSE_SENSOR	0x000d
#define HIC_SIMMIAN_INIT	0x000e
#define HIC_SIMMIAN_WRITE	0x000f
#define HIC_SIMMIAN_READ	0x0010
#define HIC_POWER_DOWN		0x0011
#define HIC_GET_SET_FILE_ADDR	0x0012
#define HIC_LOAD_SET_FILE	0x0013
#define HIC_MSG_CONFIG		0x0014
#define HIC_MSG_TEST		0x0015
/* FIMC-IS to HOST */
#define IHC_GET_SENSOR_NUM	0x1000
#define IHC_SET_SHOT_MARK	0x1001
/* parameter1: frame number */
/* parameter2: confidence level (smile 0~100) */
/* parameter3: confidence level (blink 0~100) */
#define IHC_SET_FACE_MARK	0x1002
/* parameter1: coordinate count */
/* parameter2: coordinate buffer address */
#define IHC_FRAME_DONE		0x1003
/* parameter1: frame start number */
/* parameter2: frame count */
#define IHC_AA_DONE		0x1004
#define IHC_NOT_READY		0x1005

#define IH_REPLY_DONE		0x2000
#define IH_REPLY_NOT_DONE	0x2001

enum fimc_is_scenario {
	IS_SC_PREVIEW_STILL,
	IS_SC_PREVIEW_VIDEO,
	IS_SC_CAPTURE_STILL,
	IS_SC_CAPTURE_VIDEO,
	IS_SC_MAX
};

enum fimc_is_sub_scenario {
	IS_SC_SUB_DEFAULT,
	IS_SC_SUB_PS_VTCALL,
	IS_SC_SUB_CS_VTCALL,
	IS_SC_SUB_PV_VTCALL,
	IS_SC_SUB_CV_VTCALL,
};

struct is_common_regs {
	u32 hicmd;
	u32 hic_sensorid;
	u32 hic_param[4];
	u32 reserved1[4];

	u32 ihcmd;
	u32 ihc_sensorid;
	u32 ihc_param[4];
	u32 reserved2[4];

	u32 isp_sensor_id;
	u32 isp_param[2];
	u32 reserved3[1];

	u32 scc_sensor_id;
	u32 scc_param[2];
	u32 reserved4[1];

	u32 dnr_sensor_id;
	u32 dnr_param[2];
	u32 reserved5[1];

	u32 scp_sensor_id;
	u32 scp_param[2];
	u32 reserved6[29];
} __packed;

struct is_mcuctl_reg {
	u32 mcuctl;
	u32 bboar;

	u32 intgr0;
	u32 intcr0;
	u32 intmr0;
	u32 intsr0;
	u32 intmsr0;

	u32 intgr1;
	u32 intcr1;
	u32 intmr1;
	u32 intsr1;
	u32 intmsr1;

	u32 intcr2;
	u32 intmr2;
	u32 intsr2;
	u32 intmsr2;

	u32 gpoctrl;
	u32 cpoenctlr;
	u32 gpictlr;

	u32 reserved[0xd];

	struct is_common_regs common;
} __packed;

#endif /* FIMC_IS_CMD_H_ */