# 0 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" # 0 "" # 0 "" # 1 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" /dts-v1/; # 1 "./scripts/dtc/include-prefixes/dt-bindings/input/linux-event-codes.h" 1 # 8 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/pwm/pwm.h" 1 # 9 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/usb/pd.h" 1 # 10 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" 2 # 1 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 1 # 1 "./scripts/dtc/include-prefixes/dt-bindings/clock/rk3399-cru.h" 1 # 7 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/gpio/gpio.h" 1 # 8 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/interrupt-controller/arm-gic.h" 1 # 9 "./scripts/dtc/include-prefixes/dt-bindings/interrupt-controller/arm-gic.h" # 1 "./scripts/dtc/include-prefixes/dt-bindings/interrupt-controller/irq.h" 1 # 10 "./scripts/dtc/include-prefixes/dt-bindings/interrupt-controller/arm-gic.h" 2 # 9 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/pinctrl/rockchip.h" 1 # 11 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/power/rk3399-power.h" 1 # 12 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 # 1 "./scripts/dtc/include-prefixes/dt-bindings/thermal/thermal.h" 1 # 13 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" 2 / { compatible = "rockchip,rk3399"; interrupt-parent = <&gic>; #address-cells = <2>; #size-cells = <2>; aliases { ethernet0 = &gmac; i2c0 = &i2c0; i2c1 = &i2c1; i2c2 = &i2c2; i2c3 = &i2c3; i2c4 = &i2c4; i2c5 = &i2c5; i2c6 = &i2c6; i2c7 = &i2c7; i2c8 = &i2c8; serial0 = &uart0; serial1 = &uart1; serial2 = &uart2; serial3 = &uart3; serial4 = &uart4; }; cpus { #address-cells = <2>; #size-cells = <0>; cpu-map { cluster0 { core0 { cpu = <&cpu_l0>; }; core1 { cpu = <&cpu_l1>; }; core2 { cpu = <&cpu_l2>; }; core3 { cpu = <&cpu_l3>; }; }; cluster1 { core0 { cpu = <&cpu_b0>; }; core1 { cpu = <&cpu_b1>; }; }; }; cpu_l0: cpu@0 { device_type = "cpu"; compatible = "arm,cortex-a53"; reg = <0x0 0x0>; enable-method = "psci"; capacity-dmips-mhz = <485>; clocks = <&cru 8>; #cooling-cells = <2>; dynamic-power-coefficient = <100>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; }; cpu_l1: cpu@1 { device_type = "cpu"; compatible = "arm,cortex-a53"; reg = <0x0 0x1>; enable-method = "psci"; capacity-dmips-mhz = <485>; clocks = <&cru 8>; #cooling-cells = <2>; dynamic-power-coefficient = <100>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; }; cpu_l2: cpu@2 { device_type = "cpu"; compatible = "arm,cortex-a53"; reg = <0x0 0x2>; enable-method = "psci"; capacity-dmips-mhz = <485>; clocks = <&cru 8>; #cooling-cells = <2>; dynamic-power-coefficient = <100>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; }; cpu_l3: cpu@3 { device_type = "cpu"; compatible = "arm,cortex-a53"; reg = <0x0 0x3>; enable-method = "psci"; capacity-dmips-mhz = <485>; clocks = <&cru 8>; #cooling-cells = <2>; dynamic-power-coefficient = <100>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; }; cpu_b0: cpu@100 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x100>; enable-method = "psci"; capacity-dmips-mhz = <1024>; clocks = <&cru 9>; #cooling-cells = <2>; dynamic-power-coefficient = <436>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; thermal-idle { #cooling-cells = <2>; duration-us = <10000>; exit-latency-us = <500>; }; }; cpu_b1: cpu@101 { device_type = "cpu"; compatible = "arm,cortex-a72"; reg = <0x0 0x101>; enable-method = "psci"; capacity-dmips-mhz = <1024>; clocks = <&cru 9>; #cooling-cells = <2>; dynamic-power-coefficient = <436>; cpu-idle-states = <&CPU_SLEEP &CLUSTER_SLEEP>; thermal-idle { #cooling-cells = <2>; duration-us = <10000>; exit-latency-us = <500>; }; }; idle-states { entry-method = "psci"; CPU_SLEEP: cpu-sleep { compatible = "arm,idle-state"; local-timer-stop; arm,psci-suspend-param = <0x0010000>; entry-latency-us = <120>; exit-latency-us = <250>; min-residency-us = <900>; }; CLUSTER_SLEEP: cluster-sleep { compatible = "arm,idle-state"; local-timer-stop; arm,psci-suspend-param = <0x1010000>; entry-latency-us = <400>; exit-latency-us = <500>; min-residency-us = <2000>; }; }; }; display-subsystem { compatible = "rockchip,display-subsystem"; ports = <&vopl_out>, <&vopb_out>; }; dmc: memory-controller { compatible = "rockchip,rk3399-dmc"; rockchip,pmu = <&pmugrf>; devfreq-events = <&dfi>; clocks = <&cru 168>; clock-names = "dmc_clk"; status = "disabled"; }; pmu_a53 { compatible = "arm,cortex-a53-pmu"; interrupts = <1 7 8 &ppi_cluster0>; }; pmu_a72 { compatible = "arm,cortex-a72-pmu"; interrupts = <1 7 8 &ppi_cluster1>; }; psci { compatible = "arm,psci-1.0"; method = "smc"; }; timer { compatible = "arm,armv8-timer"; interrupts = <1 13 8 0>, <1 14 8 0>, <1 11 8 0>, <1 10 8 0>; arm,no-tick-in-suspend; }; xin24m: xin24m { compatible = "fixed-clock"; clock-frequency = <24000000>; clock-output-names = "xin24m"; #clock-cells = <0>; }; pcie0: pcie@f8000000 { compatible = "rockchip,rk3399-pcie"; reg = <0x0 0xf8000000 0x0 0x2000000>, <0x0 0xfd000000 0x0 0x1000000>; reg-names = "axi-base", "apb-base"; device_type = "pci"; #address-cells = <3>; #size-cells = <2>; #interrupt-cells = <1>; aspm-no-l0s; bus-range = <0x0 0x1f>; clocks = <&cru 197>, <&cru 196>, <&cru 327>, <&cru 160>; clock-names = "aclk", "aclk-perf", "hclk", "pm"; interrupts = <0 49 4 0>, <0 50 4 0>, <0 51 4 0>; interrupt-names = "sys", "legacy", "client"; interrupt-map-mask = <0 0 0 7>; interrupt-map = <0 0 0 1 &pcie0_intc 0>, <0 0 0 2 &pcie0_intc 1>, <0 0 0 3 &pcie0_intc 2>, <0 0 0 4 &pcie0_intc 3>; max-link-speed = <1>; msi-map = <0x0 &its 0x0 0x1000>; phys = <&pcie_phy 0>, <&pcie_phy 1>, <&pcie_phy 2>, <&pcie_phy 3>; phy-names = "pcie-phy-0", "pcie-phy-1", "pcie-phy-2", "pcie-phy-3"; ranges = <0x82000000 0x0 0xfa000000 0x0 0xfa000000 0x0 0x1e00000>, <0x81000000 0x0 0xfbe00000 0x0 0xfbe00000 0x0 0x100000>; resets = <&cru 130>, <&cru 131>, <&cru 132>, <&cru 133>, <&cru 134>, <&cru 129>, <&cru 128>; reset-names = "core", "mgmt", "mgmt-sticky", "pipe", "pm", "pclk", "aclk"; status = "disabled"; pcie0_intc: interrupt-controller { interrupt-controller; #address-cells = <0>; #interrupt-cells = <1>; }; }; pcie0_ep: pcie-ep@f8000000 { compatible = "rockchip,rk3399-pcie-ep"; reg = <0x0 0xfd000000 0x0 0x1000000>, <0x0 0xfa000000 0x0 0x2000000>; reg-names = "apb-base", "mem-base"; clocks = <&cru 197>, <&cru 196>, <&cru 327>, <&cru 160>; clock-names = "aclk", "aclk-perf", "hclk", "pm"; max-functions = /bits/ 8 <8>; num-lanes = <4>; resets = <&cru 130>, <&cru 131>, <&cru 132>, <&cru 133>, <&cru 134>, <&cru 129>, <&cru 128>; reset-names = "core", "mgmt", "mgmt-sticky", "pipe", "pm", "pclk", "aclk"; phys = <&pcie_phy 0>, <&pcie_phy 1>, <&pcie_phy 2>, <&pcie_phy 3>; phy-names = "pcie-phy-0", "pcie-phy-1", "pcie-phy-2", "pcie-phy-3"; rockchip,max-outbound-regions = <32>; pinctrl-names = "default"; pinctrl-0 = <&pcie_clkreqnb_cpm>; status = "disabled"; }; gmac: ethernet@fe300000 { compatible = "rockchip,rk3399-gmac"; reg = <0x0 0xfe300000 0x0 0x10000>; interrupts = <0 12 4 0>; interrupt-names = "macirq"; clocks = <&cru 105>, <&cru 103>, <&cru 104>, <&cru 102>, <&cru 106>, <&cru 213>, <&cru 358>; clock-names = "stmmaceth", "mac_clk_rx", "mac_clk_tx", "clk_mac_ref", "clk_mac_refout", "aclk_mac", "pclk_mac"; power-domains = <&power 22>; resets = <&cru 137>; reset-names = "stmmaceth"; rockchip,grf = <&grf>; snps,txpbl = <0x4>; status = "disabled"; }; sdio0: mmc@fe310000 { compatible = "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc"; reg = <0x0 0xfe310000 0x0 0x4000>; interrupts = <0 64 4 0>; max-frequency = <150000000>; clocks = <&cru 494>, <&cru 77>, <&cru 156>, <&cru 157>; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; power-domains = <&power 28>; resets = <&cru 121>; reset-names = "reset"; status = "disabled"; }; sdmmc: mmc@fe320000 { compatible = "rockchip,rk3399-dw-mshc", "rockchip,rk3288-dw-mshc"; reg = <0x0 0xfe320000 0x0 0x4000>; interrupts = <0 65 4 0>; max-frequency = <150000000>; assigned-clocks = <&cru 461>; assigned-clock-rates = <200000000>; clocks = <&cru 462>, <&cru 76>, <&cru 154>, <&cru 155>; clock-names = "biu", "ciu", "ciu-drive", "ciu-sample"; fifo-depth = <0x100>; power-domains = <&power 27>; resets = <&cru 122>; reset-names = "reset"; status = "disabled"; }; sdhci: mmc@fe330000 { compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1"; reg = <0x0 0xfe330000 0x0 0x10000>; interrupts = <0 11 4 0>; arasan,soc-ctl-syscon = <&grf>; assigned-clocks = <&cru 78>; assigned-clock-rates = <200000000>; clocks = <&cru 78>, <&cru 240>; clock-names = "clk_xin", "clk_ahb"; clock-output-names = "emmc_cardclock"; #clock-cells = <0>; phys = <&emmc_phy>; phy-names = "phy_arasan"; power-domains = <&power 23>; disable-cqe-dcmd; status = "disabled"; }; usb_host0_ehci: usb@fe380000 { compatible = "generic-ehci"; reg = <0x0 0xfe380000 0x0 0x20000>; interrupts = <0 26 4 0>; clocks = <&cru 456>, <&cru 457>, <&u2phy0>; phys = <&u2phy0_host>; phy-names = "usb"; status = "disabled"; }; usb_host0_ohci: usb@fe3a0000 { compatible = "generic-ohci"; reg = <0x0 0xfe3a0000 0x0 0x20000>; interrupts = <0 28 4 0>; clocks = <&cru 456>, <&cru 457>, <&u2phy0>; phys = <&u2phy0_host>; phy-names = "usb"; status = "disabled"; }; usb_host1_ehci: usb@fe3c0000 { compatible = "generic-ehci"; reg = <0x0 0xfe3c0000 0x0 0x20000>; interrupts = <0 30 4 0>; clocks = <&cru 458>, <&cru 459>, <&u2phy1>; phys = <&u2phy1_host>; phy-names = "usb"; status = "disabled"; }; usb_host1_ohci: usb@fe3e0000 { compatible = "generic-ohci"; reg = <0x0 0xfe3e0000 0x0 0x20000>; interrupts = <0 32 4 0>; clocks = <&cru 458>, <&cru 459>, <&u2phy1>; phys = <&u2phy1_host>; phy-names = "usb"; status = "disabled"; }; # 462 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" usbdrd3_0: usb@fe800000 { compatible = "rockchip,rk3399-dwc3"; #address-cells = <2>; #size-cells = <2>; ranges; clocks = <&cru 129>, <&cru 131>, <&cru 246>, <&cru 248>, <&cru 244>, <&cru 249>; clock-names = "ref_clk", "suspend_clk", "bus_clk", "aclk_usb3_rksoc_axi_perf", "aclk_usb3", "grf_clk"; resets = <&cru 293>; reset-names = "usb3-otg"; status = "disabled"; usbdrd_dwc3_0: usb@fe800000 { compatible = "snps,dwc3"; reg = <0x0 0xfe800000 0x0 0x100000>; interrupts = <0 105 4 0>; clocks = <&cru 129>, <&cru 246>, <&cru 131>; clock-names = "ref", "bus_early", "suspend"; dr_mode = "otg"; phys = <&u2phy0_otg>, <&tcphy0_usb3>; phy-names = "usb2-phy", "usb3-phy"; phy_type = "utmi_wide"; snps,dis_enblslpm_quirk; snps,dis-u2-freeclk-exists-quirk; snps,dis_u2_susphy_quirk; snps,dis-del-phy-power-chg-quirk; snps,dis-tx-ipgap-linecheck-quirk; power-domains = <&power 24>; status = "disabled"; }; }; usbdrd3_1: usb@fe900000 { compatible = "rockchip,rk3399-dwc3"; #address-cells = <2>; #size-cells = <2>; ranges; clocks = <&cru 130>, <&cru 132>, <&cru 247>, <&cru 248>, <&cru 244>, <&cru 249>; clock-names = "ref_clk", "suspend_clk", "bus_clk", "aclk_usb3_rksoc_axi_perf", "aclk_usb3", "grf_clk"; resets = <&cru 294>; reset-names = "usb3-otg"; status = "disabled"; usbdrd_dwc3_1: usb@fe900000 { compatible = "snps,dwc3"; reg = <0x0 0xfe900000 0x0 0x100000>; interrupts = <0 110 4 0>; clocks = <&cru 130>, <&cru 247>, <&cru 132>; clock-names = "ref", "bus_early", "suspend"; dr_mode = "otg"; phys = <&u2phy1_otg>, <&tcphy1_usb3>; phy-names = "usb2-phy", "usb3-phy"; phy_type = "utmi_wide"; snps,dis_enblslpm_quirk; snps,dis-u2-freeclk-exists-quirk; snps,dis_u2_susphy_quirk; snps,dis-del-phy-power-chg-quirk; snps,dis-tx-ipgap-linecheck-quirk; power-domains = <&power 24>; status = "disabled"; }; }; cdn_dp: dp@fec00000 { compatible = "rockchip,rk3399-cdn-dp"; reg = <0x0 0xfec00000 0x0 0x100000>; interrupts = <0 9 4 0>; assigned-clocks = <&cru 114>, <&cru 161>; assigned-clock-rates = <100000000>, <200000000>; clocks = <&cru 114>, <&cru 373>, <&cru 161>, <&cru 367>; clock-names = "core-clk", "pclk", "spdif", "grf"; phys = <&tcphy0_dp>, <&tcphy1_dp>; power-domains = <&power 21>; resets = <&cru 259>, <&cru 328>, <&cru 330>, <&cru 253>; reset-names = "spdif", "dptx", "apb", "core"; rockchip,grf = <&grf>; #sound-dai-cells = <1>; status = "disabled"; ports { dp_in: port { #address-cells = <1>; #size-cells = <0>; dp_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_dp>; }; dp_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_dp>; }; }; }; }; gic: interrupt-controller@fee00000 { compatible = "arm,gic-v3"; #interrupt-cells = <4>; #address-cells = <2>; #size-cells = <2>; ranges; interrupt-controller; reg = <0x0 0xfee00000 0 0x10000>, <0x0 0xfef00000 0 0xc0000>, <0x0 0xfff00000 0 0x10000>, <0x0 0xfff10000 0 0x10000>, <0x0 0xfff20000 0 0x10000>; interrupts = <1 9 4 0>; its: msi-controller@fee20000 { compatible = "arm,gic-v3-its"; msi-controller; #msi-cells = <1>; reg = <0x0 0xfee20000 0x0 0x20000>; }; ppi-partitions { ppi_cluster0: interrupt-partition-0 { affinity = <&cpu_l0 &cpu_l1 &cpu_l2 &cpu_l3>; }; ppi_cluster1: interrupt-partition-1 { affinity = <&cpu_b0 &cpu_b1>; }; }; }; saradc: saradc@ff100000 { compatible = "rockchip,rk3399-saradc"; reg = <0x0 0xff100000 0x0 0x100>; interrupts = <0 62 4 0>; #io-channel-cells = <1>; clocks = <&cru 80>, <&cru 357>; clock-names = "saradc", "apb_pclk"; resets = <&cru 212>; reset-names = "saradc-apb"; status = "disabled"; }; crypto0: crypto@ff8b0000 { compatible = "rockchip,rk3399-crypto"; reg = <0x0 0xff8b0000 0x0 0x4000>; interrupts = <0 0 4 0>; clocks = <&cru 464>, <&cru 466>, <&cru 133>; clock-names = "hclk_master", "hclk_slave", "sclk"; resets = <&cru 181>, <&cru 174>, <&cru 175>; reset-names = "master", "slave", "crypto-rst"; }; crypto1: crypto@ff8b8000 { compatible = "rockchip,rk3399-crypto"; reg = <0x0 0xff8b8000 0x0 0x4000>; interrupts = <0 135 4 0>; clocks = <&cru 465>, <&cru 467>, <&cru 134>; clock-names = "hclk_master", "hclk_slave", "sclk"; resets = <&cru 186>, <&cru 184>, <&cru 185>; reset-names = "master", "slave", "crypto-rst"; }; i2c1: i2c@ff110000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff110000 0x0 0x1000>; assigned-clocks = <&cru 65>; assigned-clock-rates = <200000000>; clocks = <&cru 65>, <&cru 341>; clock-names = "i2c", "pclk"; interrupts = <0 59 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c1_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c2: i2c@ff120000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff120000 0x0 0x1000>; assigned-clocks = <&cru 66>; assigned-clock-rates = <200000000>; clocks = <&cru 66>, <&cru 342>; clock-names = "i2c", "pclk"; interrupts = <0 35 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c2_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c3: i2c@ff130000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff130000 0x0 0x1000>; assigned-clocks = <&cru 67>; assigned-clock-rates = <200000000>; clocks = <&cru 67>, <&cru 343>; clock-names = "i2c", "pclk"; interrupts = <0 34 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c3_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c5: i2c@ff140000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff140000 0x0 0x1000>; assigned-clocks = <&cru 68>; assigned-clock-rates = <200000000>; clocks = <&cru 68>, <&cru 344>; clock-names = "i2c", "pclk"; interrupts = <0 38 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c5_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c6: i2c@ff150000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff150000 0x0 0x1000>; assigned-clocks = <&cru 69>; assigned-clock-rates = <200000000>; clocks = <&cru 69>, <&cru 345>; clock-names = "i2c", "pclk"; interrupts = <0 37 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c6_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c7: i2c@ff160000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff160000 0x0 0x1000>; assigned-clocks = <&cru 70>; assigned-clock-rates = <200000000>; clocks = <&cru 70>, <&cru 346>; clock-names = "i2c", "pclk"; interrupts = <0 36 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c7_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; uart0: serial@ff180000 { compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart"; reg = <0x0 0xff180000 0x0 0x100>; clocks = <&cru 81>, <&cru 352>; clock-names = "baudclk", "apb_pclk"; interrupts = <0 99 4 0>; reg-shift = <2>; reg-io-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&uart0_xfer>; status = "disabled"; }; uart1: serial@ff190000 { compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart"; reg = <0x0 0xff190000 0x0 0x100>; clocks = <&cru 82>, <&cru 353>; clock-names = "baudclk", "apb_pclk"; interrupts = <0 98 4 0>; reg-shift = <2>; reg-io-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&uart1_xfer>; status = "disabled"; }; uart2: serial@ff1a0000 { compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart"; reg = <0x0 0xff1a0000 0x0 0x100>; clocks = <&cru 83>, <&cru 354>; clock-names = "baudclk", "apb_pclk"; interrupts = <0 100 4 0>; reg-shift = <2>; reg-io-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&uart2c_xfer>; status = "disabled"; }; uart3: serial@ff1b0000 { compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart"; reg = <0x0 0xff1b0000 0x0 0x100>; clocks = <&cru 84>, <&cru 355>; clock-names = "baudclk", "apb_pclk"; interrupts = <0 101 4 0>; reg-shift = <2>; reg-io-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&uart3_xfer>; status = "disabled"; }; spi0: spi@ff1c0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1c0000 0x0 0x1000>; clocks = <&cru 71>, <&cru 347>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 68 4 0>; dmas = <&dmac_peri 10>, <&dmac_peri 11>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi1: spi@ff1d0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1d0000 0x0 0x1000>; clocks = <&cru 72>, <&cru 348>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 53 4 0>; dmas = <&dmac_peri 12>, <&dmac_peri 13>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi2: spi@ff1e0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1e0000 0x0 0x1000>; clocks = <&cru 73>, <&cru 349>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 52 4 0>; dmas = <&dmac_peri 14>, <&dmac_peri 15>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi4: spi@ff1f0000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff1f0000 0x0 0x1000>; clocks = <&cru 74>, <&cru 350>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 67 4 0>; dmas = <&dmac_peri 18>, <&dmac_peri 19>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&spi4_clk &spi4_tx &spi4_rx &spi4_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; spi5: spi@ff200000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff200000 0x0 0x1000>; clocks = <&cru 75>, <&cru 351>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 132 4 0>; dmas = <&dmac_bus 8>, <&dmac_bus 9>; dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&spi5_clk &spi5_tx &spi5_rx &spi5_cs0>; power-domains = <&power 28>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; thermal_zones: thermal-zones { cpu_thermal: cpu-thermal { polling-delay-passive = <100>; polling-delay = <1000>; thermal-sensors = <&tsadc 0>; trips { cpu_alert0: cpu_alert0 { temperature = <70000>; hysteresis = <2000>; type = "passive"; }; cpu_alert1: cpu_alert1 { temperature = <75000>; hysteresis = <2000>; type = "passive"; }; cpu_crit: cpu_crit { temperature = <95000>; hysteresis = <2000>; type = "critical"; }; }; cooling-maps { map0 { trip = <&cpu_alert0>; cooling-device = <&cpu_b0 (~0) (~0)>, <&cpu_b1 (~0) (~0)>; }; map1 { trip = <&cpu_alert1>; cooling-device = <&cpu_l0 (~0) (~0)>, <&cpu_l1 (~0) (~0)>, <&cpu_l2 (~0) (~0)>, <&cpu_l3 (~0) (~0)>, <&cpu_b0 (~0) (~0)>, <&cpu_b1 (~0) (~0)>; }; }; }; gpu_thermal: gpu-thermal { polling-delay-passive = <100>; polling-delay = <1000>; thermal-sensors = <&tsadc 1>; trips { gpu_alert0: gpu_alert0 { temperature = <75000>; hysteresis = <2000>; type = "passive"; }; gpu_crit: gpu_crit { temperature = <95000>; hysteresis = <2000>; type = "critical"; }; }; cooling-maps { map0 { trip = <&gpu_alert0>; cooling-device = <&gpu (~0) (~0)>; }; }; }; }; tsadc: tsadc@ff260000 { compatible = "rockchip,rk3399-tsadc"; reg = <0x0 0xff260000 0x0 0x100>; interrupts = <0 97 4 0>; assigned-clocks = <&cru 79>; assigned-clock-rates = <750000>; clocks = <&cru 79>, <&cru 356>; clock-names = "tsadc", "apb_pclk"; resets = <&cru 232>; reset-names = "tsadc-apb"; rockchip,grf = <&grf>; rockchip,hw-tshut-temp = <95000>; pinctrl-names = "init", "default", "sleep"; pinctrl-0 = <&otp_pin>; pinctrl-1 = <&otp_out>; pinctrl-2 = <&otp_pin>; #thermal-sensor-cells = <1>; status = "disabled"; }; qos_emmc: qos@ffa58000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa58000 0x0 0x20>; }; qos_gmac: qos@ffa5c000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa5c000 0x0 0x20>; }; qos_pcie: qos@ffa60080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa60080 0x0 0x20>; }; qos_usb_host0: qos@ffa60100 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa60100 0x0 0x20>; }; qos_usb_host1: qos@ffa60180 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa60180 0x0 0x20>; }; qos_usb_otg0: qos@ffa70000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa70000 0x0 0x20>; }; qos_usb_otg1: qos@ffa70080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa70080 0x0 0x20>; }; qos_sd: qos@ffa74000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa74000 0x0 0x20>; }; qos_sdioaudio: qos@ffa76000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa76000 0x0 0x20>; }; qos_hdcp: qos@ffa90000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa90000 0x0 0x20>; }; qos_iep: qos@ffa98000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffa98000 0x0 0x20>; }; qos_isp0_m0: qos@ffaa0000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffaa0000 0x0 0x20>; }; qos_isp0_m1: qos@ffaa0080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffaa0080 0x0 0x20>; }; qos_isp1_m0: qos@ffaa8000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffaa8000 0x0 0x20>; }; qos_isp1_m1: qos@ffaa8080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffaa8080 0x0 0x20>; }; qos_rga_r: qos@ffab0000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffab0000 0x0 0x20>; }; qos_rga_w: qos@ffab0080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffab0080 0x0 0x20>; }; qos_video_m0: qos@ffab8000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffab8000 0x0 0x20>; }; qos_video_m1_r: qos@ffac0000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffac0000 0x0 0x20>; }; qos_video_m1_w: qos@ffac0080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffac0080 0x0 0x20>; }; qos_vop_big_r: qos@ffac8000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffac8000 0x0 0x20>; }; qos_vop_big_w: qos@ffac8080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffac8080 0x0 0x20>; }; qos_vop_little: qos@ffad0000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffad0000 0x0 0x20>; }; qos_perihp: qos@ffad8080 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffad8080 0x0 0x20>; }; qos_gpu: qos@ffae0000 { compatible = "rockchip,rk3399-qos", "syscon"; reg = <0x0 0xffae0000 0x0 0x20>; }; pmu: power-management@ff310000 { compatible = "rockchip,rk3399-pmu", "syscon", "simple-mfd"; reg = <0x0 0xff310000 0x0 0x1000>; # 1082 "arch/arm64/boot/dts/rockchip/rk3399.dtsi" power: power-controller { compatible = "rockchip,rk3399-power-controller"; #power-domain-cells = <1>; #address-cells = <1>; #size-cells = <0>; power-domain@34 { reg = <34>; clocks = <&cru 225>, <&cru 477>; pm_qos = <&qos_iep>; #power-domain-cells = <0>; }; power-domain@33 { reg = <33>; clocks = <&cru 220>, <&cru 485>; pm_qos = <&qos_rga_r>, <&qos_rga_w>; #power-domain-cells = <0>; }; power-domain@31 { reg = <31>; clocks = <&cru 235>, <&cru 490>; pm_qos = <&qos_video_m0>; #power-domain-cells = <0>; }; power-domain@32 { reg = <32>; clocks = <&cru 237>, <&cru 492>; pm_qos = <&qos_video_m1_r>, <&qos_video_m1_w>; #power-domain-cells = <0>; }; power-domain@35 { reg = <35>; clocks = <&cru 208>; pm_qos = <&qos_gpu>; #power-domain-cells = <0>; }; power-domain@25 { reg = <25>; clocks = <&cru 364>; #power-domain-cells = <0>; }; power-domain@23 { reg = <23>; clocks = <&cru 240>; pm_qos = <&qos_emmc>; #power-domain-cells = <0>; }; power-domain@22 { reg = <22>; clocks = <&cru 213>, <&cru 358>; pm_qos = <&qos_gmac>; #power-domain-cells = <0>; }; power-domain@27 { reg = <27>; clocks = <&cru 462>, <&cru 76>; pm_qos = <&qos_sd>; #power-domain-cells = <0>; }; power-domain@28 { reg = <28>; clocks = <&cru 494>; pm_qos = <&qos_sdioaudio>; #power-domain-cells = <0>; }; power-domain@8 { reg = <8>; clocks = <&cru 126>, <&cru 125>; #power-domain-cells = <0>; }; power-domain@9 { reg = <9>; clocks = <&cru 128>, <&cru 127>; #power-domain-cells = <0>; }; power-domain@24 { reg = <24>; clocks = <&cru 244>; pm_qos = <&qos_usb_otg0>, <&qos_usb_otg1>; #power-domain-cells = <0>; }; power-domain@15 { reg = <15>; #power-domain-cells = <1>; #address-cells = <1>; #size-cells = <0>; power-domain@21 { reg = <21>; clocks = <&cru 222>, <&cru 487>, <&cru 370>; pm_qos = <&qos_hdcp>; #power-domain-cells = <0>; }; power-domain@19 { reg = <19>; clocks = <&cru 229>, <&cru 479>; pm_qos = <&qos_isp0_m0>, <&qos_isp0_m1>; #power-domain-cells = <0>; }; power-domain@20 { reg = <20>; clocks = <&cru 230>, <&cru 480>; pm_qos = <&qos_isp1_m0>, <&qos_isp1_m1>; #power-domain-cells = <0>; }; power-domain@16 { reg = <16>; #power-domain-cells = <1>; #address-cells = <1>; #size-cells = <0>; power-domain@17 { reg = <17>; clocks = <&cru 217>, <&cru 473>; pm_qos = <&qos_vop_big_r>, <&qos_vop_big_w>; #power-domain-cells = <0>; }; power-domain@18 { reg = <18>; clocks = <&cru 219>, <&cru 475>; pm_qos = <&qos_vop_little>; #power-domain-cells = <0>; }; }; }; }; }; pmugrf: syscon@ff320000 { compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd"; reg = <0x0 0xff320000 0x0 0x1000>; pmu_io_domains: io-domains { compatible = "rockchip,rk3399-pmu-io-voltage-domain"; status = "disabled"; }; reboot-mode { compatible = "syscon-reboot-mode"; offset = <0x300>; mode-normal = <0>; mode-maskrom = <0xef08a53c>; }; }; spi3: spi@ff350000 { compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi"; reg = <0x0 0xff350000 0x0 0x1000>; clocks = <&pmucru 3>, <&pmucru 31>; clock-names = "spiclk", "apb_pclk"; interrupts = <0 60 4 0>; pinctrl-names = "default"; pinctrl-0 = <&spi3_clk &spi3_tx &spi3_rx &spi3_cs0>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; uart4: serial@ff370000 { compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart"; reg = <0x0 0xff370000 0x0 0x100>; clocks = <&pmucru 6>, <&pmucru 34>; clock-names = "baudclk", "apb_pclk"; interrupts = <0 102 4 0>; reg-shift = <2>; reg-io-width = <4>; pinctrl-names = "default"; pinctrl-0 = <&uart4_xfer>; status = "disabled"; }; i2c0: i2c@ff3c0000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff3c0000 0x0 0x1000>; assigned-clocks = <&pmucru 9>; assigned-clock-rates = <200000000>; clocks = <&pmucru 9>, <&pmucru 27>; clock-names = "i2c", "pclk"; interrupts = <0 57 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c0_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c4: i2c@ff3d0000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff3d0000 0x0 0x1000>; assigned-clocks = <&pmucru 10>; assigned-clock-rates = <200000000>; clocks = <&pmucru 10>, <&pmucru 28>; clock-names = "i2c", "pclk"; interrupts = <0 56 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c4_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; i2c8: i2c@ff3e0000 { compatible = "rockchip,rk3399-i2c"; reg = <0x0 0xff3e0000 0x0 0x1000>; assigned-clocks = <&pmucru 11>; assigned-clock-rates = <200000000>; clocks = <&pmucru 11>, <&pmucru 29>; clock-names = "i2c", "pclk"; interrupts = <0 58 4 0>; pinctrl-names = "default"; pinctrl-0 = <&i2c8_xfer>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; }; pwm0: pwm@ff420000 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420000 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "default"; pinctrl-0 = <&pwm0_pin>; clocks = <&pmucru 30>; status = "disabled"; }; pwm1: pwm@ff420010 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420010 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "default"; pinctrl-0 = <&pwm1_pin>; clocks = <&pmucru 30>; status = "disabled"; }; pwm2: pwm@ff420020 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420020 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "default"; pinctrl-0 = <&pwm2_pin>; clocks = <&pmucru 30>; status = "disabled"; }; pwm3: pwm@ff420030 { compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm"; reg = <0x0 0xff420030 0x0 0x10>; #pwm-cells = <3>; pinctrl-names = "default"; pinctrl-0 = <&pwm3a_pin>; clocks = <&pmucru 30>; status = "disabled"; }; dfi: dfi@ff630000 { reg = <0x00 0xff630000 0x00 0x4000>; compatible = "rockchip,rk3399-dfi"; rockchip,pmu = <&pmugrf>; interrupts = <0 131 4 0>; clocks = <&cru 377>; clock-names = "pclk_ddr_mon"; status = "disabled"; }; vpu: video-codec@ff650000 { compatible = "rockchip,rk3399-vpu"; reg = <0x0 0xff650000 0x0 0x800>; interrupts = <0 114 4 0>, <0 113 4 0>; interrupt-names = "vepu", "vdpu"; clocks = <&cru 235>, <&cru 490>; clock-names = "aclk", "hclk"; iommus = <&vpu_mmu>; power-domains = <&power 31>; }; vpu_mmu: iommu@ff650800 { compatible = "rockchip,iommu"; reg = <0x0 0xff650800 0x0 0x40>; interrupts = <0 115 4 0>; clocks = <&cru 235>, <&cru 490>; clock-names = "aclk", "iface"; #iommu-cells = <0>; power-domains = <&power 31>; }; vdec: video-codec@ff660000 { compatible = "rockchip,rk3399-vdec"; reg = <0x0 0xff660000 0x0 0x400>; interrupts = <0 116 4 0>; clocks = <&cru 237>, <&cru 492>, <&cru 159>, <&cru 158>; clock-names = "axi", "ahb", "cabac", "core"; iommus = <&vdec_mmu>; power-domains = <&power 32>; }; vdec_mmu: iommu@ff660480 { compatible = "rockchip,iommu"; reg = <0x0 0xff660480 0x0 0x40>, <0x0 0xff6604c0 0x0 0x40>; interrupts = <0 117 4 0>; clocks = <&cru 237>, <&cru 492>; clock-names = "aclk", "iface"; power-domains = <&power 32>; #iommu-cells = <0>; }; iep_mmu: iommu@ff670800 { compatible = "rockchip,iommu"; reg = <0x0 0xff670800 0x0 0x40>; interrupts = <0 42 4 0>; clocks = <&cru 225>, <&cru 477>; clock-names = "aclk", "iface"; #iommu-cells = <0>; status = "disabled"; }; rga: rga@ff680000 { compatible = "rockchip,rk3399-rga"; reg = <0x0 0xff680000 0x0 0x10000>; interrupts = <0 55 4 0>; clocks = <&cru 220>, <&cru 485>, <&cru 109>; clock-names = "aclk", "hclk", "sclk"; resets = <&cru 106>, <&cru 103>, <&cru 105>; reset-names = "core", "axi", "ahb"; power-domains = <&power 33>; }; efuse0: efuse@ff690000 { compatible = "rockchip,rk3399-efuse"; reg = <0x0 0xff690000 0x0 0x80>; #address-cells = <1>; #size-cells = <1>; clocks = <&cru 381>; clock-names = "pclk_efuse"; cpu_id: cpu-id@7 { reg = <0x07 0x10>; }; cpub_leakage: cpu-leakage@17 { reg = <0x17 0x1>; }; gpu_leakage: gpu-leakage@18 { reg = <0x18 0x1>; }; center_leakage: center-leakage@19 { reg = <0x19 0x1>; }; cpul_leakage: cpu-leakage@1a { reg = <0x1a 0x1>; }; logic_leakage: logic-leakage@1b { reg = <0x1b 0x1>; }; wafer_info: wafer-info@1c { reg = <0x1c 0x1>; }; }; dmac_bus: dma-controller@ff6d0000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0xff6d0000 0x0 0x4000>; interrupts = <0 5 4 0>, <0 6 4 0>; #dma-cells = <1>; arm,pl330-periph-burst; clocks = <&cru 211>; clock-names = "apb_pclk"; }; dmac_peri: dma-controller@ff6e0000 { compatible = "arm,pl330", "arm,primecell"; reg = <0x0 0xff6e0000 0x0 0x4000>; interrupts = <0 7 4 0>, <0 8 4 0>; #dma-cells = <1>; arm,pl330-periph-burst; clocks = <&cru 212>; clock-names = "apb_pclk"; }; pmucru: clock-controller@ff750000 { compatible = "rockchip,rk3399-pmucru"; reg = <0x0 0xff750000 0x0 0x1000>; clocks = <&xin24m>; clock-names = "xin24m"; rockchip,grf = <&pmugrf>; #clock-cells = <1>; #reset-cells = <1>; assigned-clocks = <&pmucru 1>; assigned-clock-rates = <676000000>; }; cru: clock-controller@ff760000 { compatible = "rockchip,rk3399-cru"; reg = <0x0 0xff760000 0x0 0x1000>; clocks = <&xin24m>; clock-names = "xin24m"; rockchip,grf = <&grf>; #clock-cells = <1>; #reset-cells = <1>; assigned-clocks = <&cru 5>, <&cru 4>, <&cru 6>, <&cru 192>, <&cru 448>, <&cru 320>, <&cru 194>, <&cru 449>, <&cru 322>, <&cru 201>, <&cru 450>, <&cru 323>, <&cru 227>, <&cru 222>, <&cru 262>, <&cru 376>, <&cru 237>; assigned-clock-rates = <594000000>, <800000000>, <1000000000>, <150000000>, <75000000>, <37500000>, <100000000>, <100000000>, <50000000>, <600000000>, <100000000>, <50000000>, <400000000>, <400000000>, <200000000>, <200000000>, <400000000>; }; grf: syscon@ff770000 { compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd"; reg = <0x0 0xff770000 0x0 0x10000>; #address-cells = <1>; #size-cells = <1>; io_domains: io-domains { compatible = "rockchip,rk3399-io-voltage-domain"; status = "disabled"; }; mipi_dphy_rx0: mipi-dphy-rx0 { compatible = "rockchip,rk3399-mipi-dphy-rx0"; clocks = <&cru 119>, <&cru 165>, <&cru 367>; clock-names = "dphy-ref", "dphy-cfg", "grf"; power-domains = <&power 15>; #phy-cells = <0>; status = "disabled"; }; u2phy0: usb2phy@e450 { compatible = "rockchip,rk3399-usb2phy"; reg = <0xe450 0x10>; clocks = <&cru 123>; clock-names = "phyclk"; #clock-cells = <0>; clock-output-names = "clk_usbphy0_480m"; status = "disabled"; u2phy0_host: host-port { #phy-cells = <0>; interrupts = <0 27 4 0>; interrupt-names = "linestate"; status = "disabled"; }; u2phy0_otg: otg-port { #phy-cells = <0>; interrupts = <0 103 4 0>, <0 104 4 0>, <0 106 4 0>; interrupt-names = "otg-bvalid", "otg-id", "linestate"; status = "disabled"; }; }; u2phy1: usb2phy@e460 { compatible = "rockchip,rk3399-usb2phy"; reg = <0xe460 0x10>; clocks = <&cru 124>; clock-names = "phyclk"; #clock-cells = <0>; clock-output-names = "clk_usbphy1_480m"; status = "disabled"; u2phy1_host: host-port { #phy-cells = <0>; interrupts = <0 31 4 0>; interrupt-names = "linestate"; status = "disabled"; }; u2phy1_otg: otg-port { #phy-cells = <0>; interrupts = <0 108 4 0>, <0 109 4 0>, <0 111 4 0>; interrupt-names = "otg-bvalid", "otg-id", "linestate"; status = "disabled"; }; }; emmc_phy: phy@f780 { compatible = "rockchip,rk3399-emmc-phy"; reg = <0xf780 0x24>; clocks = <&sdhci>; clock-names = "emmcclk"; drive-impedance-ohm = <50>; #phy-cells = <0>; status = "disabled"; }; pcie_phy: pcie-phy { compatible = "rockchip,rk3399-pcie-phy"; clocks = <&cru 138>; clock-names = "refclk"; #phy-cells = <1>; resets = <&cru 135>; reset-names = "phy"; status = "disabled"; }; }; tcphy0: phy@ff7c0000 { compatible = "rockchip,rk3399-typec-phy"; reg = <0x0 0xff7c0000 0x0 0x40000>; clocks = <&cru 126>, <&cru 125>; clock-names = "tcpdcore", "tcpdphy-ref"; assigned-clocks = <&cru 126>; assigned-clock-rates = <50000000>; power-domains = <&power 8>; resets = <&cru 149>, <&cru 148>, <&cru 332>; reset-names = "uphy", "uphy-pipe", "uphy-tcphy"; rockchip,grf = <&grf>; status = "disabled"; tcphy0_dp: dp-port { #phy-cells = <0>; }; tcphy0_usb3: usb3-port { #phy-cells = <0>; }; }; tcphy1: phy@ff800000 { compatible = "rockchip,rk3399-typec-phy"; reg = <0x0 0xff800000 0x0 0x40000>; clocks = <&cru 128>, <&cru 127>; clock-names = "tcpdcore", "tcpdphy-ref"; assigned-clocks = <&cru 128>; assigned-clock-rates = <50000000>; power-domains = <&power 9>; resets = <&cru 157>, <&cru 156>, <&cru 333>; reset-names = "uphy", "uphy-pipe", "uphy-tcphy"; rockchip,grf = <&grf>; status = "disabled"; tcphy1_dp: dp-port { #phy-cells = <0>; }; tcphy1_usb3: usb3-port { #phy-cells = <0>; }; }; watchdog@ff848000 { compatible = "rockchip,rk3399-wdt", "snps,dw-wdt"; reg = <0x0 0xff848000 0x0 0x100>; clocks = <&cru 380>; interrupts = <0 120 4 0>; }; rktimer: rktimer@ff850000 { compatible = "rockchip,rk3399-timer"; reg = <0x0 0xff850000 0x0 0x1000>; interrupts = <0 81 4 0>; clocks = <&cru 360>, <&cru 90>; clock-names = "pclk", "timer"; }; spdif: spdif@ff870000 { compatible = "rockchip,rk3399-spdif"; reg = <0x0 0xff870000 0x0 0x1000>; interrupts = <0 66 4 0>; dmas = <&dmac_bus 7>; dma-names = "tx"; clock-names = "mclk", "hclk"; clocks = <&cru 85>, <&cru 471>; pinctrl-names = "default"; pinctrl-0 = <&spdif_bus>; power-domains = <&power 28>; #sound-dai-cells = <0>; status = "disabled"; }; i2s0: i2s@ff880000 { compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s"; reg = <0x0 0xff880000 0x0 0x1000>; rockchip,grf = <&grf>; interrupts = <0 39 4 0>; dmas = <&dmac_bus 0>, <&dmac_bus 1>; dma-names = "tx", "rx"; clock-names = "i2s_clk", "i2s_hclk"; clocks = <&cru 86>, <&cru 468>; pinctrl-names = "bclk_on", "bclk_off"; pinctrl-0 = <&i2s0_8ch_bus>; pinctrl-1 = <&i2s0_8ch_bus_bclk_off>; power-domains = <&power 28>; #sound-dai-cells = <0>; status = "disabled"; }; i2s1: i2s@ff890000 { compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s"; reg = <0x0 0xff890000 0x0 0x1000>; interrupts = <0 40 4 0>; dmas = <&dmac_bus 2>, <&dmac_bus 3>; dma-names = "tx", "rx"; clock-names = "i2s_clk", "i2s_hclk"; clocks = <&cru 87>, <&cru 469>; pinctrl-names = "default"; pinctrl-0 = <&i2s1_2ch_bus>; power-domains = <&power 28>; #sound-dai-cells = <0>; status = "disabled"; }; i2s2: i2s@ff8a0000 { compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s"; reg = <0x0 0xff8a0000 0x0 0x1000>; interrupts = <0 41 4 0>; dmas = <&dmac_bus 4>, <&dmac_bus 5>; dma-names = "tx", "rx"; clock-names = "i2s_clk", "i2s_hclk"; clocks = <&cru 88>, <&cru 470>; power-domains = <&power 28>; #sound-dai-cells = <0>; status = "disabled"; }; vopl: vop@ff8f0000 { compatible = "rockchip,rk3399-vop-lit"; reg = <0x0 0xff8f0000 0x0 0x2000>, <0x0 0xff8f2000 0x0 0x400>; interrupts = <0 119 4 0>; assigned-clocks = <&cru 219>, <&cru 475>; assigned-clock-rates = <400000000>, <100000000>; clocks = <&cru 219>, <&cru 181>, <&cru 475>; clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; iommus = <&vopl_mmu>; power-domains = <&power 18>; resets = <&cru 275>, <&cru 279>, <&cru 281>; reset-names = "axi", "ahb", "dclk"; status = "disabled"; vopl_out: port { #address-cells = <1>; #size-cells = <0>; vopl_out_mipi: endpoint@0 { reg = <0>; remote-endpoint = <&mipi_in_vopl>; }; vopl_out_edp: endpoint@1 { reg = <1>; remote-endpoint = <&edp_in_vopl>; }; vopl_out_hdmi: endpoint@2 { reg = <2>; remote-endpoint = <&hdmi_in_vopl>; }; vopl_out_mipi1: endpoint@3 { reg = <3>; remote-endpoint = <&mipi1_in_vopl>; }; vopl_out_dp: endpoint@4 { reg = <4>; remote-endpoint = <&dp_in_vopl>; }; }; }; vopl_mmu: iommu@ff8f3f00 { compatible = "rockchip,iommu"; reg = <0x0 0xff8f3f00 0x0 0x100>; interrupts = <0 119 4 0>; clocks = <&cru 219>, <&cru 475>; clock-names = "aclk", "iface"; power-domains = <&power 18>; #iommu-cells = <0>; status = "disabled"; }; vopb: vop@ff900000 { compatible = "rockchip,rk3399-vop-big"; reg = <0x0 0xff900000 0x0 0x2000>, <0x0 0xff902000 0x0 0x1000>; interrupts = <0 118 4 0>; assigned-clocks = <&cru 217>, <&cru 473>; assigned-clock-rates = <400000000>, <100000000>; clocks = <&cru 217>, <&cru 180>, <&cru 473>; clock-names = "aclk_vop", "dclk_vop", "hclk_vop"; iommus = <&vopb_mmu>; power-domains = <&power 17>; resets = <&cru 274>, <&cru 278>, <&cru 280>; reset-names = "axi", "ahb", "dclk"; status = "disabled"; vopb_out: port { #address-cells = <1>; #size-cells = <0>; vopb_out_edp: endpoint@0 { reg = <0>; remote-endpoint = <&edp_in_vopb>; }; vopb_out_mipi: endpoint@1 { reg = <1>; remote-endpoint = <&mipi_in_vopb>; }; vopb_out_hdmi: endpoint@2 { reg = <2>; remote-endpoint = <&hdmi_in_vopb>; }; vopb_out_mipi1: endpoint@3 { reg = <3>; remote-endpoint = <&mipi1_in_vopb>; }; vopb_out_dp: endpoint@4 { reg = <4>; remote-endpoint = <&dp_in_vopb>; }; }; }; vopb_mmu: iommu@ff903f00 { compatible = "rockchip,iommu"; reg = <0x0 0xff903f00 0x0 0x100>; interrupts = <0 118 4 0>; clocks = <&cru 217>, <&cru 473>; clock-names = "aclk", "iface"; power-domains = <&power 17>; #iommu-cells = <0>; status = "disabled"; }; isp0: isp0@ff910000 { compatible = "rockchip,rk3399-cif-isp"; reg = <0x0 0xff910000 0x0 0x4000>; interrupts = <0 43 4 0>; clocks = <&cru 110>, <&cru 233>, <&cru 483>; clock-names = "isp", "aclk", "hclk"; iommus = <&isp0_mmu>; phys = <&mipi_dphy_rx0>; phy-names = "dphy"; power-domains = <&power 19>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; }; }; }; isp0_mmu: iommu@ff914000 { compatible = "rockchip,iommu"; reg = <0x0 0xff914000 0x0 0x100>, <0x0 0xff915000 0x0 0x100>; interrupts = <0 43 4 0>; clocks = <&cru 233>, <&cru 483>; clock-names = "aclk", "iface"; #iommu-cells = <0>; power-domains = <&power 19>; rockchip,disable-mmu-reset; }; isp1: isp1@ff920000 { compatible = "rockchip,rk3399-cif-isp"; reg = <0x0 0xff920000 0x0 0x4000>; interrupts = <0 44 4 0>; clocks = <&cru 111>, <&cru 234>, <&cru 484>; clock-names = "isp", "aclk", "hclk"; iommus = <&isp1_mmu>; phys = <&mipi_dsi1>; phy-names = "dphy"; power-domains = <&power 20>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; }; }; }; isp1_mmu: iommu@ff924000 { compatible = "rockchip,iommu"; reg = <0x0 0xff924000 0x0 0x100>, <0x0 0xff925000 0x0 0x100>; interrupts = <0 44 4 0>; clocks = <&cru 234>, <&cru 484>; clock-names = "aclk", "iface"; #iommu-cells = <0>; power-domains = <&power 20>; rockchip,disable-mmu-reset; }; hdmi_sound: hdmi-sound { compatible = "simple-audio-card"; simple-audio-card,format = "i2s"; simple-audio-card,mclk-fs = <256>; simple-audio-card,name = "hdmi-sound"; status = "disabled"; simple-audio-card,cpu { sound-dai = <&i2s2>; }; simple-audio-card,codec { sound-dai = <&hdmi>; }; }; hdmi: hdmi@ff940000 { compatible = "rockchip,rk3399-dw-hdmi"; reg = <0x0 0xff940000 0x0 0x20000>; interrupts = <0 23 4 0>; clocks = <&cru 372>, <&cru 113>, <&cru 112>, <&cru 367>, <&cru 7>; clock-names = "iahb", "isfr", "cec", "grf", "ref"; power-domains = <&power 21>; reg-io-width = <4>; rockchip,grf = <&grf>; #sound-dai-cells = <0>; status = "disabled"; ports { hdmi_in: port { #address-cells = <1>; #size-cells = <0>; hdmi_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_hdmi>; }; hdmi_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_hdmi>; }; }; }; }; mipi_dsi: dsi@ff960000 { compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi"; reg = <0x0 0xff960000 0x0 0x8000>; interrupts = <0 45 4 0>; clocks = <&cru 162>, <&cru 368>, <&cru 163>, <&cru 367>; clock-names = "ref", "pclk", "phy_cfg", "grf"; power-domains = <&power 15>; resets = <&cru 251>; reset-names = "apb"; rockchip,grf = <&grf>; #address-cells = <1>; #size-cells = <0>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; mipi_in: port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_mipi>; }; mipi_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_mipi>; }; }; mipi_out: port@1 { reg = <1>; }; }; }; mipi_dsi1: dsi@ff968000 { compatible = "rockchip,rk3399-mipi-dsi", "snps,dw-mipi-dsi"; reg = <0x0 0xff968000 0x0 0x8000>; interrupts = <0 46 4 0>; clocks = <&cru 162>, <&cru 369>, <&cru 164>, <&cru 367>; clock-names = "ref", "pclk", "phy_cfg", "grf"; power-domains = <&power 15>; resets = <&cru 252>; reset-names = "apb"; rockchip,grf = <&grf>; #address-cells = <1>; #size-cells = <0>; #phy-cells = <0>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; mipi1_in: port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; mipi1_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_mipi1>; }; mipi1_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_mipi1>; }; }; mipi1_out: port@1 { reg = <1>; }; }; }; edp: dp@ff970000 { compatible = "rockchip,rk3399-edp"; reg = <0x0 0xff970000 0x0 0x8000>; interrupts = <0 10 4 0>; clocks = <&cru 362>, <&cru 364>, <&cru 367>; clock-names = "dp", "pclk", "grf"; pinctrl-names = "default"; pinctrl-0 = <&edp_hpd>; power-domains = <&power 25>; resets = <&cru 285>; reset-names = "dp"; rockchip,grf = <&grf>; status = "disabled"; ports { #address-cells = <1>; #size-cells = <0>; edp_in: port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; edp_in_vopb: endpoint@0 { reg = <0>; remote-endpoint = <&vopb_out_edp>; }; edp_in_vopl: endpoint@1 { reg = <1>; remote-endpoint = <&vopl_out_edp>; }; }; edp_out: port@1 { reg = <1>; }; }; }; gpu: gpu@ff9a0000 { compatible = "rockchip,rk3399-mali", "arm,mali-t860"; reg = <0x0 0xff9a0000 0x0 0x10000>; interrupts = <0 20 4 0>, <0 21 4 0>, <0 19 4 0>; interrupt-names = "job", "mmu", "gpu"; clocks = <&cru 208>; #cooling-cells = <2>; power-domains = <&power 35>; status = "disabled"; }; pinctrl: pinctrl { compatible = "rockchip,rk3399-pinctrl"; rockchip,grf = <&grf>; rockchip,pmu = <&pmugrf>; #address-cells = <2>; #size-cells = <2>; ranges; gpio0: gpio@ff720000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff720000 0x0 0x100>; clocks = <&pmucru 23>; interrupts = <0 14 4 0>; gpio-controller; #gpio-cells = <0x2>; interrupt-controller; #interrupt-cells = <0x2>; }; gpio1: gpio@ff730000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff730000 0x0 0x100>; clocks = <&pmucru 24>; interrupts = <0 15 4 0>; gpio-controller; #gpio-cells = <0x2>; interrupt-controller; #interrupt-cells = <0x2>; }; gpio2: gpio@ff780000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff780000 0x0 0x100>; clocks = <&cru 336>; interrupts = <0 16 4 0>; gpio-controller; #gpio-cells = <0x2>; interrupt-controller; #interrupt-cells = <0x2>; }; gpio3: gpio@ff788000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff788000 0x0 0x100>; clocks = <&cru 337>; interrupts = <0 17 4 0>; gpio-controller; #gpio-cells = <0x2>; interrupt-controller; #interrupt-cells = <0x2>; }; gpio4: gpio@ff790000 { compatible = "rockchip,gpio-bank"; reg = <0x0 0xff790000 0x0 0x100>; clocks = <&cru 338>; interrupts = <0 18 4 0>; gpio-controller; #gpio-cells = <0x2>; interrupt-controller; #interrupt-cells = <0x2>; }; pcfg_pull_up: pcfg-pull-up { bias-pull-up; }; pcfg_pull_down: pcfg-pull-down { bias-pull-down; }; pcfg_pull_none: pcfg-pull-none { bias-disable; }; pcfg_pull_none_12ma: pcfg-pull-none-12ma { bias-disable; drive-strength = <12>; }; pcfg_pull_none_13ma: pcfg-pull-none-13ma { bias-disable; drive-strength = <13>; }; pcfg_pull_none_18ma: pcfg-pull-none-18ma { bias-disable; drive-strength = <18>; }; pcfg_pull_none_20ma: pcfg-pull-none-20ma { bias-disable; drive-strength = <20>; }; pcfg_pull_up_2ma: pcfg-pull-up-2ma { bias-pull-up; drive-strength = <2>; }; pcfg_pull_up_8ma: pcfg-pull-up-8ma { bias-pull-up; drive-strength = <8>; }; pcfg_pull_up_18ma: pcfg-pull-up-18ma { bias-pull-up; drive-strength = <18>; }; pcfg_pull_up_20ma: pcfg-pull-up-20ma { bias-pull-up; drive-strength = <20>; }; pcfg_pull_down_4ma: pcfg-pull-down-4ma { bias-pull-down; drive-strength = <4>; }; pcfg_pull_down_8ma: pcfg-pull-down-8ma { bias-pull-down; drive-strength = <8>; }; pcfg_pull_down_12ma: pcfg-pull-down-12ma { bias-pull-down; drive-strength = <12>; }; pcfg_pull_down_18ma: pcfg-pull-down-18ma { bias-pull-down; drive-strength = <18>; }; pcfg_pull_down_20ma: pcfg-pull-down-20ma { bias-pull-down; drive-strength = <20>; }; pcfg_output_high: pcfg-output-high { output-high; }; pcfg_output_low: pcfg-output-low { output-low; }; pcfg_input_enable: pcfg-input-enable { input-enable; }; pcfg_input_pull_up: pcfg-input-pull-up { input-enable; bias-pull-up; }; pcfg_input_pull_down: pcfg-input-pull-down { input-enable; bias-pull-down; }; clock { clk_32k: clk-32k { rockchip,pins = <0 0 2 &pcfg_pull_none>; }; }; cif { cif_clkin: cif-clkin { rockchip,pins = <2 10 3 &pcfg_pull_none>; }; cif_clkouta: cif-clkouta { rockchip,pins = <2 11 3 &pcfg_pull_none>; }; }; edp { edp_hpd: edp-hpd { rockchip,pins = <4 23 2 &pcfg_pull_none>; }; }; gmac { rgmii_pins: rgmii-pins { rockchip,pins = <3 17 1 &pcfg_pull_none_13ma>, <3 14 1 &pcfg_pull_none>, <3 13 1 &pcfg_pull_none>, <3 12 1 &pcfg_pull_none_13ma>, <3 11 1 &pcfg_pull_none>, <3 9 1 &pcfg_pull_none>, <3 8 1 &pcfg_pull_none>, <3 7 1 &pcfg_pull_none>, <3 6 1 &pcfg_pull_none>, <3 5 1 &pcfg_pull_none_13ma>, <3 4 1 &pcfg_pull_none_13ma>, <3 3 1 &pcfg_pull_none>, <3 2 1 &pcfg_pull_none>, <3 1 1 &pcfg_pull_none_13ma>, <3 0 1 &pcfg_pull_none_13ma>; }; rmii_pins: rmii-pins { rockchip,pins = <3 13 1 &pcfg_pull_none>, <3 12 1 &pcfg_pull_none_13ma>, <3 11 1 &pcfg_pull_none>, <3 10 1 &pcfg_pull_none>, <3 9 1 &pcfg_pull_none>, <3 8 1 &pcfg_pull_none>, <3 7 1 &pcfg_pull_none>, <3 6 1 &pcfg_pull_none>, <3 5 1 &pcfg_pull_none_13ma>, <3 4 1 &pcfg_pull_none_13ma>; }; }; i2c0 { i2c0_xfer: i2c0-xfer { rockchip,pins = <1 15 2 &pcfg_pull_none>, <1 16 2 &pcfg_pull_none>; }; }; i2c1 { i2c1_xfer: i2c1-xfer { rockchip,pins = <4 2 1 &pcfg_pull_none>, <4 1 1 &pcfg_pull_none>; }; }; i2c2 { i2c2_xfer: i2c2-xfer { rockchip,pins = <2 1 2 &pcfg_pull_none_12ma>, <2 0 2 &pcfg_pull_none_12ma>; }; }; i2c3 { i2c3_xfer: i2c3-xfer { rockchip,pins = <4 17 1 &pcfg_pull_none>, <4 16 1 &pcfg_pull_none>; }; }; i2c4 { i2c4_xfer: i2c4-xfer { rockchip,pins = <1 12 1 &pcfg_pull_none>, <1 11 1 &pcfg_pull_none>; }; }; i2c5 { i2c5_xfer: i2c5-xfer { rockchip,pins = <3 11 2 &pcfg_pull_none>, <3 10 2 &pcfg_pull_none>; }; }; i2c6 { i2c6_xfer: i2c6-xfer { rockchip,pins = <2 10 2 &pcfg_pull_none>, <2 9 2 &pcfg_pull_none>; }; }; i2c7 { i2c7_xfer: i2c7-xfer { rockchip,pins = <2 8 2 &pcfg_pull_none>, <2 7 2 &pcfg_pull_none>; }; }; i2c8 { i2c8_xfer: i2c8-xfer { rockchip,pins = <1 21 1 &pcfg_pull_none>, <1 20 1 &pcfg_pull_none>; }; }; i2s0 { i2s0_2ch_bus: i2s0-2ch-bus { rockchip,pins = <3 24 1 &pcfg_pull_none>, <3 25 1 &pcfg_pull_none>, <3 26 1 &pcfg_pull_none>, <3 27 1 &pcfg_pull_none>, <3 31 1 &pcfg_pull_none>, <4 0 1 &pcfg_pull_none>; }; i2s0_2ch_bus_bclk_off: i2s0-2ch-bus-bclk-off { rockchip,pins = <3 24 0 &pcfg_pull_none>, <3 25 1 &pcfg_pull_none>, <3 26 1 &pcfg_pull_none>, <3 27 1 &pcfg_pull_none>, <3 31 1 &pcfg_pull_none>, <4 0 1 &pcfg_pull_none>; }; i2s0_8ch_bus: i2s0-8ch-bus { rockchip,pins = <3 24 1 &pcfg_pull_none>, <3 25 1 &pcfg_pull_none>, <3 26 1 &pcfg_pull_none>, <3 27 1 &pcfg_pull_none>, <3 28 1 &pcfg_pull_none>, <3 29 1 &pcfg_pull_none>, <3 30 1 &pcfg_pull_none>, <3 31 1 &pcfg_pull_none>, <4 0 1 &pcfg_pull_none>; }; i2s0_8ch_bus_bclk_off: i2s0-8ch-bus-bclk-off { rockchip,pins = <3 24 0 &pcfg_pull_none>, <3 25 1 &pcfg_pull_none>, <3 26 1 &pcfg_pull_none>, <3 27 1 &pcfg_pull_none>, <3 28 1 &pcfg_pull_none>, <3 29 1 &pcfg_pull_none>, <3 30 1 &pcfg_pull_none>, <3 31 1 &pcfg_pull_none>, <4 0 1 &pcfg_pull_none>; }; }; i2s1 { i2s1_2ch_bus: i2s1-2ch-bus { rockchip,pins = <4 3 1 &pcfg_pull_none>, <4 4 1 &pcfg_pull_none>, <4 5 1 &pcfg_pull_none>, <4 6 1 &pcfg_pull_none>, <4 7 1 &pcfg_pull_none>; }; i2s1_2ch_bus_bclk_off: i2s1-2ch-bus-bclk-off { rockchip,pins = <4 3 0 &pcfg_pull_none>, <4 4 1 &pcfg_pull_none>, <4 5 1 &pcfg_pull_none>, <4 6 1 &pcfg_pull_none>, <4 7 1 &pcfg_pull_none>; }; }; sdio0 { sdio0_bus1: sdio0-bus1 { rockchip,pins = <2 20 1 &pcfg_pull_up>; }; sdio0_bus4: sdio0-bus4 { rockchip,pins = <2 20 1 &pcfg_pull_up>, <2 21 1 &pcfg_pull_up>, <2 22 1 &pcfg_pull_up>, <2 23 1 &pcfg_pull_up>; }; sdio0_cmd: sdio0-cmd { rockchip,pins = <2 24 1 &pcfg_pull_up>; }; sdio0_clk: sdio0-clk { rockchip,pins = <2 25 1 &pcfg_pull_none>; }; sdio0_cd: sdio0-cd { rockchip,pins = <2 26 1 &pcfg_pull_up>; }; sdio0_pwr: sdio0-pwr { rockchip,pins = <2 27 1 &pcfg_pull_up>; }; sdio0_bkpwr: sdio0-bkpwr { rockchip,pins = <2 28 1 &pcfg_pull_up>; }; sdio0_wp: sdio0-wp { rockchip,pins = <0 3 1 &pcfg_pull_up>; }; sdio0_int: sdio0-int { rockchip,pins = <0 4 1 &pcfg_pull_up>; }; }; sdmmc { sdmmc_bus1: sdmmc-bus1 { rockchip,pins = <4 8 1 &pcfg_pull_up>; }; sdmmc_bus4: sdmmc-bus4 { rockchip,pins = <4 8 1 &pcfg_pull_up>, <4 9 1 &pcfg_pull_up>, <4 10 1 &pcfg_pull_up>, <4 11 1 &pcfg_pull_up>; }; sdmmc_clk: sdmmc-clk { rockchip,pins = <4 12 1 &pcfg_pull_none>; }; sdmmc_cmd: sdmmc-cmd { rockchip,pins = <4 13 1 &pcfg_pull_up>; }; sdmmc_cd: sdmmc-cd { rockchip,pins = <0 7 1 &pcfg_pull_up>; }; sdmmc_wp: sdmmc-wp { rockchip,pins = <0 8 1 &pcfg_pull_up>; }; }; suspend { ap_pwroff: ap-pwroff { rockchip,pins = <1 5 1 &pcfg_pull_none>; }; ddrio_pwroff: ddrio-pwroff { rockchip,pins = <0 1 1 &pcfg_pull_none>; }; }; spdif { spdif_bus: spdif-bus { rockchip,pins = <4 21 1 &pcfg_pull_none>; }; spdif_bus_1: spdif-bus-1 { rockchip,pins = <3 16 3 &pcfg_pull_none>; }; }; spi0 { spi0_clk: spi0-clk { rockchip,pins = <3 6 2 &pcfg_pull_up>; }; spi0_cs0: spi0-cs0 { rockchip,pins = <3 7 2 &pcfg_pull_up>; }; spi0_cs1: spi0-cs1 { rockchip,pins = <3 8 2 &pcfg_pull_up>; }; spi0_tx: spi0-tx { rockchip,pins = <3 5 2 &pcfg_pull_up>; }; spi0_rx: spi0-rx { rockchip,pins = <3 4 2 &pcfg_pull_up>; }; }; spi1 { spi1_clk: spi1-clk { rockchip,pins = <1 9 2 &pcfg_pull_up>; }; spi1_cs0: spi1-cs0 { rockchip,pins = <1 10 2 &pcfg_pull_up>; }; spi1_rx: spi1-rx { rockchip,pins = <1 7 2 &pcfg_pull_up>; }; spi1_tx: spi1-tx { rockchip,pins = <1 8 2 &pcfg_pull_up>; }; }; spi2 { spi2_clk: spi2-clk { rockchip,pins = <2 11 1 &pcfg_pull_up>; }; spi2_cs0: spi2-cs0 { rockchip,pins = <2 12 1 &pcfg_pull_up>; }; spi2_rx: spi2-rx { rockchip,pins = <2 9 1 &pcfg_pull_up>; }; spi2_tx: spi2-tx { rockchip,pins = <2 10 1 &pcfg_pull_up>; }; }; spi3 { spi3_clk: spi3-clk { rockchip,pins = <1 17 1 &pcfg_pull_up>; }; spi3_cs0: spi3-cs0 { rockchip,pins = <1 18 1 &pcfg_pull_up>; }; spi3_rx: spi3-rx { rockchip,pins = <1 15 1 &pcfg_pull_up>; }; spi3_tx: spi3-tx { rockchip,pins = <1 16 1 &pcfg_pull_up>; }; }; spi4 { spi4_clk: spi4-clk { rockchip,pins = <3 2 2 &pcfg_pull_up>; }; spi4_cs0: spi4-cs0 { rockchip,pins = <3 3 2 &pcfg_pull_up>; }; spi4_rx: spi4-rx { rockchip,pins = <3 0 2 &pcfg_pull_up>; }; spi4_tx: spi4-tx { rockchip,pins = <3 1 2 &pcfg_pull_up>; }; }; spi5 { spi5_clk: spi5-clk { rockchip,pins = <2 22 2 &pcfg_pull_up>; }; spi5_cs0: spi5-cs0 { rockchip,pins = <2 23 2 &pcfg_pull_up>; }; spi5_rx: spi5-rx { rockchip,pins = <2 20 2 &pcfg_pull_up>; }; spi5_tx: spi5-tx { rockchip,pins = <2 21 2 &pcfg_pull_up>; }; }; testclk { test_clkout0: test-clkout0 { rockchip,pins = <0 0 1 &pcfg_pull_none>; }; test_clkout1: test-clkout1 { rockchip,pins = <2 25 2 &pcfg_pull_none>; }; test_clkout2: test-clkout2 { rockchip,pins = <0 8 3 &pcfg_pull_none>; }; }; tsadc { otp_pin: otp-pin { rockchip,pins = <1 6 0 &pcfg_pull_none>; }; otp_out: otp-out { rockchip,pins = <1 6 1 &pcfg_pull_none>; }; }; uart0 { uart0_xfer: uart0-xfer { rockchip,pins = <2 16 1 &pcfg_pull_up>, <2 17 1 &pcfg_pull_none>; }; uart0_cts: uart0-cts { rockchip,pins = <2 18 1 &pcfg_pull_none>; }; uart0_rts: uart0-rts { rockchip,pins = <2 19 1 &pcfg_pull_none>; }; }; uart1 { uart1_xfer: uart1-xfer { rockchip,pins = <3 12 2 &pcfg_pull_up>, <3 13 2 &pcfg_pull_none>; }; }; uart2a { uart2a_xfer: uart2a-xfer { rockchip,pins = <4 8 2 &pcfg_pull_up>, <4 9 2 &pcfg_pull_none>; }; }; uart2b { uart2b_xfer: uart2b-xfer { rockchip,pins = <4 16 2 &pcfg_pull_up>, <4 17 2 &pcfg_pull_none>; }; }; uart2c { uart2c_xfer: uart2c-xfer { rockchip,pins = <4 19 1 &pcfg_pull_up>, <4 20 1 &pcfg_pull_none>; }; }; uart3 { uart3_xfer: uart3-xfer { rockchip,pins = <3 14 2 &pcfg_pull_up>, <3 15 2 &pcfg_pull_none>; }; uart3_cts: uart3-cts { rockchip,pins = <3 16 2 &pcfg_pull_none>; }; uart3_rts: uart3-rts { rockchip,pins = <3 17 2 &pcfg_pull_none>; }; }; uart4 { uart4_xfer: uart4-xfer { rockchip,pins = <1 7 1 &pcfg_pull_up>, <1 8 1 &pcfg_pull_none>; }; }; uarthdcp { uarthdcp_xfer: uarthdcp-xfer { rockchip,pins = <4 21 2 &pcfg_pull_up>, <4 22 2 &pcfg_pull_none>; }; }; pwm0 { pwm0_pin: pwm0-pin { rockchip,pins = <4 18 1 &pcfg_pull_none>; }; pwm0_pin_pull_down: pwm0-pin-pull-down { rockchip,pins = <4 18 1 &pcfg_pull_down>; }; vop0_pwm_pin: vop0-pwm-pin { rockchip,pins = <4 18 2 &pcfg_pull_none>; }; vop1_pwm_pin: vop1-pwm-pin { rockchip,pins = <4 18 3 &pcfg_pull_none>; }; }; pwm1 { pwm1_pin: pwm1-pin { rockchip,pins = <4 22 1 &pcfg_pull_none>; }; pwm1_pin_pull_down: pwm1-pin-pull-down { rockchip,pins = <4 22 1 &pcfg_pull_down>; }; }; pwm2 { pwm2_pin: pwm2-pin { rockchip,pins = <1 19 1 &pcfg_pull_none>; }; pwm2_pin_pull_down: pwm2-pin-pull-down { rockchip,pins = <1 19 1 &pcfg_pull_down>; }; }; pwm3a { pwm3a_pin: pwm3a-pin { rockchip,pins = <0 6 1 &pcfg_pull_none>; }; }; pwm3b { pwm3b_pin: pwm3b-pin { rockchip,pins = <1 14 1 &pcfg_pull_none>; }; }; hdmi { hdmi_i2c_xfer: hdmi-i2c-xfer { rockchip,pins = <4 17 3 &pcfg_pull_none>, <4 16 3 &pcfg_pull_none>; }; hdmi_cec: hdmi-cec { rockchip,pins = <4 23 1 &pcfg_pull_none>; }; }; pcie { pcie_clkreqn_cpm: pci-clkreqn-cpm { rockchip,pins = <2 26 0 &pcfg_pull_none>; }; pcie_clkreqnb_cpm: pci-clkreqnb-cpm { rockchip,pins = <4 24 0 &pcfg_pull_none>; }; }; }; }; # 11 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" 2 # 1 "arch/arm64/boot/dts/rockchip/rk3399-opp.dtsi" 1 / { cluster0_opp: opp-table-0 { compatible = "operating-points-v2"; opp-shared; opp00 { opp-hz = /bits/ 64 <408000000>; opp-microvolt = <825000 825000 1250000>; clock-latency-ns = <40000>; }; opp01 { opp-hz = /bits/ 64 <600000000>; opp-microvolt = <825000 825000 1250000>; }; opp02 { opp-hz = /bits/ 64 <816000000>; opp-microvolt = <850000 850000 1250000>; }; opp03 { opp-hz = /bits/ 64 <1008000000>; opp-microvolt = <925000 925000 1250000>; }; opp04 { opp-hz = /bits/ 64 <1200000000>; opp-microvolt = <1000000 1000000 1250000>; }; opp05 { opp-hz = /bits/ 64 <1416000000>; opp-microvolt = <1125000 1125000 1250000>; }; }; cluster1_opp: opp-table-1 { compatible = "operating-points-v2"; opp-shared; opp00 { opp-hz = /bits/ 64 <408000000>; opp-microvolt = <825000 825000 1250000>; clock-latency-ns = <40000>; }; opp01 { opp-hz = /bits/ 64 <600000000>; opp-microvolt = <825000 825000 1250000>; }; opp02 { opp-hz = /bits/ 64 <816000000>; opp-microvolt = <825000 825000 1250000>; }; opp03 { opp-hz = /bits/ 64 <1008000000>; opp-microvolt = <875000 875000 1250000>; }; opp04 { opp-hz = /bits/ 64 <1200000000>; opp-microvolt = <950000 950000 1250000>; }; opp05 { opp-hz = /bits/ 64 <1416000000>; opp-microvolt = <1025000 1025000 1250000>; }; opp06 { opp-hz = /bits/ 64 <1608000000>; opp-microvolt = <1100000 1100000 1250000>; }; opp07 { opp-hz = /bits/ 64 <1800000000>; opp-microvolt = <1200000 1200000 1250000>; }; }; gpu_opp_table: opp-table-2 { compatible = "operating-points-v2"; opp00 { opp-hz = /bits/ 64 <200000000>; opp-microvolt = <825000 825000 1150000>; }; opp01 { opp-hz = /bits/ 64 <297000000>; opp-microvolt = <825000 825000 1150000>; }; opp02 { opp-hz = /bits/ 64 <400000000>; opp-microvolt = <825000 825000 1150000>; }; opp03 { opp-hz = /bits/ 64 <500000000>; opp-microvolt = <875000 875000 1150000>; }; opp04 { opp-hz = /bits/ 64 <600000000>; opp-microvolt = <925000 925000 1150000>; }; opp05 { opp-hz = /bits/ 64 <800000000>; opp-microvolt = <1100000 1100000 1150000>; }; }; dmc_opp_table: opp-table-3 { compatible = "operating-points-v2"; opp00 { opp-hz = /bits/ 64 <328000000>; opp-microvolt = <900000>; }; opp01 { opp-hz = /bits/ 64 <416000000>; opp-microvolt = <900000>; }; opp02 { opp-hz = /bits/ 64 <666000000>; opp-microvolt = <900000>; }; opp03 { opp-hz = /bits/ 64 <856000000>; opp-microvolt = <900000>; }; opp04 { opp-hz = /bits/ 64 <928000000>; opp-microvolt = <925000>; }; }; }; &cpu_l0 { operating-points-v2 = <&cluster0_opp>; }; &cpu_l1 { operating-points-v2 = <&cluster0_opp>; }; &cpu_l2 { operating-points-v2 = <&cluster0_opp>; }; &cpu_l3 { operating-points-v2 = <&cluster0_opp>; }; &cpu_b0 { operating-points-v2 = <&cluster1_opp>; }; &cpu_b1 { operating-points-v2 = <&cluster1_opp>; }; &dmc { operating-points-v2 = <&dmc_opp_table>; }; &gpu { operating-points-v2 = <&gpu_opp_table>; }; # 12 "arch/arm64/boot/dts/rockchip/rk3399-eaidk-610.dts" 2 / { model = "OPEN AI LAB EAIDK-610"; compatible = "openailab,eaidk-610", "rockchip,rk3399"; aliases { mmc0 = &sdio0; mmc1 = &sdmmc; mmc2 = &sdhci; }; backlight: backlight { compatible = "pwm-backlight"; pwms = <&pwm0 0 25000 0>; brightness-levels = < 0 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 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255>; default-brightness-level = <200>; }; clkin_gmac: external-gmac-clock { compatible = "fixed-clock"; clock-frequency = <125000000>; clock-output-names = "clkin_gmac"; #clock-cells = <0>; }; dc_12v: dc-12v { compatible = "regulator-fixed"; regulator-name = "dc_12v"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <12000000>; regulator-max-microvolt = <12000000>; }; gpio-keys { compatible = "gpio-keys"; autorepeat; pinctrl-names = "default"; pinctrl-0 = <&pwrbtn>; key-power { debounce-interval = <100>; gpios = <&gpio0 5 1>; label = "GPIO Key Power"; linux,code = <116>; wakeup-source; }; }; leds { compatible = "gpio-leds"; pinctrl-names = "default"; pinctrl-0 = <&work_led_pin>, <&user_led_pin>, <&heartbeat_led_pin>, <&wlan_active_led_pin>, <&bt_active_led_pin>; work_led: led-0 { label = "blue:work"; default-state = "on"; gpios = <&gpio0 2 0>; }; user_led: led-1 { label = "read:user"; default-state = "off"; gpios = <&gpio0 12 0>; }; heartbeat_led: led-2 { label = "green:heartbeat"; linux,default-trigger = "heartbeat"; gpios = <&gpio0 13 0>; }; wlan_active_led: led-3 { label = "yellow:wlan"; gpios = <&gpio2 27 0>; linux,default-trigger = "phy0tx"; default-state = "off"; }; bt_active_led: led-4 { label = "blue:bt"; gpios = <&gpio2 28 0>; linux,default-trigger = "hci0-power"; default-state = "off"; }; }; rt5651-sound { compatible = "simple-audio-card"; simple-audio-card,name = "realtek,rt5651-codec"; simple-audio-card,format = "i2s"; simple-audio-card,mclk-fs = <256>; simple-audio-card,widgets = "Microphone", "Mic Jack", "Headphone", "Headphone Jack"; simple-audio-card,routing = "Mic Jack", "MICBIAS1", "IN1P", "Mic Jack", "Headphone Jack", "HPOL", "Headphone Jack", "HPOR"; simple-audio-card,cpu { sound-dai = <&i2s1>; }; simple-audio-card,codec { sound-dai = <&rt5651>; }; }; sdio_pwrseq: sdio-pwrseq { compatible = "mmc-pwrseq-simple"; clocks = <&rk808 1>; clock-names = "ext_clock"; pinctrl-names = "default"; pinctrl-0 = <&wifi_enable_h>; reset-gpios = <&gpio0 10 1>; }; vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 { compatible = "regulator-fixed"; regulator-name = "vcc1v8_s3"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; vin-supply = <&vcc_1v8>; }; vcc3v3_sys: vcc3v3-sys { compatible = "regulator-fixed"; regulator-name = "vcc3v3_sys"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; vin-supply = <&dc_12v>; }; vcc5v0_sys: vcc5v0-sys { compatible = "regulator-fixed"; regulator-name = "vcc5v0_sys"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; vin-supply = <&dc_12v>; }; vcc5v0_host1: vcc5v0-host1-regulator { compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio0 6 0>; pinctrl-names = "default"; pinctrl-0 = <&vcc5v0_host1_en>; regulator-name = "vcc5v0_host1"; regulator-always-on; vin-supply = <&vcc5v0_sys>; }; vcc5v0_host3: vcc5v0-host3-regulator { compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio0 8 0>; pinctrl-names = "default"; pinctrl-0 = <&vcc5v0_host3_en>; regulator-name = "vcc5v0_host3"; regulator-always-on; vin-supply = <&vcc5v0_sys>; }; vcc5v0_typec: vcc5v0-typec-regulator { compatible = "regulator-fixed"; enable-active-high; gpio = <&gpio4 21 0>; pinctrl-names = "default"; pinctrl-0 = <&vcc5v0_typec_en>; regulator-name = "vcc5v0_typec"; regulator-always-on; vin-supply = <&vcc3v3_sys>; }; vdd_log: vdd-log { compatible = "regulator-fixed"; regulator-name = "vdd_log"; regulator-always-on; regulator-boot-on; regulator-min-microvolt = <900000>; regulator-max-microvolt = <900000>; }; }; &cpu_l0 { cpu-supply = <&vdd_cpu_l>; }; &cpu_l1 { cpu-supply = <&vdd_cpu_l>; }; &cpu_l2 { cpu-supply = <&vdd_cpu_l>; }; &cpu_l3 { cpu-supply = <&vdd_cpu_l>; }; &cpu_b0 { cpu-supply = <&vdd_cpu_b>; }; &cpu_b1 { cpu-supply = <&vdd_cpu_b>; }; &emmc_phy { status = "okay"; }; &gmac { assigned-clocks = <&cru 166>; assigned-clock-parents = <&clkin_gmac>; clock_in_out = "input"; phy-supply = <&vcc_lan>; phy-mode = "rgmii"; pinctrl-names = "default"; pinctrl-0 = <&rgmii_pins>; snps,reset-gpio = <&gpio3 15 1>; snps,reset-active-low; snps,reset-delays-us = <0 10000 50000>; tx_delay = <0x28>; rx_delay = <0x11>; status = "okay"; }; &gpu { mali-supply = <&vdd_gpu>; status = "okay"; }; &hdmi { ddc-i2c-bus = <&i2c3>; pinctrl-names = "default"; pinctrl-0 = <&hdmi_cec>; status = "okay"; }; &i2c0 { status = "okay"; rk808: pmic@1b { compatible = "rockchip,rk808"; reg = <0x1b>; interrupt-parent = <&gpio1>; interrupts = <21 8>; pinctrl-names = "default"; pinctrl-0 = <&pmic_int_l>; rockchip,system-power-controller; wakeup-source; #clock-cells = <1>; clock-output-names = "xin32k", "rk808-clkout2"; vcc1-supply = <&vcc3v3_sys>; vcc2-supply = <&vcc3v3_sys>; vcc3-supply = <&vcc3v3_sys>; vcc4-supply = <&vcc3v3_sys>; vcc6-supply = <&vcc3v3_sys>; vcc7-supply = <&vcc3v3_sys>; vcc8-supply = <&vcc3v3_sys>; vcc9-supply = <&vcc3v3_sys>; vcc10-supply = <&vcc3v3_sys>; vcc11-supply = <&vcc3v3_sys>; vcc12-supply = <&vcc3v3_sys>; vddio-supply = <&vcc_3v0>; regulators { vdd_center: DCDC_REG1 { regulator-name = "vdd_center"; regulator-min-microvolt = <750000>; regulator-max-microvolt = <1350000>; regulator-ramp-delay = <6001>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vdd_cpu_l: DCDC_REG2 { regulator-name = "vdd_cpu_l"; regulator-min-microvolt = <750000>; regulator-max-microvolt = <1350000>; regulator-ramp-delay = <6001>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc_ddr: DCDC_REG3 { regulator-name = "vcc_ddr"; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; }; }; vcc_1v8: DCDC_REG4 { regulator-name = "vcc_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1800000>; }; }; vcc1v8_dvp: LDO_REG1 { regulator-name = "vcc1v8_dvp"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc2v8_dvp: LDO_REG2 { regulator-name = "vcc2v8_dvp"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc1v8_pmu: LDO_REG3 { regulator-name = "vcc1v8_pmu"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1800000>; }; }; vcc_sdio: LDO_REG4 { regulator-name = "vcc_sdio"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <3000000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3000000>; }; }; vcca3v0_codec: LDO_REG5 { regulator-name = "vcca3v0_codec"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc_1v5: LDO_REG6 { regulator-name = "vcc_1v5"; regulator-min-microvolt = <1500000>; regulator-max-microvolt = <1500000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <1500000>; }; }; vcca1v8_codec: LDO_REG7 { regulator-name = "vcca1v8_codec"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc_3v0: LDO_REG8 { regulator-name = "vcc_3v0"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-on-in-suspend; regulator-suspend-microvolt = <3000000>; }; }; vcc3v3_s3: vcc_lan: SWITCH_REG1 { regulator-name = "vcc3v3_s3"; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; vcc3v3_s0: SWITCH_REG2 { regulator-name = "vcc3v3_s0"; regulator-always-on; regulator-boot-on; regulator-state-mem { regulator-off-in-suspend; }; }; }; }; vdd_cpu_b: regulator@40 { compatible = "silergy,syr827"; reg = <0x40>; fcs,suspend-voltage-selector = <1>; regulator-name = "vdd_cpu_b"; pinctrl-names = "default"; pinctrl-0 = <&vsel1_pin>; regulator-min-microvolt = <712500>; regulator-max-microvolt = <1500000>; regulator-ramp-delay = <1000>; regulator-always-on; regulator-boot-on; vin-supply = <&vcc3v3_sys>; regulator-state-mem { regulator-off-in-suspend; }; }; vdd_gpu: regulator@41 { compatible = "silergy,syr828"; reg = <0x41>; fcs,suspend-voltage-selector = <1>; regulator-name = "vdd_gpu"; pinctrl-names = "default"; pinctrl-0 = <&vsel2_pin>; regulator-min-microvolt = <712500>; regulator-max-microvolt = <1500000>; regulator-ramp-delay = <1000>; regulator-always-on; regulator-boot-on; vin-supply = <&vcc3v3_sys>; regulator-state-mem { regulator-off-in-suspend; }; }; }; &i2c1 { i2c-scl-rising-time-ns = <300>; i2c-scl-falling-time-ns = <15>; status = "okay"; rt5651: audio-codec@1a { compatible = "rockchip,rt5651"; reg = <0x1a>; clocks = <&cru 89>; clock-names = "mclk"; hp-det-gpio = <&gpio4 28 1>; spk-con-gpio = <&gpio0 11 0>; #sound-dai-cells = <0>; }; }; &i2c3 { i2c-scl-rising-time-ns = <450>; i2c-scl-falling-time-ns = <15>; status = "okay"; }; &i2c4 { i2c-scl-rising-time-ns = <600>; i2c-scl-falling-time-ns = <20>; status = "okay"; fusb0: typec-portc@22 { compatible = "fcs,fusb302"; reg = <0x22>; interrupt-parent = <&gpio1>; interrupts = <2 8>; pinctrl-names = "default"; pinctrl-0 = <&fusb0_int>; vbus-supply = <&vcc5v0_typec>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usbc0_role_sw: endpoint@0 { remote-endpoint = <&dwc3_0_role_switch>; }; }; }; connector { compatible = "usb-c-connector"; data-role = "dual"; label = "USB-C"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; usbc_hs: endpoint { remote-endpoint = <&u2phy0_typec_hs>; }; }; port@1 { reg = <1>; usbc_ss: endpoint { remote-endpoint = <&tcphy0_typec_ss>; }; }; }; }; }; }; &i2s1 { rockchip,playback-channels = <2>; rockchip,capture-channels = <2>; status = "okay"; }; &i2s2 { status = "okay"; }; &io_domains { status = "okay"; audio-supply = <&vcca1v8_codec>; bt656-supply = <&vcc_3v0>; gpio1830-supply = <&vcc_3v0>; sdmmc-supply = <&vcc_sdio>; }; &pmu_io_domains { status = "okay"; pmu1830-supply = <&vcc_3v0>; }; &pinctrl { buttons { pwrbtn: pwrbtn { rockchip,pins = <0 5 0 &pcfg_pull_up>; }; }; bt { bt_enable_h: bt-enable-h { rockchip,pins = <0 9 0 &pcfg_pull_none>; }; bt_host_wake_l: bt-host-wake-l { rockchip,pins = <0 4 0 &pcfg_pull_none>; }; bt_wake_l: bt-wake-l { rockchip,pins = <2 26 0 &pcfg_pull_none>; }; }; fusb302x { fusb0_int: fusb0-int { rockchip,pins = <1 2 0 &pcfg_pull_up>; }; }; lcd-panel { lcd_panel_reset: lcd-panel-reset { rockchip,pins = <4 30 0 &pcfg_pull_up>; }; }; leds { work_led_pin: work-led-pin { rockchip,pins = <0 2 0 &pcfg_pull_none>; }; user_led_pin: user-led-pin { rockchip,pins = <0 12 0 &pcfg_pull_none>; }; heartbeat_led_pin: heartbeat-led-pin { rockchip,pins = <0 13 0 &pcfg_pull_none>; }; wlan_active_led_pin: wlan-led-pin { rockchip,pins = <2 27 0 &pcfg_pull_none>; }; bt_active_led_pin: bt-led-pin { rockchip,pins = <2 28 0 &pcfg_pull_none>; }; }; pmic { pmic_int_l: pmic-int-l { rockchip,pins = <1 21 0 &pcfg_pull_up>; }; vsel1_pin: vsel1-pin { rockchip,pins = <1 17 0 &pcfg_pull_down>; }; vsel2_pin: vsel2-pin { rockchip,pins = <1 14 0 &pcfg_pull_down>; }; }; rt5651 { rt5651_hpcon: rt5640-hpcon { rockchip,pins = <4 28 0 &pcfg_pull_none>; }; }; sdio-pwrseq { wifi_enable_h: wifi-enable-h { rockchip,pins = <0 10 0 &pcfg_pull_none>; }; }; usb-typec { vcc5v0_typec_en: vcc5v0_typec_en { rockchip,pins = <4 21 0 &pcfg_pull_up>; }; }; usb2 { vcc5v0_host3_en: vcc5v0-host3-en { rockchip,pins = <0 8 0 &pcfg_pull_none>; }; vcc5v0_host1_en: vcc5v0-host1-en { rockchip,pins = <0 6 0 &pcfg_pull_none>; }; }; wifi { wifi_host_wake_l: wifi-host-wake-l { rockchip,pins = <0 3 0 &pcfg_pull_none>; }; }; }; &pwm0 { status = "okay"; }; &saradc { vref-supply = <&vcca1v8_s3>; status = "okay"; }; &sdio0 { #address-cells = <1>; #size-cells = <0>; bus-width = <4>; clock-frequency = <50000000>; cap-sdio-irq; cap-sd-highspeed; keep-power-in-suspend; mmc-pwrseq = <&sdio_pwrseq>; non-removable; pinctrl-names = "default"; pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; sd-uhs-sdr104; status = "okay"; brcmf: wifi@1 { compatible = "brcm,bcm4329-fmac"; reg = <1>; interrupt-parent = <&gpio0>; interrupts = <3 4>; interrupt-names = "host-wake"; pinctrl-names = "default"; pinctrl-0 = <&wifi_host_wake_l>; }; }; &sdmmc { bus-width = <4>; cap-mmc-highspeed; cap-sd-highspeed; cd-gpios = <&gpio0 7 1>; disable-wp; max-frequency = <150000000>; pinctrl-names = "default"; pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_bus4>; status = "okay"; }; &sdhci { bus-width = <8>; non-removable; status = "okay"; }; &tcphy0 { status = "okay"; }; &tcphy0_usb3 { orientation-switch; port { tcphy0_typec_ss: endpoint { remote-endpoint = <&usbc_ss>; }; }; }; &tcphy1 { status = "okay"; }; &tsadc { rockchip,hw-tshut-mode = <1>; rockchip,hw-tshut-polarity = <1>; status = "okay"; }; &u2phy0 { status = "okay"; u2phy0_otg: otg-port { status = "okay"; }; u2phy0_host: host-port { phy-supply = <&vcc5v0_host3>; status = "okay"; }; port { u2phy0_typec_hs: endpoint { remote-endpoint = <&usbc_hs>; }; }; }; &u2phy1 { status = "okay"; u2phy1_otg: otg-port { status = "okay"; }; u2phy1_host: host-port { phy-supply = <&vcc5v0_host3>; status = "okay"; }; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; status = "okay"; bluetooth { compatible = "brcm,bcm4345c5"; clocks = <&rk808 1>; clock-names = "lpo"; device-wakeup-gpios = <&gpio2 26 0>; host-wakeup-gpios = <&gpio0 4 0>; shutdown-gpios = <&gpio0 9 0>; max-speed = <1500000>; pinctrl-names = "default"; pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_enable_h>; vbat-supply = <&vcc3v3_sys>; vddio-supply = <&vcc_1v8>; }; }; &uart2 { status = "okay"; }; &usb_host0_ehci { status = "okay"; }; &usb_host0_ohci { status = "okay"; }; &usb_host1_ehci { status = "okay"; }; &usb_host1_ohci { status = "okay"; }; &usbdrd3_0 { status = "okay"; }; &usbdrd_dwc3_0 { status = "okay"; usb-role-switch; port { #address-cells = <1>; #size-cells = <0>; dwc3_0_role_switch: endpoint@0 { reg = <0>; remote-endpoint = <&usbc0_role_sw>; }; }; }; &usbdrd3_1 { status = "okay"; }; &usbdrd_dwc3_1 { status = "okay"; dr_mode = "host"; }; &vopb { status = "okay"; }; &vopb_mmu { status = "okay"; }; &vopl { status = "okay"; }; &vopl_mmu { status = "okay"; };