All of lore.kernel.org
 help / color / mirror / Atom feed
From: Eliav Farber <farbere@amazon.com>
To: <jdelvare@suse.com>, <linux@roeck-us.net>, <robh+dt@kernel.org>,
	<mark.rutland@arm.com>, <linux-hwmon@vger.kernel.org>,
	<devicetree@vger.kernel.org>, <linux-kernel@vger.kernel.org>
Cc: <farbere@amazon.com>, <talel@amazon.com>, <hhhawa@amazon.com>,
	<jonnyc@amazon.com>, <hanochu@amazon.com>, <ronenk@amazon.com>,
	<itamark@amazon.com>, <shellykz@amazon.com>, <shorer@amazon.com>,
	<amitlavi@amazon.com>, <almogbs@amazon.com>, <dwmw@amazon.co.uk>,
	<rtanwar@maxlinear.com>
Subject: [PATCH v2 10/16] hwmon: (mr75203) add VM pre-scalar support
Date: Wed, 17 Aug 2022 05:43:15 +0000	[thread overview]
Message-ID: <20220817054321.6519-11-farbere@amazon.com> (raw)
In-Reply-To: <20220817054321.6519-1-farbere@amazon.com>

Add pre-scalar support to normalzie the voltage output results for
channels the use pre-scalar units to get the measurement to be within
the range that the sensor supports.
The pre-scalar value is used if it exists in device-tree, otherwise
default value of 1 is used.

Signed-off-by: Eliav Farber <farbere@amazon.com>
---
 drivers/hwmon/mr75203.c | 28 ++++++++++++++++++++++++++--
 1 file changed, 26 insertions(+), 2 deletions(-)

diff --git a/drivers/hwmon/mr75203.c b/drivers/hwmon/mr75203.c
index 2e6139c09efc..24a00339cfd8 100644
--- a/drivers/hwmon/mr75203.c
+++ b/drivers/hwmon/mr75203.c
@@ -112,8 +112,12 @@
 struct voltage_device {
 	u8 vm_map;
 	u8 ch_map;
+	u32 pre_scaler;
 };
 
+#define PRE_SCALR_PROPERTY_NAME	32
+#define PRE_SCALR_DEFAULT_VAL	1
+
 struct pvt_device {
 	struct regmap		*c_map;
 	struct regmap		*t_map;
@@ -215,7 +219,9 @@ static int pvt_read_in(struct device *dev, u32 attr, int channel, long *val)
 
 		n &= SAMPLE_DATA_MSK;
 		/* Convert the N bitstream count into voltage */
-		*val = (PVT_N_CONST * n - PVT_R_CONST) >> PVT_CONV_BITS;
+		*val = pvt->vd[channel].pre_scaler;
+		*val *= (PVT_N_CONST * n - PVT_R_CONST);
+		*val >>= PVT_CONV_BITS;
 
 		return 0;
 	default:
@@ -527,6 +533,7 @@ static int pvt_reset_control_deassert(struct device *dev, struct pvt_device *pvt
 static int mr75203_probe(struct platform_device *pdev)
 {
 	const struct hwmon_channel_info **pvt_info;
+	const struct device_node *np = pdev->dev.of_node;
 	u32 ts_num, vm_num, pd_num, ch_num, val, index, i, j, k;
 	struct device *dev = &pdev->dev;
 	u32 *temp_config, *in_config;
@@ -552,7 +559,7 @@ static int mr75203_probe(struct platform_device *pdev)
 		return ret;
 	}
 
-	if (of_property_read_bool(dev->of_node, "reset-control-skip")) {
+	if (of_property_read_bool(np, "reset-control-skip")) {
 		dev_info(dev, "skipping reset-control\n");
 	} else {
 		pvt->rst = devm_reset_control_get_exclusive(dev, NULL);
@@ -615,6 +622,8 @@ static int mr75203_probe(struct platform_device *pdev)
 	if (vm_num) {
 		u8 vm_idx[VM_NUM_MAX];
 		u8 vm_active_ch[VM_NUM_MAX];
+		char prop_name[PRE_SCALR_PROPERTY_NAME] = {0};
+		u32 pre_scaler;
 
 		ret = pvt_get_regmap(pdev, "vm", pvt);
 		if (ret)
@@ -686,6 +695,21 @@ static int mr75203_probe(struct platform_device *pdev)
 				k++;
 			}
 
+		/*
+		 * Incase vm-pre-scalar-ch# property is not defined, we assume
+		 * default pre-scaler of 1.
+		 */
+		for (i = 0; i < pvt->vm_ch_total; i++) {
+			snprintf(prop_name, sizeof(prop_name),
+				 "vm-pre-scalar-ch%u", i);
+
+			ret = of_property_read_u32(np, prop_name, &pre_scaler);
+			if (ret)
+				pvt->vd[i].pre_scaler = PRE_SCALR_DEFAULT_VAL;
+			else
+				pvt->vd[i].pre_scaler = pre_scaler;
+		}
+
 		in_config = devm_kcalloc(dev, pvt->vm_ch_total + 1,
 					 sizeof(*in_config), GFP_KERNEL);
 		if (!in_config)
-- 
2.37.1


  parent reply	other threads:[~2022-08-17  5:44 UTC|newest]

Thread overview: 48+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-17  5:43 [PATCH v2 00/16] Variety of fixes and new features for mr75203 driver Eliav Farber
2022-08-17  5:43 ` [PATCH v2 01/16] hwmon: (mr75203) fix VM sensor allocation when "intel,vm-map" not defined Eliav Farber
2022-08-18 19:40   ` Guenter Roeck
2022-08-18 20:01     ` [PATCH v2 01/16] hwmon: (mr75203) fix VM sensor allocation when "intel, vm-map" " Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 02/16] hwmon: (mr75203) update pvt->v_num to the actual number of used sensors Eliav Farber
2022-08-18 19:44   ` Guenter Roeck
2022-08-17  5:43 ` [PATCH v2 03/16] hwmon: (mr75203) update Moortec PVT controller intel,vm-map property Eliav Farber
2022-08-18 19:47   ` Guenter Roeck
2022-08-18 20:20     ` [PATCH v2 03/16] hwmon: (mr75203) update Moortec PVT controller intel, vm-map property Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 04/16] hwmon: (mr75203) add Moortec PVT controller reset-control-skip property Eliav Farber
2022-08-18 20:01   ` Guenter Roeck
2022-08-22 11:54     ` Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 05/16] hwmon: (mr75203) add option to skip reset controller Eliav Farber
2022-08-17  5:43 ` [PATCH v2 06/16] hwmon: (mr75203) fix multi-channel voltage reading Eliav Farber
2022-08-18 20:03   ` Guenter Roeck
2022-08-22 12:37     ` Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 07/16] hwmon: (mr75203) add VM active channels property for Moortec PVT controller Eliav Farber
2022-08-18 20:07   ` Guenter Roeck
2022-08-17  5:43 ` [PATCH v2 08/16] hwmon: (mr75203) add VM active channel support Eliav Farber
2022-08-17  5:43 ` [PATCH v2 09/16] hwmon: (mr75203) add VM pre-scalar property for Moortec PVT controller Eliav Farber
2022-08-18 20:11   ` Guenter Roeck
2022-08-19  7:13     ` Farber, Eliav
2022-08-17  5:43 ` Eliav Farber [this message]
2022-08-17  5:43 ` [PATCH v2 11/16] hwmon: (mr75203) add protection for negative voltage value Eliav Farber
2022-08-18 20:13   ` Guenter Roeck
2022-08-17  5:43 ` [PATCH v2 12/16] hwmon: (mr75203) modify the temperature equation Eliav Farber
2022-08-18 20:23   ` Guenter Roeck
2022-08-19  7:44     ` Farber, Eliav
2022-08-19 11:35       ` Guenter Roeck
2022-08-17  5:43 ` [PATCH v2 13/16] hwmon: (mr75203) add thermal coefficient properties for Moortec PVT controller Eliav Farber
2022-08-18 20:25   ` Guenter Roeck
2022-08-22 13:24     ` Farber, Eliav
2022-08-22 16:25       ` Guenter Roeck
2022-08-29 18:46         ` Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 14/16] hwmon: (mr75203) parse thermal coefficients from device-tree Eliav Farber
2022-08-18 20:28   ` Guenter Roeck
2022-08-19  7:57     ` Farber, Eliav
2022-08-19 11:36       ` Guenter Roeck
2022-08-19 11:38       ` Guenter Roeck
2022-08-22 13:41         ` Farber, Eliav
2022-08-22 16:31           ` Guenter Roeck
2022-08-29 18:59             ` Farber, Eliav
2022-08-17  5:43 ` [PATCH v2 15/16] hwmon: (mr75203) fix coding style space errors Eliav Farber
2022-08-17  5:43 ` [PATCH v2 16/16] hwmon: (mr75203) add debugfs to read and write temperature coefficients Eliav Farber
2022-08-18 23:11   ` Guenter Roeck
2022-08-22 13:59     ` Farber, Eliav
2022-08-22 16:28       ` Guenter Roeck
2022-08-29 18:41         ` Farber, Eliav

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=20220817054321.6519-11-farbere@amazon.com \
    --to=farbere@amazon.com \
    --cc=almogbs@amazon.com \
    --cc=amitlavi@amazon.com \
    --cc=devicetree@vger.kernel.org \
    --cc=dwmw@amazon.co.uk \
    --cc=hanochu@amazon.com \
    --cc=hhhawa@amazon.com \
    --cc=itamark@amazon.com \
    --cc=jdelvare@suse.com \
    --cc=jonnyc@amazon.com \
    --cc=linux-hwmon@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=mark.rutland@arm.com \
    --cc=robh+dt@kernel.org \
    --cc=ronenk@amazon.com \
    --cc=rtanwar@maxlinear.com \
    --cc=shellykz@amazon.com \
    --cc=shorer@amazon.com \
    --cc=talel@amazon.com \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.