| From 0ffdaba5b7078f9259ed43e4a9d6b24eceb2fd4d Mon Sep 17 00:00:00 2001 |
| From: Akinobu Mita <akinobu.mita@gmail.com> |
| Date: Sat, 30 Mar 2019 10:01:31 -0400 |
| Subject: media: ov2659: make S_FMT succeed even if requested format doesn't |
| match |
| |
| [ Upstream commit bccb89cf9cd07a0690d519696a00c00a973b3fe4 ] |
| |
| This driver returns an error if unsupported media bus pixel code is |
| requested by VIDIOC_SUBDEV_S_FMT. |
| |
| But according to Documentation/media/uapi/v4l/vidioc-subdev-g-fmt.rst, |
| |
| Drivers must not return an error solely because the requested format |
| doesn't match the device capabilities. They must instead modify the |
| format to match what the hardware can provide. |
| |
| So select default format code and return success in that case. |
| |
| This is detected by v4l2-compliance. |
| |
| Cc: "Lad, Prabhakar" <prabhakar.csengg@gmail.com> |
| Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com> |
| Acked-by: Lad, Prabhakar <prabhakar.csengg@gmail.com> |
| Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com> |
| Signed-off-by: Mauro Carvalho Chehab <mchehab+samsung@kernel.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/media/i2c/ov2659.c | 6 ++++-- |
| 1 file changed, 4 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/media/i2c/ov2659.c b/drivers/media/i2c/ov2659.c |
| index 49109f4f5bb4a..fadec1d705829 100644 |
| --- a/drivers/media/i2c/ov2659.c |
| +++ b/drivers/media/i2c/ov2659.c |
| @@ -1117,8 +1117,10 @@ static int ov2659_set_fmt(struct v4l2_subdev *sd, |
| if (ov2659_formats[index].code == mf->code) |
| break; |
| |
| - if (index < 0) |
| - return -EINVAL; |
| + if (index < 0) { |
| + index = 0; |
| + mf->code = ov2659_formats[index].code; |
| + } |
| |
| mf->colorspace = V4L2_COLORSPACE_SRGB; |
| mf->code = ov2659_formats[index].code; |
| -- |
| 2.20.1 |
| |