linux-media.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] media: ipu6: isys: Add support for monochrome media bus formats
@ 2025-10-20 15:37 Hans de Goede
  2025-10-21  8:10 ` Bingbu Cao
  2025-11-11  8:46 ` Bingbu Cao
  0 siblings, 2 replies; 5+ messages in thread
From: Hans de Goede @ 2025-10-20 15:37 UTC (permalink / raw)
  To: Sakari Ailus, Bingbu Cao, Tianshu Qiu; +Cc: Hans de Goede, linux-media

Add support for monochrome media bus formats, for use with monochrome/IR
camera sensors.

This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor.

Signed-off-by: Hans de Goede <hansg@kernel.org>
---
 drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c |  4 +++
 .../media/pci/intel/ipu6/ipu6-isys-subdev.c   | 34 ++++++++++++++-----
 .../media/pci/intel/ipu6/ipu6-isys-video.c    | 14 ++++++++
 3 files changed, 43 insertions(+), 9 deletions(-)

diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
index d1fece6210ab..daec6b865bda 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
@@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
 	MEDIA_BUS_FMT_SGBRG8_1X8,
 	MEDIA_BUS_FMT_SGRBG8_1X8,
 	MEDIA_BUS_FMT_SRGGB8_1X8,
+	MEDIA_BUS_FMT_Y8_1X8,
+	MEDIA_BUS_FMT_Y10_1X10,
+	MEDIA_BUS_FMT_Y12_1X12,
+	MEDIA_BUS_FMT_Y16_1X16,
 	MEDIA_BUS_FMT_META_8,
 	MEDIA_BUS_FMT_META_10,
 	MEDIA_BUS_FMT_META_12,
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
index 463a0adf9e13..869e7d4ba572 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
@@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
 	case MEDIA_BUS_FMT_RGB565_1X16:
 	case MEDIA_BUS_FMT_UYVY8_1X16:
 	case MEDIA_BUS_FMT_YUYV8_1X16:
+	case MEDIA_BUS_FMT_Y16_1X16:
 	case MEDIA_BUS_FMT_META_16:
 		return 16;
 	case MEDIA_BUS_FMT_SBGGR12_1X12:
 	case MEDIA_BUS_FMT_SGBRG12_1X12:
 	case MEDIA_BUS_FMT_SGRBG12_1X12:
 	case MEDIA_BUS_FMT_SRGGB12_1X12:
+	case MEDIA_BUS_FMT_Y12_1X12:
 	case MEDIA_BUS_FMT_META_12:
 		return 12;
 	case MEDIA_BUS_FMT_SBGGR10_1X10:
 	case MEDIA_BUS_FMT_SGBRG10_1X10:
 	case MEDIA_BUS_FMT_SGRBG10_1X10:
 	case MEDIA_BUS_FMT_SRGGB10_1X10:
+	case MEDIA_BUS_FMT_Y10_1X10:
 	case MEDIA_BUS_FMT_META_10:
 		return 10;
 	case MEDIA_BUS_FMT_SBGGR8_1X8:
 	case MEDIA_BUS_FMT_SGBRG8_1X8:
 	case MEDIA_BUS_FMT_SGRBG8_1X8:
 	case MEDIA_BUS_FMT_SRGGB8_1X8:
+	case MEDIA_BUS_FMT_Y8_1X8:
 	case MEDIA_BUS_FMT_META_8:
 		return 8;
 	default:
@@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
 	case MEDIA_BUS_FMT_SGBRG16_1X16:
 	case MEDIA_BUS_FMT_SGRBG16_1X16:
 	case MEDIA_BUS_FMT_SRGGB16_1X16:
+	case MEDIA_BUS_FMT_Y16_1X16:
 		return MIPI_CSI2_DT_RAW16;
 	case MEDIA_BUS_FMT_SBGGR12_1X12:
 	case MEDIA_BUS_FMT_SGBRG12_1X12:
 	case MEDIA_BUS_FMT_SGRBG12_1X12:
 	case MEDIA_BUS_FMT_SRGGB12_1X12:
+	case MEDIA_BUS_FMT_Y12_1X12:
 		return MIPI_CSI2_DT_RAW12;
 	case MEDIA_BUS_FMT_SBGGR10_1X10:
 	case MEDIA_BUS_FMT_SGBRG10_1X10:
 	case MEDIA_BUS_FMT_SGRBG10_1X10:
 	case MEDIA_BUS_FMT_SRGGB10_1X10:
+	case MEDIA_BUS_FMT_Y10_1X10:
 		return MIPI_CSI2_DT_RAW10;
 	case MEDIA_BUS_FMT_SBGGR8_1X8:
 	case MEDIA_BUS_FMT_SGBRG8_1X8:
 	case MEDIA_BUS_FMT_SGRBG8_1X8:
 	case MEDIA_BUS_FMT_SRGGB8_1X8:
+	case MEDIA_BUS_FMT_Y8_1X8:
 		return MIPI_CSI2_DT_RAW8;
 	case MEDIA_BUS_FMT_META_8:
 	case MEDIA_BUS_FMT_META_10:
@@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
 
 bool ipu6_isys_is_bayer_format(u32 code)
 {
-	switch (ipu6_isys_mbus_code_to_mipi(code)) {
-	case MIPI_CSI2_DT_RAW8:
-	case MIPI_CSI2_DT_RAW10:
-	case MIPI_CSI2_DT_RAW12:
-	case MIPI_CSI2_DT_RAW14:
-	case MIPI_CSI2_DT_RAW16:
-	case MIPI_CSI2_DT_RAW20:
-	case MIPI_CSI2_DT_RAW24:
-	case MIPI_CSI2_DT_RAW28:
+	switch (code) {
+	case MEDIA_BUS_FMT_SBGGR8_1X8:
+	case MEDIA_BUS_FMT_SGBRG8_1X8:
+	case MEDIA_BUS_FMT_SGRBG8_1X8:
+	case MEDIA_BUS_FMT_SRGGB8_1X8:
+	case MEDIA_BUS_FMT_SBGGR10_1X10:
+	case MEDIA_BUS_FMT_SGBRG10_1X10:
+	case MEDIA_BUS_FMT_SGRBG10_1X10:
+	case MEDIA_BUS_FMT_SRGGB10_1X10:
+	case MEDIA_BUS_FMT_SBGGR12_1X12:
+	case MEDIA_BUS_FMT_SGBRG12_1X12:
+	case MEDIA_BUS_FMT_SGRBG12_1X12:
+	case MEDIA_BUS_FMT_SRGGB12_1X12:
+	case MEDIA_BUS_FMT_SRGGB16_1X16:
+	case MEDIA_BUS_FMT_SGRBG16_1X16:
+	case MEDIA_BUS_FMT_SGBRG16_1X16:
+	case MEDIA_BUS_FMT_SBGGR16_1X16:
 		return true;
 	default:
 		return false;
diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
index f3f3bc0615e5..dec8f5ffcfa5 100644
--- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
+++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
@@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
 	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
 	{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
 	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
+
+	{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
+	{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
+	{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
+	{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
+	{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
+	{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
+	  IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },
+
 	{ V4L2_PIX_FMT_UYVY, 16, 16, MEDIA_BUS_FMT_UYVY8_1X16,
 	  IPU6_FW_ISYS_FRAME_FORMAT_UYVY},
 	{ V4L2_PIX_FMT_YUYV, 16, 16, MEDIA_BUS_FMT_YUYV8_1X16,
-- 
2.51.0


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

* Re: [PATCH] media: ipu6: isys: Add support for monochrome media bus formats
  2025-10-20 15:37 [PATCH] media: ipu6: isys: Add support for monochrome media bus formats Hans de Goede
@ 2025-10-21  8:10 ` Bingbu Cao
  2025-10-21 13:52   ` Sakari Ailus
  2025-11-11  8:46 ` Bingbu Cao
  1 sibling, 1 reply; 5+ messages in thread
From: Bingbu Cao @ 2025-10-21  8:10 UTC (permalink / raw)
  To: Hans de Goede, Sakari Ailus, Bingbu Cao, Tianshu Qiu; +Cc: linux-media


Hans,

Thanks for the patch.

On 10/20/25 11:37 PM, Hans de Goede wrote:
> Add support for monochrome media bus formats, for use with monochrome/IR
> camera sensors.
> 
> This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor.
> 
> Signed-off-by: Hans de Goede <hansg@kernel.org>
> ---
>  drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c |  4 +++
>  .../media/pci/intel/ipu6/ipu6-isys-subdev.c   | 34 ++++++++++++++-----
>  .../media/pci/intel/ipu6/ipu6-isys-video.c    | 14 ++++++++
>  3 files changed, 43 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> index d1fece6210ab..daec6b865bda 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> @@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
>  	MEDIA_BUS_FMT_SGBRG8_1X8,
>  	MEDIA_BUS_FMT_SGRBG8_1X8,
>  	MEDIA_BUS_FMT_SRGGB8_1X8,
> +	MEDIA_BUS_FMT_Y8_1X8,
> +	MEDIA_BUS_FMT_Y10_1X10,
> +	MEDIA_BUS_FMT_Y12_1X12,
> +	MEDIA_BUS_FMT_Y16_1X16,
>  	MEDIA_BUS_FMT_META_8,
>  	MEDIA_BUS_FMT_META_10,
>  	MEDIA_BUS_FMT_META_12,
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> index 463a0adf9e13..869e7d4ba572 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> @@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
>  	case MEDIA_BUS_FMT_RGB565_1X16:
>  	case MEDIA_BUS_FMT_UYVY8_1X16:
>  	case MEDIA_BUS_FMT_YUYV8_1X16:
> +	case MEDIA_BUS_FMT_Y16_1X16:
>  	case MEDIA_BUS_FMT_META_16:
>  		return 16;
>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_Y12_1X12:
>  	case MEDIA_BUS_FMT_META_12:
>  		return 12;
>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_Y10_1X10:
>  	case MEDIA_BUS_FMT_META_10:
>  		return 10;
>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_Y8_1X8:
>  	case MEDIA_BUS_FMT_META_8:
>  		return 8;
>  	default:
> @@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>  	case MEDIA_BUS_FMT_SGBRG16_1X16:
>  	case MEDIA_BUS_FMT_SGRBG16_1X16:
>  	case MEDIA_BUS_FMT_SRGGB16_1X16:
> +	case MEDIA_BUS_FMT_Y16_1X16:
>  		return MIPI_CSI2_DT_RAW16;
>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_Y12_1X12:
>  		return MIPI_CSI2_DT_RAW12;
>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_Y10_1X10:
>  		return MIPI_CSI2_DT_RAW10;
>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_Y8_1X8:
>  		return MIPI_CSI2_DT_RAW8;
>  	case MEDIA_BUS_FMT_META_8:
>  	case MEDIA_BUS_FMT_META_10:
> @@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>  
>  bool ipu6_isys_is_bayer_format(u32 code)
>  {
> -	switch (ipu6_isys_mbus_code_to_mipi(code)) {
> -	case MIPI_CSI2_DT_RAW8:
> -	case MIPI_CSI2_DT_RAW10:
> -	case MIPI_CSI2_DT_RAW12:
> -	case MIPI_CSI2_DT_RAW14:
> -	case MIPI_CSI2_DT_RAW16:
> -	case MIPI_CSI2_DT_RAW20:
> -	case MIPI_CSI2_DT_RAW24:
> -	case MIPI_CSI2_DT_RAW28:
> +	switch (code) {
> +	case MEDIA_BUS_FMT_SBGGR8_1X8:
> +	case MEDIA_BUS_FMT_SGBRG8_1X8:
> +	case MEDIA_BUS_FMT_SGRBG8_1X8:
> +	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_SBGGR10_1X10:
> +	case MEDIA_BUS_FMT_SGBRG10_1X10:
> +	case MEDIA_BUS_FMT_SGRBG10_1X10:
> +	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_SBGGR12_1X12:
> +	case MEDIA_BUS_FMT_SGBRG12_1X12:
> +	case MEDIA_BUS_FMT_SGRBG12_1X12:
> +	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_SRGGB16_1X16:
> +	case MEDIA_BUS_FMT_SGRBG16_1X16:
> +	case MEDIA_BUS_FMT_SGBRG16_1X16:
> +	case MEDIA_BUS_FMT_SBGGR16_1X16:
>  		return true;
>  	default:
>  		return false;
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> index f3f3bc0615e5..dec8f5ffcfa5 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> @@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
>  	{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> +
> +	{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
> +	{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> +	{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },

The code looks fine for me. I am wondering which sensor to test these
packed format for IPU6.

> +
>  	{ V4L2_PIX_FMT_UYVY, 16, 16, MEDIA_BUS_FMT_UYVY8_1X16,
>  	  IPU6_FW_ISYS_FRAME_FORMAT_UYVY},
>  	{ V4L2_PIX_FMT_YUYV, 16, 16, MEDIA_BUS_FMT_YUYV8_1X16,
> 

-- 
Best regards,
Bingbu Cao

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

* Re: [PATCH] media: ipu6: isys: Add support for monochrome media bus formats
  2025-10-21  8:10 ` Bingbu Cao
@ 2025-10-21 13:52   ` Sakari Ailus
  2025-10-22 12:50     ` Hans de Goede
  0 siblings, 1 reply; 5+ messages in thread
From: Sakari Ailus @ 2025-10-21 13:52 UTC (permalink / raw)
  To: Bingbu Cao; +Cc: Hans de Goede, Bingbu Cao, Tianshu Qiu, linux-media

Hi Bingbu, Hans,

On Tue, Oct 21, 2025 at 04:10:19PM +0800, Bingbu Cao wrote:
> 
> Hans,
> 
> Thanks for the patch.
> 
> On 10/20/25 11:37 PM, Hans de Goede wrote:
> > Add support for monochrome media bus formats, for use with monochrome/IR
> > camera sensors.
> > 
> > This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor.
> > 
> > Signed-off-by: Hans de Goede <hansg@kernel.org>
> > ---
> >  drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c |  4 +++
> >  .../media/pci/intel/ipu6/ipu6-isys-subdev.c   | 34 ++++++++++++++-----
> >  .../media/pci/intel/ipu6/ipu6-isys-video.c    | 14 ++++++++
> >  3 files changed, 43 insertions(+), 9 deletions(-)
> > 
> > diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> > index d1fece6210ab..daec6b865bda 100644
> > --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> > +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> > @@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
> >  	MEDIA_BUS_FMT_SGBRG8_1X8,
> >  	MEDIA_BUS_FMT_SGRBG8_1X8,
> >  	MEDIA_BUS_FMT_SRGGB8_1X8,
> > +	MEDIA_BUS_FMT_Y8_1X8,
> > +	MEDIA_BUS_FMT_Y10_1X10,
> > +	MEDIA_BUS_FMT_Y12_1X12,
> > +	MEDIA_BUS_FMT_Y16_1X16,
> >  	MEDIA_BUS_FMT_META_8,
> >  	MEDIA_BUS_FMT_META_10,
> >  	MEDIA_BUS_FMT_META_12,
> > diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> > index 463a0adf9e13..869e7d4ba572 100644
> > --- a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> > +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> > @@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
> >  	case MEDIA_BUS_FMT_RGB565_1X16:
> >  	case MEDIA_BUS_FMT_UYVY8_1X16:
> >  	case MEDIA_BUS_FMT_YUYV8_1X16:
> > +	case MEDIA_BUS_FMT_Y16_1X16:
> >  	case MEDIA_BUS_FMT_META_16:
> >  		return 16;
> >  	case MEDIA_BUS_FMT_SBGGR12_1X12:
> >  	case MEDIA_BUS_FMT_SGBRG12_1X12:
> >  	case MEDIA_BUS_FMT_SGRBG12_1X12:
> >  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> > +	case MEDIA_BUS_FMT_Y12_1X12:
> >  	case MEDIA_BUS_FMT_META_12:
> >  		return 12;
> >  	case MEDIA_BUS_FMT_SBGGR10_1X10:
> >  	case MEDIA_BUS_FMT_SGBRG10_1X10:
> >  	case MEDIA_BUS_FMT_SGRBG10_1X10:
> >  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> > +	case MEDIA_BUS_FMT_Y10_1X10:
> >  	case MEDIA_BUS_FMT_META_10:
> >  		return 10;
> >  	case MEDIA_BUS_FMT_SBGGR8_1X8:
> >  	case MEDIA_BUS_FMT_SGBRG8_1X8:
> >  	case MEDIA_BUS_FMT_SGRBG8_1X8:
> >  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> > +	case MEDIA_BUS_FMT_Y8_1X8:
> >  	case MEDIA_BUS_FMT_META_8:
> >  		return 8;
> >  	default:
> > @@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
> >  	case MEDIA_BUS_FMT_SGBRG16_1X16:
> >  	case MEDIA_BUS_FMT_SGRBG16_1X16:
> >  	case MEDIA_BUS_FMT_SRGGB16_1X16:
> > +	case MEDIA_BUS_FMT_Y16_1X16:
> >  		return MIPI_CSI2_DT_RAW16;
> >  	case MEDIA_BUS_FMT_SBGGR12_1X12:
> >  	case MEDIA_BUS_FMT_SGBRG12_1X12:
> >  	case MEDIA_BUS_FMT_SGRBG12_1X12:
> >  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> > +	case MEDIA_BUS_FMT_Y12_1X12:
> >  		return MIPI_CSI2_DT_RAW12;
> >  	case MEDIA_BUS_FMT_SBGGR10_1X10:
> >  	case MEDIA_BUS_FMT_SGBRG10_1X10:
> >  	case MEDIA_BUS_FMT_SGRBG10_1X10:
> >  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> > +	case MEDIA_BUS_FMT_Y10_1X10:
> >  		return MIPI_CSI2_DT_RAW10;
> >  	case MEDIA_BUS_FMT_SBGGR8_1X8:
> >  	case MEDIA_BUS_FMT_SGBRG8_1X8:
> >  	case MEDIA_BUS_FMT_SGRBG8_1X8:
> >  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> > +	case MEDIA_BUS_FMT_Y8_1X8:
> >  		return MIPI_CSI2_DT_RAW8;
> >  	case MEDIA_BUS_FMT_META_8:
> >  	case MEDIA_BUS_FMT_META_10:
> > @@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
> >  
> >  bool ipu6_isys_is_bayer_format(u32 code)
> >  {
> > -	switch (ipu6_isys_mbus_code_to_mipi(code)) {
> > -	case MIPI_CSI2_DT_RAW8:
> > -	case MIPI_CSI2_DT_RAW10:
> > -	case MIPI_CSI2_DT_RAW12:
> > -	case MIPI_CSI2_DT_RAW14:
> > -	case MIPI_CSI2_DT_RAW16:
> > -	case MIPI_CSI2_DT_RAW20:
> > -	case MIPI_CSI2_DT_RAW24:
> > -	case MIPI_CSI2_DT_RAW28:
> > +	switch (code) {
> > +	case MEDIA_BUS_FMT_SBGGR8_1X8:
> > +	case MEDIA_BUS_FMT_SGBRG8_1X8:
> > +	case MEDIA_BUS_FMT_SGRBG8_1X8:
> > +	case MEDIA_BUS_FMT_SRGGB8_1X8:
> > +	case MEDIA_BUS_FMT_SBGGR10_1X10:
> > +	case MEDIA_BUS_FMT_SGBRG10_1X10:
> > +	case MEDIA_BUS_FMT_SGRBG10_1X10:
> > +	case MEDIA_BUS_FMT_SRGGB10_1X10:
> > +	case MEDIA_BUS_FMT_SBGGR12_1X12:
> > +	case MEDIA_BUS_FMT_SGBRG12_1X12:
> > +	case MEDIA_BUS_FMT_SGRBG12_1X12:
> > +	case MEDIA_BUS_FMT_SRGGB12_1X12:
> > +	case MEDIA_BUS_FMT_SRGGB16_1X16:
> > +	case MEDIA_BUS_FMT_SGRBG16_1X16:
> > +	case MEDIA_BUS_FMT_SGBRG16_1X16:
> > +	case MEDIA_BUS_FMT_SBGGR16_1X16:
> >  		return true;
> >  	default:
> >  		return false;
> > diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> > index f3f3bc0615e5..dec8f5ffcfa5 100644
> > --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> > +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> > @@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
> >  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> >  	{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
> >  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> > +
> > +	{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
> > +	{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> > +	{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> > +	{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> > +	{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> > +	{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
> > +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },
> 
> The code looks fine for me. I am wondering which sensor to test these
> packed format for IPU6.

Such packed formats appear to be defined for Bayer formats, too, so I'd
expect them to work as the Bayer equivalents that are already supported.

> 
> > +
> >  	{ V4L2_PIX_FMT_UYVY, 16, 16, MEDIA_BUS_FMT_UYVY8_1X16,
> >  	  IPU6_FW_ISYS_FRAME_FORMAT_UYVY},
> >  	{ V4L2_PIX_FMT_YUYV, 16, 16, MEDIA_BUS_FMT_YUYV8_1X16,
> > 
> 

-- 
Regards,

Sakari Ailus

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

* Re: [PATCH] media: ipu6: isys: Add support for monochrome media bus formats
  2025-10-21 13:52   ` Sakari Ailus
@ 2025-10-22 12:50     ` Hans de Goede
  0 siblings, 0 replies; 5+ messages in thread
From: Hans de Goede @ 2025-10-22 12:50 UTC (permalink / raw)
  To: Sakari Ailus, Bingbu Cao; +Cc: Bingbu Cao, Tianshu Qiu, linux-media

Hi Bingbu, Sakari,

On 21-Oct-25 3:52 PM, Sakari Ailus wrote:
> Hi Bingbu, Hans,
> 
> On Tue, Oct 21, 2025 at 04:10:19PM +0800, Bingbu Cao wrote:
>>
>> Hans,
>>
>> Thanks for the patch.
>>
>> On 10/20/25 11:37 PM, Hans de Goede wrote:
>>> Add support for monochrome media bus formats, for use with monochrome/IR
>>> camera sensors.
>>>
>>> This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor.
>>>
>>> Signed-off-by: Hans de Goede <hansg@kernel.org>
>>> ---
>>>  drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c |  4 +++
>>>  .../media/pci/intel/ipu6/ipu6-isys-subdev.c   | 34 ++++++++++++++-----
>>>  .../media/pci/intel/ipu6/ipu6-isys-video.c    | 14 ++++++++
>>>  3 files changed, 43 insertions(+), 9 deletions(-)
>>>
>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
>>> index d1fece6210ab..daec6b865bda 100644
>>> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
>>> @@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
>>>  	MEDIA_BUS_FMT_SGBRG8_1X8,
>>>  	MEDIA_BUS_FMT_SGRBG8_1X8,
>>>  	MEDIA_BUS_FMT_SRGGB8_1X8,
>>> +	MEDIA_BUS_FMT_Y8_1X8,
>>> +	MEDIA_BUS_FMT_Y10_1X10,
>>> +	MEDIA_BUS_FMT_Y12_1X12,
>>> +	MEDIA_BUS_FMT_Y16_1X16,
>>>  	MEDIA_BUS_FMT_META_8,
>>>  	MEDIA_BUS_FMT_META_10,
>>>  	MEDIA_BUS_FMT_META_12,
>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
>>> index 463a0adf9e13..869e7d4ba572 100644
>>> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
>>> @@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
>>>  	case MEDIA_BUS_FMT_RGB565_1X16:
>>>  	case MEDIA_BUS_FMT_UYVY8_1X16:
>>>  	case MEDIA_BUS_FMT_YUYV8_1X16:
>>> +	case MEDIA_BUS_FMT_Y16_1X16:
>>>  	case MEDIA_BUS_FMT_META_16:
>>>  		return 16;
>>>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>>>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>>>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>>>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
>>> +	case MEDIA_BUS_FMT_Y12_1X12:
>>>  	case MEDIA_BUS_FMT_META_12:
>>>  		return 12;
>>>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>>>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>>>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>>>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
>>> +	case MEDIA_BUS_FMT_Y10_1X10:
>>>  	case MEDIA_BUS_FMT_META_10:
>>>  		return 10;
>>>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>>>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>>>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>>>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
>>> +	case MEDIA_BUS_FMT_Y8_1X8:
>>>  	case MEDIA_BUS_FMT_META_8:
>>>  		return 8;
>>>  	default:
>>> @@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>>>  	case MEDIA_BUS_FMT_SGBRG16_1X16:
>>>  	case MEDIA_BUS_FMT_SGRBG16_1X16:
>>>  	case MEDIA_BUS_FMT_SRGGB16_1X16:
>>> +	case MEDIA_BUS_FMT_Y16_1X16:
>>>  		return MIPI_CSI2_DT_RAW16;
>>>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>>>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>>>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>>>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
>>> +	case MEDIA_BUS_FMT_Y12_1X12:
>>>  		return MIPI_CSI2_DT_RAW12;
>>>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>>>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>>>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>>>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
>>> +	case MEDIA_BUS_FMT_Y10_1X10:
>>>  		return MIPI_CSI2_DT_RAW10;
>>>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>>>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>>>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>>>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
>>> +	case MEDIA_BUS_FMT_Y8_1X8:
>>>  		return MIPI_CSI2_DT_RAW8;
>>>  	case MEDIA_BUS_FMT_META_8:
>>>  	case MEDIA_BUS_FMT_META_10:
>>> @@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>>>  
>>>  bool ipu6_isys_is_bayer_format(u32 code)
>>>  {
>>> -	switch (ipu6_isys_mbus_code_to_mipi(code)) {
>>> -	case MIPI_CSI2_DT_RAW8:
>>> -	case MIPI_CSI2_DT_RAW10:
>>> -	case MIPI_CSI2_DT_RAW12:
>>> -	case MIPI_CSI2_DT_RAW14:
>>> -	case MIPI_CSI2_DT_RAW16:
>>> -	case MIPI_CSI2_DT_RAW20:
>>> -	case MIPI_CSI2_DT_RAW24:
>>> -	case MIPI_CSI2_DT_RAW28:
>>> +	switch (code) {
>>> +	case MEDIA_BUS_FMT_SBGGR8_1X8:
>>> +	case MEDIA_BUS_FMT_SGBRG8_1X8:
>>> +	case MEDIA_BUS_FMT_SGRBG8_1X8:
>>> +	case MEDIA_BUS_FMT_SRGGB8_1X8:
>>> +	case MEDIA_BUS_FMT_SBGGR10_1X10:
>>> +	case MEDIA_BUS_FMT_SGBRG10_1X10:
>>> +	case MEDIA_BUS_FMT_SGRBG10_1X10:
>>> +	case MEDIA_BUS_FMT_SRGGB10_1X10:
>>> +	case MEDIA_BUS_FMT_SBGGR12_1X12:
>>> +	case MEDIA_BUS_FMT_SGBRG12_1X12:
>>> +	case MEDIA_BUS_FMT_SGRBG12_1X12:
>>> +	case MEDIA_BUS_FMT_SRGGB12_1X12:
>>> +	case MEDIA_BUS_FMT_SRGGB16_1X16:
>>> +	case MEDIA_BUS_FMT_SGRBG16_1X16:
>>> +	case MEDIA_BUS_FMT_SGBRG16_1X16:
>>> +	case MEDIA_BUS_FMT_SBGGR16_1X16:
>>>  		return true;
>>>  	default:
>>>  		return false;
>>> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
>>> index f3f3bc0615e5..dec8f5ffcfa5 100644
>>> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
>>> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
>>> @@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
>>>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
>>>  	{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
>>>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
>>> +
>>> +	{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
>>> +	{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
>>> +	{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
>>> +	{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
>>> +	{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
>>> +	{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
>>> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },
>>
>> The code looks fine for me. I am wondering which sensor to test these
>> packed format for IPU6.
> 
> Such packed formats appear to be defined for Bayer formats, too, so I'd
> expect them to work as the Bayer equivalents that are already supported.

Right, on the CSI side this is e.g. always 10 bits / pixel but
then the isys can be configured to either store this in the in
memory framebuffer either sparse using 16 bits / pixel or packed
with std mipi packing.

Both paths (sparse + packed) have been tested with bayer patterns
since the softISP supports both memory buffer formats.

For the monochrome support I've tested with the libcamera "cam" app
using 16 bpp sparse + imagemagick to convert the raw Y buffers to
png-s to look at the result:

magick -depth 16 -size 1312x816 gray:XXXXXXXX.bin -auto-level result.png

Note the 1312 is necessary because the stride for 1296x816 is 1312
bytes/line.

Regards,

Hans



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

* Re: [PATCH] media: ipu6: isys: Add support for monochrome media bus formats
  2025-10-20 15:37 [PATCH] media: ipu6: isys: Add support for monochrome media bus formats Hans de Goede
  2025-10-21  8:10 ` Bingbu Cao
@ 2025-11-11  8:46 ` Bingbu Cao
  1 sibling, 0 replies; 5+ messages in thread
From: Bingbu Cao @ 2025-11-11  8:46 UTC (permalink / raw)
  To: Hans de Goede, Sakari Ailus, Bingbu Cao, Tianshu Qiu; +Cc: linux-media

Hans,

Thanks for the patch.
Reviewed-by: Bingbu Cao <bingbu.cao@intel.com>

On 10/20/25 11:37 PM, Hans de Goede wrote:
> Add support for monochrome media bus formats, for use with monochrome/IR
> camera sensors.
> 
> This has been tested on a Dell XPS 13 9320 with OV1A1B IR sensor.
> 
> Signed-off-by: Hans de Goede <hansg@kernel.org>
> ---
>  drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c |  4 +++
>  .../media/pci/intel/ipu6/ipu6-isys-subdev.c   | 34 ++++++++++++++-----
>  .../media/pci/intel/ipu6/ipu6-isys-video.c    | 14 ++++++++
>  3 files changed, 43 insertions(+), 9 deletions(-)
> 
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> index d1fece6210ab..daec6b865bda 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-csi2.c
> @@ -42,6 +42,10 @@ static const u32 csi2_supported_codes[] = {
>  	MEDIA_BUS_FMT_SGBRG8_1X8,
>  	MEDIA_BUS_FMT_SGRBG8_1X8,
>  	MEDIA_BUS_FMT_SRGGB8_1X8,
> +	MEDIA_BUS_FMT_Y8_1X8,
> +	MEDIA_BUS_FMT_Y10_1X10,
> +	MEDIA_BUS_FMT_Y12_1X12,
> +	MEDIA_BUS_FMT_Y16_1X16,
>  	MEDIA_BUS_FMT_META_8,
>  	MEDIA_BUS_FMT_META_10,
>  	MEDIA_BUS_FMT_META_12,
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> index 463a0adf9e13..869e7d4ba572 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-subdev.c
> @@ -25,24 +25,28 @@ unsigned int ipu6_isys_mbus_code_to_bpp(u32 code)
>  	case MEDIA_BUS_FMT_RGB565_1X16:
>  	case MEDIA_BUS_FMT_UYVY8_1X16:
>  	case MEDIA_BUS_FMT_YUYV8_1X16:
> +	case MEDIA_BUS_FMT_Y16_1X16:
>  	case MEDIA_BUS_FMT_META_16:
>  		return 16;
>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_Y12_1X12:
>  	case MEDIA_BUS_FMT_META_12:
>  		return 12;
>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_Y10_1X10:
>  	case MEDIA_BUS_FMT_META_10:
>  		return 10;
>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_Y8_1X8:
>  	case MEDIA_BUS_FMT_META_8:
>  		return 8;
>  	default:
> @@ -65,21 +69,25 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>  	case MEDIA_BUS_FMT_SGBRG16_1X16:
>  	case MEDIA_BUS_FMT_SGRBG16_1X16:
>  	case MEDIA_BUS_FMT_SRGGB16_1X16:
> +	case MEDIA_BUS_FMT_Y16_1X16:
>  		return MIPI_CSI2_DT_RAW16;
>  	case MEDIA_BUS_FMT_SBGGR12_1X12:
>  	case MEDIA_BUS_FMT_SGBRG12_1X12:
>  	case MEDIA_BUS_FMT_SGRBG12_1X12:
>  	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_Y12_1X12:
>  		return MIPI_CSI2_DT_RAW12;
>  	case MEDIA_BUS_FMT_SBGGR10_1X10:
>  	case MEDIA_BUS_FMT_SGBRG10_1X10:
>  	case MEDIA_BUS_FMT_SGRBG10_1X10:
>  	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_Y10_1X10:
>  		return MIPI_CSI2_DT_RAW10;
>  	case MEDIA_BUS_FMT_SBGGR8_1X8:
>  	case MEDIA_BUS_FMT_SGBRG8_1X8:
>  	case MEDIA_BUS_FMT_SGRBG8_1X8:
>  	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_Y8_1X8:
>  		return MIPI_CSI2_DT_RAW8;
>  	case MEDIA_BUS_FMT_META_8:
>  	case MEDIA_BUS_FMT_META_10:
> @@ -96,15 +104,23 @@ unsigned int ipu6_isys_mbus_code_to_mipi(u32 code)
>  
>  bool ipu6_isys_is_bayer_format(u32 code)
>  {
> -	switch (ipu6_isys_mbus_code_to_mipi(code)) {
> -	case MIPI_CSI2_DT_RAW8:
> -	case MIPI_CSI2_DT_RAW10:
> -	case MIPI_CSI2_DT_RAW12:
> -	case MIPI_CSI2_DT_RAW14:
> -	case MIPI_CSI2_DT_RAW16:
> -	case MIPI_CSI2_DT_RAW20:
> -	case MIPI_CSI2_DT_RAW24:
> -	case MIPI_CSI2_DT_RAW28:
> +	switch (code) {
> +	case MEDIA_BUS_FMT_SBGGR8_1X8:
> +	case MEDIA_BUS_FMT_SGBRG8_1X8:
> +	case MEDIA_BUS_FMT_SGRBG8_1X8:
> +	case MEDIA_BUS_FMT_SRGGB8_1X8:
> +	case MEDIA_BUS_FMT_SBGGR10_1X10:
> +	case MEDIA_BUS_FMT_SGBRG10_1X10:
> +	case MEDIA_BUS_FMT_SGRBG10_1X10:
> +	case MEDIA_BUS_FMT_SRGGB10_1X10:
> +	case MEDIA_BUS_FMT_SBGGR12_1X12:
> +	case MEDIA_BUS_FMT_SGBRG12_1X12:
> +	case MEDIA_BUS_FMT_SGRBG12_1X12:
> +	case MEDIA_BUS_FMT_SRGGB12_1X12:
> +	case MEDIA_BUS_FMT_SRGGB16_1X16:
> +	case MEDIA_BUS_FMT_SGRBG16_1X16:
> +	case MEDIA_BUS_FMT_SGBRG16_1X16:
> +	case MEDIA_BUS_FMT_SBGGR16_1X16:
>  		return true;
>  	default:
>  		return false;
> diff --git a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> index f3f3bc0615e5..dec8f5ffcfa5 100644
> --- a/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> +++ b/drivers/media/pci/intel/ipu6/ipu6-isys-video.c
> @@ -77,6 +77,20 @@ const struct ipu6_isys_pixelformat ipu6_isys_pfmts[] = {
>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
>  	{ V4L2_PIX_FMT_SRGGB10P, 10, 10, MEDIA_BUS_FMT_SRGGB10_1X10,
>  	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> +
> +	{ V4L2_PIX_FMT_GREY, 8, 8, MEDIA_BUS_FMT_Y8_1X8,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW8 },
> +	{ V4L2_PIX_FMT_Y10, 16, 10, MEDIA_BUS_FMT_Y10_1X10,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y12, 16, 12, MEDIA_BUS_FMT_Y12_1X12,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y16, 16, 16, MEDIA_BUS_FMT_Y16_1X16,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW16 },
> +	{ V4L2_PIX_FMT_Y10P, 10, 10, MEDIA_BUS_FMT_Y10_1X10,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW10 },
> +	{ V4L2_PIX_FMT_Y12P, 12, 12, MEDIA_BUS_FMT_Y12_1X12,
> +	  IPU6_FW_ISYS_FRAME_FORMAT_RAW12 },
> +
>  	{ V4L2_PIX_FMT_UYVY, 16, 16, MEDIA_BUS_FMT_UYVY8_1X16,
>  	  IPU6_FW_ISYS_FRAME_FORMAT_UYVY},
>  	{ V4L2_PIX_FMT_YUYV, 16, 16, MEDIA_BUS_FMT_YUYV8_1X16,
> 

-- 
Best regards,
Bingbu Cao

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

end of thread, other threads:[~2025-11-11  8:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-10-20 15:37 [PATCH] media: ipu6: isys: Add support for monochrome media bus formats Hans de Goede
2025-10-21  8:10 ` Bingbu Cao
2025-10-21 13:52   ` Sakari Ailus
2025-10-22 12:50     ` Hans de Goede
2025-11-11  8:46 ` Bingbu Cao

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).