- Probe number of IT/IR DMA contexts as specified in OHCI spec.

This commit is contained in:
Hidetoshi Shimokawa 2003-01-29 15:32:35 +00:00
parent 501901c61d
commit 7054e8482e
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=110045

View file

@ -586,15 +586,15 @@ fwohci_init(struct fwohci_softc *sc, device_t dev)
device_printf(dev, "OHCI version %x.%x (ROM=%d)\n", device_printf(dev, "OHCI version %x.%x (ROM=%d)\n",
(reg>>16) & 0xff, reg & 0xff, (reg>>24) & 1); (reg>>16) & 0xff, reg & 0xff, (reg>>24) & 1);
/* XXX: Available Isochrounous DMA channel probe */ /* Available Isochrounous DMA channel probe */
for( i = 0 ; i < 0x20 ; i ++ ){ OWRITE(sc, OHCI_IT_MASK, 0xffffffff);
OWRITE(sc, OHCI_IRCTL(i), OHCI_CNTL_DMA_RUN); OWRITE(sc, OHCI_IR_MASK, 0xffffffff);
reg = OREAD(sc, OHCI_IRCTL(i)); reg = OREAD(sc, OHCI_IT_MASK) & OREAD(sc, OHCI_IR_MASK);
if(!(reg & OHCI_CNTL_DMA_RUN)) break; OWRITE(sc, OHCI_IT_MASKCLR, 0xffffffff);
OWRITE(sc, OHCI_ITCTL(i), OHCI_CNTL_DMA_RUN); OWRITE(sc, OHCI_IR_MASKCLR, 0xffffffff);
reg = OREAD(sc, OHCI_ITCTL(i)); for (i = 0; i < 0x20; i++)
if(!(reg & OHCI_CNTL_DMA_RUN)) break; if ((reg & (1 << i)) == 0)
} break;
sc->fc.nisodma = i; sc->fc.nisodma = i;
device_printf(dev, "No. of Isochronous channel is %d.\n", i); device_printf(dev, "No. of Isochronous channel is %d.\n", i);