Skip to content

Commit cc638db

Browse files
committed
Merge tag 'asoc-fix-v6.4-rc2' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus
ASoC: Fixes for v6.4 More fixes that came in since the merge window, the bulk of which are for the SOF code, I suspect as a result of the wide usage, active development and large code size rather than huge quality problems. There's also a couple of MAINTAINERS updates and some new device quirks.
2 parents 9dc68a4 + 9be0b3a commit cc638db

File tree

26 files changed

+276
-81
lines changed

26 files changed

+276
-81
lines changed

Documentation/devicetree/bindings/sound/tas2562.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ properties:
5555
description: TDM TX current sense time slot.
5656

5757
'#sound-dai-cells':
58-
const: 1
58+
# The codec has a single DAI, the #sound-dai-cells=<1>; case is left in for backward
59+
# compatibility but is deprecated.
60+
enum: [0, 1]
5961

6062
required:
6163
- compatible
@@ -72,7 +74,7 @@ examples:
7274
codec: codec@4c {
7375
compatible = "ti,tas2562";
7476
reg = <0x4c>;
75-
#sound-dai-cells = <1>;
77+
#sound-dai-cells = <0>;
7678
interrupt-parent = <&gpio1>;
7779
interrupts = <14>;
7880
shutdown-gpios = <&gpio1 15 0>;

Documentation/devicetree/bindings/sound/tas2770.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ properties:
5757
- 1 # Falling edge
5858

5959
'#sound-dai-cells':
60-
const: 1
60+
# The codec has a single DAI, the #sound-dai-cells=<1>; case is left in for backward
61+
# compatibility but is deprecated.
62+
enum: [0, 1]
6163

6264
required:
6365
- compatible
@@ -74,7 +76,7 @@ examples:
7476
codec: codec@41 {
7577
compatible = "ti,tas2770";
7678
reg = <0x41>;
77-
#sound-dai-cells = <1>;
79+
#sound-dai-cells = <0>;
7880
interrupt-parent = <&gpio1>;
7981
interrupts = <14>;
8082
reset-gpio = <&gpio1 15 0>;

Documentation/devicetree/bindings/sound/tas27xx.yaml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ properties:
5050
description: TDM TX voltage sense time slot.
5151

5252
'#sound-dai-cells':
53-
const: 1
53+
# The codec has a single DAI, the #sound-dai-cells=<1>; case is left in for backward
54+
# compatibility but is deprecated.
55+
enum: [0, 1]
5456

5557
required:
5658
- compatible
@@ -67,7 +69,7 @@ examples:
6769
codec: codec@38 {
6870
compatible = "ti,tas2764";
6971
reg = <0x38>;
70-
#sound-dai-cells = <1>;
72+
#sound-dai-cells = <0>;
7173
interrupt-parent = <&gpio1>;
7274
interrupts = <14>;
7375
reset-gpios = <&gpio1 15 0>;

MAINTAINERS

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4921,7 +4921,6 @@ F: drivers/media/cec/i2c/ch7322.c
49214921
CIRRUS LOGIC AUDIO CODEC DRIVERS
49224922
M: James Schulman <[email protected]>
49234923
M: David Rhodes <[email protected]>
4924-
M: Lucas Tanure <[email protected]>
49254924
M: Richard Fitzgerald <[email protected]>
49264925
L: [email protected] (moderated for non-subscribers)
49274926
@@ -18568,10 +18567,9 @@ F: Documentation/admin-guide/LSM/SafeSetID.rst
1856818567
F: security/safesetid/
1856918568

1857018569
SAMSUNG AUDIO (ASoC) DRIVERS
18571-
M: Krzysztof Kozlowski <[email protected]>
1857218570
M: Sylwester Nawrocki <[email protected]>
1857318571
L: [email protected] (moderated for non-subscribers)
18574-
S: Supported
18572+
S: Maintained
1857518573
1857618574
F: Documentation/devicetree/bindings/sound/samsung*
1857718575
F: sound/soc/samsung/

include/sound/hda-mlink.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,17 @@ int hdac_bus_eml_sdw_power_down_unlocked(struct hdac_bus *bus, int sublink);
4444

4545
int hdac_bus_eml_sdw_set_lsdiid(struct hdac_bus *bus, int sublink, int dev_num);
4646

47+
int hdac_bus_eml_sdw_map_stream_ch(struct hdac_bus *bus, int sublink, int y,
48+
int channel_mask, int stream_id, int dir);
49+
4750
void hda_bus_ml_put_all(struct hdac_bus *bus);
4851
void hda_bus_ml_reset_losidv(struct hdac_bus *bus);
4952
int hda_bus_ml_resume(struct hdac_bus *bus);
5053
int hda_bus_ml_suspend(struct hdac_bus *bus);
5154

5255
struct hdac_ext_link *hdac_bus_eml_ssp_get_hlink(struct hdac_bus *bus);
5356
struct hdac_ext_link *hdac_bus_eml_dmic_get_hlink(struct hdac_bus *bus);
57+
struct hdac_ext_link *hdac_bus_eml_sdw_get_hlink(struct hdac_bus *bus);
5458

5559
struct mutex *hdac_bus_eml_get_mutex(struct hdac_bus *bus, bool alt, int elid);
5660

@@ -144,6 +148,13 @@ hdac_bus_eml_sdw_power_down_unlocked(struct hdac_bus *bus, int sublink) { return
144148
static inline int
145149
hdac_bus_eml_sdw_set_lsdiid(struct hdac_bus *bus, int sublink, int dev_num) { return 0; }
146150

151+
static inline int
152+
hdac_bus_eml_sdw_map_stream_ch(struct hdac_bus *bus, int sublink, int y,
153+
int channel_mask, int stream_id, int dir)
154+
{
155+
return 0;
156+
}
157+
147158
static inline void hda_bus_ml_put_all(struct hdac_bus *bus) { }
148159
static inline void hda_bus_ml_reset_losidv(struct hdac_bus *bus) { }
149160
static inline int hda_bus_ml_resume(struct hdac_bus *bus) { return 0; }
@@ -155,6 +166,9 @@ hdac_bus_eml_ssp_get_hlink(struct hdac_bus *bus) { return NULL; }
155166
static inline struct hdac_ext_link *
156167
hdac_bus_eml_dmic_get_hlink(struct hdac_bus *bus) { return NULL; }
157168

169+
static inline struct hdac_ext_link *
170+
hdac_bus_eml_sdw_get_hlink(struct hdac_bus *bus) { return NULL; }
171+
158172
static inline struct mutex *
159173
hdac_bus_eml_get_mutex(struct hdac_bus *bus, bool alt, int elid) { return NULL; }
160174

include/uapi/sound/sof/tokens.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@
183183
#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_INTERLEAVING_STYLE 1906
184184
#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_FMT_CFG 1907
185185
#define SOF_TKN_CAVS_AUDIO_FORMAT_IN_SAMPLE_TYPE 1908
186-
#define SOF_TKN_CAVS_AUDIO_FORMAT_PIN_INDEX 1909
186+
#define SOF_TKN_CAVS_AUDIO_FORMAT_INPUT_PIN_INDEX 1909
187187
/* intentional token numbering discontinuity, reserved for future use */
188188
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_RATE 1930
189189
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_BIT_DEPTH 1931
@@ -194,6 +194,7 @@
194194
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_INTERLEAVING_STYLE 1936
195195
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_FMT_CFG 1937
196196
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUT_SAMPLE_TYPE 1938
197+
#define SOF_TKN_CAVS_AUDIO_FORMAT_OUTPUT_PIN_INDEX 1939
197198
/* intentional token numbering discontinuity, reserved for future use */
198199
#define SOF_TKN_CAVS_AUDIO_FORMAT_IBS 1970
199200
#define SOF_TKN_CAVS_AUDIO_FORMAT_OBS 1971

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,13 @@ static const struct dmi_system_id yc_acp_quirk_table[] = {
311311
DMI_MATCH(DMI_BOARD_NAME, "8A22"),
312312
}
313313
},
314+
{
315+
.driver_data = &acp6x_card,
316+
.matches = {
317+
DMI_MATCH(DMI_BOARD_VENDOR, "System76"),
318+
DMI_MATCH(DMI_PRODUCT_VERSION, "pang12"),
319+
}
320+
},
314321
{}
315322
};
316323

sound/soc/codecs/cs35l56.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -852,10 +852,11 @@ static void cs35l56_dsp_work(struct work_struct *work)
852852
*/
853853
if (cs35l56->sdw_peripheral) {
854854
cs35l56->sdw_irq_no_unmask = true;
855-
cancel_work_sync(&cs35l56->sdw_irq_work);
855+
flush_work(&cs35l56->sdw_irq_work);
856856
sdw_write_no_pm(cs35l56->sdw_peripheral, CS35L56_SDW_GEN_INT_MASK_1, 0);
857857
sdw_read_no_pm(cs35l56->sdw_peripheral, CS35L56_SDW_GEN_INT_STAT_1);
858858
sdw_write_no_pm(cs35l56->sdw_peripheral, CS35L56_SDW_GEN_INT_STAT_1, 0xFF);
859+
flush_work(&cs35l56->sdw_irq_work);
859860
}
860861

861862
ret = cs35l56_mbox_send(cs35l56, CS35L56_MBOX_CMD_SHUTDOWN);

sound/soc/codecs/ssm2602.c

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,18 @@ static const struct reg_default ssm2602_reg[SSM2602_CACHEREGNUM] = {
5353
{ .reg = 0x09, .def = 0x0000 }
5454
};
5555

56+
/*
57+
* ssm2602 register patch
58+
* Workaround for playback distortions after power up: activates digital
59+
* core, and then powers on output, DAC, and whole chip at the same time
60+
*/
61+
62+
static const struct reg_sequence ssm2602_patch[] = {
63+
{ SSM2602_ACTIVE, 0x01 },
64+
{ SSM2602_PWR, 0x07 },
65+
{ SSM2602_RESET, 0x00 },
66+
};
67+
5668

5769
/*Appending several "None"s just for OSS mixer use*/
5870
static const char *ssm2602_input_select[] = {
@@ -598,6 +610,9 @@ static int ssm260x_component_probe(struct snd_soc_component *component)
598610
return ret;
599611
}
600612

613+
regmap_register_patch(ssm2602->regmap, ssm2602_patch,
614+
ARRAY_SIZE(ssm2602_patch));
615+
601616
/* set the update bits */
602617
regmap_update_bits(ssm2602->regmap, SSM2602_LINVOL,
603618
LINVOL_LRIN_BOTH, LINVOL_LRIN_BOTH);

sound/soc/dwc/dwc-i2s.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,13 +132,13 @@ static irqreturn_t i2s_irq_handler(int irq, void *dev_id)
132132

133133
/* Error Handling: TX */
134134
if (isr[i] & ISR_TXFO) {
135-
dev_err(dev->dev, "TX overrun (ch_id=%d)\n", i);
135+
dev_err_ratelimited(dev->dev, "TX overrun (ch_id=%d)\n", i);
136136
irq_valid = true;
137137
}
138138

139139
/* Error Handling: TX */
140140
if (isr[i] & ISR_RXFO) {
141-
dev_err(dev->dev, "RX overrun (ch_id=%d)\n", i);
141+
dev_err_ratelimited(dev->dev, "RX overrun (ch_id=%d)\n", i);
142142
irq_valid = true;
143143
}
144144
}

0 commit comments

Comments
 (0)