1 // SPDX-License-Identifier: GPL-2.0 OR MIT
3 * Copyright (C) 2022 StarFive Technology Co., Ltd.
4 * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com>
8 #include <dt-bindings/gpio/gpio.h>
9 #include <dt-bindings/leds/common.h>
10 #include <dt-bindings/pinctrl/starfive,jh7110-pinfunc.h>
11 #include "jh7110.dtsi"
12 #include "codecs/sf_pwmdac.dtsi"
15 model = "StarFive VisionFive V2";
16 compatible = "starfive,visionfive-v2", "starfive,jh7110";
37 linux,initrd-start = <0x0 0x46100000>;
38 linux,initrd-end = <0x0 0x4c000000>;
39 stdout-path = "serial0:115200";
40 #bootargs = "debug console=ttyS0 rootwait";
44 timebase-frequency = <4000000>;
48 device_type = "memory";
49 reg = <0x0 0x40000000 0x1 0x0>;
58 compatible = "shared-dma-pool";
60 size = <0x0 0x20000000>;
61 alignment = <0x0 0x1000>;
62 alloc-ranges = <0x0 0x80000000 0x0 0x20000000>;
66 e24_mem: e24@c0000000 {
68 reg = <0x0 0xc0110000 0x0 0xf0000>;
71 xrp_reserved: xrpbuffer@f0000000 {
72 reg = <0x0 0xf0000000 0x0 0x01ffffff
73 0x0 0xf2000000 0x0 0x00001000
74 0x0 0xf2001000 0x0 0x00fff000
75 0x0 0xf3000000 0x0 0x00001000>;
81 compatible = "gpio-leds";
84 gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>;
85 color = <LED_COLOR_ID_GREEN>;
86 function = LED_FUNCTION_HEARTBEAT;
87 linux,default-trigger = "heartbeat";
94 i2c0_pins: i2c0-pins {
96 starfive,pins = <PAD_GPIO57>;
97 starfive,pinmux = <PAD_GPIO57_FUNC_SEL 0>;
98 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
99 starfive,pin-gpio-dout = <GPO_LOW>;
100 starfive,pin-gpio-doen = <OEN_I2C0_IC_CLK_OE>;
101 starfive,pin-gpio-din = <GPI_I2C0_IC_CLK_IN_A>;
105 starfive,pins = <PAD_GPIO58>;
106 starfive,pinmux = <PAD_GPIO58_FUNC_SEL 0>;
107 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
108 starfive,pin-gpio-dout = <GPO_LOW>;
109 starfive,pin-gpio-doen = <OEN_I2C0_IC_DATA_OE>;
110 starfive,pin-gpio-din = <GPI_I2C0_IC_DATA_IN_A>;
114 i2c5_pins: i2c5-pins {
116 starfive,pins = <PAD_GPIO19>;
117 starfive,pinmux = <PAD_GPIO19_FUNC_SEL 0>;
118 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
119 starfive,pin-gpio-dout = <GPO_LOW>;
120 starfive,pin-gpio-doen = <OEN_I2C5_IC_CLK_OE>;
121 starfive,pin-gpio-din = <GPI_I2C5_IC_CLK_IN_A>;
125 starfive,pins = <PAD_GPIO20>;
126 starfive,pinmux = <PAD_GPIO20_FUNC_SEL 0>;
127 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
128 starfive,pin-gpio-dout = <GPO_LOW>;
129 starfive,pin-gpio-doen = <OEN_I2C5_IC_DATA_OE>;
130 starfive,pin-gpio-din = <GPI_I2C5_IC_DATA_IN_A>;
134 i2c6_pins: i2c6-pins {
136 starfive,pins = <PAD_GPIO16>;
137 starfive,pinmux = <PAD_GPIO16_FUNC_SEL 0>;
138 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
139 starfive,pin-gpio-dout = <GPO_LOW>;
140 starfive,pin-gpio-doen = <OEN_I2C6_IC_CLK_OE>;
141 starfive,pin-gpio-din = <GPI_I2C6_IC_CLK_IN_A>;
145 starfive,pins = <PAD_GPIO17>;
146 starfive,pinmux = <PAD_GPIO17_FUNC_SEL 0>;
147 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
148 starfive,pin-gpio-dout = <GPO_LOW>;
149 starfive,pin-gpio-doen = <OEN_I2C6_IC_DATA_OE>;
150 starfive,pin-gpio-din = <GPI_I2C6_IC_DATA_IN_A>;
156 starfive,pins = <PAD_GPIO18>;
157 starfive,pinmux = <PAD_GPIO18_FUNC_SEL 0>;
158 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
159 starfive,pin-gpio-dout = <GPO_HIGH>;
160 starfive,pin-gpio-doen = <OEN_LOW>;
164 pwmdac0_pins: pwmdac0-pins {
166 starfive,pins = <PAD_GPIO33>;
167 starfive,pinmux = <PAD_GPIO33_FUNC_SEL 0>;
168 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
169 starfive,pin-gpio-dout = <GPO_PWMDAC0_LEFT_OUTPUT>;
170 starfive,pin-gpio-doen = <OEN_LOW>;
174 starfive,pins = <PAD_GPIO34>;
175 starfive,pinmux = <PAD_GPIO34_FUNC_SEL 0>;
176 starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>;
177 starfive,pin-gpio-dout = <GPO_PWMDAC0_RIGHT_OUTPUT>;
178 starfive,pin-gpio-doen = <OEN_LOW>;
184 starfive,pins = <PAD_GPIO46>;
185 starfive,pinmux = <PAD_GPIO46_FUNC_SEL 0>;
186 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
187 starfive,pin-gpio-dout = <GPO_PTC0_PWM_0>;
188 starfive,pin-gpio-doen = <OEN_PTC0_PWM_0_OE_N>;
192 starfive,pins = <PAD_GPIO59>;
193 starfive,pinmux = <PAD_GPIO59_FUNC_SEL 0>;
194 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
195 starfive,pin-gpio-dout = <GPO_PTC0_PWM_1>;
196 starfive,pin-gpio-doen = <OEN_PTC0_PWM_1_OE_N>;
200 ssp0_pins: ssp0-pins {
202 starfive,pins = <PAD_GPIO52>;
203 starfive,pinmux = <PAD_GPIO52_FUNC_SEL 0>;
204 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
205 starfive,pin-gpio-dout = <GPO_SPI0_SSPTXD>;
206 starfive,pin-gpio-doen = <OEN_LOW>;
210 starfive,pins = <PAD_GPIO53>;
211 starfive,pinmux = <PAD_GPIO53_FUNC_SEL 0>;
212 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
213 starfive,pin-gpio-doen = <OEN_HIGH>;
214 starfive,pin-gpio-din = <GPI_SPI0_SSPRXD>;
218 starfive,pins = <PAD_GPIO48>;
219 starfive,pinmux = <PAD_GPIO48_FUNC_SEL 0>;
220 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
221 starfive,pin-gpio-dout = <GPO_SPI0_SSPCLKOUT>;
222 starfive,pin-gpio-doen = <OEN_LOW>;
226 starfive,pins = <PAD_GPIO49>;
227 starfive,pinmux = <PAD_GPIO49_FUNC_SEL 0>;
228 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
229 starfive,pin-gpio-dout = <GPO_SPI0_SSPFSSOUT>;
230 starfive,pin-gpio-doen = <OEN_LOW>;
234 pcie0_perst_default: pcie0_perst_default {
236 starfive,pins = <PAD_GPIO26>;
237 starfive,pinmux = <PAD_GPIO26_FUNC_SEL 0>;
238 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
239 starfive,pin-gpio-dout = <GPO_HIGH>;
240 starfive,pin-gpio-doen = <OEN_LOW>;
244 pcie0_perst_active: pcie0_perst_active {
246 starfive,pins = <PAD_GPIO26>;
247 starfive,pinmux = <PAD_GPIO26_FUNC_SEL 0>;
248 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
249 starfive,pin-gpio-dout = <GPO_LOW>;
250 starfive,pin-gpio-doen = <OEN_LOW>;
254 pcie0_wake_default: pcie0_wake_default {
256 starfive,pins = <PAD_GPIO32>;
257 starfive,pinmux = <PAD_GPIO32_FUNC_SEL 0>;
258 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
259 starfive,pin-gpio-doen = <OEN_HIGH>;
263 pcie0_clkreq_default: pcie0_clkreq_default {
265 starfive,pins = <PAD_GPIO27>;
266 starfive,pinmux = <PAD_GPIO27_FUNC_SEL 0>;
267 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
268 starfive,pin-gpio-doen = <OEN_HIGH>;
272 pcie1_perst_default: pcie1_perst_default {
274 starfive,pins = <PAD_GPIO28>;
275 starfive,pinmux = <PAD_GPIO28_FUNC_SEL 0>;
276 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
277 starfive,pin-gpio-dout = <GPO_HIGH>;
278 starfive,pin-gpio-doen = <OEN_LOW>;
282 pcie1_perst_active: pcie1_perst_active {
284 starfive,pins = <PAD_GPIO28>;
285 starfive,pinmux = <PAD_GPIO28_FUNC_SEL 0>;
286 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
287 starfive,pin-gpio-dout = <GPO_LOW>;
288 starfive,pin-gpio-doen = <OEN_LOW>;
292 pcie1_wake_default: pcie1_wake_default {
294 starfive,pins = <PAD_GPIO21>;
295 starfive,pinmux = <PAD_GPIO21_FUNC_SEL 0>;
296 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
297 starfive,pin-gpio-doen = <OEN_HIGH>;
301 pcie1_clkreq_default: pcie1_clkreq_default {
303 starfive,pins = <PAD_GPIO29>;
304 starfive,pinmux = <PAD_GPIO29_FUNC_SEL 0>;
305 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
306 starfive,pin-gpio-doen = <OEN_HIGH>;
312 starfive,pins = <PAD_GPIO25>;
313 starfive,pinmux = <PAD_GPIO25_FUNC_SEL 0>;
314 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
315 starfive,pin-gpio-dout = <GPO_USB0_DRIVE_VBUS_IO>;
316 starfive,pin-gpio-doen = <OEN_LOW>;
320 i2srx_pins: i2srx-pins {
322 starfive,pins = <PAD_GPIO61>;
323 starfive,pinmux = <PAD_GPIO61_FUNC_SEL 0>;
324 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
325 starfive,pin-gpio-doen = <OEN_HIGH>;
326 starfive,pin-gpio-din = <GPI_I2SRX0_EXT_SDIN0>;
330 i2s_clk_pins: i2s-clk0 {
332 starfive,pins = <PAD_GPIO38>;
333 starfive,pinmux = <PAD_GPIO38_FUNC_SEL 0>;
334 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
335 starfive,pin-gpio-din = <GPI_I2STX0_BCLK_SLV GPI_I2SRX0_BCLK_SLV>;
336 starfive,pin-gpio-doen = <OEN_HIGH>;
340 starfive,pins = <PAD_GPIO63>;
341 starfive,pinmux = <PAD_GPIO63_FUNC_SEL 0>;
342 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
343 starfive,pin-gpio-din = <GPI_I2STX0_LRCK_SLV GPI_I2SRX0_LRCK_SLV>;
344 starfive,pin-gpio-doen = <OEN_HIGH>;
348 i2stx_pins: i2stx-pins {
350 starfive,pins = <PAD_GPIO44>;
351 starfive,pinmux = <PAD_GPIO44_FUNC_SEL 0>;
352 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
353 starfive,pin-gpio-dout = <GPO_I2STX_4CH1_SDO0>;
354 starfive,pin-gpio-doen = <OEN_LOW>;
380 clock-frequency = <100000>;
381 i2c-sda-hold-time-ns = <300>;
382 i2c-sda-falling-time-ns = <510>;
383 i2c-scl-falling-time-ns = <510>;
385 pinctrl-names = "default";
386 pinctrl-0 = <&i2c0_pins>;
391 clock-frequency = <100000>;
392 i2c-sda-hold-time-ns = <300>;
393 i2c-sda-falling-time-ns = <510>;
394 i2c-scl-falling-time-ns = <510>;
399 compatible = "seeed_panel";
403 panel_out0: endpoint {
404 remote-endpoint = <&dsi0_output>;
409 tinker_ft5406: tinker_ft5406@38 {
410 compatible = "tinker_ft5406";
415 compatible ="starfive_jadard";
417 reset-gpio = <&gpio 23 0>;
418 enable-gpio = <&gpio 22 0>;
421 panel_out1: endpoint {
422 remote-endpoint = <&dsi1_output>;
430 clock-frequency = <100000>;
431 i2c-sda-hold-time-ns = <300>;
432 i2c-sda-falling-time-ns = <510>;
433 i2c-scl-falling-time-ns = <510>;
435 pinctrl-names = "default";
436 pinctrl-0 = <&i2c5_pins>;
440 compatible = "atmel,24c04";
445 pmic: axp15060_reg@36 {
446 compatible = "stf,axp15060-regulator";
452 regulator-compatible = "mipi_0p9";
453 regulator-name = "mipi_0p9";
454 regulator-min-microvolt = <900000>;
455 regulator-max-microvolt = <900000>;
459 regulator-compatible = "hdmi_0p9";
460 regulator-name = "hdmi_0p9";
461 regulator-min-microvolt = <900000>;
462 regulator-max-microvolt = <900000>;
466 regulator-compatible = "hdmi_1p8";
467 regulator-name = "hdmi_1p8";
468 regulator-min-microvolt = <1800000>;
469 regulator-max-microvolt = <1800000>;
474 regulator-compatible = "cpu_vdd";
475 regulator-name = "cpu_vdd";
476 regulator-min-microvolt = <500000>;
477 regulator-max-microvolt = <1540000>;
484 clock-frequency = <100000>;
485 i2c-sda-hold-time-ns = <300>;
486 i2c-sda-falling-time-ns = <510>;
487 i2c-scl-falling-time-ns = <510>;
489 pinctrl-names = "default";
490 pinctrl-0 = <&i2c6_pins>;
494 compatible = "sony,imx219";
496 clocks = <&clk_ext_camera>;
497 clock-names = "xclk";
498 //reset-gpio = <&gpio 18 0>;
499 //DOVDD-supply = <&v2v8>;
500 pinctrl-names = "default";
501 pinctrl-0 = <&csi_pins>;
503 orientation = <1>; //CAMERA_ORIENTATION_BACK
506 /* CSI2 bus endpoint */
507 imx219_to_csi2rx0: endpoint {
508 remote-endpoint = <&csi2rx0_from_imx219>;
509 bus-type = <4>; /* MIPI CSI-2 D-PHY */
512 lane-polarities = <0 0 0>;
513 link-frequencies = /bits/ 64 <456000000>;
520 max-frequency = <100000000>;
521 card-detect-delay = <300>;
528 post-power-on-delay-ms = <200>;
533 max-frequency = <100000000>;
534 card-detect-delay = <300>;
540 post-power-on-delay-ms = <200>;
545 /* when use dvp open this pinctrl*/
549 #address-cells = <1>;
554 #address-cells = <1>;
557 /* CSI2 bus endpoint */
558 csi2rx0_from_imx219: endpoint@0 {
560 remote-endpoint = <&imx219_to_csi2rx0>;
561 bus-type = <4>; /* MIPI CSI-2 D-PHY */
564 lane-polarities = <0 0 0>;
589 #address-cells = <1>;
591 phy0: ethernet-phy@0 {
593 tx_delay_sel_fe = <5>;
594 tx_delay_sel = <0xa>;
595 tx_inverted_10 = <0x1>;
596 tx_inverted_100 = <0x1>;
597 tx_inverted_1000 = <0x1>;
602 #address-cells = <1>;
605 phy1: ethernet-phy@1 {
606 tx_delay_sel_fe = <5>;
609 tx_inverted_10 = <0x1>;
610 tx_inverted_100 = <0x1>;
611 tx_inverted_1000 = <0x0>;
620 pinctrl-names = "default";
621 pinctrl-0 = <&pwmdac0_pins>;
626 pinctrl-names = "default";
627 pinctrl-0 = <&i2s_clk_pins &i2srx_pins>;
632 pinctrl-names = "default";
633 pinctrl-0 = <&i2stx_pins>;
642 pinctrl-names = "default";
643 pinctrl-0 = <&ssp0_pins>;
647 compatible = "rohm,dh2228fv";
648 pl022,com-mode = <1>;
649 spi-max-frequency = <10000000>;
656 pinctrl-names = "default", "perst-default", "perst-active";
657 pinctrl-0 = <&pcie0_wake_default>,
658 <&pcie0_clkreq_default>;
659 pinctrl-1 = <&pcie0_perst_default>;
660 pinctrl-2 = <&pcie0_perst_active>;
665 pinctrl-names = "default", "perst-default", "perst-active";
666 pinctrl-0 = <&pcie1_wake_default>,
667 <&pcie1_clkreq_default>;
668 pinctrl-1 = <&pcie1_perst_default>;
669 pinctrl-2 = <&pcie1_perst_active>;
689 #address-cells = <1>;
691 hdmi_in_lcdc: endpoint@0 {
693 remote-endpoint = <&dc_out_dpi1>;
702 #address-cells = <1>;
704 dc_out_dpi0: endpoint@0 {
706 remote-endpoint = <&hdmi_input0>;
708 dc_out_dpi1: endpoint@1 {
710 remote-endpoint = <&hdmi_in_lcdc>;
713 dc_out_dpi2: endpoint@2 {
715 remote-endpoint = <&mipi_in>;
724 #address-cells = <1>;
727 #address-cells = <1>;
730 hdmi_input0:endpoint@0 {
732 remote-endpoint = <&dc_out_dpi0>;
742 #address-cells = <1>;
748 remote-endpoint = <&dc_out_dpi2>;
754 sf_dpi_output: endpoint {
755 remote-endpoint = <&dsi_in_port>;
765 #address-cells = <1>;
770 #address-cells = <1>;
773 dsi0_output: endpoint@0 {
775 remote-endpoint = <&panel_out0>;
778 dsi1_output: endpoint@1 {
780 remote-endpoint = <&panel_out1>;
786 dsi_in_port: endpoint {
787 remote-endpoint = <&sf_dpi_output>;
803 clocks = <&clkgen JH7110_USB_125M>,
804 <&clkgen JH7110_USB0_CLK_APP_125>,
805 <&clkgen JH7110_USB0_CLK_LPM>,
806 <&clkgen JH7110_USB0_CLK_STB>,
807 <&clkgen JH7110_USB0_CLK_USB_APB>,
808 <&clkgen JH7110_USB0_CLK_AXI>,
809 <&clkgen JH7110_USB0_CLK_UTMI_APB>;
810 clock-names = "125m","app","lpm","stb","apb","axi","utmi";
811 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
812 <&rstgen RSTN_U0_CDN_USB_APB>,
813 <&rstgen RSTN_U0_CDN_USB_AXI>,
814 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>;
815 reset-names = "pwrup","apb","axi","utmi";
817 dr_mode = "peripheral"; /*host or peripheral*/
826 pinctrl-names = "default";
827 pinctrl-0 = <&pwm_pins>;