Skip to content

Commit c9f7a14

Browse files
committed
Merge tag 'asoc-fix-v6.12-rc4' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.12 An uncomfortably large set of fixes due to me not getting round to sending them for longer than I should due to travel and illness. This is mostly smaller driver specific changes, but there are a couple of generic changes: - Bumping the minimal topology ABI we check for during validation, the code had support for v4 removed previously but the update of the define used for initial validation was missed. - Fix the assumption that DAPM structs will be embedded in a component which isn't true for card widgets when doing name comparisons, though fortunately this is rarely triggered. We've pulled in one Soundwire fix which was part of a larger series fixing cleanup issues in on Intel Soundwire systems.
2 parents e3ea275 + db7e59e commit c9f7a14

32 files changed

+298
-89
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
@@ -15089,6 +15089,7 @@ F: drivers/spi/spi-at91-usart.c
1508915089

1509015090
MICROCHIP AUDIO ASOC DRIVERS
1509115091
M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
15092+
M: Andrei Simion <andrei.simion@microchip.com>
1509215093
L: linux-sound@vger.kernel.org
1509315094
S: Supported
1509415095
F: Documentation/devicetree/bindings/sound/atmel*
@@ -15197,6 +15198,7 @@ F: include/video/atmel_lcdc.h
1519715198

1519815199
MICROCHIP MCP16502 PMIC DRIVER
1519915200
M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
15201+
M: Andrei Simion <andrei.simion@microchip.com>
1520015202
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1520115203
S: Supported
1520215204
F: Documentation/devicetree/bindings/regulator/microchip,mcp16502.yaml
@@ -15328,6 +15330,7 @@ F: drivers/spi/spi-atmel.*
1532815330

1532915331
MICROCHIP SSC DRIVER
1533015332
M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
15333+
M: Andrei Simion <andrei.simion@microchip.com>
1533115334
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1533215335
S: Supported
1533315336
F: Documentation/devicetree/bindings/misc/atmel-ssc.txt
@@ -23287,7 +23290,7 @@ F: Documentation/devicetree/bindings/iio/adc/ti,lmp92064.yaml
2328723290
F: drivers/iio/adc/ti-lmp92064.c
2328823291

2328923292
TI PCM3060 ASoC CODEC DRIVER
23290-
M: Kirill Marinushkin <kmarinushkin@birdec.com>
23293+
M: Kirill Marinushkin <k.marinushkin@gmail.com>
2329123294
L: linux-sound@vger.kernel.org
2329223295
S: Maintained
2329323296
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/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)

sound/soc/codecs/max98388.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -763,6 +763,7 @@ static int max98388_dai_tdm_slot(struct snd_soc_dai *dai,
763763
addr = MAX98388_R2044_PCM_TX_CTRL1 + (cnt / 8);
764764
bits = cnt % 8;
765765
regmap_update_bits(max98388->regmap, addr, bits, bits);
766+
slot_found++;
766767
if (slot_found >= MAX_NUM_CH)
767768
break;
768769
}

sound/soc/codecs/pcm3060-i2c.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// PCM3060 I2C driver
44
//
5-
// Copyright (C) 2018 Kirill Marinushkin <kmarinushkin@birdec.com>
5+
// Copyright (C) 2018 Kirill Marinushkin <k.marinushkin@gmail.com>
66

77
#include <linux/i2c.h>
88
#include <linux/module.h>
@@ -55,5 +55,5 @@ static struct i2c_driver pcm3060_i2c_driver = {
5555
module_i2c_driver(pcm3060_i2c_driver);
5656

5757
MODULE_DESCRIPTION("PCM3060 I2C driver");
58-
MODULE_AUTHOR("Kirill Marinushkin <kmarinushkin@birdec.com>");
58+
MODULE_AUTHOR("Kirill Marinushkin <k.marinushkin@gmail.com>");
5959
MODULE_LICENSE("GPL v2");

sound/soc/codecs/pcm3060-spi.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//
33
// PCM3060 SPI driver
44
//
5-
// Copyright (C) 2018 Kirill Marinushkin <kmarinushkin@birdec.com>
5+
// Copyright (C) 2018 Kirill Marinushkin <k.marinushkin@gmail.com>
66

77
#include <linux/module.h>
88
#include <linux/spi/spi.h>
@@ -55,5 +55,5 @@ static struct spi_driver pcm3060_spi_driver = {
5555
module_spi_driver(pcm3060_spi_driver);
5656

5757
MODULE_DESCRIPTION("PCM3060 SPI driver");
58-
MODULE_AUTHOR("Kirill Marinushkin <kmarinushkin@birdec.com>");
58+
MODULE_AUTHOR("Kirill Marinushkin <k.marinushkin@gmail.com>");
5959
MODULE_LICENSE("GPL v2");

0 commit comments

Comments
 (0)