162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0-only */
262306a36Sopenharmony_ci/*
362306a36Sopenharmony_ci * Samsung Exynos4 SoC series FIMC-IS slave interface driver
462306a36Sopenharmony_ci *
562306a36Sopenharmony_ci * FIMC-IS error code definition
662306a36Sopenharmony_ci *
762306a36Sopenharmony_ci * Copyright (C) 2011 - 2013 Samsung Electronics Co., Ltd.
862306a36Sopenharmony_ci *
962306a36Sopenharmony_ci * Authors: Younghwan Joo <yhwan.joo@samsung.com>
1062306a36Sopenharmony_ci *          Sylwester Nawrocki <s.nawrocki@samsung.com>
1162306a36Sopenharmony_ci*/
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci#ifndef FIMC_IS_ERR_H_
1462306a36Sopenharmony_ci#define FIMC_IS_ERR_H_
1562306a36Sopenharmony_ci
1662306a36Sopenharmony_ci#define IS_ERROR_VER			011 /* IS ERROR VERSION 0.11 */
1762306a36Sopenharmony_ci
1862306a36Sopenharmony_cienum {
1962306a36Sopenharmony_ci	IS_ERROR_NONE,
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci	/* General 1 ~ 99 */
2262306a36Sopenharmony_ci	IS_ERROR_INVALID_COMMAND,
2362306a36Sopenharmony_ci	IS_ERROR_REQUEST_FAIL,
2462306a36Sopenharmony_ci	IS_ERROR_INVALID_SCENARIO,
2562306a36Sopenharmony_ci	IS_ERROR_INVALID_SENSORID,
2662306a36Sopenharmony_ci	IS_ERROR_INVALID_MODE_CHANGE,
2762306a36Sopenharmony_ci	IS_ERROR_INVALID_MAGIC_NUMBER,
2862306a36Sopenharmony_ci	IS_ERROR_INVALID_SETFILE_HDR,
2962306a36Sopenharmony_ci	IS_ERROR_BUSY,
3062306a36Sopenharmony_ci	IS_ERROR_SET_PARAMETER,
3162306a36Sopenharmony_ci	IS_ERROR_INVALID_PATH,
3262306a36Sopenharmony_ci	IS_ERROR_OPEN_SENSOR_FAIL,
3362306a36Sopenharmony_ci	IS_ERROR_ENTRY_MSG_THREAD_DOWN,
3462306a36Sopenharmony_ci	IS_ERROR_ISP_FRAME_END_NOT_DONE,
3562306a36Sopenharmony_ci	IS_ERROR_DRC_FRAME_END_NOT_DONE,
3662306a36Sopenharmony_ci	IS_ERROR_SCALERC_FRAME_END_NOT_DONE,
3762306a36Sopenharmony_ci	IS_ERROR_ODC_FRAME_END_NOT_DONE,
3862306a36Sopenharmony_ci	IS_ERROR_DIS_FRAME_END_NOT_DONE,
3962306a36Sopenharmony_ci	IS_ERROR_TDNR_FRAME_END_NOT_DONE,
4062306a36Sopenharmony_ci	IS_ERROR_SCALERP_FRAME_END_NOT_DONE,
4162306a36Sopenharmony_ci	IS_ERROR_WAIT_STREAM_OFF_NOT_DONE,
4262306a36Sopenharmony_ci	IS_ERROR_NO_MSG_IS_RECEIVED,
4362306a36Sopenharmony_ci	IS_ERROR_SENSOR_MSG_FAIL,
4462306a36Sopenharmony_ci	IS_ERROR_ISP_MSG_FAIL,
4562306a36Sopenharmony_ci	IS_ERROR_DRC_MSG_FAIL,
4662306a36Sopenharmony_ci	IS_ERROR_SCALERC_MSG_FAIL,
4762306a36Sopenharmony_ci	IS_ERROR_ODC_MSG_FAIL,
4862306a36Sopenharmony_ci	IS_ERROR_DIS_MSG_FAIL,
4962306a36Sopenharmony_ci	IS_ERROR_TDNR_MSG_FAIL,
5062306a36Sopenharmony_ci	IS_ERROR_SCALERP_MSG_FAIL,
5162306a36Sopenharmony_ci	IS_ERROR_LHFD_MSG_FAIL,
5262306a36Sopenharmony_ci	IS_ERROR_LHFD_INTERNAL_STOP,
5362306a36Sopenharmony_ci
5462306a36Sopenharmony_ci	/* Sensor 100 ~ 199 */
5562306a36Sopenharmony_ci	IS_ERROR_SENSOR_PWRDN_FAIL	= 100,
5662306a36Sopenharmony_ci	IS_ERROR_SENSOR_STREAM_ON_FAIL,
5762306a36Sopenharmony_ci	IS_ERROR_SENSOR_STREAM_OFF_FAIL,
5862306a36Sopenharmony_ci
5962306a36Sopenharmony_ci	/* ISP 200 ~ 299 */
6062306a36Sopenharmony_ci	IS_ERROR_ISP_PWRDN_FAIL		= 200,
6162306a36Sopenharmony_ci	IS_ERROR_ISP_MULTIPLE_INPUT,
6262306a36Sopenharmony_ci	IS_ERROR_ISP_ABSENT_INPUT,
6362306a36Sopenharmony_ci	IS_ERROR_ISP_ABSENT_OUTPUT,
6462306a36Sopenharmony_ci	IS_ERROR_ISP_NONADJACENT_OUTPUT,
6562306a36Sopenharmony_ci	IS_ERROR_ISP_FORMAT_MISMATCH,
6662306a36Sopenharmony_ci	IS_ERROR_ISP_WIDTH_MISMATCH,
6762306a36Sopenharmony_ci	IS_ERROR_ISP_HEIGHT_MISMATCH,
6862306a36Sopenharmony_ci	IS_ERROR_ISP_BITWIDTH_MISMATCH,
6962306a36Sopenharmony_ci	IS_ERROR_ISP_FRAME_END_TIME_OUT,
7062306a36Sopenharmony_ci
7162306a36Sopenharmony_ci	/* DRC 300 ~ 399 */
7262306a36Sopenharmony_ci	IS_ERROR_DRC_PWRDN_FAIL		= 300,
7362306a36Sopenharmony_ci	IS_ERROR_DRC_MULTIPLE_INPUT,
7462306a36Sopenharmony_ci	IS_ERROR_DRC_ABSENT_INPUT,
7562306a36Sopenharmony_ci	IS_ERROR_DRC_NONADJACENT_INPUT,
7662306a36Sopenharmony_ci	IS_ERROR_DRC_ABSENT_OUTPUT,
7762306a36Sopenharmony_ci	IS_ERROR_DRC_NONADJACENT_OUTPUT,
7862306a36Sopenharmony_ci	IS_ERROR_DRC_FORMAT_MISMATCH,
7962306a36Sopenharmony_ci	IS_ERROR_DRC_WIDTH_MISMATCH,
8062306a36Sopenharmony_ci	IS_ERROR_DRC_HEIGHT_MISMATCH,
8162306a36Sopenharmony_ci	IS_ERROR_DRC_BITWIDTH_MISMATCH,
8262306a36Sopenharmony_ci	IS_ERROR_DRC_FRAME_END_TIME_OUT,
8362306a36Sopenharmony_ci
8462306a36Sopenharmony_ci	/* SCALERC 400 ~ 499 */
8562306a36Sopenharmony_ci	IS_ERROR_SCALERC_PWRDN_FAIL	= 400,
8662306a36Sopenharmony_ci
8762306a36Sopenharmony_ci	/* ODC 500 ~ 599 */
8862306a36Sopenharmony_ci	IS_ERROR_ODC_PWRDN_FAIL		= 500,
8962306a36Sopenharmony_ci
9062306a36Sopenharmony_ci	/* DIS 600 ~ 699 */
9162306a36Sopenharmony_ci	IS_ERROR_DIS_PWRDN_FAIL		= 600,
9262306a36Sopenharmony_ci
9362306a36Sopenharmony_ci	/* TDNR 700 ~ 799 */
9462306a36Sopenharmony_ci	IS_ERROR_TDNR_PWRDN_FAIL	= 700,
9562306a36Sopenharmony_ci
9662306a36Sopenharmony_ci	/* SCALERC 800 ~ 899 */
9762306a36Sopenharmony_ci	IS_ERROR_SCALERP_PWRDN_FAIL	= 800,
9862306a36Sopenharmony_ci
9962306a36Sopenharmony_ci	/* FD 900 ~ 999 */
10062306a36Sopenharmony_ci	IS_ERROR_FD_PWRDN_FAIL		= 900,
10162306a36Sopenharmony_ci	IS_ERROR_FD_MULTIPLE_INPUT,
10262306a36Sopenharmony_ci	IS_ERROR_FD_ABSENT_INPUT,
10362306a36Sopenharmony_ci	IS_ERROR_FD_NONADJACENT_INPUT,
10462306a36Sopenharmony_ci	IS_ERROR_LHFD_FRAME_END_TIME_OUT,
10562306a36Sopenharmony_ci
10662306a36Sopenharmony_ci	IS_ERROR_UNKNOWN		= 1000,
10762306a36Sopenharmony_ci};
10862306a36Sopenharmony_ci
10962306a36Sopenharmony_ci#define IS_ERROR_TIME_OUT_FLAG	0x80000000
11062306a36Sopenharmony_ci
11162306a36Sopenharmony_ci/* Set parameter error enum */
11262306a36Sopenharmony_cienum fimc_is_error {
11362306a36Sopenharmony_ci	/* Common error (0~99) */
11462306a36Sopenharmony_ci	ERROR_COMMON_NONE		= 0,
11562306a36Sopenharmony_ci	ERROR_COMMON_CMD		= 1,	/* Invalid command */
11662306a36Sopenharmony_ci	ERROR_COMMON_PARAMETER		= 2,	/* Invalid parameter */
11762306a36Sopenharmony_ci	/* setfile is not loaded before adjusting */
11862306a36Sopenharmony_ci	ERROR_COMMON_SETFILE_LOAD	= 3,
11962306a36Sopenharmony_ci	/* setfile is not Adjusted before running. */
12062306a36Sopenharmony_ci	ERROR_COMMON_SETFILE_ADJUST	= 4,
12162306a36Sopenharmony_ci	/* Index of setfile is not valid (0~MAX_SETFILE_NUM-1) */
12262306a36Sopenharmony_ci	ERROR_COMMON_SETFILE_INDEX	= 5,
12362306a36Sopenharmony_ci	/* Input path can be changed in ready state(stop) */
12462306a36Sopenharmony_ci	ERROR_COMMON_INPUT_PATH		= 6,
12562306a36Sopenharmony_ci	/* IP can not start if input path is not set */
12662306a36Sopenharmony_ci	ERROR_COMMON_INPUT_INIT		= 7,
12762306a36Sopenharmony_ci	/* Output path can be changed in ready state (stop) */
12862306a36Sopenharmony_ci	ERROR_COMMON_OUTPUT_PATH	= 8,
12962306a36Sopenharmony_ci	/* IP can not start if output path is not set */
13062306a36Sopenharmony_ci	ERROR_COMMON_OUTPUT_INIT	= 9,
13162306a36Sopenharmony_ci
13262306a36Sopenharmony_ci	ERROR_CONTROL_NONE		= ERROR_COMMON_NONE,
13362306a36Sopenharmony_ci	ERROR_CONTROL_BYPASS		= 11,	/* Enable or Disable */
13462306a36Sopenharmony_ci
13562306a36Sopenharmony_ci	ERROR_OTF_INPUT_NONE		= ERROR_COMMON_NONE,
13662306a36Sopenharmony_ci	ERROR_OTF_INPUT_CMD		= 21,
13762306a36Sopenharmony_ci	/* invalid format  (DRC: YUV444, FD: YUV444, 422, 420) */
13862306a36Sopenharmony_ci	ERROR_OTF_INPUT_FORMAT		= 22,
13962306a36Sopenharmony_ci	/* invalid width (DRC: 128~8192, FD: 32~8190) */
14062306a36Sopenharmony_ci	ERROR_OTF_INPUT_WIDTH		= 23,
14162306a36Sopenharmony_ci	/* invalid height (DRC: 64~8192, FD: 16~8190) */
14262306a36Sopenharmony_ci	ERROR_OTF_INPUT_HEIGHT		= 24,
14362306a36Sopenharmony_ci	/* invalid bit-width (DRC: 8~12bits, FD: 8bit) */
14462306a36Sopenharmony_ci	ERROR_OTF_INPUT_BIT_WIDTH	= 25,
14562306a36Sopenharmony_ci	/* invalid FrameTime for ISP */
14662306a36Sopenharmony_ci	ERROR_OTF_INPUT_USER_FRAMETIIME	= 26,
14762306a36Sopenharmony_ci
14862306a36Sopenharmony_ci	ERROR_DMA_INPUT_NONE		= ERROR_COMMON_NONE,
14962306a36Sopenharmony_ci	/* invalid width (DRC: 128~8192, FD: 32~8190) */
15062306a36Sopenharmony_ci	ERROR_DMA_INPUT_WIDTH		= 31,
15162306a36Sopenharmony_ci	/* invalid height (DRC: 64~8192, FD: 16~8190) */
15262306a36Sopenharmony_ci	ERROR_DMA_INPUT_HEIGHT		= 32,
15362306a36Sopenharmony_ci	/* invalid format (DRC: YUV444 or YUV422, FD: YUV444, 422, 420) */
15462306a36Sopenharmony_ci	ERROR_DMA_INPUT_FORMAT		= 33,
15562306a36Sopenharmony_ci	/* invalid bit-width (DRC: 8~12bit, FD: 8bit) */
15662306a36Sopenharmony_ci	ERROR_DMA_INPUT_BIT_WIDTH	= 34,
15762306a36Sopenharmony_ci	/* invalid order(DRC: YYCbCrorYCbYCr, FD:NO,YYCbCr,YCbYCr,CbCr,CrCb) */
15862306a36Sopenharmony_ci	ERROR_DMA_INPUT_ORDER		= 35,
15962306a36Sopenharmony_ci	/* invalid plane (DRC: 3, FD: 1, 2, 3) */
16062306a36Sopenharmony_ci	ERROR_DMA_INPUT_PLANE		= 36,
16162306a36Sopenharmony_ci
16262306a36Sopenharmony_ci	ERROR_OTF_OUTPUT_NONE		= ERROR_COMMON_NONE,
16362306a36Sopenharmony_ci	/* invalid width (DRC: 128~8192) */
16462306a36Sopenharmony_ci	ERROR_OTF_OUTPUT_WIDTH		= 41,
16562306a36Sopenharmony_ci	/* invalid height (DRC: 64~8192) */
16662306a36Sopenharmony_ci	ERROR_OTF_OUTPUT_HEIGHT		= 42,
16762306a36Sopenharmony_ci	/* invalid format (DRC: YUV444) */
16862306a36Sopenharmony_ci	ERROR_OTF_OUTPUT_FORMAT		= 43,
16962306a36Sopenharmony_ci	/* invalid bit-width (DRC: 8~12bits) */
17062306a36Sopenharmony_ci	ERROR_OTF_OUTPUT_BIT_WIDTH	= 44,
17162306a36Sopenharmony_ci
17262306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_NONE		= ERROR_COMMON_NONE,
17362306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_WIDTH		= 51,	/* invalid width */
17462306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_HEIGHT		= 52,	/* invalid height */
17562306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_FORMAT		= 53,	/* invalid format */
17662306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_BIT_WIDTH	= 54,	/* invalid bit-width */
17762306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_PLANE		= 55,	/* invalid plane */
17862306a36Sopenharmony_ci	ERROR_DMA_OUTPUT_ORDER		= 56,	/* invalid order */
17962306a36Sopenharmony_ci
18062306a36Sopenharmony_ci	ERROR_GLOBAL_SHOTMODE_NONE	= ERROR_COMMON_NONE,
18162306a36Sopenharmony_ci
18262306a36Sopenharmony_ci	/* SENSOR Error(100~199) */
18362306a36Sopenharmony_ci	ERROR_SENSOR_NONE		= ERROR_COMMON_NONE,
18462306a36Sopenharmony_ci	ERROR_SENSOR_I2C_FAIL		= 101,
18562306a36Sopenharmony_ci	ERROR_SENSOR_INVALID_FRAMERATE,
18662306a36Sopenharmony_ci	ERROR_SENSOR_INVALID_EXPOSURETIME,
18762306a36Sopenharmony_ci	ERROR_SENSOR_INVALID_SIZE,
18862306a36Sopenharmony_ci	ERROR_SENSOR_INVALID_SETTING,
18962306a36Sopenharmony_ci	ERROR_SENSOR_ACTUATOR_INIT_FAIL,
19062306a36Sopenharmony_ci	ERROR_SENSOR_INVALID_AF_POS,
19162306a36Sopenharmony_ci	ERROR_SENSOR_UNSUPPORT_FUNC,
19262306a36Sopenharmony_ci	ERROR_SENSOR_UNSUPPORT_PERI,
19362306a36Sopenharmony_ci	ERROR_SENSOR_UNSUPPORT_AF,
19462306a36Sopenharmony_ci
19562306a36Sopenharmony_ci	/* ISP Error (200~299) */
19662306a36Sopenharmony_ci	ERROR_ISP_AF_NONE		= ERROR_COMMON_NONE,
19762306a36Sopenharmony_ci	ERROR_ISP_AF_BUSY		= 201,
19862306a36Sopenharmony_ci	ERROR_ISP_AF_INVALID_COMMAND	= 202,
19962306a36Sopenharmony_ci	ERROR_ISP_AF_INVALID_MODE	= 203,
20062306a36Sopenharmony_ci	ERROR_ISP_FLASH_NONE		= ERROR_COMMON_NONE,
20162306a36Sopenharmony_ci	ERROR_ISP_AWB_NONE		= ERROR_COMMON_NONE,
20262306a36Sopenharmony_ci	ERROR_ISP_IMAGE_EFFECT_NONE	= ERROR_COMMON_NONE,
20362306a36Sopenharmony_ci	ERROR_ISP_ISO_NONE		= ERROR_COMMON_NONE,
20462306a36Sopenharmony_ci	ERROR_ISP_ADJUST_NONE		= ERROR_COMMON_NONE,
20562306a36Sopenharmony_ci	ERROR_ISP_METERING_NONE		= ERROR_COMMON_NONE,
20662306a36Sopenharmony_ci	ERROR_ISP_AFC_NONE		= ERROR_COMMON_NONE,
20762306a36Sopenharmony_ci
20862306a36Sopenharmony_ci	/* DRC Error (300~399) */
20962306a36Sopenharmony_ci
21062306a36Sopenharmony_ci	/* FD Error  (400~499) */
21162306a36Sopenharmony_ci	ERROR_FD_NONE					= ERROR_COMMON_NONE,
21262306a36Sopenharmony_ci	/* Invalid max number (1~16) */
21362306a36Sopenharmony_ci	ERROR_FD_CONFIG_MAX_NUMBER_STATE		= 401,
21462306a36Sopenharmony_ci	ERROR_FD_CONFIG_MAX_NUMBER_INVALID		= 402,
21562306a36Sopenharmony_ci	ERROR_FD_CONFIG_YAW_ANGLE_STATE			= 403,
21662306a36Sopenharmony_ci	ERROR_FD_CONFIG_YAW_ANGLE_INVALID		= 404,
21762306a36Sopenharmony_ci	ERROR_FD_CONFIG_ROLL_ANGLE_STATE		= 405,
21862306a36Sopenharmony_ci	ERROR_FD_CONFIG_ROLL_ANGLE_INVALID		= 406,
21962306a36Sopenharmony_ci	ERROR_FD_CONFIG_SMILE_MODE_INVALID		= 407,
22062306a36Sopenharmony_ci	ERROR_FD_CONFIG_BLINK_MODE_INVALID		= 408,
22162306a36Sopenharmony_ci	ERROR_FD_CONFIG_EYES_DETECT_INVALID		= 409,
22262306a36Sopenharmony_ci	ERROR_FD_CONFIG_MOUTH_DETECT_INVALID		= 410,
22362306a36Sopenharmony_ci	ERROR_FD_CONFIG_ORIENTATION_STATE		= 411,
22462306a36Sopenharmony_ci	ERROR_FD_CONFIG_ORIENTATION_INVALID		= 412,
22562306a36Sopenharmony_ci	ERROR_FD_CONFIG_ORIENTATION_VALUE_INVALID	= 413,
22662306a36Sopenharmony_ci	/* PARAM_FdResultStr can be only applied in ready-state or stream off */
22762306a36Sopenharmony_ci	ERROR_FD_RESULT					= 414,
22862306a36Sopenharmony_ci	/* PARAM_FdModeStr can be only applied in ready-state or stream off */
22962306a36Sopenharmony_ci	ERROR_FD_MODE					= 415,
23062306a36Sopenharmony_ci	/* Scaler Error  (500 ~ 599) */
23162306a36Sopenharmony_ci	ERROR_SCALER_NO_NONE				= ERROR_COMMON_NONE,
23262306a36Sopenharmony_ci	ERROR_SCALER_DMA_OUTSEL				= 501,
23362306a36Sopenharmony_ci	ERROR_SCALER_H_RATIO				= 502,
23462306a36Sopenharmony_ci	ERROR_SCALER_V_RATIO				= 503,
23562306a36Sopenharmony_ci
23662306a36Sopenharmony_ci	ERROR_SCALER_IMAGE_EFFECT			= 510,
23762306a36Sopenharmony_ci
23862306a36Sopenharmony_ci	ERROR_SCALER_ROTATE				= 520,
23962306a36Sopenharmony_ci	ERROR_SCALER_FLIP				= 521,
24062306a36Sopenharmony_ci};
24162306a36Sopenharmony_ci
24262306a36Sopenharmony_ciconst char *fimc_is_strerr(unsigned int error);
24362306a36Sopenharmony_ciconst char *fimc_is_param_strerr(unsigned int error);
24462306a36Sopenharmony_ci
24562306a36Sopenharmony_ci#endif /* FIMC_IS_ERR_H_ */
246