270 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * Samsung Exynos4 SoC series FIMC-IS slave interface driver4 *5 * Error log interface functions6 *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