167 lines · c
1// SPDX-License-Identifier: GPL-2.0-only2//3// soc-acpi-intel-sdw-mockup-match.c - tables and support for SoundWire4// mockup device ACPI enumeration.5//6// Copyright (c) 2021, Intel Corporation.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 13static const struct snd_soc_acpi_endpoint sdw_mockup_single_endpoint = {14 .num = 0,15 .aggregated = 0,16 .group_position = 0,17 .group_id = 0,18};19 20static const struct snd_soc_acpi_endpoint sdw_mockup_l_endpoint = {21 .num = 0,22 .aggregated = 1,23 .group_position = 0,24 .group_id = 1,25};26 27static const struct snd_soc_acpi_endpoint sdw_mockup_r_endpoint = {28 .num = 0,29 .aggregated = 1,30 .group_position = 1,31 .group_id = 1,32};33 34static const struct snd_soc_acpi_adr_device sdw_mockup_headset_0_adr[] = {35 {36 .adr = 0x0000000105AA5500ull,37 .num_endpoints = 1,38 .endpoints = &sdw_mockup_single_endpoint,39 .name_prefix = "sdw_mockup_headset0"40 }41};42 43static const struct snd_soc_acpi_adr_device sdw_mockup_headset_1_adr[] = {44 {45 .adr = 0x0001000105AA5500ull,46 .num_endpoints = 1,47 .endpoints = &sdw_mockup_single_endpoint,48 .name_prefix = "sdw_mockup_headset1"49 }50};51 52static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_adr[] = {53 {54 .adr = 0x000100010555AA00ull,55 .num_endpoints = 1,56 .endpoints = &sdw_mockup_single_endpoint,57 .name_prefix = "sdw_mockup_amp1"58 }59};60 61static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_adr[] = {62 {63 .adr = 0x000200010555AA00ull,64 .num_endpoints = 1,65 .endpoints = &sdw_mockup_single_endpoint,66 .name_prefix = "sdw_mockup_amp2"67 }68};69 70static const struct snd_soc_acpi_adr_device sdw_mockup_mic_0_adr[] = {71 {72 .adr = 0x0000000105555500ull,73 .num_endpoints = 1,74 .endpoints = &sdw_mockup_single_endpoint,75 .name_prefix = "sdw_mockup_mic0"76 }77};78 79static const struct snd_soc_acpi_adr_device sdw_mockup_mic_3_adr[] = {80 {81 .adr = 0x0003000105555500ull,82 .num_endpoints = 1,83 .endpoints = &sdw_mockup_single_endpoint,84 .name_prefix = "sdw_mockup_mic3"85 }86};87 88static const struct snd_soc_acpi_adr_device sdw_mockup_amp_1_group1_adr[] = {89 {90 .adr = 0x000100010555AA00ull,91 .num_endpoints = 1,92 .endpoints = &sdw_mockup_l_endpoint,93 .name_prefix = "sdw_mockup_amp1_l"94 }95};96 97static const struct snd_soc_acpi_adr_device sdw_mockup_amp_2_group1_adr[] = {98 {99 .adr = 0x000200010555AA00ull,100 .num_endpoints = 1,101 .endpoints = &sdw_mockup_r_endpoint,102 .name_prefix = "sdw_mockup_amp2_r"103 }104};105 106const struct snd_soc_acpi_link_adr sdw_mockup_headset_1amp_mic[] = {107 {108 .mask = BIT(0),109 .num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),110 .adr_d = sdw_mockup_headset_0_adr,111 },112 {113 .mask = BIT(1),114 .num_adr = ARRAY_SIZE(sdw_mockup_amp_1_adr),115 .adr_d = sdw_mockup_amp_1_adr,116 },117 {118 .mask = BIT(3),119 .num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),120 .adr_d = sdw_mockup_mic_3_adr,121 },122 {}123};124 125const struct snd_soc_acpi_link_adr sdw_mockup_headset_2amps_mic[] = {126 {127 .mask = BIT(0),128 .num_adr = ARRAY_SIZE(sdw_mockup_headset_0_adr),129 .adr_d = sdw_mockup_headset_0_adr,130 },131 {132 .mask = BIT(1),133 .num_adr = ARRAY_SIZE(sdw_mockup_amp_1_group1_adr),134 .adr_d = sdw_mockup_amp_1_group1_adr,135 },136 {137 .mask = BIT(2),138 .num_adr = ARRAY_SIZE(sdw_mockup_amp_2_group1_adr),139 .adr_d = sdw_mockup_amp_2_group1_adr,140 },141 {142 .mask = BIT(3),143 .num_adr = ARRAY_SIZE(sdw_mockup_mic_3_adr),144 .adr_d = sdw_mockup_mic_3_adr,145 },146 {}147};148 149const struct snd_soc_acpi_link_adr sdw_mockup_mic_headset_1amp[] = {150 {151 .mask = BIT(1),152 .num_adr = ARRAY_SIZE(sdw_mockup_headset_1_adr),153 .adr_d = sdw_mockup_headset_1_adr,154 },155 {156 .mask = BIT(2),157 .num_adr = ARRAY_SIZE(sdw_mockup_amp_2_adr),158 .adr_d = sdw_mockup_amp_2_adr,159 },160 {161 .mask = BIT(0),162 .num_adr = ARRAY_SIZE(sdw_mockup_mic_0_adr),163 .adr_d = sdw_mockup_mic_0_adr,164 },165 {}166};167