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 
15 const 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 
146 const 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