mirror of
https://github.com/torvalds/linux.git
synced 2026-04-19 15:24:02 -04:00
Add the compatible string for the HSP block found on the Tegra264 SoC. The HSP block in Tegra264 is not register compatible with the one in Tegra194 or Tegra234 hence there is no fallback compatibility string. Acked-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Acked-by: Thierry Reding <treding@nvidia.com> Signed-off-by: Peter De Schrijver <pdeschrijver@nvidia.com> Signed-off-by: Jassi Brar <jaswinder.singh@linaro.org>
125 lines
3.7 KiB
YAML
125 lines
3.7 KiB
YAML
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
|
%YAML 1.2
|
|
---
|
|
$id: http://devicetree.org/schemas/mailbox/nvidia,tegra186-hsp.yaml#
|
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
|
|
|
title: NVIDIA Tegra Hardware Synchronization Primitives (HSP)
|
|
|
|
maintainers:
|
|
- Thierry Reding <thierry.reding@gmail.com>
|
|
- Jon Hunter <jonathanh@nvidia.com>
|
|
|
|
description: |
|
|
The HSP modules are used for the processors to share resources and
|
|
communicate together. It provides a set of hardware synchronization
|
|
primitives for interprocessor communication. So the interprocessor
|
|
communication (IPC) protocols can use hardware synchronization
|
|
primitives, when operating between two processors not in an SMP
|
|
relationship.
|
|
|
|
The features that HSP supported are shared mailboxes, shared
|
|
semaphores, arbitrated semaphores and doorbells.
|
|
|
|
The mbox specifier of the "mboxes" property in the client node should
|
|
contain two cells. The first cell determines the HSP type and the
|
|
second cell is used to identify the mailbox that the client is going
|
|
to use.
|
|
|
|
For shared mailboxes, the first cell composed of two fields:
|
|
- bits 15..8:
|
|
A bit mask of flags that further specifies the type of shared
|
|
mailbox to be used (based on the data size). If no flag is
|
|
specified then, 32-bit shared mailbox is used.
|
|
- bits 7..0:
|
|
Defines the type of the mailbox to be used. This field should be
|
|
TEGRA_HSP_MBOX_TYPE_SM for shared mailboxes.
|
|
|
|
For doorbells, the second cell specifies the index of the doorbell to
|
|
use.
|
|
|
|
For shared mailboxes, the second cell is composed of two fields:
|
|
- bits 31..24:
|
|
A bit mask of flags that further specify how the shared mailbox
|
|
will be used. Valid flags are:
|
|
- bit 31:
|
|
Defines the direction of the mailbox. If set, the mailbox
|
|
will be used as a producer (i.e. used to send data). If
|
|
cleared, the mailbox is the consumer of data sent by a
|
|
producer.
|
|
|
|
- bits 23..0:
|
|
The index of the shared mailbox to use. The number of available
|
|
mailboxes may vary by instance of the HSP block and SoC
|
|
generation.
|
|
|
|
The following file contains definitions that can be used to
|
|
construct mailbox specifiers:
|
|
|
|
<dt-bindings/mailbox/tegra186-hsp.h>
|
|
|
|
properties:
|
|
$nodename:
|
|
pattern: "^hsp@[0-9a-f]+$"
|
|
|
|
compatible:
|
|
oneOf:
|
|
- const: nvidia,tegra186-hsp
|
|
- const: nvidia,tegra194-hsp
|
|
- const: nvidia,tegra264-hsp
|
|
- items:
|
|
- const: nvidia,tegra234-hsp
|
|
- const: nvidia,tegra194-hsp
|
|
|
|
reg:
|
|
maxItems: 1
|
|
|
|
interrupts:
|
|
minItems: 1
|
|
maxItems: 9
|
|
|
|
interrupt-names:
|
|
oneOf:
|
|
# shared interrupts are optional
|
|
- items:
|
|
- const: doorbell
|
|
|
|
- items:
|
|
- const: doorbell
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
|
|
- items:
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
- pattern: "^shared[0-7]$"
|
|
|
|
"#mbox-cells":
|
|
const: 2
|
|
|
|
additionalProperties: false
|
|
|
|
examples:
|
|
- |
|
|
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
|
#include <dt-bindings/mailbox/tegra186-hsp.h>
|
|
|
|
hsp_top0: hsp@3c00000 {
|
|
compatible = "nvidia,tegra186-hsp";
|
|
reg = <0x03c00000 0xa0000>;
|
|
interrupts = <GIC_SPI 176 IRQ_TYPE_LEVEL_HIGH>;
|
|
interrupt-names = "doorbell";
|
|
#mbox-cells = <2>;
|
|
};
|
|
|
|
client {
|
|
mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_DB TEGRA_HSP_DB_MASTER_CCPLEX>;
|
|
};
|