Skip to content

Commit 8262703

Browse files
ktbowman-amdWim Van Sebroeck
authored andcommitted
Watchdog: sp5100_tco: Enable Family 17h+ CPUs
The driver currently uses a CPU family match of 17h to determine EFCH_PM_DECODEEN_WDT_TMREN register support. This family check will not support future AMD CPUs and instead will require driver updates to add support. Remove the family 17h family check and add a check for SMBus PCI revision ID 0x51 or greater. The MMIO access method has been available since at least SMBus controllers using PCI revision 0x51. This revision check will support family 17h and future AMD processors including EFCH functionality without requiring driver changes. Co-developed-by: Robert Richter <rrichter@amd.com> Signed-off-by: Robert Richter <rrichter@amd.com> Signed-off-by: Terry Bowman <terry.bowman@amd.com> Tested-by: Jean Delvare <jdelvare@suse.de> Reviewed-by: Jean Delvare <jdelvare@suse.de> Reviewed-by: Guenter Roeck <linux@roeck-us.net> Link: https://lore.kernel.org/r/20220202153525.1693378-5-terry.bowman@amd.com Signed-off-by: Guenter Roeck <linux@roeck-us.net> Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org>
1 parent 0578fff commit 8262703

File tree

2 files changed

+5
-12
lines changed

2 files changed

+5
-12
lines changed

drivers/watchdog/sp5100_tco.c

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,10 @@ static enum tco_reg_layout tco_reg_layout(struct pci_dev *dev)
8686
dev->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
8787
dev->revision < 0x40) {
8888
return sp5100;
89+
} else if (dev->vendor == PCI_VENDOR_ID_AMD &&
90+
sp5100_tco_pci->device == PCI_DEVICE_ID_AMD_KERNCZ_SMBUS &&
91+
sp5100_tco_pci->revision >= AMD_ZEN_SMBUS_PCI_REV) {
92+
return efch_mmio;
8993
} else if (dev->vendor == PCI_VENDOR_ID_AMD &&
9094
((dev->device == PCI_DEVICE_ID_AMD_HUDSON2_SMBUS &&
9195
dev->revision >= 0x41) ||
@@ -459,18 +463,6 @@ static int sp5100_tco_setupdevice(struct device *dev,
459463
break;
460464
case efch:
461465
dev_name = SB800_DEVNAME;
462-
/*
463-
* On Family 17h devices, the EFCH_PM_DECODEEN_WDT_TMREN bit of
464-
* EFCH_PM_DECODEEN not only enables the EFCH_PM_WDT_ADDR memory
465-
* region, it also enables the watchdog itself.
466-
*/
467-
if (boot_cpu_data.x86 == 0x17) {
468-
val = sp5100_tco_read_pm_reg8(EFCH_PM_DECODEEN);
469-
if (!(val & EFCH_PM_DECODEEN_WDT_TMREN)) {
470-
sp5100_tco_update_pm_reg8(EFCH_PM_DECODEEN, 0xff,
471-
EFCH_PM_DECODEEN_WDT_TMREN);
472-
}
473-
}
474466
val = sp5100_tco_read_pm_reg8(EFCH_PM_DECODEEN);
475467
if (val & EFCH_PM_DECODEEN_WDT_TMREN)
476468
mmio_addr = EFCH_PM_WDT_ADDR;

drivers/watchdog/sp5100_tco.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,4 @@
8989
#define EFCH_PM_ACPI_MMIO_PM_ADDR (EFCH_PM_ACPI_MMIO_ADDR + \
9090
EFCH_PM_ACPI_MMIO_PM_OFFSET)
9191
#define EFCH_PM_ACPI_MMIO_PM_SIZE 8
92+
#define AMD_ZEN_SMBUS_PCI_REV 0x51

0 commit comments

Comments
 (0)