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: [v2,2/2] dmaengine: dw-dmac: implement dma protection control setting From: Andy Shevchenko Message-Id: <20181110184553.GF10650@smile.fi.intel.com> Date: Sat, 10 Nov 2018 20:45:53 +0200 To: Christian Lamparter Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, Dan Williams , Vinod Koul , Viresh Kumar , Rob Herring , Mark Rutland List-ID: T24gU2F0LCBOb3YgMTAsIDIwMTggYXQgMDU6Mjg6MzFQTSArMDEwMCwgQ2hyaXN0aWFuIExhbXBh cnRlciB3cm90ZToKPiBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgZGV2aWNlLXRyZWUgcHJvcGVydHkg dGhhdCBhbGxvd3MgdG8KPiBzcGVjaWZ5IHRoZSBkbWEgcHJvdGVjdGlvbiBjb250cm9sIGJpdHMg Zm9yIHRoZSBhbGwgb2YgdGhlCj4gRE1BIGNvbnRyb2xsZXIncyBjaGFubmVsIHVuaWZvcm1seS4K PiAKPiBTZXR0aW5nIHRoZSAiY29ycmVjdCIgYml0cyBjYW4gaGF2ZSBhIGh1Z2UgaW1wYWN0IG9u IHRoZQo+IFBQQzQ2MEVYIGFuZCBBUE04MjE4MSB0aGF0IHVzZSB0aGlzIERNQSBlbmdpbmUgaW4g Y29tYmluYXRpb24KPiB3aXRoIGEgRGVzaWduV2FyZScgU0FUQS1JSSBjb3JlIChzYXRhX2R3Y180 NjBleCBkcml2ZXIpLgo+IAo+IEluIHRoZSBPcGVuV3J0IEZvcnVtLCB0aGUgdXNlciB0YWtpbWF0 YSByZXBvcnRlZCB0aGF0Ogo+IHxJdCBzZWVtcyB5b3VyIHBhdGNoIHVubGVhc2hlZCB0aGUgZnVs bCBwb3dlciBvZiB0aGUgU0FUQSBwb3J0Lgo+IHxXaGVyZSBJIHdhcyBwcmV2aW91c2x5IGhpdHRp bmcgYSByZWFsbHkgaGFyZCBsaW1pdCBhdCBhcm91bmQKPiB8ODIgTUIvcyBmb3IgcmVhZGluZyBh bmQgMjcgTUIvcyBmb3Igd3JpdGluZywgSSBhbSBub3cgZ2V0dGluZyB0aGlzOgo+IHwKPiB8cm9v dEBPcGVuV3J0Oi9tbnQjIHRpbWUgZGQgaWY9L2Rldi96ZXJvIG9mPXRlbXBmaWxlIGJzPTFNIGNv dW50PTEwMjQKPiB8MTAyNCswIHJlY29yZHMgaW4KPiB8MTAyNCswIHJlY29yZHMgb3V0Cj4gfHJl YWwgICAgMG0gMTMuNjVzCj4gfHVzZXIgICAgMG0gMC4wMXMKPiB8c3lzICAgICAwbSAxMS44OXMK PiB8Cj4gfHJvb3RAT3BlbldydDovbW50IyB0aW1lIGRkIGlmPXRlbXBmaWxlIG9mPS9kZXYvbnVs bCBicz0xTSBjb3VudD0xMDI0Cj4gfDEwMjQrMCByZWNvcmRzIGluCj4gfDEwMjQrMCByZWNvcmRz IG91dAo+IHxyZWFsICAgIDBtIDguNDFzCj4gfHVzZXIgICAgMG0gMC4wMXMKPiB8c3lzICAgICAw bSA0Ljcwcwo+IHwKPiB8VGhpcyBtZWFuczogMTIxIE1CL3MgcmVhZGluZyBhbmQgNzUgTUIvcyB3 cml0aW5nIQo+IHwKPiB8VGhlIGRyaXZlIGlzIGEgV0QgR3JlZW4gV0QxMEVBUlggdGFrZW4gZnJv bSBhbiBvbGRlciBNQkwgU2luZ2xlLgo+IHxJIHJlcGVhdGVkIHRoZSB0ZXN0IGEgZmV3IHRpbWVz IHdpdGggZXZlbiBsYXJnZXIgZmlsZXMgdG8gcnVsZSBvdXQKPiB8YW55IGNhY2hpbmcsIEknbSBz dGlsbCBzZWVpbmcgdGhlIHNhbWUgZ3JlYXQgcGVyZm9ybWFuY2UuIE9wZW5XcnQgaXMKPiB8bm93 IGNvbXBsZXRlbHkgb24gcGFyIHdpdGggdGhlIG9yaWdpbmFsIE1CTCBmaXJtd2FyZSdzIHBlcmZv cm1hbmNlLgo+IAo+IEFub3RoZXIgdXNlciBBbmQuc2hvcnQgcmVwb3J0ZWQ6Cj4gfEkgY2FuIHJl cG9ydCB0aGF0IHlvdXIgZml4IHdvcmtlZCEgQm9vdHMgdXAgZmluZSB3aXRoIHR3bwo+IHxkcml2 ZXMgZXZlbiB3aXRoIG1vcmUgcGFydGl0aW9ucywgYW5kIG5vIG1vcmUgcmVib290IG9uCj4gfGNv bmN1cnJlbnQgZGlzayBhY2Nlc3MhCj4gCj4gQSBjbG9zZXIgbG9vayBpbnRvIHRoZSBzYXRhX2R3 Y180NjBleCBjb2RlIHJldmVhbGVkIHRoYXQKPiB0aGUgZHJpdmVyIGRpZCBpbml0YWxseSBzZXQg dGhlIGNvcnJlY3QgcHJvdGVjdGlvbiBjb250cm9sCj4gYml0cy4gSG93ZXZlciwgdGhpcyBmZWF0 dXJlIHdhcyBsb3N0IHdoZW4gdGhlIHNhdGFfZHdjXzQ2MGV4Cj4gZHJpdmVyIHdhcyBjb252ZXJ0 ZWQgdG8gdGhlIGdlbmVyaWMgRE1BIGRyaXZlciBmcmFtZXdvcmsuCgpMR1RNLCB0aG91Z2ggbWlu b3Igc3R5bGUgY29tbWVudCBiZWxvdy4KCj4gCj4gQnVnTGluazogaHR0cHM6Ly9mb3J1bS5vcGVu d3J0Lm9yZy90L3dkLW15Ym9vay1saXZlLWR1by10d28tZGlza3MvMTYxOTUvNTUKPiBCdWdMaW5r OiBodHRwczovL2ZvcnVtLm9wZW53cnQub3JnL3Qvd2QtbXlib29rLWxpdmUtZHVvLXR3by1kaXNr cy8xNjE5NS81MAo+IEZpeGVzOiA4YjM0NDQ4NTJhMmIgKCJzYXRhX2R3Y180NjBleDogbW92ZSB0 byBnZW5lcmljIERNQSBkcml2ZXIiKQo+IFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBMYW1wYXJ0 ZXIgPGNodW5rZWV5QGdtYWlsLmNvbT4KPiAtLS0KPiAgZHJpdmVycy9kbWEvZHcvY29yZS5jICAg ICAgICAgICAgICAgIHwgMiArKwo+ICBkcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jICAgICAgICAg ICAgfCA2ICsrKysrKwo+ICBkcml2ZXJzL2RtYS9kdy9yZWdzLmggICAgICAgICAgICAgICAgfCA0 ICsrKysKPiAgaW5jbHVkZS9saW51eC9wbGF0Zm9ybV9kYXRhL2RtYS1kdy5oIHwgNiArKysrKysK PiAgNCBmaWxlcyBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspCj4gCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZG1hL2R3L2NvcmUuYyBiL2RyaXZlcnMvZG1hL2R3L2NvcmUuYwo+IGluZGV4IGY0M2U2 ZGFmZTQ0Ni4uMDc3MmQyZDZjYzY4IDEwMDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL2R3L2NvcmUu Ywo+ICsrKyBiL2RyaXZlcnMvZG1hL2R3L2NvcmUuYwo+IEBAIC0xNjAsMTIgKzE2MCwxNCBAQCBz dGF0aWMgdm9pZCBkd2NfaW5pdGlhbGl6ZV9jaGFuX2lkbWEzMihzdHJ1Y3QgZHdfZG1hX2NoYW4g KmR3YykKPiAgCj4gIHN0YXRpYyB2b2lkIGR3Y19pbml0aWFsaXplX2NoYW5fZHcoc3RydWN0IGR3 X2RtYV9jaGFuICpkd2MpCj4gIHsKPiArCXN0cnVjdCBkd19kbWEgKmR3ID0gdG9fZHdfZG1hKGR3 Yy0+Y2hhbi5kZXZpY2UpOwo+ICAJdTMyIGNmZ2hpID0gRFdDX0NGR0hfRklGT19NT0RFOwo+ICAJ dTMyIGNmZ2xvID0gRFdDX0NGR0xfQ0hfUFJJT1IoZHdjLT5wcmlvcml0eSk7Cj4gIAlib29sIGhz X3BvbGFyaXR5ID0gZHdjLT5kd3MuaHNfcG9sYXJpdHk7Cj4gIAo+ICAJY2ZnaGkgfD0gRFdDX0NG R0hfRFNUX1BFUihkd2MtPmR3cy5kc3RfaWQpOwo+ICAJY2ZnaGkgfD0gRFdDX0NGR0hfU1JDX1BF Uihkd2MtPmR3cy5zcmNfaWQpOwo+ICsJY2ZnaGkgfD0gRFdDX0NGR0hfUFJPVENUTChkdy0+cGRh dGEtPnByb3RjdGwpOwo+ICAKPiAgCS8qIFNldCBwb2xhcml0eSBvZiBoYW5kc2hha2UgaW50ZXJm YWNlICovCj4gIAljZmdsbyB8PSBoc19wb2xhcml0eSA/IERXQ19DRkdMX0hTX0RTVF9QT0wgfCBE V0NfQ0ZHTF9IU19TUkNfUE9MIDogMDsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvcGxh dGZvcm0uYyBiL2RyaXZlcnMvZG1hL2R3L3BsYXRmb3JtLmMKPiBpbmRleCBmNjJkZDA5NDQ5MDgu LmMyOTlmZjE4MWJiNiAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2RtYS9kdy9wbGF0Zm9ybS5jCj4g KysrIGIvZHJpdmVycy9kbWEvZHcvcGxhdGZvcm0uYwo+IEBAIC0xNjIsNiArMTYyLDEyIEBAIGR3 X2RtYV9wYXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICAJCQlwZGF0YS0+ bXVsdGlfYmxvY2tbdG1wXSA9IDE7Cj4gIAl9Cj4gIAo+ICsJaWYgKCFvZl9wcm9wZXJ0eV9yZWFk X3UzMihucCwgInNucHMsZG1hLXByb3RlY3Rpb24tY29udHJvbCIsICZ0bXApKSB7Cj4gKwkJaWYg KHRtcCA+IENIQU5fUFJPVENUTF9NQVNLKQo+ICsJCQlyZXR1cm4gTlVMTDsKPiArCQlwZGF0YS0+ cHJvdGN0bCA9IHRtcDsKPiArCX0KPiArCj4gIAlyZXR1cm4gcGRhdGE7Cj4gIH0KPiAgI2Vsc2UK PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvZHcvcmVncy5oIGIvZHJpdmVycy9kbWEvZHcvcmVn cy5oCj4gaW5kZXggMDllN2RmZGJiNzkwLi42NDZjOWM5NjBjMDcgMTAwNjQ0Cj4gLS0tIGEvZHJp dmVycy9kbWEvZHcvcmVncy5oCj4gKysrIGIvZHJpdmVycy9kbWEvZHcvcmVncy5oCj4gQEAgLTIw MCw2ICsyMDAsMTAgQEAgZW51bSBkd19kbWFfbXNpemUgewo+ICAjZGVmaW5lIERXQ19DRkdIX0ZD TU9ERQkJKDEgPDwgMCkKPiAgI2RlZmluZSBEV0NfQ0ZHSF9GSUZPX01PREUJKDEgPDwgMSkKPiAg I2RlZmluZSBEV0NfQ0ZHSF9QUk9UQ1RMKHgpCSgoeCkgPDwgMikKPiArI2RlZmluZSBEV0NfQ0ZH SF9QUk9UQ1RMX0RBVEEJKDAgPDwgMikJLyogZGF0YSBhY2Nlc3MgLSBhbHdheXMgc2V0ICovCj4g KyNkZWZpbmUgRFdDX0NGR0hfUFJPVENUTF9QUklWCSgxIDw8IDIpCS8qIHByaXZpbGVnZWQgLT4g QUhCIEhQUk9UWzFdICovCj4gKyNkZWZpbmUgRFdDX0NGR0hfUFJPVENUTF9CVUZGRVIJKDIgPDwg MikJLyogYnVmZmVyYWJsZSAtPiBBSEIgSFBST1RbMl0gKi8KPiArI2RlZmluZSBEV0NfQ0ZHSF9Q Uk9UQ1RMX0NBQ0hFCSg0IDw8IDIpCS8qIGNhY2hlYWJsZSAgLT4gQUhCIEhQUk9UWzNdICovCj4g ICNkZWZpbmUgRFdDX0NGR0hfRFNfVVBEX0VOCSgxIDw8IDUpCj4gICNkZWZpbmUgRFdDX0NGR0hf U1NfVVBEX0VOCSgxIDw8IDYpCj4gICNkZWZpbmUgRFdDX0NGR0hfU1JDX1BFUih4KQkoKHgpIDw8 IDcpCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaCBi L2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaAo+IGluZGV4IDg5NmNiNzFhMzgy Yy4uYjdiOWQ0YTU2YmIwIDEwMDY0NAo+IC0tLSBhL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0 YS9kbWEtZHcuaAo+ICsrKyBiL2luY2x1ZGUvbGludXgvcGxhdGZvcm1fZGF0YS9kbWEtZHcuaAo+ IEBAIC00OSw2ICs0OSw3IEBAIHN0cnVjdCBkd19kbWFfc2xhdmUgewo+ICAgKiBAZGF0YV93aWR0 aDogTWF4aW11bSBkYXRhIHdpZHRoIHN1cHBvcnRlZCBieSBoYXJkd2FyZSBwZXIgQUhCIG1hc3Rl cgo+ICAgKgkJKGluIGJ5dGVzLCBwb3dlciBvZiAyKQo+ICAgKiBAbXVsdGlfYmxvY2s6IE11bHRp IGJsb2NrIHRyYW5zZmVycyBzdXBwb3J0ZWQgYnkgaGFyZHdhcmUgcGVyIGNoYW5uZWwuCj4gKyAq IEBwcm90Y3RsOglQcm90ZWN0aW9uIGNvbnRyb2wgc2lnbmFscyBzZXR0aW5nIHBlciBjaGFubmVs Lgo+ICAgKi8KPiAgc3RydWN0IGR3X2RtYV9wbGF0Zm9ybV9kYXRhIHsKPiAgCXVuc2lnbmVkIGlu dAlucl9jaGFubmVsczsKPiBAQCAtNjUsNiArNjYsMTEgQEAgc3RydWN0IGR3X2RtYV9wbGF0Zm9y bV9kYXRhIHsKPiAgCXVuc2lnbmVkIGNoYXIJbnJfbWFzdGVyczsKPiAgCXVuc2lnbmVkIGNoYXIJ ZGF0YV93aWR0aFtEV19ETUFfTUFYX05SX01BU1RFUlNdOwo+ICAJdW5zaWduZWQgY2hhcgltdWx0 aV9ibG9ja1tEV19ETUFfTUFYX05SX0NIQU5ORUxTXTsKPiArI2RlZmluZSBDSEFOX1BST1RDVExf UFJJVklMRUdFRAkJQklUKDApCj4gKyNkZWZpbmUgQ0hBTl9QUk9UQ1RMX0JVRkZFUkFCTEUJCUJJ VCgxKQo+ICsjZGVmaW5lIENIQU5fUFJPVENUTF9DQUNIRUFCTEUJCUJJVCgyKQo+ICsjZGVmaW5l CUNIQU5fUFJPVENUTF9NQVNLCQlHRU5NQVNLKDIsIDApCgpUQUIgdnMuIFNQQUNFLgoKPiArCXVu c2lnbmVkIGNoYXIJcHJvdGN0bDsKPiAgfTsKPiAgCj4gICNlbmRpZiAvKiBfUExBVEZPUk1fREFU QV9ETUFfRFdfSCAqLwo+IC0tIAo+IDIuMTkuMQo+Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Sat, 10 Nov 2018 20:45:53 +0200 From: Andy Shevchenko Subject: Re: [PATCH v2 2/2] dmaengine: dw-dmac: implement dma protection control setting Message-ID: <20181110184553.GF10650@smile.fi.intel.com> References: <42576d3fcba9e510adfd0cdf5c7b867d5ce1f78c.1541866004.git.chunkeey@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <42576d3fcba9e510adfd0cdf5c7b867d5ce1f78c.1541866004.git.chunkeey@gmail.com> To: Christian Lamparter Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, Dan Williams , Vinod Koul , Viresh Kumar , Rob Herring , Mark Rutland List-ID: On Sat, Nov 10, 2018 at 05:28:31PM +0100, Christian Lamparter wrote: > This patch adds a new device-tree property that allows to > specify the dma protection control bits for the all of the > DMA controller's channel uniformly. > > Setting the "correct" bits can have a huge impact on the > PPC460EX and APM82181 that use this DMA engine in combination > with a DesignWare' SATA-II core (sata_dwc_460ex driver). > > In the OpenWrt Forum, the user takimata reported that: > |It seems your patch unleashed the full power of the SATA port. > |Where I was previously hitting a really hard limit at around > |82 MB/s for reading and 27 MB/s for writing, I am now getting this: > | > |root@OpenWrt:/mnt# time dd if=/dev/zero of=tempfile bs=1M count=1024 > |1024+0 records in > |1024+0 records out > |real 0m 13.65s > |user 0m 0.01s > |sys 0m 11.89s > | > |root@OpenWrt:/mnt# time dd if=tempfile of=/dev/null bs=1M count=1024 > |1024+0 records in > |1024+0 records out > |real 0m 8.41s > |user 0m 0.01s > |sys 0m 4.70s > | > |This means: 121 MB/s reading and 75 MB/s writing! > | > |The drive is a WD Green WD10EARX taken from an older MBL Single. > |I repeated the test a few times with even larger files to rule out > |any caching, I'm still seeing the same great performance. OpenWrt is > |now completely on par with the original MBL firmware's performance. > > Another user And.short reported: > |I can report that your fix worked! Boots up fine with two > |drives even with more partitions, and no more reboot on > |concurrent disk access! > > A closer look into the sata_dwc_460ex code revealed that > the driver did initally set the correct protection control > bits. However, this feature was lost when the sata_dwc_460ex > driver was converted to the generic DMA driver framework. LGTM, though minor style comment below. > > BugLink: https://forum.openwrt.org/t/wd-mybook-live-duo-two-disks/16195/55 > BugLink: https://forum.openwrt.org/t/wd-mybook-live-duo-two-disks/16195/50 > Fixes: 8b3444852a2b ("sata_dwc_460ex: move to generic DMA driver") > Signed-off-by: Christian Lamparter > --- > drivers/dma/dw/core.c | 2 ++ > drivers/dma/dw/platform.c | 6 ++++++ > drivers/dma/dw/regs.h | 4 ++++ > include/linux/platform_data/dma-dw.h | 6 ++++++ > 4 files changed, 18 insertions(+) > > diff --git a/drivers/dma/dw/core.c b/drivers/dma/dw/core.c > index f43e6dafe446..0772d2d6cc68 100644 > --- a/drivers/dma/dw/core.c > +++ b/drivers/dma/dw/core.c > @@ -160,12 +160,14 @@ static void dwc_initialize_chan_idma32(struct dw_dma_chan *dwc) > > static void dwc_initialize_chan_dw(struct dw_dma_chan *dwc) > { > + struct dw_dma *dw = to_dw_dma(dwc->chan.device); > u32 cfghi = DWC_CFGH_FIFO_MODE; > u32 cfglo = DWC_CFGL_CH_PRIOR(dwc->priority); > bool hs_polarity = dwc->dws.hs_polarity; > > cfghi |= DWC_CFGH_DST_PER(dwc->dws.dst_id); > cfghi |= DWC_CFGH_SRC_PER(dwc->dws.src_id); > + cfghi |= DWC_CFGH_PROTCTL(dw->pdata->protctl); > > /* Set polarity of handshake interface */ > cfglo |= hs_polarity ? DWC_CFGL_HS_DST_POL | DWC_CFGL_HS_SRC_POL : 0; > diff --git a/drivers/dma/dw/platform.c b/drivers/dma/dw/platform.c > index f62dd0944908..c299ff181bb6 100644 > --- a/drivers/dma/dw/platform.c > +++ b/drivers/dma/dw/platform.c > @@ -162,6 +162,12 @@ dw_dma_parse_dt(struct platform_device *pdev) > pdata->multi_block[tmp] = 1; > } > > + if (!of_property_read_u32(np, "snps,dma-protection-control", &tmp)) { > + if (tmp > CHAN_PROTCTL_MASK) > + return NULL; > + pdata->protctl = tmp; > + } > + > return pdata; > } > #else > diff --git a/drivers/dma/dw/regs.h b/drivers/dma/dw/regs.h > index 09e7dfdbb790..646c9c960c07 100644 > --- a/drivers/dma/dw/regs.h > +++ b/drivers/dma/dw/regs.h > @@ -200,6 +200,10 @@ enum dw_dma_msize { > #define DWC_CFGH_FCMODE (1 << 0) > #define DWC_CFGH_FIFO_MODE (1 << 1) > #define DWC_CFGH_PROTCTL(x) ((x) << 2) > +#define DWC_CFGH_PROTCTL_DATA (0 << 2) /* data access - always set */ > +#define DWC_CFGH_PROTCTL_PRIV (1 << 2) /* privileged -> AHB HPROT[1] */ > +#define DWC_CFGH_PROTCTL_BUFFER (2 << 2) /* bufferable -> AHB HPROT[2] */ > +#define DWC_CFGH_PROTCTL_CACHE (4 << 2) /* cacheable -> AHB HPROT[3] */ > #define DWC_CFGH_DS_UPD_EN (1 << 5) > #define DWC_CFGH_SS_UPD_EN (1 << 6) > #define DWC_CFGH_SRC_PER(x) ((x) << 7) > diff --git a/include/linux/platform_data/dma-dw.h b/include/linux/platform_data/dma-dw.h > index 896cb71a382c..b7b9d4a56bb0 100644 > --- a/include/linux/platform_data/dma-dw.h > +++ b/include/linux/platform_data/dma-dw.h > @@ -49,6 +49,7 @@ struct dw_dma_slave { > * @data_width: Maximum data width supported by hardware per AHB master > * (in bytes, power of 2) > * @multi_block: Multi block transfers supported by hardware per channel. > + * @protctl: Protection control signals setting per channel. > */ > struct dw_dma_platform_data { > unsigned int nr_channels; > @@ -65,6 +66,11 @@ struct dw_dma_platform_data { > unsigned char nr_masters; > unsigned char data_width[DW_DMA_MAX_NR_MASTERS]; > unsigned char multi_block[DW_DMA_MAX_NR_CHANNELS]; > +#define CHAN_PROTCTL_PRIVILEGED BIT(0) > +#define CHAN_PROTCTL_BUFFERABLE BIT(1) > +#define CHAN_PROTCTL_CACHEABLE BIT(2) > +#define CHAN_PROTCTL_MASK GENMASK(2, 0) TAB vs. SPACE. > + unsigned char protctl; > }; > > #endif /* _PLATFORM_DATA_DMA_DW_H */ > -- > 2.19.1 > -- With Best Regards, Andy Shevchenko