Hi, I encountered a issue for USB mic. In fist time, my host controller (xHCI) sends single IN-tokens every 8-SOFs. This is expected action. But, after I open, close and open, my host controller sends plural IN-tokens between SOF and SOF. In Intel Lynx Point, I could not reproduce this issue. I'm sorry. Unfortunately, I can't explain details about my proprietary host controler. I found the following explanation in the xHCI 1.1 specification http://www.intel.com/content/dam/www/public/us/en/documents/technical-specifications/extensible-host-controler-interface-usb-xhci.pdf In 4.8.3 Endpoint Context State, 6. The Configure Endpoint Command (Add (A) = `1' and Drop (D) =`1') shall transition an endpoint, except the Default Control Endpoint, from the Stopped to the Running state.' So, I modify as the following, then I can run expectedly. What do you think about this change? Best regards, Kohji Okuno static usb_error_t xhci_configure_mask(struct usb_device *udev, uint32_t mask, uint8_t drop) { struct xhci_softc *sc = XHCI_BUS2SC(udev->bus); struct usb_page_search buf_inp; struct xhci_input_dev_ctx *pinp; uint32_t temp; uint8_t index; uint8_t x; index = udev->controller_slot_id; usbd_get_page(&sc->sc_hw.devs[index].input_pc, 0, &buf_inp); pinp = buf_inp.buffer; if (drop) { mask &= XHCI_INCTX_NON_CTRL_MASK; xhci_ctx_set_le32(sc, &pinp->ctx_input.dwInCtx0, mask); xhci_ctx_set_le32(sc, &pinp->ctx_input.dwInCtx1, 0); } else { - xhci_ctx_set_le32(sc, &pinp->ctx_input.dwInCtx0, 0); + xhci_ctx_set_le32(sc, &pinp->ctx_input.dwInCtx0, mask); xhci_ctx_set_le32(sc, &pinp->ctx_input.dwInCtx1, mask);Received on Mon Sep 22 2014 - 03:12:40 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:52 UTC