summaryrefslogtreecommitdiff
path: root/sys/dev
diff options
context:
space:
mode:
authortron <tron@NetBSD.org>2000-07-17 17:53:44 +0000
committertron <tron@NetBSD.org>2000-07-17 17:53:44 +0000
commitcfae3184d8e47fc63ca8cab4e8312b79fb6c3c08 (patch)
treebd4638a1c168e6f0a773bf5bfc6c64f908fa3c01 /sys/dev
parent5e275d7012cad52cd15b5c0f4f2f50a89d339d2b (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.c8
-rw-r--r--sys/dev/pci/if_tlp_pci.c8
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;
}
}