162306a36Sopenharmony_ciBroadcom FlexRM Ring Manager
262306a36Sopenharmony_ci============================
362306a36Sopenharmony_ciThe Broadcom FlexRM ring manager provides a set of rings which can be
462306a36Sopenharmony_ciused to submit work to offload engines. An SoC may have multiple FlexRM
562306a36Sopenharmony_cihardware blocks. There is one device tree entry per FlexRM block. The
662306a36Sopenharmony_ciFlexRM driver will create a mailbox-controller instance for given FlexRM
762306a36Sopenharmony_cihardware block where each mailbox channel is a separate FlexRM ring.
862306a36Sopenharmony_ci
962306a36Sopenharmony_ciRequired properties:
1062306a36Sopenharmony_ci--------------------
1162306a36Sopenharmony_ci- compatible:	Should be "brcm,iproc-flexrm-mbox"
1262306a36Sopenharmony_ci- reg:		Specifies base physical address and size of the FlexRM
1362306a36Sopenharmony_ci		ring registers
1462306a36Sopenharmony_ci- msi-parent:	Phandles (and potential Device IDs) to MSI controllers
1562306a36Sopenharmony_ci		The FlexRM engine will send MSIs (instead of wired
1662306a36Sopenharmony_ci		interrupts) to CPU. There is one MSI for each FlexRM ring.
1762306a36Sopenharmony_ci		Refer devicetree/bindings/interrupt-controller/msi.txt
1862306a36Sopenharmony_ci- #mbox-cells:	Specifies the number of cells needed to encode a mailbox
1962306a36Sopenharmony_ci		channel. This should be 3.
2062306a36Sopenharmony_ci
2162306a36Sopenharmony_ci		The 1st cell is the mailbox channel number.
2262306a36Sopenharmony_ci
2362306a36Sopenharmony_ci		The 2nd cell contains MSI completion threshold. This is the
2462306a36Sopenharmony_ci		number of completion messages for which FlexRM will inject
2562306a36Sopenharmony_ci		one MSI interrupt to CPU.
2662306a36Sopenharmony_ci
2762306a36Sopenharmony_ci		The 3nd cell contains MSI timer value representing time for
2862306a36Sopenharmony_ci		which FlexRM will wait to accumulate N completion messages
2962306a36Sopenharmony_ci		where N is the value specified by 2nd cell above. If FlexRM
3062306a36Sopenharmony_ci		does not get required number of completion messages in time
3162306a36Sopenharmony_ci		specified by this cell then it will inject one MSI interrupt
3262306a36Sopenharmony_ci		to CPU provided at least one completion message is available.
3362306a36Sopenharmony_ci
3462306a36Sopenharmony_ciOptional properties:
3562306a36Sopenharmony_ci--------------------
3662306a36Sopenharmony_ci- dma-coherent:	Present if DMA operations made by the FlexRM engine (such
3762306a36Sopenharmony_ci		as DMA descriptor access, access to buffers pointed by DMA
3862306a36Sopenharmony_ci		descriptors and read/write pointer updates to DDR) are
3962306a36Sopenharmony_ci		cache coherent with the CPU.
4062306a36Sopenharmony_ci
4162306a36Sopenharmony_ciExample:
4262306a36Sopenharmony_ci--------
4362306a36Sopenharmony_cicrypto_mbox: mbox@67000000 {
4462306a36Sopenharmony_ci	compatible = "brcm,iproc-flexrm-mbox";
4562306a36Sopenharmony_ci	reg = <0x67000000 0x200000>;
4662306a36Sopenharmony_ci	msi-parent = <&gic_its 0x7f00>;
4762306a36Sopenharmony_ci	#mbox-cells = <3>;
4862306a36Sopenharmony_ci};
4962306a36Sopenharmony_ci
5062306a36Sopenharmony_cicrypto@672c0000 {
5162306a36Sopenharmony_ci	compatible = "brcm,spu2-v2-crypto";
5262306a36Sopenharmony_ci	reg = <0x672c0000 0x1000>;
5362306a36Sopenharmony_ci	mboxes = <&crypto_mbox 0 0x1 0xffff>,
5462306a36Sopenharmony_ci		 <&crypto_mbox 1 0x1 0xffff>,
5562306a36Sopenharmony_ci		 <&crypto_mbox 16 0x1 0xffff>,
5662306a36Sopenharmony_ci		 <&crypto_mbox 17 0x1 0xffff>,
5762306a36Sopenharmony_ci		 <&crypto_mbox 30 0x1 0xffff>,
5862306a36Sopenharmony_ci		 <&crypto_mbox 31 0x1 0xffff>;
5962306a36Sopenharmony_ci};
60