From 2aec6c23e62781e9bdd69c6aa37bdace2df434e1 Mon Sep 17 00:00:00 2001 From: Elias Bakken Date: Mon, 19 Jun 2023 22:02:56 +0200 Subject: [PATCH] Add support for Recore (#5351) * Add support for Recore Signed-off-by: Elias Bakken * Add board maintainter to boad config Signed-off-by: Elias Bakken --------- Signed-off-by: Elias Bakken --- config/boards/recore.csc | 31 +- ...llwinner-add-support-for-Recore-dtbs.patch | 612 ++++++++++++++++++ ...llwinner-add-support-for-Recore-dtbs.patch | 612 ++++++++++++++++++ .../allwinner-add-support-for-Recore.patch | 342 ++++++++++ 4 files changed, 1591 insertions(+), 6 deletions(-) create mode 100644 patch/kernel/archive/sunxi-5.15/allwinner-add-support-for-Recore-dtbs.patch create mode 100644 patch/kernel/archive/sunxi-6.1/allwinner-add-support-for-Recore-dtbs.patch create mode 100644 patch/u-boot/u-boot-sunxi/allwinner-add-support-for-Recore.patch diff --git a/config/boards/recore.csc b/config/boards/recore.csc index fe6e4197d3..f4ada85e1a 100644 --- a/config/boards/recore.csc +++ b/config/boards/recore.csc @@ -1,7 +1,26 @@ -# Allwinner A64 quad core 1GB RAM SoC GBE -BOARD_NAME="Recore" +# Allwinner A64 quad core 1GB RAM SoC GBE for 3D printers +BOARD_NAME="Iagent Recore" BOARDFAMILY="sun50iw1" -BOARD_MAINTAINER="" -BOOTCONFIG="pine64_plus_defconfig" -KERNEL_TARGET="current,edge" -FULL_DESKTOP="no" +BOOTCONFIG="recore_defconfig" +KERNEL_TARGET="legacy,current" +MODULES="g_serial" +BOOT_LOGO="yes" +BOARD_MAINTAINER="eliasbakken" + +function post_family_config__shrink_atf() { + echo "🍰Shrink ATF" + declare -g ATF_TARGET_MAP="PLAT=$ATF_PLAT DEBUG=0 SUNXI_PSCI_USE_SCPI=0 bl31;;build/$ATF_PLAT/release/bl31.bin" + + echo "🍰Compile without SCP binary" + UBOOT_TARGET_MAP="SCP=/dev/null;;u-boot-sunxi-with-spl.bin" +} + +function format_partitions__make_boot_ro() { + echo "🍰Making boot partition ro" + sed -i 's:/boot ext4 defaults,commit=600,errors=remount-ro:/boot ext4 ro,defaults:' $SDCARD/etc/fstab +} + +function extension_finish_config__enable_plymouth() { + echo "🍰Enable Plymouth on minimal build" + PLYMOUTH=yes +} diff --git a/patch/kernel/archive/sunxi-5.15/allwinner-add-support-for-Recore-dtbs.patch b/patch/kernel/archive/sunxi-5.15/allwinner-add-support-for-Recore-dtbs.patch new file mode 100644 index 0000000000..9337ea6288 --- /dev/null +++ b/patch/kernel/archive/sunxi-5.15/allwinner-add-support-for-Recore-dtbs.patch @@ -0,0 +1,612 @@ +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 7dcf90b32..8be674369 100644 +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -20,6 +20,10 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.2.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab-early-adopter.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a5.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a6.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a7.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts +new file mode 100644 +index 000000000..1920172d3 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts +@@ -0,0 +1,65 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-A5"; ++ compatible = "iagent,recore-a5", "allwinner,sun50i-a64"; ++ ++ e0-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e0-consumer"; ++ controlled-supply = <®_aldo1>; ++ }; ++ ++ e1-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e1-consumer"; ++ controlled-supply = <®_aldo2>; ++ }; ++ ++ e2-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e2-consumer"; ++ controlled-supply = <®_dldo3>; ++ }; ++ ++ e3-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e3-consumer"; ++ controlled-supply = <®_dldo4>; ++ }; ++}; ++ ++®_aldo1 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e0"; ++}; ++ ++®_aldo2 { ++ regulator-min-microvolt = <3200000>; ++ regulator-max-microvolt = <3200000>; ++ regulator-name = "vcc-vref-e1"; ++}; ++ ++®_dldo3 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e2"; ++}; ++ ++®_dldo4 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e3"; ++}; ++ ++/* STM32 */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "okay"; ++}; +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts +new file mode 100644 +index 000000000..c5be6e937 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts +@@ -0,0 +1,22 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-A6"; ++ compatible = "iagent,recore-a6", "allwinner,sun50i-a64"; ++}; ++ ++®_aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ext"; ++}; ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts +new file mode 100644 +index 000000000..5cf1bcca7 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts +@@ -0,0 +1,41 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++#include ++ ++/ { ++ model = "Recore-A7"; ++ compatible = "iagent,recore-a7", "allwinner,sun50i-a64"; ++}; ++ ++®_usb1_vbus3 { ++ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ ++}; ++ ++®_usb1_vbus4 { ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ ++}; ++ ++®_aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ext"; ++}; ++ ++/* Set over current to lowest value: 35 A = 700 mV */ ++®_dldo2 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++}; ++ ++&usbphy { ++ usb0_id_det-gpios = <&pio 4 7 GPIO_ACTIVE_LOW>; ++}; ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts +new file mode 100644 +index 000000000..5cf1bcca7 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts +@@ -0,0 +1,31 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-all"; ++ compatible = "iagent,recore-all", "allwinner,sun50i-a64"; ++ ++ reg_usb1_vbus5: usb1-vbus5 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus5"; ++ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ reg_usb1_vbus6: usb1-vbus6 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus6"; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi +new file mode 100644 +index 000000000..89fcf8ccb +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi +@@ -0,0 +1,407 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64.dtsi" ++#include "sun50i-a64-cpu-opp.dtsi" ++ ++#include ++#include ++ ++/ { ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ hdmi-connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ leds { ++ compatible = "gpio-leds"; ++ ++ heartbeat-led { ++ label = "recore:white:heartbeat"; ++ gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ }; ++ ++ emmc-led { ++ label = "recore:white:emmc"; ++ gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "mmc0"; ++ }; ++ ++ cpu-led { ++ label = "recore:white:cpu"; ++ gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "activity"; ++ }; ++ ++ usb-led { ++ label = "recore:white:usb"; ++ function = LED_FUNCTION_USB; ++ gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; ++ trigger-sources = <&ohci1>, <&ehci1>; ++ linux,default-trigger = "usb-host"; ++ }; ++ }; ++ ++ reg_5v: 5v-buck { ++ compatible = "regulator-fixed"; ++ regulator-name = "5v-buck"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_usb1_vbus1: usb1-vbus1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus1"; ++ gpio = <&pio 7 0 GPIO_ACTIVE_HIGH> ; /* PH0 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus2: usb1-vbus2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus2"; ++ gpio = <&pio 7 1 GPIO_ACTIVE_HIGH> ; /* PH1 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus3: usb1-vbus3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus3"; ++ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH> ; /* PH2 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ ++ reg_usb1_vbus4: usb1-vbus4 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus4"; ++ gpio = <&pio 7 3 GPIO_ACTIVE_HIGH> ; /* PH3 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ startup-delay-us = <100000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ ++ reg_hdmi_vbus: hdmi-vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "hdmi-vbus"; ++ gpio = <&pio 6 9 GPIO_ACTIVE_HIGH> ; /* PG9 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ }; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu1 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu2 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu3 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii-txid"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_dcdc1>; ++ phy-io-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ hvcc-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <7>; ++ }; ++}; ++ ++&mixer0 { ++ status = "disabled"; ++}; ++ ++&tcon0 { ++ status = "disabled"; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_pins>/*, <&mmc2_ds_pin>*/; ++ vmmc-supply = <®_dcdc1>; ++ vqmmc-supply = <®_eldo1>; ++ non-removable; ++ bus-width = <8>; ++ cap-mmc-hw-reset; ++ mmc-hs200-1_8v; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&pio { ++ vcc-pb-supply = <®_dcdc1>; ++ vcc-pc-supply = <®_eldo1>; ++ vcc-pd-supply = <®_dcdc1>; ++ vcc-pe-supply = <®_dcdc1>; ++ vcc-pf-supply = <®_dcdc1>; ++ vcc-pg-supply = <®_dcdc1>; ++ vcc-ph-supply = <®_dcdc1>; ++ vcc-pl-supply = <®_dcdc1>; ++}; ++ ++&r_rsb { ++ status = "okay"; ++ axp803: pmic@3a3 { ++ compatible = "x-powers,axp803"; ++ reg = <0x3a3>; ++ interrupt-parent = <&r_intc>; ++ interrupts = ; ++ }; ++}; ++ ++#include "axp803.dtsi" ++ ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ ++®_dc1sw { ++ regulator-always-on; ++ regulator-name = "vcc-phy"; ++ regulator-enable-ramp-delay = <100000>; ++}; ++ ++®_dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; ++}; ++ ++®_dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1040000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-name = "vdd-cpux"; ++}; ++ ++®_dcdc5 { ++ regulator-always-on; ++ regulator-min-microvolt = <1360000>; ++ regulator-max-microvolt = <1360000>; ++ regulator-name = "vcc-dram"; ++}; ++ ++®_dcdc6 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-sys"; ++}; ++ ++®_aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-name = "vcc-pll-avcc"; ++}; ++ ++®_dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-hdmi"; ++}; ++ ++/* Set over current to lowest value: 35 A = 700 mV, 50 A = 1000 mV */ ++®_dldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1000000>; ++ regulator-name = "current-control"; ++}; ++ ++®_eldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "emmc-io"; ++}; ++ ++®_fldo1 { ++ regulator-name = "vdd-hsic"; ++ status = "disabled"; ++}; ++ ++®_fldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpus"; ++}; ++ ++&gpio0_ldo { ++ function = "ldo"; ++}; ++ ++&gpio1_ldo { ++ function = "ldo"; ++}; ++ ++®_ldo_io0 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ref"; ++ status = "okay"; ++}; ++ ++®_ldo_io1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-iref"; ++ status = "okay"; ++}; ++ ++®_rtc_ldo { ++ regulator-name = "vcc-rtc"; ++}; ++ ++&simplefb_hdmi { ++ vcc-hdmi-supply = <®_hdmi_vbus>; ++}; ++ ++/* Debug port */ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pb_pins>; ++ status = "okay"; ++}; ++ ++/* AR100 null-modem */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "peripheral"; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ ++&usb_power_supply { ++ status = "okay"; ++}; ++ ++&usbphy { ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++&cpu0 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu1 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu2 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu3 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++/ { ++ cpus { ++ /delete-node/ idle-states; ++ }; ++ /delete-node/ scpi; ++}; ++ ++&mbus{ ++ status="disabled"; ++}; ++ ++&mali { ++ assigned-clock-rates = <297000000>; ++}; diff --git a/patch/kernel/archive/sunxi-6.1/allwinner-add-support-for-Recore-dtbs.patch b/patch/kernel/archive/sunxi-6.1/allwinner-add-support-for-Recore-dtbs.patch new file mode 100644 index 0000000000..9337ea6288 --- /dev/null +++ b/patch/kernel/archive/sunxi-6.1/allwinner-add-support-for-Recore-dtbs.patch @@ -0,0 +1,612 @@ +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 7dcf90b32..8be674369 100644 +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -20,6 +20,10 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinephone-1.2.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinetab-early-adopter.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a5.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a6.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-recore-a7.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-teres-i.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a100-allwinner-perf1.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-bananapi-m2-plus.dtb +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts +new file mode 100644 +index 000000000..1920172d3 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a5.dts +@@ -0,0 +1,65 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-A5"; ++ compatible = "iagent,recore-a5", "allwinner,sun50i-a64"; ++ ++ e0-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e0-consumer"; ++ controlled-supply = <®_aldo1>; ++ }; ++ ++ e1-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e1-consumer"; ++ controlled-supply = <®_aldo2>; ++ }; ++ ++ e2-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e2-consumer"; ++ controlled-supply = <®_dldo3>; ++ }; ++ ++ e3-consumer { ++ compatible = "custom,reg-userspace-consumer"; ++ regulator-name = "e3-consumer"; ++ controlled-supply = <®_dldo4>; ++ }; ++}; ++ ++®_aldo1 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e0"; ++}; ++ ++®_aldo2 { ++ regulator-min-microvolt = <3200000>; ++ regulator-max-microvolt = <3200000>; ++ regulator-name = "vcc-vref-e1"; ++}; ++ ++®_dldo3 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e2"; ++}; ++ ++®_dldo4 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++ regulator-name = "vcc-vref-e3"; ++}; ++ ++/* STM32 */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "okay"; ++}; +\ No newline at end of file +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts +new file mode 100644 +index 000000000..c5be6e937 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a6.dts +@@ -0,0 +1,22 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-A6"; ++ compatible = "iagent,recore-a6", "allwinner,sun50i-a64"; ++}; ++ ++®_aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ext"; ++}; ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts +new file mode 100644 +index 000000000..5cf1bcca7 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore-a7.dts +@@ -0,0 +1,41 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++#include ++ ++/ { ++ model = "Recore-A7"; ++ compatible = "iagent,recore-a7", "allwinner,sun50i-a64"; ++}; ++ ++®_usb1_vbus3 { ++ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ ++}; ++ ++®_usb1_vbus4 { ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ ++}; ++ ++®_aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ext"; ++}; ++ ++/* Set over current to lowest value: 35 A = 700 mV */ ++®_dldo2 { ++ regulator-min-microvolt = <700000>; ++ regulator-max-microvolt = <700000>; ++}; ++ ++&usbphy { ++ usb0_id_det-gpios = <&pio 4 7 GPIO_ACTIVE_LOW>; ++}; ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "okay"; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts +new file mode 100644 +index 000000000..5cf1bcca7 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dts +@@ -0,0 +1,31 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64-recore.dtsi" ++ ++/ { ++ model = "Recore-all"; ++ compatible = "iagent,recore-all", "allwinner,sun50i-a64"; ++ ++ reg_usb1_vbus5: usb1-vbus5 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus5"; ++ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH> ; /* PD5 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ reg_usb1_vbus6: usb1-vbus6 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus6"; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++}; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi +new file mode 100644 +index 000000000..89fcf8ccb +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-recore.dtsi +@@ -0,0 +1,407 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ ++/dts-v1/; ++ ++#include "sun50i-a64.dtsi" ++#include "sun50i-a64-cpu-opp.dtsi" ++ ++#include ++#include ++ ++/ { ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ hdmi-connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ leds { ++ compatible = "gpio-leds"; ++ ++ heartbeat-led { ++ label = "recore:white:heartbeat"; ++ gpios = <&pio 1 7 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "heartbeat"; ++ function = LED_FUNCTION_STATUS; ++ color = ; ++ }; ++ ++ emmc-led { ++ label = "recore:white:emmc"; ++ gpios = <&pio 1 5 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "mmc0"; ++ }; ++ ++ cpu-led { ++ label = "recore:white:cpu"; ++ gpios = <&pio 1 6 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "activity"; ++ }; ++ ++ usb-led { ++ label = "recore:white:usb"; ++ function = LED_FUNCTION_USB; ++ gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; ++ trigger-sources = <&ohci1>, <&ehci1>; ++ linux,default-trigger = "usb-host"; ++ }; ++ }; ++ ++ reg_5v: 5v-buck { ++ compatible = "regulator-fixed"; ++ regulator-name = "5v-buck"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_usb1_vbus1: usb1-vbus1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus1"; ++ gpio = <&pio 7 0 GPIO_ACTIVE_HIGH> ; /* PH0 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus2: usb1-vbus2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus2"; ++ gpio = <&pio 7 1 GPIO_ACTIVE_HIGH> ; /* PH1 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus3: usb1-vbus3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus3"; ++ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH> ; /* PH2 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ ++ reg_usb1_vbus4: usb1-vbus4 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus4"; ++ gpio = <&pio 7 3 GPIO_ACTIVE_HIGH> ; /* PH3 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ startup-delay-us = <100000>; ++ regulator-always-on; ++ enable-active-high; ++ vin-supply = <®_5v>; ++ }; ++ ++ reg_hdmi_vbus: hdmi-vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "hdmi-vbus"; ++ gpio = <&pio 6 9 GPIO_ACTIVE_HIGH> ; /* PG9 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ enable-active-high; ++ }; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu1 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu2 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&cpu3 { ++ cpu-supply = <®_dcdc2>; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii-txid"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_dcdc1>; ++ phy-io-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ hvcc-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <7>; ++ }; ++}; ++ ++&mixer0 { ++ status = "disabled"; ++}; ++ ++&tcon0 { ++ status = "disabled"; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_pins>/*, <&mmc2_ds_pin>*/; ++ vmmc-supply = <®_dcdc1>; ++ vqmmc-supply = <®_eldo1>; ++ non-removable; ++ bus-width = <8>; ++ cap-mmc-hw-reset; ++ mmc-hs200-1_8v; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&pio { ++ vcc-pb-supply = <®_dcdc1>; ++ vcc-pc-supply = <®_eldo1>; ++ vcc-pd-supply = <®_dcdc1>; ++ vcc-pe-supply = <®_dcdc1>; ++ vcc-pf-supply = <®_dcdc1>; ++ vcc-pg-supply = <®_dcdc1>; ++ vcc-ph-supply = <®_dcdc1>; ++ vcc-pl-supply = <®_dcdc1>; ++}; ++ ++&r_rsb { ++ status = "okay"; ++ axp803: pmic@3a3 { ++ compatible = "x-powers,axp803"; ++ reg = <0x3a3>; ++ interrupt-parent = <&r_intc>; ++ interrupts = ; ++ }; ++}; ++ ++#include "axp803.dtsi" ++ ++&ac_power_supply { ++ status = "okay"; ++}; ++ ++&battery_power_supply { ++ status = "okay"; ++}; ++ ++®_dc1sw { ++ regulator-always-on; ++ regulator-name = "vcc-phy"; ++ regulator-enable-ramp-delay = <100000>; ++}; ++ ++®_dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; ++}; ++ ++®_dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1040000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-name = "vdd-cpux"; ++}; ++ ++®_dcdc5 { ++ regulator-always-on; ++ regulator-min-microvolt = <1360000>; ++ regulator-max-microvolt = <1360000>; ++ regulator-name = "vcc-dram"; ++}; ++ ++®_dcdc6 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-sys"; ++}; ++ ++®_aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-name = "vcc-pll-avcc"; ++}; ++ ++®_dldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-hdmi"; ++}; ++ ++/* Set over current to lowest value: 35 A = 700 mV, 50 A = 1000 mV */ ++®_dldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1000000>; ++ regulator-max-microvolt = <1000000>; ++ regulator-name = "current-control"; ++}; ++ ++®_eldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "emmc-io"; ++}; ++ ++®_fldo1 { ++ regulator-name = "vdd-hsic"; ++ status = "disabled"; ++}; ++ ++®_fldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpus"; ++}; ++ ++&gpio0_ldo { ++ function = "ldo"; ++}; ++ ++&gpio1_ldo { ++ function = "ldo"; ++}; ++ ++®_ldo_io0 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ref"; ++ status = "okay"; ++}; ++ ++®_ldo_io1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-iref"; ++ status = "okay"; ++}; ++ ++®_rtc_ldo { ++ regulator-name = "vcc-rtc"; ++}; ++ ++&simplefb_hdmi { ++ vcc-hdmi-supply = <®_hdmi_vbus>; ++}; ++ ++/* Debug port */ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pb_pins>; ++ status = "okay"; ++}; ++ ++/* AR100 null-modem */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "peripheral"; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ ++&usb_power_supply { ++ status = "okay"; ++}; ++ ++&usbphy { ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++&cpu0 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu1 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu2 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++&cpu3 { ++ /delete-property/ cpu-idle-states; ++}; ++ ++/ { ++ cpus { ++ /delete-node/ idle-states; ++ }; ++ /delete-node/ scpi; ++}; ++ ++&mbus{ ++ status="disabled"; ++}; ++ ++&mali { ++ assigned-clock-rates = <297000000>; ++}; diff --git a/patch/u-boot/u-boot-sunxi/allwinner-add-support-for-Recore.patch b/patch/u-boot/u-boot-sunxi/allwinner-add-support-for-Recore.patch new file mode 100644 index 0000000000..efedc29a85 --- /dev/null +++ b/patch/u-boot/u-boot-sunxi/allwinner-add-support-for-Recore.patch @@ -0,0 +1,342 @@ +From a275e2cb3bfddc445f7f9c83d92e48830b57faf6 Mon Sep 17 00:00:00 2001 +From: Elias Bakken +Date: Tue, 7 Feb 2023 21:56:20 +0100 +Subject: [PATCH] Add support for Recore + +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun50i-a64-recore.dts | 257 +++++++++++++++++++++++++++++ + configs/recore_defconfig | 22 +++ + 3 files changed, 280 insertions(+) + create mode 100644 arch/arm/dts/sun50i-a64-recore.dts + create mode 100644 configs/recore_defconfig + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index a7e0d9f6c0..2b981c0c8b 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -718,6 +718,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \ + sun50i-a64-pinephone-1.1.dtb \ + sun50i-a64-pinephone-1.2.dtb \ + sun50i-a64-pinetab.dtb \ ++ sun50i-a64-recore.dtb \ + sun50i-a64-sopine-baseboard.dtb \ + sun50i-a64-teres-i.dtb + dtb-$(CONFIG_MACH_SUN9I) += \ +diff --git a/arch/arm/dts/sun50i-a64-recore.dts b/arch/arm/dts/sun50i-a64-recore.dts +new file mode 100644 +index 0000000000..2d29fe1556 +--- /dev/null ++++ b/arch/arm/dts/sun50i-a64-recore.dts +@@ -0,0 +1,271 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (c) 2016 ARM Ltd. ++ ++/dts-v1/; ++ ++#include "sun50i-a64.dtsi" ++#include "sun50i-a64-cpu-opp.dtsi" ++ ++#include ++ ++/ { ++ model = "Recore-u-boot"; ++ compatible = "recore", "allwinner,sun50i-a64"; ++ ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ serial1 = &uart1; ++ serial2 = &uart2; ++ serial3 = &uart3; ++ serial4 = &uart4; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ hdmi-connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ reg_usb1_vbus1: usb1-vbus1 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus1"; ++ gpio = <&pio 7 0 GPIO_ACTIVE_HIGH>; /* PH0 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus2: usb1-vbus2 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus2"; ++ gpio = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus3: usb1-vbus3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus3"; ++ gpio = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus4: usb1-vbus4 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus4"; ++ gpio = <&pio 7 3 GPIO_ACTIVE_HIGH>; /* PH3 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus5: usb1-vbus5 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus5"; ++ gpio = <&pio 3 5 GPIO_ACTIVE_HIGH>; /* PD5 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++ ++ reg_usb1_vbus6: usb1-vbus6 { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus6"; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH> ; /* PD6 */ ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ regulator-boot-on; ++ enable-active-high; ++ }; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&hdmi { ++ hvcc-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_dc1sw>; ++ status = "okay"; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <7>; ++ }; ++}; ++ ++&mmc2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>; ++ vmmc-supply = <®_dcdc1>; ++ vqmmc-supply = <®_eldo1>; ++ non-removable; ++ cap-mmc-hw-reset; ++ bus-width = <8>; ++ status = "okay"; ++ mmc-hs200-1_8v; ++ max-frequency = <100000000>; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++&r_rsb { ++ status = "okay"; ++ ++ axp803: pmic@3a3 { ++ compatible = "x-powers,axp803"; ++ reg = <0x3a3>; ++ interrupt-parent = <&r_intc>; ++ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; ++ }; ++}; ++ ++#include "axp803.dtsi" ++ ++®_aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3000000>; ++ regulator-max-microvolt = <3000000>; ++ regulator-name = "vcc-pll-avcc"; ++}; ++ ++®_dc1sw { ++ regulator-always-on; ++ regulator-name = "vcc-phy"; ++}; ++ ++®_dcdc1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; ++}; ++ ++®_dcdc2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1040000>; ++ regulator-max-microvolt = <1300000>; ++ regulator-name = "vdd-cpux"; ++}; ++ ++®_dcdc5 { ++ regulator-always-on; ++ regulator-min-microvolt = <1360000>; ++ regulator-max-microvolt = <1360000>; ++ regulator-name = "vcc-dram"; ++}; ++ ++®_dcdc6 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-sys"; ++}; ++ ++®_dldo1 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-hdmi"; ++}; ++ ++®_eldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "cpvdd"; ++}; ++ ++®_fldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1100000>; ++ regulator-max-microvolt = <1100000>; ++ regulator-name = "vdd-cpus"; ++}; ++ ++®_rtc_ldo { ++ regulator-name = "vcc-rtc"; ++}; ++ ++&simplefb_hdmi { ++ vcc-hdmi-supply = <®_dldo1>; ++}; ++ ++&spdif { ++ status = "disabled"; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pb_pins>; ++ status = "okay"; ++}; ++ ++&usb_otg { ++ dr_mode = "peripheral"; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ ++&usb_power_supply { ++ status = "okay"; ++}; ++ ++&usbphy { ++ usb0_vbus_power-supply = <&usb_power_supply>; ++ vcc-supply = <®_dcdc1>; ++ status = "okay"; ++}; +diff --git a/configs/recore_defconfig b/configs/recore_defconfig +new file mode 100644 +index 0000000000..6ed99805ab +--- /dev/null ++++ b/configs/recore_defconfig +@@ -0,0 +1,32 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_SPL=y ++CONFIG_MACH_SUN50I=y ++CONFIG_MMC=y ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-recore" ++CONFIG_OF_LIST="sun50i-a64-recore" ++CONFIG_DM_VIDEO=y ++CONFIG_PHY_REALTEK=y ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_ENV_IS_NOWHERE=y ++#CONFIG_ENV_IS_IN_MMC=y ++CONFIG_SPL_STACK=0x54000 ++CONFIG_SYS_PBSIZE=1024 ++CONFIG_SYS_BOOTM_LEN=0x2000000 ++CONFIG_SUPPORT_EMMC_BOOT=y ++CONFIG_LED=y ++CONFIG_LED_GPIO=y ++CONFIG_SPLASH_SCREEN_ALIGN=y ++CONFIG_VIDEO_LOGO=y ++CONFIG_SPLASH_SCREEN=y ++CONFIG_BMP_16BPP=y ++CONFIG_BMP_24BPP=y ++CONFIG_BMP_32BPP=y ++CONFIG_VIDEO_BMP_RLE8=y ++CONFIG_DM_REGULATOR=y ++CONFIG_DM_REGULATOR_FIXED=y ++CONFIG_CMD_REGULATOR=y +-- +2.30.2