1. 03 Sep, 2012 1 commit
  2. 31 Aug, 2012 12 commits
  3. 23 Aug, 2012 13 commits
    • Shimoda, Yoshihiro's avatar
      usb: renesas_usbhs: modify the irq handler for sharing irq · 4e177260
      Shimoda, Yoshihiro authored
      When IORESOURCE_IRQ_SHAREABLE is set, the irq handler may be called
      even if the interupt of the USB module doesn't happen. So, it may
      clear the interrupt flags by mistake. This patch fixes it.
      Signed-off-by: default avatarYoshihiro Shimoda <yoshihiro.shimoda.uh@renesas.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      4e177260
    • Andy Shevchenko's avatar
      usb: gadget: use %pm to print mac addresses · 8c7ca992
      Andy Shevchenko authored
      %pm already provides pretty print for mac addresses, let's
      use that and drop homebrew mac address printing.
      Signed-off-by: default avatarAndy Shevchenko <andriy.shevchenko@linux.intel.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      8c7ca992
    • Kevin Cernekee's avatar
      usb: gadget: udc-core: Race between disconnect/unbind and setup · 974e9323
      Kevin Cernekee authored
      usb_gadget_remove_driver() runs through a four-step sequence to shut down
      the gadget driver.  For the case of a composite gadget + at91 UDC, this
      would look like:
      
          udc->driver->disconnect(udc->gadget);          // composite_disconnect()
          usb_gadget_disconnect(udc->gadget);            // at91_pullup(gadget, 0)
          udc->driver->unbind(udc->gadget);              // composite_unbind()
          usb_gadget_udc_stop(udc->gadget, udc->driver); // at91_stop()
      
      The UDC driver can receive SETUP packets from the host up until the
      point when usb_gadget_disconnect() returns.  On rare occasions, the
      gadget driver may see this sequence:
      
          udc->driver->disconnect(udc->gadget);          // composite_disconnect()
          udc->driver->setup(udc->gadget, &ctrl);        // composite_setup()
          udc->driver->unbind(udc->gadget);              // composite_unbind()
      
      Some gadget drivers, such as composite, assume this will never happen
      and crash as a result.
      
      The fix is to quiesce the UDC hardware (via usb_gadget_disconnect)
      before running the gadget driver through the disconnect/unbind sequence.
      Reviewed-by: default avatarPeter Chen <peter.chen@freescale.com>
      Signed-off-by: default avatarKevin Cernekee <cernekee@gmail.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      974e9323
    • Andy Shevchenko's avatar
    • Du, Changbin's avatar
      usb: gadget: s3c-hsotg: fix core reset timeout failure · 2868fea2
      Du, Changbin authored
      The timeout values were 1000 and timeout issue occured many times on my
      s3c6410 Soc based board (mostly when booting whith USB cable not
      connected). This patch increase the values to 10000 to guarantee the
      success of reset.
      
      Having set timeout to 10000, I printed the remained timeout values
      which could cause timeout issue before this change (tested several
      times).
      the first timeout value remained:
      	timeout = 8079
      	timeout = 8079
      	timeout = 8078
      	timeout = 8081
      the second timeout value remained:
      	timeout = 7940
      	timeout = 7945
      	timeout = 7940
      	timeout = 7938
      Seeing from above values, I think the value 10000 is big enough.
      Signed-off-by: default avatarDu, Changbin <changbin.du@gmail.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      2868fea2
    • Michael Grzeschik's avatar
      usb composite: fix locking in usb_function_activate · 4fefe9f6
      Michael Grzeschik authored
      The lockdep hunter mentions a non consistent usage of spin_lock and
      spin_lock_irqsafe in the composite_disconnect and usb_function_activate
      function:
      
      [   15.700897] =================================
      [   15.705255] [ INFO: inconsistent lock state ]
      [   15.709617] 3.5.0-rc5+ #413 Not tainted
      [   15.713453] ---------------------------------
      [   15.717812] inconsistent {HARDIRQ-ON-W} -> {IN-HARDIRQ-W} usage.
      [   15.723822] uvc-gadget/116 [HC1[1]:SC0[0]:HE0:SE1] takes:
      [   15.729222]  (&(&cdev->lock)->rlock){?.+...}, at: [<7f0049e8>] composite_disconnect+0x2c/0x74 [g_webcam]
      [   15.738797] {HARDIRQ-ON-W} state was registered at:
      [   15.743677]   [<8006de3c>] mark_lock+0x148/0x688
      [   15.748325]   [<8006ecb0>] __lock_acquire+0x934/0x1b74
      [   15.753481]   [<8007047c>] lock_acquire+0x98/0x138
      [   15.758288]   [<804c776c>] _raw_spin_lock+0x4c/0x84
      [   15.763188]   [<7f006ae4>] usb_function_activate+0x28/0x94 [g_webcam]
      [   15.769652]   [<7f00820c>] usb_ep_autoconfig_reset+0x78/0x98 [g_webcam]
      [   15.776287]   [<7f0082a4>] uvc_v4l2_open+0x78/0x94 [g_webcam]
      [   15.782054]   [<80366a38>] v4l2_open+0x104/0x130
      [   15.786697]   [<800efd30>] chrdev_open+0xa0/0x170
      [   15.791423]   [<800e9718>] do_dentry_open.isra.13+0x1e8/0x264
      [   15.797186]   [<800ea5d4>] nameidata_to_filp+0x58/0x94
      [   15.802340]   [<800fa29c>] do_last.isra.31+0x2a0/0x808
      [   15.807497]   [<800faa40>] path_openat+0xc8/0x3e8
      [   15.812216]   [<800fae90>] do_filp_open+0x3c/0x90
      [   15.816936]   [<800ea6fc>] do_sys_open+0xec/0x184
      [   15.821655]   [<800ea7c4>] sys_open+0x30/0x34
      [   15.826027]   [<8000e5c0>] ret_fast_syscall+0x0/0x48
      [   15.831015] irq event stamp: 6048
      [   15.834330] hardirqs last  enabled at (6047): [<804c81b8>] _raw_spin_unlock_irqrestore+0x40/0x54
      [   15.843132] hardirqs last disabled at (6048): [<8000e174>] __irq_svc+0x34/0x60
      [   15.850370] softirqs last  enabled at (5940): [<80028380>] __do_softirq+0x188/0x270
      [   15.858043] softirqs last disabled at (5935): [<80028944>] irq_exit+0xa0/0xa8
      [   15.865195]
      [   15.865195] other info that might help us debug this:
      [   15.871724]  Possible unsafe locking scenario:
      [   15.871724]
      [   15.877645]        CPU0
      [   15.880091]        ----
      [   15.882537]   lock(&(&cdev->lock)->rlock);
      [   15.886659]   <Interrupt>
      [   15.889278]     lock(&(&cdev->lock)->rlock);
      [   15.893573]
      [   15.893573]  *** DEADLOCK ***
      [   15.893573]
      [   15.899496] no locks held by uvc-gadget/116.
      [   15.903765]
      [   15.903765] stack backtrace:
      [   15.908125] Backtrace:
      [   15.910604] [<80012038>] (dump_backtrace+0x0/0x114) from [<804bf8a4>] (dump_stack+0x20/0x24)
      [   15.919043]  r6:dfb8e6f0 r5:dfb8e400 r4:809717ec r3:60000193
      [   15.924766] [<804bf884>] (dump_stack+0x0/0x24) from [<804c0c0c>] (print_usage_bug+0x258/0x2c0)
      [   15.933388] [<804c09b4>] (print_usage_bug+0x0/0x2c0) from [<8006e240>] (mark_lock+0x54c/0x688)
      [   15.942006] [<8006dcf4>] (mark_lock+0x0/0x688) from [<8006edb8>] (__lock_acquire+0xa3c/0x1b74)
      [   15.950625] [<8006e37c>] (__lock_acquire+0x0/0x1b74) from [<8007047c>] (lock_acquire+0x98/0x138)
      [   15.959418] [<800703e4>] (lock_acquire+0x0/0x138) from [<804c78fc>] (_raw_spin_lock_irqsave+0x58/0x94)
      [   15.968736] [<804c78a4>] (_raw_spin_lock_irqsave+0x0/0x94) from [<7f0049e8>] (composite_disconnect+0x2c/0x74 [g_webcam])
      [   15.979605]  r7:00000012 r6:df82b0c4 r5:ded755bc r4:ded75580
      [   15.985331] [<7f0049bc>] (composite_disconnect+0x0/0x74 [g_webcam]) from [<8033c170>] (_gadget_stop_activity+0xc4/0x120)
      [   15.996200]  r6:df82b0c4 r5:df82b0c8 r4:df82b0d0 r3:7f0049bc
      [   16.001919] [<8033c0ac>] (_gadget_stop_activity+0x0/0x120) from [<8033e390>] (udc_irq+0x724/0xcb8)
      [   16.010877]  r6:df82b010 r5:00000000 r4:df82b010 r3:00000000
      [   16.016595] [<8033dc6c>] (udc_irq+0x0/0xcb8) from [<8033baec>] (ci_irq+0x64/0xdc)
      [   16.024086] [<8033ba88>] (ci_irq+0x0/0xdc) from [<80086538>] (handle_irq_event_percpu+0x74/0x298)
      [   16.032958]  r5:807fd414 r4:df38fdc0
      [   16.036566] [<800864c4>] (handle_irq_event_percpu+0x0/0x298) from [<800867a8>] (handle_irq_event+0x4c/0x6c)
      [   16.046315] [<8008675c>] (handle_irq_event+0x0/0x6c) from [<80089318>] (handle_level_irq+0xbc/0x11c)
      [   16.055447]  r6:def04000 r5:807fd414 r4:807fd3c0 r3:00020000
      [   16.061166] [<8008925c>] (handle_level_irq+0x0/0x11c) from [<80085cc8>] (generic_handle_irq+0x38/0x4c)
      [   16.070472]  r5:807f7f64 r4:8081e9f8
      [   16.074082] [<80085c90>] (generic_handle_irq+0x0/0x4c) from [<8000ef98>] (handle_IRQ+0x5c/0xbc)
      [   16.082788] [<8000ef3c>] (handle_IRQ+0x0/0xbc) from [<800085cc>] (tzic_handle_irq+0x6c/0x9c)
      [   16.091225]  r8:00000000 r7:def059b0 r6:00000001 r5:00000000 r4:00000000
      r3:00000012
      [   16.099141] [<80008560>] (tzic_handle_irq+0x0/0x9c) from [<8000e184>] (__irq_svc+0x44/0x60)
      [   16.107494] Exception stack(0xdef059b0 to 0xdef059f8)
      [   16.112550] 59a0:                                     00000001 00000001 00000000 dfb8e400
      [   16.120732] 59c0: 40000013 81a2e500 00000000 81a2e500 00000000 00000000 80862418 def05a0c
      [   16.128912] 59e0: def059c8 def059f8 80070e24 804c81bc 20000013 ffffffff
      [   16.135542] [<804c8178>] (_raw_spin_unlock_irqrestore+0x0/0x54) from [<8003d0ec>] (__queue_work+0x108/0x470)
      [   16.145369]  r5:dfb1a30c r4:81b93c00
      [   16.148978] [<8003cfe4>] (__queue_work+0x0/0x470) from [<8003d4e0>] (queue_work_on+0x4c/0x54)
      [   16.157511] [<8003d494>] (queue_work_on+0x0/0x54) from [<8003d544>] (queue_work+0x30/0x34)
      [   16.165774]  r6:df2e6900 r5:80e0c2f8 r4:dfb1a2c8 r3:def04000
      [   16.171495] [<8003d514>] (queue_work+0x0/0x34) from [<80493284>] (rpc_make_runnable+0x9c/0xac)
      [   16.180113] [<804931e8>] (rpc_make_runnable+0x0/0xac) from [<80493c88>] (rpc_execute+0x40/0xa8)
      [   16.188811]  r5:def05ad4 r4:dfb1a2c8
      [   16.192426] [<80493c48>] (rpc_execute+0x0/0xa8) from [<8048c734>] (rpc_run_task+0xa8/0xb4)
      [   16.200690]  r8:00000001 r7:df74f520 r6:ded75700 r5:def05ad4 r4:dfb1a2c8
      r3:00000002
      [   16.208618] [<8048c68c>] (rpc_run_task+0x0/0xb4) from [<801f1608>] (nfs_initiate_read+0xb4/0xd4)
      [   16.217403]  r5:df3e86c0 r4:00000000
      [   16.221015] [<801f1554>] (nfs_initiate_read+0x0/0xd4) from [<801f1c64>] (nfs_generic_pg_readpages+0x9c/0x114)
      [   16.230937] [<801f1bc8>] (nfs_generic_pg_readpages+0x0/0x114) from [<801f0744>] (__nfs_pageio_add_request+0xe8/0x214)
      [   16.241545]  r8:000bf000 r7:00000000 r6:00000000 r5:deef4640 r4:def05c1c
      r3:801f1bc8
      [   16.249463] [<801f065c>] (__nfs_pageio_add_request+0x0/0x214) from [<801f0e3c>] (nfs_pageio_add_request+0x28/0x54)
      [   16.259818] [<801f0e14>] (nfs_pageio_add_request+0x0/0x54) from [<801f1394>] (readpage_async_filler+0x114/0x170)
      [   16.269992]  r5:def05c58 r4:80fd7300
      [   16.273607] [<801f1280>] (readpage_async_filler+0x0/0x170) from [<800bb418>] (read_cache_pages+0xa0/0x108)
      [   16.283259]  r8:00200200 r7:00100100 r6:df74f654 r5:def05cd0 r4:80fd7300
      [   16.290034] [<800bb378>] (read_cache_pages+0x0/0x108) from [<801f218c>] (nfs_readpages+0xc4/0x168)
      [   16.298999] [<801f20c8>] (nfs_readpages+0x0/0x168) from [<800bb1d0>] (__do_page_cache_readahead+0x254/0x354)
      [   16.308833] [<800baf7c>] (__do_page_cache_readahead+0x0/0x354) from [<800bb5d0>] (ra_submit+0x38/0x40)
      [   16.318145] [<800bb598>] (ra_submit+0x0/0x40) from [<800bb6b0>] (ondemand_readahead+0xd8/0x3b0)
      [   16.326851] [<800bb5d8>] (ondemand_readahead+0x0/0x3b0) from [<800bba20>] (page_cache_async_readahead+0x98/0xa8)
      [   16.337043] [<800bb988>] (page_cache_async_readahead+0x0/0xa8) from [<800b2118>] (generic_file_aio_read+0x5b4/0x7c4)
      [   16.347565]  r6:00000000 r5:df74f654 r4:80fd70a0
      [   16.352231] [<800b1b64>] (generic_file_aio_read+0x0/0x7c4) from [<801e82c0>] (nfs_file_read+0x7c/0xcc)
      [   16.361544] [<801e8244>] (nfs_file_read+0x0/0xcc) from [<800eab80>] (do_sync_read+0xb4/0xf4)
      [   16.369981]  r9:00000000 r8:def05f70 r7:00000000 r6:00000000 r5:dec34900
      r4:fffffdee
      [   16.377896] [<800eaacc>] (do_sync_read+0x0/0xf4) from [<800eb548>] (vfs_read+0xb4/0x144)
      [   16.385987]  r8:00000000 r7:def05f70 r6:76a95008 r5:003e3dd6 r4:dec34900
      [   16.392761] [<800eb494>] (vfs_read+0x0/0x144) from [<800eb624>] (sys_read+0x4c/0x78)
      [   16.400504]  r8:00000000 r7:00000003 r6:003e3dd6 r5:76a95008 r4:dec34900
      [   16.407279] [<800eb5d8>] (sys_read+0x0/0x78) from [<8000e5c0>] (ret_fast_syscall+0x0/0x48)
      [   16.415543]  r9:def04000 r8:8000e864 r6:000086b4 r5:00000000 r4:00000000
      [   20.872729]  gadget: high-speed config #1: Video
      [   20.877368]  gadget: uvc_function_set_alt(0, 0)
      [   20.881908]  gadget: uvc_function_set_alt(1, 0)
      [   20.891464]  gadget: uvc_function_set_alt(1, 0)
      Signed-off-by: default avatarMichael Grzeschik <m.grzeschik@pengutronix.de>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      4fefe9f6
    • Neil Zhang's avatar
      usb: gadget: mv_udc: fix boot up hang · 11c37c8b
      Neil Zhang authored
      Fix boot up hang when enable udc without otg enabled.
      The root cause is that the clock will be shut down when probe routine is
      finished because of clock gating. When a gadget driver is registered at
      this time, it will call mv_udc_start which in turn will call
      mv_udc_vbus_session. If there is no cable attached at the boot up time,
      the vbus is low, so it will call stop_activity path without clock
      enabled which will cause system hang then.
      Actually, we need't go this path when clock is disabled, what we need to
      do is just jump out.
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      11c37c8b
    • Yunfan Zhang's avatar
      usb: gadget: mv_udc: fix hang when shutdown · 1dcaa252
      Yunfan Zhang authored
      Fix system hang in udc shutdown routine which caused by accessing usb
      register when clock is disabled. So enable usb clock before access
      register.
      Signed-off-by: default avatarYunfan Zhang <yfzhang@marvell.com>
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      1dcaa252
    • Chao Xie's avatar
      usb: gadget: mv_udc: add iso support · 60326ce3
      Chao Xie authored
      In order to support iso, we need do the following things:
      1. fix length for one dtd
      2. allow req contains multiple packets for a ISO transfer
      Signed-off-by: default avatarChao Xie <chao.xie@marvell.com>
      Signed-off-by: default avatarYu Xu <yuxu@marvell.com>
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      60326ce3
    • Neil Zhang's avatar
      usb: gadget: mv_udc: enable stream mode · 583a7263
      Neil Zhang authored
      According to ChipIdea's reference manual in section 8.5.2
      "Non-streaming operational mode in device mode", we'd better enable stream
      mode, especially that ISO endpoints are not supported when the SDIS bit
      is set.
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      583a7263
    • Neil Zhang's avatar
      usb: gadget: mv_udc: avoid sleeping on spinlock · 0344606b
      Neil Zhang authored
      build_dtd() can be called when hold a spinlock, but GFP_KERNEL may cause
      dma_pool_alloc() sleep, So we need use GFP_ATOMIC instead of GFP_KERNEL.
      But using GFP_ATOMIC may cause failure when allocating memory, add error
      handler to handle it.
      Signed-off-by: default avatarAlexey Khoroshilov <khoroshilov@ispras.ru>
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      0344606b
    • Neil Zhang's avatar
      usb: gadget: mv_udc: remove unused code · a07bc24e
      Neil Zhang authored
      Clean unused code for mv_udc driver.
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      a07bc24e
    • Neil Zhang's avatar
      usb: gadget: mv_udc: reduce the delay interval · 9b2035a0
      Neil Zhang authored
      There are several places use udelay(LOOPS_USEC) to wait the status to be
      changed, but the delay interval is a bit too long, so reduce it to
      enhance the performance.
      Signed-off-by: default avatarNeil Zhang <zhangwm@marvell.com>
      Signed-off-by: default avatarFelipe Balbi <balbi@ti.com>
      9b2035a0
  4. 16 Aug, 2012 11 commits
  5. 15 Aug, 2012 3 commits
    • Dave Airlie's avatar
      Merge branch 'drm-nouveau-fixes' of git://git.freedesktop.org/git/nouveau/linux-2.6 into drm-fixes · 2e26c73a
      Dave Airlie authored
      * 'drm-nouveau-fixes' of git://git.freedesktop.org/git/nouveau/linux-2.6:
        drm/nv86/fifo: suspend fix
        drm/nouveau: disable copy engine on NVAF
        nouveau: fixup scanout enable in nvc0_pm
        drm/nouveau/aux: mask off higher bits of auxch index in i2c table entry
        drm/nvd0/disp: mask off high 16 bit of negative cursor x-coordinate
        drm/nve0/fifo: add support for the flip completion swmthd
      2e26c73a
    • Dave Airlie's avatar
      Merge branch 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel into drm-fixes · a389b6a1
      Dave Airlie authored
      Daniel Vetter writes:
      
      "A few important fixers:
      - fix various lvds backlight issues, regressed in 3.6 (Takashi Iwai)
      - make the retina mbp work (ignore bogus edp bpc value in vbt)
      - fix a gmbus regression introduced in (iirc) 3.4 (Jani Nikula)
      - fix an edp panel power sequence regression, fixes the new macbook air
      - apply the tlb invalidate w/a
      
      Otherwise we still have another gmbus regression (patches are awaiting
      tested-bys) and there's something odd going with some rare systems not
      entering rc6 often enough (and hence blowing through too much power).  It
      seems to be a timing-related issue and can be mitigated by frobbing the
      magic tuning parameters. We're still working on that one. Also, we still
      have some fallout from the hw context support, but you can only hit that
      with mesa master."
      
      * 'drm-intel-fixes' of git://people.freedesktop.org/~danvet/drm-intel:
        drm/i915: Apply post-sync write for pipe control invalidates
        drm/i915: reorder edp disabling to fix ivb MacBook Air
        drm/i915: ensure i2c adapter is all set before adding it
        drm/i915: ignore eDP bpc settings from vbt
        drm/i915: Fix blank panel at reopening lid
      a389b6a1
    • David S. Miller's avatar
      sparc64: Be less verbose during vmemmap population. · 2856cc2e
      David S. Miller authored
      On a 2-node machine with 256GB of ram we get 512 lines of
      console output, which is just too much.
      
      This mimicks Yinghai Lu's x86 commit c2b91e2e
      (x86_64/mm: check and print vmemmap allocation continuous) except that
      we aren't ever going to get contiguous block pointers in between calls
      so just print when the virtual address or node changes.
      
      This decreases the output by an order of 16.
      
      Also demote this to KERN_DEBUG.
      Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
      2856cc2e