1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
4 $id: http://devicetree.org/schemas/mailbox/nvidia,tegra186-hsp.yaml#
5 $schema: http://devicetree.org/meta-schemas/core.yaml#
7 title: NVIDIA Tegra Hardware Synchronization Primitives (HSP)
10 - Thierry Reding <thierry.reding@gmail.com>
11 - Jon Hunter <jonathanh@nvidia.com>
14 The HSP modules are used for the processors to share resources and
15 communicate together. It provides a set of hardware synchronization
16 primitives for interprocessor communication. So the interprocessor
17 communication (IPC) protocols can use hardware synchronization
18 primitives, when operating between two processors not in an SMP
21 The features that HSP supported are shared mailboxes, shared
22 semaphores, arbitrated semaphores and doorbells.
24 The mbox specifier of the "mboxes" property in the client node should
25 contain two cells. The first cell determines the HSP type and the
26 second cell is used to identify the mailbox that the client is going
29 For shared mailboxes, the first cell composed of two fields:
31 A bit mask of flags that further specifies the type of shared
32 mailbox to be used (based on the data size). If no flag is
33 specified then, 32-bit shared mailbox is used.
35 Defines the type of the mailbox to be used. This field should be
36 TEGRA_HSP_MBOX_TYPE_SM for shared mailboxes.
38 For doorbells, the second cell specifies the index of the doorbell to
41 For shared mailboxes, the second cell is composed of two fields:
43 A bit mask of flags that further specify how the shared mailbox
44 will be used. Valid flags are:
46 Defines the direction of the mailbox. If set, the mailbox
47 will be used as a producer (i.e. used to send data). If
48 cleared, the mailbox is the consumer of data sent by a
52 The index of the shared mailbox to use. The number of available
53 mailboxes may vary by instance of the HSP block and SoC
56 The following file contains definitions that can be used to
57 construct mailbox specifiers:
59 <dt-bindings/mailbox/tegra186-hsp.h>
63 pattern: "^hsp@[0-9a-f]+$"
67 - const: nvidia,tegra186-hsp
68 - const: nvidia,tegra194-hsp
69 - const: nvidia,tegra264-hsp
71 - const: nvidia,tegra234-hsp
72 - const: nvidia,tegra194-hsp
83 # shared interrupts are optional
89 - pattern: "^shared[0-7]$"
90 - pattern: "^shared[0-7]$"
91 - pattern: "^shared[0-7]$"
92 - pattern: "^shared[0-7]$"
93 - pattern: "^shared[0-7]$"
94 - pattern: "^shared[0-7]$"
95 - pattern: "^shared[0-7]$"
96 - pattern: "^shared[0-7]$"
99 - pattern: "^shared[0-7]$"
100 - pattern: "^shared[0-7]$"
101 - pattern: "^shared[0-7]$"
102 - pattern: "^shared[0-7]$"
107 additionalProperties: false
111 #include <dt-bindings/interrupt-controller/arm-gic.h>
112 #include <dt-bindings/mailbox/tegra186-hsp.h>
114 hsp_top0: hsp@3c00000 {
115 compatible = "nvidia,tegra186-hsp";
116 reg = <0x03c00000 0xa0000>;
117 interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
118 interrupt-names = "doorbell";
123 mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_DB TEGRA_HSP_DB_MASTER_CCPLEX>;