Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
62fe1ee
--- patches from sdm670 ---
May 1, 2026
f668630
ASoC: qcom: qdsp6: topology: check widget type before accessing data
Apr 2, 2026
98cec1c
ASoC: dt-bindings: qcom: add LPASS LPI MI2S dai ids
Apr 2, 2026
fe7fd85
ASoC: qcom: common: validate cpu dai id during parsing
Apr 2, 2026
5d33ce7
ASoC: qcom: qdsp6: lpass-ports: add support for LPASS LPI MI2S dais
Apr 2, 2026
70fca80
ASoC: qcom: q6dsp: Add Senary MI2S audio interface support
mohsRafi Apr 2, 2026
349d96e
ASoC: qcom: qdapm-lpass-dai: correct the error message
Apr 2, 2026
d5dcaea
ASoC: qcom: q6apm-lpass-dai: move graph start to trigger
Apr 2, 2026
5aa7179
ASoC: qdsp6: Add shared session management for q6voice services
stephan-gh Apr 28, 2020
871d747
ASoC: qdsp6: Add driver for Q6 Multimode Voice Manager (q6mvm)
stephan-gh Apr 28, 2020
6e88622
ASoC: qdsp6: Add driver for Q6 Core Voice Processor (q6cvp)
stephan-gh Apr 28, 2020
46fd1db
ASoC: qdsp6: Add driver for Q6 Core Voice Stream (q6cvs)
stephan-gh Apr 28, 2020
86a5234
ASoC: qdsp6: Add voice call functionality in Q6 Voice driver
stephan-gh Apr 28, 2020
df6d13b
ASoC: qdsp6: Add Q6 Voice DAI driver (v2.1)
stephan-gh Apr 28, 2020
60016d5
ASoC: qdsp6: q6voice: Add getter/setter for rx and tx ports
vknecht Sep 28, 2021
f9056d4
ASoC: qdsp6: q6voice-dai: Add controls for voice rx and tx ports
vknecht Oct 6, 2021
f776f85
ASoC: qdsp6: q6voice-dai: Add VoiceMMode1 DAI
affenull2345 Apr 20, 2023
a75fed3
ASoC: qdsp6: q6core: add support for registering topologies
flamingradian Oct 8, 2024
e19cb6d
ASoC: qdsp6: q6cvp: add commands in cvd 2.3
flamingradian Sep 12, 2023
34a9363
ASoC: qdsp6: q6voice: add cvd 2.3 initialization sequence
flamingradian Sep 12, 2023
0c4ca31
ASoC: qdsp6: q6cvp: add topology ID parameters to session functions
flamingradian Oct 8, 2024
9fc1223
ASoC: qdsp6: q6voice: pass new topology property to q6cvp
flamingradian Oct 8, 2024
7ccd84e
ASoC: qdsp6: q6voice-dai: add ALSA controls for the topology ID
flamingradian Oct 8, 2024
0aa49bd
ASoC: qcom: qdsp6: q6asm-dai: Keep stream marked running on stop
flamingradian Feb 9, 2026
65aa24c
ASoC: qdsp6: q6voice: Constify APR callback response data
flamingradian Mar 7, 2026
e4b9322
ASoC: qdsp6: q6voice: rename snd_soc_dapm_kcontrol_dapm() to snd_soc_…
flamingradian Apr 27, 2026
ffd9498
--- sc7280 related patches ---
May 1, 2026
03bb9ed
ASoC: qdsp6: q6voice-dai: add routes for TX_CODEC_DMA_TX to VOICEMMODE1
Feb 3, 2026
574a111
ASoC: qdsp6: q6voice-dai: add routes for Senary MI2S
valpackett Apr 7, 2026
74a4993
ASoC: qdsp6: q6voice: default to NONE topology for TX
valpackett Apr 20, 2026
638ecdf
arm64: dts: qcom: kodiak: add q6voice related nodes
Feb 2, 2026
a9d16f7
arm64: dts: qcom: qcm6490-fairphone-fp5: add q6voice related nodes
Feb 2, 2026
f0c51b2
arm64: dts: qcom: qcm6490-fairphone-fp5: add route to WCD Playback
pandalec Jun 5, 2026
fa4afbc
--- bugfixes ---
Jun 4, 2026
205b0a1
ASoC: codecs: inline i2c_check_functionality checks
toblux Mar 29, 2026
71cbc9e
ASoC: Use named initializers for arrays of i2c_device_data
ukleinek May 13, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -126,13 +126,16 @@ patternProperties:
reg:
contains:
# MI2S DAI ID range PRIMARY_MI2S_RX - QUATERNARY_MI2S_TX and
# QUINARY_MI2S_RX - QUINARY_MI2S_TX
# QUINARY_MI2S_RX - QUINARY_MI2S_TX and
# LPI_MI2S_RX_0 - SENARY_MI2S_TX
items:
oneOf:
- minimum: 16
maximum: 23
- minimum: 127
maximum: 128
- minimum: 137
maximum: 148
then:
required:
- qcom,sd-lines
Expand Down
29 changes: 29 additions & 0 deletions arch/arm64/boot/dts/qcom/kodiak.dtsi
Original file line number Diff line number Diff line change
Expand Up @@ -4496,6 +4496,35 @@
#sound-dai-cells = <0>;
};
};

q6mvm: apr-service@9 {
compatible = "qcom,q6mvm";
reg = <APR_SVC_ADSP_MVM>;
qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
status = "disabled";

q6voicedai: dais {
compatible = "qcom,q6voice-dais";
#address-cells = <1>;
#size-cells = <0>;
#sound-dai-cells = <1>;
};
};

q6cvs: apr-service@a {
compatible = "qcom,q6cvs";
reg = <APR_SVC_ADSP_CVS>;
qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
status = "disabled";
};

q6cvp: apr-service@b {
compatible = "qcom,q6cvp";
reg = <APR_SVC_ADSP_CVP>;
qcom,protection-domain = "avs/audio", "msm/adsp/audio_pd";
status = "disabled";
};

};

fastrpc {
Expand Down
54 changes: 54 additions & 0 deletions arch/arm64/boot/dts/qcom/qcm6490-fairphone-fp5.dts
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@
#include <dt-bindings/regulator/qcom,rpmh-regulator.h>
#include <dt-bindings/sound/qcom,q6asm.h>
#include <dt-bindings/sound/qcom,q6dsp-lpass-ports.h>
#include <dt-bindings/sound/qcom,q6voice.h>

#include "kodiak.dtsi"
#include "pm7250b.dtsi"
#include "pm7325.dtsi"
Expand Down Expand Up @@ -1298,7 +1300,38 @@
status = "okay";
};

&q6cvp {
status = "okay";
};

&q6cvs {
status = "okay";
};

&q6mvm {
status = "okay";
};


&q6voicedai {
dai@1 {
reg = <VOICEMMODE1>;
};
};

&q6afedai {
dai@104 {
reg = <DISPLAY_PORT_RX>;
};

dai@113 {
reg = <RX_CODEC_DMA_RX_0>;
};

dai@120 {
reg = <TX_CODEC_DMA_TX_3>;
};

dai@127 {
reg = <QUINARY_MI2S_RX>;
qcom,sd-lines = <0>;
Expand Down Expand Up @@ -1483,6 +1516,27 @@
sound-dai = <&q6routing>;
};
};

wcd-playback-dai-link {
link-name = "WCD Playback";
codec {
sound-dai = <&wcd9385 0>, <&swr0 0>, <&lpass_rx_macro 0>;
};
cpu {
sound-dai = <&q6afedai RX_CODEC_DMA_RX_0>;
};
platform {
sound-dai = <&q6routing>;
};
};

voicemmode1-dai-link {
link-name = "VoiceMMode1";
cpu {
sound-dai = <&q6voicedai VOICEMMODE1>;
};
};

};

&spi13 {
Expand Down
12 changes: 12 additions & 0 deletions include/dt-bindings/sound/qcom,q6dsp-lpass-ports.h
Original file line number Diff line number Diff line change
Expand Up @@ -140,6 +140,18 @@
#define DISPLAY_PORT_RX_6 134
#define DISPLAY_PORT_RX_7 135
#define USB_RX 136
#define LPI_MI2S_RX_0 137
#define LPI_MI2S_TX_0 138
#define LPI_MI2S_RX_1 139
#define LPI_MI2S_TX_1 140
#define LPI_MI2S_RX_2 141
#define LPI_MI2S_TX_2 142
#define LPI_MI2S_RX_3 143
#define LPI_MI2S_TX_3 144
#define LPI_MI2S_RX_4 145
#define LPI_MI2S_TX_4 146
#define SENARY_MI2S_RX 147
#define SENARY_MI2S_TX 148

#define LPASS_CLK_ID_PRI_MI2S_IBIT 1
#define LPASS_CLK_ID_PRI_MI2S_EBIT 2
Expand Down
8 changes: 8 additions & 0 deletions include/dt-bindings/sound/qcom,q6voice.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
/* SPDX-License-Identifier: GPL-2.0 */
#ifndef __DT_BINDINGS_Q6_VOICE_H__
#define __DT_BINDINGS_Q6_VOICE_H__

#define CS_VOICE 0
#define VOICEMMODE1 1

#endif /* __DT_BINDINGS_Q6_VOICE_H__ */
4 changes: 2 additions & 2 deletions sound/hda/codecs/side-codecs/cs35l41_hda_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -39,8 +39,8 @@ static void cs35l41_hda_i2c_remove(struct i2c_client *clt)
}

static const struct i2c_device_id cs35l41_hda_i2c_id[] = {
{ "cs35l41-hda" },
{}
{ .name = "cs35l41-hda" },
{ }
};

static const struct acpi_device_id cs35l41_acpi_hda_match[] = {
Expand Down
8 changes: 4 additions & 4 deletions sound/hda/codecs/side-codecs/cs35l56_hda_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -51,10 +51,10 @@ static void cs35l56_hda_i2c_remove(struct i2c_client *clt)
}

static const struct i2c_device_id cs35l56_hda_i2c_id[] = {
{ "cs35l54-hda", 0x3554 },
{ "cs35l56-hda", 0x3556 },
{ "cs35l57-hda", 0x3557 },
{}
{ .name = "cs35l54-hda", .driver_data = 0x3554 },
{ .name = "cs35l56-hda", .driver_data = 0x3556 },
{ .name = "cs35l57-hda", .driver_data = 0x3557 },
{ }
};

static const struct acpi_device_id cs35l56_acpi_hda_match[] = {
Expand Down
4 changes: 2 additions & 2 deletions sound/hda/codecs/side-codecs/tas2781_hda_i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -791,8 +791,8 @@ static const struct dev_pm_ops tas2781_hda_pm_ops = {
};

static const struct i2c_device_id tas2781_hda_i2c_id[] = {
{ "tas2781-hda" },
{}
{ .name = "tas2781-hda" },
{ }
};

static const struct acpi_device_id tas2781_acpi_hda_match[] = {
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/ad193x-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@
#include "ad193x.h"

static const struct i2c_device_id ad193x_id[] = {
{ "ad1936", AD193X },
{ "ad1937", AD193X },
{ .name = "ad1936", .driver_data = AD193X },
{ .name = "ad1937", .driver_data = AD193X },
{ }
};
MODULE_DEVICE_TABLE(i2c, ad193x_id);
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/adau1372-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ static int adau1372_i2c_probe(struct i2c_client *client)
}

static const struct i2c_device_id adau1372_i2c_ids[] = {
{ "adau1372" },
{ .name = "adau1372" },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1372_i2c_ids);
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/adau1373.c
Original file line number Diff line number Diff line change
Expand Up @@ -1599,7 +1599,7 @@ static int adau1373_i2c_probe(struct i2c_client *client)
}

static const struct i2c_device_id adau1373_i2c_id[] = {
{ "adau1373" },
{ .name = "adau1373" },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1373_i2c_id);
Expand Down
8 changes: 4 additions & 4 deletions sound/soc/codecs/adau1701.c
Original file line number Diff line number Diff line change
Expand Up @@ -860,10 +860,10 @@ static int adau1701_i2c_probe(struct i2c_client *client)
}

static const struct i2c_device_id adau1701_i2c_id[] = {
{ "adau1401" },
{ "adau1401a" },
{ "adau1701" },
{ "adau1702" },
{ .name = "adau1401" },
{ .name = "adau1401a" },
{ .name = "adau1701" },
{ .name = "adau1702" },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1701_i2c_id);
Expand Down
8 changes: 4 additions & 4 deletions sound/soc/codecs/adau1761-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ static void adau1761_i2c_remove(struct i2c_client *client)
}

static const struct i2c_device_id adau1761_i2c_ids[] = {
{ "adau1361", ADAU1361 },
{ "adau1461", ADAU1761 },
{ "adau1761", ADAU1761 },
{ "adau1961", ADAU1361 },
{ .name = "adau1361", .driver_data = ADAU1361 },
{ .name = "adau1461", .driver_data = ADAU1761 },
{ .name = "adau1761", .driver_data = ADAU1761 },
{ .name = "adau1961", .driver_data = ADAU1361 },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1761_i2c_ids);
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/adau1781-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -33,8 +33,8 @@ static void adau1781_i2c_remove(struct i2c_client *client)
}

static const struct i2c_device_id adau1781_i2c_ids[] = {
{ "adau1381", ADAU1381 },
{ "adau1781", ADAU1781 },
{ .name = "adau1381", .driver_data = ADAU1381 },
{ .name = "adau1781", .driver_data = ADAU1781 },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1781_i2c_ids);
Expand Down
6 changes: 3 additions & 3 deletions sound/soc/codecs/adau1977-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ static int adau1977_i2c_probe(struct i2c_client *client)
}

static const struct i2c_device_id adau1977_i2c_ids[] = {
{ "adau1977", ADAU1977 },
{ "adau1978", ADAU1978 },
{ "adau1979", ADAU1978 },
{ .name = "adau1977", .driver_data = ADAU1977 },
{ .name = "adau1978", .driver_data = ADAU1978 },
{ .name = "adau1979", .driver_data = ADAU1978 },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau1977_i2c_ids);
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/adau7118-i2c.c
Original file line number Diff line number Diff line change
Expand Up @@ -68,8 +68,8 @@ static const struct of_device_id adau7118_of_match[] = {
MODULE_DEVICE_TABLE(of, adau7118_of_match);

static const struct i2c_device_id adau7118_id[] = {
{"adau7118"},
{}
{ .name = "adau7118" },
{ }
};
MODULE_DEVICE_TABLE(i2c, adau7118_id);

Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/adav803.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
#include "adav80x.h"

static const struct i2c_device_id adav803_id[] = {
{ "adav803" },
{ .name = "adav803" },
{ }
};
MODULE_DEVICE_TABLE(i2c, adav803_id);
Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/ak4118.c
Original file line number Diff line number Diff line change
Expand Up @@ -395,8 +395,8 @@ MODULE_DEVICE_TABLE(of, ak4118_of_match);
#endif

static const struct i2c_device_id ak4118_id_table[] = {
{ "ak4118" },
{}
{ .name = "ak4118" },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4118_id_table);

Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/ak4535.c
Original file line number Diff line number Diff line change
Expand Up @@ -430,7 +430,7 @@ static int ak4535_i2c_probe(struct i2c_client *i2c)
}

static const struct i2c_device_id ak4535_i2c_id[] = {
{ "ak4535" },
{ .name = "ak4535" },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4535_i2c_id);
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/ak4613.c
Original file line number Diff line number Diff line change
Expand Up @@ -303,7 +303,7 @@ static const struct of_device_id ak4613_of_match[] = {
MODULE_DEVICE_TABLE(of, ak4613_of_match);

static const struct i2c_device_id ak4613_i2c_id[] = {
{ "ak4613", (kernel_ulong_t)&ak4613_regmap_cfg },
{ .name = "ak4613", .driver_data = (kernel_ulong_t)&ak4613_regmap_cfg },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4613_i2c_id);
Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/ak4619.c
Original file line number Diff line number Diff line change
Expand Up @@ -831,7 +831,7 @@ static const struct of_device_id ak4619_of_match[] = {
MODULE_DEVICE_TABLE(of, ak4619_of_match);

static const struct i2c_device_id ak4619_i2c_id[] = {
{ "ak4619", (kernel_ulong_t)&ak4619_regmap_cfg },
{ .name = "ak4619", .driver_data = (kernel_ulong_t)&ak4619_regmap_cfg },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4619_i2c_id);
Expand Down
8 changes: 4 additions & 4 deletions sound/soc/codecs/ak4642.c
Original file line number Diff line number Diff line change
Expand Up @@ -672,10 +672,10 @@ static const struct of_device_id ak4642_of_match[] = {
MODULE_DEVICE_TABLE(of, ak4642_of_match);

static const struct i2c_device_id ak4642_i2c_id[] = {
{ "ak4642", (kernel_ulong_t)&ak4642_drvdata },
{ "ak4643", (kernel_ulong_t)&ak4643_drvdata },
{ "ak4648", (kernel_ulong_t)&ak4648_drvdata },
{}
{ .name = "ak4642", .driver_data = (kernel_ulong_t)&ak4642_drvdata },
{ .name = "ak4643", .driver_data = (kernel_ulong_t)&ak4643_drvdata },
{ .name = "ak4648", .driver_data = (kernel_ulong_t)&ak4648_drvdata },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4642_i2c_id);

Expand Down
2 changes: 1 addition & 1 deletion sound/soc/codecs/ak4671.c
Original file line number Diff line number Diff line change
Expand Up @@ -646,7 +646,7 @@ static int ak4671_i2c_probe(struct i2c_client *client)
}

static const struct i2c_device_id ak4671_i2c_id[] = {
{ "ak4671" },
{ .name = "ak4671" },
{ }
};
MODULE_DEVICE_TABLE(i2c, ak4671_i2c_id);
Expand Down
8 changes: 4 additions & 4 deletions sound/soc/codecs/alc5623.c
Original file line number Diff line number Diff line change
Expand Up @@ -963,10 +963,10 @@ static const struct regmap_config alc5623_regmap = {
};

static const struct i2c_device_id alc5623_i2c_table[] = {
{"alc5621", 0x21},
{"alc5622", 0x22},
{"alc5623", 0x23},
{}
{ .name = "alc5621", .driver_data = 0x21 },
{ .name = "alc5622", .driver_data = 0x22 },
{ .name = "alc5623", .driver_data = 0x23 },
{ }
};
MODULE_DEVICE_TABLE(i2c, alc5623_i2c_table);

Expand Down
4 changes: 2 additions & 2 deletions sound/soc/codecs/alc5632.c
Original file line number Diff line number Diff line change
Expand Up @@ -1092,8 +1092,8 @@ static const struct regmap_config alc5632_regmap = {
};

static const struct i2c_device_id alc5632_i2c_table[] = {
{"alc5632", 0x5c},
{}
{ .name = "alc5632", .driver_data = 0x5c },
{ }
};
MODULE_DEVICE_TABLE(i2c, alc5632_i2c_table);

Expand Down
Loading