Linux Media Controller development
 help / color / mirror / Atom feed
From: Sakari Ailus <sakari.ailus@linux.intel.com>
To: linux-media@vger.kernel.org
Cc: mchehab@kernel.org
Subject: [PATCH 13/24] ccs: Add shading correction and luminance correction level controls
Date: Mon,  7 Dec 2020 23:15:19 +0200	[thread overview]
Message-ID: <20201207211530.21180-14-sakari.ailus@linux.intel.com> (raw)
In-Reply-To: <20201207211530.21180-1-sakari.ailus@linux.intel.com>

Add controls for supporting lens shading correction, including colour
shading and luminance correction level.

Signed-off-by: Sakari Ailus <sakari.ailus@linux.intel.com>
---
 drivers/media/i2c/ccs/ccs-core.c | 46 ++++++++++++++++++++++++++++++++
 drivers/media/i2c/ccs/ccs.h      |  1 +
 2 files changed, 47 insertions(+)

diff --git a/drivers/media/i2c/ccs/ccs-core.c b/drivers/media/i2c/ccs/ccs-core.c
index 7591a52a41a4..12c30fb0f37a 100644
--- a/drivers/media/i2c/ccs/ccs-core.c
+++ b/drivers/media/i2c/ccs/ccs-core.c
@@ -756,6 +756,19 @@ static int ccs_set_ctrl(struct v4l2_ctrl *ctrl)
 	case V4L2_CID_TEST_PATTERN_GREENB:
 		rval = ccs_write(sensor, TEST_DATA_GREENB, ctrl->val);
 
+		break;
+	case V4L2_CID_CCS_SHADING_CORRECTION:
+		rval = ccs_write(sensor, SHADING_CORRECTION_EN,
+				 ctrl->val ? CCS_SHADING_CORRECTION_EN_ENABLE :
+				 0);
+
+		if (!rval && sensor->luminance_level)
+			v4l2_ctrl_activate(sensor->luminance_level, ctrl->val);
+
+		break;
+	case V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL:
+		rval = ccs_write(sensor, LUMINANCE_CORRECTION_LEVEL, ctrl->val);
+
 		break;
 	case V4L2_CID_PIXEL_RATE:
 		/* For v4l2_ctrl_s_ctrl_int64() used internally. */
@@ -877,6 +890,39 @@ static int ccs_init_controls(struct ccs_sensor *sensor)
 	}
 	}
 
+	if (CCS_LIM(sensor, SHADING_CORRECTION_CAPABILITY) &
+	    (CCS_SHADING_CORRECTION_CAPABILITY_COLOR_SHADING |
+	     CCS_SHADING_CORRECTION_CAPABILITY_LUMINANCE_CORRECTION)) {
+		const struct v4l2_ctrl_config ctrl_cfg = {
+			.name = "Shading Correction",
+			.type = V4L2_CTRL_TYPE_BOOLEAN,
+			.id = V4L2_CID_CCS_SHADING_CORRECTION,
+			.ops = &ccs_ctrl_ops,
+			.max = 1,
+			.step = 1,
+		};
+
+		v4l2_ctrl_new_custom(&sensor->pixel_array->ctrl_handler,
+				     &ctrl_cfg, NULL);
+	}
+
+	if (CCS_LIM(sensor, SHADING_CORRECTION_CAPABILITY) &
+	    CCS_SHADING_CORRECTION_CAPABILITY_LUMINANCE_CORRECTION) {
+		const struct v4l2_ctrl_config ctrl_cfg = {
+			.name = "Luminance Correction Level",
+			.type = V4L2_CTRL_TYPE_BOOLEAN,
+			.id = V4L2_CID_CCS_LUMINANCE_CORRECTION_LEVEL,
+			.ops = &ccs_ctrl_ops,
+			.max = 255,
+			.step = 1,
+			.def = 128,
+		};
+
+		sensor->luminance_level =
+			v4l2_ctrl_new_custom(&sensor->pixel_array->ctrl_handler,
+					     &ctrl_cfg, NULL);
+	}
+
 	if (CCS_LIM(sensor, DIGITAL_GAIN_CAPABILITY) ==
 	    CCS_DIGITAL_GAIN_CAPABILITY_GLOBAL ||
 	    CCS_LIM(sensor, DIGITAL_GAIN_CAPABILITY) ==
diff --git a/drivers/media/i2c/ccs/ccs.h b/drivers/media/i2c/ccs/ccs.h
index 9fc3333f6c4e..cc33c9ba3165 100644
--- a/drivers/media/i2c/ccs/ccs.h
+++ b/drivers/media/i2c/ccs/ccs.h
@@ -268,6 +268,7 @@ struct ccs_sensor {
 	struct v4l2_ctrl *vblank;
 	struct v4l2_ctrl *hblank;
 	struct v4l2_ctrl *pixel_rate_parray;
+	struct v4l2_ctrl *luminance_level;
 	/* src controls */
 	struct v4l2_ctrl *link_freq;
 	struct v4l2_ctrl *pixel_rate_csi;
-- 
2.29.2


  parent reply	other threads:[~2020-12-07 21:27 UTC|newest]

Thread overview: 28+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-07 21:15 [PATCH 00/24] Additional CCS feature support Sakari Ailus
2020-12-07 21:15 ` [PATCH 01/24] ccs: Add digital gain support Sakari Ailus
2020-12-07 21:15 ` [PATCH 02/24] ccs: Add support for old-style SMIA digital gain Sakari Ailus
2020-12-07 21:15 ` [PATCH 03/24] ccs: Remove analogue gain field Sakari Ailus
2020-12-07 21:15 ` [PATCH 04/24] ccs: Only add analogue gain control if the device supports it Sakari Ailus
2020-12-07 21:15 ` [PATCH 05/24] v4l: uapi: Add user control base for CCS controls Sakari Ailus
2020-12-07 21:15 ` [PATCH 06/24] Documentation: ccs: Add user documentation for the CCS driver Sakari Ailus
2020-12-07 21:15 ` [PATCH 07/24] v4l: uapi: ccs: Add controls for analogue gain constants Sakari Ailus
2020-12-11 11:39   ` [PATCH v1.1 " Sakari Ailus
2020-12-07 21:15 ` [PATCH 08/24] ccs: Add support for analogue gain coefficient controls Sakari Ailus
2020-12-07 21:15 ` [PATCH 09/24] v4l: uapi: ccs: Add controls for CCS alternative analogue gain Sakari Ailus
2020-12-07 21:15 ` [PATCH 10/24] ccs: Add support for alternate analogue global gain Sakari Ailus
2020-12-07 21:15 ` [PATCH 11/24] ccs: Add debug prints for MSR registers Sakari Ailus
2020-12-07 21:15 ` [PATCH 12/24] v4l: uapi: ccs: Add CCS controls for shading correction Sakari Ailus
2020-12-07 21:15 ` Sakari Ailus [this message]
2020-12-07 21:15 ` [PATCH 14/24] ccs: Get the endpoint by port rather than any next endpoint Sakari Ailus
2020-12-07 21:15 ` [PATCH 15/24] ccs: Don't change the I²C address just for software reset Sakari Ailus
2020-12-07 21:15 ` [PATCH 16/24] ccs: Only do software reset if we have no hardware reset Sakari Ailus
2020-12-07 21:15 ` [PATCH 17/24] ccs: Wait until software reset is done Sakari Ailus
2021-01-12 16:49   ` Mauro Carvalho Chehab
2021-01-12 17:12     ` Sakari Ailus
2020-12-07 21:15 ` [PATCH 18/24] ccs: Hardware requires a delay after starting the clock of lifting reset Sakari Ailus
2020-12-07 21:15 ` [PATCH 19/24] ccs: Add a sanity check for external clock frequency Sakari Ailus
2020-12-07 21:15 ` [PATCH 20/24] ccs: Support and default to auto PHY control Sakari Ailus
2020-12-07 21:15 ` [PATCH 21/24] Documentation: Include CCS PLL calculator to CCS driver documentation Sakari Ailus
2020-12-07 21:15 ` [PATCH 22/24] ccs-pll: Switch from standard integer types to kernel ones Sakari Ailus
2020-12-07 21:15 ` [PATCH 23/24] ccs: " Sakari Ailus
2020-12-07 21:15 ` [PATCH 24/24] Revert "media: ccs-pll: Fix MODULE_LICENSE" Sakari Ailus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20201207211530.21180-14-sakari.ailus@linux.intel.com \
    --to=sakari.ailus@linux.intel.com \
    --cc=linux-media@vger.kernel.org \
    --cc=mchehab@kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox