Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5792292imu; Tue, 13 Nov 2018 11:49:19 -0800 (PST) X-Google-Smtp-Source: AJdET5fGEOSOZAImooU8FiTlKdjuiN4FQVhQGxMiPHxsxwQwa/XSlZrtCpktrd3uEgB74rCasn9m X-Received: by 2002:a62:a511:: with SMTP id v17-v6mr6472564pfm.18.1542138559284; Tue, 13 Nov 2018 11:49:19 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542138559; cv=none; d=google.com; s=arc-20160816; b=YozAmcG/R0fMP4/VEa/dxbh7xTfFS1wVNrENrQaztJ3AVUi1FVXerRiUR7Pw22gJUq zYA7stA49cDoPgeRfmb1GsJOWAc44/RyVxI3hjdXX2GWj4AfkgCobo3Llj3DLzH+hLR1 ZkBxxCkRhnJG6FbztG9nfnlG/6uQG7P3nB54dcVoH769DQGjBsBIK6QqRQlIWhtk7O+3 eMoP6bDoMTWgOLeM1Gb1lHbxMoiRmav+l793ETRp/4Xc/hX6OyuLSNJ7ldYdnY8Xcb/c ufU7d4jwaoDgaEzi25D1b9o0bu2vzpwBpfChDhEOr4hM3hlsQ5Cq+DPzIC24fhVnFpCG iQIQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:date:message-id:in-reply-to:subject:cc:to :from:dkim-signature; bh=xFCthqY/1Dt1xoY36lubkQKTDyB2VDn5yZYgMEdPMeE=; b=yWZ5TDfeOPYQ1UdyH35i2zuK9EuK9j3wZsJLnR3Okigp0Z5FvjLDzCCH+rPJTyqnlA rEJST0MjnOFJv2rgNYLqphZpzGun39tkVfFmpZoC7U2egxXFwMI+By0TTeeamANJAdMu poeRMJNgr4a0wGJZT1r6u/X6qWcy5OFoK6JXA5l2RnIuOLpPmOnAZlGXM9YjjGvR14/s ki260Sr28uC6ItYyDgrP3hIquEAJEOauqJUGz9nmNVvCT82MpyVhjXpdOeRTZ/59p6WX etMhSrISLhUhCdlabw8vJcHG/Vun3nxqpKcrx7v+bhuYY3ZkscopyWBfaEpyHW0znJNY kTuA== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=qxs2mA3N; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id l13-v6si25281976pls.222.2018.11.13.11.49.03; Tue, 13 Nov 2018 11:49:19 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=qxs2mA3N; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731321AbeKNFqX (ORCPT + 99 others); Wed, 14 Nov 2018 00:46:23 -0500 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:52496 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726569AbeKNFqW (ORCPT ); Wed, 14 Nov 2018 00:46:22 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=sirena.org.uk; s=20170815-heliosphere; h=Date:Message-Id:In-Reply-To: Subject:Cc:To:From:Sender:Reply-To:MIME-Version:Content-Type: Content-Transfer-Encoding:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:References: List-Id:List-Help:List-Unsubscribe:List-Subscribe:List-Post:List-Owner: List-Archive; bh=xFCthqY/1Dt1xoY36lubkQKTDyB2VDn5yZYgMEdPMeE=; b=qxs2mA3Nn4GN umoRJEZ9EU0wHNEf9JRQbYLsPya2g8+qFrxFCREP9zO6Ec0/z3Lzaqbnu8RT22dKMZ+kmJAC5J+ED 60GdJUjPxCKJVrIMQ/YCQ4cv1z4KfZiV1TCwOhyVmA6gIWGdQwqyKw6qU4x671emP6En8Lh8JhsO8 JTnAk=; Received: from [64.114.255.97] (helo=finisterre.ee.mobilebroadband) by heliosphere.sirena.org.uk with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1gMee1-0002WX-11; Tue, 13 Nov 2018 19:46:41 +0000 Received: by finisterre.ee.mobilebroadband (Postfix, from userid 1000) id 64A18440078; Tue, 13 Nov 2018 19:46:30 +0000 (GMT) From: Mark Brown To: Maruthi Srinivas Bayyavarapu Cc: Maruthi Bayyavarapu , Sanju R Mehta , Ravulapati Vishnu vardhan Rao , Vijendar Mukunda , Mark Brown , "moderated list:SOUND - SOC LAYER / DYNAMIC AUDIO POWER MANAGEM..." , Maruthi Bayyavarapu , open list , Takashi Iwai , Liam Girdwood , Sanju R Mehta , Vishnuvardhanrao.Ravulapati@amd.com, Mark Brown , Vijendar Mukunda , Alexander.Deucher@amd.com, alsa-devel@alsa-project.org Subject: Applied "ASoC: AMD: add ACP3.0 PCI driver" to the asoc tree In-Reply-To: <1542000903-19020-3-git-send-email-Vijendar.Mukunda@amd.com> Message-Id: <20181113194630.64A18440078@finisterre.ee.mobilebroadband> Date: Tue, 13 Nov 2018 19:46:30 +0000 (GMT) Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org The patch ASoC: AMD: add ACP3.0 PCI driver has been applied to the asoc tree at https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark From e30d9128def6ca0715a89b9a3133a94521dc0b51 Mon Sep 17 00:00:00 2001 From: Maruthi Srinivas Bayyavarapu Date: Mon, 12 Nov 2018 11:04:53 +0530 Subject: [PATCH] ASoC: AMD: add ACP3.0 PCI driver ACP 3.0 is a PCI audio device. This patch adds PCI driver to bind to this device and get PCI resources. Signed-off-by: Maruthi Bayyavarapu Signed-off-by: Sanju R Mehta Tested-by: Ravulapati Vishnu vardhan Rao Signed-off-by: Vijendar Mukunda Signed-off-by: Mark Brown --- sound/soc/amd/raven/acp3x.h | 13 +++++ sound/soc/amd/raven/pci-acp3x.c | 97 +++++++++++++++++++++++++++++++++ 2 files changed, 110 insertions(+) create mode 100644 sound/soc/amd/raven/acp3x.h create mode 100644 sound/soc/amd/raven/pci-acp3x.c diff --git a/sound/soc/amd/raven/acp3x.h b/sound/soc/amd/raven/acp3x.h new file mode 100644 index 000000000000..e9b4df0c6726 --- /dev/null +++ b/sound/soc/amd/raven/acp3x.h @@ -0,0 +1,13 @@ +#include "chip_offset_byte.h" + +#define ACP3x_PHY_BASE_ADDRESS 0x1240000 + +static inline u32 rv_readl(void __iomem *base_addr) +{ + return readl(base_addr - ACP3x_PHY_BASE_ADDRESS); +} + +static inline void rv_writel(u32 val, void __iomem *base_addr) +{ + writel(val, base_addr - ACP3x_PHY_BASE_ADDRESS); +} diff --git a/sound/soc/amd/raven/pci-acp3x.c b/sound/soc/amd/raven/pci-acp3x.c new file mode 100644 index 000000000000..27588ed066c9 --- /dev/null +++ b/sound/soc/amd/raven/pci-acp3x.c @@ -0,0 +1,97 @@ +/* + * AMD ALSA SoC PCM Driver + * + * Copyright 2016 Advanced Micro Devices, Inc. + * + * This program is free software; you can redistribute it and/or modify it + * under the terms and conditions of the GNU General Public License, + * version 2, as published by the Free Software Foundation. + * + * This program is distributed in the hope it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + */ + +#include +#include +#include + +#include "acp3x.h" + +struct acp3x_dev_data { + void __iomem *acp3x_base; +}; + +static int snd_acp3x_probe(struct pci_dev *pci, + const struct pci_device_id *pci_id) +{ + int ret; + u32 addr; + struct acp3x_dev_data *adata; + + if (pci_enable_device(pci)) { + dev_err(&pci->dev, "pci_enable_device failed\n"); + return -ENODEV; + } + + ret = pci_request_regions(pci, "AMD ACP3x audio"); + if (ret < 0) { + dev_err(&pci->dev, "pci_request_regions failed\n"); + goto disable_pci; + } + + adata = devm_kzalloc(&pci->dev, sizeof(struct acp3x_dev_data), + GFP_KERNEL); + if (!adata) { + ret = -ENOMEM; + goto release_regions; + } + + addr = pci_resource_start(pci, 0); + adata->acp3x_base = ioremap(addr, pci_resource_len(pci, 0)); + if (!adata->acp3x_base) { + ret = -ENOMEM; + goto release_regions; + } + pci_set_master(pci); + pci_set_drvdata(pci, adata); + return 0; + +release_regions: + pci_release_regions(pci); +disable_pci: + pci_disable_device(pci); + + return ret; +} + +static void snd_acp3x_remove(struct pci_dev *pci) +{ + struct acp3x_dev_data *adata = pci_get_drvdata(pci); + + iounmap(adata->acp3x_base); + pci_release_regions(pci); + pci_disable_device(pci); +} + +static const struct pci_device_id snd_acp3x_ids[] = { + { PCI_DEVICE(PCI_VENDOR_ID_AMD, 0x15e2), + .class = PCI_CLASS_MULTIMEDIA_OTHER << 8, + .class_mask = 0xffffff }, + { 0, }, +}; +MODULE_DEVICE_TABLE(pci, snd_acp3x_ids); + +static struct pci_driver acp3x_driver = { + .name = KBUILD_MODNAME, + .id_table = snd_acp3x_ids, + .probe = snd_acp3x_probe, + .remove = snd_acp3x_remove, +}; + +module_pci_driver(acp3x_driver); + +MODULE_AUTHOR("Maruthi.Bayyavarapu@amd.com"); +MODULE_DESCRIPTION("AMD ACP3x PCI driver"); +MODULE_LICENSE("GPL v2"); -- 2.19.1