123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150 |
- From fa9e6cd8f3ba4a277c06e4c1fb01cd69b3a57234 Mon Sep 17 00:00:00 2001
- From: Eugen Hristev <[email protected]>
- Date: Tue, 13 Apr 2021 12:57:25 +0200
- Subject: [PATCH 183/247] 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 <[email protected]>
- Signed-off-by: Hans Verkuil <[email protected]>
- Signed-off-by: Mauro Carvalho Chehab <[email protected]>
- ---
- drivers/media/platform/atmel/atmel-isc-base.c | 48 +++++++++++++++----
- 1 file changed, 38 insertions(+), 10 deletions(-)
- diff --git a/drivers/media/platform/atmel/atmel-isc-base.c b/drivers/media/platform/atmel/atmel-isc-base.c
- index 7862d6bf850d..dcb321ad10b8 100644
- --- a/drivers/media/platform/atmel/atmel-isc-base.c
- +++ b/drivers/media/platform/atmel/atmel-isc-base.c
- @@ -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 */
- --
- 2.32.0
|