[libcamera-devel,v5,3/6] uapi: raspberrypi: Update the bcm2835-isp header definition
diff mbox series

Message ID 20210129151154.1051163-4-naush@raspberrypi.com
State Changes Requested
Headers show
Series
  • Raspberry Pi: Colour denoise
Related show

Commit Message

Naushir Patuck Jan. 29, 2021, 3:11 p.m. UTC
Update the bcm2835-isp.h file with the latest version available in the
downstream Raspberry Pi linux repo.

This change adds support for colour denoise processing, and the
following downstream kernel changes must be available:
https://github.com/raspberrypi/linux/pull/4069
https://github.com/raspberrypi/linux/pull/4083

The Raspberry Pi image must also be running the latest firmware,
obtained by running rpi-update.

Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
---
 include/linux/bcm2835-isp.h | 32 +++++++++++++++++++++++++++++---
 1 file changed, 29 insertions(+), 3 deletions(-)

Comments

Laurent Pinchart Feb. 4, 2021, 9:33 p.m. UTC | #1
Hi Naush,

Thank you for the patch.

On Fri, Jan 29, 2021 at 03:11:51PM +0000, Naushir Patuck wrote:
> Update the bcm2835-isp.h file with the latest version available in the
> downstream Raspberry Pi linux repo.

Could you please mention the commit ID ? With this,

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> This change adds support for colour denoise processing, and the
> following downstream kernel changes must be available:
> https://github.com/raspberrypi/linux/pull/4069
> https://github.com/raspberrypi/linux/pull/4083
> 
> The Raspberry Pi image must also be running the latest firmware,
> obtained by running rpi-update.
> 
> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>
> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
> ---
>  include/linux/bcm2835-isp.h | 32 +++++++++++++++++++++++++++++---
>  1 file changed, 29 insertions(+), 3 deletions(-)
> 
> diff --git a/include/linux/bcm2835-isp.h b/include/linux/bcm2835-isp.h
> index 45abb681517e..94c3af947883 100644
> --- a/include/linux/bcm2835-isp.h
> +++ b/include/linux/bcm2835-isp.h
> @@ -31,7 +31,8 @@
>  				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0007)
>  #define V4L2_CID_USER_BCM2835_ISP_DPC		\
>  				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0008)
> -
> +#define V4L2_CID_USER_BCM2835_ISP_CDN \
> +				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0009)

You could send a patch to the kernel to add the missing blank line here
;-)

>  /*
>   * All structs below are directly mapped onto the equivalent structs in
>   * drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
> @@ -46,7 +47,7 @@
>   */
>  struct bcm2835_isp_rational {
>  	__s32 num;
> -	__s32 den;
> +	__u32 den;
>  };
>  
>  /**
> @@ -140,7 +141,7 @@ struct bcm2835_isp_black_level {
>  	__u16 black_level_r;
>  	__u16 black_level_g;
>  	__u16 black_level_b;
> -	__u8 pad_[2]; /* Unused */
> +	__u8 padding[2]; /* Unused */
>  };
>  
>  /**
> @@ -175,6 +176,31 @@ struct bcm2835_isp_gamma {
>  	__u16 y[BCM2835_NUM_GAMMA_PTS];
>  };
>  
> +/**
> + * enum bcm2835_isp_cdn_mode - Mode of operation for colour denoise.
> + *
> +  * @CDN_MODE_FAST:		Fast (but lower quality) colour denoise

And to remove the extra space.

> + *				algorithm, typically used for video recording.
> + * @CDN_HIGH_QUALITY:		High quality (but slower) colour denoise
> + *				algorithm, typically used for stills capture.
> + */
> +enum bcm2835_isp_cdn_mode {
> +	CDN_MODE_FAST = 0,
> +	CDN_MODE_HIGH_QUALITY = 1,
> +};
> +
> +/**
> + * struct bcm2835_isp_cdn - Colour denoise parameters set with the
> + *			    V4L2_CID_USER_BCM2835_ISP_CDN ctrl.
> + *
> + * @enabled:	Enable colour denoise.
> + * @cdn_mode:	Colour denoise operating mode (see enum &bcm2835_isp_cdn_mode)
> + */
> +struct bcm2835_isp_cdn {
> +	__u32 enabled;
> +	__u32 mode;
> +};
> +
>  /**
>   * struct bcm2835_isp_denoise - Denoise parameters set with the
>   *				V4L2_CID_USER_BCM2835_ISP_DENOISE ctrl.

Patch
diff mbox series

diff --git a/include/linux/bcm2835-isp.h b/include/linux/bcm2835-isp.h
index 45abb681517e..94c3af947883 100644
--- a/include/linux/bcm2835-isp.h
+++ b/include/linux/bcm2835-isp.h
@@ -31,7 +31,8 @@ 
 				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0007)
 #define V4L2_CID_USER_BCM2835_ISP_DPC		\
 				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0008)
-
+#define V4L2_CID_USER_BCM2835_ISP_CDN \
+				(V4L2_CID_USER_BCM2835_ISP_BASE + 0x0009)
 /*
  * All structs below are directly mapped onto the equivalent structs in
  * drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -46,7 +47,7 @@ 
  */
 struct bcm2835_isp_rational {
 	__s32 num;
-	__s32 den;
+	__u32 den;
 };
 
 /**
@@ -140,7 +141,7 @@  struct bcm2835_isp_black_level {
 	__u16 black_level_r;
 	__u16 black_level_g;
 	__u16 black_level_b;
-	__u8 pad_[2]; /* Unused */
+	__u8 padding[2]; /* Unused */
 };
 
 /**
@@ -175,6 +176,31 @@  struct bcm2835_isp_gamma {
 	__u16 y[BCM2835_NUM_GAMMA_PTS];
 };
 
+/**
+ * enum bcm2835_isp_cdn_mode - Mode of operation for colour denoise.
+ *
+  * @CDN_MODE_FAST:		Fast (but lower quality) colour denoise
+ *				algorithm, typically used for video recording.
+ * @CDN_HIGH_QUALITY:		High quality (but slower) colour denoise
+ *				algorithm, typically used for stills capture.
+ */
+enum bcm2835_isp_cdn_mode {
+	CDN_MODE_FAST = 0,
+	CDN_MODE_HIGH_QUALITY = 1,
+};
+
+/**
+ * struct bcm2835_isp_cdn - Colour denoise parameters set with the
+ *			    V4L2_CID_USER_BCM2835_ISP_CDN ctrl.
+ *
+ * @enabled:	Enable colour denoise.
+ * @cdn_mode:	Colour denoise operating mode (see enum &bcm2835_isp_cdn_mode)
+ */
+struct bcm2835_isp_cdn {
+	__u32 enabled;
+	__u32 mode;
+};
+
 /**
  * struct bcm2835_isp_denoise - Denoise parameters set with the
  *				V4L2_CID_USER_BCM2835_ISP_DENOISE ctrl.