Re: [PATCH 0/6] Composite Gadget Support

"Ragner N Magalhães" <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
On 5/20/07, Alan Stern <[email protected]> wrote:
> On Sat, 19 May 2007, Ragner Magalhaes wrote:
>
> > The following series implements USB Composite Gadget Support.
> >
> > [PATCH 1/6] USB gadget driver.
> > [PATCH 2/6] Composite gadget driver.
> > [PATCH 3/6] Composite gadget driver upgrade.
> > [PATCH 4/6] Kconfig modifications for USB Composite gadget support.
> > [PATCH 5/6] Composite File Storage gadget support.
> > [PATCH 6/6] Composite Ether gadget support.
> >
> > The Composite Gadget can handle one or two configurations.
> > When the first usb_function modprobe'ed has two configurations
> > the Composite Gadget will have two configurations, for the
> > other functions modprobe'ed after will be used the selected or
> > standard configuration only, their interfaces will be part
> > of the Composite's Configurations.
> > Then exchanging configs in the Composite will only affect the
> > first function.
> > In case the first modprobe'ed function has only one configure,
> > the Composite Gadget WILL have only one configuration.
> > This behavior is useful when modprobe'ing g_ether as the first
> > usb_function due to the RNDIS and CDC Configurations.
>
> How does this patchset differ from your earlier versions?
>

You has sent for me comments about ep0 complete function, see below:

---

From: Alan Stern

This looks a lot cleaner than your earlier attempts. However in
several places you took out code without adding any sort of
replacement. For example, here:

-static void ep0_complete(struct usb_ep *ep, struct usb_request *req)
-{
-     struct fsg_dev          *fsg = ep->driver_data;
-
-     if (req->actual > 0)
-             dump_msg(fsg, fsg->ep0req_name, req->buf, req->actual);


-     if (req->status || req->actual != req->length)
-             DBG(fsg, "%s --> %d, %u/%u\n", __FUNCTION__,
-                             req->status, req->actual, req->length);


-     if (req->status == -ECONNRESET)         // Request was cancelled
-             usb_ep_fifo_flush(ep);
-
-     if (req->status == 0 && req->context)
-             ((fsg_routine_t) (req->context))(fsg);


-}

Your modified driver doesn't call dump_msg(), DBG(), or the function
pointer stored in req->context.
---

Now for specific function request, use own ep0 complete function, e.g.
when it is TYPE_CLASS request.
When it is general request, e.g. DT_DEVICE request, use the
composite's ep0 complete.

I implemented dump_msg() function in the composite layer too.


> Alan Stern
>
>

Best regards,

-- 
Ragner N Magalhães

Instituto Nokia de Tecnologia - INdT
Open Source Mobile Research Center - OSMRC
Linux Kernel Team

E-mail: [email protected]
            [email protected]

-------------------------------------------------------------------------
This SF.net email is sponsored by DB2 Express
Download DB2 Express C - the FREE version of DB2 express and take
control of your XML. No limits. Just data. Click to get it now.
http://sourceforge.net/powerbar/db2/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.