diff options
author | Ohad Ben-Cohen | 2013-04-07 13:06:07 +0200 |
---|---|---|
committer | Ohad Ben-Cohen | 2013-04-07 13:06:07 +0200 |
commit | a2b950ac7b1e6442919ee9e79c4963e134698869 (patch) | |
tree | 7ecec79d66796b06db5c9d79144d17e1bc496bad /include/linux/remoteproc.h | |
parent | remoteproc: calculate max_notifyid by counting vrings (diff) | |
download | kernel-qcow2-linux-a2b950ac7b1e6442919ee9e79c4963e134698869.tar.gz kernel-qcow2-linux-a2b950ac7b1e6442919ee9e79c4963e134698869.tar.xz kernel-qcow2-linux-a2b950ac7b1e6442919ee9e79c4963e134698869.zip |
remoteproc: perserve resource table data
Copy resource table from first to second firmware loading.
After firmware is loaded to memory, update the vdevs resource
pointer to the resource table kept in device memory.
Signed-off-by: Sjur Brændeland <sjur.brandeland@stericsson.com>
Acked-by: Ido Yariv <ido@wizery.com>
[rebase, terminology and style changes]
Signed-off-by: Ohad Ben-Cohen <ohad@wizery.com>
Diffstat (limited to 'include/linux/remoteproc.h')
-rw-r--r-- | include/linux/remoteproc.h | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h index faf33324c78f..b4cef16460f8 100644 --- a/include/linux/remoteproc.h +++ b/include/linux/remoteproc.h @@ -401,6 +401,9 @@ enum rproc_crash_type { * @crash_comp: completion used to sync crash handler and the rproc reload * @recovery_disabled: flag that state if recovery was disabled * @max_notifyid: largest allocated notify id. + * @table_ptr: pointer to the resource table in effect + * @cached_table: copy of the resource table + * @table_csum: checksum of the resource table */ struct rproc { struct klist_node node; @@ -429,9 +432,13 @@ struct rproc { struct completion crash_comp; bool recovery_disabled; int max_notifyid; + struct resource_table *table_ptr; + struct resource_table *cached_table; + u32 table_csum; }; /* we currently support only two vrings per rvdev */ + #define RVDEV_NUM_VRINGS 2 /** @@ -464,6 +471,7 @@ struct rproc_vring { * @vring: the vrings for this vdev * @dfeatures: virtio device features * @gfeatures: virtio guest features + * @rsc_offset: offset of the vdev's resource entry */ struct rproc_vdev { struct list_head node; @@ -472,6 +480,7 @@ struct rproc_vdev { struct rproc_vring vring[RVDEV_NUM_VRINGS]; unsigned long dfeatures; unsigned long gfeatures; + u32 rsc_offset; }; struct rproc *rproc_alloc(struct device *dev, const char *name, |