From: Lukasz Majewski <lukma@denx.de>
To: u-boot@lists.denx.de
Subject: [U-Boot] [PATCH v4 00/10] Improvements for the dwc3_generic driver
Date: Fri, 4 Jan 2019 11:19:53 +0100 [thread overview]
Message-ID: <20190104111953.222e3c6e@jawa> (raw)
In-Reply-To: <ad93abcb-d694-eff2-61f5-8f8c963f7407@ti.com>
Hi Jean-Jacques,
> On 04/01/2019 08:05, Jon Nettleton wrote:
> > On Fri, Dec 7, 2018 at 8:46 AM Jean-Jacques Hiblot
> > <jjhiblot@ti.com> wrote:
> >>
> >> On 06/12/2018 21:56, Loic Devulder wrote:
> >>> Hi,
> >>>
> >>> I re-tested this series on Khadas VIM1 and it still fix the USB
> >>> issue I had with 'usb reset' (I already tested v2 patches).
> >>>
> >>> I just have a message and I'm not sure that I had it last time:
> >>> "Error disabling PHY supply
> >>> Can't shutdown USB PHY1 for dwc3 at c9000000"
> >>>
> >>> But USB stack looks ok, I can plug/unplug USB key and do the
> >>> reset, all works as expected.
> >>>
> >>> Since my last test lot of changes has been done in Amlogic SoCs,
> >>> maybe it's because of this?
> >>>
> >>> So if you want you can add my tested-by flag.
> >>> Tested-by: Loic Devulder <ldevulder@suse.de>
> >> Thank you for testing
> >>> On 11/29/18 10:52 AM, Jean-Jacques Hiblot wrote:
> >>>> This series aims at bringing improvements to the dwc3_generic
> >>>> driver so that it can be used by most of the platforms using the
> >>>> dwc3 controller.
> >>>>
> >>>> I tested this on with DRA7 and AM57x platforms for both
> >>>> Peripheral and Host operations. The code to enable DM USB host &
> >>>> dev support for those platforms will be submitted in a separate
> >>>> series.
> >>>>
> >>>> Michal Simek has tested this series:
> >>>> " I have tested it on zcu100 with usb stick, usb to ethernet
> >>>> converter and also dfu.
> >>>> Tested-by: Michal Simek <michal.simek@xilinx.com>"
> >>>>
> >>>> Enhancements:
> >>>> - use separate Kconfig option for DM USB Periphal and DM USB
> >>>> Host. This allow platforms to keep their non-DM USB peripheral
> >>>> code and use the DM USB host.
> >>>> - fixes the bind/probe confusion in dwc3_generic. The probe is
> >>>> done when the USB device is first needed.
> >>>> - handles PHYs when in the peripheral mode. The code to handle
> >>>> the PHYs is shared with the host side
> >>>> - handles clock and reset
> >>>> - bind host controller to the more generic driver 'xhci-dwc3'
> >>>>
> >>>>
> >>>> Changes in v4:
> >>>> - rebased on latest U-Boot
> >>>> - renamed DM_USB_DEV as DM_USB_GADGET
> >>>> - Add a new commit to create a new UCLASS for USB gadget drivers
> >>>>
> >>>> Changes in v3:
> >>>> - fixes bug dwc3_setup_phy(): the phy arrays wasn't returned.
> >>>> This was visible only when the device is removed.
> >>>> - Stub the DWC3 PHY operations if CONFIG_IS_ENABLED(PHY) is
> >>>> false. This fixes all build issues but one (evb-rk3328).
> >>>> - Fix build issue with evb-rk3328 by enabling CONFIG_USB_DWC3.
> >>>> This has little impact on the footprint and should not break the
> >>>> runtime as the xhci-rockchip driver has its own probe function.
> >>>> Nevertheless this was !!! NOT TESTED !!! by lack of hw
> >>>>
> >>>> Changes in v2:
> >>>> - Updated commit log
> >>>> - Fixed typo in thordown.c
> >>>> - select DM_USB_DEV by default for zynqmp platforms
> >>>>
> >>>> Jean-Jacques Hiblot (10):
> >>>> usb: gadget: Do not call board_usb_xxx() directly in USB
> >>>> gadget drivers
> >>>> usb: introduce a separate config option for DM USB device
> >>>> usb: udc: implement DM versions of
> >>>> usb_gadget_initialize()/_release()/_handle_interrupt()
> >>>> dwc3_generic: do not probe the USB device driver when it's
> >>>> bound dwc3: move phy operation to core.c
> >>>> dm: usb: create a new UCLASS ID for USB gadget devices
> >>>> configs: evb-rk3328: Enable CONFIG_USB_DWC3
> >>>> dwc3-generic: Handle the PHYs, the clocks and the reset lines
> >>>> dwc3-generic: Add select_dr_mode operation
> >>>> usb: dwc3: Fix a compilation error with the edison defconfig
> >>>>
> >>>> arch/arm/Kconfig | 2 +
> >>>> board/sunxi/board.c | 2 +-
> >>>> cmd/fastboot.c | 4 +-
> >>>> cmd/rockusb.c | 4 +-
> >>>> cmd/thordown.c | 4 +-
> >>>> cmd/usb_gadget_sdp.c | 4 +-
> >>>> cmd/usb_mass_storage.c | 4 +-
> >>>> common/dfu.c | 6 +-
> >>>> configs/evb-rk3328_defconfig | 1 +
> >>>> drivers/usb/Kconfig | 14 +++
> >>>> drivers/usb/dwc3/Kconfig | 7 +-
> >>>> drivers/usb/dwc3/core.c | 89 ++++++++++++++-
> >>>> drivers/usb/dwc3/dwc3-generic.c | 208
> >>>> ++++++++++++++++++++++++++++--------
> >>>> drivers/usb/dwc3/ep0.c | 2 +-
> >>>> drivers/usb/gadget/ether.c | 40 ++-----
> >>>> drivers/usb/gadget/udc/Makefile | 4 +
> >>>> drivers/usb/gadget/udc/udc-core.c | 3 +-
> >>>> drivers/usb/gadget/udc/udc-uclass.c | 58 ++++++++++
> >>>> drivers/usb/host/xhci-dwc3.c | 95 ++--------------
> >>>> drivers/usb/musb-new/omap2430.c | 2 +-
> >>>> drivers/usb/musb-new/sunxi.c | 2 +-
> >>>> include/dm/uclass-id.h | 1 +
> >>>> include/dwc3-uboot.h | 19 ++++
> >>>> include/linux/usb/gadget.h | 18 ++++ 24 files changed,
> >>>> 401 insertions(+), 192 deletions(-) create mode 100644
> >>>> drivers/usb/gadget/udc/udc-uclass.c
> >> _______________________________________________
> >> U-Boot mailing list
> >> U-Boot at lists.denx.de
> >> https://lists.denx.de/listinfo/u-boot
> > First off thanks for the work. I have imported it into my u-boot
> > tree for the iMX8M and now have both usb host and gadget mode
> > working simultaneously. There is one catch. Currently, the iMX8M
> > codebase does not support clock and power device initialization
> > from DM. I have patched the driver to punt back to the board to do
> > these initializations in the following patch. Yes I know not
> > ideal, but functional. I am wondering if we should support
> > architecture specific implementation quirks for boards that don't
> > fully support DM initialization yet.
>
> That is not fitting the DM model. I had the same issue and finally
> enabled the clocks in the board_late_init():
> board/ti/dra7xx/evm.c:662:int board_late_init(void)
>
> > I am open to writing something more complete if
> > we decide it is something worth pursuing, otherwise I will carry
> > this patch in my tree for time being.
> The true solution would be to implement the support for clk.
Many other people on the ML (including me) see the urgent need to
implement the DM_CLK for e.g. imx6/5/7/8, etc.
I think that it would be best to add it clock by clock. The stubs in
board code/files is a dead end, IMHO.
> >
> > -Jon
> >
> > diff --git a/drivers/usb/dwc3/dwc3-generic.c
> > b/drivers/usb/dwc3/dwc3-generic.c index 6d9be9b245..90d4ff2ea7
> > 100644 --- a/drivers/usb/dwc3/dwc3-generic.c
> > +++ b/drivers/usb/dwc3/dwc3-generic.c
> > @@ -119,6 +119,15 @@ struct dwc3_glue_ops {
> > enum usb_dr_mode mode);
> > };
> >
> > +__weak int board_usb_of_init(struct udevice *dev)
> > +{
> > + return 0;
> > +}
> > +
> > +__weak void board_usb_of_cleanup(struct udevice *dev)
> > +{
> > +}
> > +
> > static int dwc3_glue_bind(struct udevice *parent)
> > {
> > const void *fdt = gd->fdt_blob;
> > @@ -242,6 +251,8 @@ static int dwc3_glue_probe(struct udevice *dev)
> > index++;
> > }
> >
> > + ret = board_usb_of_init(dev);
> > +
> > return 0;
> > }
> >
> > @@ -249,6 +260,8 @@ static int dwc3_glue_remove(struct udevice *dev)
> > {
> > struct dwc3_glue_data *glue = dev_get_platdata(dev);
> >
> > + board_usb_of_cleanup(dev);
> > +
> > reset_release_bulk(&glue->resets);
> >
> > clk_release_bulk(&glue->clks);
> > @@ -257,6 +270,7 @@ static int dwc3_glue_remove(struct udevice *dev)
> > }
> >
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-59 Fax: (+49)-8142-66989-80 Email: lukma at denx.de
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 488 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20190104/f0ef8bb8/attachment.sig>
next prev parent reply other threads:[~2019-01-04 10:19 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-11-29 9:52 [U-Boot] [PATCH v4 00/10] Improvements for the dwc3_generic driver Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 01/10] usb: gadget: Do not call board_usb_xxx() directly in USB gadget drivers Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 02/10] usb: introduce a separate config option for DM USB device Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 03/10] usb: udc: implement DM versions of usb_gadget_initialize()/_release()/_handle_interrupt() Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 04/10] dwc3_generic: do not probe the USB device driver when it's bound Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 05/10] dwc3: move phy operation to core.c Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 06/10] dm: usb: create a new UCLASS ID for USB gadget devices Jean-Jacques Hiblot
2018-12-11 1:03 ` Simon Glass
2018-12-18 12:08 ` Jagan Teki
2018-12-18 13:22 ` Adam Ford
2018-12-19 10:31 ` Jean-Jacques Hiblot
2018-12-19 10:34 ` Jean-Jacques Hiblot
2018-12-19 13:02 ` Adam Ford
2018-11-29 9:52 ` [U-Boot] [PATCH v4 07/10] configs: evb-rk3328: Enable CONFIG_USB_DWC3 Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 08/10] dwc3-generic: Handle the PHYs, the clocks and the reset lines Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 09/10] dwc3-generic: Add select_dr_mode operation Jean-Jacques Hiblot
2018-11-29 9:52 ` [U-Boot] [PATCH v4 10/10] usb: dwc3: Fix a compilation error with the edison defconfig Jean-Jacques Hiblot
2018-12-06 20:56 ` [U-Boot] [PATCH v4 00/10] Improvements for the dwc3_generic driver Loic Devulder
2018-12-07 7:46 ` Jean-Jacques Hiblot
2019-01-04 7:05 ` Jon Nettleton
2019-01-04 8:53 ` Jean-Jacques Hiblot
2019-01-04 10:19 ` Lukasz Majewski [this message]
2019-01-04 10:24 ` Jean-Jacques Hiblot
2019-01-04 11:22 ` Jon Nettleton
2019-01-04 13:54 ` Jon Nettleton
2019-01-04 13:58 ` Jean-Jacques Hiblot
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=20190104111953.222e3c6e@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