Patch "[media] marvell-ccic: fix Y'CbCr ordering" has been added to the 4.0-stable tree
Subsystems (2)
This is a note to let you know that I've just added the patch titled
[media] marvell-ccic: fix Y'CbCr ordering
to the 4.0-stable tree which can be found at:
http://www.kernel.org/git/?p=linux/kernel/git/stable/stable-queue.git;a=summary
The filename of the patch is:
marvell-ccic-fix-y-cbcr-ordering.patch
and it can be found in the queue-4.0 subdirectory.
If you, or anyone else, feels it should not be added to the stable tree, please let <[email protected]> know about it.
Quoted 1 line
From
2a700d8edffdbfb8200332d96c3147e042b337f1Mon Sep 17 00:00:00 2001
From: Hans Verkuil <[email protected]>
Date: Mon, 13 Apr 2015 11:18:51 -0300
Subject: [media] marvell-ccic: fix Y'CbCr ordering
From: Hans Verkuil <[email protected]>
commit 2a700d8edffdbfb8200332d96c3147e042b337f1 upstream.
Various formats had their byte ordering implemented incorrectly, and the V4L2_PIX_FMT_UYVY is actually impossible to create, instead you get V4L2_PIX_FMT_YVYU.
This was working before commit ad6ac452227b7cb93ac79beec092850d178740b1 ("add new formats support for marvell-ccic driver"). That commit broke the original format support and the OLPC XO-1 laptop showed wrong colors ever since (if you are crazy enough to attempt to run the latest kernel on it, like I did).
The email addresses of the authors of that patch are no longer valid, so without a way to reach them and ask them about their test setup I am going with what I can test on the OLPC laptop.
If this breaks something for someone on their non-OLPC setup, then contact the linux-media mailinglist. My suspicion however is that that commit went in untested.
--- drivers/media/platform/marvell-ccic/mcam-core.c | 14 +++++++------- drivers/media/platform/marvell-ccic/mcam-core.h | 8 ++++---- 2 files changed, 11 insertions(+), 11 deletions(-)
drivers/media/platform/marvell-ccic/mcam-core.c +7 -7
@@ -116,8 +116,8 @@ static struct mcam_format_struct { .planar = false, }, { - .desc = "UYVY 4:2:2", - .pixelformat = V4L2_PIX_FMT_UYVY, + .desc = "YVYU 4:2:2", + .pixelformat = V4L2_PIX_FMT_YVYU, .mbus_code = MEDIA_BUS_FMT_YUYV8_2X8, .bpp = 2, .planar = false,
@@ -748,7 +748,7 @@ static void mcam_ctlr_image(struct mcam_switch (fmt->pixelformat) {case V4L2_PIX_FMT_YUYV : -case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YVYU : widthy = fmt->width *2 ; widthuv =0 ;break ;
@@ -784,15 +784,15 @@ static void mcam_ctlr_image(struct mcam_case V4L2_PIX_FMT_YUV420 :case V4L2_PIX_FMT_YVU420 :mcam_reg_write_mask (cam,REG_CTRL0 , -C0_DF_YUV |C0_YUV_420PL |C0_YUVE_YVYU ,C0_DF_MASK ); +C0_DF_YUV |C0_YUV_420PL |C0_YUVE_VYUY ,C0_DF_MASK );break ;case V4L2_PIX_FMT_YUYV :mcam_reg_write_mask (cam,REG_CTRL0 , -C0_DF_YUV |C0_YUV_PACKED |C0_YUVE_UYVY ,C0_DF_MASK ); +C0_DF_YUV |C0_YUV_PACKED |C0_YUVE_NOSWAP ,C0_DF_MASK );break ; -case V4L2_PIX_FMT_UYVY : +case V4L2_PIX_FMT_YVYU :mcam_reg_write_mask (cam,REG_CTRL0 , -C0_DF_YUV |C0_YUV_PACKED |C0_YUVE_YUYV ,C0_DF_MASK ); +C0_DF_YUV |C0_YUV_PACKED |C0_YUVE_SWAP24 ,C0_DF_MASK );break ;case V4L2_PIX_FMT_JPEG : mcam_reg_write_mask(cam, REG_CTRL0,
drivers/media/platform/marvell-ccic/mcam-core.h +4 -4
@@ -330,10 +330,10 @@ int mccic_resume(struct mcam_camera *cam#define C0_YUVE_YVYU 0x00010000/* Y1CrY0Cb */ #define C0_YUVE_VYUY 0x00020000/* CrY1CbY0 */ #define C0_YUVE_UYVY 0x00030000/* CbY1CrY0 */ -#define C0_YUVE_XYUV 0x00000000/* 420: .YUV */ -#define C0_YUVE_XYVU 0x00010000/* 420: .YVU */ -#define C0_YUVE_XUVY 0x00020000/* 420: .UVY */ -#define C0_YUVE_XVUY 0x00030000/* 420: .VUY */ +#define C0_YUVE_NOSWAP 0x00000000/* no bytes swapping */ +#define C0_YUVE_SWAP13 0x00010000/* swap byte 1 and 3 */ +#define C0_YUVE_SWAP24 0x00020000/* swap byte 2 and 4 */ +#define C0_YUVE_SWAP1324 0x00030000/* swap bytes 1&3 and 2&4 */ /* Bayer bits 18,19 if needed */ #define C0_EOF_VSYNC 0x00400000/* Generate EOF by VSYNC */ #define C0_VEDGE_CTRL 0x00800000/* Detect falling edge of VSYNC */
Patches currently in stable-queue which might be from [email protected] are
queue-4.0/marvell-ccic-fix-y-cbcr-ordering.patch