Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

[media] ov2640: fix colorspace handling

The colorspace is independent of whether YUV or RGB is sent to the SoC.
Fix this.

Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com>
Acked-by: Guennadi Liakhovetski <g.liakhovetski@gmx.de>
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>

authored by

Hans Verkuil and committed by
Mauro Carvalho Chehab
9823f003 c1d82b89

+7 -16
+7 -16
drivers/media/i2c/soc_camera/ov2640.c
··· 794 794 dev_dbg(&client->dev, "%s: Selected cfmt YUYV (YUV422)", __func__); 795 795 selected_cfmt_regs = ov2640_yuyv_regs; 796 796 break; 797 - default: 798 797 case MEDIA_BUS_FMT_UYVY8_2X8: 798 + default: 799 799 dev_dbg(&client->dev, "%s: Selected cfmt UYVY", __func__); 800 800 selected_cfmt_regs = ov2640_uyvy_regs; 801 + break; 801 802 } 802 803 803 804 /* reset hardware */ ··· 866 865 mf->width = priv->win->width; 867 866 mf->height = priv->win->height; 868 867 mf->code = priv->cfmt_code; 869 - 870 - switch (mf->code) { 871 - case MEDIA_BUS_FMT_RGB565_2X8_BE: 872 - case MEDIA_BUS_FMT_RGB565_2X8_LE: 873 - mf->colorspace = V4L2_COLORSPACE_SRGB; 874 - break; 875 - default: 876 - case MEDIA_BUS_FMT_YUYV8_2X8: 877 - case MEDIA_BUS_FMT_UYVY8_2X8: 878 - mf->colorspace = V4L2_COLORSPACE_JPEG; 879 - } 868 + mf->colorspace = V4L2_COLORSPACE_SRGB; 880 869 mf->field = V4L2_FIELD_NONE; 881 870 882 871 return 0; ··· 888 897 ov2640_select_win(&mf->width, &mf->height); 889 898 890 899 mf->field = V4L2_FIELD_NONE; 900 + mf->colorspace = V4L2_COLORSPACE_SRGB; 891 901 892 902 switch (mf->code) { 893 903 case MEDIA_BUS_FMT_RGB565_2X8_BE: 894 904 case MEDIA_BUS_FMT_RGB565_2X8_LE: 895 - mf->colorspace = V4L2_COLORSPACE_SRGB; 905 + case MEDIA_BUS_FMT_YUYV8_2X8: 906 + case MEDIA_BUS_FMT_UYVY8_2X8: 896 907 break; 897 908 default: 898 909 mf->code = MEDIA_BUS_FMT_UYVY8_2X8; 899 - case MEDIA_BUS_FMT_YUYV8_2X8: 900 - case MEDIA_BUS_FMT_UYVY8_2X8: 901 - mf->colorspace = V4L2_COLORSPACE_JPEG; 910 + break; 902 911 } 903 912 904 913 if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE)