Documentation / devicetree / bindings / gpu / host1x / nvidia,tegra210-nvenc.yaml


Based on kernel version 6.8. Page generated on 2024-03-11 21:26 EST.

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: 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>;
    };