Re: [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
From: Jean-Michel Hautbois
Date: Thu Jun 11 2026 - 02:51:45 EST
Hi Eugen,
Thank you for the patch.
Two issues with this one, I'm afraid.
Le 11/06/2026 à 08:09, Eugen Hristev a écrit :
The unicam exposes two video nodes, one for image, another for metadata.
Querycap should return the right caps for the respective node, not both.
video0:
Capabilities : 0xa4200001
Video Capture
I/O MC
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x24200001
Video Capture
I/O MC
Streaming
Extended Pix Format
video1:
Capabilities : 0xa4a00000
Metadata Capture
I/O MC
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x24a00000
Metadata Capture
I/O MC
Streaming
Extended Pix Format
Fixes: 392cd78d495f ("media: bcm2835-unicam: Add support for CCP2/CSI2 camera interface")
Signed-off-by: Eugen Hristev <ehristev@xxxxxxxxxx>
---
drivers/media/platform/broadcom/bcm2835-unicam.c | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/media/platform/broadcom/bcm2835-unicam.c
index 8d28ba0b59a3..4bf36ce80047 100644
--- a/drivers/media/platform/broadcom/bcm2835-unicam.c
+++ b/drivers/media/platform/broadcom/bcm2835-unicam.c
@@ -1833,7 +1833,10 @@ static int unicam_querycap(struct file *file, void *priv,
strscpy(cap->driver, UNICAM_MODULE_NAME, sizeof(cap->driver));
strscpy(cap->card, UNICAM_MODULE_NAME, sizeof(cap->card));
- cap->capabilities |= V4L2_CAP_VIDEO_CAPTURE | V4L2_CAP_META_CAPTURE;
+ if (is_image_node(node))
First, it does not compile, as node is not declared here.
'struct unicam_node *node = video_drvdata(file);' would be needed.
+ cap->capabilities |= V4L2_CAP_VIDEO_CAPTURE;
+ else
+ cap->capabilities |= V4L2_CAP_META_CAPTURE;
return 0;
}
Second, and more important, I don't think the current behaviour is a bug.
Documentation/userspace-api/media/v4l/vidioc-querycap.rst states about the 'capabilities' field:
"The capabilities field should contain a union of all capabilities available around the several V4L2 devices exported to userspace.
For all those devices the capabilities field returns the same set of capabilities."
Per-node differentiation is the job of 'device_caps', which unicam
already sets correctly when registering each video device (your
v4l2-ctl output shows the Device Caps are already right).
So this looks like working as intended to me, and the patch should be
dropped.
Thanks,
JM
---
base-commit: a87737435cfa134f9cdcc696ba3080759d04cf72
change-id: 20260611-bcmpiqcap-f893a9ea2da9
Best regards,
--
Eugen Hristev <ehristev@xxxxxxxxxx>