From patchwork Wed Jul 5 21:47:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 116455 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp2158979vqx; Wed, 5 Jul 2023 14:58:10 -0700 (PDT) X-Google-Smtp-Source: APBJJlHbr4SaMlUMhwXDsniI7WNNpErUFHLhQjFpfOVOH0/GZIKGD/E6YH7Ed9/e3yHkXwfqHijJ X-Received: by 2002:a92:1a4f:0:b0:345:b6e8:6d54 with SMTP id z15-20020a921a4f000000b00345b6e86d54mr326626ill.31.1688594290493; Wed, 05 Jul 2023 14:58:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688594290; cv=none; d=google.com; s=arc-20160816; b=SkFDnQxl7evqxI/+svM+w3PVhYObK01D+WuhVG3rmHkBxKPQ34zwt1ti2j344ghMNI L2DJWdj+B9/7ldbgXeDnHOwRZ6gox0el8vSRQ0j+OmmnF1iDwBeV3mWJE57uaTfOElde N1Xd2VD+ZJU76mGR20+Fp81oHZLPbaDpFGgOE0hdExrMD+XBT0Avfz0ErwpBXoIR/3Nx 3b9STczGDOWxj30GzwnD5kjBgKq2/VHjZROUWgD87m2smZ/uFRP2+FtzeoWmPK+Runlh 2U2X1sNK8xR9alvFetXIe4bTc6LxAWLxcaTgVg9X0mFtPHju0NYjoudmVe3GEIzydWHT Llxg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=9w3xwtSer5KurbsFI2Pu2uv8APImGMRcReZnBK5W0fo=; fh=WpwulVhbj4/4SUydfqjIitCcTK++J8QA/iGpwX/VPoo=; b=gmG2j3fnEbEDk0sbEducY5rxQYN1HUC1mHX42PqLoRdFZELh1Uc75psVZbzF3L/VRC sxm6FgxC2V1UydYmkrDPxbM4ERksCsp6RQdyY//hfz/zOh4heEYJbMtWcdXwcVa1Jly1 GeY/XbkMN7Zuwr8qoiw0zhe76lqlXiXCI7kubFsdl9gfXd0YUCLMBQL94CkaskFY3s0w pB9ZNN5aarQi7qrI62kalW4PzxRFGsK+uF24wWLOfP4wo4eZM/hXbqJ4FshR5dLyW6mi fkn4TMo+EETxJlGXWMVDQ1xLu7M9Z8J1DvStzuVW3syh9PVH4ReRD3DBRKXwPzPA7Mrk VCpA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=SQFVyoMK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id n36-20020a635924000000b0054fb23f1018si44701pgb.656.2023.07.05.14.57.56; Wed, 05 Jul 2023 14:58:10 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=SQFVyoMK; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232041AbjGEVsP (ORCPT + 99 others); Wed, 5 Jul 2023 17:48:15 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41312 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231561AbjGEVsK (ORCPT ); Wed, 5 Jul 2023 17:48:10 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id C5DAE198E for ; Wed, 5 Jul 2023 14:48:09 -0700 (PDT) Received: from localhost (unknown [188.24.137.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by madras.collabora.co.uk (Postfix) with ESMTPSA id 1874C6606F9F; Wed, 5 Jul 2023 22:48:08 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688593688; bh=VTB4I9zZ57rcfuMONYpW7VWpXed1exZT873tCPi37oM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=SQFVyoMKB0OqLynwIk63QP7mYFo2d0969SBpY7m2h/uP4rnElyu4enFCXc7tI6K/C 4o7881+ipfyOAHQS3a7GKwU1gyAFQuadTOmBxFLJr/yOiOYu7HJ6VNH2iLCf+GLzTX EuclGphI/aQfIhlLAI31lGha7xv6mLQlQL+Tesb77UFAtXASdISNpwZs7NNWZ3Zift WgmYcKhjAv0gz5WotbgEh+GlsNrQvFXRDLrFCpYvl/emtuS3ISDRl0Yvqg5n2FG6fW vrZLJb4AnrolDtfF3dSh7eghnPGABBHSXeSLIPTbnX3bBLzaJ66LG/9xsDqSIsnFnf m7GoKeB8MNZgg== From: Cristian Ciocaltea To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Syed Saba Kareem , Vijendar Mukunda , Arnd Bergmann , Randy Dunlap , Charles Keepax , Kuninori Morimoto Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, kernel@collabora.com Subject: [PATCH v3 1/3] ASoC: amd: vangogh: Make use of DRV_NAME Date: Thu, 6 Jul 2023 00:47:58 +0300 Message-ID: <20230705214800.193244-2-cristian.ciocaltea@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> References: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770619446576776922?= X-GMAIL-MSGID: =?utf-8?q?1770619446576776922?= The "acp5x_mach" string is provided for both driver name and MODULE_ALIAS. Since they need to match, ensure DRV_NAME macro is used in both locations. Signed-off-by: Cristian Ciocaltea --- sound/soc/amd/vangogh/acp5x-mach.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sound/soc/amd/vangogh/acp5x-mach.c b/sound/soc/amd/vangogh/acp5x-mach.c index e5bcd1e6eb73..5e36179cf611 100644 --- a/sound/soc/amd/vangogh/acp5x-mach.c +++ b/sound/soc/amd/vangogh/acp5x-mach.c @@ -381,7 +381,7 @@ static int acp5x_probe(struct platform_device *pdev) static struct platform_driver acp5x_mach_driver = { .driver = { - .name = "acp5x_mach", + .name = DRV_NAME, .pm = &snd_soc_pm_ops, }, .probe = acp5x_probe, From patchwork Wed Jul 5 21:47:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 116453 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp2157083vqx; Wed, 5 Jul 2023 14:52:42 -0700 (PDT) X-Google-Smtp-Source: APBJJlH7ErYIdrh+9Pb71cbPt92khWYWzsaCSyDonSLirHhdzsPnxWPXKUuFlOZXY0zsfJzXZYW5 X-Received: by 2002:a17:90b:228c:b0:263:850a:b49c with SMTP id kx12-20020a17090b228c00b00263850ab49cmr53788pjb.7.1688593961837; Wed, 05 Jul 2023 14:52:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688593961; cv=none; d=google.com; s=arc-20160816; b=t7EuGOWWb7vzOG8tSfHr0rdDbSfqkuFLaVqI3cyW6xAyIRT8hcLsry9dBLJccS7lK7 jJauOSwI7nVPmh4w4Qbes4HPzMmSVuc1zj4HquRB3avFtbhkGwuxNxxLUzs1I9Lc70V5 QgALg3qATgJ8JM3Wl/0EnsKhuvhkZXz9g4/qVmUhM9MohgjDGR07qaLU/SVFtwAFr10M CyEvLNpPnS6+QmgSZ3jFheoPyRqdKrACdkjRFJpykLmRb0m1lH3jS1W2fvhZgttwIgFg J3fqJtvAbPc7FKfyBSg8cY4SVH2AngGaupN/1olXClcsmqJDLZKlAcgAiuFXRrJCVfLw lMvg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=iN/mvD3LBn+ZNcgz0QFQ8G04Gh/3Ak+rxzrga8HVBbU=; fh=WpwulVhbj4/4SUydfqjIitCcTK++J8QA/iGpwX/VPoo=; b=kBbpgYXlSUBqDqCidteewZ8l8L5hqOPgMjoJwhZRswwClRR0feGx0xtdqksEW4RH1t yvOjEKlw0wswBEVmENTf3Nw6vBJ1kxEsy4TbtwXvm8X+Vd9j0PFpJen/9CV1UxsYL12V 0A13+8FzXabrQO5maFyOC7BdhVkIjGKLzJfQC51kL49yxk80E1c1cJ0u4SUWa01JCHEK QjUEgZhwB7EQ76MobNaF+Mfe0ia+YvXaySWM1kFK5gTy6LB8Bp0jgrZHOxSYLS3/GZ6h XY8CEglpMm2gMGmVnx/nJW1l5ID5d60+V8QvryMHOyot+j+9zCSb2pUBCDmPHbMYRCNH EUbQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=kUKURCXz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id h124-20020a636c82000000b0055764ab9ea8si30959pgc.732.2023.07.05.14.52.27; Wed, 05 Jul 2023 14:52:41 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b=kUKURCXz; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S231935AbjGEVsS (ORCPT + 99 others); Wed, 5 Jul 2023 17:48:18 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41336 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231969AbjGEVsN (ORCPT ); Wed, 5 Jul 2023 17:48:13 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5EE94198E for ; Wed, 5 Jul 2023 14:48:12 -0700 (PDT) Received: from localhost (unknown [188.24.137.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by madras.collabora.co.uk (Postfix) with ESMTPSA id 141E46600B9D; Wed, 5 Jul 2023 22:48:11 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688593691; bh=f6qzZZCqh3StcdQmbdXHhNuewxQtRotpLidUnnuRtcw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kUKURCXzesKef5UuNO0S9nrGOdxIBU6hP2l1oa6onMIafbG3Egc8uHZC2bfroH2AC VAcNc5oGV4CKaLY+wuvoIfnzEQXzIHnNJ1aGUs6MeCaCsjsEpMOXNPsQIdFsvHT5nr jpYQs2pMyCwLOWermrrdgFCWWWpFLz10bz3bRuzyi9cyjexQpbxaXXF2md3VSquE7d ZKUYBUo6JuaBBMSK5gerQBQZUb4xBoTCfdcicdX5D7OakpJMfn2bFWpZ4yHm2tDT+w arZBBc81DYeuDnj6b++imWjWnC+CzhzboY6XIQscxOOvB0rQMZ2sfpar9RHaCF3UmO qI2K/MzSduNCQ== From: Cristian Ciocaltea To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Syed Saba Kareem , Vijendar Mukunda , Arnd Bergmann , Randy Dunlap , Charles Keepax , Kuninori Morimoto Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, kernel@collabora.com Subject: [PATCH v3 2/3] ASoC: amd: vangogh: Use dmi_first_match() for DMI quirk handling Date: Thu, 6 Jul 2023 00:47:59 +0300 Message-ID: <20230705214800.193244-3-cristian.ciocaltea@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> References: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770619101877716419?= X-GMAIL-MSGID: =?utf-8?q?1770619101877716419?= In preparation for supporting ACPI probing, move DMI quirk handling logic at the probe's top, to be able to return as quickly as possible in case there is no DMI matching. Additionally, simplify the code by replacing dmi_check_system() and related callback with dmi_first_match(). While at it, also drop a few unnecessary empty lines. Signed-off-by: Cristian Ciocaltea --- sound/soc/amd/vangogh/acp5x-mach.c | 28 +++++++--------------------- 1 file changed, 7 insertions(+), 21 deletions(-) diff --git a/sound/soc/amd/vangogh/acp5x-mach.c b/sound/soc/amd/vangogh/acp5x-mach.c index 5e36179cf611..1efa8f8b77ab 100644 --- a/sound/soc/amd/vangogh/acp5x-mach.c +++ b/sound/soc/amd/vangogh/acp5x-mach.c @@ -22,7 +22,6 @@ #define DRV_NAME "acp5x_mach" #define DUAL_CHANNEL 2 -#define VG_JUPITER 1 #define ACP5X_NAU8821_BCLK 3072000 #define ACP5X_NAU8821_FREQ_OUT 12288000 #define ACP5X_NAU8821_COMP_NAME "i2c-NVTN2020:00" @@ -31,7 +30,6 @@ #define ACP5X_CS35L41_COMP_RNAME "spi-VLV1776:01" #define ACP5X_CS35L41_DAI_NAME "cs35l41-pcm" -static unsigned long acp5x_machine_id; static struct snd_soc_jack vg_headset; SND_SOC_DAILINK_DEF(platform, DAILINK_COMP_ARRAY(COMP_PLATFORM("acp5x_i2s_dma.0"))); @@ -242,7 +240,6 @@ static int acp5x_cs35l41_hw_params(struct snd_pcm_substream *substream, } return 0; - } static const struct snd_soc_ops acp5x_cs35l41_play_ops = { @@ -292,8 +289,6 @@ static struct snd_soc_dai_link acp5x_8821_35l41_dai[] = { }, }; - - static const struct snd_soc_dapm_widget acp5x_8821_35l41_widgets[] = { SND_SOC_DAPM_HP("Headphone", NULL), SND_SOC_DAPM_MIC("Headset Mic", NULL), @@ -331,16 +326,8 @@ static struct snd_soc_card acp5x_8821_35l41_card = { .num_controls = ARRAY_SIZE(acp5x_8821_controls), }; -static int acp5x_vg_quirk_cb(const struct dmi_system_id *id) -{ - acp5x_machine_id = VG_JUPITER; - - return 1; -} - static const struct dmi_system_id acp5x_vg_quirk_table[] = { { - .callback = acp5x_vg_quirk_cb, .matches = { DMI_EXACT_MATCH(DMI_BOARD_VENDOR, "Valve"), DMI_EXACT_MATCH(DMI_PRODUCT_NAME, "Jupiter"), @@ -351,23 +338,22 @@ static const struct dmi_system_id acp5x_vg_quirk_table[] = { static int acp5x_probe(struct platform_device *pdev) { + const struct dmi_system_id *dmi_id; struct acp5x_platform_info *machine; struct device *dev = &pdev->dev; struct snd_soc_card *card; int ret; + dmi_id = dmi_first_match(acp5x_vg_quirk_table); + if (!dmi_id) + return -ENODEV; + + card = &acp5x_8821_35l41_card; + machine = devm_kzalloc(dev, sizeof(*machine), GFP_KERNEL); if (!machine) return -ENOMEM; - dmi_check_system(acp5x_vg_quirk_table); - switch (acp5x_machine_id) { - case VG_JUPITER: - card = &acp5x_8821_35l41_card; - break; - default: - return -ENODEV; - } card->dev = dev; platform_set_drvdata(pdev, card); snd_soc_card_set_drvdata(card, machine); From patchwork Wed Jul 5 21:48:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Cristian Ciocaltea X-Patchwork-Id: 116452 Return-Path: Delivered-To: ouuuleilei@gmail.com Received: by 2002:a59:9f45:0:b0:3ea:f831:8777 with SMTP id v5csp2156994vqx; Wed, 5 Jul 2023 14:52:31 -0700 (PDT) X-Google-Smtp-Source: APBJJlHExwEwLDEoTV0c1gDpM4Am1lYj0T7dXEhOaVLSpMDNJhDdzYl6TWklDcxFI0KBVScNUnuj X-Received: by 2002:a17:90b:1d85:b0:262:c3b3:f8fa with SMTP id pf5-20020a17090b1d8500b00262c3b3f8famr12495397pjb.39.1688593950877; Wed, 05 Jul 2023 14:52:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1688593950; cv=none; d=google.com; s=arc-20160816; b=pcCstnyICqSjC/tJrld3ICkjOO/iCQjIAQcSIG56qqlG/YtWBejtnmEfBIXf8Xds8v JLA5z16twBsXKzW2L5wakeaxZkZNcgcEJ6HyPHNeZD7ddUwvgEtC2Mmk1BCkq4EEatw9 ctgT5BYyKBGNGTO3Fs+BpHjIoJQqVlSWV2+ZzGw3qgNJ4xjsBMPms8SHzrtKqq1sLHRR MbF97Y+O5ALASpIpPpMv+F7CNEaxUuNLGEblZqMBKs8RNDLOlC6LNnxjo5v9IW/AnBMC tZIe1VeubbLdN62owSGQbD5rVYfBr10Yr3V9lQdjPxMson15uGt/M0WqnStstDbjpqzw wTZA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from :dkim-signature; bh=wusnZXBZIRDdpplGFTIuE4kmFfaBxTGFS0BmZYphGyI=; fh=WpwulVhbj4/4SUydfqjIitCcTK++J8QA/iGpwX/VPoo=; b=uBEwZbJu1EAXFXV0/WkSqIZ1V/QD+ndUvdoS+LJZsgjKvopbwRwfA5MBiasBqvKFnK XvFeCLA38QDtpjxnd12WcBhqdWKpx1+ju2t3ewlKX6cApfFqoxFf0x9h6WXNxLeD4i2L +kDD766PZnPtQrZ2U4z2v17o1FhguI68hKztVnYO/lL88QtV5FPAnpgjJxwKs+wEKUsz J2eX/ym7sGKH5ICP2ZBNJN+29QGRb7PxB/7QVr5n/xFOFzFmJ1VaVxiUOViLcOzJnMAo torqty6QYqefg0QliggRDpGvYQIR3W4et0SyDCwFbWHpSmbE8iJkD4QqCu8Z9i9pd9kN Hhkw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="YGvTqmE/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id mi12-20020a17090b4b4c00b00262f7dccaecsi149587pjb.170.2023.07.05.14.52.14; Wed, 05 Jul 2023 14:52:30 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@collabora.com header.s=mail header.b="YGvTqmE/"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=QUARANTINE sp=QUARANTINE dis=NONE) header.from=collabora.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232244AbjGEVsZ (ORCPT + 99 others); Wed, 5 Jul 2023 17:48:25 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:41394 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232084AbjGEVsU (ORCPT ); Wed, 5 Jul 2023 17:48:20 -0400 Received: from madras.collabora.co.uk (madras.collabora.co.uk [IPv6:2a00:1098:0:82:1000:25:2eeb:e5ab]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1817919BE for ; Wed, 5 Jul 2023 14:48:15 -0700 (PDT) Received: from localhost (unknown [188.24.137.5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: cristicc) by madras.collabora.co.uk (Postfix) with ESMTPSA id A7C396606FBB; Wed, 5 Jul 2023 22:48:13 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=collabora.com; s=mail; t=1688593693; bh=qRItAJndJX1XqrEIXciz6duNiIanh49578CFIMHWANY=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=YGvTqmE/u5qJdGp+1aUK1zJwT17jhLF2quT+67kaGJImPvp7D/Oj9lSr2nwzwbmw6 aJ7FjorCBxQEv87JJ5tURZ1zUPTxdTECMKFrnQdPqLW82daO5OUgtRZyqF3V1Iuein G+lcPHFHlaGdHUhRdJZI+EboTbOJXNAL1hrTrgeFjROj3k4xaLaQg7ql2vDmkMTrMc SotRmOlm4tRbuwhCvomToXJ5onyXwimgN3EbivLapbNfW2KKF8XPe8CEj9r5xIPKXW WV2NVUFyIXYeOMbJmu3bVrRluxKbf9PmdrqUHXbAqqBaxU34thZ+O8PG76BiWXZBYL thztkmTipLW6w== From: Cristian Ciocaltea To: Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Syed Saba Kareem , Vijendar Mukunda , Arnd Bergmann , Randy Dunlap , Charles Keepax , Kuninori Morimoto Cc: alsa-devel@alsa-project.org, linux-kernel@vger.kernel.org, kernel@collabora.com Subject: [PATCH v3 3/3] ASoC: amd: vangogh: Add support for NAU8821/MAX98388 variant Date: Thu, 6 Jul 2023 00:48:00 +0300 Message-ID: <20230705214800.193244-4-cristian.ciocaltea@collabora.com> X-Mailer: git-send-email 2.41.0 In-Reply-To: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> References: <20230705214800.193244-1-cristian.ciocaltea@collabora.com> MIME-Version: 1.0 X-Spam-Status: No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,SPF_HELO_NONE,SPF_PASS, T_SCC_BODY_TEXT_LINE,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org X-getmail-retrieved-from-mailbox: =?utf-8?q?INBOX?= X-GMAIL-THRID: =?utf-8?q?1770619090619921093?= X-GMAIL-MSGID: =?utf-8?q?1770619090619921093?= Extend the Vangogh machine driver to support a variant based on the Nuvoton NAU88L21 Codec and the Analog Devices MAX98388 Speaker Amplifier. Additionally, enable probing via ACPI match table for this and future hardware revisions. Co-developed-by: Lucas Tanure Signed-off-by: Lucas Tanure Signed-off-by: Cristian Ciocaltea --- sound/soc/amd/Kconfig | 5 +- sound/soc/amd/vangogh/acp5x-mach.c | 137 +++++++++++++++++++++++++++-- 2 files changed, 132 insertions(+), 10 deletions(-) diff --git a/sound/soc/amd/Kconfig b/sound/soc/amd/Kconfig index 1dd8579e8034..273688c05317 100644 --- a/sound/soc/amd/Kconfig +++ b/sound/soc/amd/Kconfig @@ -79,14 +79,15 @@ config SND_SOC_AMD_ACP5x ACP DMA driver, CPU DAI driver. config SND_SOC_AMD_VANGOGH_MACH - tristate "AMD Vangogh support for NAU8821 CS35L41" + tristate "AMD Vangogh support for NAU8821/CS35L41/MAX98388" select SND_SOC_NAU8821 select SND_SOC_CS35L41_SPI + select SND_SOC_MAX98388 select SND_AMD_ACP_CONFIG depends on SND_SOC_AMD_ACP5x && I2C && SPI_MASTER help This option enables machine driver for Vangogh platform - using NAU8821 and CS35L41 codecs. + using NAU8821 and either CS35L41 or MAX98388 codecs. Say m if you have such a device. If unsure select "N". diff --git a/sound/soc/amd/vangogh/acp5x-mach.c b/sound/soc/amd/vangogh/acp5x-mach.c index 1efa8f8b77ab..125a8e93478d 100644 --- a/sound/soc/amd/vangogh/acp5x-mach.c +++ b/sound/soc/amd/vangogh/acp5x-mach.c @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0+ /* - * Machine driver for AMD Vangogh platform using NAU8821 & CS35L41 - * codecs. + * Machine driver for AMD Vangogh platform using either + * NAU8821 & CS35L41 or NAU8821 & MAX98388 codecs. * * Copyright 2021 Advanced Micro Devices, Inc. */ @@ -29,6 +29,9 @@ #define ACP5X_CS35L41_COMP_LNAME "spi-VLV1776:00" #define ACP5X_CS35L41_COMP_RNAME "spi-VLV1776:01" #define ACP5X_CS35L41_DAI_NAME "cs35l41-pcm" +#define ACP5X_MAX98388_COMP_LNAME "i2c-ADS8388:00" +#define ACP5X_MAX98388_COMP_RNAME "i2c-ADS8388:01" +#define ACP5X_MAX98388_DAI_NAME "max98388-aif1" static struct snd_soc_jack vg_headset; @@ -326,6 +329,108 @@ static struct snd_soc_card acp5x_8821_35l41_card = { .num_controls = ARRAY_SIZE(acp5x_8821_controls), }; +static int acp5x_max98388_startup(struct snd_pcm_substream *substream) +{ + struct snd_soc_pcm_runtime *rtd = asoc_substream_to_rtd(substream); + struct acp5x_platform_info *machine = snd_soc_card_get_drvdata(rtd->card); + struct snd_pcm_runtime *runtime = substream->runtime; + + machine->play_i2s_instance = I2S_HS_INSTANCE; + + runtime->hw.channels_max = DUAL_CHANNEL; + snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS, + &constraints_channels); + snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, + &constraints_rates); + return 0; +} + +static const struct snd_soc_ops acp5x_max98388_play_ops = { + .startup = acp5x_max98388_startup, +}; + +static struct snd_soc_codec_conf acp5x_max98388_conf[] = { + { + .dlc = COMP_CODEC_CONF(ACP5X_MAX98388_COMP_LNAME), + .name_prefix = "Left", + }, + { + .dlc = COMP_CODEC_CONF(ACP5X_MAX98388_COMP_RNAME), + .name_prefix = "Right", + }, +}; + +SND_SOC_DAILINK_DEF(max98388, DAILINK_COMP_ARRAY(COMP_CODEC(ACP5X_MAX98388_COMP_LNAME, + ACP5X_MAX98388_DAI_NAME), + COMP_CODEC(ACP5X_MAX98388_COMP_RNAME, + ACP5X_MAX98388_DAI_NAME))); + +static struct snd_soc_dai_link acp5x_8821_98388_dai[] = { + { + .name = "acp5x-8821-play", + .stream_name = "Playback/Capture", + .dai_fmt = SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBC_CFC, + .dpcm_playback = 1, + .dpcm_capture = 1, + .ops = &acp5x_8821_ops, + .init = acp5x_8821_init, + SND_SOC_DAILINK_REG(acp5x_i2s, nau8821, platform), + }, + { + .name = "acp5x-max98388-play", + .stream_name = "MAX98388 Playback", + .dai_fmt = SND_SOC_DAIFMT_I2S | + SND_SOC_DAIFMT_NB_NF | + SND_SOC_DAIFMT_CBC_CFC, + .dpcm_playback = 1, + .playback_only = 1, + .ops = &acp5x_max98388_play_ops, + SND_SOC_DAILINK_REG(acp5x_bt, max98388, platform), + }, +}; + +static const struct snd_soc_dapm_widget acp5x_8821_98388_widgets[] = { + SND_SOC_DAPM_HP("Headphone", NULL), + SND_SOC_DAPM_MIC("Headset Mic", NULL), + SND_SOC_DAPM_MIC("Int Mic", NULL), + SND_SOC_DAPM_SUPPLY("Platform Clock", SND_SOC_NOPM, 0, 0, + platform_clock_control, + SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMD), + SND_SOC_DAPM_SPK("SPK", NULL), +}; + +static const struct snd_soc_dapm_route acp5x_8821_98388_route[] = { + { "Headphone", NULL, "HPOL" }, + { "Headphone", NULL, "HPOR" }, + { "MICL", NULL, "Headset Mic" }, + { "MICR", NULL, "Headset Mic" }, + { "DMIC", NULL, "Int Mic" }, + + { "Headphone", NULL, "Platform Clock" }, + { "Headset Mic", NULL, "Platform Clock" }, + { "Int Mic", NULL, "Platform Clock" }, + + { "SPK", NULL, "Left BE_OUT" }, + { "SPK", NULL, "Right BE_OUT" }, +}; + +static struct snd_soc_card acp5x_8821_98388_card = { + .name = "acp5x-max98388", + .owner = THIS_MODULE, + .dai_link = acp5x_8821_98388_dai, + .num_links = ARRAY_SIZE(acp5x_8821_98388_dai), + .dapm_widgets = acp5x_8821_98388_widgets, + .num_dapm_widgets = ARRAY_SIZE(acp5x_8821_98388_widgets), + .dapm_routes = acp5x_8821_98388_route, + .num_dapm_routes = ARRAY_SIZE(acp5x_8821_98388_route), + .codec_conf = acp5x_max98388_conf, + .num_configs = ARRAY_SIZE(acp5x_max98388_conf), + .controls = acp5x_8821_controls, + .num_controls = ARRAY_SIZE(acp5x_8821_controls), +}; + static const struct dmi_system_id acp5x_vg_quirk_table[] = { { .matches = { @@ -344,11 +449,20 @@ static int acp5x_probe(struct platform_device *pdev) struct snd_soc_card *card; int ret; - dmi_id = dmi_first_match(acp5x_vg_quirk_table); - if (!dmi_id) - return -ENODEV; - - card = &acp5x_8821_35l41_card; + card = (struct snd_soc_card *)device_get_match_data(dev); + if (!card) { + /* + * This is normally the result of directly probing the driver + * in pci-acp5x through platform_device_register_full(), which + * is necessary for the CS35L41 variant, as it doesn't support + * ACPI probing and relies on DMI quirks. + */ + dmi_id = dmi_first_match(acp5x_vg_quirk_table); + if (!dmi_id) + return -ENODEV; + + card = &acp5x_8821_35l41_card; + } machine = devm_kzalloc(dev, sizeof(*machine), GFP_KERNEL); if (!machine) @@ -365,10 +479,17 @@ static int acp5x_probe(struct platform_device *pdev) return 0; } +static const struct acpi_device_id acp5x_acpi_match[] = { + { "AMDI8821", (kernel_ulong_t)&acp5x_8821_98388_card }, + {}, +}; +MODULE_DEVICE_TABLE(acpi, acp5x_acpi_match); + static struct platform_driver acp5x_mach_driver = { .driver = { .name = DRV_NAME, .pm = &snd_soc_pm_ops, + .acpi_match_table = acp5x_acpi_match, }, .probe = acp5x_probe, }; @@ -376,6 +497,6 @@ static struct platform_driver acp5x_mach_driver = { module_platform_driver(acp5x_mach_driver); MODULE_AUTHOR("Vijendar.Mukunda@amd.com"); -MODULE_DESCRIPTION("NAU8821 & CS35L41 audio support"); +MODULE_DESCRIPTION("NAU8821/CS35L41 & NAU8821/MAX98388 audio support"); MODULE_LICENSE("GPL v2"); MODULE_ALIAS("platform:" DRV_NAME);