From mboxrd@z Thu Jan 1 00:00:00 1970 MIME-Version: 1.0 In-Reply-To: <20110222170448.9473A65D3E@server.hemiola.co.uk> References: <20110222170448.9473A65D3E@server.hemiola.co.uk> Date: Tue, 22 Feb 2011 18:17:08 +0100 Message-ID: From: Francisco J Ballesteros To: Fans of the OS Plan 9 from Bell Labs <9fans@9fans.net> Content-Type: text/plain; charset=UTF-8 Subject: Re: [9fans] usb ohci - one more question Topicbox-Message-UUID: b2f49f8e-ead6-11e9-9d60-3106f5b1d025 We don't follow the spec that close. I think linux calls this pipes, but I'm not sure now. In any case, IIRC, we could do I/O on those eps [but I'm kind of sleepy now and don't have the code at hand, so don't trust me too much on this; I can double check later if you want me to do that.] On the other hand, there are so many ep types and transfer types, that it looks easier to follow the same pattern for I/O on all eps, duplex or not (note that the std would call each simplex chan an "endpoint", but you can pair two of them and consider them an endpoint when they are duplex). On Tue, Feb 22, 2011 at 6:02 PM, wrote: > May I have one more question? > > When you create a new bulk or interrupt endpoint "epopen" is called. > The aux field of the Ep is set to point to an array of two Qio > structures. One for input and one for output. Both of those in turn > have a pointer to, and a one-to-one correspondence with, an endpoint > descriptor (Ed). "newed" is called for each Qio to link the Qio's > endpoint descriptor into the controller's chain. > > I can't figure out why there are two Qio structs. The usb spec says > that bulk/interrupt endpoints are unidirectional, so why wouldn't just > a single one do? > > Thanks, > > rod > >