media: atmel: atmel-isc-base: add support for more formats and additional pipeline modules
Add support for additional formats supported by newer pipelines, and for additional pipeline modules. Signed-off-by: Eugen Hristev <eugen.hristev@microchip.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
This commit is contained in:
parent
0baf7a3241
commit
debfa49687
|
@ -855,6 +855,8 @@ static int isc_try_validate_formats(struct isc_device *isc)
|
|||
case V4L2_PIX_FMT_YUV420:
|
||||
case V4L2_PIX_FMT_YUV422P:
|
||||
case V4L2_PIX_FMT_YUYV:
|
||||
case V4L2_PIX_FMT_UYVY:
|
||||
case V4L2_PIX_FMT_VYUY:
|
||||
ret = 0;
|
||||
yuv = true;
|
||||
break;
|
||||
|
@ -869,6 +871,7 @@ static int isc_try_validate_formats(struct isc_device *isc)
|
|||
break;
|
||||
case V4L2_PIX_FMT_GREY:
|
||||
case V4L2_PIX_FMT_Y10:
|
||||
case V4L2_PIX_FMT_Y16:
|
||||
ret = 0;
|
||||
grey = true;
|
||||
break;
|
||||
|
@ -899,6 +902,8 @@ static int isc_try_validate_formats(struct isc_device *isc)
|
|||
*/
|
||||
static int isc_try_configure_rlp_dma(struct isc_device *isc, bool direct_dump)
|
||||
{
|
||||
isc->try_config.rlp_cfg_mode = 0;
|
||||
|
||||
switch (isc->try_config.fourcc) {
|
||||
case V4L2_PIX_FMT_SBGGR8:
|
||||
case V4L2_PIX_FMT_SGBRG8:
|
||||
|
@ -965,7 +970,19 @@ static int isc_try_configure_rlp_dma(struct isc_device *isc, bool direct_dump)
|
|||
isc->try_config.bpp = 16;
|
||||
break;
|
||||
case V4L2_PIX_FMT_YUYV:
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_YYCC;
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_YCYC | ISC_RLP_CFG_YMODE_YUYV;
|
||||
isc->try_config.dcfg_imode = ISC_DCFG_IMODE_PACKED32;
|
||||
isc->try_config.dctrl_dview = ISC_DCTRL_DVIEW_PACKED;
|
||||
isc->try_config.bpp = 16;
|
||||
break;
|
||||
case V4L2_PIX_FMT_UYVY:
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_YCYC | ISC_RLP_CFG_YMODE_UYVY;
|
||||
isc->try_config.dcfg_imode = ISC_DCFG_IMODE_PACKED32;
|
||||
isc->try_config.dctrl_dview = ISC_DCTRL_DVIEW_PACKED;
|
||||
isc->try_config.bpp = 16;
|
||||
break;
|
||||
case V4L2_PIX_FMT_VYUY:
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_YCYC | ISC_RLP_CFG_YMODE_VYUY;
|
||||
isc->try_config.dcfg_imode = ISC_DCFG_IMODE_PACKED32;
|
||||
isc->try_config.dctrl_dview = ISC_DCTRL_DVIEW_PACKED;
|
||||
isc->try_config.bpp = 16;
|
||||
|
@ -976,8 +993,11 @@ static int isc_try_configure_rlp_dma(struct isc_device *isc, bool direct_dump)
|
|||
isc->try_config.dctrl_dview = ISC_DCTRL_DVIEW_PACKED;
|
||||
isc->try_config.bpp = 8;
|
||||
break;
|
||||
case V4L2_PIX_FMT_Y16:
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_DATY10 | ISC_RLP_CFG_LSH;
|
||||
fallthrough;
|
||||
case V4L2_PIX_FMT_Y10:
|
||||
isc->try_config.rlp_cfg_mode = ISC_RLP_CFG_MODE_DATY10;
|
||||
isc->try_config.rlp_cfg_mode |= ISC_RLP_CFG_MODE_DATY10;
|
||||
isc->try_config.dcfg_imode = ISC_DCFG_IMODE_PACKED16;
|
||||
isc->try_config.dctrl_dview = ISC_DCTRL_DVIEW_PACKED;
|
||||
isc->try_config.bpp = 16;
|
||||
|
@ -1011,7 +1031,8 @@ static int isc_try_configure_pipeline(struct isc_device *isc)
|
|||
/* if sensor format is RAW, we convert inside ISC */
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
isc->try_config.bits_pipeline = CFA_ENABLE |
|
||||
WB_ENABLE | GAM_ENABLES;
|
||||
WB_ENABLE | GAM_ENABLES | DPC_BLCENABLE |
|
||||
CC_ENABLE;
|
||||
} else {
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
|
@ -1020,8 +1041,9 @@ static int isc_try_configure_pipeline(struct isc_device *isc)
|
|||
/* if sensor format is RAW, we convert inside ISC */
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
isc->try_config.bits_pipeline = CFA_ENABLE |
|
||||
CSC_ENABLE | WB_ENABLE | GAM_ENABLES |
|
||||
SUB420_ENABLE | SUB422_ENABLE | CBC_ENABLE;
|
||||
CSC_ENABLE | GAM_ENABLES | WB_ENABLE |
|
||||
SUB420_ENABLE | SUB422_ENABLE | CBC_ENABLE |
|
||||
DPC_BLCENABLE;
|
||||
} else {
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
|
@ -1031,33 +1053,39 @@ static int isc_try_configure_pipeline(struct isc_device *isc)
|
|||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
isc->try_config.bits_pipeline = CFA_ENABLE |
|
||||
CSC_ENABLE | WB_ENABLE | GAM_ENABLES |
|
||||
SUB422_ENABLE | CBC_ENABLE;
|
||||
SUB422_ENABLE | CBC_ENABLE | DPC_BLCENABLE;
|
||||
} else {
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
break;
|
||||
case V4L2_PIX_FMT_YUYV:
|
||||
case V4L2_PIX_FMT_UYVY:
|
||||
case V4L2_PIX_FMT_VYUY:
|
||||
/* if sensor format is RAW, we convert inside ISC */
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
isc->try_config.bits_pipeline = CFA_ENABLE |
|
||||
CSC_ENABLE | WB_ENABLE | GAM_ENABLES |
|
||||
SUB422_ENABLE | CBC_ENABLE;
|
||||
SUB422_ENABLE | CBC_ENABLE | DPC_BLCENABLE;
|
||||
} else {
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
break;
|
||||
case V4L2_PIX_FMT_GREY:
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
case V4L2_PIX_FMT_Y16:
|
||||
/* if sensor format is RAW, we convert inside ISC */
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code)) {
|
||||
isc->try_config.bits_pipeline = CFA_ENABLE |
|
||||
CSC_ENABLE | WB_ENABLE | GAM_ENABLES |
|
||||
CBC_ENABLE;
|
||||
CBC_ENABLE | DPC_BLCENABLE;
|
||||
} else {
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
if (ISC_IS_FORMAT_RAW(isc->try_config.sd_format->mbus_code))
|
||||
isc->try_config.bits_pipeline = WB_ENABLE | DPC_BLCENABLE;
|
||||
else
|
||||
isc->try_config.bits_pipeline = 0x0;
|
||||
}
|
||||
|
||||
/* Tune the pipeline to product specific */
|
||||
|
|
Loading…
Reference in New Issue