History

Merge tag 'rproc-v5.3' of git://github.com/andersson/remoteproc

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

Linus Torvalds committed 7 years ago

Commit fdcec002 parents 7636b75 93f1d3e17 files · +1009 −57Browse files

Showing the changes to include/linux (2 of 17 files). Show all

Unified · Split

2 files
  1. include/linux/remoteproc.h +26 −6
  2. include/linux/soc/qcom/mdt_loader.h +2 −0
include/linux/remoteproc.h+26−6
@@ -100,7 +100,9 @@ struct fw_rsc_hdr { · 99 unmodified lines
100100 * the remote processor will be writing logs.
101101 * @RSC_VDEV: declare support for a virtio device, and serve as its
102102 * 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
104106 *
105107 * For more details regarding a specific resource type, please see its
106108 * dedicated structure below.
@@ -111,11 +113,13 @@ struct fw_rsc_hdr { · 4 unmodified lines
111113 * please update it as needed.
112114 */
113115 enum fw_resource_type {
114− RSC_CARVEOUT = 0,
115− RSC_DEVMEM = 1,
116− RSC_TRACE = 2,
117− RSC_VDEV = 3,
118− RSC_LAST = 4,
116+ RSC_CARVEOUT = 0,
117+ RSC_DEVMEM = 1,
118+ RSC_TRACE = 2,
119+ RSC_VDEV = 3,
120+ RSC_LAST = 4,
121+ RSC_VENDOR_START = 128,
122+ RSC_VENDOR_END = 512,
119123 };
120124
121125 #define FW_RSC_ADDR_ANY (-1)
@@ -339,6 +343,16 @@ struct rproc_mem_entry { · 217 unmodified lines
339343
340344 struct firmware;
341345
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+
342356 /**
343357 * struct rproc_ops - platform-specific device handlers
344358 * @start: power on the device and boot it
@@ -346,6 +360,10 @@ struct firmware; · 1 unmodified line
346360 * @kick: kick a virtqueue (virtqueue id given as a parameter)
347361 * @da_to_va: optional platform hook to perform address translations
348362 * @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
349367 * @find_loaded_rsc_table: find the loaded resouce table
350368 * @load: load firmware to memory, where the remote processor
351369 * expects to find it
@@ -358,6 +376,8 @@ struct rproc_ops { · 6 unmodified lines
358376 void (*kick)(struct rproc *rproc, int vqid);
359377 void * (*da_to_va)(struct rproc *rproc, u64 da, int len);
360378 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);
361381 struct resource_table *(*find_loaded_rsc_table)(
362382 struct rproc *rproc, const struct firmware *fw);
363383 int (*load)(struct rproc *rproc, const struct firmware *fw);
include/linux/soc/qcom/mdt_loader.h+2−0
@@ -21,4 +21,6 @@ int qcom_mdt_load_no_init(struct device *dev, const struct firmware *fw, · 20 unmodified lines
2121 const char *fw_name, int pas_id, void *mem_region,
2222 phys_addr_t mem_phys, size_t mem_size,
2323 phys_addr_t *reloc_base);
24+void *qcom_mdt_read_metadata(const struct firmware *fw, size_t *data_len);
25+
2426 #endif

Keyboard shortcuts

General

Show keyboard shortcuts
?
Focus the current search
/

Issues and pull requests

Open filters
f

Issues, pull requests and Inbox

Select next item
j↓
Select previous item
k↑
Open selected item
Enter
Dismiss filters or clear selection
Esc

Repository code

Go to file
t