1*4882a593Smuzhiyun// SPDX-License-Identifier: (GPL-2.0+ OR MIT) 2*4882a593Smuzhiyun/* 3*4882a593Smuzhiyun * Copyright (c) 2020 Rockchip Electronics Co., Ltd. 4*4882a593Smuzhiyun * 5*4882a593Smuzhiyun */ 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun/dts-v1/; 8*4882a593Smuzhiyun 9*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h> 10*4882a593Smuzhiyun#include <dt-bindings/display/media-bus-format.h> 11*4882a593Smuzhiyun#include <dt-bindings/pinctrl/rockchip.h> 12*4882a593Smuzhiyun#include "rk3566.dtsi" 13*4882a593Smuzhiyun#include "rk3566-evb.dtsi" 14*4882a593Smuzhiyun 15*4882a593Smuzhiyun/ { 16*4882a593Smuzhiyun model = "Rockchip RK3566 EVB2 LP4X V10 Board"; 17*4882a593Smuzhiyun compatible = "rockchip,rk3566-evb2-lp4x-v10", "rockchip,rk3566"; 18*4882a593Smuzhiyun 19*4882a593Smuzhiyun vcc_camera: vcc-camera-regulator { 20*4882a593Smuzhiyun compatible = "regulator-fixed"; 21*4882a593Smuzhiyun gpio = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>; 22*4882a593Smuzhiyun pinctrl-names = "default"; 23*4882a593Smuzhiyun pinctrl-0 = <&camera_pwr>; 24*4882a593Smuzhiyun regulator-name = "vcc_camera"; 25*4882a593Smuzhiyun enable-active-high; 26*4882a593Smuzhiyun regulator-always-on; 27*4882a593Smuzhiyun regulator-boot-on; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun vcc3v3_pcie: gpio-regulator { 31*4882a593Smuzhiyun compatible = "regulator-fixed"; 32*4882a593Smuzhiyun regulator-name = "vcc3v3_pcie"; 33*4882a593Smuzhiyun regulator-min-microvolt = <3300000>; 34*4882a593Smuzhiyun regulator-max-microvolt = <3300000>; 35*4882a593Smuzhiyun enable-active-high; 36*4882a593Smuzhiyun gpio = <&gpio0 RK_PC2 GPIO_ACTIVE_HIGH>; 37*4882a593Smuzhiyun startup-delay-us = <5000>; 38*4882a593Smuzhiyun vin-supply = <&dc_12v>; 39*4882a593Smuzhiyun }; 40*4882a593Smuzhiyun}; 41*4882a593Smuzhiyun 42*4882a593Smuzhiyun&bt_sound { 43*4882a593Smuzhiyun status = "disabled"; 44*4882a593Smuzhiyun simple-audio-card,cpu { 45*4882a593Smuzhiyun sound-dai = <&i2s2_2ch>; 46*4882a593Smuzhiyun }; 47*4882a593Smuzhiyun}; 48*4882a593Smuzhiyun 49*4882a593Smuzhiyun&combphy1_usq { 50*4882a593Smuzhiyun status = "okay"; 51*4882a593Smuzhiyun}; 52*4882a593Smuzhiyun 53*4882a593Smuzhiyun&combphy2_psq { 54*4882a593Smuzhiyun status = "okay"; 55*4882a593Smuzhiyun}; 56*4882a593Smuzhiyun 57*4882a593Smuzhiyun&csi2_dphy_hw { 58*4882a593Smuzhiyun status = "okay"; 59*4882a593Smuzhiyun}; 60*4882a593Smuzhiyun 61*4882a593Smuzhiyun&csi2_dphy0 { 62*4882a593Smuzhiyun status = "okay"; 63*4882a593Smuzhiyun /* 64*4882a593Smuzhiyun * dphy0 only used for full mode, 65*4882a593Smuzhiyun * full mode and split mode are mutually exclusive 66*4882a593Smuzhiyun */ 67*4882a593Smuzhiyun ports { 68*4882a593Smuzhiyun #address-cells = <1>; 69*4882a593Smuzhiyun #size-cells = <0>; 70*4882a593Smuzhiyun 71*4882a593Smuzhiyun port@0 { 72*4882a593Smuzhiyun reg = <0>; 73*4882a593Smuzhiyun #address-cells = <1>; 74*4882a593Smuzhiyun #size-cells = <0>; 75*4882a593Smuzhiyun 76*4882a593Smuzhiyun dphy0_in: endpoint@1 { 77*4882a593Smuzhiyun reg = <1>; 78*4882a593Smuzhiyun remote-endpoint = <&gc8034_out>; 79*4882a593Smuzhiyun data-lanes = <1 2 3 4>; 80*4882a593Smuzhiyun }; 81*4882a593Smuzhiyun 82*4882a593Smuzhiyun mipi_in_ucam1: endpoint@2 { 83*4882a593Smuzhiyun reg = <2>; 84*4882a593Smuzhiyun remote-endpoint = <&ov5695_out>; 85*4882a593Smuzhiyun data-lanes = <1 2>; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun mipi_in_ucam2: endpoint@3 { 89*4882a593Smuzhiyun reg = <3>; 90*4882a593Smuzhiyun remote-endpoint = <&gc5025_out>; 91*4882a593Smuzhiyun data-lanes = <1 2>; 92*4882a593Smuzhiyun }; 93*4882a593Smuzhiyun }; 94*4882a593Smuzhiyun 95*4882a593Smuzhiyun port@1 { 96*4882a593Smuzhiyun reg = <1>; 97*4882a593Smuzhiyun #address-cells = <1>; 98*4882a593Smuzhiyun #size-cells = <0>; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun dphy0_out: endpoint@1 { 101*4882a593Smuzhiyun reg = <1>; 102*4882a593Smuzhiyun remote-endpoint = <&isp0_in_dphy0>; 103*4882a593Smuzhiyun }; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun}; 107*4882a593Smuzhiyun 108*4882a593Smuzhiyun&csi2_dphy1 { 109*4882a593Smuzhiyun status = "disabled"; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun /* 112*4882a593Smuzhiyun * dphy1 only used for split mode, 113*4882a593Smuzhiyun * can be used concurrently with dphy2 114*4882a593Smuzhiyun * full mode and split mode are mutually exclusive 115*4882a593Smuzhiyun */ 116*4882a593Smuzhiyun ports { 117*4882a593Smuzhiyun #address-cells = <1>; 118*4882a593Smuzhiyun #size-cells = <0>; 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun port@0 { 121*4882a593Smuzhiyun reg = <0>; 122*4882a593Smuzhiyun #address-cells = <1>; 123*4882a593Smuzhiyun #size-cells = <0>; 124*4882a593Smuzhiyun 125*4882a593Smuzhiyun dphy1_in: endpoint@1 { 126*4882a593Smuzhiyun reg = <1>; 127*4882a593Smuzhiyun //remote-endpoint = <&ov5695_out>; 128*4882a593Smuzhiyun data-lanes = <1 2>; 129*4882a593Smuzhiyun }; 130*4882a593Smuzhiyun }; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun port@1 { 133*4882a593Smuzhiyun reg = <1>; 134*4882a593Smuzhiyun #address-cells = <1>; 135*4882a593Smuzhiyun #size-cells = <0>; 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun dphy1_out: endpoint@1 { 138*4882a593Smuzhiyun reg = <1>; 139*4882a593Smuzhiyun remote-endpoint = <&isp0_in>; 140*4882a593Smuzhiyun }; 141*4882a593Smuzhiyun }; 142*4882a593Smuzhiyun }; 143*4882a593Smuzhiyun}; 144*4882a593Smuzhiyun 145*4882a593Smuzhiyun&csi2_dphy2 { 146*4882a593Smuzhiyun status = "disabled"; 147*4882a593Smuzhiyun 148*4882a593Smuzhiyun /* 149*4882a593Smuzhiyun * dphy2 only used for split mode, 150*4882a593Smuzhiyun * can be used concurrently with dphy1 151*4882a593Smuzhiyun * full mode and split mode are mutually exclusive 152*4882a593Smuzhiyun */ 153*4882a593Smuzhiyun ports { 154*4882a593Smuzhiyun #address-cells = <1>; 155*4882a593Smuzhiyun #size-cells = <0>; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun port@0 { 158*4882a593Smuzhiyun reg = <0>; 159*4882a593Smuzhiyun #address-cells = <1>; 160*4882a593Smuzhiyun #size-cells = <0>; 161*4882a593Smuzhiyun 162*4882a593Smuzhiyun dphy2_in: endpoint@1 { 163*4882a593Smuzhiyun reg = <1>; 164*4882a593Smuzhiyun //remote-endpoint = <&gc5025_out>; 165*4882a593Smuzhiyun data-lanes = <1 2>; 166*4882a593Smuzhiyun }; 167*4882a593Smuzhiyun }; 168*4882a593Smuzhiyun 169*4882a593Smuzhiyun port@1 { 170*4882a593Smuzhiyun reg = <1>; 171*4882a593Smuzhiyun #address-cells = <1>; 172*4882a593Smuzhiyun #size-cells = <0>; 173*4882a593Smuzhiyun 174*4882a593Smuzhiyun dphy2_out: endpoint@1 { 175*4882a593Smuzhiyun reg = <1>; 176*4882a593Smuzhiyun remote-endpoint = <&mipi_csi2_input>; 177*4882a593Smuzhiyun }; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun}; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun/* 183*4882a593Smuzhiyun * video_phy0 needs to be enabled 184*4882a593Smuzhiyun * when dsi0 is enabled 185*4882a593Smuzhiyun */ 186*4882a593Smuzhiyun&dsi0 { 187*4882a593Smuzhiyun status = "okay"; 188*4882a593Smuzhiyun}; 189*4882a593Smuzhiyun 190*4882a593Smuzhiyun&dsi0_in_vp0 { 191*4882a593Smuzhiyun status = "disabled"; 192*4882a593Smuzhiyun}; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun&dsi0_in_vp1 { 195*4882a593Smuzhiyun status = "okay"; 196*4882a593Smuzhiyun}; 197*4882a593Smuzhiyun 198*4882a593Smuzhiyun&dsi0_panel { 199*4882a593Smuzhiyun power-supply = <&vcc3v3_lcd0_n>; 200*4882a593Smuzhiyun reset-gpios = <&gpio3 RK_PA3 GPIO_ACTIVE_LOW>; 201*4882a593Smuzhiyun pinctrl-names = "default"; 202*4882a593Smuzhiyun pinctrl-0 = <&lcd0_rst_gpio>; 203*4882a593Smuzhiyun}; 204*4882a593Smuzhiyun 205*4882a593Smuzhiyun/* 206*4882a593Smuzhiyun * video_phy1 needs to be enabled 207*4882a593Smuzhiyun * when dsi1 is enabled 208*4882a593Smuzhiyun */ 209*4882a593Smuzhiyun&dsi1 { 210*4882a593Smuzhiyun status = "disabled"; 211*4882a593Smuzhiyun}; 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun&dsi1_in_vp0 { 214*4882a593Smuzhiyun status = "disabled"; 215*4882a593Smuzhiyun}; 216*4882a593Smuzhiyun 217*4882a593Smuzhiyun&dsi1_in_vp1 { 218*4882a593Smuzhiyun status = "disabled"; 219*4882a593Smuzhiyun}; 220*4882a593Smuzhiyun 221*4882a593Smuzhiyun&dsi1_panel { 222*4882a593Smuzhiyun power-supply = <&vcc3v3_lcd1_n>; 223*4882a593Smuzhiyun reset-gpios = <&gpio3 RK_PA4 GPIO_ACTIVE_LOW>; 224*4882a593Smuzhiyun pinctrl-names = "default"; 225*4882a593Smuzhiyun pinctrl-0 = <&lcd1_rst_gpio>; 226*4882a593Smuzhiyun}; 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun&gmac1 { 229*4882a593Smuzhiyun phy-mode = "rgmii"; 230*4882a593Smuzhiyun clock_in_out = "output"; 231*4882a593Smuzhiyun 232*4882a593Smuzhiyun snps,reset-gpio = <&gpio3 RK_PC2 GPIO_ACTIVE_LOW>; 233*4882a593Smuzhiyun snps,reset-active-low; 234*4882a593Smuzhiyun /* Reset time is 20ms, 100ms for rtl8211f */ 235*4882a593Smuzhiyun snps,reset-delays-us = <0 20000 100000>; 236*4882a593Smuzhiyun 237*4882a593Smuzhiyun assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>; 238*4882a593Smuzhiyun assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&cru CLK_MAC1_2TOP>; 239*4882a593Smuzhiyun assigned-clock-rates = <0>, <125000000>; 240*4882a593Smuzhiyun 241*4882a593Smuzhiyun pinctrl-names = "default"; 242*4882a593Smuzhiyun pinctrl-0 = <&gmac1m1_miim 243*4882a593Smuzhiyun &gmac1m1_tx_bus2 244*4882a593Smuzhiyun &gmac1m1_rx_bus2 245*4882a593Smuzhiyun &gmac1m1_rgmii_clk 246*4882a593Smuzhiyun &gmac1m1_rgmii_bus>; 247*4882a593Smuzhiyun 248*4882a593Smuzhiyun tx_delay = <0x4f>; 249*4882a593Smuzhiyun rx_delay = <0x25>; 250*4882a593Smuzhiyun 251*4882a593Smuzhiyun phy-handle = <&rgmii_phy0>; 252*4882a593Smuzhiyun status = "okay"; 253*4882a593Smuzhiyun}; 254*4882a593Smuzhiyun 255*4882a593Smuzhiyun&i2c2 { 256*4882a593Smuzhiyun status = "okay"; 257*4882a593Smuzhiyun pinctrl-0 = <&i2c2m1_xfer>; 258*4882a593Smuzhiyun 259*4882a593Smuzhiyun /* split mode: lane0/1 */ 260*4882a593Smuzhiyun ov5695: ov5695@36 { 261*4882a593Smuzhiyun status = "okay"; 262*4882a593Smuzhiyun compatible = "ovti,ov5695"; 263*4882a593Smuzhiyun reg = <0x36>; 264*4882a593Smuzhiyun clocks = <&cru CLK_CIF_OUT>; 265*4882a593Smuzhiyun clock-names = "xvclk"; 266*4882a593Smuzhiyun power-domains = <&power RK3568_PD_VI>; 267*4882a593Smuzhiyun pinctrl-names = "default"; 268*4882a593Smuzhiyun pinctrl-0 = <&cif_clk>; 269*4882a593Smuzhiyun reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_HIGH>; 270*4882a593Smuzhiyun pwdn-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_HIGH>; 271*4882a593Smuzhiyun /*power-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;*/ 272*4882a593Smuzhiyun rockchip,camera-module-index = <0>; 273*4882a593Smuzhiyun rockchip,camera-module-facing = "back"; 274*4882a593Smuzhiyun rockchip,camera-module-name = "TongJu"; 275*4882a593Smuzhiyun rockchip,camera-module-lens-name = "CHT842-MD"; 276*4882a593Smuzhiyun port { 277*4882a593Smuzhiyun ov5695_out: endpoint { 278*4882a593Smuzhiyun remote-endpoint = <&mipi_in_ucam1>; 279*4882a593Smuzhiyun data-lanes = <1 2>; 280*4882a593Smuzhiyun }; 281*4882a593Smuzhiyun }; 282*4882a593Smuzhiyun }; 283*4882a593Smuzhiyun 284*4882a593Smuzhiyun /* split mode: lane:2/3 */ 285*4882a593Smuzhiyun gc5025: gc5025@37 { 286*4882a593Smuzhiyun status = "okay"; 287*4882a593Smuzhiyun compatible = "galaxycore,gc5025"; 288*4882a593Smuzhiyun reg = <0x37>; 289*4882a593Smuzhiyun clocks = <&pmucru CLK_WIFI>; 290*4882a593Smuzhiyun clock-names = "xvclk"; 291*4882a593Smuzhiyun pinctrl-names = "default"; 292*4882a593Smuzhiyun pinctrl-0 = <&refclk_pins>; 293*4882a593Smuzhiyun reset-gpios = <&gpio3 RK_PA5 GPIO_ACTIVE_LOW>; 294*4882a593Smuzhiyun pwdn-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>; 295*4882a593Smuzhiyun power-domains = <&power RK3568_PD_VI>; 296*4882a593Smuzhiyun /*power-gpios = <&gpio0 RK_PC1 GPIO_ACTIVE_HIGH>;*/ 297*4882a593Smuzhiyun rockchip,camera-module-index = <1>; 298*4882a593Smuzhiyun rockchip,camera-module-facing = "front"; 299*4882a593Smuzhiyun rockchip,camera-module-name = "TongJu"; 300*4882a593Smuzhiyun rockchip,camera-module-lens-name = "CHT842-MD"; 301*4882a593Smuzhiyun port { 302*4882a593Smuzhiyun gc5025_out: endpoint { 303*4882a593Smuzhiyun remote-endpoint = <&mipi_in_ucam2>; 304*4882a593Smuzhiyun data-lanes = <1 2>; 305*4882a593Smuzhiyun }; 306*4882a593Smuzhiyun }; 307*4882a593Smuzhiyun }; 308*4882a593Smuzhiyun 309*4882a593Smuzhiyun /* full mode: lane0-3 */ 310*4882a593Smuzhiyun gc8034: gc8034@37 { 311*4882a593Smuzhiyun compatible = "galaxycore,gc8034"; 312*4882a593Smuzhiyun status = "okay"; 313*4882a593Smuzhiyun reg = <0x37>; 314*4882a593Smuzhiyun clocks = <&cru CLK_CIF_OUT>; 315*4882a593Smuzhiyun clock-names = "xvclk"; 316*4882a593Smuzhiyun power-domains = <&power RK3568_PD_VI>; 317*4882a593Smuzhiyun pinctrl-names = "default"; 318*4882a593Smuzhiyun pinctrl-0 = <&cif_clk>; 319*4882a593Smuzhiyun reset-gpios = <&gpio3 RK_PA6 GPIO_ACTIVE_LOW>; 320*4882a593Smuzhiyun pwdn-gpios = <&gpio4 RK_PB2 GPIO_ACTIVE_LOW>; 321*4882a593Smuzhiyun rockchip,camera-module-index = <0>; 322*4882a593Smuzhiyun rockchip,camera-module-facing = "back"; 323*4882a593Smuzhiyun rockchip,camera-module-name = "RK-CMK-8M-2-v1"; 324*4882a593Smuzhiyun rockchip,camera-module-lens-name = "CK8401"; 325*4882a593Smuzhiyun port { 326*4882a593Smuzhiyun gc8034_out: endpoint { 327*4882a593Smuzhiyun remote-endpoint = <&dphy0_in>; 328*4882a593Smuzhiyun data-lanes = <1 2 3 4>; 329*4882a593Smuzhiyun }; 330*4882a593Smuzhiyun }; 331*4882a593Smuzhiyun }; 332*4882a593Smuzhiyun}; 333*4882a593Smuzhiyun 334*4882a593Smuzhiyun&i2c4 { 335*4882a593Smuzhiyun /* i2c4 sda conflict with camera pwdn */ 336*4882a593Smuzhiyun status = "disabled"; 337*4882a593Smuzhiyun 338*4882a593Smuzhiyun /* 339*4882a593Smuzhiyun * gc2145 needs to be disabled, 340*4882a593Smuzhiyun * when gmac1 is enabled; 341*4882a593Smuzhiyun * pinctrl conflicts; 342*4882a593Smuzhiyun */ 343*4882a593Smuzhiyun gc2145: gc2145@3c { 344*4882a593Smuzhiyun status = "disabled"; 345*4882a593Smuzhiyun compatible = "galaxycore,gc2145"; 346*4882a593Smuzhiyun reg = <0x3c>; 347*4882a593Smuzhiyun clocks = <&cru CLK_CIF_OUT>; 348*4882a593Smuzhiyun clock-names = "xvclk"; 349*4882a593Smuzhiyun power-domains = <&power RK3568_PD_VI>; 350*4882a593Smuzhiyun pinctrl-names = "default"; 351*4882a593Smuzhiyun /* conflict with gmac1m1_rgmii_pins & cif_clk*/ 352*4882a593Smuzhiyun pinctrl-0 = <&cif_clk &cif_dvp_clk &cif_dvp_bus16>; 353*4882a593Smuzhiyun 354*4882a593Smuzhiyun /*avdd-supply = <&vcc2v8_dvp>;*/ 355*4882a593Smuzhiyun /*dovdd-supply = <&vcc1v8_dvp>;*/ 356*4882a593Smuzhiyun /*dvdd-supply = <&vcc1v8_dvp>;*/ 357*4882a593Smuzhiyun 358*4882a593Smuzhiyun /*reset-gpios = <&gpio3 RK_PB5 GPIO_ACTIVE_LOW>;*/ 359*4882a593Smuzhiyun pwdn-gpios = <&gpio4 RK_PA6 GPIO_ACTIVE_HIGH>; 360*4882a593Smuzhiyun rockchip,camera-module-index = <0>; 361*4882a593Smuzhiyun rockchip,camera-module-facing = "back"; 362*4882a593Smuzhiyun rockchip,camera-module-name = "CameraKing"; 363*4882a593Smuzhiyun rockchip,camera-module-lens-name = "Largan"; 364*4882a593Smuzhiyun port { 365*4882a593Smuzhiyun gc2145_out: endpoint { 366*4882a593Smuzhiyun remote-endpoint = <&dvp_in_bcam>; 367*4882a593Smuzhiyun }; 368*4882a593Smuzhiyun }; 369*4882a593Smuzhiyun }; 370*4882a593Smuzhiyun}; 371*4882a593Smuzhiyun 372*4882a593Smuzhiyun&i2s2_2ch { 373*4882a593Smuzhiyun pinctrl-0 = <&i2s2m0_sclktx &i2s2m0_lrcktx &i2s2m0_sdi &i2s2m0_sdo>; 374*4882a593Smuzhiyun rockchip,bclk-fs = <32>; 375*4882a593Smuzhiyun status = "disabled"; 376*4882a593Smuzhiyun}; 377*4882a593Smuzhiyun 378*4882a593Smuzhiyun&mdio1 { 379*4882a593Smuzhiyun rgmii_phy0: phy@0 { 380*4882a593Smuzhiyun compatible = "ethernet-phy-ieee802.3-c22"; 381*4882a593Smuzhiyun reg = <0x0>; 382*4882a593Smuzhiyun }; 383*4882a593Smuzhiyun}; 384*4882a593Smuzhiyun 385*4882a593Smuzhiyun 386*4882a593Smuzhiyun 387*4882a593Smuzhiyun/* 388*4882a593Smuzhiyun * power-supply should switche to vcc3v3_lcd1_n 389*4882a593Smuzhiyun * when mipi panel is connected to dsi1. 390*4882a593Smuzhiyun */ 391*4882a593Smuzhiyun>1x { 392*4882a593Smuzhiyun power-supply = <&vcc3v3_lcd0_n>; 393*4882a593Smuzhiyun}; 394*4882a593Smuzhiyun 395*4882a593Smuzhiyun&mipi_csi2 { 396*4882a593Smuzhiyun status = "okay"; 397*4882a593Smuzhiyun 398*4882a593Smuzhiyun ports { 399*4882a593Smuzhiyun #address-cells = <1>; 400*4882a593Smuzhiyun #size-cells = <0>; 401*4882a593Smuzhiyun 402*4882a593Smuzhiyun port@0 { 403*4882a593Smuzhiyun reg = <0>; 404*4882a593Smuzhiyun #address-cells = <1>; 405*4882a593Smuzhiyun #size-cells = <0>; 406*4882a593Smuzhiyun 407*4882a593Smuzhiyun mipi_csi2_input: endpoint@1 { 408*4882a593Smuzhiyun reg = <1>; 409*4882a593Smuzhiyun remote-endpoint = <&dphy2_out>; 410*4882a593Smuzhiyun data-lanes = <1 2>; 411*4882a593Smuzhiyun }; 412*4882a593Smuzhiyun }; 413*4882a593Smuzhiyun 414*4882a593Smuzhiyun port@1 { 415*4882a593Smuzhiyun reg = <1>; 416*4882a593Smuzhiyun #address-cells = <1>; 417*4882a593Smuzhiyun #size-cells = <0>; 418*4882a593Smuzhiyun 419*4882a593Smuzhiyun mipi_csi2_output: endpoint@0 { 420*4882a593Smuzhiyun reg = <0>; 421*4882a593Smuzhiyun remote-endpoint = <&cif_mipi_in>; 422*4882a593Smuzhiyun data-lanes = <1 2>; 423*4882a593Smuzhiyun }; 424*4882a593Smuzhiyun }; 425*4882a593Smuzhiyun }; 426*4882a593Smuzhiyun}; 427*4882a593Smuzhiyun 428*4882a593Smuzhiyun&video_phy0 { 429*4882a593Smuzhiyun status = "okay"; 430*4882a593Smuzhiyun}; 431*4882a593Smuzhiyun 432*4882a593Smuzhiyun&video_phy1 { 433*4882a593Smuzhiyun status = "disabled"; 434*4882a593Smuzhiyun}; 435*4882a593Smuzhiyun 436*4882a593Smuzhiyun&pcie2x1 { 437*4882a593Smuzhiyun reset-gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>; 438*4882a593Smuzhiyun vpcie3v3-supply = <&vcc3v3_pcie>; 439*4882a593Smuzhiyun status = "okay"; 440*4882a593Smuzhiyun}; 441*4882a593Smuzhiyun 442*4882a593Smuzhiyun&pinctrl { 443*4882a593Smuzhiyun cam { 444*4882a593Smuzhiyun camera_pwr: camera-pwr { 445*4882a593Smuzhiyun rockchip,pins = 446*4882a593Smuzhiyun /* camera power en */ 447*4882a593Smuzhiyun <0 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>; 448*4882a593Smuzhiyun }; 449*4882a593Smuzhiyun }; 450*4882a593Smuzhiyun 451*4882a593Smuzhiyun sdio-pwrseq { 452*4882a593Smuzhiyun wifi_enable_h: wifi-enable-h { 453*4882a593Smuzhiyun rockchip,pins = <2 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>; 454*4882a593Smuzhiyun }; 455*4882a593Smuzhiyun }; 456*4882a593Smuzhiyun 457*4882a593Smuzhiyun wireless-wlan { 458*4882a593Smuzhiyun wifi_host_wake_irq: wifi-host-wake-irq { 459*4882a593Smuzhiyun rockchip,pins = <2 RK_PB2 RK_FUNC_GPIO &pcfg_pull_down>; 460*4882a593Smuzhiyun }; 461*4882a593Smuzhiyun }; 462*4882a593Smuzhiyun 463*4882a593Smuzhiyun wireless-bluetooth { 464*4882a593Smuzhiyun uart1_gpios: uart1-gpios { 465*4882a593Smuzhiyun rockchip,pins = <2 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>; 466*4882a593Smuzhiyun }; 467*4882a593Smuzhiyun }; 468*4882a593Smuzhiyun 469*4882a593Smuzhiyun lcd0 { 470*4882a593Smuzhiyun lcd0_rst_gpio: lcd0-rst-gpio { 471*4882a593Smuzhiyun rockchip,pins = <3 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>; 472*4882a593Smuzhiyun }; 473*4882a593Smuzhiyun }; 474*4882a593Smuzhiyun 475*4882a593Smuzhiyun lcd1 { 476*4882a593Smuzhiyun lcd1_rst_gpio: lcd1-rst-gpio { 477*4882a593Smuzhiyun rockchip,pins = <3 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>; 478*4882a593Smuzhiyun }; 479*4882a593Smuzhiyun }; 480*4882a593Smuzhiyun}; 481*4882a593Smuzhiyun 482*4882a593Smuzhiyun&rkcif { 483*4882a593Smuzhiyun status = "okay"; 484*4882a593Smuzhiyun}; 485*4882a593Smuzhiyun 486*4882a593Smuzhiyun&rkcif_dvp { 487*4882a593Smuzhiyun status = "disabled"; 488*4882a593Smuzhiyun 489*4882a593Smuzhiyun port { 490*4882a593Smuzhiyun /* Parallel bus endpoint */ 491*4882a593Smuzhiyun dvp_in_bcam: endpoint { 492*4882a593Smuzhiyun remote-endpoint = <&gc2145_out>; 493*4882a593Smuzhiyun bus-width = <8>; 494*4882a593Smuzhiyun vsync-active = <0>; 495*4882a593Smuzhiyun hsync-active = <1>; 496*4882a593Smuzhiyun }; 497*4882a593Smuzhiyun }; 498*4882a593Smuzhiyun}; 499*4882a593Smuzhiyun 500*4882a593Smuzhiyun&rkcif_mipi_lvds { 501*4882a593Smuzhiyun status = "okay"; 502*4882a593Smuzhiyun 503*4882a593Smuzhiyun port { 504*4882a593Smuzhiyun cif_mipi_in: endpoint { 505*4882a593Smuzhiyun remote-endpoint = <&mipi_csi2_output>; 506*4882a593Smuzhiyun data-lanes = <1 2>; 507*4882a593Smuzhiyun }; 508*4882a593Smuzhiyun }; 509*4882a593Smuzhiyun}; 510*4882a593Smuzhiyun 511*4882a593Smuzhiyun&rkcif_mmu { 512*4882a593Smuzhiyun status = "okay"; 513*4882a593Smuzhiyun}; 514*4882a593Smuzhiyun 515*4882a593Smuzhiyun&rkisp { 516*4882a593Smuzhiyun status = "okay"; 517*4882a593Smuzhiyun}; 518*4882a593Smuzhiyun 519*4882a593Smuzhiyun&rkisp_mmu { 520*4882a593Smuzhiyun status = "okay"; 521*4882a593Smuzhiyun}; 522*4882a593Smuzhiyun 523*4882a593Smuzhiyun&rkisp_vir0 { 524*4882a593Smuzhiyun status = "okay"; 525*4882a593Smuzhiyun 526*4882a593Smuzhiyun port { 527*4882a593Smuzhiyun #address-cells = <1>; 528*4882a593Smuzhiyun #size-cells = <0>; 529*4882a593Smuzhiyun 530*4882a593Smuzhiyun isp0_in: endpoint@0 { 531*4882a593Smuzhiyun reg = <0>; 532*4882a593Smuzhiyun remote-endpoint = <&dphy1_out>; 533*4882a593Smuzhiyun }; 534*4882a593Smuzhiyun isp0_in_dphy0: endpoint@1 { 535*4882a593Smuzhiyun reg = <1>; 536*4882a593Smuzhiyun remote-endpoint = <&dphy0_out>; 537*4882a593Smuzhiyun }; 538*4882a593Smuzhiyun }; 539*4882a593Smuzhiyun}; 540*4882a593Smuzhiyun 541*4882a593Smuzhiyun&route_dsi0 { 542*4882a593Smuzhiyun status = "okay"; 543*4882a593Smuzhiyun connect = <&vp1_out_dsi0>; 544*4882a593Smuzhiyun}; 545*4882a593Smuzhiyun 546*4882a593Smuzhiyun&sdmmc2 { 547*4882a593Smuzhiyun status = "disabled"; 548*4882a593Smuzhiyun}; 549*4882a593Smuzhiyun 550*4882a593Smuzhiyun&sdmmc1 { 551*4882a593Smuzhiyun max-frequency = <150000000>; 552*4882a593Smuzhiyun no-sd; 553*4882a593Smuzhiyun no-mmc; 554*4882a593Smuzhiyun bus-width = <4>; 555*4882a593Smuzhiyun disable-wp; 556*4882a593Smuzhiyun cap-sd-highspeed; 557*4882a593Smuzhiyun cap-sdio-irq; 558*4882a593Smuzhiyun keep-power-in-suspend; 559*4882a593Smuzhiyun mmc-pwrseq = <&sdio_pwrseq>; 560*4882a593Smuzhiyun non-removable; 561*4882a593Smuzhiyun pinctrl-names = "default"; 562*4882a593Smuzhiyun pinctrl-0 = <&sdmmc1_bus4 &sdmmc1_cmd &sdmmc1_clk>; 563*4882a593Smuzhiyun sd-uhs-sdr104; 564*4882a593Smuzhiyun status = "okay"; 565*4882a593Smuzhiyun}; 566*4882a593Smuzhiyun 567*4882a593Smuzhiyun&sdio_pwrseq { 568*4882a593Smuzhiyun reset-gpios = <&gpio2 RK_PB1 GPIO_ACTIVE_LOW>; 569*4882a593Smuzhiyun}; 570*4882a593Smuzhiyun 571*4882a593Smuzhiyun&spdif_8ch { 572*4882a593Smuzhiyun status = "okay"; 573*4882a593Smuzhiyun pinctrl-names = "default"; 574*4882a593Smuzhiyun pinctrl-0 = <&spdifm1_tx>; 575*4882a593Smuzhiyun}; 576*4882a593Smuzhiyun 577*4882a593Smuzhiyun&uart1 { 578*4882a593Smuzhiyun status = "okay"; 579*4882a593Smuzhiyun pinctrl-names = "default"; 580*4882a593Smuzhiyun pinctrl-0 = <&uart1m0_xfer &uart1m0_ctsn>; 581*4882a593Smuzhiyun}; 582*4882a593Smuzhiyun 583*4882a593Smuzhiyun&vcc3v3_lcd0_n { 584*4882a593Smuzhiyun gpio = <&gpio0 RK_PC7 GPIO_ACTIVE_HIGH>; 585*4882a593Smuzhiyun enable-active-high; 586*4882a593Smuzhiyun}; 587*4882a593Smuzhiyun 588*4882a593Smuzhiyun&vcc3v3_lcd1_n { 589*4882a593Smuzhiyun gpio = <&gpio0 RK_PC5 GPIO_ACTIVE_HIGH>; 590*4882a593Smuzhiyun enable-active-high; 591*4882a593Smuzhiyun}; 592*4882a593Smuzhiyun&wireless_wlan { 593*4882a593Smuzhiyun pinctrl-names = "default"; 594*4882a593Smuzhiyun pinctrl-0 = <&wifi_host_wake_irq>; 595*4882a593Smuzhiyun WIFI,host_wake_irq = <&gpio2 RK_PB2 GPIO_ACTIVE_HIGH>; 596*4882a593Smuzhiyun WIFI,poweren_gpio = <&gpio2 RK_PB1 GPIO_ACTIVE_HIGH>; 597*4882a593Smuzhiyun}; 598*4882a593Smuzhiyun 599*4882a593Smuzhiyun&work_led { 600*4882a593Smuzhiyun gpios = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>; 601*4882a593Smuzhiyun}; 602*4882a593Smuzhiyun 603*4882a593Smuzhiyun&wireless_bluetooth { 604*4882a593Smuzhiyun compatible = "bluetooth-platdata"; 605*4882a593Smuzhiyun clocks = <&rk809 1>; 606*4882a593Smuzhiyun clock-names = "ext_clock"; 607*4882a593Smuzhiyun //wifi-bt-power-toggle; 608*4882a593Smuzhiyun uart_rts_gpios = <&gpio2 RK_PB5 GPIO_ACTIVE_LOW>; 609*4882a593Smuzhiyun pinctrl-names = "default", "rts_gpio"; 610*4882a593Smuzhiyun pinctrl-0 = <&uart1m0_rtsn>; 611*4882a593Smuzhiyun pinctrl-1 = <&uart1_gpios>; 612*4882a593Smuzhiyun BT,reset_gpio = <&gpio2 RK_PB7 GPIO_ACTIVE_HIGH>; 613*4882a593Smuzhiyun BT,wake_gpio = <&gpio2 RK_PC1 GPIO_ACTIVE_HIGH>; 614*4882a593Smuzhiyun BT,wake_host_irq = <&gpio2 RK_PC0 GPIO_ACTIVE_HIGH>; 615*4882a593Smuzhiyun status = "okay"; 616*4882a593Smuzhiyun}; 617