Message ID | 1555426699-5340-3-git-send-email-fabien.dessenne@st.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | stm32 m4 remoteproc on STM32MP157c | expand |
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@st.com> > --- > .../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. > +- 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 >
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@st.com> >> --- >> .../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 >>
On Tue, Apr 30, 2019 at 9:15 AM Fabien DESSENNE <fabien.dessenne@st.com> wrote: > > 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@st.com> > >> --- > >> .../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. I'm not sure that's the right direction. reserved-memory nodes generally should be in the range of system memory (i.e. what /memory nodes define). > 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". Perhaps. > > 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? That should cause another warning because the 'simple-bus' checks expect to have nodes with addresses as 'simple-bus' means MMIO bus. That may have been the check which was broken for a while and I just fixed not too long ago. Rob
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. +- 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. + +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>; + };
Add the device tree bindings document for the stm32 remoteproc devices. Signed-off-by: Fabien Dessenne <fabien.dessenne@st.com> --- .../devicetree/bindings/remoteproc/stm32-rproc.txt | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) create mode 100644 Documentation/devicetree/bindings/remoteproc/stm32-rproc.txt