Commit f3c75633 authored by Adam Wujek's avatar Adam Wujek

sw/patches/linux: fix patch formating

Signed-off-by: 's avatarAdam Wujek <dev_public@wujek.eu>
parent c8eda484
From c3e066aa06ad29841de63fe58d173e7f500229d7 Mon Sep 17 00:00:00 2001
From ae587d0fba972f5a491e4cb46aa91f2816dc016f Mon Sep 17 00:00:00 2001
From: Adam Wujek <dev_public@wujek.eu>
Date: Wed, 20 Oct 2021 22:54:23 +0200
Subject: [PATCH] hwmon: (pmbus) Add Hartmann PSU driver
......@@ -10,8 +10,8 @@ Signed-off-by: Adam Wujek <dev_public@wujek.eu>
---
drivers/hwmon/pmbus/Kconfig | 9 ++
drivers/hwmon/pmbus/Makefile | 1 +
drivers/hwmon/pmbus/hartmann_psu.c | 148 +++++++++++++++++++++++++++++
3 files changed, 158 insertions(+)
drivers/hwmon/pmbus/hartmann_psu.c | 158 +++++++++++++++++++++++++++++
3 files changed, 168 insertions(+)
create mode 100644 drivers/hwmon/pmbus/hartmann_psu.c
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
......@@ -48,10 +48,10 @@ index 73b6424b6553..10fb78c7341e 100644
obj-$(CONFIG_SENSORS_IRPS5401) += irps5401.o
diff --git a/drivers/hwmon/pmbus/hartmann_psu.c b/drivers/hwmon/pmbus/hartmann_psu.c
new file mode 100644
index 000000000000..0515ef47af5d
index 000000000000..c8585730f079
--- /dev/null
+++ b/drivers/hwmon/pmbus/hartmann_psu.c
@@ -0,0 +1,148 @@
@@ -0,0 +1,158 @@
+/*
+ * Hardware monitoring driver for Hartmann PSU
+ *
......@@ -80,35 +80,42 @@ index 000000000000..0515ef47af5d
+#define LINEAR11_EXPONENT_SHIFT 11
+#define LINEAR11_EXPONENT_SHIFTED_MASK 0x1F
+
+/* NOTE: Values PMBUS_VOUT_OV_FAULT_LIMIT, PMBUS_VOUT_UV_FAULT_LIMIT,
+/*
+ * NOTE: Values PMBUS_VOUT_OV_FAULT_LIMIT, PMBUS_VOUT_UV_FAULT_LIMIT,
+ * PMBUS_VOUT_OV_WARN_LIMIT, PMBUS_VOUT_UV_WARN_LIMIT and PMBUS_READ_VOUT
+ * reported by this PSU are in format linear11 not linear16. As today kernel
+ * expects them to be in linear16, so convert.
+ * PSU does not report PMBUS_VOUT_MODE value. So fill it with exponent part
+ * from PMBUS_READ_VOUT. It is assumed that exponent does not change over time.
+ * */
+ */
+static int hartmann_read_byte_data(struct i2c_client *client, int page, int reg)
+{
+ int ret;
+
+ switch (reg) {
+ case PMBUS_VOUT_MODE:
+ /* For this PSU VOUT values are returned as linear11, while
+ * the kernel expects them to be linear16 */
+ /*
+ * For this PSU the VOUT value is returned as linear11, while
+ * the kernel expects them to be linear16.
+ */
+ ret = pmbus_read_byte_data(client, page, reg);
+ if (ret >= 0) {
+ /* If valid PMBUS_VOUT_MODE is available, return it */
+ return ret;
+ }
+
+ /* Failed to read VOUT_MODE */
+ /* Assume that exponent does not change */
+
+ /*
+ * Failed to read VOUT_MODE.
+ * Assume the exponent does not change.
+ */
+ ret = pmbus_read_word_data(client, page, PMBUS_READ_VOUT);
+ if (ret < 0)
+ return ret;
+
+ /* Take exponent part from PMBUS_READ_VOUT and return it as
+ * a part of PMBUS_VOUT_MODE */
+ /*
+ * Take exponent part from PMBUS_READ_VOUT and return it as
+ * a part of PMBUS_VOUT_MODE
+ */
+ ret = ((int16_t) ret) >> LINEAR11_EXPONENT_SHIFT;
+ ret &= LINEAR11_EXPONENT_SHIFTED_MASK;
+ /* PB_VOUT_MODE_LINEAR is 0 anyway */
......@@ -140,8 +147,10 @@ index 000000000000..0515ef47af5d
+
+ ret = pmbus_read_byte_data(client, page, PMBUS_READ_VOUT);
+ if (ret >= 0) {
+ /* If an valid PMBUS_VOUT_MODE is available,
+ * return PMBUS_READ_VOUT as is (probably linear16) */
+ /*
+ * If a valid PMBUS_VOUT_MODE is available,
+ * return PMBUS_READ_VOUT as is (probably linear16)
+ */
+ return val;
+ }
+
......@@ -167,8 +176,10 @@ index 000000000000..0515ef47af5d
+ .func[0] = HARTMANN_SW_FUNC,
+ .read_word_data = hartmann_read_word_data,
+ .read_byte_data = hartmann_read_byte_data,
+ /* linear11, kernel does not support it, so convert in
+ * hartmann_read_word_data and hartmann_read_byte_data */
+ /*
+ * linear11, kernel does not support it, so convert in
+ * hartmann_read_word_data and hartmann_read_byte_data
+ */
+ .format[PSC_VOLTAGE_OUT] = linear,
+};
+
......@@ -185,7 +196,6 @@ index 000000000000..0515ef47af5d
+
+MODULE_DEVICE_TABLE(i2c, hartmann_psu_id);
+
+/* This is the driver that will be inserted */
+static struct i2c_driver hartmann_psu_driver = {
+ .driver = {
+ .name = "hartmann-psu",
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment