Hi Rob, On 30/04/2019 2:40 AM, Rob Herring wrote: > On Tue, Apr 16, 2019 at 04:58:13PM +0200, Fabien Dessenne wrote: >> Add the device tree bindings document for the stm32 remoteproc devices. >> >> Signed-off-by: Fabien Dessenne <fabien.dessenne@xxxxxx> >> --- >> .../devicetree/bindings/remoteproc/stm32-rproc.txt | 64 ++++++++++++++++++++++ >> 1 file changed, 64 insertions(+) >> create mode 100644 Documentation/devicetree/bindings/remoteproc/stm32-rproc.txt >> >> diff --git a/Documentation/devicetree/bindings/remoteproc/stm32-rproc.txt b/Documentation/devicetree/bindings/remoteproc/stm32-rproc.txt >> new file mode 100644 >> index 0000000..430132c >> --- /dev/null >> +++ b/Documentation/devicetree/bindings/remoteproc/stm32-rproc.txt >> @@ -0,0 +1,64 @@ >> +STMicroelectronics STM32 Remoteproc >> +----------------------------------- >> +This document defines the binding for the remoteproc component that loads and >> +boots firmwares on the ST32MP family chipset. >> + >> +Required properties: >> +- compatible: Must be "st,stm32mp1-m4" >> +- reg: Address ranges of the remote processor dedicated memories. >> + The parent node should provide an appropriate ranges property >> + for properly translating these into bus addresses. > dma-ranges, but that's independent of 'reg'. > > It needs to list how many reg regions and what they are. The "reg" property needs to be removed since it is not used by the driver : the "memory-region" property (defined below) provides with all the needed memory information. Unfortunately, when I remove this "reg" property from the DeviceTree, I have this warning when building (W=123) the DTB: "Warning (avoid_unnecessary_addr_size): /mlahb: unnecessary #address-cells/#size-cells without "ranges" or child "reg" property" IMHO, there is something wrong in the dtc script which seems to ignore the "dma-ranges" property that needs to have #address-cells/#size-cells defined. Just like "ranges". The quick patch below (add check for "dma-ranges" ) in scripts/dtc/checks.c solves this issue. static void check_avoid_unnecessary_addr_size(struct check *c, struct dt_info *dti, struct node *node) { ... if (get_property(node, "ranges") || get_property(node, "dma-ranges") || !node->children) return; ... Can you confirm that I can remove the "reg" property and ignore the warning? BR Fabien > >> +- resets: Reference to a reset controller asserting the remote processor. >> +- st,syscfg-holdboot: Reference to the system configuration which holds the >> + remote processor reset hold boot >> + 1st cell: phandle of syscon block >> + 2nd cell: register offset containing the hold boot setting >> + 3rd cell: register bitmask for the hold boot field >> +- st,syscfg-tz: Reference to the system configuration which holds the RCC trust >> + zone mode >> + 1st cell: phandle to syscon block >> + 2nd cell: register offset containing the RCC trust zone mode setting >> + 3rd cell: register bitmask for the RCC trust zone mode bit >> + >> +Optional properties: >> +- interrupts: Should contain the watchdog interrupt >> +- mboxes: This property is required only if the rpmsg/virtio functionality >> + is used. List of phandle and mailbox channel specifiers: >> + - a channel (a) used to communicate through virtqueues with the >> + remote proc. >> + Bi-directional channel: >> + - from local to remote = send message >> + - from remote to local = send message ack >> + - a channel (b) working the opposite direction of channel (a) >> + - a channel (c) used by the local proc to notify the remote proc >> + that it is about to be shut down. >> + Unidirectional channel: >> + - from local to remote, where ACK from the remote means >> + that it is ready for shutdown >> +- mbox-names: This property is required if the mboxes property is used. >> + - must be "vq0" for channel (a) >> + - must be "vq1" for channel (b) >> + - must be "shutdown" for channel (c) >> +- memory-region: List of phandles to the reserved memory regions associated with >> + the remoteproc device. This is variable and describes the >> + memories shared with the remote processor (eg: remoteproc >> + firmware and carveouts, rpmsg vrings, ...). >> + (see ../reserved-memory/reserved-memory.txt) >> +- st,syscfg-pdds: Reference to the system configuration which holds the remote >> + processor deep sleep setting >> + 1st cell: phandle to syscon block >> + 2nd cell: register offset containing the deep sleep setting >> + 3rd cell: register bitmask for the deep sleep bit >> +- auto_boot: If defined, when remoteproc is probed, it loads the default >> + firmware and starts the remote processor. > st,auto-boot > >> + >> +Example: >> + m4_rproc: m4@0 { >> + compatible = "st,stm32mp1-m4"; >> + reg = <0x00000000 0x10000>, >> + <0x10000000 0x40000>, >> + <0x30000000 0x40000>; >> + resets = <&rcc MCU_R>; >> + st,syscfg-holdboot = <&rcc 0x10C 0x1>; >> + st,syscfg-tz = <&rcc 0x000 0x1>; >> + }; >> -- >> 2.7.4 >>