1*729c2db7SStephen WarrenNVIDIA Tegra Hardware Synchronization Primitives (HSP) 2*729c2db7SStephen Warren 3*729c2db7SStephen WarrenThe HSP modules are used for the processors to share resources and communicate 4*729c2db7SStephen Warrentogether. It provides a set of hardware synchronization primitives for 5*729c2db7SStephen Warreninterprocessor communication. So the interprocessor communication (IPC) 6*729c2db7SStephen Warrenprotocols can use hardware synchronization primitives, when operating between 7*729c2db7SStephen Warrentwo processors not in an SMP relationship. 8*729c2db7SStephen Warren 9*729c2db7SStephen WarrenThe features that HSP supported are shared mailboxes, shared semaphores, 10*729c2db7SStephen Warrenarbitrated semaphores and doorbells. 11*729c2db7SStephen Warren 12*729c2db7SStephen WarrenRequired properties: 13*729c2db7SStephen Warren- name : Should be hsp 14*729c2db7SStephen Warren- compatible 15*729c2db7SStephen Warren Array of strings. 16*729c2db7SStephen Warren one of: 17*729c2db7SStephen Warren - "nvidia,tegra186-hsp" 18*729c2db7SStephen Warren- reg : Offset and length of the register set for the device. 19*729c2db7SStephen Warren- interrupt-names 20*729c2db7SStephen Warren Array of strings. 21*729c2db7SStephen Warren Contains a list of names for the interrupts described by the interrupt 22*729c2db7SStephen Warren property. May contain the following entries, in any order: 23*729c2db7SStephen Warren - "doorbell" 24*729c2db7SStephen Warren Users of this binding MUST look up entries in the interrupt property 25*729c2db7SStephen Warren by name, using this interrupt-names property to do so. 26*729c2db7SStephen Warren- interrupts 27*729c2db7SStephen Warren Array of interrupt specifiers. 28*729c2db7SStephen Warren Must contain one entry per entry in the interrupt-names property, 29*729c2db7SStephen Warren in a matching order. 30*729c2db7SStephen Warren- #mbox-cells : Should be 2. 31*729c2db7SStephen Warren 32*729c2db7SStephen WarrenThe mbox specifier of the "mboxes" property in the client node should 33*729c2db7SStephen Warrencontain two data. The first one should be the HSP type and the second 34*729c2db7SStephen Warrenone should be the ID that the client is going to use. Those information 35*729c2db7SStephen Warrencan be found in the following file. 36*729c2db7SStephen Warren 37*729c2db7SStephen Warren- <dt-bindings/mailbox/tegra186-hsp.h>. 38*729c2db7SStephen Warren 39*729c2db7SStephen WarrenExample: 40*729c2db7SStephen Warren 41*729c2db7SStephen Warrenhsp_top0: hsp@3c00000 { 42*729c2db7SStephen Warren compatible = "nvidia,tegra186-hsp"; 43*729c2db7SStephen Warren reg = <0x0 0x03c00000 0x0 0xa0000>; 44*729c2db7SStephen Warren interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>; 45*729c2db7SStephen Warren interrupt-names = "doorbell"; 46*729c2db7SStephen Warren #mbox-cells = <2>; 47*729c2db7SStephen Warren}; 48*729c2db7SStephen Warren 49*729c2db7SStephen Warrenclient { 50*729c2db7SStephen Warren ... 51*729c2db7SStephen Warren mboxes = <&hsp_top0 HSP_MBOX_TYPE_DB HSP_DB_MASTER_XXX>; 52*729c2db7SStephen Warren}; 53