lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20250620040736.3032667-3-quic_wenmliu@quicinc.com>
Date: Fri, 20 Jun 2025 12:07:35 +0800
From: Wenmeng Liu <quic_wenmliu@...cinc.com>
To: <rfoss@...nel.org>, <todor.too@...il.com>, <bryan.odonoghue@...aro.org>,
        <mchehab@...nel.org>, <robh@...nel.org>, <krzk+dt@...nel.org>,
        <conor+dt@...nel.org>, <andersson@...nel.org>,
        <konradybcio@...nel.org>, <akapatra@...cinc.com>,
        <hariramp@...cinc.com>
CC: <linux-media@...r.kernel.org>, <linux-arm-msm@...r.kernel.org>,
        <devicetree@...r.kernel.org>, <linux-kernel@...r.kernel.org>,
        <quic_svankada@...cinc.com>, <quic_depengs@...cinc.com>,
        <quic_vikramsa@...cinc.com>, <quic_wenmliu@...cinc.com>
Subject: [RFC PATCH 2/3] media: qcom: camss: csiphy: Add regulator current load setting

Add support for current load in csiphy.

Signed-off-by: Wenmeng Liu <quic_wenmliu@...cinc.com>
---
 .../media/platform/qcom/camss/camss-csiphy.c  | 29 +++++++++++++++++++
 .../media/platform/qcom/camss/camss-csiphy.h  |  1 +
 2 files changed, 30 insertions(+)

diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.c b/drivers/media/platform/qcom/camss/camss-csiphy.c
index c622efcc92ff..c3069e8a6b62 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy.c
+++ b/drivers/media/platform/qcom/camss/camss-csiphy.c
@@ -209,6 +209,7 @@ static int csiphy_set_power(struct v4l2_subdev *sd, int on)
 {
 	struct csiphy_device *csiphy = v4l2_get_subdevdata(sd);
 	struct device *dev = csiphy->camss->dev;
+	int i;
 
 	if (on) {
 		int ret;
@@ -217,6 +218,15 @@ static int csiphy_set_power(struct v4l2_subdev *sd, int on)
 		if (ret < 0)
 			return ret;
 
+		if (csiphy->load_currents) {
+			for (i = 0; i < csiphy->num_supplies; i++) {
+				ret = regulator_set_load(csiphy->supplies[i].consumer,
+							 csiphy->load_currents[i]);
+			if (ret)
+				return ret;
+			}
+		}
+
 		ret = regulator_bulk_enable(csiphy->num_supplies,
 					    csiphy->supplies);
 		if (ret < 0) {
@@ -250,6 +260,11 @@ static int csiphy_set_power(struct v4l2_subdev *sd, int on)
 
 		camss_disable_clocks(csiphy->nclocks, csiphy->clock);
 
+		if (csiphy->load_currents) {
+			for (i = 0; i < csiphy->num_supplies; i++)
+				regulator_set_load(csiphy->supplies[i].consumer, 0);
+		}
+
 		regulator_bulk_disable(csiphy->num_supplies, csiphy->supplies);
 
 		pm_runtime_put_sync(dev);
@@ -717,6 +732,20 @@ int msm_csiphy_subdev_init(struct camss *camss,
 
 	ret = devm_regulator_bulk_get(camss->dev, csiphy->num_supplies,
 				      csiphy->supplies);
+
+	if (device_property_present(camss->dev, "regulator-load-current")) {
+		csiphy->load_currents = kcalloc(csiphy->num_supplies, sizeof(u32), GFP_KERNEL);
+		if (!csiphy->load_currents)
+			return -ENOMEM;
+
+		ret = device_property_read_u32_array(camss->dev,
+						     "regulator-load-current",
+						     csiphy->load_currents,
+						     csiphy->num_supplies);
+		for (i = 0; i < csiphy->num_supplies; i++)
+			regulator_set_load(csiphy->supplies[i].consumer, 0);
+	}
+
 	return ret;
 }
 
diff --git a/drivers/media/platform/qcom/camss/camss-csiphy.h b/drivers/media/platform/qcom/camss/camss-csiphy.h
index ab91273303b9..74ebfc67a375 100644
--- a/drivers/media/platform/qcom/camss/camss-csiphy.h
+++ b/drivers/media/platform/qcom/camss/camss-csiphy.h
@@ -106,6 +106,7 @@ struct csiphy_device {
 	int nclocks;
 	u32 timer_clk_rate;
 	struct regulator_bulk_data *supplies;
+	u32 *load_currents;
 	int num_supplies;
 	struct csiphy_config cfg;
 	struct v4l2_mbus_framefmt fmt[MSM_CSIPHY_PADS_NUM];
-- 
2.34.1


Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ