// SPDX-License-Identifier: GPL-2.0 OR MIT /* * Copyright (C) 2022 StarFive Technology Co., Ltd. * Copyright (C) 2022 Hal Feng */ /dts-v1/; #include "jh7110.dtsi" #include "jh7110-evb-pinctrl.dtsi" / { aliases { spi0 = &qspi; gpio0 = &gpio; ethernet0 = &gmac0; ethernet1 = &gmac1; mmc0 = &sdio0; mmc1 = &sdio1; serial0 = &uart0; serial3 = &uart3; i2c0 = &i2c0; i2c1 = &i2c1; i2c2 = &i2c2; i2c3 = &i2c3; i2c4 = &i2c4; i2c5 = &i2c5; i2c6 = &i2c6; }; chosen { linux,initrd-start = <0x0 0x46100000>; linux,initrd-end = <0x0 0x4c000000>; stdout-path = "serial0:115200"; #bootargs = "debug console=ttyS0 rootwait"; }; cpus { timebase-frequency = <4000000>; }; memory@40000000 { device_type = "memory"; reg = <0x0 0x40000000 0x1 0x0>; }; reserved-memory { #address-cells = <2>; #size-cells = <2>; ranges; linux,cma { compatible = "shared-dma-pool"; reusable; size = <0x0 0x20000000>; alignment = <0x0 0x1000>; alloc-ranges = <0x0 0xa0000000 0x0 0x20000000>; linux,cma-default; }; e24_mem: e24@c0000000 { no-map; reg = <0x0 0xc0110000 0x0 0xf0000>; }; xrp_reserved: xrpbuffer@f0000000 { reg = <0x0 0xf0000000 0x0 0x01ffffff 0x0 0xf2000000 0x0 0x00001000 0x0 0xf2001000 0x0 0x00fff000 0x0 0xf3000000 0x0 0x00001000>; }; }; }; &uart0 { pinctrl-names = "default"; pinctrl-0 = <&uart0_pins>; status = "okay"; }; &uart1 { pinctrl-names = "default"; pinctrl-0 = <&uart1_pins>; status = "disabled"; }; &uart2 { pinctrl-names = "default"; pinctrl-0 = <&uart2_pins>; status = "disabled"; }; &uart3 { pinctrl-names = "default"; pinctrl-0 = <&uart3_pins>; status = "disabled"; }; &uart4 { pinctrl-names = "default"; pinctrl-0 = <&uart4_pins>; status = "disabled"; }; &uart5 { pinctrl-names = "default"; pinctrl-0 = <&uart5_pins>; status = "disabled"; }; &dma { status = "okay"; }; &trng { status = "okay"; }; &crypto { status = "okay"; }; &sec_dma { status = "okay"; }; &i2c0 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c0_pins>; status = "disabled"; ac108_a: ac108@3b { compatible = "x-power,ac108_0"; reg = <0x3b>; #sound-dai-cells = <0>; data-protocol = <0>; }; wm8960: codec@1a { compatible = "wlf,wm8960"; reg = <0x1a>; #sound-dai-cells = <0>; wlf,shared-lrclk; }; }; &i2c1 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c1_pins>; status = "disabled"; }; &i2c2 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c2_pins>; status = "okay"; seeed_plane_i2c@45 { compatible = "seeed_panel"; reg = <0x45>; port { panel_dsi_port: endpoint { remote-endpoint = <&dsi_out_port>; }; }; }; }; &i2c3 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c3_pins>; status = "disabled"; }; &i2c4 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c4_pins>; status = "okay"; sc2235: sc2235@30 { compatible = "sc2235"; reg = <0x30>; clocks = <&clk_ext_camera>; clock-names = "xclk"; port { /* Parallel bus endpoint */ sc2235_to_parallel: endpoint { remote-endpoint = <¶llel_from_sc2235>; bus-type = <5>; /* Parallel */ bus-width = <8>; data-shift = <2>; /* lines 13:6 are used */ hsync-active = <1>; vsync-active = <1>; pclk-sample = <1>; }; }; }; tda998x@70 { compatible = "nxp,tda998x"; reg = <0x70>; port { tda998x_0_input: endpoint { remote-endpoint = <&hdmi_out>; }; }; }; }; &i2c5 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c5_pins>; status = "okay"; }; &i2c6 { clock-frequency = <100000>; i2c-sda-hold-time-ns = <300>; i2c-sda-falling-time-ns = <510>; i2c-scl-falling-time-ns = <510>; auto_calc_scl_lhcnt; pinctrl-names = "default"; pinctrl-0 = <&i2c6_pins>; status = "okay"; ov4689: ov4689@36 { compatible = "ovti,ov4689"; reg = <0x36>; clocks = <&clk_ext_camera>; clock-names = "xclk"; //reset-gpio = <&gpio 18 0>; rotation = <180>; port { /* Parallel bus endpoint */ ov4689_to_csi2rx0: endpoint { remote-endpoint = <&csi2rx0_from_ov4689>; bus-type = <4>; /* MIPI CSI-2 D-PHY */ clock-lanes = <0>; data-lanes = <1 2 3 4>; }; }; }; imx219@10 { compatible = "imx219"; reg = <0x10>; clocks = <&clk_ext_camera>; clock-names = "xclk"; //reset-gpio = <&gpio 18 0>; //DOVDD-supply = <&v2v8>; rotation = <0>; orientation = <1>; //CAMERA_ORIENTATION_BACK port { /* CSI2 bus endpoint */ imx219_to_csi2rx0: endpoint { remote-endpoint = <&csi2rx0_from_imx219>; bus-type = <4>; /* MIPI CSI-2 D-PHY */ clock-lanes = <0>; data-lanes = <2 1>; lane-polarities = <1 1 1>; link-frequencies = /bits/ 64 <456000000>; }; }; }; }; &sdio0 { status = "disabled"; }; &sdio1 { status = "disabled"; }; &vin_sysctl { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; #address-cells = <1>; #size-cells = <0>; /* Parallel bus endpoint */ parallel_from_sc2235: endpoint@0 { reg = <0>; remote-endpoint = <&sc2235_to_parallel>; bus-type = <5>; /* Parallel */ bus-width = <8>; data-shift = <2>; /* lines 9:2 are used */ hsync-active = <1>; vsync-active = <0>; pclk-sample = <1>; status = "okay"; }; }; port@1 { reg = <1>; #address-cells = <1>; #size-cells = <0>; /* CSI2 bus endpoint */ csi2rx0_from_ov4689: endpoint@0 { reg = <0>; remote-endpoint = <&ov4689_to_csi2rx0>; bus-type = <4>; /* MIPI CSI-2 D-PHY */ clock-lanes = <0>; data-lanes = <1 2 3 4>; status = "okay"; }; /* CSI2 bus endpoint */ csi2rx0_from_imx219: endpoint@1 { reg = <1>; remote-endpoint = <&imx219_to_csi2rx0>; bus-type = <4>; /* MIPI CSI-2 D-PHY */ clock-lanes = <0>; data-lanes = <2 1>; lane-polarities = <1 1 1>; status = "okay"; }; }; }; }; &sfctemp { status = "okay"; }; &jpu { status = "okay"; }; &vpu_dec { status = "okay"; }; &vpu_enc { status = "okay"; }; &gmac0 { status = "okay"; #address-cells = <1>; #size-cells = <0>; phy0: ethernet-phy@0 { rxc_dly_en = <0>; tx_delay_sel_fe = <5>; tx_delay_sel = <11>; }; }; &gmac1 { #address-cells = <1>; #size-cells = <0>; status = "okay"; phy1: ethernet-phy@1 { rxc-skew-ps = <1060>; txc-skew-ps = <1800>; reg = <0>; }; }; &gpu { status = "okay"; }; &can0 { pinctrl-names = "default"; pinctrl-0 = <&can0_pins>; status = "disabled"; }; &can1 { pinctrl-names = "default"; pinctrl-0 = <&can1_pins>; status = "disabled"; }; &tdm { pinctrl-names = "default"; pinctrl-0 = <&tdm0_pins>; status = "disabled"; }; &spdif0 { pinctrl-names = "default"; pinctrl-0 = <&spdif0_pins>; status = "disabled"; }; &pwmdac { pinctrl-names = "default"; pinctrl-0 = <&pwmdac0_pins>; status = "disabled"; }; &i2stx { status = "disabled"; }; &pdm { pinctrl-names = "default"; pinctrl-0 = <&pdm0_pins>; status = "disabled"; }; &i2srx_mst { pinctrl-names = "default"; pinctrl-0 = <&i2srx_clk_pins>; status = "disabled"; }; &i2srx_3ch { pinctrl-names = "default"; pinctrl-0 = <&i2srx_pins>; status = "disabled"; }; &i2stx_4ch0 { status = "disabled"; }; &i2stx_4ch1 { pinctrl-names = "default"; pinctrl-0 = <&i2s_clk_pins &i2stx_pins>; status = "disabled"; }; &spdif_transmitter { compatible = "linux,spdif-dit"; #sound-dai-cells = <0>; status = "disabled"; }; &spdif_receiver { compatible = "linux,spdif-dir"; #sound-dai-cells = <0>; status = "disabled"; }; &pwmdac_codec { status = "okay"; }; &dmic_codec { status = "okay"; }; &spi0 { pinctrl-names = "default"; pinctrl-0 = <&ssp0_pins>; status = "disabled"; spi_dev0: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi1 { pinctrl-names = "default"; pinctrl-0 = <&ssp1_pins>; status = "disabled"; spi_dev1: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi2 { pinctrl-names = "default"; pinctrl-0 = <&ssp2_pins>; status = "disabled"; spi_dev2: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi3 { pinctrl-names = "default"; pinctrl-0 = <&ssp3_pins>; status = "disabled"; spi_dev3: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi4 { pinctrl-names = "default"; pinctrl-0 = <&ssp4_pins>; status = "disabled"; spi_dev4: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi5 { pinctrl-names = "default"; pinctrl-0 = <&ssp5_pins>; status = "disabled"; spi_dev5: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &spi6 { pinctrl-names = "default"; pinctrl-0 = <&ssp6_pins>; status = "disabled"; spi_dev6: spi@0 { compatible = "rohm,dh2228fv"; pl022,com-mode = <1>; spi-max-frequency = <10000000>; reg = <0>; status = "okay"; }; }; &pcie0 { pinctrl-names = "perst-default", "perst-active", "power-active"; pinctrl-0 = <&pcie0_perst_default>; pinctrl-1 = <&pcie0_perst_active>; pinctrl-2 = <&pcie0_power_active>; status = "disabled"; }; &pcie1 { pinctrl-names = "perst-default", "perst-active", "power-active"; pinctrl-0 = <&pcie1_perst_default>; pinctrl-1 = <&pcie1_perst_active>; pinctrl-2 = <&pcie1_power_active>; status = "disabled"; }; &mailbox_contrl0 { status = "okay"; }; &mailbox_client0 { status = "okay"; }; &display { status = "okay"; }; &hdmi { status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&inno_hdmi_pins>; hdmi_in: port { #address-cells = <1>; #size-cells = <0>; hdmi_in_lcdc: endpoint@0 { reg = <0>; remote-endpoint = <&dc_out_dpi1>; }; }; }; &dc8200 { status = "okay"; dc_out: port { #address-cells = <1>; #size-cells = <0>; dc_out_dpi0: endpoint@0 { reg = <0>; remote-endpoint = <&hdmi_input0>; }; dc_out_dpi1: endpoint@1 { reg = <1>; remote-endpoint = <&hdmi_in_lcdc>; }; dc_out_dpi2: endpoint@2 { reg = <2>; remote-endpoint = <&mipi_in>; }; }; }; &hdmi_output { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { #address-cells = <1>; #size-cells = <0>; reg = <0>; hdmi_input0:endpoint@0 { reg = <0>; remote-endpoint = <&dc_out_dpi0>; }; }; port@1 { reg = <1>; hdmi_out:endpoint { remote-endpoint = <&tda998x_0_input>; }; }; }; }; &tda988x_pin { pinctrl-names = "default"; pinctrl-0 = <&rgb_pad_pins>; status = "disabled"; }; &encoder { status = "okay"; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; mipi_in: endpoint { remote-endpoint = <&dc_out_dpi2>; }; }; port@1 { reg = <1>; mipi_out: endpoint { remote-endpoint = <&dsi_in_port>; }; }; }; }; &mipi_dsi { status = "okay"; }; &mipi_dphy { status = "okay"; }; &co_process { status = "okay"; }; &usbdrd30 { pinctrl-names = "default"; pinctrl-0 = <&usb_pins>; dr_mode = "host"; /*host or peripheral*/ status = "disabled"; }; &xrp { status = "okay"; };