diff --git a/config/boards/orangepiprime.conf b/config/boards/orangepiprime.conf new file mode 100644 index 0000000000..2d4d7ab9dd --- /dev/null +++ b/config/boards/orangepiprime.conf @@ -0,0 +1,20 @@ +# H5 quad core 2GB RAM +BOARD_NAME="Orange Pi Prime" +LINUXFAMILY="sun50iw2" +BOOTCONFIG="orangepi_prime_defconfig" +MODULES="" +MODULES_NEXT="" +CPUMIN="480000" +CPUMAX="1296000" +# +CLI_TARGET="" +DESKTOP_TARGET="" +KERNEL_TARGET="dev" +# +CLI_BETA_TARGET="xenial:dev" +DESKTOP_BETA_TARGET="xenial:dev" +# +BOARDRATING="" +CHIP="https://docs.armbian.com/Hardware_Allwinner-H5-A64/" +HARDWARE="https://linux-sunxi.org/Orange_Pi_PC_2" +FORUMS="https://forum.armbian.com/index.php/forum/11-other-boards/" \ No newline at end of file diff --git a/patch/kernel/sun50iw2-dev/add_orangepiprime_dts.patch b/patch/kernel/sun50iw2-dev/add_orangepiprime_dts.patch new file mode 100644 index 0000000000..bbcb2e7c91 --- /dev/null +++ b/patch/kernel/sun50iw2-dev/add_orangepiprime_dts.patch @@ -0,0 +1,148 @@ +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 244e8b7..849ea91 100644 +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -1,5 +1,6 @@ + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-pc2.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-orangepi-prime.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h5-nanopi2.dtb + + always := $(dtb-y) +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +new file mode 100644 +index 0000000..4fc6ffd +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h5-orangepi-prime.dts +@@ -0,0 +1,130 @@ ++/* ++ * Copyright (c) 2016 ARM Ltd. ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++#include ++#include ++#include "sun50i-h5-orangepi-pc2.dts" ++ ++/ { ++ model = "OrangePiPrime"; ++ compatible = "orangepiprime", "allwinner,sun50i-h5"; ++ ++ reg_gmac_3v3: gmac-3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "gmac-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ startup-delay-us = <100000>; ++ enable-active-high; ++ gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&wifi_en_pin>; ++ reset-gpios = <&pio 2 14 GPIO_ACTIVE_HIGH>; /* PC14 */ ++ }; ++ ++ reg_usb1_vbus: usb1-vbus { ++ compatible = "regulator-fixed"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&usb1_vbus_pin_a>; ++ regulator-name = "usb1-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++ }; ++ ++ /* TODO: Camera, touchscreen, etc. */ ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emac_rgmii_pins>; ++ phy-supply = <®_gmac_3v3>; ++ phy-mode = "rgmii"; ++}; ++ ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins_a>; ++ vmmc-supply = <®_vcc3v3>; ++ vqmmc-supply = <®_vcc3v3>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++ ++ brcmf: bcrmf@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ interrupt-parent = <&r_pio>; ++ interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 / EINT7 */ ++ interrupt-names = "host-wake"; ++ }; ++}; ++ ++&pio { ++ usb1_vbus_pin_a: usb1_vbus_pin@0 { ++ allwinner,pins = "PD6"; ++ allwinner,function = "gpio_out"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++ ++ wifi_en_pin: wifi_en_pin@0 { ++ allwinner,pins = "PC14"; ++ allwinner,function = "gpio_out"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++}; ++ ++&usbphy { ++ usb1_vbus-supply = <®_usb1_vbus>; ++ status = "okay"; ++}; ++ diff --git a/patch/u-boot/u-boot-sun50i-dev/add-opiprime-to-u-boot-sun50i-h5.patch b/patch/u-boot/u-boot-sun50i-dev/add-opiprime-to-u-boot-sun50i-h5.patch new file mode 100644 index 0000000000..9f3bd7f44b --- /dev/null +++ b/patch/u-boot/u-boot-sun50i-dev/add-opiprime-to-u-boot-sun50i-h5.patch @@ -0,0 +1,268 @@ +diff --git a/u-boot/arch/arm/dts/sun50i-h5-orangepi-prime.dts b/u-boot/arch/arm/dts/sun50i-h5-orangepi-prime.dts +new file mode 100644 +index 0000000..68f889d +--- /dev/null ++++ b/u-boot/arch/arm/dts/sun50i-h5-orangepi-prime.dts +@@ -0,0 +1,152 @@ ++/* ++ * Copyright (c) 2016 ARM Ltd. ++ * ++ * This file is dual-licensed: you can use it either under the terms ++ * of the GPL or the X11 license, at your option. Note that this dual ++ * licensing only applies to this file, and not this project as a ++ * whole. ++ * ++ * a) This library is free software; you can redistribute it and/or ++ * modify it under the terms of the GNU General Public License as ++ * published by the Free Software Foundation; either version 2 of the ++ * License, or (at your option) any later version. ++ * ++ * This library is distributed in the hope that it will be useful, ++ * but WITHOUT ANY WARRANTY; without even the implied warranty of ++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++ * GNU General Public License for more details. ++ * ++ * Or, alternatively, ++ * ++ * b) Permission is hereby granted, free of charge, to any person ++ * obtaining a copy of this software and associated documentation ++ * files (the "Software"), to deal in the Software without ++ * restriction, including without limitation the rights to use, ++ * copy, modify, merge, publish, distribute, sublicense, and/or ++ * sell copies of the Software, and to permit persons to whom the ++ * Software is furnished to do so, subject to the following ++ * conditions: ++ * ++ * The above copyright notice and this permission notice shall be ++ * included in all copies or substantial portions of the Software. ++ * ++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, ++ * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES ++ * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND ++ * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT ++ * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, ++ * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING ++ * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ * OTHER DEALINGS IN THE SOFTWARE. ++ */ ++ ++/dts-v1/; ++ ++#include ++#include ++#include "sun8i-h3.dtsi" ++ ++/ { ++ model = "OrangePiPrime"; ++ compatible = "orangepiprime", "allwinner,sun50i-h5"; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ memory { ++ reg = <0x40000000 0x20000000>; ++ }; ++ ++ ++ aliases { ++ serial0 = &uart0; ++ ethernet0 = &emac; ++ }; ++ ++ soc { ++ reg_vcc3v3: vcc3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ }; ++ ++ reg_gmac_3v3: gmac-3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "gmac-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ startup-delay-us = <100000>; ++ enable-active-high; ++ gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; ++ }; ++ ++ reg_usb1_vbus: usb1-vbus { ++ compatible = "regulator-fixed"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&usb1_vbus_pin_a>; ++ regulator-name = "usb1-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 3 6 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++ }; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin>; ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 0>; ++ cd-inverted; ++ status = "okay"; ++}; ++ ++&pio { ++ usb1_vbus_pin_a: usb1_vbus_pin@0 { ++ allwinner,pins = "PD6"; ++ allwinner,function = "gpio_out"; ++ allwinner,drive = ; ++ allwinner,pull = ; ++ }; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_pins_a>; ++ status = "okay"; ++}; ++ ++&usbphy { ++ usb1_vbus-supply = <®_usb1_vbus>; ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&emac_rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-supply = <®_gmac_3v3>; ++ phy-handle = <&ext_rgmii_phy>; ++ status = "okay"; ++ ++ mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ reg = <0>; ++ }; ++ }; ++}; ++ ++ +diff --git a/u-boot/arch/arm/dts/Makefile b/u-boot/arch/arm/dts/Makefile +index 15f2a76..5653153 100644 +--- a/u-boot/arch/arm/dts/Makefile ++++ b/u-boot/arch/arm/dts/Makefile +@@ -281,7 +281,8 @@ dtb-$(CONFIG_MACH_SUN8I_H3) += \ + sun8i-h3-orangepi-plus2e.dtb \ + sun8i-h3-nanopi-neo.dtb + dtb-$(CONFIG_MACH_SUN50I_H5) += \ +- sun50i-h5-orangepi-pc2.dtb ++ sun50i-h5-orangepi-pc2.dtb \ ++ sun50i-h5-orangepi-prime.dtb + dtb-$(CONFIG_MACH_SUN50I) += \ + sun50i-a64-pine64-plus.dtb \ + sun50i-a64-pine64.dtb +diff --git a/u-boot/configs/orangepiprime_defconfig b/u-boot/configs/orangepiprime_defconfig +new file mode 100644 +index 0000000..68f889d +--- /dev/null ++++ b/u-boot/configs/orangepiprime_defconfig +@@ -0,0 +1,13 @@ ++CONFIG_ARM=y ++CONFIG_RESERVE_ALLWINNER_BOOT0_HEADER=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN50I_64=y ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h5-orangepiprime" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_CONSOLE_MUX=y ++CONFIG_SPL=y ++# CONFIG_CMD_IMLS is not set ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++CONFIG_SUN8I_EMAC=y ++CONFIG_USB_EHCI_HCD=y +diff --git a/Makefile b/Makefile +index 5d56b3c..e51b429 100644 +--- a/Makefile ++++ b/Makefile +@@ -57,6 +57,11 @@ orangepipc2: u_boot_h5 arm_trusted_firmware + @u-boot/tools/mkimage -E -f config.its u-boot.itb + @aarch64-linux-gnu-objcopy --gap-fill=0xff -j .text -j .rodata -j .data -j .u_boot_list -j .rela.dyn -j .efi_runtime -j .efi_runtime_rel -I binary -O binary --pad-to=32768 --gap-fill=0xff sunxi-spl.bin u-boot-sunxi-with-spl.bin && cat u-boot.itb >> u-boot-sunxi-with-spl.bin + ++.PHONY: orangepiprime ++orangepiprime: u_boot_h5 arm_trusted_firmware ++ @u-boot/tools/mkimage -E -f config.its u-boot.itb ++ @aarch64-linux-gnu-objcopy --gap-fill=0xff -j .text -j .rodata -j .data -j .u_boot_list -j .rela.dyn -j .efi_runtime -j .efi_runtime_rel -I binary -O binary --pad-to=32768 --gap-fill=0xff sunxi-spl.bin u-boot-sunxi-with-spl.bin && cat u-boot.itb >> u-boot-sunxi-with-spl.bin ++ + .PHONY: nanopineo2 + nanopineo2: u_boot_h5 arm_trusted_firmware + @u-boot/tools/mkimage -E -f config.its u-boot.itb +@@ -90,6 +95,10 @@ pine64_so_defconfig: + orangepi_pc2_defconfig: + @cp blobs/sun50i_h5.its config.its + ++.PHONY: orangepi_prime_defconfig ++orangepi_prime_defconfig: ++ @cp blobs/sun50i_h5_opiprime.its config.its ++ + .PHONY: nanopi_neo2_defconfig + nanopi_neo2_defconfig: + @cp blobs/sun50i_h5.its config.its +diff --git a/blobs/sun50i_h5_opiprime.its b/blobs/sun50i_h5_opiprime.its +new file mode 100644 +index 0000000..68f889d +--- /dev/null ++++ b/blobs/sun50i_h5_opiprime.its +@@ -0,0 +1,42 @@ ++/dts-v1/; ++ ++/ { ++ description = "Configuration to load ATF before U-Boot"; ++ #address-cells = <1>; ++ ++ images { ++ uboot@1 { ++ description = "U-Boot (64-bit)"; ++ data = /incbin/("u-boot.bin"); ++ type = "standalone"; ++ arch = "arm64"; ++ compression = "none"; ++ load = <0x4a000000>; ++ }; ++ atf@1 { ++ description = "ARM Trusted Firmware"; ++ data = /incbin/("bl31.bin"); ++ type = "firmware"; ++ arch = "arm64"; ++ compression = "none"; ++ load = <0x44000>; ++ entry = <0x44000>; ++ }; ++ fdt@1 { ++ description = "OrangePiPrime DT"; ++ data = /incbin/("u-boot/arch/arm/dts/sun50i-h5-orangepi-prime.dtb"); ++ type = "flat_dt"; ++ compression = "none"; ++ load = <0x4fa00000>; ++ }; ++ }; ++ configurations { ++ default = "config@1"; ++ ++ config@1 { ++ description = "Orangepi PC2"; ++ loadables = "atf@1", "uboot@1"; ++ fdt = "fdt@1"; ++ }; ++ }; ++}; ++ diff --git a/patch/u-boot/u-boot-sun50i-dev/add-opiwinplus-to-u-boot-sun50i-a64.patch b/patch/u-boot/u-boot-sun50i-dev/add-opiwinplus-to-u-boot-sun50i-a64.patch index a571eebe6b..71afdf6e89 100644 --- a/patch/u-boot/u-boot-sun50i-dev/add-opiwinplus-to-u-boot-sun50i-a64.patch +++ b/patch/u-boot/u-boot-sun50i-dev/add-opiwinplus-to-u-boot-sun50i-a64.patch @@ -167,8 +167,8 @@ diff --git a/u-boot/arch/arm/dts/Makefile b/u-boot/arch/arm/dts/Makefile index 15f2a76..ad1fb3d 100644 --- a/u-boot/arch/arm/dts/Makefile +++ b/u-boot/arch/arm/dts/Makefile -@@ -284,7 +284,8 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \ - sun50i-h5-orangepi-pc2.dtb +@@ -285,7 +285,8 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \ + sun50i-h5-orangepi-prime.dtb dtb-$(CONFIG_MACH_SUN50I) += \ sun50i-a64-pine64-plus.dtb \ - sun50i-a64-pine64.dtb