Received: by 2002:ac0:a5b6:0:0:0:0:0 with SMTP id m51-v6csp877043imm; Tue, 5 Jun 2018 06:00:57 -0700 (PDT) X-Google-Smtp-Source: ADUXVKLCRkbh2ruHUXUXb88emaKwTfUnY3E0Yf7SUwbwpMWBAisrbQmgRQ1aDvb3xTfD+uGQ5v8t X-Received: by 2002:a17:902:b68b:: with SMTP id c11-v6mr18944322pls.379.1528203656977; Tue, 05 Jun 2018 06:00:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1528203656; cv=none; d=google.com; s=arc-20160816; b=odRPoGK6aJB8KqSlkNrNNJO4v5P8izhQyR8aKwdzhxsbRt8u1FNlNtleB4I65NvZsX U6mEy/KiEjXFidYwUTAyvJyli8pRscAeuqbQmlxeJpGvKo04lE+eTTEpmL8WKxKAMozF 7QWCyvB9QeDVSsIlrOokxKW6xkNlMTEqBV5dRXwIFnoCHUDR4PbmsSA6RLwAX2gBoQdo WIoT6DOeJ5XkTE1jmeRX5bW5I/JaTySfrrv+Nn83rKWGvBaf8fz5WdZcpGHQnyNy22o9 eKmV4ebqzQAfDza5NW79ya9t6DpyuK4YjgvJxL65Kfu/wJYWvfKRR6Nw5VH0shUNDZD1 3Qog== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:in-reply-to:mime-version:user-agent:date :message-id:from:references:cc:to:subject:dkim-signature :arc-authentication-results; bh=/BHknxP3qc/0WMrTRV6jnoV1Q7J/Zw7670/MafNtfpQ=; b=K7SwPRDy5BFEA4i/6fKaAp3eii465QFz+/N2SELE/BtV5GSpLppqTKCdMWPmwcRCZY FdOrHTwvjj13ekeUoJhcORxK4rolhNDc9ivhD3VP1m/mjieiz/2MnVOnEWvvuGQEDwtC jqYoOg9kFCpben0+mUvF6xsxmjA9FHMdVMtAVk+XZ/CAZ6nteMnN9PX39Ez7Z2TVjjCz Ry9WMrar03dL+z+kQ1Ziy3hRt9eKRmHJI7Gsduk0I2Vnqz13t6l49T4Xyj4WGlMRyvY1 wxB9oB/1R807iuVxqNF8TGqrlmQBHq7sHV2c/BnPAYLt3+ciP3XF101PDxQtIAZZdnZ4 CtIA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A5Ve0nFa; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id i73-v6si5100156pgd.691.2018.06.05.06.00.42; Tue, 05 Jun 2018 06:00:56 -0700 (PDT) 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=pass header.i=@ti.com header.s=ti-com-17Q1 header.b=A5Ve0nFa; 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=pass (p=QUARANTINE sp=NONE dis=NONE) header.from=ti.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751834AbeFENAD (ORCPT + 99 others); Tue, 5 Jun 2018 09:00:03 -0400 Received: from lelnx194.ext.ti.com ([198.47.27.80]:54865 "EHLO lelnx194.ext.ti.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751662AbeFENAB (ORCPT ); Tue, 5 Jun 2018 09:00:01 -0400 Received: from dflxv15.itg.ti.com ([128.247.5.124]) by lelnx194.ext.ti.com (8.15.1/8.15.1) with ESMTP id w55CwaSc006480; Tue, 5 Jun 2018 07:58:36 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ti.com; s=ti-com-17Q1; t=1528203516; bh=/BHknxP3qc/0WMrTRV6jnoV1Q7J/Zw7670/MafNtfpQ=; h=Subject:To:CC:References:From:Date:In-Reply-To; b=A5Ve0nFaywRlyNnp+905tGdvUF+FDd3vk3z23r+jZWs6N8qt4jVQ2zUMOxEoAdrFr oVTxMDngnHrQJZ2tR9D48/C9Or17H8QncDvWEU7LJWzFKrDwo73ye/Yfs7frTWT/TA bHECbP17pyLW0BGn0dWsq/YkB2FMBljpZSJeInTg= Received: from DFLE109.ent.ti.com (dfle109.ent.ti.com [10.64.6.30]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id w55CwacN016931; Tue, 5 Jun 2018 07:58:36 -0500 Received: from DFLE104.ent.ti.com (10.64.6.25) by DFLE109.ent.ti.com (10.64.6.30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256_P256) id 15.1.1466.3; Tue, 5 Jun 2018 07:58:36 -0500 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE104.ent.ti.com (10.64.6.25) with Microsoft SMTP Server (version=TLS1_0, cipher=TLS_RSA_WITH_AES_256_CBC_SHA) id 15.1.1466.3 via Frontend Transport; Tue, 5 Jun 2018 07:58:36 -0500 Received: from [137.167.41.58] (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id w55CwXsm008847; Tue, 5 Jun 2018 07:58:33 -0500 Subject: Re: [PATCH v2] DMA: OMAP: fix OMAP1510 incorrect residue_granularity To: Janusz Krzysztofik , Vinod Koul CC: , , Jarkko Nikula , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , , , Aaro Koskinen , Tony Lindgren , References: <20180602152719.28464-1-jmkrzyszt@gmail.com> From: Peter Ujfalusi Message-ID: <3b6b4771-8d51-1305-8d72-1899d5e9f895@ti.com> Date: Tue, 5 Jun 2018 15:56:37 +0300 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 MIME-Version: 1.0 In-Reply-To: <20180602152719.28464-1-jmkrzyszt@gmail.com> Content-Type: text/plain; charset="utf-8" Content-Language: en-GB Content-Transfer-Encoding: 8bit X-EXCLAIMER-MD-CONFIG: e1e8a2fd-e40a-4ac6-ac9b-f7e9cc9ee180 Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On 06/02/2018 06:27 PM, Janusz Krzysztofik wrote: > Commit 0198d7bb8a0c ("ASoC: omap-mcbsp: Convert to use the sdma-pcm > instead of omap-pcm") resulted in broken audio playback on OMAP1510 > (discovered on Amstrad Delta). Good catch. can you fix up the subject: dmaengine: ti: omap-dma: Fix OMAP1510... Otherwise: Acked-by: Peter Ujfalusi > When running on OMAP1510, omap-pcm used to obtain DMA offset from > snd_dmaengine_pcm_pointer_no_residue() based on DMA interrupt triggered > software calculations instead of snd_dmaengine_pcm_pointer() which > depended on residue value calculated from omap_dma_get_src_pos(). > Similar code path is still available in now used > sound/soc/soc-generic-dmaengine-pcm.c but it is not triggered. > > It was verified already before that omap_get_dma_src_pos() from > arch/arm/plat-omap/dma.c didn't work correctly for OMAP1510 - see > commit 1bdd7419910c ("ASoC: OMAP: fix OMAP1510 broken PCM pointer > callback") for details. Apparently the same applies to its successor, > omap_dma_get_src_pos() from drivers/dma/ti/omap-dma.c. > > On the other hand, snd_dmaengine_pcm_pointer_no_residue() is described > as depreciated and discouraged for use in new drivers because of its > unreliable accuracy. However, it seems the only working option for > OPAM1510 now, as long as a software calculated residue is not > implemented as OMAP1510 fallback in omap-dma. > > Using snd_dmaengine_pcm_pointer_no_residue() code path instead of > snd_dmaengine_pcm_pointer() in sound/soc/soc-generic-dmaengine-pcm.c > can be triggered in two ways: > - by passing pcm->flags |= SND_DMAENGINE_PCM_FLAG_NO_RESIDUE from > sound/soc/omap/sdma-pcm.c, > - by passing dma_caps.residue_granularity = > DMA_RESIDUE_GRANULARITY_DESCRIPTOR from DMA engine. > > Let's do the latter. > > Created and tested against next-20180531 tag from linux-next tree. > > Signed-off-by: Janusz Krzysztofik > --- > Changelog: > v2: apply the patch against omap-dma.c moved to drivers/dma/ti/ > > drivers/dma/ti/omap-dma.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/ti/omap-dma.c b/drivers/dma/ti/omap-dma.c > index b73fb51fbc81..96b5096c26dd 100644 > --- a/drivers/dma/ti/omap-dma.c > +++ b/drivers/dma/ti/omap-dma.c > @@ -1485,7 +1485,11 @@ static int omap_dma_probe(struct platform_device *pdev) > od->ddev.src_addr_widths = OMAP_DMA_BUSWIDTHS; > od->ddev.dst_addr_widths = OMAP_DMA_BUSWIDTHS; > od->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); > - od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; > + if (__dma_omap15xx(od->plat->dma_attr)) > + od->ddev.residue_granularity = > + DMA_RESIDUE_GRANULARITY_DESCRIPTOR; > + else > + od->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_BURST; > od->ddev.max_burst = SZ_16M - 1; /* CCEN: 24bit unsigned */ > od->ddev.dev = &pdev->dev; > INIT_LIST_HEAD(&od->ddev.channels); > -- Péter Texas Instruments Finland Oy, Porkkalankatu 22, 00180 Helsinki. Y-tunnus/Business ID: 0615521-4. Kotipaikka/Domicile: Helsinki