1. 15 10月, 2013 1 次提交
  2. 11 10月, 2013 1 次提交
    • S
      usb: musb: start musb on the udc side, too · 001dd84a
      Sebastian Andrzej Siewior 提交于
      I have am335x-evm with one port running in OTG mode. Since commit
      fe4cb091 ("usb: musb: gadget: remove hcd initialization") the loaded
      gadget does non pop up on the host. All I see is
      |usb 4-5: new high-speed USB device number 52 using ehci-pci
      |usb 4-5: device descriptor read/64, error -110
      
      Since a later commit 2cc65fea ("usb: musb: add musb_host_setup() and
      musb_host_cleanup()) the gadget shows up on the host again but only
      in OTG mode (because we have the host init code running). It does not
      work in device only mode.
      If running in OTG mode and the gadget is removed and added back (rmmod
      followed by modprobe of a gadget) then the same error is pops up on the
      host side.
      
      This patch ensures that the gadget side also executes musb_start() which
      puts the chip in "connect accept" mode. With this change the device
      works in OTG & device mode and the gadget can be added & removed
      multiple times.
      A device (if musb is in OTG mode acting as a host) is only recognized if
      it is attached during module load (musb_hdrc module). After the device
      unplugged and plugged again the host does not recognize it. We get a
      buch of errors if musb running in OTG mode, attached to a host and no
      gadget is loaded. Bah.
      This is one step forward. Host & device only mode should work. I will
      look at OTG later. I looked at this before commit fe4cb091 and OTG wasn't
      working there perfectly so I am not sure that it is a regression :)
      
      Cc: <stable@vger.kernel.org> # v3.11
      Cc: Daniel Mack <zonque@gmail.com>
      Cc: Peter Korsgaard <jacmet@sunsite.dk>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      001dd84a
  3. 01 10月, 2013 1 次提交
    • S
      usb: musb: dsps: do not bind to "musb-hdrc" · 4fc4b274
      Sebastian Andrzej Siewior 提交于
      This went unnoticed in durin the merge window:
      The dsps driver creates a child device for the musb core driver _and_
      attaches the of_node to it so devm_usb_get_phy_by_phandle() grabs the
      correct phy and attaches the devm resources to the proper device. We
      could also use the parent device but then devm would attach the
      resource to the wrong device and it would be destroyed once the parent
      device is gone - not the device that is used by the musb core driver.
      
      If the phy is now not available then dsps_musb_init() /
      devm_usb_get_phy_by_phandle() returns with EPROBE_DEFER. Since the
      of_node is attached it tries OF drivers as well and matches the driver
      against DSPS. That one creates a new child device for the musb core
      driver which gets probed immediately.
      
      The whole thing repeats itself until the stack overflows.
      
      I belive the same problem exists in ux500 glue code (since 313bdb11
      ("usb: musb: ux500: add device tree probing support") but the drivers are
      now probed in the right order so they don't see it.
      
      The problem is that the dsps driver gets bound to the musb-child device
      due to the same of_node / matching binding. I don't really agree with
      having yet another child node in DT to fix this. Ideally we would have
      musb core driver with DT bindings and according to the binding we would
      select the few extra hacks / gleue layer.
      
      Therefore I suggest the driver to reject the musb-core device.
      
      Cc: Lee Jones <lee.jones@linaro.org>
      Tested-by: NTom Rini <trini@ti.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      4fc4b274
  4. 26 9月, 2013 1 次提交
  5. 18 9月, 2013 1 次提交
    • B
      usb: musb: fix otg default state · 1374a430
      Bin Liu 提交于
      Right after the musb_hdrc driver is loaded, the otg default state
      is a_idle, and Mode=Host, which are set by musb_host_setup().
      
      This causes the following kernel message during musb gadget
      enumeration.
      
      	CAUTION: musb: Babble Interrupt Occurred
      
      This patch sets the otg default state to b_idle, and its Mode to
      Peripheral.
      
      It has been validated on TI AM335x GP EVM USB0 port with g_zero.
      Signed-off-by: NBin Liu <b-liu@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      1374a430
  6. 13 9月, 2013 1 次提交
  7. 28 8月, 2013 9 次提交
  8. 14 8月, 2013 2 次提交
  9. 13 8月, 2013 1 次提交
  10. 09 8月, 2013 4 次提交
    • S
      usb: musb dma: add cppi41 dma driver · 9b3452d1
      Sebastian Andrzej Siewior 提交于
      This driver is currently used by musb' cppi41 couter part. I may merge
      both dma engine user of musb at some point but not just yet.
      
      The driver seems to work in RX/TX mode in host mode, tested on mass
      storage. I increaed the size of the TX / RX transfers and waited for the
      core code to cancel a transfers and it seems to recover.
      
      v2..3:
      - use mall transfers on RX side and check data toggle.
      - use rndis mode on tx side so we haveon interrupt for 4096 transfers.
      - remove custom "transferred" hack and use dmaengine_tx_status() to
        compute the total amount of data that has been transferred.
      - cancel transfers and reclaim descriptors
      
      v1..v2:
      - RX path added
      - dma mode 0 & 1 is working
      - device tree nodes re-created.
      
      Cc: Vinod Koul <vinod.koul@intel.com>
      Cc: Dan Williams <djbw@fb.com>
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      9b3452d1
    • S
      usb: musb: dsps: use proper child nodes · 97238b35
      Sebastian Andrzej Siewior 提交于
      This moves the two instances from the big node into two child nodes. The
      glue layer ontop does almost nothing.
      
      There is one devices containing the control module for USB (2) phy,
      (2) usb and later the dma engine. The usb device is the "glue device"
      which contains the musb device as a child. This is what we do ever since.
      
      The new file musb_am335x is just here to prob the new bus and populate
      child devices.
      
      There are a lot of changes to the dsps file as a result of the changes:
      
      - musb_core_offset
        This is gone. The device tree provides memory ressources information
        for the device there is no need to "fix" things
      
      - instances
        This is gone as well. If we have two instances then we have have two
        child enabled nodes in the device tree. For instance the SoC in beagle
        bone has two USB instances but only one has been wired up so there is
        no need to load and init the second instance since it won't be used.
      
      - dsps_glue is now per glue device
        In the past there was one of this structs but with an array of two and
        each instance accessed its variable depending on the platform device
        id.
      
      - no unneeded copy of structs
        I do not know why struct dsps_musb_wrapper is copied but it is not
        necessary. The same goes for musb_hdrc_platform_data which allocated
        on demand and then again by platform_device_add_data(). One copy is
        enough.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      97238b35
    • S
      usb: musb: dsps: remove the hardcoded phy pieces · e96bdc3d
      Sebastian Andrzej Siewior 提交于
      dsps uses a nop driver which is added in dsps itself and does the PHY
      on/off calls within dsps. Since those calls are now moved the nop driver
      itself, we can now request the phy proper phy and remove those calls.
      Currently only the first musb interface is used so we only add one phy
      node for now.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      e96bdc3d
    • S
      usb: phy: rename nop_usb_xceiv => usb_phy_gen_xceiv · 3fa4d734
      Sebastian Andrzej Siewior 提交于
      The "nop" driver isn't a do-nothing-stub but supports a couple functions
      like clock on/off or is able to use a voltage regulator. This patch
      simply renames the driver to "generic" since it is easy possible to
      extend it by a simple function istead of writing a complete driver.
      Signed-off-by: NSebastian Andrzej Siewior <bigeasy@linutronix.de>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      3fa4d734
  11. 30 7月, 2013 1 次提交
  12. 29 7月, 2013 13 次提交
  13. 25 7月, 2013 1 次提交
  14. 17 7月, 2013 1 次提交
  15. 26 6月, 2013 1 次提交
  16. 04 6月, 2013 1 次提交