diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-01-07 11:02:32 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-01-07 11:02:32 +0000 |
commit | 523cb58bc62eaa334e2b0b424637cbcb3b99deea (patch) | |
tree | ade0062d4cbf57ed828af1e6320fe11dadfc7641 /sys-kernel/linux-image-redcore-lts-legacy/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch | |
parent | 0cd68e3c9f55242994f5d1e67574aebf79575d18 (diff) |
sys-kernel : reSLOT the kernels, add v6.1
Diffstat (limited to 'sys-kernel/linux-image-redcore-lts-legacy/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch')
-rw-r--r-- | sys-kernel/linux-image-redcore-lts-legacy/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch | 188 |
1 files changed, 0 insertions, 188 deletions
diff --git a/sys-kernel/linux-image-redcore-lts-legacy/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch b/sys-kernel/linux-image-redcore-lts-legacy/files/5.10-0001-Revert-hwmon-k10temp-Remove-support-for-displaying-v.patch deleted file mode 100644 index a750b093..00000000 --- a/sys-kernel/linux-image-redcore-lts-legacy/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], ®val); -+ *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], ®val); -+ 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 - |