Skip to content

Commit ecc8b4d

Browse files
committed
Merge tag 'asoc-fix-v6.6-merge-window' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.6 A bunch of fixes and new IDs that came in since the initial pull request - all driver specific and nothing too exciting. There's a trivial conflict in the AMD driver ID table due to the last v6.5 fixes not having been merged up.
2 parents e43252d + cfff2a7 commit ecc8b4d

File tree

11 files changed

+96
-31
lines changed

11 files changed

+96
-31
lines changed

Documentation/devicetree/bindings/sound/fsl,easrc.yaml

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,13 @@ properties:
1414
pattern: "^easrc@.*"
1515

1616
compatible:
17-
const: fsl,imx8mn-easrc
17+
oneOf:
18+
- enum:
19+
- fsl,imx8mn-easrc
20+
- items:
21+
- enum:
22+
- fsl,imx8mp-easrc
23+
- const: fsl,imx8mn-easrc
1824

1925
reg:
2026
maxItems: 1

MAINTAINERS

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21064,7 +21064,7 @@ F: sound/soc/ti/
2106421064
TEXAS INSTRUMENTS AUDIO (ASoC/HDA) DRIVERS
2106521065
M: Shenghao Ding <shenghao-ding@ti.com>
2106621066
M: Kevin Lu <kevin-lu@ti.com>
21067-
M: Baojun Xu <x1077012@ti.com>
21067+
M: Baojun Xu <baojun.xu@ti.com>
2106821068
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
2106921069
S: Maintained
2107021070
F: Documentation/devicetree/bindings/sound/tas2552.txt

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
213213
DMI_MATCH(DMI_PRODUCT_NAME, "21J6"),
214214
}
215215
},
216+
{
217+
.driver_data = &acp6x_card,
218+
.matches = {
219+
DMI_MATCH(DMI_BOARD_VENDOR, "LENOVO"),
220+
DMI_MATCH(DMI_PRODUCT_NAME, "82TL"),
221+
}
222+
},
216223
{
217224
.driver_data = &acp6x_card,
218225
.matches = {
@@ -325,6 +332,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
325332
DMI_MATCH(DMI_BOARD_NAME, "8A22"),
326333
}
327334
},
335+
{
336+
.driver_data = &acp6x_card,
337+
.matches = {
338+
DMI_MATCH(DMI_BOARD_VENDOR, "HP"),
339+
DMI_MATCH(DMI_BOARD_NAME, "8A3E"),
340+
}
341+
},
328342
{
329343
.driver_data = &acp6x_card,
330344
.matches = {

sound/soc/codecs/Kconfig

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1968,11 +1968,15 @@ config SND_SOC_UDA1380
19681968
tristate
19691969
depends on I2C
19701970

1971+
config SND_SOC_WCD_CLASSH
1972+
tristate
1973+
19711974
config SND_SOC_WCD9335
19721975
tristate "WCD9335 Codec"
19731976
depends on SLIMBUS
19741977
select REGMAP_SLIMBUS
19751978
select REGMAP_IRQ
1979+
select SND_SOC_WCD_CLASSH
19761980
help
19771981
The WCD9335 is a standalone Hi-Fi audio CODEC IC, supports
19781982
Qualcomm Technologies, Inc. (QTI) multimedia solutions,
@@ -1987,6 +1991,7 @@ config SND_SOC_WCD934X
19871991
depends on SLIMBUS
19881992
select REGMAP_IRQ
19891993
select REGMAP_SLIMBUS
1994+
select SND_SOC_WCD_CLASSH
19901995
select SND_SOC_WCD_MBHC
19911996
depends on MFD_WCD934X || COMPILE_TEST
19921997
help
@@ -1997,6 +2002,7 @@ config SND_SOC_WCD938X
19972002
depends on SND_SOC_WCD938X_SDW
19982003
tristate
19992004
depends on SOUNDWIRE || !SOUNDWIRE
2005+
select SND_SOC_WCD_CLASSH
20002006

20012007
config SND_SOC_WCD938X_SDW
20022008
tristate "WCD9380/WCD9385 Codec - SDW"

sound/soc/codecs/Makefile

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,10 +303,11 @@ snd-soc-twl4030-objs := twl4030.o
303303
snd-soc-twl6040-objs := twl6040.o
304304
snd-soc-uda1334-objs := uda1334.o
305305
snd-soc-uda1380-objs := uda1380.o
306+
snd-soc-wcd-classh-objs := wcd-clsh-v2.o
306307
snd-soc-wcd-mbhc-objs := wcd-mbhc-v2.o
307-
snd-soc-wcd9335-objs := wcd-clsh-v2.o wcd9335.o
308-
snd-soc-wcd934x-objs := wcd-clsh-v2.o wcd934x.o
309-
snd-soc-wcd938x-objs := wcd938x.o wcd-clsh-v2.o
308+
snd-soc-wcd9335-objs := wcd9335.o
309+
snd-soc-wcd934x-objs := wcd934x.o
310+
snd-soc-wcd938x-objs := wcd938x.o
310311
snd-soc-wcd938x-sdw-objs := wcd938x-sdw.o
311312
snd-soc-wl1273-objs := wl1273.o
312313
snd-soc-wm-adsp-objs := wm_adsp.o
@@ -685,6 +686,7 @@ obj-$(CONFIG_SND_SOC_TWL4030) += snd-soc-twl4030.o
685686
obj-$(CONFIG_SND_SOC_TWL6040) += snd-soc-twl6040.o
686687
obj-$(CONFIG_SND_SOC_UDA1334) += snd-soc-uda1334.o
687688
obj-$(CONFIG_SND_SOC_UDA1380) += snd-soc-uda1380.o
689+
obj-$(CONFIG_SND_SOC_WCD_CLASSH) += snd-soc-wcd-classh.o
688690
obj-$(CONFIG_SND_SOC_WCD_MBHC) += snd-soc-wcd-mbhc.o
689691
obj-$(CONFIG_SND_SOC_WCD9335) += snd-soc-wcd9335.o
690692
obj-$(CONFIG_SND_SOC_WCD934X) += snd-soc-wcd934x.o

sound/soc/codecs/cs35l45.c

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -279,7 +279,7 @@ static const struct snd_kcontrol_new cs35l45_dsp_muxes[] = {
279279
};
280280

281281
static const struct snd_kcontrol_new cs35l45_dac_muxes[] = {
282-
SOC_DAPM_ENUM("DACPCM1 Source", cs35l45_dacpcm_enums[0]),
282+
SOC_DAPM_ENUM("DACPCM Source", cs35l45_dacpcm_enums[0]),
283283
};
284284

285285
static const struct snd_soc_dapm_widget cs35l45_dapm_widgets[] = {
@@ -333,7 +333,7 @@ static const struct snd_soc_dapm_widget cs35l45_dapm_widgets[] = {
333333
SND_SOC_DAPM_MUX("DSP_RX7 Source", SND_SOC_NOPM, 0, 0, &cs35l45_dsp_muxes[6]),
334334
SND_SOC_DAPM_MUX("DSP_RX8 Source", SND_SOC_NOPM, 0, 0, &cs35l45_dsp_muxes[7]),
335335

336-
SND_SOC_DAPM_MUX("DACPCM1 Source", SND_SOC_NOPM, 0, 0, &cs35l45_dac_muxes[0]),
336+
SND_SOC_DAPM_MUX("DACPCM Source", SND_SOC_NOPM, 0, 0, &cs35l45_dac_muxes[0]),
337337

338338
SND_SOC_DAPM_OUT_DRV("AMP", SND_SOC_NOPM, 0, 0, NULL, 0),
339339

@@ -403,7 +403,7 @@ static const struct snd_soc_dapm_route cs35l45_dapm_routes[] = {
403403
{ "ASP_RX1", NULL, "ASP_EN" },
404404
{ "ASP_RX2", NULL, "ASP_EN" },
405405

406-
{ "AMP", NULL, "DACPCM1 Source"},
406+
{ "AMP", NULL, "DACPCM Source"},
407407
{ "AMP", NULL, "GLOBAL_EN"},
408408

409409
CS35L45_DSP_MUX_ROUTE("DSP_RX1"),
@@ -427,7 +427,7 @@ static const struct snd_soc_dapm_route cs35l45_dapm_routes[] = {
427427
{"DSP1 Preload", NULL, "DSP1 Preloader"},
428428
{"DSP1", NULL, "DSP1 Preloader"},
429429

430-
CS35L45_DAC_MUX_ROUTE("DACPCM1"),
430+
CS35L45_DAC_MUX_ROUTE("DACPCM"),
431431

432432
{ "SPK", NULL, "AMP"},
433433
};
@@ -969,7 +969,7 @@ static irqreturn_t cs35l45_dsp_virt2_mbox_cb(int irq, void *data)
969969

970970
ret = regmap_read(cs35l45->regmap, CS35L45_DSP_VIRT2_MBOX_3, &mbox_val);
971971
if (!ret && mbox_val)
972-
ret = cs35l45_dsp_virt2_mbox3_irq_handle(cs35l45, mbox_val & CS35L45_MBOX3_CMD_MASK,
972+
cs35l45_dsp_virt2_mbox3_irq_handle(cs35l45, mbox_val & CS35L45_MBOX3_CMD_MASK,
973973
(mbox_val & CS35L45_MBOX3_DATA_MASK) >> CS35L45_MBOX3_DATA_SHIFT);
974974

975975
/* Handle DSP trace log IRQ */
@@ -1078,6 +1078,7 @@ static int cs35l45_initialize(struct cs35l45_private *cs35l45)
10781078

10791079
switch (dev_id[0]) {
10801080
case 0x35A450:
1081+
case 0x35A460:
10811082
break;
10821083
default:
10831084
dev_err(cs35l45->dev, "Bad DEVID 0x%x\n", dev_id[0]);

sound/soc/codecs/cs35l56-shared.c

Lines changed: 15 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -243,26 +243,27 @@ int cs35l56_wait_for_firmware_boot(struct cs35l56_base *cs35l56_base)
243243
{
244244
unsigned int reg;
245245
unsigned int val;
246-
int ret;
246+
int read_ret, poll_ret;
247247

248248
if (cs35l56_base->rev < CS35L56_REVID_B0)
249249
reg = CS35L56_DSP1_HALO_STATE_A1;
250250
else
251251
reg = CS35L56_DSP1_HALO_STATE;
252252

253-
ret = regmap_read_poll_timeout(cs35l56_base->regmap, reg,
254-
val,
255-
(val < 0xFFFF) && (val >= CS35L56_HALO_STATE_BOOT_DONE),
256-
CS35L56_HALO_STATE_POLL_US,
257-
CS35L56_HALO_STATE_TIMEOUT_US);
258-
259-
if ((ret < 0) && (ret != -ETIMEDOUT)) {
260-
dev_err(cs35l56_base->dev, "Failed to read HALO_STATE: %d\n", ret);
261-
return ret;
262-
}
263-
264-
if ((ret == -ETIMEDOUT) || (val != CS35L56_HALO_STATE_BOOT_DONE)) {
265-
dev_err(cs35l56_base->dev, "Firmware boot fail: HALO_STATE=%#x\n", val);
253+
/*
254+
* This can't be a regmap_read_poll_timeout() because cs35l56 will NAK
255+
* I2C until it has booted which would terminate the poll
256+
*/
257+
poll_ret = read_poll_timeout(regmap_read, read_ret,
258+
(val < 0xFFFF) && (val >= CS35L56_HALO_STATE_BOOT_DONE),
259+
CS35L56_HALO_STATE_POLL_US,
260+
CS35L56_HALO_STATE_TIMEOUT_US,
261+
false,
262+
cs35l56_base->regmap, reg, &val);
263+
264+
if (poll_ret) {
265+
dev_err(cs35l56_base->dev, "Firmware boot timed out(%d): HALO_STATE=%#x\n",
266+
read_ret, val);
266267
return -EIO;
267268
}
268269

sound/soc/codecs/cs42l43.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2205,7 +2205,8 @@ static int cs42l43_codec_probe(struct platform_device *pdev)
22052205
// Don't use devm as we need to get against the MFD device
22062206
priv->mclk = clk_get_optional(cs42l43->dev, "mclk");
22072207
if (IS_ERR(priv->mclk)) {
2208-
dev_err_probe(priv->dev, PTR_ERR(priv->mclk), "Failed to get mclk\n");
2208+
ret = PTR_ERR(priv->mclk);
2209+
dev_err_probe(priv->dev, ret, "Failed to get mclk\n");
22092210
goto err_pm;
22102211
}
22112212

sound/soc/codecs/rt5645.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3269,13 +3269,17 @@ static int rt5645_component_set_jack(struct snd_soc_component *component,
32693269
{
32703270
struct snd_soc_jack *mic_jack = NULL;
32713271
struct snd_soc_jack *btn_jack = NULL;
3272-
int *type = (int *)data;
3272+
int type;
32733273

3274-
if (*type & SND_JACK_MICROPHONE)
3275-
mic_jack = hs_jack;
3276-
if (*type & (SND_JACK_BTN_0 | SND_JACK_BTN_1 |
3277-
SND_JACK_BTN_2 | SND_JACK_BTN_3))
3278-
btn_jack = hs_jack;
3274+
if (hs_jack) {
3275+
type = *(int *)data;
3276+
3277+
if (type & SND_JACK_MICROPHONE)
3278+
mic_jack = hs_jack;
3279+
if (type & (SND_JACK_BTN_0 | SND_JACK_BTN_1 |
3280+
SND_JACK_BTN_2 | SND_JACK_BTN_3))
3281+
btn_jack = hs_jack;
3282+
}
32793283

32803284
return rt5645_set_jack_detect(component, hs_jack, mic_jack, btn_jack);
32813285
}

sound/soc/codecs/wcd-clsh-v2.c

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -355,6 +355,7 @@ void wcd_clsh_set_hph_mode(struct wcd_clsh_ctrl *ctrl, int mode)
355355
wcd_clsh_v2_set_hph_mode(comp, mode);
356356

357357
}
358+
EXPORT_SYMBOL_GPL(wcd_clsh_set_hph_mode);
358359

359360
static void wcd_clsh_set_flyback_current(struct snd_soc_component *comp,
360361
int mode)
@@ -869,11 +870,13 @@ int wcd_clsh_ctrl_set_state(struct wcd_clsh_ctrl *ctrl,
869870

870871
return 0;
871872
}
873+
EXPORT_SYMBOL_GPL(wcd_clsh_ctrl_set_state);
872874

873875
int wcd_clsh_ctrl_get_state(struct wcd_clsh_ctrl *ctrl)
874876
{
875877
return ctrl->state;
876878
}
879+
EXPORT_SYMBOL_GPL(wcd_clsh_ctrl_get_state);
877880

878881
struct wcd_clsh_ctrl *wcd_clsh_ctrl_alloc(struct snd_soc_component *comp,
879882
int version)
@@ -890,8 +893,13 @@ struct wcd_clsh_ctrl *wcd_clsh_ctrl_alloc(struct snd_soc_component *comp,
890893

891894
return ctrl;
892895
}
896+
EXPORT_SYMBOL_GPL(wcd_clsh_ctrl_alloc);
893897

894898
void wcd_clsh_ctrl_free(struct wcd_clsh_ctrl *ctrl)
895899
{
896900
kfree(ctrl);
897901
}
902+
EXPORT_SYMBOL_GPL(wcd_clsh_ctrl_free);
903+
904+
MODULE_DESCRIPTION("WCD93XX Class-H driver");
905+
MODULE_LICENSE("GPL");

0 commit comments

Comments
 (0)