From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Subject: [5/5] dmaengine: sprd: Add 'device_config' and 'device_prep_slave_sg' interfaces From: Baolin Wang Message-Id: Date: Wed, 11 Apr 2018 18:51:29 +0800 To: Vinod Koul Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML List-ID: SGkgVmlub2QsCgpPbiAxMSBBcHJpbCAyMDE4IGF0IDE3OjQwLCBWaW5vZCBLb3VsIDx2aW5vZC5r b3VsQGludGVsLmNvbT4gd3JvdGU6Cj4gT24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDM6NDY6MDdQ TSArMDgwMCwgQmFvbGluIFdhbmcgd3JvdGU6Cj4+IFRoaXMgcGF0Y2ggYWRkcyB0aGUgJ2Rldmlj ZV9jb25maWcnIGFuZCAnZGV2aWNlX3ByZXBfc2xhdmVfc2cnIGludGVyZmFjZXMKPj4gZm9yIHVz ZXJzIHRvIGNvbmZpZ3VyZSBETUEuCj4+Cj4+IFNpZ25lZC1vZmYtYnk6IEJhb2xpbiBXYW5nIDxi YW9saW4ud2FuZ0BsaW5hcm8ub3JnPgo+PiAtLS0KPj4gIGRyaXZlcnMvZG1hL3NwcmQtZG1hLmMg fCAgIDQ4ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwo+ PiAgMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKPj4KPj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZG1hL3NwcmQtZG1hLmMgYi9kcml2ZXJzL2RtYS9zcHJkLWRtYS5jCj4+IGluZGV4IGY4 MDM4ZGUuLmM5MjNmYjAgMTAwNjQ0Cj4+IC0tLSBhL2RyaXZlcnMvZG1hL3NwcmQtZG1hLmMKPj4g KysrIGIvZHJpdmVycy9kbWEvc3ByZC1kbWEuYwo+PiBAQCAtODY5LDYgKzg2OSw1MiBAQCBzdGF0 aWMgaW50IHNwcmRfZG1hX2NvbmZpZyhzdHJ1Y3QgZG1hX2NoYW4gKmNoYW4sIHN0cnVjdCBzcHJk X2RtYV9kZXNjICpzZGVzYywKPj4gICAgICAgcmV0dXJuIHZjaGFuX3R4X3ByZXAoJnNjaGFuLT52 YywgJnNkZXNjLT52ZCwgZmxhZ3MpOwo+PiAgfQo+Pgo+PiArc3RhdGljIHN0cnVjdCBkbWFfYXN5 bmNfdHhfZGVzY3JpcHRvciAqCj4+ICtzcHJkX2RtYV9wcmVwX3NsYXZlX3NnKHN0cnVjdCBkbWFf Y2hhbiAqY2hhbiwgc3RydWN0IHNjYXR0ZXJsaXN0ICpzZ2wsCj4+ICsgICAgICAgICAgICAgICAg ICAgIHVuc2lnbmVkIGludCBzZ2xlbiwgZW51bSBkbWFfdHJhbnNmZXJfZGlyZWN0aW9uIGRpciwK Pj4gKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgbG9uZyBmbGFncywgdm9pZCAqY29udGV4 dCkKPj4gK3sKPj4gKyAgICAgc3RydWN0IHNwcmRfZG1hX2NobiAqc2NoYW4gPSB0b19zcHJkX2Rt YV9jaGFuKGNoYW4pOwo+PiArICAgICBzdHJ1Y3Qgc3ByZF9kbWFfY29uZmlnICpzbGF2ZV9jZmcg PSAmc2NoYW4tPnNsYXZlX2NmZzsKPj4gKyAgICAgc3RydWN0IHNwcmRfZG1hX2Rlc2MgKnNkZXNj Owo+PiArICAgICBzdHJ1Y3Qgc2NhdHRlcmxpc3QgKnNnOwo+PiArICAgICBpbnQgcmV0LCBpOwo+ PiArCj4+ICsgICAgIC8qIFRPRE86IG5vdyB3ZSBvbmx5IHN1cHBvcnQgb25lIHNnIGZvciBlYWNo IERNQSBjb25maWd1cmF0aW9uLiAqLwo+PiArICAgICBpZiAoIWlzX3NsYXZlX2RpcmVjdGlvbihz bGF2ZV9jZmctPmNvbmZpZy5kaXJlY3Rpb24pIHx8IHNnbGVuID4gMSkKPgo+IHRoZSBzbGF2ZSBk aXJlY3Rpb24gY2hlY2sgc2VlbXMgd3JvbmcgdG8gbWUuIC5kZXZpY2VfY29uZmlnIHNoYWxsIGdp dmUgeW91Cj4gZG1hX3NsYXZlX2NvbmZpZy4gWW91IHNob3VsZCBjaGVjayBoZXJlIGlmIGRpciBw YXNzZWQgaXMgc2xhdmUgb3Igbm90LiBJZgo+IHlvdSB3YW50IHRvIGNoZWNrIHBhcmFtZXRlcnMg aW4gc2xhdmVfY29uZmlnIHRoZW4gcGxlYXNlIHVzZSAuZGV2aWNlX2NvbmZpZwoKQ29ycmVjdC4g U29ycnkgSSBtaXNzZWQgdGhpcyBhbmQgSSB3aWxsIGZpeCBpdCBpbiBuZXh0IHZlcnNpb24uCgo+ Cj4+ICsgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Cj4+ICsKPj4gKyAgICAgc2Rlc2MgPSBremFs bG9jKHNpemVvZigqc2Rlc2MpLCBHRlBfTk9XQUlUKTsKPj4gKyAgICAgaWYgKCFzZGVzYykKPj4g KyAgICAgICAgICAgICByZXR1cm4gTlVMTDsKPj4gKwo+PiArICAgICBmb3JfZWFjaF9zZyhzZ2ws IHNnLCBzZ2xlbiwgaSkgewo+PiArICAgICAgICAgICAgIGlmIChzbGF2ZV9jZmctPmNvbmZpZy5k aXJlY3Rpb24gPT0gRE1BX01FTV9UT19ERVYpCj4+ICsgICAgICAgICAgICAgICAgICAgICBzbGF2 ZV9jZmctPmNvbmZpZy5zcmNfYWRkciA9IHNnX2RtYV9hZGRyZXNzKHNnKTsKPgo+IE5vcGUgc2xh dmVfY29uZmlnIHNwZWNpZmllcyBwZXJpcGhlcmFsIGFkZHJlc3MgYW5kIG5vdCBtZW1vcnkgb25l IHBhc3NlZCBoZXJlCgpPSy4gVGhhbmtzIGZvciB5b3VyIGNvbW1lbnRzLgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752740AbeDKKvc (ORCPT ); Wed, 11 Apr 2018 06:51:32 -0400 Received: from mail-oi0-f66.google.com ([209.85.218.66]:43086 "EHLO mail-oi0-f66.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751729AbeDKKva (ORCPT ); Wed, 11 Apr 2018 06:51:30 -0400 X-Google-Smtp-Source: AIpwx4+AxMaX5HgYQYGrT9vMnUGfpZy3W5sz/130q1khqEffuKdFN5jIyCr/FjFv8CyZT9tJruEg8qyXQul4IRFiL18= MIME-Version: 1.0 In-Reply-To: <20180411094000.GD6014@localhost> References: <0a9fa618bd74e74c135ebee2e40b30d361c1d905.1523346135.git.baolin.wang@linaro.org> <20180411094000.GD6014@localhost> From: Baolin Wang Date: Wed, 11 Apr 2018 18:51:29 +0800 Message-ID: Subject: Re: [PATCH 5/5] dmaengine: sprd: Add 'device_config' and 'device_prep_slave_sg' interfaces To: Vinod Koul Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Vinod, On 11 April 2018 at 17:40, Vinod Koul wrote: > On Tue, Apr 10, 2018 at 03:46:07PM +0800, Baolin Wang wrote: >> This patch adds the 'device_config' and 'device_prep_slave_sg' interfaces >> for users to configure DMA. >> >> Signed-off-by: Baolin Wang >> --- >> drivers/dma/sprd-dma.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ >> 1 file changed, 48 insertions(+) >> >> diff --git a/drivers/dma/sprd-dma.c b/drivers/dma/sprd-dma.c >> index f8038de..c923fb0 100644 >> --- a/drivers/dma/sprd-dma.c >> +++ b/drivers/dma/sprd-dma.c >> @@ -869,6 +869,52 @@ static int sprd_dma_config(struct dma_chan *chan, struct sprd_dma_desc *sdesc, >> return vchan_tx_prep(&schan->vc, &sdesc->vd, flags); >> } >> >> +static struct dma_async_tx_descriptor * >> +sprd_dma_prep_slave_sg(struct dma_chan *chan, struct scatterlist *sgl, >> + unsigned int sglen, enum dma_transfer_direction dir, >> + unsigned long flags, void *context) >> +{ >> + struct sprd_dma_chn *schan = to_sprd_dma_chan(chan); >> + struct sprd_dma_config *slave_cfg = &schan->slave_cfg; >> + struct sprd_dma_desc *sdesc; >> + struct scatterlist *sg; >> + int ret, i; >> + >> + /* TODO: now we only support one sg for each DMA configuration. */ >> + if (!is_slave_direction(slave_cfg->config.direction) || sglen > 1) > > the slave direction check seems wrong to me. .device_config shall give you > dma_slave_config. You should check here if dir passed is slave or not. If > you want to check parameters in slave_config then please use .device_config Correct. Sorry I missed this and I will fix it in next version. > >> + return NULL; >> + >> + sdesc = kzalloc(sizeof(*sdesc), GFP_NOWAIT); >> + if (!sdesc) >> + return NULL; >> + >> + for_each_sg(sgl, sg, sglen, i) { >> + if (slave_cfg->config.direction == DMA_MEM_TO_DEV) >> + slave_cfg->config.src_addr = sg_dma_address(sg); > > Nope slave_config specifies peripheral address and not memory one passed here OK. Thanks for your comments. -- Baolin.wang Best Regards