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: Thu, 12 Apr 2018 19:30:01 +0800 To: Vinod Koul Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML List-ID: SGkgVmlub2QsCgpPbiAxMiBBcHJpbCAyMDE4IGF0IDE3OjM3LCBWaW5vZCBLb3VsIDx2aW5vZC5r b3VsQGludGVsLmNvbT4gd3JvdGU6Cj4gT24gV2VkLCBBcHIgMTEsIDIwMTggYXQgMDg6MTM6MjhQ TSArMDgwMCwgQmFvbGluIFdhbmcgd3JvdGU6Cj4+IEhpIFZpbm9kLAo+Pgo+PiBPbiAxMSBBcHJp bCAyMDE4IGF0IDE3OjM2LCBWaW5vZCBLb3VsIDx2aW5vZC5rb3VsQGludGVsLmNvbT4gd3JvdGU6 Cj4+ID4gT24gVHVlLCBBcHIgMTAsIDIwMTggYXQgMDM6NDY6MDZQTSArMDgwMCwgQmFvbGluIFdh bmcgd3JvdGU6Cj4+ID4KPj4gPj4gKy8qCj4+ID4+ICsgKiBzdHJ1Y3Qgc3ByZF9kbWFfY29uZmln IC0gRE1BIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJlCj4+ID4+ICsgKiBAY29uZmlnOiBkbWEgc2xh dmUgY2hhbm5lbCBjb25maWcKPj4gPj4gKyAqIEBmcmFnbWVudF9sZW46IHNwZWNpZnkgb25lIGZy YWdtZW50IHRyYW5zZmVyIGxlbmd0aAo+PiA+PiArICogQGJsb2NrX2xlbjogc3BlY2lmeSBvbmUg YmxvY2sgdHJhbnNmZXIgbGVuZ3RoCj4+ID4+ICsgKiBAdHJhbnNjYXRpb25fbGVuOiBzcGVjaWZ5 IG9uZSB0cmFuc2NhdGlvbiB0cmFuc2ZlciBsZW5ndGgKPj4gPj4gKyAqIEB3cmFwX3B0cjogd3Jh cCBwb2ludGVyIGFkZHJlc3MsIG9uY2UgdGhlIHRyYW5zZmVyIGFkZHJlc3MgcmVhY2hlcyB0aGUK Pj4gPj4gKyAqICd3cmFwX3B0cicsIHRoZSBuZXh0IHRyYW5zZmVyIGFkZHJlc3Mgd2lsbCBqdW1w IHRvIHRoZSAnd3JhcF90bycgYWRkcmVzcy4KPj4gPj4gKyAqIEB3cmFwX3RvOiB3cmFwIGp1bXAg dG8gYWRkcmVzcwo+PiA+PiArICogQHJlcV9tb2RlOiBzcGVjaWZ5IHRoZSBETUEgcmVxdWVzdCBt b2RlCj4+ID4+ICsgKiBAaW50X21vZGU6IHNwZWNpZnkgdGhlIERNQSBpbnRlcnJ1cHQgdHlwZQo+ PiA+PiArICovCj4+ID4+ICtzdHJ1Y3Qgc3ByZF9kbWFfY29uZmlnIHsKPj4gPj4gKyAgICAgc3Ry dWN0IGRtYV9zbGF2ZV9jb25maWcgY29uZmlnOwo+PiA+PiArICAgICB1MzIgZnJhZ21lbnRfbGVu Owo+PiA+Cj4+ID4gd2h5IG5vdCB1c2UgX21heGJ1cnN0Pwo+Pgo+PiBZZXMsIEkgY2FuIHVzZSBt YXhidXJzdC4KPj4KPj4gPgo+PiA+PiArICAgICB1MzIgYmxvY2tfbGVuOwo+PiA+PiArICAgICB1 MzIgdHJhbnNjYXRpb25fbGVuOwo+PiA+Cj4+ID4gd2hhdCBkb2VzIGJsb2NrIGFuZCB0cmFuc2Fj dGlvbiBsZW4gcmVmZXIgdG8gaGVyZQo+Pgo+PiAgT3VyIERNQSBoYXMgMyB0cmFuc2ZlciBtb2Rl OiB0cmFuc2FjdGlvbiB0cmFuc2ZlciwgYmxvY2sgdHJhbnNmZXIgYW5kCj4+IGZyYWdtZW50IHRy YW5zZmVyLiBPbmUgdHJhbnNhY3Rpb24gdHJhbnNmZXIgY2FuIGNvbnRhaW4gc2V2ZXJhbCBibG9j a3MKPj4gdHJhbnNmZXIsIGFuZCBlYWNoIGJsb2NrIGNhbiBiZSBzZXQgcHJvcGVyIGJsb2NrIHN0 ZXAuIE9uZSBibG9jayBjYW4KPj4gY29udGFpbiBzZXZlcmFsIGZyYWdtZW50cyB0cmFuc2ZlciB3 aXRoIHByb3BlciBmcmFnbWVudCBzdGVwLiBJdCBjYW4KPj4gZ2VuZXJhdGUgaW50ZXJydXB0cyB3 aGVuIG9uZSB0cmFuc2FjdGlvbiB0cmFuc2ZlciBvciBibG9jayB0cmFuc2ZlciBvcgo+PiBmcmFn bWVudCB0cmFuc2ZlciBpcyBjb21wbGV0ZWQgaWYgdXNlciBzZXQgdGhlIGludGVycnVwdCB0eXBl LiBTbyBoZXJlCj4+IHdlIHNob3VsZCBzZXQgdGhlIGxlbmd0aCBmb3IgdHJhbnNhY3Rpb24gdHJh bnNmZXIsIGJsb2NrIHRyYW5zZmVyIGFuZAo+PiBmcmFnbWVudCB0cmFuc2Zlci4KPgo+IHdoYXQg YXJlIHRoZSBtYXggc2l6ZSB0aGVzZSB0eXBlcyBzdXBwb3J0PwoKVGhlc2UgdHlwZXMgbWF4IHNp emUgZGVmaW5pdGlvbjoKCiNkZWZpbmUgU1BSRF9ETUFfRlJHX0xFTl9NQVNLIEdFTk1BU0soMTYs IDApCgojZGVmaW5lIFNQUkRfRE1BX0JMS19MRU5fTUFTSyBHRU5NQVNLKDE2LCAwKQoKI2RlZmlu ZSBTUFJEX0RNQV9UUlNDX0xFTl9NQVNLIEdFTk1BU0soMjcsIDApCgo+Pgo+PiA+Cj4+ID4+ICsg ICAgIHBoeXNfYWRkcl90IHdyYXBfcHRyOwo+PiA+PiArICAgICBwaHlzX2FkZHJfdCB3cmFwX3Rv Owo+PiA+Cj4+ID4gdGhpcyBzb3VuZCBzZ19saXN0IHRvIG1lLCB3aHkgYXJlIHdlIG5vdCB1c2lu ZyB0aGF0IGhlcmUKPj4KPj4gSXQgaXMgc2ltaWxhciB0byBzZyBsaXN0LCBidXQgaXQgaXMgbm90 IG9uZSBzb2Z0d2FyZSBhY3Rpb24sIHdlIGhhdmUKPj4gaGFyZHdhcmUgcmVnaXN0ZXJzIHRvIGhl bHAgdG8ganVtcCBvbmUgc3BlY2lmaWVkIGFkZHJlc3MuCj4+Cj4+ID4KPj4gPj4gKyAgICAgZW51 bSBzcHJkX2RtYV9yZXFfbW9kZSByZXFfbW9kZTsKPj4gPgo+PiA+IExvb2tpbmcgYXQgZGVmaW5p dGlvbiBvZiByZXF1ZXN0IG1vZGUgd2UgaGF2ZSBmcmFnLCBibG9jaywgdHJhbnNhY3Rpb24gbGlz dAo+PiA+IGV0Yy4uIFRoYXQgc2hvdWxkIGRlcGVuZCB1cG9uIGRtYSByZXF1ZXN0LiBJZiB5b3Ug aGF2ZSBiZWVuIGFza2VkIHRvCj4+ID4gdHJhbnNmZXIgYSBsaXN0LCB5b3Ugc2hhbGwgY29uZmln dXJlIGxpc3QgbW9kZS4gaWYgaXQgaXMgYSBzaW5nbGUKPj4gPiB0cmFuc2FjdGlvbiB0aGVuIGl0 IHNob3VsZCBiZSB0cmFuc2FjdGlvbiBtb2RlIQo+Pgo+PiBJZiBJIHVuZGVyc3RhbmQgeW91ciBw b2ludHMgY29ycmVjdGx5LCB5b3UgbWVhbiB3ZSBjYW4gc3BlY2lmeSB0aGUKPj4gcmVxdWVzdCBt b2RlIHdoZW4gcmVxdWVzdGluZyBvbmUgc2xhdmUgY2hhbm5lbCBieQo+PiAnZG1hX3JlcXVlc3Rf c2xhdmVfY2hhbm5lbCgpJy4gQnV0IHdlIG5lZWQgY2hhbmdlIHRoZSByZXF1ZXN0IG1vZGUKPj4g ZHluYW1pY2FsbHkgZm9sbG93aW5nIGRpZmZlcmVudCB0cmFuc2ZlciB0YXNrIGZvciB0aGlzIGNo YW5uZWwsIHNvIEkKPj4gYW0gYWZyYWlkIHdlIGNhbiBub3Qgc3BlY2lmeSB0aGUgcmVxdWVzdCBt b2RlIG9mIHRoaXMgY2hhbm5lbCBhdAo+PiByZXF1ZXN0aW5nIHRpbWUuCj4KPiBOb3BlIGEgY2hh bm5lbCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHJlcXVlc3QgdHlwZS4gWW91IHJlcXVlc3QgYW5k IGdyYWIgYQo+IGNoYW5uZWwuIFRoZW4geW91IHByZXBhcmUgYSBkZXNjcmlwdG9yIGZvciBhIGRt YSB0cmFuc2FjdGlvbi4gQmFzZWQgb24KPiB0cmFuc2FjdGlvbiByZXF1ZXN0ZWQgeW91IHNob3Vs ZCBpbnRlbGxpZ2VudGx5IGJyZWFrIGl0IGRvd24gYW5kIGNyZWF0ZSBhCj4gZGVzY3JpcHRvciB3 aGljaCB1c2VzIHRyYW5zYWN0aW9uL2Jsb2NrL2ZyYWdtZW50IHNvIHRoYXQgRE1BIHRocm91Z2hw dXQgaXMKPiBlZmZpY2llbnQuIElmIHByZXBhcmUgaGFzIHNnIGxpc3QgdGhlbiB5b3Ugc2hvdWxk IHVzZSBsaW5rIGxpc3QgbW9kZS4KPiBGdXJ0aGVyIGlmIHlvdSBzdXBwb3J0IG1heCBsZW5ndGgs IHNheSAxNktCIGFuZCByZXF1ZXN0IGlzIGZvciAyMEtCIHlvdSBtYXkKPiBicmVhayBpdCBkb3du IGZvciBsaW5rIGxpc3Qgd2l0aCB0d28gc2VnbWVudHMuCgpPSy4gU28gSSBjYW4gYWRkIG9uZSBt b3JlIGNlbGwgdG8gc3BlY2lmeSB0aGUgcmVxdWVzdCBtb2RlIGZvciB0aGlzIGNoYW5uZWwuCgpk bWFzID0gPCZhcGRtYSAxMSBTUFJEX0RNQV9CTEtfUkVRPgoKPgo+IEVhY2ggcHJlcCBjYWxsIGhh cyBmbGFncyBhc3NvY2lhdGVkLCB0aGF0IGNhbiBoZWxwIHlvdSBjb25maWd1cmUgaW50ZXJydXB0 Cj4gYmVoYXZpb3VyLgoKU291bmRzIHJlYXNvbmFibGUuIFRoYW5rcyBmb3IgeW91ciBjb21tZW50 cy4K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752355AbeDLLaD (ORCPT ); Thu, 12 Apr 2018 07:30:03 -0400 Received: from mail-oi0-f48.google.com ([209.85.218.48]:44143 "EHLO mail-oi0-f48.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750763AbeDLLaC (ORCPT ); Thu, 12 Apr 2018 07:30:02 -0400 X-Google-Smtp-Source: AIpwx4+WtjfDwqt7RZh+QIdp+xpsX+aQ81dQ8E3HrxWx7OHhTmTawYNyEIDCdE3lTnb0Af8gYbFAZS77qUQr9WCM1nQ= MIME-Version: 1.0 In-Reply-To: <20180412093735.GF6014@localhost> References: <0c2b76aba6a49e583f920ae582d6815fa9cc4361.1523346135.git.baolin.wang@linaro.org> <20180411093634.GC6014@localhost> <20180412093735.GF6014@localhost> From: Baolin Wang Date: Thu, 12 Apr 2018 19:30:01 +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 12 April 2018 at 17:37, Vinod Koul wrote: > On Wed, Apr 11, 2018 at 08:13:28PM +0800, Baolin Wang wrote: >> 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. > > what are the max size these types support? These types max size definition: #define SPRD_DMA_FRG_LEN_MASK GENMASK(16, 0) #define SPRD_DMA_BLK_LEN_MASK GENMASK(16, 0) #define SPRD_DMA_TRSC_LEN_MASK GENMASK(27, 0) >> >> > >> >> + 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. > > Nope a channel has nothing to do with request type. You request and grab a > channel. Then you prepare a descriptor for a dma transaction. Based on > transaction requested you should intelligently break it down and create a > descriptor which uses transaction/block/fragment so that DMA throughput is > efficient. If prepare has sg list then you should use link list mode. > Further if you support max length, say 16KB and request is for 20KB you may > break it down for link list with two segments. OK. So I can add one more cell to specify the request mode for this channel. dmas = <&apdma 11 SPRD_DMA_BLK_REQ> > > Each prep call has flags associated, that can help you configure interrupt > behaviour. Sounds reasonable. Thanks for your comments. -- Baolin.wang Best Regards