diff options
| author | tron <tron@NetBSD.org> | 2000-07-17 17:53:44 +0000 |
|---|---|---|
| committer | tron <tron@NetBSD.org> | 2000-07-17 17:53:44 +0000 |
| commit | cfae3184d8e47fc63ca8cab4e8312b79fb6c3c08 (patch) | |
| tree | bd4638a1c168e6f0a773bf5bfc6c64f908fa3c01 /sys/dev | |
| parent | 5e275d7012cad52cd15b5c0f4f2f50a89d339d2b (diff) | |
Don't clobber bits from 2 to 31 when trying to change the power state.
Problem noted by John Hawkinson.
Diffstat (limited to 'sys/dev')
| -rw-r--r-- | sys/dev/pci/if_epic_pci.c | 8 | ||||
| -rw-r--r-- | sys/dev/pci/if_tlp_pci.c | 8 |
2 files changed, 10 insertions, 6 deletions
diff --git a/sys/dev/pci/if_epic_pci.c b/sys/dev/pci/if_epic_pci.c index b5a5d45b7be..1a210d67599 100644 --- a/sys/dev/pci/if_epic_pci.c +++ b/sys/dev/pci/if_epic_pci.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_epic_pci.c,v 1.12 2000/07/16 20:18:48 tron Exp $ */ +/* $NetBSD: if_epic_pci.c,v 1.13 2000/07/17 17:53:44 tron Exp $ */ /*- * Copyright (c) 1998, 1999 The NetBSD Foundation, Inc. @@ -172,7 +172,8 @@ epic_pci_attach(parent, self, aux) case PCI_PMCSR_STATE_D2: printf(": waking up from power state D%d\n%s", reg & PCI_PMCSR_STATE_MASK, sc->sc_dev.dv_xname); - pci_conf_write(pc, pa->pa_tag, pmreg + 4, 0); + pci_conf_write(pc, pa->pa_tag, pmreg + 4, + reg & ~PCI_PMCSR_STATE_MASK); break; case PCI_PMCSR_STATE_D3: /* @@ -181,7 +182,8 @@ epic_pci_attach(parent, self, aux) */ printf(": unable to wake up from power state D3, " "reboot required.\n"); - pci_conf_write(pc, pa->pa_tag, pmreg + 4, 0); + pci_conf_write(pc, pa->pa_tag, pmreg + 4, + reg & ~PCI_PMCSR_STATE_MASK); return; } } diff --git a/sys/dev/pci/if_tlp_pci.c b/sys/dev/pci/if_tlp_pci.c index 96651f74da9..1257645d4fd 100644 --- a/sys/dev/pci/if_tlp_pci.c +++ b/sys/dev/pci/if_tlp_pci.c @@ -1,4 +1,4 @@ -/* $NetBSD: if_tlp_pci.c,v 1.43 2000/07/16 20:18:48 tron Exp $ */ +/* $NetBSD: if_tlp_pci.c,v 1.44 2000/07/17 17:53:44 tron Exp $ */ /*- * Copyright (c) 1998, 1999, 2000 The NetBSD Foundation, Inc. @@ -488,7 +488,8 @@ tlp_pci_attach(parent, self, aux) case PCI_PMCSR_STATE_D2: printf(": waking up from power state D%d\n%s", reg & PCI_PMCSR_STATE_MASK, sc->sc_dev.dv_xname); - pci_conf_write(pc, pa->pa_tag, pmreg + 4, 0); + pci_conf_write(pc, pa->pa_tag, pmreg + 4, + reg & ~PCI_PMCSR_STATE_MASK); break; case PCI_PMCSR_STATE_D3: /* @@ -497,7 +498,8 @@ tlp_pci_attach(parent, self, aux) */ printf(": unable to wake up from power state D3, " "reboot required.\n"); - pci_conf_write(pc, pa->pa_tag, pmreg + 4, 0); + pci_conf_write(pc, pa->pa_tag, pmreg + 4, + reg & ~PCI_PMCSR_STATE_MASK); return; } } |
