Skip to content

Commit 78c6562

Browse files
committed
Merge branch 'sound/upstream-20250212' into merge/sound-upstream-20250212
2 parents 0d954c6 + 4904a47 commit 78c6562

File tree

126 files changed

+6702
-2119
lines changed

Some content is hidden

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

126 files changed

+6702
-2119
lines changed

Documentation/devicetree/bindings/mfd/motorola-cpcap.txt

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ node must be named "audio-codec".
3131
Required properties for the audio-codec subnode:
3232

3333
- #sound-dai-cells = <1>;
34+
- interrupts : should contain jack detection interrupts, with headset
35+
detect interrupt matching "hs" and microphone bias 2
36+
detect interrupt matching "mb2" in interrupt-names.
37+
- interrupt-names : Contains "hs", "mb2"
3438

3539
The audio-codec provides two DAIs. The first one is connected to the
3640
Stereo HiFi DAC and the second one is connected to the Voice DAC.
@@ -52,6 +56,8 @@ Example:
5256

5357
audio-codec {
5458
#sound-dai-cells = <1>;
59+
interrupts-extended = <&cpcap 9 0>, <&cpcap 10 0>;
60+
interrupt-names = "hs", "mb2";
5561

5662
/* HiFi */
5763
port@0 {

Documentation/devicetree/bindings/misc/atmel-ssc.txt

Lines changed: 0 additions & 50 deletions
This file was deleted.
Lines changed: 104 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,104 @@
1+
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
2+
%YAML 1.2
3+
---
4+
$id: http://devicetree.org/schemas/sound/atmel,at91-ssc.yaml#
5+
$schema: http://devicetree.org/meta-schemas/core.yaml#
6+
7+
title: Atmel Serial Synchronous Serial (SSC)
8+
9+
maintainers:
10+
- Andrei Simion <andrei.simion@microchip.com>
11+
12+
description:
13+
The Atmel Synchronous Serial Controller (SSC) provides a versatile
14+
synchronous communication link for audio and telecom applications,
15+
supporting protocols like I2S, Short Frame Sync, and Long Frame Sync.
16+
17+
properties:
18+
compatible:
19+
enum:
20+
- atmel,at91rm9200-ssc
21+
- atmel,at91sam9g45-ssc
22+
23+
reg:
24+
maxItems: 1
25+
26+
interrupts:
27+
maxItems: 1
28+
29+
clocks:
30+
maxItems: 1
31+
32+
clock-names:
33+
items:
34+
- const: pclk
35+
36+
dmas:
37+
items:
38+
- description: TX DMA Channel
39+
- description: RX DMA Channel
40+
41+
dma-names:
42+
items:
43+
- const: tx
44+
- const: rx
45+
46+
atmel,clk-from-rk-pin:
47+
description:
48+
Specify the clock source for the SSC (Synchronous Serial Controller)
49+
when operating in slave mode. By default, the clock is sourced from
50+
the TK pin.
51+
type: boolean
52+
53+
"#sound-dai-cells":
54+
const: 0
55+
56+
required:
57+
- compatible
58+
- reg
59+
- interrupts
60+
- clocks
61+
- clock-names
62+
63+
allOf:
64+
- $ref: dai-common.yaml#
65+
- if:
66+
properties:
67+
compatible:
68+
contains:
69+
enum:
70+
- atmel,at91sam9g45-ssc
71+
then:
72+
required:
73+
- dmas
74+
- dma-names
75+
76+
unevaluatedProperties: false
77+
78+
examples:
79+
- |
80+
#include <dt-bindings/clock/at91.h>
81+
#include <dt-bindings/dma/at91.h>
82+
#include <dt-bindings/interrupt-controller/irq.h>
83+
84+
ssc@100000 {
85+
compatible = "atmel,at91sam9g45-ssc";
86+
reg = <0x100000 0x4000>;
87+
interrupts = <28 IRQ_TYPE_LEVEL_HIGH 5>;
88+
dmas = <&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
89+
AT91_XDMAC_DT_PERID(38))>,
90+
<&dma0 (AT91_XDMAC_DT_MEM_IF(0) | AT91_XDMAC_DT_PER_IF(1) |
91+
AT91_XDMAC_DT_PERID(39))>;
92+
dma-names = "tx", "rx";
93+
clocks = <&pmc PMC_TYPE_PERIPHERAL 28>;
94+
clock-names = "pclk";
95+
#sound-dai-cells = <0>;
96+
};
97+
98+
ssc@c00000 {
99+
compatible = "atmel,at91rm9200-ssc";
100+
reg = <0xc00000 0x4000>;
101+
interrupts = <14 IRQ_TYPE_LEVEL_HIGH 5>;
102+
clocks = <&pmc PMC_TYPE_PERIPHERAL 14>;
103+
clock-names = "pclk";
104+
};

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

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,40 @@ properties:
5858
items:
5959
enum: [1, 2, 3, 4, 5]
6060

61+
qcom,tx-channel-mapping:
62+
description: |
63+
Specifies static channel mapping between slave and master tx port
64+
channels.
65+
In the order of slave port channels which is adc1, adc2, adc3,
66+
dmic0, dmic1, mbhc, dmic2, dmic3, dmci4, dmic5, dmic6, dmic7.
67+
$ref: /schemas/types.yaml#/definitions/uint8-array
68+
minItems: 12
69+
maxItems: 12
70+
additionalItems: false
71+
items:
72+
enum:
73+
- 1 # WCD9370_SWRM_CH1
74+
- 2 # WCD9370_SWRM_CH2
75+
- 3 # WCD9370_SWRM_CH3
76+
- 4 # WCD9370_SWRM_CH4
77+
78+
qcom,rx-channel-mapping:
79+
description: |
80+
Specifies static channels mapping between slave and master rx port
81+
channels.
82+
In the order of slave port channels, which is
83+
hph_l, hph_r, clsh, comp_l, comp_r, lo, dsd_r, dsd_l.
84+
$ref: /schemas/types.yaml#/definitions/uint8-array
85+
minItems: 8
86+
maxItems: 8
87+
additionalItems: false
88+
items:
89+
enum:
90+
- 1 # WCD9370_SWRM_CH1
91+
- 2 # WCD9370_SWRM_CH2
92+
- 3 # WCD9370_SWRM_CH3
93+
- 4 # WCD9370_SWRM_CH4
94+
6195
required:
6296
- compatible
6397
- reg
@@ -74,6 +108,7 @@ examples:
74108
compatible = "sdw20217010a00";
75109
reg = <0 4>;
76110
qcom,rx-port-mapping = <1 2 3 4 5>;
111+
qcom,rx-channel-mapping = /bits/ 8 <1 2 1 1 2 1 1 2>;
77112
};
78113
};
79114
@@ -85,6 +120,7 @@ examples:
85120
compatible = "sdw20217010a00";
86121
reg = <0 3>;
87122
qcom,tx-port-mapping = <2 2 3 4>;
123+
qcom,tx-channel-mapping = /bits/ 8 <1 2 1 1 2 3 3 4 1 2 3 4>;
88124
};
89125
};
90126

Documentation/devicetree/bindings/sound/rockchip-spdif.yaml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ properties:
3131
- rockchip,rk3288-spdif
3232
- rockchip,rk3308-spdif
3333
- const: rockchip,rk3066-spdif
34+
- items:
35+
- enum:
36+
- rockchip,rk3588-spdif
37+
- const: rockchip,rk3568-spdif
3438

3539
reg:
3640
maxItems: 1

Documentation/sound/alsa-configuration.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ debug
5858
2 = verbose debug messages);
5959
This option appears only when ``CONFIG_SND_DEBUG=y``.
6060
This option can be dynamically changed via sysfs
61-
/sys/modules/snd/parameters/debug file.
61+
/sys/module/snd/parameters/debug file.
6262

6363
Module snd-pcm-oss
6464
------------------

Documentation/sound/designs/powersave.rst

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,15 +25,15 @@ operations.
2525
The ``power_save`` option is exported as writable. This means you can
2626
adjust the value via sysfs on the fly. For example, to turn on the
2727
automatic power-save mode with 10 seconds, write to
28-
``/sys/modules/snd_ac97_codec/parameters/power_save`` (usually as root):
28+
``/sys/module/snd_ac97_codec/parameters/power_save`` (usually as root):
2929
::
3030

31-
# echo 10 > /sys/modules/snd_ac97_codec/parameters/power_save
31+
# echo 10 > /sys/module/snd_ac97_codec/parameters/power_save
3232

3333

3434
Note that you might hear click noise/pop when changing the power
3535
state. Also, it often takes certain time to wake up from the
36-
power-down to the active state. These are often hardly to fix, so
36+
power-down to the active state. These are often hard to fix, so
3737
don't report extra bug reports unless you have a fix patch ;-)
3838

3939
For HD-audio interface, there is another module option,

MAINTAINERS

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15632,7 +15632,7 @@ M: Claudiu Beznea <claudiu.beznea@tuxon.dev>
1563215632
M: Andrei Simion <andrei.simion@microchip.com>
1563315633
L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
1563415634
S: Supported
15635-
F: Documentation/devicetree/bindings/misc/atmel-ssc.txt
15635+
F: Documentation/devicetree/bindings/sound/atmel,at91-ssc.yaml
1563615636
F: drivers/misc/atmel-ssc.c
1563715637
F: include/linux/atmel-ssc.h
1563815638

@@ -19149,6 +19149,7 @@ F: Documentation/devicetree/bindings/soc/qcom/qcom,apr*
1914919149
F: Documentation/devicetree/bindings/sound/qcom,*
1915019150
F: drivers/soc/qcom/apr.c
1915119151
F: include/dt-bindings/sound/qcom,wcd9335.h
19152+
F: include/dt-bindings/sound/qcom,wcd934x.h
1915219153
F: sound/soc/codecs/lpass-rx-macro.*
1915319154
F: sound/soc/codecs/lpass-tx-macro.*
1915419155
F: sound/soc/codecs/lpass-va-macro.c

drivers/base/regmap/regmap-irq.c

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,7 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
823823
/* Ack masked but set interrupts */
824824
if (d->chip->no_status) {
825825
/* no status register so default to all active */
826-
d->status_buf[i] = GENMASK(31, 0);
826+
d->status_buf[i] = UINT_MAX;
827827
} else {
828828
reg = d->get_irq_reg(d, d->chip->status_base, i);
829829
ret = regmap_read(map, reg, &d->status_buf[i]);
@@ -906,6 +906,7 @@ int regmap_add_irq_chip_fwnode(struct fwnode_handle *fwnode,
906906
kfree(d->wake_buf);
907907
kfree(d->mask_buf_def);
908908
kfree(d->mask_buf);
909+
kfree(d->main_status_buf);
909910
kfree(d->status_buf);
910911
kfree(d->status_reg_buf);
911912
if (d->config_buf) {
@@ -981,6 +982,7 @@ void regmap_del_irq_chip(int irq, struct regmap_irq_chip_data *d)
981982
kfree(d->wake_buf);
982983
kfree(d->mask_buf_def);
983984
kfree(d->mask_buf);
985+
kfree(d->main_status_buf);
984986
kfree(d->status_reg_buf);
985987
kfree(d->status_buf);
986988
if (d->config_buf) {

drivers/soundwire/qcom.c

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ struct qcom_swrm_port_config {
156156
u8 word_length;
157157
u8 blk_group_count;
158158
u8 lane_control;
159+
u8 ch_mask;
159160
};
160161

161162
/*
@@ -1048,9 +1049,13 @@ static int qcom_swrm_port_enable(struct sdw_bus *bus,
10481049
{
10491050
u32 reg = SWRM_DP_PORT_CTRL_BANK(enable_ch->port_num, bank);
10501051
struct qcom_swrm_ctrl *ctrl = to_qcom_sdw(bus);
1052+
struct qcom_swrm_port_config *pcfg;
10511053
u32 val;
10521054

1055+
pcfg = &ctrl->pconfig[enable_ch->port_num];
10531056
ctrl->reg_read(ctrl, reg, &val);
1057+
if (pcfg->ch_mask != SWR_INVALID_PARAM && pcfg->ch_mask != 0)
1058+
enable_ch->ch_mask = pcfg->ch_mask;
10541059

10551060
if (enable_ch->enable)
10561061
val |= (enable_ch->ch_mask << SWRM_DP_PORT_CTRL_EN_CHAN_SHFT);
@@ -1270,6 +1275,26 @@ static void *qcom_swrm_get_sdw_stream(struct snd_soc_dai *dai, int direction)
12701275
return ctrl->sruntime[dai->id];
12711276
}
12721277

1278+
static int qcom_swrm_set_channel_map(struct snd_soc_dai *dai,
1279+
unsigned int tx_num, const unsigned int *tx_slot,
1280+
unsigned int rx_num, const unsigned int *rx_slot)
1281+
{
1282+
struct qcom_swrm_ctrl *ctrl = dev_get_drvdata(dai->dev);
1283+
int i;
1284+
1285+
if (tx_slot) {
1286+
for (i = 0; i < tx_num; i++)
1287+
ctrl->pconfig[i].ch_mask = tx_slot[i];
1288+
}
1289+
1290+
if (rx_slot) {
1291+
for (i = 0; i < rx_num; i++)
1292+
ctrl->pconfig[i].ch_mask = rx_slot[i];
1293+
}
1294+
1295+
return 0;
1296+
}
1297+
12731298
static int qcom_swrm_startup(struct snd_pcm_substream *substream,
12741299
struct snd_soc_dai *dai)
12751300
{
@@ -1306,6 +1331,7 @@ static const struct snd_soc_dai_ops qcom_swrm_pdm_dai_ops = {
13061331
.shutdown = qcom_swrm_shutdown,
13071332
.set_stream = qcom_swrm_set_sdw_stream,
13081333
.get_stream = qcom_swrm_get_sdw_stream,
1334+
.set_channel_map = qcom_swrm_set_channel_map,
13091335
};
13101336

13111337
static const struct snd_soc_component_driver qcom_swrm_dai_component = {

0 commit comments

Comments
 (0)