mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-01-11 17:10:13 +00:00
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. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmlVG44ACgkQJNaLcl1U h9BxIwf7BpTYRUkdXlG9J3/TYe3kfiXati5FP+TPAcuXi3+oNqD6nfpFkh1P20Dj su17vtFP8u5VMI1jkI9cYmXudlodEcDgAbJjnzs5hsQG43XDb8S1U19omkpnUCpY zISQEtmlRk+8kqF8wslZm4ZQ+h8KMqEnbnC2lT5B9iFyE+u5nz1hkL5V9LMKjdqa GbzNZEHJakLpDkCAbFx4eJBpkeF57/Feeom+RGK7Se4P07C4Ng/Hdy1D7m2EpNTh VvG53/z0SUAYkfpeBqk3xPSnicPnWZEeDSyBPDGEhJ+TBa9SeAZqd/V3+2piRu2Y qP7FVeMTLQGlH8dr9eTx2yP8Q5zwWg== =NL1Y -----END PGP SIGNATURE----- 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.
This commit is contained in:
commit
64d4fe6a4b
@ -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