Skip to content

Commit 17d2054

Browse files
committed
hw-mgmt: kernel patch: Extend patch for XDPE1A2G7B
Extend patch with additional support for Infineon XDPE1A2G7B Digital Multi-phase Controller. Signed-off-by: Vadim Pasternak <vadimp@nvidia.com>
1 parent 21a8d75 commit 17d2054

File tree

1 file changed

+45
-33
lines changed

1 file changed

+45
-33
lines changed

recipes-kernel/linux/linux-6.1/0106-hwmon-pmbus-xdpe1a2g7b-XDPE1A2G7B-Digital-Multi-phas.patch

Lines changed: 45 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
From 984090311edebbf7f3b246230f567847540b66bd Mon Sep 17 00:00:00 2001
1+
From 102d4beb0d3813ea47699eab05c1494520ac971a Mon Sep 17 00:00:00 2001
22
From: Vadim Pasternak <vadimp@nvidia.com>
33
Date: Wed, 14 Jan 2026 19:19:20 +0200
44
Subject: [PATCH backport 6.1 1/1] hwmon:(pmbus/xdpe1a2g7b) XDPE1A2G7B Digital
@@ -9,12 +9,12 @@ Controller.
99

1010
Signed-off-by: Ashish Yadav <ashish.yadav@infineon.com>
1111
---
12-
drivers/hwmon/pmbus/Kconfig | 9 +++
13-
drivers/hwmon/pmbus/Makefile | 1 +
14-
drivers/hwmon/pmbus/pmbus.h | 2 +-
15-
drivers/hwmon/pmbus/pmbus_core.c | 4 ++
16-
drivers/hwmon/pmbus/xdpe1a2g7b.c | 97 ++++++++++++++++++++++++++++++++
17-
5 files changed, 112 insertions(+), 1 deletion(-)
12+
drivers/hwmon/pmbus/Kconfig | 9 ++
13+
drivers/hwmon/pmbus/Makefile | 1 +
14+
drivers/hwmon/pmbus/pmbus.h | 2 +-
15+
drivers/hwmon/pmbus/pmbus_core.c | 4 +
16+
drivers/hwmon/pmbus/xdpe1a2g7b.c | 109 +++++++++++++++++++++++++++++++
17+
5 files changed, 124 insertions(+), 1 deletion(-)
1818
create mode 100644 drivers/hwmon/pmbus/xdpe1a2g7b.c
1919

2020
diff --git a/drivers/hwmon/pmbus/Kconfig b/drivers/hwmon/pmbus/Kconfig
@@ -78,11 +78,11 @@ index 4b73c7b27..43502f730 100644
7878
}
7979
diff --git a/drivers/hwmon/pmbus/xdpe1a2g7b.c b/drivers/hwmon/pmbus/xdpe1a2g7b.c
8080
new file mode 100644
81-
index 000000000..c7e230dc8
81+
index 000000000..fccca5a8a
8282
--- /dev/null
8383
+++ b/drivers/hwmon/pmbus/xdpe1a2g7b.c
84-
@@ -0,0 +1,97 @@
85-
+// SPDX-License-Identifier: GPL-2.0+
84+
@@ -0,0 +1,109 @@
85+
+// SPDX-License-Identifier: GPL-2.0
8686
+/*
8787
+ * Hardware monitoring driver for Infineon Multi-phase Digital VR Controllers
8888
+ *
@@ -97,30 +97,27 @@ index 000000000..c7e230dc8
9797
+#include "pmbus.h"
9898
+
9999
+#define XDPE1A2G7B_PAGE_NUM 2
100-
+#define XDPE122_NVIDIA_195MV 0x1E /* NVIDIA mode 1.95mV */
101-
+
102-
+static struct pmbus_driver_info xdpe1a2g7b_info = {
103-
+ .pages = XDPE1A2G7B_PAGE_NUM,
104-
+ .format[PSC_VOLTAGE_IN] = linear,
105-
+ .format[PSC_VOLTAGE_OUT] = vid,
106-
+ .format[PSC_TEMPERATURE] = linear,
107-
+ .format[PSC_CURRENT_IN] = linear,
108-
+ .format[PSC_CURRENT_OUT] = linear,
109-
+ .format[PSC_POWER] = linear,
110-
+ .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
111-
+ PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
112-
+ PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2 | PMBUS_HAVE_STATUS_TEMP |
113-
+ PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
114-
+ .func[1] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
115-
+ PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
116-
+ PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
117-
+};
100+
+#define XDPE1A2G7B_NVIDIA_195MV 0x1E /* NVIDIA mode 1.95mV, VID step is 5mV */
118101
+
119102
+static int xdpe1a2g7b_identify(struct i2c_client *client,
120103
+ struct pmbus_driver_info *info)
121104
+{
122105
+ u8 vout_params;
123-
+ int i, ret;
106+
+ int i, ret, vout_mode;
107+
+
108+
+ vout_mode = pmbus_read_byte_data(client, 0, PMBUS_VOUT_MODE);
109+
+ if (vout_mode >= 0 && vout_mode != 0xff) {
110+
+ switch (vout_mode >> 5) {
111+
+ case 0:
112+
+ info->format[PSC_VOLTAGE_OUT] = linear;
113+
+ return 0;
114+
+ case 1:
115+
+ info->format[PSC_VOLTAGE_OUT] = vid;
116+
+ break;
117+
+ default:
118+
+ return -ENODEV;
119+
+ }
120+
+ }
124121
+
125122
+ for (i = 0; i < info->pages; i++) {
126123
+ /* Read the register with VOUT for VID Code Type. */
@@ -129,9 +126,8 @@ index 000000000..c7e230dc8
129126
+ return ret;
130127
+
131128
+ vout_params = ret & GENMASK(4, 0);
132-
+
133129
+ switch (vout_params) {
134-
+ case XDPE122_NVIDIA_195MV:
130+
+ case XDPE1A2G7B_NVIDIA_195MV:
135131
+ info->vrm_version[i] = nvidia195mv;
136132
+ break;
137133
+ default:
@@ -142,6 +138,23 @@ index 000000000..c7e230dc8
142138
+ return 0;
143139
+}
144140
+
141+
+static struct pmbus_driver_info xdpe1a2g7b_info = {
142+
+ .pages = XDPE1A2G7B_PAGE_NUM,
143+
+ .identify = xdpe1a2g7b_identify,
144+
+ .format[PSC_VOLTAGE_IN] = linear,
145+
+ .format[PSC_TEMPERATURE] = linear,
146+
+ .format[PSC_CURRENT_IN] = linear,
147+
+ .format[PSC_CURRENT_OUT] = linear,
148+
+ .format[PSC_POWER] = linear,
149+
+ .func[0] = PMBUS_HAVE_VIN | PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT |
150+
+ PMBUS_HAVE_IIN | PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT |
151+
+ PMBUS_HAVE_TEMP | PMBUS_HAVE_TEMP2 | PMBUS_HAVE_STATUS_TEMP |
152+
+ PMBUS_HAVE_POUT | PMBUS_HAVE_PIN | PMBUS_HAVE_STATUS_INPUT,
153+
+ .func[1] = PMBUS_HAVE_VOUT | PMBUS_HAVE_STATUS_VOUT | PMBUS_HAVE_IIN |
154+
+ PMBUS_HAVE_IOUT | PMBUS_HAVE_STATUS_IOUT | PMBUS_HAVE_PIN |
155+
+ PMBUS_HAVE_POUT | PMBUS_HAVE_STATUS_INPUT,
156+
+};
157+
+
145158
+static int xdpe1a2g7b_probe(struct i2c_client *client)
146159
+{
147160
+ struct pmbus_driver_info *info;
@@ -151,8 +164,6 @@ index 000000000..c7e230dc8
151164
+ if (!info)
152165
+ return -ENOMEM;
153166
+
154-
+ info->identify = xdpe1a2g7b_identify;
155-
+
156167
+ return pmbus_do_probe(client, info);
157168
+}
158169
+
@@ -179,6 +190,7 @@ index 000000000..c7e230dc8
179190
+MODULE_DESCRIPTION("PMBus driver for Infineon XDPE1A2G7B");
180191
+MODULE_LICENSE("GPL");
181192
+MODULE_IMPORT_NS(PMBUS);
193+
+
182194
--
183195
2.34.1
184196

0 commit comments

Comments
 (0)