diff mbox series

[2/2] arm64: dts: rockchip: add dts for Firefly Station P2 aka rk3568-roc-pc

Message ID 20230616211020.55755-3-f.kardame@manjaro.org (mailing list archive)
State New, archived
Headers show
Series Add support for Firefly Station P2 aka rk3568-roc-pc | expand

Commit Message

Furkan Kardame June 16, 2023, 9:10 p.m. UTC
Add dts for Firefly Station P2.
Working IO:
* eMMC
* HDMI
* LAN
* LED
* SD Card
* UART
* USB2
* USB3

Signed-off-by: Furkan Kardame <f.kardame@manjaro.org>
---
 arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 .../arm64/boot/dts/rockchip/rk3568-roc-pc.dts | 689 ++++++++++++++++++
 2 files changed, 690 insertions(+)
 create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts

Comments

Krzysztof Kozlowski June 17, 2023, 7:52 a.m. UTC | #1
On 16/06/2023 23:10, Furkan Kardame wrote:
> Add dts for Firefly Station P2.
> Working IO:
> * eMMC
> * HDMI
> * LAN
> * LED
> * SD Card
> * UART
> * USB2
> * USB3
> 
> Signed-off-by: Furkan Kardame <f.kardame@manjaro.org>
> ---
>  arch/arm64/boot/dts/rockchip/Makefile         |   1 +
>  .../arm64/boot/dts/rockchip/rk3568-roc-pc.dts | 689 ++++++++++++++++++
>  2 files changed, 690 insertions(+)
>  create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
> 
> diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
> index 2d585bbb8..2085b00f3 100644
> --- a/arch/arm64/boot/dts/rockchip/Makefile
> +++ b/arch/arm64/boot/dts/rockchip/Makefile
> @@ -90,6 +90,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-odroid-m1.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
> +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-io.dtb
>  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb1-v10.dtb
> diff --git a/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
> new file mode 100644
> index 000000000..5946ad3ea
> --- /dev/null
> +++ b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
> @@ -0,0 +1,689 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
> + *
> + */
> +
> +/dts-v1/;
> +
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/pinctrl/rockchip.h>
> +#include <dt-bindings/soc/rockchip,vop2.h>
> +#include "rk3568.dtsi"
> +
> +/ {
> +	model = "Firefly Station P2";
> +	compatible = "firefly,rk3568-roc-pc", "rockchip,rk3568";
> +
> +	aliases {
> +		ethernet0 = &gmac0;
> +		ethernet1 = &gmac1;
> +		mmc0 = &sdmmc0;
> +		mmc1 = &sdhci;
> +	};
> +
> +	chosen: chosen {
> +		stdout-path = "serial2:1500000n8";
> +	};
> +> +	dc_12v: dc-12v {

Node names should be generic. See also explanation and list of examples
in DT specification:
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
So at least regulator prefix or suffix.

> +		compatible = "regulator-fixed";
> +		regulator-name = "dc_12v";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <12000000>;
> +		regulator-max-microvolt = <12000000>;
> +	};
> +
> +	gmac0_clkin: external-gmac0-clock {
> +		compatible = "fixed-clock";
> +		clock-frequency = <125000000>;
> +		clock-output-names = "gmac0_clkin";
> +		#clock-cells = <0>;
> +	};
> +
> +	gmac1_clkin: external-gmac1-clock {
> +		compatible = "fixed-clock";
> +		clock-frequency = <125000000>;
> +		clock-output-names = "gmac1_clkin";
> +		#clock-cells = <0>;
> +	};
> +
> +	leds {
> +		compatible = "gpio-leds";
> +
> +		led-user {
> +			label = "user-led";
> +			default-state = "on";
> +			gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
> +			linux,default-trigger = "heartbeat";
> +			pinctrl-names = "default";
> +			pinctrl-0 = <&user_led_enable_h>;
> +			retain-state-suspended;
> +		};
> +	};
> +
> +	hdmi-con {
> +		compatible = "hdmi-connector";
> +		type = "a";
> +
> +		port {
> +			hdmi_con_in: endpoint {
> +			remote-endpoint = <&hdmi_out_con>;
> +			};
> +		};
> +	};
> +
> +	sdio_pwrseq: sdio-pwrseq {
> +		status = "okay";

Why do you need it?

> +		compatible = "mmc-pwrseq-simple";
> +		clocks = <&rk809 1>;
> +		clock-names = "ext_clock";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&wifi_enable_h>;
> +		reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
> +	};
> +
> +	pcie30_avdd0v9: pcie30-avdd0v9 {

Same naming problem.

> +		compatible = "regulator-fixed";
> +		regulator-name = "pcie30_avdd0v9";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <900000>;
> +		regulator-max-microvolt = <900000>;
> +		vin-supply = <&vcc3v3_sys>;
> +	};
> +
> +	pcie30_avdd1v8: pcie30-avdd1v8 {

Ditto

> +		compatible = "regulator-fixed";
> +		regulator-name = "pcie30_avdd1v8";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <1800000>;
> +		regulator-max-microvolt = <1800000>;
> +		vin-supply = <&vcc3v3_sys>;
> +	};
> +
> +	vcc3v3_sys: vcc3v3-sys {

Ditto

> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc3v3_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&dc_12v>;
> +	};
> +
> +	vcc3v3_pcie: gpio-regulator {

Oh, suffix appeared.

> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc3v3_pcie";
> +		enable-active-high;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vcc3v3_pcie_en_pin>;
> +		gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
> +		startup-delay-us = <5000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +
> +	vcc5v0_sys: vcc5v0-sys {

And gone.

> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc5v0_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&dc_12v>;
> +	};
> +
> +	vcc5v0_usb: vcc5v0-usb {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc5v0_usb";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc5v0_sys>;
> +	};
> +

...

> +
> +			vdda0v9_pmu: LDO_REG3 {
> +				regulator-name = "vdda0v9_pmu";
> +				regulator-always-on;
> +				regulator-boot-on;
> +				regulator-min-microvolt = <900000>;
> +				regulator-max-microvolt = <900000>;
> +
> +				regulator-state-mem {
> +					regulator-on-in-suspend;
> +					regulator-suspend-microvolt = <900000>;
> +					};

Fix indentation.

> +			};
> +
> +			vccio_acodec: LDO_REG4 {
> +				regulator-name = "vccio_acodec";
> +				regulator-min-microvolt = <3300000>;
> +				regulator-max-microvolt = <3300000>;
> +
> +				regulator-state-mem {
> +					regulator-off-in-suspend;
> +				};
> +			};
> +

> +
> +	pcie {
> +		pcie_reset_pin: pcie-reset-pin {
> +			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +		vcc3v3_pcie_en_pin: vcc3v3-pcie-en-pin {
> +			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	pmic {
> +		pmic_int: pmic_int {

No underscores in node names.

Are you sure this does not cause `make dtsb_check` warnings?

Best regards,
Krzysztof
Furkan Kardame June 17, 2023, 11:26 a.m. UTC | #2
Hello  Krzysztof,
Thank you for spending your precious time on reviewing this patch. 

My apologies for the silly mistakes, Thank you for the detailed review. 
I will fix the patch and send as version-2 to all the latest maintainer.
It have been used in manjaro kernel since long time and some of the users 
are already using the device with this patch.

It will be better if it can be tested by more developers and reviewed 
before it gets merged.

Recently I fixed the warning before sending the patches, Build log can be 
found here:
https://gitlab.manjaro.org/manjaro-arm/packages/core/linux-rc/-/jobs/12638/raw



On Saturday 17 June 2023 10:52:59 (+03:00), Krzysztof Kozlowski wrote:

 > On 16/06/2023 23:10, Furkan Kardame wrote:
 > > Add dts for Firefly Station P2.
 > > Working IO:
 > > * eMMC
 > > * HDMI
 > > * LAN
 > > * LED
 > > * SD Card
 > > * UART
 > > * USB2
 > > * USB3
 > > 
 > > Signed-off-by: Furkan Kardame 
 > > ---
 > >  arch/arm64/boot/dts/rockchip/Makefile         |   1 +
 > >  .../arm64/boot/dts/rockchip/rk3568-roc-pc.dts | 689 
++++++++++++++++++
 > >  2 files changed, 690 insertions(+)
 > >  create mode 100644 arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
 > > 
 > > diff --git a/arch/arm64/boot/dts/rockchip/Makefile 
b/arch/arm64/boot/dts/rockchip/Makefile
 > > index 2d585bbb8..2085b00f3 100644
 > > --- a/arch/arm64/boot/dts/rockchip/Makefile
 > > +++ b/arch/arm64/boot/dts/rockchip/Makefile
 > > @@ -90,6 +90,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-odroid-m1.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
 > > +dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-io.dtb
 > >  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb1-v10.dtb
 > > diff --git a/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts 
b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
 > > new file mode 100644
 > > index 000000000..5946ad3ea
 > > --- /dev/null
 > > +++ b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
 > > @@ -0,0 +1,689 @@
 > > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
 > > +/*
 > > + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
 > > + *
 > > + */
 > > +
 > > +/dts-v1/;
 > > +
 > > +#include 
 > > +#include 
 > > +#include 
 > > +#include "rk3568.dtsi"
 > > +
 > > +/ {
 > > +	model = "Firefly Station P2";
 > > +	compatible = "firefly,rk3568-roc-pc", "rockchip,rk3568";
 > > +
 > > +	aliases {
 > > +		ethernet0 = &gmac0;
 > > +		ethernet1 = &gmac1;
 > > +		mmc0 = &sdmmc0;
 > > +		mmc1 = &sdhci;
 > > +	};
 > > +
 > > +	chosen: chosen {
 > > +		stdout-path = "serial2:1500000n8";
 > > +	};
 > > +> +	dc_12v: dc-12v {
 > 
 > Node names should be generic. See also explanation and list of examples
 > in DT specification:
 > 
https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
 
> So at least regulator prefix or suffix.
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "dc_12v";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <12000000>;
 > > +		regulator-max-microvolt = <12000000>;
 > > +	};
 > > +
 > > +	gmac0_clkin: external-gmac0-clock {
 > > +		compatible = "fixed-clock";
 > > +		clock-frequency = <125000000>;
 > > +		clock-output-names = "gmac0_clkin";
 > > +		#clock-cells = <0>;
 > > +	};
 > > +
 > > +	gmac1_clkin: external-gmac1-clock {
 > > +		compatible = "fixed-clock";
 > > +		clock-frequency = <125000000>;
 > > +		clock-output-names = "gmac1_clkin";
 > > +		#clock-cells = <0>;
 > > +	};
 > > +
 > > +	leds {
 > > +		compatible = "gpio-leds";
 > > +
 > > +		led-user {
 > > +			label = "user-led";
 > > +			default-state = "on";
 > > +			gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
 > > +			linux,default-trigger = "heartbeat";
 > > +			pinctrl-names = "default";
 > > +			pinctrl-0 = <&user_led_enable_h>;
 > > +			retain-state-suspended;
 > > +		};
 > > +	};
 > > +
 > > +	hdmi-con {
 > > +		compatible = "hdmi-connector";
 > > +		type = "a";
 > > +
 > > +		port {
 > > +			hdmi_con_in: endpoint {
 > > +			remote-endpoint = <&hdmi_out_con>;
 > > +			};
 > > +		};
 > > +	};
 > > +
 > > +	sdio_pwrseq: sdio-pwrseq {
 > > +		status = "okay";
 > 
 > Why do you need it?
Will be removed and will add it back later with wifi patch in future.

 > 
 > > +		compatible = "mmc-pwrseq-simple";
 > > +		clocks = <&rk809 1>;
 > > +		clock-names = "ext_clock";
 > > +		pinctrl-names = "default";
 > > +		pinctrl-0 = <&wifi_enable_h>;
 > > +		reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
 > > +	};
 > > +
 > > +	pcie30_avdd0v9: pcie30-avdd0v9 {
 > 
 > Same naming problem.
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "pcie30_avdd0v9";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <900000>;
 > > +		regulator-max-microvolt = <900000>;
 > > +		vin-supply = <&vcc3v3_sys>;
 > > +	};
 > > +
 > > +	pcie30_avdd1v8: pcie30-avdd1v8 {
 > 
 > Ditto
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "pcie30_avdd1v8";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <1800000>;
 > > +		regulator-max-microvolt = <1800000>;
 > > +		vin-supply = <&vcc3v3_sys>;
 > > +	};
 > > +
 > > +	vcc3v3_sys: vcc3v3-sys {
 > 
 > Ditto
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "vcc3v3_sys";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <3300000>;
 > > +		regulator-max-microvolt = <3300000>;
 > > +		vin-supply = <&dc_12v>;
 > > +	};
 > > +
 > > +	vcc3v3_pcie: gpio-regulator {
 > 
 > Oh, suffix appeared.
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "vcc3v3_pcie";
 > > +		enable-active-high;
 > > +		regulator-min-microvolt = <3300000>;
 > > +		regulator-max-microvolt = <3300000>;
 > > +		pinctrl-names = "default";
 > > +		pinctrl-0 = <&vcc3v3_pcie_en_pin>;
 > > +		gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
 > > +		startup-delay-us = <5000>;
 > > +		vin-supply = <&vcc5v0_sys>;
 > > +	};
 > > +
 > > +	vcc5v0_sys: vcc5v0-sys {
 > 
 > And gone.
 > 
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "vcc5v0_sys";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <5000000>;
 > > +		regulator-max-microvolt = <5000000>;
 > > +		vin-supply = <&dc_12v>;
 > > +	};
 > > +
 > > +	vcc5v0_usb: vcc5v0-usb {
 > > +		compatible = "regulator-fixed";
 > > +		regulator-name = "vcc5v0_usb";
 > > +		regulator-always-on;
 > > +		regulator-boot-on;
 > > +		regulator-min-microvolt = <5000000>;
 > > +		regulator-max-microvolt = <5000000>;
 > > +		vin-supply = <&vcc5v0_sys>;
 > > +	};
 > > +
 > 
 > ...
 > 
 > > +
 > > +			vdda0v9_pmu: LDO_REG3 {
 > > +				regulator-name = "vdda0v9_pmu";
 > > +				regulator-always-on;
 > > +				regulator-boot-on;
 > > +				regulator-min-microvolt = <900000>;
 > > +				regulator-max-microvolt = <900000>;
 > > +
 > > +				regulator-state-mem {
 > > +					regulator-on-in-suspend;
 > > +					regulator-suspend-microvolt = <900000>;
 > > +					};
 > 
 > Fix indentation.
 > 
 > > +			};
 > > +
 > > +			vccio_acodec: LDO_REG4 {
 > > +				regulator-name = "vccio_acodec";
 > > +				regulator-min-microvolt = <3300000>;
 > > +				regulator-max-microvolt = <3300000>;
 > > +
 > > +				regulator-state-mem {
 > > +					regulator-off-in-suspend;
 > > +				};
 > > +			};
 > > +
 > 
 > > +
 > > +	pcie {
 > > +		pcie_reset_pin: pcie-reset-pin {
 > > +			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
 > > +		};
 > > +		vcc3v3_pcie_en_pin: vcc3v3-pcie-en-pin {
 > > +			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
 > > +		};
 > > +	};
 > > +
 > > +	pmic {
 > > +		pmic_int: pmic_int {
 > 
 > No underscores in node names.
 > 
 > Are you sure this does not cause `make dtsb_check` warnings?
 > 
 > Best regards,
 > Krzysztof
 > 
 > 

Regards,
Furkan.
Krzysztof Kozlowski June 17, 2023, 11:28 a.m. UTC | #3
On 17/06/2023 13:26, Furkan Kardame wrote:
> 
> Hello  Krzysztof,
> Thank you for spending your precious time on reviewing this patch. 
> 
> My apologies for the silly mistakes, Thank you for the detailed review. 
> I will fix the patch and send as version-2 to all the latest maintainer.
> It have been used in manjaro kernel since long time and some of the users 
> are already using the device with this patch.
> 
Please don't top-post.


> It will be better if it can be tested by more developers and reviewed 
> before it gets merged.
> 
> Recently I fixed the warning before sending the patches, Build log can be 
> found here:
> https://gitlab.manjaro.org/manjaro-arm/packages/core/linux-rc/-/jobs/12638/raw

I don't see there dtbs_check, only dtbs W=1.

Best regards,
Krzysztof
Furkan Kardame June 17, 2023, 12:44 p.m. UTC | #4
On Saturday 17 June 2023 14:28:29 (+03:00), Krzysztof Kozlowski wrote:

 > On 17/06/2023 13:26, Furkan Kardame wrote:
 > > 
 > > Hello  Krzysztof,
 > > Thank you for spending your precious time on reviewing this patch. 
 > > 
 > > My apologies for the silly mistakes, Thank you for the detailed 
review. 
 > > I will fix the patch and send as version-2 to all the latest 
maintainer.
 > > It have been used in manjaro kernel since long time and some of the 
users 
 > > are already using the device with this patch.
 > > 
 > Please don't top-post.
Ok.

 > 
 > 
 > > It will be better if it can be tested by more developers and reviewed 
 > > before it gets merged.
 > > 
 > > Recently I fixed the warning before sending the patches, Build log can 
be 
 > > found here:
 > > 
https://gitlab.manjaro.org/manjaro-arm/packages/core/linux-rc/-/jobs/12638/raw
 
> 
 > I don't see there dtbs_check, only dtbs W=1.
I did a dtb check now locally, logs here https://paste.kodi.tv/uloduzawav

 > 
 > Best regards,
 > Krzysztof
 > 
 >
diff mbox series

Patch

diff --git a/arch/arm64/boot/dts/rockchip/Makefile b/arch/arm64/boot/dts/rockchip/Makefile
index 2d585bbb8..2085b00f3 100644
--- a/arch/arm64/boot/dts/rockchip/Makefile
+++ b/arch/arm64/boot/dts/rockchip/Makefile
@@ -90,6 +90,7 @@  dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5c.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-nanopi-r5s.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-odroid-m1.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-radxa-e25.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-roc-pc.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3568-rock-3a.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-edgeble-neu6a-io.dtb
 dtb-$(CONFIG_ARCH_ROCKCHIP) += rk3588-evb1-v10.dtb
diff --git a/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
new file mode 100644
index 000000000..5946ad3ea
--- /dev/null
+++ b/arch/arm64/boot/dts/rockchip/rk3568-roc-pc.dts
@@ -0,0 +1,689 @@ 
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ *
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/soc/rockchip,vop2.h>
+#include "rk3568.dtsi"
+
+/ {
+	model = "Firefly Station P2";
+	compatible = "firefly,rk3568-roc-pc", "rockchip,rk3568";
+
+	aliases {
+		ethernet0 = &gmac0;
+		ethernet1 = &gmac1;
+		mmc0 = &sdmmc0;
+		mmc1 = &sdhci;
+	};
+
+	chosen: chosen {
+		stdout-path = "serial2:1500000n8";
+	};
+
+	dc_12v: dc-12v {
+		compatible = "regulator-fixed";
+		regulator-name = "dc_12v";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+	};
+
+	gmac0_clkin: external-gmac0-clock {
+		compatible = "fixed-clock";
+		clock-frequency = <125000000>;
+		clock-output-names = "gmac0_clkin";
+		#clock-cells = <0>;
+	};
+
+	gmac1_clkin: external-gmac1-clock {
+		compatible = "fixed-clock";
+		clock-frequency = <125000000>;
+		clock-output-names = "gmac1_clkin";
+		#clock-cells = <0>;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		led-user {
+			label = "user-led";
+			default-state = "on";
+			gpios = <&gpio1 RK_PB2 GPIO_ACTIVE_HIGH>;
+			linux,default-trigger = "heartbeat";
+			pinctrl-names = "default";
+			pinctrl-0 = <&user_led_enable_h>;
+			retain-state-suspended;
+		};
+	};
+
+	hdmi-con {
+		compatible = "hdmi-connector";
+		type = "a";
+
+		port {
+			hdmi_con_in: endpoint {
+			remote-endpoint = <&hdmi_out_con>;
+			};
+		};
+	};
+
+	sdio_pwrseq: sdio-pwrseq {
+		status = "okay";
+		compatible = "mmc-pwrseq-simple";
+		clocks = <&rk809 1>;
+		clock-names = "ext_clock";
+		pinctrl-names = "default";
+		pinctrl-0 = <&wifi_enable_h>;
+		reset-gpios = <&gpio3 RK_PD5 GPIO_ACTIVE_LOW>;
+	};
+
+	pcie30_avdd0v9: pcie30-avdd0v9 {
+		compatible = "regulator-fixed";
+		regulator-name = "pcie30_avdd0v9";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <900000>;
+		regulator-max-microvolt = <900000>;
+		vin-supply = <&vcc3v3_sys>;
+	};
+
+	pcie30_avdd1v8: pcie30-avdd1v8 {
+		compatible = "regulator-fixed";
+		regulator-name = "pcie30_avdd1v8";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <1800000>;
+		regulator-max-microvolt = <1800000>;
+		vin-supply = <&vcc3v3_sys>;
+	};
+
+	vcc3v3_sys: vcc3v3-sys {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&dc_12v>;
+	};
+
+	vcc3v3_pcie: gpio-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_pcie";
+		enable-active-high;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc3v3_pcie_en_pin>;
+		gpio = <&gpio0 RK_PD4 GPIO_ACTIVE_HIGH>;
+		startup-delay-us = <5000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+
+	vcc5v0_sys: vcc5v0-sys {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&dc_12v>;
+	};
+
+	vcc5v0_usb: vcc5v0-usb {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_usb";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc5v0_sys>;
+	};
+
+	vcc5v0_host: vcc5v0-host {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_host";
+		enable-active-high;
+		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc5v0_host_en>;
+		regulator-always-on;
+		vin-supply = <&vcc5v0_usb>;
+	};
+
+	vcc5v0_otg: vcc5v0-otg {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_otg";
+		enable-active-high;
+		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc5v0_otg_en>;
+		vin-supply = <&vcc5v0_usb>;
+	};
+
+	vcc3v3_lcd0_n: vcc3v3-lcd0-n {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_lcd0_n";
+		regulator-boot-on;
+
+		regulator-state-mem {
+			regulator-off-in-suspend;
+		};
+	};
+
+	vcc3v3_lcd1_n: vcc3v3-lcd1-n {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_lcd1_n";
+		regulator-boot-on;
+
+		regulator-state-mem {
+			regulator-off-in-suspend;
+		};
+	};
+};
+
+&combphy0 {
+	/* used for USB3 */
+	status = "okay";
+};
+
+&combphy1 {
+	/* used for USB3 */
+	status = "okay";
+};
+
+&combphy2 {
+	/* used for SATA */
+	status = "okay";
+};
+
+&gmac0 {
+	phy-mode = "rgmii";
+	clock_in_out = "input";
+
+	snps,reset-gpio = <&gpio2 RK_PD3 GPIO_ACTIVE_LOW>;
+	snps,reset-active-low;
+	/* Reset time is 20ms, 100ms for rtl8211f */
+	snps,reset-delays-us = <0 20000 100000>;
+
+	assigned-clocks = <&cru SCLK_GMAC0_RX_TX>, <&cru SCLK_GMAC0>;
+	assigned-clock-parents = <&cru SCLK_GMAC0_RGMII_SPEED>, <&gmac0_clkin>;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&gmac0_miim
+			&gmac0_tx_bus2
+			&gmac0_rx_bus2
+			&gmac0_rgmii_clk
+			&gmac0_rgmii_bus
+			&gmac0_clkinout>;
+
+	tx_delay = <0x3c>;
+	rx_delay = <0x2f>;
+
+	phy-handle = <&rgmii_phy0>;
+	status = "okay";
+};
+
+&gmac1 {
+	phy-mode = "rgmii";
+	clock_in_out = "input";
+
+	snps,reset-gpio = <&gpio2 RK_PD1 GPIO_ACTIVE_LOW>;
+	snps,reset-active-low;
+	/* Reset time is 20ms, 100ms for rtl8211f */
+	snps,reset-delays-us = <0 20000 100000>;
+
+	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
+
+	pinctrl-names = "default";
+	pinctrl-0 = <&gmac1m1_miim
+			&gmac1m1_tx_bus2
+			&gmac1m1_rx_bus2
+			&gmac1m1_rgmii_clk
+			&gmac1m1_rgmii_bus
+			&gmac1m1_clkinout>;
+
+	tx_delay = <0x4f>;
+	rx_delay = <0x26>;
+
+	phy-handle = <&rgmii_phy1>;
+	status = "okay";
+};
+
+&gpu {
+	mali-supply = <&vdd_gpu>;
+	status = "okay";
+};
+
+&hdmi {
+	status = "okay";
+	avdd-0v9-supply = <&vdda0v9_image>;
+	avdd-1v8-supply = <&vcca1v8_image>;
+};
+
+&hdmi_in {
+	hdmi_in_vp0: endpoint {
+		remote-endpoint = <&vp0_out_hdmi>;
+	};
+};
+
+&hdmi_out {
+	hdmi_out_con: endpoint {
+		remote-endpoint = <&hdmi_con_in>;
+	};
+};
+
+&hdmi_sound {
+	status = "okay";
+};
+
+&i2c0 {
+	status = "okay";
+
+	rk809: pmic@20 {
+		compatible = "rockchip,rk809";
+		reg = <0x20>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+		#clock-cells = <1>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_int>;
+		rockchip,system-power-controller;
+		vcc1-supply = <&vcc3v3_sys>;
+		vcc2-supply = <&vcc3v3_sys>;
+		vcc3-supply = <&vcc3v3_sys>;
+		vcc4-supply = <&vcc3v3_sys>;
+		vcc5-supply = <&vcc3v3_sys>;
+		vcc6-supply = <&vcc3v3_sys>;
+		vcc7-supply = <&vcc3v3_sys>;
+		vcc8-supply = <&vcc3v3_sys>;
+		vcc9-supply = <&vcc3v3_sys>;
+		wakeup-source;
+
+		regulators {
+			vdd_logic: DCDC_REG1 {
+				regulator-name = "vdd_logic";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-init-microvolt = <900000>;
+				regulator-initial-mode = <0x2>;
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1350000>;
+				regulator-ramp-delay = <6001>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vdd_gpu: DCDC_REG2 {
+				regulator-name = "vdd_gpu";
+				regulator-init-microvolt = <900000>;
+				regulator-initial-mode = <0x2>;
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1350000>;
+				regulator-ramp-delay = <6001>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcc_ddr: DCDC_REG3 {
+				regulator-name = "vcc_ddr";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-initial-mode = <0x2>;
+
+				regulator-state-mem {
+					regulator-on-in-suspend;
+				};
+			};
+
+			vdd_npu: DCDC_REG4 {
+				regulator-name = "vdd_npu";
+				regulator-init-microvolt = <900000>;
+				regulator-initial-mode = <0x2>;
+				regulator-min-microvolt = <500000>;
+				regulator-max-microvolt = <1350000>;
+				regulator-ramp-delay = <6001>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcc_1v8: DCDC_REG5 {
+				regulator-name = "vcc_1v8";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vdda0v9_image: LDO_REG1 {
+				regulator-name = "vdda0v9_image";
+				regulator-min-microvolt = <900000>;
+				regulator-max-microvolt = <900000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vdda_0v9: LDO_REG2 {
+				regulator-name = "vdda_0v9";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <900000>;
+				regulator-max-microvolt = <900000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vdda0v9_pmu: LDO_REG3 {
+				regulator-name = "vdda0v9_pmu";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <900000>;
+				regulator-max-microvolt = <900000>;
+
+				regulator-state-mem {
+					regulator-on-in-suspend;
+					regulator-suspend-microvolt = <900000>;
+					};
+			};
+
+			vccio_acodec: LDO_REG4 {
+				regulator-name = "vccio_acodec";
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vccio_sd: LDO_REG5 {
+				regulator-name = "vccio_sd";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <3300000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcc3v3_pmu: LDO_REG6 {
+				regulator-name = "vcc3v3_pmu";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <3300000>;
+				regulator-max-microvolt = <3300000>;
+
+				regulator-state-mem {
+					regulator-on-in-suspend;
+					regulator-suspend-microvolt = <3300000>;
+				};
+			};
+
+			vcca_1v8: LDO_REG7 {
+				regulator-name = "vcca_1v8";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcca1v8_pmu: LDO_REG8 {
+				regulator-name = "vcca1v8_pmu";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-on-in-suspend;
+					regulator-suspend-microvolt = <1800000>;
+				};
+			};
+
+			vcca1v8_image: LDO_REG9 {
+				regulator-name = "vcca1v8_image";
+				regulator-min-microvolt = <1800000>;
+				regulator-max-microvolt = <1800000>;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcc_3v3: SWITCH_REG1 {
+				regulator-name = "vcc_3v3";
+				regulator-always-on;
+				regulator-boot-on;
+
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+
+			vcc3v3_sd: SWITCH_REG2 {
+				regulator-name = "vcc3v3_sd";
+				regulator-always-on;
+				regulator-boot-on;
+				regulator-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+		};
+	};
+};
+
+&i2s0_8ch {
+	status = "okay";
+};
+
+&mdio0 {
+	rgmii_phy0: phy@0 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x0>;
+	};
+};
+
+&mdio1 {
+	rgmii_phy1: phy@0 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x0>;
+	};
+};
+
+&pcie30phy {
+	status = "okay";
+};
+
+&pcie3x2 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&pcie_reset_pin>;
+	reset-gpios = <&gpio2 RK_PD6 GPIO_ACTIVE_HIGH>;
+	vpcie3v3-supply = <&vcc3v3_pcie>;
+	status = "okay";
+};
+
+&pinctrl {
+	leds {
+		user_led_enable_h: user-led-enable-h {
+			rockchip,pins = <1 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	sdio-pwrseq {
+		wifi_enable_h: wifi-enable-h {
+			rockchip,pins = <3 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	usb {
+		vcc5v0_host_en: vcc5v0-host-en {
+			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		vcc5v0_otg_en: vcc5v0-otg-en {
+			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pcie {
+		pcie_reset_pin: pcie-reset-pin {
+			rockchip,pins = <2 RK_PD6 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+		vcc3v3_pcie_en_pin: vcc3v3-pcie-en-pin {
+			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pmic {
+		pmic_int: pmic_int {
+			rockchip,pins =
+				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+};
+
+&pmu_io_domains {
+	pmuio1-supply = <&vcc3v3_pmu>;
+	pmuio2-supply = <&vcc3v3_pmu>;
+	vccio1-supply = <&vccio_acodec>;
+	vccio2-supply = <&vcc_1v8>;
+	vccio3-supply = <&vccio_sd>;
+	vccio4-supply = <&vcc_1v8>;
+	vccio5-supply = <&vcc_3v3>;
+	vccio6-supply = <&vcc_1v8>;
+	vccio7-supply = <&vcc_3v3>;
+	status = "okay";
+};
+
+&saradc {
+	vref-supply = <&vcca_1v8>;
+	status = "okay";
+};
+
+&sata2 {
+	status = "okay";
+};
+
+&sdhci {
+	bus-width = <8>;
+	max-frequency = <200000000>;
+	non-removable;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_bus8 &emmc_clk &emmc_cmd &emmc_datastrobe>;
+	status = "okay";
+};
+
+&sdmmc0 {
+	bus-width = <4>;
+	cap-sd-highspeed;
+	cd-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_LOW>;
+	disable-wp;
+	pinctrl-names = "default";
+	pinctrl-0 = <&sdmmc0_bus4 &sdmmc0_clk &sdmmc0_cmd &sdmmc0_det>;
+	sd-uhs-sdr104;
+	vmmc-supply = <&vcc3v3_sd>;
+	vqmmc-supply = <&vccio_sd>;
+	status = "okay";
+};
+
+&tsadc {
+	status = "okay";
+};
+
+&uart2 {
+	status = "okay";
+};
+
+&usb2phy0_host {
+	phy-supply = <&vcc5v0_host>;
+	status = "okay";
+};
+
+&usb2phy0 {
+	status = "okay";
+};
+
+&usb2phy1 {
+	status = "okay";
+};
+
+&usb2phy0_otg {
+	status = "okay";
+};
+
+&usb2phy1_host {
+	phy-supply = <&vcc5v0_host>;
+	status = "okay";
+};
+
+&usb2phy1_otg {
+	phy-supply = <&vcc5v0_host>;
+	status = "okay";
+};
+
+&usb_host0_ehci {
+	status = "okay";
+};
+
+&usb_host0_ohci {
+	status = "okay";
+};
+
+&usb_host1_ehci {
+	status = "okay";
+};
+
+&usb_host1_ohci {
+	status = "okay";
+};
+
+&usb_host0_xhci {
+	status = "okay";
+};
+
+&usb_host1_xhci {
+	status = "okay";
+};
+
+&vp0 {
+	vp0_out_hdmi: endpoint@ROCKCHIP_VOP2_EP_HDMI0 {
+		reg = <ROCKCHIP_VOP2_EP_HDMI0>;
+		remote-endpoint = <&hdmi_in_vp0>;
+	};
+};
+
+&vop {
+	status = "okay";
+	assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>;
+	assigned-clock-parents = <&pmucru PLL_HPLL>, <&cru PLL_VPLL>;
+};
+
+&vop_mmu {
+	status = "okay";
+};