146 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2/*3 * soc-acpi-intel-ptl-match.c - tables and support for PTL ACPI enumeration.4 *5 * Copyright (c) 2024, Intel Corporation.6 *7 */8 9#include <sound/soc-acpi.h>10#include <sound/soc-acpi-intel-match.h>11#include "soc-acpi-intel-sdw-mockup-match.h"12 13struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_machines[] = {14 {},15};16EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_machines);17 18static const struct snd_soc_acpi_endpoint single_endpoint = {19 .num = 0,20 .aggregated = 0,21 .group_position = 0,22 .group_id = 0,23};24 25/*26 * RT722 is a multi-function codec, three endpoints are created for27 * its headset, amp and dmic functions.28 */29static const struct snd_soc_acpi_endpoint rt722_endpoints[] = {30 {31 .num = 0,32 .aggregated = 0,33 .group_position = 0,34 .group_id = 0,35 },36 {37 .num = 1,38 .aggregated = 0,39 .group_position = 0,40 .group_id = 0,41 },42 {43 .num = 2,44 .aggregated = 0,45 .group_position = 0,46 .group_id = 0,47 },48};49 50static const struct snd_soc_acpi_adr_device rt711_sdca_0_adr[] = {51 {52 .adr = 0x000030025D071101ull,53 .num_endpoints = 1,54 .endpoints = &single_endpoint,55 .name_prefix = "rt711"56 }57};58 59static const struct snd_soc_acpi_adr_device rt722_0_single_adr[] = {60 {61 .adr = 0x000030025d072201ull,62 .num_endpoints = ARRAY_SIZE(rt722_endpoints),63 .endpoints = rt722_endpoints,64 .name_prefix = "rt722"65 }66};67 68static const struct snd_soc_acpi_adr_device rt722_3_single_adr[] = {69 {70 .adr = 0x000330025d072201ull,71 .num_endpoints = ARRAY_SIZE(rt722_endpoints),72 .endpoints = rt722_endpoints,73 .name_prefix = "rt722"74 }75};76 77static const struct snd_soc_acpi_link_adr ptl_rt722_only[] = {78 {79 .mask = BIT(0),80 .num_adr = ARRAY_SIZE(rt722_0_single_adr),81 .adr_d = rt722_0_single_adr,82 },83 {}84};85 86static const struct snd_soc_acpi_link_adr ptl_rt722_l3[] = {87 {88 .mask = BIT(3),89 .num_adr = ARRAY_SIZE(rt722_3_single_adr),90 .adr_d = rt722_3_single_adr,91 },92 {}93};94 95static const struct snd_soc_acpi_link_adr ptl_rvp[] = {96 {97 .mask = BIT(0),98 .num_adr = ARRAY_SIZE(rt711_sdca_0_adr),99 .adr_d = rt711_sdca_0_adr,100 },101 {}102};103 104/* this table is used when there is no I2S codec present */105struct snd_soc_acpi_mach snd_soc_acpi_intel_ptl_sdw_machines[] = {106 /* mockup tests need to be first */107 {108 .link_mask = GENMASK(3, 0),109 .links = sdw_mockup_headset_2amps_mic,110 .drv_name = "sof_sdw",111 .sof_tplg_filename = "sof-ptl-rt711-rt1308-rt715.tplg",112 },113 {114 .link_mask = BIT(0) | BIT(1) | BIT(3),115 .links = sdw_mockup_headset_1amp_mic,116 .drv_name = "sof_sdw",117 .sof_tplg_filename = "sof-ptl-rt711-rt1308-mono-rt715.tplg",118 },119 {120 .link_mask = GENMASK(2, 0),121 .links = sdw_mockup_mic_headset_1amp,122 .drv_name = "sof_sdw",123 .sof_tplg_filename = "sof-ptl-rt715-rt711-rt1308-mono.tplg",124 },125 {126 .link_mask = BIT(0),127 .links = ptl_rvp,128 .drv_name = "sof_sdw",129 .sof_tplg_filename = "sof-ptl-rt711.tplg",130 },131 {132 .link_mask = BIT(0),133 .links = ptl_rt722_only,134 .drv_name = "sof_sdw",135 .sof_tplg_filename = "sof-ptl-rt722.tplg",136 },137 {138 .link_mask = BIT(3),139 .links = ptl_rt722_l3,140 .drv_name = "sof_sdw",141 .sof_tplg_filename = "sof-ptl-rt722.tplg",142 },143 {},144};145EXPORT_SYMBOL_GPL(snd_soc_acpi_intel_ptl_sdw_machines);146