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: [02/14] dmaengine: dma-jz4780: Separate chan/ctrl registers From: Paul Cercueil Message-Id: <1531237019.17118.1@crapouillou.net> Date: Tue, 10 Jul 2018 17:36:58 +0200 To: Vinod Cc: Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel , Mathieu Malaterre , Daniel Silsby , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org List-ID: TGUgbHVuLiA5IGp1aWwuIDIwMTggw6AgMTk6MDMsIFZpbm9kIDx2a291bEBrZXJuZWwub3JnPiBh IMOpY3JpdCA6Cj4gT24gMDMtMDctMTgsIDE0OjMyLCBQYXVsIENlcmN1ZWlsIHdyb3RlOgo+PiAg VGhlIHJlZ2lzdGVyIGFyZWEgb2YgdGhlIEpaNDc4MCBETUEgY29yZSBjYW4gYmUgc3BsaXQgaW50 byBkaWZmZXJlbnQKPj4gIHNlY3Rpb25zIGZvciBkaWZmZXJlbnQgcHVycG9zZXM6Cj4+IAo+PiAg KiBvbmUgc2V0IG9mIHJlZ2lzdGVycyBpcyB1c2VkIHRvIHBlcmZvcm0gYWN0aW9ucyBhdCB0aGUg RE1BIGNvcmUgCj4+IGxldmVsLAo+PiAgdGhhdCB3aWxsIGdlbmVyYWxseSBhZmZlY3QgYWxsIGNo YW5uZWxzOwo+PiAKPj4gICogb25lIHNldCBvZiByZWdpc3RlcnMgcGVyIERNQSBjaGFubmVsLCB0 byBwZXJmb3JtIGFjdGlvbnMgYXQgdGhlIAo+PiBETUEKPj4gIGNoYW5uZWwgbGV2ZWwsIHRoYXQg d2lsbCBvbmx5IGFmZmVjdCB0aGUgY2hhbm5lbCBpbiBxdWVzdGlvbi4KPj4gCj4+ICBUaGUgcHJv YmxlbSByaXNlcyB3aGVuIHRyeWluZyB0byBzdXBwb3J0IG5ldyB2ZXJzaW9ucyBvZiB0aGUgSlo0 N3h4Cj4+ICBJbmdlbmljIFNvQy4gRm9yIGluc3RhbmNlLCB0aGUgSlo0NzcwIGhhcyB0d28gRE1B IGNvcmVzLCBlYWNoIG9uZQo+PiAgd2l0aCBzaXggRE1BIGNoYW5uZWxzLCBhbmQgdGhlIHJlZ2lz dGVyIHNldHMgYXJlIGludGVybGVhdmVkOgo+PiAgPERNQTAgY2hhbiByZWdzPiA8RE1BMSBjaGFu IHJlZ3M+IDxETUEwIGN0cmwgcmVncz4gPERNQTEgY3RybCByZWdzPgo+PiAKPj4gIEJ5IHVzaW5n IG9uZSBtZW1vcnkgcmVzb3VyY2UgZm9yIHRoZSBjaGFubmVsLXNwZWNpZmljIHJlZ2lzdGVycyBh bmQKPj4gIG9uZSBtZW1vcnkgcmVzb3VyY2UgZm9yIHRoZSBjb3JlLXNwZWNpZmljIHJlZ2lzdGVy cywgd2UgY2FuIHN1cHBvcnQKPj4gIHRoZSBKWjQ3NzAsIGJ5IGluaXRpYWxpemluZyB0aGUgZHJp dmVyIG9uY2UgcGVyIERNQSBjb3JlIHdpdGggCj4+IGRpZmZlcmVudAo+PiAgYWRkcmVzc2VzLgo+ PiAKPj4gIFNpZ25lZC1vZmYtYnk6IFBhdWwgQ2VyY3VlaWwgPHBhdWxAY3JhcG91aWxsb3UubmV0 Pgo+PiAgLS0tCj4+ICAgLi4uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL2p6NDc4MC1kbWEudHh0 ICAgIHwgICA2ICstCj4gCj4gUGxzIG1vdmUgdG8gc2VwYXJhdGUgcGF0Y2guCgpPSy4KCj4+ICAg ZHJpdmVycy9kbWEvZG1hLWp6NDc4MC5jICAgICAgICAgICAgICAgICAgICAgIHwgMTA2IAo+PiAr KysrKysrKysrKy0tLS0tLS0KPj4gICAyIGZpbGVzIGNoYW5nZWQsIDY5IGluc2VydGlvbnMoKyks IDQzIGRlbGV0aW9ucygtKQo+PiAKPj4gIGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2Rldmlj ZXRyZWUvYmluZGluZ3MvZG1hL2p6NDc4MC1kbWEudHh0IAo+PiBiL0RvY3VtZW50YXRpb24vZGV2 aWNldHJlZS9iaW5kaW5ncy9kbWEvano0NzgwLWRtYS50eHQKPj4gIGluZGV4IGYyNWZlZWU2MmIx NS4uZjliMTg2NGY1Yjc3IDEwMDY0NAo+PiAgLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVl L2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dAo+PiAgKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZp Y2V0cmVlL2JpbmRpbmdzL2RtYS9qejQ3ODAtZG1hLnR4dAo+PiAgQEAgLTMsNyArMyw4IEBACj4+ ICAgUmVxdWlyZWQgcHJvcGVydGllczoKPj4gCj4+ICAgLSBjb21wYXRpYmxlOiBTaG91bGQgYmUg ImluZ2VuaWMsano0NzgwLWRtYSIKPj4gIC0tIHJlZzogU2hvdWxkIGNvbnRhaW4gdGhlIERNQSBj b250cm9sbGVyIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgCj4+IGxlbmd0aC4KPj4gICstIHJlZzog U2hvdWxkIGNvbnRhaW4gdGhlIERNQSBjaGFubmVsIHJlZ2lzdGVycyBsb2NhdGlvbiBhbmQgCj4+ IGxlbmd0aCwgZm9sbG93ZWQKPj4gICsgIGJ5IHRoZSBETUEgY29udHJvbGxlciByZWdpc3RlcnMg bG9jYXRpb24gYW5kIGxlbmd0aC4KPj4gICAtIGludGVycnVwdHM6IFNob3VsZCBjb250YWluIHRo ZSBpbnRlcnJ1cHQgc3BlY2lmaWVyIG9mIHRoZSBETUEgCj4+IGNvbnRyb2xsZXIuCj4+ICAgLSBp bnRlcnJ1cHQtcGFyZW50OiBTaG91bGQgYmUgdGhlIHBoYW5kbGUgb2YgdGhlIGludGVycnVwdCAK Pj4gY29udHJvbGxlciB0aGF0Cj4+ICAgLSBjbG9ja3M6IFNob3VsZCBjb250YWluIGEgY2xvY2sg c3BlY2lmaWVyIGZvciB0aGUgSlo0NzgwIFBETUEgCj4+IGNsb2NrLgo+PiAgQEAgLTIyLDcgKzIz LDggQEAgRXhhbXBsZToKPj4gCj4+ICAgZG1hOiBkbWFAMTM0MjAwMDAgewo+PiAgIAljb21wYXRp YmxlID0gImluZ2VuaWMsano0NzgwLWRtYSI7Cj4+ICAtCXJlZyA9IDwweDEzNDIwMDAwIDB4MTAw MDA+Owo+PiAgKwlyZWcgPSA8MHgxMzQyMDAwMCAweDQwMAo+PiAgKwkgICAgICAgMHgxMzQyMTAw MCAweDQwPjsKPiAKPiBTZWNvbmQgc2hvdWxkIGJlIG9wdGlvbmFsIG9yIHdlIGJyZWFrIHBsYXRm b3JtIHdoaWNoIG1heSBub3QgaGF2ZQo+IHVwZGF0ZWQgRFQuLgoKU2VlIGNvbW1lbnQgYmVsb3cu Cgo+PiAgLQlqemRtYS0+YmFzZSA9IGRldm1faW9yZW1hcF9yZXNvdXJjZShkZXYsIHJlcyk7Cj4+ ICAtCWlmIChJU19FUlIoanpkbWEtPmJhc2UpKQo+PiAgLQkJcmV0dXJuIFBUUl9FUlIoanpkbWEt PmJhc2UpOwo+PiAgKwlqemRtYS0+Y2huX2Jhc2UgPSBkZXZtX2lvcmVtYXBfcmVzb3VyY2UoZGV2 LCByZXMpOwo+PiAgKwlpZiAoSVNfRVJSKGp6ZG1hLT5jaG5fYmFzZSkpCj4+ICArCQlyZXR1cm4g UFRSX0VSUihqemRtYS0+Y2huX2Jhc2UpOwo+PiAgKwo+PiAgKwlyZXMgPSBwbGF0Zm9ybV9nZXRf cmVzb3VyY2UocGRldiwgSU9SRVNPVVJDRV9NRU0sIDEpOwo+PiAgKwlpZiAoIXJlcykgewo+PiAg KwkJZGV2X2VycihkZXYsICJmYWlsZWQgdG8gZ2V0IEkvTyBtZW1vcnlcbiIpOwo+PiAgKwkJcmV0 dXJuIC1FSU5WQUw7Cj4+ICArCX0KPiAKPiBva2F5IGFuZCB0aGlzIGJyZWFrcyBpZiB5b3UgaGFw cGVuIHRvIGdldCBwcm9iZWQgb24gb2xkZXIgRFQuIEkgdGhpbmsgCj4gRFQKPiBpcyB0cmVhdGVk IGFzIEFCSSBzbyB5b3UgbmVlZCB0byBjb250aW51ZSBzdXBwb3J0IG9sZGVyIG1ldGhvZCB3aGls ZQo+IGZpbmRpbmcgaWYgRFQgaGFzIHNwbGl0IHJlc291cmNlcwoKU2VlIG15IHJlc3BvbnNlIHRv IFByYXNhbm5hS3VtYXIuIEFsbCB0aGUgSW5nZW5pYy1iYXNlZCBib2FyZHMgZG8gCmNvbXBpbGUK dGhlIGRldmljZXRyZWUgd2l0aGluIHRoZSBrZXJuZWwsIHNvIEkgdGhpbmsgaXQncyBzdGlsbCBm aW5lIHRvIGFkZCAKYnJlYWtpbmcKY2hhbmdlcy4gSSdsbCB3YWl0IG9uIEBSb2IgdG8gZ2l2ZSBo aXMgcG9pbnQgb2YgdmlldyBvbiB0aGlzLCB0aG91Z2guCgooSXQncyBub3Qgc29tZXRoaW5nIGhh cmQgdG8gY2hhbmdlLCBidXQgSSdkIGxpa2UgdG8ga25vdyB3aGF0J3MgdGhlIApwb2xpY3kKaW4g dGhhdCBjYXNlLiBJIGhhdmUgb3RoZXIgRFQtYnJlYWtpbmcgcGF0Y2hlcyB0byBzdWJtaXQpCgo+ IC0tCj4gflZpbm9kCi0tLQpUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUg bGluZSAidW5zdWJzY3JpYmUgZG1hZW5naW5lIiBpbgp0aGUgYm9keSBvZiBhIG1lc3NhZ2UgdG8g bWFqb3Jkb21vQHZnZXIua2VybmVsLm9yZwpNb3JlIG1ham9yZG9tbyBpbmZvIGF0ICBodHRwOi8v dmdlci5rZXJuZWwub3JnL21ham9yZG9tby1pbmZvLmh0bWwK From mboxrd@z Thu Jan 1 00:00:00 1970 Received: with ECARTIS (v1.0.0; list linux-mips); Tue, 10 Jul 2018 17:37:10 +0200 (CEST) Received: from outils.crapouillou.net ([89.234.176.41]:45254 "EHLO crapouillou.net" rhost-flags-OK-OK-OK-OK) by eddie.linux-mips.org with ESMTP id S23994272AbeGJPhDwQZN- convert rfc822-to-8bit (ORCPT ); Tue, 10 Jul 2018 17:37:03 +0200 Date: Tue, 10 Jul 2018 17:36:58 +0200 From: Paul Cercueil Subject: Re: [PATCH 02/14] dmaengine: dma-jz4780: Separate chan/ctrl registers To: Vinod Cc: Rob Herring , Mark Rutland , Ralf Baechle , Paul Burton , James Hogan , Zubair Lutfullah Kakakhel , Mathieu Malaterre , Daniel Silsby , dmaengine@vger.kernel.org, devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-mips@linux-mips.org Message-Id: <1531237019.17118.1@crapouillou.net> In-Reply-To: <20180709170359.GI22377@vkoul-mobl> References: <20180703123214.23090-1-paul@crapouillou.net> <20180703123214.23090-3-paul@crapouillou.net> <20180709170359.GI22377@vkoul-mobl> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1; format=flowed Content-Transfer-Encoding: 8BIT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=crapouillou.net; s=mail; t=1531237023; bh=cNGXnj5AABh9INizic9jqncTaQ9PKFkhO1FquUWNflw=; h=Date:From:Subject:To:Cc:Message-Id:In-Reply-To:References:MIME-Version:Content-Type:Content-Transfer-Encoding; b=Q6HBURlrhkQIX60y/N+RswUBy3BMqmJACYilheYlO3Hy1b+zFMSJvAi70Jk3jkG04RWaqLPLHH6PYjccKAHt31YfXpUjYEtevLBu0TFb1/P2cs+eF1hSlLkuXpqhrbtKN7cKkrLvGlvxVQ133hnL9DLiRpk0g2lrZP6AmDbqGJk= Return-Path: X-Envelope-To: <"|/home/ecartis/ecartis -s linux-mips"> (uid 0) X-Orcpt: rfc822;linux-mips@linux-mips.org Original-Recipient: rfc822;linux-mips@linux-mips.org X-archive-position: 64758 X-ecartis-version: Ecartis v1.0.0 Sender: linux-mips-bounce@linux-mips.org Errors-to: linux-mips-bounce@linux-mips.org X-original-sender: paul@crapouillou.net Precedence: bulk List-help: List-unsubscribe: List-software: Ecartis version 1.0.0 List-Id: linux-mips X-List-ID: linux-mips List-subscribe: List-owner: List-post: List-archive: X-list: linux-mips Le lun. 9 juil. 2018 à 19:03, Vinod a écrit : > On 03-07-18, 14:32, Paul Cercueil wrote: >> The register area of the JZ4780 DMA core can be split into different >> sections for different purposes: >> >> * one set of registers is used to perform actions at the DMA core >> level, >> that will generally affect all channels; >> >> * one set of registers per DMA channel, to perform actions at the >> DMA >> channel level, that will only affect the channel in question. >> >> The problem rises when trying to support new versions of the JZ47xx >> Ingenic SoC. For instance, the JZ4770 has two DMA cores, each one >> with six DMA channels, and the register sets are interleaved: >> >> >> By using one memory resource for the channel-specific registers and >> one memory resource for the core-specific registers, we can support >> the JZ4770, by initializing the driver once per DMA core with >> different >> addresses. >> >> Signed-off-by: Paul Cercueil >> --- >> .../devicetree/bindings/dma/jz4780-dma.txt | 6 +- > > Pls move to separate patch. OK. >> drivers/dma/dma-jz4780.c | 106 >> +++++++++++------- >> 2 files changed, 69 insertions(+), 43 deletions(-) >> >> diff --git a/Documentation/devicetree/bindings/dma/jz4780-dma.txt >> b/Documentation/devicetree/bindings/dma/jz4780-dma.txt >> index f25feee62b15..f9b1864f5b77 100644 >> --- a/Documentation/devicetree/bindings/dma/jz4780-dma.txt >> +++ b/Documentation/devicetree/bindings/dma/jz4780-dma.txt >> @@ -3,7 +3,8 @@ >> Required properties: >> >> - compatible: Should be "ingenic,jz4780-dma" >> -- reg: Should contain the DMA controller registers location and >> length. >> +- reg: Should contain the DMA channel registers location and >> length, followed >> + by the DMA controller registers location and length. >> - interrupts: Should contain the interrupt specifier of the DMA >> controller. >> - interrupt-parent: Should be the phandle of the interrupt >> controller that >> - clocks: Should contain a clock specifier for the JZ4780 PDMA >> clock. >> @@ -22,7 +23,8 @@ Example: >> >> dma: dma@13420000 { >> compatible = "ingenic,jz4780-dma"; >> - reg = <0x13420000 0x10000>; >> + reg = <0x13420000 0x400 >> + 0x13421000 0x40>; > > Second should be optional or we break platform which may not have > updated DT.. See comment below. >> - jzdma->base = devm_ioremap_resource(dev, res); >> - if (IS_ERR(jzdma->base)) >> - return PTR_ERR(jzdma->base); >> + jzdma->chn_base = devm_ioremap_resource(dev, res); >> + if (IS_ERR(jzdma->chn_base)) >> + return PTR_ERR(jzdma->chn_base); >> + >> + res = platform_get_resource(pdev, IORESOURCE_MEM, 1); >> + if (!res) { >> + dev_err(dev, "failed to get I/O memory\n"); >> + return -EINVAL; >> + } > > okay and this breaks if you happen to get probed on older DT. I think > DT > is treated as ABI so you need to continue support older method while > finding if DT has split resources See my response to PrasannaKumar. All the Ingenic-based boards do compile the devicetree within the kernel, so I think it's still fine to add breaking changes. I'll wait on @Rob to give his point of view on this, though. (It's not something hard to change, but I'd like to know what's the policy in that case. I have other DT-breaking patches to submit) > -- > ~Vinod