Received: by 2002:ad5:474a:0:0:0:0:0 with SMTP id i10csp5791725imu; Tue, 13 Nov 2018 11:48:42 -0800 (PST) X-Google-Smtp-Source: AJdET5dKtYLLCUmxnS5M9x8BrIY1IbhhE/9JwGiDMQ7H09krZd7jeD+jfmKkUlEnpx/rlXTYe9tm X-Received: by 2002:a63:e655:: with SMTP id p21mr5899208pgj.70.1542138522208; Tue, 13 Nov 2018 11:48:42 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1542138522; cv=none; d=google.com; s=arc-20160816; b=OtcQrODUoY2D6duFWnceYlL+/Hfkk2crNa4G1pXb5l6FZnCfu5EnR53Fqd+EPWHuXn 415IxNnGDvX33ptij8w5KdnWVL7fiQTofHYkCc+r1gBp5PFZ+Gpk1AjBtP6vVFvSxSx5 9z7CamujADJNlOZNM9+yt1X6dNq+DTWssPJjoeEPZF30qqq3Sx1YvG/qEmcEwUzu9TIs Ngn5NAuUbyrWQWzaSSHUchZ+484koilTcjln39VngJg3V5PpvsAVO/ldPD5TASZ7G6pV 3CQiRL2BU5dhNSgzuKzH7BEsNLKmkdZ6l93YcJqcoIomM7PbAgKCNHB8Bitfxr3j4b+u pitQ== 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=trMIJ1FMsjfBcJvXYYdYD+dH5THaajvdGfBlqDNUXPk=; b=SOhiV33GFp6OgnzM2fxjXGuBVOiNs83V7ZXjo830X65tgHFAk+hROLnziIFZLvfL71 pTH1BgTdzOZPTmBYSWhC4jueJsobJTdlFI+Uw/cQCMrABfFwl7V4cSku1M2ELaUGs68t X2R86pZExtHNAaaV8wKxERx1Ee1NpJg+381djR8mumw3EraplrYHy90BlI7vdFI5sDHz q/c3e/oN3q1IP6sJMKUSn8lfTsgGSBv358EBDbXbgG0tYw74Sr8WS6cXbswrMah0UFj2 b31q52Z6OU0GggLfjYDZbSF3Vv/G1GkGjXtgqKJOZlOY0ZL6VmtsOI5n5KVEeWMLwza4 jZRQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=fail header.i=@sirena.org.uk header.s=20170815-heliosphere header.b=agGYFybV; 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 u9-v6si17793049pfh.271.2018.11.13.11.48.27; Tue, 13 Nov 2018 11:48:42 -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=agGYFybV; 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 S1731073AbeKNFpx (ORCPT + 99 others); Wed, 14 Nov 2018 00:45:53 -0500 Received: from heliosphere.sirena.org.uk ([172.104.155.198]:51614 "EHLO heliosphere.sirena.org.uk" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726610AbeKNFpx (ORCPT ); Wed, 14 Nov 2018 00:45:53 -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=trMIJ1FMsjfBcJvXYYdYD+dH5THaajvdGfBlqDNUXPk=; b=agGYFybVKOx3 Oejqzj+gCpCGWVAM5A7laQ+1QxZrdbWPEp23YhS29VKxfkp0I3H4YQDmLqenzqYMYN8s9QGRV6c4e hoMRwHKZa8MglANV6iVzUnxAriAFaEpAChVCKqPVWE7rjK0l8ThtjWRsBBspLIUx2hAVKgqQKpj7H xbjV4=; 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 1gMedY-0002W5-8l; Tue, 13 Nov 2018 19:46:12 +0000 Received: by finisterre.ee.mobilebroadband (Postfix, from userid 1000) id AC5F4440078; Tue, 13 Nov 2018 19:46:06 +0000 (GMT) From: Mark Brown To: Vijendar Mukunda Cc: Maruthi Bayyavarapu , 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 , Vishnuvardhanrao.Ravulapati@amd.com, Mark Brown , Alexander.Deucher@amd.com, alsa-devel@alsa-project.org Subject: Applied "ASoC: amd: Interrupt handler changes for ACP3x DMA driver" to the asoc tree In-Reply-To: <1542000903-19020-6-git-send-email-Vijendar.Mukunda@amd.com> Message-Id: <20181113194606.AC5F4440078@finisterre.ee.mobilebroadband> Date: Tue, 13 Nov 2018 19:46:06 +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: Interrupt handler changes for ACP3x DMA 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 32feac95f646aebaafdaf12a610898b6e5db54ae Mon Sep 17 00:00:00 2001 From: Vijendar Mukunda Date: Mon, 12 Nov 2018 11:04:56 +0530 Subject: [PATCH] ASoC: amd: Interrupt handler changes for ACP3x DMA driver Whenever audio data equal to the I2S FIFO watermark level are produced/consumed, interrupt is generated. Acknowledge the interrupt. Signed-off-by: Maruthi Bayyavarapu Tested-by: Ravulapati Vishnu vardhan Rao Signed-off-by: Vijendar Mukunda Signed-off-by: Mark Brown --- sound/soc/amd/raven/acp3x-pcm-dma.c | 46 +++++++++++++++++++++++++++++ 1 file changed, 46 insertions(+) diff --git a/sound/soc/amd/raven/acp3x-pcm-dma.c b/sound/soc/amd/raven/acp3x-pcm-dma.c index 3e806f74c6f7..94f915afd1b3 100644 --- a/sound/soc/amd/raven/acp3x-pcm-dma.c +++ b/sound/soc/amd/raven/acp3x-pcm-dma.c @@ -27,6 +27,7 @@ #define DRV_NAME "acp3x-i2s-audio" struct i2s_dev_data { + unsigned int i2s_irq; void __iomem *acp3x_base; struct snd_pcm_substream *play_stream; struct snd_pcm_substream *capture_stream; @@ -132,6 +133,38 @@ static int acp3x_deinit(void __iomem *acp3x_base) return 0; } +static irqreturn_t i2s_irq_handler(int irq, void *dev_id) +{ + u16 play_flag, cap_flag; + u32 val; + struct i2s_dev_data *rv_i2s_data = dev_id; + + if (!rv_i2s_data) + return IRQ_NONE; + + play_flag = 0; + cap_flag = 0; + val = rv_readl(rv_i2s_data->acp3x_base + mmACP_EXTERNAL_INTR_STAT); + if ((val & BIT(BT_TX_THRESHOLD)) && rv_i2s_data->play_stream) { + rv_writel(BIT(BT_TX_THRESHOLD), rv_i2s_data->acp3x_base + + mmACP_EXTERNAL_INTR_STAT); + snd_pcm_period_elapsed(rv_i2s_data->play_stream); + play_flag = 1; + } + + if ((val & BIT(BT_RX_THRESHOLD)) && rv_i2s_data->capture_stream) { + rv_writel(BIT(BT_RX_THRESHOLD), rv_i2s_data->acp3x_base + + mmACP_EXTERNAL_INTR_STAT); + snd_pcm_period_elapsed(rv_i2s_data->capture_stream); + cap_flag = 1; + } + + if (play_flag | cap_flag) + return IRQ_HANDLED; + else + return IRQ_NONE; +} + static struct snd_pcm_ops acp3x_dma_ops = { .open = NULL, .close = NULL, @@ -205,6 +238,13 @@ static int acp3x_audio_probe(struct platform_device *pdev) adata->acp3x_base = devm_ioremap(&pdev->dev, res->start, resource_size(res)); + res = platform_get_resource(pdev, IORESOURCE_IRQ, 0); + if (!res) { + dev_err(&pdev->dev, "IORESOURCE_IRQ FAILED\n"); + return -ENODEV; + } + + adata->i2s_irq = res->start; adata->play_stream = NULL; adata->capture_stream = NULL; @@ -220,6 +260,12 @@ static int acp3x_audio_probe(struct platform_device *pdev) dev_err(&pdev->dev, "Fail to register acp i2s dai\n"); goto dev_err; } + status = devm_request_irq(&pdev->dev, adata->i2s_irq, i2s_irq_handler, + irqflags, "ACP3x_I2S_IRQ", adata); + if (status) { + dev_err(&pdev->dev, "ACP3x I2S IRQ request failed\n"); + goto dev_err; + } return 0; dev_err: -- 2.19.1