Lines Matching defs:itd

260 ehci_free_itd_locked(ehci_softc_t *sc, ehci_soft_itd_t *itd)
263 LIST_INSERT_HEAD(&sc->sc_freeitds, itd, free_list);
1032 ehci_soft_itd_t *itd;
1045 itd = ex->ex_itdend;
1048 * check no active transfers in last itd, meaning we're finished
1051 usb_syncmem(&itd->dma, itd->offs + offsetof(ehci_itd_t, itd_ctl),
1052 sizeof(itd->itd->itd_ctl),
1056 if (le32toh(itd->itd->itd_ctl[i]) & EHCI_ITD_ACTIVE)
1064 usb_syncmem(&itd->dma, itd->offs + offsetof(ehci_itd_t, itd_ctl),
1065 sizeof(itd->itd->itd_ctl), BUS_DMASYNC_PREREAD);
1067 DPRINTFN(10, "ex %#jx itd %#jx still active",
1154 struct ehci_soft_itd *itd;
1168 for (itd = ex->ex_itdstart; itd != NULL; itd = itd->xfer_next) {
1169 usb_syncmem(&itd->dma,
1170 itd->offs + offsetof(ehci_itd_t,itd_ctl),
1171 sizeof(itd->itd->itd_ctl),
1185 status = le32toh(itd->itd->itd_ctl[i]);
1193 usb_syncmem(&itd->dma,
1194 itd->offs + offsetof(ehci_itd_t,itd_ctl),
1195 sizeof(itd->itd->itd_ctl), BUS_DMASYNC_PREREAD);
1856 ehci_dump_itds(ehci_soft_itd_t *itd)
1862 for (i = 0; itd && i < 20 && !stop; itd = itd->xfer_next, i++) {
1863 ehci_dump_itd(itd);
1864 usb_syncmem(&itd->dma,
1865 itd->offs + offsetof(ehci_itd_t, itd_next),
1866 sizeof(itd->itd->itd_next),
1868 stop = itd->itd->itd_next & htole32(EHCI_LINK_TERMINATE);
1869 usb_syncmem(&itd->dma,
1870 itd->offs + offsetof(ehci_itd_t, itd_next),
1871 sizeof(itd->itd->itd_next), BUS_DMASYNC_PREREAD);
1878 ehci_dump_itd(struct ehci_soft_itd *itd)
1886 DPRINTF("ITD: next phys = %#jx", itd->itd->itd_next, 0, 0, 0);
1889 t = le32toh(itd->itd->itd_ctl[i]);
1899 EHCI_ITD_GET_BPTR(le32toh(itd->itd->itd_bufr[i])), 0, 0, 0);
1901 b = le32toh(itd->itd->itd_bufr[0]);
1902 b2 = le32toh(itd->itd->itd_bufr[1]);
1903 b3 = le32toh(itd->itd->itd_bufr[2]);
1911 ehci_dump_sitd(struct ehci_soft_itd *itd)
1916 (uintptr_t)itd, (uintptr_t)itd->frame_list.next,
1917 (uintptr_t)itd->frame_list.prev, 0);
1919 (uintptr_t)itd->xfer_next, itd->physaddr, itd->slot, 0);
2322 ehci_remove_itd_chain(ehci_softc_t *sc, struct ehci_soft_itd *itd)
2327 for (; itd != NULL; itd = itd->xfer_next) {
2328 struct ehci_soft_itd *prev = itd->frame_list.prev;
2330 /* Unlink itd from hardware chain, or frame array */
2332 sc->sc_softitds[itd->slot] = itd->frame_list.next;
2333 sc->sc_flist[itd->slot] = itd->itd->itd_next;
2335 sizeof(ehci_link_t) * itd->slot,
2339 if (itd->frame_list.next != NULL)
2340 itd->frame_list.next->frame_list.prev = NULL;
2343 prev->itd->itd_next = itd->itd->itd_next;
2344 usb_syncmem(&itd->dma,
2345 itd->offs + offsetof(ehci_itd_t, itd_next),
2346 sizeof(itd->itd->itd_next), BUS_DMASYNC_PREWRITE);
2348 prev->frame_list.next = itd->frame_list.next;
2349 if (itd->frame_list.next != NULL)
2350 itd->frame_list.next->frame_list.prev = prev;
2356 ehci_free_itd_chain(ehci_softc_t *sc, struct ehci_soft_itd *itd)
2362 for (; itd != NULL; itd = next) {
2363 next = itd->xfer_next;
2364 ehci_free_itd_locked(sc, itd);
3238 struct ehci_soft_itd *itd, *freeitd;
3264 kmem_alloc(sizeof(*itd) * EHCI_ITD_CHUNK, KM_SLEEP);
3273 itd = &itds[i];
3274 itd->itd = KERNADDR(&dma, offs);
3275 itd->physaddr = BUS_ADDR_LO32(baddr);
3276 itd->dma = dma;
3277 itd->offs = offs;
3279 LIST_INSERT_HEAD(&sc->sc_freeitds, itd, free_list);
3284 itd = freeitd;
3285 LIST_REMOVE(itd, free_list);
3288 memset(itd->itd, 0, sizeof(*itd->itd));
3289 itd->frame_list.next = NULL;
3290 itd->frame_list.prev = NULL;
3291 itd->xfer_next = NULL;
3292 itd->slot = 0;
3294 return itd;
3335 sitd->itd = KERNADDR(&dma, offs);
3512 struct ehci_soft_itd *itd;
3559 for (itd = exfer->ex_itdstart; itd != NULL;
3560 itd = itd->xfer_next) {
3561 usb_syncmem(&itd->dma,
3562 itd->offs + offsetof(ehci_itd_t, itd_ctl),
3563 sizeof(itd->itd->itd_ctl),
3567 trans_status = le32toh(itd->itd->itd_ctl[i]);
3569 itd->itd->itd_ctl[i] = htole32(trans_status);
3572 usb_syncmem(&itd->dma,
3573 itd->offs + offsetof(ehci_itd_t, itd_ctl),
3574 sizeof(itd->itd->itd_ctl),
4660 ehci_soft_itd_t *itd, *prev, *start, *stop;
4669 itd = NULL;
4692 for (i = 0, prev = NULL; i < frames; i++, prev = itd) {
4693 itd = ehci_alloc_itd(sc);
4694 if (itd == NULL) {
4701 prev->itd->itd_next =
4702 htole32(itd->physaddr | EHCI_LINK_ITD);
4704 prev->xfer_next = itd;
4706 start = itd;
4713 itd->itd->itd_bufr[0] = htole32(
4720 itd->itd->itd_bufr[1] |= htole32(
4725 itd->itd->itd_bufr[2] |=
4729 stop = itd;
4739 for (itd = start; itd; itd = next) {
4740 next = itd->xfer_next;
4741 ehci_free_itd_locked(sc, itd);
4766 ehci_soft_itd_t *itd, *prev;
4776 itd = NULL;
4829 itd = exfer->ex_itdstart;
4830 for (i = 0; i < frames; i++, itd = itd->xfer_next) {
4834 prev->itd->itd_next =
4835 htole32(itd->physaddr | EHCI_LINK_ITD);
4838 sizeof(prev->itd->itd_next), BUS_DMASYNC_POSTWRITE);
4839 prev->xfer_next = itd;
4859 itd->itd->itd_ctl[j] = htole32 ( EHCI_ITD_ACTIVE |
4868 itd->itd->itd_ctl[j] |= htole32(EHCI_ITD_IOC);
4891 itd->itd->itd_bufr[j] = htole32(EHCI_ITD_SET_BPTR(page));
4892 itd->itd->itd_bufr_hi[j] = htole32(page >> 32);
4899 itd->itd->itd_bufr[0] |= htole32(EHCI_ITD_SET_EP(UE_GET_ADDR(k)) |
4905 itd->itd->itd_bufr[1] |= htole32(EHCI_ITD_SET_DIR(k) |
4909 itd->itd->itd_bufr[2] |=
4912 usb_syncmem(&itd->dma, itd->offs, sizeof(ehci_itd_t),
4915 prev = itd;
4948 itd = exfer->ex_itdstart;
4950 KASSERTMSG(itd != NULL, "frame %d\n", j);
4957 itd->itd->itd_next = sc->sc_flist[frindex];
4958 if (itd->itd->itd_next == 0)
4963 itd->itd->itd_next = EHCI_NULL;
4965 usb_syncmem(&itd->dma,
4966 itd->offs + offsetof(ehci_itd_t, itd_next),
4967 sizeof(itd->itd->itd_next),
4970 sc->sc_flist[frindex] = htole32(EHCI_LINK_ITD | itd->physaddr);
4977 itd->frame_list.next = sc->sc_softitds[frindex];
4978 sc->sc_softitds[frindex] = itd;
4979 if (itd->frame_list.next != NULL)
4980 itd->frame_list.next->frame_list.prev = itd;
4981 itd->slot = frindex;
4982 itd->frame_list.prev = NULL;
4988 itd = itd->xfer_next;