// SPDX-License-Identifier: GPL-2.0 #include #include #include #include #include / { compatible = "nvidia,tegra194"; interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; /* control backbone */ cbb { compatible = "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x0 0x0 0x40000000>; gpio: gpio@2200000 { compatible = "nvidia,tegra194-gpio"; reg-names = "security", "gpio"; reg = <0x2200000 0x10000>, <0x2210000 0x10000>; interrupts = , , , , , ; #interrupt-cells = <2>; interrupt-controller; #gpio-cells = <2>; gpio-controller; }; ethernet@2490000 { compatible = "nvidia,tegra186-eqos", "snps,dwc-qos-ethernet-4.10"; reg = <0x02490000 0x10000>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_AXI_CBB>, <&bpmp TEGRA194_CLK_EQOS_AXI>, <&bpmp TEGRA194_CLK_EQOS_RX>, <&bpmp TEGRA194_CLK_EQOS_TX>, <&bpmp TEGRA194_CLK_EQOS_PTP_REF>; clock-names = "master_bus", "slave_bus", "rx", "tx", "ptp_ref"; resets = <&bpmp TEGRA194_RESET_EQOS>; reset-names = "eqos"; status = "disabled"; snps,write-requests = <1>; snps,read-requests = <3>; snps,burst-map = <0x7>; snps,txpbl = <16>; snps,rxpbl = <8>; }; uarta: serial@3100000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03100000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTA>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTA>; reset-names = "serial"; status = "disabled"; }; uartb: serial@3110000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03110000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTB>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTB>; reset-names = "serial"; status = "disabled"; }; uartd: serial@3130000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03130000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTD>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTD>; reset-names = "serial"; status = "disabled"; }; uarte: serial@3140000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03140000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTE>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTE>; reset-names = "serial"; status = "disabled"; }; uartf: serial@3150000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03150000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTF>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTF>; reset-names = "serial"; status = "disabled"; }; gen1_i2c: i2c@3160000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x03160000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C1>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C1>; reset-names = "i2c"; status = "disabled"; }; uarth: serial@3170000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x03170000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTH>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTH>; reset-names = "serial"; status = "disabled"; }; cam_i2c: i2c@3180000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x03180000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C3>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C3>; reset-names = "i2c"; status = "disabled"; }; /* shares pads with dpaux1 */ dp_aux_ch1_i2c: i2c@3190000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x03190000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C4>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C4>; reset-names = "i2c"; status = "disabled"; }; /* shares pads with dpaux0 */ dp_aux_ch0_i2c: i2c@31b0000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x031b0000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C6>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C6>; reset-names = "i2c"; status = "disabled"; }; gen7_i2c: i2c@31c0000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x031c0000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C7>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C7>; reset-names = "i2c"; status = "disabled"; }; gen9_i2c: i2c@31e0000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x031e0000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C9>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C9>; reset-names = "i2c"; status = "disabled"; }; sdmmc1: sdhci@3400000 { compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03400000 0x10000>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_SDMMC1>; clock-names = "sdhci"; resets = <&bpmp TEGRA194_RESET_SDMMC1>; reset-names = "sdhci"; status = "disabled"; }; sdmmc3: sdhci@3440000 { compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03440000 0x10000>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_SDMMC3>; clock-names = "sdhci"; resets = <&bpmp TEGRA194_RESET_SDMMC3>; reset-names = "sdhci"; status = "disabled"; }; sdmmc4: sdhci@3460000 { compatible = "nvidia,tegra194-sdhci", "nvidia,tegra186-sdhci"; reg = <0x03460000 0x10000>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_SDMMC4>; clock-names = "sdhci"; resets = <&bpmp TEGRA194_RESET_SDMMC4>; reset-names = "sdhci"; status = "disabled"; }; gic: interrupt-controller@3881000 { compatible = "arm,gic-400"; #interrupt-cells = <3>; interrupt-controller; reg = <0x03881000 0x1000>, <0x03882000 0x2000>, <0x03884000 0x2000>, <0x03886000 0x2000>; interrupts = ; interrupt-parent = <&gic>; }; hsp_top0: hsp@3c00000 { compatible = "nvidia,tegra186-hsp"; reg = <0x03c00000 0xa0000>; interrupts = ; interrupt-names = "doorbell"; #mbox-cells = <2>; }; gen2_i2c: i2c@c240000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x0c240000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C2>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C2>; reset-names = "i2c"; status = "disabled"; }; gen8_i2c: i2c@c250000 { compatible = "nvidia,tegra194-i2c", "nvidia,tegra114-i2c"; reg = <0x0c250000 0x10000>; interrupts = ; #address-cells = <1>; #size-cells = <0>; clocks = <&bpmp TEGRA194_CLK_I2C8>; clock-names = "div-clk"; resets = <&bpmp TEGRA194_RESET_I2C8>; reset-names = "i2c"; status = "disabled"; }; uartc: serial@c280000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x0c280000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTC>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTC>; reset-names = "serial"; status = "disabled"; }; uartg: serial@c290000 { compatible = "nvidia,tegra194-uart", "nvidia,tegra20-uart"; reg = <0x0c290000 0x40>; reg-shift = <2>; interrupts = ; clocks = <&bpmp TEGRA194_CLK_UARTG>; clock-names = "serial"; resets = <&bpmp TEGRA194_RESET_UARTG>; reset-names = "serial"; status = "disabled"; }; pmc@c360000 { compatible = "nvidia,tegra194-pmc"; reg = <0x0c360000 0x10000>, <0x0c370000 0x10000>, <0x0c380000 0x10000>, <0x0c390000 0x10000>, <0x0c3a0000 0x10000>; reg-names = "pmc", "wake", "aotag", "scratch", "misc"; }; }; sysram@40000000 { compatible = "nvidia,tegra194-sysram", "mmio-sram"; reg = <0x0 0x40000000 0x0 0x50000>; #address-cells = <1>; #size-cells = <1>; ranges = <0x0 0x0 0x40000000 0x50000>; cpu_bpmp_tx: shmem@4e000 { compatible = "nvidia,tegra194-bpmp-shmem"; reg = <0x4e000 0x1000>; label = "cpu-bpmp-tx"; pool; }; cpu_bpmp_rx: shmem@4f000 { compatible = "nvidia,tegra194-bpmp-shmem"; reg = <0x4f000 0x1000>; label = "cpu-bpmp-rx"; pool; }; }; bpmp: bpmp { compatible = "nvidia,tegra186-bpmp"; mboxes = <&hsp_top0 TEGRA_HSP_MBOX_TYPE_DB TEGRA_HSP_DB_MASTER_BPMP>; shmem = <&cpu_bpmp_tx &cpu_bpmp_rx>; #clock-cells = <1>; #reset-cells = <1>; #power-domain-cells = <1>; bpmp_i2c: i2c { compatible = "nvidia,tegra186-bpmp-i2c"; nvidia,bpmp-bus-id = <5>; #address-cells = <1>; #size-cells = <0>; }; bpmp_thermal: thermal { compatible = "nvidia,tegra186-bpmp-thermal"; #thermal-sensor-cells = <1>; }; }; cpus { #address-cells = <1>; #size-cells = <0>; cpu@0 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x10000>; enable-method = "psci"; }; cpu@1 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x10001>; enable-method = "psci"; }; cpu@2 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x100>; enable-method = "psci"; }; cpu@3 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x101>; enable-method = "psci"; }; cpu@4 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x200>; enable-method = "psci"; }; cpu@5 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x201>; enable-method = "psci"; }; cpu@6 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x10300>; enable-method = "psci"; }; cpu@7 { compatible = "nvidia,tegra194-carmel", "arm,armv8"; device_type = "cpu"; reg = <0x10301>; enable-method = "psci"; }; }; psci { compatible = "arm,psci-1.0"; status = "okay"; method = "smc"; }; timer { compatible = "arm,armv8-timer"; interrupts = , , , ; interrupt-parent = <&gic>; }; };