Kernel-4.18.0-80.el8_nvidia,tegra20-host1x

NVIDIA Tegra host1x

Required properties:

  • compatible: “nvidia,tegra-host1x”
  • reg: Physical base address and length of the controller’s registers.
    For pre-Tegra186, one entry describing the whole register area.
    For Tegra186, one entry for each entry in reg-names:
    “vm” - VM region assigned to Linux
    “hypervisor” - Hypervisor region (only if Linux acts as hypervisor)
  • interrupts: The interrupt outputs from the controller.
  • #address-cells: The number of cells used to represent physical base addresses
    in the host1x address space. Should be 1.
  • #size-cells: The number of cells used to represent the size of an address
    range in the host1x address space. Should be 1.
  • ranges: The mapping of the host1x address space to the CPU address space.
  • clocks: Must contain one entry, for the module clock.
    See ../clocks/clock-bindings.txt for details.
  • resets: Must contain an entry for each entry in reset-names.
    See ../reset/reset.txt for details.
  • reset-names: Must include the following entries:
    • host1x

The host1x top-level node defines a number of children, each representing one
of the following host1x client modules:

  • mpe: video encoder

    Required properties:

    • compatible: “nvidia,tegra-mpe”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • mpe
  • vi: video input

    Required properties:

    • compatible: “nvidia,tegra-vi”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • vi
  • epp: encoder pre-processor

    Required properties:

    • compatible: “nvidia,tegra-epp”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • epp
  • isp: image signal processor

    Required properties:

    • compatible: “nvidia,tegra-isp”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • isp
  • gr2d: 2D graphics engine

    Required properties:

    • compatible: “nvidia,tegra-gr2d”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • 2d
  • gr3d: 3D graphics engine

    Required properties:

    • compatible: “nvidia,tegra-gr3d”
    • reg: Physical base address and length of the controller’s registers.
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      (This property may be omitted if the only clock in the list is “3d”)
      • 3d
        This MUST be the first entry.
      • 3d2 (Only required on SoCs with two 3D clocks)
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • 3d
      • 3d2 (Only required on SoCs with two 3D clocks)
  • dc: display controller

    Required properties:

    • compatible: “nvidia,tegra-dc”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      • dc
        This MUST be the first entry.
      • parent
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • dc
    • nvidia,head: The number of the display controller head. This is used to
      setup the various types of output to receive video data from the given
      head.

    Each display controller node has a child node, named “rgb”, that represents
    the RGB output associated with the controller. It can take the following
    optional properties:

    • nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
    • nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
    • nvidia,edid: supplies a binary EDID blob
    • nvidia,panel: phandle of a display panel
  • hdmi: High Definition Multimedia Interface

    Required properties:

    • compatible: “nvidia,tegra-hdmi”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • hdmi-supply: supply for the +5V HDMI connector pin
    • vdd-supply: regulator for supply voltage
    • pll-supply: regulator for PLL
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      • hdmi
        This MUST be the first entry.
      • parent
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • hdmi

    Optional properties:

    • nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
    • nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
    • nvidia,edid: supplies a binary EDID blob
    • nvidia,panel: phandle of a display panel
  • tvo: TV encoder output

    Required properties:

    • compatible: “nvidia,tegra-tvo”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain one entry, for the module clock.
      See ../clocks/clock-bindings.txt for details.
  • dsi: display serial interface

    Required properties:

    • compatible: “nvidia,tegra-dsi”
    • reg: Physical base address and length of the controller’s registers.
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      • dsi
        This MUST be the first entry.
      • lp
      • parent
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • dsi
    • avdd-dsi-supply: phandle of a supply that powers the DSI controller
    • nvidia,mipi-calibrate: Should contain a phandle and a specifier specifying
      which pads are used by this DSI output and need to be calibrated. See also
      ../display/tegra/nvidia,tegra114-mipi.txt.

    Optional properties:

    • nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
    • nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
    • nvidia,edid: supplies a binary EDID blob
    • nvidia,panel: phandle of a display panel
    • nvidia,ganged-mode: contains a phandle to a second DSI controller to gang
      up with in order to support up to 8 data lanes
  • sor: serial output resource

    Required properties:

    • compatible: Should be:

      • “nvidia,tegra124-sor”: for Tegra124 and Tegra132
      • “nvidia,tegra132-sor”: for Tegra132
      • “nvidia,tegra210-sor”: for Tegra210
      • “nvidia,tegra210-sor1”: for Tegra210
      • “nvidia,tegra186-sor”: for Tegra186
      • “nvidia,tegra186-sor1”: for Tegra186
    • reg: Physical base address and length of the controller’s registers.

    • interrupts: The interrupt outputs from the controller.

    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.

    • clock-names: Must include the following entries:

      • sor: clock input for the SOR hardware
      • out: SOR output clock
      • parent: input for the pixel clock
      • dp: reference clock for the SOR clock
      • safe: safe reference for the SOR clock during power up

      For Tegra186 and later:

      • pad: SOR pad output clock (on Tegra186 and later)

      Obsolete:

      • source: source clock for the SOR clock (obsolete, use “out” instead)
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.

    • reset-names: Must include the following entries:

      • sor

    Required properties on Tegra186 and later:

    • nvidia,interface: index of the SOR interface

    Optional properties:

    • nvidia,ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing
    • nvidia,hpd-gpio: specifies a GPIO used for hotplug detection
    • nvidia,edid: supplies a binary EDID blob
    • nvidia,panel: phandle of a display panel

    Optional properties when driving an eDP output:

    • nvidia,dpaux: phandle to a DispayPort AUX interface
  • dpaux: DisplayPort AUX interface

    • compatible : Should contain one of the following:
      • “nvidia,tegra124-dpaux”: for Tegra124 and Tegra132
      • “nvidia,tegra210-dpaux”: for Tegra210
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      • dpaux: clock input for the DPAUX hardware
      • parent: reference clock
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • dpaux
    • vdd-supply: phandle of a supply that powers the DisplayPort link
    • i2c-bus: Subnode where I2C slave devices are listed. This subnode
      must be always present. If there are no I2C slave devices, an empty
      node should be added. See ../../i2c/i2c.txt for more information.

    See ../pinctrl/nvidia,tegra124-dpaux-padctl.txt for information
    regarding the DPAUX pad controller bindings.

  • vic: Video Image Compositor

    • compatible : “nvidia,tegra-vic”
    • reg: Physical base address and length of the controller’s registers.
    • interrupts: The interrupt outputs from the controller.
    • clocks: Must contain an entry for each entry in clock-names.
      See ../clocks/clock-bindings.txt for details.
    • clock-names: Must include the following entries:
      • vic: clock input for the VIC hardware
    • resets: Must contain an entry for each entry in reset-names.
      See ../reset/reset.txt for details.
    • reset-names: Must include the following entries:
      • vic

Example:

/ {

host1x {
    compatible = "nvidia,tegra20-host1x", "simple-bus";
    reg = <0x50000000 0x00024000>;
    interrupts = <0 65 0x04   /* mpcore syncpt */
              0 67 0x04>; /* mpcore general */
    clocks = <&tegra_car TEGRA20_CLK_HOST1X>;
    resets = <&tegra_car 28>;
    reset-names = "host1x";

    #address-cells = <1>;
    #size-cells = <1>;

    ranges = <0x54000000 0x54000000 0x04000000>;

    mpe {
        compatible = "nvidia,tegra20-mpe";
        reg = <0x54040000 0x00040000>;
        interrupts = <0 68 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_MPE>;
        resets = <&tegra_car 60>;
        reset-names = "mpe";
    };

    vi {
        compatible = "nvidia,tegra20-vi";
        reg = <0x54080000 0x00040000>;
        interrupts = <0 69 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_VI>;
        resets = <&tegra_car 100>;
        reset-names = "vi";
    };

    epp {
        compatible = "nvidia,tegra20-epp";
        reg = <0x540c0000 0x00040000>;
        interrupts = <0 70 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_EPP>;
        resets = <&tegra_car 19>;
        reset-names = "epp";
    };

    isp {
        compatible = "nvidia,tegra20-isp";
        reg = <0x54100000 0x00040000>;
        interrupts = <0 71 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_ISP>;
        resets = <&tegra_car 23>;
        reset-names = "isp";
    };

    gr2d {
        compatible = "nvidia,tegra20-gr2d";
        reg = <0x54140000 0x00040000>;
        interrupts = <0 72 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_GR2D>;
        resets = <&tegra_car 21>;
        reset-names = "2d";
    };

    gr3d {
        compatible = "nvidia,tegra20-gr3d";
        reg = <0x54180000 0x00040000>;
        clocks = <&tegra_car TEGRA20_CLK_GR3D>;
        resets = <&tegra_car 24>;
        reset-names = "3d";
    };

    dc@54200000 {
        compatible = "nvidia,tegra20-dc";
        reg = <0x54200000 0x00040000>;
        interrupts = <0 73 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_DISP1>,
             <&tegra_car TEGRA20_CLK_PLL_P>;
        clock-names = "dc", "parent";
        resets = <&tegra_car 27>;
        reset-names = "dc";

        rgb {
            status = "disabled";
        };
    };

    dc@54240000 {
        compatible = "nvidia,tegra20-dc";
        reg = <0x54240000 0x00040000>;
        interrupts = <0 74 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_DISP2>,
             <&tegra_car TEGRA20_CLK_PLL_P>;
        clock-names = "dc", "parent";
        resets = <&tegra_car 26>;
        reset-names = "dc";

        rgb {
            status = "disabled";
        };
    };

    hdmi {
        compatible = "nvidia,tegra20-hdmi";
        reg = <0x54280000 0x00040000>;
        interrupts = <0 75 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_HDMI>,
             <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
        clock-names = "hdmi", "parent";
        resets = <&tegra_car 51>;
        reset-names = "hdmi";
        status = "disabled";
    };

    tvo {
        compatible = "nvidia,tegra20-tvo";
        reg = <0x542c0000 0x00040000>;
        interrupts = <0 76 0x04>;
        clocks = <&tegra_car TEGRA20_CLK_TVO>;
        status = "disabled";
    };

    dsi {
        compatible = "nvidia,tegra20-dsi";
        reg = <0x54300000 0x00040000>;
        clocks = <&tegra_car TEGRA20_CLK_DSI>,
             <&tegra_car TEGRA20_CLK_PLL_D_OUT0>;
        clock-names = "dsi", "parent";
        resets = <&tegra_car 48>;
        reset-names = "dsi";
        status = "disabled";
    };
};

...

};