lkml.org 
[lkml]   [2016]   [Aug]   [31]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
Patch in this message
/
From
Subject[PATCH v2 11/19] remoteproc: core: Add function to get resource table spare bytes information
Date
Remoteproc needs to know if a resource table has spare resource
allowing resoure table extension.
This function parse resource table to detect spare resource.
If any, it returns available spare bytes and index of spare resource.

Signed-off-by: Loic Pallardy <loic.pallardy@st.com>
---
drivers/remoteproc/remoteproc_core.c | 29 +++++++++++++++++++++++++++++
1 file changed, 29 insertions(+)

diff --git a/drivers/remoteproc/remoteproc_core.c b/drivers/remoteproc/remoteproc_core.c
index ffb56c0..30e9c70 100644
--- a/drivers/remoteproc/remoteproc_core.c
+++ b/drivers/remoteproc/remoteproc_core.c
@@ -951,6 +951,35 @@ int rproc_request_resource(struct rproc *rproc, u32 type, u32 action, void *reso
}
EXPORT_SYMBOL(rproc_request_resource);

+static int __get_rsc_tbl_spare_size(struct rproc *rproc,
+ struct resource_table *table_ptr, int len,
+ int *spare_index)
+{
+ struct device *dev = &rproc->dev;
+ int i;
+
+ for (i = 0; i < table_ptr->num; i++) {
+ int offset = table_ptr->offset[i];
+ struct fw_rsc_hdr *hdr = (void *)table_ptr + offset;
+ struct fw_rsc_spare *spare = (void *)hdr + sizeof(*hdr);
+
+ dev_dbg(dev, "rsc: type %d\n", hdr->type);
+
+ if (hdr->type >= RSC_LAST) {
+ dev_warn(dev, "unsupported resource %d\n", hdr->type);
+ continue;
+ }
+
+ if (hdr->type != RSC_SPARE)
+ continue;
+
+ *spare_index = i;
+ return spare->len;
+ }
+
+ return 0;
+}
+
static int __verify_rsc_tbl_entry(struct rproc *rproc,
struct rproc_request_resource *request,
struct resource_table *table, int size)
--
1.9.1
\
 
 \ /
  Last update: 2016-09-17 09:58    [W:0.269 / U:0.064 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site