Wrap the code to save/restore PCI config registers on suspend/resume in
#ifndef BURN_BRIDGES. Noticed by: phk
This commit is contained in:
parent
34e1843cde
commit
b2fdc052fb
@ -2420,19 +2420,23 @@ static int
|
|||||||
re_suspend(dev)
|
re_suspend(dev)
|
||||||
device_t dev;
|
device_t dev;
|
||||||
{
|
{
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
register int i;
|
register int i;
|
||||||
|
#endif
|
||||||
struct rl_softc *sc;
|
struct rl_softc *sc;
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
|
|
||||||
re_stop(sc);
|
re_stop(sc);
|
||||||
|
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
|
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
|
||||||
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
|
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
|
||||||
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
|
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
|
||||||
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
|
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
|
||||||
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
|
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
sc->suspended = 1;
|
sc->suspended = 1;
|
||||||
|
|
||||||
@ -2448,13 +2452,16 @@ static int
|
|||||||
re_resume(dev)
|
re_resume(dev)
|
||||||
device_t dev;
|
device_t dev;
|
||||||
{
|
{
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
register int i;
|
register int i;
|
||||||
|
#endif
|
||||||
struct rl_softc *sc;
|
struct rl_softc *sc;
|
||||||
struct ifnet *ifp;
|
struct ifnet *ifp;
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
ifp = &sc->arpcom.ac_if;
|
ifp = &sc->arpcom.ac_if;
|
||||||
|
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
/* better way to do this? */
|
/* better way to do this? */
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
|
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
|
||||||
@ -2466,6 +2473,7 @@ re_resume(dev)
|
|||||||
/* reenable busmastering */
|
/* reenable busmastering */
|
||||||
pci_enable_busmaster(dev);
|
pci_enable_busmaster(dev);
|
||||||
pci_enable_io(dev, RL_RES);
|
pci_enable_io(dev, RL_RES);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* reinitialize interface if necessary */
|
/* reinitialize interface if necessary */
|
||||||
if (ifp->if_flags & IFF_UP)
|
if (ifp->if_flags & IFF_UP)
|
||||||
|
@ -1916,19 +1916,23 @@ static int
|
|||||||
rl_suspend(dev)
|
rl_suspend(dev)
|
||||||
device_t dev;
|
device_t dev;
|
||||||
{
|
{
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
register int i;
|
register int i;
|
||||||
|
#endif
|
||||||
struct rl_softc *sc;
|
struct rl_softc *sc;
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
|
|
||||||
rl_stop(sc);
|
rl_stop(sc);
|
||||||
|
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
|
sc->saved_maps[i] = pci_read_config(dev, PCIR_MAPS + i * 4, 4);
|
||||||
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
|
sc->saved_biosaddr = pci_read_config(dev, PCIR_BIOS, 4);
|
||||||
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
|
sc->saved_intline = pci_read_config(dev, PCIR_INTLINE, 1);
|
||||||
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
|
sc->saved_cachelnsz = pci_read_config(dev, PCIR_CACHELNSZ, 1);
|
||||||
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
|
sc->saved_lattimer = pci_read_config(dev, PCIR_LATTIMER, 1);
|
||||||
|
#endif
|
||||||
|
|
||||||
sc->suspended = 1;
|
sc->suspended = 1;
|
||||||
|
|
||||||
@ -1944,13 +1948,16 @@ static int
|
|||||||
rl_resume(dev)
|
rl_resume(dev)
|
||||||
device_t dev;
|
device_t dev;
|
||||||
{
|
{
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
register int i;
|
register int i;
|
||||||
|
#endif
|
||||||
struct rl_softc *sc;
|
struct rl_softc *sc;
|
||||||
struct ifnet *ifp;
|
struct ifnet *ifp;
|
||||||
|
|
||||||
sc = device_get_softc(dev);
|
sc = device_get_softc(dev);
|
||||||
ifp = &sc->arpcom.ac_if;
|
ifp = &sc->arpcom.ac_if;
|
||||||
|
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
/* better way to do this? */
|
/* better way to do this? */
|
||||||
for (i = 0; i < 5; i++)
|
for (i = 0; i < 5; i++)
|
||||||
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
|
pci_write_config(dev, PCIR_MAPS + i * 4, sc->saved_maps[i], 4);
|
||||||
@ -1962,6 +1969,7 @@ rl_resume(dev)
|
|||||||
/* reenable busmastering */
|
/* reenable busmastering */
|
||||||
pci_enable_busmaster(dev);
|
pci_enable_busmaster(dev);
|
||||||
pci_enable_io(dev, RL_RES);
|
pci_enable_io(dev, RL_RES);
|
||||||
|
#endif
|
||||||
|
|
||||||
/* reinitialize interface if necessary */
|
/* reinitialize interface if necessary */
|
||||||
if (ifp->if_flags & IFF_UP)
|
if (ifp->if_flags & IFF_UP)
|
||||||
|
@ -683,11 +683,13 @@ struct rl_softc {
|
|||||||
int rxcycles;
|
int rxcycles;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef BURN_BRIDGES
|
||||||
u_int32_t saved_maps[5]; /* pci data */
|
u_int32_t saved_maps[5]; /* pci data */
|
||||||
u_int32_t saved_biosaddr;
|
u_int32_t saved_biosaddr;
|
||||||
u_int8_t saved_intline;
|
u_int8_t saved_intline;
|
||||||
u_int8_t saved_cachelnsz;
|
u_int8_t saved_cachelnsz;
|
||||||
u_int8_t saved_lattimer;
|
u_int8_t saved_lattimer;
|
||||||
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
#define RL_LOCK(_sc) mtx_lock(&(_sc)->rl_mtx)
|
#define RL_LOCK(_sc) mtx_lock(&(_sc)->rl_mtx)
|
||||||
|
Loading…
Reference in New Issue
Block a user