[U-Boot] [RFC PATCH 0/7] RFC: dm: Add USB support

Vivek Gautam gautamvivek1987 at gmail.com
Wed Feb 25 15:07:17 CET 2015


Hi Simon,


On Sat, Jan 31, 2015 at 12:34 AM, Simon Glass <sjg at chromium.org> wrote:
> This series adds basic driver model support to USB. The intent is to permit
> the various subsystems (OHCI, EHCI, XHCI) to co-exist and allow any number
> of USB ports of different types. So far the absolute limit on the number
> of USB devices is only slightly relaxed.
>
> Only USB controllers have a real driver model device. USB devices (including
> the hub in the controller) are not modelled as driver model devices. This
> is for two reasons:
>
> - it is easier since we don't need to bind a whole lot of devices when
>     scanning
> - the two main USB devices (block devices and Ethernet) don't have driver
>     mode support yet anyway, so it would be pointless. However the recent
>     network RFC has encouraged me to send this.
>
> The basic approach is to set up the driver model structures in parallel to
> what already exists rather than to replace them. This allows both driver
> model and legacy to be used for USB, although not with the same board.
>
> So far only XHCI is supported. As an example the Exynos XHCI driver is
> converted to driver model.
>
> I would appreciate comments before going further.
>
> Caveats:
> - sandbox code is incomplete and there are no tests
> - 'usb stop' does not remove existing devices (I have not yet settled on
> the best approach)
> - the usb.h changes need to be split correctly into the patches once they
>   are final
>
> This series is available at u-boot-dm/usb-working.

Just ran a quick test on smdk5250. I used Below is what i get :

--------------------------------------------------------------------------------------
SMDK5250 # usb start
starting USB...
USBRegister 2000140 NbrPorts 2
Starting the controller
USB XHCI 1.00
0:   scanning bus 0 for devices... cannot reset port 1!?
1 USB Device(s) found
       scanning usb for storage devices... 0 Storage Device(s) found
       scanning usb for ethernet devices... 0 Ethernet Device(s) found
SMDK5250 # usb start
starting USB...
USB0:   scanning bus 0 for devices... BUG: failure at
drivers/usb/host/xhci-mem.c:666/xhci_setup_addressable_virt_dev()!
BUG!
resetting ...
--------------------------------------------------------------------------------------

The first time when "scanning bus 0 for devices... cannot reset port 1!?" comes.
This seems to be smdk issue only which i am looking into currently.

But the second time when i run usb start, the setup itself hits a NULL
pointer it seems.
However just tot of u-boot-dm doesn't give this issue. The device gets detected
when "usb reset" is used after doing a "usb start" first time.

Even with my patch series, i hit a NULL pointer BUG, when doing a "usb reset"

--------------------------------------------------------------------------------------
SMDK5250 # usb reset
resetting USB...
Host not halted after 16000 microseconds.
BUG: failure at drivers/usb/host/xhci-mem.c:83/xhci_ring_free()!
BUG!
resetting ...
--------------------------------------------------------------------------------------
However i could understand why this is coming, since usb_lowlevel_stop()
called in xhci.c; at that time xhci's data structures are not
initialized, and we
hit this BUG.

I will check further on snow.

>
>
> Simon Glass (7):
>   dm: usb: Add a uclass for USB controllers
>   dm: usb: Support driver model in exynos XHCI
>   dm: usb: Adjust users of the USB stack to work with driver model
>   dm: usb: WIP sandbox USB implementation
>   dm: core: Add a function to get the uclass data for a device
>   arm: Show relocated PC/LR in the register dump
>   dm: exynos: Enable driver model for snow XHCI
>
>  Makefile                             |   1 +
>  arch/arm/lib/interrupts.c            |  13 +-
>  arch/sandbox/dts/sandbox.dts         |  20 +++
>  arch/sandbox/include/asm/processor.h |   0
>  common/cmd_usb.c                     |  74 ++++++++---
>  common/usb.c                         |  28 +++--
>  common/usb_hub.c                     |  13 +-
>  common/usb_storage.c                 | 148 +++++++++++++---------
>  drivers/core/device.c                |  10 ++
>  drivers/usb/dev/Makefile             |  10 ++
>  drivers/usb/dev/sandbox-flash.c      |  95 +++++++++++++++
>  drivers/usb/dev/sandbox-hub.c        | 116 ++++++++++++++++++
>  drivers/usb/dev/usb-emul-uclass.c    |  16 +++
>  drivers/usb/eth/usb_ether.c          |  46 +++++--
>  drivers/usb/host/Makefile            |   5 +
>  drivers/usb/host/usb-sandbox.c       | 151 +++++++++++++++++++++++
>  drivers/usb/host/usb-uclass.c        | 227 ++++++++++++++++++++++++++++++++++
>  drivers/usb/host/xhci-exynos5.c      | 115 +++++++++++++++++-
>  drivers/usb/host/xhci.c              | 229 ++++++++++++++++++++++++++++-------
>  drivers/usb/host/xhci.h              |  24 ++++
>  include/configs/sandbox.h            |   3 +
>  include/configs/snow.h               |   1 +
>  include/dm/device.h                  |  10 ++
>  include/dm/uclass-id.h               |   2 +
>  include/usb.h                        |  76 +++++++++++-
>  include/usb_defs.h                   |  14 ++-
>  26 files changed, 1294 insertions(+), 153 deletions(-)
>  create mode 100644 arch/sandbox/include/asm/processor.h
>  create mode 100644 drivers/usb/dev/Makefile
>  create mode 100644 drivers/usb/dev/sandbox-flash.c
>  create mode 100644 drivers/usb/dev/sandbox-hub.c
>  create mode 100644 drivers/usb/dev/usb-emul-uclass.c
>  create mode 100644 drivers/usb/host/usb-sandbox.c
>  create mode 100644 drivers/usb/host/usb-uclass.c
>
> --
> 2.2.0.rc0.207.ga3a616c
>
> _______________________________________________
> U-Boot mailing list
> U-Boot at lists.denx.de
> http://lists.denx.de/mailman/listinfo/u-boot



-- 
Best Regards
Vivek Gautam
Samsung R&D Institute, Bangalore
India


More information about the U-Boot mailing list