* [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
@ 2026-06-11 6:09 Eugen Hristev
2026-06-11 6:51 ` Jean-Michel Hautbois
0 siblings, 1 reply; 3+ messages in thread
From: Eugen Hristev @ 2026-06-11 6:09 UTC (permalink / raw)
To: Raspberry Pi Kernel Maintenance, Mauro Carvalho Chehab,
Florian Fainelli, Ray Jui, Scott Branden,
Broadcom internal kernel review list, Sakari Ailus,
Dave Stevenson, Laurent Pinchart, Jean-Michel Hautbois,
Naushir Patuck
Cc: Hans Verkuil, linux-media, linux-rpi-kernel, linux-arm-kernel,
linux-kernel, Eugen Hristev
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@kernel.org>
---
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))
+ cap->capabilities |= V4L2_CAP_VIDEO_CAPTURE;
+ else
+ cap->capabilities |= V4L2_CAP_META_CAPTURE;
return 0;
}
---
base-commit: a87737435cfa134f9cdcc696ba3080759d04cf72
change-id: 20260611-bcmpiqcap-f893a9ea2da9
Best regards,
--
Eugen Hristev <ehristev@kernel.org>
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
2026-06-11 6:09 [PATCH] media: bcm2835-unicam: Fix querycap multiple caps Eugen Hristev
@ 2026-06-11 6:51 ` Jean-Michel Hautbois
2026-06-11 17:19 ` {Spam?} " Eugen Hristev
0 siblings, 1 reply; 3+ messages in thread
From: Jean-Michel Hautbois @ 2026-06-11 6:51 UTC (permalink / raw)
To: Eugen Hristev, Raspberry Pi Kernel Maintenance,
Mauro Carvalho Chehab, Florian Fainelli, Ray Jui, Scott Branden,
Broadcom internal kernel review list, Sakari Ailus,
Dave Stevenson, Laurent Pinchart, Naushir Patuck
Cc: Hans Verkuil, linux-media, linux-rpi-kernel, linux-arm-kernel,
linux-kernel
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@kernel.org>
> ---
> 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@kernel.org>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: {Spam?} Re: [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
2026-06-11 6:51 ` Jean-Michel Hautbois
@ 2026-06-11 17:19 ` Eugen Hristev
0 siblings, 0 replies; 3+ messages in thread
From: Eugen Hristev @ 2026-06-11 17:19 UTC (permalink / raw)
To: Jean-Michel Hautbois, Raspberry Pi Kernel Maintenance,
Mauro Carvalho Chehab, Florian Fainelli, Ray Jui, Scott Branden,
Broadcom internal kernel review list, Sakari Ailus,
Dave Stevenson, Laurent Pinchart, Naushir Patuck
Cc: Hans Verkuil, linux-media, linux-rpi-kernel, linux-arm-kernel,
linux-kernel
On 6/11/26 09:51, Jean-Michel Hautbois wrote:
> 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@kernel.org>
>> ---
>> 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.
Sorry, my brain must have been sleeping
>
>> + 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 for taking the time to explain.
Let's drop the patch.
Eugen
>
> Thanks,
> JM
>
>> ---
>> base-commit: a87737435cfa134f9cdcc696ba3080759d04cf72
>> change-id: 20260611-bcmpiqcap-f893a9ea2da9
>>
>> Best regards,
>> --
>> Eugen Hristev <ehristev@kernel.org>
>>
>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2026-06-11 17:19 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-06-11 6:09 [PATCH] media: bcm2835-unicam: Fix querycap multiple caps Eugen Hristev
2026-06-11 6:51 ` Jean-Michel Hautbois
2026-06-11 17:19 ` {Spam?} " Eugen Hristev
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox