diff options
| author | Bill Paul <wpaul@FreeBSD.org> | 2001-02-21 20:54:22 +0000 |
|---|---|---|
| committer | Bill Paul <wpaul@FreeBSD.org> | 2001-02-21 20:54:22 +0000 |
| commit | 07f65363cd5c852043cadc0652b34297967f5050 (patch) | |
| tree | 27ec3ea5fb5aa4699d3986dec67bc99a03898fcf /sys/dev/sk | |
| parent | 1478c71123a10f89aa2ca5b76836f51acdc67a70 (diff) | |
Notes
Diffstat (limited to 'sys/dev/sk')
| -rw-r--r-- | sys/dev/sk/if_sk.c | 41 |
1 files changed, 18 insertions, 23 deletions
diff --git a/sys/dev/sk/if_sk.c b/sys/dev/sk/if_sk.c index 960b98b203f9..4b5e7f611215 100644 --- a/sys/dev/sk/if_sk.c +++ b/sys/dev/sk/if_sk.c @@ -1192,37 +1192,32 @@ static int sk_attach(dev) /* * Handle power management nonsense. */ - command = pci_read_config(dev, SK_PCI_CAPID, 4) & 0x000000FF; - if (command == 0x01) { + if (pci_get_powerstate(dev) != PCI_POWERSTATE_D0) { + u_int32_t iobase, membase, irq; - command = pci_read_config(dev, SK_PCI_PWRMGMTCTRL, 4); - if (command & SK_PSTATE_MASK) { - u_int32_t iobase, membase, irq; + /* Save important PCI config data. */ + iobase = pci_read_config(dev, SK_PCI_LOIO, 4); + membase = pci_read_config(dev, SK_PCI_LOMEM, 4); + irq = pci_read_config(dev, SK_PCI_INTLINE, 4); - /* Save important PCI config data. */ - iobase = pci_read_config(dev, SK_PCI_LOIO, 4); - membase = pci_read_config(dev, SK_PCI_LOMEM, 4); - irq = pci_read_config(dev, SK_PCI_INTLINE, 4); + /* Reset the power state. */ + printf("skc%d: chip is in D%d power mode " + "-- setting to D0\n", unit, + pci_get_powerstate(dev)); + pci_set_powerstate(dev, PCI_POWERSTATE_D0); - /* Reset the power state. */ - printf("skc%d: chip is in D%d power mode " - "-- setting to D0\n", unit, command & SK_PSTATE_MASK); - command &= 0xFFFFFFFC; - pci_write_config(dev, SK_PCI_PWRMGMTCTRL, command, 4); - - /* Restore PCI config data. */ - pci_write_config(dev, SK_PCI_LOIO, iobase, 4); - pci_write_config(dev, SK_PCI_LOMEM, membase, 4); - pci_write_config(dev, SK_PCI_INTLINE, irq, 4); - } + /* Restore PCI config data. */ + pci_write_config(dev, SK_PCI_LOIO, iobase, 4); + pci_write_config(dev, SK_PCI_LOMEM, membase, 4); + pci_write_config(dev, SK_PCI_INTLINE, irq, 4); } /* * Map control/status registers. */ - command = pci_read_config(dev, PCIR_COMMAND, 4); - command |= (PCIM_CMD_PORTEN|PCIM_CMD_MEMEN|PCIM_CMD_BUSMASTEREN); - pci_write_config(dev, PCIR_COMMAND, command, 4); + pci_enable_busmaster(dev); + pci_enable_io(dev, PCIM_CMD_PORTEN); + pci_enable_io(dev, PCIM_CMD_MEMEN); command = pci_read_config(dev, PCIR_COMMAND, 4); #ifdef SK_USEIOSPACE |
