Hi Community,

I finally fix the UAC1 on Windows 7 host issue. Thanks for your help. I will submit patches after more testing.


On 08/22/2014 10:43 AM, Xuebing Wang wrote:

On 08/21/2014 04:24 PM, Sebastian Andrzej Siewior wrote:
On 08/20/2014 02:13 AM, Peter Chen wrote:
Thanks, so Xunbing, the imx6 hardware (chipidea core) have 8 endpoints,
and support all four transfer type, it should be no problem to support
RNDIS.
But you shouldn't use RNDIS on Windows 7 or 8. As far as I recall they
do not bring the RNDIS driver which is deprecated and only "supported"
by Windows XP which is EOL by now.

Windows 7 and 8 support CDC [0] and this is what you should look for.

[0]
http://msdn.microsoft.com/en-us/library/windows/hardware/ff538820%28v=vs.85%29.aspx

Sebastian


Sebastian, Peter, Andrzej,

Thank you for your help.

1) Are you aware of any devices (based on Freescale i.MX or ChipIdea USB IP) with a gadget driver which uses .bAlternateSetting that support Windows 7/8?

2) The reason I am asking this is that USB 1.1 Spec (section 9.2.6.4 Standard Device Requests) says: For standard device requests that require no Data stage, a device *must* be able to complete the request and be able to successfully complete the Status stage of the request *within 50 ms* of receipt of the request. This limitation applies to requests to the device, interface, or endpoint.

I am debugging this Windows support for UAC1, thus I am referring to USB 1.1 spec.

3) For any gadget which uses .bAlternateSetting, Host will send USB_REQ_SET_INTERFACE Standard Device Request which requires no Data State. I am not sure if Windows drivers strictly adhere to USB spec, thus strictly require device to respond to USB_REQ_SET_INTERFACE within 50ms???

4) In gadget driver set_alt functions (to handle USB_REQ_SET_INTERFACE), ep_enable/ep_disable will be called, and timing of this differs from hardware platform to platform (and UDC drivers), does this explain why below function exists???

4.1) /**
 * gadget_supports_altsettings - return true if altsettings work
 * @gadget: the gadget in question
 */
static inline bool gadget_supports_altsettings(struct usb_gadget *gadget)
{
        /* PXA 21x/25x/26x has no altsettings at all */
        if (gadget_is_pxa(gadget))
                return false;

        /* PXA 27x and 3xx have *broken* altsetting support */
        if (gadget_is_pxa27x(gadget))
                return false;

        /* Everything else is *presumably* fine ... */
        return true;
}

4.2) /* Some controllers can't support CDC Ethernet (ECM) ... */
static inline bool can_support_ecm(struct usb_gadget *gadget)
{
        if (!gadget_supports_altsettings(gadget))
                return false;

        /* Everything else is *presumably* fine ... but this is a bit
         * chancy, so be **CERTAIN** there are no hardware issues with
         * your controller.  Add it above if it can't handle CDC.
         */
        return true;
}


Thanks again.


--
Thanks,
Xuebing Wang

--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to