All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v4 0/1] Add Radxa ROCK 3 Model A support in U-boot.
@ 2023-02-14 15:18 Akash Gajjar
  2023-02-14 15:18 ` [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support Akash Gajjar
  0 siblings, 1 reply; 6+ messages in thread
From: Akash Gajjar @ 2023-02-14 15:18 UTC (permalink / raw)
  To: naoki, kever.yang
  Cc: Akash Gajjar, Simon Glass, Philipp Tomsich, Joseph Chen,
	William Zhang, Philippe Reynes, Fabio Estevam, Michal Simek,
	Marcel Ziswiler, Samuel Holland, Pali Rohár,
	Frieder Schrempf, u-boot

ROCK 3 Model A is rk3568 based soc board from Radxa, Add board support in 
u-boot. Booting logs available at https://paste.ubuntu.com/p/v9BNrB7MdM/

Akash Gajjar (1):
  arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support

 arch/arm/dts/Makefile                   |   3 +-
 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
 arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
 board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
 configs/rock-3a-rk3568_defconfig        |  74 +++
 5 files changed, 716 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
 create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
 create mode 100644 configs/rock-3a-rk3568_defconfig

-- 
2.25.1


^ permalink raw reply	[flat|nested] 6+ messages in thread

* [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support
  2023-02-14 15:18 [PATCH v4 0/1] Add Radxa ROCK 3 Model A support in U-boot Akash Gajjar
@ 2023-02-14 15:18 ` Akash Gajjar
  2023-02-16  8:41   ` Kever Yang
  2023-02-23  0:31   ` Vasily Khoruzhick
  0 siblings, 2 replies; 6+ messages in thread
From: Akash Gajjar @ 2023-02-14 15:18 UTC (permalink / raw)
  To: naoki, kever.yang
  Cc: Akash Gajjar, Simon Glass, Philipp Tomsich, Joseph Chen,
	William Zhang, Philippe Reynes, Fabio Estevam, Michal Simek,
	Marcel Ziswiler, Samuel Holland, Pali Rohár,
	Frieder Schrempf, u-boot

Add Radxa ROCK 3 Model A support. sync rk3568-rock-3a.dts from Linux 6.2.0-rc7

Board Specifications
- Rockchip RK3568
- 2/4/8GB LPDDR4 3200MT/s
- eMMC socket, SD card slot
- GbE LAN
- PCIe 3.0/2.0
- M.2 Connector
- 3.5mm Audio jack with mic
- HDMI 2.0, MIPI DSI/CSI
- USB 3.0 Host/OTG, USB 2.0 Host
- 40-pin GPIO expansion ports
- USB Type C PD 2.0, 9V/2A, 12V/2A, 15V/2A, 20V/2A

Refer Linux commit <22a442e6586c>
("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")

Signed-off-by: Akash Gajjar <gajjar04akash@gmail.com>
---
Changes in v2:
- Ammend the commit message, Replace Rock Pi 3a with ROCK3A Model A. Update the
  specs from https://wiki.radxa.com/Rock3/3a
- Sync missing node in dts, still some of the nodes like vop, vop mmu, i2s2_2ch
  gpu, hdmi removed as there is no driver support present in u-boot.
- Duplicated sdmmc node removed from dts.
Changes in v3:
- Replace rock-pi-3a-rk3568_defconfig with rock-3a-rk3568_defconfig
Changes in v4:
- Add maintainer for the board
---
 arch/arm/dts/Makefile                   |   3 +-
 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
 arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
 board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
 configs/rock-3a-rk3568_defconfig        |  74 +++
 5 files changed, 716 insertions(+), 1 deletion(-)
 create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
 create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
 create mode 100644 configs/rock-3a-rk3568_defconfig

diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 9d647b9639..945843bebc 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -165,7 +165,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
 	rk3399pro-rock-pi-n10.dtb
 
 dtb-$(CONFIG_ROCKCHIP_RK3568) += \
-	rk3568-evb.dtb
+	rk3568-evb.dtb \
+	rk3568-rock-3a.dtb
 
 dtb-$(CONFIG_ROCKCHIP_RV1108) += \
 	rv1108-elgin-r1.dtb \
diff --git a/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
new file mode 100644
index 0000000000..ae23ae8587
--- /dev/null
+++ b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
@@ -0,0 +1,24 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2021 Rockchip Electronics Co., Ltd
+ * (C) Copyright 2023 Akash Gajjar <gajjar04akash@gmail.com>
+ */
+
+#include "rk356x-u-boot.dtsi"
+
+/ {
+	chosen {
+		stdout-path = &uart2;
+		u-boot,spl-boot-order = "same-as-spl", &sdmmc0;
+	};
+};
+
+&sdmmc0 {
+	status = "okay";
+};
+
+&uart2 {
+	clock-frequency = <24000000>;
+	u-boot,dm-spl;
+	status = "okay";
+};
diff --git a/arch/arm/dts/rk3568-rock-3a.dts b/arch/arm/dts/rk3568-rock-3a.dts
new file mode 100644
index 0000000000..a2f2baa4ea
--- /dev/null
+++ b/arch/arm/dts/rk3568-rock-3a.dts
@@ -0,0 +1,609 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
+ * Copyright (c) 2023 Akash Gajjar <gajjar04akash@gmail.com>
+ */
+
+/dts-v1/;
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include "rk3568.dtsi"
+
+/ {
+	model = "Radxa ROCK3 Model A";
+	compatible = "radxa,rock3a", "rockchip,rk3568";
+
+	chosen: chosen {
+		stdout-path = "serial2:1500000n8";
+	};
+
+	gmac1_clkin: external-gmac1-clock {
+		compatible = "fixed-clock";
+		clock-frequency = <125000000>;
+		clock-output-names = "gmac1_clkin";
+		#clock-cells = <0>;
+	};
+
+	vcc12v_dcin: vcc12v-dcin-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc12v_dcin";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <12000000>;
+		regulator-max-microvolt = <12000000>;
+	};
+
+	vcc3v3_sys: vcc3v3-sys-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc3v3_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc12v_dcin>;
+	};
+
+	vcc5v0_sys: vcc5v0-sys-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_sys";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc12v_dcin>;
+	};
+
+	vcc5v0_usb: vcc5v0-usb-regulator {
+		compatible = "regulator-fixed";
+		regulator-name = "vcc5v0_usb";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc12v_dcin>;
+	};
+
+	vcc5v0_usb_host: vcc5v0-usb-host-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc5v0_usb_host_en>;
+		regulator-name = "vcc5v0_usb_host";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc5v0_usb>;
+	};
+
+	vcc5v0_usb_hub: vcc5v0-usb-hub-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc5v0_usb_hub_en>;
+		regulator-name = "vcc5v0_usb_hub";
+		regulator-always-on;
+		vin-supply = <&vcc5v0_usb>;
+	};
+
+	vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		regulator-name = "vcc5v0_usb_otg";
+		regulator-min-microvolt = <5000000>;
+		regulator-max-microvolt = <5000000>;
+		vin-supply = <&vcc5v0_usb>;
+	};
+
+	vcc_cam: vcc-cam-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc_cam_en>;
+		regulator-name = "vcc_cam";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc3v3_sys>;
+
+		regulator-state-mem {
+			regulator-off-in-suspend;
+		};
+	};
+
+	vcc_mipi: vcc-mipi-regulator {
+		compatible = "regulator-fixed";
+		enable-active-high;
+		gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&vcc_mipi_en>;
+		regulator-name = "vcc_mipi";
+		regulator-min-microvolt = <3300000>;
+		regulator-max-microvolt = <3300000>;
+		vin-supply = <&vcc3v3_sys>;
+
+		regulator-state-mem {
+			regulator-off-in-suspend;
+		};
+	};
+};
+
+&combphy0 {
+	status = "okay";
+};
+
+&combphy1 {
+	status = "okay";
+};
+
+&combphy2 {
+	status = "okay";
+};
+
+&cpu0 {
+	cpu-supply = <&vdd_cpu>;
+};
+
+&cpu1 {
+	cpu-supply = <&vdd_cpu>;
+};
+
+&cpu2 {
+	cpu-supply = <&vdd_cpu>;
+};
+
+&cpu3 {
+	cpu-supply = <&vdd_cpu>;
+};
+
+&gmac1 {
+	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
+	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
+	clock_in_out = "input";
+	phy-handle = <&rgmii_phy1>;
+	phy-mode = "rgmii-id";
+	pinctrl-names = "default";
+	status = "okay";
+};
+
+&i2c0 {
+	status = "okay";
+
+	vdd_cpu: regulator@1c {
+		compatible = "tcs,tcs4525";
+		reg = <0x1c>;
+		fcs,suspend-voltage-selector = <1>;
+		regulator-name = "vdd_cpu";
+		regulator-always-on;
+		regulator-boot-on;
+		regulator-min-microvolt = <800000>;
+		regulator-max-microvolt = <1150000>;
+		regulator-ramp-delay = <2300>;
+		vin-supply = <&vcc5v0_sys>;
+
+		regulator-state-mem {
+			regulator-off-in-suspend;
+		};
+	};
+
+	rk809: pmic@20 {
+		compatible = "rockchip,rk809";
+		reg = <0x20>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
+		assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
+		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
+		#clock-cells = <1>;
+		clock-names = "mclk";
+		clocks = <&cru I2S1_MCLKOUT_TX>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
+		rockchip,system-power-controller;
+		#sound-dai-cells = <0>;
+		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-always-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;
+				};
+			};
+
+			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-always-on;
+				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-state-mem {
+					regulator-off-in-suspend;
+				};
+			};
+		};
+
+		codec {
+			mic-in-differential;
+		};
+	};
+};
+
+&i2c3 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c3m1_xfer>;
+	status = "disabled";
+};
+
+&i2c4 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&i2c4m1_xfer>;
+	status = "disabled";
+};
+
+&i2c5 {
+	status = "okay";
+
+	hym8563: rtc@51 {
+		compatible = "haoyu,hym8563";
+		reg = <0x51>;
+		interrupt-parent = <&gpio0>;
+		interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
+		#clock-cells = <0>;
+		clock-output-names = "rtcic_32kout";
+		pinctrl-names = "default";
+		pinctrl-0 = <&hym8563_int>;
+		wakeup-source;
+	};
+};
+
+&i2s0_8ch {
+	status = "okay";
+};
+
+&i2s1_8ch {
+	rockchip,trcm-sync-tx-only;
+	status = "okay";
+};
+
+&mdio1 {
+	rgmii_phy1: ethernet-phy@0 {
+		compatible = "ethernet-phy-ieee802.3-c22";
+		reg = <0x0>;
+		pinctrl-names = "default";
+		pinctrl-0 = <&eth_phy_rst>;
+		reset-assert-us = <20000>;
+		reset-deassert-us = <100000>;
+		reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
+	};
+};
+
+&pinctrl {
+	cam {
+		vcc_cam_en: vcc_cam_en {
+			rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	display {
+		vcc_mipi_en: vcc_mipi_en {
+			rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	ethernet {
+		eth_phy_rst: eth_phy_rst {
+			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	hym8563 {
+		hym8563_int: hym8563-int {
+			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+
+	leds {
+		led_user_en: led_user_en {
+			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pcie {
+		pcie_enable_h: pcie-enable-h {
+			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		pcie_reset_h: pcie-reset-h {
+			rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	pmic {
+		pmic_int: pmic_int {
+			rockchip,pins =
+				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
+		};
+	};
+
+	usb {
+		vcc5v0_usb_host_en: vcc5v0_usb_host_en {
+			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+		vcc5v0_usb_hub_en: vcc5v0_usb_hub_en {
+			rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
+			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	bt {
+		bt_enable: bt-enable {
+			rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+
+		bt_host_wake: bt-host-wake {
+			rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
+		};
+
+		bt_wake: bt-wake {
+			rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+
+	sdio-pwrseq {
+		wifi_enable: wifi-enable {
+			rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
+		};
+	};
+};
+
+&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";
+};
+
+&uart2 {
+	status = "okay";
+};
+
+&usb_host0_ehci {
+	status = "okay";
+};
+
+&usb_host0_ohci {
+	status = "okay";
+};
+
+&usb_host0_xhci {
+	extcon = <&usb2phy0>;
+	status = "okay";
+};
+
+&usb_host1_ehci {
+	status = "okay";
+};
+
+&usb_host1_ohci {
+	status = "okay";
+};
+
+&usb_host1_xhci {
+	status = "okay";
+};
+
+&usb2phy0 {
+	status = "okay";
+};
+
+&usb2phy0_host {
+	phy-supply = <&vcc5v0_usb_host>;
+	status = "okay";
+};
+
+&usb2phy0_otg {
+	phy-supply = <&vcc5v0_usb_otg>;
+	status = "okay";
+};
+
+&usb2phy1 {
+	status = "okay";
+};
+
+&usb2phy1_host {
+	phy-supply = <&vcc5v0_usb_host>;
+	status = "okay";
+};
+
+&usb2phy1_otg {
+	phy-supply = <&vcc5v0_usb_host>;
+	status = "okay";
+};
diff --git a/board/rockchip/evb_rk3568/MAINTAINERS b/board/rockchip/evb_rk3568/MAINTAINERS
index b6ea498d2b..aebecd901c 100644
--- a/board/rockchip/evb_rk3568/MAINTAINERS
+++ b/board/rockchip/evb_rk3568/MAINTAINERS
@@ -4,3 +4,10 @@ S:      Maintained
 F:      board/rockchip/evb_rk3568
 F:      include/configs/evb_rk3568.h
 F:      configs/evb-rk3568_defconfig
+
+ROCK-3A
+M:      Akash Gajjar <gajjar04akash@gmail.com>
+S:      Maintained
+F:      configs/rock-3a-rk3568_defconfig
+F:      arch/arm/dts/rk3568-rock-3a.dts
+F:      arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
new file mode 100644
index 0000000000..1686c8c1aa
--- /dev/null
+++ b/configs/rock-3a-rk3568_defconfig
@@ -0,0 +1,74 @@
+CONFIG_ARM=y
+CONFIG_SKIP_LOWLEVEL_INIT=y
+CONFIG_COUNTER_FREQUENCY=24000000
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_TEXT_BASE=0x00a00000
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_NR_DRAM_BANKS=2
+CONFIG_DEFAULT_DEVICE_TREE="rk3568-rock-3a"
+CONFIG_ROCKCHIP_RK3568=y
+CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
+CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
+CONFIG_SPL_MMC=y
+CONFIG_SPL_SERIAL=y
+CONFIG_SPL_STACK_R_ADDR=0x600000
+CONFIG_TARGET_EVB_RK3568=y
+CONFIG_DEBUG_UART_BASE=0xFE660000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_SYS_LOAD_ADDR=0xc00800
+CONFIG_DEBUG_UART=y
+CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
+CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-rock-3a.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_SPL_MAX_SIZE=0x20000
+CONFIG_SPL_PAD_TO=0x7f8000
+CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
+CONFIG_SPL_BSS_START_ADDR=0x4000000
+CONFIG_SPL_BSS_MAX_SIZE=0x4000
+# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
+# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_RK8XX=y
+CONFIG_SPL_PMIC_RK8XX=y
+CONFIG_SPL_STACK=0x400000
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_ATF=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MMC=y
+# CONFIG_CMD_SETEXPR is not set
+# CONFIG_SPL_DOS_PARTITION is not set
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_OF_LIVE=y
+CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_REGULATOR_RK8XX=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SPL_SYSCON=y
+CONFIG_SPL_CLK=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_MISC=y
+CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_SPL_RAM=y
+CONFIG_DM_RESET=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550_MEM32=y
+CONFIG_SYSRESET=y
+# CONFIG_BINMAN_FDT is not set
+CONFIG_ERRNO_STR=y
-- 
2.25.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support
  2023-02-14 15:18 ` [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support Akash Gajjar
@ 2023-02-16  8:41   ` Kever Yang
  2023-02-23  0:31   ` Vasily Khoruzhick
  1 sibling, 0 replies; 6+ messages in thread
From: Kever Yang @ 2023-02-16  8:41 UTC (permalink / raw)
  To: Akash Gajjar, naoki
  Cc: Simon Glass, Philipp Tomsich, Joseph Chen, William Zhang,
	Philippe Reynes, Fabio Estevam, Michal Simek, Marcel Ziswiler,
	Samuel Holland, Pali Rohár, Frieder Schrempf, u-boot


On 2023/2/14 23:18, Akash Gajjar wrote:
> Add Radxa ROCK 3 Model A support. sync rk3568-rock-3a.dts from Linux 6.2.0-rc7
>
> Board Specifications
> - Rockchip RK3568
> - 2/4/8GB LPDDR4 3200MT/s
> - eMMC socket, SD card slot
> - GbE LAN
> - PCIe 3.0/2.0
> - M.2 Connector
> - 3.5mm Audio jack with mic
> - HDMI 2.0, MIPI DSI/CSI
> - USB 3.0 Host/OTG, USB 2.0 Host
> - 40-pin GPIO expansion ports
> - USB Type C PD 2.0, 9V/2A, 12V/2A, 15V/2A, 20V/2A
>
> Refer Linux commit <22a442e6586c>
> ("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")
>
> Signed-off-by: Akash Gajjar <gajjar04akash@gmail.com>
Reviewed-by: Kever Yang <kever.yang@rock-chips.com>

Thanks,
- Kever
> ---
> Changes in v2:
> - Ammend the commit message, Replace Rock Pi 3a with ROCK3A Model A. Update the
>    specs from https://wiki.radxa.com/Rock3/3a
> - Sync missing node in dts, still some of the nodes like vop, vop mmu, i2s2_2ch
>    gpu, hdmi removed as there is no driver support present in u-boot.
> - Duplicated sdmmc node removed from dts.
> Changes in v3:
> - Replace rock-pi-3a-rk3568_defconfig with rock-3a-rk3568_defconfig
> Changes in v4:
> - Add maintainer for the board
> ---
>   arch/arm/dts/Makefile                   |   3 +-
>   arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
>   arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
>   board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
>   configs/rock-3a-rk3568_defconfig        |  74 +++
>   5 files changed, 716 insertions(+), 1 deletion(-)
>   create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>   create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
>   create mode 100644 configs/rock-3a-rk3568_defconfig
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 9d647b9639..945843bebc 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -165,7 +165,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
>   	rk3399pro-rock-pi-n10.dtb
>   
>   dtb-$(CONFIG_ROCKCHIP_RK3568) += \
> -	rk3568-evb.dtb
> +	rk3568-evb.dtb \
> +	rk3568-rock-3a.dtb
>   
>   dtb-$(CONFIG_ROCKCHIP_RV1108) += \
>   	rv1108-elgin-r1.dtb \
> diff --git a/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> new file mode 100644
> index 0000000000..ae23ae8587
> --- /dev/null
> +++ b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> @@ -0,0 +1,24 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2021 Rockchip Electronics Co., Ltd
> + * (C) Copyright 2023 Akash Gajjar <gajjar04akash@gmail.com>
> + */
> +
> +#include "rk356x-u-boot.dtsi"
> +
> +/ {
> +	chosen {
> +		stdout-path = &uart2;
> +		u-boot,spl-boot-order = "same-as-spl", &sdmmc0;
> +	};
> +};
> +
> +&sdmmc0 {
> +	status = "okay";
> +};
> +
> +&uart2 {
> +	clock-frequency = <24000000>;
> +	u-boot,dm-spl;
> +	status = "okay";
> +};
> diff --git a/arch/arm/dts/rk3568-rock-3a.dts b/arch/arm/dts/rk3568-rock-3a.dts
> new file mode 100644
> index 0000000000..a2f2baa4ea
> --- /dev/null
> +++ b/arch/arm/dts/rk3568-rock-3a.dts
> @@ -0,0 +1,609 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
> + * Copyright (c) 2023 Akash Gajjar <gajjar04akash@gmail.com>
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/pinctrl/rockchip.h>
> +#include "rk3568.dtsi"
> +
> +/ {
> +	model = "Radxa ROCK3 Model A";
> +	compatible = "radxa,rock3a", "rockchip,rk3568";
> +
> +	chosen: chosen {
> +		stdout-path = "serial2:1500000n8";
> +	};
> +
> +	gmac1_clkin: external-gmac1-clock {
> +		compatible = "fixed-clock";
> +		clock-frequency = <125000000>;
> +		clock-output-names = "gmac1_clkin";
> +		#clock-cells = <0>;
> +	};
> +
> +	vcc12v_dcin: vcc12v-dcin-regulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc12v_dcin";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <12000000>;
> +		regulator-max-microvolt = <12000000>;
> +	};
> +
> +	vcc3v3_sys: vcc3v3-sys-regulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc3v3_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc12v_dcin>;
> +	};
> +
> +	vcc5v0_sys: vcc5v0-sys-regulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc5v0_sys";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc12v_dcin>;
> +	};
> +
> +	vcc5v0_usb: vcc5v0-usb-regulator {
> +		compatible = "regulator-fixed";
> +		regulator-name = "vcc5v0_usb";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc12v_dcin>;
> +	};
> +
> +	vcc5v0_usb_host: vcc5v0-usb-host-regulator {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vcc5v0_usb_host_en>;
> +		regulator-name = "vcc5v0_usb_host";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc5v0_usb>;
> +	};
> +
> +	vcc5v0_usb_hub: vcc5v0-usb-hub-regulator {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vcc5v0_usb_hub_en>;
> +		regulator-name = "vcc5v0_usb_hub";
> +		regulator-always-on;
> +		vin-supply = <&vcc5v0_usb>;
> +	};
> +
> +	vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		regulator-name = "vcc5v0_usb_otg";
> +		regulator-min-microvolt = <5000000>;
> +		regulator-max-microvolt = <5000000>;
> +		vin-supply = <&vcc5v0_usb>;
> +	};
> +
> +	vcc_cam: vcc-cam-regulator {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vcc_cam_en>;
> +		regulator-name = "vcc_cam";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc3v3_sys>;
> +
> +		regulator-state-mem {
> +			regulator-off-in-suspend;
> +		};
> +	};
> +
> +	vcc_mipi: vcc-mipi-regulator {
> +		compatible = "regulator-fixed";
> +		enable-active-high;
> +		gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&vcc_mipi_en>;
> +		regulator-name = "vcc_mipi";
> +		regulator-min-microvolt = <3300000>;
> +		regulator-max-microvolt = <3300000>;
> +		vin-supply = <&vcc3v3_sys>;
> +
> +		regulator-state-mem {
> +			regulator-off-in-suspend;
> +		};
> +	};
> +};
> +
> +&combphy0 {
> +	status = "okay";
> +};
> +
> +&combphy1 {
> +	status = "okay";
> +};
> +
> +&combphy2 {
> +	status = "okay";
> +};
> +
> +&cpu0 {
> +	cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu1 {
> +	cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu2 {
> +	cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu3 {
> +	cpu-supply = <&vdd_cpu>;
> +};
> +
> +&gmac1 {
> +	assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
> +	assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
> +	clock_in_out = "input";
> +	phy-handle = <&rgmii_phy1>;
> +	phy-mode = "rgmii-id";
> +	pinctrl-names = "default";
> +	status = "okay";
> +};
> +
> +&i2c0 {
> +	status = "okay";
> +
> +	vdd_cpu: regulator@1c {
> +		compatible = "tcs,tcs4525";
> +		reg = <0x1c>;
> +		fcs,suspend-voltage-selector = <1>;
> +		regulator-name = "vdd_cpu";
> +		regulator-always-on;
> +		regulator-boot-on;
> +		regulator-min-microvolt = <800000>;
> +		regulator-max-microvolt = <1150000>;
> +		regulator-ramp-delay = <2300>;
> +		vin-supply = <&vcc5v0_sys>;
> +
> +		regulator-state-mem {
> +			regulator-off-in-suspend;
> +		};
> +	};
> +
> +	rk809: pmic@20 {
> +		compatible = "rockchip,rk809";
> +		reg = <0x20>;
> +		interrupt-parent = <&gpio0>;
> +		interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
> +		assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
> +		assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
> +		#clock-cells = <1>;
> +		clock-names = "mclk";
> +		clocks = <&cru I2S1_MCLKOUT_TX>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
> +		rockchip,system-power-controller;
> +		#sound-dai-cells = <0>;
> +		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-always-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;
> +				};
> +			};
> +
> +			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-always-on;
> +				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-state-mem {
> +					regulator-off-in-suspend;
> +				};
> +			};
> +		};
> +
> +		codec {
> +			mic-in-differential;
> +		};
> +	};
> +};
> +
> +&i2c3 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c3m1_xfer>;
> +	status = "disabled";
> +};
> +
> +&i2c4 {
> +	pinctrl-names = "default";
> +	pinctrl-0 = <&i2c4m1_xfer>;
> +	status = "disabled";
> +};
> +
> +&i2c5 {
> +	status = "okay";
> +
> +	hym8563: rtc@51 {
> +		compatible = "haoyu,hym8563";
> +		reg = <0x51>;
> +		interrupt-parent = <&gpio0>;
> +		interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
> +		#clock-cells = <0>;
> +		clock-output-names = "rtcic_32kout";
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&hym8563_int>;
> +		wakeup-source;
> +	};
> +};
> +
> +&i2s0_8ch {
> +	status = "okay";
> +};
> +
> +&i2s1_8ch {
> +	rockchip,trcm-sync-tx-only;
> +	status = "okay";
> +};
> +
> +&mdio1 {
> +	rgmii_phy1: ethernet-phy@0 {
> +		compatible = "ethernet-phy-ieee802.3-c22";
> +		reg = <0x0>;
> +		pinctrl-names = "default";
> +		pinctrl-0 = <&eth_phy_rst>;
> +		reset-assert-us = <20000>;
> +		reset-deassert-us = <100000>;
> +		reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
> +	};
> +};
> +
> +&pinctrl {
> +	cam {
> +		vcc_cam_en: vcc_cam_en {
> +			rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	display {
> +		vcc_mipi_en: vcc_mipi_en {
> +			rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	ethernet {
> +		eth_phy_rst: eth_phy_rst {
> +			rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	hym8563 {
> +		hym8563_int: hym8563-int {
> +			rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
> +		};
> +	};
> +
> +	leds {
> +		led_user_en: led_user_en {
> +			rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	pcie {
> +		pcie_enable_h: pcie-enable-h {
> +			rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +
> +		pcie_reset_h: pcie-reset-h {
> +			rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	pmic {
> +		pmic_int: pmic_int {
> +			rockchip,pins =
> +				<0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
> +		};
> +	};
> +
> +	usb {
> +		vcc5v0_usb_host_en: vcc5v0_usb_host_en {
> +			rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +		vcc5v0_usb_hub_en: vcc5v0_usb_hub_en {
> +			rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +		vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
> +			rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	bt {
> +		bt_enable: bt-enable {
> +			rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +
> +		bt_host_wake: bt-host-wake {
> +			rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
> +		};
> +
> +		bt_wake: bt-wake {
> +			rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +
> +	sdio-pwrseq {
> +		wifi_enable: wifi-enable {
> +			rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> +		};
> +	};
> +};
> +
> +&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";
> +};
> +
> +&uart2 {
> +	status = "okay";
> +};
> +
> +&usb_host0_ehci {
> +	status = "okay";
> +};
> +
> +&usb_host0_ohci {
> +	status = "okay";
> +};
> +
> +&usb_host0_xhci {
> +	extcon = <&usb2phy0>;
> +	status = "okay";
> +};
> +
> +&usb_host1_ehci {
> +	status = "okay";
> +};
> +
> +&usb_host1_ohci {
> +	status = "okay";
> +};
> +
> +&usb_host1_xhci {
> +	status = "okay";
> +};
> +
> +&usb2phy0 {
> +	status = "okay";
> +};
> +
> +&usb2phy0_host {
> +	phy-supply = <&vcc5v0_usb_host>;
> +	status = "okay";
> +};
> +
> +&usb2phy0_otg {
> +	phy-supply = <&vcc5v0_usb_otg>;
> +	status = "okay";
> +};
> +
> +&usb2phy1 {
> +	status = "okay";
> +};
> +
> +&usb2phy1_host {
> +	phy-supply = <&vcc5v0_usb_host>;
> +	status = "okay";
> +};
> +
> +&usb2phy1_otg {
> +	phy-supply = <&vcc5v0_usb_host>;
> +	status = "okay";
> +};
> diff --git a/board/rockchip/evb_rk3568/MAINTAINERS b/board/rockchip/evb_rk3568/MAINTAINERS
> index b6ea498d2b..aebecd901c 100644
> --- a/board/rockchip/evb_rk3568/MAINTAINERS
> +++ b/board/rockchip/evb_rk3568/MAINTAINERS
> @@ -4,3 +4,10 @@ S:      Maintained
>   F:      board/rockchip/evb_rk3568
>   F:      include/configs/evb_rk3568.h
>   F:      configs/evb-rk3568_defconfig
> +
> +ROCK-3A
> +M:      Akash Gajjar <gajjar04akash@gmail.com>
> +S:      Maintained
> +F:      configs/rock-3a-rk3568_defconfig
> +F:      arch/arm/dts/rk3568-rock-3a.dts
> +F:      arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
> new file mode 100644
> index 0000000000..1686c8c1aa
> --- /dev/null
> +++ b/configs/rock-3a-rk3568_defconfig
> @@ -0,0 +1,74 @@
> +CONFIG_ARM=y
> +CONFIG_SKIP_LOWLEVEL_INIT=y
> +CONFIG_COUNTER_FREQUENCY=24000000
> +CONFIG_ARCH_ROCKCHIP=y
> +CONFIG_TEXT_BASE=0x00a00000
> +CONFIG_SPL_LIBCOMMON_SUPPORT=y
> +CONFIG_SPL_LIBGENERIC_SUPPORT=y
> +CONFIG_NR_DRAM_BANKS=2
> +CONFIG_DEFAULT_DEVICE_TREE="rk3568-rock-3a"
> +CONFIG_ROCKCHIP_RK3568=y
> +CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
> +CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
> +CONFIG_SPL_MMC=y
> +CONFIG_SPL_SERIAL=y
> +CONFIG_SPL_STACK_R_ADDR=0x600000
> +CONFIG_TARGET_EVB_RK3568=y
> +CONFIG_DEBUG_UART_BASE=0xFE660000
> +CONFIG_DEBUG_UART_CLOCK=24000000
> +CONFIG_SYS_LOAD_ADDR=0xc00800
> +CONFIG_DEBUG_UART=y
> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000
> +CONFIG_FIT=y
> +CONFIG_FIT_VERBOSE=y
> +CONFIG_SPL_LOAD_FIT=y
> +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-rock-3a.dtb"
> +# CONFIG_DISPLAY_CPUINFO is not set
> +CONFIG_DISPLAY_BOARDINFO_LATE=y
> +CONFIG_SPL_MAX_SIZE=0x20000
> +CONFIG_SPL_PAD_TO=0x7f8000
> +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
> +CONFIG_SPL_BSS_START_ADDR=0x4000000
> +CONFIG_SPL_BSS_MAX_SIZE=0x4000
> +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
> +CONFIG_DM_PMIC=y
> +CONFIG_PMIC_RK8XX=y
> +CONFIG_SPL_PMIC_RK8XX=y
> +CONFIG_SPL_STACK=0x400000
> +CONFIG_SPL_STACK_R=y
> +CONFIG_SPL_ATF=y
> +CONFIG_CMD_I2C=y
> +CONFIG_CMD_GPT=y
> +CONFIG_CMD_MMC=y
> +# CONFIG_CMD_SETEXPR is not set
> +# CONFIG_SPL_DOS_PARTITION is not set
> +CONFIG_SPL_OF_CONTROL=y
> +CONFIG_OF_LIVE=y
> +CONFIG_NET_RANDOM_ETHADDR=y
> +CONFIG_REGULATOR_RK8XX=y
> +CONFIG_SPL_REGMAP=y
> +CONFIG_SPL_SYSCON=y
> +CONFIG_SPL_CLK=y
> +CONFIG_ROCKCHIP_GPIO=y
> +CONFIG_SYS_I2C_ROCKCHIP=y
> +CONFIG_MISC=y
> +CONFIG_SUPPORT_EMMC_RPMB=y
> +CONFIG_MMC_DW=y
> +CONFIG_MMC_DW_ROCKCHIP=y
> +CONFIG_MMC_SDHCI=y
> +CONFIG_MMC_SDHCI_SDMA=y
> +CONFIG_MMC_SDHCI_ROCKCHIP=y
> +CONFIG_ETH_DESIGNWARE=y
> +CONFIG_GMAC_ROCKCHIP=y
> +CONFIG_REGULATOR_PWM=y
> +CONFIG_PWM_ROCKCHIP=y
> +CONFIG_SPL_RAM=y
> +CONFIG_DM_RESET=y
> +CONFIG_BAUDRATE=1500000
> +CONFIG_DEBUG_UART_SHIFT=2
> +CONFIG_SYS_NS16550_MEM32=y
> +CONFIG_SYSRESET=y
> +# CONFIG_BINMAN_FDT is not set
> +CONFIG_ERRNO_STR=y

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support
  2023-02-14 15:18 ` [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support Akash Gajjar
  2023-02-16  8:41   ` Kever Yang
@ 2023-02-23  0:31   ` Vasily Khoruzhick
  2023-02-23 15:40     ` Akash
  1 sibling, 1 reply; 6+ messages in thread
From: Vasily Khoruzhick @ 2023-02-23  0:31 UTC (permalink / raw)
  To: Akash Gajjar
  Cc: naoki, kever.yang, Simon Glass, Philipp Tomsich, Joseph Chen,
	William Zhang, Philippe Reynes, Fabio Estevam, Michal Simek,
	Marcel Ziswiler, Samuel Holland, Pali Rohár,
	Frieder Schrempf, u-boot

On Tue, Feb 14, 2023 at 12:11 PM Akash Gajjar <gajjar04akash@gmail.com> wrote:

Hi Akash,

> Add Radxa ROCK 3 Model A support. sync rk3568-rock-3a.dts from Linux 6.2.0-rc7
>
> Board Specifications
> - Rockchip RK3568
> - 2/4/8GB LPDDR4 3200MT/s
> - eMMC socket, SD card slot

Have you actually tested eMMC support? It seems to be broken when the
system boots off SD card, "mmc info" returns "unable to select a mode
: -70". I have a strong suspicion that it's due to rk_i2c being broken
for rk3568, with debug enabled it complains "I2C Send Start Bit
Timeout" on every i2c transaction.

Could you please share "mmc info" and "regulator status -a" output
from your build?

Regards,
Vasily

> - GbE LAN,
> - PCIe 3.0/2.0
> - M.2 Connector
> - 3.5mm Audio jack with mic
> - HDMI 2.0, MIPI DSI/CSI
> - USB 3.0 Host/OTG, USB 2.0 Host
> - 40-pin GPIO expansion ports
> - USB Type C PD 2.0, 9V/2A, 12V/2A, 15V/2A, 20V/2A
>
> Refer Linux commit <22a442e6586c>
> ("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")
>
> Signed-off-by: Akash Gajjar <gajjar04akash@gmail.com>
> ---
> Changes in v2:
> - Ammend the commit message, Replace Rock Pi 3a with ROCK3A Model A. Update the
>   specs from https://wiki.radxa.com/Rock3/3a
> - Sync missing node in dts, still some of the nodes like vop, vop mmu, i2s2_2ch
>   gpu, hdmi removed as there is no driver support present in u-boot.
> - Duplicated sdmmc node removed from dts.
> Changes in v3:
> - Replace rock-pi-3a-rk3568_defconfig with rock-3a-rk3568_defconfig
> Changes in v4:
> - Add maintainer for the board
> ---
>  arch/arm/dts/Makefile                   |   3 +-
>  arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
>  arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
>  board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
>  configs/rock-3a-rk3568_defconfig        |  74 +++
>  5 files changed, 716 insertions(+), 1 deletion(-)
>  create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>  create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
>  create mode 100644 configs/rock-3a-rk3568_defconfig
>
> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> index 9d647b9639..945843bebc 100644
> --- a/arch/arm/dts/Makefile
> +++ b/arch/arm/dts/Makefile
> @@ -165,7 +165,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
>         rk3399pro-rock-pi-n10.dtb
>
>  dtb-$(CONFIG_ROCKCHIP_RK3568) += \
> -       rk3568-evb.dtb
> +       rk3568-evb.dtb \
> +       rk3568-rock-3a.dtb
>
>  dtb-$(CONFIG_ROCKCHIP_RV1108) += \
>         rv1108-elgin-r1.dtb \
> diff --git a/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> new file mode 100644
> index 0000000000..ae23ae8587
> --- /dev/null
> +++ b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> @@ -0,0 +1,24 @@
> +// SPDX-License-Identifier: GPL-2.0+
> +/*
> + * (C) Copyright 2021 Rockchip Electronics Co., Ltd
> + * (C) Copyright 2023 Akash Gajjar <gajjar04akash@gmail.com>
> + */
> +
> +#include "rk356x-u-boot.dtsi"
> +
> +/ {
> +       chosen {
> +               stdout-path = &uart2;
> +               u-boot,spl-boot-order = "same-as-spl", &sdmmc0;
> +       };
> +};
> +
> +&sdmmc0 {
> +       status = "okay";
> +};
> +
> +&uart2 {
> +       clock-frequency = <24000000>;
> +       u-boot,dm-spl;
> +       status = "okay";
> +};
> diff --git a/arch/arm/dts/rk3568-rock-3a.dts b/arch/arm/dts/rk3568-rock-3a.dts
> new file mode 100644
> index 0000000000..a2f2baa4ea
> --- /dev/null
> +++ b/arch/arm/dts/rk3568-rock-3a.dts
> @@ -0,0 +1,609 @@
> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> +/*
> + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
> + * Copyright (c) 2023 Akash Gajjar <gajjar04akash@gmail.com>
> + */
> +
> +/dts-v1/;
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/pinctrl/rockchip.h>
> +#include "rk3568.dtsi"
> +
> +/ {
> +       model = "Radxa ROCK3 Model A";
> +       compatible = "radxa,rock3a", "rockchip,rk3568";
> +
> +       chosen: chosen {
> +               stdout-path = "serial2:1500000n8";
> +       };
> +
> +       gmac1_clkin: external-gmac1-clock {
> +               compatible = "fixed-clock";
> +               clock-frequency = <125000000>;
> +               clock-output-names = "gmac1_clkin";
> +               #clock-cells = <0>;
> +       };
> +
> +       vcc12v_dcin: vcc12v-dcin-regulator {
> +               compatible = "regulator-fixed";
> +               regulator-name = "vcc12v_dcin";
> +               regulator-always-on;
> +               regulator-boot-on;
> +               regulator-min-microvolt = <12000000>;
> +               regulator-max-microvolt = <12000000>;
> +       };
> +
> +       vcc3v3_sys: vcc3v3-sys-regulator {
> +               compatible = "regulator-fixed";
> +               regulator-name = "vcc3v3_sys";
> +               regulator-always-on;
> +               regulator-boot-on;
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               vin-supply = <&vcc12v_dcin>;
> +       };
> +
> +       vcc5v0_sys: vcc5v0-sys-regulator {
> +               compatible = "regulator-fixed";
> +               regulator-name = "vcc5v0_sys";
> +               regulator-always-on;
> +               regulator-boot-on;
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc12v_dcin>;
> +       };
> +
> +       vcc5v0_usb: vcc5v0-usb-regulator {
> +               compatible = "regulator-fixed";
> +               regulator-name = "vcc5v0_usb";
> +               regulator-always-on;
> +               regulator-boot-on;
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc12v_dcin>;
> +       };
> +
> +       vcc5v0_usb_host: vcc5v0-usb-host-regulator {
> +               compatible = "regulator-fixed";
> +               enable-active-high;
> +               gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&vcc5v0_usb_host_en>;
> +               regulator-name = "vcc5v0_usb_host";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc5v0_usb>;
> +       };
> +
> +       vcc5v0_usb_hub: vcc5v0-usb-hub-regulator {
> +               compatible = "regulator-fixed";
> +               enable-active-high;
> +               gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&vcc5v0_usb_hub_en>;
> +               regulator-name = "vcc5v0_usb_hub";
> +               regulator-always-on;
> +               vin-supply = <&vcc5v0_usb>;
> +       };
> +
> +       vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
> +               compatible = "regulator-fixed";
> +               enable-active-high;
> +               gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> +               pinctrl-names = "default";
> +               regulator-name = "vcc5v0_usb_otg";
> +               regulator-min-microvolt = <5000000>;
> +               regulator-max-microvolt = <5000000>;
> +               vin-supply = <&vcc5v0_usb>;
> +       };
> +
> +       vcc_cam: vcc-cam-regulator {
> +               compatible = "regulator-fixed";
> +               enable-active-high;
> +               gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&vcc_cam_en>;
> +               regulator-name = "vcc_cam";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               vin-supply = <&vcc3v3_sys>;
> +
> +               regulator-state-mem {
> +                       regulator-off-in-suspend;
> +               };
> +       };
> +
> +       vcc_mipi: vcc-mipi-regulator {
> +               compatible = "regulator-fixed";
> +               enable-active-high;
> +               gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&vcc_mipi_en>;
> +               regulator-name = "vcc_mipi";
> +               regulator-min-microvolt = <3300000>;
> +               regulator-max-microvolt = <3300000>;
> +               vin-supply = <&vcc3v3_sys>;
> +
> +               regulator-state-mem {
> +                       regulator-off-in-suspend;
> +               };
> +       };
> +};
> +
> +&combphy0 {
> +       status = "okay";
> +};
> +
> +&combphy1 {
> +       status = "okay";
> +};
> +
> +&combphy2 {
> +       status = "okay";
> +};
> +
> +&cpu0 {
> +       cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu1 {
> +       cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu2 {
> +       cpu-supply = <&vdd_cpu>;
> +};
> +
> +&cpu3 {
> +       cpu-supply = <&vdd_cpu>;
> +};
> +
> +&gmac1 {
> +       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
> +       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
> +       clock_in_out = "input";
> +       phy-handle = <&rgmii_phy1>;
> +       phy-mode = "rgmii-id";
> +       pinctrl-names = "default";
> +       status = "okay";
> +};
> +
> +&i2c0 {
> +       status = "okay";
> +
> +       vdd_cpu: regulator@1c {
> +               compatible = "tcs,tcs4525";
> +               reg = <0x1c>;
> +               fcs,suspend-voltage-selector = <1>;
> +               regulator-name = "vdd_cpu";
> +               regulator-always-on;
> +               regulator-boot-on;
> +               regulator-min-microvolt = <800000>;
> +               regulator-max-microvolt = <1150000>;
> +               regulator-ramp-delay = <2300>;
> +               vin-supply = <&vcc5v0_sys>;
> +
> +               regulator-state-mem {
> +                       regulator-off-in-suspend;
> +               };
> +       };
> +
> +       rk809: pmic@20 {
> +               compatible = "rockchip,rk809";
> +               reg = <0x20>;
> +               interrupt-parent = <&gpio0>;
> +               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
> +               assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
> +               assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
> +               #clock-cells = <1>;
> +               clock-names = "mclk";
> +               clocks = <&cru I2S1_MCLKOUT_TX>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
> +               rockchip,system-power-controller;
> +               #sound-dai-cells = <0>;
> +               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-always-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;
> +                               };
> +                       };
> +
> +                       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-always-on;
> +                               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-state-mem {
> +                                       regulator-off-in-suspend;
> +                               };
> +                       };
> +               };
> +
> +               codec {
> +                       mic-in-differential;
> +               };
> +       };
> +};
> +
> +&i2c3 {
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&i2c3m1_xfer>;
> +       status = "disabled";
> +};
> +
> +&i2c4 {
> +       pinctrl-names = "default";
> +       pinctrl-0 = <&i2c4m1_xfer>;
> +       status = "disabled";
> +};
> +
> +&i2c5 {
> +       status = "okay";
> +
> +       hym8563: rtc@51 {
> +               compatible = "haoyu,hym8563";
> +               reg = <0x51>;
> +               interrupt-parent = <&gpio0>;
> +               interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
> +               #clock-cells = <0>;
> +               clock-output-names = "rtcic_32kout";
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&hym8563_int>;
> +               wakeup-source;
> +       };
> +};
> +
> +&i2s0_8ch {
> +       status = "okay";
> +};
> +
> +&i2s1_8ch {
> +       rockchip,trcm-sync-tx-only;
> +       status = "okay";
> +};
> +
> +&mdio1 {
> +       rgmii_phy1: ethernet-phy@0 {
> +               compatible = "ethernet-phy-ieee802.3-c22";
> +               reg = <0x0>;
> +               pinctrl-names = "default";
> +               pinctrl-0 = <&eth_phy_rst>;
> +               reset-assert-us = <20000>;
> +               reset-deassert-us = <100000>;
> +               reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
> +       };
> +};
> +
> +&pinctrl {
> +       cam {
> +               vcc_cam_en: vcc_cam_en {
> +                       rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       display {
> +               vcc_mipi_en: vcc_mipi_en {
> +                       rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       ethernet {
> +               eth_phy_rst: eth_phy_rst {
> +                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       hym8563 {
> +               hym8563_int: hym8563-int {
> +                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
> +               };
> +       };
> +
> +       leds {
> +               led_user_en: led_user_en {
> +                       rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       pcie {
> +               pcie_enable_h: pcie-enable-h {
> +                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +
> +               pcie_reset_h: pcie-reset-h {
> +                       rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       pmic {
> +               pmic_int: pmic_int {
> +                       rockchip,pins =
> +                               <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
> +               };
> +       };
> +
> +       usb {
> +               vcc5v0_usb_host_en: vcc5v0_usb_host_en {
> +                       rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +               vcc5v0_usb_hub_en: vcc5v0_usb_hub_en {
> +                       rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +               vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
> +                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       bt {
> +               bt_enable: bt-enable {
> +                       rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +
> +               bt_host_wake: bt-host-wake {
> +                       rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
> +               };
> +
> +               bt_wake: bt-wake {
> +                       rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +
> +       sdio-pwrseq {
> +               wifi_enable: wifi-enable {
> +                       rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> +               };
> +       };
> +};
> +
> +&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";
> +};
> +
> +&uart2 {
> +       status = "okay";
> +};
> +
> +&usb_host0_ehci {
> +       status = "okay";
> +};
> +
> +&usb_host0_ohci {
> +       status = "okay";
> +};
> +
> +&usb_host0_xhci {
> +       extcon = <&usb2phy0>;
> +       status = "okay";
> +};
> +
> +&usb_host1_ehci {
> +       status = "okay";
> +};
> +
> +&usb_host1_ohci {
> +       status = "okay";
> +};
> +
> +&usb_host1_xhci {
> +       status = "okay";
> +};
> +
> +&usb2phy0 {
> +       status = "okay";
> +};
> +
> +&usb2phy0_host {
> +       phy-supply = <&vcc5v0_usb_host>;
> +       status = "okay";
> +};
> +
> +&usb2phy0_otg {
> +       phy-supply = <&vcc5v0_usb_otg>;
> +       status = "okay";
> +};
> +
> +&usb2phy1 {
> +       status = "okay";
> +};
> +
> +&usb2phy1_host {
> +       phy-supply = <&vcc5v0_usb_host>;
> +       status = "okay";
> +};
> +
> +&usb2phy1_otg {
> +       phy-supply = <&vcc5v0_usb_host>;
> +       status = "okay";
> +};
> diff --git a/board/rockchip/evb_rk3568/MAINTAINERS b/board/rockchip/evb_rk3568/MAINTAINERS
> index b6ea498d2b..aebecd901c 100644
> --- a/board/rockchip/evb_rk3568/MAINTAINERS
> +++ b/board/rockchip/evb_rk3568/MAINTAINERS
> @@ -4,3 +4,10 @@ S:      Maintained
>  F:      board/rockchip/evb_rk3568
>  F:      include/configs/evb_rk3568.h
>  F:      configs/evb-rk3568_defconfig
> +
> +ROCK-3A
> +M:      Akash Gajjar <gajjar04akash@gmail.com>
> +S:      Maintained
> +F:      configs/rock-3a-rk3568_defconfig
> +F:      arch/arm/dts/rk3568-rock-3a.dts
> +F:      arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
> new file mode 100644
> index 0000000000..1686c8c1aa
> --- /dev/null
> +++ b/configs/rock-3a-rk3568_defconfig
> @@ -0,0 +1,74 @@
> +CONFIG_ARM=y
> +CONFIG_SKIP_LOWLEVEL_INIT=y
> +CONFIG_COUNTER_FREQUENCY=24000000
> +CONFIG_ARCH_ROCKCHIP=y
> +CONFIG_TEXT_BASE=0x00a00000
> +CONFIG_SPL_LIBCOMMON_SUPPORT=y
> +CONFIG_SPL_LIBGENERIC_SUPPORT=y
> +CONFIG_NR_DRAM_BANKS=2
> +CONFIG_DEFAULT_DEVICE_TREE="rk3568-rock-3a"
> +CONFIG_ROCKCHIP_RK3568=y
> +CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
> +CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
> +CONFIG_SPL_MMC=y
> +CONFIG_SPL_SERIAL=y
> +CONFIG_SPL_STACK_R_ADDR=0x600000
> +CONFIG_TARGET_EVB_RK3568=y
> +CONFIG_DEBUG_UART_BASE=0xFE660000
> +CONFIG_DEBUG_UART_CLOCK=24000000
> +CONFIG_SYS_LOAD_ADDR=0xc00800
> +CONFIG_DEBUG_UART=y
> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000
> +CONFIG_FIT=y
> +CONFIG_FIT_VERBOSE=y
> +CONFIG_SPL_LOAD_FIT=y
> +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-rock-3a.dtb"
> +# CONFIG_DISPLAY_CPUINFO is not set
> +CONFIG_DISPLAY_BOARDINFO_LATE=y
> +CONFIG_SPL_MAX_SIZE=0x20000
> +CONFIG_SPL_PAD_TO=0x7f8000
> +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
> +CONFIG_SPL_BSS_START_ADDR=0x4000000
> +CONFIG_SPL_BSS_MAX_SIZE=0x4000
> +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
> +CONFIG_DM_PMIC=y
> +CONFIG_PMIC_RK8XX=y
> +CONFIG_SPL_PMIC_RK8XX=y
> +CONFIG_SPL_STACK=0x400000
> +CONFIG_SPL_STACK_R=y
> +CONFIG_SPL_ATF=y
> +CONFIG_CMD_I2C=y
> +CONFIG_CMD_GPT=y
> +CONFIG_CMD_MMC=y
> +# CONFIG_CMD_SETEXPR is not set
> +# CONFIG_SPL_DOS_PARTITION is not set
> +CONFIG_SPL_OF_CONTROL=y
> +CONFIG_OF_LIVE=y
> +CONFIG_NET_RANDOM_ETHADDR=y
> +CONFIG_REGULATOR_RK8XX=y
> +CONFIG_SPL_REGMAP=y
> +CONFIG_SPL_SYSCON=y
> +CONFIG_SPL_CLK=y
> +CONFIG_ROCKCHIP_GPIO=y
> +CONFIG_SYS_I2C_ROCKCHIP=y
> +CONFIG_MISC=y
> +CONFIG_SUPPORT_EMMC_RPMB=y
> +CONFIG_MMC_DW=y
> +CONFIG_MMC_DW_ROCKCHIP=y
> +CONFIG_MMC_SDHCI=y
> +CONFIG_MMC_SDHCI_SDMA=y
> +CONFIG_MMC_SDHCI_ROCKCHIP=y
> +CONFIG_ETH_DESIGNWARE=y
> +CONFIG_GMAC_ROCKCHIP=y
> +CONFIG_REGULATOR_PWM=y
> +CONFIG_PWM_ROCKCHIP=y
> +CONFIG_SPL_RAM=y
> +CONFIG_DM_RESET=y
> +CONFIG_BAUDRATE=1500000
> +CONFIG_DEBUG_UART_SHIFT=2
> +CONFIG_SYS_NS16550_MEM32=y
> +CONFIG_SYSRESET=y
> +# CONFIG_BINMAN_FDT is not set
> +CONFIG_ERRNO_STR=y
> --
> 2.25.1
>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support
  2023-02-23  0:31   ` Vasily Khoruzhick
@ 2023-02-23 15:40     ` Akash
  2023-02-23 19:33       ` Vasily Khoruzhick
  0 siblings, 1 reply; 6+ messages in thread
From: Akash @ 2023-02-23 15:40 UTC (permalink / raw)
  To: Vasily Khoruzhick
  Cc: naoki, kever.yang, Simon Glass, Philipp Tomsich, Joseph Chen,
	William Zhang, Philippe Reynes, Fabio Estevam, Michal Simek,
	Marcel Ziswiler, Samuel Holland, Pali Rohár,
	Frieder Schrempf, u-boot

HI Vasily,


I just tried now adding emmc module and able to access it.

Also Added CMD_REGULATOR support and tried command as you suggested.

Pasting logs at https://paste.ubuntu.com/p/Cx6x3CNj9w/

Let me know if I am missing anything here.


Thanks,
Akash

On 23-02-2023 06:01, Vasily Khoruzhick wrote:
> On Tue, Feb 14, 2023 at 12:11 PM Akash Gajjar <gajjar04akash@gmail.com> wrote:
>
> Hi Akash,
>
>> Add Radxa ROCK 3 Model A support. sync rk3568-rock-3a.dts from Linux 6.2.0-rc7
>>
>> Board Specifications
>> - Rockchip RK3568
>> - 2/4/8GB LPDDR4 3200MT/s
>> - eMMC socket, SD card slot
> Have you actually tested eMMC support? It seems to be broken when the
> system boots off SD card, "mmc info" returns "unable to select a mode
> : -70". I have a strong suspicion that it's due to rk_i2c being broken
> for rk3568, with debug enabled it complains "I2C Send Start Bit
> Timeout" on every i2c transaction.
>
> Could you please share "mmc info" and "regulator status -a" output
> from your build?
>
> Regards,
> Vasily
>
>> - GbE LAN,
>> - PCIe 3.0/2.0
>> - M.2 Connector
>> - 3.5mm Audio jack with mic
>> - HDMI 2.0, MIPI DSI/CSI
>> - USB 3.0 Host/OTG, USB 2.0 Host
>> - 40-pin GPIO expansion ports
>> - USB Type C PD 2.0, 9V/2A, 12V/2A, 15V/2A, 20V/2A
>>
>> Refer Linux commit <22a442e6586c>
>> ("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")
>>
>> Signed-off-by: Akash Gajjar <gajjar04akash@gmail.com>
>> ---
>> Changes in v2:
>> - Ammend the commit message, Replace Rock Pi 3a with ROCK3A Model A. Update the
>>    specs from https://wiki.radxa.com/Rock3/3a
>> - Sync missing node in dts, still some of the nodes like vop, vop mmu, i2s2_2ch
>>    gpu, hdmi removed as there is no driver support present in u-boot.
>> - Duplicated sdmmc node removed from dts.
>> Changes in v3:
>> - Replace rock-pi-3a-rk3568_defconfig with rock-3a-rk3568_defconfig
>> Changes in v4:
>> - Add maintainer for the board
>> ---
>>   arch/arm/dts/Makefile                   |   3 +-
>>   arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
>>   arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
>>   board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
>>   configs/rock-3a-rk3568_defconfig        |  74 +++
>>   5 files changed, 716 insertions(+), 1 deletion(-)
>>   create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>>   create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
>>   create mode 100644 configs/rock-3a-rk3568_defconfig
>>
>> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
>> index 9d647b9639..945843bebc 100644
>> --- a/arch/arm/dts/Makefile
>> +++ b/arch/arm/dts/Makefile
>> @@ -165,7 +165,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
>>          rk3399pro-rock-pi-n10.dtb
>>
>>   dtb-$(CONFIG_ROCKCHIP_RK3568) += \
>> -       rk3568-evb.dtb
>> +       rk3568-evb.dtb \
>> +       rk3568-rock-3a.dtb
>>
>>   dtb-$(CONFIG_ROCKCHIP_RV1108) += \
>>          rv1108-elgin-r1.dtb \
>> diff --git a/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>> new file mode 100644
>> index 0000000000..ae23ae8587
>> --- /dev/null
>> +++ b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>> @@ -0,0 +1,24 @@
>> +// SPDX-License-Identifier: GPL-2.0+
>> +/*
>> + * (C) Copyright 2021 Rockchip Electronics Co., Ltd
>> + * (C) Copyright 2023 Akash Gajjar <gajjar04akash@gmail.com>
>> + */
>> +
>> +#include "rk356x-u-boot.dtsi"
>> +
>> +/ {
>> +       chosen {
>> +               stdout-path = &uart2;
>> +               u-boot,spl-boot-order = "same-as-spl", &sdmmc0;
>> +       };
>> +};
>> +
>> +&sdmmc0 {
>> +       status = "okay";
>> +};
>> +
>> +&uart2 {
>> +       clock-frequency = <24000000>;
>> +       u-boot,dm-spl;
>> +       status = "okay";
>> +};
>> diff --git a/arch/arm/dts/rk3568-rock-3a.dts b/arch/arm/dts/rk3568-rock-3a.dts
>> new file mode 100644
>> index 0000000000..a2f2baa4ea
>> --- /dev/null
>> +++ b/arch/arm/dts/rk3568-rock-3a.dts
>> @@ -0,0 +1,609 @@
>> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
>> +/*
>> + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
>> + * Copyright (c) 2023 Akash Gajjar <gajjar04akash@gmail.com>
>> + */
>> +
>> +/dts-v1/;
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/pinctrl/rockchip.h>
>> +#include "rk3568.dtsi"
>> +
>> +/ {
>> +       model = "Radxa ROCK3 Model A";
>> +       compatible = "radxa,rock3a", "rockchip,rk3568";
>> +
>> +       chosen: chosen {
>> +               stdout-path = "serial2:1500000n8";
>> +       };
>> +
>> +       gmac1_clkin: external-gmac1-clock {
>> +               compatible = "fixed-clock";
>> +               clock-frequency = <125000000>;
>> +               clock-output-names = "gmac1_clkin";
>> +               #clock-cells = <0>;
>> +       };
>> +
>> +       vcc12v_dcin: vcc12v-dcin-regulator {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "vcc12v_dcin";
>> +               regulator-always-on;
>> +               regulator-boot-on;
>> +               regulator-min-microvolt = <12000000>;
>> +               regulator-max-microvolt = <12000000>;
>> +       };
>> +
>> +       vcc3v3_sys: vcc3v3-sys-regulator {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "vcc3v3_sys";
>> +               regulator-always-on;
>> +               regulator-boot-on;
>> +               regulator-min-microvolt = <3300000>;
>> +               regulator-max-microvolt = <3300000>;
>> +               vin-supply = <&vcc12v_dcin>;
>> +       };
>> +
>> +       vcc5v0_sys: vcc5v0-sys-regulator {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "vcc5v0_sys";
>> +               regulator-always-on;
>> +               regulator-boot-on;
>> +               regulator-min-microvolt = <5000000>;
>> +               regulator-max-microvolt = <5000000>;
>> +               vin-supply = <&vcc12v_dcin>;
>> +       };
>> +
>> +       vcc5v0_usb: vcc5v0-usb-regulator {
>> +               compatible = "regulator-fixed";
>> +               regulator-name = "vcc5v0_usb";
>> +               regulator-always-on;
>> +               regulator-boot-on;
>> +               regulator-min-microvolt = <5000000>;
>> +               regulator-max-microvolt = <5000000>;
>> +               vin-supply = <&vcc12v_dcin>;
>> +       };
>> +
>> +       vcc5v0_usb_host: vcc5v0-usb-host-regulator {
>> +               compatible = "regulator-fixed";
>> +               enable-active-high;
>> +               gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&vcc5v0_usb_host_en>;
>> +               regulator-name = "vcc5v0_usb_host";
>> +               regulator-min-microvolt = <5000000>;
>> +               regulator-max-microvolt = <5000000>;
>> +               vin-supply = <&vcc5v0_usb>;
>> +       };
>> +
>> +       vcc5v0_usb_hub: vcc5v0-usb-hub-regulator {
>> +               compatible = "regulator-fixed";
>> +               enable-active-high;
>> +               gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&vcc5v0_usb_hub_en>;
>> +               regulator-name = "vcc5v0_usb_hub";
>> +               regulator-always-on;
>> +               vin-supply = <&vcc5v0_usb>;
>> +       };
>> +
>> +       vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
>> +               compatible = "regulator-fixed";
>> +               enable-active-high;
>> +               gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               regulator-name = "vcc5v0_usb_otg";
>> +               regulator-min-microvolt = <5000000>;
>> +               regulator-max-microvolt = <5000000>;
>> +               vin-supply = <&vcc5v0_usb>;
>> +       };
>> +
>> +       vcc_cam: vcc-cam-regulator {
>> +               compatible = "regulator-fixed";
>> +               enable-active-high;
>> +               gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&vcc_cam_en>;
>> +               regulator-name = "vcc_cam";
>> +               regulator-min-microvolt = <3300000>;
>> +               regulator-max-microvolt = <3300000>;
>> +               vin-supply = <&vcc3v3_sys>;
>> +
>> +               regulator-state-mem {
>> +                       regulator-off-in-suspend;
>> +               };
>> +       };
>> +
>> +       vcc_mipi: vcc-mipi-regulator {
>> +               compatible = "regulator-fixed";
>> +               enable-active-high;
>> +               gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&vcc_mipi_en>;
>> +               regulator-name = "vcc_mipi";
>> +               regulator-min-microvolt = <3300000>;
>> +               regulator-max-microvolt = <3300000>;
>> +               vin-supply = <&vcc3v3_sys>;
>> +
>> +               regulator-state-mem {
>> +                       regulator-off-in-suspend;
>> +               };
>> +       };
>> +};
>> +
>> +&combphy0 {
>> +       status = "okay";
>> +};
>> +
>> +&combphy1 {
>> +       status = "okay";
>> +};
>> +
>> +&combphy2 {
>> +       status = "okay";
>> +};
>> +
>> +&cpu0 {
>> +       cpu-supply = <&vdd_cpu>;
>> +};
>> +
>> +&cpu1 {
>> +       cpu-supply = <&vdd_cpu>;
>> +};
>> +
>> +&cpu2 {
>> +       cpu-supply = <&vdd_cpu>;
>> +};
>> +
>> +&cpu3 {
>> +       cpu-supply = <&vdd_cpu>;
>> +};
>> +
>> +&gmac1 {
>> +       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
>> +       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
>> +       clock_in_out = "input";
>> +       phy-handle = <&rgmii_phy1>;
>> +       phy-mode = "rgmii-id";
>> +       pinctrl-names = "default";
>> +       status = "okay";
>> +};
>> +
>> +&i2c0 {
>> +       status = "okay";
>> +
>> +       vdd_cpu: regulator@1c {
>> +               compatible = "tcs,tcs4525";
>> +               reg = <0x1c>;
>> +               fcs,suspend-voltage-selector = <1>;
>> +               regulator-name = "vdd_cpu";
>> +               regulator-always-on;
>> +               regulator-boot-on;
>> +               regulator-min-microvolt = <800000>;
>> +               regulator-max-microvolt = <1150000>;
>> +               regulator-ramp-delay = <2300>;
>> +               vin-supply = <&vcc5v0_sys>;
>> +
>> +               regulator-state-mem {
>> +                       regulator-off-in-suspend;
>> +               };
>> +       };
>> +
>> +       rk809: pmic@20 {
>> +               compatible = "rockchip,rk809";
>> +               reg = <0x20>;
>> +               interrupt-parent = <&gpio0>;
>> +               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
>> +               assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
>> +               assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
>> +               #clock-cells = <1>;
>> +               clock-names = "mclk";
>> +               clocks = <&cru I2S1_MCLKOUT_TX>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
>> +               rockchip,system-power-controller;
>> +               #sound-dai-cells = <0>;
>> +               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-always-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;
>> +                               };
>> +                       };
>> +
>> +                       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-always-on;
>> +                               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-state-mem {
>> +                                       regulator-off-in-suspend;
>> +                               };
>> +                       };
>> +               };
>> +
>> +               codec {
>> +                       mic-in-differential;
>> +               };
>> +       };
>> +};
>> +
>> +&i2c3 {
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&i2c3m1_xfer>;
>> +       status = "disabled";
>> +};
>> +
>> +&i2c4 {
>> +       pinctrl-names = "default";
>> +       pinctrl-0 = <&i2c4m1_xfer>;
>> +       status = "disabled";
>> +};
>> +
>> +&i2c5 {
>> +       status = "okay";
>> +
>> +       hym8563: rtc@51 {
>> +               compatible = "haoyu,hym8563";
>> +               reg = <0x51>;
>> +               interrupt-parent = <&gpio0>;
>> +               interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
>> +               #clock-cells = <0>;
>> +               clock-output-names = "rtcic_32kout";
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&hym8563_int>;
>> +               wakeup-source;
>> +       };
>> +};
>> +
>> +&i2s0_8ch {
>> +       status = "okay";
>> +};
>> +
>> +&i2s1_8ch {
>> +       rockchip,trcm-sync-tx-only;
>> +       status = "okay";
>> +};
>> +
>> +&mdio1 {
>> +       rgmii_phy1: ethernet-phy@0 {
>> +               compatible = "ethernet-phy-ieee802.3-c22";
>> +               reg = <0x0>;
>> +               pinctrl-names = "default";
>> +               pinctrl-0 = <&eth_phy_rst>;
>> +               reset-assert-us = <20000>;
>> +               reset-deassert-us = <100000>;
>> +               reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
>> +       };
>> +};
>> +
>> +&pinctrl {
>> +       cam {
>> +               vcc_cam_en: vcc_cam_en {
>> +                       rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       display {
>> +               vcc_mipi_en: vcc_mipi_en {
>> +                       rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       ethernet {
>> +               eth_phy_rst: eth_phy_rst {
>> +                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       hym8563 {
>> +               hym8563_int: hym8563-int {
>> +                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
>> +               };
>> +       };
>> +
>> +       leds {
>> +               led_user_en: led_user_en {
>> +                       rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       pcie {
>> +               pcie_enable_h: pcie-enable-h {
>> +                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +
>> +               pcie_reset_h: pcie-reset-h {
>> +                       rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       pmic {
>> +               pmic_int: pmic_int {
>> +                       rockchip,pins =
>> +                               <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
>> +               };
>> +       };
>> +
>> +       usb {
>> +               vcc5v0_usb_host_en: vcc5v0_usb_host_en {
>> +                       rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +               vcc5v0_usb_hub_en: vcc5v0_usb_hub_en {
>> +                       rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +               vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
>> +                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       bt {
>> +               bt_enable: bt-enable {
>> +                       rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +
>> +               bt_host_wake: bt-host-wake {
>> +                       rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
>> +               };
>> +
>> +               bt_wake: bt-wake {
>> +                       rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +
>> +       sdio-pwrseq {
>> +               wifi_enable: wifi-enable {
>> +                       rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
>> +               };
>> +       };
>> +};
>> +
>> +&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";
>> +};
>> +
>> +&uart2 {
>> +       status = "okay";
>> +};
>> +
>> +&usb_host0_ehci {
>> +       status = "okay";
>> +};
>> +
>> +&usb_host0_ohci {
>> +       status = "okay";
>> +};
>> +
>> +&usb_host0_xhci {
>> +       extcon = <&usb2phy0>;
>> +       status = "okay";
>> +};
>> +
>> +&usb_host1_ehci {
>> +       status = "okay";
>> +};
>> +
>> +&usb_host1_ohci {
>> +       status = "okay";
>> +};
>> +
>> +&usb_host1_xhci {
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy0 {
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy0_host {
>> +       phy-supply = <&vcc5v0_usb_host>;
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy0_otg {
>> +       phy-supply = <&vcc5v0_usb_otg>;
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy1 {
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy1_host {
>> +       phy-supply = <&vcc5v0_usb_host>;
>> +       status = "okay";
>> +};
>> +
>> +&usb2phy1_otg {
>> +       phy-supply = <&vcc5v0_usb_host>;
>> +       status = "okay";
>> +};
>> diff --git a/board/rockchip/evb_rk3568/MAINTAINERS b/board/rockchip/evb_rk3568/MAINTAINERS
>> index b6ea498d2b..aebecd901c 100644
>> --- a/board/rockchip/evb_rk3568/MAINTAINERS
>> +++ b/board/rockchip/evb_rk3568/MAINTAINERS
>> @@ -4,3 +4,10 @@ S:      Maintained
>>   F:      board/rockchip/evb_rk3568
>>   F:      include/configs/evb_rk3568.h
>>   F:      configs/evb-rk3568_defconfig
>> +
>> +ROCK-3A
>> +M:      Akash Gajjar <gajjar04akash@gmail.com>
>> +S:      Maintained
>> +F:      configs/rock-3a-rk3568_defconfig
>> +F:      arch/arm/dts/rk3568-rock-3a.dts
>> +F:      arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
>> diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
>> new file mode 100644
>> index 0000000000..1686c8c1aa
>> --- /dev/null
>> +++ b/configs/rock-3a-rk3568_defconfig
>> @@ -0,0 +1,74 @@
>> +CONFIG_ARM=y
>> +CONFIG_SKIP_LOWLEVEL_INIT=y
>> +CONFIG_COUNTER_FREQUENCY=24000000
>> +CONFIG_ARCH_ROCKCHIP=y
>> +CONFIG_TEXT_BASE=0x00a00000
>> +CONFIG_SPL_LIBCOMMON_SUPPORT=y
>> +CONFIG_SPL_LIBGENERIC_SUPPORT=y
>> +CONFIG_NR_DRAM_BANKS=2
>> +CONFIG_DEFAULT_DEVICE_TREE="rk3568-rock-3a"
>> +CONFIG_ROCKCHIP_RK3568=y
>> +CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
>> +CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
>> +CONFIG_SPL_MMC=y
>> +CONFIG_SPL_SERIAL=y
>> +CONFIG_SPL_STACK_R_ADDR=0x600000
>> +CONFIG_TARGET_EVB_RK3568=y
>> +CONFIG_DEBUG_UART_BASE=0xFE660000
>> +CONFIG_DEBUG_UART_CLOCK=24000000
>> +CONFIG_SYS_LOAD_ADDR=0xc00800
>> +CONFIG_DEBUG_UART=y
>> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
>> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000
>> +CONFIG_FIT=y
>> +CONFIG_FIT_VERBOSE=y
>> +CONFIG_SPL_LOAD_FIT=y
>> +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-rock-3a.dtb"
>> +# CONFIG_DISPLAY_CPUINFO is not set
>> +CONFIG_DISPLAY_BOARDINFO_LATE=y
>> +CONFIG_SPL_MAX_SIZE=0x20000
>> +CONFIG_SPL_PAD_TO=0x7f8000
>> +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
>> +CONFIG_SPL_BSS_START_ADDR=0x4000000
>> +CONFIG_SPL_BSS_MAX_SIZE=0x4000
>> +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
>> +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
>> +CONFIG_DM_PMIC=y
>> +CONFIG_PMIC_RK8XX=y
>> +CONFIG_SPL_PMIC_RK8XX=y
>> +CONFIG_SPL_STACK=0x400000
>> +CONFIG_SPL_STACK_R=y
>> +CONFIG_SPL_ATF=y
>> +CONFIG_CMD_I2C=y
>> +CONFIG_CMD_GPT=y
>> +CONFIG_CMD_MMC=y
>> +# CONFIG_CMD_SETEXPR is not set
>> +# CONFIG_SPL_DOS_PARTITION is not set
>> +CONFIG_SPL_OF_CONTROL=y
>> +CONFIG_OF_LIVE=y
>> +CONFIG_NET_RANDOM_ETHADDR=y
>> +CONFIG_REGULATOR_RK8XX=y
>> +CONFIG_SPL_REGMAP=y
>> +CONFIG_SPL_SYSCON=y
>> +CONFIG_SPL_CLK=y
>> +CONFIG_ROCKCHIP_GPIO=y
>> +CONFIG_SYS_I2C_ROCKCHIP=y
>> +CONFIG_MISC=y
>> +CONFIG_SUPPORT_EMMC_RPMB=y
>> +CONFIG_MMC_DW=y
>> +CONFIG_MMC_DW_ROCKCHIP=y
>> +CONFIG_MMC_SDHCI=y
>> +CONFIG_MMC_SDHCI_SDMA=y
>> +CONFIG_MMC_SDHCI_ROCKCHIP=y
>> +CONFIG_ETH_DESIGNWARE=y
>> +CONFIG_GMAC_ROCKCHIP=y
>> +CONFIG_REGULATOR_PWM=y
>> +CONFIG_PWM_ROCKCHIP=y
>> +CONFIG_SPL_RAM=y
>> +CONFIG_DM_RESET=y
>> +CONFIG_BAUDRATE=1500000
>> +CONFIG_DEBUG_UART_SHIFT=2
>> +CONFIG_SYS_NS16550_MEM32=y
>> +CONFIG_SYSRESET=y
>> +# CONFIG_BINMAN_FDT is not set
>> +CONFIG_ERRNO_STR=y
>> --
>> 2.25.1
>>

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support
  2023-02-23 15:40     ` Akash
@ 2023-02-23 19:33       ` Vasily Khoruzhick
  0 siblings, 0 replies; 6+ messages in thread
From: Vasily Khoruzhick @ 2023-02-23 19:33 UTC (permalink / raw)
  To: Akash
  Cc: naoki, kever.yang, Simon Glass, Philipp Tomsich, Joseph Chen,
	William Zhang, Philippe Reynes, Fabio Estevam, Michal Simek,
	Marcel Ziswiler, Samuel Holland, Pali Rohár,
	Frieder Schrempf, u-boot

On Thu, Feb 23, 2023 at 7:40 AM Akash <gajjar04akash@gmail.com> wrote:
>
> HI Vasily,

Hi Akash,

> I just tried now adding emmc module and able to access it.

Thanks for testing! It looks like sdhci driver decides to clock your
eMMC at 52MHz which works, while for my eMMC it choses 26MHz.
Unfortunately, clk_rk3568 driver supports only certain clock rates,
and fails with e.g. 25MHz, 26MHz. SDHCI driver doesn't check for
errors and fails silently, I'll send a fix later today.

> Also Added CMD_REGULATOR support and tried command as you suggested.
>
> Pasting logs at https://paste.ubuntu.com/p/Cx6x3CNj9w/

Yeah, you can see that regulator status is incorrect. Currently,
rk_i2c driver is non-functional on rk3568 in u-boot master. It's
caused by missing pinctrl driver (it's already merged into rockchip
custodian tree)

Regards,
Vasily

> Let me know if I am missing anything here.
>
>
> Thanks,
> Akash
>
> On 23-02-2023 06:01, Vasily Khoruzhick wrote:
> > On Tue, Feb 14, 2023 at 12:11 PM Akash Gajjar <gajjar04akash@gmail.com> wrote:
> >
> > Hi Akash,
> >
> >> Add Radxa ROCK 3 Model A support. sync rk3568-rock-3a.dts from Linux 6.2.0-rc7
> >>
> >> Board Specifications
> >> - Rockchip RK3568
> >> - 2/4/8GB LPDDR4 3200MT/s
> >> - eMMC socket, SD card slot
> > Have you actually tested eMMC support? It seems to be broken when the
> > system boots off SD card, "mmc info" returns "unable to select a mode
> > : -70". I have a strong suspicion that it's due to rk_i2c being broken
> > for rk3568, with debug enabled it complains "I2C Send Start Bit
> > Timeout" on every i2c transaction.
> >
> > Could you please share "mmc info" and "regulator status -a" output
> > from your build?
> >
> > Regards,
> > Vasily
> >
> >> - GbE LAN,
> >> - PCIe 3.0/2.0
> >> - M.2 Connector
> >> - 3.5mm Audio jack with mic
> >> - HDMI 2.0, MIPI DSI/CSI
> >> - USB 3.0 Host/OTG, USB 2.0 Host
> >> - 40-pin GPIO expansion ports
> >> - USB Type C PD 2.0, 9V/2A, 12V/2A, 15V/2A, 20V/2A
> >>
> >> Refer Linux commit <22a442e6586c>
> >> ("arm64: dts: rockchip: add basic dts for the radxa rock3 model a")
> >>
> >> Signed-off-by: Akash Gajjar <gajjar04akash@gmail.com>
> >> ---
> >> Changes in v2:
> >> - Ammend the commit message, Replace Rock Pi 3a with ROCK3A Model A. Update the
> >>    specs from https://wiki.radxa.com/Rock3/3a
> >> - Sync missing node in dts, still some of the nodes like vop, vop mmu, i2s2_2ch
> >>    gpu, hdmi removed as there is no driver support present in u-boot.
> >> - Duplicated sdmmc node removed from dts.
> >> Changes in v3:
> >> - Replace rock-pi-3a-rk3568_defconfig with rock-3a-rk3568_defconfig
> >> Changes in v4:
> >> - Add maintainer for the board
> >> ---
> >>   arch/arm/dts/Makefile                   |   3 +-
> >>   arch/arm/dts/rk3568-rock-3a-u-boot.dtsi |  24 +
> >>   arch/arm/dts/rk3568-rock-3a.dts         | 609 ++++++++++++++++++++++++
> >>   board/rockchip/evb_rk3568/MAINTAINERS   |   7 +
> >>   configs/rock-3a-rk3568_defconfig        |  74 +++
> >>   5 files changed, 716 insertions(+), 1 deletion(-)
> >>   create mode 100644 arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> >>   create mode 100644 arch/arm/dts/rk3568-rock-3a.dts
> >>   create mode 100644 configs/rock-3a-rk3568_defconfig
> >>
> >> diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
> >> index 9d647b9639..945843bebc 100644
> >> --- a/arch/arm/dts/Makefile
> >> +++ b/arch/arm/dts/Makefile
> >> @@ -165,7 +165,8 @@ dtb-$(CONFIG_ROCKCHIP_RK3399) += \
> >>          rk3399pro-rock-pi-n10.dtb
> >>
> >>   dtb-$(CONFIG_ROCKCHIP_RK3568) += \
> >> -       rk3568-evb.dtb
> >> +       rk3568-evb.dtb \
> >> +       rk3568-rock-3a.dtb
> >>
> >>   dtb-$(CONFIG_ROCKCHIP_RV1108) += \
> >>          rv1108-elgin-r1.dtb \
> >> diff --git a/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> >> new file mode 100644
> >> index 0000000000..ae23ae8587
> >> --- /dev/null
> >> +++ b/arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> >> @@ -0,0 +1,24 @@
> >> +// SPDX-License-Identifier: GPL-2.0+
> >> +/*
> >> + * (C) Copyright 2021 Rockchip Electronics Co., Ltd
> >> + * (C) Copyright 2023 Akash Gajjar <gajjar04akash@gmail.com>
> >> + */
> >> +
> >> +#include "rk356x-u-boot.dtsi"
> >> +
> >> +/ {
> >> +       chosen {
> >> +               stdout-path = &uart2;
> >> +               u-boot,spl-boot-order = "same-as-spl", &sdmmc0;
> >> +       };
> >> +};
> >> +
> >> +&sdmmc0 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&uart2 {
> >> +       clock-frequency = <24000000>;
> >> +       u-boot,dm-spl;
> >> +       status = "okay";
> >> +};
> >> diff --git a/arch/arm/dts/rk3568-rock-3a.dts b/arch/arm/dts/rk3568-rock-3a.dts
> >> new file mode 100644
> >> index 0000000000..a2f2baa4ea
> >> --- /dev/null
> >> +++ b/arch/arm/dts/rk3568-rock-3a.dts
> >> @@ -0,0 +1,609 @@
> >> +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> >> +/*
> >> + * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
> >> + * Copyright (c) 2023 Akash Gajjar <gajjar04akash@gmail.com>
> >> + */
> >> +
> >> +/dts-v1/;
> >> +#include <dt-bindings/gpio/gpio.h>
> >> +#include <dt-bindings/pinctrl/rockchip.h>
> >> +#include "rk3568.dtsi"
> >> +
> >> +/ {
> >> +       model = "Radxa ROCK3 Model A";
> >> +       compatible = "radxa,rock3a", "rockchip,rk3568";
> >> +
> >> +       chosen: chosen {
> >> +               stdout-path = "serial2:1500000n8";
> >> +       };
> >> +
> >> +       gmac1_clkin: external-gmac1-clock {
> >> +               compatible = "fixed-clock";
> >> +               clock-frequency = <125000000>;
> >> +               clock-output-names = "gmac1_clkin";
> >> +               #clock-cells = <0>;
> >> +       };
> >> +
> >> +       vcc12v_dcin: vcc12v-dcin-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               regulator-name = "vcc12v_dcin";
> >> +               regulator-always-on;
> >> +               regulator-boot-on;
> >> +               regulator-min-microvolt = <12000000>;
> >> +               regulator-max-microvolt = <12000000>;
> >> +       };
> >> +
> >> +       vcc3v3_sys: vcc3v3-sys-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               regulator-name = "vcc3v3_sys";
> >> +               regulator-always-on;
> >> +               regulator-boot-on;
> >> +               regulator-min-microvolt = <3300000>;
> >> +               regulator-max-microvolt = <3300000>;
> >> +               vin-supply = <&vcc12v_dcin>;
> >> +       };
> >> +
> >> +       vcc5v0_sys: vcc5v0-sys-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               regulator-name = "vcc5v0_sys";
> >> +               regulator-always-on;
> >> +               regulator-boot-on;
> >> +               regulator-min-microvolt = <5000000>;
> >> +               regulator-max-microvolt = <5000000>;
> >> +               vin-supply = <&vcc12v_dcin>;
> >> +       };
> >> +
> >> +       vcc5v0_usb: vcc5v0-usb-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               regulator-name = "vcc5v0_usb";
> >> +               regulator-always-on;
> >> +               regulator-boot-on;
> >> +               regulator-min-microvolt = <5000000>;
> >> +               regulator-max-microvolt = <5000000>;
> >> +               vin-supply = <&vcc12v_dcin>;
> >> +       };
> >> +
> >> +       vcc5v0_usb_host: vcc5v0-usb-host-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               enable-active-high;
> >> +               gpio = <&gpio0 RK_PA6 GPIO_ACTIVE_HIGH>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&vcc5v0_usb_host_en>;
> >> +               regulator-name = "vcc5v0_usb_host";
> >> +               regulator-min-microvolt = <5000000>;
> >> +               regulator-max-microvolt = <5000000>;
> >> +               vin-supply = <&vcc5v0_usb>;
> >> +       };
> >> +
> >> +       vcc5v0_usb_hub: vcc5v0-usb-hub-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               enable-active-high;
> >> +               gpio = <&gpio0 RK_PD5 GPIO_ACTIVE_HIGH>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&vcc5v0_usb_hub_en>;
> >> +               regulator-name = "vcc5v0_usb_hub";
> >> +               regulator-always-on;
> >> +               vin-supply = <&vcc5v0_usb>;
> >> +       };
> >> +
> >> +       vcc5v0_usb_otg: vcc5v0-usb-otg-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               enable-active-high;
> >> +               gpio = <&gpio0 RK_PA5 GPIO_ACTIVE_HIGH>;
> >> +               pinctrl-names = "default";
> >> +               regulator-name = "vcc5v0_usb_otg";
> >> +               regulator-min-microvolt = <5000000>;
> >> +               regulator-max-microvolt = <5000000>;
> >> +               vin-supply = <&vcc5v0_usb>;
> >> +       };
> >> +
> >> +       vcc_cam: vcc-cam-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               enable-active-high;
> >> +               gpio = <&gpio1 RK_PB1 GPIO_ACTIVE_HIGH>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&vcc_cam_en>;
> >> +               regulator-name = "vcc_cam";
> >> +               regulator-min-microvolt = <3300000>;
> >> +               regulator-max-microvolt = <3300000>;
> >> +               vin-supply = <&vcc3v3_sys>;
> >> +
> >> +               regulator-state-mem {
> >> +                       regulator-off-in-suspend;
> >> +               };
> >> +       };
> >> +
> >> +       vcc_mipi: vcc-mipi-regulator {
> >> +               compatible = "regulator-fixed";
> >> +               enable-active-high;
> >> +               gpio = <&gpio3 RK_PC0 GPIO_ACTIVE_HIGH>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&vcc_mipi_en>;
> >> +               regulator-name = "vcc_mipi";
> >> +               regulator-min-microvolt = <3300000>;
> >> +               regulator-max-microvolt = <3300000>;
> >> +               vin-supply = <&vcc3v3_sys>;
> >> +
> >> +               regulator-state-mem {
> >> +                       regulator-off-in-suspend;
> >> +               };
> >> +       };
> >> +};
> >> +
> >> +&combphy0 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&combphy1 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&combphy2 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&cpu0 {
> >> +       cpu-supply = <&vdd_cpu>;
> >> +};
> >> +
> >> +&cpu1 {
> >> +       cpu-supply = <&vdd_cpu>;
> >> +};
> >> +
> >> +&cpu2 {
> >> +       cpu-supply = <&vdd_cpu>;
> >> +};
> >> +
> >> +&cpu3 {
> >> +       cpu-supply = <&vdd_cpu>;
> >> +};
> >> +
> >> +&gmac1 {
> >> +       assigned-clocks = <&cru SCLK_GMAC1_RX_TX>, <&cru SCLK_GMAC1>;
> >> +       assigned-clock-parents = <&cru SCLK_GMAC1_RGMII_SPEED>, <&gmac1_clkin>;
> >> +       clock_in_out = "input";
> >> +       phy-handle = <&rgmii_phy1>;
> >> +       phy-mode = "rgmii-id";
> >> +       pinctrl-names = "default";
> >> +       status = "okay";
> >> +};
> >> +
> >> +&i2c0 {
> >> +       status = "okay";
> >> +
> >> +       vdd_cpu: regulator@1c {
> >> +               compatible = "tcs,tcs4525";
> >> +               reg = <0x1c>;
> >> +               fcs,suspend-voltage-selector = <1>;
> >> +               regulator-name = "vdd_cpu";
> >> +               regulator-always-on;
> >> +               regulator-boot-on;
> >> +               regulator-min-microvolt = <800000>;
> >> +               regulator-max-microvolt = <1150000>;
> >> +               regulator-ramp-delay = <2300>;
> >> +               vin-supply = <&vcc5v0_sys>;
> >> +
> >> +               regulator-state-mem {
> >> +                       regulator-off-in-suspend;
> >> +               };
> >> +       };
> >> +
> >> +       rk809: pmic@20 {
> >> +               compatible = "rockchip,rk809";
> >> +               reg = <0x20>;
> >> +               interrupt-parent = <&gpio0>;
> >> +               interrupts = <RK_PA3 IRQ_TYPE_LEVEL_LOW>;
> >> +               assigned-clocks = <&cru I2S1_MCLKOUT_TX>;
> >> +               assigned-clock-parents = <&cru CLK_I2S1_8CH_TX>;
> >> +               #clock-cells = <1>;
> >> +               clock-names = "mclk";
> >> +               clocks = <&cru I2S1_MCLKOUT_TX>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&pmic_int>, <&i2s1m0_mclk>;
> >> +               rockchip,system-power-controller;
> >> +               #sound-dai-cells = <0>;
> >> +               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-always-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;
> >> +                               };
> >> +                       };
> >> +
> >> +                       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-always-on;
> >> +                               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-state-mem {
> >> +                                       regulator-off-in-suspend;
> >> +                               };
> >> +                       };
> >> +               };
> >> +
> >> +               codec {
> >> +                       mic-in-differential;
> >> +               };
> >> +       };
> >> +};
> >> +
> >> +&i2c3 {
> >> +       pinctrl-names = "default";
> >> +       pinctrl-0 = <&i2c3m1_xfer>;
> >> +       status = "disabled";
> >> +};
> >> +
> >> +&i2c4 {
> >> +       pinctrl-names = "default";
> >> +       pinctrl-0 = <&i2c4m1_xfer>;
> >> +       status = "disabled";
> >> +};
> >> +
> >> +&i2c5 {
> >> +       status = "okay";
> >> +
> >> +       hym8563: rtc@51 {
> >> +               compatible = "haoyu,hym8563";
> >> +               reg = <0x51>;
> >> +               interrupt-parent = <&gpio0>;
> >> +               interrupts = <RK_PD3 IRQ_TYPE_LEVEL_LOW>;
> >> +               #clock-cells = <0>;
> >> +               clock-output-names = "rtcic_32kout";
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&hym8563_int>;
> >> +               wakeup-source;
> >> +       };
> >> +};
> >> +
> >> +&i2s0_8ch {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&i2s1_8ch {
> >> +       rockchip,trcm-sync-tx-only;
> >> +       status = "okay";
> >> +};
> >> +
> >> +&mdio1 {
> >> +       rgmii_phy1: ethernet-phy@0 {
> >> +               compatible = "ethernet-phy-ieee802.3-c22";
> >> +               reg = <0x0>;
> >> +               pinctrl-names = "default";
> >> +               pinctrl-0 = <&eth_phy_rst>;
> >> +               reset-assert-us = <20000>;
> >> +               reset-deassert-us = <100000>;
> >> +               reset-gpios = <&gpio3 RK_PB0 GPIO_ACTIVE_LOW>;
> >> +       };
> >> +};
> >> +
> >> +&pinctrl {
> >> +       cam {
> >> +               vcc_cam_en: vcc_cam_en {
> >> +                       rockchip,pins = <1 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       display {
> >> +               vcc_mipi_en: vcc_mipi_en {
> >> +                       rockchip,pins = <3 RK_PC0 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       ethernet {
> >> +               eth_phy_rst: eth_phy_rst {
> >> +                       rockchip,pins = <3 RK_PB0 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       hym8563 {
> >> +               hym8563_int: hym8563-int {
> >> +                       rockchip,pins = <0 RK_PD3 RK_FUNC_GPIO &pcfg_pull_up>;
> >> +               };
> >> +       };
> >> +
> >> +       leds {
> >> +               led_user_en: led_user_en {
> >> +                       rockchip,pins = <0 RK_PB7 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       pcie {
> >> +               pcie_enable_h: pcie-enable-h {
> >> +                       rockchip,pins = <0 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +
> >> +               pcie_reset_h: pcie-reset-h {
> >> +                       rockchip,pins = <3 RK_PC1 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       pmic {
> >> +               pmic_int: pmic_int {
> >> +                       rockchip,pins =
> >> +                               <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_up>;
> >> +               };
> >> +       };
> >> +
> >> +       usb {
> >> +               vcc5v0_usb_host_en: vcc5v0_usb_host_en {
> >> +                       rockchip,pins = <0 RK_PA6 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +               vcc5v0_usb_hub_en: vcc5v0_usb_hub_en {
> >> +                       rockchip,pins = <0 RK_PD5 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +               vcc5v0_usb_otg_en: vcc5v0_usb_otg_en {
> >> +                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       bt {
> >> +               bt_enable: bt-enable {
> >> +                       rockchip,pins = <4 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +
> >> +               bt_host_wake: bt-host-wake {
> >> +                       rockchip,pins = <4 RK_PB4 RK_FUNC_GPIO &pcfg_pull_down>;
> >> +               };
> >> +
> >> +               bt_wake: bt-wake {
> >> +                       rockchip,pins = <4 RK_PB5 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +
> >> +       sdio-pwrseq {
> >> +               wifi_enable: wifi-enable {
> >> +                       rockchip,pins = <3 RK_PD4 RK_FUNC_GPIO &pcfg_pull_none>;
> >> +               };
> >> +       };
> >> +};
> >> +
> >> +&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";
> >> +};
> >> +
> >> +&uart2 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host0_ehci {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host0_ohci {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host0_xhci {
> >> +       extcon = <&usb2phy0>;
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host1_ehci {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host1_ohci {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb_host1_xhci {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy0 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy0_host {
> >> +       phy-supply = <&vcc5v0_usb_host>;
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy0_otg {
> >> +       phy-supply = <&vcc5v0_usb_otg>;
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy1 {
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy1_host {
> >> +       phy-supply = <&vcc5v0_usb_host>;
> >> +       status = "okay";
> >> +};
> >> +
> >> +&usb2phy1_otg {
> >> +       phy-supply = <&vcc5v0_usb_host>;
> >> +       status = "okay";
> >> +};
> >> diff --git a/board/rockchip/evb_rk3568/MAINTAINERS b/board/rockchip/evb_rk3568/MAINTAINERS
> >> index b6ea498d2b..aebecd901c 100644
> >> --- a/board/rockchip/evb_rk3568/MAINTAINERS
> >> +++ b/board/rockchip/evb_rk3568/MAINTAINERS
> >> @@ -4,3 +4,10 @@ S:      Maintained
> >>   F:      board/rockchip/evb_rk3568
> >>   F:      include/configs/evb_rk3568.h
> >>   F:      configs/evb-rk3568_defconfig
> >> +
> >> +ROCK-3A
> >> +M:      Akash Gajjar <gajjar04akash@gmail.com>
> >> +S:      Maintained
> >> +F:      configs/rock-3a-rk3568_defconfig
> >> +F:      arch/arm/dts/rk3568-rock-3a.dts
> >> +F:      arch/arm/dts/rk3568-rock-3a-u-boot.dtsi
> >> diff --git a/configs/rock-3a-rk3568_defconfig b/configs/rock-3a-rk3568_defconfig
> >> new file mode 100644
> >> index 0000000000..1686c8c1aa
> >> --- /dev/null
> >> +++ b/configs/rock-3a-rk3568_defconfig
> >> @@ -0,0 +1,74 @@
> >> +CONFIG_ARM=y
> >> +CONFIG_SKIP_LOWLEVEL_INIT=y
> >> +CONFIG_COUNTER_FREQUENCY=24000000
> >> +CONFIG_ARCH_ROCKCHIP=y
> >> +CONFIG_TEXT_BASE=0x00a00000
> >> +CONFIG_SPL_LIBCOMMON_SUPPORT=y
> >> +CONFIG_SPL_LIBGENERIC_SUPPORT=y
> >> +CONFIG_NR_DRAM_BANKS=2
> >> +CONFIG_DEFAULT_DEVICE_TREE="rk3568-rock-3a"
> >> +CONFIG_ROCKCHIP_RK3568=y
> >> +CONFIG_SPL_ROCKCHIP_BACK_TO_BROM=y
> >> +CONFIG_SPL_ROCKCHIP_COMMON_BOARD=y
> >> +CONFIG_SPL_MMC=y
> >> +CONFIG_SPL_SERIAL=y
> >> +CONFIG_SPL_STACK_R_ADDR=0x600000
> >> +CONFIG_TARGET_EVB_RK3568=y
> >> +CONFIG_DEBUG_UART_BASE=0xFE660000
> >> +CONFIG_DEBUG_UART_CLOCK=24000000
> >> +CONFIG_SYS_LOAD_ADDR=0xc00800
> >> +CONFIG_DEBUG_UART=y
> >> +CONFIG_HAS_CUSTOM_SYS_INIT_SP_ADDR=y
> >> +CONFIG_CUSTOM_SYS_INIT_SP_ADDR=0xc00000
> >> +CONFIG_FIT=y
> >> +CONFIG_FIT_VERBOSE=y
> >> +CONFIG_SPL_LOAD_FIT=y
> >> +CONFIG_DEFAULT_FDT_FILE="rockchip/rk3568-rock-3a.dtb"
> >> +# CONFIG_DISPLAY_CPUINFO is not set
> >> +CONFIG_DISPLAY_BOARDINFO_LATE=y
> >> +CONFIG_SPL_MAX_SIZE=0x20000
> >> +CONFIG_SPL_PAD_TO=0x7f8000
> >> +CONFIG_SPL_HAS_BSS_LINKER_SECTION=y
> >> +CONFIG_SPL_BSS_START_ADDR=0x4000000
> >> +CONFIG_SPL_BSS_MAX_SIZE=0x4000
> >> +# CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
> >> +# CONFIG_SPL_SHARES_INIT_SP_ADDR is not set
> >> +CONFIG_DM_PMIC=y
> >> +CONFIG_PMIC_RK8XX=y
> >> +CONFIG_SPL_PMIC_RK8XX=y
> >> +CONFIG_SPL_STACK=0x400000
> >> +CONFIG_SPL_STACK_R=y
> >> +CONFIG_SPL_ATF=y
> >> +CONFIG_CMD_I2C=y
> >> +CONFIG_CMD_GPT=y
> >> +CONFIG_CMD_MMC=y
> >> +# CONFIG_CMD_SETEXPR is not set
> >> +# CONFIG_SPL_DOS_PARTITION is not set
> >> +CONFIG_SPL_OF_CONTROL=y
> >> +CONFIG_OF_LIVE=y
> >> +CONFIG_NET_RANDOM_ETHADDR=y
> >> +CONFIG_REGULATOR_RK8XX=y
> >> +CONFIG_SPL_REGMAP=y
> >> +CONFIG_SPL_SYSCON=y
> >> +CONFIG_SPL_CLK=y
> >> +CONFIG_ROCKCHIP_GPIO=y
> >> +CONFIG_SYS_I2C_ROCKCHIP=y
> >> +CONFIG_MISC=y
> >> +CONFIG_SUPPORT_EMMC_RPMB=y
> >> +CONFIG_MMC_DW=y
> >> +CONFIG_MMC_DW_ROCKCHIP=y
> >> +CONFIG_MMC_SDHCI=y
> >> +CONFIG_MMC_SDHCI_SDMA=y
> >> +CONFIG_MMC_SDHCI_ROCKCHIP=y
> >> +CONFIG_ETH_DESIGNWARE=y
> >> +CONFIG_GMAC_ROCKCHIP=y
> >> +CONFIG_REGULATOR_PWM=y
> >> +CONFIG_PWM_ROCKCHIP=y
> >> +CONFIG_SPL_RAM=y
> >> +CONFIG_DM_RESET=y
> >> +CONFIG_BAUDRATE=1500000
> >> +CONFIG_DEBUG_UART_SHIFT=2
> >> +CONFIG_SYS_NS16550_MEM32=y
> >> +CONFIG_SYSRESET=y
> >> +# CONFIG_BINMAN_FDT is not set
> >> +CONFIG_ERRNO_STR=y
> >> --
> >> 2.25.1
> >>

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2023-02-23 19:33 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-02-14 15:18 [PATCH v4 0/1] Add Radxa ROCK 3 Model A support in U-boot Akash Gajjar
2023-02-14 15:18 ` [PATCH v4 1/1] arm64: dts: rockchip: rk3568: Add Radxa ROCK 3 Model A board support Akash Gajjar
2023-02-16  8:41   ` Kever Yang
2023-02-23  0:31   ` Vasily Khoruzhick
2023-02-23 15:40     ` Akash
2023-02-23 19:33       ` Vasily Khoruzhick

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.