From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mx0a-0031df01.pphosted.com (mx0a-0031df01.pphosted.com [205.220.168.131]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5D045366543 for ; Tue, 17 Mar 2026 05:35:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=205.220.168.131 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773725722; cv=none; b=eYMg6cXGcdcGBJdppstXIBWC6ZWlX0DhTopEfh0Ztr33R6DsHsBDpVyngupsa/A1Yf1mF8p/OiMZk5UpZuEGx05O5uZ4AFVzkIhSk5wtZnHvttvV/jaCv8h5/rLK7f8E2tUOYodLMUozGTJfWytsV6iwR/9/A4gJjikU1topsUU= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1773725722; c=relaxed/simple; bh=gi7XzDxv7UZfVxYk5DmCxVha/HdTTWnjFnCNOXDqgR0=; h=Message-ID:Date:MIME-Version:Subject:To:Cc:References:From: In-Reply-To:Content-Type; b=FfdhaFYsbF3dvB+gM1+zr/94OzksPznSJyqL5rsmGOSCk9O9r7aky1hQK8NIbJUeMQxNfA0zkDEZ6CJyIRhrJM9tL7rx1CqjqpTZZ/Y5qb4iE/wZc6FLPN4d6p6Vb9z5t4YsddshF5frd10IUA7CQBUf//aq8tS3Rlxq91xrIbc= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com; spf=pass smtp.mailfrom=oss.qualcomm.com; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b=lpircLTZ; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b=GOQeM/b/; arc=none smtp.client-ip=205.220.168.131 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=oss.qualcomm.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=qualcomm.com header.i=@qualcomm.com header.b="lpircLTZ"; dkim=pass (2048-bit key) header.d=oss.qualcomm.com header.i=@oss.qualcomm.com header.b="GOQeM/b/" Received: from pps.filterd (m0279867.ppops.net [127.0.0.1]) by mx0a-0031df01.pphosted.com (8.18.1.11/8.18.1.11) with ESMTP id 62GN7I7U1639402 for ; Tue, 17 Mar 2026 05:35:18 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=qualcomm.com; h= cc:content-transfer-encoding:content-type:date:from:in-reply-to :message-id:mime-version:references:subject:to; s=qcppdkim1; bh= hmKjta0vmJszpX0qBzA+PcllN4eARnCID1N+IXOq3t8=; b=lpircLTZ1zqB3u5W 8IYmNhcJ7XFK7NhS4ig2Gy4A7AMZqoePjKcLjH8SEmE5dgM6w0DXsposi9SgKjeH 9Qea0OMJ09qoSAWi7y1LnH54ISkD85OZjWYRcqUf4v3zc5F1OtZOXNAOlzovF9cP bW/tJznXbm4NFZjtTjr21fNul7nLBKbHPg0CTJvZjrhG5xa+Pwog5j7llRO381zS 5bMVscPmLuSbRlFpLbMgxyQvau8pMjEnHpcvTssHfjPirv7DroZ6gYRrweCkN3Yw TKh957PlOI41vXTsPqMslcn9NmMgpIb9IoRkLihr0lwEN/I9NJKvjDand70Ljc6z Fg7J1A== Received: from mail-pj1-f72.google.com (mail-pj1-f72.google.com [209.85.216.72]) by mx0a-0031df01.pphosted.com (PPS) with ESMTPS id 4cxke0ar8t-1 (version=TLSv1.3 cipher=TLS_AES_128_GCM_SHA256 bits=128 verify=NOT) for ; Tue, 17 Mar 2026 05:35:18 +0000 (GMT) Received: by mail-pj1-f72.google.com with SMTP id 98e67ed59e1d1-354c44bf176so5834837a91.0 for ; Mon, 16 Mar 2026 22:35:18 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oss.qualcomm.com; s=google; t=1773725718; x=1774330518; darn=vger.kernel.org; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :from:to:cc:subject:date:message-id:reply-to; bh=hmKjta0vmJszpX0qBzA+PcllN4eARnCID1N+IXOq3t8=; b=GOQeM/b/ll0pB4TtyReAvU6dj+OZYTWazyrhBLO9Bo37K9fh7nggsrN+ueeQtM72IK fJjT3C18kHMcIOsF1QhoUrQFMbb/VNM1nMrJirEOgW7eEGFgJjjToMLuzW3+Wu4D1uzp xTzOrrzZlkYlHu3eCFKwsP7nzd3ab4VKnyzhSpapDMelWjjmtMy8sks8OiPbQrjK4cJS 2fP4g3ueGc65CoHjnx+ReM0EmSNHfQjCSFYx7Atjas/OVo2J7ytzq8IiGCa0yVqY4Et5 3253PFXlhy6FNEyjRJZ3HXGi9xKRCRnLISJysw11tethpQz0A5k50upRDYfjPyuv22ph Sxyg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773725718; x=1774330518; h=content-transfer-encoding:in-reply-to:from:content-language :references:cc:to:subject:user-agent:mime-version:date:message-id :x-gm-gg:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=hmKjta0vmJszpX0qBzA+PcllN4eARnCID1N+IXOq3t8=; b=riWyOEGmKJrSnorWh9D7QrABlncyk3u1xYPHJvPMTAxrDqASjwKtDVuirCOYzZccqA f1cwX5zoMH+OcYGjrzYT4pPwwqTXTadRM1G0UMu/FH6SB+RxaIDJoH3F68gta+rDRkxz udhHtTBU1QUCLi2fR0oDcHLKjvORiugauzF8k91jbU5yzYEjvIq6NXHB7K8FxpNOVxlU UT9sMLYXceUqF1Ve+IZ8iTLZeiPNo9Ho1tXTeJCeTYAG4zQN0DON9SlD/UcBAa+n6Lec l/DGuQRLjOZv7KeZStW4DJw5blWi9DPcajE+sag0z7N9VbJfXapVdVJuJQnk8/BPaKuE kVRQ== X-Forwarded-Encrypted: i=1; AJvYcCUp9vFsnbSEwtOPu7I+YZ5xslJc6tVvo0SyAaZnN3xb7P9YGu5kER67VAG+CeJqWoDfNj4YhQhTSrtYexQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyeG6/dd8Ni/VA0hCyL/TVIAZz87GwN4YOiwAiaYOyi0RyVtKqL hmDqmx8+bvA9kdP0MCo0ORzdV8TCac6Jy3TqBlxTlO/j90xJQQKJLRY3Ov91zsh2FQ0IJO3Kwkt 70nifkDSmQbXBWaw1+UoKRdw9EoR2TDwmdHa0sIhD3Hb6mTMs0Puv44wf5+KKrrRqvwc= X-Gm-Gg: ATEYQzwfQaEDouF0FxwPgDgIbV6Fhzh8UQfscP86uqffhV88nvz1i1iL4xV8kgG/paf GSUQmP3YFGVta9yRoKLkqnsko5eL23t1bopzGtoiSWRPYvlUDVwJY5EViR4iICCYlVEbrxwi01d AhpS3ig+u0b+v8N8qmm8/61CigDBSS1k1R2K8MFKB61cXzUvWiR2Lkg03+kG9jxZGe7k5YMIbBN xG3RTHaZ0IUOpUp+hcCfswyGdZ38FhXhrqS+VfGuQLAjV3L8s+EBu8KAN7ZRtG/dVpJJLg3jrPK C9GSvM1r2uRHDfAtgyFyjK3yLewcQ2qs/t3aUnmtmBlOng6e7sF7haLTqDpYZqBLTx51WR/a00U I66KOSWIezHNohrv+ttNr9B2UEhSyRfzH2nbNDpb1YPOj0y4Ligcumo/sig4U X-Received: by 2002:a17:90b:2496:b0:35b:952c:43b9 with SMTP id 98e67ed59e1d1-35b952c450amr4599153a91.10.1773725717853; Mon, 16 Mar 2026 22:35:17 -0700 (PDT) X-Received: by 2002:a17:90b:2496:b0:35b:952c:43b9 with SMTP id 98e67ed59e1d1-35b952c450amr4599131a91.10.1773725717343; Mon, 16 Mar 2026 22:35:17 -0700 (PDT) Received: from [10.83.99.36] ([106.192.46.228]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-35bada47123sm1607596a91.8.2026.03.16.22.35.10 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 16 Mar 2026 22:35:16 -0700 (PDT) Message-ID: <8c34f329-143e-489f-9185-04694eccaa32@oss.qualcomm.com> Date: Tue, 17 Mar 2026 11:05:08 +0530 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v1 4/4] ASoC: qcom: sc8280xp: ASoC: qcom: sc8280xp: enhance machine driver for board-specific config To: Neil Armstrong , Srinivas Kandagatla , Liam Girdwood , Mark Brown , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Jaroslav Kysela , Takashi Iwai Cc: Krzysztof Kozlowski , linux-sound@vger.kernel.org, linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org References: <20260309111300.2484262-1-mohammad.rafi.shaik@oss.qualcomm.com> <20260309111300.2484262-5-mohammad.rafi.shaik@oss.qualcomm.com> Content-Language: en-US From: Mohammad Rafi Shaik In-Reply-To: Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Proofpoint-ORIG-GUID: e-ZePCrDPCTUB_ibeatG7Vqz7CWx_8m0 X-Authority-Analysis: v=2.4 cv=aue/yCZV c=1 sm=1 tr=0 ts=69b8e816 cx=c_pps a=RP+M6JBNLl+fLTcSJhASfg==:117 a=dEIGAuP7kbcW1LL0Y9bFPw==:17 a=IkcTkHD0fZMA:10 a=Yq5XynenixoA:10 a=s4-Qcg_JpJYA:10 a=VkNPw1HP01LnGYTKEx00:22 a=u7WPNUs3qKkmUXheDGA7:22 a=eoimf2acIAo5FJnRuUoq:22 a=EUspDBNiAAAA:8 a=MeqbiXL43mTMlFCfJagA:9 a=3ZKOabzyN94A:10 a=QEXdDO2ut3YA:10 a=iS9zxrgQBfv6-_F4QbHw:22 X-Proofpoint-Spam-Details-Enc: AW1haW4tMjYwMzE3MDA0NSBTYWx0ZWRfXxpK1B+VZ9Zfk aabTxPhOI10ynAf4LQzXDxbF1bs2qBvmaKlq1Vk0r2K7a/XWZk7S+cL5QFH92g0QbHfPeqegBNN va1ROWwgPWQoHjiPBF1NGj+rGPASjHNeNHwfm/fi98ZigDSrQQmHRnLkL+oD+qFpvYmq1/vw/rf LhOhxCdR8KdPZxlNhGJAs/Q3zGeMvc4s8W6I2/6+2RQH2MA8CG4Q+hQkS4Rin3f5hbWt5gj0ymA kdNS9lzCAChw4luKGfqueFPJJnTc6CAh7vNOsJLdMiDde+C2F11TiJQUv1t6mOVJhJyw2K7XU0s M+h4d0r3jvkosOSAeBU4zFG+XNeWCaMRzhp5wRVmShv6qlmuMFuDwvtwql7dhXCiFVFPpeA9FdC kRXI3H8PvV0Tkx7HOggAmSZXwYQEqSvEfn1FRf1y0qXwuq6Ber2duK+MHtiURHgtfTLoQQf/503 70BBvinHBNlqTF8z0wA== X-Proofpoint-GUID: e-ZePCrDPCTUB_ibeatG7Vqz7CWx_8m0 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.293,Aquarius:18.0.1143,Hydra:6.1.51,FMLib:17.12.100.49 definitions=2026-03-17_01,2026-03-16_06,2025-10-01_01 X-Proofpoint-Spam-Details: rule=outbound_notspam policy=outbound score=0 spamscore=0 suspectscore=0 clxscore=1015 phishscore=0 lowpriorityscore=0 malwarescore=0 bulkscore=0 priorityscore=1501 adultscore=0 impostorscore=0 classifier=typeunknown authscore=0 authtc= authcc= route=outbound adjust=0 reason=mlx scancount=1 engine=8.22.0-2603050001 definitions=main-2603170045 On 3/10/2026 5:14 PM, Neil Armstrong wrote: > Hi, > > On 3/9/26 12:13, Mohammad Rafi Shaik wrote: >> The sc8280xp machine driver is currently written with a largely >> SoC-centric view and assumes a uniform audio topology across all boards. >> In practice, multiple products based on the same SoC use different board >> designs and external audio components, which require board-specific >> configuration to function correctly. >> >> Several Qualcomm platforms like talos integrate third-party audio codecs >> or use different external audio paths. These designs often require >> additional configuration such as explicit MI2S MCLK settings for audio >> to work. >> >> This change enhances the sc8280xp machine driver to support board- >> specific >> configuration such as allowing each board variant to provide its own DAPM >> widgets and routes, reflecting the actual audio components and connectors >> present and enabling MI2S MCLK programming for boards that use external >> codecs requiring a stable master clock. >> >> Signed-off-by: Mohammad Rafi Shaik >> --- >>   sound/soc/qcom/sc8280xp.c | 180 ++++++++++++++++++++++++++++++++++---- >>   1 file changed, 162 insertions(+), 18 deletions(-) >> >> diff --git a/sound/soc/qcom/sc8280xp.c b/sound/soc/qcom/sc8280xp.c >> index 7925aa3f6..c2e9323df 100644 >> --- a/sound/soc/qcom/sc8280xp.c >> +++ b/sound/soc/qcom/sc8280xp.c >> @@ -12,17 +12,62 @@ >>   #include >>   #include >>   #include "qdsp6/q6afe.h" >> +#include "qdsp6/q6apm.h" >> +#include "qdsp6/q6prm.h" >>   #include "common.h" >>   #include "sdw.h" >> +#define MCLK_FREQ        12288000 >> +#define MCLK_NATIVE_FREQ    11289600 > > Where does thos values come from ? > Thanks for the review, These MCLK rates are default settings in Qualcomm platforms. so hard codec thes rates > MCLK_FREQ        12288000 == 48000 * 256 > MCLK_NATIVE_FREQ    11289600 == 44100 * 256 > > This is highly specific to a board, the sdm845.c uses: > > #define DEFAULT_MCLK_RATE    24576000 == 48000 * 2 * 256 > #define MI2S_BCLK_RATE        1536000 == 48000 * 2 * 16 > > And those are the values we use to output sound on HDMI on all HDK and > Dragonboards. > > I guess this should be configurable somewhere ! > Thanks for the detailed rate calculations. I’ll consider the suggestions above and work toward a more generic and flexible approach for configuring clock rates. Best Regards, Rafi >> + >> +static struct snd_soc_dapm_widget sc8280xp_dapm_widgets[] = { >> +    SND_SOC_DAPM_HP("Headphone Jack", NULL), >> +    SND_SOC_DAPM_MIC("Mic Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP0 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP1 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP2 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP3 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP4 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP5 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP6 Jack", NULL), >> +    SND_SOC_DAPM_SPK("DP7 Jack", NULL), >> +}; >> + >> +struct snd_soc_common { >> +    char *driver_name; >> +    const struct snd_soc_dapm_widget *dapm_widgets; >> +    int num_dapm_widgets; >> +    const struct snd_soc_dapm_route *dapm_routes; >> +    int num_dapm_routes; >> +    bool mi2s_mclk_enable; >> +}; >> + >>   struct sc8280xp_snd_data { >>       bool stream_prepared[AFE_PORT_MAX]; >>       struct snd_soc_card *card; >>       struct snd_soc_jack jack; >>       struct snd_soc_jack dp_jack[8]; >> +    struct snd_soc_common *snd_soc_common_priv; >>       bool jack_setup; >>   }; >> +static inline int sc8280xp_get_mclk_feq(unsigned int rate) > >                 _freq > >> +{ >> +    int freq = MCLK_FREQ; >> + >> +    switch (rate) { >> +    case SNDRV_PCM_RATE_11025: >> +    case SNDRV_PCM_RATE_44100: >> +    case SNDRV_PCM_RATE_88200: >> +        freq = MCLK_NATIVE_FREQ; >> +        break; >> +    default: >> +        break; >> +    } >> + >> +    return freq; >> +} >> + >>   static int sc8280xp_snd_init(struct snd_soc_pcm_runtime *rtd) >>   { >>       struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd- >> >card); >> @@ -32,10 +77,6 @@ static int sc8280xp_snd_init(struct >> snd_soc_pcm_runtime *rtd) >>       int dp_pcm_id = 0; >>       switch (cpu_dai->id) { >> -    case PRIMARY_MI2S_RX...QUATERNARY_MI2S_TX: >> -    case QUINARY_MI2S_RX...QUINARY_MI2S_TX: >> -        snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP); >> -        break; >>       case WSA_CODEC_DMA_RX_0: >>       case WSA_CODEC_DMA_RX_1: >>           /* >> @@ -96,6 +137,31 @@ static int sc8280xp_be_hw_params_fixup(struct >> snd_soc_pcm_runtime *rtd, >>       return 0; >>   } >> +static int sc8280xp_snd_hw_params(struct snd_pcm_substream *substream, >> +                  struct snd_pcm_hw_params *params) >> +{ >> +    struct snd_soc_pcm_runtime *rtd = >> snd_soc_substream_to_rtd(substream); >> +    struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(rtd, 0); >> +    struct sc8280xp_snd_data *data = snd_soc_card_get_drvdata(rtd- >> >card); >> +    int mclk_freq = sc8280xp_get_mclk_feq(params_rate(params)); >> + >> +    switch (cpu_dai->id) { >> +    case PRIMARY_MI2S_RX...QUATERNARY_MI2S_TX: >> +    case QUINARY_MI2S_RX...QUINARY_MI2S_TX: >> +        snd_soc_dai_set_fmt(cpu_dai, SND_SOC_DAIFMT_BP_FP); >> + >> +        if (data->snd_soc_common_priv->mi2s_mclk_enable) >> +            snd_soc_dai_set_sysclk(cpu_dai, >> +                           LPAIF_MI2S_MCLK, mclk_freq, >> +                           SND_SOC_CLOCK_IN); >> +        break; >> +    default: >> +        break; >> +    }; >> + >> +    return 0; >> +} >> + >>   static int sc8280xp_snd_prepare(struct snd_pcm_substream *substream) >>   { >>       struct snd_soc_pcm_runtime *rtd = >> snd_soc_substream_to_rtd(substream); >> @@ -117,6 +183,7 @@ static int sc8280xp_snd_hw_free(struct >> snd_pcm_substream *substream) >>   static const struct snd_soc_ops sc8280xp_be_ops = { >>       .startup = qcom_snd_sdw_startup, >>       .shutdown = qcom_snd_sdw_shutdown, >> +    .hw_params = sc8280xp_snd_hw_params, >>       .hw_free = sc8280xp_snd_hw_free, >>       .prepare = sc8280xp_snd_prepare, >>   }; >> @@ -145,37 +212,114 @@ static int sc8280xp_platform_probe(struct >> platform_device *pdev) >>       card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); >>       if (!card) >>           return -ENOMEM; >> -    card->owner = THIS_MODULE; >> + >>       /* Allocate the private data */ >>       data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL); >>       if (!data) >>           return -ENOMEM; >> +    data->snd_soc_common_priv = (struct snd_soc_common >> *)of_device_get_match_data(dev); >> +    if (!data->snd_soc_common_priv) >> +        return -ENOMEM; >> + >> +    card->owner = THIS_MODULE; >>       card->dev = dev; >>       dev_set_drvdata(dev, card); >>       snd_soc_card_set_drvdata(card, data); >> +    card->dapm_widgets = data->snd_soc_common_priv->dapm_widgets; >> +    card->num_dapm_widgets = data->snd_soc_common_priv- >> >num_dapm_widgets; >> +    card->dapm_routes = data->snd_soc_common_priv->dapm_routes; >> +    card->num_dapm_routes = data->snd_soc_common_priv->num_dapm_routes; >> + >>       ret = qcom_snd_parse_of(card); >>       if (ret) >>           return ret; >> -    card->driver_name = of_device_get_match_data(dev); >> +    card->driver_name = data->snd_soc_common_priv->driver_name; >>       sc8280xp_add_be_ops(card); >>       return devm_snd_soc_register_card(dev, card); >>   } >> +static struct snd_soc_common kaanapali_priv_data = { >> +    .driver_name = "kaanapali", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common qcs9100_priv_data = { >> +    .driver_name = "sa8775p", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common qcs615_priv_data = { >> +    .driver_name = "qcs615", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +    .mi2s_mclk_enable = true, >> +}; >> + >> +static struct snd_soc_common qcm6490_priv_data = { >> +    .driver_name = "qcm6490", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common qcs6490_priv_data = { >> +    .driver_name = "qcs6490", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common qcs8275_priv_data = { >> +    .driver_name = "qcs8300", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common sc8280xp_priv_data = { >> +    .driver_name = "sc8280xp", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common sm8450_priv_data = { >> +    .driver_name = "sm8450", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common sm8550_priv_data = { >> +    .driver_name = "sm8550", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common sm8650_priv_data = { >> +    .driver_name = "sm8650", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >> +static struct snd_soc_common sm8750_priv_data = { >> +    .driver_name = "sm8750", >> +    .dapm_widgets = sc8280xp_dapm_widgets, >> +    .num_dapm_widgets = ARRAY_SIZE(sc8280xp_dapm_widgets), >> +}; >> + >>   static const struct of_device_id snd_sc8280xp_dt_match[] = { >> -    {.compatible = "qcom,kaanapali-sndcard", "kaanapali"}, >> -    {.compatible = "qcom,qcm6490-idp-sndcard", "qcm6490"}, >> -    {.compatible = "qcom,qcs615-sndcard", "qcs615"}, >> -    {.compatible = "qcom,qcs6490-rb3gen2-sndcard", "qcs6490"}, >> -    {.compatible = "qcom,qcs8275-sndcard", "qcs8300"}, >> -    {.compatible = "qcom,qcs9075-sndcard", "sa8775p"}, >> -    {.compatible = "qcom,qcs9100-sndcard", "sa8775p"}, >> -    {.compatible = "qcom,sc8280xp-sndcard", "sc8280xp"}, >> -    {.compatible = "qcom,sm8450-sndcard", "sm8450"}, >> -    {.compatible = "qcom,sm8550-sndcard", "sm8550"}, >> -    {.compatible = "qcom,sm8650-sndcard", "sm8650"}, >> -    {.compatible = "qcom,sm8750-sndcard", "sm8750"}, >> +    {.compatible = "qcom,kaanapali-sndcard", .data = >> &kaanapali_priv_data}, >> +    {.compatible = "qcom,qcm6490-idp-sndcard", .data = >> &qcm6490_priv_data}, >> +    {.compatible = "qcom,qcs615-sndcard", .data = &qcs615_priv_data}, >> +    {.compatible = "qcom,qcs6490-rb3gen2-sndcard", .data = >> &qcs6490_priv_data}, >> +    {.compatible = "qcom,qcs8275-sndcard", .data = &qcs8275_priv_data}, >> +    {.compatible = "qcom,qcs9075-sndcard", .data = &qcs9100_priv_data}, >> +    {.compatible = "qcom,qcs9100-sndcard", .data = &qcs9100_priv_data}, >> +    {.compatible = "qcom,sc8280xp-sndcard", .data = >> &sc8280xp_priv_data}, >> +    {.compatible = "qcom,sm8450-sndcard", .data = &sm8450_priv_data}, >> +    {.compatible = "qcom,sm8550-sndcard", .data = &sm8550_priv_data}, >> +    {.compatible = "qcom,sm8650-sndcard", .data = &sm8650_priv_data}, >> +    {.compatible = "qcom,sm8750-sndcard", .data = &sm8750_priv_data}, >>       {} >>   }; >