Skip to content

Commit 14f6863

Browse files
committed
Merge tag 'sound-6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "Still higher volume than wished, but all are driver-specific small fixes and look safe for this late RC. The majority of changes are for ASoC, especially for wcd938x driver and Cirrus codec drivers, while there are other random fixes including usual HD-audio quirks" * tag 'sound-6.6-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (22 commits) ASoC: da7219: Correct the process of setting up Gnd switch in AAD ALSA: hda/realtek - Fixed ASUS platform headset Mic issue ALSA: hda/realtek: Add quirk for ASUS ROG GU603ZV ALSA: hda/relatek: Enable Mute LED on HP Laptop 15s-fq5xxx ASoC: dwc: Fix non-DT instantiation ASoC: codecs: tas2780: Fix log of failed reset via I2C. ASoC: rt5650: fix the wrong result of key button ASoC: cs42l42: Fix missing include of gpio/consumer.h ASoC: cs42l43: Update values for bias sense ASoC: dt-bindings: cirrus,cs42l43: Update values for bias sense ASoC: cs35l56: ASP1 DOUT must default to Hi-Z when not transmitting ASoC: pxa: fix a memory leak in probe() ASoC: cs35l56: Fix illegal use of init_completion() ASoC: codecs: wcd938x-sdw: fix runtime PM imbalance on probe errors ASoC: codecs: wcd938x-sdw: fix use after free on driver unbind ASoC: codecs: wcd938x: fix runtime PM imbalance on remove ASoC: codecs: wcd938x: fix regulator leaks on probe errors ASoC: codecs: wcd938x: fix resource leaks on bind errors ASoC: codecs: wcd938x: fix unbind tear down order ASoC: codecs: wcd938x: drop bogus bind error handling ...
2 parents c8045b4 + 8e13caa commit 14f6863

File tree

16 files changed

+146
-34
lines changed

16 files changed

+146
-34
lines changed

Documentation/devicetree/bindings/sound/cirrus,cs42l43.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ properties:
8282
description:
8383
Current at which the headset micbias sense clamp will engage, 0 to
8484
disable.
85-
enum: [ 0, 14, 23, 41, 50, 60, 68, 86, 95 ]
85+
enum: [ 0, 14, 24, 43, 52, 61, 71, 90, 99 ]
8686
default: 0
8787

8888
cirrus,bias-ramp-ms:

include/sound/soc-dapm.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -469,6 +469,7 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);
469469

470470
int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,
471471
struct snd_pcm_hw_params *params, struct snd_soc_dai *dai);
472+
int snd_soc_dapm_widget_name_cmp(struct snd_soc_dapm_widget *widget, const char *s);
472473

473474
/* dapm path setup */
474475
int snd_soc_dapm_new_widgets(struct snd_soc_card *card);

sound/pci/hda/patch_realtek.c

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7078,6 +7078,24 @@ static void alc287_fixup_bind_dacs(struct hda_codec *codec,
70787078
0x0); /* Make sure 0x14 was disable */
70797079
}
70807080
}
7081+
/* Fix none verb table of Headset Mic pin */
7082+
static void alc_fixup_headset_mic(struct hda_codec *codec,
7083+
const struct hda_fixup *fix, int action)
7084+
{
7085+
struct alc_spec *spec = codec->spec;
7086+
static const struct hda_pintbl pincfgs[] = {
7087+
{ 0x19, 0x03a1103c },
7088+
{ }
7089+
};
7090+
7091+
switch (action) {
7092+
case HDA_FIXUP_ACT_PRE_PROBE:
7093+
snd_hda_apply_pincfgs(codec, pincfgs);
7094+
alc_update_coef_idx(codec, 0x45, 0xf<<12 | 1<<10, 5<<12);
7095+
spec->parse_flags |= HDA_PINCFG_HEADSET_MIC;
7096+
break;
7097+
}
7098+
}
70817099

70827100

70837101
enum {
@@ -7344,6 +7362,7 @@ enum {
73447362
ALC245_FIXUP_HP_X360_MUTE_LEDS,
73457363
ALC287_FIXUP_THINKPAD_I2S_SPK,
73467364
ALC287_FIXUP_MG_RTKC_CSAMP_CS35L41_I2C_THINKPAD,
7365+
ALC2XX_FIXUP_HEADSET_MIC,
73477366
};
73487367

73497368
/* A special fixup for Lenovo C940 and Yoga Duet 7;
@@ -9448,6 +9467,10 @@ static const struct hda_fixup alc269_fixups[] = {
94489467
.chained = true,
94499468
.chain_id = ALC287_FIXUP_CS35L41_I2C_2_THINKPAD_ACPI,
94509469
},
9470+
[ALC2XX_FIXUP_HEADSET_MIC] = {
9471+
.type = HDA_FIXUP_FUNC,
9472+
.v.func = alc_fixup_headset_mic,
9473+
},
94519474
};
94529475

94539476
static const struct snd_pci_quirk alc269_fixup_tbl[] = {
@@ -9722,6 +9745,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
97229745
SND_PCI_QUIRK(0x103c, 0x89c6, "Zbook Fury 17 G9", ALC245_FIXUP_CS35L41_SPI_2_HP_GPIO_LED),
97239746
SND_PCI_QUIRK(0x103c, 0x89ca, "HP", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
97249747
SND_PCI_QUIRK(0x103c, 0x89d3, "HP EliteBook 645 G9 (MB 89D2)", ALC236_FIXUP_HP_MUTE_LED_MICMUTE_VREF),
9748+
SND_PCI_QUIRK(0x103c, 0x8a20, "HP Laptop 15s-fq5xxx", ALC236_FIXUP_HP_MUTE_LED_COEFBIT2),
97259749
SND_PCI_QUIRK(0x103c, 0x8a25, "HP Victus 16-d1xxx (MB 8A25)", ALC245_FIXUP_HP_MUTE_LED_COEFBIT),
97269750
SND_PCI_QUIRK(0x103c, 0x8a78, "HP Dev One", ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST),
97279751
SND_PCI_QUIRK(0x103c, 0x8aa0, "HP ProBook 440 G9 (MB 8A9E)", ALC236_FIXUP_HP_GPIO_LED),
@@ -9791,6 +9815,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
97919815
SND_PCI_QUIRK(0x1043, 0x1517, "Asus Zenbook UX31A", ALC269VB_FIXUP_ASUS_ZENBOOK_UX31A),
97929816
SND_PCI_QUIRK(0x1043, 0x1573, "ASUS GZ301V", ALC285_FIXUP_ASUS_HEADSET_MIC),
97939817
SND_PCI_QUIRK(0x1043, 0x1662, "ASUS GV301QH", ALC294_FIXUP_ASUS_DUAL_SPK),
9818+
SND_PCI_QUIRK(0x1043, 0x1663, "ASUS GU603ZV", ALC285_FIXUP_ASUS_HEADSET_MIC),
97949819
SND_PCI_QUIRK(0x1043, 0x1683, "ASUS UM3402YAR", ALC287_FIXUP_CS35L41_I2C_2),
97959820
SND_PCI_QUIRK(0x1043, 0x16b2, "ASUS GU603", ALC289_FIXUP_ASUS_GA401),
97969821
SND_PCI_QUIRK(0x1043, 0x16e3, "ASUS UX50", ALC269_FIXUP_STEREO_DMIC),
@@ -10750,6 +10775,8 @@ static const struct snd_hda_pin_quirk alc269_fallback_pin_fixup_tbl[] = {
1075010775
SND_HDA_PIN_QUIRK(0x10ec0274, 0x1028, "Dell", ALC274_FIXUP_DELL_AIO_LINEOUT_VERB,
1075110776
{0x19, 0x40000000},
1075210777
{0x1a, 0x40000000}),
10778+
SND_HDA_PIN_QUIRK(0x10ec0256, 0x1043, "ASUS", ALC2XX_FIXUP_HEADSET_MIC,
10779+
{0x19, 0x40000000}),
1075310780
{}
1075410781
};
1075510782

sound/soc/codecs/cs35l56.c

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,7 @@ static void cs35l56_patch(struct cs35l56_private *cs35l56)
706706

707707
mutex_lock(&cs35l56->base.irq_lock);
708708

709-
init_completion(&cs35l56->init_completion);
709+
reinit_completion(&cs35l56->init_completion);
710710

711711
cs35l56->soft_resetting = true;
712712
cs35l56_system_reset(&cs35l56->base, !!cs35l56->sdw_peripheral);
@@ -1186,6 +1186,12 @@ int cs35l56_init(struct cs35l56_private *cs35l56)
11861186
/* Registers could be dirty after soft reset or SoundWire enumeration */
11871187
regcache_sync(cs35l56->base.regmap);
11881188

1189+
/* Set ASP1 DOUT to high-impedance when it is not transmitting audio data. */
1190+
ret = regmap_set_bits(cs35l56->base.regmap, CS35L56_ASP1_CONTROL3,
1191+
CS35L56_ASP1_DOUT_HIZ_CTRL_MASK);
1192+
if (ret)
1193+
return dev_err_probe(cs35l56->base.dev, ret, "Failed to write ASP1_CONTROL3\n");
1194+
11891195
cs35l56->base.init_done = true;
11901196
complete(&cs35l56->init_completion);
11911197

sound/soc/codecs/cs42l42-sdw.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include <linux/acpi.h>
88
#include <linux/device.h>
9+
#include <linux/gpio/consumer.h>
910
#include <linux/iopoll.h>
1011
#include <linux/module.h>
1112
#include <linux/mod_devicetable.h>

sound/soc/codecs/cs42l43-jack.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ static const unsigned int cs42l43_accdet_db_ms[] = {
3434
static const unsigned int cs42l43_accdet_ramp_ms[] = { 10, 40, 90, 170 };
3535

3636
static const unsigned int cs42l43_accdet_bias_sense[] = {
37-
14, 23, 41, 50, 60, 68, 86, 95, 0,
37+
14, 24, 43, 52, 61, 71, 90, 99, 0,
3838
};
3939

4040
static int cs42l43_find_index(struct cs42l43_codec *priv, const char * const prop,

sound/soc/codecs/da7219-aad.c

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -59,9 +59,6 @@ static void da7219_aad_btn_det_work(struct work_struct *work)
5959
bool micbias_up = false;
6060
int retries = 0;
6161

62-
/* Disable ground switch */
63-
snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);
64-
6562
/* Drive headphones/lineout */
6663
snd_soc_component_update_bits(component, DA7219_HP_L_CTRL,
6764
DA7219_HP_L_AMP_OE_MASK,
@@ -155,9 +152,6 @@ static void da7219_aad_hptest_work(struct work_struct *work)
155152
tonegen_freq_hptest = cpu_to_le16(DA7219_AAD_HPTEST_RAMP_FREQ_INT_OSC);
156153
}
157154

158-
/* Disable ground switch */
159-
snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);
160-
161155
/* Ensure gain ramping at fastest rate */
162156
gain_ramp_ctrl = snd_soc_component_read(component, DA7219_GAIN_RAMP_CTRL);
163157
snd_soc_component_write(component, DA7219_GAIN_RAMP_CTRL, DA7219_GAIN_RAMP_RATE_X8);
@@ -421,6 +415,11 @@ static irqreturn_t da7219_aad_irq_thread(int irq, void *data)
421415
* handle a removal, and we can check at the end of
422416
* hptest if we have a valid result or not.
423417
*/
418+
419+
cancel_delayed_work_sync(&da7219_aad->jack_det_work);
420+
/* Disable ground switch */
421+
snd_soc_component_update_bits(component, 0xFB, 0x01, 0x00);
422+
424423
if (statusa & DA7219_JACK_TYPE_STS_MASK) {
425424
report |= SND_JACK_HEADSET;
426425
mask |= SND_JACK_HEADSET | SND_JACK_LINEOUT;

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1675,12 +1675,12 @@ static int wsa_macro_spk_boost_event(struct snd_soc_dapm_widget *w,
16751675
u16 boost_path_ctl, boost_path_cfg1;
16761676
u16 reg, reg_mix;
16771677

1678-
if (!strcmp(w->name, "WSA_RX INT0 CHAIN")) {
1678+
if (!snd_soc_dapm_widget_name_cmp(w, "WSA_RX INT0 CHAIN")) {
16791679
boost_path_ctl = CDC_WSA_BOOST0_BOOST_PATH_CTL;
16801680
boost_path_cfg1 = CDC_WSA_RX0_RX_PATH_CFG1;
16811681
reg = CDC_WSA_RX0_RX_PATH_CTL;
16821682
reg_mix = CDC_WSA_RX0_RX_PATH_MIX_CTL;
1683-
} else if (!strcmp(w->name, "WSA_RX INT1 CHAIN")) {
1683+
} else if (!snd_soc_dapm_widget_name_cmp(w, "WSA_RX INT1 CHAIN")) {
16841684
boost_path_ctl = CDC_WSA_BOOST1_BOOST_PATH_CTL;
16851685
boost_path_cfg1 = CDC_WSA_RX1_RX_PATH_CFG1;
16861686
reg = CDC_WSA_RX1_RX_PATH_CTL;

sound/soc/codecs/rt5645.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3257,6 +3257,8 @@ int rt5645_set_jack_detect(struct snd_soc_component *component,
32573257
RT5645_GP1_PIN_IRQ, RT5645_GP1_PIN_IRQ);
32583258
regmap_update_bits(rt5645->regmap, RT5645_GEN_CTRL1,
32593259
RT5645_DIG_GATE_CTRL, RT5645_DIG_GATE_CTRL);
3260+
regmap_update_bits(rt5645->regmap, RT5645_DEPOP_M1,
3261+
RT5645_HP_CB_MASK, RT5645_HP_CB_PU);
32603262
}
32613263
rt5645_irq(0, rt5645);
32623264

sound/soc/codecs/tas2780.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ static void tas2780_reset(struct tas2780_priv *tas2780)
3939
usleep_range(2000, 2050);
4040
}
4141

42-
snd_soc_component_write(tas2780->component, TAS2780_SW_RST,
42+
ret = snd_soc_component_write(tas2780->component, TAS2780_SW_RST,
4343
TAS2780_RST);
4444
if (ret)
4545
dev_err(tas2780->dev, "%s:errCode:0x%x Reset error!\n",

0 commit comments

Comments
 (0)