aboutsummaryrefslogtreecommitdiffstats
path: root/Documentation/devicetree/bindings/gpu/host1x/nvidia,tegra210-nvenc.yaml
blob: e63ae1a008183a4736b6dbf511fdb4c6d050c4f1 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: "http://devicetree.org/schemas/gpu/host1x/nvidia,tegra210-nvenc.yaml#"
$schema: "http://devicetree.org/meta-schemas/core.yaml#"

title: Device tree binding for NVIDIA Tegra NVENC

description: |
  NVENC is the hardware video encoder present on NVIDIA Tegra210
  and newer chips. It is located on the Host1x bus and typically
  programmed through Host1x channels.

maintainers:
  - Thierry Reding <treding@gmail.com>
  - Mikko Perttunen <mperttunen@nvidia.com>

properties:
  $nodename:
    pattern: "^nvenc@[0-9a-f]*$"

  compatible:
    enum:
      - nvidia,tegra210-nvenc
      - nvidia,tegra186-nvenc
      - nvidia,tegra194-nvenc

  reg:
    maxItems: 1

  clocks:
    maxItems: 1

  clock-names:
    items:
      - const: nvenc

  resets:
    maxItems: 1

  reset-names:
    items:
      - const: nvenc

  power-domains:
    maxItems: 1

  iommus:
    maxItems: 1

  dma-coherent: true

  interconnects:
    minItems: 2
    maxItems: 3

  interconnect-names:
    minItems: 2
    maxItems: 3

  nvidia,host1x-class:
    description: |
      Host1x class of the engine, used to specify the targeted engine
      when programming the engine through Host1x channels or when
      configuring engine-specific behavior in Host1x.
    default: 0x21
    $ref: /schemas/types.yaml#/definitions/uint32

required:
  - compatible
  - reg
  - clocks
  - clock-names
  - resets
  - reset-names
  - power-domains

allOf:
  - if:
      properties:
        compatible:
          enum:
            - nvidia,tegra210-nvenc
            - nvidia,tegra186-nvenc
    then:
      properties:
        interconnects:
          items:
            - description: DMA read memory client
            - description: DMA write memory client
        interconnect-names:
          items:
            - const: dma-mem
            - const: write
  - if:
      properties:
        compatible:
          enum:
            - nvidia,tegra194-nvenc
    then:
      properties:
        interconnects:
          items:
            - description: DMA read memory client
            - description: DMA read 2 memory client
            - description: DMA write memory client
        interconnect-names:
          items:
            - const: dma-mem
            - const: read-1
            - const: write

additionalProperties: false

examples:
  - |
    #include <dt-bindings/clock/tegra186-clock.h>
    #include <dt-bindings/memory/tegra186-mc.h>
    #include <dt-bindings/power/tegra186-powergate.h>
    #include <dt-bindings/reset/tegra186-reset.h>

    nvenc@154c0000 {
            compatible = "nvidia,tegra186-nvenc";
            reg = <0x154c0000 0x40000>;
            clocks = <&bpmp TEGRA186_CLK_NVENC>;
            clock-names = "nvenc";
            resets = <&bpmp TEGRA186_RESET_NVENC>;
            reset-names = "nvenc";

            power-domains = <&bpmp TEGRA186_POWER_DOMAIN_MPE>;
            interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVENCSRD &emc>,
                            <&mc TEGRA186_MEMORY_CLIENT_NVENCSWR &emc>;
            interconnect-names = "dma-mem", "write";
            iommus = <&smmu TEGRA186_SID_NVENC>;
    };