1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 #include <console/console.h> 4 #include <device/device.h> 5 #include <device/pci.h> 6 #include <device/pci_ops.h> 7 #include <southbridge/intel/common/pmbase.h> 8 #include <southbridge/intel/common/tco.h> 9 #include <watchdog.h> 10 11 /* 12 * Disable ICH-NM10-PCH watchdog timer 13 */ watchdog_off(void)14void watchdog_off(void) 15 { 16 unsigned int value; 17 struct device *dev; 18 19 /* Get LPC device. */ 20 dev = pcidev_on_root(0x1f, 0); 21 22 value = pci_read_config16(dev, PCI_COMMAND); 23 24 /* Disable interrupt. */ 25 value |= PCI_COMMAND_INT_DISABLE; 26 pci_write_config16(dev, PCI_COMMAND, value); 27 28 /* Disable the watchdog timer. */ 29 value = read_pmbase16(PMBASE_TCO_OFFSET + TCO1_CNT); 30 value |= TCO1_TMR_HLT; 31 write_pmbase16(PMBASE_TCO_OFFSET + TCO1_CNT, value); 32 33 /* Clear TCO timeout status. */ 34 write_pmbase16(PMBASE_TCO_OFFSET + TCO1_STS, TCO1_STS_TIMEOUT); 35 write_pmbase16(PMBASE_TCO_OFFSET + TCO2_STS, TCO2_STS_SECOND_TO); 36 37 printk(BIOS_DEBUG, "ICH-NM10-PCH: watchdog disabled\n"); 38 } 39