Commit 6de690dd authored by Niklas Söderlund's avatar Niklas Söderlund Committed by Mauro Carvalho Chehab

[media] adv7180: rcar-vin: change mbus format to UYVY

The media bus format reported by the adv7180 is wrong. Steve Longerbeam
posted a patch which changed the format to UYVY8_2X8 with the commit
message:

  Change the media bus format from YUYV8_2X8 to UYVY8_2X8. Colors
  now look correct when capturing with the i.mx6 backend. The other
  option is to set the SWPC bit in register 0x27 to swap the Cr and Cb
  output samples.

The rcar-vin driver was developed and tested with the adv7180 and
therefor suffers from the same issue, looking for the wrong media bus
format. The two errors corrected each other.

This patch takes Steve's patch and merge it with a fix for rcar-vin
driver. The rcar-vin driver is used used in together with the adv7180
och Koelsch and this ensures it will not break while fixing the adv7180
issue. I checked wit Steve and he was fine with me merging the patches.

ADV7180 parts:
Signed-off-by: default avatarNiklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
Suggested-by: default avatarSteve Longerbeam <steve_longerbeam@mentor.com>
Signed-off-by: default avatarSteve Longerbeam <steve_longerbeam@mentor.com>
Acked-by: default avatarLars-Peter Clausen <lars@metafoo.de>
Tested-by: default avatarTim Harvey <tharvey@gateworks.com>
Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@s-opensource.com>
parent f429b56a
...@@ -633,7 +633,7 @@ static int adv7180_enum_mbus_code(struct v4l2_subdev *sd, ...@@ -633,7 +633,7 @@ static int adv7180_enum_mbus_code(struct v4l2_subdev *sd,
if (code->index != 0) if (code->index != 0)
return -EINVAL; return -EINVAL;
code->code = MEDIA_BUS_FMT_YUYV8_2X8; code->code = MEDIA_BUS_FMT_UYVY8_2X8;
return 0; return 0;
} }
...@@ -643,7 +643,7 @@ static int adv7180_mbus_fmt(struct v4l2_subdev *sd, ...@@ -643,7 +643,7 @@ static int adv7180_mbus_fmt(struct v4l2_subdev *sd,
{ {
struct adv7180_state *state = to_state(sd); struct adv7180_state *state = to_state(sd);
fmt->code = MEDIA_BUS_FMT_YUYV8_2X8; fmt->code = MEDIA_BUS_FMT_UYVY8_2X8;
fmt->colorspace = V4L2_COLORSPACE_SMPTE170M; fmt->colorspace = V4L2_COLORSPACE_SMPTE170M;
fmt->width = 720; fmt->width = 720;
fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576; fmt->height = state->curr_norm & V4L2_STD_525_60 ? 480 : 576;
......
...@@ -43,8 +43,8 @@ static bool rvin_mbus_supported(struct rvin_graph_entity *entity) ...@@ -43,8 +43,8 @@ static bool rvin_mbus_supported(struct rvin_graph_entity *entity)
code.index++; code.index++;
switch (code.code) { switch (code.code) {
case MEDIA_BUS_FMT_YUYV8_1X16: case MEDIA_BUS_FMT_YUYV8_1X16:
case MEDIA_BUS_FMT_YUYV8_2X8: case MEDIA_BUS_FMT_UYVY8_2X8:
case MEDIA_BUS_FMT_YUYV10_2X10: case MEDIA_BUS_FMT_UYVY10_2X10:
case MEDIA_BUS_FMT_RGB888_1X24: case MEDIA_BUS_FMT_RGB888_1X24:
entity->code = code.code; entity->code = code.code;
return true; return true;
......
...@@ -169,7 +169,7 @@ static int rvin_setup(struct rvin_dev *vin) ...@@ -169,7 +169,7 @@ static int rvin_setup(struct rvin_dev *vin)
vnmc |= VNMC_INF_YUV16; vnmc |= VNMC_INF_YUV16;
input_is_yuv = true; input_is_yuv = true;
break; break;
case MEDIA_BUS_FMT_YUYV8_2X8: case MEDIA_BUS_FMT_UYVY8_2X8:
/* BT.656 8bit YCbCr422 or BT.601 8bit YCbCr422 */ /* BT.656 8bit YCbCr422 or BT.601 8bit YCbCr422 */
vnmc |= vin->digital.mbus_cfg.type == V4L2_MBUS_BT656 ? vnmc |= vin->digital.mbus_cfg.type == V4L2_MBUS_BT656 ?
VNMC_INF_YUV8_BT656 : VNMC_INF_YUV8_BT601; VNMC_INF_YUV8_BT656 : VNMC_INF_YUV8_BT601;
...@@ -178,7 +178,7 @@ static int rvin_setup(struct rvin_dev *vin) ...@@ -178,7 +178,7 @@ static int rvin_setup(struct rvin_dev *vin)
case MEDIA_BUS_FMT_RGB888_1X24: case MEDIA_BUS_FMT_RGB888_1X24:
vnmc |= VNMC_INF_RGB888; vnmc |= VNMC_INF_RGB888;
break; break;
case MEDIA_BUS_FMT_YUYV10_2X10: case MEDIA_BUS_FMT_UYVY10_2X10:
/* BT.656 10bit YCbCr422 or BT.601 10bit YCbCr422 */ /* BT.656 10bit YCbCr422 or BT.601 10bit YCbCr422 */
vnmc |= vin->digital.mbus_cfg.type == V4L2_MBUS_BT656 ? vnmc |= vin->digital.mbus_cfg.type == V4L2_MBUS_BT656 ?
VNMC_INF_YUV10_BT656 : VNMC_INF_YUV10_BT601; VNMC_INF_YUV10_BT656 : VNMC_INF_YUV10_BT601;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment