Hi Simon,
On Sat, Jan 31, 2015 at 12:34 AM, Simon Glass <s...@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@lists.denx.de > http://lists.denx.de/mailman/listinfo/u-boot -- Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India _______________________________________________ U-Boot mailing list U-Boot@lists.denx.de http://lists.denx.de/mailman/listinfo/u-boot