1*fe8b45aaSThierry Reding# SPDX-License-Identifier: GPL-2.0-only 2*fe8b45aaSThierry Reding%YAML 1.2 3*fe8b45aaSThierry Reding--- 4*fe8b45aaSThierry Reding$id: http://devicetree.org/schemas/display/tegra/nvidia,tegra20-host1x.yaml# 5*fe8b45aaSThierry Reding$schema: http://devicetree.org/meta-schemas/core.yaml# 6*fe8b45aaSThierry Reding 7*fe8b45aaSThierry Redingtitle: NVIDIA Tegra host1x controller 8*fe8b45aaSThierry Reding 9*fe8b45aaSThierry Redingmaintainers: 10*fe8b45aaSThierry Reding - Thierry Reding <thierry.reding@gmail.com> 11*fe8b45aaSThierry Reding - Jon Hunter <jonathanh@nvidia.com> 12*fe8b45aaSThierry Reding 13*fe8b45aaSThierry Redingdescription: The host1x top-level node defines a number of children, each 14*fe8b45aaSThierry Reding representing one of the host1x client modules defined in this binding. 15*fe8b45aaSThierry Reding 16*fe8b45aaSThierry Redingproperties: 17*fe8b45aaSThierry Reding compatible: 18*fe8b45aaSThierry Reding oneOf: 19*fe8b45aaSThierry Reding - enum: 20*fe8b45aaSThierry Reding - nvidia,tegra20-host1x 21*fe8b45aaSThierry Reding - nvidia,tegra30-host1x 22*fe8b45aaSThierry Reding - nvidia,tegra114-host1x 23*fe8b45aaSThierry Reding - nvidia,tegra124-host1x 24*fe8b45aaSThierry Reding - nvidia,tegra210-host1x 25*fe8b45aaSThierry Reding - nvidia,tegra186-host1x 26*fe8b45aaSThierry Reding - nvidia,tegra194-host1x 27*fe8b45aaSThierry Reding 28*fe8b45aaSThierry Reding - items: 29*fe8b45aaSThierry Reding - const: nvidia,tegra132-host1x 30*fe8b45aaSThierry Reding - const: nvidia,tegra124-host1x 31*fe8b45aaSThierry Reding 32*fe8b45aaSThierry Reding reg: 33*fe8b45aaSThierry Reding minItems: 1 34*fe8b45aaSThierry Reding maxItems: 2 35*fe8b45aaSThierry Reding 36*fe8b45aaSThierry Reding reg-names: 37*fe8b45aaSThierry Reding minItems: 1 38*fe8b45aaSThierry Reding maxItems: 2 39*fe8b45aaSThierry Reding 40*fe8b45aaSThierry Reding interrupts: 41*fe8b45aaSThierry Reding items: 42*fe8b45aaSThierry Reding - description: host1x syncpoint interrupt 43*fe8b45aaSThierry Reding - description: host1x general interrupt 44*fe8b45aaSThierry Reding minItems: 1 45*fe8b45aaSThierry Reding 46*fe8b45aaSThierry Reding interrupt-names: 47*fe8b45aaSThierry Reding items: 48*fe8b45aaSThierry Reding - const: syncpt 49*fe8b45aaSThierry Reding - const: host1x 50*fe8b45aaSThierry Reding minItems: 1 51*fe8b45aaSThierry Reding 52*fe8b45aaSThierry Reding '#address-cells': 53*fe8b45aaSThierry Reding description: The number of cells used to represent physical base addresses 54*fe8b45aaSThierry Reding in the host1x address space. 55*fe8b45aaSThierry Reding enum: [1, 2] 56*fe8b45aaSThierry Reding 57*fe8b45aaSThierry Reding '#size-cells': 58*fe8b45aaSThierry Reding description: The number of cells used to represent the size of an address 59*fe8b45aaSThierry Reding range in the host1x address space. 60*fe8b45aaSThierry Reding enum: [1, 2] 61*fe8b45aaSThierry Reding 62*fe8b45aaSThierry Reding ranges: 63*fe8b45aaSThierry Reding maxItems: 1 64*fe8b45aaSThierry Reding 65*fe8b45aaSThierry Reding clocks: 66*fe8b45aaSThierry Reding description: Must contain one entry, for the module clock. See 67*fe8b45aaSThierry Reding ../clocks/clock-bindings.txt for details. 68*fe8b45aaSThierry Reding 69*fe8b45aaSThierry Reding clock-names: 70*fe8b45aaSThierry Reding items: 71*fe8b45aaSThierry Reding - const: host1x 72*fe8b45aaSThierry Reding 73*fe8b45aaSThierry Reding resets: 74*fe8b45aaSThierry Reding minItems: 1 # MC reset is optional on Tegra186 and later 75*fe8b45aaSThierry Reding items: 76*fe8b45aaSThierry Reding - description: module reset 77*fe8b45aaSThierry Reding - description: memory client hotflush reset 78*fe8b45aaSThierry Reding 79*fe8b45aaSThierry Reding reset-names: 80*fe8b45aaSThierry Reding minItems: 1 # MC reset is optional on Tegra186 and later 81*fe8b45aaSThierry Reding items: 82*fe8b45aaSThierry Reding - const: host1x 83*fe8b45aaSThierry Reding - const: mc 84*fe8b45aaSThierry Reding 85*fe8b45aaSThierry Reding iommus: 86*fe8b45aaSThierry Reding maxItems: 1 87*fe8b45aaSThierry Reding 88*fe8b45aaSThierry Reding interconnects: 89*fe8b45aaSThierry Reding items: 90*fe8b45aaSThierry Reding - description: memory read client for host1x 91*fe8b45aaSThierry Reding 92*fe8b45aaSThierry Reding interconnect-names: 93*fe8b45aaSThierry Reding items: 94*fe8b45aaSThierry Reding - const: dma-mem # read 95*fe8b45aaSThierry Reding 96*fe8b45aaSThierry Reding operating-points-v2: 97*fe8b45aaSThierry Reding $ref: "/schemas/types.yaml#/definitions/phandle" 98*fe8b45aaSThierry Reding 99*fe8b45aaSThierry Reding power-domains: 100*fe8b45aaSThierry Reding items: 101*fe8b45aaSThierry Reding - description: phandle to the HEG or core power domain 102*fe8b45aaSThierry Reding 103*fe8b45aaSThierry Redingrequired: 104*fe8b45aaSThierry Reding - compatible 105*fe8b45aaSThierry Reding - interrupts 106*fe8b45aaSThierry Reding - interrupt-names 107*fe8b45aaSThierry Reding - '#address-cells' 108*fe8b45aaSThierry Reding - '#size-cells' 109*fe8b45aaSThierry Reding - ranges 110*fe8b45aaSThierry Reding - reg 111*fe8b45aaSThierry Reding - clocks 112*fe8b45aaSThierry Reding - clock-names 113*fe8b45aaSThierry Reding - resets 114*fe8b45aaSThierry Reding - reset-names 115*fe8b45aaSThierry Reding 116*fe8b45aaSThierry RedingunevaluatedProperties: 117*fe8b45aaSThierry Reding type: object 118*fe8b45aaSThierry Reding 119*fe8b45aaSThierry RedingallOf: 120*fe8b45aaSThierry Reding - if: 121*fe8b45aaSThierry Reding properties: 122*fe8b45aaSThierry Reding compatible: 123*fe8b45aaSThierry Reding contains: 124*fe8b45aaSThierry Reding enum: 125*fe8b45aaSThierry Reding - nvidia,tegra186-host1x 126*fe8b45aaSThierry Reding - nvidia,tegra194-host1x 127*fe8b45aaSThierry Reding then: 128*fe8b45aaSThierry Reding properties: 129*fe8b45aaSThierry Reding reg-names: 130*fe8b45aaSThierry Reding items: 131*fe8b45aaSThierry Reding - const: hypervisor 132*fe8b45aaSThierry Reding - const: vm 133*fe8b45aaSThierry Reding 134*fe8b45aaSThierry Reding reg: 135*fe8b45aaSThierry Reding items: 136*fe8b45aaSThierry Reding - description: physical base address and length of the register 137*fe8b45aaSThierry Reding region assigned to the VM 138*fe8b45aaSThierry Reding - description: physical base address and length of the register 139*fe8b45aaSThierry Reding region used by the hypervisor 140*fe8b45aaSThierry Reding 141*fe8b45aaSThierry Reding resets: 142*fe8b45aaSThierry Reding maxItems: 1 143*fe8b45aaSThierry Reding 144*fe8b45aaSThierry Reding reset-names: 145*fe8b45aaSThierry Reding maxItems: 1 146*fe8b45aaSThierry Reding 147*fe8b45aaSThierry Reding required: 148*fe8b45aaSThierry Reding - reg-names 149*fe8b45aaSThierry Reding 150*fe8b45aaSThierry Redingexamples: 151*fe8b45aaSThierry Reding - | 152*fe8b45aaSThierry Reding #include <dt-bindings/clock/tegra20-car.h> 153*fe8b45aaSThierry Reding #include <dt-bindings/gpio/tegra-gpio.h> 154*fe8b45aaSThierry Reding #include <dt-bindings/memory/tegra20-mc.h> 155*fe8b45aaSThierry Reding 156*fe8b45aaSThierry Reding host1x@50000000 { 157*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-host1x"; 158*fe8b45aaSThierry Reding reg = <0x50000000 0x00024000>; 159*fe8b45aaSThierry Reding interrupts = <0 65 0x04 /* mpcore syncpt */ 160*fe8b45aaSThierry Reding 0 67 0x04>; /* mpcore general */ 161*fe8b45aaSThierry Reding interrupt-names = "syncpt", "host1x"; 162*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_HOST1X>; 163*fe8b45aaSThierry Reding clock-names = "host1x"; 164*fe8b45aaSThierry Reding resets = <&tegra_car 28>, <&mc TEGRA20_MC_RESET_HC>; 165*fe8b45aaSThierry Reding reset-names = "host1x", "mc"; 166*fe8b45aaSThierry Reding 167*fe8b45aaSThierry Reding #address-cells = <1>; 168*fe8b45aaSThierry Reding #size-cells = <1>; 169*fe8b45aaSThierry Reding 170*fe8b45aaSThierry Reding ranges = <0x54000000 0x54000000 0x04000000>; 171*fe8b45aaSThierry Reding 172*fe8b45aaSThierry Reding mpe@54040000 { 173*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-mpe"; 174*fe8b45aaSThierry Reding reg = <0x54040000 0x00040000>; 175*fe8b45aaSThierry Reding interrupts = <0 68 0x04>; 176*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_MPE>; 177*fe8b45aaSThierry Reding resets = <&tegra_car 60>; 178*fe8b45aaSThierry Reding reset-names = "mpe"; 179*fe8b45aaSThierry Reding }; 180*fe8b45aaSThierry Reding 181*fe8b45aaSThierry Reding vi@54080000 { 182*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-vi"; 183*fe8b45aaSThierry Reding reg = <0x54080000 0x00040000>; 184*fe8b45aaSThierry Reding interrupts = <0 69 0x04>; 185*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_VI>; 186*fe8b45aaSThierry Reding resets = <&tegra_car 100>; 187*fe8b45aaSThierry Reding reset-names = "vi"; 188*fe8b45aaSThierry Reding }; 189*fe8b45aaSThierry Reding 190*fe8b45aaSThierry Reding epp@540c0000 { 191*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-epp"; 192*fe8b45aaSThierry Reding reg = <0x540c0000 0x00040000>; 193*fe8b45aaSThierry Reding interrupts = <0 70 0x04>; 194*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_EPP>; 195*fe8b45aaSThierry Reding resets = <&tegra_car 19>; 196*fe8b45aaSThierry Reding reset-names = "epp"; 197*fe8b45aaSThierry Reding }; 198*fe8b45aaSThierry Reding 199*fe8b45aaSThierry Reding isp@54100000 { 200*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-isp"; 201*fe8b45aaSThierry Reding reg = <0x54100000 0x00040000>; 202*fe8b45aaSThierry Reding interrupts = <0 71 0x04>; 203*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_ISP>; 204*fe8b45aaSThierry Reding resets = <&tegra_car 23>; 205*fe8b45aaSThierry Reding reset-names = "isp"; 206*fe8b45aaSThierry Reding }; 207*fe8b45aaSThierry Reding 208*fe8b45aaSThierry Reding gr2d@54140000 { 209*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-gr2d"; 210*fe8b45aaSThierry Reding reg = <0x54140000 0x00040000>; 211*fe8b45aaSThierry Reding interrupts = <0 72 0x04>; 212*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_GR2D>; 213*fe8b45aaSThierry Reding resets = <&tegra_car 21>, <&mc TEGRA20_MC_RESET_2D>; 214*fe8b45aaSThierry Reding reset-names = "2d", "mc"; 215*fe8b45aaSThierry Reding }; 216*fe8b45aaSThierry Reding 217*fe8b45aaSThierry Reding gr3d@54180000 { 218*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-gr3d"; 219*fe8b45aaSThierry Reding reg = <0x54180000 0x00040000>; 220*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_GR3D>; 221*fe8b45aaSThierry Reding resets = <&tegra_car 24>, <&mc TEGRA20_MC_RESET_3D>; 222*fe8b45aaSThierry Reding reset-names = "3d", "mc"; 223*fe8b45aaSThierry Reding }; 224*fe8b45aaSThierry Reding 225*fe8b45aaSThierry Reding dc@54200000 { 226*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-dc"; 227*fe8b45aaSThierry Reding reg = <0x54200000 0x00040000>; 228*fe8b45aaSThierry Reding interrupts = <0 73 0x04>; 229*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_DISP1>; 230*fe8b45aaSThierry Reding clock-names = "dc"; 231*fe8b45aaSThierry Reding resets = <&tegra_car 27>; 232*fe8b45aaSThierry Reding reset-names = "dc"; 233*fe8b45aaSThierry Reding 234*fe8b45aaSThierry Reding rgb { 235*fe8b45aaSThierry Reding }; 236*fe8b45aaSThierry Reding }; 237*fe8b45aaSThierry Reding 238*fe8b45aaSThierry Reding dc@54240000 { 239*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-dc"; 240*fe8b45aaSThierry Reding reg = <0x54240000 0x00040000>; 241*fe8b45aaSThierry Reding interrupts = <0 74 0x04>; 242*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_DISP2>; 243*fe8b45aaSThierry Reding clock-names = "dc"; 244*fe8b45aaSThierry Reding resets = <&tegra_car 26>; 245*fe8b45aaSThierry Reding reset-names = "dc"; 246*fe8b45aaSThierry Reding 247*fe8b45aaSThierry Reding rgb { 248*fe8b45aaSThierry Reding }; 249*fe8b45aaSThierry Reding }; 250*fe8b45aaSThierry Reding 251*fe8b45aaSThierry Reding hdmi@54280000 { 252*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-hdmi"; 253*fe8b45aaSThierry Reding reg = <0x54280000 0x00040000>; 254*fe8b45aaSThierry Reding interrupts = <0 75 0x04>; 255*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_HDMI>, 256*fe8b45aaSThierry Reding <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; 257*fe8b45aaSThierry Reding clock-names = "hdmi", "parent"; 258*fe8b45aaSThierry Reding resets = <&tegra_car 51>; 259*fe8b45aaSThierry Reding reset-names = "hdmi"; 260*fe8b45aaSThierry Reding 261*fe8b45aaSThierry Reding hdmi-supply = <&vdd_5v0_hdmi>; 262*fe8b45aaSThierry Reding pll-supply = <&vdd_hdmi_pll>; 263*fe8b45aaSThierry Reding vdd-supply = <&vdd_3v3_hdmi>; 264*fe8b45aaSThierry Reding 265*fe8b45aaSThierry Reding nvidia,ddc-i2c-bus = <&hdmi_ddc>; 266*fe8b45aaSThierry Reding nvidia,hpd-gpio = <&gpio TEGRA_GPIO(N, 7) GPIO_ACTIVE_HIGH>; 267*fe8b45aaSThierry Reding }; 268*fe8b45aaSThierry Reding 269*fe8b45aaSThierry Reding tvo@542c0000 { 270*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-tvo"; 271*fe8b45aaSThierry Reding reg = <0x542c0000 0x00040000>; 272*fe8b45aaSThierry Reding interrupts = <0 76 0x04>; 273*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_TVO>; 274*fe8b45aaSThierry Reding }; 275*fe8b45aaSThierry Reding 276*fe8b45aaSThierry Reding dsi@54300000 { 277*fe8b45aaSThierry Reding compatible = "nvidia,tegra20-dsi"; 278*fe8b45aaSThierry Reding reg = <0x54300000 0x00040000>; 279*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA20_CLK_DSI>, 280*fe8b45aaSThierry Reding <&tegra_car TEGRA20_CLK_PLL_D_OUT0>; 281*fe8b45aaSThierry Reding clock-names = "dsi", "parent"; 282*fe8b45aaSThierry Reding resets = <&tegra_car 48>; 283*fe8b45aaSThierry Reding reset-names = "dsi"; 284*fe8b45aaSThierry Reding }; 285*fe8b45aaSThierry Reding }; 286*fe8b45aaSThierry Reding 287*fe8b45aaSThierry Reding - | 288*fe8b45aaSThierry Reding #include <dt-bindings/clock/tegra210-car.h> 289*fe8b45aaSThierry Reding #include <dt-bindings/interrupt-controller/arm-gic.h> 290*fe8b45aaSThierry Reding #include <dt-bindings/memory/tegra210-mc.h> 291*fe8b45aaSThierry Reding 292*fe8b45aaSThierry Reding host1x@50000000 { 293*fe8b45aaSThierry Reding compatible = "nvidia,tegra210-host1x"; 294*fe8b45aaSThierry Reding reg = <0x50000000 0x00024000>; 295*fe8b45aaSThierry Reding interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>, /* mpcore syncpt */ 296*fe8b45aaSThierry Reding <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>; /* mpcore general */ 297*fe8b45aaSThierry Reding interrupt-names = "syncpt", "host1x"; 298*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA210_CLK_HOST1X>; 299*fe8b45aaSThierry Reding clock-names = "host1x"; 300*fe8b45aaSThierry Reding resets = <&tegra_car 28>; 301*fe8b45aaSThierry Reding reset-names = "host1x"; 302*fe8b45aaSThierry Reding 303*fe8b45aaSThierry Reding #address-cells = <1>; 304*fe8b45aaSThierry Reding #size-cells = <1>; 305*fe8b45aaSThierry Reding 306*fe8b45aaSThierry Reding ranges = <0x54000000 0x54000000 0x01000000>; 307*fe8b45aaSThierry Reding iommus = <&mc TEGRA_SWGROUP_HC>; 308*fe8b45aaSThierry Reding 309*fe8b45aaSThierry Reding vi@54080000 { 310*fe8b45aaSThierry Reding compatible = "nvidia,tegra210-vi"; 311*fe8b45aaSThierry Reding reg = <0x54080000 0x00000700>; 312*fe8b45aaSThierry Reding interrupts = <GIC_SPI 69 IRQ_TYPE_LEVEL_HIGH>; 313*fe8b45aaSThierry Reding assigned-clocks = <&tegra_car TEGRA210_CLK_VI>; 314*fe8b45aaSThierry Reding assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_C4_OUT0>; 315*fe8b45aaSThierry Reding 316*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA210_CLK_VI>; 317*fe8b45aaSThierry Reding power-domains = <&pd_venc>; 318*fe8b45aaSThierry Reding 319*fe8b45aaSThierry Reding #address-cells = <1>; 320*fe8b45aaSThierry Reding #size-cells = <1>; 321*fe8b45aaSThierry Reding 322*fe8b45aaSThierry Reding ranges = <0x0 0x54080000 0x2000>; 323*fe8b45aaSThierry Reding 324*fe8b45aaSThierry Reding csi@838 { 325*fe8b45aaSThierry Reding compatible = "nvidia,tegra210-csi"; 326*fe8b45aaSThierry Reding reg = <0x838 0x1300>; 327*fe8b45aaSThierry Reding assigned-clocks = <&tegra_car TEGRA210_CLK_CILAB>, 328*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CILCD>, 329*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CILE>, 330*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CSI_TPG>; 331*fe8b45aaSThierry Reding assigned-clock-parents = <&tegra_car TEGRA210_CLK_PLL_P>, 332*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_PLL_P>, 333*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_PLL_P>; 334*fe8b45aaSThierry Reding assigned-clock-rates = <102000000>, 335*fe8b45aaSThierry Reding <102000000>, 336*fe8b45aaSThierry Reding <102000000>, 337*fe8b45aaSThierry Reding <972000000>; 338*fe8b45aaSThierry Reding 339*fe8b45aaSThierry Reding clocks = <&tegra_car TEGRA210_CLK_CSI>, 340*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CILAB>, 341*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CILCD>, 342*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CILE>, 343*fe8b45aaSThierry Reding <&tegra_car TEGRA210_CLK_CSI_TPG>; 344*fe8b45aaSThierry Reding clock-names = "csi", "cilab", "cilcd", "cile", "csi_tpg"; 345*fe8b45aaSThierry Reding power-domains = <&pd_sor>; 346*fe8b45aaSThierry Reding }; 347*fe8b45aaSThierry Reding }; 348*fe8b45aaSThierry Reding }; 349