openwrt/target/linux/bcm27xx/patches-5.15/950-0335-staging-vc04_servi...

76 lines
2.5 KiB
Diff

From 21e7514e0fcc8036c675aa8e916fca8c8522b58d Mon Sep 17 00:00:00 2001
From: Naushir Patuck <naush@raspberrypi.com>
Date: Thu, 14 Jan 2021 09:20:52 +0000
Subject: [PATCH] staging: vc04_services: ISP: Add colour denoise
control
Add colour denoise control to the bcm2835 driver through a new v4l2
control: V4L2_CID_USER_BCM2835_ISP_CDN.
Add the accompanying MMAL configuration structure definitions as well.
Signed-off-by: Naushir Patuck <naush@raspberrypi.com>
---
.../vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h | 5 +++++
.../vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c | 5 +++++
.../vc04_services/vchiq-mmal/mmal-parameters.h | 13 +++++++++++++
3 files changed, 23 insertions(+)
--- a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h
+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-isp-ctrls.h
@@ -57,6 +57,11 @@ static const struct bcm2835_isp_custom_c
.size = sizeof(struct bcm2835_isp_denoise),
.flags = 0
}, {
+ .name = "Colour Denoise",
+ .id = V4L2_CID_USER_BCM2835_ISP_CDN,
+ .size = sizeof(struct bcm2835_isp_cdn),
+ .flags = 0
+ }, {
.name = "Defective Pixel Correction",
.id = V4L2_CID_USER_BCM2835_ISP_DPC,
.size = sizeof(struct bcm2835_isp_dpc),
--- a/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
+++ b/drivers/staging/vc04_services/bcm2835-isp/bcm2835-v4l2-isp.c
@@ -764,6 +764,11 @@ static int bcm2835_isp_s_ctrl(struct v4l
ctrl->p_new.p_u8,
sizeof(struct bcm2835_isp_denoise));
break;
+ case V4L2_CID_USER_BCM2835_ISP_CDN:
+ ret = set_isp_param(node, MMAL_PARAMETER_CDN,
+ ctrl->p_new.p_u8,
+ sizeof(struct bcm2835_isp_cdn));
+ break;
case V4L2_CID_USER_BCM2835_ISP_SHARPEN:
ret = set_isp_param(node, MMAL_PARAMETER_SHARPEN,
ctrl->p_new.p_u8,
--- a/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
+++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-parameters.h
@@ -277,6 +277,8 @@ enum mmal_parameter_camera_type {
MMAL_PARAMETER_DPC,
/**< Tales a @ref MMAP_PARAMETER_GAMMA_T */
MMAL_PARAMETER_GAMMA,
+ /**< Takes a @ref MMAL_PARAMETER_CDN_T */
+ MMAL_PARAMETER_CDN,
};
struct mmal_parameter_rational {
@@ -913,6 +915,17 @@ struct mmal_parameter_gamma {
u16 y[MMAL_NUM_GAMMA_PTS];
};
+enum mmal_parameter_cdn_mode {
+ MMAL_PARAM_CDN_FAST = 0,
+ MMAL_PARAM_CDN_HIGH_QUALITY = 1,
+ MMAL_PARAM_CDN_DUMMY = 0x7FFFFFFF
+};
+
+struct mmal_parameter_colour_denoise {
+ u32 enabled;
+ enum mmal_parameter_cdn_mode mode;
+};
+
struct mmal_parameter_denoise {
u32 enabled;
u32 constant;