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: Andy Shevchenko Message-Id: <20181105142741.GI10650@smile.fi.intel.com> Date: Mon, 5 Nov 2018 16:27:41 +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: T24gTW9uLCBOb3YgMDUsIDIwMTggYXQgMDQ6MjI6NTRQTSArMDIwMCwgQW5keSBTaGV2Y2hlbmtv IHdyb3RlOgo+IE9uIFN1biwgTm92IDA0LCAyMDE4IGF0IDA2OjAxOjM5UE0gKzAxMDAsIENocmlz dGlhbiBMYW1wYXJ0ZXIgd3JvdGU6Cgo+ID4gKwlzdHJ1Y3QgZHdfZG1hICpkdyA9IHRvX2R3X2Rt YShkd2MtPmNoYW4uZGV2aWNlKTsKPiA+ICsJc2l6ZV90IGNoYW5pZHggPSAoc2l6ZV90KShkd2Mg LSBkdy0+Y2hhbik7Cj4gCj4gV2UgaGF2ZSBtYXNrIGZpZWxkLCBzbywgaW5kZXggaXMgYSBmaXJz dCBzZXQgYml0IG91dCBvZiBtYXNrLCBfX2ZmcyhtYXNrKS4KPiAKPiAJdW5zaWduZWQgaW50IHBy b3RjdGwgPSBkdy0+cGRhdGEtPnByb3RjdGxbX19mZnMobWFzayldOwoKZHdjLT5tYXNrLCBvZiBj b3Vyc2UuCgpBbHNvLCBpdCdzIHBvc3NpYmxlIHRvIHVzZSAodGhvdWdoIGJldHRlciB0byBjaGVj aykgZHdjLT5jaGFuLmNoYW5faWQsIHRob3VnaCBJCmR1bm5vIGlmIGl0J3MgcmVsaWFibGUuCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Date: Mon, 5 Nov 2018 16:27:41 +0200 From: Andy Shevchenko Subject: Re: [PATCH v1 2/2] dmaengine: dw: implement per-channel protection control setting Message-ID: <20181105142741.GI10650@smile.fi.intel.com> References: <6b18bcf33d6473c166b607a5fa31ba63727cf6bb.1541350844.git.chunkeey@gmail.com> <19ee8f8992a364d826680ee86f3a965c395a672d.1541350844.git.chunkeey@gmail.com> <20181105142254.GG10650@smile.fi.intel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20181105142254.GG10650@smile.fi.intel.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 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. Also, it's possible to use (though better to check) dwc->chan.chan_id, though I dunno if it's reliable. -- With Best Regards, Andy Shevchenko