Re: usb3.0 set configuration

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
Thanks for your explanation indeed!

2012/1/9 Felipe Balbi <balbi@xxxxxx>:
> Hi,
>
> On Mon, Jan 09, 2012 at 05:13:26PM +0800, Yu Xu wrote:
>> >> I'm now trying to write the usb3 controller driver. As you said, the
>> >> usb set config request has two stage, one is setup stage which is
>> >> handled in composite.c, and the other is status stage.
>> >
>> > The way it works is like this:
>> >
>> > UDC is required to receive the SETUP packet (from the SETUP Stage),
>> > handle what it can (which is USB_REQ_SET_ADDRES, USB_REQ_SET_FEATURE and
>> > USB_REQ_CLEAR_FEATURE) and bounce the rest to gadget driver/composite.c,
>> > by calling driver->setup().
>> >
>> > driver->setup() has to handle the Setup Packet and either queue a
>> > request or return an error, in which case, UDC will reply with a Stall.
>> >
>> > When everything goes fine and gadget driver queues a request, that
>> > request could be your Data phase (for any request which has a data
>> > phase) or the zero-length Status Stage.
>> >
>> > Clearly, when there's Data stage usb_ep_queue(), UDC driver will have to
>> > be responsible of finishing by sending Status Stage to host.
>> >
>> >> For usb2, the status stage is handled by usb_ep_queue to send ZLP. But
>> >> for usb3, it's different.
>> >
>> > Why is it different ? It follows the same code path ;-)
>>
>> OK. I see. I mean the difference is the status stage between usb3 and usb2.
>> usb2 is IN->data->ACK transaction. And usb3 is STATUS TP->ACK TP.
>> So I need to implement it in usb_ep_queue(), and code path of request handling
>> is the same, right?
>
> Ok hehe, now I get it. That part is handled by the HW. All you should
> need to do is start a transfer on the physical ep0in. The difference
> between a ACK and a ACK TP should be handled by the HW ;-)
>
> So yes, usb_ep_queue() will queue a request to USB ep0 and you need to
> start that transfer on the correct physical endpoint.
>
> --
> balbi
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux