Skip to content

Commit 08c9aa7

Browse files
committed
Merge tag 'asoc-fix-v6.4-rc6' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.4 A lot of routine driver specific fixes here, nothing in the core though there are a couple of fixes for the generic cards. There's also a few new quirks for x86 platforms.
2 parents 5c219a3 + 32cf004 commit 08c9aa7

23 files changed

+99
-88
lines changed

sound/soc/amd/ps/pci-ps.c

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,8 +211,7 @@ static int create_acp63_platform_devs(struct pci_dev *pci, struct acp63_dev_data
211211
case ACP63_PDM_DEV_MASK:
212212
adata->pdm_dev_index = 0;
213213
acp63_fill_platform_dev_info(&pdevinfo[0], parent, NULL, "acp_ps_pdm_dma",
214-
0, adata->res, 1, &adata->acp_lock,
215-
sizeof(adata->acp_lock));
214+
0, adata->res, 1, NULL, 0);
216215
acp63_fill_platform_dev_info(&pdevinfo[1], parent, NULL, "dmic-codec",
217216
0, NULL, 0, NULL, 0);
218217
acp63_fill_platform_dev_info(&pdevinfo[2], parent, NULL, "acp_ps_mach",

sound/soc/amd/ps/ps-pdm-dma.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -361,12 +361,12 @@ static int acp63_pdm_audio_probe(struct platform_device *pdev)
361361
{
362362
struct resource *res;
363363
struct pdm_dev_data *adata;
364+
struct acp63_dev_data *acp_data;
365+
struct device *parent;
364366
int status;
365367

366-
if (!pdev->dev.platform_data) {
367-
dev_err(&pdev->dev, "platform_data not retrieved\n");
368-
return -ENODEV;
369-
}
368+
parent = pdev->dev.parent;
369+
acp_data = dev_get_drvdata(parent);
370370
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
371371
if (!res) {
372372
dev_err(&pdev->dev, "IORESOURCE_MEM FAILED\n");
@@ -382,7 +382,7 @@ static int acp63_pdm_audio_probe(struct platform_device *pdev)
382382
return -ENOMEM;
383383

384384
adata->capture_stream = NULL;
385-
adata->acp_lock = pdev->dev.platform_data;
385+
adata->acp_lock = &acp_data->acp_lock;
386386
dev_set_drvdata(&pdev->dev, adata);
387387
status = devm_snd_soc_register_component(&pdev->dev,
388388
&acp63_pdm_component,

sound/soc/amd/yc/acp6x-mach.c

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
171171
DMI_MATCH(DMI_PRODUCT_NAME, "21CL"),
172172
}
173173
},
174+
{
175+
.driver_data = &acp6x_card,
176+
.matches = {
177+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
178+
DMI_MATCH(DMI_PRODUCT_NAME, "21EF"),
179+
}
180+
},
174181
{
175182
.driver_data = &acp6x_card,
176183
.matches = {

sound/soc/codecs/cs35l56.c

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -704,9 +704,6 @@ static int cs35l56_sdw_dai_hw_free(struct snd_pcm_substream *substream,
704704
static int cs35l56_sdw_dai_set_stream(struct snd_soc_dai *dai,
705705
void *sdw_stream, int direction)
706706
{
707-
if (!sdw_stream)
708-
return 0;
709-
710707
snd_soc_dai_dma_data_set(dai, direction, sdw_stream);
711708

712709
return 0;

sound/soc/codecs/max98363.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -211,7 +211,7 @@ static int max98363_io_init(struct sdw_slave *slave)
211211
}
212212

213213
#define MAX98363_RATES SNDRV_PCM_RATE_8000_192000
214-
#define MAX98363_FORMATS (SNDRV_PCM_FMTBIT_S32_LE)
214+
#define MAX98363_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_LE)
215215

216216
static int max98363_sdw_dai_hw_params(struct snd_pcm_substream *substream,
217217
struct snd_pcm_hw_params *params,
@@ -246,7 +246,7 @@ static int max98363_sdw_dai_hw_params(struct snd_pcm_substream *substream,
246246
stream_config.frame_rate = params_rate(params);
247247
stream_config.bps = snd_pcm_format_width(params_format(params));
248248
stream_config.direction = direction;
249-
stream_config.ch_count = params_channels(params);
249+
stream_config.ch_count = 1;
250250

251251
if (stream_config.ch_count > runtime->hw.channels_max) {
252252
stream_config.ch_count = runtime->hw.channels_max;

sound/soc/codecs/nau8824.c

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1903,6 +1903,30 @@ static const struct dmi_system_id nau8824_quirk_table[] = {
19031903
},
19041904
.driver_data = (void *)(NAU8824_MONO_SPEAKER),
19051905
},
1906+
{
1907+
/* Positivo CW14Q01P */
1908+
.matches = {
1909+
DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"),
1910+
DMI_MATCH(DMI_BOARD_NAME, "CW14Q01P"),
1911+
},
1912+
.driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH),
1913+
},
1914+
{
1915+
/* Positivo K1424G */
1916+
.matches = {
1917+
DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"),
1918+
DMI_MATCH(DMI_BOARD_NAME, "K1424G"),
1919+
},
1920+
.driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH),
1921+
},
1922+
{
1923+
/* Positivo N14ZP74G */
1924+
.matches = {
1925+
DMI_MATCH(DMI_SYS_VENDOR, "Positivo Tecnologia SA"),
1926+
DMI_MATCH(DMI_BOARD_NAME, "N14ZP74G"),
1927+
},
1928+
.driver_data = (void *)(NAU8824_JD_ACTIVE_HIGH),
1929+
},
19061930
{}
19071931
};
19081932

sound/soc/codecs/wcd938x-sdw.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1190,7 +1190,6 @@ static const struct regmap_config wcd938x_regmap_config = {
11901190
.readable_reg = wcd938x_readable_register,
11911191
.writeable_reg = wcd938x_writeable_register,
11921192
.volatile_reg = wcd938x_volatile_register,
1193-
.can_multi_write = true,
11941193
};
11951194

11961195
static const struct sdw_slave_ops wcd9380_slave_ops = {

sound/soc/codecs/wsa881x.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -645,7 +645,6 @@ static struct regmap_config wsa881x_regmap_config = {
645645
.readable_reg = wsa881x_readable_register,
646646
.reg_format_endian = REGMAP_ENDIAN_NATIVE,
647647
.val_format_endian = REGMAP_ENDIAN_NATIVE,
648-
.can_multi_write = true,
649648
};
650649

651650
enum {

sound/soc/codecs/wsa883x.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -946,7 +946,6 @@ static struct regmap_config wsa883x_regmap_config = {
946946
.writeable_reg = wsa883x_writeable_register,
947947
.reg_format_endian = REGMAP_ENDIAN_NATIVE,
948948
.val_format_endian = REGMAP_ENDIAN_NATIVE,
949-
.can_multi_write = true,
950949
.use_single_read = true,
951950
};
952951

sound/soc/fsl/fsl_sai.c

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -491,14 +491,21 @@ static int fsl_sai_set_bclk(struct snd_soc_dai *dai, bool tx, u32 freq)
491491
regmap_update_bits(sai->regmap, reg, FSL_SAI_CR2_MSEL_MASK,
492492
FSL_SAI_CR2_MSEL(sai->mclk_id[tx]));
493493

494-
if (savediv == 1)
494+
if (savediv == 1) {
495495
regmap_update_bits(sai->regmap, reg,
496496
FSL_SAI_CR2_DIV_MASK | FSL_SAI_CR2_BYP,
497497
FSL_SAI_CR2_BYP);
498-
else
498+
if (fsl_sai_dir_is_synced(sai, adir))
499+
regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs),
500+
FSL_SAI_CR2_BCI, FSL_SAI_CR2_BCI);
501+
else
502+
regmap_update_bits(sai->regmap, FSL_SAI_xCR2(tx, ofs),
503+
FSL_SAI_CR2_BCI, 0);
504+
} else {
499505
regmap_update_bits(sai->regmap, reg,
500506
FSL_SAI_CR2_DIV_MASK | FSL_SAI_CR2_BYP,
501507
savediv / 2 - 1);
508+
}
502509

503510
if (sai->soc_data->max_register >= FSL_SAI_MCTL) {
504511
/* SAI is in master mode at this point, so enable MCLK */

0 commit comments

Comments
 (0)