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: [v1,2/2] dmaengine: dw: implement per-channel protection control setting From: Christian Lamparter Message-Id: <25273848.Yt2vXhTyVK@debian64> Date: Mon, 05 Nov 2018 17:06:20 +0100 To: Andy Shevchenko Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, Dan Williams , Vinod Koul , Viresh Kumar , Rob Herring , Mark Rutland List-ID: T24gTW9uZGF5LCBOb3ZlbWJlciA1LCAyMDE4IDM6Mjc6NDEgUE0gQ0VUIEFuZHkgU2hldmNoZW5r byB3cm90ZToKPiBPbiBNb24sIE5vdiAwNSwgMjAxOCBhdCAwNDoyMjo1NFBNICswMjAwLCBBbmR5 IFNoZXZjaGVua28gd3JvdGU6Cj4gPiBPbiBTdW4sIE5vdiAwNCwgMjAxOCBhdCAwNjowMTozOVBN ICswMTAwLCBDaHJpc3RpYW4gTGFtcGFydGVyIHdyb3RlOgo+IAo+ID4gPiArCXN0cnVjdCBkd19k bWEgKmR3ID0gdG9fZHdfZG1hKGR3Yy0+Y2hhbi5kZXZpY2UpOwo+ID4gPiArCXNpemVfdCBjaGFu aWR4ID0gKHNpemVfdCkoZHdjIC0gZHctPmNoYW4pOwo+ID4gCj4gPiBXZSBoYXZlIG1hc2sgZmll bGQsIHNvLCBpbmRleCBpcyBhIGZpcnN0IHNldCBiaXQgb3V0IG9mIG1hc2ssIF9fZmZzKG1hc2sp Lgo+ID4gCj4gPiAJdW5zaWduZWQgaW50IHByb3RjdGwgPSBkdy0+cGRhdGEtPnByb3RjdGxbX19m ZnMobWFzayldOwo+IAo+IGR3Yy0+bWFzaywgb2YgY291cnNlLgpPaywgd2lsbCBkby4gSSdsbCBz ZW50IGEgdjIgbGF0ZXIgdGhpcyB3ZWVrLgoKPiBBbHNvLCBpdCdzIHBvc3NpYmxlIHRvIHVzZSAo dGhvdWdoIGJldHRlciB0byBjaGVjaykgZHdjLT5jaGFuLmNoYW5faWQsCj4gdGhvdWdoIEkgZHVu bm8gaWYgaXQncyByZWxpYWJsZS4KZHdjLT5jaGFuLmNoYW5faWQgaXMgc3ViamVjdGVkIHRvIHRo ZSBjaGFuX2FsbG9jYXRpb24gc2V0dGluZy4gClNvLCBpZiBpdCdzIHNldCB0byBDSEFOX0FMTE9D QVRJT05fREVTQ0VORElORyB0aGUgZHQgcHJvcCBhcnJheSB2YWx1ZXMKZm9yIHRoZSBwcm90Y3Rs IHdvdWxkIG5lZWQgdG8gYmUgcmV2ZXJzZWQgYXMgd2VsbCBpbiBvcmRlciB0byBtYXRjaCB0aGUK b3RoZXIgcGVyLWNoYW5uZWwgc2V0dGluZ3MgKGZvciBleGFtcGxlIG11bHRpYmxvY2spLgpTbywg bGV0J3Mgbm90IGRvIHRoYXQgc2luY2UgdGhpcyBnZXRzIHZlcnkgY29uZnVzaW5nLgo= From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: From: Christian Lamparter Subject: Re: [PATCH v1 2/2] dmaengine: dw: implement per-channel protection control setting Date: Mon, 05 Nov 2018 17:06:20 +0100 Message-ID: <25273848.Yt2vXhTyVK@debian64> In-Reply-To: <20181105142741.GI10650@smile.fi.intel.com> References: <6b18bcf33d6473c166b607a5fa31ba63727cf6bb.1541350844.git.chunkeey@gmail.com> <20181105142254.GG10650@smile.fi.intel.com> <20181105142741.GI10650@smile.fi.intel.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" To: Andy Shevchenko Cc: dmaengine@vger.kernel.org, devicetree@vger.kernel.org, Dan Williams , Vinod Koul , Viresh Kumar , Rob Herring , Mark Rutland List-ID: On Monday, November 5, 2018 3:27:41 PM CET Andy Shevchenko wrote: > On Mon, Nov 05, 2018 at 04:22:54PM +0200, Andy Shevchenko wrote: > > On Sun, Nov 04, 2018 at 06:01:39PM +0100, Christian Lamparter wrote: > > > > + struct dw_dma *dw = to_dw_dma(dwc->chan.device); > > > + size_t chanidx = (size_t)(dwc - dw->chan); > > > > We have mask field, so, index is a first set bit out of mask, __ffs(mask). > > > > unsigned int protctl = dw->pdata->protctl[__ffs(mask)]; > > dwc->mask, of course. Ok, will do. I'll sent a v2 later this week. > Also, it's possible to use (though better to check) dwc->chan.chan_id, > though I dunno if it's reliable. dwc->chan.chan_id is subjected to the chan_allocation setting. So, if it's set to CHAN_ALLOCATION_DESCENDING the dt prop array values for the protctl would need to be reversed as well in order to match the other per-channel settings (for example multiblock). So, let's not do that since this gets very confusing.