Skip to content

Commit 711673f

Browse files
committed
Merge tag 'sound-6.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "This became a bit larger than wished for, often seen as a bump at the middle, but almost all changes are small device-specific fixes, so the risk must be pretty low. - SoundWire fix for missing symbol export - Fixes for device-tree bindings - A fix for OOB access in USB-audio, spotted by fuzzer - Quirks for HD-audio, SoundWire, AMD ACP - A series of ASoC tlv320 and wsa codec fixes - Other misc fixes in PCM OSS error-handling, Cirrus scodec test, ASoC ops endianess, davinci, simple-card, and tegra" * tag 'sound-6.19-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (33 commits) ALSA: hda/tas2781: Add newly-released HP laptop ASoC: rt5640: Fix duplicate clock properties in DT binding ALSA: hda/realtek: Add quirk for HP Pavilion x360 to enable mute LED ASoC: tlv320adcx140: fix word length ASoC: tlv320adcx140: Propagate error codes during probe ASoC: tlv320adcx140: fix null pointer ASoC: tlv320adcx140: invert DRE_ENABLE ASoC: sdw_utils: cs42l43: Enable Headphone pin for LINEOUT jack type ASoC: sdw_utils: Call init callbacks on the correct codec DAI soundwire: Add missing EXPORT for sdw_slave_type ALSA: usb-audio: Prevent excessive number of frames ALSA: hda/cirrus_scodec_test: Fix test suite name ALSA: hda/cirrus_scodec_test: Fix incorrect setup of gpiochip ALSA: hda/realtek: Add quirk for Asus Zephyrus G14 2025 using CS35L56, fix speakers ASoC: amd: yc: Fix microphone on ASUS M6500RE ASoC: tegra: Revert fix for uninitialized flat cache warning in tegra210_ahub ASoC: dt-bindings: rockchip-spdif: Allow "port" node ASoC: dt-bindings: realtek,rt5640: Allow 7 for realtek,jack-detect-source ASoC: dt-bindings: realtek,rt5640: Add missing properties/node ASoC: dt-bindings: realtek,rt5640: Document port node ...
2 parents c2a44a0 + 46b8d08 commit 711673f

23 files changed

Lines changed: 182 additions & 41 deletions

File tree

Documentation/devicetree/bindings/sound/everest,es8316.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,10 @@ properties:
4949
items:
5050
- const: mclk
5151

52+
interrupts:
53+
maxItems: 1
54+
description: Headphone detect interrupt
55+
5256
port:
5357
$ref: audio-graph-port.yaml#
5458
unevaluatedProperties: false

Documentation/devicetree/bindings/sound/realtek,rt5640.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,12 @@ properties:
4747
reg:
4848
maxItems: 1
4949

50+
clocks:
51+
maxItems: 1
52+
53+
clock-names:
54+
const: mclk
55+
5056
interrupts:
5157
maxItems: 1
5258
description: The CODEC's interrupt output.
@@ -98,6 +104,7 @@ properties:
98104
- 4 # Use GPIO2 for jack-detect
99105
- 5 # Use GPIO3 for jack-detect
100106
- 6 # Use GPIO4 for jack-detect
107+
- 7 # Use HDA header for jack-detect
101108

102109
realtek,jack-detect-not-inverted:
103110
description:
@@ -121,6 +128,10 @@ properties:
121128
- 2 # Scale current by 1.0
122129
- 3 # Scale current by 1.5
123130

131+
port:
132+
$ref: audio-graph-port.yaml#
133+
unevaluatedProperties: false
134+
124135
required:
125136
- compatible
126137
- reg

Documentation/devicetree/bindings/sound/rockchip-spdif.yaml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@ properties:
7070
"#sound-dai-cells":
7171
const: 0
7272

73+
port:
74+
$ref: /schemas/graph.yaml#/properties/port
75+
7376
required:
7477
- compatible
7578
- reg

drivers/soundwire/slave.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ const struct device_type sdw_slave_type = {
2323
.release = sdw_slave_release,
2424
.uevent = sdw_slave_uevent,
2525
};
26+
EXPORT_SYMBOL_GPL(sdw_slave_type);
2627

2728
int sdw_slave_add(struct sdw_bus *bus,
2829
struct sdw_slave_id *id, struct fwnode_handle *fwnode)

include/sound/pcm.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1402,7 +1402,7 @@ int snd_pcm_lib_mmap_iomem(struct snd_pcm_substream *substream, struct vm_area_s
14021402
#define snd_pcm_lib_mmap_iomem NULL
14031403
#endif
14041404

1405-
void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime);
1405+
int snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime);
14061406

14071407
/**
14081408
* snd_pcm_limit_isa_dma_size - Get the max size fitting with ISA DMA transfer

sound/core/oss/pcm_oss.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,9 @@ static int snd_pcm_oss_change_params_locked(struct snd_pcm_substream *substream)
10741074
runtime->oss.params = 0;
10751075
runtime->oss.prepare = 1;
10761076
runtime->oss.buffer_used = 0;
1077-
snd_pcm_runtime_buffer_set_silence(runtime);
1077+
err = snd_pcm_runtime_buffer_set_silence(runtime);
1078+
if (err < 0)
1079+
goto failure;
10781080

10791081
runtime->oss.period_frames = snd_pcm_alsa_frames(substream, oss_period_size);
10801082

sound/core/pcm_native.c

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -730,13 +730,18 @@ static void snd_pcm_buffer_access_unlock(struct snd_pcm_runtime *runtime)
730730
}
731731

732732
/* fill the PCM buffer with the current silence format; called from pcm_oss.c */
733-
void snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime)
733+
int snd_pcm_runtime_buffer_set_silence(struct snd_pcm_runtime *runtime)
734734
{
735-
snd_pcm_buffer_access_lock(runtime);
735+
int err;
736+
737+
err = snd_pcm_buffer_access_lock(runtime);
738+
if (err < 0)
739+
return err;
736740
if (runtime->dma_area)
737741
snd_pcm_format_set_silence(runtime->format, runtime->dma_area,
738742
bytes_to_samples(runtime, runtime->dma_bytes));
739743
snd_pcm_buffer_access_unlock(runtime);
744+
return 0;
740745
}
741746
EXPORT_SYMBOL_GPL(snd_pcm_runtime_buffer_set_silence);
742747

sound/hda/codecs/realtek/alc269.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6613,6 +6613,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
66136613
SND_PCI_QUIRK(0x103c, 0x8a2e, "HP Envy 16", ALC287_FIXUP_CS35L41_I2C_2),
66146614
SND_PCI_QUIRK(0x103c, 0x8a30, "HP Envy 17", ALC287_FIXUP_CS35L41_I2C_2),
66156615
SND_PCI_QUIRK(0x103c, 0x8a31, "HP Envy 15", ALC287_FIXUP_CS35L41_I2C_2),
6616+
SND_PCI_QUIRK(0x103c, 0x8a34, "HP Pavilion x360 2-in-1 Laptop 14-ek0xxx", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
66166617
SND_PCI_QUIRK(0x103c, 0x8a4f, "HP Victus 15-fa0xxx (MB 8A4F)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
66176618
SND_PCI_QUIRK(0x103c, 0x8a6e, "HP EDNA 360", ALC287_FIXUP_CS35L41_I2C_4),
66186619
SND_PCI_QUIRK(0x103c, 0x8a74, "HP ProBook 440 G8 Notebook PC", ALC236_FIXUP_HP_GPIO_LED),
@@ -6817,6 +6818,7 @@ static const struct hda_quirk alc269_fixup_tbl[] = {
68176818
SND_PCI_QUIRK(0x103c, 0x8f42, "HP ZBook 8 G2a 14W", ALC245_FIXUP_HP_TAS2781_I2C_MUTE_LED),
68186819
SND_PCI_QUIRK(0x103c, 0x8f57, "HP Trekker G7JC", ALC287_FIXUP_CS35L41_I2C_2),
68196820
SND_PCI_QUIRK(0x103c, 0x8f62, "HP ZBook 8 G2a 16W", ALC245_FIXUP_HP_TAS2781_I2C_MUTE_LED),
6821+
SND_PCI_QUIRK(0x1043, 0x1024, "ASUS Zephyrus G14 2025", ALC285_FIXUP_ASUS_GA403U_HEADSET_MIC),
68206822
SND_PCI_QUIRK(0x1043, 0x1032, "ASUS VivoBook X513EA", ALC256_FIXUP_ASUS_MIC_NO_PRESENCE),
68216823
SND_PCI_QUIRK(0x1043, 0x1034, "ASUS GU605C", ALC285_FIXUP_ASUS_GU605_SPI_SPEAKER2_TO_DAC1),
68226824
SND_PCI_QUIRK(0x1043, 0x103e, "ASUS X540SA", ALC256_FIXUP_ASUS_MIC),

sound/hda/codecs/side-codecs/cirrus_scodec_test.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,7 @@ static int cirrus_scodec_test_gpio_probe(struct platform_device *pdev)
103103

104104
/* GPIO core modifies our struct gpio_chip so use a copy */
105105
gpio_priv->chip = cirrus_scodec_test_gpio_chip;
106+
gpio_priv->chip.parent = &pdev->dev;
106107
ret = devm_gpiochip_add_data(&pdev->dev, &gpio_priv->chip, gpio_priv);
107108
if (ret)
108109
return dev_err_probe(&pdev->dev, ret, "Failed to add gpiochip\n");
@@ -319,7 +320,7 @@ static struct kunit_case cirrus_scodec_test_cases[] = {
319320
};
320321

321322
static struct kunit_suite cirrus_scodec_test_suite = {
322-
.name = "snd-hda-scodec-cs35l56-test",
323+
.name = "snd-hda-cirrus-scodec-test",
323324
.init = cirrus_scodec_test_case_init,
324325
.test_cases = cirrus_scodec_test_cases,
325326
};

sound/hda/codecs/side-codecs/tas2781_hda_i2c.c

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// TAS2781 HDA I2C driver
44
//
5-
// Copyright 2023 - 2025 Texas Instruments, Inc.
5+
// Copyright 2023 - 2026 Texas Instruments, Inc.
66
//
77
// Author: Shenghao Ding <shenghao-ding@ti.com>
88
// Current maintainer: Baojun Xu <baojun.xu@ti.com>
@@ -60,6 +60,7 @@ struct tas2781_hda_i2c_priv {
6060
int (*save_calibration)(struct tas2781_hda *h);
6161

6262
int hda_chip_id;
63+
bool skip_calibration;
6364
};
6465

6566
static int tas2781_get_i2c_res(struct acpi_resource *ares, void *data)
@@ -491,7 +492,8 @@ static void tasdevice_dspfw_init(void *context)
491492
/* If calibrated data occurs error, dsp will still works with default
492493
* calibrated data inside algo.
493494
*/
494-
hda_priv->save_calibration(tas_hda);
495+
if (!hda_priv->skip_calibration)
496+
hda_priv->save_calibration(tas_hda);
495497
}
496498

497499
static void tasdev_fw_ready(const struct firmware *fmw, void *context)
@@ -548,6 +550,7 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
548550
void *master_data)
549551
{
550552
struct tas2781_hda *tas_hda = dev_get_drvdata(dev);
553+
struct tas2781_hda_i2c_priv *hda_priv = tas_hda->hda_priv;
551554
struct hda_component_parent *parent = master_data;
552555
struct hda_component *comp;
553556
struct hda_codec *codec;
@@ -568,11 +571,22 @@ static int tas2781_hda_bind(struct device *dev, struct device *master,
568571
case 0x1028:
569572
tas_hda->catlog_id = DELL;
570573
break;
574+
case 0x103C:
575+
tas_hda->catlog_id = HP;
576+
break;
571577
default:
572578
tas_hda->catlog_id = LENOVO;
573579
break;
574580
}
575581

582+
/*
583+
* Using ASUS ROG Xbox Ally X (RC73XA) UEFI calibration data
584+
* causes audio dropouts during playback, use fallback data
585+
* from DSP firmware as a workaround.
586+
*/
587+
if (codec->core.subsystem_id == 0x10431384)
588+
hda_priv->skip_calibration = true;
589+
576590
pm_runtime_get_sync(dev);
577591

578592
comp->dev = dev;

0 commit comments

Comments
 (0)