diff options
Diffstat (limited to 'arch/riscv/boot')
9 files changed, 1720 insertions, 11 deletions
diff --git a/arch/riscv/boot/dts/starfive/Makefile b/arch/riscv/boot/dts/starfive/Makefile index 763f088a5d03..a59ce632dc48 100644 --- a/arch/riscv/boot/dts/starfive/Makefile +++ b/arch/riscv/boot/dts/starfive/Makefile @@ -1,12 +1,17 @@ # SPDX-License-Identifier: GPL-2.0 -subdir-y += evb-overlay -dtb-$(CONFIG_SOC_STARFIVE_JH7110) += jh7110-evb.dtb \ - jh7110-evb-pcie-i2s-sd.dtb \ - jh7110-evb-spi-uart2.dtb \ - jh7110-evb-uart4-emmc-spdif.dtb \ - jh7110-evb-uart5-pwm-i2c-tdm.dtb \ - jh7110-evb-dvp-rgb2hdmi.dtb \ - jh7110-evb-can-pdm-pwmdac.dtb \ - jh7110-evb-i2s-ac108.dtb \ - jh7110-evb-usbdevice.dtb \ - jh7110-evb-uart1-rgb2hdmi.dtb +subdir-y += evb-overlay vf2-overlay +dtb-$(CONFIG_SOC_STARFIVE_JH7110) += jh7110-visionfive-v2.dtb \ + jh7110-evb.dtb \ + jh7110-evb-can-pdm-pwmdac.dtb \ + jh7110-evb-dvp-rgb2hdmi.dtb \ + jh7110-evb-pcie-i2s-sd.dtb \ + jh7110-evb-i2s-ac108.dtb \ + jh7110-evb-spi-uart2.dtb \ + jh7110-evb-uart1-rgb2hdmi.dtb \ + jh7110-evb-uart4-emmc-spdif.dtb \ + jh7110-evb-uart5-pwm-i2c-tdm.dtb \ + jh7110-evb-usbdevice.dtb \ + jh7110-visionfive-v2-A10.dtb \ + jh7110-visionfive-v2-A11.dtb \ + jh7110-visionfive-v2-wm8960.dtb \ + jh7110-visionfive-v2-ac108.dtb diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A10.dts b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A10.dts new file mode 100644 index 000000000000..48db60f4e8c7 --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A10.dts @@ -0,0 +1,196 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + * For VisionFive2 version A1.0 + */ + +/dts-v1/; +#include "jh7110-visionfive-v2.dtsi" + +/ { + model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; +}; + +&gpio { + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO41>; + starfive,pinmux = <PAD_GPIO41_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO40>; + starfive,pinmux = <PAD_GPIO40_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; + + i2c2_pins: i2c2-pins { + i2c2-pins-scl { + starfive,pins = <PAD_GPIO11>; + starfive,pinmux = <PAD_GPIO11_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_CLK_IN_A>; + }; + + i2c2-pins-sda { + starfive,pins = <PAD_GPIO9>; + starfive,pinmux = <PAD_GPIO9_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_DATA_IN_A>; + }; + }; + + mmc0_pins: mmc0-pins { + mmc0-pins-rest { + starfive,pins = <PAD_GPIO22>; + starfive,pinmux = <PAD_GPIO22_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_SDIO0_RST_N>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + sdcard1_pins: sdcard1-pins { + sdcard1-pins0 { + starfive,pins = <PAD_GPIO4>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCLK_OUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + sdcard1-pins1 { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCMD_OUT>; + starfive,pin-gpio-doen = <OEN_SDIO1_CCMD_OUT_EN>; + starfive,pin-gpio-din = <GPI_SDIO1_CCMD_IN>; + }; + + sdcard1-pins2 { + starfive,pins = <PAD_GPIO0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_0>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_0>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_0>; + }; + + sdcard1-pins3 { + starfive,pins = <PAD_GPIO1>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_1>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_1>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_1>; + }; + + sdcard1-pins4 { + starfive,pins = <PAD_GPIO2>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_2>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_2>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_2>; + }; + + sdcard1-pins5 { + starfive,pins = <PAD_GPIO3>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_3>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_3>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_3>; + }; + }; + + inno_hdmi_pins: inno_hdmi-pins { + inno_hdmi-scl { + starfive,pins = <PAD_GPIO7>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SCL_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SCL_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SCL_IN>; + }; + + inno_hdmi-sda { + starfive,pins = <PAD_GPIO8>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SDA_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SDA_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SDA_IN>; + }; + + inno_hdmi-cec-pins { + starfive,pins = <PAD_GPIO14>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-doen = <OEN_HDMI0_CEC_SDA_OEN>; + starfive,pin-gpio-dout = <GPO_HDMI0_CEC_SDA_OUT>; + starfive,pin-gpio-din = <GPI_HDMI0_CEC_SDA_IN>; + }; + + inno_hdmi-hpd-pins { + starfive,pins = <PAD_GPIO15>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_HDMI0_HPD>; + }; + }; + + pcie0_vbus_default: pcie0_vbus_default { + drive-vbus-pin { + starfive,pins = <PAD_GPIO25>; + starfive,pinmux = <PAD_GPIO25_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_HIGH>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "disabled"; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pins>; + status = "disabled"; +}; + +&mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; + status = "disabled"; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&sdcard1_pins>; + status = "disabled"; +}; + +&hdmi { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&inno_hdmi_pins>; +}; + +&pcie0 { + pinctrl-names = "default", "perst-default", "perst-active"; + pinctrl-0 = <&pcie0_wake_default>, + <&pcie0_clkreq_default>, + <&pcie0_vbus_default>; + pinctrl-1 = <&pcie0_perst_default>; + pinctrl-2 = <&pcie0_perst_active>; + status = "disabled"; +}; diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A11.dts b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A11.dts new file mode 100644 index 000000000000..723522784991 --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-A11.dts @@ -0,0 +1,205 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + * For VisionFive2 version A1.1 + */ + +/dts-v1/; +#include "jh7110-visionfive-v2.dtsi" + +/ { + model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + gpio-restart { + compatible = "gpio-restart"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + priority = <224>; + }; +}; + +&gpio { + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; + + i2c2_pins: i2c2-pins { + i2c2-pins-scl { + starfive,pins = <PAD_GPIO3>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_CLK_IN_A>; + }; + + i2c2-pins-sda { + starfive,pins = <PAD_GPIO2>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_DATA_IN_A>; + }; + }; + + mmc0_pins: mmc0-pins { + mmc0-pins-rest { + starfive,pins = <PAD_GPIO62>; + starfive,pinmux = <PAD_GPIO62_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_SDIO0_RST_N>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + sdcard1_pins: sdcard1-pins { + sdcard1-pins0 { + starfive,pins = <PAD_GPIO10>; + starfive,pinmux = <PAD_GPIO10_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCLK_OUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + sdcard1-pins1 { + starfive,pins = <PAD_GPIO9>; + starfive,pinmux = <PAD_GPIO9_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCMD_OUT>; + starfive,pin-gpio-doen = <OEN_SDIO1_CCMD_OUT_EN>; + starfive,pin-gpio-din = <GPI_SDIO1_CCMD_IN>; + }; + + sdcard1-pins2 { + starfive,pins = <PAD_GPIO11>; + starfive,pinmux = <PAD_GPIO11_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_0>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_0>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_0>; + }; + + sdcard1-pins3 { + starfive,pins = <PAD_GPIO12>; + starfive,pinmux = <PAD_GPIO12_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_1>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_1>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_1>; + }; + + sdcard1-pins4 { + starfive,pins = <PAD_GPIO7>; + starfive,pinmux = <PAD_GPIO7_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_2>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_2>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_2>; + }; + + sdcard1-pins5 { + starfive,pins = <PAD_GPIO8>; + starfive,pinmux = <PAD_GPIO8_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_3>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_3>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_3>; + }; + }; + + inno_hdmi_pins: inno_hdmi-pins { + inno_hdmi-scl { + starfive,pins = <PAD_GPIO0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SCL_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SCL_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SCL_IN>; + }; + + inno_hdmi-sda { + starfive,pins = <PAD_GPIO1>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SDA_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SDA_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SDA_IN>; + }; + + inno_hdmi-cec-pins { + starfive,pins = <PAD_GPIO14>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-doen = <OEN_HDMI0_CEC_SDA_OEN>; + starfive,pin-gpio-dout = <GPO_HDMI0_CEC_SDA_OUT>; + starfive,pin-gpio-din = <GPI_HDMI0_CEC_SDA_IN>; + }; + + inno_hdmi-hpd-pins { + starfive,pins = <PAD_GPIO15>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_HDMI0_HPD>; + }; + }; + + pcie0_vbus_default: pcie0_vbus_default { + drive-vbus-pin { + starfive,pins = <PAD_GPIO25>; + starfive,pinmux = <PAD_GPIO25_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_HIGH>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "disabled"; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pins>; + status = "disabled"; +}; + +&mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; + status = "disabled"; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&sdcard1_pins>; + status = "disabled"; +}; + +&hdmi { + status = "disabled"; + pinctrl-names = "default"; + pinctrl-0 = <&inno_hdmi_pins>; +}; + +&pcie0 { + pinctrl-names = "default", "perst-default", "perst-active"; + pinctrl-0 = <&pcie0_wake_default>, + <&pcie0_clkreq_default>, + <&pcie0_vbus_default>; + pinctrl-1 = <&pcie0_perst_default>; + pinctrl-2 = <&pcie0_perst_active>; + status = "disabled"; +}; diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-ac108.dts b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-ac108.dts new file mode 100644 index 000000000000..1ab9abf7f1c5 --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-ac108.dts @@ -0,0 +1,23 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + */ + +/dts-v1/; +#include "jh7110-visionfive-v2.dts" +#include "codecs/sf_ac108.dtsi" + +&i2c0 { + ac108: ac108@3b { + compatible = "x-power,ac108_0"; + reg = <0x3b>; + #sound-dai-cells = <0>; + data-protocol = <0>; + }; +}; + +&i2srx_3ch { + status = "disabled"; +}; + diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-wm8960.dts b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-wm8960.dts new file mode 100644 index 000000000000..dbbfaa8f62ac --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2-wm8960.dts @@ -0,0 +1,26 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + */ + +/dts-v1/; +#include "jh7110-visionfive-v2.dts" +#include "codecs/sf_wm8960.dtsi" + +&i2c0 { + wm8960: codec@1a { + compatible = "wlf,wm8960"; + reg = <0x1a>; + wlf,shared-lrclk; + #sound-dai-cells = <0>; + }; +}; + +&i2srx_3ch { + status = "disabled"; +}; + +&i2stx_4ch1 { + status = "disabled"; +}; diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dts b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dts new file mode 100644 index 000000000000..aba07b81afec --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dts @@ -0,0 +1,257 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + */ + +/dts-v1/; +#include "jh7110-visionfive-v2.dtsi" +#include "codecs/sf_hdmi.dtsi" + +/ { + model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + gpio-restart { + compatible = "gpio-restart"; + gpios = <&gpio 35 GPIO_ACTIVE_HIGH>; + priority = <160>; + }; +}; + +&gpio { + uart0_pins: uart0-pins { + uart0-pins-tx { + starfive,pins = <PAD_GPIO5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART0_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart0-pins-rx { + starfive,pins = <PAD_GPIO6>; + starfive,pinmux = <PAD_GPIO6_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART0_SIN>; + }; + }; + + i2c2_pins: i2c2-pins { + i2c2-pins-scl { + starfive,pins = <PAD_GPIO3>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_CLK_IN_A>; + }; + + i2c2-pins-sda { + starfive,pins = <PAD_GPIO2>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C2_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C2_IC_DATA_IN_A>; + }; + }; + + mmc0_pins: mmc0-pins { + mmc0-pins-rest { + starfive,pins = <PAD_GPIO62>; + starfive,pinmux = <PAD_GPIO62_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_SDIO0_RST_N>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + mmc0-pins-cLK { + starfive,pins = <PAD_SD0_CLK>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(2) | GPIO_SLEW(1))>; + }; + + mmc0-pins-cmd { + starfive,pins = <PAD_SD0_CMD>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data0 { + starfive,pins = <PAD_SD0_DATA0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data1 { + starfive,pins = <PAD_SD0_DATA1>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data2 { + starfive,pins = <PAD_SD0_DATA2>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data3 { + starfive,pins = <PAD_SD0_DATA3>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data4 { + starfive,pins = <PAD_SD0_DATA4>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data5 { + starfive,pins = <PAD_SD0_DATA5>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data6 { + starfive,pins = <PAD_SD0_DATA6>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + + mmc0-pins-data7 { + starfive,pins = <PAD_SD0_DATA7>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + }; + }; + + sdcard1_pins: sdcard1-pins { + sdcard1-pins0 { + starfive,pins = <PAD_GPIO10>; + starfive,pinmux = <PAD_GPIO10_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(2) | GPIO_SLEW(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCLK_OUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + sdcard1-pins1 { + starfive,pins = <PAD_GPIO9>; + starfive,pinmux = <PAD_GPIO9_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CCMD_OUT>; + starfive,pin-gpio-doen = <OEN_SDIO1_CCMD_OUT_EN>; + starfive,pin-gpio-din = <GPI_SDIO1_CCMD_IN>; + }; + + sdcard1-pins2 { + starfive,pins = <PAD_GPIO11>; + starfive,pinmux = <PAD_GPIO11_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_0>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_0>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_0>; + }; + + sdcard1-pins3 { + starfive,pins = <PAD_GPIO12>; + starfive,pinmux = <PAD_GPIO12_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_1>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_1>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_1>; + }; + + sdcard1-pins4 { + starfive,pins = <PAD_GPIO7>; + starfive,pinmux = <PAD_GPIO7_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_2>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_2>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_2>; + }; + + sdcard1-pins5 { + starfive,pins = <PAD_GPIO8>; + starfive,pinmux = <PAD_GPIO8_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)) | GPIO_DS(1))>; + starfive,pin-gpio-dout = <GPO_SDIO1_CDATA_OUT_3>; + starfive,pin-gpio-doen = <OEN_SDIO1_CDATA_OUT_EN_3>; + starfive,pin-gpio-din = <GPI_SDIO1_CDATA_IN_3>; + }; + }; + + inno_hdmi_pins: inno_hdmi-pins { + inno_hdmi-scl { + starfive,pins = <PAD_GPIO0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SCL_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SCL_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SCL_IN>; + }; + + inno_hdmi-sda { + starfive,pins = <PAD_GPIO1>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_HDMI0_DDC_SDA_OUT>; + starfive,pin-gpio-doen = <OEN_HDMI0_DDC_SDA_OEN>; + starfive,pin-gpio-din = <GPI_HDMI0_DDC_SDA_IN>; + }; + + inno_hdmi-cec-pins { + starfive,pins = <PAD_GPIO14>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-doen = <OEN_HDMI0_CEC_SDA_OEN>; + starfive,pin-gpio-dout = <GPO_HDMI0_CEC_SDA_OUT>; + starfive,pin-gpio-din = <GPI_HDMI0_CEC_SDA_IN>; + }; + + inno_hdmi-hpd-pins { + starfive,pins = <PAD_GPIO15>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_HDMI0_HPD>; + }; + }; + + mclk_ext_pins: mclk_ext_pins { + mclk_ext_pins { + starfive,pins = <PAD_GPIO4>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-din = <GPI_CRG0_EXT_MCLK>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; +}; + +&uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins>; + status = "disabled"; +}; + +&i2c2 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c2_pins>; + status = "disabled"; +}; + +&mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; + status = "disabled"; +}; + +&mmc1 { + pinctrl-names = "default"; + pinctrl-0 = <&sdcard1_pins>; + status = "disabled"; +}; + +&hdmi { + pinctrl-names = "default"; + pinctrl-0 = <&inno_hdmi_pins>; + hpd-gpio = <&gpio 15 GPIO_ACTIVE_HIGH>; + status = "disabled"; +}; + +&i2stx_4ch0 { + pinctrl-names = "default"; + pinctrl-0 = <&mclk_ext_pins>; + status = "disabled"; +}; + +&cpu1 { + cpu-supply = <&cpu_vdd>; + clocks = <&clkgen JH7110_CPU_CORE>; + clock-names = "cpu"; +}; diff --git a/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dtsi b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dtsi new file mode 100644 index 000000000000..e14ece6e3fd6 --- /dev/null +++ b/arch/riscv/boot/dts/starfive/jh7110-visionfive-v2.dtsi @@ -0,0 +1,918 @@ +// SPDX-License-Identifier: GPL-2.0 OR MIT +/* + * Copyright (C) 2022 StarFive Technology Co., Ltd. + * Copyright (C) 2022 Hal Feng <hal.feng@starfivetech.com> + */ + +/dts-v1/; +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/starfive,jh7110-pinfunc.h> +#include "jh7110.dtsi" +#include "codecs/sf_pwmdac.dtsi" + +/ { + model = "StarFive VisionFive V2"; + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + aliases { + spi0 = &qspi; + gpio0 = &gpio; + ethernet0 = &gmac0; + ethernet1 = &gmac1; + mmc0 = &mmc0; + mmc1 = &mmc1; + 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 0x70000000 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>; + }; + }; + + leds { + compatible = "gpio-leds"; + + led-ack { + gpios = <&gpioa 3 GPIO_ACTIVE_HIGH>; + color = <LED_COLOR_ID_GREEN>; + function = LED_FUNCTION_HEARTBEAT; + linux,default-trigger = "heartbeat"; + label = "ack"; + }; + }; +}; + +&gpio { + i2c0_pins: i2c0-pins { + i2c0-pins-scl { + starfive,pins = <PAD_GPIO57>; + starfive,pinmux = <PAD_GPIO57_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C0_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C0_IC_CLK_IN_A>; + }; + + i2c0-pins-sda { + starfive,pins = <PAD_GPIO58>; + starfive,pinmux = <PAD_GPIO58_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C0_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C0_IC_DATA_IN_A>; + }; + }; + + i2c5_pins: i2c5-pins { + i2c5-pins-scl { + starfive,pins = <PAD_GPIO19>; + starfive,pinmux = <PAD_GPIO19_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C5_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C5_IC_CLK_IN_A>; + }; + + i2c5-pins-sda { + starfive,pins = <PAD_GPIO20>; + starfive,pinmux = <PAD_GPIO20_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C5_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C5_IC_DATA_IN_A>; + }; + }; + + i2c6_pins: i2c6-pins { + i2c6-pins-scl { + starfive,pins = <PAD_GPIO16>; + starfive,pinmux = <PAD_GPIO16_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C6_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C6_IC_CLK_IN_A>; + }; + + i2c6-pins-sda { + starfive,pins = <PAD_GPIO17>; + starfive,pinmux = <PAD_GPIO17_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C6_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C6_IC_DATA_IN_A>; + }; + }; + + pwmdac0_pins: pwmdac0-pins { + pwmdac0-pins-left { + starfive,pins = <PAD_GPIO33>; + starfive,pinmux = <PAD_GPIO33_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_PWMDAC0_LEFT_OUTPUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + pwmdac0-pins-right { + starfive,pins = <PAD_GPIO34>; + starfive,pinmux = <PAD_GPIO34_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_PWMDAC0_RIGHT_OUTPUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pwm_pins: pwm-pins { + pwm_ch0-pins { + starfive,pins = <PAD_GPIO46>; + starfive,pinmux = <PAD_GPIO46_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_PTC0_PWM_0>; + starfive,pin-gpio-doen = <OEN_PTC0_PWM_0_OE_N>; + }; + + pwm_ch1-pins { + starfive,pins = <PAD_GPIO59>; + starfive,pinmux = <PAD_GPIO59_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_PTC0_PWM_1>; + starfive,pin-gpio-doen = <OEN_PTC0_PWM_1_OE_N>; + }; + }; + + ssp0_pins: ssp0-pins { + ssp0-pins_tx { + starfive,pins = <PAD_GPIO52>; + starfive,pinmux = <PAD_GPIO52_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_SPI0_SSPTXD>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + ssp0-pins_rx { + starfive,pins = <PAD_GPIO53>; + starfive,pinmux = <PAD_GPIO53_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_SPI0_SSPRXD>; + }; + + ssp0-pins_clk { + starfive,pins = <PAD_GPIO48>; + starfive,pinmux = <PAD_GPIO48_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_SPI0_SSPCLKOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + ssp0-pins_cs { + starfive,pins = <PAD_GPIO49>; + starfive,pinmux = <PAD_GPIO49_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_SPI0_SSPFSSOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pcie0_perst_default: pcie0_perst_default { + perst-pins { + starfive,pins = <PAD_GPIO26>; + starfive,pinmux = <PAD_GPIO26_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_HIGH>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pcie0_perst_active: pcie0_perst_active { + perst-pins { + starfive,pins = <PAD_GPIO26>; + starfive,pinmux = <PAD_GPIO26_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pcie0_wake_default: pcie0_wake_default { + wake-pins { + starfive,pins = <PAD_GPIO32>; + starfive,pinmux = <PAD_GPIO32_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; + + pcie0_clkreq_default: pcie0_clkreq_default { + clkreq-pins { + starfive,pins = <PAD_GPIO27>; + starfive,pinmux = <PAD_GPIO27_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; + + pcie1_perst_default: pcie1_perst_default { + perst-pins { + starfive,pins = <PAD_GPIO28>; + starfive,pinmux = <PAD_GPIO28_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_HIGH>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pcie1_perst_active: pcie1_perst_active { + perst-pins { + starfive,pins = <PAD_GPIO28>; + starfive,pinmux = <PAD_GPIO28_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + pcie1_wake_default: pcie1_wake_default { + wake-pins { + starfive,pins = <PAD_GPIO21>; + starfive,pinmux = <PAD_GPIO21_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; + + pcie1_clkreq_default: pcie1_clkreq_default { + clkreq-pins { + starfive,pins = <PAD_GPIO29>; + starfive,pinmux = <PAD_GPIO29_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; + + usb_pins: usb-pins { + drive-vbus-pin { + starfive,pins = <PAD_GPIO25>; + starfive,pinmux = <PAD_GPIO25_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_USB0_DRIVE_VBUS_IO>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; + + i2srx_pins: i2srx-pins { + i2srx-pins0 { + starfive,pins = <PAD_GPIO61>; + starfive,pinmux = <PAD_GPIO61_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_I2SRX0_EXT_SDIN0>; + }; + }; + + i2s_clk_pins: i2s-clk0 { + i2s-clk0_bclk { + starfive,pins = <PAD_GPIO38>; + starfive,pinmux = <PAD_GPIO38_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-din = <GPI_I2STX0_BCLK_SLV GPI_I2SRX0_BCLK_SLV>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + + i2s-clk0_lrclk { + starfive,pins = <PAD_GPIO63>; + starfive,pinmux = <PAD_GPIO63_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-din = <GPI_I2STX0_LRCK_SLV GPI_I2SRX0_LRCK_SLV>; + starfive,pin-gpio-doen = <OEN_HIGH>; + }; + }; + + i2stx_pins: i2stx-pins { + i2stx-pins0 { + starfive,pins = <PAD_GPIO44>; + starfive,pinmux = <PAD_GPIO44_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1))>; + starfive,pin-gpio-dout = <GPO_I2STX_4CH1_SDO0>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + }; +}; + +&uart0 { + status = "disabled"; +}; + +&dma { + status = "disabled"; +}; + +&trng { + status = "disabled"; +}; + +&crypto { + status = "disabled"; +}; + +&sec_dma { + status = "disabled"; +}; + +&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"; +}; + +&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; + status = "disabled"; + + seeed_plane_i2c@45 { + compatible = "seeed_panel"; + reg = <0x45>; + + port { + panel_out0: endpoint { + remote-endpoint = <&dsi0_output>; + }; + }; + }; + + tinker_ft5406: tinker_ft5406@38 { + compatible = "tinker_ft5406"; + reg = <0x38>; + }; + + panel_radxa@19 { + compatible ="starfive_jadard"; + reg = <0x19>; + reset-gpio = <&gpio 23 0>; + enable-gpio = <&gpio 22 0>; + + port { + panel_out1: endpoint { + remote-endpoint = <&dsi1_output>; + }; + }; + }; + + touchscreen@14 { + compatible = "goodix,gt911"; + reg = <0x14>; + irq-gpios = <&gpio 30 GPIO_ACTIVE_HIGH>; + reset-gpios = <&gpio 31 GPIO_ACTIVE_HIGH>; + }; + + panel_10inch@20 { + compatible ="panel_10inch"; + reg = <0x20>; + reset-gpio = <&gpio 23 0>; + enable-gpio = <&gpio 22 0>; + + port { + panel_out2: endpoint { + remote-endpoint = <&dsi2_output>; + }; + }; + }; +}; + +&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 = "disabled"; + + eeprom@50 { + compatible = "atmel,24c04"; + reg = <0x50>; + pagesize = <16>; + }; + + pmic: axp15060_reg@36 { + compatible = "stf,axp15060-regulator"; + reg = <0x36>; + + regulators { + mipi_0p9: ALDO1 { + regulator-boot-on; + regulator-compatible = "mipi_0p9"; + regulator-name = "mipi_0p9"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + hdmi_0p9: ALDO5 { + regulator-boot-on; + regulator-compatible = "hdmi_0p9"; + regulator-name = "hdmi_0p9"; + regulator-min-microvolt = <900000>; + regulator-max-microvolt = <900000>; + }; + + hdmi_1p8: ALDO3 { + regulator-boot-on; + regulator-compatible = "hdmi_1p8"; + regulator-name = "hdmi_1p8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + sdio_vdd: ALDO4 { + regulator-boot-on; + regulator-always-on; + regulator-compatible = "sdio_vdd"; + regulator-name = "sdio_vdd"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + }; + + vcc_3v3: DCDC1 { + regulator-boot-on; + regulator-always-on; + regulator-compatible = "vcc_3v3"; + regulator-name = "vcc_3v3"; + regulator-min-microvolt = <3300000>; + regulator-max-microvolt = <3300000>; + }; + + cpu_vdd: DCDC2 { + regulator-boot-on; + regulator-always-on; + regulator-compatible = "cpu_vdd"; + regulator-name = "cpu_vdd"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1540000>; + }; + }; + }; +}; + +&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 = "disabled"; + + imx219: imx219@10 { + compatible = "sony,imx219"; + reg = <0x10>; + clocks = <&clk_ext_camera>; + clock-names = "xclk"; + reset-gpio = <&gpio 18 0>; + 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 = <4>; + data-lanes = <0 1>; + lane-polarities = <0 0 0>; + link-frequencies = /bits/ 64 <456000000>; + }; + }; + }; + + imx708: imx708@1a { + compatible = "sony,imx708"; + reg = <0x1a>; + clocks = <&clk_ext_camera>; + reset-gpio = <&gpio 18 0>; + + port { + imx708_to_csi2rx0: endpoint { + remote-endpoint = <&csi2rx0_from_imx708>; + data-lanes = <1 2>; + clock-noncontinuous; + link-frequencies = /bits/ 64 <450000000>; + }; + }; + }; + + ov4689: ov4689@36 { + compatible = "ovti,ov4689"; + reg = <0x36>; + clocks = <&clk_ext_camera>; + clock-names = "xclk"; + 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>; + }; + }; + }; +}; + +&mmc0 { + max-frequency = <100000000>; + card-detect-delay = <300>; + bus-width = <8>; + cap-mmc-highspeed; + non-removable; + cap-mmc-hw-reset; + post-power-on-delay-ms = <200>; + vmmc-supply = <&vcc_3v3>; + vqmmc-supply = <&sdio_vdd>; + status = "disabled"; +}; + +&mmc1 { + max-frequency = <100000000>; + card-detect-delay = <300>; + bus-width = <4>; + no-sdio; + no-mmc; + broken-cd; + cap-sd-highspeed; + post-power-on-delay-ms = <200>; + status = "disabled"; +}; + +&vin_sysctl { + /* when use dvp open this pinctrl*/ + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@1 { + reg = <1>; + #address-cells = <1>; + #size-cells = <0>; + + /* CSI2 bus endpoint */ + csi2rx0_from_imx219: endpoint@0 { + reg = <0>; + remote-endpoint = <&imx219_to_csi2rx0>; + bus-type = <4>; /* MIPI CSI-2 D-PHY */ + clock-lanes = <4>; + data-lanes = <0 1>; + lane-polarities = <0 0 0>; + status = "disabled"; + }; + + csi2rx0_from_imx708: endpoint@1 { + reg = <1>; + remote-endpoint = <&imx708_to_csi2rx0>; + bus-type = <4>; /* MIPI CSI-2 D-PHY */ + clock-lanes = <4>; + data-lanes = <0 1>; + lane-polarities = <0 0 0>; + status = "disabled"; + }; + + csi2rx0_from_ov4689: endpoint@2 { + reg = <2>; + remote-endpoint = <&ov4689_to_csi2rx0>; + bus-type = <4>; /* MIPI CSI-2 D-PHY */ + clock-lanes = <4>; + data-lanes = <0 1>; + status = "disabled"; + }; + }; + }; +}; + +&sfctemp { + status = "disabled"; +}; + +&jpu { + status = "disabled"; +}; + +&vpu_dec { + status = "disabled"; +}; + +&vpu_enc { + status = "disabled"; +}; + +&gmac0 { + status = "disabled"; + #address-cells = <1>; + #size-cells = <0>; + phy0: ethernet-phy@0 { + rgmii_sw_dr_2 = <0x0>; + rgmii_sw_dr = <0x3>; + rgmii_sw_dr_rxc = <0x6>; + rxc_dly_en = <0>; + rx_delay_sel = <0xa>; + tx_delay_sel_fe = <5>; + tx_delay_sel = <0xa>; + tx_inverted_10 = <0x1>; + tx_inverted_100 = <0x1>; + tx_inverted_1000 = <0x1>; + }; +}; + +&gmac1 { + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + phy1: ethernet-phy@1 { + rgmii_sw_dr_2 = <0x0>; + rgmii_sw_dr = <0x3>; + rgmii_sw_dr_rxc = <0x6>; + tx_delay_sel_fe = <5>; + tx_delay_sel = <0>; + rxc_dly_en = <0>; + rx_delay_sel = <0x2>; + tx_inverted_10 = <0x1>; + tx_inverted_100 = <0x1>; + tx_inverted_1000 = <0x0>; + }; +}; + +&gpu { + status = "disabled"; +}; + +&pwmdac { + pinctrl-names = "default"; + pinctrl-0 = <&pwmdac0_pins>; + status = "disabled"; +}; + +&i2srx_3ch { + pinctrl-names = "default"; + pinctrl-0 = <&i2s_clk_pins &i2srx_pins>; + status = "disabled"; +}; + +&i2stx_4ch1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2stx_pins>; + status = "disabled"; +}; + +&pwmdac_codec { + status = "disabled"; +}; + +&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 = "disabled"; + }; +}; + +&pcie0 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie0_wake_default>, + <&pcie0_clkreq_default>; + reset-gpios = <&gpio 26 GPIO_ACTIVE_LOW>; + status = "disabled"; +}; + +&pcie1 { + pinctrl-names = "default"; + pinctrl-0 = <&pcie1_wake_default>, + <&pcie1_clkreq_default>; + reset-gpios = <&gpio 28 GPIO_ACTIVE_LOW>; + status = "disabled"; +}; + +&mailbox_contrl0 { + status = "disabled"; +}; + +&mailbox_client0 { + status = "disabled"; +}; + +&display { + status = "disabled"; +}; + +&hdmi { + status = "disabled"; + + hdmi_in: port { + #address-cells = <1>; + #size-cells = <0>; + hdmi_in_lcdc: endpoint@0 { + reg = <0>; + remote-endpoint = <&dc_out_dpi1>; + }; + }; +}; + +&dc8200 { + status = "disabled"; + + 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>; + }; + }; +}; + +&rgb_output { + status = "disabled"; + + 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>; + }; + }; + }; +}; + +&dsi_output { + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + mipi_in: endpoint { + remote-endpoint = <&dc_out_dpi2>; + }; + }; + + port@1 { + reg = <1>; + sf_dpi_output: endpoint { + remote-endpoint = <&dsi_in_port>; + }; + }; + }; +}; + +&mipi_dsi { + status = "disabled"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + #address-cells = <1>; + #size-cells = <0>; + + dsi0_output: endpoint@0 { + reg = <0>; + remote-endpoint = <&panel_out0>; + }; + + dsi1_output: endpoint@1 { + reg = <1>; + remote-endpoint = <&panel_out1>; + }; + dsi2_output: endpoint@2 { + reg = <2>; + remote-endpoint = <&panel_out2>; + }; + }; + + port@1{ + reg = <1>; + dsi_in_port: endpoint { + remote-endpoint = <&sf_dpi_output>; + }; + }; + + }; +}; + +&mipi_dphy { + status = "disabled"; +}; + +&co_process { + status = "disabled"; +}; + +&usbdrd30 { + clocks = <&clkgen JH7110_USB_125M>, + <&clkgen JH7110_USB0_CLK_APP_125>, + <&clkgen JH7110_USB0_CLK_LPM>, + <&clkgen JH7110_USB0_CLK_STB>, + <&clkgen JH7110_USB0_CLK_USB_APB>, + <&clkgen JH7110_USB0_CLK_AXI>, + <&clkgen JH7110_USB0_CLK_UTMI_APB>; + clock-names = "125m","app","lpm","stb","apb","axi","utmi"; + resets = <&rstgen RSTN_U0_CDN_USB_PWRUP>, + <&rstgen RSTN_U0_CDN_USB_APB>, + <&rstgen RSTN_U0_CDN_USB_AXI>, + <&rstgen RSTN_U0_CDN_USB_UTMI_APB>; + reset-names = "pwrup","apb","axi","utmi"; + starfive,usb2-only; + dr_mode = "peripheral"; /*host or peripheral*/ + status = "disabled"; +}; + +&xrp { + status = "disabled"; +}; + +&ptc { + pinctrl-names = "default"; + pinctrl-0 = <&pwm_pins>; + status = "disabled"; +}; diff --git a/arch/riscv/boot/dts/starfive/vf2-overlay/Makefile b/arch/riscv/boot/dts/starfive/vf2-overlay/Makefile new file mode 100644 index 000000000000..21e425e9dc1e --- /dev/null +++ b/arch/riscv/boot/dts/starfive/vf2-overlay/Makefile @@ -0,0 +1,2 @@ +# SPDX-License-Identifier: GPL-2.0 +dtb-$(CONFIG_SOC_STARFIVE_JH7110) += vf2-overlay-uart3-i2c.dtbo diff --git a/arch/riscv/boot/dts/starfive/vf2-overlay/vf2-overlay-uart3-i2c.dts b/arch/riscv/boot/dts/starfive/vf2-overlay/vf2-overlay-uart3-i2c.dts new file mode 100644 index 000000000000..e0ebf0aeafcf --- /dev/null +++ b/arch/riscv/boot/dts/starfive/vf2-overlay/vf2-overlay-uart3-i2c.dts @@ -0,0 +1,77 @@ +/dts-v1/; +/plugin/; +#include <dt-bindings/gpio/gpio.h> +#include <dt-bindings/pinctrl/starfive,jh7110-pinfunc.h> +/ { + compatible = "starfive,visionfive-v2", "starfive,jh7110"; + + //gpio + fragment@0 { + target-path = "/soc/gpio@13040000"; + __overlay__ { + dt_uart3_pins: dt-uart3-pins { + uart3-pins-tx { + starfive,pins = <PAD_GPIO60>; + starfive,pinmux = <PAD_GPIO60_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_DS(3))>; + starfive,pin-gpio-dout = <GPO_UART3_SOUT>; + starfive,pin-gpio-doen = <OEN_LOW>; + }; + + uart3-pins-rx { + starfive,pins = <PAD_GPIO63>; + starfive,pinmux = <PAD_GPIO63_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | GPIO_PU(1))>; + starfive,pin-gpio-doen = <OEN_HIGH>; + starfive,pin-gpio-din = <GPI_UART3_SIN>; + }; + }; + + dt_i2c1_pins: dt-i2c1-pins { + i2c1-pins-scl { + starfive,pins = <PAD_GPIO42>; + starfive,pinmux = <PAD_GPIO42_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C1_IC_CLK_OE>; + starfive,pin-gpio-din = <GPI_I2C1_IC_CLK_IN_A>; + }; + + i2c1-pins-sda { + starfive,pins = <PAD_GPIO43>; + starfive,pinmux = <PAD_GPIO43_FUNC_SEL 0>; + starfive,pin-ioconfig = <IO(GPIO_IE(1) | (GPIO_PU(1)))>; + starfive,pin-gpio-dout = <GPO_LOW>; + starfive,pin-gpio-doen = <OEN_I2C1_IC_DATA_OE>; + starfive,pin-gpio-din = <GPI_I2C1_IC_DATA_IN_A>; + }; + }; + }; + }; + + //uart3 + fragment@1 { + target-path = "/soc/serial@12000000"; + __overlay__ { + pinctrl-names = "default"; + pinctrl-0 = <&dt_uart3_pins>; + status = "okay"; + }; + }; + + //i2c1 + fragment@2 { + target-path = "/soc/i2c@10040000"; + __overlay__ { + 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 = <&dt_i2c1_pins>; + status = "okay"; + }; + }; +}; + |