ASoC: amd: acp: Add ACP7.0 match entries for Cirrus

Merge series from Simon Trimmer <simont@opensource.cirrus.com>:

This patch series adds a number of ACP7.0 match table entries that are
being used in customer products.

Some of the configurations are very similar so the series begins with
renaming and sorting the existing structures so that the end result is
easier to manage.
This commit is contained in:
Mark Brown 2026-02-02 23:31:44 +00:00
commit 0f625fc2de
No known key found for this signature in database
GPG Key ID: 24D68B725D5487D0

View File

@ -187,7 +187,106 @@ static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
},
};
static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
static const struct snd_soc_acpi_adr_device cs35l56x4_l1u3210_adr[] = {
{
.adr = 0x00013301FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00013201FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
{
.adr = 0x00013101FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_2_endpoint,
.name_prefix = "AMP3"
},
{
.adr = 0x00013001FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_3_endpoint,
.name_prefix = "AMP4"
},
};
static const struct snd_soc_acpi_adr_device cs35l63x2_l0u01_adr[] = {
{
.adr = 0x00003001FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00003101FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
};
static const struct snd_soc_acpi_adr_device cs35l63x2_l1u01_adr[] = {
{
.adr = 0x00013001FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00013101FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
};
static const struct snd_soc_acpi_adr_device cs35l63x2_l1u13_adr[] = {
{
.adr = 0x00013101FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00013301FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
};
static const struct snd_soc_acpi_adr_device cs35l63x4_l0u0246_adr[] = {
{
.adr = 0x00003001FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00003201FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
{
.adr = 0x00003401FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_2_endpoint,
.name_prefix = "AMP3"
},
{
.adr = 0x00003601FA356301ull,
.num_endpoints = 1,
.endpoints = &spk_3_endpoint,
.name_prefix = "AMP4"
},
};
static const struct snd_soc_acpi_adr_device cs42l43_l0u0_adr[] = {
{
.adr = 0x00003001FA424301ull,
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
@ -196,7 +295,25 @@ static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
}
};
static const struct snd_soc_acpi_adr_device cs42l43_1_cs35l56x4_1_adr[] = {
static const struct snd_soc_acpi_adr_device cs42l43_l0u1_adr[] = {
{
.adr = 0x00003101FA424301ull,
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
.endpoints = cs42l43_endpoints,
.name_prefix = "cs42l43"
}
};
static const struct snd_soc_acpi_adr_device cs42l43b_l0u1_adr[] = {
{
.adr = 0x00003101FA2A3B01ull,
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
.endpoints = cs42l43_endpoints,
.name_prefix = "cs42l43"
}
};
static const struct snd_soc_acpi_adr_device cs42l43_l1u0_cs35l56x4_l1u0123_adr[] = {
{
.adr = 0x00013001FA424301ull,
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
@ -229,61 +346,155 @@ static const struct snd_soc_acpi_adr_device cs42l43_1_cs35l56x4_1_adr[] = {
},
};
static const struct snd_soc_acpi_adr_device cs35l56x4_1_adr[] = {
static const struct snd_soc_acpi_adr_device cs42l45_l0u0_adr[] = {
{
.adr = 0x00013301FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_l_endpoint,
.name_prefix = "AMP1"
},
{
.adr = 0x00013201FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_r_endpoint,
.name_prefix = "AMP2"
},
{
.adr = 0x00013101FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_2_endpoint,
.name_prefix = "AMP3"
},
{
.adr = 0x00013001FA355601ull,
.num_endpoints = 1,
.endpoints = &spk_3_endpoint,
.name_prefix = "AMP4"
},
.adr = 0x00003001FA424501ull,
/* Re-use endpoints, but cs42l45 has no speaker */
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints) - 1,
.endpoints = cs42l43_endpoints,
.name_prefix = "cs42l45"
}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l1_cs35l56x4_l1[] = {
static const struct snd_soc_acpi_adr_device cs42l45_l1u0_adr[] = {
{
.adr = 0x00013001FA424501ull,
/* Re-use endpoints, but cs42l45 has no speaker */
.num_endpoints = ARRAY_SIZE(cs42l43_endpoints) - 1,
.endpoints = cs42l43_endpoints,
.name_prefix = "cs42l45"
}
};
static const struct snd_soc_acpi_link_adr acp70_cs35l56x4_l1u3210[] = {
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs42l43_1_cs35l56x4_1_adr),
.adr_d = cs42l43_1_cs35l56x4_1_adr,
.num_adr = ARRAY_SIZE(cs35l56x4_l1u3210_adr),
.adr_d = cs35l56x4_l1u3210_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l0_cs35l56x4_l1[] = {
static const struct snd_soc_acpi_link_adr acp70_cs35l63x4_l0u0246[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l43_0_adr),
.adr_d = cs42l43_0_adr,
},
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs35l56x4_1_adr),
.adr_d = cs35l56x4_1_adr,
.num_adr = ARRAY_SIZE(cs35l63x4_l0u0246_adr),
.adr_d = cs35l63x4_l0u0246_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs35l56x4_l1[] = {
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l0u1[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l43_l0u1_adr),
.adr_d = cs42l43_l0u1_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l43b_l0u1[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l43b_l0u1_adr),
.adr_d = cs42l43b_l0u1_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l0u0_cs35l56x4_l1u3210[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l43_l0u0_adr),
.adr_d = cs42l43_l0u0_adr,
},
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs35l56x4_1_adr),
.adr_d = cs35l56x4_1_adr,
.num_adr = ARRAY_SIZE(cs35l56x4_l1u3210_adr),
.adr_d = cs35l56x4_l1u3210_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l43_l1u0_cs35l56x4_l1u0123[] = {
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs42l43_l1u0_cs35l56x4_l1u0123_adr),
.adr_d = cs42l43_l1u0_cs35l56x4_l1u0123_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l0u0[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l45_l0u0_adr),
.adr_d = cs42l45_l0u0_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l0u0_cs35l63x2_l1u01[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l45_l0u0_adr),
.adr_d = cs42l45_l0u0_adr,
},
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs35l63x2_l1u01_adr),
.adr_d = cs35l63x2_l1u01_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l0u0_cs35l63x2_l1u13[] = {
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs42l45_l0u0_adr),
.adr_d = cs42l45_l0u0_adr,
},
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs35l63x2_l1u13_adr),
.adr_d = cs35l63x2_l1u13_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l1u0[] = {
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs42l45_l1u0_adr),
.adr_d = cs42l45_l1u0_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l1u0_cs35l63x2_l0u01[] = {
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs42l45_l1u0_adr),
.adr_d = cs42l45_l1u0_adr,
},
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs35l63x2_l0u01_adr),
.adr_d = cs35l63x2_l0u01_adr,
},
{}
};
static const struct snd_soc_acpi_link_adr acp70_cs42l45_l1u0_cs35l63x4_l0u0246[] = {
{
.mask = BIT(1),
.num_adr = ARRAY_SIZE(cs42l45_l1u0_adr),
.adr_d = cs42l45_l1u0_adr,
},
{
.mask = BIT(0),
.num_adr = ARRAY_SIZE(cs35l63x4_l0u0246_adr),
.adr_d = cs35l63x4_l0u0246_adr,
},
{}
};
@ -326,11 +537,6 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
.links = acp70_rt722_l0_rt1320_l1,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_rt722_only,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_4_in_1_sdca,
@ -338,17 +544,67 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sdw_machines[] = {
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_cs42l43_l0_cs35l56x4_l1,
.links = acp70_cs42l43_l0u0_cs35l56x4_l1u3210,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_cs42l45_l1u0_cs35l63x4_l0u0246,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_cs42l45_l0u0_cs35l63x2_l1u01,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_cs42l45_l0u0_cs35l63x2_l1u13,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0) | BIT(1),
.links = acp70_cs42l45_l1u0_cs35l63x2_l0u01,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(1),
.links = acp70_cs42l43_l1_cs35l56x4_l1,
.links = acp70_cs42l43_l1u0_cs35l56x4_l1u0123,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(1),
.links = acp70_cs35l56x4_l1,
.links = acp70_cs35l56x4_l1u3210,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_cs35l63x4_l0u0246,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_rt722_only,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_cs42l43_l0u1,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_cs42l43b_l0u1,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(0),
.links = acp70_cs42l45_l0u0,
.drv_name = "amd_sdw",
},
{
.link_mask = BIT(1),
.links = acp70_cs42l45_l1u0,
.drv_name = "amd_sdw",
},
{