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