xref: /freebsd/sys/contrib/device-tree/Bindings/gpu/host1x/nvidia,tegra210-nvenc.yaml (revision fac71e4e09885bb2afa3d984a0c239a52e1a7418)
1e67e8565SEmmanuel Vadot# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
2e67e8565SEmmanuel Vadot%YAML 1.2
3e67e8565SEmmanuel Vadot---
4*fac71e4eSEmmanuel Vadot$id: http://devicetree.org/schemas/gpu/host1x/nvidia,tegra210-nvenc.yaml#
5*fac71e4eSEmmanuel Vadot$schema: http://devicetree.org/meta-schemas/core.yaml#
6e67e8565SEmmanuel Vadot
78bab661aSEmmanuel Vadottitle: NVIDIA Tegra NVENC
8e67e8565SEmmanuel Vadot
9e67e8565SEmmanuel Vadotdescription: |
10e67e8565SEmmanuel Vadot  NVENC is the hardware video encoder present on NVIDIA Tegra210
11e67e8565SEmmanuel Vadot  and newer chips. It is located on the Host1x bus and typically
12e67e8565SEmmanuel Vadot  programmed through Host1x channels.
13e67e8565SEmmanuel Vadot
14e67e8565SEmmanuel Vadotmaintainers:
15e67e8565SEmmanuel Vadot  - Thierry Reding <treding@gmail.com>
16e67e8565SEmmanuel Vadot  - Mikko Perttunen <mperttunen@nvidia.com>
17e67e8565SEmmanuel Vadot
18e67e8565SEmmanuel Vadotproperties:
19e67e8565SEmmanuel Vadot  $nodename:
20e67e8565SEmmanuel Vadot    pattern: "^nvenc@[0-9a-f]*$"
21e67e8565SEmmanuel Vadot
22e67e8565SEmmanuel Vadot  compatible:
23e67e8565SEmmanuel Vadot    enum:
24e67e8565SEmmanuel Vadot      - nvidia,tegra210-nvenc
25e67e8565SEmmanuel Vadot      - nvidia,tegra186-nvenc
26e67e8565SEmmanuel Vadot      - nvidia,tegra194-nvenc
27e67e8565SEmmanuel Vadot
28e67e8565SEmmanuel Vadot  reg:
29e67e8565SEmmanuel Vadot    maxItems: 1
30e67e8565SEmmanuel Vadot
31e67e8565SEmmanuel Vadot  clocks:
32e67e8565SEmmanuel Vadot    maxItems: 1
33e67e8565SEmmanuel Vadot
34e67e8565SEmmanuel Vadot  clock-names:
35e67e8565SEmmanuel Vadot    items:
36e67e8565SEmmanuel Vadot      - const: nvenc
37e67e8565SEmmanuel Vadot
38e67e8565SEmmanuel Vadot  resets:
39e67e8565SEmmanuel Vadot    maxItems: 1
40e67e8565SEmmanuel Vadot
41e67e8565SEmmanuel Vadot  reset-names:
42e67e8565SEmmanuel Vadot    items:
43e67e8565SEmmanuel Vadot      - const: nvenc
44e67e8565SEmmanuel Vadot
45e67e8565SEmmanuel Vadot  power-domains:
46e67e8565SEmmanuel Vadot    maxItems: 1
47e67e8565SEmmanuel Vadot
48e67e8565SEmmanuel Vadot  iommus:
49e67e8565SEmmanuel Vadot    maxItems: 1
50e67e8565SEmmanuel Vadot
51e67e8565SEmmanuel Vadot  dma-coherent: true
52e67e8565SEmmanuel Vadot
53e67e8565SEmmanuel Vadot  interconnects:
54e67e8565SEmmanuel Vadot    minItems: 2
55e67e8565SEmmanuel Vadot    maxItems: 3
56e67e8565SEmmanuel Vadot
57e67e8565SEmmanuel Vadot  interconnect-names:
58e67e8565SEmmanuel Vadot    minItems: 2
59e67e8565SEmmanuel Vadot    maxItems: 3
60e67e8565SEmmanuel Vadot
61e67e8565SEmmanuel Vadot  nvidia,host1x-class:
62e67e8565SEmmanuel Vadot    description: |
63e67e8565SEmmanuel Vadot      Host1x class of the engine, used to specify the targeted engine
64e67e8565SEmmanuel Vadot      when programming the engine through Host1x channels or when
65e67e8565SEmmanuel Vadot      configuring engine-specific behavior in Host1x.
66e67e8565SEmmanuel Vadot    default: 0x21
67e67e8565SEmmanuel Vadot    $ref: /schemas/types.yaml#/definitions/uint32
68e67e8565SEmmanuel Vadot
69e67e8565SEmmanuel Vadotrequired:
70e67e8565SEmmanuel Vadot  - compatible
71e67e8565SEmmanuel Vadot  - reg
72e67e8565SEmmanuel Vadot  - clocks
73e67e8565SEmmanuel Vadot  - clock-names
74e67e8565SEmmanuel Vadot  - resets
75e67e8565SEmmanuel Vadot  - reset-names
76e67e8565SEmmanuel Vadot  - power-domains
77e67e8565SEmmanuel Vadot
78e67e8565SEmmanuel VadotallOf:
79e67e8565SEmmanuel Vadot  - if:
80e67e8565SEmmanuel Vadot      properties:
81e67e8565SEmmanuel Vadot        compatible:
82e67e8565SEmmanuel Vadot          enum:
83e67e8565SEmmanuel Vadot            - nvidia,tegra210-nvenc
84e67e8565SEmmanuel Vadot            - nvidia,tegra186-nvenc
85e67e8565SEmmanuel Vadot    then:
86e67e8565SEmmanuel Vadot      properties:
87e67e8565SEmmanuel Vadot        interconnects:
88e67e8565SEmmanuel Vadot          items:
89e67e8565SEmmanuel Vadot            - description: DMA read memory client
90e67e8565SEmmanuel Vadot            - description: DMA write memory client
91e67e8565SEmmanuel Vadot        interconnect-names:
92e67e8565SEmmanuel Vadot          items:
93e67e8565SEmmanuel Vadot            - const: dma-mem
94e67e8565SEmmanuel Vadot            - const: write
95e67e8565SEmmanuel Vadot  - if:
96e67e8565SEmmanuel Vadot      properties:
97e67e8565SEmmanuel Vadot        compatible:
98e67e8565SEmmanuel Vadot          enum:
99e67e8565SEmmanuel Vadot            - nvidia,tegra194-nvenc
100e67e8565SEmmanuel Vadot    then:
101e67e8565SEmmanuel Vadot      properties:
102e67e8565SEmmanuel Vadot        interconnects:
103e67e8565SEmmanuel Vadot          items:
104e67e8565SEmmanuel Vadot            - description: DMA read memory client
105e67e8565SEmmanuel Vadot            - description: DMA read 2 memory client
106e67e8565SEmmanuel Vadot            - description: DMA write memory client
107e67e8565SEmmanuel Vadot        interconnect-names:
108e67e8565SEmmanuel Vadot          items:
109e67e8565SEmmanuel Vadot            - const: dma-mem
110e67e8565SEmmanuel Vadot            - const: read-1
111e67e8565SEmmanuel Vadot            - const: write
112e67e8565SEmmanuel Vadot
113e67e8565SEmmanuel VadotadditionalProperties: false
114e67e8565SEmmanuel Vadot
115e67e8565SEmmanuel Vadotexamples:
116e67e8565SEmmanuel Vadot  - |
117e67e8565SEmmanuel Vadot    #include <dt-bindings/clock/tegra186-clock.h>
118e67e8565SEmmanuel Vadot    #include <dt-bindings/memory/tegra186-mc.h>
119e67e8565SEmmanuel Vadot    #include <dt-bindings/power/tegra186-powergate.h>
120e67e8565SEmmanuel Vadot    #include <dt-bindings/reset/tegra186-reset.h>
121e67e8565SEmmanuel Vadot
122e67e8565SEmmanuel Vadot    nvenc@154c0000 {
123e67e8565SEmmanuel Vadot            compatible = "nvidia,tegra186-nvenc";
124e67e8565SEmmanuel Vadot            reg = <0x154c0000 0x40000>;
125e67e8565SEmmanuel Vadot            clocks = <&bpmp TEGRA186_CLK_NVENC>;
126e67e8565SEmmanuel Vadot            clock-names = "nvenc";
127e67e8565SEmmanuel Vadot            resets = <&bpmp TEGRA186_RESET_NVENC>;
128e67e8565SEmmanuel Vadot            reset-names = "nvenc";
129e67e8565SEmmanuel Vadot
130e67e8565SEmmanuel Vadot            power-domains = <&bpmp TEGRA186_POWER_DOMAIN_MPE>;
131e67e8565SEmmanuel Vadot            interconnects = <&mc TEGRA186_MEMORY_CLIENT_NVENCSRD &emc>,
132e67e8565SEmmanuel Vadot                            <&mc TEGRA186_MEMORY_CLIENT_NVENCSWR &emc>;
133e67e8565SEmmanuel Vadot            interconnect-names = "dma-mem", "write";
134e67e8565SEmmanuel Vadot            iommus = <&smmu TEGRA186_SID_NVENC>;
135e67e8565SEmmanuel Vadot    };
136