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: <20180413101140.GN6014@localhost> Date: Fri, 13 Apr 2018 15:41:41 +0530 To: Baolin Wang Cc: Dan Williams , Eric Long , Mark Brown , dmaengine@vger.kernel.org, LKML List-ID: T24gRnJpLCBBcHIgMTMsIDIwMTggYXQgMDI6NDE6NDhQTSArMDgwMCwgQmFvbGluIFdhbmcgd3Jv dGU6Cj4gT24gMTMgQXByaWwgMjAxOCBhdCAxNDozNiwgVmlub2QgS291bCA8dmlub2Qua291bEBp bnRlbC5jb20+IHdyb3RlOgo+ID4gT24gRnJpLCBBcHIgMTMsIDIwMTggYXQgMDI6MTc6MzRQTSAr MDgwMCwgQmFvbGluIFdhbmcgd3JvdGU6Cj4gPgo+ID4+ID4gQWdyZWVkLCB1c2VycyBvbmx5IGNh cmUgYWJvdXQgZ3JhYmJpbmcgYSBjaGFubmVsLCBzZXR0aW5nIGEgZGVzY3JpcHRvciBhbmQKPiA+ PiA+IHN1Ym1pdHRpbmcgdGhhdC4KPiA+PiA+Cj4gPj4gPiBJIHRoaW5rIHlvdSBuZWVkIHRvIGdv IGJhY2sgYW5kIHRoaW5rIGFib3V0IHRoaXMgYSBiaXQsIHBsZWFzZSBkbyBnbyB0aHJ1Cj4gPj4g PiBkbWFlbmdpbmUgZG9jdW1lbnRhdGlvbiBhbmQgc2VlIG90aGVyIGRyaXZlciBleGFtcGxlcy4K PiA+PiA+Cj4gPj4gPiBXZSBkb24ndCB0eXBpY2FsbHkgZXhwb3NlIHRoZXNlIHRvIHVzZXJzLCB0 aGV5IGdpdmUgdXMgYSB0cmFuc2ZlciBhbmQgd2Ugc2V0Cj4gPj4gPiB0aGF0IHVwIGluIGhhcmR3 YXJlIGZvciBlZmZpY2llbnQuIEl0cyBETUEgc28gcGVvcGxlIGV4cGVjdCB1cyB0byB1c2UgZmFz dGVzdAo+ID4+ID4gbWVjaGFuaXNtIGF2YWlsYWJsZS4KPiA+Pgo+ID4+IEJ1dCB0aGVyZSBhcmUg c29tZSBjb25maWd1cmF0aW9uIGFyZSByZWFsbHkgc3BlY2lhbCBmb3IgU3ByZWFkdHJ1bQo+ID4+ IERNQSwgYW5kIG11c3QgbmVlZCB1c2VyIHRvIHNwZWNpZnkgaG93IHRvIGNvbmZpZ3VyZSwgZXNw ZWNpYWxseSBzb21lCj4gPj4gc2NlbmFyaW9zIG9mIGF1ZGlvLiBTbyBJIHdhbmRlciBpZiB3ZSBj YW4gYWRkIG9uZSBwb2ludGVyIGZvcgo+ID4+ICdkbWFfc2xhdmVfY29uZmlnJyB0byBleHBhbmQg c29tZSBzcGVjaWFsIERNQSBjb25maWd1cmF0aW9uCj4gPj4gcmVxdWlyZW1lbnRzLCBsaWtlOgo+ ID4+Cj4gPj4gc3RydWN0IGRtYV9zbGF2ZV9jb25maWcgewo+ID4+ICAgICAuLi4uLi4KPiA+PiAg ICAgdW5zaWduZWQgaW50IHNsYXZlX2lkOwo+ID4+ICAgICB2b2lkICpwbGF0Zm9ybV9kYXRhOwo+ ID4+IH07Cj4gPj4KPiA+PiBTbyBpZiBzb21lIERNQSBoYXMgc29tZSBzcGVjaWFsIGNvbmZpZ3Vy YXRpb24gKHN1Y2ggYXMgU3ByZWFkdHJ1bQo+ID4+IERNQSksIHRoZXkgY2FuIHVzZXIgdGhpcyBw bGF0Zm9ybV9kYXRhIHBvaW50ZXIuIExpa2UgeGlsaW54IERNQSwgdGhleQo+ID4+IGFsc28gaGF2 ZSBzb21lIHNwZWNpYWwgY29uZmlndXJhdGlvbi4KPiA+Cj4gPiBXZWxsIHdlIGFsbCB0aGluayBv dXIgSFcgaXMgc3BlY2lhbCBhbmQgbmVlZHMgc29tZSBhZGRpdGlvbmFsIHN0dWZmLCBtb3N0IG9m Cj4gPiB0aGUgY2FzZXMgdHVybnMgb3V0IG5vdCB0byBiZSB0aGUgY2FzZS4KPiA+Cj4gPiBDYW4g eW91IGV4cGxhaW4gaG93IGF1ZGlvIGluIHRoaXMgY2FzZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRp b24uLi4KPiA+Cj4gCj4gQmVzaWRlIHRoZSBnZW5lcmFsIGNvbmZpZ3VyYXRpb24sIG91ciBhdWRp byBkcml2ZXIgd2lsbCBjb25maWd1cmUgdGhlCj4gZnJhZ21lbnQgbGVuZ3RoLCBibG9jayBsZW5n dGgsIG1heWJlIHRyYW5zYWN0aW9uIGxlbmd0aCwgYW5kIHRoZXkgbXVzdAo+IHNwZWNpZnkgdGhl IHJlcXVlc3QgdHlwZSBhbmQgaW50ZXJydXB0IHR5cGUsIHRoZXNlIGFyZSB3aGF0IHdlIHdhbnQg dG8KPiBleHBvcnQgZm9yIHVzZXJzLgoKRmlyc3QgZG9lc24ndCBpdCB1c2Ugc291bmQgZG1hZW5n aW5lIGxpYnJhcnksIGl0IHNob3VsZCA6KQoKU2Vjb25kLCBJIHRoaW5rIHlvdSBzaG91bGQgY2Fs Y3VsYXRlIHRoZSBsZW5ndGhzIGJhc2VkIG9uIGdpdmVuIGlucHV0LiBBdWRpbwppcyBjaXJjdWxh ciBidWZmZXIgc28geW91IHNoYWxsIGNyZWF0ZSBhIGNpcmN1bGFyIGxpbmtlZCBsaXN0IGFuZCBz dWJtaXQuClNlZSBob3cgb3RoZXIgZHJpdmVyIGltcGxlbWVudCBjaXJjdWxhciBwcmVwYXJlIGNh bGxiYWNrCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754194AbeDMKHO (ORCPT ); Fri, 13 Apr 2018 06:07:14 -0400 Received: from mga05.intel.com ([192.55.52.43]:53241 "EHLO mga05.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753931AbeDMKHM (ORCPT ); Fri, 13 Apr 2018 06:07:12 -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,444,1517904000"; d="scan'208";a="41698014" Date: Fri, 13 Apr 2018 15:41:41 +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: <20180413101140.GN6014@localhost> References: <0c2b76aba6a49e583f920ae582d6815fa9cc4361.1523346135.git.baolin.wang@linaro.org> <20180411093634.GC6014@localhost> <20180412093735.GF6014@localhost> <20180413034332.GI6014@localhost> <20180413063641.GL6014@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 Fri, Apr 13, 2018 at 02:41:48PM +0800, Baolin Wang wrote: > On 13 April 2018 at 14:36, Vinod Koul wrote: > > On Fri, Apr 13, 2018 at 02:17:34PM +0800, Baolin Wang wrote: > > > >> > Agreed, users only care about grabbing a channel, setting a descriptor and > >> > submitting that. > >> > > >> > I think you need to go back and think about this a bit, please do go thru > >> > dmaengine documentation and see other driver examples. > >> > > >> > We don't typically expose these to users, they give us a transfer and we set > >> > that up in hardware for efficient. Its DMA so people expect us to use fastest > >> > mechanism available. > >> > >> But there are some configuration are really special for Spreadtrum > >> DMA, and must need user to specify how to configure, especially some > >> scenarios of audio. So I wander if we can add one pointer for > >> 'dma_slave_config' to expand some special DMA configuration > >> requirements, like: > >> > >> struct dma_slave_config { > >> ...... > >> unsigned int slave_id; > >> void *platform_data; > >> }; > >> > >> So if some DMA has some special configuration (such as Spreadtrum > >> DMA), they can user this platform_data pointer. Like xilinx DMA, they > >> also have some special configuration. > > > > Well we all think our HW is special and needs some additional stuff, most of > > the cases turns out not to be the case. > > > > Can you explain how audio in this case additional configuration... > > > > Beside the general configuration, our audio driver will configure the > fragment length, block length, maybe transaction length, and they must > specify the request type and interrupt type, these are what we want to > export for users. First doesn't it use sound dmaengine library, it should :) Second, I think you should calculate the lengths based on given input. Audio is circular buffer so you shall create a circular linked list and submit. See how other driver implement circular prepare callback -- ~Vinod