1. 20 Apr, 2016 5 commits
    • Mauro Carvalho Chehab's avatar
      [media] tw686x-kh: use the cached value · 13431509
      Mauro Carvalho Chehab authored
      the dma_requests field is cached, but cache is not used:
      
      drivers/staging/media/tw686x-kh/tw686x-kh-video.c: In function 'tw686x_video_irq':
      drivers/staging/media/tw686x-kh/tw686x-kh-video.c:622:6: warning: variable 'requests' set but not used [-Wunused-but-set-variable]
        u32 requests;
            ^
      
      Use the cache instead, as it seems reading it needs to be done
      with spin lock taken.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      13431509
    • Ezequiel Garcia's avatar
      [media] media: Support Intersil/Techwell TW686x-based video capture cards · 704a84cc
      Ezequiel Garcia authored
      This commit introduces the support for the Techwell TW686x video
      capture IC. This hardware supports a few DMA modes, including
      scatter-gather and frame (contiguous).
      
      This commit makes little use of the DMA engine and instead has
      a memcpy based implementation. DMA frame and scatter-gather modes
      support may be added in the future.
      
      Currently supported chips:
      - TW6864 (4 video channels),
      - TW6865 (4 video channels, not tested, second generation chip),
      - TW6868 (8 video channels but only 4 first channels using
                 built-in video decoder are supported, not tested),
      - TW6869 (8 video channels, second generation chip).
      
      [mchehab@osg.samsung.com: make checkpatch happy by using "unsigned int"
        instead  of just "unsigned"]
      Cc: Krzysztof Halasa <khalasa@piap.pl>
      Signed-off-by: default avatarEzequiel Garcia <ezequiel@vanguardiasur.com.ar>
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Tested-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      704a84cc
    • Krzysztof Hałasa's avatar
      [media] TW686x frame grabber driver · 0ff59f31
      Krzysztof Hałasa authored
      A driver for Intersil/Techwell TW686x-based PCIe frame grabbers.
      
      [hans.verkuil@cisco.com: renamed staging tw686x to tw686x-kh to prevent naming conflicts]
      [hans.verkuil@cisco.com: don't build tw686x-kh if tw686x is already selected to prevent conflicts]
      [mchehab@osg.samsung.com: use "unsigned int" instead of just "unsigned"  and add some whitespaces to make checkpatch happier]
      Signed-off-by: default avatarKrzysztof Halasa <khalasa@piap.pl>
      Signed-off-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Tested-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      0ff59f31
    • Mauro Carvalho Chehab's avatar
      [media] media: Improve documentation for link_setup/link_modify · 5ed470fe
      Mauro Carvalho Chehab authored
      Those callbacks are called with the media_device.graph_mutex held.
      
      Add a note about that, as the code called by those notifiers should
      not be touching in the mutex.
      Acked-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      5ed470fe
    • Mauro Carvalho Chehab's avatar
      [media] media-device: get rid of the spinlock · e2c91d4d
      Mauro Carvalho Chehab authored
      Right now, the lock schema for media_device struct is messy,
      since sometimes, it is protected via a spin lock, while, for
      media graph traversal, it is protected by a mutex.
      
      Solve this conflict by always using a mutex.
      
      As a side effect, this prevents a bug when the media notifiers
      is called at atomic context, while running the notifier callback:
      
       BUG: sleeping function called from invalid context at mm/slub.c:1289
       in_atomic(): 1, irqs_disabled(): 0, pid: 3479, name: modprobe
       4 locks held by modprobe/3479:
       #0:  (&dev->mutex){......}, at: [<ffffffff81ce8933>] __driver_attach+0xa3/0x160
       #1:  (&dev->mutex){......}, at: [<ffffffff81ce8941>] __driver_attach+0xb1/0x160
       #2:  (register_mutex#5){+.+.+.}, at: [<ffffffffa10596c7>] usb_audio_probe+0x257/0x1c90 [snd_usb_audio]
       #3:  (&(&mdev->lock)->rlock){+.+.+.}, at: [<ffffffffa0e6051b>] media_device_register_entity+0x1cb/0x700 [media]
       CPU: 2 PID: 3479 Comm: modprobe Not tainted 4.5.0-rc3+ #49
       Hardware name:                  /NUC5i7RYB, BIOS RYBDWi35.86A.0350.2015.0812.1722 08/12/2015
       0000000000000000 ffff8803b3f6f288 ffffffff81933901 ffff8803c4bae000
       ffff8803c4bae5c8 ffff8803b3f6f2b0 ffffffff811c6af5 ffff8803c4bae000
       ffffffff8285d7f6 0000000000000509 ffff8803b3f6f2f0 ffffffff811c6ce5
       Call Trace:
       [<ffffffff81933901>] dump_stack+0x85/0xc4
       [<ffffffff811c6af5>] ___might_sleep+0x245/0x3a0
       [<ffffffff811c6ce5>] __might_sleep+0x95/0x1a0
       [<ffffffff8155aade>] kmem_cache_alloc_trace+0x20e/0x300
       [<ffffffffa0e66e3d>] ? media_add_link+0x4d/0x140 [media]
       [<ffffffffa0e66e3d>] media_add_link+0x4d/0x140 [media]
       [<ffffffffa0e69931>] media_create_pad_link+0xa1/0x600 [media]
       [<ffffffffa0fe11b3>] au0828_media_graph_notify+0x173/0x360 [au0828]
       [<ffffffffa0e68a6a>] ? media_gobj_create+0x1ba/0x480 [media]
       [<ffffffffa0e606fb>] media_device_register_entity+0x3ab/0x700 [media]
      Reviewed-by: default avatarJavier Martinez Canillas <javier@osg.samsung.com>
      Acked-by: default avatarSakari Ailus <sakari.ailus@linux.intel.com>
      Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      e2c91d4d
  2. 13 Apr, 2016 35 commits