• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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)14 void 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