1. 21 Jul, 2015 1 commit
  2. 04 May, 2015 2 commits
  3. 18 Apr, 2015 1 commit
  4. 14 Apr, 2015 1 commit
  5. 29 Mar, 2015 1 commit
    • Hans de Goede's avatar
      sunxi: musb: Fix some lo speed devices not working with musb host · 246e3b87
      Hans de Goede authored
      
      
      The usb0 / otg phy on sunxi boards has a bug where it wrongly detects a
      high speed squelch on usb reset deassert when a lo speed device is plugged in.
      
      The android kernel has a work around for this in the form of temporary
      disabling the phy's squelch detection on reset deassert, this commit adds
      the same workaround to the u-boot sunxi musb code, thereby fixing various usb
      lo speed devices not working.
      
      Tested with a (before non working) usb keyboard and a usb 2.4 GHz wireless
      keyboard/mouse combo receiver.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      Acked-by: default avatarIan Campbell <ijc@hellion.org.uk>
      246e3b87
  6. 18 Jan, 2015 6 commits
    • Hans de Goede's avatar
      musb-new: Add interrupt queue support · 904f2a83
      Hans de Goede authored
      
      
      Add interrupt queue support, so that a usb keyboard can be used without
      causing huge latencies.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      904f2a83
    • Hans de Goede's avatar
      musb-new: Add urb and hep parameters to construct_urb · accf04c2
      Hans de Goede authored
      
      
      Make construct_urb take an urb and hep parameter, rather then having it always
      operate on the file global urb and hep structs. This is a preperation patch
      for adding interrupt queue support.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      accf04c2
    • Hans de Goede's avatar
      musb-new: Properly remove a transfer from the schedule on timeout · b918a0c6
      Hans de Goede authored
      
      
      If a transfer / urb times-out, properly remove it from the schedule, rather
      then letting it sit on the ep head. This stops the musb code from getting
      confused and refusing to queue further transfers after a timeout.
      
      Tested by unplugging a usb-keyboard, replugging it and doing a usb-reset,
      before this commit the keyboard would not work after the usb-reset.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      b918a0c6
    • Hans de Goede's avatar
      musb-new: Fix reset sequence when in host mode · 90cdc103
      Hans de Goede authored
      
      
      This commit fixes a number of issues with the reset sequence of musb-new
      in host mode:
      
      1) Our usb device probe relies on a second device reset being done after the
      first descriptors read. Factor the musb reset code into a usb_reset_root_port
      function (and add this as an empty define for other controllers), and call
      this when a device has no parent.
      
      2) Just like with normal usb controllers there needs to be a delay after
      reset, for normal usb controllers, this is handled in hub_port_reset, add a
      delay to usb_reset_root_port.
      
      3) Sync the musb reset sequence with the upstream kernel, clear all bits of
      power except bits 4-7, and increase the time reset is asserted to 50 ms.
      
      With these fixes an usb keyboard I have now always enumerates properly, where
      as earlier it would only enumerare properly once every 5 tries.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      90cdc103
    • Hans de Goede's avatar
      musb-new: Fix interrupt transfers not working · e8672e3f
      Hans de Goede authored
      
      
      For bulk and ctrl transfers common/usb.c sets udev->status = USB_ST_NOT_PROC,
      but it does not do so for interrupt transfers.
      
      musb_uboot.c: submit_urb() however was waiting for USB_ST_NOT_PROC to become 0,
      and thus without anyone setting USB_ST_NOT_PROC would exit immediately for
      interrupt urbs, returning the urb status of EINPROGRESS as error.
      
      This commit fixes this, thereby also making usb_kbd.c work together with
      musb_new and CONFIG_SYS_USB_EVENT_POLL.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      e8672e3f
    • Hans de Goede's avatar
      musb-new: Use time based timeouts rather then cpu-cycles based timeouts · dc9a3912
      Hans de Goede authored
      
      
      CPU cycle based timeouts are no good, because how long they use depends on
      CPU speed. Instead use time based timeouts, and wait one second for a
      device connection to show up (per the USB spec), and wait USB_TIMEOUT_MS
      for various urbs to complete.
      
      This fixes "usb start" taking for ever when no device is plugged into the
      otg port.
      Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
      dc9a3912
  7. 16 Sep, 2014 1 commit
  8. 30 Apr, 2014 1 commit
  9. 20 Oct, 2013 1 commit
  10. 30 Jun, 2013 1 commit
  11. 08 Apr, 2013 1 commit
  12. 19 Nov, 2012 1 commit
    • Ilya Yanok's avatar
      musb-new: port of Linux musb driver · eb81955b
      Ilya Yanok authored
      
      
      Existing U-Boot musb driver has no support for the new gadget framework
      and also seems to have other limitations. As gadget framework is ported
      from Linux it seems pretty natural to port musb gadget driver as well.
      
      This driver supports both host and peripheral modes.
      
      This is not a replacement for current musb driver (at least now) as
      there are still some consumers of the old UDC interface.
      
      No DMA operation support included, CONFIG_MUSB_PIO_ONLY should be
      defined.
      
      Virtual root hub device is not implemented.
      
      Known problems: with no devices connected usb_lowlevel_start() fails.
      Signed-off-by: default avatarIlya Yanok <ilya.yanok@cogentembedded.com>
      eb81955b