|
@@ -73,6 +73,13 @@ MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started."
|
|
|
/*
|
|
|
* Some TCO specific functions
|
|
|
*/
|
|
|
+
|
|
|
+static bool tco_has_sp5100_reg_layout(struct pci_dev *dev)
|
|
|
+{
|
|
|
+ return dev->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
|
|
|
+ dev->revision < 0x40;
|
|
|
+}
|
|
|
+
|
|
|
static void tco_timer_start(void)
|
|
|
{
|
|
|
u32 val;
|
|
@@ -129,7 +136,7 @@ static void tco_timer_enable(void)
|
|
|
{
|
|
|
int val;
|
|
|
|
|
|
- if (sp5100_tco_pci->revision >= 0x40) {
|
|
|
+ if (!tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
|
|
|
/* For SB800 or later */
|
|
|
/* Set the Watchdog timer resolution to 1 sec */
|
|
|
outb(SB800_PM_WATCHDOG_CONFIG, SB800_IO_PM_INDEX_REG);
|
|
@@ -342,8 +349,7 @@ static unsigned char sp5100_tco_setupdevice(void)
|
|
|
/*
|
|
|
* Determine type of southbridge chipset.
|
|
|
*/
|
|
|
- if (sp5100_tco_pci->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
|
|
|
- sp5100_tco_pci->revision < 0x40) {
|
|
|
+ if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
|
|
|
dev_name = SP5100_DEVNAME;
|
|
|
index_reg = SP5100_IO_PM_INDEX_REG;
|
|
|
data_reg = SP5100_IO_PM_DATA_REG;
|
|
@@ -388,8 +394,7 @@ static unsigned char sp5100_tco_setupdevice(void)
|
|
|
* Secondly, Find the watchdog timer MMIO address
|
|
|
* from SBResource_MMIO register.
|
|
|
*/
|
|
|
- if (sp5100_tco_pci->device == PCI_DEVICE_ID_ATI_SBX00_SMBUS &&
|
|
|
- sp5100_tco_pci->revision < 0x40) {
|
|
|
+ if (tco_has_sp5100_reg_layout(sp5100_tco_pci)) {
|
|
|
/* Read SBResource_MMIO from PCI config(PCI_Reg: 9Ch) */
|
|
|
pci_read_config_dword(sp5100_tco_pci,
|
|
|
SP5100_SB_RESOURCE_MMIO_BASE, &val);
|