]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ASoC: Intel: soc-acpi: Add match entries for some cs42l43 laptops
authorCharles Keepax <ckeepax@opensource.cirrus.com>
Mon, 27 May 2024 19:35:43 +0000 (14:35 -0500)
committerMark Brown <broonie@kernel.org>
Wed, 29 May 2024 10:10:51 +0000 (11:10 +0100)
Add some new match table entries on Arrowlake and Raptorlake for some
coming cs42l43 laptops.

Reviewed-by: Bard Liao <yung-chuan.liao@linux.intel.com>
Signed-off-by: Charles Keepax <ckeepax@opensource.cirrus.com>
Signed-off-by: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
Link: https://msgid.link/r/20240527193552.165567-10-pierre-louis.bossart@linux.intel.com
Signed-off-by: Mark Brown <broonie@kernel.org>
sound/soc/intel/common/soc-acpi-intel-arl-match.c
sound/soc/intel/common/soc-acpi-intel-rpl-match.c

index 79d26e0f2c28da3e56807514395903eb6eece412..cc87c34e5a08eab8de3ead491b4a64fbf10404cb 100644 (file)
@@ -15,6 +15,42 @@ static const struct snd_soc_acpi_endpoint single_endpoint = {
        .group_id = 0,
 };
 
+static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
+       { /* Jack Playback Endpoint */
+               .num = 0,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* DMIC Capture Endpoint */
+               .num = 1,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* Jack Capture Endpoint */
+               .num = 2,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* Speaker Playback Endpoint */
+               .num = 3,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+};
+
+static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
+       {
+               .adr = 0x00003001FA424301ull,
+               .num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
+               .endpoints = cs42l43_endpoints,
+               .name_prefix = "cs42l43"
+       }
+};
+
 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
        {
                .adr = 0x000020025D071100ull,
@@ -33,6 +69,14 @@ static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {
        }
 };
 
+static const struct snd_soc_acpi_link_adr arl_cs42l43_l0[] = {
+       {
+               .mask = BIT(0),
+               .num_adr = ARRAY_SIZE(cs42l43_0_adr),
+               .adr_d = cs42l43_0_adr,
+       },
+};
+
 static const struct snd_soc_acpi_link_adr arl_rvp[] = {
        {
                .mask = BIT(0),
@@ -58,6 +102,12 @@ EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_arl_machines);
 
 /* this table is used when there is no I2S codec present */
 struct snd_soc_acpi_mach snd_soc_acpi_intel_arl_sdw_machines[] = {
+       {
+               .link_mask = BIT(0),
+               .links = arl_cs42l43_l0,
+               .drv_name = "sof_sdw",
+               .sof_tplg_filename = "sof-arl-cs42l43-l0.tplg",
+       },
        {
                .link_mask = 0x1, /* link0 required */
                .links = arl_rvp,
index b0a49e28ab0926857e558a32d1d7e04728fc3ba0..bc8817633b81b010421337ad5e95f7b717ee8f74 100644 (file)
@@ -30,6 +30,42 @@ static const struct snd_soc_acpi_endpoint spk_r_endpoint = {
        .group_id = 1,
 };
 
+static const struct snd_soc_acpi_endpoint cs42l43_endpoints[] = {
+       { /* Jack Playback Endpoint */
+               .num = 0,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* DMIC Capture Endpoint */
+               .num = 1,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* Jack Capture Endpoint */
+               .num = 2,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+       { /* Speaker Playback Endpoint */
+               .num = 3,
+               .aggregated = 0,
+               .group_position = 0,
+               .group_id = 0,
+       },
+};
+
+static const struct snd_soc_acpi_adr_device cs42l43_0_adr[] = {
+       {
+               .adr = 0x00003001FA424301ull,
+               .num_endpoints = ARRAY_SIZE(cs42l43_endpoints),
+               .endpoints = cs42l43_endpoints,
+               .name_prefix = "cs42l43"
+       }
+};
+
 static const struct snd_soc_acpi_adr_device rt711_0_adr[] = {
        {
                .adr = 0x000020025D071100ull,
@@ -156,6 +192,14 @@ static const struct snd_soc_acpi_adr_device rt714_3_adr[] = {
        }
 };
 
+static const struct snd_soc_acpi_link_adr rpl_cs42l43_l0[] = {
+       {
+               .mask = BIT(0),
+               .num_adr = ARRAY_SIZE(cs42l43_0_adr),
+               .adr_d = cs42l43_0_adr,
+       },
+};
+
 static const struct snd_soc_acpi_link_adr rpl_sdca_3_in_1[] = {
        {
                .mask = BIT(0),
@@ -446,6 +490,12 @@ EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_rpl_machines);
 
 /* this table is used when there is no I2S codec present */
 struct snd_soc_acpi_mach snd_soc_acpi_intel_rpl_sdw_machines[] = {
+       {
+               .link_mask = BIT(0),
+               .links = rpl_cs42l43_l0,
+               .drv_name = "sof_sdw",
+               .sof_tplg_filename = "sof-rpl-cs42l43-l0.tplg",
+       },
        {
                .link_mask = 0xF, /* 4 active links required */
                .links = rpl_sdca_3_in_1,