13 Dec, 2014

1 commit

  • Pull trivial tree update from Jiri Kosina:
    "Usual stuff: documentation updates, printk() fixes, etc"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (24 commits)
    intel_ips: fix a type in error message
    cpufreq: cpufreq-dt: Move newline to end of error message
    ps3rom: fix error return code
    treewide: fix typo in printk and Kconfig
    ARM: dts: bcm63138: change "interupts" to "interrupts"
    Replace mentions of "list_struct" to "list_head"
    kernel: trace: fix printk message
    scsi: mpt2sas: fix ioctl in comment
    zbud, zswap: change module author email
    clocksource: Fix 'clcoksource' typo in comment
    arm: fix wording of "Crotex" in CONFIG_ARCH_EXYNOS3 help
    gpio: msm-v1: make boolean argument more obvious
    usb: Fix typo in usb-serial-simple.c
    PCI: Fix comment typo 'COMFIG_PM_OPS'
    powerpc: Fix comment typo 'CONIFG_8xx'
    powerpc: Fix comment typos 'CONFiG_ALTIVEC'
    clk: st: Spelling s/stucture/structure/
    isci: Spelling s/stucture/structure/
    usb: gadget: zero: Spelling s/infrastucture/infrastructure/
    treewide: Fix company name in module descriptions
    ...

    Linus Torvalds
     

12 Dec, 2014

2 commits

  • Pull sound updates from Takashi Iwai:
    "This became a fairly large pull request. In addition to the usual
    driver updates / fixes, there have been a high amount of cleanups in
    ASoC area, as well as control API helpers and kernel documentations
    fixes touching through the whole tree.

    In the driver side, the biggest changes are the support for new Intel
    SoC found on new x86 machines, and the updates of FireWire dice and
    oxfw drivers.

    Some remarkable items are below:

    ALSA core:
    - PCM mmap code cleanup, removal of arch-dependent codes
    - PCM xrun injection support
    - PCM hwptr tracepoint support
    - Refactoring of snd_pcm_action(), simplification of PCM locking
    - Robustified sequecner auto-load functionality
    - New control API helpers and lots of cleanups along with them
    - Lots of kerneldoc fixes and cleanups

    USB-audio:
    - The mixer resume code was largely rewritten, and the devices with
    quirks are resumed properly.
    - New hardware support: Focusrite Scarlett, Digidesign Mbox1,
    Denon/Marantz DACs, Zoom R16/24

    FireWire:
    - DICE driver updates with better duplex and sync support, including
    MIDI support
    - New OXFW driver for Oxford Semiconductor FW970/971 chipset,
    including the previous LaCie Speakers device. Fullduplex and MIDI
    support included as well as DICE driver.

    HD-audio:
    - Refactoring the driver-caps quirk handling in snd-hda-intel
    - More consistent control names representing the topology better
    - Fixups: HP mute LED with ALC268 codec, Ideapad S210 built-in mic
    fix, ASUS Z99He laptop EAPD

    ASoC:
    - Conversion of AC'97 drivers to use regmap, bringing us closer to
    the removal of the ASoC level I/O code
    - Clean up a lot of old drivers that were open coding things that
    have subsequently been implemented in the core
    - Some DAPM performance improvements
    - Removal of the now seldom used CODEC mutex
    - Lots of updates for the newer Intel SoC support, including support
    for the DSP and some Cherrytrail and Braswell machine drivers
    - Support for Samsung boards using rt5631 as the CODEC
    - Removal of the obsolete AFEB9260 machine driver
    - Driver support for the TI TS3A227E headset driver used in some
    Chrombeooks

    Others:
    - ASIHPI driver update and cleanups
    - Lots of dev_*() printk conversions
    - Lots of trivial cleanups for the codes spotted by Coccinelle"

    * tag 'sound-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (594 commits)
    ALSA: pcxhr: NULL dereference on probe failure
    ALSA: lola: NULL dereference on probe failure
    ALSA: hda - Add "eapd" model string for AD1986A codec
    ALSA: hda - Add EAPD fixup for ASUS Z99He laptop
    ALSA: oxfw: Add hwdep interface
    ALSA: oxfw: Add support for capture/playback MIDI messages
    ALSA: oxfw: add support for capturing PCM samples
    ALSA: oxfw: Add support AMDTP in-stream
    ALSA: oxfw: Add support for Behringer/Mackie devices
    ALSA: oxfw: Change the way to start stream
    ALSA: oxfw: Add proc interface for debugging purpose
    ALSA: oxfw: Change the way to make PCM rules/constraints
    ALSA: oxfw: Add support for AV/C stream format command to get/set supported stream formation
    ALSA: oxfw: Change the way to name card
    ALSA: dice: Add support for MIDI capture/playback
    ALSA: dice: Add support for capturing PCM samples
    ALSA: dice: Support for non SYT-Match sampling clock source mode
    ALSA: dice: Add support for duplex streams with synchronization
    ALSA: dice: Change the way to start stream
    ALSA: jack: Add dummy snd_jack_set_key() definition
    ...

    Linus Torvalds
     
  • Pull media updates from Mauro Carvalho Chehab:
    - Two new dvb frontend drivers: mn88472 and mn88473
    - A new driver for some PCIe DVBSky cards
    - A new remote controller driver: meson-ir
    - One LIRC staging driver got rewritten and promoted to mainstream:
    igorplugusb
    - A new tuner driver (m88rs6000t)
    - The old omap2 media driver got removed from staging. This driver
    uses an old DMA API and it is likely broken on recent kernels.
    Nobody cared enough to fix it
    - Media bus format moved to a separate header, as DRM will also use the
    definitions there
    - mem2mem_testdev were renamed to vim2m, in order to use the same
    naming convention taken by the other virtual test driver (vivid)
    - Added a new driver for coda SoC (coda-jpeg)
    - The cx88 driver got converted to use videobuf2 core
    - Make DMABUF export buffer to work with DMA Scatter/Gather and Vmalloc
    cores
    - Lots of other fixes, improvements and cleanups on the drivers.

    * tag 'media/v3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media: (384 commits)
    [media] mn88473: One function call less in mn88473_init() after error
    [media] mn88473: Remove uneeded check before release_firmware()
    [media] lirc_zilog: Deletion of unnecessary checks before vfree()
    [media] MAINTAINERS: Add myself as img-ir maintainer
    [media] img-ir: Don't set driver's module owner
    [media] img-ir: Depend on METAG or MIPS or COMPILE_TEST
    [media] img-ir/hw: Drop [un]register_decoder declarations
    [media] img-ir/hw: Fix potential deadlock stopping timer
    [media] img-ir/hw: Always read data to clear buffer
    [media] redrat3: ensure dma is setup properly
    [media] ddbridge: remove unneeded check before dvb_unregister_device()
    [media] si2157: One function call less in si2157_init() after error
    [media] tuners: remove uneeded checks before release_firmware()
    [media] arm: omap2: rx51-peripherals: fix build warning
    [media] stv090x: add an extra protetion against buffer overflow
    [media] stv090x: Remove an unreachable code
    [media] stv090x: Some whitespace cleanups
    [media] em28xx: checkpatch cleanup: whitespaces/new lines cleanups
    [media] si2168: add support for firmware files in new format
    [media] si2168: debug printout for firmware version
    ...

    Linus Torvalds
     

11 Dec, 2014

2 commits

  • Pull ACPI and power management updates from Rafael Wysocki:
    "This time we have some more new material than we used to have during
    the last couple of development cycles.

    The most important part of it to me is the introduction of a unified
    interface for accessing device properties provided by platform
    firmware. It works with Device Trees and ACPI in a uniform way and
    drivers using it need not worry about where the properties come from
    as long as the platform firmware (either DT or ACPI) makes them
    available. It covers both devices and "bare" device node objects
    without struct device representation as that turns out to be necessary
    in some cases. This has been in the works for quite a few months (and
    development cycles) and has been approved by all of the relevant
    maintainers.

    On top of that, some drivers are switched over to the new interface
    (at25, leds-gpio, gpio_keys_polled) and some additional changes are
    made to the core GPIO subsystem to allow device drivers to manipulate
    GPIOs in the "canonical" way on platforms that provide GPIO
    information in their ACPI tables, but don't assign names to GPIO lines
    (in which case the driver needs to do that on the basis of what it
    knows about the device in question). That also has been approved by
    the GPIO core maintainers and the rfkill driver is now going to use
    it.

    Second is support for hardware P-states in the intel_pstate driver.
    It uses CPUID to detect whether or not the feature is supported by the
    processor in which case it will be enabled by default. However, it
    can be disabled entirely from the kernel command line if necessary.

    Next is support for a platform firmware interface based on ACPI
    operation regions used by the PMIC (Power Management Integrated
    Circuit) chips on the Intel Baytrail-T and Baytrail-T-CR platforms.
    That interface is used for manipulating power resources and for
    thermal management: sensor temperature reporting, trip point setting
    and so on.

    Also the ACPI core is now going to support the _DEP configuration
    information in a limited way. Basically, _DEP it supposed to reflect
    off-the-hierarchy dependencies between devices which may be very
    indirect, like when AML for one device accesses locations in an
    operation region handled by another device's driver (usually, the
    device depended on this way is a serial bus or GPIO controller). The
    support added this time is sufficient to make the ACPI battery driver
    work on Asus T100A, but it is general enough to be able to cover some
    other use cases in the future.

    Finally, we have a new cpufreq driver for the Loongson1B processor.

    In addition to the above, there are fixes and cleanups all over the
    place as usual and a traditional ACPICA update to a recent upstream
    release.

    As far as the fixes go, the ACPI LPSS (Low-power Subsystem) driver for
    Intel platforms should be able to handle power management of the DMA
    engine correctly, the cpufreq-dt driver should interact with the
    thermal subsystem in a better way and the ACPI backlight driver should
    handle some more corner cases, among other things.

    On top of the ACPICA update there are fixes for race conditions in the
    ACPICA's interrupt handling code which might lead to some random and
    strange looking failures on some systems.

    In the cleanups department the most visible part is the series of
    commits targeted at getting rid of the CONFIG_PM_RUNTIME configuration
    option. That was triggered by a discussion regarding the generic
    power domains code during which we realized that trying to support
    certain combinations of PM config options was painful and not really
    worth it, because nobody would use them in production anyway. For
    this reason, we decided to make CONFIG_PM_SLEEP select
    CONFIG_PM_RUNTIME and that lead to the conclusion that the latter
    became redundant and CONFIG_PM could be used instead of it. The
    material here makes that replacement in a major part of the tree, but
    there will be at least one more batch of that in the second part of
    the merge window.

    Specifics:

    - Support for retrieving device properties information from ACPI _DSD
    device configuration objects and a unified device properties
    interface for device drivers (and subsystems) on top of that. As
    stated above, this works with Device Trees and ACPI and allows
    device drivers to be written in a platform firmware (DT or ACPI)
    agnostic way. The at25, leds-gpio and gpio_keys_polled drivers are
    now going to use this new interface and the GPIO subsystem is
    additionally modified to allow device drivers to assign names to
    GPIO resources returned by ACPI _CRS objects (in case _DSD is not
    present or does not provide the expected data). The changes in
    this set are mostly from Mika Westerberg, Rafael J Wysocki, Aaron
    Lu, and Darren Hart with some fixes from others (Fabio Estevam,
    Geert Uytterhoeven).

    - Support for Hardware Managed Performance States (HWP) as described
    in Volume 3, section 14.4, of the Intel SDM in the intel_pstate
    driver. CPUID is used to detect whether or not the feature is
    supported by the processor. If supported, it will be enabled
    automatically unless the intel_pstate=no_hwp switch is present in
    the kernel command line. From Dirk Brandewie.

    - New Intel Broadwell-H ID for intel_pstate (Dirk Brandewie).

    - Support for firmware interface based on ACPI operation regions used
    by the PMIC chips on the Intel Baytrail-T and Baytrail-T-CR
    platforms for power resource control and thermal management (Aaron
    Lu).

    - Limited support for retrieving off-the-hierarchy dependencies
    between devices from ACPI _DEP device configuration objects and
    deferred probing support for the ACPI battery driver based on the
    _DEP information to make that driver work on Asus T100A (Lan
    Tianyu).

    - New cpufreq driver for the Loongson1B processor (Kelvin Cheung).

    - ACPICA update to upstream revision 20141107 which only affects
    tools (Bob Moore).

    - Fixes for race conditions in the ACPICA's interrupt handling code
    and in the ACPI code related to system suspend and resume (Lv Zheng
    and Rafael J Wysocki).

    - ACPI core fix for an RCU-related issue in the ioremap() regions
    management code that slowed down significantly after CPUs had been
    allowed to enter idle states even if they'd had RCU callbakcs
    queued and triggered some problems in certain proprietary graphics
    driver (and elsewhere). The fix replaces synchronize_rcu() in that
    code with synchronize_rcu_expedited() which makes the issue go
    away. From Konstantin Khlebnikov.

    - ACPI LPSS (Low-Power Subsystem) driver fix to handle power
    management of the DMA engine included into the LPSS correctly. The
    problem is that the DMA engine doesn't have ACPI PM support of its
    own and it simply is turned off when the last LPSS device having
    ACPI PM support goes into D3cold. To work around that, the PM
    domain used by the ACPI LPSS driver is redesigned so at least one
    device with ACPI PM support will be on as long as the DMA engine is
    in use. From Andy Shevchenko.

    - ACPI backlight driver fix to avoid using it on "Win8-compatible"
    systems where it doesn't work and where it was used by default by
    mistake (Aaron Lu).

    - Assorted minor ACPI core fixes and cleanups from Tomasz Nowicki,
    Sudeep Holla, Huang Rui, Hanjun Guo, Fabian Frederick, and Ashwin
    Chaugule (mostly related to the upcoming ARM64 support).

    - Intel RAPL (Running Average Power Limit) power capping driver fixes
    and improvements including new processor IDs (Jacob Pan).

    - Generic power domains modification to power up domains after
    attaching devices to them to meet the expectations of device
    drivers and bus types assuming devices to be accessible at probe
    time (Ulf Hansson).

    - Preliminary support for controlling device clocks from the generic
    power domains core code and modifications of the ARM/shmobile
    platform to use that feature (Ulf Hansson).

    - Assorted minor fixes and cleanups of the generic power domains core
    code (Ulf Hansson, Geert Uytterhoeven).

    - Assorted minor fixes and cleanups of the device clocks control code
    in the PM core (Geert Uytterhoeven, Grygorii Strashko).

    - Consolidation of device power management Kconfig options by making
    CONFIG_PM_SLEEP select CONFIG_PM_RUNTIME and removing the latter
    which is now redundant (Rafael J Wysocki and Kevin Hilman). That
    is the first batch of the changes needed for this purpose.

    - Core device runtime power management support code cleanup related
    to the execution of callbacks (Andrzej Hajda).

    - cpuidle ARM support improvements (Lorenzo Pieralisi).

    - cpuidle cleanup related to the CPUIDLE_FLAG_TIME_VALID flag and a
    new MAINTAINERS entry for ARM Exynos cpuidle (Daniel Lezcano and
    Bartlomiej Zolnierkiewicz).

    - New cpufreq driver callback (->ready) to be executed when the
    cpufreq core is ready to use a given policy object and cpufreq-dt
    driver modification to use that callback for cooling device
    registration (Viresh Kumar).

    - cpufreq core fixes and cleanups (Viresh Kumar, Vince Hsu, James
    Geboski, Tomeu Vizoso).

    - Assorted fixes and cleanups in the cpufreq-pcc, intel_pstate,
    cpufreq-dt, pxa2xx cpufreq drivers (Lenny Szubowicz, Ethan Zhao,
    Stefan Wahren, Petr Cvek).

    - OPP (Operating Performance Points) framework modification to allow
    OPPs to be removed too and update of a few cpufreq drivers
    (cpufreq-dt, exynos5440, imx6q, cpufreq) to remove OPPs (added
    during initialization) on driver removal (Viresh Kumar).

    - Hibernation core fixes and cleanups (Tina Ruchandani and Markus
    Elfring).

    - PM Kconfig fix related to CPU power management (Pankaj Dubey).

    - cpupower tool fix (Prarit Bhargava)"

    * tag 'pm+acpi-3.19-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/rafael/linux-pm: (120 commits)
    i2c-omap / PM: Drop CONFIG_PM_RUNTIME from i2c-omap.c
    dmaengine / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    tools: cpupower: fix return checks for sysfs_get_idlestate_count()
    drivers: sh / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    e1000e / igb / PM: Eliminate CONFIG_PM_RUNTIME
    MMC / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    MFD / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    misc / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    media / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    input / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    leds: leds-gpio: Fix multiple instances registration without 'label' property
    iio / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    hsi / OMAP / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    i2c-hid / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    drm / exynos / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    gpio / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    hwrandom / exynos / PM: Use CONFIG_PM in #ifdef
    block / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    USB / PM: Drop CONFIG_PM_RUNTIME from the USB core
    PM: Merge the SET*_RUNTIME_PM_OPS() macros
    ...

    Linus Torvalds
     
  • Pull VFS changes from Al Viro:
    "First pile out of several (there _definitely_ will be more). Stuff in
    this one:

    - unification of d_splice_alias()/d_materialize_unique()

    - iov_iter rewrite

    - killing a bunch of ->f_path.dentry users (and f_dentry macro).

    Getting that completed will make life much simpler for
    unionmount/overlayfs, since then we'll be able to limit the places
    sensitive to file _dentry_ to reasonably few. Which allows to have
    file_inode(file) pointing to inode in a covered layer, with dentry
    pointing to (negative) dentry in union one.

    Still not complete, but much closer now.

    - crapectomy in lustre (dead code removal, mostly)

    - "let's make seq_printf return nothing" preparations

    - assorted cleanups and fixes

    There _definitely_ will be more piles"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs: (63 commits)
    copy_from_iter_nocache()
    new helper: iov_iter_kvec()
    csum_and_copy_..._iter()
    iov_iter.c: handle ITER_KVEC directly
    iov_iter.c: convert copy_to_iter() to iterate_and_advance
    iov_iter.c: convert copy_from_iter() to iterate_and_advance
    iov_iter.c: get rid of bvec_copy_page_{to,from}_iter()
    iov_iter.c: convert iov_iter_zero() to iterate_and_advance
    iov_iter.c: convert iov_iter_get_pages_alloc() to iterate_all_kinds
    iov_iter.c: convert iov_iter_get_pages() to iterate_all_kinds
    iov_iter.c: convert iov_iter_npages() to iterate_all_kinds
    iov_iter.c: iterate_and_advance
    iov_iter.c: macros for iterating over iov_iter
    kill f_dentry macro
    dcache: fix kmemcheck warning in switch_names
    new helper: audit_file()
    nfsd_vfs_write(): use file_inode()
    ncpfs: use file_inode()
    kill f_dentry uses
    lockd: get rid of ->f_path.dentry->d_sb
    ...

    Linus Torvalds
     

09 Dec, 2014

2 commits

  • Al Viro
     
  • * pm-runtime: (25 commits)
    i2c-omap / PM: Drop CONFIG_PM_RUNTIME from i2c-omap.c
    dmaengine / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    drivers: sh / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    e1000e / igb / PM: Eliminate CONFIG_PM_RUNTIME
    MMC / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    MFD / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    misc / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    media / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    input / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    iio / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    hsi / OMAP / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    i2c-hid / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    drm / exynos / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    gpio / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    hwrandom / exynos / PM: Use CONFIG_PM in #ifdef
    block / PM: Replace CONFIG_PM_RUNTIME with CONFIG_PM
    USB / PM: Drop CONFIG_PM_RUNTIME from the USB core
    PM: Merge the SET*_RUNTIME_PM_OPS() macros
    PM / Kconfig: Do not select PM directly from Kconfig files
    PCI / PM: Drop CONFIG_PM_RUNTIME from the PCI core
    ...

    Rafael J. Wysocki
     

08 Dec, 2014

1 commit

  • ASoC: Updates for v3.19

    Lots and lots of changes this time around, the usual set of driver
    updates and a huge bulk of cleanups from Lars-Peter. Probably the most
    interesting thing for most users is the Intel driver updates which will
    (with some more machine integration work) enable support for newer x86
    laptops.

    - Conversion of AC'97 drivers to use regmap, bringing us closer to the
    removal of the ASoC level I/O code.
    - Clean up a lot of old drivers that were open coding things that have
    subsequently been implemented in the core.
    - Some DAPM performance improvements.
    - Removal of the now seldom used CODEC mutex.
    - Lots of updates for the newer Intel SoC support, including support
    for the DSP and some Cherrytrail and Braswell machine drivers.
    - Support for Samsung boards using rt5631 as the CODEC.
    - Removal of the obsolete AFEB9260 machine driver.
    - Driver support for the TI TS3A227E headset driver used in some
    Chrombeooks.

    Takashi Iwai
     

05 Dec, 2014

15 commits

  • After commit b2b49ccbdd54 (PM: Kconfig: Set PM_RUNTIME if PM_SLEEP is
    selected) PM_RUNTIME is always set if PM is set, so #ifdef blocks
    depending on CONFIG_PM_RUNTIME may now be changed to depend on
    CONFIG_PM.

    The alternative of CONFIG_PM_SLEEP and CONFIG_PM_RUNTIME may be
    replaced with CONFIG_PM too.

    Make these changes everywhere under drivers/media/.

    Acked-by: Sylwester Nawrocki
    Acked-by: Philipp Zabel
    Acked-by: Kamil Debski
    Acked-by: Mauro Carvalho Chehab
    Signed-off-by: Rafael J. Wysocki

    Rafael J. Wysocki
     
  • Don't bother setting .owner = THIS_MODULE, since it's already handled by
    the platform_driver_register macro.

    Signed-off-by: James Hogan
    Signed-off-by: Mauro Carvalho Chehab

    James Hogan
     
  • The ImgTec Infrared decoder block which img-ir drives is only used in
    IMGWorks SoCs so far, such as the TZ1090 (Meta based) and the upcoming
    Pistachio (MIPS based). Therefore make the driver depend on METAG (for
    TZ1090) or MIPS (for Pistachio) or COMPILE_TEST (so that it is included
    in x86 allmodconfig builds), to avoid cluttering the Kconfig menu with
    drivers for hardware that isn't yet available on other platforms.

    Signed-off-by: James Hogan
    Signed-off-by: Mauro Carvalho Chehab

    James Hogan
     
  • The img_ir_register_decoder() and img_ir_unregister_decoder() functions
    were dropped prior to the img-ir driver being applied to simplify the
    protocol decoder setup. However the declarations of these functions in
    img-ir-hw.h were still included. Delete them since they're completely
    unused.

    Signed-off-by: James Hogan
    Signed-off-by: Mauro Carvalho Chehab

    James Hogan
     
  • The end timer is used for switching back from repeat code timings when
    no repeat codes have been received for a certain amount of time. When
    the protocol is changed, the end timer is deleted synchronously with
    del_timer_sync(), however this takes place while holding the main spin
    lock, and the timer handler also needs to acquire the spin lock.

    This opens the possibility of a deadlock on an SMP system if the
    protocol is changed just as the repeat timer is expiring. One CPU could
    end up in img_ir_set_decoder() holding the lock and waiting for the end
    timer to complete, while the other CPU is stuck in the timer handler
    spinning on the lock held by the first CPU.

    Lockdep also spots a possible lock inversion in the same code, since
    img_ir_set_decoder() acquires the img-ir lock before the timer lock, but
    the timer handler will try and acquire them the other way around:

    =========================================================
    [ INFO: possible irq lock inversion dependency detected ]
    3.18.0-rc5+ #957 Not tainted
    ---------------------------------------------------------
    swapper/0/0 just changed the state of lock:
    (((&hw->end_timer))){+.-...}, at: [] _call_timer_fn+0x0/0xfc
    but this lock was taken by another, HARDIRQ-safe lock in the past:
    (&(&priv->lock)->rlock#2){-.....}

    and interrupts could create inverse lock ordering between them.

    other info that might help us debug this:
    Possible interrupt unsafe locking scenario:

    CPU0 CPU1
    ---- ----
    lock(((&hw->end_timer)));
    local_irq_disable();
    lock(&(&priv->lock)->rlock#2);
    lock(((&hw->end_timer)));

    lock(&(&priv->lock)->rlock#2);

    *** DEADLOCK ***

    This is fixed by releasing the main spin lock while performing the
    del_timer_sync() call. The timer is prevented from restarting before the
    lock is reacquired by a new "stopping" flag which img_ir_handle_data()
    checks before updating the timer.

    ---------------------------------------------------------
    swapper/0/0 just changed the state of lock:
    (((&hw->end_timer))){+.-...}, at: [] _call_timer_fn+0x0/0xfc
    but this lock was taken by another, HARDIRQ-safe lock in the past:
    (&(&priv->lock)->rlock#2){-.....}
    and interrupts could create inverse lock ordering between them.
    other info that might help us debug this:
    Possible interrupt unsafe locking scenario:
    CPU0 CPU1
    ---- ----
    lock(((&hw->end_timer)));
    local_irq_disable();
    lock(&(&priv->lock)->rlock#2);
    lock(((&hw->end_timer)));

    lock(&(&priv->lock)->rlock#2);
    *** DEADLOCK ***
    This is fixed by releasing the main spin lock while performing the
    del_timer_sync() call. The timer is prevented from restarting before the
    lock is reacquired by a new "stopping" flag which img_ir_handle_data()
    checks before updating the timer.

    Signed-off-by: James Hogan
    Cc: Sifan Naeem
    Cc: # v3.15+
    Signed-off-by: Mauro Carvalho Chehab

    James Hogan
     
  • A problem was found on Polaris where if the unit it booted via the power
    button on the infrared remote then the next button press on the remote
    would return the key code used to power on the unit.

    The sequence is:
    - The polaris powered off but with the powerdown controller (PDC) block
    still powered.
    - Press power key on remote, IR block receives the key.
    - Kernel starts, IR code is in IMG_IR_DATA_x but neither IMG_IR_RXDVAL
    or IMG_IR_RXDVALD2 are set.
    - Wait any amount of time.
    - Press any key.
    - IMG_IR_RXDVAL or IMG_IR_RXDVALD2 is set but IMG_IR_DATA_x is
    unchanged since the powerup key data was never read.

    This is worked around by always reading the IMG_IR_DATA_x in
    img_ir_set_decoder(), rather than only when the IMG_IR_RXDVAL or
    IMG_IR_RXDVALD2 bit is set.

    Signed-off-by: Dylan Rajaratnam
    Signed-off-by: James Hogan
    Cc: # v3.15+
    Signed-off-by: Mauro Carvalho Chehab

    Dylan Rajaratnam
     
  • This fixes the driver on arm.

    Reported-by: Steven Guitton
    Tested-by: Steven Guitton
    Signed-off-by: Sean Young
    Signed-off-by: Mauro Carvalho Chehab

    Sean Young
     
  • The dvb_unregister_device() function tests whether its argument is NULL
    and then returns immediately. Thus the test around the call is not needed.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring
    Signed-off-by: Mauro Carvalho Chehab

    Markus Elfring
     
  • The release_firmware() function was called in some cases by the si2157_init()
    function during error handling even if the passed variable contained still
    a null pointer. This implementation detail could be improved
    by the introduction of another jump label.

    Signed-off-by: Markus Elfring
    Signed-off-by: Mauro Carvalho Chehab

    Markus Elfring
     
  • The release_firmware() function tests whether its argument is NULL
    and then returns immediately. Thus the test around the call is not needed.

    This issue was detected by using the Coccinelle software.

    Signed-off-by: Markus Elfring
    Signed-off-by: Mauro Carvalho Chehab

    Markus Elfring
     
  • As pointed by smatch:
    drivers/media/dvb-frontends/stv090x.c:2787 stv090x_optimize_carloop() error: buffer overflow 'car_loop_apsk_low' 11

    Mauro Carvalho Chehab
     
  • if STV090x_RANGEOK is not returned, then STV090x_OUTOFRANGE
    is returned. However, that part of the code is never reached,
    as pointed by smatch:

    drivers/media/dvb-frontends/stv090x.c:2673 stv090x_get_sig_params() info: ignoring unreachable code.

    So, remove the two uneeded elses, with makes the code a little bit
    cleaner.

    No functional changes, and one less smatch warning.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • While writing changeset fdf1bc9fa2cf, I noticed some checkpatch
    complains about the CodingStyle for function parameters. So,
    clean them.

    While here, also removes uneeded "extern" from function prototype.

    No functional changes.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • This patch is basically produced while testing a tool that
    Joe Perches sent upstream sometime ago:
    https://lkml.org/lkml/2014/7/11/794

    I used it with those arguments:
    $ reformat_with_checkpatch.sh drivers/media/usb/em28xx/em28xx*.[ch]

    It actually produced 24 patches, with is too much, and showed
    interesting things: gcc produced different codes on most of the
    patches, even with just linespace changes. The total code data
    remained the same on all cases I checked though.

    Anyway, provided that we fold the resulting patches, this tool
    seems useful.

    Signed-off-by: Mauro Carvalho Chehab

    Mauro Carvalho Chehab
     
  • This patch adds support for new type of firmware versions of Si2168 chip.

    Old type: n x 8 bytes (all data, first byte seems to be 04 or 05)
    New type: n x 17 bytes (1 byte indicates len and max 16 bytes data)

    New version of TechnoTrend CT2-4400 drivers
    (http://www.tt-downloads.de/bda-treiber_4.3.0.0.zip) contains newer
    firmware for Si2168-B40 that is in the new format. It can be extracted
    with the following command:

    dd if=ttTVStick4400_64.sys ibs=1 skip=323872 count=6919 of=dvb-demod-si2168-b40-01.fw

    Signed-off-by: Olli Salonen
    Reviewed-by: Antti Palosaari
    Signed-off-by: Mauro Carvalho Chehab

    Olli Salonen
     

04 Dec, 2014

13 commits


02 Dec, 2014

4 commits

  • When compiling under COMPILE_TEST on a x86_64 the following warnings
    appear:

    drivers/media/platform/omap/omap_vout.c: In function 'omap_vout_uservirt_to_phys':
    drivers/media/platform/omap/omap_vout.c:209:23: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    return virt_to_phys((void *) virtp);
    ^
    drivers/media/platform/omap/omap_vout.c: In function 'omapvid_setup_overlay':
    drivers/media/platform/omap/omap_vout.c:420:2: warning: format '%x' expects argument of type 'unsigned int', but argument 5 has type 'dma_addr_t' [-Wformat=]
    v4l2_dbg(1, debug, &vout->vid_dev->v4l2_dev,
    ^
    drivers/media/platform/omap/omap_vout.c: In function 'omap_vout_buffer_prepare':
    drivers/media/platform/omap/omap_vout.c:794:34: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    vout->queued_buf_addr[vb->i] = (u8 *)
    ^
    In file included from arch/x86/include/asm/dma-mapping.h:44:0,
    from include/linux/dma-mapping.h:82,
    from drivers/media/platform/omap/omap_vout.c:40:
    drivers/media/platform/omap/omap_vout.c:803:58: warning: cast to pointer from integer of different size [-Wint-to-pointer-cast]
    dma_addr = dma_map_single(vout->vid_dev->v4l2_dev.dev, (void *) addr,
    ^
    include/asm-generic/dma-mapping-common.h:174:60: note: in definition of macro 'dma_map_single'
    #define dma_map_single(d, a, s, r) dma_map_single_attrs(d, a, s, r, NULL)
    ^

    These are fixed by this patch.

    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Hans Verkuil
     
  • This patch adds support in the capture driver for using
    vb2_ops_wait_prepare/finish() helpers provided by the
    vb2 core.

    Signed-off-by: Lad, Prabhakar
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Prabhakar Lad
     
  • This patch drops driver specific wait_prepare() and
    wait_finish() callbacks from vb2_ops and instead uses
    the the helpers vb2_ops_wait_prepare/finish() provided
    by the vb2 core, the lock member of the queue needs
    to be initalized to a mutex so that vb2 helpers
    vb2_ops_wait_prepare/finish() can make use of it.

    Signed-off-by: Lad, Prabhakar
    Acked-by: Scott Jiang
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Prabhakar Lad
     
  • This patch drops driver specific wait_prepare() and
    wait_finish() callbacks from vb2_ops and instead uses
    the the helpers vb2_ops_wait_prepare/finish() provided
    by the vb2 core, the lock member of the queue needs
    to be initalized to a mutex so that vb2 helpers
    vb2_ops_wait_prepare/finish() can make use of it.

    Signed-off-by: Lad, Prabhakar
    Cc: Jonathan Corbet
    Signed-off-by: Hans Verkuil
    Signed-off-by: Mauro Carvalho Chehab

    Prabhakar Lad