From nobody Sun Feb 8 19:43:51 2026 Received: from NAM02-SN1-obe.outbound.protection.outlook.com (mail-sn1nam02on2085.outbound.protection.outlook.com [40.107.96.85]) (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 A82156A022; Fri, 23 Aug 2024 05:38:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.96.85 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724391487; cv=fail; b=ZGNXDSXYlO3J0Pt3u2wvqO81jM2XAI+XPgqk/6b6ppb66r1NuzV2s+tPKbcfzNxJulwG2D+7QJCTbngug3zI+C2m9D+dnQ2VG4+zuWgVJAKw5IiWhahZKAJC649K+Y5Zs8Cn5tgSTU5P7fUsxvIHzbOO+Q4H3OMkGpI0LitWchk= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724391487; c=relaxed/simple; bh=P0Bdcst8p2nw/ncrcmKltOQTPCu4aJBAPAaUoE1G/zo=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=ps/5BhfhQIw+JCfy84UiuZVZkBumxQX/04qZQ8q3d2E4Uw83jGk1pPg+YWAwRlCSC3xKSGtrIzpwOI+hWpDVkXloPBADXBUFzA019FuqUMjeoamPlBtG6R5wcgkutqjsK9Q2n6umVrk+Eadp1NVXbQZpP0ufcX/Zh8oq9ZpbAaU= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=kpsJdCL2; arc=fail smtp.client-ip=40.107.96.85 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="kpsJdCL2" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=XqfebEte7wXTdglBZy3lpJysKxvRD9FNUnJ/qY9L37RxxG1hURvfuM1TdYQwC0etskxtM4RUzt21tJ4mjeT0C7UdwFDlnN7c+LJoQ5ycoE5ZhXB9S++juj1IY/r/ACCOHrfiEV1ewh8BblY0F9KewZujnG2igdPWSyb6iHWeIy4/M+6ZqO/7iwQi2MKyp6DRgh4e3ezgSNugOgrI2wr56z48LR8EUQtlu6ZHJjzJFbjkqS7WrnFAHhmkh/lGtIz314NcMcI0oGhzGYym2tE2iGpZgDKhB03pq7weG8rsEB2Ibe800rEq74wlFGJgAjRs5L6V3De2b1LG/cjH4Q0cPA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=978e2Me1bEWj0aLvpE+XMR6RZxVvDH4yH0+7IXF5FvA=; b=OmjKXpmwskTgMo/iF2l1CHu1cCAMz6dW8/F1X/eSzDJvIDBnveJCUshi9kuOY/nB+rWfjhqhMwEnq74SV3OwszB8Xa8NPbmXJpnfQm8wIoUU5BbokL/luvyon/vPy1xp2sfmbW8NnVTL3TlFRBagv2CroPAZYGBoIHI3EHYjJWvYMKtzYLigm07U14WOLqQ3u564MRp3DXlETclYjfNUhx3QPy8o+gSYE3wWuPdRHL7+2607Lo61WMGGBd4nMVi22aNu8CBnU4HJ+nzS2RHVWZhRCCM+THScStMfu3VKSW5TTELdTPzegVGygjMAuD/3KMOBkMwgASPj8SHaEuwsug== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=978e2Me1bEWj0aLvpE+XMR6RZxVvDH4yH0+7IXF5FvA=; b=kpsJdCL2iT0gf5uq5AvqQEBOivLNZ4nfwXTjCmmhlLSUzCDHtN8tBbIuFHpnQMUZRsQ/T21WYskT0jnnYzOwk4Wes5qhQLB80gzed4z1wKSPZ0GC+qcHltiZE9TzoDm3fNIWaKiH9TQcplG8qQGoo4FLwTR6n220Qi8+HcTYmzA= Received: from SN1PR12CA0076.namprd12.prod.outlook.com (2603:10b6:802:20::47) by IA1PR12MB8465.namprd12.prod.outlook.com (2603:10b6:208:457::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21; Fri, 23 Aug 2024 05:38:01 +0000 Received: from SA2PEPF00003AE5.namprd02.prod.outlook.com (2603:10b6:802:20:cafe::78) by SN1PR12CA0076.outlook.office365.com (2603:10b6:802:20::47) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.21 via Frontend Transport; Fri, 23 Aug 2024 05:38:01 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00003AE5.mail.protection.outlook.com (10.167.248.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7897.11 via Frontend Transport; Fri, 23 Aug 2024 05:38:01 +0000 Received: from vijendar-X570-GAMING-X.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 23 Aug 2024 00:37:56 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 1/2] ASoC: amd: Add acpi machine id for acp7.0 version based platform Date: Fri, 23 Aug 2024 11:07:38 +0530 Message-ID: <20240823053739.465187-2-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240823053739.465187-1-Vijendar.Mukunda@amd.com> References: <20240823053739.465187-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AE5:EE_|IA1PR12MB8465:EE_ X-MS-Office365-Filtering-Correlation-Id: 38c2b256-e178-418a-ec64-08dcc335c09c X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|1800799024|7416014|376014|36860700013|82310400026; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?c0DYTjI3o//wB8tQHUyNTnA13WcJNggNYD5XhNPPV/yhVVY9d2+XnsMfU2c0?= =?us-ascii?Q?k3pSzH1GgIeL6pWCDbtWUPBJUi8XDaQH9wIGEQ3h+VG/bEn9SX9NC1jfGX+g?= =?us-ascii?Q?qsWE2X5ujgiIVjkEkGJg6EttDJxs/XDfJxo7s5ZDCg7sHL1Brku4bU3yWtIJ?= =?us-ascii?Q?abgng2OeOubjIxlELhnjm3PFtxXHLRIgx2f+JYSH44T5NBYTgMDZZm/C2WJi?= =?us-ascii?Q?9kEzEx8caVVW2cOZCy2KhjwWWCz6D+ZFmnkjmKd+vD7TG4OVlj+3RvhWGWF/?= =?us-ascii?Q?nc0OnMpmWHktTHS+oE9ywCKA6+zt5HF2rL3p5sL4JCXc3YGxd2WDJXjEF3CQ?= =?us-ascii?Q?/M9Iyo+7L4dG1w1CZJjOqfWl9xT96BAiFlnJ8LLgJwpU1D3PdGJ/DF5+QBYE?= =?us-ascii?Q?JvBLzfrPwEkUwxhTjBk3DwQfXD78z2dZo6T6ArTKIwIUzIZlqbPlYAZd4NZd?= =?us-ascii?Q?bH6NXt0TMt7EyTnfazIf1lwRBWsOpmydPTlI8jym1TdovL91hgav3YSqNvgc?= =?us-ascii?Q?uyEbkTgFPXTBDi4w0tGQLJwiyhkdbBBHZFf+/RcHaMuofn9/+DzrWiFtHu6U?= =?us-ascii?Q?W10k4i95wWfTAcCzFXx3r9RgTy4ndFZC0jps1WTwpF7oT3EIYO4bFfXkImyW?= =?us-ascii?Q?1SLCNT8KhTp5b5050sPuYdMBJDOaDtF3hieWpxVrWmLnNwVi66ezct5GKzoK?= =?us-ascii?Q?uteUF7V/xJoKS2E/CMNMnEfLxWfFqVAbHKgW1RQ3JrJTZHjCbHk0WGPK4nNP?= =?us-ascii?Q?sCCyXKdUFX/in/nsd8Cx7rXLdeyMkjsFLlflkkgn70NPtf9IKpIR0pjfvZRJ?= =?us-ascii?Q?j6z7PVKEshd1msSo9taq2TDZDPfj1/cfmLTIdQ65MkneXnr34rpbMug+cbU2?= =?us-ascii?Q?OVziVs85PTuA6ffv1JTuy7c19dDqWtymkZTDDv+nRZasRKSFMIhsSc3YT7yw?= =?us-ascii?Q?sNBpdNDdeEQCocMu5cX7DUC3CVMsZ3hiHDlOvQ23FV9WjDKAO7BDvVb1SsgY?= =?us-ascii?Q?lRKDTrFYWO+FLAdb+WFXQokmwAqqQGG8OhDwK7PgZYIfA/B41eKyEc5Cglrq?= =?us-ascii?Q?pF1POf3xNa/Pb16DvrfPzWzH6iSJ4/hXyt2PFHdM7u0GS3/+2qg5tNd54s4K?= =?us-ascii?Q?jem5bVAzCuyZI0s3okd7d4c4f+F95CP6ogs4n26CR+5/vkwftzw8F93c/S1T?= =?us-ascii?Q?8+kcmetsb8VqldKjgZhKCzfVZgOI/2ayr5a/zzjYYcKqMp0MW+A4SBi9WgZu?= =?us-ascii?Q?kiAkvuAKmeYr5a5tXw4RItM9oRdzS1tWO6a0CMW05DNactZz1glQ1I5mZZQU?= =?us-ascii?Q?K9UQ7yg3ReAguKJpcvQ/RXWySLZ+36lAkuMOJVP/c4xWTHPy5/EbnMlrfIx/?= =?us-ascii?Q?nApOLLoTZKGz2tRC/rHhRd9UTfM0+3tdQQMTBwPSGX9kLoiU2DQZdJBIja85?= =?us-ascii?Q?Hi63NdA45injmDaWCgKtevHtBEzlJRIF?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(1800799024)(7416014)(376014)(36860700013)(82310400026);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2024 05:38:01.1022 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 38c2b256-e178-418a-ec64-08dcc335c09c X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AE5.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: IA1PR12MB8465 Content-Type: text/plain; charset="utf-8" Add acpi machine id for ACP7.0 version based platform and configure driver data to enable SOF sound card support on newer boards. Signed-off-by: Vijendar Mukunda Reviewed-by: Pierre-Louis Bossart --- sound/soc/amd/acp-config.c | 12 ++++++++++++ sound/soc/amd/mach-config.h | 1 + 2 files changed, 13 insertions(+) diff --git a/sound/soc/amd/acp-config.c b/sound/soc/amd/acp-config.c index 42c2322cd11b..365209ea53f3 100644 --- a/sound/soc/amd/acp-config.c +++ b/sound/soc/amd/acp-config.c @@ -321,5 +321,17 @@ struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sof_ma= chines[] =3D { }; EXPORT_SYMBOL(snd_soc_acpi_amd_acp63_sof_machines); =20 +struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sof_machines[] =3D { + { + .id =3D "AMDI1010", + .drv_name =3D "acp70-dsp", + .pdata =3D &acp_quirk_data, + .fw_filename =3D "sof-acp_7_0.ri", + .sof_tplg_filename =3D "sof-acp_7_0.tplg", + }, + {}, +}; +EXPORT_SYMBOL(snd_soc_acpi_amd_acp70_sof_machines); + MODULE_DESCRIPTION("AMD ACP Machine Configuration Module"); MODULE_LICENSE("Dual BSD/GPL"); diff --git a/sound/soc/amd/mach-config.h b/sound/soc/amd/mach-config.h index 32aa8a6931f4..1a967da35a0f 100644 --- a/sound/soc/amd/mach-config.h +++ b/sound/soc/amd/mach-config.h @@ -24,6 +24,7 @@ extern struct snd_soc_acpi_mach snd_soc_acpi_amd_rmb_sof_= machines[]; extern struct snd_soc_acpi_mach snd_soc_acpi_amd_vangogh_sof_machines[]; extern struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sof_machines[]; extern struct snd_soc_acpi_mach snd_soc_acpi_amd_acp63_sof_sdw_machines[]; +extern struct snd_soc_acpi_mach snd_soc_acpi_amd_acp70_sof_machines[]; =20 struct config_entry { u32 flags; --=20 2.34.1 From nobody Sun Feb 8 19:43:51 2026 Received: from NAM02-BN1-obe.outbound.protection.outlook.com (mail-bn1nam02on2045.outbound.protection.outlook.com [40.107.212.45]) (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 937E65464B; Fri, 23 Aug 2024 05:38:12 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=40.107.212.45 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724391494; cv=fail; b=f2+h1fdPgKpHfGYXJjQCXFGUaleCwE+zHIyZqP3Gvo+NkCSTuAAE+BsLipfx1W6hQ+svwoNEzdS0IcXPQADFHNCulqX3z/5lwQ7dy3UeGZOE+rdTwC3wT8BSJk1K60MlnxJWc/OVx6WyCh03WUCNNNFC9JDQu3WY9dqGOT+cSR4= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1724391494; c=relaxed/simple; bh=WEaDXHftBt4sm6RBlPAoff3uOV1LE6Q4wmgy90y2hTk=; h=From:To:CC:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version:Content-Type; b=azzg+eqsN1EUcr/Xxc1T359BS+VN7MqdFOTZMd2uFfCIMe7cTsUE6BjIOtspkL8FrcPAPqFDIRiNvKHu4mR5EPIA13UXGcfp28gHUqMI/MeVkd8tbiwoD8JuVzl5wHpRaI6OLEJqf7CodTmhBxTfbbGwA4Zws5SCR+mb9tntjzY= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com; spf=fail smtp.mailfrom=amd.com; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b=3+XFJbpg; arc=fail smtp.client-ip=40.107.212.45 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=quarantine dis=none) header.from=amd.com Authentication-Results: smtp.subspace.kernel.org; spf=fail smtp.mailfrom=amd.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=amd.com header.i=@amd.com header.b="3+XFJbpg" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=bJFoQWWLdkxnwzhGADl5SHFZ0ANvhT/RHudsuMV8kgG2sfUd4BlZAUkZd2148pRlEb+nkE5fqMZn+DDNtvN3eLqXVoa/axWTvdXYU0mL/R60zXdOtiRmfmi9t1kWg243Iwg4LOimxmwR5WAu2elSpZK5aHjMr9xWI69D4NQgBHpL3woXSC7JLnXa2QSLVlejZgb0LGirQJFHEJ6qJhuOab0TkBYI/dSR5850qUDepaPpfUoZPIR4IkhBFPRbJq0dwvR71jtRWT81xCtEXhcCIiyz/wuY1vClBUVx5x5Dn1chlOnGqUiMuj4cRSt4lZAvWfOMCUFGgXFJubA+4IE5PA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=HUa7z1jgHiHN26iUpg5YVrEphLcl1ccNFJtwm4zja3o=; b=b8EjH679iDUd4FXZ/t6V/DQQxNi1vkoYiMQjAQtZjn4PFkUu7PL2wZSsyGGxCBNkjyGdQsf1F17lmAVNJhuOpr6BH7gMTmEo8XP3KPnKAUOlkv4uqLwEL9HltiytlJ1jPEj0jVkdR1Yn2UBt3fmQV8lekmgn38GRPbJdO1zRwrMGhqRW1ld84qaHpeBe2KPbrVY/nQCzGefK1u/2G5SWevlTiTSTjuJE9vjJvhVTyofgxSu2auwlt4ZWHyj3SCRIHD2+l3GosfUIVIeDnji8J9XKMvJ6dq+gGo7neftdmuB8yD5OHcXZ1Evj1DgVYE5RhS6N6MDVJ6i9gLBOvSyXBA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass (sender ip is 165.204.84.17) smtp.rcpttodomain=kernel.org smtp.mailfrom=amd.com; dmarc=pass (p=quarantine sp=quarantine pct=100) action=none header.from=amd.com; dkim=none (message not signed); arc=none (0) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=amd.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=HUa7z1jgHiHN26iUpg5YVrEphLcl1ccNFJtwm4zja3o=; b=3+XFJbpgtvwprGqB0Nv78VcjuYk/uUcy8fZJ9OcIs9OykjTF8PPW0kNNm+tUCv14JCI5kzNEaGC3U2/LGWsjX6SPJMt9ouiK+yFvfKjUkJL39ojVBxdJ4vFNseB+QtmtrE10u89xlEC31rZhFD0E6masp8FVyMhiqugLeZpmcS0= Received: from SN1PR12CA0072.namprd12.prod.outlook.com (2603:10b6:802:20::43) by DM4PR12MB7599.namprd12.prod.outlook.com (2603:10b6:8:109::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7875.29; Fri, 23 Aug 2024 05:38:06 +0000 Received: from SA2PEPF00003AE5.namprd02.prod.outlook.com (2603:10b6:802:20:cafe::3a) by SN1PR12CA0072.outlook.office365.com (2603:10b6:802:20::43) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7897.16 via Frontend Transport; Fri, 23 Aug 2024 05:38:06 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; dkim=none (message not signed) header.d=none;dmarc=pass action=none header.from=amd.com; Received-SPF: Pass (protection.outlook.com: domain of amd.com designates 165.204.84.17 as permitted sender) receiver=protection.outlook.com; client-ip=165.204.84.17; helo=SATLEXMB04.amd.com; pr=C Received: from SATLEXMB04.amd.com (165.204.84.17) by SA2PEPF00003AE5.mail.protection.outlook.com (10.167.248.5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.20.7897.11 via Frontend Transport; Fri, 23 Aug 2024 05:38:06 +0000 Received: from vijendar-X570-GAMING-X.amd.com (10.180.168.240) by SATLEXMB04.amd.com (10.181.40.145) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2507.39; Fri, 23 Aug 2024 00:38:00 -0500 From: Vijendar Mukunda To: CC: , , , , , , , , , , , , , "Vijendar Mukunda" Subject: [PATCH 2/2] ASoC: SOF: amd: add support for acp7.0 based platform Date: Fri, 23 Aug 2024 11:07:39 +0530 Message-ID: <20240823053739.465187-3-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240823053739.465187-1-Vijendar.Mukunda@amd.com> References: <20240823053739.465187-1-Vijendar.Mukunda@amd.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable X-ClientProxiedBy: SATLEXMB03.amd.com (10.181.40.144) To SATLEXMB04.amd.com (10.181.40.145) X-EOPAttributedMessage: 0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: SA2PEPF00003AE5:EE_|DM4PR12MB7599:EE_ X-MS-Office365-Filtering-Correlation-Id: d053897a-c272-465e-6542-08dcc335c3c0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|82310400026|376014|7416014|36860700013|1800799024; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?XkrTYV6rz3BsQ819vAUF9CpvH+m4U9P1SRkTsU8C/5MbP0KZ3yM5Vj8TS8wu?= =?us-ascii?Q?98kNSE8+q8ZEhvowrMXSIepMZvoEJTjQu6nq9thoRm09ujd93PTq/RT1tMjs?= =?us-ascii?Q?LcdKOlX0ZANzzN9EFmRRDM1Zyf7aIP8H6DS/E/T5jEKwaYWmzUQQGZ26WHBA?= =?us-ascii?Q?8zFenrLwX4RUSQP4Xm4GBF3ZDAnSwWjRx1+x7mTUir4mRSTu/Se9aUQ1++BY?= =?us-ascii?Q?PmgouCP/jXyWxGoFAaLkw3Q9MREZ5DZKvLGDgrRQxuxySDn9ewZocTHWeAXN?= =?us-ascii?Q?R/Fu2kd8UYtMuSEnHUzHbikdQrOz5C9BmPRKP22S2m3MspjS98a4F/yaHB7+?= =?us-ascii?Q?BI1HpgGqbrJ5R0dR7TUNnAPjlEtIeYs6E0n0kEV5JsxbTkW0o6TMMV69ll7X?= =?us-ascii?Q?RGN2d4dtxqu0GT+6YtVWBZmZJ45Fu3dAcUAhCf/JRyhgTwa7uGemcosfOy1q?= =?us-ascii?Q?btLpG5IArIR+h0MAw6+K2hnN4uT6oOilSkRhCxbTz3eieFWC4lT52MjWs66b?= =?us-ascii?Q?H4c7MLmymozmCADZmj9nSzZOgw4GnTqg9QTyueTZ1jbCTC0l3i0xvZ+i4Cs7?= =?us-ascii?Q?txlFMFhvDTKaN0Qkgk9vXQ+tnuR8UK1ut1L8Ct3tjD7oeWNRXLHrz8zRGtDy?= =?us-ascii?Q?2ys3KfqOnIQMTYD5a9vpxFmYB/4cFkKNPkcI+f26ZTOwc/Y3X6svI3Rcjt4B?= =?us-ascii?Q?Qx9GSWQjQoemFB/D2DuMa12qLONhfhY3xMsCDkMKq2/QFroneF9CmLZGrr7u?= =?us-ascii?Q?pDfXS4e2Jx7UCtv1xB8Z7/FWkj5MkHghcFaBUdQZpzKZyaALB0Cum6guHJod?= =?us-ascii?Q?TTHG3Q3cuPV7MM3mNLbo+5Cg2e6NOLYZeXZ4IeKxnWY6pufdn0QMu0wH1F8R?= =?us-ascii?Q?c5Cii1G6/KoxpAJNHCqR5n80hE1VSZUkhRjHxOlYL9kRAUZ6AReKTToTJno0?= =?us-ascii?Q?ZSxxxplUIc+ezUdyPN1aWElyEfZ5Wb9098PJl8kqTnl3TdP20QeHd61Lo/9n?= =?us-ascii?Q?UgiNik8if2JmwJ9HLQSBHwmUazvMbrf0hT/kCI2ZzHiwWS+GLSrzzrjoof38?= =?us-ascii?Q?2waBNFN6NSV3dAEttM7r9vITqEKGXtbYZ2ToLlkrpb68IRHGt/aGKC/izmpD?= =?us-ascii?Q?mdMn14rTMb5p3ilEzIR2bCzSPte6/dNuBNlTcd1tiUsRvFZqGLxNRE9stFKO?= =?us-ascii?Q?o8hmZbpShZZdwuJwp87aQd+sU/qHCHlVootADz4vluJ1kX/ZADx92n/V83Ak?= =?us-ascii?Q?s7+nchAkQ7t8sgVC/YBuVnac8Ojr0UOh2CAAuE8mH9ujLqyb5Lr5OFj8C3Yg?= =?us-ascii?Q?7R+VNF3FFAS6dCX7/GnuB2xxZASnlcaUT6zHipvXxNKUuqU7so9r0j7pcmsH?= =?us-ascii?Q?XxmWGm0jNIwKA7EkLQzKPE4/IzmXvOM7N4H4FIxcvbTJ7N+aFVJNVi490nEe?= =?us-ascii?Q?D2dJUx/MV48j3M8axRk3bWYD+upERKTg?= X-Forefront-Antispam-Report: CIP:165.204.84.17;CTRY:US;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:SATLEXMB04.amd.com;PTR:InfoDomainNonexistent;CAT:NONE;SFS:(13230040)(82310400026)(376014)(7416014)(36860700013)(1800799024);DIR:OUT;SFP:1101; X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Aug 2024 05:38:06.3679 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: d053897a-c272-465e-6542-08dcc335c3c0 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXMB04.amd.com] X-MS-Exchange-CrossTenant-AuthSource: SA2PEPF00003AE5.namprd02.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM4PR12MB7599 Content-Type: text/plain; charset="utf-8" Add SOF support for ACP7.0 version based platform. Signed-off-by: Vijendar Mukunda Reviewed-by: Pierre-Louis Bossart --- sound/soc/sof/amd/Kconfig | 10 ++ sound/soc/sof/amd/Makefile | 4 +- sound/soc/sof/amd/acp-dsp-offset.h | 24 ++++- sound/soc/sof/amd/acp.c | 65 ++++++++++--- sound/soc/sof/amd/acp.h | 9 ++ sound/soc/sof/amd/acp70.c | 142 +++++++++++++++++++++++++++++ sound/soc/sof/amd/pci-acp70.c | 112 +++++++++++++++++++++++ 7 files changed, 352 insertions(+), 14 deletions(-) create mode 100644 sound/soc/sof/amd/acp70.c create mode 100644 sound/soc/sof/amd/pci-acp70.c diff --git a/sound/soc/sof/amd/Kconfig b/sound/soc/sof/amd/Kconfig index 848c031ed5fb..f4cafe801017 100644 --- a/sound/soc/sof/amd/Kconfig +++ b/sound/soc/sof/amd/Kconfig @@ -88,4 +88,14 @@ config SND_SOC_SOF_AMD_ACP63 AMD ACP6.3 version based platforms. Say Y if you want to enable SOF on ACP6.3 based platform. If unsure select "N". + +config SND_SOC_SOF_AMD_ACP70 + tristate "SOF support for ACP7.0 platform" + depends on SND_SOC_SOF_PCI + select SND_SOC_SOF_AMD_COMMON + help + Select this option for SOF support on + AMD ACP7.0 version based platforms. + Say Y if you want to enable SOF on ACP7.0 based platform. + endif diff --git a/sound/soc/sof/amd/Makefile b/sound/soc/sof/amd/Makefile index 63fe0d55fd0e..6ae39fd5a836 100644 --- a/sound/soc/sof/amd/Makefile +++ b/sound/soc/sof/amd/Makefile @@ -2,7 +2,7 @@ # This file is provided under a dual BSD/GPLv2 license. When using or # redistributing this file, you may do so under either license. # -# Copyright(c) 2021, 2023 Advanced Micro Devices, Inc. All rights reserved. +# Copyright(c) 2021, 2023, 2024 Advanced Micro Devices, Inc. All rights re= served. =20 snd-sof-amd-acp-y :=3D acp.o acp-loader.o acp-ipc.o acp-pcm.o acp-stream.o= acp-trace.o acp-common.o snd-sof-amd-acp-$(CONFIG_SND_SOC_SOF_ACP_PROBES) +=3D acp-probes.o @@ -10,9 +10,11 @@ snd-sof-amd-renoir-y :=3D pci-rn.o renoir.o snd-sof-amd-rembrandt-y :=3D pci-rmb.o rembrandt.o snd-sof-amd-vangogh-y :=3D pci-vangogh.o vangogh.o snd-sof-amd-acp63-y :=3D pci-acp63.o acp63.o +snd-sof-amd-acp70-y :=3D pci-acp70.o acp70.o =20 obj-$(CONFIG_SND_SOC_SOF_AMD_COMMON) +=3D snd-sof-amd-acp.o obj-$(CONFIG_SND_SOC_SOF_AMD_RENOIR) +=3D snd-sof-amd-renoir.o obj-$(CONFIG_SND_SOC_SOF_AMD_REMBRANDT) +=3D snd-sof-amd-rembrandt.o obj-$(CONFIG_SND_SOC_SOF_AMD_VANGOGH) +=3D snd-sof-amd-vangogh.o obj-$(CONFIG_SND_SOC_SOF_AMD_ACP63) +=3D snd-sof-amd-acp63.o +obj-$(CONFIG_SND_SOC_SOF_AMD_ACP70) +=3D snd-sof-amd-acp70.o diff --git a/sound/soc/sof/amd/acp-dsp-offset.h b/sound/soc/sof/amd/acp-dsp= -offset.h index 072b703f9b3f..ecdcae07ace7 100644 --- a/sound/soc/sof/amd/acp-dsp-offset.h +++ b/sound/soc/sof/amd/acp-dsp-offset.h @@ -3,7 +3,7 @@ * This file is provided under a dual BSD/GPLv2 license. When using or * redistributing this file, you may do so under either license. * - * Copyright(c) 2021, 2023 Advanced Micro Devices, Inc. All rights reserve= d. + * Copyright(c) 2021, 2023, 2024 Advanced Micro Devices, Inc. All rights r= eserved. * * Author: Ajit Kumar Pandey */ @@ -23,6 +23,17 @@ #define ACP_DMA_CH_STS 0xE8 #define ACP_DMA_CH_GROUP 0xEC #define ACP_DMA_CH_RST_STS 0xF0 +#define ACP70_DMA_CNTL_0 0x00 +#define ACP70_DMA_DSCR_STRT_IDX_0 0x28 +#define ACP70_DMA_DSCR_CNT_0 0x50 +#define ACP70_DMA_PRIO_0 0x78 +#define ACP70_DMA_CUR_DSCR_0 0xA0 +#define ACP70_DMA_ERR_STS_0 0xF0 +#define ACP70_DMA_DESC_BASE_ADDR 0x118 +#define ACP70_DMA_DESC_MAX_NUM_DSCR 0x11C +#define ACP70_DMA_CH_STS 0x120 +#define ACP70_DMA_CH_GROUP 0x124 +#define ACP70_DMA_CH_RST_STS 0x128 =20 /* Registers from ACP_DSP_0 block */ #define ACP_DSP0_RUNSTALL 0x414 @@ -56,11 +67,13 @@ #define ACP3X_PGFSM_BASE 0x141C #define ACP5X_PGFSM_BASE 0x1424 #define ACP6X_PGFSM_BASE 0x1024 +#define ACP70_PGFSM_BASE ACP6X_PGFSM_BASE #define PGFSM_CONTROL_OFFSET 0x0 #define PGFSM_STATUS_OFFSET 0x4 #define ACP3X_CLKMUX_SEL 0x1424 #define ACP5X_CLKMUX_SEL 0x142C #define ACP6X_CLKMUX_SEL 0x102C +#define ACP70_CLKMUX_SEL ACP6X_CLKMUX_SEL =20 /* Registers from ACP_INTR block */ #define ACP3X_EXT_INTR_STAT 0x1808 @@ -69,22 +82,30 @@ #define ACP6X_EXTERNAL_INTR_CNTL 0x1A04 #define ACP6X_EXT_INTR_STAT 0x1A0C #define ACP6X_EXT_INTR_STAT1 0x1A10 +#define ACP70_EXTERNAL_INTR_ENB ACP6X_EXTERNAL_INTR_ENB +#define ACP70_EXTERNAL_INTR_CNTL ACP6X_EXTERNAL_INTR_CNTL +#define ACP70_EXT_INTR_STAT ACP6X_EXT_INTR_STAT +#define ACP70_EXT_INTR_STAT1 ACP6X_EXT_INTR_STAT1 =20 #define ACP3X_DSP_SW_INTR_BASE 0x1814 #define ACP5X_DSP_SW_INTR_BASE 0x1814 #define ACP6X_DSP_SW_INTR_BASE 0x1808 +#define ACP70_DSP_SW_INTR_BASE ACP6X_DSP_SW_INTR_BASE #define DSP_SW_INTR_CNTL_OFFSET 0x0 #define DSP_SW_INTR_STAT_OFFSET 0x4 #define DSP_SW_INTR_TRIG_OFFSET 0x8 #define ACP3X_ERROR_STATUS 0x18C4 #define ACP6X_ERROR_STATUS 0x1A4C +#define ACP70_ERROR_STATUS ACP6X_ERROR_STATUS #define ACP3X_AXI2DAGB_SEM_0 0x1880 #define ACP5X_AXI2DAGB_SEM_0 0x1884 #define ACP6X_AXI2DAGB_SEM_0 0x1874 +#define ACP70_AXI2DAGB_SEM_0 ACP6X_AXI2DAGB_SEM_0 =20 /* ACP common registers to report errors related to I2S & SoundWire interf= aces */ #define ACP3X_SW_I2S_ERROR_REASON 0x18C8 #define ACP6X_SW0_I2S_ERROR_REASON 0x18B4 +#define ACP7X_SW0_I2S_ERROR_REASON ACP6X_SW0_I2S_ERROR_REASON #define ACP_SW1_I2S_ERROR_REASON 0x1A50 =20 /* Registers from ACP_SHA block */ @@ -101,6 +122,7 @@ =20 #define ACP_SCRATCH_REG_0 0x10000 #define ACP6X_DSP_FUSION_RUNSTALL 0x0644 +#define ACP70_DSP_FUSION_RUNSTALL ACP6X_DSP_FUSION_RUNSTALL =20 /* Cache window registers */ #define ACP_DSP0_CACHE_OFFSET0 0x0420 diff --git a/sound/soc/sof/amd/acp.c b/sound/soc/sof/amd/acp.c index e4d46fdda88b..d579c3849392 100644 --- a/sound/soc/sof/amd/acp.c +++ b/sound/soc/sof/amd/acp.c @@ -64,13 +64,24 @@ static void init_dma_descriptor(struct acp_dev_data *ad= ata) { struct snd_sof_dev *sdev =3D adata->dev; const struct sof_amd_acp_desc *desc =3D get_chip_info(sdev->pdata); + struct acp_dev_data *acp_data =3D sdev->pdata->hw_pdata; unsigned int addr; + unsigned int acp_dma_desc_base_addr, acp_dma_desc_max_num_dscr; =20 addr =3D desc->sram_pte_offset + sdev->debug_box.offset + offsetof(struct scratch_reg_conf, dma_desc); =20 - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_DESC_BASE_ADDR, addr); - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_DESC_MAX_NUM_DSCR, ACP_MAX_D= ESC_CNT); + switch (acp_data->pci_rev) { + case ACP70_PCI_ID: + acp_dma_desc_base_addr =3D ACP70_DMA_DESC_BASE_ADDR; + acp_dma_desc_max_num_dscr =3D ACP70_DMA_DESC_MAX_NUM_DSCR; + break; + default: + acp_dma_desc_base_addr =3D ACP_DMA_DESC_BASE_ADDR; + acp_dma_desc_max_num_dscr =3D ACP_DMA_DESC_MAX_NUM_DSCR; + } + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_desc_base_addr, addr); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_desc_max_num_dscr, ACP_MAX_D= ESC_CNT); } =20 static void configure_dma_descriptor(struct acp_dev_data *adata, unsigned = short idx, @@ -92,29 +103,51 @@ static int config_dma_channel(struct acp_dev_data *ada= ta, unsigned int ch, unsigned int idx, unsigned int dscr_count) { struct snd_sof_dev *sdev =3D adata->dev; + struct acp_dev_data *acp_data =3D sdev->pdata->hw_pdata; const struct sof_amd_acp_desc *desc =3D get_chip_info(sdev->pdata); unsigned int val, status; + unsigned int acp_dma_cntl_0, acp_dma_ch_rst_sts, acp_dma_dscr_err_sts_0; + unsigned int acp_dma_dscr_cnt_0, acp_dma_prio_0, acp_dma_dscr_strt_idx_0; int ret; =20 - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_CNTL_0 + ch * sizeof(u32), + switch (acp_data->pci_rev) { + case ACP70_PCI_ID: + acp_dma_cntl_0 =3D ACP70_DMA_CNTL_0; + acp_dma_ch_rst_sts =3D ACP70_DMA_CH_RST_STS; + acp_dma_dscr_err_sts_0 =3D ACP70_DMA_ERR_STS_0; + acp_dma_dscr_cnt_0 =3D ACP70_DMA_DSCR_CNT_0; + acp_dma_prio_0 =3D ACP70_DMA_PRIO_0; + acp_dma_dscr_strt_idx_0 =3D ACP70_DMA_DSCR_STRT_IDX_0; + break; + default: + acp_dma_cntl_0 =3D ACP_DMA_CNTL_0; + acp_dma_ch_rst_sts =3D ACP_DMA_CH_RST_STS; + acp_dma_dscr_err_sts_0 =3D ACP_DMA_ERR_STS_0; + acp_dma_dscr_cnt_0 =3D ACP_DMA_DSCR_CNT_0; + acp_dma_prio_0 =3D ACP_DMA_PRIO_0; + acp_dma_dscr_strt_idx_0 =3D ACP_DMA_DSCR_STRT_IDX_0; + } + + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_cntl_0 + ch * sizeof(u32), ACP_DMA_CH_RST | ACP_DMA_CH_GRACEFUL_RST_EN); =20 - ret =3D snd_sof_dsp_read_poll_timeout(sdev, ACP_DSP_BAR, ACP_DMA_CH_RST_S= TS, val, + ret =3D snd_sof_dsp_read_poll_timeout(sdev, ACP_DSP_BAR, acp_dma_ch_rst_s= ts, val, val & (1 << ch), ACP_REG_POLL_INTERVAL, ACP_REG_POLL_TIMEOUT_US); if (ret < 0) { status =3D snd_sof_dsp_read(sdev, ACP_DSP_BAR, desc->acp_error_stat); - val =3D snd_sof_dsp_read(sdev, ACP_DSP_BAR, ACP_DMA_ERR_STS_0 + ch * siz= eof(u32)); + val =3D snd_sof_dsp_read(sdev, ACP_DSP_BAR, acp_dma_dscr_err_sts_0 + + ch * sizeof(u32)); =20 dev_err(sdev->dev, "ACP_DMA_ERR_STS :0x%x ACP_ERROR_STATUS :0x%x\n", val= , status); return ret; } =20 - snd_sof_dsp_write(sdev, ACP_DSP_BAR, (ACP_DMA_CNTL_0 + ch * sizeof(u32)),= 0); - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_DSCR_CNT_0 + ch * sizeof(u32= ), dscr_count); - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_DSCR_STRT_IDX_0 + ch * sizeo= f(u32), idx); - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_PRIO_0 + ch * sizeof(u32), 0= ); - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_DMA_CNTL_0 + ch * sizeof(u32), A= CP_DMA_CH_RUN); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, (acp_dma_cntl_0 + ch * sizeof(u32)),= 0); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_dscr_cnt_0 + ch * sizeof(u32= ), dscr_count); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_dscr_strt_idx_0 + ch * sizeo= f(u32), idx); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_prio_0 + ch * sizeof(u32), 0= ); + snd_sof_dsp_write(sdev, ACP_DSP_BAR, acp_dma_cntl_0 + ch * sizeof(u32), A= CP_DMA_CH_RUN); =20 return ret; } @@ -453,6 +486,10 @@ static int acp_power_on(struct snd_sof_dev *sdev) acp_pgfsm_status_mask =3D ACP6X_PGFSM_STATUS_MASK; acp_pgfsm_cntl_mask =3D ACP6X_PGFSM_CNTL_POWER_ON_MASK; break; + case ACP70_PCI_ID: + acp_pgfsm_status_mask =3D ACP70_PGFSM_STATUS_MASK; + acp_pgfsm_cntl_mask =3D ACP70_PGFSM_CNTL_POWER_ON_MASK; + break; default: return -EINVAL; } @@ -561,8 +598,11 @@ static bool check_acp_sdw_enable_status(struct snd_sof= _dev *sdev) =20 int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 target_state) { + struct acp_dev_data *acp_data; int ret; + bool enable =3D false; =20 + acp_data =3D sdev->pdata->hw_pdata; /* When acp_reset() function is invoked, it will apply ACP SOFT reset and * DSP reset. ACP Soft reset sequence will cause all ACP IP registers will * be reset to default values which will break the ClockStop Mode functio= nality. @@ -577,8 +617,9 @@ int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 t= arget_state) dev_err(sdev->dev, "ACP Reset failed\n"); return ret; } - - snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, 0x00); + if (acp_data->pci_rev =3D=3D ACP70_PCI_ID) + enable =3D true; + snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, enable); =20 return 0; } diff --git a/sound/soc/sof/amd/acp.h b/sound/soc/sof/amd/acp.h index 11def07efc0f..800594440f73 100644 --- a/sound/soc/sof/amd/acp.h +++ b/sound/soc/sof/amd/acp.h @@ -29,6 +29,8 @@ #define ACP3X_PGFSM_STATUS_MASK 0x03 #define ACP6X_PGFSM_CNTL_POWER_ON_MASK 0x07 #define ACP6X_PGFSM_STATUS_MASK 0x0F +#define ACP70_PGFSM_CNTL_POWER_ON_MASK 0x1F +#define ACP70_PGFSM_STATUS_MASK 0xFF =20 #define ACP_POWERED_ON 0x00 #define ACP_ASSERT_RESET 0x01 @@ -42,6 +44,7 @@ #define ACP3X_SRAM_PTE_OFFSET 0x02050000 #define ACP5X_SRAM_PTE_OFFSET 0x02050000 #define ACP6X_SRAM_PTE_OFFSET 0x03800000 +#define ACP70_SRAM_PTE_OFFSET ACP6X_SRAM_PTE_OFFSET #define PAGE_SIZE_4K_ENABLE 0x2 #define ACP_PAGE_SIZE 0x1000 #define ACP_DMA_CH_RUN 0x02 @@ -63,17 +66,20 @@ #define ACP_DRAM_BASE_ADDRESS 0x01000000 #define ACP_DRAM_PAGE_COUNT 128 #define ACP_SRAM_BASE_ADDRESS 0x3806000 +#define ACP7X_SRAM_BASE_ADDRESS 0x380C000 #define ACP_DSP_TO_HOST_IRQ 0x04 =20 #define ACP_RN_PCI_ID 0x01 #define ACP_VANGOGH_PCI_ID 0x50 #define ACP_RMB_PCI_ID 0x6F #define ACP63_PCI_ID 0x63 +#define ACP70_PCI_ID 0x70 =20 #define HOST_BRIDGE_CZN 0x1630 #define HOST_BRIDGE_VGH 0x1645 #define HOST_BRIDGE_RMB 0x14B5 #define HOST_BRIDGE_ACP63 0x14E8 +#define HOST_BRIDGE_ACP70 0x1507 #define ACP_SHA_STAT 0x8000 #define ACP_PSP_TIMEOUT_US 1000000 #define ACP_EXT_INTR_ERROR_STAT 0x20000000 @@ -326,6 +332,9 @@ int sof_rembrandt_ops_init(struct snd_sof_dev *sdev); extern struct snd_sof_dsp_ops sof_acp63_ops; int sof_acp63_ops_init(struct snd_sof_dev *sdev); =20 +extern struct snd_sof_dsp_ops sof_acp70_ops; +int sof_acp70_ops_init(struct snd_sof_dev *sdev); + struct snd_soc_acpi_mach *amd_sof_machine_select(struct snd_sof_dev *sdev); /* Machine configuration */ int snd_amd_acp_find_config(struct pci_dev *pci); diff --git a/sound/soc/sof/amd/acp70.c b/sound/soc/sof/amd/acp70.c new file mode 100644 index 000000000000..7d1842f42c90 --- /dev/null +++ b/sound/soc/sof/amd/acp70.c @@ -0,0 +1,142 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +// +// This file is provided under a dual BSD/GPLv2 license. When using or +// redistributing this file, you may do so under either license. +// +// Copyright(c) 2024 Advanced Micro Devices, Inc. +// +// Authors: Vijendar Mukunda + +/* + * Hardware interface for Audio DSP on ACP7.0 version based platform + */ + +#include +#include + +#include "../ops.h" +#include "../sof-audio.h" +#include "acp.h" +#include "acp-dsp-offset.h" + +#define I2S_HS_INSTANCE 0 +#define I2S_BT_INSTANCE 1 +#define I2S_SP_INSTANCE 2 +#define PDM_DMIC_INSTANCE 3 +#define I2S_HS_VIRTUAL_INSTANCE 4 + +static struct snd_soc_dai_driver acp70_sof_dai[] =3D { + [I2S_HS_INSTANCE] =3D { + .id =3D I2S_HS_INSTANCE, + .name =3D "acp-sof-hs", + .playback =3D { + .rates =3D SNDRV_PCM_RATE_8000_96000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 2, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 96000, + }, + .capture =3D { + .rates =3D SNDRV_PCM_RATE_8000_48000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + /* Supporting only stereo for I2S HS controller capture */ + .channels_min =3D 2, + .channels_max =3D 2, + .rate_min =3D 8000, + .rate_max =3D 48000, + }, + }, + + [I2S_BT_INSTANCE] =3D { + .id =3D I2S_BT_INSTANCE, + .name =3D "acp-sof-bt", + .playback =3D { + .rates =3D SNDRV_PCM_RATE_8000_96000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 2, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 96000, + }, + .capture =3D { + .rates =3D SNDRV_PCM_RATE_8000_48000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + /* Supporting only stereo for I2S BT controller capture */ + .channels_min =3D 2, + .channels_max =3D 2, + .rate_min =3D 8000, + .rate_max =3D 48000, + }, + }, + + [I2S_SP_INSTANCE] =3D { + .id =3D I2S_SP_INSTANCE, + .name =3D "acp-sof-sp", + .playback =3D { + .rates =3D SNDRV_PCM_RATE_8000_96000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 2, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 96000, + }, + .capture =3D { + .rates =3D SNDRV_PCM_RATE_8000_48000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + /* Supporting only stereo for I2S SP controller capture */ + .channels_min =3D 2, + .channels_max =3D 2, + .rate_min =3D 8000, + .rate_max =3D 48000, + }, + }, + + [PDM_DMIC_INSTANCE] =3D { + .id =3D PDM_DMIC_INSTANCE, + .name =3D "acp-sof-dmic", + .capture =3D { + .rates =3D SNDRV_PCM_RATE_8000_48000, + .formats =3D SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 2, + .channels_max =3D 4, + .rate_min =3D 8000, + .rate_max =3D 48000, + }, + }, + + [I2S_HS_VIRTUAL_INSTANCE] =3D { + .id =3D I2S_HS_VIRTUAL_INSTANCE, + .name =3D "acp-sof-hs-virtual", + .playback =3D { + .rates =3D SNDRV_PCM_RATE_8000_96000, + .formats =3D SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | + SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S32_LE, + .channels_min =3D 2, + .channels_max =3D 8, + .rate_min =3D 8000, + .rate_max =3D 96000, + }, + }, +}; + +/* Phoenix ops */ +struct snd_sof_dsp_ops sof_acp70_ops; +EXPORT_SYMBOL_NS(sof_acp70_ops, SND_SOC_SOF_AMD_COMMON); + +int sof_acp70_ops_init(struct snd_sof_dev *sdev) +{ + /* common defaults */ + memcpy(&sof_acp70_ops, &sof_acp_common_ops, sizeof(struct snd_sof_dsp_ops= )); + + sof_acp70_ops.drv =3D acp70_sof_dai; + sof_acp70_ops.num_drv =3D ARRAY_SIZE(acp70_sof_dai); + + return 0; +} diff --git a/sound/soc/sof/amd/pci-acp70.c b/sound/soc/sof/amd/pci-acp70.c new file mode 100644 index 000000000000..a5d8b6a95a22 --- /dev/null +++ b/sound/soc/sof/amd/pci-acp70.c @@ -0,0 +1,112 @@ +// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) +// +// This file is provided under a dual BSD/GPLv2 license. When using or +// redistributing this file, you may do so under either license. +// +// Copyright(c) 2024 Advanced Micro Devices, Inc. All rights reserved. +// +// Authors: Vijendar Mukunda + +/*. + * PCI interface for ACP7.0 device + */ + +#include +#include +#include +#include +#include + +#include "../ops.h" +#include "../sof-pci-dev.h" +#include "../../amd/mach-config.h" +#include "acp.h" +#include "acp-dsp-offset.h" + +#define ACP70_FUTURE_REG_ACLK_0 0x1854 +#define ACP70_REG_START 0x1240000 +#define ACP70_REG_END 0x125C000 + +static const struct sof_amd_acp_desc acp70_chip_info =3D { + .host_bridge_id =3D HOST_BRIDGE_ACP70, + .pgfsm_base =3D ACP70_PGFSM_BASE, + .ext_intr_enb =3D ACP70_EXTERNAL_INTR_ENB, + .ext_intr_cntl =3D ACP70_EXTERNAL_INTR_CNTL, + .ext_intr_stat =3D ACP70_EXT_INTR_STAT, + .ext_intr_stat1 =3D ACP70_EXT_INTR_STAT1, + .dsp_intr_base =3D ACP70_DSP_SW_INTR_BASE, + .acp_sw0_i2s_err_reason =3D ACP7X_SW0_I2S_ERROR_REASON, + .sram_pte_offset =3D ACP70_SRAM_PTE_OFFSET, + .hw_semaphore_offset =3D ACP70_AXI2DAGB_SEM_0, + .fusion_dsp_offset =3D ACP70_DSP_FUSION_RUNSTALL, + .probe_reg_offset =3D ACP70_FUTURE_REG_ACLK_0, + .reg_start_addr =3D ACP70_REG_START, + .reg_end_addr =3D ACP70_REG_END, +}; + +static const struct sof_dev_desc acp70_desc =3D { + .machines =3D snd_soc_acpi_amd_acp70_sof_machines, + .resindex_lpe_base =3D 0, + .resindex_pcicfg_base =3D -1, + .resindex_imr_base =3D -1, + .irqindex_host_ipc =3D -1, + .chip_info =3D &acp70_chip_info, + .ipc_supported_mask =3D BIT(SOF_IPC_TYPE_3), + .ipc_default =3D SOF_IPC_TYPE_3, + .default_fw_path =3D { + [SOF_IPC_TYPE_3] =3D "amd/sof", + }, + .default_tplg_path =3D { + [SOF_IPC_TYPE_3] =3D "amd/sof-tplg", + }, + .default_fw_filename =3D { + [SOF_IPC_TYPE_3] =3D "sof-acp_7_0.ri", + }, + .nocodec_tplg_filename =3D "sof-acp.tplg", + .ops =3D &sof_acp70_ops, + .ops_init =3D sof_acp70_ops_init, +}; + +static int acp70_pci_probe(struct pci_dev *pci, const struct pci_device_id= *pci_id) +{ + unsigned int flag; + + if (pci->revision !=3D ACP70_PCI_ID) + return -ENODEV; + + flag =3D snd_amd_acp_find_config(pci); + if (flag !=3D FLAG_AMD_SOF && flag !=3D FLAG_AMD_SOF_ONLY_DMIC) + return -ENODEV; + + return sof_pci_probe(pci, pci_id); +}; + +static void acp70_pci_remove(struct pci_dev *pci) +{ + sof_pci_remove(pci); +} + +/* PCI IDs */ +static const struct pci_device_id acp70_pci_ids[] =3D { + { PCI_DEVICE(PCI_VENDOR_ID_AMD, ACP_PCI_DEV_ID), + .driver_data =3D (unsigned long)&acp70_desc}, + { 0, } +}; +MODULE_DEVICE_TABLE(pci, acp70_pci_ids); + +/* pci_driver definition */ +static struct pci_driver snd_sof_pci_amd_acp70_driver =3D { + .name =3D KBUILD_MODNAME, + .id_table =3D acp70_pci_ids, + .probe =3D acp70_pci_probe, + .remove =3D acp70_pci_remove, + .driver =3D { + .pm =3D &sof_pci_pm, + }, +}; +module_pci_driver(snd_sof_pci_amd_acp70_driver); + +MODULE_LICENSE("Dual BSD/GPL"); +MODULE_DESCRIPTION("ACP70 SOF Driver"); +MODULE_IMPORT_NS(SND_SOC_SOF_AMD_COMMON); +MODULE_IMPORT_NS(SND_SOC_SOF_PCI_DEV); --=20 2.34.1