Linux Sound subsystem development
 help / color / mirror / Atom feed
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.


           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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox