xref: /freebsd/sys/contrib/device-tree/include/dt-bindings/mailbox/tegra186-hsp.h (revision d5b0e70f7e04d971691517ce1304d86a1e367e2e)
1c66ec88fSEmmanuel Vadot /* SPDX-License-Identifier: GPL-2.0 */
2c66ec88fSEmmanuel Vadot /*
3c66ec88fSEmmanuel Vadot  * This header provides constants for binding nvidia,tegra186-hsp.
4c66ec88fSEmmanuel Vadot  */
5c66ec88fSEmmanuel Vadot 
6c66ec88fSEmmanuel Vadot #ifndef _DT_BINDINGS_MAILBOX_TEGRA186_HSP_H
7c66ec88fSEmmanuel Vadot #define _DT_BINDINGS_MAILBOX_TEGRA186_HSP_H
8c66ec88fSEmmanuel Vadot 
9c66ec88fSEmmanuel Vadot /*
10c66ec88fSEmmanuel Vadot  * These define the type of mailbox that is to be used (doorbell, shared
11c66ec88fSEmmanuel Vadot  * mailbox, shared semaphore or arbitrated semaphore).
12c66ec88fSEmmanuel Vadot  */
13c66ec88fSEmmanuel Vadot #define TEGRA_HSP_MBOX_TYPE_DB 0x0
14c66ec88fSEmmanuel Vadot #define TEGRA_HSP_MBOX_TYPE_SM 0x1
15c66ec88fSEmmanuel Vadot #define TEGRA_HSP_MBOX_TYPE_SS 0x2
16c66ec88fSEmmanuel Vadot #define TEGRA_HSP_MBOX_TYPE_AS 0x3
17c66ec88fSEmmanuel Vadot 
18c66ec88fSEmmanuel Vadot /*
19*d5b0e70fSEmmanuel Vadot  * These define the types of shared mailbox supported based on data size.
20*d5b0e70fSEmmanuel Vadot  */
21*d5b0e70fSEmmanuel Vadot #define TEGRA_HSP_MBOX_TYPE_SM_128BIT (1 << 8)
22*d5b0e70fSEmmanuel Vadot 
23*d5b0e70fSEmmanuel Vadot /*
24c66ec88fSEmmanuel Vadot  * These defines represent the bit associated with the given master ID in the
25c66ec88fSEmmanuel Vadot  * doorbell registers.
26c66ec88fSEmmanuel Vadot  */
27c66ec88fSEmmanuel Vadot #define TEGRA_HSP_DB_MASTER_CCPLEX 17
28c66ec88fSEmmanuel Vadot #define TEGRA_HSP_DB_MASTER_BPMP 19
29c66ec88fSEmmanuel Vadot 
30c66ec88fSEmmanuel Vadot /*
31c66ec88fSEmmanuel Vadot  * Shared mailboxes are unidirectional, so the direction needs to be specified
32c66ec88fSEmmanuel Vadot  * in the device tree.
33c66ec88fSEmmanuel Vadot  */
34c66ec88fSEmmanuel Vadot #define TEGRA_HSP_SM_MASK 0x00ffffff
35c66ec88fSEmmanuel Vadot #define TEGRA_HSP_SM_FLAG_RX (0 << 31)
36c66ec88fSEmmanuel Vadot #define TEGRA_HSP_SM_FLAG_TX (1 << 31)
37c66ec88fSEmmanuel Vadot 
38c66ec88fSEmmanuel Vadot #define TEGRA_HSP_SM_RX(x) (TEGRA_HSP_SM_FLAG_RX | ((x) & TEGRA_HSP_SM_MASK))
39c66ec88fSEmmanuel Vadot #define TEGRA_HSP_SM_TX(x) (TEGRA_HSP_SM_FLAG_TX | ((x) & TEGRA_HSP_SM_MASK))
40c66ec88fSEmmanuel Vadot 
41c66ec88fSEmmanuel Vadot #endif
42