diff --git a/config/boards/orangepi3-lts.csc b/config/boards/orangepi3-lts.csc index 457af0fcbd..7afdffe40f 100644 --- a/config/boards/orangepi3-lts.csc +++ b/config/boards/orangepi3-lts.csc @@ -4,7 +4,7 @@ BOARD_VENDOR="xunlong" BOARDFAMILY="sun50iw6" BOARD_MAINTAINER="" BOOT_FDT_FILE="sun50i-h6-orangepi-3-lts.dtb" -BOOTCONFIG="orangepi_3_defconfig" +BOOTCONFIG="orangepi_3_lts_defconfig" BOOT_LOGO="desktop" MODULES_BLACKLIST="sunxi_addr" # Still loads but later in the boot process CRUSTCONFIG="orangepi_3_lts_defconfig" diff --git a/patch/u-boot/v2026.01/board_orangepi3-lts/001-Add-board-OrangePi-3-LTS.patch b/patch/u-boot/v2026.01/board_orangepi3-lts/001-Add-board-OrangePi-3-LTS.patch new file mode 100644 index 0000000000..6590dd2eeb --- /dev/null +++ b/patch/u-boot/v2026.01/board_orangepi3-lts/001-Add-board-OrangePi-3-LTS.patch @@ -0,0 +1,427 @@ +From 5dde625501a285558da56db28a21cb30724f0fad Mon Sep 17 00:00:00 2001 +From: Patrick Yavitz +Date: Wed, 4 Feb 2026 05:06:26 -0500 +Subject: [PATCH] Add board OrangePi 3 LTS + +Signed-off-by: Patrick Yavitz +--- + arch/arm/dts/Makefile | 1 + + arch/arm/dts/sun50i-h6-orangepi-3-lts.dts | 394 ++++++++++++++++++++++ + 2 files changed, 395 insertions(+) + create mode 100644 arch/arm/dts/sun50i-h6-orangepi-3-lts.dts + +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index fcad6fb2fc7..e54213f9599 100644 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -666,6 +666,7 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \ + dtb-$(CONFIG_MACH_SUN50I_H6) += \ + sun50i-h6-beelink-gs1.dtb \ + sun50i-h6-orangepi-3.dtb \ ++ sun50i-h6-orangepi-3-lts.dtb \ + sun50i-h6-orangepi-lite2.dtb \ + sun50i-h6-orangepi-one-plus.dtb \ + sun50i-h6-pine-h64.dtb \ +diff --git a/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts +new file mode 100644 +index 00000000000..143a1442f9a +--- /dev/null ++++ b/arch/arm/dts/sun50i-h6-orangepi-3-lts.dts +@@ -0,0 +1,394 @@ ++// SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++// Copyright (C) 2019 OndÅ™ej Jirman ++// Copyright (C) 2023 Jernej Skrabec ++// Edited by Patrick Yavitz ++ ++/dts-v1/; ++ ++#include "sun50i-h6.dtsi" ++#include "sun50i-h6-cpu-opp.dtsi" ++ ++#include ++ ++/ { ++ model = "OrangePi 3 LTS"; ++ compatible = "xunlong,orangepi-3-lts", "allwinner,sun50i-h6"; ++ ++ aliases { ++ ethernet0 = &emac; ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ kaslr-seed = <0xfeedbeef 0xc0def00d>; ++ }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ ddc-en-gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>; /* PH2 */ ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ ++ ext_osc32k: ext-osc32k-clk { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <32768>; ++ clock-output-names = "ext_osc32k"; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ led-0 { ++ label = "orangepi:red:status"; ++ gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ ++ linux,default-trigger = "heartbeat"; ++ }; ++ ++ led-1 { ++ label = "orangepi:green:power"; ++ gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ ++ linux,default-trigger = "default-on"; ++ }; ++ }; ++ ++ reg_vcc5v: vcc5v { ++ /* board wide 5V supply directly from the DC jack */ ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc-5v"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-always-on; ++ }; ++ ++ reg_vcc33_wifi: vcc33-wifi { ++ /* Always on 3.3V regulator for WiFi and BT */ ++ compatible = "regulator-fixed"; ++ enable-active-high; ++ regulator-name = "vcc33-wifi"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ gpio = <&pio 7 7 GPIO_ACTIVE_HIGH>; /* PH7 */ ++ }; ++ ++ reg_vcc_wifi_io: vcc-wifi-io { ++ /* Always on 1.8V/300mA regulator for WiFi and BT IO */ ++ compatible = "regulator-fixed"; ++ regulator-always-on; ++ regulator-name = "vcc-wifi-io"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ vin-supply = <®_vcc33_wifi>; ++ }; ++ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rtc CLK_OSC32K_FANOUT>; ++ clock-names = "ext_clock"; ++ post-power-on-delay-ms = <200>; ++ reset-gpios = <&r_pio 1 3 GPIO_ACTIVE_LOW>, /* PM3 */ ++ <&r_pio 1 4 GPIO_ACTIVE_LOW>; /* PM4 */ ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++}; ++ ++&cpu_opp_table { ++ opp-1704000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1704000000>; ++ ++ opp-microvolt-speed0 = <1120000 1120000 1200000>; ++ opp-microvolt-speed1 = <1060000 1060000 1200000>; ++ opp-microvolt-speed2 = <1060000 1060000 1200000>; ++ turbo-mode; ++ }; ++ ++ opp-1800000000 { ++ clock-latency-ns = <244144>; /* 8 32k periods */ ++ opp-hz = /bits/ 64 <1800000000>; ++ ++ opp-microvolt-speed0 = <1160000 1160000 1200000>; ++ opp-microvolt-speed1 = <1100000 1100000 1200000>; ++ opp-microvolt-speed2 = <1100000 1100000 1200000>; ++ turbo-mode; ++ }; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&dwc3 { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci3 { ++ status = "okay"; ++}; ++ ++&emac { ++ status = "okay"; ++ pinctrl-0 = <&ext_rgmii_pins>; ++ pinctrl-names = "default"; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ allwinner,tx-delay-ps = <700>; ++ allwinner,rx-delay-ps = <1700>; ++}; ++ ++&gpu { ++ mali-supply = <®_dcdcc>; ++ status = "okay"; ++}; ++ ++&hdmi { ++ 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 = <1>; ++ ++ reset-gpios = <&pio 3 14 GPIO_ACTIVE_LOW>; /* PD14 */ ++ reset-assert-us = <15000>; ++ reset-deassert-us = <40000>; ++ }; ++}; ++ ++&mmc0 { ++ status = "okay"; ++ bus-width = <4>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ vmmc-supply = <®_cldo1>; ++}; ++ ++&mmc1 { ++ status = "okay"; ++ bus-width = <4>; ++ non-removable; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ vmmc-supply = <®_vcc33_wifi>; ++ vqmmc-supply = <®_vcc_wifi_io>; ++ ++ sdio: wifi@1 { ++ reg = <1>; ++ }; ++}; ++ ++&mmc2 { ++ status = "okay"; ++ bus-width = <8>; ++ cap-mmc-hw-reset; ++ mmc-hs200-1_8v; ++ non-removable; ++ vmmc-supply = <®_cldo1>; ++ vqmmc-supply = <®_bldo2>; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci3 { ++ status = "okay"; ++}; ++ ++&pio { ++ vcc-pc-supply = <®_bldo2>; ++ vcc-pd-supply = <®_cldo1>; ++ vcc-pg-supply = <®_vcc_wifi_io>; ++}; ++ ++&r_i2c { ++ status = "okay"; ++ ++ axp805: pmic@36 { ++ compatible = "x-powers,axp805", "x-powers,axp806"; ++ reg = <0x36>; ++ interrupt-parent = <&r_intc>; ++ interrupts = ; ++ interrupt-controller; ++ #interrupt-cells = <1>; ++ x-powers,self-working-mode; ++ vina-supply = <®_vcc5v>; ++ vinb-supply = <®_vcc5v>; ++ vinc-supply = <®_vcc5v>; ++ vind-supply = <®_vcc5v>; ++ vine-supply = <®_vcc5v>; ++ aldoin-supply = <®_vcc5v>; ++ bldoin-supply = <®_vcc5v>; ++ cldoin-supply = <®_vcc5v>; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pl-led-ir"; ++ }; ++ ++ reg_aldo2: aldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-audio-tv-ephy-mac"; ++ }; ++ ++ /* ALDO3 is shorted to CLDO1 */ ++ reg_aldo3: aldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-1"; ++ }; ++ ++ reg_bldo1: bldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc18-dram-bias-pll"; ++ }; ++ ++ reg_bldo2: bldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-efuse-pcie-hdmi-pc"; ++ }; ++ ++ reg_bldo3: bldo3 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-pm-pg-dcxoio-wifi"; ++ }; ++ ++ bldo4 { ++ /* unused */ ++ }; ++ ++ reg_cldo1: cldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc33-io-pd-emmc-sd-usb-uart-2"; ++ }; ++ ++ cldo2 { ++ /* unused */ ++ }; ++ ++ cldo3 { ++ /* unused */ ++ }; ++ ++ reg_dcdca: dcdca { ++ regulator-always-on; ++ regulator-min-microvolt = <800000>; ++ regulator-max-microvolt = <1160000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdcc: dcdcc { ++ regulator-enable-ramp-delay = <32000>; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1080000>; ++ regulator-ramp-delay = <2500>; ++ regulator-name = "vdd-gpu"; ++ }; ++ ++ reg_dcdcd: dcdcd { ++ regulator-always-on; ++ regulator-min-microvolt = <960000>; ++ regulator-max-microvolt = <960000>; ++ regulator-name = "vdd-sys"; ++ }; ++ ++ reg_dcdce: dcdce { ++ regulator-always-on; ++ regulator-min-microvolt = <1200000>; ++ regulator-max-microvolt = <1200000>; ++ regulator-name = "vcc-dram"; ++ }; ++ ++ sw { ++ /* unused */ ++ }; ++ }; ++ }; ++}; ++ ++&r_ir { ++ status = "okay"; ++}; ++ ++&rtc { ++ clocks = <&ext_osc32k>; ++}; ++ ++&r_pio { ++ vcc-pm-supply = <®_bldo3>; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++/* Bluetooth */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; ++ uart-has-rtscts; ++ status = "okay"; ++ ++ bluetooth { ++ compatible = "allwinner,sunxi-btlpm"; ++ bt_wake = <&r_pio 1 1 GPIO_ACTIVE_HIGH>; /* PM1 */ ++ bt_hostwake = <&r_pio 1 2 GPIO_ACTIVE_HIGH>; /* PM2 */ ++ }; ++}; ++ ++&usb2otg { ++ /* ++ * This board doesn't have a controllable VBUS even though it ++ * does have an ID pin. Using it as anything but a USB host is ++ * unsafe. ++ */ ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usb2phy { ++ usb0_id_det-gpios = <&pio 2 15 GPIO_ACTIVE_HIGH>; /* PC15 */ ++ usb0_vbus-supply = <®_vcc5v>; ++ usb3_vbus-supply = <®_vcc5v>; ++ status = "okay"; ++}; ++ ++&usb3phy { ++ status = "okay"; ++}; +-- +2.51.0 + diff --git a/patch/u-boot/v2026.01/board_orangepi3-lts/002-Add-OrangePi-3-LTS-defconfig.patch b/patch/u-boot/v2026.01/board_orangepi3-lts/002-Add-OrangePi-3-LTS-defconfig.patch new file mode 100644 index 0000000000..7f93cfc82c --- /dev/null +++ b/patch/u-boot/v2026.01/board_orangepi3-lts/002-Add-OrangePi-3-LTS-defconfig.patch @@ -0,0 +1,36 @@ +From 75bc3e6a7c4e487fb9d2f6ac88c77e484f2f0718 Mon Sep 17 00:00:00 2001 +From: Patrick Yavitz +Date: Wed, 4 Feb 2026 05:08:25 -0500 +Subject: [PATCH] Add OrangePi 3 LTS defconfig + +Signed-off-by: Patrick Yavitz +--- + configs/orangepi_3_lts_defconfig | 16 ++++++++++++++++ + 1 file changed, 16 insertions(+) + create mode 100644 configs/orangepi_3_lts_defconfig + +diff --git a/configs/orangepi_3_lts_defconfig b/configs/orangepi_3_lts_defconfig +new file mode 100644 +index 00000000000..6b64d12a197 +--- /dev/null ++++ b/configs/orangepi_3_lts_defconfig +@@ -0,0 +1,16 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h6-orangepi-3-lts" ++CONFIG_SPL=y ++CONFIG_MACH_SUN50I_H6=y ++CONFIG_SUNXI_DRAM_H6_LPDDR3=y ++CONFIG_MMC_SUNXI_SLOT_EXTRA=2 ++CONFIG_BLUETOOTH_DT_DEVICE_FIXUP="brcm,bcm4345c5" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_PHY_SUN50I_USB3=y ++CONFIG_USB_XHCI_HCD=y ++CONFIG_USB_XHCI_DWC3=y ++CONFIG_USB_EHCI_HCD=y ++CONFIG_USB_OHCI_HCD=y ++CONFIG_USB_DWC3=y ++# CONFIG_USB_DWC3_GADGET is not set +-- +2.51.0 + diff --git a/patch/u-boot/v2026.01/board_orangepi3-lts/001-Enable-KASLR.patch b/patch/u-boot/v2026.01/board_orangepi3-lts/003-Enable-KASLR.patch similarity index 75% rename from patch/u-boot/v2026.01/board_orangepi3-lts/001-Enable-KASLR.patch rename to patch/u-boot/v2026.01/board_orangepi3-lts/003-Enable-KASLR.patch index 1d35ab64ea..7701270b4e 100644 --- a/patch/u-boot/v2026.01/board_orangepi3-lts/001-Enable-KASLR.patch +++ b/patch/u-boot/v2026.01/board_orangepi3-lts/003-Enable-KASLR.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Enable KASLR Signed-off-by: Patrick Yavitz --- - configs/orangepi_3_defconfig | 2 ++ + configs/orangepi_3_lts_defconfig | 2 ++ 1 file changed, 2 insertions(+) -diff --git a/configs/orangepi_3_defconfig b/configs/orangepi_3_defconfig +diff --git a/configs/orangepi_3_lts_defconfig b/configs/orangepi_3_lts_defconfig index 125137bc321..89bb7496740 100644 ---- a/configs/orangepi_3_defconfig -+++ b/configs/orangepi_3_defconfig +--- a/configs/orangepi_3_lts_defconfig ++++ b/configs/orangepi_3_lts_defconfig @@ -7,7 +7,9 @@ CONFIG_SUNXI_DRAM_H6_LPDDR3=y CONFIG_MMC_SUNXI_SLOT_EXTRA=2 CONFIG_BLUETOOTH_DT_DEVICE_FIXUP="brcm,bcm4345c5" diff --git a/patch/u-boot/v2026.01/board_orangepi3-lts/003-OrangePi-3-power-led-is-green-and-red-is-status.patch b/patch/u-boot/v2026.01/board_orangepi3-lts/003-OrangePi-3-power-led-is-green-and-red-is-status.patch deleted file mode 100644 index 75088b7538..0000000000 --- a/patch/u-boot/v2026.01/board_orangepi3-lts/003-OrangePi-3-power-led-is-green-and-red-is-status.patch +++ /dev/null @@ -1,35 +0,0 @@ -From bb53fc92919867d3d6bebf8b13d0616a2237ff21 Mon Sep 17 00:00:00 2001 -From: Patrick Yavitz -Date: Tue, 5 Aug 2025 09:50:36 -0400 -Subject: [PATCH] OrangePi 3 power led is green and red is status - -Signed-off-by: Patrick Yavitz ---- - arch/arm/dts/sun50i-h6-orangepi-3.dts | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/arch/arm/dts/sun50i-h6-orangepi-3.dts b/arch/arm/dts/sun50i-h6-orangepi-3.dts -index bdcec466246..3f499c03dc8 100644 ---- a/arch/arm/dts/sun50i-h6-orangepi-3.dts -+++ b/arch/arm/dts/sun50i-h6-orangepi-3.dts -@@ -44,14 +44,14 @@ - compatible = "gpio-leds"; - - led-0 { -- label = "orangepi:red:power"; -+ label = "orangepi:red:status"; - gpios = <&r_pio 0 4 GPIO_ACTIVE_HIGH>; /* PL4 */ -- default-state = "on"; - }; - - led-1 { -- label = "orangepi:green:status"; -+ label = "orangepi:green:power"; - gpios = <&r_pio 0 7 GPIO_ACTIVE_HIGH>; /* PL7 */ -+ default-state = "on"; - }; - }; - --- -2.43.0 - diff --git a/patch/u-boot/v2026.01/board_orangepi3-lts/002-OrangePi-3-LED-Support.patch b/patch/u-boot/v2026.01/board_orangepi3-lts/004-OrangePi-3-LED-Support.patch similarity index 76% rename from patch/u-boot/v2026.01/board_orangepi3-lts/002-OrangePi-3-LED-Support.patch rename to patch/u-boot/v2026.01/board_orangepi3-lts/004-OrangePi-3-LED-Support.patch index bdac69843a..4a71b32fc8 100644 --- a/patch/u-boot/v2026.01/board_orangepi3-lts/002-OrangePi-3-LED-Support.patch +++ b/patch/u-boot/v2026.01/board_orangepi3-lts/004-OrangePi-3-LED-Support.patch @@ -5,13 +5,13 @@ Subject: [PATCH] OrangePi 3 LED Support Signed-off-by: Patrick Yavitz --- - configs/orangepi_3_defconfig | 5 +++++ + configs/orangepi_3_lts_defconfig | 5 +++++ 1 file changed, 5 insertions(+) -diff --git a/configs/orangepi_3_defconfig b/configs/orangepi_3_defconfig +diff --git a/configs/orangepi_3_lts_defconfig b/configs/orangepi_3_lts_defconfig index 89bb7496740..02afb30960b 100644 ---- a/configs/orangepi_3_defconfig -+++ b/configs/orangepi_3_defconfig +--- a/configs/orangepi_3_lts_defconfig ++++ b/configs/orangepi_3_lts_defconfig @@ -8,6 +8,11 @@ CONFIG_MMC_SUNXI_SLOT_EXTRA=2 CONFIG_BLUETOOTH_DT_DEVICE_FIXUP="brcm,bcm4345c5" # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set