]> www.infradead.org Git - users/jedix/linux-maple.git/commitdiff
media: imx: imx7-media-csi: Clear BIT_MIPI_DOUBLE_CMPNT for <16b formats
authorLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Wed, 7 Sep 2022 18:42:16 +0000 (19:42 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Sat, 31 Dec 2022 12:32:16 +0000 (13:32 +0100)
[ Upstream commit cccc08a95ca57624563daafd47df5691e8c38995 ]

Commit 9babbbaaeb87 ("media: imx: imx7-media-csi: Use dual sampling for
YUV 1X16") set BIT_MIPI_DOUBLE_CMPNT in the CR18 register for 16-bit YUV
formats in imx7_csi_configure(). The CR18 register is always updated
with read-modify-write cycles, so if a 16-bit YUV format is selected,
the bit will stay set forever, even if the format is changed. Fix it by
clearing the bit at the beginning of the imx7_csi_configure() function.

While at it, swap two of the bits being cleared to match the MSB to LSB
order. This doesn't cause any functional change.

Fixes: 9babbbaaeb87 ("media: imx: imx7-media-csi: Use dual sampling for YUV 1X16")
Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Paul Elder <paul.elder@ideasonboard.com>
Acked-by: Rui Miguel Silva <rmfrfs@gmail.com>
Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/staging/media/imx/imx7-media-csi.c

index e5b550ccfa22d034ffedf29a952c6b7be126726b..c77401f184d74d383e9221987a44b063f19e74ce 100644 (file)
@@ -521,9 +521,9 @@ static void imx7_csi_configure(struct imx7_csi *csi)
        cr18 = imx7_csi_reg_read(csi, CSI_CSICR18);
 
        cr18 &= ~(BIT_CSI_HW_ENABLE | BIT_MIPI_DATA_FORMAT_MASK |
-                 BIT_DATA_FROM_MIPI | BIT_BASEADDR_CHG_ERR_EN |
-                 BIT_BASEADDR_SWITCH_EN | BIT_BASEADDR_SWITCH_SEL |
-                 BIT_DEINTERLACE_EN);
+                 BIT_DATA_FROM_MIPI | BIT_MIPI_DOUBLE_CMPNT |
+                 BIT_BASEADDR_CHG_ERR_EN | BIT_BASEADDR_SWITCH_SEL |
+                 BIT_BASEADDR_SWITCH_EN | BIT_DEINTERLACE_EN);
 
        if (out_pix->field == V4L2_FIELD_INTERLACED) {
                cr18 |= BIT_DEINTERLACE_EN;