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: [v2] dmaengine: mv_xor_v2: Fix clock resource by adding a register clock From: Gregory CLEMENT Message-Id: <87sh9b52bn.fsf@bootlin.com> Date: Wed, 07 Mar 2018 16:32:12 +0100 To: Vinod Koul Cc: dmaengine@vger.kernel.org, Jason Cooper , Andrew Lunn , Sebastian Hesselbarth , Thomas Petazzoni , linux-arm-kernel@lists.infradead.org, Rob Herring , devicetree@vger.kernel.org, Antoine Tenart , =?utf-8?Q?Miqu=C3=A8l?= Raynal , Nadav Haklai , Shadi Ammouri , Omri Itach , Hanna Hawa , Igal Liberman , Marcin Wojtas List-ID: SGkgR3JlZ29yeSwKIAogT24gbWVyLiwgbWFycyAwNyAyMDE4LCBHcmVnb3J5IENMRU1FTlQgPGdy ZWdvcnkuY2xlbWVudEBib290bGluLmNvbT4gd3JvdGU6Cgo+IE9uIHRoZSBDUDExMCBjb21wb25l bnRzIHdoaWNoIGFyZSBwcmVzZW50IG9uIHRoZSBBcm1hZGEgN0svOEsgU29DIHdlIG5lZWQKPiB0 byBleHBsaWNpdGx5IGVuYWJsZSB0aGUgY2xvY2sgZm9yIHRoZSByZWdpc3RlcnMuIEhvd2V2ZXIg aXQgaXMgbm90Cj4gbmVlZGVkIGZvciB0aGUgQVA4eHggY29tcG9uZW50LCB0aGF0J3Mgd2h5IHRo aXMgY2xvY2sgaXMgb3B0aW9uYWwuCj4KPiBXaXRoIHRoaXMgcGF0Y2ggYm90aCBjbG9ja3MgaGF2 ZSBub3cgYSBuYW1lLCBidXQgaW4gb3JkZXIgdG8gYmUKPiBiYWNrd2FyZCBjb21wYXRpYmxlLCB0 aGUgbmFtZSBvZiB0aGUgZmlyc3QgY2xvY2sgaXMgbm90IHVzZWQuIEl0Cj4gYWxsb3dzIHRvIHN0 aWxsIHVzZSB0aGlzIGNsb2NrIHdpdGggYSBkZXZpY2UgdHJlZSB1c2luZyB0aGUgb2xkCj4gYmlu ZGluZy4KPgo+IFNpZ25lZC1vZmYtYnk6IEdyZWdvcnkgQ0xFTUVOVCA8Z3JlZ29yeS5jbGVtZW50 QGJvb3RsaW4uY29tPgo+IC0tLQo+IENoYW5nZWxvZzoKPgo+IHYxIC0+IHYyCj4KPiAgLSBGaXgg dHlwb3MgaW4gdGhlIGNvbW1pdCBsb2cKPiAgLSBBZGQgbW9yZSBleHBsYW5hdGlvbiBpbiB0ZSBj b21taXQgbG9nCj4gIC0gT25seSBza2lwIHRoZSByZWcgY2xvY2sgdXNhZ2UgaWYgdGhlIGNsb2Nr IGlzIG5vdCBwcmVzZXRuIGluIHRoZQo+ICAgIGRldmljZSB0cmVlICgtRU5PRU5UKQo+ICAtIEFk ZCBkdCBsaXN0IGluIENDCj4KPgo+ICAuLi4vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXYteG9y LXYyLnR4dCAgICAgICAgICB8ICA2ICsrKysrLQo+ICBkcml2ZXJzL2RtYS9tdl94b3JfdjIuYyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDI1ICsrKysrKysrKysrKysrKysrLS0tLS0KPiAg MiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQo+Cj4gZGlm ZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXYteG9yLXYy LnR4dCBiL0RvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXYteG9yLXYyLnR4 dAo+IGluZGV4IDIxN2E5MGVhYWJlNy4uOWMzOGJiZTdlNmQ3IDEwMDY0NAo+IC0tLSBhL0RvY3Vt ZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXYteG9yLXYyLnR4dAo+ICsrKyBiL0Rv Y3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5ncy9kbWEvbXYteG9yLXYyLnR4dAo+IEBAIC0x MSw3ICsxMSwxMSBAQCBSZXF1aXJlZCBwcm9wZXJ0aWVzOgo+ICAgIGludGVycnVwdHMuCj4gIAo+ ICBPcHRpb25hbCBwcm9wZXJ0aWVzOgo+IC0tIGNsb2NrczogT3B0aW9uYWwgcmVmZXJlbmNlIHRv IHRoZSBjbG9jayB1c2VkIGJ5IHRoZSBYT1IgZW5naW5lLgo+ICstIGNsb2NrczogT3B0aW9uYWwg cmVmZXJlbmNlIHRvIHRoZSBjbG9ja3MgdXNlZCBieSB0aGUgWE9SIGVuZ2luZS4KPiArLSBjbG9j ay1uYW1lczogbWFuZGF0b3J5IGlmIHRoZXJlIGlzIGEgc2Vjb25kIGNsb2NrLCBpbiB0aGlzIGNh c2UgdGhlCj4gKyAgIG5hbWUgbXVzdCBiZSAiY29yZSIgZm9yIHRoZSBmaXJzdCBjbG9jayBhbmQg InJlZyIgZm9yIHRoZSBzZWNvbmQKPiArICAgb25lCj4gKwo+ICAKPiAgRXhhbXBsZToKPiAgCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZG1hL212X3hvcl92Mi5jIGIvZHJpdmVycy9kbWEvbXZfeG9y X3YyLmMKPiBpbmRleCBmNjUyYTBlMGY1YTIuLmUzZTg1NDE2MWRkMCAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2RtYS9tdl94b3JfdjIuYwo+ICsrKyBiL2RyaXZlcnMvZG1hL212X3hvcl92Mi5jCj4g QEAgLTE2Myw2ICsxNjMsNyBAQCBzdHJ1Y3QgbXZfeG9yX3YyX2RldmljZSB7Cj4gIAl2b2lkIF9f aW9tZW0gKmRtYV9iYXNlOwo+ICAJdm9pZCBfX2lvbWVtICpnbG9iX2Jhc2U7Cj4gIAlzdHJ1Y3Qg Y2xrICpjbGs7Cj4gKwlzdHJ1Y3QgY2xrICpyZWdfY2xrOwo+ICAJc3RydWN0IHRhc2tsZXRfc3Ry dWN0IGlycV90YXNrbGV0Owo+ICAJc3RydWN0IGxpc3RfaGVhZCBmcmVlX3N3X2Rlc2M7Cj4gIAlz dHJ1Y3QgZG1hX2RldmljZSBkbWFkZXY7Cj4gQEAgLTc0OSwxMyArNzUwLDI2IEBAIHN0YXRpYyBp bnQgbXZfeG9yX3YyX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4gIAlpZiAo cmV0KQo+ICAJCXJldHVybiByZXQ7Cj4gIAo+ICsJeG9yX2Rldi0+cmVnX2NsayA9IGRldm1fY2xr X2dldCgmcGRldi0+ZGV2LCAicmVnIik7Cj4gKwlpZiAoUFRSX0VSUih4b3JfZGV2LT5yZWdfY2xr KSA9PSAtRU5PRU5UKSB7CgpJdCBzaG91bGQgYmUgIiE9ICIgdGhlcmUsIGEgdjMgaXMgY29taW5n CgpTb3JyeSBmb3IgdGhlIG5vaXNlLAoKR3JlZ29yeQoKPiArCQlpZiAoIUlTX0VSUih4b3JfZGV2 LT5yZWdfY2xrKSkgewo+ICsJCQlyZXQgPSBjbGtfcHJlcGFyZV9lbmFibGUoeG9yX2Rldi0+cmVn X2Nsayk7Cj4gKwkJCWlmIChyZXQpCj4gKwkJCQlyZXR1cm4gcmV0Owo+ICsJCX0gZWxzZSB7Cj4g KwkJCXJldHVybiBQVFJfRVJSKHhvcl9kZXYtPnJlZ19jbGspOwo+ICsJCX0KPiArCX0KPiArCj4g IAl4b3JfZGV2LT5jbGsgPSBkZXZtX2Nsa19nZXQoJnBkZXYtPmRldiwgTlVMTCk7Cj4gLQlpZiAo SVNfRVJSKHhvcl9kZXYtPmNsaykgJiYgUFRSX0VSUih4b3JfZGV2LT5jbGspID09IC1FUFJPQkVf REVGRVIpCj4gLQkJcmV0dXJuIC1FUFJPQkVfREVGRVI7Cj4gKwlpZiAoSVNfRVJSKHhvcl9kZXYt PmNsaykgJiYgUFRSX0VSUih4b3JfZGV2LT5jbGspID09IC1FUFJPQkVfREVGRVIpIHsKPiArCQly ZXQgPSBFUFJPQkVfREVGRVI7Cj4gKwkJZ290byBkaXNhYmxlX3JlZ19jbGs7Cj4gKwl9Cj4gIAlp ZiAoIUlTX0VSUih4b3JfZGV2LT5jbGspKSB7Cj4gIAkJcmV0ID0gY2xrX3ByZXBhcmVfZW5hYmxl KHhvcl9kZXYtPmNsayk7Cj4gIAkJaWYgKHJldCkKPiAtCQkJcmV0dXJuIHJldDsKPiArCQkJZ290 byBkaXNhYmxlX3JlZ19jbGs7Cj4gIAl9Cj4gIAo+ICAJcmV0ID0gcGxhdGZvcm1fbXNpX2RvbWFp bl9hbGxvY19pcnFzKCZwZGV2LT5kZXYsIDEsCj4gQEAgLTg2Niw4ICs4ODAsOSBAQCBzdGF0aWMg aW50IG12X3hvcl92Ml9wcm9iZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQo+ICBmcmVl X21zaV9pcnFzOgo+ICAJcGxhdGZvcm1fbXNpX2RvbWFpbl9mcmVlX2lycXMoJnBkZXYtPmRldik7 Cj4gIGRpc2FibGVfY2xrOgo+IC0JaWYgKCFJU19FUlIoeG9yX2Rldi0+Y2xrKSkKPiAtCQljbGtf ZGlzYWJsZV91bnByZXBhcmUoeG9yX2Rldi0+Y2xrKTsKPiArCWNsa19kaXNhYmxlX3VucHJlcGFy ZSh4b3JfZGV2LT5jbGspOwo+ICtkaXNhYmxlX3JlZ19jbGs6Cj4gKwljbGtfZGlzYWJsZV91bnBy ZXBhcmUoeG9yX2Rldi0+cmVnX2Nsayk7Cj4gIAlyZXR1cm4gcmV0Owo+ICB9Cj4gIAo+IC0tIAo+ IDIuMTYuMQo+Cj4gLS0KPiBUbyB1bnN1YnNjcmliZSBmcm9tIHRoaXMgbGlzdDogc2VuZCB0aGUg bGluZSAidW5zdWJzY3JpYmUgZG1hZW5naW5lIiBpbgo+IHRoZSBib2R5IG9mIGEgbWVzc2FnZSB0 byBtYWpvcmRvbW9Admdlci5rZXJuZWwub3JnCj4gTW9yZSBtYWpvcmRvbW8gaW5mbyBhdCAgaHR0 cDovL3ZnZXIua2VybmVsLm9yZy9tYWpvcmRvbW8taW5mby5odG1sCg== From mboxrd@z Thu Jan 1 00:00:00 1970 From: gregory.clement@bootlin.com (Gregory CLEMENT) Date: Wed, 07 Mar 2018 16:32:12 +0100 Subject: [PATCH v2] dmaengine: mv_xor_v2: Fix clock resource by adding a register clock In-Reply-To: <20180307140610.2601-1-gregory.clement@bootlin.com> (Gregory CLEMENT's message of "Wed, 7 Mar 2018 15:06:10 +0100") References: <20180307140610.2601-1-gregory.clement@bootlin.com> Message-ID: <87sh9b52bn.fsf@bootlin.com> To: linux-arm-kernel@lists.infradead.org List-Id: linux-arm-kernel.lists.infradead.org Hi Gregory, On mer., mars 07 2018, Gregory CLEMENT wrote: > On the CP110 components which are present on the Armada 7K/8K SoC we need > to explicitly enable the clock for the registers. However it is not > needed for the AP8xx component, that's why this clock is optional. > > With this patch both clocks have now a name, but in order to be > backward compatible, the name of the first clock is not used. It > allows to still use this clock with a device tree using the old > binding. > > Signed-off-by: Gregory CLEMENT > --- > Changelog: > > v1 -> v2 > > - Fix typos in the commit log > - Add more explanation in te commit log > - Only skip the reg clock usage if the clock is not presetn in the > device tree (-ENOENT) > - Add dt list in CC > > > .../devicetree/bindings/dma/mv-xor-v2.txt | 6 +++++- > drivers/dma/mv_xor_v2.c | 25 +++++++++++++++++----- > 2 files changed, 25 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..e3e854161dd0 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,26 @@ static int mv_xor_v2_probe(struct platform_device *pdev) > if (ret) > return ret; > > + xor_dev->reg_clk = devm_clk_get(&pdev->dev, "reg"); > + if (PTR_ERR(xor_dev->reg_clk) == -ENOENT) { It should be "!= " there, a v3 is coming Sorry for the noise, Gregory > + if (!IS_ERR(xor_dev->reg_clk)) { > + ret = clk_prepare_enable(xor_dev->reg_clk); > + if (ret) > + return ret; > + } else { > + return PTR_ERR(xor_dev->reg_clk); > + } > + } > + > xor_dev->clk = devm_clk_get(&pdev->dev, NULL); > - if (IS_ERR(xor_dev->clk) && PTR_ERR(xor_dev->clk) == -EPROBE_DEFER) > - return -EPROBE_DEFER; > + 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 +880,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.16.1 > > -- > 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 From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gregory CLEMENT Subject: Re: [PATCH v2] dmaengine: mv_xor_v2: Fix clock resource by adding a register clock Date: Wed, 07 Mar 2018 16:32:12 +0100 Message-ID: <87sh9b52bn.fsf@bootlin.com> References: <20180307140610.2601-1-gregory.clement@bootlin.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: In-Reply-To: <20180307140610.2601-1-gregory.clement@bootlin.com> (Gregory CLEMENT's message of "Wed, 7 Mar 2018 15:06:10 +0100") List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=m.gmane.org@lists.infradead.org To: Vinod Koul Cc: Andrew Lunn , Jason Cooper , devicetree@vger.kernel.org, Antoine Tenart , Hanna Hawa , Omri Itach , Nadav Haklai , Rob Herring , Shadi Ammouri , Igal Liberman , Thomas Petazzoni , =?utf-8?Q?Miqu=C3=A8l?= Raynal , dmaengine@vger.kernel.org, Marcin Wojtas , linux-arm-kernel@lists.infradead.org, Sebastian Hesselbarth List-Id: devicetree@vger.kernel.org Hi Gregory, On mer., mars 07 2018, Gregory CLEMENT wrote: > On the CP110 components which are present on the Armada 7K/8K SoC we need > to explicitly enable the clock for the registers. However it is not > needed for the AP8xx component, that's why this clock is optional. > > With this patch both clocks have now a name, but in order to be > backward compatible, the name of the first clock is not used. It > allows to still use this clock with a device tree using the old > binding. > > Signed-off-by: Gregory CLEMENT > --- > Changelog: > > v1 -> v2 > > - Fix typos in the commit log > - Add more explanation in te commit log > - Only skip the reg clock usage if the clock is not presetn in the > device tree (-ENOENT) > - Add dt list in CC > > > .../devicetree/bindings/dma/mv-xor-v2.txt | 6 +++++- > drivers/dma/mv_xor_v2.c | 25 +++++++++++++++++----- > 2 files changed, 25 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..e3e854161dd0 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,26 @@ static int mv_xor_v2_probe(struct platform_device *pdev) > if (ret) > return ret; > > + xor_dev->reg_clk = devm_clk_get(&pdev->dev, "reg"); > + if (PTR_ERR(xor_dev->reg_clk) == -ENOENT) { It should be "!= " there, a v3 is coming Sorry for the noise, Gregory > + if (!IS_ERR(xor_dev->reg_clk)) { > + ret = clk_prepare_enable(xor_dev->reg_clk); > + if (ret) > + return ret; > + } else { > + return PTR_ERR(xor_dev->reg_clk); > + } > + } > + > xor_dev->clk = devm_clk_get(&pdev->dev, NULL); > - if (IS_ERR(xor_dev->clk) && PTR_ERR(xor_dev->clk) == -EPROBE_DEFER) > - return -EPROBE_DEFER; > + 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 +880,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.16.1 > > -- > To unsubscribe from this list: send the line "unsubscribe dmaengine" in > the body of a message to majordomo@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