mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
sound fixes for 6.19-rc5
A collection of small device-specific fixes. * ASoC Intel topology fixes for conflicting Bluetooth bits * Cleanups of ASoC drivers for superfluous NULL checks * Fix for error handling in the AC97 bus * A regression fix for TAS2781 speaker ID handling * HD-audio quirks -----BEGIN PGP SIGNATURE----- iQJCBAABCAAsFiEEIXTw5fNLNI7mMiVaLtJE4w1nLE8FAmlei+kOHHRpd2FpQHN1 c2UuZGUACgkQLtJE4w1nLE+gARAAnt27oEhAhhxpmKn6UyMfmjex+cHO0zyzGReV PZ7fzdyaxsYKjf2iZtgHLDIv2zydvhmskh0c4OFSCbegjd0T2/BSVNksT3yswf1C D2YVGw5m6k/zoiEAUvlfRrNrEYiAgDh0HBqWCuw1OwdkJ0LQH8Zh49iXAW9N1HGY gQupq7z9Ee2/od4k/ZpMDGrSZQ2IA0vA49jDNO3GvuB6XSUcbL+IJRsrSBSRenlv ckNGZa7c+kD5DqqtfwkZQe0G/NcriwcYs2K9e2Mo0C8Fk7Cp3m0ROsCjfkP/XqW2 lAVacOBjxZlwNTSgpejyG2ejPRN5+D7Nq5izJLW4zjzagUV/W2KglFWtFeKuzjzJ UCPk1hTZMLIxk1UcQ/kUjGuOi41lRRNwNLF+1+STTYzGRMgDGtwO2HRHFyKsQKDO eeJ723EadF3hR50qWiUfEoVEkSjnprPAlRVdQ6B/kumM8prS/9H9XFOEPl7gg/Yy fza+WvbGJgNBAEM3v7h8Imml2DnrWQ1rJnZuto5e32OcPLz/c/JY8V2EXoqZ4h4A BluW6XtFv/YPEOBPhv9CgDwUcnjuYPqamSanwMa5hBN4nXTTBoJwievOTnLoxB36 AXBnEBV03RfJWMZkBRNqoK9XKB+AKFMdD1Zp/k0A+XO7BWsMNminAKEMCAPcqmyn 7I86rfw= =S57y -----END PGP SIGNATURE----- Merge tag 'sound-6.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A collection of small device-specific fixes: - ASoC Intel topology fixes for conflicting Bluetooth bits - Cleanups of ASoC drivers for superfluous NULL checks - Fix for error handling in the AC97 bus - A regression fix for TAS2781 speaker ID handling - HD-audio quirks" * tag 'sound-6.19-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: hda/realtek: add HP Laptop 15s-eq1xxx mute LED quirk ALSA: hda/realtek: Add quirk for Acer Nitro AN517-55 ALSA: hda/tas2781: properly initialize speaker_id for TAS2563 ALSA: ac97: fix a double free in snd_ac97_controller_register() ASoC: sun4i-spdif: Add missing kerneldoc fields for sun4i_spdif_quirks ASoC: codecs: pm4125: clean up bind() device reference handling ASoC: soc_sdw_utils: drop bogus container_of() error handling ASoC: codecs: wcd937x: drop bogus container_of() error handling ASoC: codecs: pm4125: drop bogus container_of() error handling ASoC: SOF: Intel: add -bt tplg suffix if BT is present ASoC: Intel: sof_sdw: shift SSP BT mask bits.
This commit is contained in:
commit
108b661c79
@ -298,6 +298,7 @@ static void ac97_adapter_release(struct device *dev)
|
||||
idr_remove(&ac97_adapter_idr, ac97_ctrl->nr);
|
||||
dev_dbg(&ac97_ctrl->adap, "adapter unregistered by %s\n",
|
||||
dev_name(ac97_ctrl->parent));
|
||||
kfree(ac97_ctrl);
|
||||
}
|
||||
|
||||
static const struct device_type ac97_adapter_type = {
|
||||
@ -319,7 +320,9 @@ static int ac97_add_adapter(struct ac97_controller *ac97_ctrl)
|
||||
ret = device_register(&ac97_ctrl->adap);
|
||||
if (ret)
|
||||
put_device(&ac97_ctrl->adap);
|
||||
}
|
||||
} else
|
||||
kfree(ac97_ctrl);
|
||||
|
||||
if (!ret) {
|
||||
list_add(&ac97_ctrl->controllers, &ac97_controllers);
|
||||
dev_dbg(&ac97_ctrl->adap, "adapter registered by %s\n",
|
||||
@ -361,14 +364,11 @@ struct ac97_controller *snd_ac97_controller_register(
|
||||
ret = ac97_add_adapter(ac97_ctrl);
|
||||
|
||||
if (ret)
|
||||
goto err;
|
||||
return ERR_PTR(ret);
|
||||
ac97_bus_reset(ac97_ctrl);
|
||||
ac97_bus_scan(ac97_ctrl);
|
||||
|
||||
return ac97_ctrl;
|
||||
err:
|
||||
kfree(ac97_ctrl);
|
||||
return ERR_PTR(ret);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(snd_ac97_controller_register);
|
||||
|
||||
|
||||
@ -6321,6 +6321,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x1025, 0x1466, "Acer Aspire A515-56", ALC255_FIXUP_ACER_HEADPHONE_AND_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x1534, "Acer Predator PH315-54", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
|
||||
SND_PCI_QUIRK(0x1025, 0x159c, "Acer Nitro 5 AN515-58", ALC2XX_FIXUP_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x1597, "Acer Nitro 5 AN517-55", ALC2XX_FIXUP_HEADSET_MIC),
|
||||
SND_PCI_QUIRK(0x1025, 0x169a, "Acer Swift SFG16", ALC256_FIXUP_ACER_SFG16_MICMUTE_LED),
|
||||
SND_PCI_QUIRK(0x1025, 0x1826, "Acer Helios ZPC", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2),
|
||||
SND_PCI_QUIRK(0x1025, 0x182c, "Acer Helios ZPD", ALC287_FIXUP_PREDATOR_SPK_CS35L41_I2C_2),
|
||||
@ -6508,6 +6509,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x103c, 0x863e, "HP Spectre x360 15-df1xxx", ALC285_FIXUP_HP_SPECTRE_X360_DF1),
|
||||
SND_PCI_QUIRK(0x103c, 0x86e8, "HP Spectre x360 15-eb0xxx", ALC285_FIXUP_HP_SPECTRE_X360_EB1),
|
||||
SND_PCI_QUIRK(0x103c, 0x86f9, "HP Spectre x360 13-aw0xxx", ALC285_FIXUP_HP_SPECTRE_X360_MUTE_LED),
|
||||
SND_PCI_QUIRK(0x103c, 0x8706, "HP Laptop 15s-eq1xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
|
||||
SND_PCI_QUIRK(0x103c, 0x8716, "HP Elite Dragonfly G2 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8720, "HP EliteBook x360 1040 G8 Notebook PC", ALC285_FIXUP_HP_GPIO_AMP_INIT),
|
||||
SND_PCI_QUIRK(0x103c, 0x8724, "HP EliteBook 850 G7", ALC285_FIXUP_HP_GPIO_LED),
|
||||
|
||||
@ -111,8 +111,10 @@ static int tas2781_read_acpi(struct tasdevice_priv *p, const char *hid)
|
||||
sub = acpi_get_subsystem_id(ACPI_HANDLE(physdev));
|
||||
if (IS_ERR(sub)) {
|
||||
/* No subsys id in older tas2563 projects. */
|
||||
if (!strncmp(hid, "INT8866", sizeof("INT8866")))
|
||||
if (!strncmp(hid, "INT8866", sizeof("INT8866"))) {
|
||||
p->speaker_id = -1;
|
||||
goto end_2563;
|
||||
}
|
||||
dev_err(p->dev, "Failed to get SUBSYS ID.\n");
|
||||
ret = PTR_ERR(sub);
|
||||
goto err;
|
||||
|
||||
@ -1505,10 +1505,6 @@ static int pm4125_bind(struct device *dev)
|
||||
struct device_link *devlink;
|
||||
int ret;
|
||||
|
||||
/* Initialize device pointers to NULL for safe cleanup */
|
||||
pm4125->rxdev = NULL;
|
||||
pm4125->txdev = NULL;
|
||||
|
||||
/* Give the soundwire subdevices some more time to settle */
|
||||
usleep_range(15000, 15010);
|
||||
|
||||
@ -1537,13 +1533,7 @@ static int pm4125_bind(struct device *dev)
|
||||
|
||||
pm4125->sdw_priv[AIF1_CAP] = dev_get_drvdata(pm4125->txdev);
|
||||
pm4125->sdw_priv[AIF1_CAP]->pm4125 = pm4125;
|
||||
|
||||
pm4125->tx_sdw_dev = dev_to_sdw_dev(pm4125->txdev);
|
||||
if (!pm4125->tx_sdw_dev) {
|
||||
dev_err(dev, "could not get txslave with matching of dev\n");
|
||||
ret = -EINVAL;
|
||||
goto error_put_tx;
|
||||
}
|
||||
|
||||
/*
|
||||
* As TX is the main CSR reg interface, which should not be suspended first.
|
||||
@ -1624,11 +1614,8 @@ static void pm4125_unbind(struct device *dev)
|
||||
device_link_remove(dev, pm4125->rxdev);
|
||||
device_link_remove(pm4125->rxdev, pm4125->txdev);
|
||||
|
||||
/* Release device references acquired in bind */
|
||||
if (pm4125->txdev)
|
||||
put_device(pm4125->txdev);
|
||||
if (pm4125->rxdev)
|
||||
put_device(pm4125->rxdev);
|
||||
put_device(pm4125->txdev);
|
||||
put_device(pm4125->rxdev);
|
||||
|
||||
component_unbind_all(dev, pm4125);
|
||||
}
|
||||
|
||||
@ -2763,11 +2763,6 @@ static int wcd937x_bind(struct device *dev)
|
||||
wcd937x->sdw_priv[AIF1_CAP] = dev_get_drvdata(wcd937x->txdev);
|
||||
wcd937x->sdw_priv[AIF1_CAP]->wcd937x = wcd937x;
|
||||
wcd937x->tx_sdw_dev = dev_to_sdw_dev(wcd937x->txdev);
|
||||
if (!wcd937x->tx_sdw_dev) {
|
||||
dev_err(dev, "could not get txslave with matching of dev\n");
|
||||
ret = -EINVAL;
|
||||
goto err_put_txdev;
|
||||
}
|
||||
|
||||
/*
|
||||
* As TX is the main CSR reg interface, which should not be suspended first.
|
||||
|
||||
@ -46,11 +46,11 @@ enum {
|
||||
#define SOC_SDW_NO_AGGREGATION BIT(14)
|
||||
|
||||
/* BT audio offload: reserve 3 bits for future */
|
||||
#define SOF_BT_OFFLOAD_SSP_SHIFT 15
|
||||
#define SOF_BT_OFFLOAD_SSP_MASK (GENMASK(17, 15))
|
||||
#define SOF_BT_OFFLOAD_SSP_SHIFT 18
|
||||
#define SOF_BT_OFFLOAD_SSP_MASK (GENMASK(20, 18))
|
||||
#define SOF_BT_OFFLOAD_SSP(quirk) \
|
||||
(((quirk) << SOF_BT_OFFLOAD_SSP_SHIFT) & SOF_BT_OFFLOAD_SSP_MASK)
|
||||
#define SOF_SSP_BT_OFFLOAD_PRESENT BIT(18)
|
||||
#define SOF_SSP_BT_OFFLOAD_PRESENT BIT(21)
|
||||
|
||||
struct intel_mc_ctx {
|
||||
struct sof_hdmi_private hdmi;
|
||||
|
||||
@ -1414,10 +1414,6 @@ static int is_sdca_endpoint_present(struct device *dev,
|
||||
}
|
||||
|
||||
slave = dev_to_sdw_dev(sdw_dev);
|
||||
if (!slave) {
|
||||
ret = -EINVAL;
|
||||
goto put_device;
|
||||
}
|
||||
|
||||
/* Make sure BIOS provides SDCA properties */
|
||||
if (!slave->sdca_data.interface_revision) {
|
||||
|
||||
@ -1549,6 +1549,7 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
|
||||
* name string if quirk flag is set.
|
||||
*/
|
||||
if (mach) {
|
||||
const struct sof_intel_dsp_desc *chip = get_chip_info(sdev->pdata);
|
||||
bool tplg_fixup = false;
|
||||
bool dmic_fixup = false;
|
||||
|
||||
@ -1598,6 +1599,18 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
|
||||
sof_pdata->tplg_filename = tplg_filename;
|
||||
}
|
||||
|
||||
if (tplg_fixup && mach->mach_params.bt_link_mask &&
|
||||
chip->hw_ip_version >= SOF_INTEL_ACE_4_0) {
|
||||
int bt_port = fls(mach->mach_params.bt_link_mask) - 1;
|
||||
|
||||
tplg_filename = devm_kasprintf(sdev->dev, GFP_KERNEL, "%s-ssp%d-bt",
|
||||
sof_pdata->tplg_filename, bt_port);
|
||||
if (!tplg_filename)
|
||||
return NULL;
|
||||
|
||||
sof_pdata->tplg_filename = tplg_filename;
|
||||
}
|
||||
|
||||
if (mach->link_mask) {
|
||||
mach->mach_params.links = mach->links;
|
||||
mach->mach_params.link_mask = mach->link_mask;
|
||||
@ -1609,7 +1622,6 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
|
||||
if (tplg_fixup &&
|
||||
mach->tplg_quirk_mask & SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER &&
|
||||
mach->mach_params.i2s_link_mask) {
|
||||
const struct sof_intel_dsp_desc *chip = get_chip_info(sdev->pdata);
|
||||
int ssp_num;
|
||||
int mclk_mask;
|
||||
|
||||
|
||||
@ -171,6 +171,8 @@
|
||||
* @reg_dac_txdata: TX FIFO offset for DMA config.
|
||||
* @has_reset: SoC needs reset deasserted.
|
||||
* @val_fctl_ftx: TX FIFO flush bitmask.
|
||||
* @mclk_multiplier: ratio of internal MCLK divider
|
||||
* @tx_clk_name: name of TX module clock if split clock design
|
||||
*/
|
||||
struct sun4i_spdif_quirks {
|
||||
unsigned int reg_dac_txdata;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user