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: mv_xor_v2: Fix clock resource by adding a register clock From: Gregory CLEMENT Message-Id: <87lgfcdweo.fsf@bootlin.com> Date: Thu, 01 Mar 2018 09:37:03 +0100 To: Vinod Koul Cc: dmaengine@vger.kernel.org, Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org, Antoine Tenart , =?utf-8?Q?Miqu=C3=A8l?= Raynal , Nadav Haklai , Shadi Ammouri , Omri Itach , Hanna Hawa , Igal Liberman , Marcin Wojtas , Rob Herring List-ID: SGkgVmlub2QsCiAKIE9uIGpldS4sIG1hcnMgMDEgMjAxOCwgVmlub2QgS291bCA8dmlub2Qua291 bEBpbnRlbC5jb20+IHdyb3RlOgoKCj4+ID4+ICBPcHRpb25hbCBwcm9wZXJ0aWVzOgo+PiA+PiAt LSBjbG9ja3M6IE9wdGlvbmFsIHJlZmVyZW5jZSB0byB0aGUgY2xvY2sgdXNlZCBieSB0aGUgWE9S IGVuZ2luZS4KPj4gPj4gKy0gY2xvY2tzOiBPcHRpb25hbCByZWZlcmVuY2UgdG8gdGhlIGNsb2Nr cyB1c2VkIGJ5IHRoZSBYT1IgZW5naW5lLgo+PiA+PiArLSBjbG9jay1uYW1lczogbWFuZGF0b3J5 IGlmIHRoZXJlIGlzIGEgc2Vjb25kIGNsb2NrLCBpbiB0aGlzIGNhc2UgdGhlCj4+ID4+ICsgICBu YW1lIG11c3QgYmUgImNvcmUiIGZvciB0aGUgZmlyc3QgY2xvY2sgYW5kICJyZWciIGZvciB0aGUg c2Vjb25kCj4+ID4+ICsgICBvbmUKPj4gPj4gKwo+PiA+PiAgCj4+ID4+ICBFeGFtcGxlOgo+PiA+ PiAgCj4+ID4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2RtYS9tdl94b3JfdjIuYyBiL2RyaXZlcnMv ZG1hL212X3hvcl92Mi5jCj4+ID4+IGluZGV4IGY2NTJhMGUwZjVhMi4uOTNiM2Q4MGNlNzAxIDEw MDY0NAo+PiA+PiAtLS0gYS9kcml2ZXJzL2RtYS9tdl94b3JfdjIuYwo+PiA+PiArKysgYi9kcml2 ZXJzL2RtYS9tdl94b3JfdjIuYwo+PiA+PiBAQCAtMTYzLDYgKzE2Myw3IEBAIHN0cnVjdCBtdl94 b3JfdjJfZGV2aWNlIHsKPj4gPj4gIAl2b2lkIF9faW9tZW0gKmRtYV9iYXNlOwo+PiA+PiAgCXZv aWQgX19pb21lbSAqZ2xvYl9iYXNlOwo+PiA+PiAgCXN0cnVjdCBjbGsgKmNsazsKPj4gPj4gKwlz dHJ1Y3QgY2xrICpyZWdfY2xrOwo+PiA+PiAgCXN0cnVjdCB0YXNrbGV0X3N0cnVjdCBpcnFfdGFz a2xldDsKPj4gPj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVfc3dfZGVzYzsKPj4gPj4gIAlzdHJ1 Y3QgZG1hX2RldmljZSBkbWFkZXY7Cj4+ID4+IEBAIC03NDksMTMgKzc1MCwyNCBAQCBzdGF0aWMg aW50IG12X3hvcl92Ml9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+PiA+PiAg CWlmIChyZXQpCj4+ID4+ICAJCXJldHVybiByZXQ7Cj4+ID4+ICAKPj4gPj4gLQl4b3JfZGV2LT5j bGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7Cj4+ID4+IC0JaWYgKElTX0VSUih4 b3JfZGV2LT5jbGspICYmIFBUUl9FUlIoeG9yX2Rldi0+Y2xrKSA9PSAtRVBST0JFX0RFRkVSKQo+ PiA+PiArCXhvcl9kZXYtPnJlZ19jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgInJlZyIp Owo+PiA+Cj4+ID4gaXMgdGhpcyBhbiBleGl0aW5nIHByb3BlcnR5Pwo+PiAKPj4gSXQgaXMgdGhl IG5hbWUgb2YgdGhlIG5ldyBvcHRpb25hbCBjbG9jayBkZXNjcmliZWQgaW4gdGhlIGZpcnN0IHBh cnQgb2YKPj4gdGhpcyBwYXRjaC4KPgo+IG9rYXkgSSBhbSBtaXNzaW5nIHNvbWV0aGluZyB0aGVu LCB5b3UgYXJlIHJlYWRpbmcgInJlZyIgYnV0IHByb3BlcnR5IGFkZGVkIGlzCj4gImNsb2NrLW5h bWVzIiwgd2hlcmUgYXJlIHlvdSByZWFkaW5nIHRoaXM/CgoicmVnIiBpcyBhY3R1YWxseSB0aGUg X25hbWVfIG9mIHRoZSBjbG9jayBnaXZlbiBieSB0aGUgY2xvY2stbmFtZXMKcHJvcGVydHkuCgpX aXRoIGRldm1fY2xrX2dldCB0aGUgc2Vjb25kIHBhcmFtZXRlciBpcyBhIHBvaW50ZXIgdG8gdGhl IG5hbWUgb2YgdGhlCmNsb2NrIG5hbWUuIFdoZW4gaXQgaXMgTlVMTCB0aGVuLCB0aGUgZmlyc3Qg Y2xvY2sgaXMgdXNlZCwgZWxzZSBpbiB0aGUKY29tbW9uIGNsb2NrIGZyYW1ld29yayBsb29rcyBm b3IgdGhlIGNsb2NrIGFzc29jaWF0ZWQgd2l0aCB0aGUgbmFtZQpnaXZlbi4KCldpdGggdGhpcyBw YXRjaCBib3RoIGNsb2NrIGhhdmUgbm93IGEgbmFtZSwgYnV0IGluIG9yZGVyIHRvIGJlIGJhY2t3 YXJkCmNvbXBhdGlibGUsIEkgZG9uJ3QgdXNlIHRoZSBuYW1lIGZvciB0aGUgZmlyc3QgY2xvY2su IEl0IGFsbG93cyB0byBzdGlsbAp1c2UgdGhpcyBjbG9jayB3aXRoIGEgZGV2aWNlIHRyZWUgdXNp bmcgdGhlIG9sZCBiaW5kaW5nLgoKR3JlZ29yeQoKCj4KPj4gCj4+IEFib3V0IHRoZSB0eXBvLCBk byB5b3UgbmVlZCBhIG5ldyB2ZXJzaW9uIG9yIGRvIHlvdSBwbGFuIHRvIGZpeCB0aGVtCj4+IHdo aWxlIGFwcGx5aW5nIHRoZSBwYXRjaD8KPj4gCj4+IFRoYW5rcywKPj4gCj4+IEdyZWdvcnkKPj4g Cj4+IAo+PiA+Cj4+ID4+ICsJaWYgKCFJU19FUlIoeG9yX2Rldi0+cmVnX2NsaykpIHsKPj4gPj4g KwkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHhvcl9kZXYtPnJlZ19jbGspOwo+PiA+PiArCQlp ZiAocmV0KQo+PiA+PiArCQkJcmV0dXJuIHJldDsKPj4gPj4gKwl9IGVsc2UgaWYgKFBUUl9FUlIo eG9yX2Rldi0+cmVnX2NsaykgPT0gLUVQUk9CRV9ERUZFUikgewo+PiA+PiAgCQlyZXR1cm4gLUVQ Uk9CRV9ERUZFUjsKPj4gPj4gKwl9Cj4+ID4+ICsKPj4gPj4gKwl4b3JfZGV2LT5jbGsgPSBkZXZt X2Nsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7Cj4+ID4+ICsJaWYgKElTX0VSUih4b3JfZGV2LT5j bGspICYmIFBUUl9FUlIoeG9yX2Rldi0+Y2xrKSA9PSAtRVBST0JFX0RFRkVSKSB7Cj4+ID4+ICsJ CXJldCA9IEVQUk9CRV9ERUZFUjsKPj4gPj4gKwkJZ290byBkaXNhYmxlX3JlZ19jbGs7Cj4+ID4+ ICsJfQo+PiA+PiAgCWlmICghSVNfRVJSKHhvcl9kZXYtPmNsaykpIHsKPj4gPj4gIAkJcmV0ID0g Y2xrX3ByZXBhcmVfZW5hYmxlKHhvcl9kZXYtPmNsayk7Cj4+ID4+ICAJCWlmIChyZXQpCj4+ID4+ IC0JCQlyZXR1cm4gcmV0Owo+PiA+PiArCQkJZ290byBkaXNhYmxlX3JlZ19jbGs7Cj4+ID4+ICAJ fQo+PiA+PiAgCj4+ID4+ICAJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKCZw ZGV2LT5kZXYsIDEsCj4+ID4+IEBAIC04NjYsOCArODc4LDkgQEAgc3RhdGljIGludCBtdl94b3Jf djJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAqcGRldikKPj4gPj4gIGZyZWVfbXNpX2ly cXM6Cj4+ID4+ICAJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoJnBkZXYtPmRldik7Cj4+ ID4+ICBkaXNhYmxlX2NsazoKPj4gPj4gLQlpZiAoIUlTX0VSUih4b3JfZGV2LT5jbGspKQo+PiA+ PiAtCQljbGtfZGlzYWJsZV91bnByZXBhcmUoeG9yX2Rldi0+Y2xrKTsKPj4gPj4gKwljbGtfZGlz YWJsZV91bnByZXBhcmUoeG9yX2Rldi0+Y2xrKTsKPj4gPj4gK2Rpc2FibGVfcmVnX2NsazoKPj4g Pj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoeG9yX2Rldi0+cmVnX2Nsayk7Cj4+ID4+ICAJcmV0 dXJuIHJldDsKPj4gPj4gIH0KPj4gPj4gIAo+PiA+PiAtLSAKPj4gPj4gMi4xNS4xCj4+ID4+IAo+ PiA+Cj4+ID4gLS0gCj4+ID4gflZpbm9kCj4+ID4gLS0KPj4gPiBUbyB1bnN1YnNjcmliZSBmcm9t IHRoaXMgbGlzdDogc2VuZCB0aGUgbGluZSAidW5zdWJzY3JpYmUgZG1hZW5naW5lIiBpbgo+PiA+ IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4+ID4g TW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8t aW5mby5odG1sCj4+IAo+PiAtLSAKPj4gR3JlZ29yeSBDbGVtZW50LCBCb290bGluIChmb3JtZXJs eSBGcmVlIEVsZWN0cm9ucykKPj4gRW1iZWRkZWQgTGludXggYW5kIEtlcm5lbCBlbmdpbmVlcmlu Zwo+PiBodHRwOi8vYm9vdGxpbi5jb20KPj4gLS0KPj4gVG8gdW5zdWJzY3JpYmUgZnJvbSB0aGlz IGxpc3Q6IHNlbmQgdGhlIGxpbmUgInVuc3Vic2NyaWJlIGRtYWVuZ2luZSIgaW4KPj4gdGhlIGJv ZHkgb2YgYSBtZXNzYWdlIHRvIG1ham9yZG9tb0B2Z2VyLmtlcm5lbC5vcmcKPj4gTW9yZSBtYWpv cmRvbW8gaW5mbyBhdCAgaHR0cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1s Cj4KPiAtLSAKPiB+Vmlub2QK From mboxrd@z Thu Jan 1 00:00:00 1970 From: gregory.clement@bootlin.com (Gregory CLEMENT) Date: Thu, 01 Mar 2018 09:37:03 +0100 Subject: [PATCH] dmaengine: mv_xor_v2: Fix clock resource by adding a register clock In-Reply-To: <20180301082554.GE15443@localhost> (Vinod Koul's message of "Thu, 1 Mar 2018 13:55:54 +0530") References: <20180214162733.4591-1-gregory.clement@bootlin.com> <20180227151511.GC15443@localhost> <87vaeijw83.fsf@bootlin.com> <20180301082554.GE15443@localhost> Message-ID: <87lgfcdweo.fsf@bootlin.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Vinod, On jeu., mars 01 2018, Vinod Koul wrote: >> >> Optional properties: >> >> -- clocks: Optional reference to the clock used by the XOR engine. >> >> +- clocks: Optional reference to the clocks used by the XOR engine. >> >> +- clock-names: mandatory if there is a second clock, in this case the >> >> + name must be "core" for the first clock and "reg" for the second >> >> + one >> >> + >> >> >> >> Example: >> >> >> >> diff --git a/drivers/dma/mv_xor_v2.c b/drivers/dma/mv_xor_v2.c >> >> index f652a0e0f5a2..93b3d80ce701 100644 >> >> --- a/drivers/dma/mv_xor_v2.c >> >> +++ b/drivers/dma/mv_xor_v2.c >> >> @@ -163,6 +163,7 @@ struct mv_xor_v2_device { >> >> void __iomem *dma_base; >> >> void __iomem *glob_base; >> >> struct clk *clk; >> >> + struct clk *reg_clk; >> >> struct tasklet_struct irq_tasklet; >> >> struct list_head free_sw_desc; >> >> struct dma_device dmadev; >> >> @@ -749,13 +750,24 @@ static int mv_xor_v2_probe(struct platform_device *pdev) >> >> if (ret) >> >> return ret; >> >> >> >> - xor_dev->clk = devm_clk_get(&pdev->dev, NULL); >> >> - if (IS_ERR(xor_dev->clk) && PTR_ERR(xor_dev->clk) == -EPROBE_DEFER) >> >> + xor_dev->reg_clk = devm_clk_get(&pdev->dev, "reg"); >> > >> > is this an exiting property? >> >> It is the name of the new optional clock described in the first part of >> this patch. > > okay I am missing something then, you are reading "reg" but property added is > "clock-names", where are you reading this? "reg" is actually the _name_ of the clock given by the clock-names property. With devm_clk_get the second parameter is a pointer to the name of the clock name. When it is NULL then, the first clock is used, else in the common clock framework looks for the clock associated with the name given. With this patch both clock have now a name, but in order to be backward compatible, I don't use the name for the first clock. It allows to still use this clock with a device tree using the old binding. Gregory > >> >> About the typo, do you need a new version or do you plan to fix them >> while applying the patch? >> >> Thanks, >> >> Gregory >> >> >> > >> >> + if (!IS_ERR(xor_dev->reg_clk)) { >> >> + ret = clk_prepare_enable(xor_dev->reg_clk); >> >> + if (ret) >> >> + return ret; >> >> + } else if (PTR_ERR(xor_dev->reg_clk) == -EPROBE_DEFER) { >> >> return -EPROBE_DEFER; >> >> + } >> >> + >> >> + xor_dev->clk = devm_clk_get(&pdev->dev, NULL); >> >> + if (IS_ERR(xor_dev->clk) && PTR_ERR(xor_dev->clk) == -EPROBE_DEFER) { >> >> + ret = EPROBE_DEFER; >> >> + goto disable_reg_clk; >> >> + } >> >> if (!IS_ERR(xor_dev->clk)) { >> >> ret = clk_prepare_enable(xor_dev->clk); >> >> if (ret) >> >> - return ret; >> >> + goto disable_reg_clk; >> >> } >> >> >> >> ret = platform_msi_domain_alloc_irqs(&pdev->dev, 1, >> >> @@ -866,8 +878,9 @@ static int mv_xor_v2_probe(struct platform_device *pdev) >> >> free_msi_irqs: >> >> platform_msi_domain_free_irqs(&pdev->dev); >> >> disable_clk: >> >> - if (!IS_ERR(xor_dev->clk)) >> >> - clk_disable_unprepare(xor_dev->clk); >> >> + clk_disable_unprepare(xor_dev->clk); >> >> +disable_reg_clk: >> >> + clk_disable_unprepare(xor_dev->reg_clk); >> >> return ret; >> >> } >> >> >> >> -- >> >> 2.15.1 >> >> >> > >> > -- >> > ~Vinod >> > -- >> > To unsubscribe from this list: send the line "unsubscribe dmaengine" in >> > the body of a message to majordomo at vger.kernel.org >> > More majordomo info at http://vger.kernel.org/majordomo-info.html >> >> -- >> Gregory Clement, Bootlin (formerly Free Electrons) >> Embedded Linux and Kernel engineering >> http://bootlin.com >> -- >> To unsubscribe from this list: send the line "unsubscribe dmaengine" in >> the body of a message to majordomo at vger.kernel.org >> More majordomo info at http://vger.kernel.org/majordomo-info.html > > -- > ~Vinod -- Gregory Clement, Bootlin (formerly Free Electrons) Embedded Linux and Kernel engineering http://bootlin.com