Sun Jan 14 07:39:27 2024 UTC (140d)
Import RISC-V starfive DTS from https://github.com/starfive-tech/linux.git"

The files are taken from the visionfive branch with latest DTS related commit

    commit 9b5f280fa413ee76fac20cd575075fc53468d527
    Author: Emil Renner Berthing <kernel@esmil.dk>
    Date:   Sun Oct 31 17:15:58 2021 +0100

        riscv: dts: Add full JH7100, Starlight and VisionFive support


(skrll)
diff -r1.1 -r1.2 src/distrib/sets/lists/dtb/ad.riscv32
diff -r1.1 -r1.2 src/distrib/sets/lists/dtb/ad.riscv64
diff -r1.1 -r1.2 src/sys/dtb/riscv/Makefile
diff -r0 -r1.1 src/sys/dtb/riscv/starfive/Makefile
diff -r1.1.1.1 -r1.2 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/Makefile
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/Makefile
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight-a1.dts
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-common.dtsi
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dts
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100.dtsi
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-pinfunc.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110.dtsi
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive,jh7110-crg.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive-jh7100-audio.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive-jh7100.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/power/starfive,jh7110-pmu.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive,jh7110-crg.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7100-audio.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7100.h
diff -r0 -r1.1 src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7110.h

cvs diff -r1.1 -r1.2 src/distrib/sets/lists/dtb/ad.riscv32 (expand / switch to unified diff)

--- src/distrib/sets/lists/dtb/ad.riscv32 2021/11/13 10:13:42 1.1
+++ src/distrib/sets/lists/dtb/ad.riscv32 2024/01/14 07:39:25 1.2
@@ -1,8 +1,14 @@ @@ -1,8 +1,14 @@
1# $NetBSD: ad.riscv32,v 1.1 2021/11/13 10:13:42 skrll Exp $ 1# $NetBSD: ad.riscv32,v 1.2 2024/01/14 07:39:25 skrll Exp $
2# 2#
3# DO NOT EDIT THIS FILE MANUALLY 3# DO NOT EDIT THIS FILE MANUALLY
4# Generated by "make update-sets" in sys/dtb 4# Generated by "make update-sets" in sys/dtb
5# 5#
6./boot/dtb/sifive dtb-base-boot dtb 6./boot/dtb/sifive dtb-base-boot dtb
7./boot/dtb/sifive/hifive-unleashed-a00.dtb dtb-base-boot dtb 7./boot/dtb/sifive/hifive-unleashed-a00.dtb dtb-base-boot dtb
8./boot/dtb/sifive/hifive-unmatched-a00.dtb dtb-base-boot dtb 8./boot/dtb/sifive/hifive-unmatched-a00.dtb dtb-base-boot dtb
 9./boot/dtb/starfive dtb-base-boot dtb
 10./boot/dtb/starfive/jh7100-beaglev-starlight-a1.dtb dtb-base-boot dtb
 11./boot/dtb/starfive/jh7100-beaglev-starlight.dtb dtb-base-boot dtb
 12./boot/dtb/starfive/jh7100-starfive-visionfive-v1.dtb dtb-base-boot dtb
 13./boot/dtb/starfive/jh7110-starfive-visionfive-2-v1.2a.dtb dtb-base-boot dtb
 14./boot/dtb/starfive/jh7110-starfive-visionfive-2-v1.3b.dtb dtb-base-boot dtb

cvs diff -r1.1 -r1.2 src/distrib/sets/lists/dtb/ad.riscv64 (expand / switch to unified diff)

--- src/distrib/sets/lists/dtb/ad.riscv64 2021/11/13 10:13:42 1.1
+++ src/distrib/sets/lists/dtb/ad.riscv64 2024/01/14 07:39:25 1.2
@@ -1,8 +1,14 @@ @@ -1,8 +1,14 @@
1# $NetBSD: ad.riscv64,v 1.1 2021/11/13 10:13:42 skrll Exp $ 1# $NetBSD: ad.riscv64,v 1.2 2024/01/14 07:39:25 skrll Exp $
2# 2#
3# DO NOT EDIT THIS FILE MANUALLY 3# DO NOT EDIT THIS FILE MANUALLY
4# Generated by "make update-sets" in sys/dtb 4# Generated by "make update-sets" in sys/dtb
5# 5#
6./boot/dtb/sifive dtb-base-boot dtb 6./boot/dtb/sifive dtb-base-boot dtb
7./boot/dtb/sifive/hifive-unleashed-a00.dtb dtb-base-boot dtb 7./boot/dtb/sifive/hifive-unleashed-a00.dtb dtb-base-boot dtb
8./boot/dtb/sifive/hifive-unmatched-a00.dtb dtb-base-boot dtb 8./boot/dtb/sifive/hifive-unmatched-a00.dtb dtb-base-boot dtb
 9./boot/dtb/starfive dtb-base-boot dtb
 10./boot/dtb/starfive/jh7100-beaglev-starlight-a1.dtb dtb-base-boot dtb
 11./boot/dtb/starfive/jh7100-beaglev-starlight.dtb dtb-base-boot dtb
 12./boot/dtb/starfive/jh7100-starfive-visionfive-v1.dtb dtb-base-boot dtb
 13./boot/dtb/starfive/jh7110-starfive-visionfive-2-v1.2a.dtb dtb-base-boot dtb
 14./boot/dtb/starfive/jh7110-starfive-visionfive-2-v1.3b.dtb dtb-base-boot dtb

cvs diff -r1.1 -r1.2 src/sys/dtb/riscv/Makefile (expand / switch to unified diff)

--- src/sys/dtb/riscv/Makefile 2021/11/13 10:13:42 1.1
+++ src/sys/dtb/riscv/Makefile 2024/01/14 07:39:25 1.2
@@ -1,7 +1,8 @@ @@ -1,7 +1,8 @@
1# $NetBSD: Makefile,v 1.1 2021/11/13 10:13:42 skrll Exp $ 1# $NetBSD: Makefile,v 1.2 2024/01/14 07:39:25 skrll Exp $
2 2
3TARGETS+= dtblist 3TARGETS+= dtblist
4 4
5SUBDIR+= sifive 5SUBDIR+= sifive
 6SUBDIR+= starfive
6 7
7.include <bsd.subdir.mk> 8.include <bsd.subdir.mk>

File Added: src/sys/dtb/riscv/starfive/Makefile
#	$NetBSD: Makefile,v 1.1 2024/01/14 07:39:25 skrll Exp $

DTSSUBDIR=	starfive
DTSMAKEVARS=	CONFIG_ARCH_STARFIVE=y
DTSFILESCMD=	${MAKE} -C ${ARCHDTSDIR}/${DTSSUBDIR} ${DTSMAKEVARS} -v dtb-y
DTS=		${DTSFILESCMD:sh}

.include <bsd.dtb.mk>

cvs diff -r1.1.1.1 -r1.2 src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/Makefile (expand / switch to unified diff)

--- src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/Makefile 2021/11/13 08:40:13 1.1.1.1
+++ src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/Makefile 2024/01/14 07:39:25 1.2
@@ -1,6 +1,7 @@ @@ -1,6 +1,7 @@
1# SPDX-License-Identifier: GPL-2.0 1# SPDX-License-Identifier: GPL-2.0
2subdir-y += sifive 2subdir-y += sifive
 3subdir-y += starfive
3subdir-$(CONFIG_SOC_CANAAN_K210_DTB_BUILTIN) += canaan 4subdir-$(CONFIG_SOC_CANAAN_K210_DTB_BUILTIN) += canaan
4subdir-y += microchip 5subdir-y += microchip
5 6
6obj-$(CONFIG_BUILTIN_DTB) := $(addsuffix /, $(subdir-y)) 7obj-$(CONFIG_BUILTIN_DTB) := $(addsuffix /, $(subdir-y))

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/Makefile
# SPDX-License-Identifier: GPL-2.0
# Enables support for device-tree overlays
DTC_FLAGS_jh7100-beaglev-starlight-a1 := -@
DTC_FLAGS_jh7100-beaglev-starlight := -@
DTC_FLAGS_jh7100-starfive-visionfive-v1 := -@
DTC_FLAGS_jh7110-starfive-visionfive-2-v1.2a := -@
DTC_FLAGS_jh7110-starfive-visionfive-2-v1.3b := -@

dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-beaglev-starlight-a1.dtb
dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-beaglev-starlight.dtb
dtb-$(CONFIG_ARCH_STARFIVE) += jh7100-starfive-visionfive-v1.dtb

dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.2a.dtb
dtb-$(CONFIG_ARCH_STARFIVE) += jh7110-starfive-visionfive-2-v1.3b.dtb

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight-a1.dts
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7100-common.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "BeagleV Starlight Beta A1";
	compatible = "beagle,beaglev-starlight-jh7100-a1", "starfive,jh7100";

	gpio-restart {
		compatible = "gpio-restart";
		gpios = <&gpio 63 GPIO_ACTIVE_HIGH>;
		priority = <224>;
	};
};

&gpio {
	/* don't reset gpio mux for serial console and reset gpio */
	starfive,keep-gpiomux = <13 14 63>;
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-beaglev-starlight.dts
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7100-common.dtsi"
#include <dt-bindings/gpio/gpio.h>

/ {
	model = "BeagleV Starlight Beta";
	compatible = "beagle,beaglev-starlight-jh7100-r0", "starfive,jh7100";
};

&gmac {
	phy-handle = <&phy>;
};

&gpio {
	/* don't reset gpio mux for serial console on uart3 */
	starfive,keep-gpiomux = <13 14>;
};

&mdio {
	phy: ethernet-phy@7 {
		reg = <7>;
		reset-gpios = <&gpio 63 GPIO_ACTIVE_LOW>;
	};
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-common.dtsi
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7100.dtsi"
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/leds/common.h>
#include <dt-bindings/pinctrl/pinctrl-starfive-jh7100.h>

/ {
	aliases {
		mmc0 = &sdio0;
		mmc1 = &sdio1;
		serial0 = &uart3;
		serial1 = &uart0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	cpus {
		timebase-frequency = <6250000>;
	};

	memory@80000000 {
		device_type = "memory";
		reg = <0x0 0x80000000 0x2 0x0>;
	};

	leds {
		compatible = "gpio-leds";

		led-ack {
			gpios = <&gpio 43 GPIO_ACTIVE_HIGH>;
			color = <LED_COLOR_ID_GREEN>;
			function = LED_FUNCTION_HEARTBEAT;
			linux,default-trigger = "heartbeat";
			label = "ack";
		};
	};

	reserved-memory {
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		linux,cma {
			compatible = "shared-dma-pool";
			alloc-ranges = <0x0 0xa0000000 0x0 0x28000000>;
			size = <0x0 0x28000000>;
			alignment = <0x0 0x1000>;
			reusable;
			linux,cma-default;
		};

		jpu_reserved: framebuffer@c9000000 {
			reg = <0x0 0xc9000000 0x0 0x4000000>;
		};

		nvdla_reserved: framebuffer@d0000000 {
			reg = <0x0 0xd0000000 0x0 0x28000000>;
			no-map;
		};

		vin_reserved: framebuffer@f9000000 {
			compatible = "shared-dma-pool";
			reg = <0x0 0xf9000000 0x0 0x1000000>;
			no-map;
		};

		dma-reserved@fa000000 {
			reg = <0x0 0xfa000000 0x0 0x1000000>;
			no-map;
		};

		sffb_reserved: framebuffer@fb000000 {
			compatible = "shared-dma-pool";
			reg = <0x0 0xfb000000 0x0 0x2000000>;
			no-map;
		};

		linux,dma@107a000000 {
			compatible = "shared-dma-pool";
			reg = <0x10 0x7a000000 0x0 0x1000000>;
			no-map;
			linux,dma-default;
		};
	};

	soc {
		dma-ranges = <0x00 0x80000000 0x00 0x80000000 0x00 0x7a000000>,
			     <0x00 0xfa000000 0x10 0x7a000000 0x00 0x01000000>,
			     <0x00 0xfb000000 0x00 0xfb000000 0x07 0x85000000>;
	};

	wifi_pwrseq: wifi-pwrseq {
		compatible = "mmc-pwrseq-simple";
		reset-gpios = <&gpio 37 GPIO_ACTIVE_LOW>;
	};
};

&display {
	memory-region = <&sffb_reserved>;
	status = "okay";
};

&crtc {
	ddr-format = <4>; //<WIN_FMT_RGB565>;
	status = "okay";

	port: port@0 {
		reg = <0>;

		crtc_0_out: endpoint {
			remote-endpoint = <&hdmi_input0>;
		};
	};
};

&encoder {
	encoder-type = <2>; // 2-TMDS, 3-LVDS, 6-DSI, 8-DPI
	status = "okay";

	ports {
		port@0 {
			hdmi_out: endpoint {
				remote-endpoint = <&tda998x_0_input>;
			};
		};

		port@1 {
			hdmi_input0: endpoint {
				remote-endpoint = <&crtc_0_out>;
			};
		};

	};
};

&gmac {
	pinctrl-names = "default";
	pinctrl-0 = <&gmac_pins>;
	phy-mode = "rgmii-id";
	status = "okay";

	mdio: mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwmac-mdio";
	};
};

&gpio {
	gmac_pins: gmac-0 {
		gtxclk-pins {
			pins = <PAD_FUNC_SHARE(115)>;
			bias-pull-up;
			drive-strength = <35>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
		miitxclk-pins {
			pins = <PAD_FUNC_SHARE(116)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
		tx-pins {
			pins = <PAD_FUNC_SHARE(117)>,
			       <PAD_FUNC_SHARE(119)>,
			       <PAD_FUNC_SHARE(120)>,
			       <PAD_FUNC_SHARE(121)>,
			       <PAD_FUNC_SHARE(122)>,
			       <PAD_FUNC_SHARE(123)>,
			       <PAD_FUNC_SHARE(124)>,
			       <PAD_FUNC_SHARE(125)>,
			       <PAD_FUNC_SHARE(126)>;
			bias-pull-up;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
		rxclk-pins {
			pins = <PAD_FUNC_SHARE(127)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-disable;
			slew-rate = <6>;
		};
		rxer-pins {
			pins = <PAD_FUNC_SHARE(129)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
		rx-pins {
			pins = <PAD_FUNC_SHARE(128)>,
			       <PAD_FUNC_SHARE(130)>,
			       <PAD_FUNC_SHARE(131)>,
			       <PAD_FUNC_SHARE(132)>,
			       <PAD_FUNC_SHARE(133)>,
			       <PAD_FUNC_SHARE(134)>,
			       <PAD_FUNC_SHARE(135)>,
			       <PAD_FUNC_SHARE(136)>,
			       <PAD_FUNC_SHARE(137)>,
			       <PAD_FUNC_SHARE(138)>,
			       <PAD_FUNC_SHARE(139)>,
			       <PAD_FUNC_SHARE(140)>,
			       <PAD_FUNC_SHARE(141)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
	};

	i2c0_pins: i2c0-0 {
		i2c-pins {
			pinmux = <GPIOMUX(62, GPO_LOW,
				  GPO_I2C0_PAD_SCK_OEN,
				  GPI_I2C0_PAD_SCK_IN)>,
				 <GPIOMUX(61, GPO_LOW,
				  GPO_I2C0_PAD_SDA_OEN,
				  GPI_I2C0_PAD_SDA_IN)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c1_pins: i2c1-0 {
		i2c-pins {
			pinmux = <GPIOMUX(47, GPO_LOW,
				  GPO_I2C1_PAD_SCK_OEN,
				  GPI_I2C1_PAD_SCK_IN)>,
				 <GPIOMUX(48, GPO_LOW,
				  GPO_I2C1_PAD_SDA_OEN,
				  GPI_I2C1_PAD_SDA_IN)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c2_pins: i2c2-0 {
		i2c-pins {
			pinmux = <GPIOMUX(60, GPO_LOW,
				  GPO_I2C2_PAD_SCK_OEN,
				  GPI_I2C2_PAD_SCK_IN)>,
				 <GPIOMUX(59, GPO_LOW,
				  GPO_I2C2_PAD_SDA_OEN,
				  GPI_I2C2_PAD_SDA_IN)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	pwmdac_pins: pwmdac-0 {
		pwmdac-pins {
			pinmux = <GPIOMUX(23, GPO_PWMDAC_LEFT_OUT,
				  GPO_ENABLE, GPI_NONE)>,
				 <GPIOMUX(24, GPO_PWMDAC_RIGHT_OUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};

	pwm_pins: pwm-0 {
		pwm-pins {
			pinmux = <GPIOMUX(7,
				  GPO_PWM_PAD_OUT_BIT0,
				  GPO_PWM_PAD_OE_N_BIT0,
				  GPI_NONE)>,
				 <GPIOMUX(5,
				  GPO_PWM_PAD_OUT_BIT1,
				  GPO_PWM_PAD_OE_N_BIT1,
				  GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};

	sdio0_pins: sdio0-0 {
		clk-pins {
			pinmux = <GPIOMUX(54, GPO_SDIO0_PAD_CCLK_OUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
		sdio-pins {
			pinmux = <GPIOMUX(55, GPO_LOW, GPO_DISABLE,
				  GPI_SDIO0_PAD_CARD_DETECT_N)>,
				 <GPIOMUX(53,
				  GPO_SDIO0_PAD_CCMD_OUT,
				  GPO_SDIO0_PAD_CCMD_OEN,
				  GPI_SDIO0_PAD_CCMD_IN)>,
				 <GPIOMUX(49,
				  GPO_SDIO0_PAD_CDATA_OUT_BIT0,
				  GPO_SDIO0_PAD_CDATA_OEN_BIT0,
				  GPI_SDIO0_PAD_CDATA_IN_BIT0)>,
				 <GPIOMUX(50,
				  GPO_SDIO0_PAD_CDATA_OUT_BIT1,
				  GPO_SDIO0_PAD_CDATA_OEN_BIT1,
				  GPI_SDIO0_PAD_CDATA_IN_BIT1)>,
				 <GPIOMUX(51,
				  GPO_SDIO0_PAD_CDATA_OUT_BIT2,
				  GPO_SDIO0_PAD_CDATA_OEN_BIT2,
				  GPI_SDIO0_PAD_CDATA_IN_BIT2)>,
				 <GPIOMUX(52,
				  GPO_SDIO0_PAD_CDATA_OUT_BIT3,
				  GPO_SDIO0_PAD_CDATA_OEN_BIT3,
				  GPI_SDIO0_PAD_CDATA_IN_BIT3)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};
	};

	sdio1_pins: sdio1-0 {
		clk-pins {
			pinmux = <GPIOMUX(33, GPO_SDIO1_PAD_CCLK_OUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
		sdio-pins {
			pinmux = <GPIOMUX(29,
				  GPO_SDIO1_PAD_CCMD_OUT,
				  GPO_SDIO1_PAD_CCMD_OEN,
				  GPI_SDIO1_PAD_CCMD_IN)>,
				 <GPIOMUX(36,
				  GPO_SDIO1_PAD_CDATA_OUT_BIT0,
				  GPO_SDIO1_PAD_CDATA_OEN_BIT0,
				  GPI_SDIO1_PAD_CDATA_IN_BIT0)>,
				 <GPIOMUX(30,
				  GPO_SDIO1_PAD_CDATA_OUT_BIT1,
				  GPO_SDIO1_PAD_CDATA_OEN_BIT1,
				  GPI_SDIO1_PAD_CDATA_IN_BIT1)>,
				 <GPIOMUX(34,
				  GPO_SDIO1_PAD_CDATA_OUT_BIT2,
				  GPO_SDIO1_PAD_CDATA_OEN_BIT2,
				  GPI_SDIO1_PAD_CDATA_IN_BIT2)>,
				 <GPIOMUX(31,
				  GPO_SDIO1_PAD_CDATA_OUT_BIT3,
				  GPO_SDIO1_PAD_CDATA_OEN_BIT3,
				  GPI_SDIO1_PAD_CDATA_IN_BIT3)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};
	};

	spi2_pins: spi2-0 {
		mosi-pins {
			pinmux = <GPIOMUX(18, GPO_SPI2_PAD_TXD,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
		miso-pins {
			pinmux = <GPIOMUX(16, GPO_LOW, GPO_DISABLE,
				  GPI_SPI2_PAD_RXD)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};
		sck-pins {
			pinmux = <GPIOMUX(12, GPO_SPI2_PAD_SCK_OUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
		ss-pins {
			pinmux = <GPIOMUX(15, GPO_SPI2_PAD_SS_0_N,
				  GPO_ENABLE, GPI_NONE)>,
				 <GPIOMUX(11, GPO_SPI2_PAD_SS_1_N,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
	};

	uart0_pins: uart0-0 {
		rx-pins {
			pinmux = <GPIOMUX(40, GPO_LOW, GPO_DISABLE,
				  GPI_UART0_PAD_SIN)>,
				 <GPIOMUX(39, GPO_LOW, GPO_DISABLE,
				  GPI_UART0_PAD_CTSN)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-enable;
		};
		tx-pins {
			pinmux = <GPIOMUX(41, GPO_UART0_PAD_SOUT,
				  GPO_ENABLE, GPI_NONE)>,
				 <GPIOMUX(42, GPO_UART0_PAD_RTSN,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
		};
	};

	uart3_pins: uart3-0 {
		rx-pins {
			pinmux = <GPIOMUX(13, GPO_LOW, GPO_DISABLE,
				  GPI_UART3_PAD_SIN)>;
			bias-pull-up;
			drive-strength = <14>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
		tx-pins {
			pinmux = <GPIOMUX(14, GPO_UART3_PAD_SOUT,
				  GPO_ENABLE, GPI_NONE)>;
			bias-disable;
			drive-strength = <35>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};
};

&i2c0 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <500>;
	i2c-scl-falling-time-ns = <500>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";

	pmic@5e {
		compatible = "ti,tps65086";
		reg = <0x5e>;
		gpio-controller;
		#gpio-cells = <2>;

		regulators {
		};
	};

	tda998x@70 {
		compatible = "nxp,tda998x";
		reg = <0x70>;

		port {
			tda998x_0_input: endpoint {
				remote-endpoint = <&hdmi_out>;
			};
		};
	};
};

&i2c1 {
	clock-frequency = <400000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <100>;
	i2c-scl-falling-time-ns = <100>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c1_pins>;
	status = "okay";
};

&i2c2 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <500>;
	i2c-scl-falling-time-ns = <500>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;
	status = "okay";
};

&osc_sys {
	clock-frequency = <25000000>;
};

&osc_aud {
	clock-frequency = <27000000>;
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm_pins>;
	status = "okay";
};

&pwmdac {
	pinctrl-names = "default";
	pinctrl-0 = <&pwmdac_pins>;
	status = "okay";
};

&qspi {
	nor_flash: nor-flash@0 {
		compatible = "spi-flash";
		reg = <0>;
		spi-max-frequency = <31250000>;
		page-size = <256>;
		block-size = <16>;
		cdns,read-delay = <4>;
		cdns,tshsl-ns = <1>;
		cdns,tsd2d-ns = <1>;
		cdns,tchsh-ns = <1>;
		cdns,tslch-ns = <1>;
		spi-tx-bus-width = <1>;
		spi-rx-bus-width = <1>;
	};

	nand_flash: nand-flash@1 {
		compatible = "spi-flash-nand";
		reg = <1>;
		spi-max-frequency = <31250000>;
		page-size = <2048>;
		block-size = <17>;
		cdns,read-delay = <4>;
		cdns,tshsl-ns = <1>;
		cdns,tsd2d-ns = <1>;
		cdns,tchsh-ns = <1>;
		cdns,tslch-ns = <1>;
		spi-tx-bus-width = <1>;
		spi-rx-bus-width = <1>;
	};
};

&sdio0 {
	broken-cd;
	bus-width = <4>;
	cap-sd-highspeed;
	pinctrl-names = "default";
	pinctrl-0 = <&sdio0_pins>;
	status = "okay";
};

&sdio1 {
	#address-cells = <1>;
	#size-cells = <0>;
	bus-width = <4>;
	cap-sd-highspeed;
	cap-sdio-irq;
	cap-power-off-card;
	mmc-pwrseq = <&wifi_pwrseq>;
	non-removable;
	pinctrl-names = "default";
	pinctrl-0 = <&sdio1_pins>;
	status = "okay";

	wifi@1 {
		compatible = "brcm,bcm4329-fmac";
		reg = <1>;
	};
};

&spi2 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi2_pins>;
	status = "okay";

	spi_dev0: spi@0 {
		compatible = "rohm,dh2228fv";
		spi-max-frequency = <10000000>;
		reg = <0>;
	};
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins>;
	status = "okay";
};

&uart3 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart3_pins>;
	status = "okay";
};

&usb3 {
	dr_mode = "host";
	status = "okay";
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100-starfive-visionfive-v1.dts
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7100-common.dtsi"

/ {
	model = "StarFive VisionFive V1";
	compatible = "starfive,visionfive-v1", "starfive,jh7100";

	gpio-restart {
		compatible = "gpio-restart";
		gpios = <&gpio 63 GPIO_ACTIVE_HIGH>;
		priority = <224>;
	};
};

&gmac {
	phy-handle = <&phy>;
};

&gpio {
	/* don't reset gpio mux for serial console and reset gpio */
	starfive,keep-gpiomux = <13 14 63>;
};

&i2c0 {
	eeprom@50 {
		compatible = "atmel,24c04";
		reg = <0x50>;
		pagesize = <16>;
	};
};

/*
 * The board uses a Motorcomm YT8521 PHY supporting RGMII-ID, but requires
 * manual adjustment of the RX internal delay to work properly.  The default
 * RX delay provided by the driver (1.95ns) is too high, but applying a 50%
 * reduction seems to mitigate the issue.
 *
 * It is worth noting the adjustment is not necessary on BeagleV Starlight SBC,
 * which uses a Microchip PHY.  Hence, most likely the Motorcomm PHY is the one
 * responsible for the misbehaviour, not the GMAC.
 */
&mdio {
	phy: ethernet-phy@0 {
		reg = <0>;
		rx-internal-delay-ps = <900>;
	};
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7100.dtsi
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2021 StarFive Technology Co., Ltd.
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include <dt-bindings/clock/starfive-jh7100.h>
#include <dt-bindings/clock/starfive-jh7100-audio.h>
#include <dt-bindings/reset/starfive-jh7100.h>
#include <dt-bindings/reset/starfive-jh7100-audio.h>

/ {
	compatible = "starfive,jh7100";
	#address-cells = <2>;
	#size-cells = <2>;

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		U74_0: cpu@0 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <0>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
					       "zifencei", "zihpm";
			starfive,itim = <&itim0>;
			tlb-split;

			cpu0_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		U74_1: cpu@1 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <1>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <32>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <32>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zicntr", "zicsr",
					       "zifencei", "zihpm";
			starfive,itim = <&itim1>;
			tlb-split;

			cpu1_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&U74_0>;
				};

				core1 {
					cpu = <&U74_1>;
				};
			};
		};
	};

	thermal-zones {
		cpu-thermal {
			polling-delay-passive = <250>;
			polling-delay = <15000>;

			thermal-sensors = <&sfctemp>;

			trips {
				cpu_alert0 {
					/* milliCelsius */
					temperature = <75000>;
					hysteresis = <2000>;
					type = "passive";
				};

				cpu_crit {
					/* milliCelsius */
					temperature = <90000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};

	osc_sys: osc_sys {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		/* This value must be overridden by the board */
		clock-frequency = <0>;
	};

	osc_aud: osc_aud {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		/* This value must be overridden by the board */
		clock-frequency = <0>;
	};

	gmac_rmii_ref: gmac_rmii_ref {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		/* Should be overridden by the board when needed */
		clock-frequency = <0>;
	};

	gmac_gr_mii_rxclk: gmac_gr_mii_rxclk {
		compatible = "fixed-clock";
		#clock-cells = <0>;
		/* Should be overridden by the board when needed */
		clock-frequency = <0>;
	};

	soc {
		compatible = "simple-bus";
		interrupt-parent = <&plic>;
		#address-cells = <2>;
		#size-cells = <2>;
		dma-noncoherent;
		ranges;

		dtim: dtim@1000000 {
			compatible = "starfive,dtim0";
			reg = <0x0 0x1000000 0x0 0x2000>;
			reg-names = "mem";
		};

		itim0: itim@1808000 {
			compatible = "starfive,itim0";
			reg = <0x0 0x1808000 0x0 0x8000>;
			reg-names = "mem";
		};

		itim1: itim@1820000 {
			compatible = "starfive,itim0";
			reg = <0x0 0x1820000 0x0 0x8000>;
			reg-names = "mem";
		};

		clint: clint@2000000 {
			compatible = "starfive,jh7100-clint", "sifive,clint0";
			reg = <0x0 0x2000000 0x0 0x10000>;
			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
					      <&cpu1_intc 3>, <&cpu1_intc 7>;
		};

		ccache: cache-controller@2010000 {
			compatible = "starfive,jh7100-ccache", "sifive,ccache0", "cache";
			reg = <0x0 0x2010000 0x0 0x1000>;
			interrupts = <128>, <130>, <131>, <129>;
			cache-block-size = <64>;
			cache-level = <2>;
			cache-sets = <2048>;
			cache-size = <2097152>;
			cache-unified;
		};

		plic: interrupt-controller@c000000 {
			compatible = "starfive,jh7100-plic", "sifive,plic-1.0.0";
			reg = <0x0 0xc000000 0x0 0x4000000>;
			interrupts-extended = <&cpu0_intc 11>, <&cpu0_intc 9>,
					      <&cpu1_intc 11>, <&cpu1_intc 9>;
			interrupt-controller;
			#address-cells = <0>;
			#interrupt-cells = <1>;
			riscv,ndev = <133>;
		};

		sdio0: mmc@10000000 {
			compatible = "snps,dw-mshc";
			reg = <0x0 0x10000000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SDIO0_AHB>,
				 <&clkgen JH7100_CLK_SDIO0_CCLKINT_INV>;
			clock-names = "biu", "ciu";
			interrupts = <4>;
			data-addr = <0>;
			fifo-depth = <32>;
			fifo-watermark-aligned;
			status = "disabled";
		};

		sdio1: mmc@10010000 {
			compatible = "snps,dw-mshc";
			reg = <0x0 0x10010000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SDIO1_AHB>,
				 <&clkgen JH7100_CLK_SDIO1_CCLKINT_INV>;
			clock-names = "biu", "ciu";
			interrupts = <5>;
			data-addr = <0>;
			fifo-depth = <32>;
			fifo-watermark-aligned;
			status = "disabled";
		};

		gmac: ethernet@10020000 {
			compatible = "starfive,jh7100-dwmac", "snps,dwmac";
			reg = <0x0 0x10020000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_GMAC_ROOT_DIV>,
				 <&clkgen JH7100_CLK_GMAC_AHB>,
				 <&clkgen JH7100_CLK_GMAC_PTP_REF>,
				 <&clkgen JH7100_CLK_GMAC_TX_INV>,
				 <&clkgen JH7100_CLK_GMAC_GTX>;
			clock-names = "stmmaceth", "pclk", "ptp_ref", "tx", "gtx";
			resets = <&rstgen JH7100_RSTN_GMAC_AHB>;
			reset-names = "ahb";
			interrupts = <6>, <7>;
			interrupt-names = "macirq", "eth_wake_irq";
			max-frame-size = <9000>;
			snps,multicast-filter-bins = <32>;
			snps,perfect-filter-entries = <128>;
			starfive,syscon = <&sysmain 0x70 0>;
			rx-fifo-depth = <32768>;
			tx-fifo-depth = <16384>;
			snps,axi-config = <&stmmac_axi_setup>;
			snps,fixed-burst;
			snps,force_thresh_dma_mode;
			status = "disabled";

			stmmac_axi_setup: stmmac-axi-config {
				snps,wr_osr_lmt = <16>;
				snps,rd_osr_lmt = <16>;
				snps,blen = <256 128 64 32 0 0 0>;
			};
		};

		dma2p: dma-controller@100b0000 {
			compatible = "starfive,jh7100-axi-dma";
			reg = <0x0 0x100b0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SGDMA2P_AXI>,
				 <&clkgen JH7100_CLK_SGDMA2P_AHB>;
			clock-names = "core-clk", "cfgr-clk";
			resets = <&rstgen JH7100_RSTN_SGDMA2P_AXI>,
				 <&rstgen JH7100_RSTN_SGDMA2P_AHB>;
			reset-names = "axi", "ahb";
			interrupts = <2>;
			#dma-cells = <1>;
			dma-channels = <4>;
			snps,dma-masters = <1>;
			snps,data-width = <4>;
			snps,block-size = <4096 4096 4096 4096>;
			snps,priority = <0 1 2 3>;
			snps,axi-max-burst-len = <128>;
			dma-coherent;
		};

		crypto: crypto@100d0000 {
			compatible = "starfive,vic-sec";
			reg = <0x0 0x100d0000 0x0 0x20000>,
			      <0x0 0x11800234 0x0 0xc>;
			reg-names = "secmem", "secclk";
			clocks = <&clkgen JH7100_CLK_SEC_AHB>;
			interrupts = <31>;
		};

		i2sadc0: i2sadc0@10400000 {
			compatible = "snps,designware-i2sadc0";
			reg = <0x0 0x10400000 0x0 0x1000>;
			clocks = <&clkgen JH7100_CLK_APB1_BUS>;
			clock-names = "i2sclk";
			interrupt-parent = <&plic>;
			#sound-dai-cells = <0>;
			dmas = <&dma2p 28>;
			dma-names = "rx";
		};

		i2svad: i2svad@10420000 {
			compatible = "starfive,sf-i2svad";
			reg = <0x0 0x10420000 0x0 0x1000> ;
			clocks = <&audclk JH7100_AUDCLK_I2SVAD_APB>;
			clock-names = "i2svad_apb";
			resets = <&audrst JH7100_AUDRSTN_I2SVAD_APB>,
				 <&audrst JH7100_AUDRSTN_I2SVAD_SRST>;
			reset-names = "apb_i2svad", "i2svad_srst";
			interrupts = <60>, <61>;
			interrupt-names = "spintr", "slintr";
			#sound-dai-cells = <0>;
		};

		pwmdac: pwmdac@10440000 {
			compatible = "starfive,pwmdac";
			reg = <0x0 0x10440000 0x0 0x1000>;
			clocks = <&clkgen JH7100_CLK_AUDIO_ROOT>,
				 <&clkgen JH7100_CLK_AUDIO_SRC>,
				 <&clkgen JH7100_CLK_AUDIO_12288>,
				 <&audclk JH7100_AUDCLK_DMA1P_AHB>,
				 <&audclk JH7100_AUDCLK_PWMDAC_APB>,
				 <&audclk JH7100_AUDCLK_DAC_MCLK>;
			clock-names = "audio_root",
				      "audio_src",
				      "audio_12288",
				      "dma1p_ahb",
				      "pwmdac_apb",
				      "dac_mclk";
			resets = <&audrst JH7100_AUDRSTN_APB_BUS>,
				 <&audrst JH7100_AUDRSTN_DMA1P_AHB>,
				 <&audrst JH7100_AUDRSTN_PWMDAC_APB>;
			reset-names = "apb_bus", "dma1p_ahb", "apb_pwmdac";
			dmas = <&dma2p 23>;
			dma-names = "tx";
			#sound-dai-cells = <0>;
		};

		i2sdac0: i2sdac0@10450000 {
			compatible = "snps,designware-i2sdac0";
			reg = <0x0 0x10450000 0x0 0x1000>;
			clocks = <&audclk JH7100_AUDCLK_DAC_MCLK>,
				 <&audclk JH7100_AUDCLK_I2SDAC_BCLK>,
				 <&audclk JH7100_AUDCLK_I2SDAC_LRCLK>,
				 <&audclk JH7100_AUDCLK_I2SDAC_APB>;
			clock-names = "dac_mclk", "i2sdac0_bclk", "i2sdac0_lrclk", "i2sdac_apb";
			resets = <&audrst JH7100_AUDRSTN_I2SDAC_APB>,
				 <&audrst JH7100_AUDRSTN_I2SDAC_SRST>;
			reset-names = "apb_i2sdac", "i2sdac_srst";
			#sound-dai-cells = <0>;
			dmas = <&dma2p 30>;
			dma-names = "tx";
		};

		i2sdac1: i2sdac1@10460000 {
			compatible = "snps,designware-i2sdac1";
			reg = <0x0 0x10460000 0x0 0x1000>;
			clocks = <&audclk JH7100_AUDCLK_DAC_MCLK>,
				 <&audclk JH7100_AUDCLK_I2S1_BCLK>,
				 <&audclk JH7100_AUDCLK_I2S1_LRCLK>,
				 <&audclk JH7100_AUDCLK_I2S1_APB>;
			clock-names = "dac_mclk", "i2sdac1_bclk", "i2sdac1_lrclk", "i2s1_apb";
			resets = <&audrst JH7100_AUDRSTN_I2S1_APB>,
				 <&audrst JH7100_AUDRSTN_I2S1_SRST>;
			#sound-dai-cells = <0>;
			dmas = <&dma2p 31>;
			dma-names = "tx";
		};

		i2sdac16k: i2sdac16k@10470000 {
			compatible = "snps,designware-i2sdac16k";
			reg = <0x0 0x10470000 0x0 0x1000>;
			clocks = <&clkgen JH7100_CLK_APB1_BUS>;
			clock-names = "i2sclk";
			#sound-dai-cells = <0>;
			dmas = <&dma2p 29>;
			dma-names = "tx";
		};

		audclk: clock-controller@10480000 {
			compatible = "starfive,jh7100-audclk";
			reg = <0x0 0x10480000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_AUDIO_SRC>,
				 <&clkgen JH7100_CLK_AUDIO_12288>,
				 <&clkgen JH7100_CLK_DOM7AHB_BUS>;
			clock-names = "audio_src", "audio_12288", "dom7ahb_bus";
			#clock-cells = <1>;
		};

		audrst: reset-controller@10490000 {
			compatible = "starfive,jh7100-audrst";
			reg = <0x0 0x10490000 0x0 0x10000>;
			#reset-cells = <1>;
		};

		spdif_transmitter: spdif-transmitter {
			compatible = "linux,spdif-dit";
			#sound-dai-cells = <0>;
		};

		spdif_receiver: spdif-receiver {
			compatible = "linux,spdif-dir";
			#sound-dai-cells = <0>;
		};

		pwmdac_codec: pwmdac-transmitter {
			compatible = "linux,pwmdac-dit";
			#sound-dai-cells = <0>;
		};

		dmic_codec: dmic {
			compatible = "dmic-codec";
			#sound-dai-cells = <0>;
		};

		sound: snd-card {
			compatible = "simple-audio-card";
			simple-audio-card,name = "Starfive-Multi-Sound-Card";
			#address-cells = <1>;
			#size-cells = <0>;

			/* pwmdac */
			simple-audio-card,dai-link@0 {
				reg = <0>;
				status = "okay";
				format = "left_j";
				bitclock-master = <&sndcpu0>;
				frame-master = <&sndcpu0>;

				sndcpu0: cpu {
					sound-dai = <&pwmdac>;
				};

				codec {
					sound-dai = <&pwmdac_codec>;
				};
			};
		};

		sysaudio: syscon@104a0000 {
			compatible = "starfive,jh7100-sysaudio", "syscon";
			reg = <0x0 0x104a0000 0x0 0x10000>;
		};

		usb3: usb@104c0000 {
			compatible = "starfive,jh7100-usb";
			ranges = <0x0 0x0 0x104c0000 0x100000>;
			#address-cells = <1>;
			#size-cells = <1>;
			clocks = <&audclk JH7100_AUDCLK_USB_LPM>,
			         <&audclk JH7100_AUDCLK_USB_STB>,
			         <&clkgen JH7100_CLK_USB_AXI>,
			         <&clkgen JH7100_CLK_USBNOC_AXI>;
			clock-names = "lpm", "stb", "axi", "nocaxi";
			resets = <&rstgen JH7100_RSTN_USB_AXI>,
			         <&rstgen JH7100_RSTN_USBNOC_AXI>;
			reset-names = "axi", "nocaxi";
			starfive,syscon = <&sysaudio>;
			status = "disabled";

			usb_cdns3: usb@0 {
				compatible = "cdns,usb3";
				reg = <0x00000 0x10000>,
				      <0x10000 0x10000>,
				      <0x20000 0x10000>;
				reg-names = "otg", "xhci", "dev";
				interrupts = <44>, <52>, <43>;
				interrupt-names = "host", "peripheral", "otg";
			};
		};

		dma1p: dma-controller@10500000 {
			compatible = "starfive,jh7100-axi-dma";
			reg = <0x0 0x10500000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SGDMA1P_AXI>,
				 <&clkgen JH7100_CLK_SGDMA1P_BUS>;
			clock-names = "core-clk", "cfgr-clk";
			resets = <&rstgen JH7100_RSTN_DMA1P_AXI>,
				 <&rstgen JH7100_RSTN_SGDMA1P_AXI>;
			reset-names = "axi", "ahb";
			interrupts = <1>;
			#dma-cells = <1>;
			dma-channels = <16>;
			snps,dma-masters = <1>;
			snps,data-width = <3>;
			snps,block-size = <4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096 4096>;
			snps,priority = <0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15>;
			snps,axi-max-burst-len = <64>;
		};

		clkgen: clock-controller@11800000 {
			compatible = "starfive,jh7100-clkgen";
			reg = <0x0 0x11800000 0x0 0x10000>;
			clocks = <&osc_sys>, <&osc_aud>, <&gmac_rmii_ref>, <&gmac_gr_mii_rxclk>;
			clock-names = "osc_sys", "osc_aud", "gmac_rmii_ref", "gmac_gr_mii_rxclk";
			#clock-cells = <1>;
		};

		otp: otp@11810000 {
			compatible = "starfive,fu740-otp";
			reg = <0x0 0x11810000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_OTP_APB>;
			fuse-count = <0x200>;
		};

		rstgen: reset-controller@11840000 {
			compatible = "starfive,jh7100-reset";
			reg = <0x0 0x11840000 0x0 0x10000>;
			#reset-cells = <1>;
		};

		sysmain: syscon@11850000 {
			compatible = "starfive,jh7100-sysmain", "syscon";
			reg = <0x0 0x11850000 0x0 0x10000>;
		};

		qspi: spi@11860000 {
			compatible = "cdns,qspi-nor";
			reg = <0x0 0x11860000 0x0 0x10000>,
			      <0x0 0x20000000 0x0 0x20000000>;
			clocks = <&clkgen JH7100_CLK_QSPI_AHB>;
			interrupts = <3>;
			#address-cells = <1>;
			#size-cells = <0>;
			cdns,fifo-depth = <256>;
			cdns,fifo-width = <4>;
			cdns,trigger-address = <0x0>;
			spi-max-frequency = <250000000>;
			status = "disabled";
		};

		uart0: serial@11870000 {
			compatible = "starfive,jh7100-hsuart", "snps,dw-apb-uart";
			reg = <0x0 0x11870000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_UART0_CORE>,
				 <&clkgen JH7100_CLK_UART0_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&rstgen JH7100_RSTN_UART0_APB>;
			interrupts = <92>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart1: serial@11880000 {
			compatible = "starfive,jh7100-hsuart", "snps,dw-apb-uart";
			reg = <0x0 0x11880000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_UART1_CORE>,
				 <&clkgen JH7100_CLK_UART1_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&rstgen JH7100_RSTN_UART1_APB>;
			interrupts = <93>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		spi0: spi@11890000 {
			compatible = "snps,dw-apb-ssi";
			reg = <0x0 0x11890000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SPI0_CORE>,
				 <&clkgen JH7100_CLK_SPI0_APB>;
			clock-names = "ssi_clk", "pclk";
			resets = <&rstgen JH7100_RSTN_SPI0_APB>;
			reset-names = "spi";
			interrupts = <94>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi1: spi@118a0000 {
			compatible = "snps,dw-apb-ssi";
			reg = <0x0 0x118a0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SPI1_CORE>,
				 <&clkgen JH7100_CLK_SPI1_APB>;
			clock-names = "ssi_clk", "pclk";
			resets = <&rstgen JH7100_RSTN_SPI1_APB>;
			reset-names = "spi";
			interrupts = <95>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c0: i2c@118b0000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x118b0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_I2C0_CORE>,
				 <&clkgen JH7100_CLK_I2C0_APB>;
			clock-names = "ref", "pclk";
			resets = <&rstgen JH7100_RSTN_I2C0_APB>;
			interrupts = <96>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c1: i2c@118c0000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x118c0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_I2C1_CORE>,
				 <&clkgen JH7100_CLK_I2C1_APB>;
			clock-names = "ref", "pclk";
			resets = <&rstgen JH7100_RSTN_I2C1_APB>;
			interrupts = <97>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		trng: trng@118d0000 {
			compatible = "starfive,vic-rng";
			reg = <0x0 0x118d0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_TRNG_APB>;
			interrupts = <98>;
		};

		vpu_enc: vpu_enc@118e0000 {
			compatible = "cm,cm521-vpu";
			reg = <0x0 0x118e0000 0x0 0x4000>;
			reg-names = "control";
			clocks = <&clkgen JH7100_CLK_VP6_CORE>;
			clock-names = "vcodec";
			interrupts = <26>;
		};

		vpu_dec: vpu_dec@118f0000 {
			compatible = "c&m,cm511-vpu";
			reg = <0 0x118f0000 0 0x10000>;
			clocks = <&clkgen JH7100_CLK_VP6_CORE>;
			clock-names = "vcodec";
			interrupts = <23>;
			//memory-region = <&vpu_reserved>;
		};

		jpu: coadj12@11900000 {
			compatible = "cm,codaj12-jpu-1";
			reg = <0x0 0x11900000 0x0 0x300>;
			reg-names = "control";
			clocks = <&clkgen JH7100_CLK_JPEG_APB>;
			clock-names = "jpege";
			interrupts = <24>;
			memory-region = <&jpu_reserved>;
		};

		gpio: pinctrl@11910000 {
			compatible = "starfive,jh7100-pinctrl";
			reg = <0x0 0x11910000 0x0 0x10000>,
			      <0x0 0x11858000 0x0 0x1000>;
			reg-names = "gpio", "padctl";
			clocks = <&clkgen JH7100_CLK_GPIO_APB>;
			resets = <&rstgen JH7100_RSTN_GPIO_APB>;
			interrupts = <32>;
			gpio-controller;
			#gpio-cells = <2>;
			interrupt-controller;
			#interrupt-cells = <2>;
		};

		nvdla@11940000 {
			compatible = "nvidia,nvdla_os_initial";
			interrupts = <22>;
			memory-region = <&nvdla_reserved>;
			reg = <0x0 0x11940000 0x0 0x40000>;
			status = "okay";
		};

		display: display-subsystem {
			compatible = "starfive,display-subsystem";
			dma-coherent;
			status = "disabled";
		};

		encoder: display-encoder {
			compatible = "starfive,display-encoder";
			status = "disabled";
		};

		crtc: crtc@12000000 {
			compatible = "starfive,jh7100-crtc";
			reg = <0x0 0x12000000 0x0 0x10000>,
			      <0x0 0x12040000 0x0 0x10000>,
			      <0x0 0x12080000 0x0 0x10000>,
			      <0x0 0x120c0000 0x0 0x10000>,
			      <0x0 0x12240000 0x0 0x10000>,
			      <0x0 0x12250000 0x0 0x10000>,
			      <0x0 0x12260000 0x0 0x10000>;
			reg-names = "lcdc", "vpp0", "vpp1", "vpp2", "clk", "rst", "sys";
			clocks = <&clkgen JH7100_CLK_DISP_AXI>, <&clkgen JH7100_CLK_VOUT_SRC>;
			clock-names = "disp_axi", "vout_src";
			resets = <&rstgen JH7100_RSTN_DISP_AXI>, <&rstgen JH7100_RSTN_VOUT_SRC>;
			reset-names = "disp_axi", "vout_src";
			interrupts = <101>, <103>;
			interrupt-names = "lcdc_irq", "vpp1_irq";
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";

			pp1 {
				pp-id = <1>;
				fifo-out;
				//sys-bus-out;
				src-format = <11>; //<COLOR_RGB565>;
				src-width = <1920>;
				src-height = <1080>;
				dst-format = <7>; //<COLOR_RGB888_ARGB>;
				dst-width = <1920>;
				dst-height = <1080>;
			};
		};

		spi2: spi@12410000 {
			compatible = "snps,dw-apb-ssi";
			reg = <0x0 0x12410000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SPI2_CORE>,
				 <&clkgen JH7100_CLK_SPI2_APB>;
			clock-names = "ssi_clk", "pclk";
			resets = <&rstgen JH7100_RSTN_SPI2_APB>;
			reset-names = "spi";
			interrupts = <70>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi3: spi@12420000 {
			compatible = "snps,dw-apb-ssi";
			reg = <0x0 0x12420000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_SPI3_CORE>,
				 <&clkgen JH7100_CLK_SPI3_APB>;
			clock-names = "ssi_clk", "pclk";
			resets = <&rstgen JH7100_RSTN_SPI3_APB>;
			reset-names = "spi";
			interrupts = <71>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		uart2: serial@12430000 {
			compatible = "starfive,jh7100-uart", "snps,dw-apb-uart";
			reg = <0x0 0x12430000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_UART2_CORE>,
				 <&clkgen JH7100_CLK_UART2_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&rstgen JH7100_RSTN_UART2_APB>;
			interrupts = <72>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart3: serial@12440000 {
			compatible = "starfive,jh7100-uart", "snps,dw-apb-uart";
			reg = <0x0 0x12440000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_UART3_CORE>,
				 <&clkgen JH7100_CLK_UART3_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&rstgen JH7100_RSTN_UART3_APB>;
			interrupts = <73>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		i2c2: i2c@12450000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12450000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_I2C2_CORE>,
				 <&clkgen JH7100_CLK_I2C2_APB>;
			clock-names = "ref", "pclk";
			resets = <&rstgen JH7100_RSTN_I2C2_APB>;
			interrupts = <74>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c3: i2c@12460000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12460000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_I2C3_CORE>,
				 <&clkgen JH7100_CLK_I2C3_APB>;
			clock-names = "ref", "pclk";
			resets = <&rstgen JH7100_RSTN_I2C3_APB>;
			interrupts = <75>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		watchdog@12480000 {
			compatible = "starfive,jh7100-wdt";
			reg = <0x0 0x12480000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_WDTIMER_APB>,
				 <&clkgen JH7100_CLK_WDT_CORE>;
			clock-names = "apb", "core";
			resets = <&rstgen JH7100_RSTN_WDTIMER_APB>,
				 <&rstgen JH7100_RSTN_WDT>;
		};

		pwm: pwm@12490000 {
			compatible = "starfive,jh7100-pwm", "opencores,pwm-v1";
			reg = <0x0 0x12490000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_PWM_APB>;
			resets = <&rstgen JH7100_RSTN_PWM_APB>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		sfctemp: temperature-sensor@124a0000 {
			compatible = "starfive,jh7100-temp";
			reg = <0x0 0x124a0000 0x0 0x10000>;
			clocks = <&clkgen JH7100_CLK_TEMP_SENSE>,
				 <&clkgen JH7100_CLK_TEMP_APB>;
			clock-names = "sense", "bus";
			resets = <&rstgen JH7100_RSTN_TEMP_SENSE>,
				 <&rstgen JH7100_RSTN_TEMP_APB>;
			reset-names = "sense", "bus";
			#thermal-sensor-cells = <0>;
		};

		xrp@f0000000 {
			compatible = "cdns,xrp";
			reg = <0x0  0xf0000000 0x0 0x01ffffff>,
			      <0x10 0x72000000 0x0 0x00001000>,
			      <0x10 0x72001000 0x0 0x00fff000>,
			      <0x0  0x124b0000 0x0 0x00010000>;
			clocks = <&clkgen JH7100_CLK_VP6_CORE>;
			interrupts = <27>, <28>;
			firmware-name = "vp6_elf";
			dsp-irq = <19 20>;
			dsp-irq-src = <0x20 0x21>;
			intc-irq-mode = <1>;
			intc-irq = <0 1>;
			#address-cells = <1>;
			#size-cells = <1>;
			ranges = <0x40000000 0x0  0x40000000 0x01000000>,
				 <0xb0000000 0x10 0x70000000 0x3000000>;
			dsp@0 {
			};
		};
	};
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-pinfunc.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 */

#ifndef __JH7110_PINFUNC_H__
#define __JH7110_PINFUNC_H__

/*
 * mux bits:
 *  | 31 - 24 | 23 - 16 | 15 - 10 |  9 - 8   |  7 - 0  |
 *  |  din    |  dout   |  doen   | function | gpio nr |
 *
 * dout:     output signal
 * doen:     output enable signal
 * din:      optional input signal, 0xff = none
 * function: function selector
 * gpio nr:  gpio number, 0 - 63
 */
#define GPIOMUX(n, dout, doen, din) ( \
		(((din)  & 0xff) << 24) | \
		(((dout) & 0xff) << 16) | \
		(((doen) & 0x3f) << 10) | \
		((n) & 0x3f))

#define PINMUX(n, func) ((1 << 10) | (((func) & 0x3) << 8) | ((n) & 0xff))

/* sys_iomux dout */
#define GPOUT_LOW				0
#define GPOUT_HIGH				1
#define GPOUT_SYS_WAVE511_UART_TX		2
#define GPOUT_SYS_CAN0_STBY			3
#define GPOUT_SYS_CAN0_TST_NEXT_BIT		4
#define GPOUT_SYS_CAN0_TST_SAMPLE_POINT		5
#define GPOUT_SYS_CAN0_TXD			6
#define GPOUT_SYS_USB_DRIVE_VBUS		7
#define GPOUT_SYS_QSPI_CS1			8
#define GPOUT_SYS_SPDIF				9
#define GPOUT_SYS_HDMI_CEC_SDA			10
#define GPOUT_SYS_HDMI_DDC_SCL			11
#define GPOUT_SYS_HDMI_DDC_SDA			12
#define GPOUT_SYS_WATCHDOG			13
#define GPOUT_SYS_I2C0_CLK			14
#define GPOUT_SYS_I2C0_DATA			15
#define GPOUT_SYS_SDIO0_BACK_END_POWER		16
#define GPOUT_SYS_SDIO0_CARD_POWER_EN		17
#define GPOUT_SYS_SDIO0_CCMD_OD_PULLUP_EN	18
#define GPOUT_SYS_SDIO0_RST			19
#define GPOUT_SYS_UART0_TX			20
#define GPOUT_SYS_HIFI4_JTAG_TDO		21
#define GPOUT_SYS_JTAG_TDO			22
#define GPOUT_SYS_PDM_MCLK			23
#define GPOUT_SYS_PWM_CHANNEL0			24
#define GPOUT_SYS_PWM_CHANNEL1			25
#define GPOUT_SYS_PWM_CHANNEL2			26
#define GPOUT_SYS_PWM_CHANNEL3			27
#define GPOUT_SYS_PWMDAC_LEFT			28
#define GPOUT_SYS_PWMDAC_RIGHT			29
#define GPOUT_SYS_SPI0_CLK			30
#define GPOUT_SYS_SPI0_FSS			31
#define GPOUT_SYS_SPI0_TXD			32
#define GPOUT_SYS_GMAC_PHYCLK			33
#define GPOUT_SYS_I2SRX_BCLK			34
#define GPOUT_SYS_I2SRX_LRCK			35
#define GPOUT_SYS_I2STX0_BCLK			36
#define GPOUT_SYS_I2STX0_LRCK			37
#define GPOUT_SYS_MCLK				38
#define GPOUT_SYS_TDM_CLK			39
#define GPOUT_SYS_TDM_SYNC			40
#define GPOUT_SYS_TDM_TXD			41
#define GPOUT_SYS_TRACE_DATA0			42
#define GPOUT_SYS_TRACE_DATA1			43
#define GPOUT_SYS_TRACE_DATA2			44
#define GPOUT_SYS_TRACE_DATA3			45
#define GPOUT_SYS_TRACE_REF			46
#define GPOUT_SYS_CAN1_STBY			47
#define GPOUT_SYS_CAN1_TST_NEXT_BIT		48
#define GPOUT_SYS_CAN1_TST_SAMPLE_POINT		49
#define GPOUT_SYS_CAN1_TXD			50
#define GPOUT_SYS_I2C1_CLK			51
#define GPOUT_SYS_I2C1_DATA			52
#define GPOUT_SYS_SDIO1_BACK_END_POWER		53
#define GPOUT_SYS_SDIO1_CARD_POWER_EN		54
#define GPOUT_SYS_SDIO1_CLK			55
#define GPOUT_SYS_SDIO1_CMD_OD_PULLUP_EN	56
#define GPOUT_SYS_SDIO1_CMD			57
#define GPOUT_SYS_SDIO1_DATA0			58
#define GPOUT_SYS_SDIO1_DATA1			59
#define GPOUT_SYS_SDIO1_DATA2			60
#define GPOUT_SYS_SDIO1_DATA3			61
#define GPOUT_SYS_SDIO1_DATA4			63
#define GPOUT_SYS_SDIO1_DATA5			63
#define GPOUT_SYS_SDIO1_DATA6			64
#define GPOUT_SYS_SDIO1_DATA7			65
#define GPOUT_SYS_SDIO1_RST			66
#define GPOUT_SYS_UART1_RTS			67
#define GPOUT_SYS_UART1_TX			68
#define GPOUT_SYS_I2STX1_SDO0			69
#define GPOUT_SYS_I2STX1_SDO1			70
#define GPOUT_SYS_I2STX1_SDO2			71
#define GPOUT_SYS_I2STX1_SDO3			72
#define GPOUT_SYS_SPI1_CLK			73
#define GPOUT_SYS_SPI1_FSS			74
#define GPOUT_SYS_SPI1_TXD			75
#define GPOUT_SYS_I2C2_CLK			76
#define GPOUT_SYS_I2C2_DATA			77
#define GPOUT_SYS_UART2_RTS			78
#define GPOUT_SYS_UART2_TX			79
#define GPOUT_SYS_SPI2_CLK			80
#define GPOUT_SYS_SPI2_FSS			81
#define GPOUT_SYS_SPI2_TXD			82
#define GPOUT_SYS_I2C3_CLK			83
#define GPOUT_SYS_I2C3_DATA			84
#define GPOUT_SYS_UART3_TX			85
#define GPOUT_SYS_SPI3_CLK			86
#define GPOUT_SYS_SPI3_FSS			87
#define GPOUT_SYS_SPI3_TXD			88
#define GPOUT_SYS_I2C4_CLK			89
#define GPOUT_SYS_I2C4_DATA			90
#define GPOUT_SYS_UART4_RTS			91
#define GPOUT_SYS_UART4_TX			92
#define GPOUT_SYS_SPI4_CLK			93
#define GPOUT_SYS_SPI4_FSS			94
#define GPOUT_SYS_SPI4_TXD			95
#define GPOUT_SYS_I2C5_CLK			96
#define GPOUT_SYS_I2C5_DATA			97
#define GPOUT_SYS_UART5_RTS			98
#define GPOUT_SYS_UART5_TX			99
#define GPOUT_SYS_SPI5_CLK			100
#define GPOUT_SYS_SPI5_FSS			101
#define GPOUT_SYS_SPI5_TXD			102
#define GPOUT_SYS_I2C6_CLK			103
#define GPOUT_SYS_I2C6_DATA			104
#define GPOUT_SYS_SPI6_CLK			105
#define GPOUT_SYS_SPI6_FSS			106
#define GPOUT_SYS_SPI6_TXD			107

/* aon_iomux dout */
#define GPOUT_AON_CLK_32K_OUT			2
#define GPOUT_AON_PTC0_PWM4			3
#define GPOUT_AON_PTC0_PWM5			4
#define GPOUT_AON_PTC0_PWM6			5
#define GPOUT_AON_PTC0_PWM7			6
#define GPOUT_AON_CLK_GCLK0			7
#define GPOUT_AON_CLK_GCLK1			8
#define GPOUT_AON_CLK_GCLK2			9

/* sys_iomux doen */
#define GPOEN_ENABLE				0
#define GPOEN_DISABLE				1
#define GPOEN_SYS_HDMI_CEC_SDA			2
#define GPOEN_SYS_HDMI_DDC_SCL			3
#define GPOEN_SYS_HDMI_DDC_SDA			4
#define GPOEN_SYS_I2C0_CLK			5
#define GPOEN_SYS_I2C0_DATA			6
#define GPOEN_SYS_HIFI4_JTAG_TDO		7
#define GPOEN_SYS_JTAG_TDO			8
#define GPOEN_SYS_PWM0_CHANNEL0			9
#define GPOEN_SYS_PWM0_CHANNEL1			10
#define GPOEN_SYS_PWM0_CHANNEL2			11
#define GPOEN_SYS_PWM0_CHANNEL3			12
#define GPOEN_SYS_SPI0_NSSPCTL			13
#define GPOEN_SYS_SPI0_NSSP			14
#define GPOEN_SYS_TDM_SYNC			15
#define GPOEN_SYS_TDM_TXD			16
#define GPOEN_SYS_I2C1_CLK			17
#define GPOEN_SYS_I2C1_DATA			18
#define GPOEN_SYS_SDIO1_CMD			19
#define GPOEN_SYS_SDIO1_DATA0			20
#define GPOEN_SYS_SDIO1_DATA1			21
#define GPOEN_SYS_SDIO1_DATA2			22
#define GPOEN_SYS_SDIO1_DATA3			23
#define GPOEN_SYS_SDIO1_DATA4			24
#define GPOEN_SYS_SDIO1_DATA5			25
#define GPOEN_SYS_SDIO1_DATA6			26
#define GPOEN_SYS_SDIO1_DATA7			27
#define GPOEN_SYS_SPI1_NSSPCTL			28
#define GPOEN_SYS_SPI1_NSSP			29
#define GPOEN_SYS_I2C2_CLK			30
#define GPOEN_SYS_I2C2_DATA			31
#define GPOEN_SYS_SPI2_NSSPCTL			32
#define GPOEN_SYS_SPI2_NSSP			33
#define GPOEN_SYS_I2C3_CLK			34
#define GPOEN_SYS_I2C3_DATA			35
#define GPOEN_SYS_SPI3_NSSPCTL			36
#define GPOEN_SYS_SPI3_NSSP			37
#define GPOEN_SYS_I2C4_CLK			38
#define GPOEN_SYS_I2C4_DATA			39
#define GPOEN_SYS_SPI4_NSSPCTL			40
#define GPOEN_SYS_SPI4_NSSP			41
#define GPOEN_SYS_I2C5_CLK			42
#define GPOEN_SYS_I2C5_DATA			43
#define GPOEN_SYS_SPI5_NSSPCTL			44
#define GPOEN_SYS_SPI5_NSSP			45
#define GPOEN_SYS_I2C6_CLK			46
#define GPOEN_SYS_I2C6_DATA			47
#define GPOEN_SYS_SPI6_NSSPCTL			48
#define GPOEN_SYS_SPI6_NSSP			49

/* aon_iomux doen */
#define GPOEN_AON_PTC0_OE_N_4			2
#define GPOEN_AON_PTC0_OE_N_5			3
#define GPOEN_AON_PTC0_OE_N_6			4
#define GPOEN_AON_PTC0_OE_N_7			5

/* sys_iomux gin */
#define GPI_NONE				255

#define GPI_SYS_WAVE511_UART_RX			0
#define GPI_SYS_CAN0_RXD			1
#define GPI_SYS_USB_OVERCURRENT			2
#define GPI_SYS_SPDIF				3
#define GPI_SYS_JTAG_RST			4
#define GPI_SYS_HDMI_CEC_SDA			5
#define GPI_SYS_HDMI_DDC_SCL			6
#define GPI_SYS_HDMI_DDC_SDA			7
#define GPI_SYS_HDMI_HPD			8
#define GPI_SYS_I2C0_CLK			9
#define GPI_SYS_I2C0_DATA			10
#define GPI_SYS_SDIO0_CD			11
#define GPI_SYS_SDIO0_INT			12
#define GPI_SYS_SDIO0_WP			13
#define GPI_SYS_UART0_RX			14
#define GPI_SYS_HIFI4_JTAG_TCK			15
#define GPI_SYS_HIFI4_JTAG_TDI			16
#define GPI_SYS_HIFI4_JTAG_TMS			17
#define GPI_SYS_HIFI4_JTAG_RST			18
#define GPI_SYS_JTAG_TDI			19
#define GPI_SYS_JTAG_TMS			20
#define GPI_SYS_PDM_DMIC0			21
#define GPI_SYS_PDM_DMIC1			22
#define GPI_SYS_I2SRX_SDIN0			23
#define GPI_SYS_I2SRX_SDIN1			24
#define GPI_SYS_I2SRX_SDIN2			25
#define GPI_SYS_SPI0_CLK			26
#define GPI_SYS_SPI0_FSS			27
#define GPI_SYS_SPI0_RXD			28
#define GPI_SYS_JTAG_TCK			29
#define GPI_SYS_MCLK_EXT			30
#define GPI_SYS_I2SRX_BCLK			31
#define GPI_SYS_I2SRX_LRCK			32
#define GPI_SYS_I2STX1_BCLK			33
#define GPI_SYS_I2STX1_LRCK			34
#define GPI_SYS_TDM_CLK				35
#define GPI_SYS_TDM_RXD				36
#define GPI_SYS_TDM_SYNC			37
#define GPI_SYS_CAN1_RXD			38
#define GPI_SYS_I2C1_CLK			39
#define GPI_SYS_I2C1_DATA			40
#define GPI_SYS_SDIO1_CD			41
#define GPI_SYS_SDIO1_INT			42
#define GPI_SYS_SDIO1_WP			43
#define GPI_SYS_SDIO1_CMD			44
#define GPI_SYS_SDIO1_DATA0			45
#define GPI_SYS_SDIO1_DATA1			46
#define GPI_SYS_SDIO1_DATA2			47
#define GPI_SYS_SDIO1_DATA3			48
#define GPI_SYS_SDIO1_DATA4			49
#define GPI_SYS_SDIO1_DATA5			50
#define GPI_SYS_SDIO1_DATA6			51
#define GPI_SYS_SDIO1_DATA7			52
#define GPI_SYS_SDIO1_STRB			53
#define GPI_SYS_UART1_CTS			54
#define GPI_SYS_UART1_RX			55
#define GPI_SYS_SPI1_CLK			56
#define GPI_SYS_SPI1_FSS			57
#define GPI_SYS_SPI1_RXD			58
#define GPI_SYS_I2C2_CLK			59
#define GPI_SYS_I2C2_DATA			60
#define GPI_SYS_UART2_CTS			61
#define GPI_SYS_UART2_RX			62
#define GPI_SYS_SPI2_CLK			63
#define GPI_SYS_SPI2_FSS			64
#define GPI_SYS_SPI2_RXD			65
#define GPI_SYS_I2C3_CLK			66
#define GPI_SYS_I2C3_DATA			67
#define GPI_SYS_UART3_RX			68
#define GPI_SYS_SPI3_CLK			69
#define GPI_SYS_SPI3_FSS			70
#define GPI_SYS_SPI3_RXD			71
#define GPI_SYS_I2C4_CLK			72
#define GPI_SYS_I2C4_DATA			73
#define GPI_SYS_UART4_CTS			74
#define GPI_SYS_UART4_RX			75
#define GPI_SYS_SPI4_CLK			76
#define GPI_SYS_SPI4_FSS			77
#define GPI_SYS_SPI4_RXD			78
#define GPI_SYS_I2C5_CLK			79
#define GPI_SYS_I2C5_DATA			80
#define GPI_SYS_UART5_CTS			81
#define GPI_SYS_UART5_RX			82
#define GPI_SYS_SPI5_CLK			83
#define GPI_SYS_SPI5_FSS			84
#define GPI_SYS_SPI5_RXD			85
#define GPI_SYS_I2C6_CLK			86
#define GPI_SYS_I2C6_DATA			87
#define GPI_SYS_SPI6_CLK			88
#define GPI_SYS_SPI6_FSS			89
#define GPI_SYS_SPI6_RXD			90

/* aon_iomux gin */
#define GPI_AON_PMU_GPIO_WAKEUP_0		0
#define GPI_AON_PMU_GPIO_WAKEUP_1		1
#define GPI_AON_PMU_GPIO_WAKEUP_2		2
#define GPI_AON_PMU_GPIO_WAKEUP_3		3

#endif

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.2a.dts
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7110-starfive-visionfive-2.dtsi"

/ {
	model = "StarFive VisionFive 2 v1.2A";
	compatible = "starfive,visionfive-2-v1.2a", "starfive,jh7110";
};

&gmac1 {
	phy-mode = "rmii";
	assigned-clocks = <&syscrg JH7110_SYSCLK_GMAC1_TX>,
			  <&syscrg JH7110_SYSCLK_GMAC1_RX>;
	assigned-clock-parents = <&syscrg JH7110_SYSCLK_GMAC1_RMII_RTX>,
				 <&syscrg JH7110_SYSCLK_GMAC1_RMII_RTX>;
};

&phy0 {
	rx-internal-delay-ps = <1900>;
	tx-internal-delay-ps = <1350>;
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2-v1.3b.dts
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7110-starfive-visionfive-2.dtsi"

/ {
	model = "StarFive VisionFive 2 v1.3B";
	compatible = "starfive,visionfive-2-v1.3b", "starfive,jh7110";
};

&gmac0 {
	starfive,tx-use-rgmii-clk;
	assigned-clocks = <&aoncrg JH7110_AONCLK_GMAC0_TX>;
	assigned-clock-parents = <&aoncrg JH7110_AONCLK_GMAC0_RMII_RTX>;
};

&gmac1 {
	starfive,tx-use-rgmii-clk;
	assigned-clocks = <&syscrg JH7110_SYSCLK_GMAC1_TX>;
	assigned-clock-parents = <&syscrg JH7110_SYSCLK_GMAC1_RMII_RTX>;
};

&phy0 {
	motorcomm,tx-clk-adj-enabled;
	motorcomm,tx-clk-100-inverted;
	motorcomm,tx-clk-1000-inverted;
	motorcomm,rx-clk-drv-microamp = <3970>;
	motorcomm,rx-data-drv-microamp = <2910>;
	rx-internal-delay-ps = <1500>;
	tx-internal-delay-ps = <1500>;
};

&phy1 {
	motorcomm,tx-clk-adj-enabled;
	motorcomm,tx-clk-100-inverted;
	motorcomm,rx-clk-drv-microamp = <3970>;
	motorcomm,rx-data-drv-microamp = <2910>;
	rx-internal-delay-ps = <300>;
	tx-internal-delay-ps = <0>;
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110-starfive-visionfive-2.dtsi
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include "jh7110.dtsi"
#include "jh7110-pinfunc.h"
#include <dt-bindings/gpio/gpio.h>

/ {
	aliases {
		ethernet0 = &gmac0;
		ethernet1 = &gmac1;
		i2c0 = &i2c0;
		i2c2 = &i2c2;
		i2c5 = &i2c5;
		i2c6 = &i2c6;
		mmc0 = &mmc0;
		mmc1 = &mmc1;
		serial0 = &uart0;
	};

	chosen {
		stdout-path = "serial0:115200n8";
	};

	cpus {
		timebase-frequency = <4000000>;
	};

	memory@40000000 {
		device_type = "memory";
		reg = <0x0 0x40000000 0x1 0x0>;
	};

	gpio-restart {
		compatible = "gpio-restart";
		gpios = <&sysgpio 35 GPIO_ACTIVE_HIGH>;
		priority = <224>;
	};

	pwmdac_codec: pwmdac-codec {
		compatible = "linux,spdif-dit";
		#sound-dai-cells = <0>;
	};

	sound-pwmdac {
		compatible = "simple-audio-card";
		simple-audio-card,name = "StarFive-PWMDAC-Sound-Card";
		#address-cells = <1>;
		#size-cells = <0>;

		simple-audio-card,dai-link@0 {
			reg = <0>;
			format = "left_j";
			bitclock-master = <&sndcpu0>;
			frame-master = <&sndcpu0>;

			sndcpu0: cpu {
				sound-dai = <&pwmdac>;
			};

			codec {
				sound-dai = <&pwmdac_codec>;
			};
		};
	};
};

&dvp_clk {
	clock-frequency = <74250000>;
};

&gmac0_rgmii_rxin {
	clock-frequency = <125000000>;
};

&gmac0_rmii_refin {
	clock-frequency = <50000000>;
};

&gmac1_rgmii_rxin {
	clock-frequency = <125000000>;
};

&gmac1_rmii_refin {
	clock-frequency = <50000000>;
};

&hdmitx0_pixelclk {
	clock-frequency = <297000000>;
};

&i2srx_bclk_ext {
	clock-frequency = <12288000>;
};

&i2srx_lrck_ext {
	clock-frequency = <192000>;
};

&i2stx_bclk_ext {
	clock-frequency = <12288000>;
};

&i2stx_lrck_ext {
	clock-frequency = <192000>;
};

&mclk_ext {
	clock-frequency = <12288000>;
};

&osc {
	clock-frequency = <24000000>;
};

&rtc_osc {
	clock-frequency = <32768>;
};

&tdm_ext {
	clock-frequency = <49152000>;
};

&gmac0 {
	phy-handle = <&phy0>;
	phy-mode = "rgmii-id";
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwmac-mdio";

		phy0: ethernet-phy@0 {
			reg = <0>;
		};
	};
};

&gmac1 {
	phy-handle = <&phy1>;
	phy-mode = "rgmii-id";
	status = "okay";

	mdio {
		#address-cells = <1>;
		#size-cells = <0>;
		compatible = "snps,dwmac-mdio";

		phy1: ethernet-phy@1 {
			reg = <0>;
		};
	};
};

&i2c0 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <510>;
	i2c-scl-falling-time-ns = <510>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c0_pins>;
	status = "okay";
};

&i2c2 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <510>;
	i2c-scl-falling-time-ns = <510>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c2_pins>;
	status = "okay";
};

&i2c5 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <510>;
	i2c-scl-falling-time-ns = <510>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c5_pins>;
	status = "okay";

	axp15060: pmic@36 {
		compatible = "x-powers,axp15060";
		reg = <0x36>;
		interrupts = <0>;
		interrupt-controller;
		#interrupt-cells = <1>;

		regulators {
			vcc_3v3: dcdc1 {
				regulator-boot-on;
				regulator-always-on;
				regulator-min-microvolt = <3300000>;
				regulator-max-microvolt = <3300000>;
				regulator-name = "vcc_3v3";
			};

			vdd_cpu: dcdc2 {
				regulator-always-on;
				regulator-min-microvolt = <500000>;
				regulator-max-microvolt = <1540000>;
				regulator-name = "vdd-cpu";
			};

			emmc_vdd: aldo4 {
				regulator-boot-on;
				regulator-always-on;
				regulator-min-microvolt = <1800000>;
				regulator-max-microvolt = <1800000>;
				regulator-name = "emmc_vdd";
			};
		};
	};
};

&i2c6 {
	clock-frequency = <100000>;
	i2c-sda-hold-time-ns = <300>;
	i2c-sda-falling-time-ns = <510>;
	i2c-scl-falling-time-ns = <510>;
	pinctrl-names = "default";
	pinctrl-0 = <&i2c6_pins>;
	status = "okay";
};

&i2srx {
	pinctrl-names = "default";
	pinctrl-0 = <&i2srx_pins>;
	status = "okay";
};

&i2stx0 {
	pinctrl-names = "default";
	pinctrl-0 = <&mclk_ext_pins>;
	status = "okay";
};

&i2stx1 {
	pinctrl-names = "default";
	pinctrl-0 = <&i2stx1_pins>;
	status = "okay";
};

&mmc0 {
	max-frequency = <100000000>;
	assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
	assigned-clock-rates = <50000000>;
	bus-width = <8>;
	cap-mmc-highspeed;
	mmc-ddr-1_8v;
	mmc-hs200-1_8v;
	non-removable;
	cap-mmc-hw-reset;
	post-power-on-delay-ms = <200>;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc0_pins>;
	vmmc-supply = <&vcc_3v3>;
	vqmmc-supply = <&emmc_vdd>;
	status = "okay";
};

&mmc1 {
	max-frequency = <100000000>;
	assigned-clocks = <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
	assigned-clock-rates = <50000000>;
	bus-width = <4>;
	no-sdio;
	no-mmc;
	broken-cd;
	cap-sd-highspeed;
	post-power-on-delay-ms = <200>;
	pinctrl-names = "default";
	pinctrl-0 = <&mmc1_pins>;
	status = "okay";
};

&pwmdac {
	pinctrl-names = "default";
	pinctrl-0 = <&pwmdac_pins>;
	status = "okay";
};

&qspi {
	#address-cells = <1>;
	#size-cells = <0>;
	status = "okay";

	nor_flash: flash@0 {
		compatible = "jedec,spi-nor";
		reg = <0>;
		cdns,read-delay = <5>;
		spi-max-frequency = <12000000>;
		cdns,tshsl-ns = <1>;
		cdns,tsd2d-ns = <1>;
		cdns,tchsh-ns = <1>;
		cdns,tslch-ns = <1>;

		partitions {
			compatible = "fixed-partitions";
			#address-cells = <1>;
			#size-cells = <1>;

			spl@0 {
				reg = <0x0 0x80000>;
			};
			uboot-env@f0000 {
				reg = <0xf0000 0x10000>;
			};
			uboot@100000 {
				reg = <0x100000 0x400000>;
			};
			reserved-data@600000 {
				reg = <0x600000 0xa00000>;
			};
		};
	};
};

&pwm {
	pinctrl-names = "default";
	pinctrl-0 = <&pwm_pins>;
	status = "okay";
};

&spi0 {
	pinctrl-names = "default";
	pinctrl-0 = <&spi0_pins>;
	status = "okay";

	spi_dev0: spi@0 {
		compatible = "rohm,dh2228fv";
		reg = <0>;
		spi-max-frequency = <10000000>;
	};
};

&sysgpio {
	i2c0_pins: i2c0-0 {
		i2c-pins {
			pinmux = <GPIOMUX(57, GPOUT_LOW,
					      GPOEN_SYS_I2C0_CLK,
					      GPI_SYS_I2C0_CLK)>,
				 <GPIOMUX(58, GPOUT_LOW,
					      GPOEN_SYS_I2C0_DATA,
					      GPI_SYS_I2C0_DATA)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c2_pins: i2c2-0 {
		i2c-pins {
			pinmux = <GPIOMUX(3, GPOUT_LOW,
					     GPOEN_SYS_I2C2_CLK,
					     GPI_SYS_I2C2_CLK)>,
				 <GPIOMUX(2, GPOUT_LOW,
					     GPOEN_SYS_I2C2_DATA,
					     GPI_SYS_I2C2_DATA)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c5_pins: i2c5-0 {
		i2c-pins {
			pinmux = <GPIOMUX(19, GPOUT_LOW,
					      GPOEN_SYS_I2C5_CLK,
					      GPI_SYS_I2C5_CLK)>,
				 <GPIOMUX(20, GPOUT_LOW,
					      GPOEN_SYS_I2C5_DATA,
					      GPI_SYS_I2C5_DATA)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2c6_pins: i2c6-0 {
		i2c-pins {
			pinmux = <GPIOMUX(16, GPOUT_LOW,
					      GPOEN_SYS_I2C6_CLK,
					      GPI_SYS_I2C6_CLK)>,
				 <GPIOMUX(17, GPOUT_LOW,
					      GPOEN_SYS_I2C6_DATA,
					      GPI_SYS_I2C6_DATA)>;
			bias-disable; /* external pull-up */
			input-enable;
			input-schmitt-enable;
		};
	};

	i2srx_pins: i2srx-0 {
		clk-sd-pins {
			pinmux = <GPIOMUX(38, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_I2SRX_BCLK)>,
				 <GPIOMUX(63, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_I2SRX_LRCK)>,
				 <GPIOMUX(38, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_I2STX1_BCLK)>,
				 <GPIOMUX(63, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_I2STX1_LRCK)>,
				 <GPIOMUX(61, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_I2SRX_SDIN0)>;
			input-enable;
		};
	};

	i2stx1_pins: i2stx1-0 {
		sd-pins {
			pinmux = <GPIOMUX(44, GPOUT_SYS_I2STX1_SDO0,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-disable;
			input-disable;
		};
	};

	mclk_ext_pins: mclk-ext-0 {
		mclk-ext-pins {
			pinmux = <GPIOMUX(4, GPOUT_LOW,
					     GPOEN_DISABLE,
					     GPI_SYS_MCLK_EXT)>;
			input-enable;
		};
	};

	mmc0_pins: mmc0-0 {
		 rst-pins {
			pinmux = <GPIOMUX(62, GPOUT_SYS_SDIO0_RST,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-pull-up;
			drive-strength = <12>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};

		mmc-pins {
			pinmux = <PINMUX(64, 0)>,
				 <PINMUX(65, 0)>,
				 <PINMUX(66, 0)>,
				 <PINMUX(67, 0)>,
				 <PINMUX(68, 0)>,
				 <PINMUX(69, 0)>,
				 <PINMUX(70, 0)>,
				 <PINMUX(71, 0)>,
				 <PINMUX(72, 0)>,
				 <PINMUX(73, 0)>;
			bias-pull-up;
			drive-strength = <12>;
			input-enable;
		};
	};

	mmc1_pins: mmc1-0 {
		clk-pins {
			pinmux = <GPIOMUX(10, GPOUT_SYS_SDIO1_CLK,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-pull-up;
			drive-strength = <12>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};

		mmc-pins {
			pinmux = <GPIOMUX(9, GPOUT_SYS_SDIO1_CMD,
					     GPOEN_SYS_SDIO1_CMD,
					     GPI_SYS_SDIO1_CMD)>,
				 <GPIOMUX(11, GPOUT_SYS_SDIO1_DATA0,
					      GPOEN_SYS_SDIO1_DATA0,
					      GPI_SYS_SDIO1_DATA0)>,
				 <GPIOMUX(12, GPOUT_SYS_SDIO1_DATA1,
					      GPOEN_SYS_SDIO1_DATA1,
					      GPI_SYS_SDIO1_DATA1)>,
				 <GPIOMUX(7, GPOUT_SYS_SDIO1_DATA2,
					     GPOEN_SYS_SDIO1_DATA2,
					     GPI_SYS_SDIO1_DATA2)>,
				 <GPIOMUX(8, GPOUT_SYS_SDIO1_DATA3,
					     GPOEN_SYS_SDIO1_DATA3,
					     GPI_SYS_SDIO1_DATA3)>;
			bias-pull-up;
			drive-strength = <12>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
	};

	pwmdac_pins: pwmdac-0 {
		pwmdac-pins {
			pinmux = <GPIOMUX(33, GPOUT_SYS_PWMDAC_LEFT,
					      GPOEN_ENABLE,
					      GPI_NONE)>,
				 <GPIOMUX(34, GPOUT_SYS_PWMDAC_RIGHT,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-disable;
			drive-strength = <2>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};

	pwm_pins: pwm-0 {
		pwm-pins {
			pinmux = <GPIOMUX(46, GPOUT_SYS_PWM_CHANNEL0,
					      GPOEN_SYS_PWM0_CHANNEL0,
					      GPI_NONE)>,
				 <GPIOMUX(59, GPOUT_SYS_PWM_CHANNEL1,
					      GPOEN_SYS_PWM0_CHANNEL1,
					      GPI_NONE)>;
			bias-disable;
			drive-strength = <12>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};
	};

	spi0_pins: spi0-0 {
		mosi-pins {
			pinmux = <GPIOMUX(52, GPOUT_SYS_SPI0_TXD,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};

		miso-pins {
			pinmux = <GPIOMUX(53, GPOUT_LOW,
					      GPOEN_DISABLE,
					      GPI_SYS_SPI0_RXD)>;
			bias-pull-up;
			input-enable;
			input-schmitt-enable;
		};

		sck-pins {
			pinmux = <GPIOMUX(48, GPOUT_SYS_SPI0_CLK,
					      GPOEN_ENABLE,
					      GPI_SYS_SPI0_CLK)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};

		ss-pins {
			pinmux = <GPIOMUX(49, GPOUT_SYS_SPI0_FSS,
					      GPOEN_ENABLE,
					      GPI_SYS_SPI0_FSS)>;
			bias-disable;
			input-disable;
			input-schmitt-disable;
		};
	};

	tdm_pins: tdm-0 {
		tx-pins {
			pinmux = <GPIOMUX(44, GPOUT_SYS_TDM_TXD,
					      GPOEN_ENABLE,
					      GPI_NONE)>;
			bias-pull-up;
			drive-strength = <2>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};

		rx-pins {
			pinmux = <GPIOMUX(61, GPOUT_HIGH,
					      GPOEN_DISABLE,
					      GPI_SYS_TDM_RXD)>;
			input-enable;
		};

		sync-pins {
			pinmux = <GPIOMUX(63, GPOUT_HIGH,
					      GPOEN_DISABLE,
					      GPI_SYS_TDM_SYNC)>;
			input-enable;
		};

		pcmclk-pins {
			pinmux = <GPIOMUX(38, GPOUT_HIGH,
					      GPOEN_DISABLE,
					      GPI_SYS_TDM_CLK)>;
			input-enable;
		};
	};

	uart0_pins: uart0-0 {
		tx-pins {
			pinmux = <GPIOMUX(5, GPOUT_SYS_UART0_TX,
					     GPOEN_ENABLE,
					     GPI_NONE)>;
			bias-disable;
			drive-strength = <12>;
			input-disable;
			input-schmitt-disable;
			slew-rate = <0>;
		};

		rx-pins {
			pinmux = <GPIOMUX(6, GPOUT_LOW,
					     GPOEN_DISABLE,
					     GPI_SYS_UART0_RX)>;
			bias-disable; /* external pull-up */
			drive-strength = <2>;
			input-enable;
			input-schmitt-enable;
			slew-rate = <0>;
		};
	};
};

&tdm {
	pinctrl-names = "default";
	pinctrl-0 = <&tdm_pins>;
	status = "okay";
};

&uart0 {
	pinctrl-names = "default";
	pinctrl-0 = <&uart0_pins>;
	status = "okay";
};

&usb0 {
	dr_mode = "peripheral";
	status = "okay";
};

&U74_1 {
	cpu-supply = <&vdd_cpu>;
};

&U74_2 {
	cpu-supply = <&vdd_cpu>;
};

&U74_3 {
	cpu-supply = <&vdd_cpu>;
};

&U74_4 {
	cpu-supply = <&vdd_cpu>;
};

File Added: src/sys/external/gpl2/dts/dist/arch/riscv/boot/dts/starfive/jh7110.dtsi
// SPDX-License-Identifier: GPL-2.0 OR MIT
/*
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 */

/dts-v1/;
#include <dt-bindings/clock/starfive,jh7110-crg.h>
#include <dt-bindings/power/starfive,jh7110-pmu.h>
#include <dt-bindings/reset/starfive,jh7110-crg.h>
#include <dt-bindings/thermal/thermal.h>

/ {
	compatible = "starfive,jh7110";
	#address-cells = <2>;
	#size-cells = <2>;

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		S7_0: cpu@0 {
			compatible = "sifive,s7", "riscv";
			reg = <0>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <16384>;
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imac_zba_zbb";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "c", "zba", "zbb", "zicntr", "zicsr",
					       "zifencei", "zihpm";
			status = "disabled";

			cpu0_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		U74_1: cpu@1 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <1>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <40>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <40>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc_zba_zbb";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
					       "zicsr", "zifencei", "zihpm";
			tlb-split;
			operating-points-v2 = <&cpu_opp>;
			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
			clock-names = "cpu";
			#cooling-cells = <2>;

			cpu1_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		U74_2: cpu@2 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <2>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <40>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <40>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc_zba_zbb";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
					       "zicsr", "zifencei", "zihpm";
			tlb-split;
			operating-points-v2 = <&cpu_opp>;
			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
			clock-names = "cpu";
			#cooling-cells = <2>;

			cpu2_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		U74_3: cpu@3 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <3>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <40>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <40>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc_zba_zbb";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
					       "zicsr", "zifencei", "zihpm";
			tlb-split;
			operating-points-v2 = <&cpu_opp>;
			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
			clock-names = "cpu";
			#cooling-cells = <2>;

			cpu3_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		U74_4: cpu@4 {
			compatible = "sifive,u74-mc", "riscv";
			reg = <4>;
			d-cache-block-size = <64>;
			d-cache-sets = <64>;
			d-cache-size = <32768>;
			d-tlb-sets = <1>;
			d-tlb-size = <40>;
			device_type = "cpu";
			i-cache-block-size = <64>;
			i-cache-sets = <64>;
			i-cache-size = <32768>;
			i-tlb-sets = <1>;
			i-tlb-size = <40>;
			mmu-type = "riscv,sv39";
			next-level-cache = <&ccache>;
			riscv,isa = "rv64imafdc_zba_zbb";
			riscv,isa-base = "rv64i";
			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
					       "zicsr", "zifencei", "zihpm";
			tlb-split;
			operating-points-v2 = <&cpu_opp>;
			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
			clock-names = "cpu";
			#cooling-cells = <2>;

			cpu4_intc: interrupt-controller {
				compatible = "riscv,cpu-intc";
				interrupt-controller;
				#interrupt-cells = <1>;
			};
		};

		cpu-map {
			cluster0 {
				core0 {
					cpu = <&S7_0>;
				};

				core1 {
					cpu = <&U74_1>;
				};

				core2 {
					cpu = <&U74_2>;
				};

				core3 {
					cpu = <&U74_3>;
				};

				core4 {
					cpu = <&U74_4>;
				};
			};
		};
	};

	cpu_opp: opp-table-0 {
			compatible = "operating-points-v2";
			opp-shared;
			opp-375000000 {
					opp-hz = /bits/ 64 <375000000>;
					opp-microvolt = <800000>;
			};
			opp-500000000 {
					opp-hz = /bits/ 64 <500000000>;
					opp-microvolt = <800000>;
			};
			opp-750000000 {
					opp-hz = /bits/ 64 <750000000>;
					opp-microvolt = <800000>;
			};
			opp-1500000000 {
					opp-hz = /bits/ 64 <1500000000>;
					opp-microvolt = <1040000>;
			};
	};

	thermal-zones {
		cpu-thermal {
			polling-delay-passive = <250>;
			polling-delay = <15000>;

			thermal-sensors = <&sfctemp>;

			cooling-maps {
				map0 {
					trip = <&cpu_alert0>;
					cooling-device =
						<&U74_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
						<&U74_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
						<&U74_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
						<&U74_4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
				};
			};

			trips {
				cpu_alert0: cpu_alert0 {
					/* milliCelsius */
					temperature = <85000>;
					hysteresis = <2000>;
					type = "passive";
				};

				cpu_crit {
					/* milliCelsius */
					temperature = <100000>;
					hysteresis = <2000>;
					type = "critical";
				};
			};
		};
	};

	dvp_clk: dvp-clock {
		compatible = "fixed-clock";
		clock-output-names = "dvp_clk";
		#clock-cells = <0>;
	};
	gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock {
		compatible = "fixed-clock";
		clock-output-names = "gmac0_rgmii_rxin";
		#clock-cells = <0>;
	};

	gmac0_rmii_refin: gmac0-rmii-refin-clock {
		compatible = "fixed-clock";
		clock-output-names = "gmac0_rmii_refin";
		#clock-cells = <0>;
	};

	gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock {
		compatible = "fixed-clock";
		clock-output-names = "gmac1_rgmii_rxin";
		#clock-cells = <0>;
	};

	gmac1_rmii_refin: gmac1-rmii-refin-clock {
		compatible = "fixed-clock";
		clock-output-names = "gmac1_rmii_refin";
		#clock-cells = <0>;
	};

	hdmitx0_pixelclk: hdmitx0-pixel-clock {
		compatible = "fixed-clock";
		clock-output-names = "hdmitx0_pixelclk";
		#clock-cells = <0>;
	};

	i2srx_bclk_ext: i2srx-bclk-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "i2srx_bclk_ext";
		#clock-cells = <0>;
	};

	i2srx_lrck_ext: i2srx-lrck-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "i2srx_lrck_ext";
		#clock-cells = <0>;
	};

	i2stx_bclk_ext: i2stx-bclk-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "i2stx_bclk_ext";
		#clock-cells = <0>;
	};

	i2stx_lrck_ext: i2stx-lrck-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "i2stx_lrck_ext";
		#clock-cells = <0>;
	};

	mclk_ext: mclk-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "mclk_ext";
		#clock-cells = <0>;
	};

	osc: oscillator {
		compatible = "fixed-clock";
		clock-output-names = "osc";
		#clock-cells = <0>;
	};

	rtc_osc: rtc-oscillator {
		compatible = "fixed-clock";
		clock-output-names = "rtc_osc";
		#clock-cells = <0>;
	};

	stmmac_axi_setup: stmmac-axi-config {
		snps,lpi_en;
		snps,wr_osr_lmt = <15>;
		snps,rd_osr_lmt = <15>;
		snps,blen = <256 128 64 32 0 0 0>;
	};

	tdm_ext: tdm-ext-clock {
		compatible = "fixed-clock";
		clock-output-names = "tdm_ext";
		#clock-cells = <0>;
	};

	soc {
		compatible = "simple-bus";
		interrupt-parent = <&plic>;
		#address-cells = <2>;
		#size-cells = <2>;
		ranges;

		clint: timer@2000000 {
			compatible = "starfive,jh7110-clint", "sifive,clint0";
			reg = <0x0 0x2000000 0x0 0x10000>;
			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
					      <&cpu1_intc 3>, <&cpu1_intc 7>,
					      <&cpu2_intc 3>, <&cpu2_intc 7>,
					      <&cpu3_intc 3>, <&cpu3_intc 7>,
					      <&cpu4_intc 3>, <&cpu4_intc 7>;
		};

		ccache: cache-controller@2010000 {
			compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache";
			reg = <0x0 0x2010000 0x0 0x4000>;
			interrupts = <1>, <3>, <4>, <2>;
			cache-block-size = <64>;
			cache-level = <2>;
			cache-sets = <2048>;
			cache-size = <2097152>;
			cache-unified;
		};

		plic: interrupt-controller@c000000 {
			compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0";
			reg = <0x0 0xc000000 0x0 0x4000000>;
			interrupts-extended = <&cpu0_intc 11>,
					      <&cpu1_intc 11>, <&cpu1_intc 9>,
					      <&cpu2_intc 11>, <&cpu2_intc 9>,
					      <&cpu3_intc 11>, <&cpu3_intc 9>,
					      <&cpu4_intc 11>, <&cpu4_intc 9>;
			interrupt-controller;
			#interrupt-cells = <1>;
			#address-cells = <0>;
			riscv,ndev = <136>;
		};

		uart0: serial@10000000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x10000000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>,
				 <&syscrg JH7110_SYSCLK_UART0_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART0_APB>;
			interrupts = <32>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart1: serial@10010000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x10010000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>,
				 <&syscrg JH7110_SYSCLK_UART1_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART1_APB>;
			interrupts = <33>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart2: serial@10020000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x10020000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>,
				 <&syscrg JH7110_SYSCLK_UART2_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART2_APB>;
			interrupts = <34>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		i2c0: i2c@10030000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x10030000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C0_APB>;
			interrupts = <35>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c1: i2c@10040000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x10040000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C1_APB>;
			interrupts = <36>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c2: i2c@10050000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x10050000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C2_APB>;
			interrupts = <37>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi0: spi@10060000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x10060000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI0_APB>,
				 <&syscrg JH7110_SYSCLK_SPI0_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI0_APB>;
			interrupts = <38>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi1: spi@10070000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x10070000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI1_APB>,
				 <&syscrg JH7110_SYSCLK_SPI1_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI1_APB>;
			interrupts = <39>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi2: spi@10080000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x10080000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI2_APB>,
				 <&syscrg JH7110_SYSCLK_SPI2_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI2_APB>;
			interrupts = <40>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		tdm: tdm@10090000 {
			compatible = "starfive,jh7110-tdm";
			reg = <0x0 0x10090000 0x0 0x1000>;
			clocks = <&syscrg JH7110_SYSCLK_TDM_AHB>,
				 <&syscrg JH7110_SYSCLK_TDM_APB>,
				 <&syscrg JH7110_SYSCLK_TDM_INTERNAL>,
				 <&syscrg JH7110_SYSCLK_TDM_TDM>,
				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
				 <&tdm_ext>;
			clock-names = "tdm_ahb", "tdm_apb",
				      "tdm_internal", "tdm",
				      "mclk_inner", "tdm_ext";
			resets = <&syscrg JH7110_SYSRST_TDM_AHB>,
				 <&syscrg JH7110_SYSRST_TDM_APB>,
				 <&syscrg JH7110_SYSRST_TDM_CORE>;
			dmas = <&dma 20>, <&dma 21>;
			dma-names = "rx","tx";
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		i2srx: i2s@100e0000 {
			compatible = "starfive,jh7110-i2srx";
			reg = <0x0 0x100e0000 0x0 0x1000>;
			clocks = <&syscrg JH7110_SYSCLK_I2SRX_BCLK_MST>,
				 <&syscrg JH7110_SYSCLK_I2SRX_APB>,
				 <&syscrg JH7110_SYSCLK_MCLK>,
				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
				 <&mclk_ext>,
				 <&syscrg JH7110_SYSCLK_I2SRX_BCLK>,
				 <&syscrg JH7110_SYSCLK_I2SRX_LRCK>,
				 <&i2srx_bclk_ext>,
				 <&i2srx_lrck_ext>;
			clock-names = "i2sclk", "apb", "mclk",
				      "mclk_inner", "mclk_ext", "bclk",
				      "lrck", "bclk_ext", "lrck_ext";
			resets = <&syscrg JH7110_SYSRST_I2SRX_APB>,
				 <&syscrg JH7110_SYSRST_I2SRX_BCLK>;
			dmas = <0>, <&dma 24>;
			dma-names = "tx", "rx";
			starfive,syscon = <&sys_syscon 0x18 0x2>;
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		pwmdac: pwmdac@100b0000 {
			compatible = "starfive,jh7110-pwmdac";
			reg = <0x0 0x100b0000 0x0 0x1000>;
			clocks = <&syscrg JH7110_SYSCLK_PWMDAC_APB>,
				 <&syscrg JH7110_SYSCLK_PWMDAC_CORE>;
			clock-names = "apb", "core";
			resets = <&syscrg JH7110_SYSRST_PWMDAC_APB>;
			dmas = <&dma 22>;
			dma-names = "tx";
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		usb0: usb@10100000 {
			compatible = "starfive,jh7110-usb";
			ranges = <0x0 0x0 0x10100000 0x100000>;
			#address-cells = <1>;
			#size-cells = <1>;
			starfive,stg-syscon = <&stg_syscon 0x4>;
			clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>,
				 <&stgcrg JH7110_STGCLK_USB0_STB>,
				 <&stgcrg JH7110_STGCLK_USB0_APB>,
				 <&stgcrg JH7110_STGCLK_USB0_AXI>,
				 <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>;
			clock-names = "lpm", "stb", "apb", "axi", "utmi_apb";
			resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>,
				 <&stgcrg JH7110_STGRST_USB0_APB>,
				 <&stgcrg JH7110_STGRST_USB0_AXI>,
				 <&stgcrg JH7110_STGRST_USB0_UTMI_APB>;
			reset-names = "pwrup", "apb", "axi", "utmi_apb";
			status = "disabled";

			usb_cdns3: usb@0 {
				compatible = "cdns,usb3";
				reg = <0x0 0x10000>,
				      <0x10000 0x10000>,
				      <0x20000 0x10000>;
				reg-names = "otg", "xhci", "dev";
				interrupts = <100>, <108>, <110>;
				interrupt-names = "host", "peripheral", "otg";
				phys = <&usbphy0>;
				phy-names = "cdns3,usb2-phy";
			};
		};

		usbphy0: phy@10200000 {
			compatible = "starfive,jh7110-usb-phy";
			reg = <0x0 0x10200000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_USB_125M>,
				 <&stgcrg JH7110_STGCLK_USB0_APP_125>;
			clock-names = "125m", "app_125m";
			#phy-cells = <0>;
		};

		pciephy0: phy@10210000 {
			compatible = "starfive,jh7110-pcie-phy";
			reg = <0x0 0x10210000 0x0 0x10000>;
			#phy-cells = <0>;
		};

		pciephy1: phy@10220000 {
			compatible = "starfive,jh7110-pcie-phy";
			reg = <0x0 0x10220000 0x0 0x10000>;
			#phy-cells = <0>;
		};

		stgcrg: clock-controller@10230000 {
			compatible = "starfive,jh7110-stgcrg";
			reg = <0x0 0x10230000 0x0 0x10000>;
			clocks = <&osc>,
				 <&syscrg JH7110_SYSCLK_HIFI4_CORE>,
				 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
				 <&syscrg JH7110_SYSCLK_USB_125M>,
				 <&syscrg JH7110_SYSCLK_CPU_BUS>,
				 <&syscrg JH7110_SYSCLK_HIFI4_AXI>,
				 <&syscrg JH7110_SYSCLK_NOCSTG_BUS>,
				 <&syscrg JH7110_SYSCLK_APB_BUS>;
			clock-names = "osc", "hifi4_core",
				      "stg_axiahb", "usb_125m",
				      "cpu_bus", "hifi4_axi",
				      "nocstg_bus", "apb_bus";
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		stg_syscon: syscon@10240000 {
			compatible = "starfive,jh7110-stg-syscon", "syscon";
			reg = <0x0 0x10240000 0x0 0x1000>;
		};

		uart3: serial@12000000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x12000000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>,
				 <&syscrg JH7110_SYSCLK_UART3_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART3_APB>;
			interrupts = <45>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart4: serial@12010000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x12010000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>,
				 <&syscrg JH7110_SYSCLK_UART4_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART4_APB>;
			interrupts = <46>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		uart5: serial@12020000 {
			compatible = "snps,dw-apb-uart";
			reg = <0x0 0x12020000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>,
				 <&syscrg JH7110_SYSCLK_UART5_APB>;
			clock-names = "baudclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_UART5_APB>;
			interrupts = <47>;
			reg-io-width = <4>;
			reg-shift = <2>;
			status = "disabled";
		};

		i2c3: i2c@12030000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12030000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C3_APB>;
			interrupts = <48>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c4: i2c@12040000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12040000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C4_APB>;
			interrupts = <49>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c5: i2c@12050000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12050000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C5_APB>;
			interrupts = <50>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2c6: i2c@12060000 {
			compatible = "snps,designware-i2c";
			reg = <0x0 0x12060000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>;
			clock-names = "ref";
			resets = <&syscrg JH7110_SYSRST_I2C6_APB>;
			interrupts = <51>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi3: spi@12070000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x12070000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI3_APB>,
				 <&syscrg JH7110_SYSCLK_SPI3_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI3_APB>;
			interrupts = <52>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi4: spi@12080000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x12080000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI4_APB>,
				 <&syscrg JH7110_SYSCLK_SPI4_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI4_APB>;
			interrupts = <53>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi5: spi@12090000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x12090000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI5_APB>,
				 <&syscrg JH7110_SYSCLK_SPI5_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI5_APB>;
			interrupts = <54>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		spi6: spi@120a0000 {
			compatible = "arm,pl022", "arm,primecell";
			reg = <0x0 0x120A0000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SPI6_APB>,
				 <&syscrg JH7110_SYSCLK_SPI6_APB>;
			clock-names = "sspclk", "apb_pclk";
			resets = <&syscrg JH7110_SYSRST_SPI6_APB>;
			interrupts = <55>;
			arm,primecell-periphid = <0x00041022>;
			num-cs = <1>;
			#address-cells = <1>;
			#size-cells = <0>;
			status = "disabled";
		};

		i2stx0: i2s@120b0000 {
			compatible = "starfive,jh7110-i2stx0";
			reg = <0x0 0x120b0000 0x0 0x1000>;
			clocks = <&syscrg JH7110_SYSCLK_I2STX0_BCLK_MST>,
				 <&syscrg JH7110_SYSCLK_I2STX0_APB>,
				 <&syscrg JH7110_SYSCLK_MCLK>,
				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
				 <&mclk_ext>;
			clock-names = "i2sclk", "apb", "mclk",
				      "mclk_inner","mclk_ext";
			resets = <&syscrg JH7110_SYSRST_I2STX0_APB>,
				 <&syscrg JH7110_SYSRST_I2STX0_BCLK>;
			dmas = <&dma 47>;
			dma-names = "tx";
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		i2stx1: i2s@120c0000 {
			compatible = "starfive,jh7110-i2stx1";
			reg = <0x0 0x120c0000 0x0 0x1000>;
			clocks = <&syscrg JH7110_SYSCLK_I2STX1_BCLK_MST>,
				 <&syscrg JH7110_SYSCLK_I2STX1_APB>,
				 <&syscrg JH7110_SYSCLK_MCLK>,
				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
				 <&mclk_ext>,
				 <&syscrg JH7110_SYSCLK_I2STX1_BCLK>,
				 <&syscrg JH7110_SYSCLK_I2STX1_LRCK>,
				 <&i2stx_bclk_ext>,
				 <&i2stx_lrck_ext>;
			clock-names = "i2sclk", "apb", "mclk",
				      "mclk_inner", "mclk_ext", "bclk",
				      "lrck", "bclk_ext", "lrck_ext";
			resets = <&syscrg JH7110_SYSRST_I2STX1_APB>,
				 <&syscrg JH7110_SYSRST_I2STX1_BCLK>;
			dmas = <&dma 48>;
			dma-names = "tx";
			#sound-dai-cells = <0>;
			status = "disabled";
		};

		pwm: pwm@120d0000 {
			compatible = "starfive,jh7110-pwm", "opencores,pwm-v1";
			reg = <0x0 0x120d0000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_PWM_APB>;
			resets = <&syscrg JH7110_SYSRST_PWM_APB>;
			#pwm-cells = <3>;
			status = "disabled";
		};

		sfctemp: temperature-sensor@120e0000 {
			compatible = "starfive,jh7110-temp";
			reg = <0x0 0x120e0000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_TEMP_CORE>,
				 <&syscrg JH7110_SYSCLK_TEMP_APB>;
			clock-names = "sense", "bus";
			resets = <&syscrg JH7110_SYSRST_TEMP_CORE>,
				 <&syscrg JH7110_SYSRST_TEMP_APB>;
			reset-names = "sense", "bus";
			#thermal-sensor-cells = <0>;
		};

		qspi: spi@13010000 {
			compatible = "starfive,jh7110-qspi", "cdns,qspi-nor";
			reg = <0x0 0x13010000 0x0 0x10000>,
			      <0x0 0x21000000 0x0 0x400000>;
			interrupts = <25>;
			clocks = <&syscrg JH7110_SYSCLK_QSPI_REF>,
				 <&syscrg JH7110_SYSCLK_QSPI_AHB>,
				 <&syscrg JH7110_SYSCLK_QSPI_APB>;
			clock-names = "ref", "ahb", "apb";
			resets = <&syscrg JH7110_SYSRST_QSPI_APB>,
				 <&syscrg JH7110_SYSRST_QSPI_AHB>,
				 <&syscrg JH7110_SYSRST_QSPI_REF>;
			reset-names = "qspi", "qspi-ocp", "rstc_ref";
			cdns,fifo-depth = <256>;
			cdns,fifo-width = <4>;
			cdns,trigger-address = <0x0>;
			status = "disabled";
		};

		syscrg: clock-controller@13020000 {
			compatible = "starfive,jh7110-syscrg";
			reg = <0x0 0x13020000 0x0 0x10000>;
			clocks = <&osc>, <&gmac1_rmii_refin>,
				 <&gmac1_rgmii_rxin>,
				 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
				 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
				 <&tdm_ext>, <&mclk_ext>,
				 <&pllclk JH7110_PLLCLK_PLL0_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL1_OUT>,
				 <&pllclk JH7110_PLLCLK_PLL2_OUT>;
			clock-names = "osc", "gmac1_rmii_refin",
				      "gmac1_rgmii_rxin",
				      "i2stx_bclk_ext", "i2stx_lrck_ext",
				      "i2srx_bclk_ext", "i2srx_lrck_ext",
				      "tdm_ext", "mclk_ext",
				      "pll0_out", "pll1_out", "pll2_out";
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		sys_syscon: syscon@13030000 {
			compatible = "starfive,jh7110-sys-syscon", "syscon", "simple-mfd";
			reg = <0x0 0x13030000 0x0 0x1000>;

			pllclk: clock-controller {
				compatible = "starfive,jh7110-pll";
				clocks = <&osc>;
				#clock-cells = <1>;
			};
		};

		sysgpio: pinctrl@13040000 {
			compatible = "starfive,jh7110-sys-pinctrl";
			reg = <0x0 0x13040000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>;
			resets = <&syscrg JH7110_SYSRST_IOMUX_APB>;
			interrupts = <86>;
			interrupt-controller;
			#interrupt-cells = <2>;
			gpio-controller;
			#gpio-cells = <2>;
		};

		watchdog@13070000 {
			compatible = "starfive,jh7110-wdt";
			reg = <0x0 0x13070000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_WDT_APB>,
				 <&syscrg JH7110_SYSCLK_WDT_CORE>;
			clock-names = "apb", "core";
			resets = <&syscrg JH7110_SYSRST_WDT_APB>,
				 <&syscrg JH7110_SYSRST_WDT_CORE>;
		};

		crypto: crypto@16000000 {
			compatible = "starfive,jh7110-crypto";
			reg = <0x0 0x16000000 0x0 0x4000>;
			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
				 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
			clock-names = "hclk", "ahb";
			interrupts = <28>;
			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
			dmas = <&sdma 1 2>, <&sdma 0 2>;
			dma-names = "tx", "rx";
		};

		sdma: dma-controller@16008000 {
			compatible = "arm,pl080", "arm,primecell";
			arm,primecell-periphid = <0x00041080>;
			reg = <0x0 0x16008000 0x0 0x4000>;
			interrupts = <29>;
			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>;
			clock-names = "apb_pclk";
			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
			lli-bus-interface-ahb1;
			mem-bus-interface-ahb1;
			memcpy-burst-size = <256>;
			memcpy-bus-width = <32>;
			#dma-cells = <2>;
		};

		rng: rng@1600c000 {
			compatible = "starfive,jh7110-trng";
			reg = <0x0 0x1600C000 0x0 0x4000>;
			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
				 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
			clock-names = "hclk", "ahb";
			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
			interrupts = <30>;
		};

		mmc0: mmc@16010000 {
			compatible = "starfive,jh7110-mmc";
			reg = <0x0 0x16010000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SDIO0_AHB>,
				 <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
			clock-names = "biu","ciu";
			resets = <&syscrg JH7110_SYSRST_SDIO0_AHB>;
			reset-names = "reset";
			interrupts = <74>;
			fifo-depth = <32>;
			fifo-watermark-aligned;
			data-addr = <0>;
			starfive,sysreg = <&sys_syscon 0x14 0x1a 0x7c000000>;
			status = "disabled";
		};

		mmc1: mmc@16020000 {
			compatible = "starfive,jh7110-mmc";
			reg = <0x0 0x16020000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_SDIO1_AHB>,
				 <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
			clock-names = "biu","ciu";
			resets = <&syscrg JH7110_SYSRST_SDIO1_AHB>;
			reset-names = "reset";
			interrupts = <75>;
			fifo-depth = <32>;
			fifo-watermark-aligned;
			data-addr = <0>;
			starfive,sysreg = <&sys_syscon 0x9c 0x1 0x3e>;
			status = "disabled";
		};

		gmac0: ethernet@16030000 {
			compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
			reg = <0x0 0x16030000 0x0 0x10000>;
			clocks = <&aoncrg JH7110_AONCLK_GMAC0_AXI>,
				 <&aoncrg JH7110_AONCLK_GMAC0_AHB>,
				 <&syscrg JH7110_SYSCLK_GMAC0_PTP>,
				 <&aoncrg JH7110_AONCLK_GMAC0_TX_INV>,
				 <&syscrg JH7110_SYSCLK_GMAC0_GTXC>;
			clock-names = "stmmaceth", "pclk", "ptp_ref",
				      "tx", "gtx";
			resets = <&aoncrg JH7110_AONRST_GMAC0_AXI>,
				 <&aoncrg JH7110_AONRST_GMAC0_AHB>;
			reset-names = "stmmaceth", "ahb";
			interrupts = <7>, <6>, <5>;
			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
			rx-fifo-depth = <2048>;
			tx-fifo-depth = <2048>;
			snps,multicast-filter-bins = <64>;
			snps,perfect-filter-entries = <256>;
			snps,fixed-burst;
			snps,no-pbl-x8;
			snps,force_thresh_dma_mode;
			snps,axi-config = <&stmmac_axi_setup>;
			snps,tso;
			snps,en-tx-lpi-clockgating;
			snps,txpbl = <16>;
			snps,rxpbl = <16>;
			starfive,syscon = <&aon_syscon 0xc 0x12>;
			status = "disabled";
		};

		gmac1: ethernet@16040000 {
			compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
			reg = <0x0 0x16040000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_GMAC1_AXI>,
				 <&syscrg JH7110_SYSCLK_GMAC1_AHB>,
				 <&syscrg JH7110_SYSCLK_GMAC1_PTP>,
				 <&syscrg JH7110_SYSCLK_GMAC1_TX_INV>,
				 <&syscrg JH7110_SYSCLK_GMAC1_GTXC>;
			clock-names = "stmmaceth", "pclk", "ptp_ref",
				      "tx", "gtx";
			resets = <&syscrg JH7110_SYSRST_GMAC1_AXI>,
				 <&syscrg JH7110_SYSRST_GMAC1_AHB>;
			reset-names = "stmmaceth", "ahb";
			interrupts = <78>, <77>, <76>;
			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
			rx-fifo-depth = <2048>;
			tx-fifo-depth = <2048>;
			snps,multicast-filter-bins = <64>;
			snps,perfect-filter-entries = <256>;
			snps,fixed-burst;
			snps,no-pbl-x8;
			snps,force_thresh_dma_mode;
			snps,axi-config = <&stmmac_axi_setup>;
			snps,tso;
			snps,en-tx-lpi-clockgating;
			snps,txpbl = <16>;
			snps,rxpbl = <16>;
			starfive,syscon = <&sys_syscon 0x90 0x2>;
			status = "disabled";
		};

		dma: dma-controller@16050000 {
			compatible = "starfive,jh7110-axi-dma";
			reg = <0x0 0x16050000 0x0 0x10000>;
			clocks = <&stgcrg JH7110_STGCLK_DMA1P_AXI>,
				 <&stgcrg JH7110_STGCLK_DMA1P_AHB>;
			clock-names = "core-clk", "cfgr-clk";
			resets = <&stgcrg JH7110_STGRST_DMA1P_AXI>,
				 <&stgcrg JH7110_STGRST_DMA1P_AHB>;
			interrupts = <73>;
			#dma-cells = <1>;
			dma-channels = <4>;
			snps,dma-masters = <1>;
			snps,data-width = <3>;
			snps,block-size = <65536 65536 65536 65536>;
			snps,priority = <0 1 2 3>;
			snps,axi-max-burst-len = <16>;
		};

		aoncrg: clock-controller@17000000 {
			compatible = "starfive,jh7110-aoncrg";
			reg = <0x0 0x17000000 0x0 0x10000>;
			clocks = <&osc>, <&gmac0_rmii_refin>,
				 <&gmac0_rgmii_rxin>,
				 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
				 <&syscrg JH7110_SYSCLK_APB_BUS>,
				 <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>,
				 <&rtc_osc>;
			clock-names = "osc", "gmac0_rmii_refin",
				      "gmac0_rgmii_rxin", "stg_axiahb",
				      "apb_bus", "gmac0_gtxclk",
				      "rtc_osc";
			#clock-cells = <1>;
			#reset-cells = <1>;
		};

		aon_syscon: syscon@17010000 {
			compatible = "starfive,jh7110-aon-syscon", "syscon";
			reg = <0x0 0x17010000 0x0 0x1000>;
			#power-domain-cells = <1>;
		};

		aongpio: pinctrl@17020000 {
			compatible = "starfive,jh7110-aon-pinctrl";
			reg = <0x0 0x17020000 0x0 0x10000>;
			resets = <&aoncrg JH7110_AONRST_IOMUX>;
			interrupts = <85>;
			interrupt-controller;
			#interrupt-cells = <2>;
			gpio-controller;
			#gpio-cells = <2>;
		};

		pwrc: power-controller@17030000 {
			compatible = "starfive,jh7110-pmu";
			reg = <0x0 0x17030000 0x0 0x10000>;
			interrupts = <111>;
			#power-domain-cells = <1>;
		};

		ispcrg: clock-controller@19810000 {
			compatible = "starfive,jh7110-ispcrg";
			reg = <0x0 0x19810000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
				 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>,
				 <&syscrg JH7110_SYSCLK_NOC_BUS_ISP_AXI>,
				 <&dvp_clk>;
			clock-names = "isp_top_core", "isp_top_axi",
				      "noc_bus_isp_axi", "dvp_clk";
			resets = <&syscrg JH7110_SYSRST_ISP_TOP>,
				 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>,
				 <&syscrg JH7110_SYSRST_NOC_BUS_ISP_AXI>;
			#clock-cells = <1>;
			#reset-cells = <1>;
			power-domains = <&pwrc JH7110_PD_ISP>;
		};

		voutcrg: clock-controller@295c0000 {
			compatible = "starfive,jh7110-voutcrg";
			reg = <0x0 0x295c0000 0x0 0x10000>;
			clocks = <&syscrg JH7110_SYSCLK_VOUT_SRC>,
				 <&syscrg JH7110_SYSCLK_VOUT_TOP_AHB>,
				 <&syscrg JH7110_SYSCLK_VOUT_TOP_AXI>,
				 <&syscrg JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK>,
				 <&syscrg JH7110_SYSCLK_I2STX0_BCLK>,
				 <&hdmitx0_pixelclk>;
			clock-names = "vout_src", "vout_top_ahb",
				      "vout_top_axi", "vout_top_hdmitx0_mclk",
				      "i2stx0_bclk", "hdmitx0_pixelclk";
			resets = <&syscrg JH7110_SYSRST_VOUT_TOP_SRC>;
			#clock-cells = <1>;
			#reset-cells = <1>;
			power-domains = <&pwrc JH7110_PD_VOUT>;
		};
	};
};

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive,jh7110-crg.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright 2022 Emil Renner Berthing <kernel@esmil.dk>
 * Copyright 2022 StarFive Technology Co., Ltd.
 */

#ifndef __DT_BINDINGS_CLOCK_STARFIVE_JH7110_CRG_H__
#define __DT_BINDINGS_CLOCK_STARFIVE_JH7110_CRG_H__

/* PLL clocks */
#define JH7110_PLLCLK_PLL0_OUT			0
#define JH7110_PLLCLK_PLL1_OUT			1
#define JH7110_PLLCLK_PLL2_OUT			2
#define JH7110_PLLCLK_END			3

/* SYSCRG clocks */
#define JH7110_SYSCLK_CPU_ROOT			0
#define JH7110_SYSCLK_CPU_CORE			1
#define JH7110_SYSCLK_CPU_BUS			2
#define JH7110_SYSCLK_GPU_ROOT			3
#define JH7110_SYSCLK_PERH_ROOT			4
#define JH7110_SYSCLK_BUS_ROOT			5
#define JH7110_SYSCLK_NOCSTG_BUS		6
#define JH7110_SYSCLK_AXI_CFG0			7
#define JH7110_SYSCLK_STG_AXIAHB		8
#define JH7110_SYSCLK_AHB0			9
#define JH7110_SYSCLK_AHB1			10
#define JH7110_SYSCLK_APB_BUS			11
#define JH7110_SYSCLK_APB0			12
#define JH7110_SYSCLK_PLL0_DIV2			13
#define JH7110_SYSCLK_PLL1_DIV2			14
#define JH7110_SYSCLK_PLL2_DIV2			15
#define JH7110_SYSCLK_AUDIO_ROOT		16
#define JH7110_SYSCLK_MCLK_INNER		17
#define JH7110_SYSCLK_MCLK			18
#define JH7110_SYSCLK_MCLK_OUT			19
#define JH7110_SYSCLK_ISP_2X			20
#define JH7110_SYSCLK_ISP_AXI			21
#define JH7110_SYSCLK_GCLK0			22
#define JH7110_SYSCLK_GCLK1			23
#define JH7110_SYSCLK_GCLK2			24
#define JH7110_SYSCLK_CORE			25
#define JH7110_SYSCLK_CORE1			26
#define JH7110_SYSCLK_CORE2			27
#define JH7110_SYSCLK_CORE3			28
#define JH7110_SYSCLK_CORE4			29
#define JH7110_SYSCLK_DEBUG			30
#define JH7110_SYSCLK_RTC_TOGGLE		31
#define JH7110_SYSCLK_TRACE0			32
#define JH7110_SYSCLK_TRACE1			33
#define JH7110_SYSCLK_TRACE2			34
#define JH7110_SYSCLK_TRACE3			35
#define JH7110_SYSCLK_TRACE4			36
#define JH7110_SYSCLK_TRACE_COM			37
#define JH7110_SYSCLK_NOC_BUS_CPU_AXI		38
#define JH7110_SYSCLK_NOC_BUS_AXICFG0_AXI	39
#define JH7110_SYSCLK_OSC_DIV2			40
#define JH7110_SYSCLK_PLL1_DIV4			41
#define JH7110_SYSCLK_PLL1_DIV8			42
#define JH7110_SYSCLK_DDR_BUS			43
#define JH7110_SYSCLK_DDR_AXI			44
#define JH7110_SYSCLK_GPU_CORE			45
#define JH7110_SYSCLK_GPU_CORE_CLK		46
#define JH7110_SYSCLK_GPU_SYS_CLK		47
#define JH7110_SYSCLK_GPU_APB			48
#define JH7110_SYSCLK_GPU_RTC_TOGGLE		49
#define JH7110_SYSCLK_NOC_BUS_GPU_AXI		50
#define JH7110_SYSCLK_ISP_TOP_CORE		51
#define JH7110_SYSCLK_ISP_TOP_AXI		52
#define JH7110_SYSCLK_NOC_BUS_ISP_AXI		53
#define JH7110_SYSCLK_HIFI4_CORE		54
#define JH7110_SYSCLK_HIFI4_AXI			55
#define JH7110_SYSCLK_AXI_CFG1_MAIN		56
#define JH7110_SYSCLK_AXI_CFG1_AHB		57
#define JH7110_SYSCLK_VOUT_SRC			58
#define JH7110_SYSCLK_VOUT_AXI			59
#define JH7110_SYSCLK_NOC_BUS_DISP_AXI		60
#define JH7110_SYSCLK_VOUT_TOP_AHB		61
#define JH7110_SYSCLK_VOUT_TOP_AXI		62
#define JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK	63
#define JH7110_SYSCLK_VOUT_TOP_MIPIPHY_REF	64
#define JH7110_SYSCLK_JPEGC_AXI			65
#define JH7110_SYSCLK_CODAJ12_AXI		66
#define JH7110_SYSCLK_CODAJ12_CORE		67
#define JH7110_SYSCLK_CODAJ12_APB		68
#define JH7110_SYSCLK_VDEC_AXI			69
#define JH7110_SYSCLK_WAVE511_AXI		70
#define JH7110_SYSCLK_WAVE511_BPU		71
#define JH7110_SYSCLK_WAVE511_VCE		72
#define JH7110_SYSCLK_WAVE511_APB		73
#define JH7110_SYSCLK_VDEC_JPG			74
#define JH7110_SYSCLK_VDEC_MAIN			75
#define JH7110_SYSCLK_NOC_BUS_VDEC_AXI		76
#define JH7110_SYSCLK_VENC_AXI			77
#define JH7110_SYSCLK_WAVE420L_AXI		78
#define JH7110_SYSCLK_WAVE420L_BPU		79
#define JH7110_SYSCLK_WAVE420L_VCE		80
#define JH7110_SYSCLK_WAVE420L_APB		81
#define JH7110_SYSCLK_NOC_BUS_VENC_AXI		82
#define JH7110_SYSCLK_AXI_CFG0_MAIN_DIV		83
#define JH7110_SYSCLK_AXI_CFG0_MAIN		84
#define JH7110_SYSCLK_AXI_CFG0_HIFI4		85
#define JH7110_SYSCLK_AXIMEM2_AXI		86
#define JH7110_SYSCLK_QSPI_AHB			87
#define JH7110_SYSCLK_QSPI_APB			88
#define JH7110_SYSCLK_QSPI_REF_SRC		89
#define JH7110_SYSCLK_QSPI_REF			90
#define JH7110_SYSCLK_SDIO0_AHB			91
#define JH7110_SYSCLK_SDIO1_AHB			92
#define JH7110_SYSCLK_SDIO0_SDCARD		93
#define JH7110_SYSCLK_SDIO1_SDCARD		94
#define JH7110_SYSCLK_USB_125M			95
#define JH7110_SYSCLK_NOC_BUS_STG_AXI		96
#define JH7110_SYSCLK_GMAC1_AHB			97
#define JH7110_SYSCLK_GMAC1_AXI			98
#define JH7110_SYSCLK_GMAC_SRC			99
#define JH7110_SYSCLK_GMAC1_GTXCLK		100
#define JH7110_SYSCLK_GMAC1_RMII_RTX		101
#define JH7110_SYSCLK_GMAC1_PTP			102
#define JH7110_SYSCLK_GMAC1_RX			103
#define JH7110_SYSCLK_GMAC1_RX_INV		104
#define JH7110_SYSCLK_GMAC1_TX			105
#define JH7110_SYSCLK_GMAC1_TX_INV		106
#define JH7110_SYSCLK_GMAC1_GTXC		107
#define JH7110_SYSCLK_GMAC0_GTXCLK		108
#define JH7110_SYSCLK_GMAC0_PTP			109
#define JH7110_SYSCLK_GMAC_PHY			110
#define JH7110_SYSCLK_GMAC0_GTXC		111
#define JH7110_SYSCLK_IOMUX_APB			112
#define JH7110_SYSCLK_MAILBOX_APB		113
#define JH7110_SYSCLK_INT_CTRL_APB		114
#define JH7110_SYSCLK_CAN0_APB			115
#define JH7110_SYSCLK_CAN0_TIMER		116
#define JH7110_SYSCLK_CAN0_CAN			117
#define JH7110_SYSCLK_CAN1_APB			118
#define JH7110_SYSCLK_CAN1_TIMER		119
#define JH7110_SYSCLK_CAN1_CAN			120
#define JH7110_SYSCLK_PWM_APB			121
#define JH7110_SYSCLK_WDT_APB			122
#define JH7110_SYSCLK_WDT_CORE			123
#define JH7110_SYSCLK_TIMER_APB			124
#define JH7110_SYSCLK_TIMER0			125
#define JH7110_SYSCLK_TIMER1			126
#define JH7110_SYSCLK_TIMER2			127
#define JH7110_SYSCLK_TIMER3			128
#define JH7110_SYSCLK_TEMP_APB			129
#define JH7110_SYSCLK_TEMP_CORE			130
#define JH7110_SYSCLK_SPI0_APB			131
#define JH7110_SYSCLK_SPI1_APB			132
#define JH7110_SYSCLK_SPI2_APB			133
#define JH7110_SYSCLK_SPI3_APB			134
#define JH7110_SYSCLK_SPI4_APB			135
#define JH7110_SYSCLK_SPI5_APB			136
#define JH7110_SYSCLK_SPI6_APB			137
#define JH7110_SYSCLK_I2C0_APB			138
#define JH7110_SYSCLK_I2C1_APB			139
#define JH7110_SYSCLK_I2C2_APB			140
#define JH7110_SYSCLK_I2C3_APB			141
#define JH7110_SYSCLK_I2C4_APB			142
#define JH7110_SYSCLK_I2C5_APB			143
#define JH7110_SYSCLK_I2C6_APB			144
#define JH7110_SYSCLK_UART0_APB			145
#define JH7110_SYSCLK_UART0_CORE		146
#define JH7110_SYSCLK_UART1_APB			147
#define JH7110_SYSCLK_UART1_CORE		148
#define JH7110_SYSCLK_UART2_APB			149
#define JH7110_SYSCLK_UART2_CORE		150
#define JH7110_SYSCLK_UART3_APB			151
#define JH7110_SYSCLK_UART3_CORE		152
#define JH7110_SYSCLK_UART4_APB			153
#define JH7110_SYSCLK_UART4_CORE		154
#define JH7110_SYSCLK_UART5_APB			155
#define JH7110_SYSCLK_UART5_CORE		156
#define JH7110_SYSCLK_PWMDAC_APB		157
#define JH7110_SYSCLK_PWMDAC_CORE		158
#define JH7110_SYSCLK_SPDIF_APB			159
#define JH7110_SYSCLK_SPDIF_CORE		160
#define JH7110_SYSCLK_I2STX0_APB		161
#define JH7110_SYSCLK_I2STX0_BCLK_MST		162
#define JH7110_SYSCLK_I2STX0_BCLK_MST_INV	163
#define JH7110_SYSCLK_I2STX0_LRCK_MST		164
#define JH7110_SYSCLK_I2STX0_BCLK		165
#define JH7110_SYSCLK_I2STX0_BCLK_INV		166
#define JH7110_SYSCLK_I2STX0_LRCK		167
#define JH7110_SYSCLK_I2STX1_APB		168
#define JH7110_SYSCLK_I2STX1_BCLK_MST		169
#define JH7110_SYSCLK_I2STX1_BCLK_MST_INV	170
#define JH7110_SYSCLK_I2STX1_LRCK_MST		171
#define JH7110_SYSCLK_I2STX1_BCLK		172
#define JH7110_SYSCLK_I2STX1_BCLK_INV		173
#define JH7110_SYSCLK_I2STX1_LRCK		174
#define JH7110_SYSCLK_I2SRX_APB			175
#define JH7110_SYSCLK_I2SRX_BCLK_MST		176
#define JH7110_SYSCLK_I2SRX_BCLK_MST_INV	177
#define JH7110_SYSCLK_I2SRX_LRCK_MST		178
#define JH7110_SYSCLK_I2SRX_BCLK		179
#define JH7110_SYSCLK_I2SRX_BCLK_INV		180
#define JH7110_SYSCLK_I2SRX_LRCK		181
#define JH7110_SYSCLK_PDM_DMIC			182
#define JH7110_SYSCLK_PDM_APB			183
#define JH7110_SYSCLK_TDM_AHB			184
#define JH7110_SYSCLK_TDM_APB			185
#define JH7110_SYSCLK_TDM_INTERNAL		186
#define JH7110_SYSCLK_TDM_TDM			187
#define JH7110_SYSCLK_TDM_TDM_INV		188
#define JH7110_SYSCLK_JTAG_CERTIFICATION_TRNG	189

#define JH7110_SYSCLK_END			190

/* AONCRG clocks */
#define JH7110_AONCLK_OSC_DIV4			0
#define JH7110_AONCLK_APB_FUNC			1
#define JH7110_AONCLK_GMAC0_AHB			2
#define JH7110_AONCLK_GMAC0_AXI			3
#define JH7110_AONCLK_GMAC0_RMII_RTX		4
#define JH7110_AONCLK_GMAC0_TX			5
#define JH7110_AONCLK_GMAC0_TX_INV		6
#define JH7110_AONCLK_GMAC0_RX			7
#define JH7110_AONCLK_GMAC0_RX_INV		8
#define JH7110_AONCLK_OTPC_APB			9
#define JH7110_AONCLK_RTC_APB			10
#define JH7110_AONCLK_RTC_INTERNAL		11
#define JH7110_AONCLK_RTC_32K			12
#define JH7110_AONCLK_RTC_CAL			13

#define JH7110_AONCLK_END			14

/* STGCRG clocks */
#define JH7110_STGCLK_HIFI4_CLK_CORE		0
#define JH7110_STGCLK_USB0_APB			1
#define JH7110_STGCLK_USB0_UTMI_APB		2
#define JH7110_STGCLK_USB0_AXI			3
#define JH7110_STGCLK_USB0_LPM			4
#define JH7110_STGCLK_USB0_STB			5
#define JH7110_STGCLK_USB0_APP_125		6
#define JH7110_STGCLK_USB0_REFCLK		7
#define JH7110_STGCLK_PCIE0_AXI_MST0		8
#define JH7110_STGCLK_PCIE0_APB			9
#define JH7110_STGCLK_PCIE0_TL			10
#define JH7110_STGCLK_PCIE1_AXI_MST0		11
#define JH7110_STGCLK_PCIE1_APB			12
#define JH7110_STGCLK_PCIE1_TL			13
#define JH7110_STGCLK_PCIE_SLV_MAIN		14
#define JH7110_STGCLK_SEC_AHB			15
#define JH7110_STGCLK_SEC_MISC_AHB		16
#define JH7110_STGCLK_GRP0_MAIN			17
#define JH7110_STGCLK_GRP0_BUS			18
#define JH7110_STGCLK_GRP0_STG			19
#define JH7110_STGCLK_GRP1_MAIN			20
#define JH7110_STGCLK_GRP1_BUS			21
#define JH7110_STGCLK_GRP1_STG			22
#define JH7110_STGCLK_GRP1_HIFI			23
#define JH7110_STGCLK_E2_RTC			24
#define JH7110_STGCLK_E2_CORE			25
#define JH7110_STGCLK_E2_DBG			26
#define JH7110_STGCLK_DMA1P_AXI			27
#define JH7110_STGCLK_DMA1P_AHB			28

#define JH7110_STGCLK_END			29

/* ISPCRG clocks */
#define JH7110_ISPCLK_DOM4_APB_FUNC		0
#define JH7110_ISPCLK_MIPI_RX0_PXL		1
#define JH7110_ISPCLK_DVP_INV			2
#define JH7110_ISPCLK_M31DPHY_CFG_IN		3
#define JH7110_ISPCLK_M31DPHY_REF_IN		4
#define JH7110_ISPCLK_M31DPHY_TX_ESC_LAN0	5
#define JH7110_ISPCLK_VIN_APB			6
#define JH7110_ISPCLK_VIN_SYS			7
#define JH7110_ISPCLK_VIN_PIXEL_IF0		8
#define JH7110_ISPCLK_VIN_PIXEL_IF1		9
#define JH7110_ISPCLK_VIN_PIXEL_IF2		10
#define JH7110_ISPCLK_VIN_PIXEL_IF3		11
#define JH7110_ISPCLK_VIN_P_AXI_WR		12
#define JH7110_ISPCLK_ISPV2_TOP_WRAPPER_C	13

#define JH7110_ISPCLK_END			14

/* VOUTCRG clocks */
#define JH7110_VOUTCLK_APB			0
#define JH7110_VOUTCLK_DC8200_PIX		1
#define JH7110_VOUTCLK_DSI_SYS			2
#define JH7110_VOUTCLK_TX_ESC			3
#define JH7110_VOUTCLK_DC8200_AXI		4
#define JH7110_VOUTCLK_DC8200_CORE		5
#define JH7110_VOUTCLK_DC8200_AHB		6
#define JH7110_VOUTCLK_DC8200_PIX0		7
#define JH7110_VOUTCLK_DC8200_PIX1		8
#define JH7110_VOUTCLK_DOM_VOUT_TOP_LCD		9
#define JH7110_VOUTCLK_DSITX_APB		10
#define JH7110_VOUTCLK_DSITX_SYS		11
#define JH7110_VOUTCLK_DSITX_DPI		12
#define JH7110_VOUTCLK_DSITX_TXESC		13
#define JH7110_VOUTCLK_MIPITX_DPHY_TXESC	14
#define JH7110_VOUTCLK_HDMI_TX_MCLK		15
#define JH7110_VOUTCLK_HDMI_TX_BCLK		16
#define JH7110_VOUTCLK_HDMI_TX_SYS		17

#define JH7110_VOUTCLK_END			18

#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7110_CRG_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive-jh7100-audio.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

#ifndef __DT_BINDINGS_CLOCK_STARFIVE_JH7100_AUDIO_H__
#define __DT_BINDINGS_CLOCK_STARFIVE_JH7100_AUDIO_H__

#define JH7100_AUDCLK_ADC_MCLK		0
#define JH7100_AUDCLK_I2S1_MCLK		1
#define JH7100_AUDCLK_I2SADC_APB	2
#define JH7100_AUDCLK_I2SADC_BCLK	3
#define JH7100_AUDCLK_I2SADC_BCLK_N	4
#define JH7100_AUDCLK_I2SADC_LRCLK	5
#define JH7100_AUDCLK_PDM_APB		6
#define JH7100_AUDCLK_PDM_MCLK		7
#define JH7100_AUDCLK_I2SVAD_APB	8
#define JH7100_AUDCLK_SPDIF		9
#define JH7100_AUDCLK_SPDIF_APB		10
#define JH7100_AUDCLK_PWMDAC_APB	11
#define JH7100_AUDCLK_DAC_MCLK		12
#define JH7100_AUDCLK_I2SDAC_APB	13
#define JH7100_AUDCLK_I2SDAC_BCLK	14
#define JH7100_AUDCLK_I2SDAC_BCLK_N	15
#define JH7100_AUDCLK_I2SDAC_LRCLK	16
#define JH7100_AUDCLK_I2S1_APB		17
#define JH7100_AUDCLK_I2S1_BCLK		18
#define JH7100_AUDCLK_I2S1_BCLK_N	19
#define JH7100_AUDCLK_I2S1_LRCLK	20
#define JH7100_AUDCLK_I2SDAC16K_APB	21
#define JH7100_AUDCLK_APB0_BUS		22
#define JH7100_AUDCLK_DMA1P_AHB		23
#define JH7100_AUDCLK_USB_APB		24
#define JH7100_AUDCLK_USB_LPM		25
#define JH7100_AUDCLK_USB_STB		26
#define JH7100_AUDCLK_APB_EN		27
#define JH7100_AUDCLK_VAD_MEM		28

#define JH7100_AUDCLK_END		29

#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7100_AUDIO_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/clock/starfive-jh7100.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2021 Ahmad Fatoum, Pengutronix
 */

#ifndef __DT_BINDINGS_CLOCK_STARFIVE_JH7100_H__
#define __DT_BINDINGS_CLOCK_STARFIVE_JH7100_H__

#define JH7100_CLK_CPUNDBUS_ROOT	0
#define JH7100_CLK_DLA_ROOT		1
#define JH7100_CLK_DSP_ROOT		2
#define JH7100_CLK_GMACUSB_ROOT		3
#define JH7100_CLK_PERH0_ROOT		4
#define JH7100_CLK_PERH1_ROOT		5
#define JH7100_CLK_VIN_ROOT		6
#define JH7100_CLK_VOUT_ROOT		7
#define JH7100_CLK_AUDIO_ROOT		8
#define JH7100_CLK_CDECHIFI4_ROOT	9
#define JH7100_CLK_CDEC_ROOT		10
#define JH7100_CLK_VOUTBUS_ROOT		11
#define JH7100_CLK_CPUNBUS_ROOT_DIV	12
#define JH7100_CLK_DSP_ROOT_DIV		13
#define JH7100_CLK_PERH0_SRC		14
#define JH7100_CLK_PERH1_SRC		15
#define JH7100_CLK_PLL0_TESTOUT		16
#define JH7100_CLK_PLL1_TESTOUT		17
#define JH7100_CLK_PLL2_TESTOUT		18
#define JH7100_CLK_PLL2_REF		19
#define JH7100_CLK_CPU_CORE		20
#define JH7100_CLK_CPU_AXI		21
#define JH7100_CLK_AHB_BUS		22
#define JH7100_CLK_APB1_BUS		23
#define JH7100_CLK_APB2_BUS		24
#define JH7100_CLK_DOM3AHB_BUS		25
#define JH7100_CLK_DOM7AHB_BUS		26
#define JH7100_CLK_U74_CORE0		27
#define JH7100_CLK_U74_CORE1		28
#define JH7100_CLK_U74_AXI		29
#define JH7100_CLK_U74RTC_TOGGLE	30
#define JH7100_CLK_SGDMA2P_AXI		31
#define JH7100_CLK_DMA2PNOC_AXI		32
#define JH7100_CLK_SGDMA2P_AHB		33
#define JH7100_CLK_DLA_BUS		34
#define JH7100_CLK_DLA_AXI		35
#define JH7100_CLK_DLANOC_AXI		36
#define JH7100_CLK_DLA_APB		37
#define JH7100_CLK_VP6_CORE		38
#define JH7100_CLK_VP6BUS_SRC		39
#define JH7100_CLK_VP6_AXI		40
#define JH7100_CLK_VCDECBUS_SRC		41
#define JH7100_CLK_VDEC_BUS		42
#define JH7100_CLK_VDEC_AXI		43
#define JH7100_CLK_VDECBRG_MAIN		44
#define JH7100_CLK_VDEC_BCLK		45
#define JH7100_CLK_VDEC_CCLK		46
#define JH7100_CLK_VDEC_APB		47
#define JH7100_CLK_JPEG_AXI		48
#define JH7100_CLK_JPEG_CCLK		49
#define JH7100_CLK_JPEG_APB		50
#define JH7100_CLK_GC300_2X		51
#define JH7100_CLK_GC300_AHB		52
#define JH7100_CLK_JPCGC300_AXIBUS	53
#define JH7100_CLK_GC300_AXI		54
#define JH7100_CLK_JPCGC300_MAIN	55
#define JH7100_CLK_VENC_BUS		56
#define JH7100_CLK_VENC_AXI		57
#define JH7100_CLK_VENCBRG_MAIN		58
#define JH7100_CLK_VENC_BCLK		59
#define JH7100_CLK_VENC_CCLK		60
#define JH7100_CLK_VENC_APB		61
#define JH7100_CLK_DDRPLL_DIV2		62
#define JH7100_CLK_DDRPLL_DIV4		63
#define JH7100_CLK_DDRPLL_DIV8		64
#define JH7100_CLK_DDROSC_DIV2		65
#define JH7100_CLK_DDRC0		66
#define JH7100_CLK_DDRC1		67
#define JH7100_CLK_DDRPHY_APB		68
#define JH7100_CLK_NOC_ROB		69
#define JH7100_CLK_NOC_COG		70
#define JH7100_CLK_NNE_AHB		71
#define JH7100_CLK_NNEBUS_SRC1		72
#define JH7100_CLK_NNE_BUS		73
#define JH7100_CLK_NNE_AXI		74
#define JH7100_CLK_NNENOC_AXI		75
#define JH7100_CLK_DLASLV_AXI		76
#define JH7100_CLK_DSPX2C_AXI		77
#define JH7100_CLK_HIFI4_SRC		78
#define JH7100_CLK_HIFI4_COREFREE	79
#define JH7100_CLK_HIFI4_CORE		80
#define JH7100_CLK_HIFI4_BUS		81
#define JH7100_CLK_HIFI4_AXI		82
#define JH7100_CLK_HIFI4NOC_AXI		83
#define JH7100_CLK_SGDMA1P_BUS		84
#define JH7100_CLK_SGDMA1P_AXI		85
#define JH7100_CLK_DMA1P_AXI		86
#define JH7100_CLK_X2C_AXI		87
#define JH7100_CLK_USB_BUS		88
#define JH7100_CLK_USB_AXI		89
#define JH7100_CLK_USBNOC_AXI		90
#define JH7100_CLK_USBPHY_ROOTDIV	91
#define JH7100_CLK_USBPHY_125M		92
#define JH7100_CLK_USBPHY_PLLDIV25M	93
#define JH7100_CLK_USBPHY_25M		94
#define JH7100_CLK_AUDIO_DIV		95
#define JH7100_CLK_AUDIO_SRC		96
#define JH7100_CLK_AUDIO_12288		97
#define JH7100_CLK_VIN_SRC		98
#define JH7100_CLK_ISP0_BUS		99
#define JH7100_CLK_ISP0_AXI		100
#define JH7100_CLK_ISP0NOC_AXI		101
#define JH7100_CLK_ISPSLV_AXI		102
#define JH7100_CLK_ISP1_BUS		103
#define JH7100_CLK_ISP1_AXI		104
#define JH7100_CLK_ISP1NOC_AXI		105
#define JH7100_CLK_VIN_BUS		106
#define JH7100_CLK_VIN_AXI		107
#define JH7100_CLK_VINNOC_AXI		108
#define JH7100_CLK_VOUT_SRC		109
#define JH7100_CLK_DISPBUS_SRC		110
#define JH7100_CLK_DISP_BUS		111
#define JH7100_CLK_DISP_AXI		112
#define JH7100_CLK_DISPNOC_AXI		113
#define JH7100_CLK_SDIO0_AHB		114
#define JH7100_CLK_SDIO0_CCLKINT	115
#define JH7100_CLK_SDIO0_CCLKINT_INV	116
#define JH7100_CLK_SDIO1_AHB		117
#define JH7100_CLK_SDIO1_CCLKINT	118
#define JH7100_CLK_SDIO1_CCLKINT_INV	119
#define JH7100_CLK_GMAC_AHB		120
#define JH7100_CLK_GMAC_ROOT_DIV	121
#define JH7100_CLK_GMAC_PTP_REF		122
#define JH7100_CLK_GMAC_GTX		123
#define JH7100_CLK_GMAC_RMII_TX		124
#define JH7100_CLK_GMAC_RMII_RX		125
#define JH7100_CLK_GMAC_TX		126
#define JH7100_CLK_GMAC_TX_INV		127
#define JH7100_CLK_GMAC_RX_PRE		128
#define JH7100_CLK_GMAC_RX_INV		129
#define JH7100_CLK_GMAC_RMII		130
#define JH7100_CLK_GMAC_TOPHYREF	131
#define JH7100_CLK_SPI2AHB_AHB		132
#define JH7100_CLK_SPI2AHB_CORE		133
#define JH7100_CLK_EZMASTER_AHB		134
#define JH7100_CLK_E24_AHB		135
#define JH7100_CLK_E24RTC_TOGGLE	136
#define JH7100_CLK_QSPI_AHB		137
#define JH7100_CLK_QSPI_APB		138
#define JH7100_CLK_QSPI_REF		139
#define JH7100_CLK_SEC_AHB		140
#define JH7100_CLK_AES			141
#define JH7100_CLK_SHA			142
#define JH7100_CLK_PKA			143
#define JH7100_CLK_TRNG_APB		144
#define JH7100_CLK_OTP_APB		145
#define JH7100_CLK_UART0_APB		146
#define JH7100_CLK_UART0_CORE		147
#define JH7100_CLK_UART1_APB		148
#define JH7100_CLK_UART1_CORE		149
#define JH7100_CLK_SPI0_APB		150
#define JH7100_CLK_SPI0_CORE		151
#define JH7100_CLK_SPI1_APB		152
#define JH7100_CLK_SPI1_CORE		153
#define JH7100_CLK_I2C0_APB		154
#define JH7100_CLK_I2C0_CORE		155
#define JH7100_CLK_I2C1_APB		156
#define JH7100_CLK_I2C1_CORE		157
#define JH7100_CLK_GPIO_APB		158
#define JH7100_CLK_UART2_APB		159
#define JH7100_CLK_UART2_CORE		160
#define JH7100_CLK_UART3_APB		161
#define JH7100_CLK_UART3_CORE		162
#define JH7100_CLK_SPI2_APB		163
#define JH7100_CLK_SPI2_CORE		164
#define JH7100_CLK_SPI3_APB		165
#define JH7100_CLK_SPI3_CORE		166
#define JH7100_CLK_I2C2_APB		167
#define JH7100_CLK_I2C2_CORE		168
#define JH7100_CLK_I2C3_APB		169
#define JH7100_CLK_I2C3_CORE		170
#define JH7100_CLK_WDTIMER_APB		171
#define JH7100_CLK_WDT_CORE		172
#define JH7100_CLK_TIMER0_CORE		173
#define JH7100_CLK_TIMER1_CORE		174
#define JH7100_CLK_TIMER2_CORE		175
#define JH7100_CLK_TIMER3_CORE		176
#define JH7100_CLK_TIMER4_CORE		177
#define JH7100_CLK_TIMER5_CORE		178
#define JH7100_CLK_TIMER6_CORE		179
#define JH7100_CLK_VP6INTC_APB		180
#define JH7100_CLK_PWM_APB		181
#define JH7100_CLK_MSI_APB		182
#define JH7100_CLK_TEMP_APB		183
#define JH7100_CLK_TEMP_SENSE		184
#define JH7100_CLK_SYSERR_APB		185

#define JH7100_CLK_PLL0_OUT		186
#define JH7100_CLK_PLL1_OUT		187
#define JH7100_CLK_PLL2_OUT		188

#define JH7100_CLK_END			189

#endif /* __DT_BINDINGS_CLOCK_STARFIVE_JH7100_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/pinctrl/pinctrl-starfive-jh7100.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2021 Emil Renner Berthing <kernel@esmil.dk>
 */

#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__
#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__

#define PAD_GPIO_OFFSET		0
#define PAD_FUNC_SHARE_OFFSET	64
#define PAD_GPIO(x)		(PAD_GPIO_OFFSET + (x))
#define PAD_FUNC_SHARE(x)	(PAD_FUNC_SHARE_OFFSET + (x))

/*
 * GPIOMUX bits:
 *  | 31 - 24 | 23 - 16 | 15 - 8 |     7    |     6    |  5 - 0  |
 *  |  dout   |  doen   |  din   | dout rev | doen rev | gpio nr |
 *
 * dout:     output signal
 * doen:     output enable signal
 * din:      optional input signal, 0xff = none
 * dout rev: output signal reverse bit
 * doen rev: output enable signal reverse bit
 * gpio nr:  gpio number, 0 - 63
 */
#define GPIOMUX(n, dout, doen, din) ( \
		(((dout) & 0x80000000) >> (31 - 7)) | (((dout) & 0xff) << 24) | \
		(((doen) & 0x80000000) >> (31 - 6)) | (((doen) & 0xff) << 16) | \
		(((din) & 0xff) << 8) | \
		((n) & 0x3f))

#define GPO_REVERSE				0x80000000

#define GPO_LOW					0
#define GPO_HIGH				1
#define GPO_ENABLE				0
#define GPO_DISABLE				1
#define GPO_CLK_GMAC_PAPHYREF			2
#define GPO_JTAG_TDO				3
#define GPO_JTAG_TDO_OEN			4
#define GPO_DMIC_CLK_OUT			5
#define GPO_DSP_JTDOEN_PAD			6
#define GPO_DSP_JTDO_PAD			7
#define GPO_I2C0_PAD_SCK_OE			8
#define GPO_I2C0_PAD_SCK_OEN			(GPO_I2C0_PAD_SCK_OE | GPO_REVERSE)
#define GPO_I2C0_PAD_SDA_OE			9
#define GPO_I2C0_PAD_SDA_OEN			(GPO_I2C0_PAD_SDA_OE | GPO_REVERSE)
#define GPO_I2C1_PAD_SCK_OE			10
#define GPO_I2C1_PAD_SCK_OEN			(GPO_I2C1_PAD_SCK_OE | GPO_REVERSE)
#define GPO_I2C1_PAD_SDA_OE			11
#define GPO_I2C1_PAD_SDA_OEN			(GPO_I2C1_PAD_SDA_OE | GPO_REVERSE)
#define GPO_I2C2_PAD_SCK_OE			12
#define GPO_I2C2_PAD_SCK_OEN			(GPO_I2C2_PAD_SCK_OE | GPO_REVERSE)
#define GPO_I2C2_PAD_SDA_OE			13
#define GPO_I2C2_PAD_SDA_OEN			(GPO_I2C2_PAD_SDA_OE | GPO_REVERSE)
#define GPO_I2C3_PAD_SCK_OE			14
#define GPO_I2C3_PAD_SCK_OEN			(GPO_I2C3_PAD_SCK_OE | GPO_REVERSE)
#define GPO_I2C3_PAD_SDA_OE			15
#define GPO_I2C3_PAD_SDA_OEN			(GPO_I2C3_PAD_SDA_OE | GPO_REVERSE)
#define GPO_I2SRX_BCLK_OUT			16
#define GPO_I2SRX_BCLK_OUT_OEN			17
#define GPO_I2SRX_LRCK_OUT			18
#define GPO_I2SRX_LRCK_OUT_OEN			19
#define GPO_I2SRX_MCLK_OUT			20
#define GPO_I2STX_BCLK_OUT			21
#define GPO_I2STX_BCLK_OUT_OEN			22
#define GPO_I2STX_LRCK_OUT			23
#define GPO_I2STX_LRCK_OUT_OEN			24
#define GPO_I2STX_MCLK_OUT			25
#define GPO_I2STX_SDOUT0			26
#define GPO_I2STX_SDOUT1			27
#define GPO_LCD_PAD_CSM_N			28
#define GPO_PWM_PAD_OE_N_BIT0			29
#define GPO_PWM_PAD_OE_N_BIT1			30
#define GPO_PWM_PAD_OE_N_BIT2			31
#define GPO_PWM_PAD_OE_N_BIT3			32
#define GPO_PWM_PAD_OE_N_BIT4			33
#define GPO_PWM_PAD_OE_N_BIT5			34
#define GPO_PWM_PAD_OE_N_BIT6			35
#define GPO_PWM_PAD_OE_N_BIT7			36
#define GPO_PWM_PAD_OUT_BIT0			37
#define GPO_PWM_PAD_OUT_BIT1			38
#define GPO_PWM_PAD_OUT_BIT2			39
#define GPO_PWM_PAD_OUT_BIT3			40
#define GPO_PWM_PAD_OUT_BIT4			41
#define GPO_PWM_PAD_OUT_BIT5			42
#define GPO_PWM_PAD_OUT_BIT6			43
#define GPO_PWM_PAD_OUT_BIT7			44
#define GPO_PWMDAC_LEFT_OUT			45
#define GPO_PWMDAC_RIGHT_OUT			46
#define GPO_QSPI_CSN1_OUT			47
#define GPO_QSPI_CSN2_OUT			48
#define GPO_QSPI_CSN3_OUT			49
#define GPO_REGISTER23_SCFG_CMSENSOR_RST0	50
#define GPO_REGISTER23_SCFG_CMSENSOR_RST1	51
#define GPO_REGISTER32_SCFG_GMAC_PHY_RSTN	52
#define GPO_SDIO0_PAD_CARD_POWER_EN		53
#define GPO_SDIO0_PAD_CCLK_OUT			54
#define GPO_SDIO0_PAD_CCMD_OE			55
#define GPO_SDIO0_PAD_CCMD_OEN			(GPO_SDIO0_PAD_CCMD_OE | GPO_REVERSE)
#define GPO_SDIO0_PAD_CCMD_OUT			56
#define GPO_SDIO0_PAD_CDATA_OE_BIT0		57
#define GPO_SDIO0_PAD_CDATA_OEN_BIT0		(GPO_SDIO0_PAD_CDATA_OE_BIT0 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT1		58
#define GPO_SDIO0_PAD_CDATA_OEN_BIT1		(GPO_SDIO0_PAD_CDATA_OE_BIT1 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT2		59
#define GPO_SDIO0_PAD_CDATA_OEN_BIT2		(GPO_SDIO0_PAD_CDATA_OE_BIT2 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT3		60
#define GPO_SDIO0_PAD_CDATA_OEN_BIT3		(GPO_SDIO0_PAD_CDATA_OE_BIT3 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT4		61
#define GPO_SDIO0_PAD_CDATA_OEN_BIT4		(GPO_SDIO0_PAD_CDATA_OE_BIT4 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT5		62
#define GPO_SDIO0_PAD_CDATA_OEN_BIT5		(GPO_SDIO0_PAD_CDATA_OE_BIT5 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT6		63
#define GPO_SDIO0_PAD_CDATA_OEN_BIT6		(GPO_SDIO0_PAD_CDATA_OE_BIT6 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OE_BIT7		64
#define GPO_SDIO0_PAD_CDATA_OEN_BIT7		(GPO_SDIO0_PAD_CDATA_OE_BIT7 | GPO_REVERSE)
#define GPO_SDIO0_PAD_CDATA_OUT_BIT0		65
#define GPO_SDIO0_PAD_CDATA_OUT_BIT1		66
#define GPO_SDIO0_PAD_CDATA_OUT_BIT2		67
#define GPO_SDIO0_PAD_CDATA_OUT_BIT3		68
#define GPO_SDIO0_PAD_CDATA_OUT_BIT4		69
#define GPO_SDIO0_PAD_CDATA_OUT_BIT5		70
#define GPO_SDIO0_PAD_CDATA_OUT_BIT6		71
#define GPO_SDIO0_PAD_CDATA_OUT_BIT7		72
#define GPO_SDIO0_PAD_RST_N			73
#define GPO_SDIO1_PAD_CARD_POWER_EN		74
#define GPO_SDIO1_PAD_CCLK_OUT			75
#define GPO_SDIO1_PAD_CCMD_OE			76
#define GPO_SDIO1_PAD_CCMD_OEN			(GPO_SDIO1_PAD_CCMD_OE | GPO_REVERSE)
#define GPO_SDIO1_PAD_CCMD_OUT			77
#define GPO_SDIO1_PAD_CDATA_OE_BIT0		78
#define GPO_SDIO1_PAD_CDATA_OEN_BIT0		(GPO_SDIO1_PAD_CDATA_OE_BIT0 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT1		79
#define GPO_SDIO1_PAD_CDATA_OEN_BIT1		(GPO_SDIO1_PAD_CDATA_OE_BIT1 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT2		80
#define GPO_SDIO1_PAD_CDATA_OEN_BIT2		(GPO_SDIO1_PAD_CDATA_OE_BIT2 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT3		81
#define GPO_SDIO1_PAD_CDATA_OEN_BIT3		(GPO_SDIO1_PAD_CDATA_OE_BIT3 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT4		82
#define GPO_SDIO1_PAD_CDATA_OEN_BIT4		(GPO_SDIO1_PAD_CDATA_OE_BIT4 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT5		83
#define GPO_SDIO1_PAD_CDATA_OEN_BIT5		(GPO_SDIO1_PAD_CDATA_OE_BIT5 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT6		84
#define GPO_SDIO1_PAD_CDATA_OEN_BIT6		(GPO_SDIO1_PAD_CDATA_OE_BIT6 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OE_BIT7		85
#define GPO_SDIO1_PAD_CDATA_OEN_BIT7		(GPO_SDIO1_PAD_CDATA_OE_BIT7 | GPO_REVERSE)
#define GPO_SDIO1_PAD_CDATA_OUT_BIT0		86
#define GPO_SDIO1_PAD_CDATA_OUT_BIT1		87
#define GPO_SDIO1_PAD_CDATA_OUT_BIT2		88
#define GPO_SDIO1_PAD_CDATA_OUT_BIT3		89
#define GPO_SDIO1_PAD_CDATA_OUT_BIT4		90
#define GPO_SDIO1_PAD_CDATA_OUT_BIT5		91
#define GPO_SDIO1_PAD_CDATA_OUT_BIT6		92
#define GPO_SDIO1_PAD_CDATA_OUT_BIT7		93
#define GPO_SDIO1_PAD_RST_N			94
#define GPO_SPDIF_TX_SDOUT			95
#define GPO_SPDIF_TX_SDOUT_OEN			96
#define GPO_SPI0_PAD_OE_N			97
#define GPO_SPI0_PAD_SCK_OUT			98
#define GPO_SPI0_PAD_SS_0_N			99
#define GPO_SPI0_PAD_SS_1_N			100
#define GPO_SPI0_PAD_TXD			101
#define GPO_SPI1_PAD_OE_N			102
#define GPO_SPI1_PAD_SCK_OUT			103
#define GPO_SPI1_PAD_SS_0_N			104
#define GPO_SPI1_PAD_SS_1_N			105
#define GPO_SPI1_PAD_TXD			106
#define GPO_SPI2_PAD_OE_N			107
#define GPO_SPI2_PAD_SCK_OUT			108
#define GPO_SPI2_PAD_SS_0_N			109
#define GPO_SPI2_PAD_SS_1_N			110
#define GPO_SPI2_PAD_TXD			111
#define GPO_SPI2AHB_PAD_OE_N_BIT0		112
#define GPO_SPI2AHB_PAD_OE_N_BIT1		113
#define GPO_SPI2AHB_PAD_OE_N_BIT2		114
#define GPO_SPI2AHB_PAD_OE_N_BIT3		115
#define GPO_SPI2AHB_PAD_TXD_BIT0		116
#define GPO_SPI2AHB_PAD_TXD_BIT1		117
#define GPO_SPI2AHB_PAD_TXD_BIT2		118
#define GPO_SPI2AHB_PAD_TXD_BIT3		119
#define GPO_SPI3_PAD_OE_N			120
#define GPO_SPI3_PAD_SCK_OUT			121
#define GPO_SPI3_PAD_SS_0_N			122
#define GPO_SPI3_PAD_SS_1_N			123
#define GPO_SPI3_PAD_TXD			124
#define GPO_UART0_PAD_DTRN			125
#define GPO_UART0_PAD_RTSN			126
#define GPO_UART0_PAD_SOUT			127
#define GPO_UART1_PAD_SOUT			128
#define GPO_UART2_PAD_DTR_N			129
#define GPO_UART2_PAD_RTS_N			130
#define GPO_UART2_PAD_SOUT			131
#define GPO_UART3_PAD_SOUT			132
#define GPO_USB_DRV_BUS				133

#define GPI_CPU_JTAG_TCK			0
#define GPI_CPU_JTAG_TDI			1
#define GPI_CPU_JTAG_TMS			2
#define GPI_CPU_JTAG_TRST			3
#define GPI_DMIC_SDIN_BIT0			4
#define GPI_DMIC_SDIN_BIT1			5
#define GPI_DSP_JTCK_PAD			6
#define GPI_DSP_JTDI_PAD			7
#define GPI_DSP_JTMS_PAD			8
#define GPI_DSP_TRST_PAD			9
#define GPI_I2C0_PAD_SCK_IN			10
#define GPI_I2C0_PAD_SDA_IN			11
#define GPI_I2C1_PAD_SCK_IN			12
#define GPI_I2C1_PAD_SDA_IN			13
#define GPI_I2C2_PAD_SCK_IN			14
#define GPI_I2C2_PAD_SDA_IN			15
#define GPI_I2C3_PAD_SCK_IN			16
#define GPI_I2C3_PAD_SDA_IN			17
#define GPI_I2SRX_BCLK_IN			18
#define GPI_I2SRX_LRCK_IN			19
#define GPI_I2SRX_SDIN_BIT0			20
#define GPI_I2SRX_SDIN_BIT1			21
#define GPI_I2SRX_SDIN_BIT2			22
#define GPI_I2STX_BCLK_IN			23
#define GPI_I2STX_LRCK_IN			24
#define GPI_SDIO0_PAD_CARD_DETECT_N		25
#define GPI_SDIO0_PAD_CARD_WRITE_PRT		26
#define GPI_SDIO0_PAD_CCMD_IN			27
#define GPI_SDIO0_PAD_CDATA_IN_BIT0		28
#define GPI_SDIO0_PAD_CDATA_IN_BIT1		29
#define GPI_SDIO0_PAD_CDATA_IN_BIT2		30
#define GPI_SDIO0_PAD_CDATA_IN_BIT3		31
#define GPI_SDIO0_PAD_CDATA_IN_BIT4		32
#define GPI_SDIO0_PAD_CDATA_IN_BIT5		33
#define GPI_SDIO0_PAD_CDATA_IN_BIT6		34
#define GPI_SDIO0_PAD_CDATA_IN_BIT7		35
#define GPI_SDIO1_PAD_CARD_DETECT_N		36
#define GPI_SDIO1_PAD_CARD_WRITE_PRT		37
#define GPI_SDIO1_PAD_CCMD_IN			38
#define GPI_SDIO1_PAD_CDATA_IN_BIT0		39
#define GPI_SDIO1_PAD_CDATA_IN_BIT1		40
#define GPI_SDIO1_PAD_CDATA_IN_BIT2		41
#define GPI_SDIO1_PAD_CDATA_IN_BIT3		42
#define GPI_SDIO1_PAD_CDATA_IN_BIT4		43
#define GPI_SDIO1_PAD_CDATA_IN_BIT5		44
#define GPI_SDIO1_PAD_CDATA_IN_BIT6		45
#define GPI_SDIO1_PAD_CDATA_IN_BIT7		46
#define GPI_SPDIF_RX_SDIN			47
#define GPI_SPI0_PAD_RXD			48
#define GPI_SPI0_PAD_SS_IN_N			49
#define GPI_SPI1_PAD_RXD			50
#define GPI_SPI1_PAD_SS_IN_N			51
#define GPI_SPI2_PAD_RXD			52
#define GPI_SPI2_PAD_SS_IN_N			53
#define GPI_SPI2AHB_PAD_RXD_BIT0		54
#define GPI_SPI2AHB_PAD_RXD_BIT1		55
#define GPI_SPI2AHB_PAD_RXD_BIT2		56
#define GPI_SPI2AHB_PAD_RXD_BIT3		57
#define GPI_SPI2AHB_PAD_SS_N			58
#define GPI_SPI2AHB_SLV_SCLKIN			59
#define GPI_SPI3_PAD_RXD			60
#define GPI_SPI3_PAD_SS_IN_N			61
#define GPI_UART0_PAD_CTSN			62
#define GPI_UART0_PAD_DCDN			63
#define GPI_UART0_PAD_DSRN			64
#define GPI_UART0_PAD_RIN			65
#define GPI_UART0_PAD_SIN			66
#define GPI_UART1_PAD_SIN			67
#define GPI_UART2_PAD_CTS_N			68
#define GPI_UART2_PAD_DCD_N			69
#define GPI_UART2_PAD_DSR_N			70
#define GPI_UART2_PAD_RI_N			71
#define GPI_UART2_PAD_SIN			72
#define GPI_UART3_PAD_SIN			73
#define GPI_USB_OVER_CURRENT			74

#define GPI_NONE				0xff

#endif /* __DT_BINDINGS_PINCTRL_STARFIVE_JH7100_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/pinctrl/starfive,jh7110-pinctrl.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 */

#ifndef __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__
#define __DT_BINDINGS_PINCTRL_STARFIVE_JH7110_H__

/* sys_iomux pins */
#define	PAD_GPIO0		0
#define	PAD_GPIO1		1
#define	PAD_GPIO2		2
#define	PAD_GPIO3		3
#define	PAD_GPIO4		4
#define	PAD_GPIO5		5
#define	PAD_GPIO6		6
#define	PAD_GPIO7		7
#define	PAD_GPIO8		8
#define	PAD_GPIO9		9
#define	PAD_GPIO10		10
#define	PAD_GPIO11		11
#define	PAD_GPIO12		12
#define	PAD_GPIO13		13
#define	PAD_GPIO14		14
#define	PAD_GPIO15		15
#define	PAD_GPIO16		16
#define	PAD_GPIO17		17
#define	PAD_GPIO18		18
#define	PAD_GPIO19		19
#define	PAD_GPIO20		20
#define	PAD_GPIO21		21
#define	PAD_GPIO22		22
#define	PAD_GPIO23		23
#define	PAD_GPIO24		24
#define	PAD_GPIO25		25
#define	PAD_GPIO26		26
#define	PAD_GPIO27		27
#define	PAD_GPIO28		28
#define	PAD_GPIO29		29
#define	PAD_GPIO30		30
#define	PAD_GPIO31		31
#define	PAD_GPIO32		32
#define	PAD_GPIO33		33
#define	PAD_GPIO34		34
#define	PAD_GPIO35		35
#define	PAD_GPIO36		36
#define	PAD_GPIO37		37
#define	PAD_GPIO38		38
#define	PAD_GPIO39		39
#define	PAD_GPIO40		40
#define	PAD_GPIO41		41
#define	PAD_GPIO42		42
#define	PAD_GPIO43		43
#define	PAD_GPIO44		44
#define	PAD_GPIO45		45
#define	PAD_GPIO46		46
#define	PAD_GPIO47		47
#define	PAD_GPIO48		48
#define	PAD_GPIO49		49
#define	PAD_GPIO50		50
#define	PAD_GPIO51		51
#define	PAD_GPIO52		52
#define	PAD_GPIO53		53
#define	PAD_GPIO54		54
#define	PAD_GPIO55		55
#define	PAD_GPIO56		56
#define	PAD_GPIO57		57
#define	PAD_GPIO58		58
#define	PAD_GPIO59		59
#define	PAD_GPIO60		60
#define	PAD_GPIO61		61
#define	PAD_GPIO62		62
#define	PAD_GPIO63		63
#define	PAD_SD0_CLK		64
#define	PAD_SD0_CMD		65
#define	PAD_SD0_DATA0		66
#define	PAD_SD0_DATA1		67
#define	PAD_SD0_DATA2		68
#define	PAD_SD0_DATA3		69
#define	PAD_SD0_DATA4		70
#define	PAD_SD0_DATA5		71
#define	PAD_SD0_DATA6		72
#define	PAD_SD0_DATA7		73
#define	PAD_SD0_STRB		74
#define	PAD_GMAC1_MDC		75
#define	PAD_GMAC1_MDIO		76
#define	PAD_GMAC1_RXD0		77
#define	PAD_GMAC1_RXD1		78
#define	PAD_GMAC1_RXD2		79
#define	PAD_GMAC1_RXD3		80
#define	PAD_GMAC1_RXDV		81
#define	PAD_GMAC1_RXC		82
#define	PAD_GMAC1_TXD0		83
#define	PAD_GMAC1_TXD1		84
#define	PAD_GMAC1_TXD2		85
#define	PAD_GMAC1_TXD3		86
#define	PAD_GMAC1_TXEN		87
#define	PAD_GMAC1_TXC		88
#define	PAD_QSPI_SCLK		89
#define	PAD_QSPI_CS0		90
#define	PAD_QSPI_DATA0		91
#define	PAD_QSPI_DATA1		92
#define	PAD_QSPI_DATA2		93
#define	PAD_QSPI_DATA3		94

/* aon_iomux pins */
#define	PAD_TESTEN		0
#define	PAD_RGPIO0		1
#define	PAD_RGPIO1		2
#define	PAD_RGPIO2		3
#define	PAD_RGPIO3		4
#define	PAD_RSTN		5
#define	PAD_GMAC0_MDC		6
#define	PAD_GMAC0_MDIO		7
#define	PAD_GMAC0_RXD0		8
#define	PAD_GMAC0_RXD1		9
#define	PAD_GMAC0_RXD2		10
#define	PAD_GMAC0_RXD3		11
#define	PAD_GMAC0_RXDV		12
#define	PAD_GMAC0_RXC		13
#define	PAD_GMAC0_TXD0		14
#define	PAD_GMAC0_TXD1		15
#define	PAD_GMAC0_TXD2		16
#define	PAD_GMAC0_TXD3		17
#define	PAD_GMAC0_TXEN		18
#define	PAD_GMAC0_TXC		19

#define GPOUT_LOW		0
#define GPOUT_HIGH		1

#define GPOEN_ENABLE		0
#define GPOEN_DISABLE		1

#define GPI_NONE		255

#endif

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/power/starfive,jh7110-pmu.h
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) */
/*
 * Copyright (C) 2022-2023 StarFive Technology Co., Ltd.
 * Author: Walker Chen <walker.chen@starfivetech.com>
 */
#ifndef __DT_BINDINGS_POWER_JH7110_POWER_H__
#define __DT_BINDINGS_POWER_JH7110_POWER_H__

#define JH7110_PD_SYSTOP	0
#define JH7110_PD_CPU		1
#define JH7110_PD_GPUA		2
#define JH7110_PD_VDEC		3
#define JH7110_PD_VOUT		4
#define JH7110_PD_ISP		5
#define JH7110_PD_VENC		6

/* AON Power Domain */
#define JH7110_AON_PD_DPHY_TX	0
#define JH7110_AON_PD_DPHY_RX	1

#endif

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive,jh7110-crg.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
 * Copyright (C) 2022 StarFive Technology Co., Ltd.
 */

#ifndef __DT_BINDINGS_RESET_STARFIVE_JH7110_CRG_H__
#define __DT_BINDINGS_RESET_STARFIVE_JH7110_CRG_H__

/* SYSCRG resets */
#define JH7110_SYSRST_JTAG_APB			0
#define JH7110_SYSRST_SYSCON_APB		1
#define JH7110_SYSRST_IOMUX_APB			2
#define JH7110_SYSRST_BUS			3
#define JH7110_SYSRST_DEBUG			4
#define JH7110_SYSRST_CORE0			5
#define JH7110_SYSRST_CORE1			6
#define JH7110_SYSRST_CORE2			7
#define JH7110_SYSRST_CORE3			8
#define JH7110_SYSRST_CORE4			9
#define JH7110_SYSRST_CORE0_ST			10
#define JH7110_SYSRST_CORE1_ST			11
#define JH7110_SYSRST_CORE2_ST			12
#define JH7110_SYSRST_CORE3_ST			13
#define JH7110_SYSRST_CORE4_ST			14
#define JH7110_SYSRST_TRACE0			15
#define JH7110_SYSRST_TRACE1			16
#define JH7110_SYSRST_TRACE2			17
#define JH7110_SYSRST_TRACE3			18
#define JH7110_SYSRST_TRACE4			19
#define JH7110_SYSRST_TRACE_COM			20
#define JH7110_SYSRST_GPU_APB			21
#define JH7110_SYSRST_GPU_DOMA			22
#define JH7110_SYSRST_NOC_BUS_APB		23
#define JH7110_SYSRST_NOC_BUS_AXICFG0_AXI	24
#define JH7110_SYSRST_NOC_BUS_CPU_AXI		25
#define JH7110_SYSRST_NOC_BUS_DISP_AXI		26
#define JH7110_SYSRST_NOC_BUS_GPU_AXI		27
#define JH7110_SYSRST_NOC_BUS_ISP_AXI		28
#define JH7110_SYSRST_NOC_BUS_DDRC		29
#define JH7110_SYSRST_NOC_BUS_STG_AXI		30
#define JH7110_SYSRST_NOC_BUS_VDEC_AXI		31

#define JH7110_SYSRST_NOC_BUS_VENC_AXI		32
#define JH7110_SYSRST_AXI_CFG1_AHB		33
#define JH7110_SYSRST_AXI_CFG1_MAIN		34
#define JH7110_SYSRST_AXI_CFG0_MAIN		35
#define JH7110_SYSRST_AXI_CFG0_MAIN_DIV		36
#define JH7110_SYSRST_AXI_CFG0_HIFI4		37
#define JH7110_SYSRST_DDR_AXI			38
#define JH7110_SYSRST_DDR_OSC			39
#define JH7110_SYSRST_DDR_APB			40
#define JH7110_SYSRST_ISP_TOP			41
#define JH7110_SYSRST_ISP_TOP_AXI		42
#define JH7110_SYSRST_VOUT_TOP_SRC		43
#define JH7110_SYSRST_CODAJ12_AXI		44
#define JH7110_SYSRST_CODAJ12_CORE		45
#define JH7110_SYSRST_CODAJ12_APB		46
#define JH7110_SYSRST_WAVE511_AXI		47
#define JH7110_SYSRST_WAVE511_BPU		48
#define JH7110_SYSRST_WAVE511_VCE		49
#define JH7110_SYSRST_WAVE511_APB		50
#define JH7110_SYSRST_VDEC_JPG			51
#define JH7110_SYSRST_VDEC_MAIN			52
#define JH7110_SYSRST_AXIMEM0_AXI		53
#define JH7110_SYSRST_WAVE420L_AXI		54
#define JH7110_SYSRST_WAVE420L_BPU		55
#define JH7110_SYSRST_WAVE420L_VCE		56
#define JH7110_SYSRST_WAVE420L_APB		57
#define JH7110_SYSRST_AXIMEM1_AXI		58
#define JH7110_SYSRST_AXIMEM2_AXI		59
#define JH7110_SYSRST_INTMEM			60
#define JH7110_SYSRST_QSPI_AHB			61
#define JH7110_SYSRST_QSPI_APB			62
#define JH7110_SYSRST_QSPI_REF			63

#define JH7110_SYSRST_SDIO0_AHB			64
#define JH7110_SYSRST_SDIO1_AHB			65
#define JH7110_SYSRST_GMAC1_AXI			66
#define JH7110_SYSRST_GMAC1_AHB			67
#define JH7110_SYSRST_MAILBOX_APB		68
#define JH7110_SYSRST_SPI0_APB			69
#define JH7110_SYSRST_SPI1_APB			70
#define JH7110_SYSRST_SPI2_APB			71
#define JH7110_SYSRST_SPI3_APB			72
#define JH7110_SYSRST_SPI4_APB			73
#define JH7110_SYSRST_SPI5_APB			74
#define JH7110_SYSRST_SPI6_APB			75
#define JH7110_SYSRST_I2C0_APB			76
#define JH7110_SYSRST_I2C1_APB			77
#define JH7110_SYSRST_I2C2_APB			78
#define JH7110_SYSRST_I2C3_APB			79
#define JH7110_SYSRST_I2C4_APB			80
#define JH7110_SYSRST_I2C5_APB			81
#define JH7110_SYSRST_I2C6_APB			82
#define JH7110_SYSRST_UART0_APB			83
#define JH7110_SYSRST_UART0_CORE		84
#define JH7110_SYSRST_UART1_APB			85
#define JH7110_SYSRST_UART1_CORE		86
#define JH7110_SYSRST_UART2_APB			87
#define JH7110_SYSRST_UART2_CORE		88
#define JH7110_SYSRST_UART3_APB			89
#define JH7110_SYSRST_UART3_CORE		90
#define JH7110_SYSRST_UART4_APB			91
#define JH7110_SYSRST_UART4_CORE		92
#define JH7110_SYSRST_UART5_APB			93
#define JH7110_SYSRST_UART5_CORE		94
#define JH7110_SYSRST_SPDIF_APB			95

#define JH7110_SYSRST_PWMDAC_APB		96
#define JH7110_SYSRST_PDM_DMIC			97
#define JH7110_SYSRST_PDM_APB			98
#define JH7110_SYSRST_I2SRX_APB			99
#define JH7110_SYSRST_I2SRX_BCLK		100
#define JH7110_SYSRST_I2STX0_APB		101
#define JH7110_SYSRST_I2STX0_BCLK		102
#define JH7110_SYSRST_I2STX1_APB		103
#define JH7110_SYSRST_I2STX1_BCLK		104
#define JH7110_SYSRST_TDM_AHB			105
#define JH7110_SYSRST_TDM_CORE			106
#define JH7110_SYSRST_TDM_APB			107
#define JH7110_SYSRST_PWM_APB			108
#define JH7110_SYSRST_WDT_APB			109
#define JH7110_SYSRST_WDT_CORE			110
#define JH7110_SYSRST_CAN0_APB			111
#define JH7110_SYSRST_CAN0_CORE			112
#define JH7110_SYSRST_CAN0_TIMER		113
#define JH7110_SYSRST_CAN1_APB			114
#define JH7110_SYSRST_CAN1_CORE			115
#define JH7110_SYSRST_CAN1_TIMER		116
#define JH7110_SYSRST_TIMER_APB			117
#define JH7110_SYSRST_TIMER0			118
#define JH7110_SYSRST_TIMER1			119
#define JH7110_SYSRST_TIMER2			120
#define JH7110_SYSRST_TIMER3			121
#define JH7110_SYSRST_INT_CTRL_APB		122
#define JH7110_SYSRST_TEMP_APB			123
#define JH7110_SYSRST_TEMP_CORE			124
#define JH7110_SYSRST_JTAG_CERTIFICATION	125

#define JH7110_SYSRST_END			126

/* AONCRG resets */
#define JH7110_AONRST_GMAC0_AXI			0
#define JH7110_AONRST_GMAC0_AHB			1
#define JH7110_AONRST_IOMUX			2
#define JH7110_AONRST_PMU_APB			3
#define JH7110_AONRST_PMU_WKUP			4
#define JH7110_AONRST_RTC_APB			5
#define JH7110_AONRST_RTC_CAL			6
#define JH7110_AONRST_RTC_32K			7

#define JH7110_AONRST_END			8

/* STGCRG resets */
#define JH7110_STGRST_SYSCON			0
#define JH7110_STGRST_HIFI4_CORE		1
#define JH7110_STGRST_HIFI4_AXI			2
#define JH7110_STGRST_SEC_AHB			3
#define JH7110_STGRST_E24_CORE			4
#define JH7110_STGRST_DMA1P_AXI			5
#define JH7110_STGRST_DMA1P_AHB			6
#define JH7110_STGRST_USB0_AXI			7
#define JH7110_STGRST_USB0_APB			8
#define JH7110_STGRST_USB0_UTMI_APB		9
#define JH7110_STGRST_USB0_PWRUP		10
#define JH7110_STGRST_PCIE0_AXI_MST0		11
#define JH7110_STGRST_PCIE0_AXI_SLV0		12
#define JH7110_STGRST_PCIE0_AXI_SLV		13
#define JH7110_STGRST_PCIE0_BRG			14
#define JH7110_STGRST_PCIE0_CORE		15
#define JH7110_STGRST_PCIE0_APB			16
#define JH7110_STGRST_PCIE1_AXI_MST0		17
#define JH7110_STGRST_PCIE1_AXI_SLV0		18
#define JH7110_STGRST_PCIE1_AXI_SLV		19
#define JH7110_STGRST_PCIE1_BRG			20
#define JH7110_STGRST_PCIE1_CORE		21
#define JH7110_STGRST_PCIE1_APB			22

#define JH7110_STGRST_END			23

/* ISPCRG resets */
#define JH7110_ISPRST_ISPV2_TOP_WRAPPER_P	0
#define JH7110_ISPRST_ISPV2_TOP_WRAPPER_C	1
#define JH7110_ISPRST_M31DPHY_HW		2
#define JH7110_ISPRST_M31DPHY_B09_AON		3
#define JH7110_ISPRST_VIN_APB			4
#define JH7110_ISPRST_VIN_PIXEL_IF0		5
#define JH7110_ISPRST_VIN_PIXEL_IF1		6
#define JH7110_ISPRST_VIN_PIXEL_IF2		7
#define JH7110_ISPRST_VIN_PIXEL_IF3		8
#define JH7110_ISPRST_VIN_SYS			9
#define JH7110_ISPRST_VIN_P_AXI_RD		10
#define JH7110_ISPRST_VIN_P_AXI_WR		11

#define JH7110_ISPRST_END			12

/* VOUTCRG resets */
#define JH7110_VOUTRST_DC8200_AXI		0
#define JH7110_VOUTRST_DC8200_AHB		1
#define JH7110_VOUTRST_DC8200_CORE		2
#define JH7110_VOUTRST_DSITX_DPI		3
#define JH7110_VOUTRST_DSITX_APB		4
#define JH7110_VOUTRST_DSITX_RXESC		5
#define JH7110_VOUTRST_DSITX_SYS		6
#define JH7110_VOUTRST_DSITX_TXBYTEHS		7
#define JH7110_VOUTRST_DSITX_TXESC		8
#define JH7110_VOUTRST_HDMI_TX_HDMI		9
#define JH7110_VOUTRST_MIPITX_DPHY_SYS		10
#define JH7110_VOUTRST_MIPITX_DPHY_TXBYTEHS	11

#define JH7110_VOUTRST_END			12

#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7110_CRG_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7100-audio.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2021 Emil Renner Berthing
 */

#ifndef __DT_BINDINGS_RESET_STARFIVE_JH7100_AUDIO_H__
#define __DT_BINDINGS_RESET_STARFIVE_JH7100_AUDIO_H__

#define JH7100_AUDRSTN_APB_BUS		0
#define JH7100_AUDRSTN_I2SADC_APB	1
#define JH7100_AUDRSTN_I2SADC_SRST	2
#define JH7100_AUDRSTN_PDM_APB		3
#define JH7100_AUDRSTN_I2SVAD_APB	4
#define JH7100_AUDRSTN_I2SVAD_SRST	5
#define JH7100_AUDRSTN_SPDIF_APB	6
#define JH7100_AUDRSTN_PWMDAC_APB	7
#define JH7100_AUDRSTN_I2SDAC_APB	8
#define JH7100_AUDRSTN_I2SDAC_SRST	9
#define JH7100_AUDRSTN_I2S1_APB		10
#define JH7100_AUDRSTN_I2S1_SRST	11
#define JH7100_AUDRSTN_I2SDAC16K_APB	12
#define JH7100_AUDRSTN_I2SDAC16K_SRST	13
#define JH7100_AUDRSTN_DMA1P_AHB	14
#define JH7100_AUDRSTN_USB_APB		15
#define JH7100_AUDRST_USB_AXI		16
#define JH7100_AUDRST_USB_PWRUP_RST_N	17
#define JH7100_AUDRST_USB_PONRST	18

#define JH7100_AUDRSTN_END		19

#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7100_AUDIO_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7100.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 * Copyright (C) 2021 Ahmad Fatoum, Pengutronix
 */

#ifndef __DT_BINDINGS_RESET_STARFIVE_JH7100_H__
#define __DT_BINDINGS_RESET_STARFIVE_JH7100_H__

#define JH7100_RSTN_DOM3AHB_BUS		0
#define JH7100_RSTN_DOM7AHB_BUS		1
#define JH7100_RST_U74			2
#define JH7100_RSTN_U74_AXI		3
#define JH7100_RSTN_SGDMA2P_AHB		4
#define JH7100_RSTN_SGDMA2P_AXI		5
#define JH7100_RSTN_DMA2PNOC_AXI	6
#define JH7100_RSTN_DLA_AXI		7
#define JH7100_RSTN_DLANOC_AXI		8
#define JH7100_RSTN_DLA_APB		9
#define JH7100_RST_VP6_DRESET		10
#define JH7100_RST_VP6_BRESET		11
#define JH7100_RSTN_VP6_AXI		12
#define JH7100_RSTN_VDECBRG_MAIN	13
#define JH7100_RSTN_VDEC_AXI		14
#define JH7100_RSTN_VDEC_BCLK		15
#define JH7100_RSTN_VDEC_CCLK		16
#define JH7100_RSTN_VDEC_APB		17
#define JH7100_RSTN_JPEG_AXI		18
#define JH7100_RSTN_JPEG_CCLK		19
#define JH7100_RSTN_JPEG_APB		20
#define JH7100_RSTN_JPCGC300_MAIN	21
#define JH7100_RSTN_GC300_2X		22
#define JH7100_RSTN_GC300_AXI		23
#define JH7100_RSTN_GC300_AHB		24
#define JH7100_RSTN_VENC_AXI		25
#define JH7100_RSTN_VENCBRG_MAIN	26
#define JH7100_RSTN_VENC_BCLK		27
#define JH7100_RSTN_VENC_CCLK		28
#define JH7100_RSTN_VENC_APB		29
#define JH7100_RSTN_DDRPHY_APB		30
#define JH7100_RSTN_NOC_ROB		31
#define JH7100_RSTN_NOC_COG		32
#define JH7100_RSTN_HIFI4_AXI		33
#define JH7100_RSTN_HIFI4NOC_AXI	34
#define JH7100_RST_HIFI4_DRESET		35
#define JH7100_RST_HIFI4_BRESET		36
#define JH7100_RSTN_USB_AXI		37
#define JH7100_RSTN_USBNOC_AXI		38
#define JH7100_RSTN_SGDMA1P_AXI		39
#define JH7100_RSTN_DMA1P_AXI		40
#define JH7100_RSTN_X2C_AXI		41
#define JH7100_RSTN_NNE_AHB		42
#define JH7100_RSTN_NNE_AXI		43
#define JH7100_RSTN_NNENOC_AXI		44
#define JH7100_RSTN_DLASLV_AXI		45
#define JH7100_RSTN_DSPX2C_AXI		46
#define JH7100_RSTN_VIN_SRC		47
#define JH7100_RSTN_ISPSLV_AXI		48
#define JH7100_RSTN_VIN_AXI		49
#define JH7100_RSTN_VINNOC_AXI		50
#define JH7100_RSTN_ISP0_AXI		51
#define JH7100_RSTN_ISP0NOC_AXI		52
#define JH7100_RSTN_ISP1_AXI		53
#define JH7100_RSTN_ISP1NOC_AXI		54
#define JH7100_RSTN_VOUT_SRC		55
#define JH7100_RSTN_DISP_AXI		56
#define JH7100_RSTN_DISPNOC_AXI		57
#define JH7100_RSTN_SDIO0_AHB		58
#define JH7100_RSTN_SDIO1_AHB		59
#define JH7100_RSTN_GMAC_AHB		60
#define JH7100_RSTN_SPI2AHB_AHB		61
#define JH7100_RSTN_SPI2AHB_CORE	62
#define JH7100_RSTN_EZMASTER_AHB	63
#define JH7100_RST_E24			64
#define JH7100_RSTN_QSPI_AHB		65
#define JH7100_RSTN_QSPI_CORE		66
#define JH7100_RSTN_QSPI_APB		67
#define JH7100_RSTN_SEC_AHB		68
#define JH7100_RSTN_AES			69
#define JH7100_RSTN_PKA			70
#define JH7100_RSTN_SHA			71
#define JH7100_RSTN_TRNG_APB		72
#define JH7100_RSTN_OTP_APB		73
#define JH7100_RSTN_UART0_APB		74
#define JH7100_RSTN_UART0_CORE		75
#define JH7100_RSTN_UART1_APB		76
#define JH7100_RSTN_UART1_CORE		77
#define JH7100_RSTN_SPI0_APB		78
#define JH7100_RSTN_SPI0_CORE		79
#define JH7100_RSTN_SPI1_APB		80
#define JH7100_RSTN_SPI1_CORE		81
#define JH7100_RSTN_I2C0_APB		82
#define JH7100_RSTN_I2C0_CORE		83
#define JH7100_RSTN_I2C1_APB		84
#define JH7100_RSTN_I2C1_CORE		85
#define JH7100_RSTN_GPIO_APB		86
#define JH7100_RSTN_UART2_APB		87
#define JH7100_RSTN_UART2_CORE		88
#define JH7100_RSTN_UART3_APB		89
#define JH7100_RSTN_UART3_CORE		90
#define JH7100_RSTN_SPI2_APB		91
#define JH7100_RSTN_SPI2_CORE		92
#define JH7100_RSTN_SPI3_APB		93
#define JH7100_RSTN_SPI3_CORE		94
#define JH7100_RSTN_I2C2_APB		95
#define JH7100_RSTN_I2C2_CORE		96
#define JH7100_RSTN_I2C3_APB		97
#define JH7100_RSTN_I2C3_CORE		98
#define JH7100_RSTN_WDTIMER_APB		99
#define JH7100_RSTN_WDT			100
#define JH7100_RSTN_TIMER0		101
#define JH7100_RSTN_TIMER1		102
#define JH7100_RSTN_TIMER2		103
#define JH7100_RSTN_TIMER3		104
#define JH7100_RSTN_TIMER4		105
#define JH7100_RSTN_TIMER5		106
#define JH7100_RSTN_TIMER6		107
#define JH7100_RSTN_VP6INTC_APB		108
#define JH7100_RSTN_PWM_APB		109
#define JH7100_RSTN_MSI_APB		110
#define JH7100_RSTN_TEMP_APB		111
#define JH7100_RSTN_TEMP_SENSE		112
#define JH7100_RSTN_SYSERR_APB		113

#define JH7100_RSTN_END			114

#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7100_H__ */

File Added: src/sys/external/gpl2/dts/dist/include/dt-bindings/reset/starfive-jh7110.h
/* SPDX-License-Identifier: GPL-2.0 OR MIT */
/*
 *  Copyright (C) 2021 samin <samin.guo@starfivetech.com>
 */

#ifndef __DT_BINDINGS_RESET_STARFIVE_JH7110_H__
#define __DT_BINDINGS_RESET_STARFIVE_JH7110_H__

/*
 * group[0]: syscrg: assert0
 */
#define RSTN_U0_JTAG2APB_PRESETN	0
#define	RSTN_U0_SYS_SYSCON_PRESETN	1
#define	RSTN_U0_SYS_IOMUX_PRESETN	2
#define	RSTN_U0_U7MC_RST_BUS		3
#define	RSTN_U0_U7MC_DEBUG		4
#define	RSTN_U0_U7MC_CORE0		5
#define	RSTN_U0_U7MC_CORE1		6
#define	RSTN_U0_U7MC_CORE2		7
#define	RSTN_U0_U7MC_CORE3		8
#define	RSTN_U0_U7MC_CORE4		9
#define	RSTN_U0_U7MC_CORE0_ST		10
#define	RSTN_U0_U7MC_CORE1_ST		11
#define	RSTN_U0_U7MC_CORE2_ST		12
#define	RSTN_U0_U7MC_CORE3_ST		13
#define	RSTN_U0_U7MC_CORE4_ST		14
#define	RSTN_U0_U7MC_TRACE_RST0		15
#define	RSTN_U0_U7MC_TRACE_RST1		16
#define	RSTN_U0_U7MC_TRACE_RST2		17
#define	RSTN_U0_U7MC_TRACE_RST3		18
#define	RSTN_U0_U7MC_TRACE_RST4		19
#define	RSTN_U0_U7MC_TRACE_COM		20
#define	RSTN_U0_IMG_GPU_APB		21
#define	RSTN_U0_IMG_GPU_DOMA		22
#define	RSTN_U0_NOC_BUS_APB_BUS_N	23
#define	RSTN_U0_NOC_BUS_AXICFG0_AXI_N	24
#define	RSTN_U0_NOC_BUS_CPU_AXI_N	25
#define	RSTN_U0_NOC_BUS_DISP_AXI_N	26
#define	RSTN_U0_NOC_BUS_GPU_AXI_N	27
#define	RSTN_U0_NOC_BUS_ISP_AXI_N	28
#define	RSTN_U0_NOC_BUS_DDRC_N		29
#define	RSTN_U0_NOC_BUS_STG_AXI_N	30
#define	RSTN_U0_NOC_BUS_VDEC_AXI_N	31
/*
 * group[1]: syscrg: assert1
 */
#define	RSTN_U0_NOC_BUS_VENC_AXI_N	32
#define	RSTN_U0_AXI_CFG1_DEC_AHB	33
#define	RSTN_U0_AXI_CFG1_DEC_MAIN	34
#define	RSTN_U0_AXI_CFG0_DEC_MAIN	35
#define	RSTN_U0_AXI_CFG0_DEC_MAIN_DIV	36
#define	RSTN_U0_AXI_CFG0_DEC_HIFI4	37
#define	RSTN_U0_DDR_AXI			38
#define	RSTN_U0_DDR_OSC			39
#define	RSTN_U0_DDR_APB			40
#define	RSTN_U0_DOM_ISP_TOP_N		41
#define	RSTN_U0_DOM_ISP_TOP_AXI		42
#define	RSTN_U0_DOM_VOUT_TOP_SRC	43
#define	RSTN_U0_CODAJ12_AXI		44
#define	RSTN_U0_CODAJ12_CORE		45
#define	RSTN_U0_CODAJ12_APB		46
#define	RSTN_U0_WAVE511_AXI		47
#define	RSTN_U0_WAVE511_BPU		48
#define	RSTN_U0_WAVE511_VCE		49
#define	RSTN_U0_WAVE511_APB		50
#define	RSTN_U0_VDEC_JPG_ARB_JPG	51
#define	RSTN_U0_VDEC_JPG_ARB_MAIN	52
#define	RSTN_U0_AXIMEM_128B_AXI		53
#define	RSTN_U0_WAVE420L_AXI		54
#define	RSTN_U0_WAVE420L_BPU		55
#define	RSTN_U0_WAVE420L_VCE		56
#define	RSTN_U0_WAVE420L_APB		57
#define	RSTN_U1_AXIMEM_128B_AXI		58
#define	RSTN_U2_AXIMEM_128B_AXI		59
#define	RSTN_U0_INTMEM_ROM_SRAM_ROM	60
#define	RSTN_U0_CDNS_QSPI_AHB		61
#define	RSTN_U0_CDNS_QSPI_APB		62
#define	RSTN_U0_CDNS_QSPI_REF		63
/*
 * group[2]: syscrg: assert2
 */
#define	RSTN_U0_DW_SDIO_AHB		64
#define	RSTN_U1_DW_SDIO_AHB		65
#define	RSTN_U1_DW_GMAC5_AXI64_A_I	66
#define	RSTN_U1_DW_GMAC5_AXI64_H_N	67
#define	RSTN_U0_MAILBOX_RRESETN		68
#define	RSTN_U0_SSP_SPI_APB		69
#define	RSTN_U1_SSP_SPI_APB		70
#define	RSTN_U2_SSP_SPI_APB		71
#define	RSTN_U3_SSP_SPI_APB		72
#define	RSTN_U4_SSP_SPI_APB		73
#define	RSTN_U5_SSP_SPI_APB		74
#define	RSTN_U6_SSP_SPI_APB		75
#define	RSTN_U0_DW_I2C_APB		76
#define	RSTN_U1_DW_I2C_APB		77
#define	RSTN_U2_DW_I2C_APB		78
#define	RSTN_U3_DW_I2C_APB		79
#define	RSTN_U4_DW_I2C_APB		80
#define	RSTN_U5_DW_I2C_APB		81
#define	RSTN_U6_DW_I2C_APB		82
#define	RSTN_U0_DW_UART_APB		83
#define	RSTN_U0_DW_UART_CORE		84
#define	RSTN_U1_DW_UART_APB		85
#define	RSTN_U1_DW_UART_CORE		86
#define	RSTN_U2_DW_UART_APB		87
#define	RSTN_U2_DW_UART_CORE		88
#define	RSTN_U3_DW_UART_APB		89
#define	RSTN_U3_DW_UART_CORE		90
#define	RSTN_U4_DW_UART_APB		91
#define	RSTN_U4_DW_UART_CORE		92
#define	RSTN_U5_DW_UART_APB		93
#define	RSTN_U5_DW_UART_CORE		94
#define	RSTN_U0_CDNS_SPDIF_APB		95
/*
 * group[3]: syscrg: assert3
 */
#define	RSTN_U0_PWMDAC_APB		96
#define	RSTN_U0_PDM_4MIC_DMIC		97
#define	RSTN_U0_PDM_4MIC_APB		98
#define	RSTN_U0_I2SRX_3CH_APB		99
#define	RSTN_U0_I2SRX_3CH_BCLK		100
#define	RSTN_U0_I2STX_4CH_APB		101
#define	RSTN_U0_I2STX_4CH_BCLK		102
#define	RSTN_U1_I2STX_4CH_APB		103
#define	RSTN_U1_I2STX_4CH_BCLK		104
#define	RSTN_U0_TDM16SLOT_AHB		105
#define	RSTN_U0_TDM16SLOT_TDM		106
#define	RSTN_U0_TDM16SLOT_APB		107
#define	RSTN_U0_PWM_8CH_APB		108
#define	RSTN_U0_DSKIT_WDT_APB		109
#define	RSTN_U0_DSKIT_WDT_CORE		110
#define	RSTN_U0_CAN_CTRL_APB		111
#define	RSTN_U0_CAN_CTRL_CORE		112
#define	RSTN_U0_CAN_CTRL_TIMER		113
#define	RSTN_U1_CAN_CTRL_APB		114
#define	RSTN_U1_CAN_CTRL_CORE		115
#define	RSTN_U1_CAN_CTRL_TIMER		116
#define	RSTN_U0_TIMER_APB		117
#define	RSTN_U0_TIMER_TIMER0		118
#define	RSTN_U0_TIMER_TIMER1		119
#define	RSTN_U0_TIMER_TIMER2		120
#define	RSTN_U0_TIMER_TIMER3		121
#define	RSTN_U0_INT_CTRL_APB		122
#define	RSTN_U0_TEMP_SENSOR_APB		123
#define	RSTN_U0_TEMP_SENSOR_TEMP	124
#define	RSTN_U0_JTAG_CERTIFICATION_N	125
/*
 * group[4]: stgcrg
 */
#define	RSTN_U0_STG_SYSCON_PRESETN	128
#define	RSTN_U0_HIFI4_CORE		129
#define	RSTN_U0_HIFI4_AXI		130
#define	RSTN_U0_SEC_TOP_HRESETN		131
#define	RSTN_U0_E24_CORE		132
#define	RSTN_U0_DW_DMA1P_AXI		133
#define	RSTN_U0_DW_DMA1P_AHB		134
#define	RSTN_U0_CDN_USB_AXI		135
#define	RSTN_U0_CDN_USB_APB		136
#define	RSTN_U0_CDN_USB_UTMI_APB	137
#define	RSTN_U0_CDN_USB_PWRUP		138
#define	RSTN_U0_PLDA_PCIE_AXI_MST0	139
#define	RSTN_U0_PLDA_PCIE_AXI_SLV0	140
#define	RSTN_U0_PLDA_PCIE_AXI_SLV	141
#define	RSTN_U0_PLDA_PCIE_BRG		142
#define	RSTN_U0_PLDA_PCIE_CORE		143
#define	RSTN_U0_PLDA_PCIE_APB		144
#define	RSTN_U1_PLDA_PCIE_AXI_MST0	145
#define	RSTN_U1_PLDA_PCIE_AXI_SLV0	146
#define	RSTN_U1_PLDA_PCIE_AXI_SLV	147
#define	RSTN_U1_PLDA_PCIE_BRG		148
#define	RSTN_U1_PLDA_PCIE_CORE		149
#define	RSTN_U1_PLDA_PCIE_APB		150
/*
 * group[5]: aoncrg
 */
#define	RSTN_U0_DW_GMAC5_AXI64_AXI	160
#define	RSTN_U0_DW_GMAC5_AXI64_AHB	161
#define	RSTN_U0_AON_IOMUX_PRESETN	162
#define	RSTN_U0_PMU_APB			163
#define	RSTN_U0_PMU_WKUP		164
#define	RSTN_U0_RTC_HMS_APB		165
#define	RSTN_U0_RTC_HMS_CAL		166
#define	RSTN_U0_RTC_HMS_OSC32K		167
/*
 * group[6]: ispcrg
 */
#define	RSTN_U0_ISPV2_TOP_WRAPPER_P	192
#define	RSTN_U0_ISPV2_TOP_WRAPPER_C	193
#define	RSTN_U0_M31DPHY_HW		194
#define	RSTN_U0_M31DPHY_B09_ALWAYS_ON	195
#define	RSTN_U0_VIN_N_PCLK		196
#define	RSTN_U0_VIN_N_PIXEL_CLK_IF0	197
#define	RSTN_U0_VIN_N_PIXEL_CLK_IF1	198
#define	RSTN_U0_VIN_N_PIXEL_CLK_IF2	199
#define	RSTN_U0_VIN_N_PIXEL_CLK_IF3	200
#define	RSTN_U0_VIN_N_SYS_CLK		201
#define	RSTN_U0_VIN_P_AXIRD		202
#define	RSTN_U0_VIN_P_AXIWR		203
/*
 * group[7]: voutcrg
 */
#define	RSTN_U0_DC8200_AXI		224
#define	RSTN_U0_DC8200_AHB		225
#define	RSTN_U0_DC8200_CORE		226
#define	RSTN_U0_CDNS_DSITX_DPI		227
#define	RSTN_U0_CDNS_DSITX_APB		228
#define	RSTN_U0_CDNS_DSITX_RXESC	229
#define	RSTN_U0_CDNS_DSITX_SYS		230
#define	RSTN_U0_CDNS_DSITX_TXBYTEHS	231
#define	RSTN_U0_CDNS_DSITX_TXESC	232
#define	RSTN_U0_HDMI_TX_HDMI		233
#define	RSTN_U0_MIPITX_DPHY_SYS		234
#define	RSTN_U0_MIPITX_DPHY_TXBYTEHS	235

#define	RSTN_JH7110_RESET_END		236

#endif /* __DT_BINDINGS_RESET_STARFIVE_JH7110_H__ */