1/*
2 * Samsung Exynos4 SoC series FIMC-IS slave interface driver
3 *
4 * Error log interface functions
5 *
6 * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd.
7 *
8 * Authors: Younghwan Joo <yhwan.joo@samsung.com>
9 *          Sylwester Nawrocki <s.nawrocki@samsung.com>
10 *
11 * This program is free software; you can redistribute it and/or modify
12 * it under the terms of the GNU General Public License version 2 as
13 * published by the Free Software Foundation.
14 */
15
16#include "fimc-is-errno.h"
17
18const char *fimc_is_param_strerr(unsigned int error)
19{
20	switch (error) {
21	case ERROR_COMMON_CMD:
22		return "ERROR_COMMON_CMD: Invalid Command";
23	case ERROR_COMMON_PARAMETER:
24		return "ERROR_COMMON_PARAMETER: Invalid Parameter";
25	case ERROR_COMMON_SETFILE_LOAD:
26		return "ERROR_COMMON_SETFILE_LOAD: Illegal Setfile Loading";
27	case ERROR_COMMON_SETFILE_ADJUST:
28		return "ERROR_COMMON_SETFILE_ADJUST: Setfile isn't adjusted";
29	case ERROR_COMMON_SETFILE_INDEX:
30		return "ERROR_COMMON_SETFILE_INDEX: Invalid setfile index";
31	case ERROR_COMMON_INPUT_PATH:
32		return "ERROR_COMMON_INPUT_PATH: Input path can be changed in ready state";
33	case ERROR_COMMON_INPUT_INIT:
34		return "ERROR_COMMON_INPUT_INIT: IP can not start if input path is not set";
35	case ERROR_COMMON_OUTPUT_PATH:
36		return "ERROR_COMMON_OUTPUT_PATH: Output path can be changed in ready state (stop)";
37	case ERROR_COMMON_OUTPUT_INIT:
38		return "ERROR_COMMON_OUTPUT_INIT: IP can not start if output path is not set";
39	case ERROR_CONTROL_BYPASS:
40		return "ERROR_CONTROL_BYPASS";
41	case ERROR_OTF_INPUT_FORMAT:
42		return "ERROR_OTF_INPUT_FORMAT: Invalid format  (DRC: YUV444, FD: YUV444, 422, 420)";
43	case ERROR_OTF_INPUT_WIDTH:
44		return "ERROR_OTF_INPUT_WIDTH: Invalid width (DRC: 128~8192, FD: 32~8190)";
45	case ERROR_OTF_INPUT_HEIGHT:
46		return "ERROR_OTF_INPUT_HEIGHT: Invalid bit-width (DRC: 8~12bits, FD: 8bit)";
47	case ERROR_OTF_INPUT_BIT_WIDTH:
48		return "ERROR_OTF_INPUT_BIT_WIDTH: Invalid bit-width (DRC: 8~12bits, FD: 8bit)";
49	case ERROR_DMA_INPUT_WIDTH:
50		return "ERROR_DMA_INPUT_WIDTH: Invalid width (DRC: 128~8192, FD: 32~8190)";
51	case ERROR_DMA_INPUT_HEIGHT:
52		return "ERROR_DMA_INPUT_HEIGHT: Invalid height (DRC: 64~8192, FD: 16~8190)";
53	case ERROR_DMA_INPUT_FORMAT:
54		return "ERROR_DMA_INPUT_FORMAT: Invalid format (DRC: YUV444 or YUV422, FD: YUV444,422,420)";
55	case ERROR_DMA_INPUT_BIT_WIDTH:
56		return "ERROR_DMA_INPUT_BIT_WIDTH: Invalid bit-width (DRC: 8~12bits, FD: 8bit)";
57	case ERROR_DMA_INPUT_ORDER:
58		return "ERROR_DMA_INPUT_ORDER: Invalid order(DRC: YYCbCr,YCbYCr,FD:NO,YYCbCr,YCbYCr,CbCr,CrCb)";
59	case ERROR_DMA_INPUT_PLANE:
60		return "ERROR_DMA_INPUT_PLANE: Invalid palne (DRC: 3, FD: 1, 2, 3)";
61	case ERROR_OTF_OUTPUT_WIDTH:
62		return "ERROR_OTF_OUTPUT_WIDTH: Invalid width (DRC: 128~8192)";
63	case ERROR_OTF_OUTPUT_HEIGHT:
64		return "ERROR_OTF_OUTPUT_HEIGHT: Invalid height (DRC: 64~8192)";
65	case ERROR_OTF_OUTPUT_FORMAT:
66		return "ERROR_OTF_OUTPUT_FORMAT: Invalid format (DRC: YUV444)";
67	case ERROR_OTF_OUTPUT_BIT_WIDTH:
68		return "ERROR_OTF_OUTPUT_BIT_WIDTH: Invalid bit-width (DRC: 8~12bits, FD: 8bit)";
69	case ERROR_DMA_OUTPUT_WIDTH:
70		return "ERROR_DMA_OUTPUT_WIDTH";
71	case ERROR_DMA_OUTPUT_HEIGHT:
72		return "ERROR_DMA_OUTPUT_HEIGHT";
73	case ERROR_DMA_OUTPUT_FORMAT:
74		return "ERROR_DMA_OUTPUT_FORMAT";
75	case ERROR_DMA_OUTPUT_BIT_WIDTH:
76		return "ERROR_DMA_OUTPUT_BIT_WIDTH";
77	case ERROR_DMA_OUTPUT_PLANE:
78		return "ERROR_DMA_OUTPUT_PLANE";
79	case ERROR_DMA_OUTPUT_ORDER:
80		return "ERROR_DMA_OUTPUT_ORDER";
81
82	/* Sensor Error(100~199) */
83	case ERROR_SENSOR_I2C_FAIL:
84		return "ERROR_SENSOR_I2C_FAIL";
85	case ERROR_SENSOR_INVALID_FRAMERATE:
86		return "ERROR_SENSOR_INVALID_FRAMERATE";
87	case ERROR_SENSOR_INVALID_EXPOSURETIME:
88		return "ERROR_SENSOR_INVALID_EXPOSURETIME";
89	case ERROR_SENSOR_INVALID_SIZE:
90		return "ERROR_SENSOR_INVALID_SIZE";
91	case ERROR_SENSOR_INVALID_SETTING:
92		return "ERROR_SENSOR_INVALID_SETTING";
93	case ERROR_SENSOR_ACTURATOR_INIT_FAIL:
94		return "ERROR_SENSOR_ACTURATOR_INIT_FAIL";
95	case ERROR_SENSOR_INVALID_AF_POS:
96		return "ERROR_SENSOR_INVALID_AF_POS";
97	case ERROR_SENSOR_UNSUPPORT_FUNC:
98		return "ERROR_SENSOR_UNSUPPORT_FUNC";
99	case ERROR_SENSOR_UNSUPPORT_PERI:
100		return "ERROR_SENSOR_UNSUPPORT_PERI";
101	case ERROR_SENSOR_UNSUPPORT_AF:
102		return "ERROR_SENSOR_UNSUPPORT_AF";
103
104	/* ISP Error (200~299) */
105	case ERROR_ISP_AF_BUSY:
106		return "ERROR_ISP_AF_BUSY";
107	case ERROR_ISP_AF_INVALID_COMMAND:
108		return "ERROR_ISP_AF_INVALID_COMMAND";
109	case ERROR_ISP_AF_INVALID_MODE:
110		return "ERROR_ISP_AF_INVALID_MODE";
111
112	/* DRC Error (300~399) */
113	/* FD Error  (400~499) */
114	case ERROR_FD_CONFIG_MAX_NUMBER_STATE:
115		return "ERROR_FD_CONFIG_MAX_NUMBER_STATE";
116	case ERROR_FD_CONFIG_MAX_NUMBER_INVALID:
117		return "ERROR_FD_CONFIG_MAX_NUMBER_INVALID";
118	case ERROR_FD_CONFIG_YAW_ANGLE_STATE:
119		return "ERROR_FD_CONFIG_YAW_ANGLE_STATE";
120	case ERROR_FD_CONFIG_YAW_ANGLE_INVALID:
121		return "ERROR_FD_CONFIG_YAW_ANGLE_INVALID\n";
122	case ERROR_FD_CONFIG_ROLL_ANGLE_STATE:
123		return "ERROR_FD_CONFIG_ROLL_ANGLE_STATE";
124	case ERROR_FD_CONFIG_ROLL_ANGLE_INVALID:
125		return "ERROR_FD_CONFIG_ROLL_ANGLE_INVALID";
126	case ERROR_FD_CONFIG_SMILE_MODE_INVALID:
127		return "ERROR_FD_CONFIG_SMILE_MODE_INVALID";
128	case ERROR_FD_CONFIG_BLINK_MODE_INVALID:
129		return "ERROR_FD_CONFIG_BLINK_MODE_INVALID";
130	case ERROR_FD_CONFIG_EYES_DETECT_INVALID:
131		return "ERROR_FD_CONFIG_EYES_DETECT_INVALID";
132	case ERROR_FD_CONFIG_MOUTH_DETECT_INVALID:
133		return "ERROR_FD_CONFIG_MOUTH_DETECT_INVALID";
134	case ERROR_FD_CONFIG_ORIENTATION_STATE:
135		return "ERROR_FD_CONFIG_ORIENTATION_STATE";
136	case ERROR_FD_CONFIG_ORIENTATION_INVALID:
137		return "ERROR_FD_CONFIG_ORIENTATION_INVALID";
138	case ERROR_FD_CONFIG_ORIENTATION_VALUE_INVALID:
139		return "ERROR_FD_CONFIG_ORIENTATION_VALUE_INVALID";
140	case ERROR_FD_RESULT:
141		return "ERROR_FD_RESULT";
142	case ERROR_FD_MODE:
143		return "ERROR_FD_MODE";
144	default:
145		return "Unknown";
146	}
147}
148
149const char *fimc_is_strerr(unsigned int error)
150{
151	error &= ~IS_ERROR_TIME_OUT_FLAG;
152
153	switch (error) {
154	/* General */
155	case IS_ERROR_INVALID_COMMAND:
156		return "IS_ERROR_INVALID_COMMAND";
157	case IS_ERROR_REQUEST_FAIL:
158		return "IS_ERROR_REQUEST_FAIL";
159	case IS_ERROR_INVALID_SCENARIO:
160		return "IS_ERROR_INVALID_SCENARIO";
161	case IS_ERROR_INVALID_SENSORID:
162		return "IS_ERROR_INVALID_SENSORID";
163	case IS_ERROR_INVALID_MODE_CHANGE:
164		return "IS_ERROR_INVALID_MODE_CHANGE";
165	case IS_ERROR_INVALID_MAGIC_NUMBER:
166		return "IS_ERROR_INVALID_MAGIC_NUMBER";
167	case IS_ERROR_INVALID_SETFILE_HDR:
168		return "IS_ERROR_INVALID_SETFILE_HDR";
169	case IS_ERROR_BUSY:
170		return "IS_ERROR_BUSY";
171	case IS_ERROR_SET_PARAMETER:
172		return "IS_ERROR_SET_PARAMETER";
173	case IS_ERROR_INVALID_PATH:
174		return "IS_ERROR_INVALID_PATH";
175	case IS_ERROR_OPEN_SENSOR_FAIL:
176		return "IS_ERROR_OPEN_SENSOR_FAIL";
177	case IS_ERROR_ENTRY_MSG_THREAD_DOWN:
178		return "IS_ERROR_ENTRY_MSG_THREAD_DOWN";
179	case IS_ERROR_ISP_FRAME_END_NOT_DONE:
180		return "IS_ERROR_ISP_FRAME_END_NOT_DONE";
181	case IS_ERROR_DRC_FRAME_END_NOT_DONE:
182		return "IS_ERROR_DRC_FRAME_END_NOT_DONE";
183	case IS_ERROR_SCALERC_FRAME_END_NOT_DONE:
184		return "IS_ERROR_SCALERC_FRAME_END_NOT_DONE";
185	case IS_ERROR_ODC_FRAME_END_NOT_DONE:
186		return "IS_ERROR_ODC_FRAME_END_NOT_DONE";
187	case IS_ERROR_DIS_FRAME_END_NOT_DONE:
188		return "IS_ERROR_DIS_FRAME_END_NOT_DONE";
189	case IS_ERROR_TDNR_FRAME_END_NOT_DONE:
190		return "IS_ERROR_TDNR_FRAME_END_NOT_DONE";
191	case IS_ERROR_SCALERP_FRAME_END_NOT_DONE:
192		return "IS_ERROR_SCALERP_FRAME_END_NOT_DONE";
193	case IS_ERROR_WAIT_STREAM_OFF_NOT_DONE:
194		return "IS_ERROR_WAIT_STREAM_OFF_NOT_DONE";
195	case IS_ERROR_NO_MSG_IS_RECEIVED:
196		return "IS_ERROR_NO_MSG_IS_RECEIVED";
197	case IS_ERROR_SENSOR_MSG_FAIL:
198		return "IS_ERROR_SENSOR_MSG_FAIL";
199	case IS_ERROR_ISP_MSG_FAIL:
200		return "IS_ERROR_ISP_MSG_FAIL";
201	case IS_ERROR_DRC_MSG_FAIL:
202		return "IS_ERROR_DRC_MSG_FAIL";
203	case IS_ERROR_LHFD_MSG_FAIL:
204		return "IS_ERROR_LHFD_MSG_FAIL";
205	case IS_ERROR_UNKNOWN:
206		return "IS_ERROR_UNKNOWN";
207
208	/* Sensor */
209	case IS_ERROR_SENSOR_PWRDN_FAIL:
210		return "IS_ERROR_SENSOR_PWRDN_FAIL";
211
212	/* ISP */
213	case IS_ERROR_ISP_PWRDN_FAIL:
214		return "IS_ERROR_ISP_PWRDN_FAIL";
215	case IS_ERROR_ISP_MULTIPLE_INPUT:
216		return "IS_ERROR_ISP_MULTIPLE_INPUT";
217	case IS_ERROR_ISP_ABSENT_INPUT:
218		return "IS_ERROR_ISP_ABSENT_INPUT";
219	case IS_ERROR_ISP_ABSENT_OUTPUT:
220		return "IS_ERROR_ISP_ABSENT_OUTPUT";
221	case IS_ERROR_ISP_NONADJACENT_OUTPUT:
222		return "IS_ERROR_ISP_NONADJACENT_OUTPUT";
223	case IS_ERROR_ISP_FORMAT_MISMATCH:
224		return "IS_ERROR_ISP_FORMAT_MISMATCH";
225	case IS_ERROR_ISP_WIDTH_MISMATCH:
226		return "IS_ERROR_ISP_WIDTH_MISMATCH";
227	case IS_ERROR_ISP_HEIGHT_MISMATCH:
228		return "IS_ERROR_ISP_HEIGHT_MISMATCH";
229	case IS_ERROR_ISP_BITWIDTH_MISMATCH:
230		return "IS_ERROR_ISP_BITWIDTH_MISMATCH";
231	case IS_ERROR_ISP_FRAME_END_TIME_OUT:
232		return "IS_ERROR_ISP_FRAME_END_TIME_OUT";
233
234	/* DRC */
235	case IS_ERROR_DRC_PWRDN_FAIL:
236		return "IS_ERROR_DRC_PWRDN_FAIL";
237	case IS_ERROR_DRC_MULTIPLE_INPUT:
238		return "IS_ERROR_DRC_MULTIPLE_INPUT";
239	case IS_ERROR_DRC_ABSENT_INPUT:
240		return "IS_ERROR_DRC_ABSENT_INPUT";
241	case IS_ERROR_DRC_NONADJACENT_INPUT:
242		return "IS_ERROR_DRC_NONADJACENT_INPUT";
243	case IS_ERROR_DRC_ABSENT_OUTPUT:
244		return "IS_ERROR_DRC_ABSENT_OUTPUT";
245	case IS_ERROR_DRC_NONADJACENT_OUTPUT:
246		return "IS_ERROR_DRC_NONADJACENT_OUTPUT";
247	case IS_ERROR_DRC_FORMAT_MISMATCH:
248		return "IS_ERROR_DRC_FORMAT_MISMATCH";
249	case IS_ERROR_DRC_WIDTH_MISMATCH:
250		return "IS_ERROR_DRC_WIDTH_MISMATCH";
251	case IS_ERROR_DRC_HEIGHT_MISMATCH:
252		return "IS_ERROR_DRC_HEIGHT_MISMATCH";
253	case IS_ERROR_DRC_BITWIDTH_MISMATCH:
254		return "IS_ERROR_DRC_BITWIDTH_MISMATCH";
255	case IS_ERROR_DRC_FRAME_END_TIME_OUT:
256		return "IS_ERROR_DRC_FRAME_END_TIME_OUT";
257
258	/* FD */
259	case IS_ERROR_FD_PWRDN_FAIL:
260		return "IS_ERROR_FD_PWRDN_FAIL";
261	case IS_ERROR_FD_MULTIPLE_INPUT:
262		return "IS_ERROR_FD_MULTIPLE_INPUT";
263	case IS_ERROR_FD_ABSENT_INPUT:
264		return "IS_ERROR_FD_ABSENT_INPUT";
265	case IS_ERROR_FD_NONADJACENT_INPUT:
266		return "IS_ERROR_FD_NONADJACENT_INPUT";
267	case IS_ERROR_LHFD_FRAME_END_TIME_OUT:
268		return "IS_ERROR_LHFD_FRAME_END_TIME_OUT";
269	default:
270		return "Unknown";
271	}
272}
273