diff options
author | José Rebelo | 2021-04-29 20:43:20 +0100 |
---|---|---|
committer | José Rebelo | 2021-04-29 20:44:06 +0100 |
commit | e2c87ba57359f5e003975a6feb29e0d0b0512e8c (patch) | |
tree | be97a590c0f515d818910d1ac9404d4f01df3b6a | |
parent | e9f3a7e231373b338786ecde1933b624ec41f4cb (diff) | |
download | aur-e2c87ba57359f5e003975a6feb29e0d0b0512e8c.tar.gz |
0.1.12-3: Rename package to zenpower-zen3-dkms, add Zen3 patch
-rw-r--r-- | .SRCINFO | 10 | ||||
-rw-r--r-- | .gitignore | 3 | ||||
-rw-r--r-- | PKGBUILD | 21 | ||||
-rw-r--r-- | ZEN3-test4.patch | 135 |
4 files changed, 159 insertions, 10 deletions
@@ -1,7 +1,7 @@ -pkgbase = zenpower-dkms - pkgdesc = Linux kernel driver for reading sensors for AMD Zen family CPUs +pkgbase = zenpower-zen3-dkms + pkgdesc = Linux kernel driver for reading sensors for AMD Zen family CPUs, patched with Zen3 support pkgver = 0.1.12 - pkgrel = 2 + pkgrel = 3 url = https://github.com/ocerman/zenpower install = zenpower.install arch = x86_64 @@ -12,8 +12,10 @@ pkgbase = zenpower-dkms conflicts = zenpower source = zenpower-0.1.12.tar.gz::https://github.com/ocerman/zenpower/archive/v0.1.12.tar.gz source = zenpower.conf + source = ZEN3-test4.patch sha256sums = fd25dffbc0f0139e167aa8adecc61ce200f0395c6778302e236b4043f125e77d sha256sums = 7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a + sha256sums = bc72955d1cf1d56c347d2444a13ea707f9402512ce211a013e5dee8ff3a8632d -pkgname = zenpower-dkms +pkgname = zenpower-zen3-dkms diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000000..7cec0847fcb3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +/pkg +/src +/*.tar* @@ -1,12 +1,16 @@ -# Maintainer: Yiyao Yu <yuydevel at protonmail dot com> +# Maintainer: José Rebelo <joserebelo at outlook dot com> +# Original zenpower Maintainer: Yiyao Yu <yuydevel at protonmail dot com> # Contributor: Benjamin Maisonnas <ben at wainei dot net> # Author: Ondrej Čerman +# ZEN3-test4.patch from https://crazy.dev.frugalware.org/ZEN3-test4.patch +# Found in https://github.com/ocerman/zenpower/issues/39#issuecomment-749533146 + _pkgname=zenpower -pkgname=zenpower-dkms +pkgname=zenpower-zen3-dkms pkgver=0.1.12 -pkgrel=2 -pkgdesc='Linux kernel driver for reading sensors for AMD Zen family CPUs' +pkgrel=3 +pkgdesc='Linux kernel driver for reading sensors for AMD Zen family CPUs, patched with Zen3 support' arch=('x86_64' 'i686') url='https://github.com/ocerman/zenpower' license=('GPL2') @@ -15,14 +19,19 @@ provides=('zenpower') conflicts=('zenpower') install=$_pkgname.install source=("$_pkgname-$pkgver.tar.gz::https://github.com/ocerman/$_pkgname/archive/v$pkgver.tar.gz" - "$_pkgname.conf") + "$_pkgname.conf" + "ZEN3-test4.patch") sha256sums=('fd25dffbc0f0139e167aa8adecc61ce200f0395c6778302e236b4043f125e77d' - '7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a') + '7bff3a5ea2c8b8abf56ce1d79b9724b1aea89e2564d244e09691070113d60f6a' + 'bc72955d1cf1d56c347d2444a13ea707f9402512ce211a013e5dee8ff3a8632d') prepare() { sed -e "s/@CFLGS@//" \ -e "s/@VERSION@/$pkgver/" \ -i "$srcdir/$_pkgname-$pkgver/dkms.conf" + + sed -i "s#zenpower.c#zenpower-$pkgver/zenpower.c#g" "${srcdir}/ZEN3-test4.patch" + patch -Np1 -i "${srcdir}/ZEN3-test4.patch" } package() { diff --git a/ZEN3-test4.patch b/ZEN3-test4.patch new file mode 100644 index 000000000000..f0de3abfa241 --- /dev/null +++ b/ZEN3-test4.patch @@ -0,0 +1,135 @@ +diff --git a/zenpower.c b/zenpower.c +index e32bb2d..574248a 100644 +--- a/zenpower.c ++++ b/zenpower.c +@@ -38,7 +38,11 @@ + MODULE_DESCRIPTION("AMD ZEN family CPU Sensors Driver"); + MODULE_AUTHOR("Ondrej Čerman"); + MODULE_LICENSE("GPL"); +-MODULE_VERSION("0.1.12"); ++MODULE_VERSION("0.1.12-ZEN3-test4"); ++ ++static bool zen1_calc; ++module_param(zen1_calc, bool, 0); ++MODULE_PARM_DESC(zen1_calc, "Set to 1 to use ZEN1 calculation"); + + + #ifndef PCI_DEVICE_ID_AMD_17H_DF_F3 +@@ -61,6 +65,13 @@ MODULE_VERSION("0.1.12"); + #define PCI_DEVICE_ID_AMD_17H_M70H_DF_F3 0x1443 + #endif + ++/* ZEN3 */ ++#ifndef PCI_DEVICE_ID_AMD_19H_DF_F3 ++#define PCI_DEVICE_ID_AMD_19H_DF_F3 0x1653 ++#endif ++ ++/* F17H_M01H_SVI, should be renamed to something generic I think... */ ++ + #define F17H_M01H_REPORTED_TEMP_CTRL 0x00059800 + #define F17H_M01H_SVI 0x0005A000 + #define F17H_M01H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0xC) +@@ -69,6 +80,13 @@ MODULE_VERSION("0.1.12"); + #define F17H_M30H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0x10) + #define F17H_M70H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x10) + #define F17H_M70H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0xC) ++/* ZEN3 SP3/TR */ ++#define F19H_M01H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x14) ++#define F19H_M01H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0x10) ++/* ZEN3 Ryzen desktop */ ++#define F19H_M21H_SVI_TEL_PLANE0 (F17H_M01H_SVI + 0x10) ++#define F19H_M21H_SVI_TEL_PLANE1 (F17H_M01H_SVI + 0xC) ++ + #define F17H_M70H_CCD_TEMP(x) (0x00059954 + ((x) * 4)) + + #define F17H_TEMP_ADJUST_MASK 0x80000 +@@ -595,7 +613,13 @@ static int zenpower_probe(struct pci_dev *pdev, const struct pci_device_id *id) + break; + + case 0x31: // Zen2 Threadripper/EPYC +- data->zen2 = true; ++ /* fixme: add helper for that */ ++ if (!zen1_calc) { ++ data->zen2 = true; ++ dev_info(dev, "Using ZEN2 calculation formula.\n"); ++ } else { ++ dev_info(dev, "Using ZEN1 calculation formula.\n"); ++ } + data->amps_visible = true; + data->svi_core_addr = F17H_M30H_SVI_TEL_PLANE0; + data->svi_soc_addr = F17H_M30H_SVI_TEL_PLANE1; +@@ -603,22 +627,60 @@ static int zenpower_probe(struct pci_dev *pdev, const struct pci_device_id *id) + break; + + case 0x60: // Zen2 APU +- data->zen2 = true; ++ if (!zen1_calc) { ++ data->zen2 = true; ++ dev_info(dev, "Using ZEN2 calculation formula.\n"); ++ } else { ++ dev_info(dev, "Using ZEN1 calculation formula.\n"); ++ } + break; + + case 0x71: // Zen2 Ryzen +- data->zen2 = true; ++ if (!zen1_calc) { ++ data->zen2 = true; ++ dev_info(dev, "Using ZEN2 calculation formula.\n"); ++ } else { ++ dev_info(dev, "Using ZEN1 calculation formula.\n"); ++ } + data->amps_visible = true; + data->svi_core_addr = F17H_M70H_SVI_TEL_PLANE0; + data->svi_soc_addr = F17H_M70H_SVI_TEL_PLANE1; + ccd_check = 8; + break; +- +- default: ++ } ++ } else if (boot_cpu_data.x86 == 0x19) { ++ switch (boot_cpu_data.x86_model) { ++ case 0x0 ... 0x1: /* Zen3 SP3/TR */ ++ if (!zen1_calc) { ++ /* The code need refactoring but calculation is the same ++ * Is this per Server/Desktop/APU?. EG: each one has his own set of formula(s)? ++ */ ++ data->zen2 = true; ++ dev_info(dev, "Using ZEN2 calculation formula.\n"); ++ } else { ++ dev_info(dev, "Using ZEN1 calculation formula.\n"); ++ } ++ data->amps_visible = true; ++ data->svi_core_addr = F19H_M01H_SVI_TEL_PLANE0; ++ data->svi_soc_addr = F19H_M01H_SVI_TEL_PLANE1; ++ ccd_check = 8; /* max 64C, 8C per CCD = max 8 CCDs */ ++ break; ++ case 0x21: /* Zen3 Ryzen */ ++ if (!zen1_calc) { ++ data->zen2 = true; ++ dev_info(dev, "using ZEN2 calculation formula.\n"); ++ } else { ++ dev_info(dev, "using ZEN1 calculation formula.\n"); ++ } ++ data->amps_visible = true; ++ data->svi_core_addr = F19H_M21H_SVI_TEL_PLANE0; ++ data->svi_soc_addr = F19H_M21H_SVI_TEL_PLANE1; ++ ccd_check = 2; /* max 16C, 8C per CCD = max 2 CCD's */ ++ break; ++ } ++ } else { + data->svi_core_addr = F17H_M01H_SVI_TEL_PLANE0; + data->svi_soc_addr = F17H_M01H_SVI_TEL_PLANE1; +- break; +- } + } + + for (i = 0; i < ccd_check; i++) { +@@ -652,6 +714,7 @@ static const struct pci_device_id zenpower_id_table[] = { + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M30H_DF_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M60H_DF_F3) }, + { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_17H_M70H_DF_F3) }, ++ { PCI_VDEVICE(AMD, PCI_DEVICE_ID_AMD_19H_DF_F3) }, + {} + }; + MODULE_DEVICE_TABLE(pci, zenpower_id_table); |