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: Tue, 27 Jun 2017 11:53:33 +0200 [thread overview]
Message-ID: <20170627115333.75106e0f@jawa> (raw)
In-Reply-To: <ef522421-f0a9-780d-17a3-310d3f204ab2@ti.com>
On Tue, 27 Jun 2017 14:38:38 +0530
Vignesh R <vigneshr@ti.com> wrote:
>
>
> On Thursday 22 June 2017 06:30 PM, Lukasz Majewski wrote:
> > 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.
> >
>
> Ok.
>
> >>
> >>> 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*).
> >
>
> I agree...
>
> >>
> >>> 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]).
> >
>
> yes, all UDCs needs to moved..
> BTW, what platform would you be starting these migration on?
>
>
I do have two available:
- Beagle Bone Blach
- Odroid XU3
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-27 9:53 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
2017-06-27 9:08 ` Vignesh R
2017-06-27 9:53 ` Lukasz Majewski [this message]
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=20170627115333.75106e0f@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox