From mboxrd@z Thu Jan 1 00:00:00 1970 From: Lee Jones Subject: Re: [PATCH 07/10] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case Date: Mon, 2 Dec 2013 10:12:56 +0000 Message-ID: <20131202101256.GA29373@lee--X1> References: <1384859269-19801-1-git-send-email-lee.jones@linaro.org> <1384859269-19801-8-git-send-email-lee.jones@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail-ie0-f174.google.com (mail-ie0-f174.google.com [209.85.223.174]) by alsa0.perex.cz (Postfix) with ESMTP id 505E2261AFD for ; Mon, 2 Dec 2013 11:13:03 +0100 (CET) Received: by mail-ie0-f174.google.com with SMTP id at1so20298752iec.33 for ; Mon, 02 Dec 2013 02:13:02 -0800 (PST) Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: alsa-devel-bounces@alsa-project.org Sender: alsa-devel-bounces@alsa-project.org To: Olof Johansson Cc: "alsa-devel@alsa-project.org" , LinusW , Mark Brown , "linux-kernel@vger.kernel.org" , "linux-arm-kernel@lists.infradead.org" List-Id: alsa-devel@alsa-project.org T24gU3VuLCAwMSBEZWMgMjAxMywgT2xvZiBKb2hhbnNzb24gd3JvdGU6Cgo+IEhpLAo+IAo+IE9u IFR1ZSwgTm92IDE5LCAyMDEzIGF0IDM6MDcgQU0sIExlZSBKb25lcyA8bGVlLmpvbmVzQGxpbmFy by5vcmc+IHdyb3RlOgo+ID4gSW4gdGhpcyBwYXRjaCB3ZSBkbyB0d28gdGhpbmdzLiBGaXJzdGx5 LCBpbnN0ZWFkIG9mIG9wZW4gY29kaW5nIHRoZQo+ID4gc3RvcmUgb2YgRE1BIGRhdGEgaW4gdG8g dGhlIERBSSBmb3IgbGF0ZXIgdXNlLCB3ZSB1c2UgdGhlIEFQSSBwcm92aWRlZC4KPiA+IFNlY29u ZGx5IHdlIGNyZWF0ZSBhbmQgc3RvcmUgc2ltaWxhciBETUEgZGF0YSBmb3IgdGhlIERUIGNhc2Us IG9ubHkKPiA+IHRoaXMgdGltZSB3ZSB1c2UgJ3N0cnVjdCBzbmRfZG1hZW5naW5lX2RhaV9kbWFf ZGF0YScgd2hpY2ggaXMgcHJvdmlkZWQKPiA+IGJ5IHRoZSBjb3JlIGZvciB0aGlzIHZlcnkgcmVh c29uLgo+ID4KPiA+IENjOiBhbHNhLWRldmVsQGFsc2EtcHJvamVjdC5vcmcKPiA+IENjOiBNYXJr IEJyb3duIDxicm9vbmllQGtlcm5lbC5vcmc+Cj4gPiBBY2tlZC1ieTogTGludXMgV2FsbGVpaiA8 bGludXMud2FsbGVpakBsaW5hcm8ub3JnPgo+ID4gU2lnbmVkLW9mZi1ieTogTGVlIEpvbmVzIDxs ZWUuam9uZXNAbGluYXJvLm9yZz4KPiAKPiAKPiBTZWVtcyBsaWtlIHRoaXMgaGl0IC1uZXh0IGZv ciB0aGUgZmlyc3QgdGltZSB0b2RheSwgYW5kIGl0IHBhbmljcwo+IHNub3diYWxsIG9uIGJvb3Qg b2YgdTg1MDBfZGVmY29uZmlnLiBJIGJpc2VjdGVkIGRvd24gdG8gdGhpcyBwYXRjaC4KPiAKPiBU aGUgcGFuaWMgaXMgYmVsb3cuIExhc3Qgb3V0cHV0IGlzIHRoZSBkZXZfZGJnKCkgaW4KPiB1eDUw MF9wY21fcmVxdWVzdF9jaGFuLiBkbWFfY2ZnIHNlZW1zIHRvIGJlIDB4MDAwMDAwNCghKSBhdCB0 aGF0Cj4gcG9pbnQuIEl0J3MgaW5kZWVkIGNyYXNoaW5nIG9uIGZpcnN0IGRlcmVmIG9mIGRtYV9j ZmcgKGNvbmZpcm1lZCB2aWEKPiBhZGRyMmxpbmUpLgoKT2theSwgSSBqdXN0IGRlYnVnZ2VkIHRo aXMuCgpJdCdzIGFjdHVhbGx5IG15IGZhdWx0LiBJIGhhZCB0d28gcGF0Y2hlcyByb3VuZCB0aGUg d3Jvbmcgd2F5IGluIHRoZQpzZXJpZXMuIFRoZSBpbWVkaWF0ZWx5IHN1YnNlcXVlbnQgcGF0Y2gg aW4gdGhlIHNldCBmaXhlcyB0aGlzIGlzc3VlOgoKQXV0aG9yOiBMZWUgSm9uZXMgPGxlZS5qb25l c0BsaW5hcm8ub3JnPgpEYXRlOiAgIFR1ZSBOb3YgNSAyMjo1NzozMSAyMDEzICswMDAwCgogICAg QVNvQzogdXg1MDBfcGNtOiBEaWZmZXJlbnRpYXRlIGJldHdlZW4gcGRhdGEgYW5kIERUIGluaXRp YWxpc2F0aW9uCiAgICAKICAgIElmIGJvb3Rpbmcgd2l0aCBmdWxsIERUIHN1cHBvcnQgKGkuZS4g RE1BIHRvbywgdGhlIGxhc3QgcGllY2Ugb2YgdGhlCiAgICBwdXp6bGUpLCB0aGVuIHdlIGRvbid0 IG5lZWQgdG8gdXNlIHRoZSBjb21wYXRpYmxlIHJlcXVlc3QgY2hhbm5lbCBjYWxsCiAgICBiYWNr IGFuZCwgZHVlIHRvIHRoZSB3b3JrIHdlIGxhaWQgZG93biBlYXJsaWVyIGluIHRoaXMgcGF0Y2gt c2V0LCB3ZQogICAgY2FuIHVzZSBjb3JlIGZ1bmN0aW9uIGNhbGxzIHRvIHBvcHVsYXRlIHRoZSBE TUEgc2xhdmVfY29uZmlnLiBXZSBhbHNvCiAgICByZXF1aXJlIHNsaWdodGx5IGRpZmZlcmVudCBm bGFncyB0byBpbmZvcm0gdGhlIGNvcmUgdGhhdCB3ZSAnYXJlJwogICAgYm9vdGluZyB3aXRoIERU LgogICAgCiAgICBDYzogYWxzYS1kZXZlbEBhbHNhLXByb2plY3Qub3JnCiAgICBDYzogTWFyayBC cm93biA8YnJvb25pZUBrZXJuZWwub3JnPgogICAgQWNrZWQtYnk6IExpbnVzIFdhbGxlaWogPGxp bnVzLndhbGxlaWpAbGluYXJvLm9yZz4KICAgIFNpZ25lZC1vZmYtYnk6IExlZSBKb25lcyA8bGVl LmpvbmVzQGxpbmFyby5vcmc+CgpkaWZmIC0tZ2l0IGEvc291bmQvc29jL3V4NTAwL3V4NTAwX3Bj bS5jIGIvc291bmQvc29jL3V4NTAwL3V4NTAwX3BjbS5jCmluZGV4IGNlNTU0ZGUuLmFjZmVjOTgg MTAwNjQ0Ci0tLSBhL3NvdW5kL3NvYy91eDUwMC91eDUwMF9wY20uYworKysgYi9zb3VuZC9zb2Mv dXg1MDAvdXg1MDBfcGNtLmMKQEAgLTEzOSwxNSArMTM5LDMzIEBAIHN0YXRpYyBjb25zdCBzdHJ1 Y3Qgc25kX2RtYWVuZ2luZV9wY21fY29uZmlnIHV4NTAwX2RtYWVuZ2luZV9wY21fY29uZmlnID0g ewogCS5wcmVwYXJlX3NsYXZlX2NvbmZpZyA9IHV4NTAwX3BjbV9wcmVwYXJlX3NsYXZlX2NvbmZp ZywKIH07CiAKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc25kX2RtYWVuZ2luZV9wY21fY29uZmlnIHV4 NTAwX2RtYWVuZ2luZV9vZl9wY21fY29uZmlnID0geworCS5wY21faGFyZHdhcmUgPSAmdXg1MDBf cGNtX2h3LAorCS5wcmVhbGxvY19idWZmZXJfc2l6ZSA9IDEyOCAqIDEwMjQsCisJLnByZXBhcmVf c2xhdmVfY29uZmlnID0gc25kX2RtYWVuZ2luZV9wY21fcHJlcGFyZV9zbGF2ZV9jb25maWcsCit9 OworCiBpbnQgdXg1MDBfcGNtX3JlZ2lzdGVyX3BsYXRmb3JtKHN0cnVjdCBwbGF0Zm9ybV9kZXZp Y2UgKnBkZXYpCiB7CisJY29uc3Qgc3RydWN0IHNuZF9kbWFlbmdpbmVfcGNtX2NvbmZpZyAqcGNt X2NvbmZpZzsKKwlzdHJ1Y3QgZGV2aWNlX25vZGUgKm5wID0gcGRldi0+ZGV2Lm9mX25vZGU7CisJ dW5zaWduZWQgaW50IHBjbV9mbGFnczsKIAlpbnQgcmV0OwogCi0JcmV0ID0gc25kX2RtYWVuZ2lu ZV9wY21fcmVnaXN0ZXIoJnBkZXYtPmRldiwKLQkJCSZ1eDUwMF9kbWFlbmdpbmVfcGNtX2NvbmZp ZywKLQkJCVNORF9ETUFFTkdJTkVfUENNX0ZMQUdfTk9fUkVTSURVRSB8Ci0JCQlTTkRfRE1BRU5H SU5FX1BDTV9GTEFHX0NPTVBBVCB8Ci0JCQlTTkRfRE1BRU5HSU5FX1BDTV9GTEFHX05PX0RUKTsK KwlpZiAobnApIHsKKwkJcGNtX2NvbmZpZyA9ICZ1eDUwMF9kbWFlbmdpbmVfb2ZfcGNtX2NvbmZp ZzsKKworCQlwY21fZmxhZ3MgPSBTTkRfRE1BRU5HSU5FX1BDTV9GTEFHX05PX1JFU0lEVUUgfAor CQkJU05EX0RNQUVOR0lORV9QQ01fRkxBR19DT01QQVQ7CisJfSBlbHNlIHsKKwkJcGNtX2NvbmZp ZyA9ICZ1eDUwMF9kbWFlbmdpbmVfcGNtX2NvbmZpZzsKKworCQlwY21fZmxhZ3MgPSBTTkRfRE1B RU5HSU5FX1BDTV9GTEFHX05PX1JFU0lEVUUgfAorCQkJU05EX0RNQUVOR0lORV9QQ01fRkxBR19O T19EVCB8CisJCQlTTkRfRE1BRU5HSU5FX1BDTV9GTEFHX0NPTVBBVDsKKwl9CisKKwlyZXQgPSBz bmRfZG1hZW5naW5lX3BjbV9yZWdpc3RlcigmcGRldi0+ZGV2LCBwY21fY29uZmlnLCBwY21fZmxh Z3MpOwogCWlmIChyZXQgPCAwKSB7CiAJCWRldl9lcnIoJnBkZXYtPmRldiwKIAkJCSIlczogRVJS T1I6IEZhaWxlZCB0byByZWdpc3RlciBwbGF0Zm9ybSAnJXMnICglZCkhXG4iLAoKLS0gCkxlZSBK b25lcwpMaW5hcm8gU1RNaWNyb2VsZWN0cm9uaWNzIExhbmRpbmcgVGVhbSBMZWFkCkxpbmFyby5v cmcg4pSCIE9wZW4gc291cmNlIHNvZnR3YXJlIGZvciBBUk0gU29DcwpGb2xsb3cgTGluYXJvOiBG YWNlYm9vayB8IFR3aXR0ZXIgfCBCbG9nCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fCkFsc2EtZGV2ZWwgbWFpbGluZyBsaXN0CkFsc2EtZGV2ZWxAYWxzYS1w cm9qZWN0Lm9yZwpodHRwOi8vbWFpbG1hbi5hbHNhLXByb2plY3Qub3JnL21haWxtYW4vbGlzdGlu Zm8vYWxzYS1kZXZlbAo= From mboxrd@z Thu Jan 1 00:00:00 1970 From: lee.jones@linaro.org (Lee Jones) Date: Mon, 2 Dec 2013 10:12:56 +0000 Subject: [alsa-devel] [PATCH 07/10] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case In-Reply-To: References: <1384859269-19801-1-git-send-email-lee.jones@linaro.org> <1384859269-19801-8-git-send-email-lee.jones@linaro.org> Message-ID: <20131202101256.GA29373@lee--X1> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org On Sun, 01 Dec 2013, Olof Johansson wrote: > Hi, > > On Tue, Nov 19, 2013 at 3:07 AM, Lee Jones wrote: > > In this patch we do two things. Firstly, instead of open coding the > > store of DMA data in to the DAI for later use, we use the API provided. > > Secondly we create and store similar DMA data for the DT case, only > > this time we use 'struct snd_dmaengine_dai_dma_data' which is provided > > by the core for this very reason. > > > > Cc: alsa-devel at alsa-project.org > > Cc: Mark Brown > > Acked-by: Linus Walleij > > Signed-off-by: Lee Jones > > > Seems like this hit -next for the first time today, and it panics > snowball on boot of u8500_defconfig. I bisected down to this patch. > > The panic is below. Last output is the dev_dbg() in > ux500_pcm_request_chan. dma_cfg seems to be 0x0000004(!) at that > point. It's indeed crashing on first deref of dma_cfg (confirmed via > addr2line). Okay, I just debugged this. It's actually my fault. I had two patches round the wrong way in the series. The imediately subsequent patch in the set fixes this issue: Author: Lee Jones Date: Tue Nov 5 22:57:31 2013 +0000 ASoC: ux500_pcm: Differentiate between pdata and DT initialisation If booting with full DT support (i.e. DMA too, the last piece of the puzzle), then we don't need to use the compatible request channel call back and, due to the work we laid down earlier in this patch-set, we can use core function calls to populate the DMA slave_config. We also require slightly different flags to inform the core that we 'are' booting with DT. Cc: alsa-devel at alsa-project.org Cc: Mark Brown Acked-by: Linus Walleij Signed-off-by: Lee Jones diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c index ce554de..acfec98 100644 --- a/sound/soc/ux500/ux500_pcm.c +++ b/sound/soc/ux500/ux500_pcm.c @@ -139,15 +139,33 @@ static const struct snd_dmaengine_pcm_config ux500_dmaengine_pcm_config = { .prepare_slave_config = ux500_pcm_prepare_slave_config, }; +static const struct snd_dmaengine_pcm_config ux500_dmaengine_of_pcm_config = { + .pcm_hardware = &ux500_pcm_hw, + .prealloc_buffer_size = 128 * 1024, + .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config, +}; + int ux500_pcm_register_platform(struct platform_device *pdev) { + const struct snd_dmaengine_pcm_config *pcm_config; + struct device_node *np = pdev->dev.of_node; + unsigned int pcm_flags; int ret; - ret = snd_dmaengine_pcm_register(&pdev->dev, - &ux500_dmaengine_pcm_config, - SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | - SND_DMAENGINE_PCM_FLAG_COMPAT | - SND_DMAENGINE_PCM_FLAG_NO_DT); + if (np) { + pcm_config = &ux500_dmaengine_of_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } else { + pcm_config = &ux500_dmaengine_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_NO_DT | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } + + ret = snd_dmaengine_pcm_register(&pdev->dev, pcm_config, pcm_flags); if (ret < 0) { dev_err(&pdev->dev, "%s: ERROR: Failed to register platform '%s' (%d)!\n", -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org ? Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1753169Ab3LBKNH (ORCPT ); Mon, 2 Dec 2013 05:13:07 -0500 Received: from mail-ie0-f169.google.com ([209.85.223.169]:39736 "EHLO mail-ie0-f169.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752632Ab3LBKNC (ORCPT ); Mon, 2 Dec 2013 05:13:02 -0500 Date: Mon, 2 Dec 2013 10:12:56 +0000 From: Lee Jones To: Olof Johansson Cc: "linux-arm-kernel@lists.infradead.org" , "linux-kernel@vger.kernel.org" , LinusW , Mark Brown , "alsa-devel@alsa-project.org" Subject: Re: [alsa-devel] [PATCH 07/10] ASoC: ux500: Store DMA data in the DAI differently in the pdata and DT case Message-ID: <20131202101256.GA29373@lee--X1> References: <1384859269-19801-1-git-send-email-lee.jones@linaro.org> <1384859269-19801-8-git-send-email-lee.jones@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: User-Agent: Mutt/1.5.21 (2010-09-15) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Sun, 01 Dec 2013, Olof Johansson wrote: > Hi, > > On Tue, Nov 19, 2013 at 3:07 AM, Lee Jones wrote: > > In this patch we do two things. Firstly, instead of open coding the > > store of DMA data in to the DAI for later use, we use the API provided. > > Secondly we create and store similar DMA data for the DT case, only > > this time we use 'struct snd_dmaengine_dai_dma_data' which is provided > > by the core for this very reason. > > > > Cc: alsa-devel@alsa-project.org > > Cc: Mark Brown > > Acked-by: Linus Walleij > > Signed-off-by: Lee Jones > > > Seems like this hit -next for the first time today, and it panics > snowball on boot of u8500_defconfig. I bisected down to this patch. > > The panic is below. Last output is the dev_dbg() in > ux500_pcm_request_chan. dma_cfg seems to be 0x0000004(!) at that > point. It's indeed crashing on first deref of dma_cfg (confirmed via > addr2line). Okay, I just debugged this. It's actually my fault. I had two patches round the wrong way in the series. The imediately subsequent patch in the set fixes this issue: Author: Lee Jones Date: Tue Nov 5 22:57:31 2013 +0000 ASoC: ux500_pcm: Differentiate between pdata and DT initialisation If booting with full DT support (i.e. DMA too, the last piece of the puzzle), then we don't need to use the compatible request channel call back and, due to the work we laid down earlier in this patch-set, we can use core function calls to populate the DMA slave_config. We also require slightly different flags to inform the core that we 'are' booting with DT. Cc: alsa-devel@alsa-project.org Cc: Mark Brown Acked-by: Linus Walleij Signed-off-by: Lee Jones diff --git a/sound/soc/ux500/ux500_pcm.c b/sound/soc/ux500/ux500_pcm.c index ce554de..acfec98 100644 --- a/sound/soc/ux500/ux500_pcm.c +++ b/sound/soc/ux500/ux500_pcm.c @@ -139,15 +139,33 @@ static const struct snd_dmaengine_pcm_config ux500_dmaengine_pcm_config = { .prepare_slave_config = ux500_pcm_prepare_slave_config, }; +static const struct snd_dmaengine_pcm_config ux500_dmaengine_of_pcm_config = { + .pcm_hardware = &ux500_pcm_hw, + .prealloc_buffer_size = 128 * 1024, + .prepare_slave_config = snd_dmaengine_pcm_prepare_slave_config, +}; + int ux500_pcm_register_platform(struct platform_device *pdev) { + const struct snd_dmaengine_pcm_config *pcm_config; + struct device_node *np = pdev->dev.of_node; + unsigned int pcm_flags; int ret; - ret = snd_dmaengine_pcm_register(&pdev->dev, - &ux500_dmaengine_pcm_config, - SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | - SND_DMAENGINE_PCM_FLAG_COMPAT | - SND_DMAENGINE_PCM_FLAG_NO_DT); + if (np) { + pcm_config = &ux500_dmaengine_of_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } else { + pcm_config = &ux500_dmaengine_pcm_config; + + pcm_flags = SND_DMAENGINE_PCM_FLAG_NO_RESIDUE | + SND_DMAENGINE_PCM_FLAG_NO_DT | + SND_DMAENGINE_PCM_FLAG_COMPAT; + } + + ret = snd_dmaengine_pcm_register(&pdev->dev, pcm_config, pcm_flags); if (ret < 0) { dev_err(&pdev->dev, "%s: ERROR: Failed to register platform '%s' (%d)!\n", -- Lee Jones Linaro STMicroelectronics Landing Team Lead Linaro.org │ Open source software for ARM SoCs Follow Linaro: Facebook | Twitter | Blog