1. 20 8月, 2012 1 次提交
  2. 14 8月, 2012 1 次提交
  3. 09 8月, 2012 5 次提交
  4. 07 8月, 2012 4 次提交
    • R
      usb: musb: use DMA mode 1 whenever possible · 4f3e8d26
      Roger Quadros 提交于
      Do not rely on any hints from gadget drivers and use DMA mode 1
      whenever we expect data of at least the endpoint's packet size and
      have not yet received a short packet.
      
      The last packet if short is always transferred using DMA mode 0.
      
      This patch fixes USB throughput issues in mass storage mode for
      host to device transfers.
      Signed-off-by: NRoger Quadros <rogerq@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      4f3e8d26
    • V
      usb: musb: host: Handle highmem in PIO mode · 8e8a5516
      Virupax Sadashivpetimath 提交于
      In case of USB bulk transfer, when himem page
      is received, the usb_sg_init function sets the
      urb transfer buffer to NULL. When such URB
      transfer is handled, kernel crashes in PIO mode.
      Handle this by mapping the highmem buffer in PIO mode.
      Signed-off-by: NVirupax Sadashivpetimath <virupax.sadashivpetimath@stericsson.com>
      Signed-off-by: NPraveena NADAHALLY <praveen.nadahally@stericsson.com>
      Acked-by: NLinus Walleij <linus.walleij@linaro.org>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      8e8a5516
    • B
      usb: musb: Fix bad call to kfree() in musb_free · decadacb
      Brian Downing 提交于
      Commit 62285963 (usb: musb: drop a
      gigantic amount of ifdeferry) included this change:
      
          @@ -1901,11 +1844,7 @@ static void musb_free(struct musb *musb)
                          dma_controller_destroy(c);
                  }
      
          -#ifdef CONFIG_USB_MUSB_HDRC_HCD
          -       usb_put_hcd(musb_to_hcd(musb));
          -#else
                  kfree(musb);
          -#endif
           }
      
           /*
      
      Since musb comes from struct usb_hcd's hcd_priv, which is allocated on
      the end of that struct, kfree'ing it is not going to work.  Replace
      kfree(musb) with usb_put_hcd(musb_to_hcd(musb)), which appears to be
      the right thing to do here.
      Signed-off-by: NBrian Downing <bdowning@lavos.net>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      decadacb
    • F
      usb: musb: fix sparse warnings · a156544b
      Felipe Balbi 提交于
      The following warnings are fixed:
      
      drivers/usb/musb/musb_core.c:357:6: warning: symbol 'musb_otg_timer_func' was not declared. Should it be static?
      drivers/usb/musb/musb_core.c:1339:27: warning: incorrect type in initializer (different address spaces)
      drivers/usb/musb/musb_core.c:1339:27:    expected void *mbase
      drivers/usb/musb/musb_core.c:1339:27:    got void [noderef] <asn:2>*mregs
      drivers/usb/musb/musb_core.c:1347:17: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/musb_core.c:1347:17:    expected void [noderef] <asn:2>*addr
      drivers/usb/musb/musb_core.c:1347:17:    got void *mbase
      drivers/usb/musb/musb_core.h:487:27: warning: incorrect type in initializer (different address spaces)
      drivers/usb/musb/musb_core.h:487:27:    expected void *mbase
      drivers/usb/musb/musb_core.h:487:27:    got void [noderef] <asn:2>*mregs
      drivers/usb/musb/musb_core.h:491:26: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/musb_core.h:491:26:    expected void const [noderef] <asn:2>*addr
      drivers/usb/musb/musb_core.h:491:26:    got void *mbase
      drivers/usb/musb/tusb6010.c:270:48: warning: incorrect type in argument 2 (different address spaces)
      drivers/usb/musb/tusb6010.c:270:48:    expected void [noderef] <asn:2>*buf
      drivers/usb/musb/tusb6010.c:270:48:    got unsigned char [usertype] *[assigned] buf
      drivers/usb/musb/tusb6010.c:164:32: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/tusb6010.c:164:32:    expected void *to
      drivers/usb/musb/tusb6010.c:164:32:    got void [noderef] <asn:2>*buf
      drivers/usb/musb/tusb6010.c:172:24: warning: incorrect type in argument 1 (different address spaces)
      drivers/usb/musb/tusb6010.c:172:24:    expected void *to
      drivers/usb/musb/tusb6010.c:172:24:    got void [noderef] <asn:2>*[assigned] buf
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      a156544b
  5. 03 8月, 2012 6 次提交
  6. 31 7月, 2012 1 次提交
  7. 02 7月, 2012 1 次提交
  8. 25 6月, 2012 6 次提交
  9. 22 6月, 2012 1 次提交
  10. 04 6月, 2012 4 次提交
    • M
      usb: musb: host: Disable MUSB DMA mode incase of DMA channel request failure · 2ed9127c
      Mantesh Sarasetti 提交于
      Currently in case of MUSB DMA channel request failure we are not
      clearing MUSB_RXCSR_DMAENAB, MUSB_RXCSR_H_AUTOREQ and
      MUSB_RXCSR_AUTOCLEAR bits of MUSB RXCSR of MUSB DMA. Which is
      causing failure in receipt of data packets in next transfer.
      
      Fix is to disable the MUSB DMA mode and related bits incase of
      DMA channel request fails
      Signed-off-by: NMantesh Sarashetti <mantesh@ti.com>
      Signed-off-by: NRuslan Bilovol <ruslan.bilovol@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      2ed9127c
    • G
      usb: musb_gadget: fix crash caused by dangling pointer · 08f75bf1
      Grazvydas Ignotas 提交于
      usb_ep_ops.disable must clear external copy of the endpoint descriptor,
      otherwise musb crashes after loading/unloading several gadget modules
      in a row:
      
      Unable to handle kernel paging request at virtual address bf013730
      pgd = c0004000
      [bf013730] *pgd=8f26d811, *pte=00000000, *ppte=00000000
      Internal error: Oops: 7 [#1]
      Modules linked in: g_cdc [last unloaded: g_file_storage]
      CPU: 0    Not tainted  (3.2.17 #647)
      PC is at musb_gadget_enable+0x4c/0x24c
      LR is at _raw_spin_lock_irqsave+0x4c/0x58
      [<c027c030>] (musb_gadget_enable+0x4c/0x24c) from [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc])
      [<bf01b760>] (gether_connect+0x3c/0x19c [g_cdc]) from [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc])
      [<bf01ba1c>] (ecm_set_alt+0x15c/0x180 [g_cdc]) from [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc])
      [<bf01ecd4>] (composite_setup+0x85c/0xac4 [g_cdc]) from [<c027b744>] (musb_g_ep0_irq+0x844/0x924)
      [<c027b744>] (musb_g_ep0_irq+0x844/0x924) from [<c027a97c>] (musb_interrupt+0x79c/0x864)
      [<c027a97c>] (musb_interrupt+0x79c/0x864) from [<c027aaa8>] (generic_interrupt+0x64/0x7c)
      [<c027aaa8>] (generic_interrupt+0x64/0x7c) from [<c00797cc>] (handle_irq_event_percpu+0x28/0x178)
      ...
      
      Cc: stable@vger.kernel.org # v3.1+
      Signed-off-by: NGrazvydas Ignotas <notasas@gmail.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      08f75bf1
    • J
      usb: musb: davinci: Fix build breakage · 6594b2d7
      Jon Povey 提交于
      This appears to have been broken by
      commit 5cfb19ac
      (ARM: davinci: streamline sysmod access)
      
      For now, fix by hardcoding USB_PHY_CTRL and DM355_DEEPSLEEP
      
      Tested on DM365 with defconfig changes.
      Signed-off-by: NJon Povey <jon.povey@racelogic.co.uk>
      Acked-by: NSekhar Nori <nsekhar@ti.com>
      CC: Felipe Balbi <balbi@ti.com>
      Cc: <stable@vger.kernel.org> # v3.4.x
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      6594b2d7
    • V
      usb: musb: handle nuked ep dma interrupt · abf710e6
      Vikram Pandita 提交于
      User can trigger disabling of gadget at run time while the
      transfers are going on.
      Eg: 1: rmmod of musb driver while transfers are going on
      
      Eg: 2: On android doing:
       echo 0       > /sys/class/android_usb/android0/enable
      While a big file transfer is going on via PTP/MTP.
      
      In such a case, musb_gadget_disable() calls nuke()
      but the dma interrupt may still happen for an endpoint since hw
      would raise the interrupt in anycase.
      
      This can result in a NULL pointer access crash:
      
      [  314.030426] PC is at txstate+0x74/0x20c
      [  314.034759] LR is at musb_g_tx+0x140/0x204
      [  314.039489] pc : [<c03506f4>]    lr : [<c0350bcc>]    psr: 20000193
      [  314.039520] sp : c783bc68  ip : 00000002  fp : c783bc9c
      [  314.052429] r10: 00000018  r9 : 00000000  r8 : 00000200
      [  314.058258] r7 : 00000000  r6 : fc0ab130  r5 : c781a410  r4 : c6caf640
      [  314.065643] r3 : 00000000  r2 : 00000000  r1 : 00000000  r0 : c781a000
      [  315.083251] Backtrace:
      [  315.086242] [<c0350680>] (txstate+0x0/0x20c) from [<c0350bcc>] (musb_g_tx+0x140/0x204)
      [  315.095123] [<c0350a8c>] (musb_g_tx+0x0/0x204) from [<c034eb00>] (musb_dma_completion+0x40/0x54)
      [  315.104980] [<c034eac0>] (musb_dma_completion+0x0/0x54) from [<c0351e6c>] (dma_controller_irq+0x118/0x184)
      [  315.115661] [<c0351d54>] (dma_controller_irq+0x0/0x184) from [<c00d86b8>] (handle_irq_event_percpu+0x54/0x188)
      
      So put protection in code to handle possiblity of getting an interrupt for an
      endpoint that might have been already nuked.
      Reported-by: NTodd Poynor <toddpoynor@google.com>
      Signed-off-by: NVikram Pandita <vikram.pandita@ti.com>
      Signed-off-by: NFelipe Balbi <balbi@ti.com>
      abf710e6
  11. 15 5月, 2012 1 次提交
  12. 04 5月, 2012 2 次提交
  13. 23 4月, 2012 1 次提交
  14. 18 4月, 2012 2 次提交
  15. 11 4月, 2012 4 次提交