--- sys/dev/firewire/fwohci.c 13 Feb 2009 17:44:07 -0000 1.98 +++ sys/dev/firewire/fwohci.c 11 May 2009 19:46:24 -0000 @@ -1742,7 +1742,7 @@ } int -fwohci_stop(struct fwohci_softc *sc, device_t dev) +fwohci_stop(struct fwohci_softc *sc, device_t dev, int suspend) { u_int i; @@ -1759,9 +1759,10 @@ OWRITE(sc, OHCI_ITCTLCLR(i), OHCI_CNTL_DMA_RUN); } -#if 0 /* Let dcons(4) be accessed */ -/* Stop interrupt */ - OWRITE(sc, FWOHCI_INTMASKCLR, + /* Let dcons(4) be accessed if it is not suspending. */ + if (suspend) { + /* Stop interrupt */ + OWRITE(sc, FWOHCI_INTMASKCLR, OHCI_INT_EN | OHCI_INT_ERR | OHCI_INT_PHY_SID | OHCI_INT_PHY_INT | OHCI_INT_DMA_ATRQ | OHCI_INT_DMA_ATRS @@ -1769,9 +1770,9 @@ | OHCI_INT_DMA_ARRQ | OHCI_INT_DMA_ARRS | OHCI_INT_PHY_BUS_R); -/* FLUSH FIFO and reset Transmitter/Reciever */ - OWRITE(sc, OHCI_HCCCTL, OHCI_HCC_RESET); -#endif + /* FLUSH FIFO and reset Transmitter/Reciever */ + OWRITE(sc, OHCI_HCCCTL, OHCI_HCC_RESET); + } /* XXX Link down? Bus reset? */ return 0; --- sys/dev/firewire/fwohci_pci.c 9 Mar 2009 13:23:54 -0000 1.62 +++ sys/dev/firewire/fwohci_pci.c 11 May 2009 19:46:24 -0000 @@ -408,7 +408,7 @@ s = splfw(); if (sc->bsr) - fwohci_stop(sc, self); + fwohci_stop(sc, self, 0); bus_generic_detach(self); if (sc->fc.bdev) { @@ -462,7 +462,7 @@ err = bus_generic_suspend(dev); if (err) return err; - fwohci_stop(sc, dev); + fwohci_stop(sc, dev, 1); return 0; } @@ -482,7 +482,7 @@ fwohci_softc_t *sc = device_get_softc(dev); bus_generic_shutdown(dev); - fwohci_stop(sc, dev); + fwohci_stop(sc, dev, 0); return 0; } --- sys/dev/firewire/fwohcivar.h 3 Feb 2009 17:13:37 -0000 1.18 +++ sys/dev/firewire/fwohcivar.h 11 May 2009 19:46:24 -0000 @@ -83,4 +83,4 @@ void fwohci_reset (struct fwohci_softc *, device_t); int fwohci_detach (struct fwohci_softc *, device_t); int fwohci_resume (struct fwohci_softc *, device_t); -int fwohci_stop (struct fwohci_softc *, device_t dev); +int fwohci_stop (struct fwohci_softc *, device_t, int);