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 0xa0000000 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 pcie0_vbus_default: pcie0_vbus_default {
274 starfive,pins = <PAD_GPIO25>;
275 starfive,pinmux = <PAD_GPIO25_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_default: pcie1_perst_default {
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_HIGH>;
288 starfive,pin-gpio-doen = <OEN_LOW>;
292 pcie1_perst_active: pcie1_perst_active {
294 starfive,pins = <PAD_GPIO28>;
295 starfive,pinmux = <PAD_GPIO28_FUNC_SEL 0>;
296 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
297 starfive,pin-gpio-dout = <GPO_LOW>;
298 starfive,pin-gpio-doen = <OEN_LOW>;
302 pcie1_wake_default: pcie1_wake_default {
304 starfive,pins = <PAD_GPIO21>;
305 starfive,pinmux = <PAD_GPIO21_FUNC_SEL 0>;
306 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
307 starfive,pin-gpio-doen = <OEN_HIGH>;
311 pcie1_clkreq_default: pcie1_clkreq_default {
313 starfive,pins = <PAD_GPIO29>;
314 starfive,pinmux = <PAD_GPIO29_FUNC_SEL 0>;
315 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
316 starfive,pin-gpio-doen = <OEN_HIGH>;
322 starfive,pins = <PAD_GPIO25>;
323 starfive,pinmux = <PAD_GPIO25_FUNC_SEL 0>;
324 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
325 starfive,pin-gpio-dout = <GPO_USB0_DRIVE_VBUS_IO>;
326 starfive,pin-gpio-doen = <OEN_LOW>;
330 i2srx_pins: i2srx-pins {
332 starfive,pins = <PAD_GPIO61>;
333 starfive,pinmux = <PAD_GPIO61_FUNC_SEL 0>;
334 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
335 starfive,pin-gpio-doen = <OEN_HIGH>;
336 starfive,pin-gpio-din = <GPI_I2SRX0_EXT_SDIN0>;
340 i2s_clk_pins: i2s-clk0 {
342 starfive,pins = <PAD_GPIO38>;
343 starfive,pinmux = <PAD_GPIO38_FUNC_SEL 0>;
344 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
345 starfive,pin-gpio-din = <GPI_I2STX0_BCLK_SLV GPI_I2SRX0_BCLK_SLV>;
346 starfive,pin-gpio-doen = <OEN_HIGH>;
350 starfive,pins = <PAD_GPIO63>;
351 starfive,pinmux = <PAD_GPIO63_FUNC_SEL 0>;
352 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
353 starfive,pin-gpio-din = <GPI_I2STX0_LRCK_SLV GPI_I2SRX0_LRCK_SLV>;
354 starfive,pin-gpio-doen = <OEN_HIGH>;
358 i2stx_pins: i2stx-pins {
360 starfive,pins = <PAD_GPIO44>;
361 starfive,pinmux = <PAD_GPIO44_FUNC_SEL 0>;
362 starfive,pin-ioconfig = <IO(GPIO_IE(1))>;
363 starfive,pin-gpio-dout = <GPO_I2STX_4CH1_SDO0>;
364 starfive,pin-gpio-doen = <OEN_LOW>;
390 clock-frequency = <100000>;
391 i2c-sda-hold-time-ns = <300>;
392 i2c-sda-falling-time-ns = <510>;
393 i2c-scl-falling-time-ns = <510>;
395 pinctrl-names = "default";
396 pinctrl-0 = <&i2c0_pins>;
401 clock-frequency = <100000>;
402 i2c-sda-hold-time-ns = <300>;
403 i2c-sda-falling-time-ns = <510>;
404 i2c-scl-falling-time-ns = <510>;
409 compatible = "seeed_panel";
413 panel_dsi_port: endpoint {
414 remote-endpoint = <&dsi_out_port>;
422 clock-frequency = <100000>;
423 i2c-sda-hold-time-ns = <300>;
424 i2c-sda-falling-time-ns = <510>;
425 i2c-scl-falling-time-ns = <510>;
427 pinctrl-names = "default";
428 pinctrl-0 = <&i2c5_pins>;
432 compatible = "atmel,24c04";
437 pmic: axp15060_reg@36 {
438 compatible = "stf,axp15060-regulator";
444 regulator-compatible = "mipi_0p9";
445 regulator-name = "mipi_0p9";
446 regulator-min-microvolt = <900000>;
447 regulator-max-microvolt = <900000>;
451 regulator-compatible = "hdmi_0p9";
452 regulator-name = "hdmi_0p9";
453 regulator-min-microvolt = <900000>;
454 regulator-max-microvolt = <900000>;
458 regulator-compatible = "hdmi_1p8";
459 regulator-name = "hdmi_1p8";
460 regulator-min-microvolt = <1800000>;
461 regulator-max-microvolt = <1800000>;
465 regulator-compatible = "sdio_vdd";
466 regulator-name = "sdio_vdd";
467 regulator-min-microvolt = <1800000>;
468 regulator-max-microvolt = <1800000>;
473 regulator-compatible = "cpu_vdd";
474 regulator-name = "cpu_vdd";
475 regulator-min-microvolt = <500000>;
476 regulator-max-microvolt = <1540000>;
483 clock-frequency = <100000>;
484 i2c-sda-hold-time-ns = <300>;
485 i2c-sda-falling-time-ns = <510>;
486 i2c-scl-falling-time-ns = <510>;
488 pinctrl-names = "default";
489 pinctrl-0 = <&i2c6_pins>;
493 compatible = "sony,imx219";
495 clocks = <&clk_ext_camera>;
496 clock-names = "xclk";
497 //reset-gpio = <&gpio 18 0>;
498 //DOVDD-supply = <&v2v8>;
499 pinctrl-names = "default";
500 pinctrl-0 = <&csi_pins>;
502 orientation = <1>; //CAMERA_ORIENTATION_BACK
505 /* CSI2 bus endpoint */
506 imx219_to_csi2rx0: endpoint {
507 remote-endpoint = <&csi2rx0_from_imx219>;
508 bus-type = <4>; /* MIPI CSI-2 D-PHY */
511 lane-polarities = <0 0 0>;
512 link-frequencies = /bits/ 64 <456000000>;
519 max-frequency = <100000000>;
520 card-detect-delay = <300>;
527 post-power-on-delay-ms = <200>;
528 vqmmc-supply = <&sdio_vdd>;
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>;
599 #address-cells = <1>;
602 phy1: ethernet-phy@1 {
603 tx_delay_sel_fe = <5>;
614 pinctrl-names = "default";
615 pinctrl-0 = <&pwmdac0_pins>;
620 pinctrl-names = "default";
621 pinctrl-0 = <&i2s_clk_pins &i2srx_pins>;
626 pinctrl-names = "default";
627 pinctrl-0 = <&i2stx_pins>;
636 pinctrl-names = "default";
637 pinctrl-0 = <&ssp0_pins>;
641 compatible = "rohm,dh2228fv";
642 pl022,com-mode = <1>;
643 spi-max-frequency = <10000000>;
650 pinctrl-names = "default", "perst-default", "perst-active";
651 pinctrl-0 = <&pcie0_wake_default>,
652 <&pcie0_clkreq_default>,
653 <&pcie0_vbus_default>;
654 pinctrl-1 = <&pcie0_perst_default>;
655 pinctrl-2 = <&pcie0_perst_active>;
660 pinctrl-names = "default", "perst-default", "perst-active";
661 pinctrl-0 = <&pcie1_wake_default>,
662 <&pcie1_clkreq_default>;
663 pinctrl-1 = <&pcie1_perst_default>;
664 pinctrl-2 = <&pcie1_perst_active>;
684 #address-cells = <1>;
686 hdmi_in_lcdc: endpoint@0 {
688 remote-endpoint = <&dc_out_dpi1>;
697 #address-cells = <1>;
699 dc_out_dpi0: endpoint@0 {
701 remote-endpoint = <&hdmi_input0>;
703 dc_out_dpi1: endpoint@1 {
705 remote-endpoint = <&hdmi_in_lcdc>;
708 dc_out_dpi2: endpoint@2 {
710 remote-endpoint = <&mipi_in>;
719 #address-cells = <1>;
722 #address-cells = <1>;
725 hdmi_input0:endpoint@0 {
727 remote-endpoint = <&dc_out_dpi0>;
737 #address-cells = <1>;
743 remote-endpoint = <&dc_out_dpi2>;
750 remote-endpoint = <&dsi_in_port>;
769 clocks = <&clkgen JH7110_USB_125M>,
770 <&clkgen JH7110_USB0_CLK_APP_125>,
771 <&clkgen JH7110_USB0_CLK_LPM>,
772 <&clkgen JH7110_USB0_CLK_STB>,
773 <&clkgen JH7110_USB0_CLK_USB_APB>,
774 <&clkgen JH7110_USB0_CLK_AXI>,
775 <&clkgen JH7110_USB0_CLK_UTMI_APB>;
776 clock-names = "125m","app","lpm","stb","apb","axi","utmi";
777 resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>,
778 <&rstgen RSTN_U0_CDN_USB_APB>,
779 <&rstgen RSTN_U0_CDN_USB_AXI>,
780 <&rstgen RSTN_U0_CDN_USB_UTMI_APB>;
781 reset-names = "pwrup","apb","axi","utmi";
783 dr_mode = "peripheral"; /*host or peripheral*/
792 pinctrl-names = "default";
793 pinctrl-0 = <&pwm_pins>;