25 Aug, 2016

7 commits


24 Aug, 2016

1 commit


23 Aug, 2016

2 commits


22 Aug, 2016

3 commits

  • The commit 02fc76f6a changed base of the sysfs attributes from device to card.
    The "show" callbacks dereferenced wrong objects because of this.

    Fixes: 02fc76f6a7db ('ALSA: line6: Create sysfs via snd_card_add_dev_attr()')
    Cc: # v4.0+
    Reviewed-by: Stefan Hajnoczi
    Signed-off-by: Andrej Krutak
    Signed-off-by: Takashi Iwai

    Andrej Krutak
     
  • Done, because line6_stream_stop() locks and calls line6_unlink_audio_urbs(),
    which in turn invokes audio_out_callback(), which tries to lock 2nd time.

    Fixes:

    =============================================
    [ INFO: possible recursive locking detected ]
    4.4.15+ #15 Not tainted
    ---------------------------------------------
    mplayer/3591 is trying to acquire lock:
    (&(&line6pcm->out.lock)->rlock){-.-...}, at: [] audio_out_callback+0x70/0x110 [snd_usb_line6]

    but task is already holding lock:
    (&(&line6pcm->out.lock)->rlock){-.-...}, at: [] line6_stream_stop+0x24/0x5c [snd_usb_line6]

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

    CPU0
    ----
    lock(&(&line6pcm->out.lock)->rlock);
    lock(&(&line6pcm->out.lock)->rlock);

    *** DEADLOCK ***

    May be due to missing lock nesting notation

    3 locks held by mplayer/3591:
    #0: (snd_pcm_link_rwlock){.-.-..}, at: [] snd_pcm_stream_lock+0x1e/0x40 [snd_pcm]
    #1: (&(&substream->self_group.lock)->rlock){-.-...}, at: [] snd_pcm_stream_lock+0x26/0x40 [snd_pcm]
    #2: (&(&line6pcm->out.lock)->rlock){-.-...}, at: [] line6_stream_stop+0x24/0x5c [snd_usb_line6]

    stack backtrace:
    CPU: 0 PID: 3591 Comm: mplayer Not tainted 4.4.15+ #15
    Hardware name: Generic AM33XX (Flattened Device Tree)
    [] (unwind_backtrace) from [] (show_stack+0x11/0x14)
    [] (show_stack) from [] (dump_stack+0x8b/0xac)
    [] (dump_stack) from [] (__lock_acquire+0xc8b/0x1780)
    [] (__lock_acquire) from [] (lock_acquire+0x99/0x1c0)
    [] (lock_acquire) from [] (_raw_spin_lock_irqsave+0x3f/0x4c)
    [] (_raw_spin_lock_irqsave) from [] (audio_out_callback+0x70/0x110 [snd_usb_line6])
    [] (audio_out_callback [snd_usb_line6]) from [] (__usb_hcd_giveback_urb+0x53/0xd0)
    [] (__usb_hcd_giveback_urb) from [] (musb_giveback+0x3d/0x98)
    [] (musb_giveback) from [] (musb_urb_dequeue+0x6d/0x114)
    [] (musb_urb_dequeue) from [] (usb_hcd_unlink_urb+0x39/0x98)
    [] (usb_hcd_unlink_urb) from [] (line6_unlink_audio_urbs+0x6a/0x6c [snd_usb_line6])
    [] (line6_unlink_audio_urbs [snd_usb_line6]) from [] (line6_stream_stop+0x42/0x5c [snd_usb_line6])
    [] (line6_stream_stop [snd_usb_line6]) from [] (snd_line6_trigger+0xb6/0xf4 [snd_usb_line6])
    [] (snd_line6_trigger [snd_usb_line6]) from [] (snd_pcm_do_stop+0x36/0x38 [snd_pcm])
    [] (snd_pcm_do_stop [snd_pcm]) from [] (snd_pcm_action_single+0x22/0x40 [snd_pcm])
    [] (snd_pcm_action_single [snd_pcm]) from [] (snd_pcm_action+0xac/0xb0 [snd_pcm])
    [] (snd_pcm_action [snd_pcm]) from [] (snd_pcm_drop+0x38/0x64 [snd_pcm])
    [] (snd_pcm_drop [snd_pcm]) from [] (snd_pcm_common_ioctl1+0x7fe/0xbe8 [snd_pcm])
    [] (snd_pcm_common_ioctl1 [snd_pcm]) from [] (snd_pcm_playback_ioctl1+0x15c/0x51c [snd_pcm])
    [] (snd_pcm_playback_ioctl1 [snd_pcm]) from [] (snd_pcm_playback_ioctl+0x20/0x28 [snd_pcm])
    [] (snd_pcm_playback_ioctl [snd_pcm]) from [] (do_vfs_ioctl+0x3af/0x5c8)

    Fixes: 63e20df1e5b2 ('ALSA: line6: Reorganize PCM stream handling')
    Cc: # v4.0+
    Reviewed-by: Stefan Hajnoczi
    Signed-off-by: Andrej Krutak
    Signed-off-by: Takashi Iwai

    Andrej Krutak
     
  • If there's an error, pcm is released in line6_pcm_acquire already.

    Fixes: 247d95ee6dd2 ('ALSA: line6: Handle error from line6_pcm_acquire()')
    Cc: # v4.0+
    Reviewed-by: Stefan Hajnoczi
    Signed-off-by: Andrej Krutak
    Signed-off-by: Takashi Iwai

    Andrej Krutak
     

19 Aug, 2016

2 commits

  • The dmic-codec was registered within the platform_driver's probe function,
    which can cause deferred probe to run in loops as reported and analyzed by
    Russell King.

    Use module_init/exit in the driver and handle the dmic-codec device
    registration and removal at that level instead of the platform_driver
    probe/remove.

    Signed-off-by: Peter Ujfalusi
    Reported-by: Russell King
    Tested-by: Russell King
    Signed-off-by: Mark Brown

    Peter Ujfalusi
     
  • Both the card and DAPM cleanups recursively delete their debugfs
    directories. Since the DAPM debugfs subdirectory for the card is
    located within the card debugfs this means we end up trying to double
    free the DAPM subdirectory. Reorder the cleanup to free the card
    debugfs after we've cleaned up DAPM and it has deleted its own
    subdirectory.

    Reported-by: Russell King - ARM Linux
    Tested-by: Russell King
    Signed-off-by: Mark Brown

    Mark Brown
     

18 Aug, 2016

1 commit

  • This reverts commit 65aca64d05b5eaa5ce15e18b458a8d338ddbd478.

    The patches for twl6040 MFD and clk missed the merge window and
    causing the McPDM driver to never probe since it is put back to
    the deferred list because the missing drivers.

    Signed-off-by: Peter Ujfalusi
    Signed-off-by: Mark Brown

    Peter Ujfalusi
     

16 Aug, 2016

2 commits

  • commit cbaadf0f90d6 ("ASoC: atmel_ssc_dai: refactor the startup and
    shutdown") refactored code such that the SSC is reset on every
    startup; this breaks duplex audio (e.g. first start audio playback,
    then start record, causing the playback to stop/hang)

    Fixes: cbaadf0f90d6 (ASoC: atmel_ssc_dai: refactor the startup and shutdown)
    Signed-off-by: Christoph Huber
    Signed-off-by: Peter Meerwald-Stadler
    Signed-off-by: Mark Brown
    Cc: stable@vger.kernel.org

    Christoph Huber
     
  • After we have called dpcm_path_get we should make sure to call
    dpcm_path_put on all error paths. This was not happening causing the
    allocated widget list to be leaked, this patch corrects this by adding a
    dpcm_path_put to the error path.

    Signed-off-by: Charles Keepax
    Signed-off-by: Mark Brown

    Charles Keepax
     

12 Aug, 2016

1 commit


11 Aug, 2016

2 commits

  • Anything that sets ret in wm2000_anc_transition will have immediately
    returned anyway as such we will always return an uninitialised ret at the
    bottom of the function. Simply replace the return with a return 0;

    Signed-off-by: Charles Keepax
    Signed-off-by: Mark Brown

    Charles Keepax
     
  • If we fail to find a platform we simply return EPROBE_DEFER,
    but we have allocated the rtd pointer. All error paths before
    soc_add_pcm_runtime need to call soc_free_pcm_runtime first to
    avoid leaking the rtd pointer. A suitable error path already
    exists and is used else where in the function so simply use that
    here as well.

    Signed-off-by: Charles Keepax
    Signed-off-by: Mark Brown

    Charles Keepax
     

10 Aug, 2016

1 commit

  • For SKL and later Intel chips, we control the power well per codec
    basis via link_power callback since the commit [03b135cebc47: ALSA:
    hda - remove dependency on i915 power well for SKL].
    However, there are a few exceptional cases where the gfx registers are
    accessed from the audio driver: namely the wakeup override bit
    toggling at (both system and runtime) resume. This seems causing a
    kernel warning when accessed during the power well down (and likely
    resulting in the bogus register accesses).

    This patch puts the proper power up / down sequence around the resume
    code so that the wakeup bit is fiddled properly while the power is
    up. (The other callback, sync_audio_rate, is used only in the PCM
    callback, so it's guaranteed in the power-on.)

    Also, by this proper power up/down, the instantaneous flip of wakeup
    bit in the resume callback that was introduced by the commit
    [033ea349a7cd: ALSA: hda - Fix Skylake codec timeout] becomes
    superfluous, as snd_hdac_display_power() already does it. So we can
    clean it up together.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=96214
    Fixes: 03b135cebc47 ('ALSA: hda - remove dependency on i915 power well for SKL')
    Cc: # v4.2+
    Tested-by: Hans de Goede
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

09 Aug, 2016

2 commits


05 Aug, 2016

4 commits

  • Pull sound fixes from Takashi Iwai:
    "Nothing existing here: as usual a few HD-audio fixes (device fixups, a
    new AMD PCI ID, and a fix for krealloc() usage), in addition to a fix
    in Kconfig for legacy arm drivers"

    * tag 'sound-fix-4.8-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda - Fix headset mic detection problem for two dell machines
    ALSA: hda: Fix krealloc() with __GFP_ZERO usage
    ALSA: hda: add AMD Bonaire AZ PCI ID with proper driver caps
    ALSA: arm: Fix empty menuconfig SND_ARM
    ALSA: hda - On-board speaker fixup on ACER Veriton
    ALSA: hda/realtek - Can't adjust speaker's volume on a Dell AIO

    Linus Torvalds
     
  • Previously code defaulted to 32 BCLKS per WCLK which meant 24 and
    32 bit DAI formats would not work properly. This patch fixes the
    issue by defaulting to 64 BCLKs per WCLK.

    Signed-off-by: Adam Thomson
    Signed-off-by: Mark Brown

    Adam Thomson
     
  • The patch is to fix the static check error as the following.

    The patch commit b50455fab459 ("ASoC: nau8825: cross talk suppression
    measurement function") from Jun 7, 2016, leads to the following
    static checker warning:

    sound/soc/codecs/nau8825.c:265 nau8825_sema_acquire()
    warn: 'sem:&nau8825->xtalk_sem' is sometimes locked here and
    sometimes unlocked.

    The semaphone acquire function has return value, and some callers
    can do error handling when lock fails.

    Signed-off-by: John Hsu
    Signed-off-by: Mark Brown

    John Hsu
     
  • In chromium, the following steps will make codec function fail.
    \1. plug in headphones, Play music
    \2. run "powerd_dbus_suspend"
    \3. resume from S3
    After resume, the jack detection will restart and make configuration
    for the headset. Meanwhile, the playback prepares and starts to work.
    The two sequences will conflict and make wrong register configuration.

    Originally, the driver adds protection for the case when it finds
    the playback is active. But the "powerd_dbus_suspend" command will
    close the pcm stream before suspend. Therefore, the driver can't
    detect the playback after resume, and the protection not works.
    For the issue, the driver raises protection every time after resume.
    The protection will release after jack detection and configuration
    completes, and then the playback just will goes on.

    Signed-off-by: John Hsu
    Signed-off-by: Mark Brown

    John Hsu
     

04 Aug, 2016

3 commits

  • There is no "pclk" alias in the s3c2440 clk driver for "soc-audio"
    device so related clk_get() fails, which prevents any operation
    of the S3C24XX_UDA134X sound card.
    Instead we get the clock on behalf of the I2S device, i.e. we use
    the I2S block gate clock which has PCLK is its parent clock.

    Without this patch there is an error like:

    s3c24xx_uda134x_startup cannot get pclk
    ASoC: UDA134X startup failed: -2

    Signed-off-by: Sylwester Nawrocki
    Signed-off-by: Mark Brown

    Sylwester Nawrocki
     
  • One of the machines has ALC255 on it, another one has ALC298 on it.

    On the machine with the codec ALC298, it also has the speaker volume
    problem, so we add the fixup chained to ALC298_FIXUP_SPK_VOLUME rather
    than adding a group of pin definition in the pin quirk table, since
    the speak volume problem does not happen on other machines yet.

    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     
  • simple-card-utils might be used as module, but MODULE_xxx()
    information was missed. This patch adds it.
    Otherwise, we will have below error, and can't use it.
    Specil thanks to Kevin.

    > insmod simple-card-utils.ko
    simple_card_utils: module license 'unspecified' taints kernel.
    Disabling lock debugging due to kernel taint
    simple_card_utils: Unknown symbol snd_soc_of_parse_daifmt (err 0)
    simple_card_utils: Unknown symbol snd_soc_of_parse_card_name (err 0)
    insmod: can't insert 'simple-card-utils.ko': \
    unknown symbol in module, or unknown parameter

    Reported-by: Kevin Hilman
    Signed-off-by: Kuninori Morimoto
    Signed-off-by: Mark Brown

    Kuninori Morimoto
     

03 Aug, 2016

2 commits


02 Aug, 2016

4 commits

  • Merge drm updates from Dave Airlie:
    "This is the main drm pull request for 4.8.

    I'm down with a cold at the moment so hopefully this isn't in too bad
    a state, I finished pulling stuff last week mostly (nouveau fixes just
    went in today), so only this message should be influenced by illness.
    Apologies to anyone who's major feature I missed :-)

    Core:
    Lockless GEM BO freeing
    Non-blocking atomic work
    Documentation changes (rst/sphinx)
    Prep for new fencing changes
    Simple display helpers
    Master/auth changes
    Register/unregister rework
    Loads of trivial patches/fixes.

    New stuff:
    ARM Mali display driver (not the 3D chip)
    sii902x RGB->HDMI bridge

    Panel:
    Support for new panels
    Improved backlight support

    Bridge:
    Convert ADV7511 to bridge driver
    ADV7533 support
    TC358767 (DSI/DPI to eDP) encoder chip support

    i915:
    BXT support enabled by default
    GVT-g infrastructure
    GuC command submission and fixes
    BXT workarounds
    SKL/BKL workarounds
    Demidlayering device registration
    Thundering herd fixes
    Missing pci ids
    Atomic updates

    amdgpu/radeon:
    ATPX improvements for better dGPU power control on PX systems
    New power features for CZ/BR/ST
    Pipelined BO moves and evictions in TTM
    GPU scheduler improvements
    GPU reset improvements
    Overclocking on dGPUs with amdgpu
    Polaris powermanagement enabled

    nouveau:
    GK20A/GM20B volt and clock improvements.
    Initial support for GP100/GP104 GPUs, GP104 will not yet support
    acceleration due to NVIDIA having not released firmware for them as of yet.

    exynos:
    Exynos5433 SoC with IOMMU support.

    vc4:
    Shader validation for branching

    imx-drm:
    Atomic mode setting conversion
    Reworked DMFC FIFO allocation
    External bridge support

    analogix-dp:
    RK3399 eDP support
    Lots of fixes.

    rockchip:
    Lots of small fixes.

    msm:
    DT bindings cleanups
    Shrinker and madvise support
    ASoC HDMI codec support

    tegra:
    Host1x driver cleanups
    SOR reworking for DP support
    Runtime PM support

    omapdrm:
    PLL enhancements
    Header refactoring
    Gamma table support

    arcgpu:
    Simulator support

    virtio-gpu:
    Atomic modesetting fixes.

    rcar-du:
    Misc fixes.

    mediatek:
    MT8173 HDMI support

    sti:
    ASOC HDMI codec support
    Minor fixes

    fsl-dcu:
    Suspend/resume support
    Bridge support

    amdkfd:
    Minor fixes.

    etnaviv:
    Enable GPU clock gating

    hisilicon:
    Vblank and other fixes"

    * tag 'drm-for-v4.8' of git://people.freedesktop.org/~airlied/linux: (1575 commits)
    drm/nouveau/gr/nv3x: fix instobj write offsets in gr setup
    drm/nouveau/acpi: fix lockup with PCIe runtime PM
    drm/nouveau/acpi: check for function 0x1B before using it
    drm/nouveau/acpi: return supported DSM functions
    drm/nouveau/acpi: ensure matching ACPI handle and supported functions
    drm/nouveau/fbcon: fix font width not divisible by 8
    drm/amd/powerplay: remove enable_clock_power_gatings_tasks from initialize and resume events
    drm/amd/powerplay: move clockgating to after ungating power in pp for uvd/vce
    drm/amdgpu: add query device id and revision id into system info entry at CGS
    drm/amdgpu: add new definition in bif header
    drm/amd/powerplay: rename smum header guards
    drm/amdgpu: enable UVD context buffer for older HW
    drm/amdgpu: fix default UVD context size
    drm/amdgpu: fix incorrect type of info_id
    drm/amdgpu: make amdgpu_cgs_call_acpi_method as static
    drm/amdgpu: comment out unused defaults_staturn_pro static const structure to fix the build
    drm/amdgpu: enable UVD VM only on polaris
    drm/amdgpu: increase timeout of IB test
    drm/amdgpu: add destroy session when generate VCE destroy msg.
    drm/amd: fix deadlock of job_list_lock V2
    ...

    Linus Torvalds
     
  • Pull ARM SoC driver updates from Olof Johansson:
    "Driver updates for ARM SoCs.

    A slew of changes this release cycle. The reset driver tree, that we
    merge through arm-soc for historical reasons, is also sizable this
    time around.

    Among the changes:

    - clps711x: Treewide changes to compatible strings, merged here for simplicity.
    - Qualcomm: SCM firmware driver cleanups, move to platform driver
    - ux500: Major cleanups, removal of old mach-specific infrastructure.
    - Atmel external bus memory driver
    - Move of brcmstb platform to the rest of bcm
    - PMC driver updates for tegra, various fixes and improvements
    - Samsung platform driver updates to support 64-bit Exynos platforms
    - Reset controller cleanups moving to devm_reset_controller_register() APIs
    - Reset controller driver for Amlogic Meson
    - Reset controller driver for Hisilicon hi6220
    - ARM SCPI power domain support"

    * tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (100 commits)
    ARM: ux500: consolidate base platform files
    ARM: ux500: move soc_id driver to drivers/soc
    ARM: ux500: call ux500_setup_id later
    ARM: ux500: consolidate soc_device code in id.c
    ARM: ux500: remove cpu_is_u* helpers
    ARM: ux500: use CLK_OF_DECLARE()
    ARM: ux500: move l2x0 init to .init_irq
    mfd: db8500 stop passing around platform data
    ASoC: ab8500-codec: remove platform data based probe
    ARM: ux500: move ab8500_regulator_plat_data into driver
    ARM: ux500: remove unused regulator data
    soc: raspberrypi-power: add CONFIG_OF dependency
    firmware: scpi: add CONFIG_OF dependency
    video: clps711x-fb: Changing the compatibility string to match with the smallest supported chip
    input: clps711x-keypad: Changing the compatibility string to match with the smallest supported chip
    pwm: clps711x: Changing the compatibility string to match with the smallest supported chip
    serial: clps711x: Changing the compatibility string to match with the smallest supported chip
    irqchip: clps711x: Changing the compatibility string to match with the smallest supported chip
    clocksource: clps711x: Changing the compatibility string to match with the smallest supported chip
    clk: clps711x: Changing the compatibility string to match with the smallest supported chip
    ...

    Linus Torvalds
     
  • Pull ARM SoC platform updates from Olof Johansson:
    "Improved and new platform support for various SoCs:

    New SoC support:
    - Broadcom BCM23550
    - Freescale i.MX7Solo
    - Qualcomm MDM9615
    - Renesas r8a7792

    Improvements:
    - convert clps711x to multiplatform
    - debug uart improvements for Atmel platforms
    - Tango platform improvements: HOTPLUG_CPU, Suspend-to-ram
    - OMAP tweaks and improvements to hwmod
    - OMAP support for kexec on SMP"

    * tag 'armsoc-soc' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (109 commits)
    ARM: davinci: fix build break because of undeclared dm365_evm_snd_data
    ARM: s3c64xx: smartq: Avoid sparse warnings
    ARM: sti: Implement dummy L2 cache's write_sec
    ARM: STi: Update machine _namestr to be more generic.
    arm: meson: explicitly select clk drivers
    ARM: tango: add Suspend-to-RAM support
    ARM: hisi: consolidate the hisilicon machine entries
    ARM: tango: fix CONFIG_HOTPLUG_CPU=n build
    MAINTAINERS: Update BCM281XX/BCM11XXX/BCM216XX entry
    MAINTAINERS: Update BCM63XX entry
    MAINTAINERS: Add NS2 entry
    MAINTAINERS: Fix nsp false-positives
    MAINTAINERS: Change L to M for Broadcom ARM/ARM64 SoC entries
    ARM: debug: Enable DEBUG_BCM_5301X for Northstar Plus SoCs
    ARM: clps711x: Switch to MULTIPLATFORM
    ARM: clps711x: Remove boards support
    ARM: clps711x: Add basic DT support
    ARM: clps711x: Reduce static map size
    ARM: SAMSUNG: Constify iomem address passed to s5p_init_cpu
    ARM: oxnas: Change OX810SE default driver config
    ...

    Linus Torvalds
     
  • Module list can be NULL so check if the list is empty before
    accessing the list.

    Signed-off-by: Senthilnathan Veppur
    Signed-off-by: Vinod Koul
    Signed-off-by: Mark Brown

    Vinod Koul
     

01 Aug, 2016

3 commits

  • commit 3c8f7710c1c4 ("ASoC: fix broken pxa SoC support") has removed
    the SND_ARM dependency from SND_PXA2XX_LIB and SND_PXA2XX_LIB_AC97,
    by moving these config entries outside of the "if SND_ARM ... endif"
    construct.

    However, by placing these 2 symbols right between the SND_ARM
    menuconfig definition and the first SND_ARM menu entry, the side
    effect is that the SND_ARM menu becomes empty and all the config
    entries caught between "if SND_ARM ... endif" no more belong to
    menuconfig SND_ARM, but to its parent (menuconfig SND).

    Fix this.

    Signed-off-by: Eugeniu Rosca
    Acked-by: Robert Jarzmik
    Signed-off-by: Takashi Iwai

    Eugeniu Rosca
     
  • On Acer Veriton machines, codec with subsystem-id 0x1b0a01b8 the port at
    0x15 is configured by default as an Internal Speaker (0x90170120).
    However, no physical is speaker installed on-board. This patch adds a quirk
    which disables the physical connection on this pin.

    BugLink: https://bugs.launchpad.net/bugs/1607647

    Signed-off-by: Shrirang Bagul
    Cc:
    Signed-off-by: Takashi Iwai

    Shrirang Bagul
     
  • We have a Dell AIO on which we can't adjust its speaker's volume.
    The problem is it is connected to a Audio Output node without Amp-out
    capability. To fix it, we change it to be connnected to a node with
    Amp-out capability.

    Cc:
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang