Commit 28d7d5c6 authored by Loic Pallardy's avatar Loic Pallardy Committed by Bjorn Andersson

remoteproc: fix rproc_check_carveout_da() returned error and comments

Fix typo in comments.
Change returned error from ENOMEM to EINVAL as
not dealing with memory allocation.
Remove carveout forced da update and return an error
when no configuration match

Fixes: c874bf59 ("remoteproc: add helper function to check carveout device address")
Signed-off-by: default avatarLoic Pallardy <loic.pallardy@st.com>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent a987e6b9
...@@ -281,25 +281,27 @@ rproc_find_carveout_by_name(struct rproc *rproc, const char *name, ...) ...@@ -281,25 +281,27 @@ rproc_find_carveout_by_name(struct rproc *rproc, const char *name, ...)
* @len: associated area size * @len: associated area size
* *
* This function is a helper function to verify requested device area (couple * This function is a helper function to verify requested device area (couple
* da, len) is part of specified carevout. * da, len) is part of specified carveout.
* If da is not set (defined as FW_RSC_ADDR_ANY), only requested length is
* checked.
* *
* Return: 0 if carveout match request else -ENOMEM * Return: 0 if carveout matches request else error
*/ */
int rproc_check_carveout_da(struct rproc *rproc, struct rproc_mem_entry *mem, static int rproc_check_carveout_da(struct rproc *rproc,
u32 da, u32 len) struct rproc_mem_entry *mem, u32 da, u32 len)
{ {
struct device *dev = &rproc->dev; struct device *dev = &rproc->dev;
int delta = 0; int delta;
/* Check requested resource length */ /* Check requested resource length */
if (len > mem->len) { if (len > mem->len) {
dev_err(dev, "Registered carveout doesn't fit len request\n"); dev_err(dev, "Registered carveout doesn't fit len request\n");
return -ENOMEM; return -EINVAL;
} }
if (da != FW_RSC_ADDR_ANY && mem->da == FW_RSC_ADDR_ANY) { if (da != FW_RSC_ADDR_ANY && mem->da == FW_RSC_ADDR_ANY) {
/* Update existing carveout da */ /* Address doesn't match registered carveout configuration */
mem->da = da; return -EINVAL;
} else if (da != FW_RSC_ADDR_ANY && mem->da != FW_RSC_ADDR_ANY) { } else if (da != FW_RSC_ADDR_ANY && mem->da != FW_RSC_ADDR_ANY) {
delta = da - mem->da; delta = da - mem->da;
...@@ -307,13 +309,13 @@ int rproc_check_carveout_da(struct rproc *rproc, struct rproc_mem_entry *mem, ...@@ -307,13 +309,13 @@ int rproc_check_carveout_da(struct rproc *rproc, struct rproc_mem_entry *mem,
if (delta < 0) { if (delta < 0) {
dev_err(dev, dev_err(dev,
"Registered carveout doesn't fit da request\n"); "Registered carveout doesn't fit da request\n");
return -ENOMEM; return -EINVAL;
} }
if (delta + len > mem->len) { if (delta + len > mem->len) {
dev_err(dev, dev_err(dev,
"Registered carveout doesn't fit len request\n"); "Registered carveout doesn't fit len request\n");
return -ENOMEM; return -EINVAL;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment