Pull remoteproc updates from Bjorn Andersson: "This adds support for the STM32 remoteproc, additional i.MX platforms with Cortex M4 remoteprocs and Qualcomm's QCS404 Compute DSP. Also initial support for vendor specific resource table entries and support for unprocessed Qualcomm firmware files" * tag 'rproc-v5.3' of git://github.com/andersson/remoteproc: remoteproc: stm32: fix building without ARM SMCC remoteproc: qcom: q6v5-mss: Fix build error without QCOM_MDT_LOADER remoteproc: copy parent dma_pfn_offset for vdev remoteproc: qcom: q6v5-mss: Support loading non-split images soc: qcom: mdt_loader: Support loading non-split images remoteproc: stm32: add an ST stm32_rproc driver dt-bindings: remoteproc: add bindings for stm32 remote processor driver dt-bindings: stm32: add bindings for ML-AHB interconnect remoteproc: Use struct_size() helper remoteproc: add vendor resources handling remoteproc: imx: Fix typo in "failed" remoteproc: imx: Broaden the Kconfig selection logic remoteproc,rpmsg: add missing MAINTAINERS file entries remoteproc: qcom: qdsp6-adsp: Add support for QCS404 CDSP dt-bindings: remoteproc: Rename and amend Hexagon v56 binding
Showing the changes to include/linux (2 of 17 files). Show all
Unified · Split
| @@ -100,7 +100,9 @@ struct fw_rsc_hdr { · 99 unmodified lines | |||
| 100 | * the remote processor will be writing logs. | 100 | * the remote processor will be writing logs. |
| 101 | * @RSC_VDEV: declare support for a virtio device, and serve as its | 101 | * @RSC_VDEV: declare support for a virtio device, and serve as its |
| 102 | * virtio header. | 102 | * virtio header. |
| 103 | * @RSC_LAST: just keep this one at the end | 103 | * @RSC_LAST: just keep this one at the end of standard resources |
| 104 | * @RSC_VENDOR_START: start of the vendor specific resource types range | ||
| 105 | * @RSC_VENDOR_END: end of the vendor specific resource types range | ||
| 104 | * | 106 | * |
| 105 | * For more details regarding a specific resource type, please see its | 107 | * For more details regarding a specific resource type, please see its |
| 106 | * dedicated structure below. | 108 | * dedicated structure below. |
| @@ -111,11 +113,13 @@ struct fw_rsc_hdr { · 4 unmodified lines | |||
| 111 | * please update it as needed. | 113 | * please update it as needed. |
| 112 | */ | 114 | */ |
| 113 | enum fw_resource_type { | 115 | enum fw_resource_type { |
| 114 | RSC_CARVEOUT = 0, | 116 | RSC_CARVEOUT = 0, |
| 115 | RSC_DEVMEM = 1, | 117 | RSC_DEVMEM = 1, |
| 116 | RSC_TRACE = 2, | 118 | RSC_TRACE = 2, |
| 117 | RSC_VDEV = 3, | 119 | RSC_VDEV = 3, |
| 118 | RSC_LAST = 4, | 120 | RSC_LAST = 4, |
| 121 | RSC_VENDOR_START = 128, | ||
| 122 | RSC_VENDOR_END = 512, | ||
| 119 | }; | 123 | }; |
| 120 | 124 | ||
| 121 | #define FW_RSC_ADDR_ANY (-1) | 125 | #define FW_RSC_ADDR_ANY (-1) |
| @@ -339,6 +343,16 @@ struct rproc_mem_entry { · 217 unmodified lines | |||
| 339 | 343 | ||
| 340 | struct firmware; | 344 | struct firmware; |
| 341 | 345 | ||
| 346 | /** | ||
| 347 | * enum rsc_handling_status - return status of rproc_ops handle_rsc hook | ||
| 348 | * @RSC_HANDLED: resource was handled | ||
| 349 | * @RSC_IGNORED: resource was ignored | ||
| 350 | */ | ||
| 351 | enum rsc_handling_status { | ||
| 352 | RSC_HANDLED = 0, | ||
| 353 | RSC_IGNORED = 1, | ||
| 354 | }; | ||
| 355 | |||
| 342 | /** | 356 | /** |
| 343 | * struct rproc_ops - platform-specific device handlers | 357 | * struct rproc_ops - platform-specific device handlers |
| 344 | * @start: power on the device and boot it | 358 | * @start: power on the device and boot it |
| @@ -346,6 +360,10 @@ struct firmware; · 1 unmodified line | |||
| 346 | * @kick: kick a virtqueue (virtqueue id given as a parameter) | 360 | * @kick: kick a virtqueue (virtqueue id given as a parameter) |
| 347 | * @da_to_va: optional platform hook to perform address translations | 361 | * @da_to_va: optional platform hook to perform address translations |
| 348 | * @parse_fw: parse firmware to extract information (e.g. resource table) | 362 | * @parse_fw: parse firmware to extract information (e.g. resource table) |
| 363 | * @handle_rsc: optional platform hook to handle vendor resources. Should return | ||
| 364 | * RSC_HANDLED if resource was handled, RSC_IGNORED if not handled and a | ||
| 365 | * negative value on error | ||
| 366 | * @load_rsc_table: load resource table from firmware image | ||
| 349 | * @find_loaded_rsc_table: find the loaded resouce table | 367 | * @find_loaded_rsc_table: find the loaded resouce table |
| 350 | * @load: load firmware to memory, where the remote processor | 368 | * @load: load firmware to memory, where the remote processor |
| 351 | * expects to find it | 369 | * expects to find it |
| @@ -358,6 +376,8 @@ struct rproc_ops { · 6 unmodified lines | |||
| 358 | void (*kick)(struct rproc *rproc, int vqid); | 376 | void (*kick)(struct rproc *rproc, int vqid); |
| 359 | void * (*da_to_va)(struct rproc *rproc, u64 da, int len); | 377 | void * (*da_to_va)(struct rproc *rproc, u64 da, int len); |
| 360 | int (*parse_fw)(struct rproc *rproc, const struct firmware *fw); | 378 | int (*parse_fw)(struct rproc *rproc, const struct firmware *fw); |
| 379 | int (*handle_rsc)(struct rproc *rproc, u32 rsc_type, void *rsc, | ||
| 380 | int offset, int avail); | ||
| 361 | struct resource_table *(*find_loaded_rsc_table)( | 381 | struct resource_table *(*find_loaded_rsc_table)( |
| 362 | struct rproc *rproc, const struct firmware *fw); | 382 | struct rproc *rproc, const struct firmware *fw); |
| 363 | int (*load)(struct rproc *rproc, const struct firmware *fw); | 383 | int (*load)(struct rproc *rproc, const struct firmware *fw); |
| @@ -21,4 +21,6 @@ int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, · 20 unmodified lines | |||
| 21 | const char *fw_name, int pas_id, void *mem_region, | 21 | const char *fw_name, int pas_id, void *mem_region, |
| 22 | phys_addr_t mem_phys, size_t mem_size, | 22 | phys_addr_t mem_phys, size_t mem_size, |
| 23 | phys_addr_t *reloc_base); | 23 | phys_addr_t *reloc_base); |
| 24 | void *qcom_mdt_read_metadata(const struct firmware *fw, size_t *data_len); | ||
| 25 | |||
| 24 | #endif | 26 | #endif |