For Ricoh 5c47x class controllers, restore the "misc control" PCI config

register on resume.
This commit is contained in:
jmcneill 2006-06-17 17:06:51 +00:00
parent 5045be0e4d
commit efd8b75c34
3 changed files with 21 additions and 6 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: pccbb.c,v 1.128 2006/04/05 22:16:42 dyoung Exp $ */
/* $NetBSD: pccbb.c,v 1.129 2006/06/17 17:06:51 jmcneill Exp $ */
/*
* Copyright (c) 1998, 1999 and 2000
@ -31,7 +31,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.128 2006/04/05 22:16:42 dyoung Exp $");
__KERNEL_RCSID(0, "$NetBSD: pccbb.c,v 1.129 2006/06/17 17:06:51 jmcneill Exp $");
/*
#define CBB_DEBUG
@ -3419,8 +3419,12 @@ pccbb_powerhook(why, arg)
pci_conf_capture(sc->sc_pc, sc->sc_tag, &sc->sc_pciconf);
/* ToDo: deactivate or suspend child devices */
if (sc->sc_chipset == CB_RX5C47X)
sc->sc_ricoh_misc_ctrl = pci_conf_read(sc->sc_pc,
sc->sc_tag,
RICOH_PCI_MISC_CTRL);
/* ToDo: deactivate or suspend child devices */
}
if (why == PWR_RESUME) {
@ -3450,8 +3454,13 @@ pccbb_powerhook(why, arg)
goto norestore;
}
}
pci_conf_restore(sc->sc_pc, sc->sc_tag, &sc->sc_pciconf);
norestore:
pci_conf_restore(sc->sc_pc, sc->sc_tag, &sc->sc_pciconf);
if (sc->sc_chipset == CB_RX5C47X) {
pci_conf_write(sc->sc_pc, sc->sc_tag,
RICOH_PCI_MISC_CTRL, sc->sc_ricoh_misc_ctrl);
}
if (pci_conf_read (sc->sc_pc, sc->sc_tag, PCI_SOCKBASE) == 0)
/* BIOS did not recover this register */

View File

@ -1,4 +1,4 @@
/* $NetBSD: pccbbreg.h,v 1.10 2006/04/25 04:22:15 dyoung Exp $ */
/* $NetBSD: pccbbreg.h,v 1.11 2006/06/17 17:06:52 jmcneill Exp $ */
/*
* Copyright (c) 1999 HAYAKAWA Koichi. All rights reserved.
*
@ -137,6 +137,11 @@
#define CB_BCRI_RL_3E0_ENA 0x08000000
#define CB_BCRI_RL_3E2_ENA 0x10000000
/* PCI configuration register definition for Ricoh 5C475 */
#define RICOH_PCI_MISC_CTRL 0x82
/*
* Special resister definition for Toshiba ToPIC95/97
* These values are borrowed from pcmcia-cs/Linux.

View File

@ -1,4 +1,4 @@
/* $NetBSD: pccbbvar.h,v 1.25 2005/12/11 12:22:50 christos Exp $ */
/* $NetBSD: pccbbvar.h,v 1.26 2006/06/17 17:06:52 jmcneill Exp $ */
/*
* Copyright (c) 1999 HAYAKAWA Koichi. All rights reserved.
*
@ -165,6 +165,7 @@ struct pccbb_softc {
int sc_pwrmgt_offs; /* Offset for power management capability */
struct pci_conf_state sc_pciconf;
pcireg_t sc_ricoh_misc_ctrl;
};
/*