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: Vinod Koul Message-Id: <20180227151511.GC15443@localhost> Date: Tue, 27 Feb 2018 20:45:11 +0530 To: Gregory CLEMENT Cc: dmaengine@vger.kernel.org, Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org, Antoine Tenart , =?iso-8859-1?Q?Miqu=E8l?= Raynal , Nadav Haklai , Shadi Ammouri , Omri Itach , Hanna Hawa , Igal Liberman , Marcin Wojtas , Rob Herring List-ID: UGxzIGRvIENDIERUIGZvbGtzIGFuZCBSb2IgZm9yIGJpbmRpbmdzIHVwZGF0ZQoKT24gV2VkLCBG ZWIgMTQsIDIwMTggYXQgMDU6Mjc6MzNQTSArMDEwMCwgR3JlZ29yeSBDTEVNRU5UIHdyb3RlOgo+ IE9uIHRoZSBDUDExMCBjb21wb25lbnRzIHdoaWMgYXJlIHByZXNlbnQgb24gdGhlIEFybWFkYSA3 Sy84SyBTb0Mgd2UgbmVlZAoKL3Mvd2hpYy93aGljaAoKPiB0byBleHBsaWNpdGx5IGVuYWJsZSB0 aGUgcmVnaXN0ZXJzIGNsb2NrLiBIb3dldmVyIGl0IGlzIG5vdCBuZWVkZWQgZm9yCgovcy9yZWdp c3RlcnMvcmVnaXN0ZXIKCj4gdGhlIEFQOHh4IGNvbXBvbmVuZXQsIHRoYXQncyB3aHkgdGhpcyBj bG9jayBpcyBvcHRpb25hbC4KPiAKPiBTaWduZWQtb2ZmLWJ5OiBHcmVnb3J5IENMRU1FTlQgPGdy ZWdvcnkuY2xlbWVudEBib290bGluLmNvbT4KPiAtLS0KPiAgLi4uL2RldmljZXRyZWUvYmluZGlu Z3MvZG1hL212LXhvci12Mi50eHQgICAgICAgICAgfCAgNiArKysrKy0KPiAgZHJpdmVycy9kbWEv bXZfeG9yX3YyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMyArKysrKysrKysrKysr KysrKy0tLS0tCj4gIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlv bnMoLSkKPiAKPiBkaWZmIC0tZ2l0IGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdz L2RtYS9tdi14b3ItdjIudHh0IGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2Rt YS9tdi14b3ItdjIudHh0Cj4gaW5kZXggMjE3YTkwZWFhYmU3Li45YzM4YmJlN2U2ZDcgMTAwNjQ0 Cj4gLS0tIGEvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tdi14b3ItdjIu dHh0Cj4gKysrIGIvRG9jdW1lbnRhdGlvbi9kZXZpY2V0cmVlL2JpbmRpbmdzL2RtYS9tdi14b3It djIudHh0Cj4gQEAgLTExLDcgKzExLDExIEBAIFJlcXVpcmVkIHByb3BlcnRpZXM6Cj4gICAgaW50 ZXJydXB0cy4KPiAgCj4gIE9wdGlvbmFsIHByb3BlcnRpZXM6Cj4gLS0gY2xvY2tzOiBPcHRpb25h bCByZWZlcmVuY2UgdG8gdGhlIGNsb2NrIHVzZWQgYnkgdGhlIFhPUiBlbmdpbmUuCj4gKy0gY2xv Y2tzOiBPcHRpb25hbCByZWZlcmVuY2UgdG8gdGhlIGNsb2NrcyB1c2VkIGJ5IHRoZSBYT1IgZW5n aW5lLgo+ICstIGNsb2NrLW5hbWVzOiBtYW5kYXRvcnkgaWYgdGhlcmUgaXMgYSBzZWNvbmQgY2xv Y2ssIGluIHRoaXMgY2FzZSB0aGUKPiArICAgbmFtZSBtdXN0IGJlICJjb3JlIiBmb3IgdGhlIGZp cnN0IGNsb2NrIGFuZCAicmVnIiBmb3IgdGhlIHNlY29uZAo+ICsgICBvbmUKPiArCj4gIAo+ICBF eGFtcGxlOgo+ICAKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEvbXZfeG9yX3YyLmMgYi9kcml2 ZXJzL2RtYS9tdl94b3JfdjIuYwo+IGluZGV4IGY2NTJhMGUwZjVhMi4uOTNiM2Q4MGNlNzAxIDEw MDY0NAo+IC0tLSBhL2RyaXZlcnMvZG1hL212X3hvcl92Mi5jCj4gKysrIGIvZHJpdmVycy9kbWEv bXZfeG9yX3YyLmMKPiBAQCAtMTYzLDYgKzE2Myw3IEBAIHN0cnVjdCBtdl94b3JfdjJfZGV2aWNl IHsKPiAgCXZvaWQgX19pb21lbSAqZG1hX2Jhc2U7Cj4gIAl2b2lkIF9faW9tZW0gKmdsb2JfYmFz ZTsKPiAgCXN0cnVjdCBjbGsgKmNsazsKPiArCXN0cnVjdCBjbGsgKnJlZ19jbGs7Cj4gIAlzdHJ1 Y3QgdGFza2xldF9zdHJ1Y3QgaXJxX3Rhc2tsZXQ7Cj4gIAlzdHJ1Y3QgbGlzdF9oZWFkIGZyZWVf c3dfZGVzYzsKPiAgCXN0cnVjdCBkbWFfZGV2aWNlIGRtYWRldjsKPiBAQCAtNzQ5LDEzICs3NTAs MjQgQEAgc3RhdGljIGludCBtdl94b3JfdjJfcHJvYmUoc3RydWN0IHBsYXRmb3JtX2RldmljZSAq cGRldikKPiAgCWlmIChyZXQpCj4gIAkJcmV0dXJuIHJldDsKPiAgCj4gLQl4b3JfZGV2LT5jbGsg PSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7Cj4gLQlpZiAoSVNfRVJSKHhvcl9kZXYt PmNsaykgJiYgUFRSX0VSUih4b3JfZGV2LT5jbGspID09IC1FUFJPQkVfREVGRVIpCj4gKwl4b3Jf ZGV2LT5yZWdfY2xrID0gZGV2bV9jbGtfZ2V0KCZwZGV2LT5kZXYsICJyZWciKTsKCmlzIHRoaXMg YW4gZXhpdGluZyBwcm9wZXJ0eT8KCj4gKwlpZiAoIUlTX0VSUih4b3JfZGV2LT5yZWdfY2xrKSkg ewo+ICsJCXJldCA9IGNsa19wcmVwYXJlX2VuYWJsZSh4b3JfZGV2LT5yZWdfY2xrKTsKPiArCQlp ZiAocmV0KQo+ICsJCQlyZXR1cm4gcmV0Owo+ICsJfSBlbHNlIGlmIChQVFJfRVJSKHhvcl9kZXYt PnJlZ19jbGspID09IC1FUFJPQkVfREVGRVIpIHsKPiAgCQlyZXR1cm4gLUVQUk9CRV9ERUZFUjsK PiArCX0KPiArCj4gKwl4b3JfZGV2LT5jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgTlVM TCk7Cj4gKwlpZiAoSVNfRVJSKHhvcl9kZXYtPmNsaykgJiYgUFRSX0VSUih4b3JfZGV2LT5jbGsp ID09IC1FUFJPQkVfREVGRVIpIHsKPiArCQlyZXQgPSBFUFJPQkVfREVGRVI7Cj4gKwkJZ290byBk aXNhYmxlX3JlZ19jbGs7Cj4gKwl9Cj4gIAlpZiAoIUlTX0VSUih4b3JfZGV2LT5jbGspKSB7Cj4g IAkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxlKHhvcl9kZXYtPmNsayk7Cj4gIAkJaWYgKHJldCkK PiAtCQkJcmV0dXJuIHJldDsKPiArCQkJZ290byBkaXNhYmxlX3JlZ19jbGs7Cj4gIAl9Cj4gIAo+ ICAJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFpbl9hbGxvY19pcnFzKCZwZGV2LT5kZXYsIDEsCj4g QEAgLTg2Niw4ICs4NzgsOSBAQCBzdGF0aWMgaW50IG12X3hvcl92Ml9wcm9iZShzdHJ1Y3QgcGxh dGZvcm1fZGV2aWNlICpwZGV2KQo+ICBmcmVlX21zaV9pcnFzOgo+ICAJcGxhdGZvcm1fbXNpX2Rv bWFpbl9mcmVlX2lycXMoJnBkZXYtPmRldik7Cj4gIGRpc2FibGVfY2xrOgo+IC0JaWYgKCFJU19F UlIoeG9yX2Rldi0+Y2xrKSkKPiAtCQljbGtfZGlzYWJsZV91bnByZXBhcmUoeG9yX2Rldi0+Y2xr KTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFyZSh4b3JfZGV2LT5jbGspOwo+ICtkaXNhYmxlX3Jl Z19jbGs6Cj4gKwljbGtfZGlzYWJsZV91bnByZXBhcmUoeG9yX2Rldi0+cmVnX2Nsayk7Cj4gIAly ZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC0tIAo+IDIuMTUuMQo+Cg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: vinod.koul@intel.com (Vinod Koul) Date: Tue, 27 Feb 2018 20:45:11 +0530 Subject: [PATCH] dmaengine: mv_xor_v2: Fix clock resource by adding a register clock In-Reply-To: <20180214162733.4591-1-gregory.clement@bootlin.com> References: <20180214162733.4591-1-gregory.clement@bootlin.com> Message-ID: <20180227151511.GC15443@localhost> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Pls do CC DT folks and Rob for bindings update On Wed, Feb 14, 2018 at 05:27:33PM +0100, Gregory CLEMENT wrote: > On the CP110 components whic are present on the Armada 7K/8K SoC we need /s/whic/which > to explicitly enable the registers clock. However it is not needed for /s/registers/register > the AP8xx componenet, that's why this clock is optional. > > Signed-off-by: Gregory CLEMENT > --- > .../devicetree/bindings/dma/mv-xor-v2.txt | 6 +++++- > drivers/dma/mv_xor_v2.c | 23 +++++++++++++++++----- > 2 files changed, 23 insertions(+), 6 deletions(-) > > diff --git a/Documentation/devicetree/bindings/dma/mv-xor-v2.txt b/Documentation/devicetree/bindings/dma/mv-xor-v2.txt > index 217a90eaabe7..9c38bbe7e6d7 100644 > --- a/Documentation/devicetree/bindings/dma/mv-xor-v2.txt > +++ b/Documentation/devicetree/bindings/dma/mv-xor-v2.txt > @@ -11,7 +11,11 @@ Required properties: > interrupts. > > 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? > + 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