From patchwork Tue Jan 17 13:16:41 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Sylwester Nawrocki/Kernel \\(PLT\\) /SRPOL/Staff Engineer/Samsung Electronics" X-Patchwork-Id: 9520863 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id 70E9C60244 for ; Tue, 17 Jan 2017 13:17:23 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 7756726E4E for ; Tue, 17 Jan 2017 13:17:23 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 6BFE1284EB; Tue, 17 Jan 2017 13:17:23 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-6.9 required=2.0 tests=BAYES_00,RCVD_IN_DNSWL_HI autolearn=ham version=3.3.1 Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id D24EA26E4E for ; Tue, 17 Jan 2017 13:17:22 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1751095AbdAQNRW (ORCPT ); Tue, 17 Jan 2017 08:17:22 -0500 Received: from mailout1.samsung.com ([203.254.224.24]:48304 "EHLO mailout1.samsung.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750892AbdAQNRV (ORCPT ); Tue, 17 Jan 2017 08:17:21 -0500 Received: from epcas5p2.samsung.com (unknown [182.195.41.40]) by mailout1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTP id <0OJX01C5OE8PJQ40@mailout1.samsung.com> for linux-samsung-soc@vger.kernel.org; Tue, 17 Jan 2017 22:17:13 +0900 (KST) Received: from epsmges5p3.samsung.com (unknown [182.195.42.46]) by epcas5p1.samsung.com (KnoxPortal) with ESMTP id 20170117131713epcas5p11c1e835b737a6c9a82c37b1c83c57884~akYZSQQVJ1345313453epcas5p1Z; Tue, 17 Jan 2017 13:17:13 +0000 (GMT) Received: from epcas5p4.samsung.com ( [182.195.41.42]) by epsmges5p3.samsung.com (EPCPMTA) with SMTP id D6.D0.10771.9591E785; Tue, 17 Jan 2017 22:17:13 +0900 (KST) Received: from epcpsbgm2new.samsung.com (u27.gpu120.samsung.co.kr [203.254.230.27]) by epcas5p1.samsung.com (KnoxPortal) with ESMTP id 20170117131713epcas5p1a4892e3cf5ebb230d72e59a2b80b7691~akYZHR-Ju1001110011epcas5p1p; Tue, 17 Jan 2017 13:17:13 +0000 (GMT) X-AuditID: b6c32a2e-f79f46d000002a13-c5-587e1959a727 Received: from epmmp1.local.host ( [203.254.227.16]) by epcpsbgm2new.samsung.com (EPCPMTA) with SMTP id F4.C8.26370.8591E785; Tue, 17 Jan 2017 22:17:13 +0900 (KST) Received: from AMDC3061.digital.local ([106.116.147.40]) by mmp1.samsung.com (Oracle Communications Messaging Server 7.0.5.31.0 64bit (built May 5 2014)) with ESMTPA id <0OJX000YUE842090@mmp1.samsung.com>; Tue, 17 Jan 2017 22:17:12 +0900 (KST) From: Sylwester Nawrocki To: broonie@kernel.org Cc: lgirdwood@gmail.com, lars@metafoo.de, alsa-devel@alsa-project.org, linux-samsung-soc@vger.kernel.org, Sylwester Nawrocki Subject: [PATCH 1/2] ASoC: Revert "Drop SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME flag" Date: Tue, 17 Jan 2017 14:16:41 +0100 Message-id: <1484659002-20200-1-git-send-email-s.nawrocki@samsung.com> X-Mailer: git-send-email 1.9.1 X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFjrIIsWRmVeSWpSXmKPExsWy7bCmlm6kZF2Ewcf3vBZXLh5ispj68Amb xZLJ81ktvl3pYLKYcX4fk8XhN+2sDmweGz43sXnsnHWX3WPTqk42jyVvDrF69G1ZxejxeZNc AFsUl01Kak5mWWqRvl0CV8bdX//ZC9ZJV8xddZq1gfG3WBcjJ4eEgInExM0PmSFsMYkL99az dTFycQgJLGWUmHHoDTOE084k0ffpIRtMx9urVxghEssZJX63nYOq+sUo8f//Z7BZbAKGEr1H +xhBbBGgubfndIIVMQvMZJRYu7EZbJSwQJRE54J7rCA2i4CqxJ3L35lAbF4BN4kJ9ydDHSUn cfLYZFaQZgmB22wS2/7fBGrmAHJkJTYdgKpxkTj05g0ThC0s8er4FnYIW1ri79JbjBC9/YwS J9Y0QzkzGCXutE+A6rCWOHz8ItgVzAJ8Er2/nzBBLOCV6GgTgijxkLi95iPUMkeJCXsXgpUL CcRKbJ+0h2kCo/QCRoZVjGKpBcW56anFpgXGesWJucWleel6yfm5mxjBEault4Px3wLvQ4wC HIxKPLwrxOsihFgTy4orcw8xSnAwK4nwBosChXhTEiurUovy44tKc1KLDzFKc7AoifMuqLCO EBJITyxJzU5NLUgtgskycXBKNTCG6ITvrv+7ecrU5/EXprIFHtnX9PCS5pmrSXcOzqpmd/z5 flV38bK3La8zLhRr7Fy2+6O1RkEAo3SqHfd0zZc2ljEMIV2XztU1NrFmlfk9rT4580/e7vqX ORdWtcvG+iSkHa3uFU9hduYWOKe+OubyiwqBM2lyHqtTtxifunLmr+lv1d7rgWFKLMUZiYZa zEXFiQBrXTRJ1AIAAA== X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFrrGLMWRmVeSWpSXmKPExsVy+t9jAd1IyboIg13PmSyuXDzEZDH14RM2 iyWT57NafLvSwWQx4/w+JovDb9pZHdg8NnxuYvPYOesuu8emVZ1sHkveHGL16NuyitHj8ya5 ALYoN5uM1MSU1CKF1Lzk/JTMvHRbpdAQN10LJYW8xNxUW6UIXd+QICWFssScUiDPyAANODgH uAcr6dsluGXc/fWfvWCddMXcVadZGxh/i3UxcnJICJhIvL16hRHCFpO4cG89WxcjF4eQwFJG iUkr3jFCOL8YJS71rWUBqWITMJToPdoH1iEC1HF7TiczSBGzwHRGiYsTVrKBJIQFoiQ6F9xj BbFZBFQl7lz+zgRi8wq4SUy4P5kZYp2cxMljk1knMHIvYGRYxSiRWpBcUJyUnmuUl1quV5yY W1yal66XnJ+7iREcps+kdzAe3uV+iFGAg1GJhzdAtC5CiDWxrLgy9xCjBAezkghvMEiINyWx siq1KD++qDQntfgQoynQAROZpUST84ExlFcSb2hibmJubGBhbmlpYqQkzts4+1m4kEB6Yklq dmpqQWoRTB8TB6dUA6PYZWa7+OkpN5adWj7le2RWYEZv1gG+Q/Z/DC4u0yvbYfV33Ry/9ndz jkw/y+jEWCM4jYuTYQvnRv+q9Dlzot73Xz63pqfbvJfTVOqhzs9Xk6X9F5Zu3f/fWmFdkslf tTNCV/yCmhjiOnXyrr6Wkc65fznt2cVN5V9Wbwl0uTvrVuZ8bffEyQZKLMUZiYZazEXFiQBb fHfiaQIAAA== X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170117131713epcas5p1a4892e3cf5ebb230d72e59a2b80b7691 X-Msg-Generator: CA X-Sender-IP: 203.254.230.27 X-Local-Sender: =?UTF-8?B?U3lsd2VzdGVyIE5hd3JvY2tpG1NSUE9MLUtlcm5lbCAoVFAp?= =?UTF-8?B?G+yCvOyEseyghOyekBtTZW5pb3IgU29mdHdhcmUgRW5naW5lZXI=?= X-Global-Sender: =?UTF-8?B?U3lsd2VzdGVyIE5hd3JvY2tpG1NSUE9MLUtlcm5lbCAoVFAp?= =?UTF-8?B?G1NhbXN1bmcgRWxlY3Ryb25pY3MbU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVy?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDAyQ0QwMjczOTI=?= CMS-TYPE: 105P X-HopCount: 7 X-CMS-RootMailID: 20170117131713epcas5p1a4892e3cf5ebb230d72e59a2b80b7691 X-RootMTR: 20170117131713epcas5p1a4892e3cf5ebb230d72e59a2b80b7691 References: Sender: linux-samsung-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-samsung-soc@vger.kernel.org X-Virus-Scanned: ClamAV using ClamSMTP This reverts commit c6644119a3f80ea644bde10009d5e1013b5aff29 and restores the ability to specify DMA channel names per DAI dma_data. Unfortunately the functionality removed in the patch being reverted cannot be entirely replaced by specifying DMA channel names in struct snd_dmaengine_pcm_config as that does not cover devices with more than 2 DMA channels. Together with patch "ASoC: Revert "samsung: Remove unneeded initialization of chan_name"" this fixes broken sound on the s3c24xx SoC platforms. Signed-off-by: Sylwester Nawrocki --- include/sound/dmaengine_pcm.h | 6 ++++++ sound/soc/soc-generic-dmaengine-pcm.c | 12 +++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) -- 1.9.1 -- To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html diff --git a/include/sound/dmaengine_pcm.h b/include/sound/dmaengine_pcm.h index 1c8f9e1..67be244 100644 --- a/include/sound/dmaengine_pcm.h +++ b/include/sound/dmaengine_pcm.h @@ -71,6 +71,7 @@ struct dma_chan *snd_dmaengine_pcm_request_channel(dma_filter_fn filter_fn, * @slave_id: Slave requester id for the DMA channel. * @filter_data: Custom DMA channel filter data, this will usually be used when * requesting the DMA channel. + * @chan_name: Custom channel name to use when requesting DMA channel. * @fifo_size: FIFO size of the DAI controller in bytes * @flags: PCM_DAI flags, only SND_DMAENGINE_PCM_DAI_FLAG_PACK for now */ @@ -80,6 +81,7 @@ struct snd_dmaengine_dai_dma_data { u32 maxburst; unsigned int slave_id; void *filter_data; + const char *chan_name; unsigned int fifo_size; unsigned int flags; }; @@ -105,6 +107,10 @@ void snd_dmaengine_pcm_set_config_from_dai_data( * playback. */ #define SND_DMAENGINE_PCM_FLAG_HALF_DUPLEX BIT(3) +/* + * The PCM streams have custom channel names specified. + */ +#define SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME BIT(4) /** * struct snd_dmaengine_pcm_config - Configuration data for dmaengine based PCM diff --git a/sound/soc/soc-generic-dmaengine-pcm.c b/sound/soc/soc-generic-dmaengine-pcm.c index 17eb149..d537864 100644 --- a/sound/soc/soc-generic-dmaengine-pcm.c +++ b/sound/soc/soc-generic-dmaengine-pcm.c @@ -263,6 +263,7 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) struct dmaengine_pcm *pcm = soc_platform_to_pcm(rtd->platform); const struct snd_dmaengine_pcm_config *config = pcm->config; struct device *dev = rtd->platform->dev; + struct snd_dmaengine_dai_dma_data *dma_data; struct snd_pcm_substream *substream; size_t prealloc_buffer_size; size_t max_buffer_size; @@ -282,6 +283,13 @@ static int dmaengine_pcm_new(struct snd_soc_pcm_runtime *rtd) if (!substream) continue; + dma_data = snd_soc_dai_get_dma_data(rtd->cpu_dai, substream); + + if (!pcm->chan[i] && + (pcm->flags & SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME)) + pcm->chan[i] = dma_request_slave_channel(dev, + dma_data->chan_name); + if (!pcm->chan[i] && (pcm->flags & SND_DMAENGINE_PCM_FLAG_COMPAT)) { pcm->chan[i] = dmaengine_pcm_compat_request_channel(rtd, substream); @@ -350,7 +358,9 @@ static int dmaengine_pcm_request_chan_of(struct dmaengine_pcm *pcm, const char *name; struct dma_chan *chan; - if ((pcm->flags & SND_DMAENGINE_PCM_FLAG_NO_DT) || !dev->of_node) + if ((pcm->flags & (SND_DMAENGINE_PCM_FLAG_NO_DT | + SND_DMAENGINE_PCM_FLAG_CUSTOM_CHANNEL_NAME)) || + !dev->of_node) return 0; if (config && config->dma_dev) {