- Jul 29, 2022
-
-
Takashi Iwai authored
For avoiding the potential deadlock via kill_fasync() call, use the new fasync helpers to defer the invocation from PCI API. Note that it's merely a workaround. Reported-by:
<syzbot+1ee0910eca9c94f71f25@syzkaller.appspotmail.com> Reported-by:
<syzbot+49b10793b867871ee26f@syzkaller.appspotmail.com> Reported-by:
<syzbot+8285e973a41b5aa68902@syzkaller.appspotmail.com> Link: https://lore.kernel.org/r/20220728125945.29533-3-tiwai@suse.de Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Takashi Iwai authored
Currently the call of kill_fasync() from an interrupt handler might lead to potential spin deadlocks, as spotted by syzkaller. Unfortunately, it's not so trivial to fix this lock chain as it's involved with the tasklist_lock that is touched in allover places. As a temporary workaround, this patch provides the way to defer the async signal notification in a work. The new helper functions, snd_fasync_helper() and snd_kill_faync() are replacements for fasync_helper() and kill_fasync(), respectively. In addition, snd_fasync_free() needs to be called at the destructor of the relevant file object. Link: https://lore.kernel.org/r/20220728125945.29533-2-tiwai@suse.de Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 28, 2022
-
-
Lucas Tanure authored
Add CLSA0101 id to the ignore_serial_bus_ids so serial-multi-instantiate can correctly instantiate the driver. Signed-off-by:
Lucas Tanure <tanureal@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220727095924.80884-4-tanureal@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Lucas Tanure authored
Add support for Intel version of Legion 7 laptop. Signed-off-by:
Lucas Tanure <tanureal@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220727095924.80884-3-tanureal@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Lucas Tanure authored
Follow GPIO1 pattern, use cs35l41 HDA internal define for IRQ and then translate to ASoC cs35l41 define. Signed-off-by:
Lucas Tanure <tanureal@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220727095924.80884-2-tanureal@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 25, 2022
-
-
Kai-Heng Feng authored
Two more HP laptops that use cs35l41 AMP for speaker and GPIO for mute LEDs. So use the existing quirk to enable them accordingly. [ Sort the entries at the SSID order by tiwai ] Signed-off-by:
Kai-Heng Feng <kai.heng.feng@canonical.com> Reviewed-by:
Lucas Tanure <tanureal@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220719142015.244426-1-kai.heng.feng@canonical.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Takashi Iwai authored
Merge 5.19-rc devel branch for applying HD-audio quirk patches more cleanly. Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Ren Zhijie authored
If CONFIG_PM_SLEEP is not set, make ARCH=x86_64 CROSS_COMPILE=x86_64-linux-gnu-, will be failed, like this: sound/pci/hda/cs35l41_hda.c:583:12: error: ‘cs35l41_runtime_resume’ defined but not used [-Werror=unused-function] static int cs35l41_runtime_resume(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~ sound/pci/hda/cs35l41_hda.c:565:12: error: ‘cs35l41_runtime_suspend’ defined but not used [-Werror=unused-function] static int cs35l41_runtime_suspend(struct device *dev) ^~~~~~~~~~~~~~~~~~~~~~~ cc1: all warnings being treated as errors make[3]: *** [sound/pci/hda/cs35l41_hda.o] Error 1 commit 1a3c7bb0 ("PM: core: Add new *_PM_OPS macros, deprecate old ones"), add new marco RUNTIME_PM_OPS to fix this unused-function problem. Fixes: 1873ebd3 ("ALSA: hda: cs35l41: Support Hibernation during Suspend") Signed-off-by:
Ren Zhijie <renzhijie2@huawei.com> Link: https://lore.kernel.org/r/20220725023611.57055-1-renzhijie2@huawei.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
wangjianli authored
Delete the redundant word 'in'. Signed-off-by:
wangjianli <wangjianli@cdjrlc.com> Link: https://lore.kernel.org/r/20220724071829.11117-1-wangjianli@cdjrlc.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
wangjianli authored
Delete the redundant word 'in'. Signed-off-by:
wangjianli <wangjianli@cdjrlc.com> Link: https://lore.kernel.org/r/20220724071644.10630-1-wangjianli@cdjrlc.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
wangjianli authored
Delete the redundant word 'in'. Signed-off-by:
wangjianli <wangjianli@cdjrlc.com> Link: https://lore.kernel.org/r/20220724071413.10085-1-wangjianli@cdjrlc.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 22, 2022
-
-
Takashi Iwai authored
Just like other Behringer models, UMC202HD (USB ID 1397:0507) requires the quirk for the stable streaming, too. BugLink: https://bugzilla.kernel.org/show_bug.cgi?id=215934 Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20220722143948.29804-1-tiwai@suse.de Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
shaomin Deng authored
Delete the repeated word "in" in comments. Signed-off-by:
shaomin Deng <dengshaomin@cdjrlc.com> Link: https://lore.kernel.org/r/20220721155517.2438-1-dengshaomin@cdjrlc.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
shaomin Deng authored
Remove the rebundant word "in" in comments. Signed-off-by:
shaomin Deng <dengshaomin@cdjrlc.com> Link: https://lore.kernel.org/r/20220721150528.22099-1-dengshaomin@cdjrlc.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 16, 2022
-
-
Takashi Iwai authored
This reverts commit 980b3a87. The commit didn't consider the fact that ASoC hdac-hda driver initializes the HD-audio stuff without calling snd_hda_codec_device_init(). Hence this caused a regression leading to Oops. Revert the commit to restore the behavior. Fixes: 980b3a87 ("ALSA: hda: Fix page fault in snd_hda_codec_shutdown()") Link: https://lore.kernel.org/r/3c40df55-3aee-1e08-493b-7b30cd84dc00@linux.intel.com Link: https://lore.kernel.org/r/20220715182903.19594-1-tiwai@suse.de Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Takashi Iwai authored
Since the recent change in CS35L41 codec requires the reference of acpi_dev handle, the current Kconfig may lead to a build breakage. Revert the Kconfig change and re-introduce the hard dependency on CONFIG_ACPI again as a temporary workaround. Fixes: eef37596 ("ALSA: hda: cs35l41: Support reading subsystem id from ACPI") Link: https://lore.kernel.org/r/20220715182427.18891-1-tiwai@suse.de Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 15, 2022
-
-
Cezary Rojewski authored
When codec is unbound but not yet removed, in the eyes of snd_hdac_bus_process_unsol_events() it is still a valid target to delegate work to. Such behaviour may lead to use-after-free errors. Address by verifying if codec is actually registered. Signed-off-by:
Cezary Rojewski <cezary.rojewski@intel.com> Link: https://lore.kernel.org/r/20220706120230.427296-6-cezary.rojewski@intel.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
By default, the driver will automatically load DSP firmware for the amps, if available. Adding this option allows the autoload to be optional, which allows for different configurations. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-15-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
This is required to support CS35L41 calibration. By default, speaker protection firmware will be loaded, if available. However, different firmware is required to run the calibration sequence, so it is necessary to add support to be able to unload, switch and reload firmware. This patch adds 2 ALSA Controls for each amp: "DSP1 Firmware Load" "DSP1 Firmware Type" "DSP1 Firmware Load" can be used to unload and load the firmware. "DSP1 Firmware Type" can be used to switch the target firmware to be loaded by "DSP1 Firmware Load" Since loading firmware can add new ALSA controls, it is necessary to ensure the firmware loading is run asynchronously from the ALSA control itself to prevent deadlocks. Note: When switching between firmwares, an ALSA control is only added if it has not previously existed. If it had existed previously, it will be re-enabled instead. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-14-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
The config sequences for running with and without firmware and DSP are different. The original behavior assumed that we would only run without DSP only in the case where firmware load failed. This meant the non-firmware sequence was written with the assumtion that various registers would be set to their default value. However, to support the ability to unload the firmware, the non-firmware register sequence must be updated to update all required registers, including values that would be defaulted, in case the firmware sequence, which could have already run, has changed their value. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-13-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
This will be used to define the firmware names. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-12-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
Speaker Calibration data, specific to an individual speaker is stored inside UEFI variables during calibration, and can be used by the DSP. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-11-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
CS35L41 supports hibernation during suspend when using DSP firmware. When the driver suspends it will hibernate the part, if firmware is running, and resume will wake from hibernation. CS35L41 driver will suspend/resume when requested by hda driver. Note that suspend/resume and hibernation is only supported when firmware is running. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-10-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Takashi Iwai authored
Merge tag 'asoc-v5.20' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-next ASoC: Updates for v5.20 This is a big release thus far and there will probably be more changes to come, it's a combination of a larger than usual crop of new drivers and some subsysetm wide cleanups from Charles rather than anything structural. The SOF and Intel DSP code both also continue to be very actively developed. - Restructing of the set_fmt() callbacks to be specified in terms of the device rather than with semantics depending on if the device is supposed to be a CODEC or SoC, making things clearer in situations like CODEC to CODEC links. - Clean up of the way we flag which DAI naming scheme we use to reflect the progress that's been made modernising things. - Merge of more of the Intel AVS driver stack, including some board integrations. - New version 4 mechanism for communication with SOF DSPs. - Suppoort for dynamically selecting the PLL to use at runtime on i.MX platforms. - Improvements for CODEC to CODEC support in the generic cards. - Support for AMD Jadeite and various machines, Intel MetorLake DSPs, Mediatek MT8186 DSPs and MT6366, nVidia Tegra MDDRC, OPE and PEQ, NXP TFA9890, Qualcomm SDM845, WCD9335 and WAS883x, and Texas Instruments TAS2780.
-
Takashi Iwai authored
Merge tag 'asoc-fix-v5.19-rc4-2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Drop Rockchip BCLK management for v5.19 As covered in the second revert commit in this pull request the version of the BCLK muxing that's in v5.19 is causing issues, let's just revert it and wait for the more complete support in v5.20 instead.
-
Zheyu Ma authored
When the driver fails in snd_card_register() at probe time, it will free the 'bcd2k->midi_out_urb' before killing it, which may cause a UAF bug. The following log can reveal it: [ 50.727020] BUG: KASAN: use-after-free in bcd2000_input_complete+0x1f1/0x2e0 [snd_bcd2000] [ 50.727623] Read of size 8 at addr ffff88810fab0e88 by task swapper/4/0 [ 50.729530] Call Trace: [ 50.732899] bcd2000_input_complete+0x1f1/0x2e0 [snd_bcd2000] Fix this by adding usb_kill_urb() before usb_free_urb(). Fixes: b47a2229 ("ALSA: MIDI driver for Behringer BCD2000 USB device") Signed-off-by:
Zheyu Ma <zheyuma97@gmail.com> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20220715010515.2087925-1-zheyuma97@gmail.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 14, 2022
-
-
Mark Brown authored
Needed for further development.
-
Kuninori Morimoto authored
Before, ssiu.c didn't care SSI5-8, thus, commit b1384d4c ("ASoC: rsnd: care default case on rsnd_ssiu_busif_err_status_clear()") cares it for status clear. But we should care it for error irq handling, too. This patch cares it. Reported-by:
Nguyen Bao Nguyen <nguyen.nguyen.yj@renesas.com> Reported-by:
Nishiyama Kunihiko <kunihiko.nishiyama.dn@renesas.com> Signed-off-by:
Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Link: https://lore.kernel.org/r/871quocio1.wl-kuninori.morimoto.gx@renesas.com Signed-off-by:
Mark Brown <broonie@kernel.org>
-
Dan Carpenter authored
There are two bugs that have to do with when we copy the payload: size = simple_write_to_buffer(ipc4_msg->data_ptr, priv->max_msg_size, ppos, buffer, count); The value of "*ppos" was supposed to be zero but it is sizeof(ipc4_msg->header_u64) so it will copy the data into the middle of the "ipc4_msg->data_ptr" buffer instead of to the start. The second problem is "buffer" should be "buffer + sizeof(ipc4_msg->header_u64)". This function is used for fuzz testing so the data is normally random and this bug likely does not affect anyone very much. In this context, it's simpler and more appropriate to use copy_from_user() instead of simple_write_to_buffer() so I have re-written the function. Fixes: 066c6762 ("ASoC: SOF: ipc-msg-injector: Add support for IPC4 messages") Signed-off-by:
Dan Carpenter <dan.carpenter@oracle.com> Link: https://lore.kernel.org/r/Ysg1tB2FKLnRMsel@kili Signed-off-by:
Mark Brown <broonie@kernel.org>
-
Mark Brown authored
The version of the BCLK pinctrl management changes that made it into v5.19 has caused problems on some systems due to overly strict DT requirements but attempts to fix it have caused further breakage on other platforms. Just drop the changes for this release, we already have a better version queued for -next. Fixes: 26b9f2fa ("ASoC: rockchip: i2s: Fix NULL pointer dereference when pinctrl is not found") Fixes: a5450aba ("ASoC: rockchip: i2s: switch BCLK to GPIO") Signed-off-by:
Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20220713130451.31481-1-broonie@kernel.org Signed-off-by:
Mark Brown <broonie@kernel.org>
-
Stefan Binding authored
Some Laptops use a number of gpios to define which vendor is used for a particular laptop. Different coefficient files are used for different vendors. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-9-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
To be able to support different firmwares and tuning for different models, the driver needs to be able to load a different firmware and coefficient file based on its Subsystem ID. The driver attempts to load the firmware in the following order: /lib/firmware/cirrus/cs35l41-dsp1-<fw-type>-<ssid>-dev<#>.wmfw /lib/firmware/cirrus/cs35l41-dsp1-<fw-type>-<ssid>.wmfw /lib/firmware/cirrus/cs35l41-dsp1-<fw-type>.wmfw Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-8-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
On some laptop models, the ACPI contains the unique Subsystem ID, and this value should be preferred over the value from the HDA driver. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-7-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
The Subsystem ID is read from the HDA driver, and will be used by the CS35L41 driver to be able to uniquely identify the laptop, which is required to be able to define firmware to be used by specific models. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-6-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Vitaly Rodionov authored
This patch adds support for the CS35L41 DSP. The DSP allows for extra features, such as running speaker protection algorithms and hibernations. To utilize these features, the driver must load firmware into the DSP, as well as various tuning files which allow for customization for specific models. [ Slightly simplified Kconfig changes by tiwai ] Signed-off-by:
Vitaly Rodionov <vitaly.rodionov@cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-5-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
This is required for ALSA control support. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-4-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
DSP controls are exposed as ALSA controls, however, some of these controls are required to be accessed by the driver. Add apis which allow read/write of these controls. The write api will also notify the ALSA control on value change. Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-3-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Stefan Binding authored
The cs35l41 part contains a DSP which is able to run firmware. The cs_dsp library can be used to control the DSP. These controls can be exposed to userspace using ALSA controls. This library adds apis to be able to interface between cs_dsp and hda drivers and expose the relevant controls as ALSA controls. [ Note: the dependency of CONFIG_SND_HDA_CS_DSP_CONTROLS Kconfig is corrected. Also, this Kconfig isn't enabled now but will be actually enabled in a later patch -- tiwai ] Signed-off-by:
Stefan Binding <sbinding@opensource.cirrus.com> Signed-off-by:
Vitaly Rodionov <vitalyr@opensource.cirrus.com> Link: https://lore.kernel.org/r/20220630002335.366545-2-vitalyr@opensource.cirrus.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
Uros Bizjak authored
Use atomic_try_cmpxchg instead of atomic_cmpxchg (*ptr, old, new) == old in ep_state_update. x86 CMPXCHG instruction returns success in ZF flag, so this change saves a compare after cmpxchg (and related move instruction in front of cmpxchg). No functional change intended. Signed-off-by:
Uros Bizjak <ubizjak@gmail.com> Link: https://lore.kernel.org/r/20220713151946.4743-1-ubizjak@gmail.com Signed-off-by:
Takashi Iwai <tiwai@suse.de>
-
- Jul 13, 2022
-
-
Mark Brown authored
Merge series from Bard Liao <yung-chuan.liao@linux.intel.com>: For SOF IPC4, we need to set pipeline state in BE DAI trigger.
-