13 Jan, 2020

1 commit


11 Jan, 2020

1 commit

  • Pull sound fixes from Takashi Iwai:
    "A few piled ASoC fixes and usual HD-audio and USB-audio fixups. Some
    of them are for ASoC core error-handling"

    * tag 'sound-5.5-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda: enable regmap internal locking
    ALSA: hda/realtek - Add quirk for the bass speaker on Lenovo Yoga X1 7th gen
    ALSA: hda/realtek - Set EAPD control to default for ALC222
    ALSA: usb-audio: Apply the sample rate quirk for Bose Companion 5
    ALSA: hda/realtek - Add new codec supported for ALCS1200A
    ASoC: Intel: boards: Fix compile-testing RT1011/RT5682
    ASoC: SOF: imx8: Fix dsp_box offset
    ASoC: topology: Prevent use-after-free in snd_soc_get_pcm_runtime()
    ASoC: fsl_audmix: add missed pm_runtime_disable
    ASoC: stm32: spdifrx: fix input pin state management
    ASoC: stm32: spdifrx: fix race condition in irq handler
    ASoC: stm32: spdifrx: fix inconsistent lock state
    ASoC: core: Fix access to uninitialized list heads
    ASoC: soc-core: Set dpcm_playback / dpcm_capture
    ASoC: SOF: imx8: fix memory allocation failure check on priv->pd_dev
    ASoC: SOF: Intel: hda: hda-dai: fix oops on hda_link .hw_free
    ASoC: SOF: fix fault at driver unload after failed probe

    Linus Torvalds
     

09 Jan, 2020

1 commit

  • This reverts commit 42ec336f1f9d ("ALSA: hda: Disable regmap
    internal locking").

    Without regmap locking, there is a race between snd_hda_codec_amp_init()
    and PM callbacks issuing regcache_sync(). This was caught by
    following kernel warning trace:

    [358.080081] WARNING: CPU: 2 PID: 4157 at drivers/base/regmap/regcache.c:498 regcache_cache_only+0xf5/0x130
    [...]
    [358.080148] Call Trace:
    [358.080158] snd_hda_codec_amp_init+0x4e/0x100 [snd_hda_codec]
    [358.080169] snd_hda_codec_amp_init_stereo+0x40/0x80 [snd_hda_codec]

    Suggested-by: Takashi Iwai
    BugLink: https://gitlab.freedesktop.org/drm/intel/issues/592
    Signed-off-by: Kai Vehmanen
    Link: https://lore.kernel.org/r/20200108180856.5194-1-kai.vehmanen@linux.intel.com
    Signed-off-by: Takashi Iwai

    Kai Vehmanen
     

08 Jan, 2020

2 commits


07 Jan, 2020

1 commit


06 Jan, 2020

1 commit


04 Jan, 2020

3 commits

  • Bose Companion 5 (with USB ID 05a7:1020) doesn't seem supporting
    reading back the sample rate, so the existing quirk is needed.

    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=206063
    Cc:
    Link: https://lore.kernel.org/r/20200104110936.14288-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Add ALCS1200A supported.
    It was similar as ALC900.

    Signed-off-by: Kailang Yang
    Cc:
    Link: https://lore.kernel.org/r/a9bd3cdaa02d4fa197623448d5c51e50@realtek.com
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • Pull sound fixes from Takashi Iwai:
    "Nothing to worry at this stage but all nice small changes:

    - A regression fix for AMD GPU detection in HD-audio

    - A long-standing sleep-in-atomic fix for an ice1724 device

    - Usual suspects, the device-specific quirks for HD- and USB-audio"

    * tag 'sound-5.5-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: hda/realtek - Enable the bass speaker of ASUS UX431FLC
    ALSA: ice1724: Fix sleep-in-atomic in Infrasonic Quartet support code
    ALSA: hda/realtek - Add Bass Speaker and fixed dac for bass speaker
    ALSA: hda - Apply sync-write workaround to old Intel platforms, too
    ALSA: hda/hdmi - fix atpx_present when CLASS is not VGA
    ALSA: usb-audio: fix set_format altsetting sanity check
    ALSA: hda/realtek - Add headset Mic no shutup for ALC283
    ALSA: usb-audio: set the interface format after resume on Dell WD19

    Linus Torvalds
     

03 Jan, 2020

1 commit

  • On non-x86, the new driver results in a build failure:

    sound/soc/intel/boards/cml_rt1011_rt5682.c:14:10: fatal error: asm/cpu_device_id.h: No such file or directory

    The asm/cpu_device_id.h header is not actually needed here,
    so don't include it.

    Signed-off-by: Arnd Bergmann
    Acked-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20200102135322.1841053-1-arnd@arndb.de
    Signed-off-by: Mark Brown

    Arnd Bergmann
     

30 Dec, 2019

1 commit

  • ASUS reported that there's an bass speaker in addition to internal
    speaker and it uses DAC 0x02. It was not enabled in the commit
    436e25505f34 ("ALSA: hda/realtek - Enable internal speaker of ASUS
    UX431FLC") which only enables the amplifier and the front speaker.
    This commit enables the bass speaker on top of the aforementioned
    work to improve the acoustic experience.

    Fixes: 436e25505f34 ("ALSA: hda/realtek - Enable internal speaker of ASUS UX431FLC")
    Signed-off-by: Chris Chiu
    Signed-off-by: Jian-Hong Pan
    Cc:
    Link: https://lore.kernel.org/r/20191230031118.95076-1-chiu@endlessm.com
    Signed-off-by: Takashi Iwai

    Chris Chiu
     

29 Dec, 2019

2 commits

  • Linux 5.5-rc3

    Signed-off-by: Greg Kroah-Hartman
    Change-Id: I1735073980c0168a1ad8bc130fea534dc13f6091

    Greg Kroah-Hartman
     
  • Jia-Ju Bai reported a possible sleep-in-atomic scenario in the ice1724
    driver with Infrasonic Quartet support code: namely, ice->set_rate
    callback gets called inside ice->reg_lock spinlock, while the callback
    in quartet.c holds ice->gpio_mutex.

    This patch fixes the invalid call: it simply moves the calls of
    ice->set_rate and ice->set_mclk callbacks outside the spinlock.

    Reported-by: Jia-Ju Bai
    Cc:
    Link: https://lore.kernel.org/r/5d43135e-73b9-a46a-2155-9e91d0dcdf83@gmail.com
    Link: https://lore.kernel.org/r/20191218192606.12866-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

27 Dec, 2019

1 commit


25 Dec, 2019

9 commits

  • dsp_box is used to keep DSP initiated messages. The value of dsp_offset
    is set by the DSP with the first message, so we need a way to bootstrap
    it in order to get the first message.

    We do this by setting the correct default dsp_box offset which on i.MX8
    is not zero.

    Very interesting is why it has worked until now.

    On i.MX8, DSP communicates with ARM core using a shared SDRAM memory
    area. Actually, there are two shared areas:
    * SDRAM0 - starting at 0x92400000, size 0x800000
    * SDRAM1 - starting at 0x92C00000, size 0x800000

    SDRAM0 keeps the data sections, starting with .rodata. By chance
    fw_ready structure was placed at the beginning of .rodata.

    dsp_box_base is defined as SDRAM0 + dsp_box_offset and it is placed
    at the beginning of SDRAM1 (dsp_box_offset should be 0x800000). But
    because it is zero initialized by default it points to SDRAM0 where
    by chance the fw_ready was placed in the SOF firmware.

    Anyhow, SOF commit 7466bee378dd811b ("clk: make freq arrays constant")
    fw_ready is no longer at the beginning of SDRAM0 and everything shows
    how lucky we were until now.

    Fix this by properly setting the default dsp_box offset.

    Fixes: 202acc565a1f050 ("ASoC: SOF: imx: Add i.MX8 HW support")
    Signed-off-by: Daniel Baluta
    Signed-off-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20191220170531.10423-1-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown

    Daniel Baluta
     
  • remove_link() is currently calling snd_soc_remove_dai_link() after
    it has already freed the memory for the link name. But this is later
    read from snd_soc_get_pcm_runtime() causing a KASAN use-after-free
    warning. Reorder the cleanups to fix this issue.

    Reviewed-by: Ranjani Sridharan
    Signed-off-by: Dragos Tarcatu
    Signed-off-by: Pierre-Louis Bossart
    Reviewed-by: Kuninori Morimoto
    Link: https://lore.kernel.org/r/20191204210447.11701-4-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown

    Dragos Tarcatu
     
  • The driver forgets to call pm_runtime_disable in probe failure
    and remove.
    Add the missed calls to fix it.

    Signed-off-by: Chuhong Yuan
    Acked-by: Nicolin Chen
    Link: https://lore.kernel.org/r/20191203111303.12933-1-hslester96@gmail.com
    Signed-off-by: Mark Brown

    Chuhong Yuan
     
  • Changing input state in iec capture control is not safe,
    as the pin state may be changed concurrently by ASoC
    framework.
    Remove pin state handling in iec capture control.

    Note: This introduces a restriction on capture control,
    when pin sleep state is defined in device tree. In this case
    channel status can be captured only when an audio stream
    capture is active.

    Fixes: f68c2a682d44 ("ASoC: stm32: spdifrx: add power management")

    Signed-off-by: Olivier Moysan
    Link: https://lore.kernel.org/r/20191204154333.7152-4-olivier.moysan@st.com
    Signed-off-by: Mark Brown

    Olivier Moysan
     
  • When snd_pcm_stop() is called in interrupt routine,
    substream context may have already been released.
    Add protection on substream context.

    Fixes: 03e4d5d56fa5 ("ASoC: stm32: Add SPDIFRX support")

    Signed-off-by: Olivier Moysan
    Link: https://lore.kernel.org/r/20191204154333.7152-3-olivier.moysan@st.com
    Signed-off-by: Mark Brown

    Olivier Moysan
     
  • In current spdifrx driver locks may be requested as follows:
    - request lock on iec capture control, when starting synchronization.
    - request lock in interrupt context, when spdifrx stop is called
    from IRQ handler.

    Take lock with IRQs disabled, to avoid the possible deadlock.

    Lockdep report:
    [ 74.278059] ================================
    [ 74.282306] WARNING: inconsistent lock state
    [ 74.290120] --------------------------------
    ...
    [ 74.314373] CPU0
    [ 74.314377] ----
    [ 74.314381] lock(&(&spdifrx->lock)->rlock);
    [ 74.314396]
    [ 74.314400] lock(&(&spdifrx->lock)->rlock);

    Fixes: 03e4d5d56fa5 ("ASoC: stm32: Add SPDIFRX support")

    Signed-off-by: Olivier Moysan
    Link: https://lore.kernel.org/r/20191204154333.7152-2-olivier.moysan@st.com
    Signed-off-by: Mark Brown

    Olivier Moysan
     
  • The error path of soc_new_pcm_runtime() invokes soc_free_pcm_runtime()
    that may cause a few problems. First off, it calls list_del() for
    rtd->list that may not be initialized. Similarly,
    snd_soc_pcm_component_free() traverses over the component list that
    may not be initialized, either. Such access to the uninitialized list
    head would lead to either a BUG_ON() or a memory corruption.

    This patch fixes the access to uninitialized list heads by
    initializing the list heads properly at the beginning before those
    error paths.

    Signed-off-by: Takashi Iwai
    Reviewed-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20191204151454.21643-1-tiwai@suse.de
    Signed-off-by: Mark Brown

    Takashi Iwai
     
  • When converting a normal link to a DPCM link we need
    to set dpcm_playback / dpcm_capture otherwise playback/capture
    streams will not be created resulting in errors like this:

    [ 36.039111] sai1-wm8960-hifi: ASoC: no backend playback stream

    Fixes: a655de808cbde ("ASoC: core: Allow topology to override machine driver FE DAI link config")
    Signed-off-by: Daniel Baluta
    Link: https://lore.kernel.org/r/20191204151333.26625-1-daniel.baluta@nxp.com
    Signed-off-by: Mark Brown

    Daniel Baluta
     
  • The memory allocation failure check for priv->pd_dev is incorrectly
    pointer checking priv instead of priv->pd_dev. Fix this.

    Addresses-Coverity: ("Logically dead code")
    Fixes: 202acc565a1f ("ASoC: SOF: imx: Add i.MX8 HW support")
    Signed-off-by: Colin Ian King
    Reviewed-by: Daniel Baluta
    Acked-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20191204124816.1415359-1-colin.king@canonical.com
    Signed-off-by: Mark Brown

    Colin Ian King
     

24 Dec, 2019

1 commit

  • Klaus Ethgen reported occasional high CPU usages in his system that
    seem caused by HD-audio driver. The perf output revealed that it's
    in the unsolicited event handling in the workqueue, and the problem
    seems triggered by some communication stall between the controller and
    the codec at the runtime or system resume.

    Actually a similar phenomenon was seen in the past for other Intel
    platforms, and we already applied the workaround to enforce sync-write
    for CORB/RIRB verbs for Skylake and newer chipsets (commit
    2756d9143aa5 "ALSA: hda - Fix intermittent CORB/RIRB stall on Intel
    chips"). Fortunately, the same workaround is applicable to the old
    chipset, and the experiment showed the positive effect.

    Based on the experiment result, this patch enables the sync-write
    workaround for all Intel chipsets. The only reason I hesitated to
    apply this workaround was about the possibly slightly higher CPU usage.
    But if the lack of sync causes a much severer problem even for quite
    old chip, we should think this would be necessary for all Intel chips.

    Reported-by: Klaus Ethgen
    Cc:
    Link: https://lore.kernel.org/r/20191223171833.GA17053@chua
    Link: https://lore.kernel.org/r/20191223221816.32572-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

21 Dec, 2019

1 commit

  • You can't use PCI_BASE_CLASS with pci_get_class(). This
    happens to work by luck on devices with PCI_CLASS_DISPLAY_VGA, but
    misses PCI_CLASS_DISPLAY_OTHER. Add a check for those as well.

    Fixes: 586bc4aab878 ("ALSA: hda/hdmi - fix vgaswitcheroo detection for AMD")
    Signed-off-by: Alex Deucher
    Link: https://lore.kernel.org/r/20191221001702.1338587-1-alexander.deucher@amd.com
    Signed-off-by: Takashi Iwai

    Alex Deucher
     

20 Dec, 2019

1 commit

  • Make sure to check the return value of usb_altnum_to_altsetting() to
    avoid dereferencing a NULL pointer when the requested alternate settings
    is missing.

    The format altsetting number may come from a quirk table and there does
    not seem to be any other validation of it (the corresponding index is
    checked however).

    Fixes: b099b9693d23 ("ALSA: usb-audio: Avoid superfluous usb_set_interface() calls")
    Cc: stable # 4.18
    Signed-off-by: Johan Hovold
    Link: https://lore.kernel.org/r/20191220093134.1248-1-johan@kernel.org
    Signed-off-by: Takashi Iwai

    Johan Hovold
     

19 Dec, 2019

5 commits

  • Chrome machine had humming noise from external speaker plugin at
    codec D3 state.

    Signed-off-by: Kailang Yang
    Cc:
    Link: https://lore.kernel.org/r/2692449396954c6c968f5b75e2660358@realtek.com
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • When the PCM_PARAM IPC fails while configuring the FE, the kernel
    oopses in the HDaudio link DMA .hw_free operation. The root cause is a
    NULL dma_data since the BE .hw_params was never called by the SOC
    core.

    This error can also happen if the HDaudio link DMA configuration IPC
    fails in the BE .hw_params.

    This patches makes sure the dma_data is properly saved in .hw_params,
    and tested before being use in hw_free.

    GitHub issue: https://github.com/thesofproject/linux/issues/1417

    Reviewed-by: Ranjani Sridharan
    Reviewed-by: Kai Vehmanen
    Signed-off-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20191218000518.5830-3-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown

    Pierre-Louis Bossart
     
  • If sof_machine_check() fails during driver probe, the IPC
    state is not initialized and this will lead to a NULL
    dereference at driver unload. Example log is as follows:

    [ 1535.980630] sof-audio-pci 0000:00:1f.3: error: no matching ASoC machine driver found - aborting probe
    [ 1535.980631] sof-audio-pci 0000:00:1f.3: error: failed to get machine info -19
    [ 1535.980632] sof-audio-pci 0000:00:1f.3: error: sof_probe_work failed err: -19
    [ 1550.798373] BUG: kernel NULL pointer dereference, address: 0000000000000008
    ...
    [ 1550.798393] Call Trace:
    [ 1550.798397] snd_sof_ipc_free+0x15/0x30 [snd_sof]
    [ 1550.798399] snd_sof_device_remove+0x29/0xa0 [snd_sof]
    [ 1550.798400] sof_pci_remove+0x10/0x30 [snd_sof_pci]

    Signed-off-by: Kai Vehmanen
    Signed-off-by: Pierre-Louis Bossart
    Link: https://lore.kernel.org/r/20191218000518.5830-2-pierre-louis.bossart@linux.intel.com
    Signed-off-by: Mark Brown

    Kai Vehmanen
     
  • Recently we found the headset-mic on the Dell Dock WD19 doesn't work
    anymore after s3 (s2i or deep), this problem could be workarounded by
    closing (pcm_close) the app and then reopening (pcm_open) the app, so
    this bug is not easy to be detected by users.

    When problem happens, retire_capture_urb() could still be called
    periodically, but the size of captured data is always 0, it could be
    a firmware bug on the dock. Anyway I found after resuming, the
    snd_usb_pcm_prepare() will be called, and if we forcibly run
    set_format() to set the interface and its endpoint, the capture
    size will be normal again. This problem and workaound also apply to
    playback.

    To fix it in the kernel, add a quirk to let set_format() run
    forcibly once after resume.

    Signed-off-by: Hui Wang
    Cc:
    Link: https://lore.kernel.org/r/20191218132650.6303-1-hui.wang@canonical.com
    Signed-off-by: Takashi Iwai

    Hui Wang
     
  • Pull sound fixes from Takashi Iwai:
    "A slightly high amount at this time, but all good and small fixes:

    - A PCM core fix that initializes the buffer properly for avoiding
    information leaks; it is a long-standing minor problem, but good to
    fix better now

    - A few ASoC core fixes for the init / cleanup ordering issues that
    surfaced after the recent refactoring

    - Lots of SOF and topology-related fixes went in, as usual as such
    hot topics

    - Several ASoC codec and platform-specific small fixes: wm89xx,
    realtek, and max98090, AMD, Intel-SST

    - A fix for the previous incomplete regression of HD-audio, now
    hitting Nvidia HDMI

    - A few HD-audio CA0132 codec fixes"

    * tag 'sound-5.5-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (27 commits)
    ALSA: hda - Downgrade error message for single-cmd fallback
    ASoC: wm8962: fix lambda value
    ALSA: hda: Fix regression by strip mask fix
    ALSA: hda/ca0132 - Fix work handling in delayed HP detection
    ALSA: hda/ca0132 - Avoid endless loop
    ALSA: hda/ca0132 - Keep power on during processing DSP response
    ALSA: pcm: Avoid possible info leaks from PCM stream buffers
    ASoC: Intel: common: work-around incorrect ACPI HID for CML boards
    ASoC: SOF: Intel: split cht and byt debug window sizes
    ASoC: SOF: loader: fix snd_sof_fw_parse_ext_data
    ASoC: SOF: loader: snd_sof_fw_parse_ext_data log warning on unknown header
    ASoC: simple-card: Don't create separate link when platform is present
    ASoC: topology: Check return value for soc_tplg_pcm_create()
    ASoC: topology: Check return value for snd_soc_add_dai_link()
    ASoC: core: only flush inited work during free
    ASoC: Intel: bytcr_rt5640: Update quirk for Teclast X89
    ASoC: core: Init pcm runtime work early to avoid warnings
    ASoC: Intel: sst: Add missing include
    ASoC: max98090: fix possible race conditions
    ASoC: max98090: exit workaround earlier if PLL is locked
    ...

    Linus Torvalds
     

18 Dec, 2019

1 commit


17 Dec, 2019

1 commit


16 Dec, 2019

3 commits

  • We made the error message for the CORB/RIRB communication clearer by
    upgrading to dev_WARN() so that user can notice better. But this
    struck us like a boomerang: now it caught syzbot and reported back as
    a fatal issue although it's not really any too serious bug that worth
    for stopping the whole system.

    OK, OK, let's be softy, downgrade it to the standard dev_err() again.

    Fixes: dd65f7e19c69 ("ALSA: hda - Show the fatal CORB/RIRB error more clearly")
    Reported-by: syzbot+b3028ac3933f5c466389@syzkaller.appspotmail.com
    Link: https://lore.kernel.org/r/20191216151224.30013-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • According to user manual, it is required that FLL_LAMBDA > 0
    in all cases (Integer and Franctional modes).

    Fixes: 9a76f1ff6e29 ("ASoC: Add initial WM8962 CODEC driver")
    Signed-off-by: Shengjiu Wang
    Acked-by: Charles Keepax
    Link: https://lore.kernel.org/r/1576065442-19763-1-git-send-email-shengjiu.wang@nxp.com
    Signed-off-by: Mark Brown

    Shengjiu Wang
     
  • Linux 5.5-rc2

    Signed-off-by: Greg Kroah-Hartman
    Change-Id: I9fac0a269c2d7cd7bba6786e50a2793855db6d49

    Greg Kroah-Hartman
     

15 Dec, 2019

3 commits

  • The commit e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only
    when needed") tried to address the regression by the unconditional
    application of the stripe mask, but this caused yet another
    regression for the previously working devices. Namely, the patch
    clears the azx_dev->stripe flag at snd_hdac_stream_clear(), but this
    may be called multiple times before restarting the stream, so this
    ended up with clearance of the flag for the whole time.

    This patch fixes the regression by moving the azx_dev->stripe flag
    clearance at the counter-part, the close callback of HDMI codec
    driver instead.

    Fixes: e38e486d66e2 ("ALSA: hda: Modify stream stripe mask only when needed")
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=205855
    BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=204477
    Cc:
    Link: https://lore.kernel.org/r/20191214175217.31852-1-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • CA0132 has the delayed HP jack detection code that is invoked from the
    unsol handler, but it does a few weird things: it contains the cancel
    of a work inside the work handler, and yet it misses the cancel-sync
    call at (runtime-)suspend. This patch addresses those issues.

    Fixes: 15c2b3cc09a3 ("ALSA: hda/ca0132 - Fix possible workqueue stall")
    Cc:
    Link: https://lore.kernel.org/r/20191213085111.22855-4-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Introduce a timeout to dspio_clear_response_queue() so that it won't
    be caught in an endless loop even if the hardware doesn't respond
    properly.

    Fixes: a73d511c4867 ("ALSA: hda/ca0132: Add unsol handler for DSP and jack detection")
    Cc:
    Link: https://lore.kernel.org/r/20191213085111.22855-3-tiwai@suse.de
    Signed-off-by: Takashi Iwai

    Takashi Iwai