aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/remoteproc.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/remoteproc.h')
-rw-r--r--include/linux/remoteproc.h21
1 files changed, 16 insertions, 5 deletions
diff --git a/include/linux/remoteproc.h b/include/linux/remoteproc.h
index 44e630eb3d94..728d421fffe9 100644
--- a/include/linux/remoteproc.h
+++ b/include/linux/remoteproc.h
@@ -324,6 +324,7 @@ struct rproc_mem_entry {
324}; 324};
325 325
326struct rproc; 326struct rproc;
327struct firmware;
327 328
328/** 329/**
329 * struct rproc_ops - platform-specific device handlers 330 * struct rproc_ops - platform-specific device handlers
@@ -331,12 +332,24 @@ struct rproc;
331 * @stop: power off the device 332 * @stop: power off the device
332 * @kick: kick a virtqueue (virtqueue id given as a parameter) 333 * @kick: kick a virtqueue (virtqueue id given as a parameter)
333 * @da_to_va: optional platform hook to perform address translations 334 * @da_to_va: optional platform hook to perform address translations
335 * @load_rsc_table: load resource table from firmware image
336 * @find_loaded_rsc_table: find the loaded resouce table
337 * @load: load firmeware to memory, where the remote processor
338 * expects to find it
339 * @sanity_check: sanity check the fw image
340 * @get_boot_addr: get boot address to entry point specified in firmware
334 */ 341 */
335struct rproc_ops { 342struct rproc_ops {
336 int (*start)(struct rproc *rproc); 343 int (*start)(struct rproc *rproc);
337 int (*stop)(struct rproc *rproc); 344 int (*stop)(struct rproc *rproc);
338 void (*kick)(struct rproc *rproc, int vqid); 345 void (*kick)(struct rproc *rproc, int vqid);
339 void * (*da_to_va)(struct rproc *rproc, u64 da, int len); 346 void * (*da_to_va)(struct rproc *rproc, u64 da, int len);
347 int (*load_rsc_table)(struct rproc *rproc, const struct firmware *fw);
348 struct resource_table *(*find_loaded_rsc_table)(
349 struct rproc *rproc, const struct firmware *fw);
350 int (*load)(struct rproc *rproc, const struct firmware *fw);
351 int (*sanity_check)(struct rproc *rproc, const struct firmware *fw);
352 u32 (*get_boot_addr)(struct rproc *rproc, const struct firmware *fw);
340}; 353};
341 354
342/** 355/**
@@ -390,7 +403,6 @@ enum rproc_crash_type {
390 * @priv: private data which belongs to the platform-specific rproc module 403 * @priv: private data which belongs to the platform-specific rproc module
391 * @ops: platform-specific start/stop rproc handlers 404 * @ops: platform-specific start/stop rproc handlers
392 * @dev: virtual device for refcounting and common remoteproc behavior 405 * @dev: virtual device for refcounting and common remoteproc behavior
393 * @fw_ops: firmware-specific handlers
394 * @power: refcount of users who need this rproc powered up 406 * @power: refcount of users who need this rproc powered up
395 * @state: state of the device 407 * @state: state of the device
396 * @lock: lock which protects concurrent manipulations of the rproc 408 * @lock: lock which protects concurrent manipulations of the rproc
@@ -406,11 +418,11 @@ enum rproc_crash_type {
406 * @index: index of this rproc device 418 * @index: index of this rproc device
407 * @crash_handler: workqueue for handling a crash 419 * @crash_handler: workqueue for handling a crash
408 * @crash_cnt: crash counter 420 * @crash_cnt: crash counter
409 * @crash_comp: completion used to sync crash handler and the rproc reload
410 * @recovery_disabled: flag that state if recovery was disabled 421 * @recovery_disabled: flag that state if recovery was disabled
411 * @max_notifyid: largest allocated notify id. 422 * @max_notifyid: largest allocated notify id.
412 * @table_ptr: pointer to the resource table in effect 423 * @table_ptr: pointer to the resource table in effect
413 * @cached_table: copy of the resource table 424 * @cached_table: copy of the resource table
425 * @table_sz: size of @cached_table
414 * @has_iommu: flag to indicate if remote processor is behind an MMU 426 * @has_iommu: flag to indicate if remote processor is behind an MMU
415 */ 427 */
416struct rproc { 428struct rproc {
@@ -419,9 +431,8 @@ struct rproc {
419 const char *name; 431 const char *name;
420 char *firmware; 432 char *firmware;
421 void *priv; 433 void *priv;
422 const struct rproc_ops *ops; 434 struct rproc_ops *ops;
423 struct device dev; 435 struct device dev;
424 const struct rproc_fw_ops *fw_ops;
425 atomic_t power; 436 atomic_t power;
426 unsigned int state; 437 unsigned int state;
427 struct mutex lock; 438 struct mutex lock;
@@ -437,11 +448,11 @@ struct rproc {
437 int index; 448 int index;
438 struct work_struct crash_handler; 449 struct work_struct crash_handler;
439 unsigned int crash_cnt; 450 unsigned int crash_cnt;
440 struct completion crash_comp;
441 bool recovery_disabled; 451 bool recovery_disabled;
442 int max_notifyid; 452 int max_notifyid;
443 struct resource_table *table_ptr; 453 struct resource_table *table_ptr;
444 struct resource_table *cached_table; 454 struct resource_table *cached_table;
455 size_t table_sz;
445 bool has_iommu; 456 bool has_iommu;
446 bool auto_boot; 457 bool auto_boot;
447}; 458};