Skip to content

Commit 01154cc

Browse files
committed
Merge tag 'sound-6.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "The majority of changes here are about ASoC. There are two core changes in ASoC (the bump of minimal topology ABI version and the fix for references of components in DAPM code), and others are mostly various device-specific fixes for SoundWire, AMD, Intel, SOF, Qualcomm and FSL, in addition to a few usual HD-audio quirks and fixes" * tag 'sound-6.12-rc5' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (33 commits) ALSA: hda/realtek: Update default depop procedure ASoC: qcom: sc7280: Fix missing Soundwire runtime stream alloc ASoC: fsl_micfil: Add sample rate constraint ASoC: rt722-sdca: increase clk_stop_timeout to fix clock stop issue ALSA: hda/tas2781: select CRC32 instead of CRC32_SARWATE ALSA: hda/realtek: Add subwoofer quirk for Acer Predator G9-593 ALSA: firewire-lib: Avoid division by zero in apply_constraint_to_size() ASoC: fsl_micfil: Add a flag to distinguish with different volume control types ASoC: codecs: lpass-rx-macro: fix RXn(rx,n) macro for DSM_CTL and SEC7 regs ASoC: Change my e-mail to gmail ASoC: Intel: soc-acpi: lnl: Add match entry for TM2 laptops ASoC: amd: yc: Fix non-functional mic on ASUS E1404FA ASoC: SOF: Intel: hda: Always clean up link DMA during stop soundwire: intel_ace2x: Send PDI stream number during prepare ASoC: SOF: Intel: hda: Handle prepare without close for non-HDA DAI's ASoC: SOF: ipc4-topology: Do not set ALH node_id for aggregated DAIs MAINTAINERS: Update maintainer list for MICROCHIP ASOC, SSC and MCP16502 drivers ASoC: qcom: Select missing common Soundwire module code on SDM845 ASoC: fsl_esai: change dev_warn to dev_dbg in irq handler ASoC: rsnd: Fix probe failure on HiHope boards due to endpoint parsing ...
2 parents fd14385 + c9f7a14 commit 01154cc

35 files changed

+329
-111
lines changed

Documentation/devicetree/bindings/sound/davinci-mcasp-audio.yaml

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -102,21 +102,21 @@ properties:
102102
default: 2
103103

104104
interrupts:
105-
oneOf:
106-
- minItems: 1
107-
items:
108-
- description: TX interrupt
109-
- description: RX interrupt
110-
- items:
111-
- description: common/combined interrupt
105+
minItems: 1
106+
maxItems: 2
112107

113108
interrupt-names:
114109
oneOf:
115-
- minItems: 1
110+
- description: TX interrupt
111+
const: tx
112+
- description: RX interrupt
113+
const: rx
114+
- description: TX and RX interrupts
116115
items:
117116
- const: tx
118117
- const: rx
119-
- const: common
118+
- description: Common/combined interrupt
119+
const: common
120120

121121
fck_parent:
122122
$ref: /schemas/types.yaml#/definitions/string

MAINTAINERS

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14986,6 +14986,7 @@ F: drivers/spi/spi-at91-usart.c
1498614986

1498714987
MICROCHIP AUDIO ASOC DRIVERS
1498814988
M: Claudiu Beznea <[email protected]>
14989+
M: Andrei Simion <[email protected]>
1498914990
1499014991
S: Supported
1499114992
F: Documentation/devicetree/bindings/sound/atmel*
@@ -15094,6 +15095,7 @@ F: include/video/atmel_lcdc.h
1509415095

1509515096
MICROCHIP MCP16502 PMIC DRIVER
1509615097
M: Claudiu Beznea <[email protected]>
15098+
M: Andrei Simion <[email protected]>
1509715099
L: [email protected] (moderated for non-subscribers)
1509815100
S: Supported
1509915101
F: Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
@@ -15224,6 +15226,7 @@ F: drivers/spi/spi-atmel.*
1522415226

1522515227
MICROCHIP SSC DRIVER
1522615228
M: Claudiu Beznea <[email protected]>
15229+
M: Andrei Simion <[email protected]>
1522715230
L: [email protected] (moderated for non-subscribers)
1522815231
S: Supported
1522915232
F: Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -23145,7 +23148,7 @@ F: Documentation/devicetree/bindings/iio/adc/ti,lmp92064.yaml
2314523148
F: drivers/iio/adc/ti-lmp92064.c
2314623149

2314723150
TI PCM3060 ASoC CODEC DRIVER
23148-
M: Kirill Marinushkin <kmarinushkin@birdec.com>
23151+
M: Kirill Marinushkin <k.marinushkin@gmail.com>
2314923152
2315023153
S: Maintained
2315123154
F: Documentation/devicetree/bindings/sound/pcm3060.txt

drivers/soundwire/intel_ace2x.c

Lines changed: 6 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -376,11 +376,12 @@ static int intel_hw_params(struct snd_pcm_substream *substream,
376376
static int intel_prepare(struct snd_pcm_substream *substream,
377377
struct snd_soc_dai *dai)
378378
{
379+
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
379380
struct sdw_cdns *cdns = snd_soc_dai_get_drvdata(dai);
380381
struct sdw_intel *sdw = cdns_to_intel(cdns);
381382
struct sdw_cdns_dai_runtime *dai_runtime;
383+
struct snd_pcm_hw_params *hw_params;
382384
int ch, dir;
383-
int ret = 0;
384385

385386
dai_runtime = cdns->dai_runtime_array[dai->id];
386387
if (!dai_runtime) {
@@ -389,12 +390,8 @@ static int intel_prepare(struct snd_pcm_substream *substream,
389390
return -EIO;
390391
}
391392

393+
hw_params = &rtd->dpcm[substream->stream].hw_params;
392394
if (dai_runtime->suspended) {
393-
struct snd_soc_pcm_runtime *rtd = snd_soc_substream_to_rtd(substream);
394-
struct snd_pcm_hw_params *hw_params;
395-
396-
hw_params = &rtd->dpcm[substream->stream].hw_params;
397-
398395
dai_runtime->suspended = false;
399396

400397
/*
@@ -415,15 +412,11 @@ static int intel_prepare(struct snd_pcm_substream *substream,
415412
/* the SHIM will be configured in the callback functions */
416413

417414
sdw_cdns_config_stream(cdns, ch, dir, dai_runtime->pdi);
418-
419-
/* Inform DSP about PDI stream number */
420-
ret = intel_params_stream(sdw, substream, dai,
421-
hw_params,
422-
sdw->instance,
423-
dai_runtime->pdi->intel_alh_id);
424415
}
425416

426-
return ret;
417+
/* Inform DSP about PDI stream number */
418+
return intel_params_stream(sdw, substream, dai, hw_params, sdw->instance,
419+
dai_runtime->pdi->intel_alh_id);
427420
}
428421

429422
static int

include/uapi/sound/asoc.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@
8888

8989
/* ABI version */
9090
#define SND_SOC_TPLG_ABI_VERSION 0x5 /* current version */
91-
#define SND_SOC_TPLG_ABI_VERSION_MIN 0x4 /* oldest version supported */
91+
#define SND_SOC_TPLG_ABI_VERSION_MIN 0x5 /* oldest version supported */
9292

9393
/* Max size of TLV data */
9494
#define SND_SOC_TPLG_TLV_SIZE 32

sound/firewire/amdtp-stream.c

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -172,6 +172,9 @@ static int apply_constraint_to_size(struct snd_pcm_hw_params *params,
172172
step = max(step, amdtp_syt_intervals[i]);
173173
}
174174

175+
if (step == 0)
176+
return -EINVAL;
177+
175178
t.min = roundup(s->min, step);
176179
t.max = rounddown(s->max, step);
177180
t.integer = 1;

sound/pci/hda/Kconfig

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ config SND_HDA_SCODEC_TAS2781_I2C
198198
depends on SND_SOC
199199
select SND_SOC_TAS2781_COMLIB
200200
select SND_SOC_TAS2781_FMWLIB
201-
select CRC32_SARWATE
201+
select CRC32
202202
help
203203
Say Y or M here to include TAS2781 I2C HD-audio side codec support
204204
in snd-hda-intel driver, such as ALC287.

sound/pci/hda/patch_realtek.c

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -3868,20 +3868,18 @@ static void alc_default_init(struct hda_codec *codec)
38683868

38693869
hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
38703870

3871-
if (hp_pin_sense)
3871+
if (hp_pin_sense) {
38723872
msleep(2);
38733873

3874-
snd_hda_codec_write(codec, hp_pin, 0,
3875-
AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
3876-
3877-
if (hp_pin_sense)
3878-
msleep(85);
3874+
snd_hda_codec_write(codec, hp_pin, 0,
3875+
AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
38793876

3880-
snd_hda_codec_write(codec, hp_pin, 0,
3881-
AC_VERB_SET_PIN_WIDGET_CONTROL, PIN_OUT);
3877+
msleep(75);
38823878

3883-
if (hp_pin_sense)
3884-
msleep(100);
3879+
snd_hda_codec_write(codec, hp_pin, 0,
3880+
AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_UNMUTE);
3881+
msleep(75);
3882+
}
38853883
}
38863884

38873885
static void alc_default_shutup(struct hda_codec *codec)
@@ -3897,22 +3895,20 @@ static void alc_default_shutup(struct hda_codec *codec)
38973895

38983896
hp_pin_sense = snd_hda_jack_detect(codec, hp_pin);
38993897

3900-
if (hp_pin_sense)
3898+
if (hp_pin_sense) {
39013899
msleep(2);
39023900

3903-
snd_hda_codec_write(codec, hp_pin, 0,
3904-
AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
3905-
3906-
if (hp_pin_sense)
3907-
msleep(85);
3908-
3909-
if (!spec->no_shutup_pins)
39103901
snd_hda_codec_write(codec, hp_pin, 0,
3911-
AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
3902+
AC_VERB_SET_AMP_GAIN_MUTE, AMP_OUT_MUTE);
39123903

3913-
if (hp_pin_sense)
3914-
msleep(100);
3904+
msleep(75);
39153905

3906+
if (!spec->no_shutup_pins)
3907+
snd_hda_codec_write(codec, hp_pin, 0,
3908+
AC_VERB_SET_PIN_WIDGET_CONTROL, 0x0);
3909+
3910+
msleep(75);
3911+
}
39163912
alc_auto_setup_eapd(codec, false);
39173913
alc_shutup_pins(codec);
39183914
}
@@ -7649,6 +7645,7 @@ enum {
76497645
ALC286_FIXUP_ACER_AIO_HEADSET_MIC,
76507646
ALC256_FIXUP_ASUS_HEADSET_MIC,
76517647
ALC256_FIXUP_ASUS_MIC_NO_PRESENCE,
7648+
ALC255_FIXUP_PREDATOR_SUBWOOFER,
76527649
ALC299_FIXUP_PREDATOR_SPK,
76537650
ALC256_FIXUP_MEDION_HEADSET_NO_PRESENCE,
76547651
ALC289_FIXUP_DELL_SPK1,
@@ -9063,6 +9060,13 @@ static const struct hda_fixup alc269_fixups[] = {
90639060
.chained = true,
90649061
.chain_id = ALC256_FIXUP_ASUS_HEADSET_MODE
90659062
},
9063+
[ALC255_FIXUP_PREDATOR_SUBWOOFER] = {
9064+
.type = HDA_FIXUP_PINS,
9065+
.v.pins = (const struct hda_pintbl[]) {
9066+
{ 0x17, 0x90170151 }, /* use as internal speaker (LFE) */
9067+
{ 0x1b, 0x90170152 } /* use as internal speaker (back) */
9068+
}
9069+
},
90669070
[ALC299_FIXUP_PREDATOR_SPK] = {
90679071
.type = HDA_FIXUP_PINS,
90689072
.v.pins = (const struct hda_pintbl[]) {
@@ -10150,6 +10154,8 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
1015010154
SND_PCI_QUIRK(0x1025, 0x110e, "Acer Aspire ES1-432", ALC255_FIXUP_ACER_MIC_NO_PRESENCE),
1015110155
SND_PCI_QUIRK(0x1025, 0x1166, "Acer Veriton N4640G", ALC269_FIXUP_LIFEBOOK),
1015210156
SND_PCI_QUIRK(0x1025, 0x1167, "Acer Veriton N6640G", ALC269_FIXUP_LIFEBOOK),
10157+
SND_PCI_QUIRK(0x1025, 0x1177, "Acer Predator G9-593", ALC255_FIXUP_PREDATOR_SUBWOOFER),
10158+
SND_PCI_QUIRK(0x1025, 0x1178, "Acer Predator G9-593", ALC255_FIXUP_PREDATOR_SUBWOOFER),
1015310159
SND_PCI_QUIRK(0x1025, 0x1246, "Acer Predator Helios 500", ALC299_FIXUP_PREDATOR_SPK),
1015410160
SND_PCI_QUIRK(0x1025, 0x1247, "Acer vCopperbox", ALC269VC_FIXUP_ACER_VCOPPERBOX_PINS),
1015510161
SND_PCI_QUIRK(0x1025, 0x1248, "Acer Veriton N4660G", ALC269VC_FIXUP_ACER_MIC_NO_PRESENCE),

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,6 +325,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
325325
DMI_MATCH(DMI_PRODUCT_NAME, "M6500RC"),
326326
}
327327
},
328+
{
329+
.driver_data = &acp6x_card,
330+
.matches = {
331+
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
332+
DMI_MATCH(DMI_PRODUCT_NAME, "E1404FA"),
333+
}
334+
},
328335
{
329336
.driver_data = &acp6x_card,
330337
.matches = {
@@ -339,6 +346,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
339346
DMI_MATCH(DMI_PRODUCT_NAME, "M7600RE"),
340347
}
341348
},
349+
{
350+
.driver_data = &acp6x_card,
351+
.matches = {
352+
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTeK COMPUTER INC."),
353+
DMI_MATCH(DMI_PRODUCT_NAME, "M3502RA"),
354+
}
355+
},
342356
{
343357
.driver_data = &acp6x_card,
344358
.matches = {

sound/soc/codecs/aw88399.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ static int aw_dev_get_dsp_status(struct aw_device *aw_dev)
656656
if (ret)
657657
return ret;
658658
if (!(reg_val & (~AW88399_WDT_CNT_MASK)))
659-
ret = -EPERM;
659+
return -EPERM;
660660

661661
return 0;
662662
}

sound/soc/codecs/lpass-rx-macro.c

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -202,12 +202,14 @@
202202
#define CDC_RX_RXn_RX_PATH_SEC3(rx, n) (0x042c + rx->rxn_reg_stride * n)
203203
#define CDC_RX_RX0_RX_PATH_SEC4 (0x0430)
204204
#define CDC_RX_RX0_RX_PATH_SEC7 (0x0434)
205-
#define CDC_RX_RXn_RX_PATH_SEC7(rx, n) (0x0434 + rx->rxn_reg_stride * n)
205+
#define CDC_RX_RXn_RX_PATH_SEC7(rx, n) \
206+
(0x0434 + (rx->rxn_reg_stride * n) + ((n > 1) ? rx->rxn_reg_stride2 : 0))
206207
#define CDC_RX_DSM_OUT_DELAY_SEL_MASK GENMASK(2, 0)
207208
#define CDC_RX_DSM_OUT_DELAY_TWO_SAMPLE 0x2
208209
#define CDC_RX_RX0_RX_PATH_MIX_SEC0 (0x0438)
209210
#define CDC_RX_RX0_RX_PATH_MIX_SEC1 (0x043C)
210-
#define CDC_RX_RXn_RX_PATH_DSM_CTL(rx, n) (0x0440 + rx->rxn_reg_stride * n)
211+
#define CDC_RX_RXn_RX_PATH_DSM_CTL(rx, n) \
212+
(0x0440 + (rx->rxn_reg_stride * n) + ((n > 1) ? rx->rxn_reg_stride2 : 0))
211213
#define CDC_RX_RXn_DSM_CLK_EN_MASK BIT(0)
212214
#define CDC_RX_RX0_RX_PATH_DSM_CTL (0x0440)
213215
#define CDC_RX_RX0_RX_PATH_DSM_DATA1 (0x0444)
@@ -645,6 +647,7 @@ struct rx_macro {
645647
int rx_mclk_cnt;
646648
enum lpass_codec_version codec_version;
647649
int rxn_reg_stride;
650+
int rxn_reg_stride2;
648651
bool is_ear_mode_on;
649652
bool hph_pwr_mode;
650653
bool hph_hd2_mode;
@@ -1929,9 +1932,6 @@ static int rx_macro_digital_mute(struct snd_soc_dai *dai, int mute, int stream)
19291932
CDC_RX_PATH_PGA_MUTE_MASK, 0x0);
19301933
}
19311934

1932-
if (j == INTERP_AUX)
1933-
dsm_reg = CDC_RX_RXn_RX_PATH_DSM_CTL(rx, 2);
1934-
19351935
int_mux_cfg0 = CDC_RX_INP_MUX_RX_INT0_CFG0 + j * 8;
19361936
int_mux_cfg1 = int_mux_cfg0 + 4;
19371937
int_mux_cfg0_val = snd_soc_component_read(component, int_mux_cfg0);
@@ -2702,9 +2702,6 @@ static int rx_macro_enable_interp_clk(struct snd_soc_component *component,
27022702

27032703
main_reg = CDC_RX_RXn_RX_PATH_CTL(rx, interp_idx);
27042704
dsm_reg = CDC_RX_RXn_RX_PATH_DSM_CTL(rx, interp_idx);
2705-
if (interp_idx == INTERP_AUX)
2706-
dsm_reg = CDC_RX_RXn_RX_PATH_DSM_CTL(rx, 2);
2707-
27082705
rx_cfg2_reg = CDC_RX_RXn_RX_PATH_CFG2(rx, interp_idx);
27092706

27102707
if (SND_SOC_DAPM_EVENT_ON(event)) {
@@ -3821,6 +3818,7 @@ static int rx_macro_probe(struct platform_device *pdev)
38213818
case LPASS_CODEC_VERSION_2_0:
38223819
case LPASS_CODEC_VERSION_2_1:
38233820
rx->rxn_reg_stride = 0x80;
3821+
rx->rxn_reg_stride2 = 0xc;
38243822
def_count = ARRAY_SIZE(rx_defaults) + ARRAY_SIZE(rx_pre_2_5_defaults);
38253823
reg_defaults = kmalloc_array(def_count, sizeof(struct reg_default), GFP_KERNEL);
38263824
if (!reg_defaults)
@@ -3834,6 +3832,7 @@ static int rx_macro_probe(struct platform_device *pdev)
38343832
case LPASS_CODEC_VERSION_2_7:
38353833
case LPASS_CODEC_VERSION_2_8:
38363834
rx->rxn_reg_stride = 0xc0;
3835+
rx->rxn_reg_stride2 = 0x0;
38373836
def_count = ARRAY_SIZE(rx_defaults) + ARRAY_SIZE(rx_2_5_defaults);
38383837
reg_defaults = kmalloc_array(def_count, sizeof(struct reg_default), GFP_KERNEL);
38393838
if (!reg_defaults)

0 commit comments

Comments
 (0)