Skip to content

Commit a572439

Browse files
3V3RYONEmathieupoirier
authored andcommitted
remoteproc: k3-r5: Use devm_ioremap_wc() helper
Use a device lifecycle managed ioremap helper function. This helps prevent mistakes like unmapping out of order in cleanup functions and forgetting to unmap on all error paths. Signed-off-by: Beleswar Padhi <[email protected]> Reviewed-by: Andrew Davis <[email protected]> Link: https://lore.kernel.org/r/[email protected] Signed-off-by: Mathieu Poirier <[email protected]>
1 parent f2e3d0d commit a572439

File tree

1 file changed

+8
-30
lines changed

1 file changed

+8
-30
lines changed

drivers/remoteproc/ti_k3_r5_remoteproc.c

Lines changed: 8 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,17 +1004,13 @@ static int k3_r5_reserved_mem_init(struct k3_r5_rproc *kproc)
10041004
/* use remaining reserved memory regions for static carveouts */
10051005
for (i = 0; i < num_rmems; i++) {
10061006
rmem_np = of_parse_phandle(np, "memory-region", i + 1);
1007-
if (!rmem_np) {
1008-
ret = -EINVAL;
1009-
goto unmap_rmem;
1010-
}
1007+
if (!rmem_np)
1008+
return -EINVAL;
10111009

10121010
rmem = of_reserved_mem_lookup(rmem_np);
10131011
of_node_put(rmem_np);
1014-
if (!rmem) {
1015-
ret = -EINVAL;
1016-
goto unmap_rmem;
1017-
}
1012+
if (!rmem)
1013+
return -EINVAL;
10181014

10191015
kproc->rmem[i].bus_addr = rmem->base;
10201016
/*
@@ -1029,12 +1025,11 @@ static int k3_r5_reserved_mem_init(struct k3_r5_rproc *kproc)
10291025
*/
10301026
kproc->rmem[i].dev_addr = (u32)rmem->base;
10311027
kproc->rmem[i].size = rmem->size;
1032-
kproc->rmem[i].cpu_addr = ioremap_wc(rmem->base, rmem->size);
1028+
kproc->rmem[i].cpu_addr = devm_ioremap_wc(dev, rmem->base, rmem->size);
10331029
if (!kproc->rmem[i].cpu_addr) {
10341030
dev_err(dev, "failed to map reserved memory#%d at %pa of size %pa\n",
10351031
i + 1, &rmem->base, &rmem->size);
1036-
ret = -ENOMEM;
1037-
goto unmap_rmem;
1032+
return -ENOMEM;
10381033
}
10391034

10401035
dev_dbg(dev, "reserved memory%d: bus addr %pa size 0x%zx va %pK da 0x%x\n",
@@ -1045,19 +1040,6 @@ static int k3_r5_reserved_mem_init(struct k3_r5_rproc *kproc)
10451040
kproc->num_rmems = num_rmems;
10461041

10471042
return 0;
1048-
1049-
unmap_rmem:
1050-
for (i--; i >= 0; i--)
1051-
iounmap(kproc->rmem[i].cpu_addr);
1052-
return ret;
1053-
}
1054-
1055-
static void k3_r5_reserved_mem_exit(struct k3_r5_rproc *kproc)
1056-
{
1057-
int i;
1058-
1059-
for (i = 0; i < kproc->num_rmems; i++)
1060-
iounmap(kproc->rmem[i].cpu_addr);
10611043
}
10621044

10631045
/*
@@ -1286,8 +1268,8 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev)
12861268

12871269
ret = rproc_add(rproc);
12881270
if (ret) {
1289-
dev_err(dev, "rproc_add failed, ret = %d\n", ret);
1290-
goto err_add;
1271+
dev_err_probe(dev, ret, "rproc_add failed\n");
1272+
goto out;
12911273
}
12921274

12931275
/* create only one rproc in lockstep, single-cpu or
@@ -1333,8 +1315,6 @@ static int k3_r5_cluster_rproc_init(struct platform_device *pdev)
13331315

13341316
err_powerup:
13351317
rproc_del(rproc);
1336-
err_add:
1337-
k3_r5_reserved_mem_exit(kproc);
13381318
out:
13391319
/* undo core0 upon any failures on core1 in split-mode */
13401320
if (cluster->mode == CLUSTER_MODE_SPLIT && core == core1) {
@@ -1379,8 +1359,6 @@ static void k3_r5_cluster_rproc_exit(void *data)
13791359
mbox_free_channel(kproc->mbox);
13801360

13811361
rproc_del(rproc);
1382-
1383-
k3_r5_reserved_mem_exit(kproc);
13841362
}
13851363
}
13861364

0 commit comments

Comments
 (0)