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: [4/5] dmaengine: sprd: Add Spreadtrum DMA configuration From: Baolin Wang Message-Id: Date: Wed, 11 Apr 2018 20:13:28 +0800 To: Vinod Koul Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML List-ID: SGkgVmlub2QsCgpPbiAxMSBBcHJpbCAyMDE4IGF0IDE3OjM2LCBWaW5vZCBLb3VsIDx2aW5vZC5r b3VsQGludGVsLmNvbT4gd3JvdGU6Cj4gT24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDM6NDY6MDZQ TSArMDgwMCwgQmFvbGluIFdhbmcgd3JvdGU6Cj4KPj4gKy8qCj4+ICsgKiBzdHJ1Y3Qgc3ByZF9k bWFfY29uZmlnIC0gRE1BIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCj4+ICsgKiBAY29uZmlnOiBk bWEgc2xhdmUgY2hhbm5lbCBjb25maWcKPj4gKyAqIEBmcmFnbWVudF9sZW46IHNwZWNpZnkgb25l IGZyYWdtZW50IHRyYW5zZmVyIGxlbmd0aAo+PiArICogQGJsb2NrX2xlbjogc3BlY2lmeSBvbmUg YmxvY2sgdHJhbnNmZXIgbGVuZ3RoCj4+ICsgKiBAdHJhbnNjYXRpb25fbGVuOiBzcGVjaWZ5IG9u ZSB0cmFuc2NhdGlvbiB0cmFuc2ZlciBsZW5ndGgKPj4gKyAqIEB3cmFwX3B0cjogd3JhcCBwb2lu dGVyIGFkZHJlc3MsIG9uY2UgdGhlIHRyYW5zZmVyIGFkZHJlc3MgcmVhY2hlcyB0aGUKPj4gKyAq ICd3cmFwX3B0cicsIHRoZSBuZXh0IHRyYW5zZmVyIGFkZHJlc3Mgd2lsbCBqdW1wIHRvIHRoZSAn d3JhcF90bycgYWRkcmVzcy4KPj4gKyAqIEB3cmFwX3RvOiB3cmFwIGp1bXAgdG8gYWRkcmVzcwo+ PiArICogQHJlcV9tb2RlOiBzcGVjaWZ5IHRoZSBETUEgcmVxdWVzdCBtb2RlCj4+ICsgKiBAaW50 X21vZGU6IHNwZWNpZnkgdGhlIERNQSBpbnRlcnJ1cHQgdHlwZQo+PiArICovCj4+ICtzdHJ1Y3Qg c3ByZF9kbWFfY29uZmlnIHsKPj4gKyAgICAgc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgY29uZmln Owo+PiArICAgICB1MzIgZnJhZ21lbnRfbGVuOwo+Cj4gd2h5IG5vdCB1c2UgX21heGJ1cnN0PwoK WWVzLCBJIGNhbiB1c2UgbWF4YnVyc3QuCgo+Cj4+ICsgICAgIHUzMiBibG9ja19sZW47Cj4+ICsg ICAgIHUzMiB0cmFuc2NhdGlvbl9sZW47Cj4KPiB3aGF0IGRvZXMgYmxvY2sgYW5kIHRyYW5zYWN0 aW9uIGxlbiByZWZlciB0byBoZXJlCgogT3VyIERNQSBoYXMgMyB0cmFuc2ZlciBtb2RlOiB0cmFu c2FjdGlvbiB0cmFuc2ZlciwgYmxvY2sgdHJhbnNmZXIgYW5kCmZyYWdtZW50IHRyYW5zZmVyLiBP bmUgdHJhbnNhY3Rpb24gdHJhbnNmZXIgY2FuIGNvbnRhaW4gc2V2ZXJhbCBibG9ja3MKdHJhbnNm ZXIsIGFuZCBlYWNoIGJsb2NrIGNhbiBiZSBzZXQgcHJvcGVyIGJsb2NrIHN0ZXAuIE9uZSBibG9j ayBjYW4KY29udGFpbiBzZXZlcmFsIGZyYWdtZW50cyB0cmFuc2ZlciB3aXRoIHByb3BlciBmcmFn bWVudCBzdGVwLiBJdCBjYW4KZ2VuZXJhdGUgaW50ZXJydXB0cyB3aGVuIG9uZSB0cmFuc2FjdGlv biB0cmFuc2ZlciBvciBibG9jayB0cmFuc2ZlciBvcgpmcmFnbWVudCB0cmFuc2ZlciBpcyBjb21w bGV0ZWQgaWYgdXNlciBzZXQgdGhlIGludGVycnVwdCB0eXBlLiBTbyBoZXJlCndlIHNob3VsZCBz ZXQgdGhlIGxlbmd0aCBmb3IgdHJhbnNhY3Rpb24gdHJhbnNmZXIsIGJsb2NrIHRyYW5zZmVyIGFu ZApmcmFnbWVudCB0cmFuc2Zlci4KCj4KPj4gKyAgICAgcGh5c19hZGRyX3Qgd3JhcF9wdHI7Cj4+ ICsgICAgIHBoeXNfYWRkcl90IHdyYXBfdG87Cj4KPiB0aGlzIHNvdW5kIHNnX2xpc3QgdG8gbWUs IHdoeSBhcmUgd2Ugbm90IHVzaW5nIHRoYXQgaGVyZQoKSXQgaXMgc2ltaWxhciB0byBzZyBsaXN0 LCBidXQgaXQgaXMgbm90IG9uZSBzb2Z0d2FyZSBhY3Rpb24sIHdlIGhhdmUKaGFyZHdhcmUgcmVn aXN0ZXJzIHRvIGhlbHAgdG8ganVtcCBvbmUgc3BlY2lmaWVkIGFkZHJlc3MuCgo+Cj4+ICsgICAg IGVudW0gc3ByZF9kbWFfcmVxX21vZGUgcmVxX21vZGU7Cj4KPiBMb29raW5nIGF0IGRlZmluaXRp b24gb2YgcmVxdWVzdCBtb2RlIHdlIGhhdmUgZnJhZywgYmxvY2ssIHRyYW5zYWN0aW9uIGxpc3QK PiBldGMuLiBUaGF0IHNob3VsZCBkZXBlbmQgdXBvbiBkbWEgcmVxdWVzdC4gSWYgeW91IGhhdmUg YmVlbiBhc2tlZCB0bwo+IHRyYW5zZmVyIGEgbGlzdCwgeW91IHNoYWxsIGNvbmZpZ3VyZSBsaXN0 IG1vZGUuIGlmIGl0IGlzIGEgc2luZ2xlCj4gdHJhbnNhY3Rpb24gdGhlbiBpdCBzaG91bGQgYmUg dHJhbnNhY3Rpb24gbW9kZSEKCklmIEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50cyBjb3JyZWN0bHks IHlvdSBtZWFuIHdlIGNhbiBzcGVjaWZ5IHRoZQpyZXF1ZXN0IG1vZGUgd2hlbiByZXF1ZXN0aW5n IG9uZSBzbGF2ZSBjaGFubmVsIGJ5CidkbWFfcmVxdWVzdF9zbGF2ZV9jaGFubmVsKCknLiBCdXQg d2UgbmVlZCBjaGFuZ2UgdGhlIHJlcXVlc3QgbW9kZQpkeW5hbWljYWxseSBmb2xsb3dpbmcgZGlm ZmVyZW50IHRyYW5zZmVyIHRhc2sgZm9yIHRoaXMgY2hhbm5lbCwgc28gSQphbSBhZnJhaWQgd2Ug Y2FuIG5vdCBzcGVjaWZ5IHRoZSByZXF1ZXN0IG1vZGUgb2YgdGhpcyBjaGFubmVsIGF0CnJlcXVl c3RpbmcgdGltZS4KCj4KPj4gKyAgICAgZW51bSBzcHJkX2RtYV9pbnRfdHlwZSBpbnRfbW9kZTsK Pgo+IEhlcmUgYWdhaW4gSSB0aGluayBkcml2ZXIgbmVlZHMgdG8gdGFrZSBhIGNhbGwgYmFzZWQg b24gZG1hX2N0cmxfZmxhZ3MuCgpUaGUgJ2RtYV9jdHJsX2ZsYWdzJyBkZWZpbmVzIERNQV9QUkVQ X0lOVEVSUlVQVCBmbGFnIHRvIGluZGljYXRlIGlmIGEKaW50ZXJydXB0IGlzIG5lZWRlZCBhZnRl ciB0cmFuc2ZlciwgYnV0IGl0IGNhbiBub3QgZGlzdGluZ3Vpc2gKU3ByZWFkdHJ1bSBzcGVjaWFs IGludGVycnVwdCB0eXBlIG9mIERNQS4gU28gY2FuIEkgcGFzcyB0aGUgaW50ZXJydXB0CnR5cGUg YXMgb25lIHBhcmFtZXRlciBmb3IgJ2RldmljZV9wcmVwX3NsYXZlX3NnJyBpbnRlcmZhY2U/CgpW ZXJ5IGFwcHJlY2lhdGVkIGZvciB5b3VyIHVzZWZ1bCBjb21tZW50cy4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752940AbeDKMNb (ORCPT ); Wed, 11 Apr 2018 08:13:31 -0400 Received: from mail-oi0-f50.google.com ([209.85.218.50]:45979 "EHLO mail-oi0-f50.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752482AbeDKMN3 (ORCPT ); Wed, 11 Apr 2018 08:13:29 -0400 X-Google-Smtp-Source: AIpwx4+WPHrNnfUPXLC4FGEU5wSzVLnp9AAvclaHfts9uYkGGcXacmnJ/a5MzQxlS8UCypS7mZzCwwuIfK7w77XaxmY= MIME-Version: 1.0 In-Reply-To: <20180411093634.GC6014@localhost> References: <0c2b76aba6a49e583f920ae582d6815fa9cc4361.1523346135.git.baolin.wang@linaro.org> <20180411093634.GC6014@localhost> From: Baolin Wang Date: Wed, 11 Apr 2018 20:13:28 +0800 Message-ID: Subject: Re: [PATCH 4/5] dmaengine: sprd: Add Spreadtrum DMA configuration 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:36, Vinod Koul wrote: > On Tue, Apr 10, 2018 at 03:46:06PM +0800, Baolin Wang wrote: > >> +/* >> + * struct sprd_dma_config - DMA configuration structure >> + * @config: dma slave channel config >> + * @fragment_len: specify one fragment transfer length >> + * @block_len: specify one block transfer length >> + * @transcation_len: specify one transcation transfer length >> + * @wrap_ptr: wrap pointer address, once the transfer address reaches the >> + * 'wrap_ptr', the next transfer address will jump to the 'wrap_to' address. >> + * @wrap_to: wrap jump to address >> + * @req_mode: specify the DMA request mode >> + * @int_mode: specify the DMA interrupt type >> + */ >> +struct sprd_dma_config { >> + struct dma_slave_config config; >> + u32 fragment_len; > > why not use _maxburst? Yes, I can use maxburst. > >> + u32 block_len; >> + u32 transcation_len; > > what does block and transaction len refer to here Our DMA has 3 transfer mode: transaction transfer, block transfer and fragment transfer. One transaction transfer can contain several blocks transfer, and each block can be set proper block step. One block can contain several fragments transfer with proper fragment step. It can generate interrupts when one transaction transfer or block transfer or fragment transfer is completed if user set the interrupt type. So here we should set the length for transaction transfer, block transfer and fragment transfer. > >> + phys_addr_t wrap_ptr; >> + phys_addr_t wrap_to; > > this sound sg_list to me, why are we not using that here It is similar to sg list, but it is not one software action, we have hardware registers to help to jump one specified address. > >> + enum sprd_dma_req_mode req_mode; > > Looking at definition of request mode we have frag, block, transaction list > etc.. That should depend upon dma request. If you have been asked to > transfer a list, you shall configure list mode. if it is a single > transaction then it should be transaction mode! If I understand your points correctly, you mean we can specify the request mode when requesting one slave channel by 'dma_request_slave_channel()'. But we need change the request mode dynamically following different transfer task for this channel, so I am afraid we can not specify the request mode of this channel at requesting time. > >> + enum sprd_dma_int_type int_mode; > > Here again I think driver needs to take a call based on dma_ctrl_flags. The 'dma_ctrl_flags' defines DMA_PREP_INTERRUPT flag to indicate if a interrupt is needed after transfer, but it can not distinguish Spreadtrum special interrupt type of DMA. So can I pass the interrupt type as one parameter for 'device_prep_slave_sg' interface? Very appreciated for your useful comments. -- Baolin.wang Best Regards