xref: /OK3568_Linux_fs/kernel/drivers/media/platform/exynos4-is/fimc-is-errno.h (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0-only */
2*4882a593Smuzhiyun /*
3*4882a593Smuzhiyun  * Samsung Exynos4 SoC series FIMC-IS slave interface driver
4*4882a593Smuzhiyun  *
5*4882a593Smuzhiyun  * FIMC-IS error code definition
6*4882a593Smuzhiyun  *
7*4882a593Smuzhiyun  * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd.
8*4882a593Smuzhiyun  *
9*4882a593Smuzhiyun  * Authors: Younghwan Joo <yhwan.joo@samsung.com>
10*4882a593Smuzhiyun  *          Sylwester Nawrocki <s.nawrocki@samsung.com>
11*4882a593Smuzhiyun */
12*4882a593Smuzhiyun 
13*4882a593Smuzhiyun #ifndef FIMC_IS_ERR_H_
14*4882a593Smuzhiyun #define FIMC_IS_ERR_H_
15*4882a593Smuzhiyun 
16*4882a593Smuzhiyun #define IS_ERROR_VER			011 /* IS ERROR VERSION 0.11 */
17*4882a593Smuzhiyun 
18*4882a593Smuzhiyun enum {
19*4882a593Smuzhiyun 	IS_ERROR_NONE,
20*4882a593Smuzhiyun 
21*4882a593Smuzhiyun 	/* General 1 ~ 99 */
22*4882a593Smuzhiyun 	IS_ERROR_INVALID_COMMAND,
23*4882a593Smuzhiyun 	IS_ERROR_REQUEST_FAIL,
24*4882a593Smuzhiyun 	IS_ERROR_INVALID_SCENARIO,
25*4882a593Smuzhiyun 	IS_ERROR_INVALID_SENSORID,
26*4882a593Smuzhiyun 	IS_ERROR_INVALID_MODE_CHANGE,
27*4882a593Smuzhiyun 	IS_ERROR_INVALID_MAGIC_NUMBER,
28*4882a593Smuzhiyun 	IS_ERROR_INVALID_SETFILE_HDR,
29*4882a593Smuzhiyun 	IS_ERROR_BUSY,
30*4882a593Smuzhiyun 	IS_ERROR_SET_PARAMETER,
31*4882a593Smuzhiyun 	IS_ERROR_INVALID_PATH,
32*4882a593Smuzhiyun 	IS_ERROR_OPEN_SENSOR_FAIL,
33*4882a593Smuzhiyun 	IS_ERROR_ENTRY_MSG_THREAD_DOWN,
34*4882a593Smuzhiyun 	IS_ERROR_ISP_FRAME_END_NOT_DONE,
35*4882a593Smuzhiyun 	IS_ERROR_DRC_FRAME_END_NOT_DONE,
36*4882a593Smuzhiyun 	IS_ERROR_SCALERC_FRAME_END_NOT_DONE,
37*4882a593Smuzhiyun 	IS_ERROR_ODC_FRAME_END_NOT_DONE,
38*4882a593Smuzhiyun 	IS_ERROR_DIS_FRAME_END_NOT_DONE,
39*4882a593Smuzhiyun 	IS_ERROR_TDNR_FRAME_END_NOT_DONE,
40*4882a593Smuzhiyun 	IS_ERROR_SCALERP_FRAME_END_NOT_DONE,
41*4882a593Smuzhiyun 	IS_ERROR_WAIT_STREAM_OFF_NOT_DONE,
42*4882a593Smuzhiyun 	IS_ERROR_NO_MSG_IS_RECEIVED,
43*4882a593Smuzhiyun 	IS_ERROR_SENSOR_MSG_FAIL,
44*4882a593Smuzhiyun 	IS_ERROR_ISP_MSG_FAIL,
45*4882a593Smuzhiyun 	IS_ERROR_DRC_MSG_FAIL,
46*4882a593Smuzhiyun 	IS_ERROR_SCALERC_MSG_FAIL,
47*4882a593Smuzhiyun 	IS_ERROR_ODC_MSG_FAIL,
48*4882a593Smuzhiyun 	IS_ERROR_DIS_MSG_FAIL,
49*4882a593Smuzhiyun 	IS_ERROR_TDNR_MSG_FAIL,
50*4882a593Smuzhiyun 	IS_ERROR_SCALERP_MSG_FAIL,
51*4882a593Smuzhiyun 	IS_ERROR_LHFD_MSG_FAIL,
52*4882a593Smuzhiyun 	IS_ERROR_LHFD_INTERNAL_STOP,
53*4882a593Smuzhiyun 
54*4882a593Smuzhiyun 	/* Sensor 100 ~ 199 */
55*4882a593Smuzhiyun 	IS_ERROR_SENSOR_PWRDN_FAIL	= 100,
56*4882a593Smuzhiyun 	IS_ERROR_SENSOR_STREAM_ON_FAIL,
57*4882a593Smuzhiyun 	IS_ERROR_SENSOR_STREAM_OFF_FAIL,
58*4882a593Smuzhiyun 
59*4882a593Smuzhiyun 	/* ISP 200 ~ 299 */
60*4882a593Smuzhiyun 	IS_ERROR_ISP_PWRDN_FAIL		= 200,
61*4882a593Smuzhiyun 	IS_ERROR_ISP_MULTIPLE_INPUT,
62*4882a593Smuzhiyun 	IS_ERROR_ISP_ABSENT_INPUT,
63*4882a593Smuzhiyun 	IS_ERROR_ISP_ABSENT_OUTPUT,
64*4882a593Smuzhiyun 	IS_ERROR_ISP_NONADJACENT_OUTPUT,
65*4882a593Smuzhiyun 	IS_ERROR_ISP_FORMAT_MISMATCH,
66*4882a593Smuzhiyun 	IS_ERROR_ISP_WIDTH_MISMATCH,
67*4882a593Smuzhiyun 	IS_ERROR_ISP_HEIGHT_MISMATCH,
68*4882a593Smuzhiyun 	IS_ERROR_ISP_BITWIDTH_MISMATCH,
69*4882a593Smuzhiyun 	IS_ERROR_ISP_FRAME_END_TIME_OUT,
70*4882a593Smuzhiyun 
71*4882a593Smuzhiyun 	/* DRC 300 ~ 399 */
72*4882a593Smuzhiyun 	IS_ERROR_DRC_PWRDN_FAIL		= 300,
73*4882a593Smuzhiyun 	IS_ERROR_DRC_MULTIPLE_INPUT,
74*4882a593Smuzhiyun 	IS_ERROR_DRC_ABSENT_INPUT,
75*4882a593Smuzhiyun 	IS_ERROR_DRC_NONADJACENT_INPUT,
76*4882a593Smuzhiyun 	IS_ERROR_DRC_ABSENT_OUTPUT,
77*4882a593Smuzhiyun 	IS_ERROR_DRC_NONADJACENT_OUTPUT,
78*4882a593Smuzhiyun 	IS_ERROR_DRC_FORMAT_MISMATCH,
79*4882a593Smuzhiyun 	IS_ERROR_DRC_WIDTH_MISMATCH,
80*4882a593Smuzhiyun 	IS_ERROR_DRC_HEIGHT_MISMATCH,
81*4882a593Smuzhiyun 	IS_ERROR_DRC_BITWIDTH_MISMATCH,
82*4882a593Smuzhiyun 	IS_ERROR_DRC_FRAME_END_TIME_OUT,
83*4882a593Smuzhiyun 
84*4882a593Smuzhiyun 	/* SCALERC 400 ~ 499 */
85*4882a593Smuzhiyun 	IS_ERROR_SCALERC_PWRDN_FAIL	= 400,
86*4882a593Smuzhiyun 
87*4882a593Smuzhiyun 	/* ODC 500 ~ 599 */
88*4882a593Smuzhiyun 	IS_ERROR_ODC_PWRDN_FAIL		= 500,
89*4882a593Smuzhiyun 
90*4882a593Smuzhiyun 	/* DIS 600 ~ 699 */
91*4882a593Smuzhiyun 	IS_ERROR_DIS_PWRDN_FAIL		= 600,
92*4882a593Smuzhiyun 
93*4882a593Smuzhiyun 	/* TDNR 700 ~ 799 */
94*4882a593Smuzhiyun 	IS_ERROR_TDNR_PWRDN_FAIL	= 700,
95*4882a593Smuzhiyun 
96*4882a593Smuzhiyun 	/* SCALERC 800 ~ 899 */
97*4882a593Smuzhiyun 	IS_ERROR_SCALERP_PWRDN_FAIL	= 800,
98*4882a593Smuzhiyun 
99*4882a593Smuzhiyun 	/* FD 900 ~ 999 */
100*4882a593Smuzhiyun 	IS_ERROR_FD_PWRDN_FAIL		= 900,
101*4882a593Smuzhiyun 	IS_ERROR_FD_MULTIPLE_INPUT,
102*4882a593Smuzhiyun 	IS_ERROR_FD_ABSENT_INPUT,
103*4882a593Smuzhiyun 	IS_ERROR_FD_NONADJACENT_INPUT,
104*4882a593Smuzhiyun 	IS_ERROR_LHFD_FRAME_END_TIME_OUT,
105*4882a593Smuzhiyun 
106*4882a593Smuzhiyun 	IS_ERROR_UNKNOWN		= 1000,
107*4882a593Smuzhiyun };
108*4882a593Smuzhiyun 
109*4882a593Smuzhiyun #define IS_ERROR_TIME_OUT_FLAG	0x80000000
110*4882a593Smuzhiyun 
111*4882a593Smuzhiyun /* Set parameter error enum */
112*4882a593Smuzhiyun enum fimc_is_error {
113*4882a593Smuzhiyun 	/* Common error (0~99) */
114*4882a593Smuzhiyun 	ERROR_COMMON_NONE		= 0,
115*4882a593Smuzhiyun 	ERROR_COMMON_CMD		= 1,	/* Invalid command */
116*4882a593Smuzhiyun 	ERROR_COMMON_PARAMETER		= 2,	/* Invalid parameter */
117*4882a593Smuzhiyun 	/* setfile is not loaded before adjusting */
118*4882a593Smuzhiyun 	ERROR_COMMON_SETFILE_LOAD	= 3,
119*4882a593Smuzhiyun 	/* setfile is not Adjusted before runnng. */
120*4882a593Smuzhiyun 	ERROR_COMMON_SETFILE_ADJUST	= 4,
121*4882a593Smuzhiyun 	/* Index of setfile is not valid (0~MAX_SETFILE_NUM-1) */
122*4882a593Smuzhiyun 	ERROR_COMMON_SETFILE_INDEX	= 5,
123*4882a593Smuzhiyun 	/* Input path can be changed in ready state(stop) */
124*4882a593Smuzhiyun 	ERROR_COMMON_INPUT_PATH		= 6,
125*4882a593Smuzhiyun 	/* IP can not start if input path is not set */
126*4882a593Smuzhiyun 	ERROR_COMMON_INPUT_INIT		= 7,
127*4882a593Smuzhiyun 	/* Output path can be changed in ready state (stop) */
128*4882a593Smuzhiyun 	ERROR_COMMON_OUTPUT_PATH	= 8,
129*4882a593Smuzhiyun 	/* IP can not start if output path is not set */
130*4882a593Smuzhiyun 	ERROR_COMMON_OUTPUT_INIT	= 9,
131*4882a593Smuzhiyun 
132*4882a593Smuzhiyun 	ERROR_CONTROL_NONE		= ERROR_COMMON_NONE,
133*4882a593Smuzhiyun 	ERROR_CONTROL_BYPASS		= 11,	/* Enable or Disable */
134*4882a593Smuzhiyun 
135*4882a593Smuzhiyun 	ERROR_OTF_INPUT_NONE		= ERROR_COMMON_NONE,
136*4882a593Smuzhiyun 	ERROR_OTF_INPUT_CMD		= 21,
137*4882a593Smuzhiyun 	/* invalid format  (DRC: YUV444, FD: YUV444, 422, 420) */
138*4882a593Smuzhiyun 	ERROR_OTF_INPUT_FORMAT		= 22,
139*4882a593Smuzhiyun 	/* invalid width (DRC: 128~8192, FD: 32~8190) */
140*4882a593Smuzhiyun 	ERROR_OTF_INPUT_WIDTH		= 23,
141*4882a593Smuzhiyun 	/* invalid height (DRC: 64~8192, FD: 16~8190) */
142*4882a593Smuzhiyun 	ERROR_OTF_INPUT_HEIGHT		= 24,
143*4882a593Smuzhiyun 	/* invalid bit-width (DRC: 8~12bits, FD: 8bit) */
144*4882a593Smuzhiyun 	ERROR_OTF_INPUT_BIT_WIDTH	= 25,
145*4882a593Smuzhiyun 	/* invalid FrameTime for ISP */
146*4882a593Smuzhiyun 	ERROR_OTF_INPUT_USER_FRAMETIIME	= 26,
147*4882a593Smuzhiyun 
148*4882a593Smuzhiyun 	ERROR_DMA_INPUT_NONE		= ERROR_COMMON_NONE,
149*4882a593Smuzhiyun 	/* invalid width (DRC: 128~8192, FD: 32~8190) */
150*4882a593Smuzhiyun 	ERROR_DMA_INPUT_WIDTH		= 31,
151*4882a593Smuzhiyun 	/* invalid height (DRC: 64~8192, FD: 16~8190) */
152*4882a593Smuzhiyun 	ERROR_DMA_INPUT_HEIGHT		= 32,
153*4882a593Smuzhiyun 	/* invalid format (DRC: YUV444 or YUV422, FD: YUV444, 422, 420) */
154*4882a593Smuzhiyun 	ERROR_DMA_INPUT_FORMAT		= 33,
155*4882a593Smuzhiyun 	/* invalid bit-width (DRC: 8~12bit, FD: 8bit) */
156*4882a593Smuzhiyun 	ERROR_DMA_INPUT_BIT_WIDTH	= 34,
157*4882a593Smuzhiyun 	/* invalid order(DRC: YYCbCrorYCbYCr, FD:NO,YYCbCr,YCbYCr,CbCr,CrCb) */
158*4882a593Smuzhiyun 	ERROR_DMA_INPUT_ORDER		= 35,
159*4882a593Smuzhiyun 	/* invalid palne (DRC: 3, FD: 1, 2, 3) */
160*4882a593Smuzhiyun 	ERROR_DMA_INPUT_PLANE		= 36,
161*4882a593Smuzhiyun 
162*4882a593Smuzhiyun 	ERROR_OTF_OUTPUT_NONE		= ERROR_COMMON_NONE,
163*4882a593Smuzhiyun 	/* invalid width (DRC: 128~8192) */
164*4882a593Smuzhiyun 	ERROR_OTF_OUTPUT_WIDTH		= 41,
165*4882a593Smuzhiyun 	/* invalid height (DRC: 64~8192) */
166*4882a593Smuzhiyun 	ERROR_OTF_OUTPUT_HEIGHT		= 42,
167*4882a593Smuzhiyun 	/* invalid format (DRC: YUV444) */
168*4882a593Smuzhiyun 	ERROR_OTF_OUTPUT_FORMAT		= 43,
169*4882a593Smuzhiyun 	/* invalid bit-width (DRC: 8~12bits) */
170*4882a593Smuzhiyun 	ERROR_OTF_OUTPUT_BIT_WIDTH	= 44,
171*4882a593Smuzhiyun 
172*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_NONE		= ERROR_COMMON_NONE,
173*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_WIDTH		= 51,	/* invalid width */
174*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_HEIGHT		= 52,	/* invalid height */
175*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_FORMAT		= 53,	/* invalid format */
176*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_BIT_WIDTH	= 54,	/* invalid bit-width */
177*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_PLANE		= 55,	/* invalid plane */
178*4882a593Smuzhiyun 	ERROR_DMA_OUTPUT_ORDER		= 56,	/* invalid order */
179*4882a593Smuzhiyun 
180*4882a593Smuzhiyun 	ERROR_GLOBAL_SHOTMODE_NONE	= ERROR_COMMON_NONE,
181*4882a593Smuzhiyun 
182*4882a593Smuzhiyun 	/* SENSOR Error(100~199) */
183*4882a593Smuzhiyun 	ERROR_SENSOR_NONE		= ERROR_COMMON_NONE,
184*4882a593Smuzhiyun 	ERROR_SENSOR_I2C_FAIL		= 101,
185*4882a593Smuzhiyun 	ERROR_SENSOR_INVALID_FRAMERATE,
186*4882a593Smuzhiyun 	ERROR_SENSOR_INVALID_EXPOSURETIME,
187*4882a593Smuzhiyun 	ERROR_SENSOR_INVALID_SIZE,
188*4882a593Smuzhiyun 	ERROR_SENSOR_INVALID_SETTING,
189*4882a593Smuzhiyun 	ERROR_SENSOR_ACTUATOR_INIT_FAIL,
190*4882a593Smuzhiyun 	ERROR_SENSOR_INVALID_AF_POS,
191*4882a593Smuzhiyun 	ERROR_SENSOR_UNSUPPORT_FUNC,
192*4882a593Smuzhiyun 	ERROR_SENSOR_UNSUPPORT_PERI,
193*4882a593Smuzhiyun 	ERROR_SENSOR_UNSUPPORT_AF,
194*4882a593Smuzhiyun 
195*4882a593Smuzhiyun 	/* ISP Error (200~299) */
196*4882a593Smuzhiyun 	ERROR_ISP_AF_NONE		= ERROR_COMMON_NONE,
197*4882a593Smuzhiyun 	ERROR_ISP_AF_BUSY		= 201,
198*4882a593Smuzhiyun 	ERROR_ISP_AF_INVALID_COMMAND	= 202,
199*4882a593Smuzhiyun 	ERROR_ISP_AF_INVALID_MODE	= 203,
200*4882a593Smuzhiyun 	ERROR_ISP_FLASH_NONE		= ERROR_COMMON_NONE,
201*4882a593Smuzhiyun 	ERROR_ISP_AWB_NONE		= ERROR_COMMON_NONE,
202*4882a593Smuzhiyun 	ERROR_ISP_IMAGE_EFFECT_NONE	= ERROR_COMMON_NONE,
203*4882a593Smuzhiyun 	ERROR_ISP_ISO_NONE		= ERROR_COMMON_NONE,
204*4882a593Smuzhiyun 	ERROR_ISP_ADJUST_NONE		= ERROR_COMMON_NONE,
205*4882a593Smuzhiyun 	ERROR_ISP_METERING_NONE		= ERROR_COMMON_NONE,
206*4882a593Smuzhiyun 	ERROR_ISP_AFC_NONE		= ERROR_COMMON_NONE,
207*4882a593Smuzhiyun 
208*4882a593Smuzhiyun 	/* DRC Error (300~399) */
209*4882a593Smuzhiyun 
210*4882a593Smuzhiyun 	/* FD Error  (400~499) */
211*4882a593Smuzhiyun 	ERROR_FD_NONE					= ERROR_COMMON_NONE,
212*4882a593Smuzhiyun 	/* Invalid max number (1~16) */
213*4882a593Smuzhiyun 	ERROR_FD_CONFIG_MAX_NUMBER_STATE		= 401,
214*4882a593Smuzhiyun 	ERROR_FD_CONFIG_MAX_NUMBER_INVALID		= 402,
215*4882a593Smuzhiyun 	ERROR_FD_CONFIG_YAW_ANGLE_STATE			= 403,
216*4882a593Smuzhiyun 	ERROR_FD_CONFIG_YAW_ANGLE_INVALID		= 404,
217*4882a593Smuzhiyun 	ERROR_FD_CONFIG_ROLL_ANGLE_STATE		= 405,
218*4882a593Smuzhiyun 	ERROR_FD_CONFIG_ROLL_ANGLE_INVALID		= 406,
219*4882a593Smuzhiyun 	ERROR_FD_CONFIG_SMILE_MODE_INVALID		= 407,
220*4882a593Smuzhiyun 	ERROR_FD_CONFIG_BLINK_MODE_INVALID		= 408,
221*4882a593Smuzhiyun 	ERROR_FD_CONFIG_EYES_DETECT_INVALID		= 409,
222*4882a593Smuzhiyun 	ERROR_FD_CONFIG_MOUTH_DETECT_INVALID		= 410,
223*4882a593Smuzhiyun 	ERROR_FD_CONFIG_ORIENTATION_STATE		= 411,
224*4882a593Smuzhiyun 	ERROR_FD_CONFIG_ORIENTATION_INVALID		= 412,
225*4882a593Smuzhiyun 	ERROR_FD_CONFIG_ORIENTATION_VALUE_INVALID	= 413,
226*4882a593Smuzhiyun 	/* PARAM_FdResultStr can be only applied in ready-state or stream off */
227*4882a593Smuzhiyun 	ERROR_FD_RESULT					= 414,
228*4882a593Smuzhiyun 	/* PARAM_FdModeStr can be only applied in ready-state or stream off */
229*4882a593Smuzhiyun 	ERROR_FD_MODE					= 415,
230*4882a593Smuzhiyun 	/* Scaler Error  (500 ~ 599) */
231*4882a593Smuzhiyun 	ERROR_SCALER_NO_NONE				= ERROR_COMMON_NONE,
232*4882a593Smuzhiyun 	ERROR_SCALER_DMA_OUTSEL				= 501,
233*4882a593Smuzhiyun 	ERROR_SCALER_H_RATIO				= 502,
234*4882a593Smuzhiyun 	ERROR_SCALER_V_RATIO				= 503,
235*4882a593Smuzhiyun 
236*4882a593Smuzhiyun 	ERROR_SCALER_IMAGE_EFFECT			= 510,
237*4882a593Smuzhiyun 
238*4882a593Smuzhiyun 	ERROR_SCALER_ROTATE				= 520,
239*4882a593Smuzhiyun 	ERROR_SCALER_FLIP				= 521,
240*4882a593Smuzhiyun };
241*4882a593Smuzhiyun 
242*4882a593Smuzhiyun const char *fimc_is_strerr(unsigned int error);
243*4882a593Smuzhiyun const char *fimc_is_param_strerr(unsigned int error);
244*4882a593Smuzhiyun 
245*4882a593Smuzhiyun #endif /* FIMC_IS_ERR_H_ */
246