# SPDX-License-Identifier: GPL-2.0-only %YAML 1.2 --- $id: http://devicetree.org/schemas/display/tegra/nvidia,tegra20-host1x.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# title: NVIDIA Tegra host1x controller maintainers: - Thierry Reding <thierry.reding@gmail.com> - Jon Hunter <jonathanh@nvidia.com> description: The host1x top-level node defines a number of children, each representing one of the host1x client modules defined in this binding. properties: compatible: oneOf: - enum: - nvidia,tegra20-host1x - nvidia,tegra30-host1x - nvidia,tegra114-host1x - nvidia,tegra124-host1x - nvidia,tegra210-host1x - nvidia,tegra186-host1x - nvidia,tegra194-host1x - nvidia,tegra234-host1x - items: - const: nvidia,tegra132-host1x - const: nvidia,tegra124-host1x reg: minItems: 1 maxItems: 3 reg-names: minItems: 1 maxItems: 3 interrupts: minItems: 1 maxItems: 9 interrupt-names: minItems: 1 maxItems: 9 '#address-cells': description: The number of cells used to represent physical base addresses in the host1x address space. enum: [1, 2] '#size-cells': description: The number of cells used to represent the size of an address range in the host1x address space. enum: [1, 2] ranges: maxItems: 1 clocks: description: Must contain one entry, for the module clock. See ../clocks/clock-bindings.txt for details. clock-names: items: - const: host1x resets: minItems: 1 # MC reset is optional on Tegra186 and later items: - description: module reset - description: memory client hotflush reset reset-names: minItems: 1 # MC reset is optional on Tegra186 and later items: - const: host1x - const: mc iommus: maxItems: 1 interconnects: items: - description: memory read client for host1x interconnect-names: items: - const: dma-mem # read operating-points-v2: true power-domains: items: - description: phandle to the HEG or core power domain required: - compatible - interrupts - interrupt-names - '#address-cells' - '#size-cells' - ranges - reg - clocks - clock-names unevaluatedProperties: type: object allOf: - if: properties: compatible: contains: enum: - nvidia,tegra20-host1x - nvidia,tegra30-host1x - nvidia,tegra114-host1x - nvidia,tegra124-host1x - nvidia,tegra210-host1x then: properties: interrupts: items: - description: host1x syncpoint interrupt - description: host1x general interrupt interrupt-names: items: - const: syncpt - const: host1x required: - resets - reset-names - if: properties: compatible: contains: enum: - nvidia,tegra186-host1x - nvidia,tegra194-host1x then: properties: reg-names: items: - const: hypervisor - const: vm reg: items: - description: region used by the hypervisor - description: region assigned to the virtual machine resets: maxItems: 1 reset-names: maxItems: 1 interrupts: items: - description: host1x syncpoint interrupt - description: host1x general interrupt interrupt-names: items: - const: syncpt - const: host1x iommu-map: description: Specification of stream IDs available for memory context device use. Should be a mapping of IDs 0..n to IOMMU entries corresponding to usable stream IDs. required: - reg-names - if: properties: compatible: contains: enum: - nvidia,tegra234-host1x then: properties: reg-names: items: - const: common - const: hypervisor - const: vm reg: items: - description: region used by host1x server - description: region used by the hypervisor - description: region assigned to the virtual machine interrupts: items: - description: host1x syncpoint interrupt 0 - description: host1x syncpoint interrupt 1 - description: host1x syncpoint interrupt 2 - description: host1x syncpoint interrupt 3 - description: host1x syncpoint interrupt 4 - description: host1x syncpoint interrupt 5 - description: host1x syncpoint interrupt 6 - description: host1x syncpoint interrupt 7 - description: host1x general interrupt interrupt-names: items: - const: syncpt0 - const: syncpt1 - const: syncpt2 - const: syncpt3 - const: syncpt4 - const: syncpt5 - const: syncpt6 - const: syncpt7 - const: host1x iommu-map: description: Specification of stream IDs available for memory context device use. Should be a mapping of IDs 0..n to IOMMU entries corresponding to usable stream IDs. required: - reg-names examples: - | #include <dt-bindings/clock/tegra20-car.h> #include <dt-bindings/gpio/tegra-gpio.h> #include <dt-bindings/memory/tegra20-mc.h> host1x@50000000 { compatible = "nvidia,tegra20-host1x"; reg = <0x50000000 0x00024000>; interrupts = <0 65 0x04>, /* mpcore syncpt */ <0 67 0x04>; /* mpcore general */ interrupt-names = "syncpt", "host1x"; clocks = <&tegra_car TEGRA20_CLK_HOST1X>; clock-names = "host1x"; resets = <&tegra_car 28>, <&mc TEGRA20_MC_RESET_HC>; reset-names = "host1x", "mc"; #address-cells = <1>; #size-cells = <1>; ranges = <0x54000000 0x54000000 0x04000000>; mpe@54040000 { 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@54080000 { 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@540c0000 { 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@54100000 { 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@54140000 { compatible = "nvidia,tegra20-gr2d"; reg = <0x54140000 0x00040000>; interrupts = <0 72 0x04>; clocks = <&tegra_car TEGRA20_CLK_GR2D>; resets = <&tegra_car 21>, <&mc TEGRA20_MC_RESET_2D>; reset-names = "2d", "mc"; }; gr3d@54180000 { compatible = "nvidia,tegra20-gr3d"; reg = <0x54180000 0x00040000>; clocks = <&tegra_car TEGRA20_CLK_GR3D>; resets = <&tegra_car 24>, <&mc TEGRA20_MC_RESET_3D>; reset-names = "3d", "mc"; }; dc@54200000 { compatible = "nvidia,tegra20-dc"; reg = <0x54200000 0x00040000>; interrupts = <0 73 0x04>; clocks = <&tegra_car TEGRA20_CLK_DISP1>; clock-names = "dc"; resets = <&tegra_car 27>; reset-names = "dc"; rgb { }; }; dc@54240000 { compatible = "nvidia,tegra20-dc"; reg = <0x54240000 0x00040000>; interrupts = <0 74 0x04>; clocks = <&tegra_car TEGRA20_CLK_DISP2>; clock-names = "dc"; resets = <&tegra_car 26>; reset-names = "dc"; rgb { }; }; hdmi@54280000 { 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"; hdmi-supply = <&vdd_5v0_hdmi>; pll-supply = <&vdd_hdmi_pll>; vdd-supply = <&vdd_3v3_hdmi>; nvidia,ddc-i2c-bus = <&hdmi_ddc>; nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; }; tvo@542c0000 { compatible = "nvidia,tegra20-tvo"; reg = <0x542c0000 0x00040000>; interrupts = <0 76 0x04>; clocks = <&tegra_car TEGRA20_CLK_TVO>; }; dsi@54300000 { 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"; }; }; - | #include <dt-bindings/clock/tegra210-car.h> #include <dt-bindings/interrupt-controller/arm-gic.h> #include <dt-bindings/memory/tegra210-mc.h> host1x@50000000 { compatible = "nvidia,tegra210-host1x"; reg = <0x50000000 0x00024000>; interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, /* mpcore syncpt */ <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* mpcore general */ interrupt-names = "syncpt", "host1x"; clocks = <&tegra_car TEGRA210_CLK_HOST1X>; clock-names = "host1x"; resets = <&tegra_car 28>; reset-names = "host1x"; #address-cells = <1>; #size-cells = <1>; ranges = <0x54000000 0x54000000 0x01000000>; iommus = <&mc TEGRA_SWGROUP_HC>; vi@54080000 { compatible = "nvidia,tegra210-vi"; reg = <0x54080000 0x00000700>; interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; assigned-clocks = <&tegra_car TEGRA210_CLK_VI>; assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>; clocks = <&tegra_car TEGRA210_CLK_VI>; power-domains = <&pd_venc>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x54080000 0x2000>; csi@838 { compatible = "nvidia,tegra210-csi"; reg = <0x838 0x1300>; assigned-clocks = <&tegra_car TEGRA210_CLK_CILAB>, <&tegra_car TEGRA210_CLK_CILCD>, <&tegra_car TEGRA210_CLK_CILE>, <&tegra_car TEGRA210_CLK_CSI_TPG>; assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_P>, <&tegra_car TEGRA210_CLK_PLL_P>, <&tegra_car TEGRA210_CLK_PLL_P>; assigned-clock-rates = <102000000>, <102000000>, <102000000>, <972000000>; clocks = <&tegra_car TEGRA210_CLK_CSI>, <&tegra_car TEGRA210_CLK_CILAB>, <&tegra_car TEGRA210_CLK_CILCD>, <&tegra_car TEGRA210_CLK_CILE>, <&tegra_car TEGRA210_CLK_CSI_TPG>; clock-names = "csi", "cilab", "cilcd", "cile", "csi_tpg"; power-domains = <&pd_sor>; }; }; };