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: dmaengine: rcar-dmac: clear channel register when error From: Laurent Pinchart Message-Id: <2150046.r5M1qlqddB@avalon> Date: Mon, 02 Jul 2018 09:37:28 +0300 To: Kuninori Morimoto Cc: Vinod , Geert Uytterhoeven , Dan Williams , Magnus Damm , Linux-Renesas , Kieran Bingham , Geert Uytterhoeven , dmaengine@vger.kernel.org List-ID: SGkgTW9yaW1vdG8tc2FuLAoKVGhhbmsgeW91IGZvciB0aGUgcGF0Y2guCgpPbiBNb25kYXksIDIg SnVseSAyMDE4IDA0OjA3OjE3IEVFU1QgS3VuaW5vcmkgTW9yaW1vdG8gd3JvdGU6Cj4gRnJvbTog S3VuaW5vcmkgTW9yaW1vdG8gPGt1bmlub3JpLm1vcmltb3RvLmd4QHJlbmVzYXMuY29tPgo+IAo+ IFdlIG5lZWQgdG8gY2xlYXIgY2hhbm5lbCByZWdpc3RlciBpbiBlcnJvciBjYXNlIGFzIHJlY292 ZXJ5Lgo+IFRoZSBjaGFubmVsIGlzIGFscmVhZHkgc3RvcHBlZCBpbiBzdWNoIGNhc2UsIHRodXMg d2UgZG9uJ3QgbmVlZCB0byBjYWxsCj4gcmNhcl9kbWFjX2NoYW5faGFsdCgpIGJlZm9yZSBjbGVh cmluZy4KPiAKPiByY2FyX2RtYWNfY2hhbl9oYWx0KCkgd2lsbCBjbGVhciByZWdpc3RlciBhbmQg Y29uZmlybSBERSBiaXQuCj4gQnV0IGl0IHdpbGwgYmUgZmFpbGVkIGJlY2F1c2UgY2hhbm5lbCBp cyBhbHJlYWR5IHN0b3BwZWQgaW4gZXJyb3IgY2FzZS4KPiBJbiBvdGhlciB3b3Jkcywgd2Ugc2hv dWxkbid0IGNhbGwgaXQgdGhlbi4KPiAKPiAvLyBUaGlzIHBhdGNoIHN0YXJ0ZWQgdG8gdXNlIEMr KyBzdHlsZSBjb21tZW50IG91dAo+IC8vIGJlY2F1c2UgaXQgaXMgcmVjZW50IExpbnVzIHJlcXVl c3QKCkkgZmVhciB0aGlzIHdpbGwgZ2VuZXJhdGUgbG90cyBvZiBmcnVzdHJhdGlvbiA6LS8gV2hp bGUgSSBzdHJvbmdseSBwcmVmZXIgdGhlIAp0cmFkaXRpb25hbCBDIHN0eWxlLCBJJ20gZmluZSBs ZWF2aW5nIHRoZSBjaG9pY2UgdG8gZHJpdmVyIGF1dGhvcnMuIEhvd2V2ZXIsIEkgCnRoaW5rIHRo YXQgbWl4aW5nIGRpZmZlcmVudCBzdHlsZXMgaW4gdGhlIHNhbWUgZmlsZSBvbmx5IGhpbmRlcnMg cmVhZGFiaWxpdHkuIApXb3VsZCB5b3UgbGlrZSB0byBjb252ZXJ0IHRoZSB3aG9sZSBmaWxlID8g Oy0pCgo+IFJlcG9ydGVkLWJ5OiBIaXJva2kgTmVnaXNoaSA8aGlyb2tpLm5lZ2lzaGkuYnhAcmVu ZXNhcy5jb20+Cj4gU2lnbmVkLW9mZi1ieTogS3VuaW5vcmkgTW9yaW1vdG8gPGt1bmlub3JpLm1v cmltb3RvLmd4QHJlbmVzYXMuY29tPgo+IFJldmlld2VkLWJ5OiBIaXJva2kgTmVnaXNoaSA8aGly b2tpLm5lZ2lzaGkuYnhAcmVuZXNhcy5jb20+Cj4gLS0tCj4gIGRyaXZlcnMvZG1hL3NoL3JjYXIt ZG1hYy5jIHwgOCArKysrKysrLQo+ICAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAx IGRlbGV0aW9uKC0pCj4gCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL3NoL3JjYXItZG1hYy5j IGIvZHJpdmVycy9kbWEvc2gvcmNhci1kbWFjLmMKPiBpbmRleCAyNzljOTMwLi4zNWQ3YTE2IDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL3NoL3JjYXItZG1hYy5jCj4gKysrIGIvZHJpdmVycy9k bWEvc2gvcmNhci1kbWFjLmMKPiBAQCAtMTUyNSw3ICsxNTI1LDEzIEBAIHN0YXRpYyBpcnFyZXR1 cm5fdCByY2FyX2RtYWNfaXNyX2NoYW5uZWwoaW50IGlycSwKPiB2b2lkICpkZXYpCj4gCj4gIAlj aGNyID0gcmNhcl9kbWFjX2NoYW5fcmVhZChjaGFuLCBSQ0FSX0RNQUNIQ1IpOwo+ICAJaWYgKGNo Y3IgJiBSQ0FSX0RNQUNIQ1JfQ0FFKSB7Cj4gLQkJcmNhcl9kbWFjX2NoYW5faGFsdChjaGFuKTsK PiArCQlzdHJ1Y3QgcmNhcl9kbWFjICpkbWFjID0gZGV2X2dldF9kcnZkYXRhKGNoYW4tPmNoYW4u ZGV2aWNlLT5kZXYpOwoKVGhpcyBjb3VsZCBiZSBzaW1wbGlmaWVkIHdpdGgKCgkJc3RydWN0IHJj YXJfZG1hYyAqZG1hYyA9IHRvX3JjYXJfZG1hYyhjaGFuLT5jaGFuLmRldmljZSk7Cgo+ICsKPiAr CQkvLyBXZSBkb24ndCBuZWVkIHRvIGNhbGwgcmNhcl9kbWFjX2NoYW5faGFsdCgpCj4gKwkJLy8g YmVjYXVzZSBjaGFubmVsIGlzIGFscmVhZHkgc3RvcHBlZCBpbiBlcnJvciBjYXNlLgo+ICsJCS8v IFdlIG5lZWQgdG8gY2xlYXIgcmVnaXN0ZXIgYW5kIGNoZWNrIERFIGJpdCBhcyByZWNvdmVyeS4K CklzIGl0IGFsc28gYSByZXF1ZXN0IGZyb20gTGludXMgdG8gd3JhcCB0ZXh0IG11Y2ggYmVmb3Jl IHRoZSA4MCBjaGFyYWN0ZXJzIApsaW1pdCA/IDotKQoKPiArCQlyY2FyX2RtYWNfd3JpdGUoZG1h YywgUkNBUl9ETUFDSENMUiwgMSA8PCBjaGFuLT5pbmRleCk7Cj4gKwkJcmNhcl9kbWFjX2NoY3Jf ZGVfYmFycmllcihjaGFuKTsKPiAgCQlyZWluaXQgPSB0cnVlOwo+ICAJCWdvdG8gc3Bpbl9sb2Nr X2VuZDsKPiAgCX0K From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from perceval.ideasonboard.com ([213.167.242.64]:34358 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751349AbeGBGhU (ORCPT ); Mon, 2 Jul 2018 02:37:20 -0400 From: Laurent Pinchart To: Kuninori Morimoto Cc: Vinod , Geert Uytterhoeven , Dan Williams , Magnus Damm , Linux-Renesas , Kieran Bingham , Geert Uytterhoeven , dmaengine@vger.kernel.org Subject: Re: [PATCH] dmaengine: rcar-dmac: clear channel register when error Date: Mon, 02 Jul 2018 09:37:28 +0300 Message-ID: <2150046.r5M1qlqddB@avalon> In-Reply-To: <87wouefnsq.wl-kuninori.morimoto.gx@renesas.com> References: <87wouefnsq.wl-kuninori.morimoto.gx@renesas.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-renesas-soc-owner@vger.kernel.org List-ID: Hi Morimoto-san, Thank you for the patch. On Monday, 2 July 2018 04:07:17 EEST Kuninori Morimoto wrote: > From: Kuninori Morimoto > > We need to clear channel register in error case as recovery. > The channel is already stopped in such case, thus we don't need to call > rcar_dmac_chan_halt() before clearing. > > rcar_dmac_chan_halt() will clear register and confirm DE bit. > But it will be failed because channel is already stopped in error case. > In other words, we shouldn't call it then. > > // This patch started to use C++ style comment out > // because it is recent Linus request I fear this will generate lots of frustration :-/ While I strongly prefer the traditional C style, I'm fine leaving the choice to driver authors. However, I think that mixing different styles in the same file only hinders readability. Would you like to convert the whole file ? ;-) > Reported-by: Hiroki Negishi > Signed-off-by: Kuninori Morimoto > Reviewed-by: Hiroki Negishi > --- > drivers/dma/sh/rcar-dmac.c | 8 +++++++- > 1 file changed, 7 insertions(+), 1 deletion(-) > > diff --git a/drivers/dma/sh/rcar-dmac.c b/drivers/dma/sh/rcar-dmac.c > index 279c930..35d7a16 100644 > --- a/drivers/dma/sh/rcar-dmac.c > +++ b/drivers/dma/sh/rcar-dmac.c > @@ -1525,7 +1525,13 @@ static irqreturn_t rcar_dmac_isr_channel(int irq, > void *dev) > > chcr = rcar_dmac_chan_read(chan, RCAR_DMACHCR); > if (chcr & RCAR_DMACHCR_CAE) { > - rcar_dmac_chan_halt(chan); > + struct rcar_dmac *dmac = dev_get_drvdata(chan->chan.device->dev); This could be simplified with struct rcar_dmac *dmac = to_rcar_dmac(chan->chan.device); > + > + // We don't need to call rcar_dmac_chan_halt() > + // because channel is already stopped in error case. > + // We need to clear register and check DE bit as recovery. Is it also a request from Linus to wrap text much before the 80 characters limit ? :-) > + rcar_dmac_write(dmac, RCAR_DMACHCLR, 1 << chan->index); > + rcar_dmac_chcr_de_barrier(chan); > reinit = true; > goto spin_lock_end; > } -- Regards, Laurent Pinchart