Linux-ARM-Kernel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
@ 2026-06-11  6:09 Eugen Hristev
  2026-06-11  6:51 ` Jean-Michel Hautbois
  2026-06-12  2:14 ` kernel test robot
  0 siblings, 2 replies; 4+ 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] 4+ 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
  2026-06-12  2:14 ` kernel test robot
  1 sibling, 1 reply; 4+ 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] 4+ 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; 4+ 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] 4+ 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-12  2:14 ` kernel test robot
  1 sibling, 0 replies; 4+ messages in thread
From: kernel test robot @ 2026-06-12  2:14 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, Jean-Michel Hautbois,
	Naushir Patuck
  Cc: llvm, oe-kbuild-all, linux-media, Hans Verkuil, linux-rpi-kernel,
	linux-arm-kernel, linux-kernel, Eugen Hristev

Hi Eugen,

kernel test robot noticed the following build errors:

[auto build test ERROR on a87737435cfa134f9cdcc696ba3080759d04cf72]

url:    https://github.com/intel-lab-lkp/linux/commits/Eugen-Hristev/media-bcm2835-unicam-Fix-querycap-multiple-caps/20260611-141320
base:   a87737435cfa134f9cdcc696ba3080759d04cf72
patch link:    https://lore.kernel.org/r/20260611-bcmpiqcap-v1-1-10cf7fb438df%40kernel.org
patch subject: [PATCH] media: bcm2835-unicam: Fix querycap multiple caps
config: um-allmodconfig (https://download.01.org/0day-ci/archive/20260612/202606121013.RsnqIwho-lkp@intel.com/config)
compiler: clang version 17.0.6 (https://github.com/llvm/llvm-project 6009708b4367171ccdbf4b5905cb6a803753fe18)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20260612/202606121013.RsnqIwho-lkp@intel.com/reproduce)

If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202606121013.RsnqIwho-lkp@intel.com/

All errors (new ones prefixed by >>):

   In file included from drivers/media/platform/broadcom/bcm2835-unicam.c:33:
   In file included from include/linux/dma-mapping.h:8:
   In file included from include/linux/scatterlist.h:9:
   In file included from arch/um/include/asm/io.h:24:
   include/asm-generic/io.h:1209:55: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
    1209 |         return (port > MMIO_UPPER_LIMIT) ? NULL : PCI_IOBASE + port;
         |                                                   ~~~~~~~~~~ ^
>> drivers/media/platform/broadcom/bcm2835-unicam.c:1836:20: error: use of undeclared identifier 'node'
    1836 |         if (is_image_node(node))
         |                           ^
   1 warning and 1 error generated.


vim +/node +1836 drivers/media/platform/broadcom/bcm2835-unicam.c

  1825	
  1826	/* -----------------------------------------------------------------------------
  1827	 *  V4L2 video device operations
  1828	 */
  1829	
  1830	static int unicam_querycap(struct file *file, void *priv,
  1831				   struct v4l2_capability *cap)
  1832	{
  1833		strscpy(cap->driver, UNICAM_MODULE_NAME, sizeof(cap->driver));
  1834		strscpy(cap->card, UNICAM_MODULE_NAME, sizeof(cap->card));
  1835	
> 1836		if (is_image_node(node))
  1837			cap->capabilities |= V4L2_CAP_VIDEO_CAPTURE;
  1838		else
  1839			cap->capabilities |= V4L2_CAP_META_CAPTURE;
  1840	
  1841		return 0;
  1842	}
  1843	

--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2026-06-12  2:17 UTC | newest]

Thread overview: 4+ 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
2026-06-12  2:14 ` kernel test robot

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox