Commit d7c51706 authored by Loic Pallardy's avatar Loic Pallardy Committed by Bjorn Andersson

remoteproc: add alloc ops in rproc_mem_entry struct

Memory entry could be allocated in different ways (ioremap,
dma_alloc_coherent, internal RAM allocator...).
This patch introduces an alloc ops in rproc_mem_entry structure
to associate dedicated allocation mechanism to each memory entry
descriptor in order to do remote core agnostic from memory allocators.

The introduction of this ops allows to perform allocation of all registered
carveout at the same time, just before calling rproc_start().
It simplifies and makes uniform carveout management whatever origin.
Signed-off-by: default avatarLoic Pallardy <loic.pallardy@st.com>
Signed-off-by: default avatarBjorn Andersson <bjorn.andersson@linaro.org>
parent b0019ccd
This diff is collapsed.
...@@ -317,6 +317,9 @@ struct rproc; ...@@ -317,6 +317,9 @@ struct rproc;
* @priv: associated data * @priv: associated data
* @name: associated memory region name (optional) * @name: associated memory region name (optional)
* @node: list node * @node: list node
* @rsc_offset: offset in resource table
* @flags: iommu protection flags
* @alloc: specific memory allocator function
*/ */
struct rproc_mem_entry { struct rproc_mem_entry {
void *va; void *va;
...@@ -326,6 +329,9 @@ struct rproc_mem_entry { ...@@ -326,6 +329,9 @@ struct rproc_mem_entry {
void *priv; void *priv;
char name[32]; char name[32];
struct list_head node; struct list_head node;
u32 rsc_offset;
u32 flags;
int (*alloc)(struct rproc *rproc, struct rproc_mem_entry *mem);
int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem); int (*release)(struct rproc *rproc, struct rproc_mem_entry *mem);
}; };
...@@ -564,6 +570,7 @@ void rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem); ...@@ -564,6 +570,7 @@ void rproc_add_carveout(struct rproc *rproc, struct rproc_mem_entry *mem);
struct rproc_mem_entry * struct rproc_mem_entry *
rproc_mem_entry_init(struct device *dev, rproc_mem_entry_init(struct device *dev,
void *va, dma_addr_t dma, int len, u32 da, void *va, dma_addr_t dma, int len, u32 da,
int (*alloc)(struct rproc *, struct rproc_mem_entry *),
int (*release)(struct rproc *, struct rproc_mem_entry *), int (*release)(struct rproc *, struct rproc_mem_entry *),
const char *name, ...); const char *name, ...);
......
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