diff options
author | simokawa <simokawa@FreeBSD.org> | 2003-01-29 15:32:35 +0000 |
---|---|---|
committer | simokawa <simokawa@FreeBSD.org> | 2003-01-29 15:32:35 +0000 |
commit | 7a73a2b78e37acf45b1fc1c873c6de17890b3f21 (patch) | |
tree | 07ab66f03ac7f1aef6d1069d6523e1db73012070 | |
parent | 03d7b34fa46c206231debdc3e7b92f51a6dc1e04 (diff) | |
download | FreeBSD-src-7a73a2b78e37acf45b1fc1c873c6de17890b3f21.zip FreeBSD-src-7a73a2b78e37acf45b1fc1c873c6de17890b3f21.tar.gz |
- Probe number of IT/IR DMA contexts as specified in OHCI spec.
-rw-r--r-- | sys/dev/firewire/fwohci.c | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/sys/dev/firewire/fwohci.c b/sys/dev/firewire/fwohci.c index c651622..a05becf 100644 --- a/sys/dev/firewire/fwohci.c +++ b/sys/dev/firewire/fwohci.c @@ -586,15 +586,15 @@ fwohci_init(struct fwohci_softc *sc, device_t dev) device_printf(dev, "OHCI version %x.%x (ROM=%d)\n", (reg>>16) & 0xff, reg & 0xff, (reg>>24) & 1); -/* XXX: Available Isochrounous DMA channel probe */ - for( i = 0 ; i < 0x20 ; i ++ ){ - OWRITE(sc, OHCI_IRCTL(i), OHCI_CNTL_DMA_RUN); - reg = OREAD(sc, OHCI_IRCTL(i)); - if(!(reg & OHCI_CNTL_DMA_RUN)) break; - OWRITE(sc, OHCI_ITCTL(i), OHCI_CNTL_DMA_RUN); - reg = OREAD(sc, OHCI_ITCTL(i)); - if(!(reg & OHCI_CNTL_DMA_RUN)) break; - } +/* Available Isochrounous DMA channel probe */ + OWRITE(sc, OHCI_IT_MASK, 0xffffffff); + OWRITE(sc, OHCI_IR_MASK, 0xffffffff); + reg = OREAD(sc, OHCI_IT_MASK) & OREAD(sc, OHCI_IR_MASK); + OWRITE(sc, OHCI_IT_MASKCLR, 0xffffffff); + OWRITE(sc, OHCI_IR_MASKCLR, 0xffffffff); + for (i = 0; i < 0x20; i++) + if ((reg & (1 << i)) == 0) + break; sc->fc.nisodma = i; device_printf(dev, "No. of Isochronous channel is %d.\n", i); |