Commit 64d4fe6a authored by Takashi Iwai's avatar Takashi Iwai
Browse files

Merge tag 'asoc-fix-v6.19-rc3' of...

Merge tag 'asoc-fix-v6.19-rc3' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus

ASoC: Fixes for v6.19

A small collection of driver speciifc fixes, mostly relatively minor,
plus an adjustment to the topology file naming for Intel systems with
Bluetooth required for disambiguation.
parents e340663b 3572ad82
Loading
Loading
Loading
Loading
+2 −15
Original line number Diff line number Diff line
@@ -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,10 +1614,7 @@ 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);

	component_unbind_all(dev, pm4125);
+0 −5
Original line number Diff line number Diff line
@@ -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.
+3 −3
Original line number Diff line number Diff line
@@ -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;
+0 −4
Original line number Diff line number Diff line
@@ -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) {
+13 −1
Original line number Diff line number Diff line
@@ -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;

Loading