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