From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v2 06/13] drivers: usb: dwc3: add ti dwc3 peripheral driver with driver model support
Date: Thu, 22 Jun 2017 15:00:58 +0200 [thread overview]
Message-ID: <20170622150058.3eab9abc@jawa> (raw)
In-Reply-To: <1759c686-2425-e58b-afcc-4a0fcc74c5b2@ti.com>
On Thu, 22 Jun 2017 17:42:38 +0530
Vignesh R <vigneshr@ti.com> wrote:
>
>
> On Wednesday 21 June 2017 01:39 PM, Lukasz Majewski wrote:
> > Hi Vignesh,
> >
> >> Hi,
> >>
> >> On Tuesday 20 June 2017 07:14 PM, Lukasz Majewski wrote:
> >>> Hi Marek, Vignesh,
> >> [...]
> >>>>>
> >>>>> All gadget drivers like ether.c or f_mass_storage.c call
> >>>>> usb_gadget_handle_interrupts() just passing the index of the USB
> >>>>> instance. This does not help at all in dm case. What we would
> >>>>> need is usb_gadget_handle_interrupts() to provide at least the
> >>>>> usb_gadget instance as parameter from which we could derive
> >>>>> controller specific structure using container_of(). And then, we
> >>>>> could call the SoC specific isr callback.
> >>>>> This would require modifying all gadget driver like ether.c to
> >>>>> call a different function instead of
> >>>>> usb_gadget_handle_interrupts() when DM_USB is used.
> >>>>
> >>>> This is something to consult with Lukasz then.
> >>>
> >>> And it seems that we are heading to adding "gadget" infrastructure
> >>> to DM.....
> >>>
> >>
> >> Yes, U-Boot is moving to DM for good and this has cascading effect.
> >> I was actually trying to enable DM_ETH on some TI platforms which
> >> forced me to move USB_ETH to DM as well and therefore seems like
> >> USB gadget framework needs tweaks to adapt to DM...
> >
> > I've sketched following plan for gadget conversion:
> >
> > 1. Each u-boot command (dfu, ums, thor and in the future rockchip I
> > hope), which uses gadget goes through g_dnl_{register|unregister},
> > so the idea is to add this driver first to DM.
> >
> > 2. Afterwards, we could add functions as children of g_dnl.
> >
> > This would be easily modeled in Kconfig (to have g_dnl - gadget -
> > menu with submenu to chose the USB function - e.g. f_dfu*).
> >
>
> Wondering, if there is case where more than one functions may be used
> like f_dfu and f_mass_storage?
The "composite" layer was supposed to provide that.
> Like a single defconfig may want to
> have both f_dfu and f_mass_storage enabled?
When we developed the g_dnl/f_* code we wanted to have support for many
functions.
However, finally, we only implemented the single function since u-boot
is a single thread SW (and we had some problems with DFU/ODIN endpoints
assignment, IIRC).
Theoretically it should be possible to have many functions enabled.
>
> > However, we also need to take care of several UDC (USB device
> > controller) drivers including also the "composite" usb layer.
> >
> > This would be tougher to do since there are many udc drivers - but
> > it should be possible to separate DM's UDC drivers and
> > g_dnl/function code.
> >
> > Another problem is that some archs use gadgets (RNDIS?) without
> > g_dnl and composite - on top of UDC driver (like musb).....
> >
>
> Yes, rndis does not use g_dnl. Both MUSB and DWC3 gadget seem to use
> UDC w/o g_dnl/composite. I guess, we will have to either support RNDIS
> directly with UDC or convert MUSB/DWC3 gadget interface as well as
> convert ether.c to g_dnl function.
I would opt for latter option (f_rndis*).
>
> > For example:
> >
> > board/ti/beagle/beagle.c -> board_eth_init()
> > |
> > \|/
> > drivers/usb/gadget/ether.c -> usb_eth_initialize()
> > [ether.c seems to partially support DM]
> > |
> > \|/
> > (also in the ether.c)
> > _usb_eth_init() in which we loop on
> > usb_gadget_handle_interrupts()
> >
> >
> > From what I see, the ether.c now supports DM and legacy code, so
> > some work has been already done for DM....
> >
>
> Yeah, I think this was done as part of making MUSB DM conversion.
> RNDIS boot is one the boot mode for many TI platforms and is used
> quite often.
Ok.
> Legacy code is what is largely in use, am335x has been
> recently moved to use DM based RNDIS(although I feel its not complete
> and working yet). I guess once UDC is moved DM, we can see how
> ether.c can be integrated with it.
And other UDCs should be moved as well.... (like dwc[23]).
>
> Thanks for looking into this!
>
No problem.
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
next prev parent reply other threads:[~2017-06-22 13:00 UTC|newest]
Thread overview: 47+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-06-13 12:09 [U-Boot] [PATCH v2 00/13] driver model bring-up of dwc3 usb peripheral Vignesh R
2017-06-13 12:09 ` [U-Boot] [PATCH v2 01/13] drivers: usb: dwc3: remove devm_zalloc from linux_compact Vignesh R
2017-06-13 13:58 ` Marek Vasut
2017-06-14 9:05 ` Vignesh R
2017-06-15 16:55 ` Marek Vasut
2017-06-13 12:09 ` [U-Boot] [PATCH v2 02/13] drivers: usb: dwc3-omap: move usb_gadget_handle_interrupts from board files to drivers Vignesh R
2017-06-13 12:09 ` [U-Boot] [PATCH v2 03/13] am437x: board: do not register usb devices when CONFIG_DM_USB is defined Vignesh R
2017-06-13 12:10 ` [U-Boot] [PATCH v2 04/13] omap5/am57xx/dra7xx: " Vignesh R
2017-06-13 12:10 ` [U-Boot] [PATCH v2 05/13] drivers: usb: common: add support to get maximum speed from dt Vignesh R
2017-06-13 14:01 ` Marek Vasut
2017-06-14 9:16 ` Vignesh R
2017-06-15 17:07 ` Marek Vasut
2017-06-13 12:10 ` [U-Boot] [PATCH v2 06/13] drivers: usb: dwc3: add ti dwc3 peripheral driver with driver model support Vignesh R
2017-06-13 14:03 ` Marek Vasut
2017-06-14 12:25 ` Vignesh R
2017-06-15 16:57 ` Marek Vasut
2017-06-20 12:00 ` Vignesh R
2017-06-20 12:04 ` Marek Vasut
2017-06-20 13:44 ` Lukasz Majewski
2017-06-21 5:12 ` Vignesh R
2017-06-21 8:09 ` Lukasz Majewski
2017-06-22 12:12 ` Vignesh R
2017-06-22 13:00 ` Lukasz Majewski [this message]
2017-06-27 9:08 ` Vignesh R
2017-06-27 9:53 ` Lukasz Majewski
2018-01-08 17:57 ` Vignesh R
2017-06-13 12:10 ` [U-Boot] [PATCH v2 07/13] drivers: usb: dwc3: add ti dwc3 misc driver for wrapper Vignesh R
2017-06-13 14:05 ` Marek Vasut
2017-06-14 11:01 ` Vignesh R
2017-06-13 12:10 ` [U-Boot] [PATCH v2 08/13] usb: gadget: ether: Provide a way to read MAC address Vignesh R
2017-06-13 14:06 ` Marek Vasut
2017-06-14 12:24 ` Vignesh R
2017-06-15 16:58 ` Marek Vasut
2017-06-19 11:03 ` Vignesh R
2017-06-21 7:33 ` Lukasz Majewski
2017-07-06 4:48 ` Simon Glass
2017-06-13 12:10 ` [U-Boot] [PATCH v2 09/13] usb: gadget: ether: Populate DM_FLAG_PRE_RELOC flag Vignesh R
2017-06-17 3:42 ` Simon Glass
2017-06-13 12:10 ` [U-Boot] [PATCH v2 10/13] usb: gadget: add DWC3 USB gadget support Vignesh R
2017-06-17 3:42 ` Simon Glass
2017-06-13 12:10 ` [U-Boot] [PATCH v2 11/13] am43xx: Add USB device boot support Vignesh R
2017-06-17 3:42 ` Simon Glass
2017-06-13 12:10 ` [U-Boot] [PATCH v2 12/13] configs: am43xx: Enable configs to support USB device boot Vignesh R
2017-06-17 3:42 ` Simon Glass
2017-06-13 12:10 ` [U-Boot] [PATCH v2 13/13] ARM: am437x-gp-evm-u-boot.dtsi: Enable nodes for " Vignesh R
2017-06-13 13:03 ` Lokesh Vutla
2017-06-14 8:53 ` Vignesh R
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170622150058.3eab9abc@jawa \
--to=lukma@denx.de \
--cc=u-boot@lists.denx.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.