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: Vinod Koul Message-Id: <20180412093735.GF6014@localhost> Date: Thu, 12 Apr 2018 15:07:36 +0530 To: Baolin Wang Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML List-ID: T24gV2VkLCBBcHIgMTEsIDIwMTggYXQgMDg6MTM6MjhQTSArMDgwMCwgQmFvbGluIFdhbmcgd3Jv dGU6Cj4gSGkgVmlub2QsCj4gCj4gT24gMTEgQXByaWwgMjAxOCBhdCAxNzozNiwgVmlub2QgS291 bCA8dmlub2Qua291bEBpbnRlbC5jb20+IHdyb3RlOgo+ID4gT24gVHVlLCBBcHIgMTAsIDIwMTgg YXQgMDM6NDY6MDZQTSArMDgwMCwgQmFvbGluIFdhbmcgd3JvdGU6Cj4gPgo+ID4+ICsvKgo+ID4+ ICsgKiBzdHJ1Y3Qgc3ByZF9kbWFfY29uZmlnIC0gRE1BIGNvbmZpZ3VyYXRpb24gc3RydWN0dXJl Cj4gPj4gKyAqIEBjb25maWc6IGRtYSBzbGF2ZSBjaGFubmVsIGNvbmZpZwo+ID4+ICsgKiBAZnJh Z21lbnRfbGVuOiBzcGVjaWZ5IG9uZSBmcmFnbWVudCB0cmFuc2ZlciBsZW5ndGgKPiA+PiArICog QGJsb2NrX2xlbjogc3BlY2lmeSBvbmUgYmxvY2sgdHJhbnNmZXIgbGVuZ3RoCj4gPj4gKyAqIEB0 cmFuc2NhdGlvbl9sZW46IHNwZWNpZnkgb25lIHRyYW5zY2F0aW9uIHRyYW5zZmVyIGxlbmd0aAo+ ID4+ICsgKiBAd3JhcF9wdHI6IHdyYXAgcG9pbnRlciBhZGRyZXNzLCBvbmNlIHRoZSB0cmFuc2Zl ciBhZGRyZXNzIHJlYWNoZXMgdGhlCj4gPj4gKyAqICd3cmFwX3B0cicsIHRoZSBuZXh0IHRyYW5z ZmVyIGFkZHJlc3Mgd2lsbCBqdW1wIHRvIHRoZSAnd3JhcF90bycgYWRkcmVzcy4KPiA+PiArICog QHdyYXBfdG86IHdyYXAganVtcCB0byBhZGRyZXNzCj4gPj4gKyAqIEByZXFfbW9kZTogc3BlY2lm eSB0aGUgRE1BIHJlcXVlc3QgbW9kZQo+ID4+ICsgKiBAaW50X21vZGU6IHNwZWNpZnkgdGhlIERN QSBpbnRlcnJ1cHQgdHlwZQo+ID4+ICsgKi8KPiA+PiArc3RydWN0IHNwcmRfZG1hX2NvbmZpZyB7 Cj4gPj4gKyAgICAgc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgY29uZmlnOwo+ID4+ICsgICAgIHUz MiBmcmFnbWVudF9sZW47Cj4gPgo+ID4gd2h5IG5vdCB1c2UgX21heGJ1cnN0Pwo+IAo+IFllcywg SSBjYW4gdXNlIG1heGJ1cnN0Lgo+IAo+ID4KPiA+PiArICAgICB1MzIgYmxvY2tfbGVuOwo+ID4+ ICsgICAgIHUzMiB0cmFuc2NhdGlvbl9sZW47Cj4gPgo+ID4gd2hhdCBkb2VzIGJsb2NrIGFuZCB0 cmFuc2FjdGlvbiBsZW4gcmVmZXIgdG8gaGVyZQo+IAo+ICBPdXIgRE1BIGhhcyAzIHRyYW5zZmVy IG1vZGU6IHRyYW5zYWN0aW9uIHRyYW5zZmVyLCBibG9jayB0cmFuc2ZlciBhbmQKPiBmcmFnbWVu dCB0cmFuc2Zlci4gT25lIHRyYW5zYWN0aW9uIHRyYW5zZmVyIGNhbiBjb250YWluIHNldmVyYWwg YmxvY2tzCj4gdHJhbnNmZXIsIGFuZCBlYWNoIGJsb2NrIGNhbiBiZSBzZXQgcHJvcGVyIGJsb2Nr IHN0ZXAuIE9uZSBibG9jayBjYW4KPiBjb250YWluIHNldmVyYWwgZnJhZ21lbnRzIHRyYW5zZmVy IHdpdGggcHJvcGVyIGZyYWdtZW50IHN0ZXAuIEl0IGNhbgo+IGdlbmVyYXRlIGludGVycnVwdHMg d2hlbiBvbmUgdHJhbnNhY3Rpb24gdHJhbnNmZXIgb3IgYmxvY2sgdHJhbnNmZXIgb3IKPiBmcmFn bWVudCB0cmFuc2ZlciBpcyBjb21wbGV0ZWQgaWYgdXNlciBzZXQgdGhlIGludGVycnVwdCB0eXBl LiBTbyBoZXJlCj4gd2Ugc2hvdWxkIHNldCB0aGUgbGVuZ3RoIGZvciB0cmFuc2FjdGlvbiB0cmFu c2ZlciwgYmxvY2sgdHJhbnNmZXIgYW5kCj4gZnJhZ21lbnQgdHJhbnNmZXIuCgp3aGF0IGFyZSB0 aGUgbWF4IHNpemUgdGhlc2UgdHlwZXMgc3VwcG9ydD8KCj4gCj4gPgo+ID4+ICsgICAgIHBoeXNf YWRkcl90IHdyYXBfcHRyOwo+ID4+ICsgICAgIHBoeXNfYWRkcl90IHdyYXBfdG87Cj4gPgo+ID4g dGhpcyBzb3VuZCBzZ19saXN0IHRvIG1lLCB3aHkgYXJlIHdlIG5vdCB1c2luZyB0aGF0IGhlcmUK PiAKPiBJdCBpcyBzaW1pbGFyIHRvIHNnIGxpc3QsIGJ1dCBpdCBpcyBub3Qgb25lIHNvZnR3YXJl IGFjdGlvbiwgd2UgaGF2ZQo+IGhhcmR3YXJlIHJlZ2lzdGVycyB0byBoZWxwIHRvIGp1bXAgb25l IHNwZWNpZmllZCBhZGRyZXNzLgo+IAo+ID4KPiA+PiArICAgICBlbnVtIHNwcmRfZG1hX3JlcV9t b2RlIHJlcV9tb2RlOwo+ID4KPiA+IExvb2tpbmcgYXQgZGVmaW5pdGlvbiBvZiByZXF1ZXN0IG1v ZGUgd2UgaGF2ZSBmcmFnLCBibG9jaywgdHJhbnNhY3Rpb24gbGlzdAo+ID4gZXRjLi4gVGhhdCBz aG91bGQgZGVwZW5kIHVwb24gZG1hIHJlcXVlc3QuIElmIHlvdSBoYXZlIGJlZW4gYXNrZWQgdG8K PiA+IHRyYW5zZmVyIGEgbGlzdCwgeW91IHNoYWxsIGNvbmZpZ3VyZSBsaXN0IG1vZGUuIGlmIGl0 IGlzIGEgc2luZ2xlCj4gPiB0cmFuc2FjdGlvbiB0aGVuIGl0IHNob3VsZCBiZSB0cmFuc2FjdGlv biBtb2RlIQo+IAo+IElmIEkgdW5kZXJzdGFuZCB5b3VyIHBvaW50cyBjb3JyZWN0bHksIHlvdSBt ZWFuIHdlIGNhbiBzcGVjaWZ5IHRoZQo+IHJlcXVlc3QgbW9kZSB3aGVuIHJlcXVlc3Rpbmcgb25l IHNsYXZlIGNoYW5uZWwgYnkKPiAnZG1hX3JlcXVlc3Rfc2xhdmVfY2hhbm5lbCgpJy4gQnV0IHdl IG5lZWQgY2hhbmdlIHRoZSByZXF1ZXN0IG1vZGUKPiBkeW5hbWljYWxseSBmb2xsb3dpbmcgZGlm ZmVyZW50IHRyYW5zZmVyIHRhc2sgZm9yIHRoaXMgY2hhbm5lbCwgc28gSQo+IGFtIGFmcmFpZCB3 ZSBjYW4gbm90IHNwZWNpZnkgdGhlIHJlcXVlc3QgbW9kZSBvZiB0aGlzIGNoYW5uZWwgYXQKPiBy ZXF1ZXN0aW5nIHRpbWUuCgpOb3BlIGEgY2hhbm5lbCBoYXMgbm90aGluZyB0byBkbyB3aXRoIHJl cXVlc3QgdHlwZS4gWW91IHJlcXVlc3QgYW5kIGdyYWIgYQpjaGFubmVsLiBUaGVuIHlvdSBwcmVw YXJlIGEgZGVzY3JpcHRvciBmb3IgYSBkbWEgdHJhbnNhY3Rpb24uIEJhc2VkIG9uCnRyYW5zYWN0 aW9uIHJlcXVlc3RlZCB5b3Ugc2hvdWxkIGludGVsbGlnZW50bHkgYnJlYWsgaXQgZG93biBhbmQg Y3JlYXRlIGEKZGVzY3JpcHRvciB3aGljaCB1c2VzIHRyYW5zYWN0aW9uL2Jsb2NrL2ZyYWdtZW50 IHNvIHRoYXQgRE1BIHRocm91Z2hwdXQgaXMKZWZmaWNpZW50LiBJZiBwcmVwYXJlIGhhcyBzZyBs aXN0IHRoZW4geW91IHNob3VsZCB1c2UgbGluayBsaXN0IG1vZGUuCkZ1cnRoZXIgaWYgeW91IHN1 cHBvcnQgbWF4IGxlbmd0aCwgc2F5IDE2S0IgYW5kIHJlcXVlc3QgaXMgZm9yIDIwS0IgeW91IG1h eQpicmVhayBpdCBkb3duIGZvciBsaW5rIGxpc3Qgd2l0aCB0d28gc2VnbWVudHMuCgpFYWNoIHBy ZXAgY2FsbCBoYXMgZmxhZ3MgYXNzb2NpYXRlZCwgdGhhdCBjYW4gaGVscCB5b3UgY29uZmlndXJl IGludGVycnVwdApiZWhhdmlvdXIuCgpCdHcgb3RoZXIgZG1hIGNvbnRyb2xsZXJzIGhhdmUgc2lt aWxhciBjYXBhYmlsaXRpZXMgYW5kIGRyaXZlciBtYW5hZ2VzIHRoZXNlCjopCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752198AbeDLJdJ (ORCPT ); Thu, 12 Apr 2018 05:33:09 -0400 Received: from mga01.intel.com ([192.55.52.88]:34730 "EHLO mga01.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1750763AbeDLJdI (ORCPT ); Thu, 12 Apr 2018 05:33:08 -0400 X-Amp-Result: UNKNOWN X-Amp-Original-Verdict: FILE UNKNOWN X-Amp-File-Uploaded: False X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.48,441,1517904000"; d="scan'208";a="31502075" Date: Thu, 12 Apr 2018 15:07:36 +0530 From: Vinod Koul To: Baolin Wang Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML Subject: Re: [PATCH 4/5] dmaengine: sprd: Add Spreadtrum DMA configuration Message-ID: <20180412093735.GF6014@localhost> References: <0c2b76aba6a49e583f920ae582d6815fa9cc4361.1523346135.git.baolin.wang@linaro.org> <20180411093634.GC6014@localhost> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: User-Agent: Mutt/1.5.24 (2015-08-30) Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org 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? > > > > >> + 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. Each prep call has flags associated, that can help you configure interrupt behaviour. Btw other dma controllers have similar capabilities and driver manages these :) -- ~Vinod