1. 16 Feb, 2016 9 commits
    • Mauro Carvalho Chehab's avatar
      [media] cx231xx, em28xx: pass media_device to si2157 · 133bc4e4
      Mauro Carvalho Chehab authored
      As si2157 doesn't use the subdev, but has instead a binding
      logic that doesn't have any core framework, we need to manually
      pass the media_device struct via platform data on every place
      it is called.
      
      This fixes support for HVR-955Q when MC is enabled.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      133bc4e4
    • Mauro Carvalho Chehab's avatar
      [media] si2157: register as a tuner entity · 8b0a81c7
      Mauro Carvalho Chehab authored
      As this tuner doesn't use the usual subdev interface, we need
      to register it manually.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      8b0a81c7
    • Mauro Carvalho Chehab's avatar
      [media] cx231xx: use v4l2 core function to create the MC graph · 08f49200
      Mauro Carvalho Chehab authored
      Instead of having its own routine, use the one defined at the
      core, as it is generic enough to handle the cx231xx usecases.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      08f49200
    • Mauro Carvalho Chehab's avatar
      [media] em28xx-dvb: create RF connector on DVB-only mode · e9ef88bd
      Mauro Carvalho Chehab authored
      When in analog mode, the RF connector will be created by
      em28xx-video. However, when the device is in digital mode only,
      the RF connector is not shown. In this case, let the DVB
      core to create it for us.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      e9ef88bd
    • Mauro Carvalho Chehab's avatar
      [media] use v4l2_mc_usb_media_device_init() on most USB devices · 67873d4e
      Mauro Carvalho Chehab authored
      Except for the usbuvc driver (with has an embedded media_device
      struct on it), the other drivers have a pointer to media_device.
      
      On those drivers, replace their own implementation for the core
      one. That warrants that those subdev drivers will fill the
      media_device info the same way.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      67873d4e
    • Mauro Carvalho Chehab's avatar
      [media] allow overriding the driver name · bb07bd6b
      Mauro Carvalho Chehab authored
      On USB drivers, the dev struct is usually filled with the USB
      device. That would mean that the name of the driver specified
      by media_device.dev.driver.name would be "usb", instead of the
      name of the actual driver that created the media entity.
      
      Add an optional field at the internal struct to allow drivers
      to override the driver name.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      bb07bd6b
    • Mauro Carvalho Chehab's avatar
      [media] rc-core: don't lock device at rc_register_device() · c73bbaa4
      Mauro Carvalho Chehab authored
      The mutex lock at rc_register_device() was added by commit 08aeb7c9
      ("[media] rc: add locking to fix register/show race").
      
      It is meant to avoid race issues when trying to open a sysfs file while
      the RC register didn't complete.
      
      Adding a lock there causes troubles, as detected by the Kernel lock
      debug instrumentation at the Kernel:
      
          ======================================================
          [ INFO: possible circular locking dependency detected ]
          4.5.0-rc3+ #46 Not tainted
          -------------------------------------------------------
          systemd-udevd/2681 is trying to acquire lock:
           (s_active#171){++++.+}, at: [<ffffffff8171a115>] kernfs_remove_by_name_ns+0x45/0xa0
      
          but task is already holding lock:
           (&dev->lock){+.+.+.}, at: [<ffffffffa0724def>] rc_register_device+0xb2f/0x1450 [rc_core]
      
          which lock already depends on the new lock.
      
          the existing dependency chain (in reverse order) is:
      
          -> #1 (&dev->lock){+.+.+.}:
                 [<ffffffff8124817d>] lock_acquire+0x13d/0x320
                 [<ffffffff822de966>] mutex_lock_nested+0xb6/0x860
                 [<ffffffffa0721f2b>] show_protocols+0x3b/0x3f0 [rc_core]
                 [<ffffffff81cdaba5>] dev_attr_show+0x45/0xc0
                 [<ffffffff8171f1b3>] sysfs_kf_seq_show+0x203/0x3c0
                 [<ffffffff8171a6a1>] kernfs_seq_show+0x121/0x1b0
                 [<ffffffff81617c71>] seq_read+0x2f1/0x1160
                 [<ffffffff8171c911>] kernfs_fop_read+0x321/0x460
                 [<ffffffff815abc20>] __vfs_read+0xe0/0x3d0
                 [<ffffffff815ae90e>] vfs_read+0xde/0x2d0
                 [<ffffffff815b1d01>] SyS_read+0x111/0x230
                 [<ffffffff822e8636>] entry_SYSCALL_64_fastpath+0x16/0x76
      
          -> #0 (s_active#171){++++.+}:
                 [<ffffffff81244f24>] __lock_acquire+0x4304/0x5990
                 [<ffffffff8124817d>] lock_acquire+0x13d/0x320
                 [<ffffffff81717d3a>] __kernfs_remove+0x58a/0x810
                 [<ffffffff8171a115>] kernfs_remove_by_name_ns+0x45/0xa0
                 [<ffffffff81721592>] remove_files.isra.0+0x72/0x190
                 [<ffffffff8172174b>] sysfs_remove_group+0x9b/0x150
                 [<ffffffff81721854>] sysfs_remove_groups+0x54/0xa0
                 [<ffffffff81cd97d0>] device_remove_attrs+0xb0/0x140
                 [<ffffffff81cdb27c>] device_del+0x38c/0x6b0
                 [<ffffffffa0724b8b>] rc_register_device+0x8cb/0x1450 [rc_core]
                 [<ffffffffa1326a7b>] dvb_usb_remote_init+0x66b/0x14d0 [dvb_usb]
                 [<ffffffffa1321c81>] dvb_usb_device_init+0xf21/0x1860 [dvb_usb]
                 [<ffffffffa13517dc>] dib0700_probe+0x14c/0x410 [dvb_usb_dib0700]
                 [<ffffffff81dbb1dd>] usb_probe_interface+0x45d/0x940
                 [<ffffffff81ce7e7a>] driver_probe_device+0x21a/0xc30
                 [<ffffffff81ce89b1>] __driver_attach+0x121/0x160
                 [<ffffffff81ce21bf>] bus_for_each_dev+0x11f/0x1a0
                 [<ffffffff81ce6cdd>] driver_attach+0x3d/0x50
                 [<ffffffff81ce5df9>] bus_add_driver+0x4c9/0x770
                 [<ffffffff81cea39c>] driver_register+0x18c/0x3b0
                 [<ffffffff81db6e98>] usb_register_driver+0x1f8/0x440
                 [<ffffffffa074001e>] dib0700_driver_init+0x1e/0x1000 [dvb_usb_dib0700]
                 [<ffffffff810021b1>] do_one_initcall+0x141/0x300
                 [<ffffffff8144d8eb>] do_init_module+0x1d0/0x5ad
                 [<ffffffff812f27b6>] load_module+0x6666/0x9ba0
                 [<ffffffff812f5fe8>] SyS_finit_module+0x108/0x130
                 [<ffffffff822e8636>] entry_SYSCALL_64_fastpath+0x16/0x76
      
          other info that might help us debug this:
      
           Possible unsafe locking scenario:
      
                 CPU0                    CPU1
                 ----                    ----
            lock(&dev->lock);
                                         lock(s_active#171);
                                         lock(&dev->lock);
            lock(s_active#171);
      
           *** DEADLOCK ***
      
          3 locks held by systemd-udevd/2681:
           #0:  (&dev->mutex){......}, at: [<ffffffff81ce8933>] __driver_attach+0xa3/0x160
           #1:  (&dev->mutex){......}, at: [<ffffffff81ce8941>] __driver_attach+0xb1/0x160
           #2:  (&dev->lock){+.+.+.}, at: [<ffffffffa0724def>] rc_register_device+0xb2f/0x1450 [rc_core]
      
      In this specific case, some error happened during device init,
      causing IR to be disabled.
      
      Let's fix it by adding a var that will tell when the device is
      initialized. Any calls before that will return a -EINVAL.
      
      That should prevent the race issues.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      c73bbaa4
    • Mauro Carvalho Chehab's avatar
      [media] v4l2-mc: add a routine to create USB media_device · eee7d353
      Mauro Carvalho Chehab authored
      Instead of copying exactly the same code on all USB devices,
      add an ancillary routine that will create and fill the
      struct media_device with the values imported from the USB
      device.
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      eee7d353
    • Mauro Carvalho Chehab's avatar
      [media] v4l2-mc.h: prevent it for being included twice · db152276
      Mauro Carvalho Chehab authored
      Don't let it be included twice, to avoid compiler issues.
      Acked-by: default avatarHans Verkuil <hans.verkuil@cisco.com>
      Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@osg.samsung.com>
      db152276
  2. 11 Feb, 2016 3 commits
  3. 10 Feb, 2016 25 commits
  4. 09 Feb, 2016 1 commit
    • Mauro Carvalho Chehab's avatar
      Merge tag 'v4.5-rc3' into patchwork · 85e91f80
      Mauro Carvalho Chehab authored
      Linux 4.5-rc3
      
      * tag 'v4.5-rc3': (644 commits)
        Linux 4.5-rc3
        epoll: restrict EPOLLEXCLUSIVE to POLLIN and POLLOUT
        radix-tree: fix oops after radix_tree_iter_retry
        MAINTAINERS: trim the file triggers for ABI/API
        dax: dirty inode only if required
        thp: make deferred_split_scan() work again
        mm: replace vma_lock_anon_vma with anon_vma_lock_read/write
        ocfs2/dlm: clear refmap bit of recovery lock while doing local recovery cleanup
        um: asm/page.h: remove the pte_high member from struct pte_t
        mm, hugetlb: don't require CMA for runtime gigantic pages
        mm/hugetlb: fix gigantic page initialization/allocation
        mm: downgrade VM_BUG in isolate_lru_page() to warning
        mempolicy: do not try to queue pages from !vma_migratable()
        mm, vmstat: fix wrong WQ sleep when memory reclaim doesn't make any progress
        vmstat: make vmstat_update deferrable
        mm, vmstat: make quiet_vmstat lighter
        mm/Kconfig: correct description of DEFERRED_STRUCT_PAGE_INIT
        memblock: don't mark memblock_phys_mem_size() as __init
        dump_stack: avoid potential deadlocks
        mm: validate_mm browse_rb SMP race condition
        ...
      85e91f80
  5. 07 Feb, 2016 2 commits
    • Linus Torvalds's avatar
      Linux 4.5-rc3 · 388f7b1d
      Linus Torvalds authored
      388f7b1d
    • Linus Torvalds's avatar
      Merge tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc · c17dfb01
      Linus Torvalds authored
      Pull ARM SoC fixes from Olof Johansson:
       "The first real batch of fixes for this release cycle, so there are a
        few more than usual.
      
        Most of these are fixes and tweaks to board support (DT bugfixes,
        etc).  I've also picked up a couple of small cleanups that seemed
        innocent enough that there was little reason to wait (const/
        __initconst and Kconfig deps).
      
        Quite a bit of the changes on OMAP were due to fixes to no longer
        write to rodata from assembly when ARM_KERNMEM_PERMS was enabled, but
        there were also other fixes.
      
        Kirkwood had a bunch of gpio fixes for some boards.  OMAP had RTC
        fixes on OMAP5, and Nomadik had changes to MMC parameters in DT.
      
        All in all, mostly the usual mix of various fixes"
      
      * tag 'armsoc-fixes' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (46 commits)
        ARM: multi_v7_defconfig: enable DW_WATCHDOG
        ARM: nomadik: fix up SD/MMC DT settings
        ARM64: tegra: Add chosen node for tegra132 norrin
        ARM: realview: use "depends on" instead of "if" after prompt
        ARM: tango: use "depends on" instead of "if" after prompt
        ARM: tango: use const and __initconst for smp_operations
        ARM: realview: use const and __initconst for smp_operations
        bus: uniphier-system-bus: revive tristate prompt
        arm64: dts: Add missing DMA Abort interrupt to Juno
        bus: vexpress-config: Add missing of_node_put
        ARM: dts: am57xx: sbc-am57x: correct Eth PHY settings
        ARM: dts: am57xx: cl-som-am57x: fix CPSW EMAC pinmux
        ARM: dts: am57xx: sbc-am57x: fix UART3 pinmux
        ARM: dts: am57xx: cl-som-am57x: update SPI Flash frequency
        ARM: dts: am57xx: cl-som-am57x: set HOST mode for USB2
        ARM: dts: am57xx: sbc-am57x: fix SB-SOM EEPROM I2C address
        ARM: dts: LogicPD Torpedo: Revert Duplicative Entries
        ARM: dts: am437x: pixcir_tangoc: use correct flags for irq types
        ARM: dts: am4372: fix irq type for arm twd and global timer
        ARM: dts: at91: sama5d4 xplained: fix phy0 IRQ type
        ...
      c17dfb01