From 67abf2883edf8b845620e84b8919766b5e89d54e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20Van=C4=9Bk?= Date: Wed, 7 Jul 2021 22:48:20 +0200 Subject: [PATCH 439/634] media: bcm2835-unicam: Forward input status from subdevice MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The vidioc_enum_input() v4l2 ioctl is capable of returning sensor/input status as well. This is used in current GStreamer HEAD for signal detection [1]. bcm2835-unicam does handle this syscall, but it didn't ask the subdevice driver about the input status. The input then appeared as always present. This commit adds the necessary query. There is a precedent for this - the R-Car VIN V4L2 driver does a similar call [2]. [1]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-good/-/blob/ce0be27caf69aa9d96b73bc2b50737451b6f6936/sys/v4l2/gstv4l2src.c#L553 [2]: https://github.com/raspberrypi/linux/blob/7fb9d006d3ff3baf2e205e0c85c4e4fd0a64fcd0/drivers/media/platform/rcar-vin/rcar-v4l2.c#L548 Signed-off-by: Jakub Vaněk --- drivers/media/platform/bcm2835/bcm2835-unicam.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/media/platform/bcm2835/bcm2835-unicam.c b/drivers/media/platform/bcm2835/bcm2835-unicam.c index a603891986b9..cf5d16103d56 100644 --- a/drivers/media/platform/bcm2835/bcm2835-unicam.c +++ b/drivers/media/platform/bcm2835/bcm2835-unicam.c @@ -1809,6 +1809,7 @@ static int unicam_enum_input(struct file *file, void *priv, { struct unicam_node *node = video_drvdata(file); struct unicam_device *dev = node->dev; + int ret; if (inp->index != 0) return -EINVAL; @@ -1825,6 +1826,14 @@ static int unicam_enum_input(struct file *file, void *priv, inp->capabilities = 0; inp->std = 0; } + + if (v4l2_subdev_has_op(dev->sensor, video, g_input_status)) { + ret = v4l2_subdev_call(dev->sensor, video, g_input_status, + &inp->status); + if (ret < 0) + return ret; + } + snprintf(inp->name, sizeof(inp->name), "Camera 0"); return 0; } -- 2.33.1