Message ID | 1485866156-6364-4-git-send-email-loic.pallardy@st.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
T24gMDEvMzEvMjAxNyAwMTozNSBQTSwgTG9pYyBQQUxMQVJEWSB3cm90ZToNCj4gU1QgcmVtb3Rl cHJvYyBkcml2ZXIgbmVlZHMgdG8gcHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dA0KPiBjYXJ2ZW91 dCBtZW1vcnkgcmVnaW9uIHRvIGFsbG93IHJlbW90ZXByb2MgY29yZSB0byBsb2FkDQo+IGZpcm13 YXJlIGFuZCBhY2Nlc3MgdHJhY2UgYnVmZmVyLg0KPg0KPiBTaWduZWQtb2ZmLWJ5OiBMb2ljIFBh bGxhcmR5IDxsb2ljLnBhbGxhcmR5QHN0LmNvbT4NCg0KQWNrZWQtYW5kLXRlc3RlZC1ieTogSHVn dWVzIEZydWNoZXQgPGh1Z3Vlcy5mcnVjaGV0QHN0LmNvbT4NCg0KVGVzdGVkIG9uIEIyMjYwIFNU IFBsYXRmb3JtIHdpdGggc3QtZGVsdGEgdmlkZW8gZGVjb2RlciBWNEwyIGtlcm5lbCANCmRyaXZl ciANCihodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vbGludXgtbWVkaWFAdmdlci5rZXJuZWwu b3JnL21zZzEwNzY0NC5odG1sKS4NCg0KPiAtLS0NCj4gQ2hhbmdlcyBzaW5jZSBWMjoNCj4gLSBm aXggY2hlY2twYXRjaCAtLXN0cmljdCB3YXJuaW5nDQo+IC0tLQ0KPiAgZHJpdmVycy9yZW1vdGVw cm9jL3N0X3JlbW90ZXByb2MuYyB8IDQzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tLS0tDQo+ICAxIGZpbGUgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMo LSkNCj4NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvcmVtb3RlcHJvYy9zdF9yZW1vdGVwcm9jLmMg Yi9kcml2ZXJzL3JlbW90ZXByb2Mvc3RfcmVtb3RlcHJvYy5jDQo+IGluZGV4IGYxZTkzMzkuLjgw ZjgxMTggMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvcmVtb3RlcHJvYy9zdF9yZW1vdGVwcm9jLmMN Cj4gKysrIGIvZHJpdmVycy9yZW1vdGVwcm9jL3N0X3JlbW90ZXByb2MuYw0KPiBAQCAtMjEsNiAr MjEsNyBAQA0KPiAgI2luY2x1ZGUgPGxpbnV4L29mLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvb2Zf ZGV2aWNlLmg+DQo+ICAjaW5jbHVkZSA8bGludXgvb2ZfcmVzZXJ2ZWRfbWVtLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvb2ZfYWRkcmVzcy5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3BsYXRmb3JtX2Rl dmljZS5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4L3JlZ21hcC5oPg0KPiAgI2luY2x1ZGUgPGxpbnV4 L3JlbW90ZXByb2MuaD4NCj4gQEAgLTUzLDYgKzU0LDEwIEBAIHN0cnVjdCBzdF9ycHJvYyB7DQo+ ICAJc3RydWN0IG1ib3hfY2hhbgkqbWJveF9jaGFuW1NUX1JQUk9DX01BWF9WUklORyAqIE1CT1hf TUFYXTsNCj4gIAlzdHJ1Y3QgbWJveF9jbGllbnQgbWJveF9jbGllbnRfdnEwOw0KPiAgCXN0cnVj dCBtYm94X2NsaWVudCBtYm94X2NsaWVudF92cTE7DQo+ICsJcGh5c19hZGRyX3QgbWVtX3BoeXM7 DQo+ICsJcGh5c19hZGRyX3QgbWVtX3JlbG9jOw0KPiArCXZvaWQgKm1lbV9yZWdpb247DQo+ICsJ c2l6ZV90IG1lbV9zaXplOw0KPiAgfTsNCj4NCj4gIHN0YXRpYyB2b2lkIHN0X3Jwcm9jX21ib3hf Y2FsbGJhY2soc3RydWN0IGRldmljZSAqZGV2LCB1MzIgbXNnKQ0KPiBAQCAtMTU3LDEwICsxNjIs MjMgQEAgc3RhdGljIGludCBzdF9ycHJvY19zdG9wKHN0cnVjdCBycHJvYyAqcnByb2MpDQo+ICAJ cmV0dXJuIHN3X2VyciA/OiBwd3JfZXJyOw0KPiAgfQ0KPg0KPiArc3RhdGljIHZvaWQgKnN0X3By b2NfZGFfdG9fdmEoc3RydWN0IHJwcm9jICpycHJvYywgdTY0IGRhLCBpbnQgbGVuKQ0KPiArew0K PiArCXN0cnVjdCBzdF9ycHJvYyAqZGRhdGEgPSBycHJvYy0+cHJpdjsNCj4gKwlpbnQgb2Zmc2V0 Ow0KPiArDQo+ICsJb2Zmc2V0ID0gZGEgLSBkZGF0YS0+bWVtX3JlbG9jOw0KPiArCWlmIChvZmZz ZXQgPCAwIHx8IG9mZnNldCArIGxlbiA+IGRkYXRhLT5tZW1fc2l6ZSkNCj4gKwkJcmV0dXJuIE5V TEw7DQo+ICsNCj4gKwlyZXR1cm4gZGRhdGEtPm1lbV9yZWdpb24gKyBvZmZzZXQ7DQo+ICt9DQo+ ICsNCj4gIHN0YXRpYyBzdHJ1Y3QgcnByb2Nfb3BzIHN0X3Jwcm9jX29wcyA9IHsNCj4gIAkua2lj awkJPSBzdF9ycHJvY19raWNrLA0KPiAgCS5zdGFydAkJPSBzdF9ycHJvY19zdGFydCwNCj4gIAku c3RvcAkJPSBzdF9ycHJvY19zdG9wLA0KPiArCS5kYV90b192YQk9IHN0X3Byb2NfZGFfdG9fdmEs DQo+ICB9Ow0KPg0KPiAgLyoNCj4gQEAgLTIwOCw3ICsyMjYsOCBAQCBzdGF0aWMgaW50IHN0X3Jw cm9jX3BhcnNlX2R0KHN0cnVjdCBwbGF0Zm9ybV9kZXZpY2UgKnBkZXYpDQo+ICAJc3RydWN0IGRl dmljZSAqZGV2ID0gJnBkZXYtPmRldjsNCj4gIAlzdHJ1Y3QgcnByb2MgKnJwcm9jID0gcGxhdGZv cm1fZ2V0X2RydmRhdGEocGRldik7DQo+ICAJc3RydWN0IHN0X3Jwcm9jICpkZGF0YSA9IHJwcm9j LT5wcml2Ow0KPiAtCXN0cnVjdCBkZXZpY2Vfbm9kZSAqbnAgPSBkZXYtPm9mX25vZGU7DQo+ICsJ c3RydWN0IGRldmljZV9ub2RlICpucCA9IGRldi0+b2Zfbm9kZSwgKm5vZGU7DQo+ICsJc3RydWN0 IHJlc291cmNlIHJlczsNCj4gIAlpbnQgZXJyOw0KPg0KPiAgCWlmIChkZGF0YS0+Y29uZmlnLT5z d19yZXNldCkgew0KPiBAQCAtMjUyLDEwICsyNzEsMjQgQEAgc3RhdGljIGludCBzdF9ycHJvY19w YXJzZV9kdChzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPiAgCQlyZXR1cm4gLUVJTlZB TDsNCj4gIAl9DQo+DQo+IC0JZXJyID0gb2ZfcmVzZXJ2ZWRfbWVtX2RldmljZV9pbml0KGRldik7 DQo+IC0JaWYgKGVycikgew0KPiAtCQlkZXZfZXJyKGRldiwgIkZhaWxlZCB0byBvYnRhaW4gc2hh cmVkIG1lbW9yeVxuIik7DQo+ICsJbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUobnAsICJtZW1vcnkt cmVnaW9uIiwgMCk7DQo+ICsJaWYgKCFub2RlKSB7DQo+ICsJCWRldl9lcnIoZGV2LCAiTm8gbWVt b3J5LXJlZ2lvbiBzcGVjaWZpZWRcbiIpOw0KPiArCQlyZXR1cm4gLUVJTlZBTDsNCj4gKwl9DQo+ ICsNCj4gKwllcnIgPSBvZl9hZGRyZXNzX3RvX3Jlc291cmNlKG5vZGUsIDAsICZyZXMpOw0KPiAr CWlmIChlcnIpDQo+ICAJCXJldHVybiBlcnI7DQo+ICsNCj4gKwlkZGF0YS0+bWVtX3BoeXMgPSBy ZXMuc3RhcnQ7DQo+ICsJZGRhdGEtPm1lbV9yZWxvYyA9IHJlcy5zdGFydDsNCj4gKwlkZGF0YS0+ bWVtX3NpemUgPSByZXNvdXJjZV9zaXplKCZyZXMpOw0KPiArCWRkYXRhLT5tZW1fcmVnaW9uID0g ZGV2bV9pb3JlbWFwX3djKGRldiwgZGRhdGEtPm1lbV9waHlzLCBkZGF0YS0+bWVtX3NpemUpOw0K PiArCWlmICghZGRhdGEtPm1lbV9yZWdpb24pIHsNCj4gKwkJZGV2X2VycihkZXYsICJVbmFibGUg dG8gbWFwIG1lbW9yeSByZWdpb246ICVwYSslenhcbiIsDQo+ICsJCQkmcmVzLnN0YXJ0LCBkZGF0 YS0+bWVtX3NpemUpOw0KPiArCQlyZXR1cm4gLUVCVVNZOw0KPiAgCX0NCj4NCj4gIAllcnIgPSBj bGtfcHJlcGFyZShkZGF0YS0+Y2xrKTsNCj4gQEAgLTM4NSw4ICs0MTgsNiBAQCBzdGF0aWMgaW50 IHN0X3Jwcm9jX3JlbW92ZShzdHJ1Y3QgcGxhdGZvcm1fZGV2aWNlICpwZGV2KQ0KPg0KPiAgCWNs a19kaXNhYmxlX3VucHJlcGFyZShkZGF0YS0+Y2xrKTsNCj4NCj4gLQlvZl9yZXNlcnZlZF9tZW1f ZGV2aWNlX3JlbGVhc2UoJnBkZXYtPmRldik7DQo+IC0NCj4gIAlmb3IgKGkgPSAwOyBpIDwgU1Rf UlBST0NfTUFYX1ZSSU5HICogTUJPWF9NQVg7IGkrKykNCj4gIAkJbWJveF9mcmVlX2NoYW5uZWwo ZGRhdGEtPm1ib3hfY2hhbltpXSk7DQo+DQo+ -- To unsubscribe from this list: send the line "unsubscribe linux-remoteproc" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/drivers/remoteproc/st_remoteproc.c b/drivers/remoteproc/st_remoteproc.c index f1e9339..80f8118 100644 --- a/drivers/remoteproc/st_remoteproc.c +++ b/drivers/remoteproc/st_remoteproc.c @@ -21,6 +21,7 @@ #include <linux/of.h> #include <linux/of_device.h> #include <linux/of_reserved_mem.h> +#include <linux/of_address.h> #include <linux/platform_device.h> #include <linux/regmap.h> #include <linux/remoteproc.h> @@ -53,6 +54,10 @@ struct st_rproc { struct mbox_chan *mbox_chan[ST_RPROC_MAX_VRING * MBOX_MAX]; struct mbox_client mbox_client_vq0; struct mbox_client mbox_client_vq1; + phys_addr_t mem_phys; + phys_addr_t mem_reloc; + void *mem_region; + size_t mem_size; }; static void st_rproc_mbox_callback(struct device *dev, u32 msg) @@ -157,10 +162,23 @@ static int st_rproc_stop(struct rproc *rproc) return sw_err ?: pwr_err; } +static void *st_proc_da_to_va(struct rproc *rproc, u64 da, int len) +{ + struct st_rproc *ddata = rproc->priv; + int offset; + + offset = da - ddata->mem_reloc; + if (offset < 0 || offset + len > ddata->mem_size) + return NULL; + + return ddata->mem_region + offset; +} + static struct rproc_ops st_rproc_ops = { .kick = st_rproc_kick, .start = st_rproc_start, .stop = st_rproc_stop, + .da_to_va = st_proc_da_to_va, }; /* @@ -208,7 +226,8 @@ static int st_rproc_parse_dt(struct platform_device *pdev) struct device *dev = &pdev->dev; struct rproc *rproc = platform_get_drvdata(pdev); struct st_rproc *ddata = rproc->priv; - struct device_node *np = dev->of_node; + struct device_node *np = dev->of_node, *node; + struct resource res; int err; if (ddata->config->sw_reset) { @@ -252,10 +271,24 @@ static int st_rproc_parse_dt(struct platform_device *pdev) return -EINVAL; } - err = of_reserved_mem_device_init(dev); - if (err) { - dev_err(dev, "Failed to obtain shared memory\n"); + node = of_parse_phandle(np, "memory-region", 0); + if (!node) { + dev_err(dev, "No memory-region specified\n"); + return -EINVAL; + } + + err = of_address_to_resource(node, 0, &res); + if (err) return err; + + ddata->mem_phys = res.start; + ddata->mem_reloc = res.start; + ddata->mem_size = resource_size(&res); + ddata->mem_region = devm_ioremap_wc(dev, ddata->mem_phys, ddata->mem_size); + if (!ddata->mem_region) { + dev_err(dev, "Unable to map memory region: %pa+%zx\n", + &res.start, ddata->mem_size); + return -EBUSY; } err = clk_prepare(ddata->clk); @@ -385,8 +418,6 @@ static int st_rproc_remove(struct platform_device *pdev) clk_disable_unprepare(ddata->clk); - of_reserved_mem_device_release(&pdev->dev); - for (i = 0; i < ST_RPROC_MAX_VRING * MBOX_MAX; i++) mbox_free_channel(ddata->mbox_chan[i]);
ST remoteproc driver needs to provide information about carveout memory region to allow remoteproc core to load firmware and access trace buffer. Signed-off-by: Loic Pallardy <loic.pallardy@st.com> --- Changes since V2: - fix checkpatch --strict warning --- drivers/remoteproc/st_remoteproc.c | 43 ++++++++++++++++++++++++++++++++------ 1 file changed, 37 insertions(+), 6 deletions(-)