2019-06-04 11:11:33 +03:00
/* SPDX-License-Identifier: GPL-2.0-only */
[media] exynos4-is: Add Exynos4x12 FIMC-IS driver
This patch adds a set of core files of the Exynos4x12 FIMC-IS
V4L2 driver. This includes main functionality like allocating
memory, loading the firmware, FIMC-IS register interface and
host CPU <-> IS command and error code definitions.
The driver currently exposes a single subdev named FIMC-IS-ISP,
which corresponds to the FIMC-IS ISP and DRC IP blocks.
The FIMC-IS-ISP subdev currently supports only a subset of user
controls. For other controls we need several extensions at the
V4L2 API. The supported standard controls are:
brightness, contrast, saturation, hue, sharpness, 3a_lock,
exposure_time_absolute, white_balance_auto_preset,
iso_sensitivity, iso_sensitivity_auto, exposure_metering_mode.
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2013-03-11 22:14:58 +04:00
/*
* Samsung Exynos4 SoC series FIMC - IS slave interface driver
*
* FIMC - IS error code definition
*
* Copyright ( C ) 2011 - 2013 Samsung Electronics Co . , Ltd .
*
* Authors : Younghwan Joo < yhwan . joo @ samsung . com >
* Sylwester Nawrocki < s . nawrocki @ samsung . com >
*/
# ifndef FIMC_IS_ERR_H_
# define FIMC_IS_ERR_H_
# define IS_ERROR_VER 011 /* IS ERROR VERSION 0.11 */
enum {
IS_ERROR_NONE ,
/* General 1 ~ 99 */
IS_ERROR_INVALID_COMMAND ,
IS_ERROR_REQUEST_FAIL ,
IS_ERROR_INVALID_SCENARIO ,
IS_ERROR_INVALID_SENSORID ,
IS_ERROR_INVALID_MODE_CHANGE ,
IS_ERROR_INVALID_MAGIC_NUMBER ,
IS_ERROR_INVALID_SETFILE_HDR ,
IS_ERROR_BUSY ,
IS_ERROR_SET_PARAMETER ,
IS_ERROR_INVALID_PATH ,
IS_ERROR_OPEN_SENSOR_FAIL ,
IS_ERROR_ENTRY_MSG_THREAD_DOWN ,
IS_ERROR_ISP_FRAME_END_NOT_DONE ,
IS_ERROR_DRC_FRAME_END_NOT_DONE ,
IS_ERROR_SCALERC_FRAME_END_NOT_DONE ,
IS_ERROR_ODC_FRAME_END_NOT_DONE ,
IS_ERROR_DIS_FRAME_END_NOT_DONE ,
IS_ERROR_TDNR_FRAME_END_NOT_DONE ,
IS_ERROR_SCALERP_FRAME_END_NOT_DONE ,
IS_ERROR_WAIT_STREAM_OFF_NOT_DONE ,
IS_ERROR_NO_MSG_IS_RECEIVED ,
IS_ERROR_SENSOR_MSG_FAIL ,
IS_ERROR_ISP_MSG_FAIL ,
IS_ERROR_DRC_MSG_FAIL ,
IS_ERROR_SCALERC_MSG_FAIL ,
IS_ERROR_ODC_MSG_FAIL ,
IS_ERROR_DIS_MSG_FAIL ,
IS_ERROR_TDNR_MSG_FAIL ,
IS_ERROR_SCALERP_MSG_FAIL ,
IS_ERROR_LHFD_MSG_FAIL ,
IS_ERROR_LHFD_INTERNAL_STOP ,
/* Sensor 100 ~ 199 */
IS_ERROR_SENSOR_PWRDN_FAIL = 100 ,
IS_ERROR_SENSOR_STREAM_ON_FAIL ,
IS_ERROR_SENSOR_STREAM_OFF_FAIL ,
/* ISP 200 ~ 299 */
IS_ERROR_ISP_PWRDN_FAIL = 200 ,
IS_ERROR_ISP_MULTIPLE_INPUT ,
IS_ERROR_ISP_ABSENT_INPUT ,
IS_ERROR_ISP_ABSENT_OUTPUT ,
IS_ERROR_ISP_NONADJACENT_OUTPUT ,
IS_ERROR_ISP_FORMAT_MISMATCH ,
IS_ERROR_ISP_WIDTH_MISMATCH ,
IS_ERROR_ISP_HEIGHT_MISMATCH ,
IS_ERROR_ISP_BITWIDTH_MISMATCH ,
IS_ERROR_ISP_FRAME_END_TIME_OUT ,
/* DRC 300 ~ 399 */
IS_ERROR_DRC_PWRDN_FAIL = 300 ,
IS_ERROR_DRC_MULTIPLE_INPUT ,
IS_ERROR_DRC_ABSENT_INPUT ,
IS_ERROR_DRC_NONADJACENT_INPUT ,
IS_ERROR_DRC_ABSENT_OUTPUT ,
IS_ERROR_DRC_NONADJACENT_OUTPUT ,
IS_ERROR_DRC_FORMAT_MISMATCH ,
IS_ERROR_DRC_WIDTH_MISMATCH ,
IS_ERROR_DRC_HEIGHT_MISMATCH ,
IS_ERROR_DRC_BITWIDTH_MISMATCH ,
IS_ERROR_DRC_FRAME_END_TIME_OUT ,
/* SCALERC 400 ~ 499 */
IS_ERROR_SCALERC_PWRDN_FAIL = 400 ,
/* ODC 500 ~ 599 */
IS_ERROR_ODC_PWRDN_FAIL = 500 ,
/* DIS 600 ~ 699 */
IS_ERROR_DIS_PWRDN_FAIL = 600 ,
/* TDNR 700 ~ 799 */
IS_ERROR_TDNR_PWRDN_FAIL = 700 ,
/* SCALERC 800 ~ 899 */
IS_ERROR_SCALERP_PWRDN_FAIL = 800 ,
/* FD 900 ~ 999 */
IS_ERROR_FD_PWRDN_FAIL = 900 ,
IS_ERROR_FD_MULTIPLE_INPUT ,
IS_ERROR_FD_ABSENT_INPUT ,
IS_ERROR_FD_NONADJACENT_INPUT ,
IS_ERROR_LHFD_FRAME_END_TIME_OUT ,
IS_ERROR_UNKNOWN = 1000 ,
} ;
# define IS_ERROR_TIME_OUT_FLAG 0x80000000
/* Set parameter error enum */
enum fimc_is_error {
/* Common error (0~99) */
ERROR_COMMON_NONE = 0 ,
ERROR_COMMON_CMD = 1 , /* Invalid command */
ERROR_COMMON_PARAMETER = 2 , /* Invalid parameter */
/* setfile is not loaded before adjusting */
ERROR_COMMON_SETFILE_LOAD = 3 ,
/* setfile is not Adjusted before runnng. */
ERROR_COMMON_SETFILE_ADJUST = 4 ,
/* Index of setfile is not valid (0~MAX_SETFILE_NUM-1) */
ERROR_COMMON_SETFILE_INDEX = 5 ,
/* Input path can be changed in ready state(stop) */
ERROR_COMMON_INPUT_PATH = 6 ,
/* IP can not start if input path is not set */
ERROR_COMMON_INPUT_INIT = 7 ,
/* Output path can be changed in ready state (stop) */
ERROR_COMMON_OUTPUT_PATH = 8 ,
/* IP can not start if output path is not set */
ERROR_COMMON_OUTPUT_INIT = 9 ,
ERROR_CONTROL_NONE = ERROR_COMMON_NONE ,
ERROR_CONTROL_BYPASS = 11 , /* Enable or Disable */
ERROR_OTF_INPUT_NONE = ERROR_COMMON_NONE ,
ERROR_OTF_INPUT_CMD = 21 ,
/* invalid format (DRC: YUV444, FD: YUV444, 422, 420) */
ERROR_OTF_INPUT_FORMAT = 22 ,
/* invalid width (DRC: 128~8192, FD: 32~8190) */
ERROR_OTF_INPUT_WIDTH = 23 ,
/* invalid height (DRC: 64~8192, FD: 16~8190) */
ERROR_OTF_INPUT_HEIGHT = 24 ,
/* invalid bit-width (DRC: 8~12bits, FD: 8bit) */
ERROR_OTF_INPUT_BIT_WIDTH = 25 ,
/* invalid FrameTime for ISP */
ERROR_OTF_INPUT_USER_FRAMETIIME = 26 ,
ERROR_DMA_INPUT_NONE = ERROR_COMMON_NONE ,
/* invalid width (DRC: 128~8192, FD: 32~8190) */
ERROR_DMA_INPUT_WIDTH = 31 ,
/* invalid height (DRC: 64~8192, FD: 16~8190) */
ERROR_DMA_INPUT_HEIGHT = 32 ,
/* invalid format (DRC: YUV444 or YUV422, FD: YUV444, 422, 420) */
ERROR_DMA_INPUT_FORMAT = 33 ,
/* invalid bit-width (DRC: 8~12bit, FD: 8bit) */
ERROR_DMA_INPUT_BIT_WIDTH = 34 ,
/* invalid order(DRC: YYCbCrorYCbYCr, FD:NO,YYCbCr,YCbYCr,CbCr,CrCb) */
ERROR_DMA_INPUT_ORDER = 35 ,
/* invalid palne (DRC: 3, FD: 1, 2, 3) */
ERROR_DMA_INPUT_PLANE = 36 ,
ERROR_OTF_OUTPUT_NONE = ERROR_COMMON_NONE ,
/* invalid width (DRC: 128~8192) */
ERROR_OTF_OUTPUT_WIDTH = 41 ,
/* invalid height (DRC: 64~8192) */
ERROR_OTF_OUTPUT_HEIGHT = 42 ,
/* invalid format (DRC: YUV444) */
ERROR_OTF_OUTPUT_FORMAT = 43 ,
/* invalid bit-width (DRC: 8~12bits) */
ERROR_OTF_OUTPUT_BIT_WIDTH = 44 ,
ERROR_DMA_OUTPUT_NONE = ERROR_COMMON_NONE ,
ERROR_DMA_OUTPUT_WIDTH = 51 , /* invalid width */
ERROR_DMA_OUTPUT_HEIGHT = 52 , /* invalid height */
ERROR_DMA_OUTPUT_FORMAT = 53 , /* invalid format */
ERROR_DMA_OUTPUT_BIT_WIDTH = 54 , /* invalid bit-width */
ERROR_DMA_OUTPUT_PLANE = 55 , /* invalid plane */
ERROR_DMA_OUTPUT_ORDER = 56 , /* invalid order */
ERROR_GLOBAL_SHOTMODE_NONE = ERROR_COMMON_NONE ,
/* SENSOR Error(100~199) */
ERROR_SENSOR_NONE = ERROR_COMMON_NONE ,
ERROR_SENSOR_I2C_FAIL = 101 ,
ERROR_SENSOR_INVALID_FRAMERATE ,
ERROR_SENSOR_INVALID_EXPOSURETIME ,
ERROR_SENSOR_INVALID_SIZE ,
ERROR_SENSOR_INVALID_SETTING ,
2018-10-12 17:48:32 +03:00
ERROR_SENSOR_ACTUATOR_INIT_FAIL ,
[media] exynos4-is: Add Exynos4x12 FIMC-IS driver
This patch adds a set of core files of the Exynos4x12 FIMC-IS
V4L2 driver. This includes main functionality like allocating
memory, loading the firmware, FIMC-IS register interface and
host CPU <-> IS command and error code definitions.
The driver currently exposes a single subdev named FIMC-IS-ISP,
which corresponds to the FIMC-IS ISP and DRC IP blocks.
The FIMC-IS-ISP subdev currently supports only a subset of user
controls. For other controls we need several extensions at the
V4L2 API. The supported standard controls are:
brightness, contrast, saturation, hue, sharpness, 3a_lock,
exposure_time_absolute, white_balance_auto_preset,
iso_sensitivity, iso_sensitivity_auto, exposure_metering_mode.
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2013-03-11 22:14:58 +04:00
ERROR_SENSOR_INVALID_AF_POS ,
ERROR_SENSOR_UNSUPPORT_FUNC ,
ERROR_SENSOR_UNSUPPORT_PERI ,
ERROR_SENSOR_UNSUPPORT_AF ,
/* ISP Error (200~299) */
ERROR_ISP_AF_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_AF_BUSY = 201 ,
ERROR_ISP_AF_INVALID_COMMAND = 202 ,
ERROR_ISP_AF_INVALID_MODE = 203 ,
ERROR_ISP_FLASH_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_AWB_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_IMAGE_EFFECT_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_ISO_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_ADJUST_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_METERING_NONE = ERROR_COMMON_NONE ,
ERROR_ISP_AFC_NONE = ERROR_COMMON_NONE ,
/* DRC Error (300~399) */
/* FD Error (400~499) */
ERROR_FD_NONE = ERROR_COMMON_NONE ,
/* Invalid max number (1~16) */
ERROR_FD_CONFIG_MAX_NUMBER_STATE = 401 ,
ERROR_FD_CONFIG_MAX_NUMBER_INVALID = 402 ,
ERROR_FD_CONFIG_YAW_ANGLE_STATE = 403 ,
ERROR_FD_CONFIG_YAW_ANGLE_INVALID = 404 ,
ERROR_FD_CONFIG_ROLL_ANGLE_STATE = 405 ,
ERROR_FD_CONFIG_ROLL_ANGLE_INVALID = 406 ,
ERROR_FD_CONFIG_SMILE_MODE_INVALID = 407 ,
ERROR_FD_CONFIG_BLINK_MODE_INVALID = 408 ,
ERROR_FD_CONFIG_EYES_DETECT_INVALID = 409 ,
ERROR_FD_CONFIG_MOUTH_DETECT_INVALID = 410 ,
ERROR_FD_CONFIG_ORIENTATION_STATE = 411 ,
ERROR_FD_CONFIG_ORIENTATION_INVALID = 412 ,
ERROR_FD_CONFIG_ORIENTATION_VALUE_INVALID = 413 ,
/* PARAM_FdResultStr can be only applied in ready-state or stream off */
ERROR_FD_RESULT = 414 ,
/* PARAM_FdModeStr can be only applied in ready-state or stream off */
ERROR_FD_MODE = 415 ,
/* Scaler Error (500 ~ 599) */
ERROR_SCALER_NO_NONE = ERROR_COMMON_NONE ,
ERROR_SCALER_DMA_OUTSEL = 501 ,
ERROR_SCALER_H_RATIO = 502 ,
ERROR_SCALER_V_RATIO = 503 ,
ERROR_SCALER_IMAGE_EFFECT = 510 ,
ERROR_SCALER_ROTATE = 520 ,
ERROR_SCALER_FLIP = 521 ,
} ;
2014-08-26 17:56:24 +04:00
const char * fimc_is_strerr ( unsigned int error ) ;
const char * fimc_is_param_strerr ( unsigned int error ) ;
[media] exynos4-is: Add Exynos4x12 FIMC-IS driver
This patch adds a set of core files of the Exynos4x12 FIMC-IS
V4L2 driver. This includes main functionality like allocating
memory, loading the firmware, FIMC-IS register interface and
host CPU <-> IS command and error code definitions.
The driver currently exposes a single subdev named FIMC-IS-ISP,
which corresponds to the FIMC-IS ISP and DRC IP blocks.
The FIMC-IS-ISP subdev currently supports only a subset of user
controls. For other controls we need several extensions at the
V4L2 API. The supported standard controls are:
brightness, contrast, saturation, hue, sharpness, 3a_lock,
exposure_time_absolute, white_balance_auto_preset,
iso_sensitivity, iso_sensitivity_auto, exposure_metering_mode.
Signed-off-by: Younghwan Joo <yhwan.joo@samsung.com>
Signed-off-by: Sylwester Nawrocki <s.nawrocki@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@redhat.com>
2013-03-11 22:14:58 +04:00
# endif /* FIMC_IS_ERR_H_ */