From: Pierre-Louis Bossart <pierre-louis.bossart@linux.dev>
To: ming cong <ming.cong@senarytech.com>,
broonie@kernel.org, julianbraha@gmail.com
Cc: qianghua.wang@senarytech.com, jim.tang@senarytech.com,
Bard Liao <yung-chuan.liao@linux.intel.com>,
Mac Chiang <mac.chiang@intel.com>,
Gary C Wang <gary.c.wang@intel.com>,
Ranjani Sridharan <ranjani.sridharan@linux.intel.com>,
Zhang Yi <zhangyi@everest-semi.com>,
Niranjan H Y <niranjan.hy@ti.com>,
Richard Fitzgerald <rf@opensource.cirrus.com>,
Stefan Binding <sbinding@opensource.cirrus.com>,
Liam Girdwood <liam.r.girdwood@intel.com>,
Simon Trimmer <simont@opensource.cirrus.com>,
Charles Keepax <ckeepax@opensource.cirrus.com>,
Jang Pyohwan <vhgksl@daum.net>,
Balamurugan C <balamurugan.c@intel.com>,
"linux-sound@vger.kernel.org" <linux-sound@vger.kernel.org>
Subject: Re: [’PATCH’ 3/3] ASoC: codecs: add new SoundWire-based SN624x
Date: Thu, 23 Jul 2026 19:34:13 +0200 [thread overview]
Message-ID: <3db1c203-e81d-43a3-9c72-b2abb1374253@linux.dev> (raw)
In-Reply-To: <20260723063129.9151-1-ming.cong@senarytech.com>
On 7/23/26 08:31, ming cong wrote:
> The current kernel does not support the SN624x codec chip.
> Add the SN624x codec configuration item to kernel.
>
> Signed-off-by: ming cong <ming.cong@senarytech.com>
> ---
> MAINTAINERS | 10 ++
> .../intel/common/soc-acpi-intel-arl-match.c | 69 +++++++++++++
> .../intel/common/soc-acpi-intel-lnl-match.c | 69 +++++++++++++
> .../intel/common/soc-acpi-intel-mtl-match.c | 52 ++++++++++
> .../intel/common/soc-acpi-intel-ptl-match.c | 96 +++++++++++++++++++
this isn't an ASoC: codecs patch but an Intel patch.
> 5 files changed, 296 insertions(+)
>
> diff --git a/MAINTAINERS b/MAINTAINERS
> index 54b7325f01e9..a157da5e4937 100644
> --- a/MAINTAINERS
> +++ b/MAINTAINERS
> @@ -29530,3 +29530,13 @@ F: sound/soc/sdw_utils/soc_sdw_senary_sdca.c
> F: sound/soc/sdw_utils/soc_sdw_senary_sdca_jack_common.c
> F: sound/soc/sdw_utils/soc_sdw_utils.c
> F: include/sound/soc_sdw_utils.h
> +
> +SENARYTECH AUDIO SN624X CODEC DRIVER
> +M: ming cong <ming.cong@senarytech.com>
> +S: Maintained
> +T: git git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git
> +F: sound\sound\soc\intel\common\soc-acpi-intel-arl-match.c
> +F: sound\sound\soc\intel\common\soc-acpi-intel-lnl-match.c
> +F: sound\sound\soc\intel\common\soc-acpi-intel-mtl-match.c
> +F: sound\sound\soc\intel\common\soc-acpi-intel-ptl-match.c
that also doesn't seem quite right, this is an Intel directory with
things that aren't related to Senary support.
> +
> diff --git a/sound/soc/intel/common/soc-acpi-intel-arl-match.c b/sound/soc/intel/common/soc-acpi-intel-arl-match.c
> index 59bfd5248819..07c95d0f2f31 100644
> --- a/sound/soc/intel/common/soc-acpi-intel-arl-match.c
> +++ b/sound/soc/intel/common/soc-acpi-intel-arl-match.c
> @@ -319,6 +319,63 @@ static const struct snd_soc_acpi_adr_device rt1320_3_group1_adr[] = {
> }
> };
>
> +static const struct snd_soc_acpi_endpoint sn624x_endpoints[] = {
> + {
> + .num = 0,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 1,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 2,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn6242_single_adr[] = {
> + {
> + .adr = 0x0000000496624201ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn6244_single_adr[] = {
> + {
> + .adr = 0x0000000496624401ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn6242[] = {
> + {
> + .mask = BIT(0),
> + .num_adr = ARRAY_SIZE(sn6242_single_adr),
> + .adr_d = sn6242_single_adr,
> + },
> + {}
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn6244[] = {
> + {
> + .mask = BIT(0),
> + .num_adr = ARRAY_SIZE(sn6244_single_adr),
> + .adr_d = sn6244_single_adr,
> + },
> + {}
> +};
> +
> static const struct snd_soc_acpi_link_adr arl_cs42l43_l0[] = {
> {
> .mask = BIT(0),
> @@ -621,6 +678,18 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = {
> .sof_tplg_filename = "sof-arl-es9356.tplg",
> .get_function_tplg_files = sof_sdw_get_tplg_files,
> },
> + {
> + .link_mask = BIT(0),
> + .links = link_sn6242,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-arl-sn624x.tplg",
> + },
> + {
> + .link_mask = BIT(0),
> + .links = link_sn6244,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-arl-sn624x.tplg",
> + },
> {},
> };
> EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_sdw_machines);
> diff --git a/sound/soc/intel/common/soc-acpi-intel-lnl-match.c b/sound/soc/intel/common/soc-acpi-intel-lnl-match.c
> index 937a74a5d523..845d10575459 100644
> --- a/sound/soc/intel/common/soc-acpi-intel-lnl-match.c
> +++ b/sound/soc/intel/common/soc-acpi-intel-lnl-match.c
> @@ -215,6 +215,27 @@ static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = {
> },
> };
>
> +static const struct snd_soc_acpi_endpoint sn624x_endpoints[] = {
> + {
> + .num = 0,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 1,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 2,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> +};
> +
> static const struct snd_soc_acpi_adr_device cs35l56_2_l_adr[] = {
> {
> .adr = 0x00023001FA355601ull,
> @@ -482,6 +503,24 @@ static const struct snd_soc_acpi_adr_device rt714_1_adr[] = {
> }
> };
>
> +static const struct snd_soc_acpi_adr_device sn6242_single_adr[] = {
> + {
> + .adr = 0x0000000496624201ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn6244_single_adr[] = {
> + {
> + .adr = 0x0000000496624401ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> static const struct snd_soc_acpi_link_adr lnl_cs42l43_l0[] = {
> {
> .mask = BIT(0),
> @@ -684,6 +723,24 @@ static const struct snd_soc_acpi_link_adr lnl_sdw_rt712_vb_l2_rt1320_l1[] = {
> {}
> };
>
> +static const struct snd_soc_acpi_link_adr link_sn6242[] = {
> + {
> + .mask = BIT(0),
> + .num_adr = ARRAY_SIZE(sn6242_single_adr),
> + .adr_d = sn6242_single_adr,
> + },
> + {}
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn6244[] = {
> + {
> + .mask = BIT(0),
> + .num_adr = ARRAY_SIZE(sn6244_single_adr),
> + .adr_d = sn6244_single_adr,
> + },
> + {}
> +};
> +
> /* this table is used when there is no I2S codec present */
> /* this table is used when there is no I2S codec present */
> struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_sdw_machines[] = {
> @@ -796,6 +853,18 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_lnl_sdw_machines[] = {
> .sof_tplg_filename = "sof-lnl-rt713-l2-rt1320-l13.tplg",
> .get_function_tplg_files = sof_sdw_get_tplg_files,
> },
> + {
> + .link_mask = BIT(0),
> + .links = link_sn6242,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-lnl-sn624x.tplg",
> + },
> + {
> + .link_mask = BIT(0),
> + .links = link_sn6244,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-lnl-sn624x.tplg",
> + },
> {},
> };
> EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_lnl_sdw_machines);
> diff --git a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
> index 2e4222456f27..542e56c65715 100644
> --- a/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
> +++ b/sound/soc/intel/common/soc-acpi-intel-mtl-match.c
> @@ -233,6 +233,51 @@ static const struct snd_soc_acpi_endpoint spk_3_endpoint = {
> .group_id = 1,
> };
>
> +static const struct snd_soc_acpi_endpoint sn624x_endpoints[] = {
> + {
> + .num = 0,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 1,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 2,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn624x_single_adr[] = {
> + {
> + .adr = 0x0000000496624401ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> + {
> + .adr = 0x0000000496624201ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn624x[] = {
> + {
> + .mask = GENMASK(3, 0),
> + .num_adr = ARRAY_SIZE(sn624x_single_adr),
> + .adr_d = sn624x_single_adr,
> + },
> + {}
> +};
> +
> static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
> {
> .adr = 0x000030025D071101ull,
> @@ -1487,6 +1532,13 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_mtl_sdw_machines[] = {
> .drv_name = "sof_sdw",
> .sof_tplg_filename = "sof-mtl-sdw-cs42l42-l0-max98363-l2.tplg",
> },
> + {
> + .link_mask = GENMASK(3, 0),
> + .links = link_sn624x,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-mtl-sn624x.tplg",
> + .get_function_tplg_files = sof_sdw_get_tplg_files,
> + },
> {},
> };
> EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_mtl_sdw_machines);
> diff --git a/sound/soc/intel/common/soc-acpi-intel-ptl-match.c b/sound/soc/intel/common/soc-acpi-intel-ptl-match.c
> index f7694b2a2b02..2bac02de3d55 100644
> --- a/sound/soc/intel/common/soc-acpi-intel-ptl-match.c
> +++ b/sound/soc/intel/common/soc-acpi-intel-ptl-match.c
> @@ -160,6 +160,27 @@ static const struct snd_soc_acpi_endpoint cs42l43_amp_spkagg_endpoints[] = {
> },
> };
>
> +static const struct snd_soc_acpi_endpoint sn624x_endpoints[] = {
> + {
> + .num = 0,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 1,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> + {
> + .num = 2,
> + .aggregated = 0,
> + .group_position = 0,
> + .group_id = 0,
> + },
> +};
> +
> static const struct snd_soc_acpi_adr_device cs42l43_3_agg_adr[] = {
> {
> .adr = 0x00033001FA424301ull,
> @@ -301,6 +322,33 @@ static const struct snd_soc_acpi_adr_device rt1320_3_group2_adr[] = {
> }
> };
>
> +static const struct snd_soc_acpi_adr_device sn6242_single_adr[] = {
> + {
> + .adr = 0x0000000496624201ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn6244_single_adr[] = {
> + {
> + .adr = 0x0003000496624401ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> +static const struct snd_soc_acpi_adr_device sn6247_single_adr[] = {
> + {
> + .adr = 0x0003000496624701ull,
> + .num_endpoints = ARRAY_SIZE(sn624x_endpoints),
> + .endpoints = sn624x_endpoints,
> + .name_prefix = "sn6242",
> + },
> +};
> +
> static const struct snd_soc_acpi_link_adr ptl_cs42l43_agg_l3_cs35l56_l2[] = {
> {
> .mask = BIT(3),
> @@ -437,6 +485,33 @@ static const struct snd_soc_acpi_link_adr ptl_sdw_rt712_vb_l3_rt1320_l3[] = {
> {}
> };
>
> +static const struct snd_soc_acpi_link_adr link_sn6242[] = {
> + {
> + .mask = BIT(3),
> + .num_adr = ARRAY_SIZE(sn6242_single_adr),
> + .adr_d = sn6242_single_adr,
> + },
> + {}
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn6244[] = {
> + {
> + .mask = BIT(3),
> + .num_adr = ARRAY_SIZE(sn6244_single_adr),
> + .adr_d = sn6244_single_adr,
> + },
> + {}
> +};
> +
> +static const struct snd_soc_acpi_link_adr link_sn6247[] = {
> + {
> + .mask = BIT(3),
> + .num_adr = ARRAY_SIZE(sn6247_single_adr),
> + .adr_d = sn6247_single_adr,
> + },
> + {}
> +};
> +
> /* this table is used when there is no I2S codec present */
> struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
> /* Order Priority: mockup > most links > most bit link-mask > alphabetical */
> @@ -531,6 +606,27 @@ struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {
> .sof_tplg_filename = "sof-ptl-rt712-l3-rt1320-l3.tplg",
> .get_function_tplg_files = sof_sdw_get_tplg_files,
> },
> + {
> + .link_mask = BIT(3),
> + .links = link_sn6242,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-ptl-sn624x.tplg",
> + .get_function_tplg_files = sof_sdw_get_tplg_files,
> + },
> + {
> + .link_mask = BIT(3),
> + .links = link_sn6244,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-ptl-sn624x.tplg",
> + .get_function_tplg_files = sof_sdw_get_tplg_files,
> + },
> + {
> + .link_mask = BIT(3),
> + .links = link_sn6247,
> + .drv_name = "sof_sdw",
> + .sof_tplg_filename = "sof-ptl-sn624x.tplg",
> + .get_function_tplg_files = sof_sdw_get_tplg_files,
> + },
> {},
> };
> EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines);
It's a bit weird to see sometimes 3 descriptors, sometimes 2 and
sometimes 1. The only difference seems to be the partID, so wondering if
there's a better way to add more than one part ID to a descriptor.
parent reply other threads:[~2026-07-23 17:35 UTC|newest]
Thread overview: expand[flat|nested] mbox.gz Atom feed
[parent not found: <20260723063129.9151-1-ming.cong@senarytech.com>]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3db1c203-e81d-43a3-9c72-b2abb1374253@linux.dev \
--to=pierre-louis.bossart@linux.dev \
--cc=balamurugan.c@intel.com \
--cc=broonie@kernel.org \
--cc=ckeepax@opensource.cirrus.com \
--cc=gary.c.wang@intel.com \
--cc=jim.tang@senarytech.com \
--cc=julianbraha@gmail.com \
--cc=liam.r.girdwood@intel.com \
--cc=linux-sound@vger.kernel.org \
--cc=mac.chiang@intel.com \
--cc=ming.cong@senarytech.com \
--cc=niranjan.hy@ti.com \
--cc=qianghua.wang@senarytech.com \
--cc=ranjani.sridharan@linux.intel.com \
--cc=rf@opensource.cirrus.com \
--cc=sbinding@opensource.cirrus.com \
--cc=simont@opensource.cirrus.com \
--cc=vhgksl@daum.net \
--cc=yung-chuan.liao@linux.intel.com \
--cc=zhangyi@everest-semi.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.