From 7040128e359f0e6dc707a055d17340b8984a1a97 Mon Sep 17 00:00:00 2001 From: Igor Pecovnik Date: Tue, 5 Jun 2018 16:49:23 +0200 Subject: [PATCH] Add preliminary support for Orangepi One Plus H6 and small typo for H6 Pine config Bootlog: http://ix.io/1col --- config/boards/orangepioneplus.wip | 14 ++ config/boards/pineh64.wip | 2 +- .../board-orangepi-one-plus-add-device.patch | 219 ++++++++++++++++++ .../add-orangepione_plus.patch | 103 ++++++++ 4 files changed, 337 insertions(+), 1 deletion(-) create mode 100644 config/boards/orangepioneplus.wip create mode 100644 patch/kernel/sunxi-dev/board-orangepi-one-plus-add-device.patch create mode 100644 patch/u-boot/u-boot-sun50iw3/add-orangepione_plus.patch diff --git a/config/boards/orangepioneplus.wip b/config/boards/orangepioneplus.wip new file mode 100644 index 0000000000..85cdbad527 --- /dev/null +++ b/config/boards/orangepioneplus.wip @@ -0,0 +1,14 @@ +# H6 quad core 1GB SoC GBE +BOARD_NAME="Orange Pi One+" +BOARDFAMILY="sun50iw6" +BOOTCONFIG="orangepi_one_plus_defconfig" +# +MODULES="" +MODULES_NEXT="" +# +KERNEL_TARGET="dev" +CLI_TARGET="" +DESKTOP_TARGET="" +# +CLI_BETA_TARGET="stretch:dev" +DESKTOP_BETA_TARGET="" \ No newline at end of file diff --git a/config/boards/pineh64.wip b/config/boards/pineh64.wip index 709d1585b0..ec1fbdb604 100644 --- a/config/boards/pineh64.wip +++ b/config/boards/pineh64.wip @@ -1,4 +1,4 @@ -# A64 quad core 4GB SoC GBE mPCI eMMC +# H6 quad core 4GB SoC GBE mPCI eMMC BOARD_NAME="Pine H64" BOARDFAMILY="sun50iw6" BOOTCONFIG="pine_h64_defconfig" diff --git a/patch/kernel/sunxi-dev/board-orangepi-one-plus-add-device.patch b/patch/kernel/sunxi-dev/board-orangepi-one-plus-add-device.patch new file mode 100644 index 0000000000..d14368f836 --- /dev/null +++ b/patch/kernel/sunxi-dev/board-orangepi-one-plus-add-device.patch @@ -0,0 +1,219 @@ +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 3040c3074..712e1cf5f +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -1,5 +1,6 @@ + # SPDX-License-Identifier: GPL-2.0 + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.dtb ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-h6-orangepi-one-plus.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-nanopi-a64.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-olinuxino.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-orangepi-win.dtb +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts +new file mode 100644 +index 000000000..385015396 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-orangepi-one-plus.dts +@@ -0,0 +1,202 @@ ++// SPDX-License-Identifier: (GPL-2.0+ or MIT) ++/* ++ * Copyright (c) 2018 Armbian ++ */ ++ ++/dts-v1/; ++ ++#include "sun50i-h6.dtsi" ++ ++#include ++ ++/ { ++ model = "Orange Pi One+"; ++ compatible = "pine64,pine-h64", "allwinner,sun50i-h6"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++ ++ reg_vcc3v3: vcc3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ }; ++ ++ reg_vcc1v8: vcc1v8 { ++ compatible = "regulator-fixed"; ++ regulator-name = "vcc1v8"; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ }; ++ ++ reg_usb_vbus: vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ startup-delay-us = <100000>; ++ gpio = <&r_pio 0 5 GPIO_ACTIVE_HIGH>; ++ enable-active-high; ++ }; ++}; ++ ++&cpu0 { ++ cpu-supply = <®_dcdca>; ++}; ++ ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci3 { ++ status = "okay"; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ }; ++}; ++ ++&mmc0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc0_pins>; ++ vmmc-supply = <®_vcc3v3>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; ++ status = "okay"; ++}; ++ ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci3 { ++ status = "okay"; ++}; ++ ++&r_i2c { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&r_i2c_pins>; ++ status = "okay"; ++ ++ axp805: pmic@36 { ++ compatible = "x-powers,axp805"; ++ reg = <0x36>; ++ interrupt-parent = <&r_intc>; ++ interrupts = <0 IRQ_TYPE_LEVEL_LOW>; ++ interrupt-controller; ++ #interrupt-cells = <1>; ++ x-powers,master-mode; ++ ++ regulators { ++ reg_aldo1: aldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-pl"; ++ }; ++ ++ reg_aldo2: aldo2 { ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-ac200"; ++ }; ++ ++ reg_aldo3: aldo3 { ++ /* This regulator is connected with CLDO1 */ ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3-1"; ++ }; ++ ++ reg_bldo1: bldo1 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-ddr-bias-pll"; ++ }; ++ ++ reg_bldo2: bldo2 { ++ regulator-always-on; ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-efuse-emmc-pcie-hdmi"; ++ }; ++ ++ reg_bldo3: bldo3 { ++ regulator-min-microvolt = <1800000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "vcc-wifi-io"; ++ }; ++ ++ bldo4 { ++ /* unused */ ++ }; ++ ++ reg_cldo1: cldo1 { ++ /* This regulator is connected with ALDO3 */ ++ regulator-always-on; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3-2"; ++ }; ++ ++ reg_dcdca: dcdca { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1080000>; ++ regulator-name = "vdd-cpu"; ++ }; ++ ++ reg_dcdcc: dcdcc { ++ regulator-always-on; ++ regulator-min-microvolt = <810000>; ++ regulator-max-microvolt = <1080000>; ++ 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 = <1400000>; ++ regulator-max-microvolt = <1400000>; ++ regulator-name = "vcc-dram"; ++ }; ++ ++ sw { ++ /* unused */ ++ }; ++ }; ++ }; ++}; ++ ++&uart0 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart0_ph_pins>; ++ status = "okay"; ++}; ++ ++&usb2otg { ++ dr_mode = "host"; ++ status = "okay"; ++}; ++ ++&usb2phy { ++ usb0_vbus-supply = <®_usb_vbus>; ++ usb1_vbus-supply = <®_usb_vbus>; ++ status = "okay"; ++}; diff --git a/patch/u-boot/u-boot-sun50iw3/add-orangepione_plus.patch b/patch/u-boot/u-boot-sun50iw3/add-orangepione_plus.patch new file mode 100644 index 0000000000..0a5a4d6f59 --- /dev/null +++ b/patch/u-boot/u-boot-sun50iw3/add-orangepione_plus.patch @@ -0,0 +1,103 @@ +diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile +index 3669bdf..866e468 +--- a/arch/arm/dts/Makefile ++++ b/arch/arm/dts/Makefile +@@ -362,7 +362,8 @@ dtb-$(CONFIG_MACH_SUN50I_H5) += \ + sun50i-h5-orangepi-prime.dtb \ + sun50i-h5-orangepi-zero-plus2.dtb + dtb-$(CONFIG_MACH_SUN50I_H6) += \ +- sun50i-h6-pine-h64.dtb ++ sun50i-h6-pine-h64.dtb \ ++ sun50i-h6-orangepi-one-plus.dtb + dtb-$(CONFIG_MACH_SUN50I) += \ + sun50i-a64-bananapi-m64.dtb \ + sun50i-a64-nanopi-a64.dtb \ +diff --git a/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts +new file mode 100644 +index 0000000..7191127 +--- /dev/null ++++ b/arch/arm/dts/sun50i-h6-orangepi-one-plus.dts +@@ -0,0 +1,64 @@ ++/* ++ * Copyright (c) 2017 Icenowy Zheng ++ * ++ * 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 "sun50i-h6.dtsi" ++ ++#include ++ ++/ { ++ model = "Orange Pi One+"; ++ compatible = "pine64,pine-h64", "allwinner,sun50i-h6"; ++ ++ aliases { ++ serial0 = &uart0; ++ }; ++ ++ chosen { ++ stdout-path = "serial0:115200n8"; ++ }; ++}; ++ ++&uart0 { ++ status = "okay"; ++}; +diff --git a/configs/orangepi_one_plus_defconfig b/configs/orangepi_one_plus_defconfig +new file mode 100644 +index 0000000..ded0df6 +--- /dev/null ++++ b/configs/orangepi_one_plus_defconfig +@@ -0,0 +1,13 @@ ++CONFIG_ARM=y ++CONFIG_ARCH_SUNXI=y ++CONFIG_MACH_SUN50I_H6=y ++CONFIG_DRAM_ODT_EN=y ++# CONFIG_PSCI_RESET is not set ++CONFIG_DEFAULT_DEVICE_TREE="sun50i-h6-orangepi-one-plus" ++# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set ++CONFIG_SPL=y ++# CONFIG_CMD_FLASH is not set ++# CONFIG_CMD_FPGA is not set ++# CONFIG_SPL_DOS_PARTITION is not set ++# CONFIG_SPL_ISO_PARTITION is not set ++# CONFIG_SPL_EFI_PARTITION is not set