Skip to content

Commit 377773d

Browse files
committed
Merge tag 'sound-6.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai: "A collection of lots of small changes, almost all device-specific: - A series of fixes for ASoC Qualcomm stuff - Various fixes for Cirrus ASoC and HD-audio codecs - A few AMD ASoC quirks and usual HD-audio quirks - Other misc fixes, including a long-time regression in USB-audio" * tag 'sound-6.11-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (39 commits) ASoC: cs35l56: Patch CS35L56_IRQ1_MASK_18 to the default value ASoC: meson: axg-fifo: fix irq scheduling issue with PREEMPT_RT MAINTAINERS: Update Cirrus Logic parts to linux-sound mailing list ASoC: dt-bindings: qcom,wcd939x: Correct reset GPIO polarity in example ASoC: dt-bindings: qcom,wcd938x: Correct reset GPIO polarity in example ASoC: dt-bindings: qcom,wcd934x: Correct reset GPIO polarity in example ASoC: dt-bindings: qcom,wcd937x: Correct reset GPIO polarity in example ASoC: amd: yc: Add quirk entry for OMEN by HP Gaming Laptop 16-n0xxx ASoC: codecs: ES8326: button detect issue ASoC: amd: yc: Support mic on Lenovo Thinkpad E14 Gen 6 ALSA: usb-audio: Re-add ScratchAmp quirk entries ALSA: hda/realtek: Add Framework Laptop 13 (Intel Core Ultra) to quirks ALSA: hda/hdmi: Yet more pin fix for HP EliteDesk 800 G4 ALSA: hda: Add HP MP9 G4 Retail System AMS to force connect list ASoC: cs35l56: Handle OTP read latency over SoundWire ASoC: codecs: lpass-macro: fix missing codec version ALSA: line6: Fix racy access to midibuf ASoC: cs-amp-lib: Fix NULL pointer crash if efi.get_variable is NULL ASoC: cs35l56: Stop creating ALSA controls for firmware coefficients ASoC: wm_adsp: Add control_add callback and export wm_adsp_control_add() ...
2 parents 2124d84 + d3e82ce commit 377773d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

43 files changed

+304
-135
lines changed

Documentation/devicetree/bindings/sound/qcom,wcd934x.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,10 +199,11 @@ additionalProperties: false
199199

200200
examples:
201201
- |
202+
#include <dt-bindings/gpio/gpio.h>
202203
codec@1,0{
203204
compatible = "slim217,250";
204205
reg = <1 0>;
205-
reset-gpios = <&tlmm 64 0>;
206+
reset-gpios = <&tlmm 64 GPIO_ACTIVE_LOW>;
206207
slim-ifc-dev = <&wcd9340_ifd>;
207208
#sound-dai-cells = <1>;
208209
interrupt-parent = <&tlmm>;

Documentation/devicetree/bindings/sound/qcom,wcd937x.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ examples:
4242
pinctrl-names = "default", "sleep";
4343
pinctrl-0 = <&wcd_reset_n>;
4444
pinctrl-1 = <&wcd_reset_n_sleep>;
45-
reset-gpios = <&tlmm 83 GPIO_ACTIVE_HIGH>;
45+
reset-gpios = <&tlmm 83 GPIO_ACTIVE_LOW>;
4646
vdd-buck-supply = <&vreg_l17b_1p8>;
4747
vdd-rxtx-supply = <&vreg_l18b_1p8>;
4848
vdd-px-supply = <&vreg_l18b_1p8>;

Documentation/devicetree/bindings/sound/qcom,wcd938x.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,9 +34,10 @@ unevaluatedProperties: false
3434

3535
examples:
3636
- |
37+
#include <dt-bindings/gpio/gpio.h>
3738
codec {
3839
compatible = "qcom,wcd9380-codec";
39-
reset-gpios = <&tlmm 32 0>;
40+
reset-gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
4041
#sound-dai-cells = <1>;
4142
qcom,tx-device = <&wcd938x_tx>;
4243
qcom,rx-device = <&wcd938x_rx>;

Documentation/devicetree/bindings/sound/qcom,wcd939x.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ unevaluatedProperties: false
5252

5353
examples:
5454
- |
55-
#include <dt-bindings/interrupt-controller/irq.h>
55+
#include <dt-bindings/gpio/gpio.h>
5656
codec {
5757
compatible = "qcom,wcd9390-codec";
58-
reset-gpios = <&tlmm 32 IRQ_TYPE_NONE>;
58+
reset-gpios = <&tlmm 32 GPIO_ACTIVE_LOW>;
5959
#sound-dai-cells = <1>;
6060
qcom,tx-device = <&wcd939x_tx>;
6161
qcom,rx-device = <&wcd939x_rx>;

MAINTAINERS

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5306,7 +5306,7 @@ F: drivers/media/cec/i2c/ch7322.c
53065306
CIRRUS LOGIC AUDIO CODEC DRIVERS
53075307
M: David Rhodes <[email protected]>
53085308
M: Richard Fitzgerald <[email protected]>
5309-
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
5309+
53105310
53115311
S: Maintained
53125312
F: Documentation/devicetree/bindings/sound/cirrus,cs*
@@ -5375,7 +5375,7 @@ F: sound/soc/codecs/lochnagar-sc.c
53755375
CIRRUS LOGIC MADERA CODEC DRIVERS
53765376
M: Charles Keepax <[email protected]>
53775377
M: Richard Fitzgerald <[email protected]>
5378-
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
5378+
53795379
53805380
S: Supported
53815381
W: https://github.com/CirrusLogic/linux-drivers/wiki

include/sound/cs35l56.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -277,6 +277,11 @@ static inline int cs35l56_force_sync_asp1_registers_from_cache(struct cs35l56_ba
277277
return 0;
278278
}
279279

280+
static inline bool cs35l56_is_otp_register(unsigned int reg)
281+
{
282+
return (reg >> 16) == 3;
283+
}
284+
280285
extern struct regmap_config cs35l56_regmap_i2c;
281286
extern struct regmap_config cs35l56_regmap_spi;
282287
extern struct regmap_config cs35l56_regmap_sdw;

include/sound/soc-component.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -462,6 +462,11 @@ int snd_soc_component_force_enable_pin_unlocked(
462462
const char *pin);
463463

464464
/* component controls */
465+
struct snd_kcontrol *snd_soc_component_get_kcontrol(struct snd_soc_component *component,
466+
const char * const ctl);
467+
struct snd_kcontrol *
468+
snd_soc_component_get_kcontrol_locked(struct snd_soc_component *component,
469+
const char * const ctl);
465470
int snd_soc_component_notify_control(struct snd_soc_component *component,
466471
const char * const ctl);
467472

sound/pci/hda/cs35l41_hda.c

Lines changed: 0 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -133,17 +133,6 @@ static const struct reg_sequence cs35l41_hda_mute[] = {
133133
{ CS35L41_AMP_DIG_VOL_CTRL, 0x0000A678 }, // AMP_HPF_PCM_EN = 1, AMP_VOL_PCM Mute
134134
};
135135

136-
static void cs35l41_add_controls(struct cs35l41_hda *cs35l41)
137-
{
138-
struct hda_cs_dsp_ctl_info info;
139-
140-
info.device_name = cs35l41->amp_name;
141-
info.fw_type = cs35l41->firmware_type;
142-
info.card = cs35l41->codec->card;
143-
144-
hda_cs_dsp_add_controls(&cs35l41->cs_dsp, &info);
145-
}
146-
147136
static const struct cs_dsp_client_ops client_ops = {
148137
.control_remove = hda_cs_dsp_control_remove,
149138
};
@@ -603,8 +592,6 @@ static int cs35l41_init_dsp(struct cs35l41_hda *cs35l41)
603592
if (ret)
604593
goto err;
605594

606-
cs35l41_add_controls(cs35l41);
607-
608595
cs35l41_hda_apply_calibration(cs35l41);
609596

610597
err:

sound/pci/hda/cs35l56_hda.c

Lines changed: 1 addition & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -559,18 +559,6 @@ static void cs35l56_hda_release_firmware_files(const struct firmware *wmfw_firmw
559559
kfree(coeff_filename);
560560
}
561561

562-
static void cs35l56_hda_create_dsp_controls_work(struct work_struct *work)
563-
{
564-
struct cs35l56_hda *cs35l56 = container_of(work, struct cs35l56_hda, control_work);
565-
struct hda_cs_dsp_ctl_info info;
566-
567-
info.device_name = cs35l56->amp_name;
568-
info.fw_type = HDA_CS_DSP_FW_MISC;
569-
info.card = cs35l56->codec->card;
570-
571-
hda_cs_dsp_add_controls(&cs35l56->cs_dsp, &info);
572-
}
573-
574562
static void cs35l56_hda_apply_calibration(struct cs35l56_hda *cs35l56)
575563
{
576564
int ret;
@@ -595,26 +583,15 @@ static void cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56)
595583
char *wmfw_filename = NULL;
596584
unsigned int preloaded_fw_ver;
597585
bool firmware_missing;
598-
bool add_dsp_controls_required = false;
599586
int ret;
600587

601-
/*
602-
* control_work must be flushed before proceeding, but we can't do that
603-
* here as it would create a deadlock on controls_rwsem so it must be
604-
* performed before queuing dsp_work.
605-
*/
606-
WARN_ON_ONCE(work_busy(&cs35l56->control_work));
607-
608588
/*
609589
* Prepare for a new DSP power-up. If the DSP has had firmware
610590
* downloaded previously then it needs to be powered down so that it
611-
* can be updated and if hadn't been patched before then the controls
612-
* will need to be added once firmware download succeeds.
591+
* can be updated.
613592
*/
614593
if (cs35l56->base.fw_patched)
615594
cs_dsp_power_down(&cs35l56->cs_dsp);
616-
else
617-
add_dsp_controls_required = true;
618595

619596
cs35l56->base.fw_patched = false;
620597

@@ -698,15 +675,6 @@ static void cs35l56_hda_fw_load(struct cs35l56_hda *cs35l56)
698675
CS35L56_FIRMWARE_MISSING);
699676
cs35l56->base.fw_patched = true;
700677

701-
/*
702-
* Adding controls is deferred to prevent a lock inversion - ALSA takes
703-
* the controls_rwsem when adding a control, the get() / put()
704-
* functions of a control are called holding controls_rwsem and those
705-
* that depend on running firmware wait for dsp_work() to complete.
706-
*/
707-
if (add_dsp_controls_required)
708-
queue_work(system_long_wq, &cs35l56->control_work);
709-
710678
ret = cs_dsp_run(&cs35l56->cs_dsp);
711679
if (ret)
712680
dev_dbg(cs35l56->base.dev, "%s: cs_dsp_run ret %d\n", __func__, ret);
@@ -753,7 +721,6 @@ static int cs35l56_hda_bind(struct device *dev, struct device *master, void *mas
753721
strscpy(comp->name, dev_name(dev), sizeof(comp->name));
754722
comp->playback_hook = cs35l56_hda_playback_hook;
755723

756-
flush_work(&cs35l56->control_work);
757724
queue_work(system_long_wq, &cs35l56->dsp_work);
758725

759726
cs35l56_hda_create_controls(cs35l56);
@@ -775,7 +742,6 @@ static void cs35l56_hda_unbind(struct device *dev, struct device *master, void *
775742
struct hda_component *comp;
776743

777744
cancel_work_sync(&cs35l56->dsp_work);
778-
cancel_work_sync(&cs35l56->control_work);
779745

780746
cs35l56_hda_remove_controls(cs35l56);
781747

@@ -806,7 +772,6 @@ static int cs35l56_hda_system_suspend(struct device *dev)
806772
struct cs35l56_hda *cs35l56 = dev_get_drvdata(dev);
807773

808774
cs35l56_hda_wait_dsp_ready(cs35l56);
809-
flush_work(&cs35l56->control_work);
810775

811776
if (cs35l56->playing)
812777
cs35l56_hda_pause(cs35l56);
@@ -1026,7 +991,6 @@ int cs35l56_hda_common_probe(struct cs35l56_hda *cs35l56, int hid, int id)
1026991
dev_set_drvdata(cs35l56->base.dev, cs35l56);
1027992

1028993
INIT_WORK(&cs35l56->dsp_work, cs35l56_hda_dsp_work);
1029-
INIT_WORK(&cs35l56->control_work, cs35l56_hda_create_dsp_controls_work);
1030994

1031995
ret = cs35l56_hda_read_acpi(cs35l56, hid, id);
1032996
if (ret)

sound/pci/hda/cs35l56_hda.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ struct cs35l56_hda {
2323
struct cs35l56_base base;
2424
struct hda_codec *codec;
2525
struct work_struct dsp_work;
26-
struct work_struct control_work;
2726

2827
int index;
2928
const char *system_name;

0 commit comments

Comments
 (0)