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: [2/4] dmaengine: qcom: bam_dma: add num-channels binding for remotely controlled From: Vinod Koul Message-Id: <20180119055509.GW18649@localhost> Date: Fri, 19 Jan 2018 11:25:09 +0530 To: srinivas.kandagatla@linaro.org Cc: Andy Gross , dmaengine@vger.kernel.org, Rob Herring , Mark Rutland , David Brown , Dan Williams , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, yanhe@quicinc.com, ramkri@qti.qualcomm.com, sdharia@quicinc.com List-ID: T24gVHVlLCBKYW4gMTYsIDIwMTggYXQgMDc6MDI6MzRQTSArMDAwMCwgc3Jpbml2YXMua2FuZGFn YXRsYUBsaW5hcm8ub3JnIHdyb3RlOgo+IEZyb206IFNyaW5pdmFzIEthbmRhZ2F0bGEgPHNyaW5p dmFzLmthbmRhZ2F0bGFAbGluYXJvLm9yZz4KPiAKPiBXaGVuIExpbnV4IGlzIG1hc3RlciBvZiBC QU0sIGl0IGNhbiBkaXJlY3RseSByZWFkIHJlZ2lzdGVycyB0byBrbm93IG51bWJlcgo+IG9mIHN1 cHBvcnRlZCBjaGFubmVscywgaG93ZXZlciB3aGVuIGl0cyByZW1vdGVseSBjb250cm9sbGVkIHJl YWRpbmcgdGhlc2UKPiByZWdpc3RlcnMgd291bGQgdHJpZ2dlciBhIGNyYXNoIGlmIHRoZSBCQU0g aXMgbm90IHlldCBpbnRpYWxpemVkL3Bvd2VyZWQgdXAKPiBvbiB0aGUgcmVtb3RlIHNpZGUuCj4g Cj4gVGhpcyBwYXRjaCBhZGRzIG51bS1jaGFubmVscyBiaW5kaW5nIHRvIHNwZWNpZnkgbnVtYmVy IG9mIHN1cHBvcnRlZAo+IGRtYSBjaGFubmVscyBvbiByZW1vdGVseSBjb250cm9sbGVkIEJBTS4K PiAKPiBTaWduZWQtb2ZmLWJ5OiBTcmluaXZhcyBLYW5kYWdhdGxhIDxzcmluaXZhcy5rYW5kYWdh dGxhQGxpbmFyby5vcmc+Cj4gLS0tCj4gIERvY3VtZW50YXRpb24vZGV2aWNldHJlZS9iaW5kaW5n cy9kbWEvcWNvbV9iYW1fZG1hLnR4dCB8ICAyICsrCj4gIGRyaXZlcnMvZG1hL3Fjb20vYmFtX2Rt YS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysrKysrKysrLS0KPiAgMiBm aWxlcyBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQo+IAo+IGRpZmYg LS1naXQgYS9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2Rt YS50eHQgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2Rt YS50eHQKPiBpbmRleCA5Y2JmNWQ5ZGY4ZmQuLmFhNjgyMmNiYjIzMCAxMDA2NDQKPiAtLS0gYS9E b2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2RtYS50eHQKPiAr KysgYi9Eb2N1bWVudGF0aW9uL2RldmljZXRyZWUvYmluZGluZ3MvZG1hL3Fjb21fYmFtX2RtYS50 eHQKPiBAQCAtMTUsNiArMTUsOCBAQCBSZXF1aXJlZCBwcm9wZXJ0aWVzOgo+ICAgIHRoZSBzZWN1 cmUgd29ybGQuCj4gIC0gcWNvbSxjb250cm9sbGVkLXJlbW90ZWx5IDogb3B0aW9uYWwsIGluZGlj YXRlcyB0aGF0IHRoZSBiYW0gaXMgY29udHJvbGxlZCBieQo+ICAgIHJlbW90ZSBwcm9jY2Vzc29y IGkuZS4gZXhlY3V0aW9uIGVudmlyb25tZW50Lgo+ICstIG51bS1jaGFubmVscyA6IG9wdGlvbmFs LCBpbmRpY2F0ZXMgc3VwcG9ydGVkIG51bWJlciBvZiBETUEgY2hhbm5lbHMgaW4gYQo+ICsgIHJl bW90ZWx5IGNvbnRyb2xsZWQgYmFtLgo+ICAKPiAgRXhhbXBsZToKPiAgCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hL3Fjb20vYmFtX2RtYS5jIGIvZHJpdmVycy9kbWEvcWNvbS9iYW1fZG1hLmMK PiBpbmRleCA3OGU0ODhlOGY5NmQuLjUyM2JkMTc4MDQ3YSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJz L2RtYS9xY29tL2JhbV9kbWEuYwo+ICsrKyBiL2RyaXZlcnMvZG1hL3Fjb20vYmFtX2RtYS5jCj4g QEAgLTEwODMsOCArMTA4MywxMCBAQCBzdGF0aWMgaW50IGJhbV9pbml0KHN0cnVjdCBiYW1fZGV2 aWNlICpiZGV2KQo+ICAJaWYgKGJkZXYtPmVlID49IHZhbCkKPiAgCQlyZXR1cm4gLUVJTlZBTDsK PiAgCj4gLQl2YWwgPSByZWFkbF9yZWxheGVkKGJhbV9hZGRyKGJkZXYsIDAsIEJBTV9OVU1fUElQ RVMpKTsKPiAtCWJkZXYtPm51bV9jaGFubmVscyA9IHZhbCAmIEJBTV9OVU1fUElQRVNfTUFTSzsK PiArCWlmICghYmRldi0+bnVtX2NoYW5uZWxzKSB7Cj4gKwkJdmFsID0gcmVhZGxfcmVsYXhlZChi YW1fYWRkcihiZGV2LCAwLCBCQU1fTlVNX1BJUEVTKSk7Cj4gKwkJYmRldi0+bnVtX2NoYW5uZWxz ID0gdmFsICYgQkFNX05VTV9QSVBFU19NQVNLOwo+ICsJfQo+ICAKPiAgCWlmIChiZGV2LT5jb250 cm9sbGVkX3JlbW90ZWx5KQo+ICAJCXJldHVybiAwOwo+IEBAIC0xMTc5LDYgKzExODEsMTMgQEAg c3RhdGljIGludCBiYW1fZG1hX3Byb2JlKHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpCj4g IAliZGV2LT5jb250cm9sbGVkX3JlbW90ZWx5ID0gb2ZfcHJvcGVydHlfcmVhZF9ib29sKHBkZXYt PmRldi5vZl9ub2RlLAo+ICAJCQkJCQkicWNvbSxjb250cm9sbGVkLXJlbW90ZWx5Iik7Cj4gIAo+ ICsJaWYgKGJkZXYtPmNvbnRyb2xsZWRfcmVtb3RlbHkpIHsKCmhtbSBzbyBpZiB3ZSByZW1vdmUg dGhlIHJlbW90ZWx5IGNvbnRyb2xsZWQgaW5zdGFuY2VkIGZyb20gRFQgYW5kIHRoZW4gTGludXgK d29uJ3Qgc2VlIHRoZW0gYW5kIG5vdCBkbyBhbnl0aGluZy4gRG8gd2UgbmVlZCB0byBkbyBjb25m aWd1cmF0aW9uIG9mIHRoZXNlCmluc3RhbmNlcyB0b28/Cgo+ICsJCXJldCA9IG9mX3Byb3BlcnR5 X3JlYWRfdTMyKHBkZXYtPmRldi5vZl9ub2RlLCAibnVtLWNoYW5uZWxzIiwKPiArCQkJCQkgICAm YmRldi0+bnVtX2NoYW5uZWxzKTsKPiArCQlpZiAocmV0KQo+ICsJCQlkZXZfZXJyKGJkZXYtPmRl diwgIm51bS1jaGFubmVscyB1bnNwZWNpZmllZCBpbiBkdFxuIik7Cj4gKwl9Cj4gKwo+ICAJYmRl di0+YmFtY2xrID0gZGV2bV9jbGtfZ2V0KGJkZXYtPmRldiwgImJhbV9jbGsiKTsKPiAgCWlmIChJ U19FUlIoYmRldi0+YmFtY2xrKSkgewo+ICAJCWJkZXYtPmJhbWNsayA9IE5VTEw7Cj4gLS0gCj4g Mi4xNS4xCj4K From mboxrd@z Thu Jan 1 00:00:00 1970 From: Vinod Koul Subject: Re: [PATCH 2/4] dmaengine: qcom: bam_dma: add num-channels binding for remotely controlled Date: Fri, 19 Jan 2018 11:25:09 +0530 Message-ID: <20180119055509.GW18649@localhost> References: <20180116190236.14558-1-srinivas.kandagatla@linaro.org> <20180116190236.14558-3-srinivas.kandagatla@linaro.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Return-path: Content-Disposition: inline In-Reply-To: <20180116190236.14558-3-srinivas.kandagatla@linaro.org> Sender: linux-kernel-owner@vger.kernel.org To: srinivas.kandagatla@linaro.org Cc: Andy Gross , dmaengine@vger.kernel.org, Rob Herring , Mark Rutland , David Brown , Dan Williams , devicetree@vger.kernel.org, linux-kernel@vger.kernel.org, linux-arm-msm@vger.kernel.org, linux-soc@vger.kernel.org, yanhe@quicinc.com, ramkri@qti.qualcomm.com, sdharia@quicinc.com List-Id: linux-arm-msm@vger.kernel.org On Tue, Jan 16, 2018 at 07:02:34PM +0000, srinivas.kandagatla@linaro.org wrote: > From: Srinivas Kandagatla > > When Linux is master of BAM, it can directly read registers to know number > of supported channels, however when its remotely controlled reading these > registers would trigger a crash if the BAM is not yet intialized/powered up > on the remote side. > > This patch adds num-channels binding to specify number of supported > dma channels on remotely controlled BAM. > > Signed-off-by: Srinivas Kandagatla > --- > Documentation/devicetree/bindings/dma/qcom_bam_dma.txt | 2 ++ > drivers/dma/qcom/bam_dma.c | 13 +++++++++++-- > 2 files changed, 13 insertions(+), 2 deletions(-) > > diff --git a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt > index 9cbf5d9df8fd..aa6822cbb230 100644 > --- a/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt > +++ b/Documentation/devicetree/bindings/dma/qcom_bam_dma.txt > @@ -15,6 +15,8 @@ Required properties: > the secure world. > - qcom,controlled-remotely : optional, indicates that the bam is controlled by > remote proccessor i.e. execution environment. > +- num-channels : optional, indicates supported number of DMA channels in a > + remotely controlled bam. > > Example: > > diff --git a/drivers/dma/qcom/bam_dma.c b/drivers/dma/qcom/bam_dma.c > index 78e488e8f96d..523bd178047a 100644 > --- a/drivers/dma/qcom/bam_dma.c > +++ b/drivers/dma/qcom/bam_dma.c > @@ -1083,8 +1083,10 @@ static int bam_init(struct bam_device *bdev) > if (bdev->ee >= val) > return -EINVAL; > > - val = readl_relaxed(bam_addr(bdev, 0, BAM_NUM_PIPES)); > - bdev->num_channels = val & BAM_NUM_PIPES_MASK; > + if (!bdev->num_channels) { > + val = readl_relaxed(bam_addr(bdev, 0, BAM_NUM_PIPES)); > + bdev->num_channels = val & BAM_NUM_PIPES_MASK; > + } > > if (bdev->controlled_remotely) > return 0; > @@ -1179,6 +1181,13 @@ static int bam_dma_probe(struct platform_device *pdev) > bdev->controlled_remotely = of_property_read_bool(pdev->dev.of_node, > "qcom,controlled-remotely"); > > + if (bdev->controlled_remotely) { hmm so if we remove the remotely controlled instanced from DT and then Linux won't see them and not do anything. Do we need to do configuration of these instances too? > + ret = of_property_read_u32(pdev->dev.of_node, "num-channels", > + &bdev->num_channels); > + if (ret) > + dev_err(bdev->dev, "num-channels unspecified in dt\n"); > + } > + > bdev->bamclk = devm_clk_get(bdev->dev, "bam_clk"); > if (IS_ERR(bdev->bamclk)) { > bdev->bamclk = NULL; > -- > 2.15.1 > -- ~Vinod