diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-06-27 00:27:33 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-06-27 00:27:33 +0000 |
commit | 4f840cc67f734fba8fbac977ba2957ae48743ac4 (patch) | |
tree | 13a2cc875ac6c9cca2cda99151d4bc90abb94b80 | |
parent | 916e1418d3b1820a237cd23e0ea709f141d64ae9 (diff) | |
download | FreeBSD-src-4f840cc67f734fba8fbac977ba2957ae48743ac4.zip FreeBSD-src-4f840cc67f734fba8fbac977ba2957ae48743ac4.tar.gz |
- Use fwohci_poll() instead of fwohci_intr() to process the first bus reest.
- Wait 2 cycles before starting the process for fast machines.
-rw-r--r-- | sys/dev/firewire/fwohci.c | 3 | ||||
-rw-r--r-- | sys/dev/firewire/fwohci_pci.c | 3 | ||||
-rw-r--r-- | sys/dev/firewire/fwohcivar.h | 1 |
3 files changed, 4 insertions, 3 deletions
diff --git a/sys/dev/firewire/fwohci.c b/sys/dev/firewire/fwohci.c index d7ca246..a597a34 100644 --- a/sys/dev/firewire/fwohci.c +++ b/sys/dev/firewire/fwohci.c @@ -144,7 +144,6 @@ static void fwohci_irx_post __P((struct firewire_comm *, u_int32_t *)); static int fwohci_itxbuf_enable __P((struct firewire_comm *, int)); static int fwohci_itx_disable __P((struct firewire_comm *, int)); static void fwohci_timeout __P((void *)); -static void fwohci_poll __P((struct firewire_comm *, int, int)); static void fwohci_set_intr __P((struct firewire_comm *, int)); static int fwohci_add_rx_buf __P((struct fwohci_dbch *, struct fwohcidb_tr *, int, struct fwdma_alloc *)); @@ -2010,7 +2009,7 @@ again: #endif } -static void +void fwohci_poll(struct firewire_comm *fc, int quick, int count) { int s; diff --git a/sys/dev/firewire/fwohci_pci.c b/sys/dev/firewire/fwohci_pci.c index 9898aba..6f45152 100644 --- a/sys/dev/firewire/fwohci_pci.c +++ b/sys/dev/firewire/fwohci_pci.c @@ -317,8 +317,9 @@ fwohci_pci_attach(device_t self) * Clear the bus reset event flag to start transactions even when * interrupt is disabled during the boot process. */ + DELAY(250); /* 2 cycles */ s = splfw(); - fwohci_intr((void *)sc); + fwohci_poll((void *)sc, 0, -1); splx(s); return 0; diff --git a/sys/dev/firewire/fwohcivar.h b/sys/dev/firewire/fwohcivar.h index b68e9e2..92b679b 100644 --- a/sys/dev/firewire/fwohcivar.h +++ b/sys/dev/firewire/fwohcivar.h @@ -84,6 +84,7 @@ typedef struct fwohci_softc { void fwohci_intr __P((void *arg)); int fwohci_init __P((struct fwohci_softc *, device_t)); +void fwohci_poll __P((struct firewire_comm *, int, int)); void fwohci_reset __P((struct fwohci_softc *, device_t)); int fwohci_detach __P((struct fwohci_softc *, device_t)); int fwohci_resume __P((struct fwohci_softc *, device_t)); |