summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorsimokawa <simokawa@FreeBSD.org>2003-06-27 00:27:33 +0000
committersimokawa <simokawa@FreeBSD.org>2003-06-27 00:27:33 +0000
commit4f840cc67f734fba8fbac977ba2957ae48743ac4 (patch)
tree13a2cc875ac6c9cca2cda99151d4bc90abb94b80
parent916e1418d3b1820a237cd23e0ea709f141d64ae9 (diff)
downloadFreeBSD-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.c3
-rw-r--r--sys/dev/firewire/fwohci_pci.c3
-rw-r--r--sys/dev/firewire/fwohcivar.h1
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));
OpenPOWER on IntegriCloud