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/dts-v1/; 7*4882a593Smuzhiyun#include "rv1126.dtsi" 8*4882a593Smuzhiyun#include "rv1126-rmsl.dtsi" 9*4882a593Smuzhiyun#include <dt-bindings/display/media-bus-format.h> 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun#define LINK_FREQ 400000000 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun/ { 14*4882a593Smuzhiyun model = "Rockchip RV1126 RMSL DDR3L Board"; 15*4882a593Smuzhiyun compatible = "rockchip,rv1126-rmsl-ddr3L-v1", "rockchip,rv1126"; 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun chosen { 18*4882a593Smuzhiyun bootargs = "earlycon=uart8250,mmio32,0xff570000 console=ttyFIQ0 root=PARTUUID=614e0000-0000 rootfstype=ext4 rootwait snd_aloop.index=7"; 19*4882a593Smuzhiyun }; 20*4882a593Smuzhiyun 21*4882a593Smuzhiyun gpio-leds { 22*4882a593Smuzhiyun compatible = "gpio-leds"; 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun work-led { 25*4882a593Smuzhiyun gpios = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>; 26*4882a593Smuzhiyun linux,default-trigger = "timer"; 27*4882a593Smuzhiyun }; 28*4882a593Smuzhiyun }; 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun mipidphy0: mipidphy0 { 31*4882a593Smuzhiyun compatible = "rockchip,rk1608-dphy"; 32*4882a593Smuzhiyun status = "okay"; 33*4882a593Smuzhiyun rockchip,grf = <&grf>; 34*4882a593Smuzhiyun id = <0>; 35*4882a593Smuzhiyun 36*4882a593Smuzhiyun cam_nums = <1>; 37*4882a593Smuzhiyun in_mipi = <0>; 38*4882a593Smuzhiyun out_mipi = <0>; 39*4882a593Smuzhiyun link-freqs = /bits/ 64 <LINK_FREQ>; 40*4882a593Smuzhiyun 41*4882a593Smuzhiyun sensor_i2c_bus = <0>; 42*4882a593Smuzhiyun sensor_i2c_addr = <0xC0>; 43*4882a593Smuzhiyun sensor-name = "OV9282"; 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun rockchip,camera-module-index = <0>; 46*4882a593Smuzhiyun rockchip,camera-module-facing = "back"; 47*4882a593Smuzhiyun rockchip,camera-module-name = "TongJu"; 48*4882a593Smuzhiyun rockchip,camera-module-lens-name = "CHT842-MD"; 49*4882a593Smuzhiyun 50*4882a593Smuzhiyun format-config-0 { 51*4882a593Smuzhiyun data_type = <0x2b>; 52*4882a593Smuzhiyun mipi_lane = <2>; 53*4882a593Smuzhiyun field = <1>; 54*4882a593Smuzhiyun colorspace = <8>; 55*4882a593Smuzhiyun code = <MEDIA_BUS_FMT_SBGGR10_1X10>; 56*4882a593Smuzhiyun width = <2560>; 57*4882a593Smuzhiyun height= <1000>; 58*4882a593Smuzhiyun hactive = <2560>; 59*4882a593Smuzhiyun vactive = <1000>; 60*4882a593Smuzhiyun htotal = <3000>; 61*4882a593Smuzhiyun vtotal = <1400>; 62*4882a593Smuzhiyun inch0-info = <1280 800 0x2b 0x2b 1>; 63*4882a593Smuzhiyun outch0-info = <2560 1000 0x2b 0x2b 1>; 64*4882a593Smuzhiyun }; 65*4882a593Smuzhiyun 66*4882a593Smuzhiyun ports { 67*4882a593Smuzhiyun #address-cells = <1>; 68*4882a593Smuzhiyun #size-cells = <0>; 69*4882a593Smuzhiyun 70*4882a593Smuzhiyun port@0 { 71*4882a593Smuzhiyun rk1608_dphy0_in: endpoint { 72*4882a593Smuzhiyun remote-endpoint = <&rk1608_out0>; 73*4882a593Smuzhiyun data-lanes = <1 2>; 74*4882a593Smuzhiyun }; 75*4882a593Smuzhiyun }; 76*4882a593Smuzhiyun port@1 { 77*4882a593Smuzhiyun rk1608_dphy0_out: endpoint { 78*4882a593Smuzhiyun remote-endpoint = <&mipi_in_ucam0>; 79*4882a593Smuzhiyun clock-lanes = <0>; 80*4882a593Smuzhiyun data-lanes = <1 2>; 81*4882a593Smuzhiyun clock-noncontinuous; 82*4882a593Smuzhiyun link-freqs = /bits/ 64 <LINK_FREQ>; 83*4882a593Smuzhiyun }; 84*4882a593Smuzhiyun }; 85*4882a593Smuzhiyun }; 86*4882a593Smuzhiyun }; 87*4882a593Smuzhiyun}; 88*4882a593Smuzhiyun 89*4882a593Smuzhiyun&csi_dphy0 { 90*4882a593Smuzhiyun status = "okay"; 91*4882a593Smuzhiyun 92*4882a593Smuzhiyun ports { 93*4882a593Smuzhiyun #address-cells = <1>; 94*4882a593Smuzhiyun #size-cells = <0>; 95*4882a593Smuzhiyun port@0 { 96*4882a593Smuzhiyun reg = <0>; 97*4882a593Smuzhiyun #address-cells = <1>; 98*4882a593Smuzhiyun #size-cells = <0>; 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun mipi_in_ucam0: endpoint@1 { 101*4882a593Smuzhiyun reg = <1>; 102*4882a593Smuzhiyun remote-endpoint = <&rk1608_dphy0_out>; 103*4882a593Smuzhiyun data-lanes = <1 2>; 104*4882a593Smuzhiyun }; 105*4882a593Smuzhiyun }; 106*4882a593Smuzhiyun port@1 { 107*4882a593Smuzhiyun reg = <1>; 108*4882a593Smuzhiyun #address-cells = <1>; 109*4882a593Smuzhiyun #size-cells = <0>; 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun csidphy0_out: endpoint@0 { 112*4882a593Smuzhiyun reg = <0>; 113*4882a593Smuzhiyun remote-endpoint = <&mipi_csi2_input>; 114*4882a593Smuzhiyun data-lanes = <1 2>; 115*4882a593Smuzhiyun }; 116*4882a593Smuzhiyun }; 117*4882a593Smuzhiyun }; 118*4882a593Smuzhiyun}; 119*4882a593Smuzhiyun 120*4882a593Smuzhiyun&csi_dphy1 { 121*4882a593Smuzhiyun status = "okay"; 122*4882a593Smuzhiyun 123*4882a593Smuzhiyun ports { 124*4882a593Smuzhiyun #address-cells = <1>; 125*4882a593Smuzhiyun #size-cells = <0>; 126*4882a593Smuzhiyun 127*4882a593Smuzhiyun port@0 { 128*4882a593Smuzhiyun reg = <0>; 129*4882a593Smuzhiyun #address-cells = <1>; 130*4882a593Smuzhiyun #size-cells = <0>; 131*4882a593Smuzhiyun 132*4882a593Smuzhiyun mipi_in_ucam1: endpoint@1 { 133*4882a593Smuzhiyun reg = <1>; 134*4882a593Smuzhiyun remote-endpoint = <&ucam_out1>; 135*4882a593Smuzhiyun data-lanes = <1 2>; 136*4882a593Smuzhiyun }; 137*4882a593Smuzhiyun }; 138*4882a593Smuzhiyun 139*4882a593Smuzhiyun port@1 { 140*4882a593Smuzhiyun reg = <1>; 141*4882a593Smuzhiyun #address-cells = <1>; 142*4882a593Smuzhiyun #size-cells = <0>; 143*4882a593Smuzhiyun 144*4882a593Smuzhiyun csidphy1_out: endpoint@0 { 145*4882a593Smuzhiyun reg = <0>; 146*4882a593Smuzhiyun remote-endpoint = <&isp_in>; 147*4882a593Smuzhiyun data-lanes = <1 2>; 148*4882a593Smuzhiyun }; 149*4882a593Smuzhiyun }; 150*4882a593Smuzhiyun }; 151*4882a593Smuzhiyun}; 152*4882a593Smuzhiyun 153*4882a593Smuzhiyun&i2c1 { 154*4882a593Smuzhiyun status = "okay"; 155*4882a593Smuzhiyun clock-frequency = <400000>; 156*4882a593Smuzhiyun 157*4882a593Smuzhiyun ov02k10: ov02k10@36 { 158*4882a593Smuzhiyun compatible = "ovti,ov02k10"; 159*4882a593Smuzhiyun reg = <0x36>; 160*4882a593Smuzhiyun clocks = <&cru CLK_MIPICSI_OUT>; 161*4882a593Smuzhiyun clock-names = "xvclk"; 162*4882a593Smuzhiyun power-domains = <&power RV1126_PD_VI>; 163*4882a593Smuzhiyun pinctrl-names = "rockchip,camera_default"; 164*4882a593Smuzhiyun pinctrl-0 = <&mipicsi_clk0>; 165*4882a593Smuzhiyun pwren-gpios= <&gpio2 RK_PD7 GPIO_ACTIVE_HIGH>; 166*4882a593Smuzhiyun pwdn-gpios = <&gpio1 RK_PD4 GPIO_ACTIVE_HIGH>; 167*4882a593Smuzhiyun reset-gpios = <&gpio1 RK_PD5 GPIO_ACTIVE_HIGH>; 168*4882a593Smuzhiyun rockchip,camera-module-index = <1>; 169*4882a593Smuzhiyun rockchip,camera-module-facing = "front"; 170*4882a593Smuzhiyun rockchip,camera-module-name = "ORCF-0249-00-PD-V1"; 171*4882a593Smuzhiyun rockchip,camera-module-lens-name = "xuye"; 172*4882a593Smuzhiyun // NO_HDR:0 HDR_X2:5 HDR_X3:6 173*4882a593Smuzhiyun rockchip,camera-hdr-mode = <0>; 174*4882a593Smuzhiyun port { 175*4882a593Smuzhiyun ucam_out1: endpoint { 176*4882a593Smuzhiyun remote-endpoint = <&mipi_in_ucam1>; 177*4882a593Smuzhiyun data-lanes = <1 2>; 178*4882a593Smuzhiyun }; 179*4882a593Smuzhiyun }; 180*4882a593Smuzhiyun }; 181*4882a593Smuzhiyun 182*4882a593Smuzhiyun pisp_dmy: pisp_dmy@37 { 183*4882a593Smuzhiyun compatible = "pisp_dmy"; 184*4882a593Smuzhiyun reg = <0x37>; 185*4882a593Smuzhiyun 186*4882a593Smuzhiyun clocks = <&pmucru CLK_WIFI>; 187*4882a593Smuzhiyun clock-names = "xvclk"; 188*4882a593Smuzhiyun 189*4882a593Smuzhiyun rockchip,camera-module-index = <0>; 190*4882a593Smuzhiyun rockchip,camera-module-facing = "back"; 191*4882a593Smuzhiyun rockchip,camera-module-name = "TongJu"; 192*4882a593Smuzhiyun rockchip,camera-module-lens-name = "CHT842-MD"; 193*4882a593Smuzhiyun 194*4882a593Smuzhiyun port { 195*4882a593Smuzhiyun cam0_out: endpoint { 196*4882a593Smuzhiyun remote-endpoint = <&rk1608_in0>; 197*4882a593Smuzhiyun data-lanes = <1 2>; 198*4882a593Smuzhiyun }; 199*4882a593Smuzhiyun }; 200*4882a593Smuzhiyun }; 201*4882a593Smuzhiyun}; 202*4882a593Smuzhiyun 203*4882a593Smuzhiyun&spi0 { 204*4882a593Smuzhiyun status = "okay"; 205*4882a593Smuzhiyun //assigned-clocks = <&cru SCLK_SPI0>; 206*4882a593Smuzhiyun //assigned-clock-rates = <100000000>; 207*4882a593Smuzhiyun //rx-sample-delay-ns = <10>; 208*4882a593Smuzhiyun //dma-names = "tx", "rx"; 209*4882a593Smuzhiyun pinctrl-names = "default", "high_speed"; 210*4882a593Smuzhiyun pinctrl-0 = <&spi0m1_cs0 &spi1m0_pins>; 211*4882a593Smuzhiyun pinctrl-1 = <&spi0m1_cs0 &spi1m0_pins_hs>; 212*4882a593Smuzhiyun 213*4882a593Smuzhiyun spi_rk1608@00 { 214*4882a593Smuzhiyun compatible = "rockchip,rk1608"; 215*4882a593Smuzhiyun status = "okay"; 216*4882a593Smuzhiyun reg = <0>; 217*4882a593Smuzhiyun spi-max-frequency = <50000000>; 218*4882a593Smuzhiyun spi-min-frequency = <16000000>; 219*4882a593Smuzhiyun 220*4882a593Smuzhiyun clocks = <&pmucru CLK_WIFI>; 221*4882a593Smuzhiyun clock-names = "mclk"; 222*4882a593Smuzhiyun 223*4882a593Smuzhiyun firmware-names = "rk1608.rkl"; 224*4882a593Smuzhiyun 225*4882a593Smuzhiyun reset-gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>; // 226*4882a593Smuzhiyun irq-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>; // 227*4882a593Smuzhiyun 228*4882a593Smuzhiyun pinctrl-names = "default"; 229*4882a593Smuzhiyun pinctrl-0 = <&preisp_irq_gpios &preisp_reset_gpios &preisp_24m_mclk>; 230*4882a593Smuzhiyun 231*4882a593Smuzhiyun /* regulator config */ 232*4882a593Smuzhiyun //vdd-core-regulator = "vdd_preisp"; 233*4882a593Smuzhiyun //vdd-core-microvolt = <1150000>; 234*4882a593Smuzhiyun 235*4882a593Smuzhiyun ports { 236*4882a593Smuzhiyun #address-cells = <1>; 237*4882a593Smuzhiyun #size-cells = <0>; 238*4882a593Smuzhiyun port@0 { 239*4882a593Smuzhiyun #address-cells = <1>; 240*4882a593Smuzhiyun #size-cells = <0>; 241*4882a593Smuzhiyun 242*4882a593Smuzhiyun reg = <0>; 243*4882a593Smuzhiyun rk1608_out0: endpoint@0 { 244*4882a593Smuzhiyun reg = <0>; 245*4882a593Smuzhiyun remote-endpoint = <&rk1608_dphy0_in>; 246*4882a593Smuzhiyun }; 247*4882a593Smuzhiyun }; 248*4882a593Smuzhiyun 249*4882a593Smuzhiyun port@1 { 250*4882a593Smuzhiyun #address-cells = <1>; 251*4882a593Smuzhiyun #size-cells = <0>; 252*4882a593Smuzhiyun 253*4882a593Smuzhiyun reg = <1>; 254*4882a593Smuzhiyun rk1608_in0: endpoint@0 { 255*4882a593Smuzhiyun reg = <0>; 256*4882a593Smuzhiyun remote-endpoint = <&cam0_out>; 257*4882a593Smuzhiyun }; 258*4882a593Smuzhiyun }; 259*4882a593Smuzhiyun }; 260*4882a593Smuzhiyun }; 261*4882a593Smuzhiyun}; 262*4882a593Smuzhiyun 263*4882a593Smuzhiyun&pinctrl { 264*4882a593Smuzhiyun rk1608_gpios { 265*4882a593Smuzhiyun preisp_irq_gpios: preisp-irq-gpios { 266*4882a593Smuzhiyun rockchip,pins = 267*4882a593Smuzhiyun <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_up>; 268*4882a593Smuzhiyun }; 269*4882a593Smuzhiyun 270*4882a593Smuzhiyun preisp_reset_gpios: preisp-reset-gpios { 271*4882a593Smuzhiyun rockchip,pins = 272*4882a593Smuzhiyun <0 RK_PA5 RK_FUNC_GPIO &pcfg_output_low>; 273*4882a593Smuzhiyun }; 274*4882a593Smuzhiyun 275*4882a593Smuzhiyun preisp_24m_mclk: preisp-24m-mclk { 276*4882a593Smuzhiyun rockchip,pins = 277*4882a593Smuzhiyun <0 RK_PA0 1 &pcfg_pull_none>; 278*4882a593Smuzhiyun }; 279*4882a593Smuzhiyun }; 280*4882a593Smuzhiyun}; 281