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);
502 * - that's as much as ehci can address in its QH, TD, iTD, and siTD
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);
1726 " ITD = %jd QH = %jd SITD = %jd FSTN = %jd",\
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),
4662 ehci_soft_itd_t *itd, *prev, *start, *stop;
4671 itd = NULL;
4694 for (i = 0, prev = NULL; i < frames; i++, prev = itd) {
4695 itd = ehci_alloc_itd(sc);
4696 if (itd == NULL) {
4703 prev->itd->itd_next =
4704 htole32(itd->physaddr | EHCI_LINK_ITD);
4706 prev->xfer_next = itd;
4708 start = itd;
4715 itd->itd->itd_bufr[0] = htole32(
4722 itd->itd->itd_bufr[1] |= htole32(
4727 itd->itd->itd_bufr[2] |=
4731 stop = itd;
4741 for (itd = start; itd; itd = next) {
4742 next = itd->xfer_next;
4743 ehci_free_itd_locked(sc, itd);
4769 ehci_soft_itd_t *itd, *prev;
4779 itd = NULL;
4833 itd = exfer->ex_itdstart;
4834 for (i = 0; i < frames; i++, itd = itd->xfer_next) {
4838 prev->itd->itd_next =
4839 htole32(itd->physaddr | EHCI_LINK_ITD);
4842 sizeof(prev->itd->itd_next), BUS_DMASYNC_POSTWRITE);
4843 prev->xfer_next = itd;
4863 itd->itd->itd_ctl[j] = htole32 ( EHCI_ITD_ACTIVE |
4872 itd->itd->itd_ctl[j] |= htole32(EHCI_ITD_IOC);
4895 itd->itd->itd_bufr[j] = htole32(EHCI_ITD_SET_BPTR(page));
4896 itd->itd->itd_bufr_hi[j] = htole32(page >> 32);
4903 itd->itd->itd_bufr[0] |= htole32(EHCI_ITD_SET_EP(UE_GET_ADDR(k)) |
4909 itd->itd->itd_bufr[1] |= htole32(EHCI_ITD_SET_DIR(k) |
4913 itd->itd->itd_bufr[2] |=
4916 usb_syncmem(&itd->dma, itd->offs, sizeof(ehci_itd_t),
4919 prev = itd;
4952 itd = exfer->ex_itdstart;
4954 KASSERTMSG(itd != NULL, "frame %d\n", j);
4961 itd->itd->itd_next = sc->sc_flist[frindex];
4962 if (itd->itd->itd_next == 0)
4967 itd->itd->itd_next = EHCI_NULL;
4969 usb_syncmem(&itd->dma,
4970 itd->offs + offsetof(ehci_itd_t, itd_next),
4971 sizeof(itd->itd->itd_next),
4974 sc->sc_flist[frindex] = htole32(EHCI_LINK_ITD | itd->physaddr);
4981 itd->frame_list.next = sc->sc_softitds[frindex];
4982 sc->sc_softitds[frindex] = itd;
4983 if (itd->frame_list.next != NULL)
4984 itd->frame_list.next->frame_list.prev = itd;
4985 itd->slot = frindex;
4986 itd->frame_list.prev = NULL;
4992 itd = itd->xfer_next;