summaryrefslogtreecommitdiff
path: root/sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch
diff options
context:
space:
mode:
authorV3n3RiX <venerix@koprulu.sector>2022-04-21 02:13:00 +0100
committerV3n3RiX <venerix@koprulu.sector>2022-04-21 02:13:00 +0100
commitbffbad1c6c7cfd8e59b5609c1f298c530d6f3dc0 (patch)
treef68c98fde96c57e94b309b8b11294df16429b574 /sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch
parent076ddede5efb81dd30aee12b999a7cccc4776983 (diff)
sys-kernel/linux-{image,sources}-redcore-lts : version bump
Diffstat (limited to 'sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch')
-rw-r--r--sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch188
1 files changed, 0 insertions, 188 deletions
diff --git a/sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch b/sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch
deleted file mode 100644
index a750b093..00000000
--- a/sys-kernel/linux-sources-redcore-lts/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch
+++ /dev/null
@@ -1,188 +0,0 @@
-From cb04c523c759e3704c6d8f81ad6fec7c94e09f69 Mon Sep 17 00:00:00 2001
-From: Gabriel Craciunescu <nix.or.die@gmail.com>
-Date: Mon, 28 Dec 2020 16:23:11 +0100
-Subject: [PATCH] Revert "hwmon: (k10temp) Remove support for displaying
- voltage and current on Zen CPUs"
-
-This reverts commit 0a4e668b5d52eed8026f5d717196b02b55fb2dc6.
-
-While not perfect ( and in this case caused by wrong code ), is better
-than having nothing. Bugs could be fixed, and if not, such CPUs could be blacklisted
-from getting the voltage informations..
----
- drivers/hwmon/k10temp.c | 98 +++++++++++++++++++++++++++++++++++++++++
- 1 file changed, 98 insertions(+)
-
-diff --git a/drivers/hwmon/k10temp.c b/drivers/hwmon/k10temp.c
-index 3bc2551577a3..a250481b5a97 100644
---- a/drivers/hwmon/k10temp.c
-+++ b/drivers/hwmon/k10temp.c
-@@ -11,6 +11,13 @@
- * convert raw register values is from https://github.com/ocerman/zenpower.
- * The information is not confirmed from chip datasheets, but experiments
- * suggest that it provides reasonable temperature values.
-+ * - Register addresses to read chip voltage and current are also from
-+ * https://github.com/ocerman/zenpower, and not confirmed from chip
-+ * datasheets. Current calibration is board specific and not typically
-+ * shared by board vendors. For this reason, current values are
-+ * normalized to report 1A/LSB for core current and and 0.25A/LSB for SoC
-+ * current. Reported values can be adjusted using the sensors configuration
-+ * file.
- */
-
- #include <linux/bitops.h>
-@@ -102,7 +109,10 @@ struct k10temp_data {
- int temp_offset;
- u32 temp_adjust_mask;
- u32 show_temp;
-+ u32 svi_addr[2];
- bool is_zen;
-+ bool show_current;
-+ int cfactor[2];
- };
-
- #define TCTL_BIT 0
-@@ -127,6 +137,16 @@ static const struct tctl_offset tctl_offset_table[] = {
- { 0x17, "AMD Ryzen Threadripper 29", 27000 }, /* 29{20,50,70,90}[W]X */
- };
-
-+static bool is_threadripper(void)
-+{
-+ return strstr(boot_cpu_data.x86_model_id, "Threadripper");
-+}
-+
-+static bool is_epyc(void)
-+{
-+ return strstr(boot_cpu_data.x86_model_id, "EPYC");
-+}
-+
- static void read_htcreg_pci(struct pci_dev *pdev, u32 *regval)
- {
- pci_read_config_dword(pdev, REG_HARDWARE_THERMAL_CONTROL, regval);
-@@ -191,6 +211,16 @@ static const char *k10temp_temp_label[] = {
- "Tccd8",
- };
-
-+static const char *k10temp_in_label[] = {
-+ "Vcore",
-+ "Vsoc",
-+};
-+
-+static const char *k10temp_curr_label[] = {
-+ "Icore",
-+ "Isoc",
-+};
-+
- static int k10temp_read_labels(struct device *dev,
- enum hwmon_sensor_types type,
- u32 attr, int channel, const char **str)
-@@ -199,6 +229,50 @@ static int k10temp_read_labels(struct device *dev,
- case hwmon_temp:
- *str = k10temp_temp_label[channel];
- break;
-+ case hwmon_in:
-+ *str = k10temp_in_label[channel];
-+ break;
-+ case hwmon_curr:
-+ *str = k10temp_curr_label[channel];
-+ break;
-+ default:
-+ return -EOPNOTSUPP;
-+ }
-+ return 0;
-+}
-+
-+static int k10temp_read_curr(struct device *dev, u32 attr, int channel,
-+ long *val)
-+{
-+ struct k10temp_data *data = dev_get_drvdata(dev);
-+ u32 regval;
-+
-+ switch (attr) {
-+ case hwmon_curr_input:
-+ amd_smn_read(amd_pci_dev_to_node_id(data->pdev),
-+ data->svi_addr[channel], &regval);
-+ *val = DIV_ROUND_CLOSEST(data->cfactor[channel] *
-+ (regval & 0xff),
-+ 1000);
-+ break;
-+ default:
-+ return -EOPNOTSUPP;
-+ }
-+ return 0;
-+}
-+
-+static int k10temp_read_in(struct device *dev, u32 attr, int channel, long *val)
-+{
-+ struct k10temp_data *data = dev_get_drvdata(dev);
-+ u32 regval;
-+
-+ switch (attr) {
-+ case hwmon_in_input:
-+ amd_smn_read(amd_pci_dev_to_node_id(data->pdev),
-+ data->svi_addr[channel], &regval);
-+ regval = (regval >> 16) & 0xff;
-+ *val = DIV_ROUND_CLOSEST(155000 - regval * 625, 100);
-+ break;
- default:
- return -EOPNOTSUPP;
- }
-@@ -257,6 +331,10 @@ static int k10temp_read(struct device *dev, enum hwmon_sensor_types type,
- switch (type) {
- case hwmon_temp:
- return k10temp_read_temp(dev, attr, channel, val);
-+ case hwmon_in:
-+ return k10temp_read_in(dev, attr, channel, val);
-+ case hwmon_curr:
-+ return k10temp_read_curr(dev, attr, channel, val);
- default:
- return -EOPNOTSUPP;
- }
-@@ -305,6 +383,11 @@ static umode_t k10temp_is_visible(const void *_data,
- return 0;
- }
- break;
-+ case hwmon_in:
-+ case hwmon_curr:
-+ if (!data->show_current)
-+ return 0;
-+ break;
- default:
- return 0;
- }
-@@ -434,10 +517,20 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
- case 0x8: /* Zen+ */
- case 0x11: /* Zen APU */
- case 0x18: /* Zen+ APU */
-+ data->show_current = !is_threadripper() && !is_epyc();
-+ data->svi_addr[0] = F17H_M01H_SVI_TEL_PLANE0;
-+ data->svi_addr[1] = F17H_M01H_SVI_TEL_PLANE1;
-+ data->cfactor[0] = F17H_M01H_CFACTOR_ICORE;
-+ data->cfactor[1] = F17H_M01H_CFACTOR_ISOC;
- k10temp_get_ccd_support(pdev, data, 4);
- break;
- case 0x31: /* Zen2 Threadripper */
- case 0x71: /* Zen2 */
-+ data->show_current = !is_threadripper() && !is_epyc();
-+ data->cfactor[0] = F17H_M31H_CFACTOR_ICORE;
-+ data->cfactor[1] = F17H_M31H_CFACTOR_ISOC;
-+ data->svi_addr[0] = F17H_M31H_SVI_TEL_PLANE0;
-+ data->svi_addr[1] = F17H_M31H_SVI_TEL_PLANE1;
- k10temp_get_ccd_support(pdev, data, 8);
- break;
- }
-@@ -449,6 +542,11 @@ static int k10temp_probe(struct pci_dev *pdev, const struct pci_device_id *id)
-
- switch (boot_cpu_data.x86_model) {
- case 0x0 ... 0x1: /* Zen3 */
-+ data->show_current = true;
-+ data->svi_addr[0] = F19H_M01_SVI_TEL_PLANE0;
-+ data->svi_addr[1] = F19H_M01_SVI_TEL_PLANE1;
-+ data->cfactor[0] = F19H_M01H_CFACTOR_ICORE;
-+ data->cfactor[1] = F19H_M01H_CFACTOR_ISOC;
- k10temp_get_ccd_support(pdev, data, 8);
- break;
- }
---
-2.29.2
-