Skip to content

Commit 64d4fe6

Browse files
committed
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.
2 parents e340663 + 3572ad8 commit 64d4fe6

6 files changed

Lines changed: 20 additions & 28 deletions

File tree

sound/soc/codecs/pm4125.c

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1505,10 +1505,6 @@ static int pm4125_bind(struct device *dev)
15051505
struct device_link *devlink;
15061506
int ret;
15071507

1508-
/* Initialize device pointers to NULL for safe cleanup */
1509-
pm4125->rxdev = NULL;
1510-
pm4125->txdev = NULL;
1511-
15121508
/* Give the soundwire subdevices some more time to settle */
15131509
usleep_range(15000, 15010);
15141510

@@ -1537,13 +1533,7 @@ static int pm4125_bind(struct device *dev)
15371533

15381534
pm4125->sdw_priv[AIF1_CAP] = dev_get_drvdata(pm4125->txdev);
15391535
pm4125->sdw_priv[AIF1_CAP]->pm4125 = pm4125;
1540-
15411536
pm4125->tx_sdw_dev = dev_to_sdw_dev(pm4125->txdev);
1542-
if (!pm4125->tx_sdw_dev) {
1543-
dev_err(dev, "could not get txslave with matching of dev\n");
1544-
ret = -EINVAL;
1545-
goto error_put_tx;
1546-
}
15471537

15481538
/*
15491539
* 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)
16241614
device_link_remove(dev, pm4125->rxdev);
16251615
device_link_remove(pm4125->rxdev, pm4125->txdev);
16261616

1627-
/* Release device references acquired in bind */
1628-
if (pm4125->txdev)
1629-
put_device(pm4125->txdev);
1630-
if (pm4125->rxdev)
1631-
put_device(pm4125->rxdev);
1617+
put_device(pm4125->txdev);
1618+
put_device(pm4125->rxdev);
16321619

16331620
component_unbind_all(dev, pm4125);
16341621
}

sound/soc/codecs/wcd937x.c

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2763,11 +2763,6 @@ static int wcd937x_bind(struct device *dev)
27632763
wcd937x->sdw_priv[AIF1_CAP] = dev_get_drvdata(wcd937x->txdev);
27642764
wcd937x->sdw_priv[AIF1_CAP]->wcd937x = wcd937x;
27652765
wcd937x->tx_sdw_dev = dev_to_sdw_dev(wcd937x->txdev);
2766-
if (!wcd937x->tx_sdw_dev) {
2767-
dev_err(dev, "could not get txslave with matching of dev\n");
2768-
ret = -EINVAL;
2769-
goto err_put_txdev;
2770-
}
27712766

27722767
/*
27732768
* As TX is the main CSR reg interface, which should not be suspended first.

sound/soc/intel/boards/sof_sdw_common.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,11 +46,11 @@ enum {
4646
#define SOC_SDW_NO_AGGREGATION BIT(14)
4747

4848
/* BT audio offload: reserve 3 bits for future */
49-
#define SOF_BT_OFFLOAD_SSP_SHIFT 15
50-
#define SOF_BT_OFFLOAD_SSP_MASK (GENMASK(17, 15))
49+
#define SOF_BT_OFFLOAD_SSP_SHIFT 18
50+
#define SOF_BT_OFFLOAD_SSP_MASK (GENMASK(20, 18))
5151
#define SOF_BT_OFFLOAD_SSP(quirk) \
5252
(((quirk) << SOF_BT_OFFLOAD_SSP_SHIFT) & SOF_BT_OFFLOAD_SSP_MASK)
53-
#define SOF_SSP_BT_OFFLOAD_PRESENT BIT(18)
53+
#define SOF_SSP_BT_OFFLOAD_PRESENT BIT(21)
5454

5555
struct intel_mc_ctx {
5656
struct sof_hdmi_private hdmi;

sound/soc/sdw_utils/soc_sdw_utils.c

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1414,10 +1414,6 @@ static int is_sdca_endpoint_present(struct device *dev,
14141414
}
14151415

14161416
slave = dev_to_sdw_dev(sdw_dev);
1417-
if (!slave) {
1418-
ret = -EINVAL;
1419-
goto put_device;
1420-
}
14211417

14221418
/* Make sure BIOS provides SDCA properties */
14231419
if (!slave->sdca_data.interface_revision) {

sound/soc/sof/intel/hda.c

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1549,6 +1549,7 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
15491549
* name string if quirk flag is set.
15501550
*/
15511551
if (mach) {
1552+
const struct sof_intel_dsp_desc *chip = get_chip_info(sdev->pdata);
15521553
bool tplg_fixup = false;
15531554
bool dmic_fixup = false;
15541555

@@ -1598,6 +1599,18 @@ struct snd_soc_acpi_mach *hda_machine_select(struct snd_sof_dev *sdev)
15981599
sof_pdata->tplg_filename = tplg_filename;
15991600
}
16001601

1602+
if (tplg_fixup && mach->mach_params.bt_link_mask &&
1603+
chip->hw_ip_version >= SOF_INTEL_ACE_4_0) {
1604+
int bt_port = fls(mach->mach_params.bt_link_mask) - 1;
1605+
1606+
tplg_filename = devm_kasprintf(sdev->dev, GFP_KERNEL, "%s-ssp%d-bt",
1607+
sof_pdata->tplg_filename, bt_port);
1608+
if (!tplg_filename)
1609+
return NULL;
1610+
1611+
sof_pdata->tplg_filename = tplg_filename;
1612+
}
1613+
16011614
if (mach->link_mask) {
16021615
mach->mach_params.links = mach->links;
16031616
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)
16091622
if (tplg_fixup &&
16101623
mach->tplg_quirk_mask & SND_SOC_ACPI_TPLG_INTEL_SSP_NUMBER &&
16111624
mach->mach_params.i2s_link_mask) {
1612-
const struct sof_intel_dsp_desc *chip = get_chip_info(sdev->pdata);
16131625
int ssp_num;
16141626
int mclk_mask;
16151627

sound/soc/sunxi/sun4i-spdif.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,8 @@
171171
* @reg_dac_txdata: TX FIFO offset for DMA config.
172172
* @has_reset: SoC needs reset deasserted.
173173
* @val_fctl_ftx: TX FIFO flush bitmask.
174+
* @mclk_multiplier: ratio of internal MCLK divider
175+
* @tx_clk_name: name of TX module clock if split clock design
174176
*/
175177
struct sun4i_spdif_quirks {
176178
unsigned int reg_dac_txdata;

0 commit comments

Comments
 (0)