mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-18 21:28:02 +00:00
package: uboot-sunxi: various changes - bump to 2016.03 - add bugfixes related to 2016.03 update - sync DTS files with mainline - add support for non-standard uEnv.txt - add initial support for Theobroma A31-yQ7 devboard
Signed-off-by: Zoltan HERPAI <wigyori@uid0.hu> SVN-Revision: 49089
This commit is contained in:
parent
d1aa4bfe1d
commit
2d4ebff3ad
@ -9,13 +9,13 @@ include $(TOPDIR)/rules.mk
|
|||||||
include $(INCLUDE_DIR)/kernel.mk
|
include $(INCLUDE_DIR)/kernel.mk
|
||||||
|
|
||||||
PKG_NAME:=u-boot
|
PKG_NAME:=u-boot
|
||||||
PKG_VERSION:=2016.01
|
PKG_VERSION:=2016.03
|
||||||
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
|
||||||
PKG_SOURCE_URL:= \
|
PKG_SOURCE_URL:= \
|
||||||
http://mirror2.openwrt.org/sources \
|
http://mirror2.openwrt.org/sources \
|
||||||
ftp://ftp.denx.de/pub/u-boot
|
ftp://ftp.denx.de/pub/u-boot
|
||||||
|
|
||||||
PKG_MD5SUM:=7d4f65fd43d4d706f5c5650e020d899d
|
PKG_MD5SUM:=973c1d896be751321cc3aafa564f64b2
|
||||||
|
|
||||||
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
|
||||||
|
|
||||||
@ -90,6 +90,10 @@ define uboot/Lamobo_R1
|
|||||||
TITLE:=U-Boot for Lamobo R1
|
TITLE:=U-Boot for Lamobo R1
|
||||||
endef
|
endef
|
||||||
|
|
||||||
|
define uboot/pangolin
|
||||||
|
TITLE:=U-Boot for Theobroma A31-yQ7 devboard
|
||||||
|
endef
|
||||||
|
|
||||||
define uboot/orangepi_plus
|
define uboot/orangepi_plus
|
||||||
TITLE:=U-Boot for Orange Pi Plus (H3)
|
TITLE:=U-Boot for Orange Pi Plus (H3)
|
||||||
endef
|
endef
|
||||||
@ -110,7 +114,8 @@ UBOOTS:= \
|
|||||||
Linksprite_pcDuino \
|
Linksprite_pcDuino \
|
||||||
Linksprite_pcDuino3 \
|
Linksprite_pcDuino3 \
|
||||||
Lamobo_R1 \
|
Lamobo_R1 \
|
||||||
orangepi_plus
|
orangepi_plus \
|
||||||
|
pangolin
|
||||||
|
|
||||||
define Package/uboot/template
|
define Package/uboot/template
|
||||||
define Package/uboot-sunxi-$(1)
|
define Package/uboot-sunxi-$(1)
|
||||||
@ -136,6 +141,13 @@ UBOOT_CONFIG:=$(if $(CONFIG),$(CONFIG),$(BUILD_VARIANT))
|
|||||||
UBOOT_IMAGE:=$(if $(IMAGE),$(IMAGE),openwrt-$(BOARD)-$(BUILD_VARIANT)-u-boot.bin)
|
UBOOT_IMAGE:=$(if $(IMAGE),$(IMAGE),openwrt-$(BOARD)-$(BUILD_VARIANT)-u-boot.bin)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# check if any specialized uEnv bootconfig is required
|
||||||
|
ifeq ($(UBOOT_CONFIG),pangolin)
|
||||||
|
UENV:=pangolin
|
||||||
|
else
|
||||||
|
UENV:=default
|
||||||
|
endif
|
||||||
|
|
||||||
define Build/Configure
|
define Build/Configure
|
||||||
$(MAKE) -C $(PKG_BUILD_DIR) \
|
$(MAKE) -C $(PKG_BUILD_DIR) \
|
||||||
USE_PRIVATE_LIBGCC=yes $(UBOOT_CONFIG)_defconfig
|
USE_PRIVATE_LIBGCC=yes $(UBOOT_CONFIG)_defconfig
|
||||||
@ -154,7 +166,7 @@ define Package/uboot/install/default
|
|||||||
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-spl.bin
|
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-spl.bin
|
||||||
$(CP) $(PKG_BUILD_DIR)/u-boot-sunxi-with-spl.bin \
|
$(CP) $(PKG_BUILD_DIR)/u-boot-sunxi-with-spl.bin \
|
||||||
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-u-boot-with-spl.bin
|
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-u-boot-with-spl.bin
|
||||||
$(CP) uEnv.txt \
|
$(CP) uEnv-$(UENV).txt \
|
||||||
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt
|
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt
|
||||||
mkimage -C none -A arm -T script -d $(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt \
|
mkimage -C none -A arm -T script -d $(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-uEnv.txt \
|
||||||
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-boot.scr
|
$(KERNEL_BUILD_DIR)/uboot-$(BOARD)-$(1)-boot.scr
|
||||||
|
@ -0,0 +1,394 @@
|
|||||||
|
diff -ruN a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||||
|
--- a/arch/arm/dts/Makefile 2016-01-12 15:06:54.000000000 +0100
|
||||||
|
+++ b/arch/arm/dts/Makefile 2016-01-30 15:31:50.000000000 +0100
|
||||||
|
@@ -142,6 +142,7 @@
|
||||||
|
sun6i-a31-m9.dtb \
|
||||||
|
sun6i-a31-mele-a1000g-quad.dtb \
|
||||||
|
sun6i-a31-mixtile-loftq.dtb \
|
||||||
|
+ sun6i-a31-pangolin.dtb \
|
||||||
|
sun6i-a31s-cs908.dtb \
|
||||||
|
sun6i-a31s-primo81.dtb \
|
||||||
|
sun6i-a31s-sinovoip-bpi-m2.dtb
|
||||||
|
diff -ruN a/arch/arm/dts/sun6i-a31.dtsi b/arch/arm/dts/sun6i-a31.dtsi
|
||||||
|
--- a/arch/arm/dts/sun6i-a31.dtsi 2016-01-12 15:06:54.000000000 +0100
|
||||||
|
+++ b/arch/arm/dts/sun6i-a31.dtsi 2016-01-31 15:06:47.000000000 +0100
|
||||||
|
@@ -643,6 +643,13 @@
|
||||||
|
allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
};
|
||||||
|
|
||||||
|
+ i2c3_pins_a: i2c3@0 {
|
||||||
|
+ allwinner,pins = "PB5", "PB6";
|
||||||
|
+ allwinner,function = "i2c3";
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
mmc0_pins_a: mmc0@0 {
|
||||||
|
allwinner,pins = "PF0", "PF1", "PF2",
|
||||||
|
"PF3", "PF4", "PF5";
|
||||||
|
diff -ruN a/arch/arm/dts/sun6i-a31-pangolin.dts b/arch/arm/dts/sun6i-a31-pangolin.dts
|
||||||
|
--- a/arch/arm/dts/sun6i-a31-pangolin.dts 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ b/arch/arm/dts/sun6i-a31-pangolin.dts 2016-02-09 01:21:44.965168099 +0100
|
||||||
|
@@ -0,0 +1,292 @@
|
||||||
|
+/*
|
||||||
|
+ * Copyright 2015, Theobroma Systems Design und Consulting GmbH
|
||||||
|
+ *
|
||||||
|
+ * 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 file 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 file 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 "sun6i-a31.dtsi"
|
||||||
|
+#include "sunxi-common-regulators.dtsi"
|
||||||
|
+
|
||||||
|
+#include <dt-bindings/gpio/gpio.h>
|
||||||
|
+#include <dt-bindings/pinctrl/sun4i-a10.h>
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Theobroma Systems A31 Pangolin";
|
||||||
|
+ compatible = "tsd,a31-pangolin", "allwinner,sun6i-a31";
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ serial2 = &uart2;
|
||||||
|
+ spi0 = &spi0;
|
||||||
|
+ spi1 = &spi1;
|
||||||
|
+ spi2 = &spi2;
|
||||||
|
+ spi3 = &spi3;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ stdout-path = "serial2:115200n8";
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ehci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ohci2 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&gmac {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&gmac_pins_rgmii_a>;
|
||||||
|
+ phy = <&phy1>;
|
||||||
|
+ phy-mode = "rgmii";
|
||||||
|
+ snps,reset-gpio = <&pio 0 7 GPIO_ACTIVE_LOW>;
|
||||||
|
+ snps,reset-active-low;
|
||||||
|
+ snps,reset-delays-us = <0 10000 30000>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ phy1: ethernet-phy@4 {
|
||||||
|
+ reg = <4>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2c0_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c1 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2c1_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2c2_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&i2c3 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&i2c3_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ rtc_twi: rtc@6f {
|
||||||
|
+ compatible = "isil,isl1208";
|
||||||
|
+ reg = <0x6f>;
|
||||||
|
+ };
|
||||||
|
+ fan: fan@18 {
|
||||||
|
+ compatible = "ti,amc6821";
|
||||||
|
+ reg = <0x18>;
|
||||||
|
+ cooling-min-state = <0>;
|
||||||
|
+ cooling-max-state = <9>;
|
||||||
|
+ #cooling-cells = <2>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&spi0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ flash: flash@0 {
|
||||||
|
+ compatible = "spansion,m25p40";
|
||||||
|
+ spi-max-frequency = <16000000>;
|
||||||
|
+ spi-cpol;
|
||||||
|
+ spi-cpha;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&spi1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&ir {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&ir_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_pangolin>;
|
||||||
|
+ vmmc-supply = <®_vcc3v0>;
|
||||||
|
+ bus-width = <4>;
|
||||||
|
+ cd-gpios = <&pio 2 19 GPIO_ACTIVE_LOW>; /* PC19 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc0_pins_a {
|
||||||
|
+ /* external pull-ups missing for some pins */
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&mmc2 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&mmc2_pins_a>;
|
||||||
|
+ vmmc-supply = <®_vcc3v0>;
|
||||||
|
+ bus-width = <8>;
|
||||||
|
+ non-removable;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&pio {
|
||||||
|
+ mmc0_cd_pin_pangolin: mmc0_cd_pin@0 {
|
||||||
|
+ allwinner,pins = "PC19";
|
||||||
|
+ allwinner,function = "gpio_in";
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_10_MA>;
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds_pins_pangolin: led_pins@0 {
|
||||||
|
+ allwinner,pins = "PH7", "PC16";
|
||||||
|
+ allwinner,function = "gpio_out";
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_20_MA>;
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ mmc2_pins_a: mmc2@0 {
|
||||||
|
+ allwinner,pins = "PC6","PC7","PC8","PC9","PC10","PC11",
|
||||||
|
+ "PC12","PC13","PC14","PC15";
|
||||||
|
+ allwinner,function = "mmc2";
|
||||||
|
+ allwinner,drive = <SUN4I_PINCTRL_30_MA>;
|
||||||
|
+ allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&p2wi {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ axp221: pmic@68 {
|
||||||
|
+ compatible = "x-powers,axp221";
|
||||||
|
+ reg = <0x68>;
|
||||||
|
+ interrupt-parent = <&nmi_intc>;
|
||||||
|
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||||
|
+ interrupt-controller;
|
||||||
|
+ #interrupt-cells = <1>;
|
||||||
|
+ dcdc1-supply = <&vcc_3v0>;
|
||||||
|
+ dcdc5-supply = <&vcc_dram>;
|
||||||
|
+
|
||||||
|
+ regulators {
|
||||||
|
+ x-powers,dcdc-freq = <3000>;
|
||||||
|
+
|
||||||
|
+ vcc_3v0: dcdc1 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-name = "vcc-3v0";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_cpu: dcdc2 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <700000>;
|
||||||
|
+ regulator-max-microvolt = <1320000>;
|
||||||
|
+ regulator-name = "vdd-cpu";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_gpu: dcdc3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <700000>;
|
||||||
|
+ regulator-max-microvolt = <1320000>;
|
||||||
|
+ regulator-name = "vdd-gpu";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vdd_sys_dll: dcdc4 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1100000>;
|
||||||
|
+ regulator-max-microvolt = <1100000>;
|
||||||
|
+ regulator-name = "vdd-sys-dll";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_dram: dcdc5 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <1500000>;
|
||||||
|
+ regulator-max-microvolt = <1500000>;
|
||||||
|
+ regulator-name = "vcc-dram";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ vcc_wifi: aldo1 {
|
||||||
|
+ regulator-min-microvolt = <3300000>;
|
||||||
|
+ regulator-max-microvolt = <3300000>;
|
||||||
|
+ regulator-name = "vcc_wifi";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ avcc: aldo3 {
|
||||||
|
+ regulator-always-on;
|
||||||
|
+ regulator-min-microvolt = <3000000>;
|
||||||
|
+ regulator-max-microvolt = <3000000>;
|
||||||
|
+ regulator-name = "avcc";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&uart0_pins_a>;
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usb1_vbus_pin_a {
|
||||||
|
+ allwinner,pins = "PD23";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+®_usb1_vbus {
|
||||||
|
+ gpio = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD 23 */
|
||||||
|
+ status = "okay";
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&usbphy {
|
||||||
|
+ status = "okay";
|
||||||
|
+ usb1_vbus-supply = <®_usb1_vbus>;
|
||||||
|
+};
|
||||||
|
diff -ruN a/configs/pangolin_defconfig b/configs/pangolin_defconfig
|
||||||
|
--- a/configs/pangolin_defconfig 1970-01-01 01:00:00.000000000 +0100
|
||||||
|
+++ b/configs/pangolin_defconfig 2016-01-30 14:43:59.000000000 +0100
|
||||||
|
@@ -0,0 +1,36 @@
|
||||||
|
+CONFIG_SUNXI_PANGOLIN=y
|
||||||
|
+CONFIG_SPL=y
|
||||||
|
+CONFIG_SYS_EXTRA_OPTIONS="USB_EHCI,SUNXI_GMAC,RGMII"
|
||||||
|
+CONFIG_DEFAULT_DEVICE_TREE="sun6i-a31-pangolin"
|
||||||
|
+CONFIG_VIDEO_VGA_VIA_LCD=y
|
||||||
|
+CONFIG_VIDEO_VGA_EXTERNAL_DAC_EN="PH25"
|
||||||
|
+CONFIG_ARM=y
|
||||||
|
+CONFIG_ARCH_SUNXI=y
|
||||||
|
+CONFIG_MACH_SUN6I=y
|
||||||
|
+CONFIG_DRAM_CHANNELS=1
|
||||||
|
+CONFIG_DRAM_CLK=360
|
||||||
|
+CONFIG_DRAM_ZQ=70
|
||||||
|
+CONFIG_AXP_DCDC1_VOLT=3300
|
||||||
|
+CONFIG_AXP_ALDO1_VOLT=0
|
||||||
|
+CONFIG_AXP_ALDO2_VOLT=1800
|
||||||
|
+CONFIG_AXP_ALDO3_VOLT=3000
|
||||||
|
+CONFIG_AXP_DLDO4_VOLT=3300
|
||||||
|
+CONFIG_AXP_ELDO1_VOLT=1200
|
||||||
|
+CONFIG_AXP_ELDO2_VOLT=2500
|
||||||
|
+CONFIG_AXP_ELDO3_VOLT=3300
|
||||||
|
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||||
|
+CONFIG_CONS_INDEX=3
|
||||||
|
+# Vbus gpio for usb1
|
||||||
|
+CONFIG_USB1_VBUS_PIN=""
|
||||||
|
+# No Vbus gpio for usb2
|
||||||
|
+CONFIG_USB2_VBUS_PIN=""
|
||||||
|
+CONFIG_USB=y
|
||||||
|
+CONFIG_DM_USB=y
|
||||||
|
+CONFIG_USB_EHCI=y
|
||||||
|
+CONFIG_USB_KEYBOARD=y
|
||||||
|
+CONFIG_DM_ETH=y
|
||||||
|
+CONFIG_CMD_IMLS=n
|
||||||
|
+CONFIG_ETH_DESIGNWARE=y
|
||||||
|
+CONFIG_DM_SPI=y
|
||||||
|
+CONFIG_DM_SPI_FLASH=y
|
||||||
|
+CONFIG_SUNXI_SPI=y
|
||||||
|
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
|
||||||
|
index e155c4c..1b147b2 100644
|
||||||
|
--- a/board/sunxi/Kconfig
|
||||||
|
+++ b/board/sunxi/Kconfig
|
||||||
|
@@ -15,7 +15,6 @@ config SUNXI_GEN_SUN6I
|
||||||
|
separate ahb reset control registers, custom pmic bus, new style
|
||||||
|
watchdog, etc.
|
||||||
|
|
||||||
|
-
|
||||||
|
choice
|
||||||
|
prompt "Sunxi SoC Variant"
|
||||||
|
optional
|
||||||
|
@@ -80,6 +79,14 @@ config MACH_SUN8I
|
||||||
|
bool
|
||||||
|
default y if MACH_SUN8I_A23 || MACH_SUN8I_A33
|
||||||
|
|
||||||
|
+choice
|
||||||
|
+ prompt "Sunxi Board Variant"
|
||||||
|
+ optional
|
||||||
|
+
|
||||||
|
+config SUNXI_PANGOLIN
|
||||||
|
+ bool "Theobroma A31 uQ7 Board"
|
||||||
|
+
|
||||||
|
+endchoice
|
||||||
|
|
||||||
|
config DRAM_CLK
|
||||||
|
int "sunxi dram clock speed"
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
1411
package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch
Normal file
1411
package/boot/uboot-sunxi/patches/010-dt-sync-files-with-kernel.patch
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,60 +0,0 @@
|
|||||||
diff --git a/arch/arm/cpu/armv7/sunxi/Makefile b/arch/arm/cpu/armv7/sunxi/Makefile
|
|
||||||
index dfb0a3e..7a6a3cc 100644
|
|
||||||
--- a/arch/arm/cpu/armv7/sunxi/Makefile
|
|
||||||
+++ b/arch/arm/cpu/armv7/sunxi/Makefile
|
|
||||||
@@ -33,6 +33,7 @@ obj-$(CONFIG_MACH_SUN8I) += clock_sun6i.o
|
|
||||||
endif
|
|
||||||
obj-$(CONFIG_MACH_SUN9I) += clock_sun9i.o
|
|
||||||
obj-$(CONFIG_MACH_SUN6I) += tzpc.o
|
|
||||||
+obj-$(CONFIG_MACH_SUN8I) += tzpc.o
|
|
||||||
|
|
||||||
obj-$(CONFIG_AXP152_POWER) += pmic_bus.o
|
|
||||||
obj-$(CONFIG_AXP209_POWER) += pmic_bus.o
|
|
||||||
diff --git a/arch/arm/cpu/armv7/sunxi/tzpc.c b/arch/arm/cpu/armv7/sunxi/tzpc.c
|
|
||||||
index 5c9c69b..6c8a0fd 100644
|
|
||||||
--- a/arch/arm/cpu/armv7/sunxi/tzpc.c
|
|
||||||
+++ b/arch/arm/cpu/armv7/sunxi/tzpc.c
|
|
||||||
@@ -13,6 +13,15 @@ void tzpc_init(void)
|
|
||||||
{
|
|
||||||
struct sunxi_tzpc *tzpc = (struct sunxi_tzpc *)SUNXI_TZPC_BASE;
|
|
||||||
|
|
||||||
+#ifdef CONFIG_MACH_SUN6I
|
|
||||||
/* Enable non-secure access to the RTC */
|
|
||||||
- writel(SUNXI_TZPC_DECPORT0_RTC, &tzpc->decport0_set);
|
|
||||||
+ writel(SUN6I_TZPC_DECPORT0_RTC, &tzpc->decport0_set);
|
|
||||||
+#endif
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_MACH_SUN8I_H3
|
|
||||||
+ /* Enable non-secure access to all peripherals */
|
|
||||||
+ writel(SUN8I_H3_TZPC_DECPORT0_ALL, &tzpc->decport0_set);
|
|
||||||
+ writel(SUN8I_H3_TZPC_DECPORT1_ALL, &tzpc->decport1_set);
|
|
||||||
+ writel(SUN8I_H3_TZPC_DECPORT2_ALL, &tzpc->decport2_set);
|
|
||||||
+#endif
|
|
||||||
}
|
|
||||||
diff --git a/arch/arm/include/asm/arch-sunxi/tzpc.h b/arch/arm/include/asm/arch-sunxi/tzpc.h
|
|
||||||
index ba4d43b..95c55cd 100644
|
|
||||||
--- a/arch/arm/include/asm/arch-sunxi/tzpc.h
|
|
||||||
+++ b/arch/arm/include/asm/arch-sunxi/tzpc.h
|
|
||||||
@@ -13,10 +13,21 @@ struct sunxi_tzpc {
|
|
||||||
u32 decport0_status; /* 0x04 Status of decode protection port 0 */
|
|
||||||
u32 decport0_set; /* 0x08 Set decode protection port 0 */
|
|
||||||
u32 decport0_clear; /* 0x0c Clear decode protection port 0 */
|
|
||||||
+ /* For A80 and later SoCs */
|
|
||||||
+ u32 decport1_status; /* 0x10 Status of decode protection port 1 */
|
|
||||||
+ u32 decport1_set; /* 0x14 Set decode protection port 1 */
|
|
||||||
+ u32 decport1_clear; /* 0x18 Clear decode protection port 1 */
|
|
||||||
+ u32 decport2_status; /* 0x1c Status of decode protection port 2 */
|
|
||||||
+ u32 decport2_set; /* 0x20 Set decode protection port 2 */
|
|
||||||
+ u32 decport2_clear; /* 0x24 Clear decode protection port 2 */
|
|
||||||
};
|
|
||||||
#endif
|
|
||||||
|
|
||||||
-#define SUNXI_TZPC_DECPORT0_RTC (1 << 1)
|
|
||||||
+#define SUN6I_TZPC_DECPORT0_RTC (1 << 1)
|
|
||||||
+
|
|
||||||
+#define SUN8I_H3_TZPC_DECPORT0_ALL 0xbe
|
|
||||||
+#define SUN8I_H3_TZPC_DECPORT1_ALL 0xff
|
|
||||||
+#define SUN8I_H3_TZPC_DECPORT2_ALL 0x7f
|
|
||||||
|
|
||||||
void tzpc_init(void);
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
@ -1,83 +0,0 @@
|
|||||||
diff --git a/arch/arm/cpu/armv7/sunxi/clock.c b/arch/arm/cpu/armv7/sunxi/clock.c
|
|
||||||
index 47fb70f..5cc5d25 100644
|
|
||||||
--- a/arch/arm/cpu/armv7/sunxi/clock.c
|
|
||||||
+++ b/arch/arm/cpu/armv7/sunxi/clock.c
|
|
||||||
@@ -14,12 +14,17 @@
|
|
||||||
#include <asm/arch/gpio.h>
|
|
||||||
#include <asm/arch/sys_proto.h>
|
|
||||||
|
|
||||||
+__weak void clock_init_sec(void)
|
|
||||||
+{
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
int clock_init(void)
|
|
||||||
{
|
|
||||||
#ifdef CONFIG_SPL_BUILD
|
|
||||||
clock_init_safe();
|
|
||||||
#endif
|
|
||||||
clock_init_uart();
|
|
||||||
+ clock_init_sec();
|
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
|
||||||
index 4501884..d0085e8 100644
|
|
||||||
--- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
|
||||||
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
|
||||||
@@ -45,6 +45,19 @@ void clock_init_safe(void)
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
+void clock_init_sec(void)
|
|
||||||
+{
|
|
||||||
+ struct sunxi_ccm_reg * const ccm =
|
|
||||||
+ (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
|
|
||||||
+
|
|
||||||
+#ifdef CONFIG_MACH_SUN8I_H3
|
|
||||||
+ setbits_le32(&ccm->ccu_sec_switch,
|
|
||||||
+ CCM_SEC_SWITCH_MBUS_NONSEC |
|
|
||||||
+ CCM_SEC_SWITCH_BUS_NONSEC |
|
|
||||||
+ CCM_SEC_SWITCH_PLL_NONSEC);
|
|
||||||
+#endif
|
|
||||||
+}
|
|
||||||
+
|
|
||||||
void clock_init_uart(void)
|
|
||||||
{
|
|
||||||
#if CONFIG_CONS_INDEX < 5
|
|
||||||
diff --git a/arch/arm/include/asm/arch-sunxi/clock.h b/arch/arm/include/asm/arch-sunxi/clock.h
|
|
||||||
index 8ca58ae..6c0573f 100644
|
|
||||||
--- a/arch/arm/include/asm/arch-sunxi/clock.h
|
|
||||||
+++ b/arch/arm/include/asm/arch-sunxi/clock.h
|
|
||||||
@@ -30,6 +30,7 @@ int clock_init(void);
|
|
||||||
int clock_twi_onoff(int port, int state);
|
|
||||||
void clock_set_de_mod_clock(u32 *clk_cfg, unsigned int hz);
|
|
||||||
void clock_init_safe(void);
|
|
||||||
+void clock_init_sec(void);
|
|
||||||
void clock_init_uart(void);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
diff --git a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
|
|
||||||
index 5c76275..554d858 100644
|
|
||||||
--- a/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
|
|
||||||
+++ b/arch/arm/include/asm/arch-sunxi/clock_sun6i.h
|
|
||||||
@@ -137,6 +137,8 @@ struct sunxi_ccm_reg {
|
|
||||||
u32 apb1_reset_cfg; /* 0x2d0 APB1 Reset config */
|
|
||||||
u32 reserved24;
|
|
||||||
u32 apb2_reset_cfg; /* 0x2d8 APB2 Reset config */
|
|
||||||
+ u32 reserved25[5];
|
|
||||||
+ u32 ccu_sec_switch; /* 0x2f0 CCU Security Switch, H3 only */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* apb2 bit field */
|
|
||||||
@@ -375,6 +377,11 @@ struct sunxi_ccm_reg {
|
|
||||||
#define CCM_DE_CTRL_PLL10 (5 << 24)
|
|
||||||
#define CCM_DE_CTRL_GATE (1 << 31)
|
|
||||||
|
|
||||||
+/* CCU security switch, H3 only */
|
|
||||||
+#define CCM_SEC_SWITCH_MBUS_NONSEC (1 << 2)
|
|
||||||
+#define CCM_SEC_SWITCH_BUS_NONSEC (1 << 1)
|
|
||||||
+#define CCM_SEC_SWITCH_PLL_NONSEC (1 << 0)
|
|
||||||
+
|
|
||||||
#ifndef __ASSEMBLY__
|
|
||||||
void clock_set_pll1(unsigned int hz);
|
|
||||||
void clock_set_pll3(unsigned int hz);
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 730d2f3a41c5ccae71b5008fffdf697d143be68c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Wed, 16 Mar 2016 20:44:51 +0100
|
||||||
|
Subject: [PATCH] sunxi: Fix clock_twi_onoff for sun6i
|
||||||
|
|
||||||
|
The clock_sun6i.c implementation was not deasserting the reset for
|
||||||
|
the regular i2c controllers, this commit fixes this.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
---
|
||||||
|
arch/arm/cpu/armv7/sunxi/clock_sun6i.c | 11 ++++++++---
|
||||||
|
1 file changed, 8 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
index 700b605..4e1e1a4 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
@@ -100,13 +100,18 @@ int clock_twi_onoff(int port, int state)
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
- /* set the apb clock gate for twi */
|
||||||
|
- if (state)
|
||||||
|
+ /* set the apb clock gate and reset for twi */
|
||||||
|
+ if (state) {
|
||||||
|
setbits_le32(&ccm->apb2_gate,
|
||||||
|
CLK_GATE_OPEN << (APB2_GATE_TWI_SHIFT+port));
|
||||||
|
- else
|
||||||
|
+ setbits_le32(&ccm->apb2_reset_cfg,
|
||||||
|
+ 1 << (APB2_RESET_TWI_SHIFT + port));
|
||||||
|
+ } else {
|
||||||
|
+ clrbits_le32(&ccm->apb2_reset_cfg,
|
||||||
|
+ 1 << (APB2_RESET_TWI_SHIFT + port));
|
||||||
|
clrbits_le32(&ccm->apb2_gate,
|
||||||
|
CLK_GATE_OPEN << (APB2_GATE_TWI_SHIFT+port));
|
||||||
|
+ }
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
@ -1,22 +0,0 @@
|
|||||||
diff --git a/arch/arm/cpu/armv7/sunxi/psci_sun6i.S b/arch/arm/cpu/armv7/sunxi/psci_sun6i.S
|
|
||||||
index 4ff46e4..90b5bfd 100644
|
|
||||||
--- a/arch/arm/cpu/armv7/sunxi/psci_sun6i.S
|
|
||||||
+++ b/arch/arm/cpu/armv7/sunxi/psci_sun6i.S
|
|
||||||
@@ -106,7 +106,7 @@ psci_fiq_enter:
|
|
||||||
str r10, [r8, #0x100]
|
|
||||||
timer_wait r10, ONE_MS
|
|
||||||
|
|
||||||
-#ifdef CONFIG_MACH_SUN6I
|
|
||||||
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I_H3)
|
|
||||||
@ Activate power clamp
|
|
||||||
lsl r12, r9, #2 @ x4
|
|
||||||
add r12, r12, r8
|
|
||||||
@@ -170,7 +170,7 @@ psci_cpu_on:
|
|
||||||
movw r0, #(SUNXI_PRCM_BASE & 0xffff)
|
|
||||||
movt r0, #(SUNXI_PRCM_BASE >> 16)
|
|
||||||
|
|
||||||
-#ifdef CONFIG_MACH_SUN6I
|
|
||||||
+#if defined(CONFIG_MACH_SUN6I) || defined(CONFIG_MACH_SUN8I_H3)
|
|
||||||
@ Release power clamp
|
|
||||||
lsl r5, r1, #2 @ 1 register per CPU
|
|
||||||
add r5, r5, r0 @ PRCM
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 1eae8f66ff749409eb96e2f3f3387c56232d0b8a Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Wed, 16 Mar 2016 13:46:22 +0100
|
||||||
|
Subject: [PATCH] sunxi: Enable realtek phy support
|
||||||
|
|
||||||
|
Enable building of drivers/net/phy/realtek.c so that realtek phys
|
||||||
|
get properly initialized.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
---
|
||||||
|
include/configs/sunxi-common.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
|
||||||
|
index b26363d..ea15e37 100644
|
||||||
|
--- a/include/configs/sunxi-common.h
|
||||||
|
+++ b/include/configs/sunxi-common.h
|
||||||
|
@@ -310,6 +310,7 @@ extern int soft_i2c_gpio_scl;
|
||||||
|
#define CONFIG_PHY_GIGE /* GMAC can use gigabit PHY */
|
||||||
|
#define CONFIG_PHY_ADDR 1
|
||||||
|
#define CONFIG_MII /* MII PHY management */
|
||||||
|
+#define CONFIG_PHY_REALTEK
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef CONFIG_USB_EHCI_HCD
|
@ -1,16 +0,0 @@
|
|||||||
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
|
|
||||||
index 9d67847..28e6bb4 100644
|
|
||||||
--- a/board/sunxi/Kconfig
|
|
||||||
+++ b/board/sunxi/Kconfig
|
|
||||||
@@ -71,8 +71,11 @@ config MACH_SUN8I_A33
|
|
||||||
config MACH_SUN8I_H3
|
|
||||||
bool "sun8i (Allwinner H3)"
|
|
||||||
select CPU_V7
|
|
||||||
+ select CPU_V7_HAS_NONSEC
|
|
||||||
+ select CPU_V7_HAS_VIRT
|
|
||||||
select SUNXI_GEN_SUN6I
|
|
||||||
select SUPPORT_SPL
|
|
||||||
+ select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
|
|
||||||
|
|
||||||
config MACH_SUN8I_A83T
|
|
||||||
bool "sun8i (Allwinner A83T)"
|
|
135
package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch
Normal file
135
package/boot/uboot-sunxi/patches/014-fix-gmac-init.patch
Normal file
@ -0,0 +1,135 @@
|
|||||||
|
From fc8991c61c393ce6a9d3dfc97cb56dbbd9e8cbba Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Thu, 17 Mar 2016 13:53:03 +0100
|
||||||
|
Subject: [PATCH] sunxi: Fix gmac not working due to cpu_eth_init no longer
|
||||||
|
being called
|
||||||
|
|
||||||
|
cpu_eth_init is no longer called for dm enabled eth drivers, this
|
||||||
|
was causing the sunxi gmac eth controller to no longer work in u-boot.
|
||||||
|
|
||||||
|
This commit fixes this by calling the clock, reset and pinmux setup
|
||||||
|
function from s_init() and enabling the phy power pin (if any) from
|
||||||
|
board_init().
|
||||||
|
|
||||||
|
The enabling of phy power cannot be done from s_init because it uses dm
|
||||||
|
and dm is not ready yet at this point.
|
||||||
|
|
||||||
|
Note that the mdelay is dropped as the phy gets enabled much earlier
|
||||||
|
now, so it is no longer needed.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
Tested-by: Karsten Merker <merker@debian.org>
|
||||||
|
Tested-by: Michael Haas <haas@computerlinguist.org>
|
||||||
|
---
|
||||||
|
arch/arm/cpu/armv7/sunxi/board.c | 28 +---------------------------
|
||||||
|
arch/arm/include/asm/arch-sunxi/sys_proto.h | 6 +++++-
|
||||||
|
board/sunxi/board.c | 5 +++++
|
||||||
|
board/sunxi/gmac.c | 14 +-------------
|
||||||
|
4 files changed, 12 insertions(+), 41 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
index e80785b..7653148 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
@@ -152,6 +152,7 @@ void s_init(void)
|
||||||
|
timer_init();
|
||||||
|
gpio_init();
|
||||||
|
i2c_init_board();
|
||||||
|
+ eth_init_board();
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef CONFIG_SPL_BUILD
|
||||||
|
@@ -259,30 +260,3 @@ void enable_caches(void)
|
||||||
|
dcache_enable();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
-#ifdef CONFIG_CMD_NET
|
||||||
|
-/*
|
||||||
|
- * Initializes on-chip ethernet controllers.
|
||||||
|
- * to override, implement board_eth_init()
|
||||||
|
- */
|
||||||
|
-int cpu_eth_init(bd_t *bis)
|
||||||
|
-{
|
||||||
|
- __maybe_unused int rc;
|
||||||
|
-
|
||||||
|
-#ifdef CONFIG_MACPWR
|
||||||
|
- gpio_request(CONFIG_MACPWR, "macpwr");
|
||||||
|
- gpio_direction_output(CONFIG_MACPWR, 1);
|
||||||
|
- mdelay(200);
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
-#ifdef CONFIG_SUNXI_GMAC
|
||||||
|
- rc = sunxi_gmac_initialize(bis);
|
||||||
|
- if (rc < 0) {
|
||||||
|
- printf("sunxi: failed to initialize gmac\n");
|
||||||
|
- return rc;
|
||||||
|
- }
|
||||||
|
-#endif
|
||||||
|
-
|
||||||
|
- return 0;
|
||||||
|
-}
|
||||||
|
-#endif
|
||||||
|
diff --git a/arch/arm/include/asm/arch-sunxi/sys_proto.h b/arch/arm/include/asm/arch-sunxi/sys_proto.h
|
||||||
|
index 9df3744..a373319 100644
|
||||||
|
--- a/arch/arm/include/asm/arch-sunxi/sys_proto.h
|
||||||
|
+++ b/arch/arm/include/asm/arch-sunxi/sys_proto.h
|
||||||
|
@@ -24,6 +24,10 @@ void sdelay(unsigned long);
|
||||||
|
void return_to_fel(uint32_t lr, uint32_t sp);
|
||||||
|
|
||||||
|
/* Board / SoC level designware gmac init */
|
||||||
|
-int sunxi_gmac_initialize(bd_t *bis);
|
||||||
|
+#if !defined CONFIG_SPL_BUILD && defined CONFIG_SUNXI_GMAC
|
||||||
|
+void eth_init_board(void);
|
||||||
|
+#else
|
||||||
|
+static inline void eth_init_board(void) {}
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
#endif
|
||||||
|
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
|
||||||
|
index 80eae9c..e16718f 100644
|
||||||
|
--- a/board/sunxi/board.c
|
||||||
|
+++ b/board/sunxi/board.c
|
||||||
|
@@ -90,6 +90,11 @@ int board_init(void)
|
||||||
|
if (ret)
|
||||||
|
return ret;
|
||||||
|
|
||||||
|
+#ifdef CONFIG_MACPWR
|
||||||
|
+ gpio_request(CONFIG_MACPWR, "macpwr");
|
||||||
|
+ gpio_direction_output(CONFIG_MACPWR, 1);
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
/* Uses dm gpio code so do this here and not in i2c_init_board() */
|
||||||
|
return soft_i2c_board_init();
|
||||||
|
}
|
||||||
|
diff --git a/board/sunxi/gmac.c b/board/sunxi/gmac.c
|
||||||
|
index 4e222d8..69eb8ff 100644
|
||||||
|
--- a/board/sunxi/gmac.c
|
||||||
|
+++ b/board/sunxi/gmac.c
|
||||||
|
@@ -6,7 +6,7 @@
|
||||||
|
#include <asm/arch/clock.h>
|
||||||
|
#include <asm/arch/gpio.h>
|
||||||
|
|
||||||
|
-int sunxi_gmac_initialize(bd_t *bis)
|
||||||
|
+void eth_init_board(void)
|
||||||
|
{
|
||||||
|
int pin;
|
||||||
|
struct sunxi_ccm_reg *const ccm =
|
||||||
|
@@ -79,16 +79,4 @@ int sunxi_gmac_initialize(bd_t *bis)
|
||||||
|
for (pin = SUNXI_GPA(26); pin <= SUNXI_GPA(27); pin++)
|
||||||
|
sunxi_gpio_set_cfgpin(pin, SUN6I_GPA_GMAC);
|
||||||
|
#endif
|
||||||
|
-
|
||||||
|
-#ifdef CONFIG_DM_ETH
|
||||||
|
- return 0;
|
||||||
|
-#else
|
||||||
|
-# ifdef CONFIG_RGMII
|
||||||
|
- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_RGMII);
|
||||||
|
-# elif defined CONFIG_GMII
|
||||||
|
- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_GMII);
|
||||||
|
-# else
|
||||||
|
- return designware_initialize(SUNXI_GMAC_BASE, PHY_INTERFACE_MODE_MII);
|
||||||
|
-# endif
|
||||||
|
-#endif
|
||||||
|
}
|
@ -0,0 +1,82 @@
|
|||||||
|
From 948603d4d637a0e04a3214253b911cfc4ed11220 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Mon, 21 Mar 2016 14:44:35 +0100
|
||||||
|
Subject: [PATCH] sunxi: Fix 2nd usb controller on sun4i/sun7i no longer
|
||||||
|
working
|
||||||
|
|
||||||
|
The 2nd usb controller on sun4i/sun7i has its base address 0x8000
|
||||||
|
bytes from the 1st one, rather then 0x1000. Also the ahb clk gates
|
||||||
|
are interleaved with the ohci clk-gates introducing a hole between
|
||||||
|
the clks for usb1 and usb2.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
---
|
||||||
|
drivers/usb/host/ehci-sunxi.c | 13 +++++++++++--
|
||||||
|
drivers/usb/host/ohci-sunxi.c | 15 ++++++++++++---
|
||||||
|
2 files changed, 23 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/drivers/usb/host/ehci-sunxi.c b/drivers/usb/host/ehci-sunxi.c
|
||||||
|
index cf3dcc4..677a5d3 100644
|
||||||
|
--- a/drivers/usb/host/ehci-sunxi.c
|
||||||
|
+++ b/drivers/usb/host/ehci-sunxi.c
|
||||||
|
@@ -17,6 +17,14 @@
|
||||||
|
#include <dm.h>
|
||||||
|
#include "ehci.h"
|
||||||
|
|
||||||
|
+#ifdef CONFIG_SUNXI_GEN_SUN4I
|
||||||
|
+#define BASE_DIST 0x8000
|
||||||
|
+#define AHB_CLK_DIST 2
|
||||||
|
+#else
|
||||||
|
+#define BASE_DIST 0x1000
|
||||||
|
+#define AHB_CLK_DIST 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
struct ehci_sunxi_priv {
|
||||||
|
struct ehci_ctrl ehci;
|
||||||
|
int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */
|
||||||
|
@@ -39,8 +47,9 @@ static int ehci_usb_probe(struct udevice *dev)
|
||||||
|
#ifdef CONFIG_MACH_SUN8I_H3
|
||||||
|
priv->ahb_gate_mask |= 1 << AHB_GATE_OFFSET_USB_OHCI0;
|
||||||
|
#endif
|
||||||
|
- priv->phy_index = ((u32)hccr - SUNXI_USB1_BASE) / 0x1000 + 1;
|
||||||
|
- priv->ahb_gate_mask <<= priv->phy_index - 1;
|
||||||
|
+ priv->phy_index = ((u32)hccr - SUNXI_USB1_BASE) / BASE_DIST;
|
||||||
|
+ priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST;
|
||||||
|
+ priv->phy_index++; /* Non otg phys start at 1 */
|
||||||
|
|
||||||
|
setbits_le32(&ccm->ahb_gate0, priv->ahb_gate_mask);
|
||||||
|
#ifdef CONFIG_SUNXI_GEN_SUN6I
|
||||||
|
diff --git a/drivers/usb/host/ohci-sunxi.c b/drivers/usb/host/ohci-sunxi.c
|
||||||
|
index 1b1f651..d4fb95a 100644
|
||||||
|
--- a/drivers/usb/host/ohci-sunxi.c
|
||||||
|
+++ b/drivers/usb/host/ohci-sunxi.c
|
||||||
|
@@ -17,6 +17,14 @@
|
||||||
|
#include <usb.h>
|
||||||
|
#include "ohci.h"
|
||||||
|
|
||||||
|
+#ifdef CONFIG_SUNXI_GEN_SUN4I
|
||||||
|
+#define BASE_DIST 0x8000
|
||||||
|
+#define AHB_CLK_DIST 2
|
||||||
|
+#else
|
||||||
|
+#define BASE_DIST 0x1000
|
||||||
|
+#define AHB_CLK_DIST 1
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
struct ohci_sunxi_priv {
|
||||||
|
ohci_t ohci;
|
||||||
|
int ahb_gate_mask; /* Mask of ahb_gate0 clk gate bits for this hcd */
|
||||||
|
@@ -42,9 +50,10 @@ static int ohci_usb_probe(struct udevice *dev)
|
||||||
|
priv->ahb_gate_mask |= 1 << AHB_GATE_OFFSET_USB_EHCI0;
|
||||||
|
#endif
|
||||||
|
priv->usb_gate_mask = CCM_USB_CTRL_OHCI0_CLK;
|
||||||
|
- priv->phy_index = ((u32)regs - (SUNXI_USB1_BASE + 0x400)) / 0x1000 + 1;
|
||||||
|
- priv->ahb_gate_mask <<= priv->phy_index - 1;
|
||||||
|
- priv->usb_gate_mask <<= priv->phy_index - 1;
|
||||||
|
+ priv->phy_index = ((u32)regs - (SUNXI_USB1_BASE + 0x400)) / BASE_DIST;
|
||||||
|
+ priv->ahb_gate_mask <<= priv->phy_index * AHB_CLK_DIST;
|
||||||
|
+ priv->usb_gate_mask <<= priv->phy_index;
|
||||||
|
+ priv->phy_index++; /* Non otg phys start at 1 */
|
||||||
|
|
||||||
|
setbits_le32(&ccm->ahb_gate0, priv->ahb_gate_mask);
|
||||||
|
setbits_le32(&ccm->usb_clk_cfg, priv->usb_gate_mask);
|
@ -0,0 +1,33 @@
|
|||||||
|
From 8f10b5c65611e6c15a113bf63289b6696452f90d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Sun, 20 Mar 2016 14:17:10 +0100
|
||||||
|
Subject: [PATCH] spl: Print from which mmc slot spl is trying to boot
|
||||||
|
|
||||||
|
On some sunxi boards (and presumably also non sunxi boards) u-boot can
|
||||||
|
be either loaded from a sdcard in a micro-sd slot, or from eMMC.
|
||||||
|
|
||||||
|
Print which MMC spl tries to boot from, to help debugging.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Reviewed-by: Tom Rini <trini@konsulko.com>
|
||||||
|
---
|
||||||
|
common/spl/spl.c | 6 +++---
|
||||||
|
1 file changed, 3 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/common/spl/spl.c b/common/spl/spl.c
|
||||||
|
index e5167bf..82e7f58 100644
|
||||||
|
--- a/common/spl/spl.c
|
||||||
|
+++ b/common/spl/spl.c
|
||||||
|
@@ -210,9 +210,9 @@ struct boot_device_name boot_name_table[] = {
|
||||||
|
{ BOOT_DEVICE_RAM, "RAM" },
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_SPL_MMC_SUPPORT
|
||||||
|
- { BOOT_DEVICE_MMC1, "MMC" },
|
||||||
|
- { BOOT_DEVICE_MMC2, "MMC" },
|
||||||
|
- { BOOT_DEVICE_MMC2_2, "MMC" },
|
||||||
|
+ { BOOT_DEVICE_MMC1, "MMC1" },
|
||||||
|
+ { BOOT_DEVICE_MMC2, "MMC2" },
|
||||||
|
+ { BOOT_DEVICE_MMC2_2, "MMC2_2" },
|
||||||
|
#endif
|
||||||
|
#ifdef CONFIG_SPL_NAND_SUPPORT
|
||||||
|
{ BOOT_DEVICE_NAND, "NAND" },
|
@ -0,0 +1,43 @@
|
|||||||
|
From 60fa63012fcdc3c4ec1497bf5e358f0a90b40949 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Fri, 18 Mar 2016 08:42:01 +0100
|
||||||
|
Subject: [PATCH] sunxi: Add support for USB vbus pin for USB3
|
||||||
|
|
||||||
|
The H3 has USB0 - USB3, add support for having a USB vbus pin for USB3.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
---
|
||||||
|
arch/arm/cpu/armv7/sunxi/usb_phy.c | 1 +
|
||||||
|
board/sunxi/Kconfig | 6 ++++++
|
||||||
|
2 files changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/usb_phy.c b/arch/arm/cpu/armv7/sunxi/usb_phy.c
|
||||||
|
index 6ac96cc..0749fbd 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/usb_phy.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/usb_phy.c
|
||||||
|
@@ -76,6 +76,7 @@ static int get_vbus_gpio(int index)
|
||||||
|
case 0: return sunxi_name_to_gpio(CONFIG_USB0_VBUS_PIN);
|
||||||
|
case 1: return sunxi_name_to_gpio(CONFIG_USB1_VBUS_PIN);
|
||||||
|
case 2: return sunxi_name_to_gpio(CONFIG_USB2_VBUS_PIN);
|
||||||
|
+ case 3: return sunxi_name_to_gpio(CONFIG_USB3_VBUS_PIN);
|
||||||
|
}
|
||||||
|
return -EINVAL;
|
||||||
|
}
|
||||||
|
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
|
||||||
|
index 5e9d3af..5e72fac 100644
|
||||||
|
--- a/board/sunxi/Kconfig
|
||||||
|
+++ b/board/sunxi/Kconfig
|
||||||
|
@@ -342,6 +342,12 @@ config USB2_VBUS_PIN
|
||||||
|
---help---
|
||||||
|
See USB1_VBUS_PIN help text.
|
||||||
|
|
||||||
|
+config USB3_VBUS_PIN
|
||||||
|
+ string "Vbus enable pin for usb3 (ehci2)"
|
||||||
|
+ default ""
|
||||||
|
+ ---help---
|
||||||
|
+ See USB1_VBUS_PIN help text.
|
||||||
|
+
|
||||||
|
config I2C0_ENABLE
|
||||||
|
bool "Enable I2C/TWI controller 0"
|
||||||
|
default y if MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
|
@ -0,0 +1,35 @@
|
|||||||
|
From ce0d0926758f631fdd655d438acd32d5935d43a4 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Date: Fri, 18 Mar 2016 08:45:21 +0100
|
||||||
|
Subject: [PATCH] sunxi: Specify USB vbus pins for orangepi boards
|
||||||
|
|
||||||
|
This fixes the USB ports not working on the orangepi_plus and stops us
|
||||||
|
from messing with gpio-s which we should not touch on the orangepi_pc.
|
||||||
|
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Acked-by: Ian Campbell <ijc@hellion.org.uk>
|
||||||
|
---
|
||||||
|
configs/orangepi_pc_defconfig | 3 +++
|
||||||
|
configs/orangepi_plus_defconfig | 1 +
|
||||||
|
2 files changed, 4 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/configs/orangepi_pc_defconfig b/configs/orangepi_pc_defconfig
|
||||||
|
index aaf0f68..4e9051d 100644
|
||||||
|
--- a/configs/orangepi_pc_defconfig
|
||||||
|
+++ b/configs/orangepi_pc_defconfig
|
||||||
|
@@ -14,3 +14,6 @@ CONFIG_SPL=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
CONFIG_SY8106A_POWER=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
+CONFIG_USB1_VBUS_PIN=""
|
||||||
|
+CONFIG_USB2_VBUS_PIN=""
|
||||||
|
+CONFIG_USB3_VBUS_PIN=""
|
||||||
|
diff --git a/configs/orangepi_plus_defconfig b/configs/orangepi_plus_defconfig
|
||||||
|
index e52dcfc..6ecb30e 100644
|
||||||
|
--- a/configs/orangepi_plus_defconfig
|
||||||
|
+++ b/configs/orangepi_plus_defconfig
|
||||||
|
@@ -14,3 +14,4 @@ CONFIG_SPL=y
|
||||||
|
CONFIG_CMD_GPIO=y
|
||||||
|
CONFIG_SY8106A_POWER=y
|
||||||
|
CONFIG_USB_EHCI_HCD=y
|
||||||
|
+CONFIG_USB1_VBUS_PIN="PG13"
|
@ -0,0 +1,35 @@
|
|||||||
|
From 70fe24ed93fa90eb407d18a5fc9d9ad85ac9184c Mon Sep 17 00:00:00 2001
|
||||||
|
From: Chen-Yu Tsai <wens@csie.org>
|
||||||
|
Date: Wed, 27 Jan 2016 16:34:43 +0800
|
||||||
|
Subject: [PATCH] sunxi: Support SID e-fuses on A83T and H3
|
||||||
|
|
||||||
|
On the A83T and H3, the SID block is at a different address.
|
||||||
|
Furthurmore, the e-fuses are at an offset of 0x200 within the
|
||||||
|
hardware's address space.
|
||||||
|
|
||||||
|
Signed-off-by: Chen-Yu Tsai <wens@csie.org>
|
||||||
|
Acked-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
||||||
|
---
|
||||||
|
arch/arm/include/asm/arch-sunxi/cpu_sun4i.h | 7 +++++++
|
||||||
|
1 file changed, 7 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
|
||||||
|
index b6e11eb..65c0441 100644
|
||||||
|
--- a/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
|
||||||
|
+++ b/arch/arm/include/asm/arch-sunxi/cpu_sun4i.h
|
||||||
|
@@ -82,7 +82,14 @@
|
||||||
|
#define SUNXI_AD_DA_BASE 0x01c22c00
|
||||||
|
#define SUNXI_KEYPAD_BASE 0x01c23000
|
||||||
|
#define SUNXI_TZPC_BASE 0x01c23400
|
||||||
|
+
|
||||||
|
+#if defined(CONFIG_MACH_SUN8I_A83T) || defined(CONFIG_MACH_SUN8I_H3)
|
||||||
|
+/* SID address space starts at 0x01c1400, but e-fuse is at offset 0x200 */
|
||||||
|
+#define SUNXI_SID_BASE 0x01c14200
|
||||||
|
+#else
|
||||||
|
#define SUNXI_SID_BASE 0x01c23800
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#define SUNXI_SJTAG_BASE 0x01c23c00
|
||||||
|
|
||||||
|
#define SUNXI_TP_BASE 0x01c25000
|
@ -0,0 +1,25 @@
|
|||||||
|
From 2af25b747340c6c8f6a6b9e27632db577bf4da52 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Simon Glass <sjg@chromium.org>
|
||||||
|
Date: Mon, 22 Feb 2016 22:55:46 -0700
|
||||||
|
Subject: [PATCH] sunxi: Display the board model on start-up
|
||||||
|
|
||||||
|
It is useful to know which sunxi board you are booting. Display this on
|
||||||
|
start-up to avoid confusion.
|
||||||
|
|
||||||
|
Signed-off-by: Simon Glass <sjg@chromium.org>
|
||||||
|
---
|
||||||
|
include/configs/sunxi-common.h | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
|
||||||
|
index ff356e3..b26363d 100644
|
||||||
|
--- a/include/configs/sunxi-common.h
|
||||||
|
+++ b/include/configs/sunxi-common.h
|
||||||
|
@@ -174,6 +174,7 @@
|
||||||
|
|
||||||
|
#define CONFIG_SYS_MONITOR_LEN (768 << 10) /* 768 KiB */
|
||||||
|
#define CONFIG_IDENT_STRING " Allwinner Technology"
|
||||||
|
+#define CONFIG_DISPLAY_BOARDINFO
|
||||||
|
|
||||||
|
#define CONFIG_ENV_OFFSET (544 << 10) /* (8 + 24 + 512) KiB */
|
||||||
|
#define CONFIG_ENV_SIZE (128 << 10) /* 128 KiB */
|
@ -1,25 +0,0 @@
|
|||||||
From 54be0f057825b886af008d8d43a97802e5537ab6 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
Date: Fri, 22 Jan 2016 14:55:47 +0100
|
|
||||||
Subject: [PATCH] sunxi: Bananapro: Set LDO4 to 2.5V
|
|
||||||
|
|
||||||
According to the Bananapro schematic VDD25-SATA either comes from a
|
|
||||||
dedicated WL2003E25-5 LTO, or it is connected to LDO4 via a
|
|
||||||
0 Ohm resistor.
|
|
||||||
|
|
||||||
In practice it seems that LDO4 is used, so enable it and set it to 2.5V.
|
|
||||||
|
|
||||||
Signed-off-by: Hans de Goede <hdegoede@redhat.com>
|
|
||||||
---
|
|
||||||
configs/Bananapro_defconfig | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
diff --git a/configs/Bananapro_defconfig b/configs/Bananapro_defconfig
|
|
||||||
index 40588b9..4f4a07b 100644
|
|
||||||
--- a/configs/Bananapro_defconfig
|
|
||||||
+++ b/configs/Bananapro_defconfig
|
|
||||||
@@ -17,3 +17,4 @@ CONFIG_CMD_GPIO=y
|
|
||||||
CONFIG_NETCONSOLE=y
|
|
||||||
CONFIG_ETH_DESIGNWARE=y
|
|
||||||
CONFIG_USB_EHCI_HCD=y
|
|
||||||
+CONFIG_AXP_ALDO4_VOLT=2500
|
|
@ -0,0 +1,37 @@
|
|||||||
|
From a58eb20fb80f478038243e9e0f30f6984725e265 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||||
|
Date: Tue, 6 Jan 2015 15:47:18 +0100
|
||||||
|
Subject: sun6i: Sync PLL1 multipliers/dividers with Boot1
|
||||||
|
|
||||||
|
This change syncs up the multipliers and dividers used to initialize
|
||||||
|
PLL1 (i.e. the fast clock driving the ARM cores) with the values used
|
||||||
|
in Allwinner's Boot1 on sun6i.
|
||||||
|
|
||||||
|
More specifically, the following settings are now used:
|
||||||
|
* up to 768MHz: mul=2, div=2 (was: mul=1, div=1)
|
||||||
|
* up to 1152MHz: mul=3, div=2 (unchanged)
|
||||||
|
* above 1152MHz: mul=4, div=2 (was: mul=2, div=1)
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
index cfb32b4..2986539 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
@@ -102,11 +102,12 @@ void clock_set_pll1(unsigned int clk)
|
||||||
|
struct sunxi_ccm_reg * const ccm =
|
||||||
|
(struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
|
||||||
|
const int p = 0;
|
||||||
|
- int k = 1;
|
||||||
|
- int m = 1;
|
||||||
|
+ int k = 2;
|
||||||
|
+ int m = 2;
|
||||||
|
|
||||||
|
if (clk > 1152000000) {
|
||||||
|
- k = 2;
|
||||||
|
+ k = 4;
|
||||||
|
+ m = 2;
|
||||||
|
} else if (clk > 768000000) {
|
||||||
|
k = 3;
|
||||||
|
m = 2;
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
@ -0,0 +1,77 @@
|
|||||||
|
From b2b385df5095fff80b4655142f58a2a6801e6c80 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||||
|
Date: Tue, 6 Jan 2015 21:26:44 +0100
|
||||||
|
Subject: sun6i: Fix and document PLL LDO voltage selection
|
||||||
|
|
||||||
|
The PRCM_PLL_CTRL_LDO_OUT_L and PRCM_PLL_CTRL_LDO_OUT_H macros had
|
||||||
|
their meaning reversed. This is fixed by this change-set. With this
|
||||||
|
changed, the PRCM_PLL_CTRL_LDO_OUT_L(1370) now becomes self-evident
|
||||||
|
as setting the voltage to 1.37v (which it had done all along, even
|
||||||
|
though stating a different target voltage).
|
||||||
|
|
||||||
|
After changing the PLL LDO setting, it will take a little while for
|
||||||
|
the voltage output to settle. A sdelay()-based loop waits the same
|
||||||
|
order of magnitude as Boot1.
|
||||||
|
|
||||||
|
Furthermore, a bit of documentation is added to clarify that the
|
||||||
|
required setting for the PLL LDO is 1.37v as per the A31 manual.
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
index fa7ebd8..3a6e56e 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/clock_sun6i.c
|
||||||
|
@@ -24,14 +24,27 @@ void clock_init_safe(void)
|
||||||
|
struct sunxi_prcm_reg * const prcm =
|
||||||
|
(struct sunxi_prcm_reg *)SUNXI_PRCM_BASE;
|
||||||
|
|
||||||
|
- /* Set PLL ldo voltage without this PLL6 does not work properly */
|
||||||
|
+ /* Set PLL ldo voltage without this PLL6 does not work properly.
|
||||||
|
+ *
|
||||||
|
+ * As the A31 manual states, that "before enable PLL, PLLVDD
|
||||||
|
+ * LDO should be set to 1.37v", we need to configure this to 2.5v
|
||||||
|
+ * in the "PLL Input Power Select" (0 << 15) and (7 << 16).
|
||||||
|
+ */
|
||||||
|
clrsetbits_le32(&prcm->pll_ctrl1, PRCM_PLL_CTRL_LDO_KEY_MASK,
|
||||||
|
PRCM_PLL_CTRL_LDO_KEY);
|
||||||
|
clrsetbits_le32(&prcm->pll_ctrl1, ~PRCM_PLL_CTRL_LDO_KEY_MASK,
|
||||||
|
PRCM_PLL_CTRL_LDO_DIGITAL_EN | PRCM_PLL_CTRL_LDO_ANALOG_EN |
|
||||||
|
- PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1140));
|
||||||
|
+ PRCM_PLL_CTRL_EXT_OSC_EN | PRCM_PLL_CTRL_LDO_OUT_L(1370) );
|
||||||
|
clrbits_le32(&prcm->pll_ctrl1, PRCM_PLL_CTRL_LDO_KEY_MASK);
|
||||||
|
|
||||||
|
+ /* Give the PLL LDO voltage setting some time to take hold.
|
||||||
|
+ * Notes:
|
||||||
|
+ * 1) We need to use sdelay() as the timers aren't set up yet.
|
||||||
|
+ * 2) The 100k iterations come from Boot1, which spin's for 100k
|
||||||
|
+ * iterations through a loop.
|
||||||
|
+ */
|
||||||
|
+ sdelay(100000);
|
||||||
|
+
|
||||||
|
clock_set_pll1(408000000);
|
||||||
|
|
||||||
|
writel(AHB1_ABP1_DIV_DEFAULT, &ccm->ahb1_apb1_div);
|
||||||
|
diff --git a/arch/arm/include/asm/arch-sunxi/prcm.h b/arch/arm/include/asm/arch-sunxi/prcm.h
|
||||||
|
index 82ed541..41a62a4 100644
|
||||||
|
--- a/arch/arm/include/asm/arch-sunxi/prcm.h
|
||||||
|
+++ b/arch/arm/include/asm/arch-sunxi/prcm.h
|
||||||
|
@@ -111,13 +111,13 @@
|
||||||
|
#define PRCM_PLL_CTRL_LDO_OUT_MASK \
|
||||||
|
__PRCM_PLL_CTRL_LDO_OUT(0x7)
|
||||||
|
/* When using the low voltage 20 mV steps, and high voltage 30 mV steps */
|
||||||
|
-#define PRCM_PLL_CTRL_LDO_OUT_L(n) \
|
||||||
|
- __PRCM_PLL_CTRL_VDD_LDO_OUT((((n) - 1000) / 20) & 0x7)
|
||||||
|
#define PRCM_PLL_CTRL_LDO_OUT_H(n) \
|
||||||
|
+ __PRCM_PLL_CTRL_VDD_LDO_OUT((((n) - 1000) / 20) & 0x7)
|
||||||
|
+#define PRCM_PLL_CTRL_LDO_OUT_L(n) \
|
||||||
|
__PRCM_PLL_CTRL_VDD_LDO_OUT((((n) - 1160) / 30) & 0x7)
|
||||||
|
-#define PRCM_PLL_CTRL_LDO_OUT_LV(n) \
|
||||||
|
- __PRCM_PLL_CTRL_VDD_LDO_OUT((((n) & 0x7) * 20) + 1000)
|
||||||
|
#define PRCM_PLL_CTRL_LDO_OUT_HV(n) \
|
||||||
|
+ __PRCM_PLL_CTRL_VDD_LDO_OUT((((n) & 0x7) * 20) + 1000)
|
||||||
|
+#define PRCM_PLL_CTRL_LDO_OUT_LV(n) \
|
||||||
|
__PRCM_PLL_CTRL_VDD_LDO_OUT((((n) & 0x7) * 30) + 1160)
|
||||||
|
#define PRCM_PLL_CTRL_LDO_KEY (0xa7 << 24)
|
||||||
|
#define PRCM_PLL_CTRL_LDO_KEY_MASK (0xff << 24)
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
@ -0,0 +1,21 @@
|
|||||||
|
From d7311b6e7cdd1fc0e92665188e650934718cb2b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||||
|
Date: Tue, 16 Jun 2015 10:52:01 +0200
|
||||||
|
Subject: sun6i: define alternate-function for UART2 on GPG
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||||
|
index 8e67b3b..1fbf494 100644
|
||||||
|
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||||
|
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||||
|
@@ -177,6 +177,7 @@ enum sunxi_gpio_number {
|
||||||
|
#define SUN6I_GPG_SDC1 2
|
||||||
|
#define SUN8I_GPG_SDC1 2
|
||||||
|
#define SUN6I_GPG_TWI3 2
|
||||||
|
+#define SUN6I_GPG_UART2 2
|
||||||
|
#define SUN5I_GPG_UART1 4
|
||||||
|
|
||||||
|
#define SUN4I_GPH_SDC1 5
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
@ -0,0 +1,37 @@
|
|||||||
|
From c058dfb69136d62f88ae8b121104bdb7ce2df03f Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||||
|
Date: Tue, 16 Jun 2015 10:53:11 +0200
|
||||||
|
Subject: ARM: sun6i: Support console on UART2 (GPG6/GPG7)
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/arch/arm/cpu/armv7/sunxi/board.c b/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
index 5f39aa0..99675c3 100644
|
||||||
|
--- a/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
+++ b/arch/arm/cpu/armv7/sunxi/board.c
|
||||||
|
@@ -76,6 +76,10 @@ static int gpio_init(void)
|
||||||
|
sunxi_gpio_set_cfgpin(SUNXI_GPG(3), SUN5I_GPG_UART1);
|
||||||
|
sunxi_gpio_set_cfgpin(SUNXI_GPG(4), SUN5I_GPG_UART1);
|
||||||
|
sunxi_gpio_set_pull(SUNXI_GPG(4), SUNXI_GPIO_PULL_UP);
|
||||||
|
+#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUN6I)
|
||||||
|
+ sunxi_gpio_set_cfgpin(SUNXI_GPG(6), SUN6I_GPG_UART2);
|
||||||
|
+ sunxi_gpio_set_cfgpin(SUNXI_GPG(7), SUN6I_GPG_UART2);
|
||||||
|
+ sunxi_gpio_set_pull(SUNXI_GPG(7), SUNXI_GPIO_PULL_UP);
|
||||||
|
#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUN8I)
|
||||||
|
sunxi_gpio_set_cfgpin(SUNXI_GPB(0), SUN8I_GPB_UART2);
|
||||||
|
sunxi_gpio_set_cfgpin(SUNXI_GPB(1), SUN8I_GPB_UART2);
|
||||||
|
diff --git a/include/configs/sunxi-common.h b/include/configs/sunxi-common.h
|
||||||
|
index 9576bc1..bda4059 100644
|
||||||
|
--- a/include/configs/sunxi-common.h
|
||||||
|
+++ b/include/configs/sunxi-common.h
|
||||||
|
@@ -260,6 +260,8 @@ extern int soft_i2c_gpio_scl;
|
||||||
|
#endif
|
||||||
|
#elif CONFIG_CONS_INDEX == 2 && defined(CONFIG_MACH_SUN5I)
|
||||||
|
#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28400:115200"
|
||||||
|
+#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUN6I)
|
||||||
|
+#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28800:115200"
|
||||||
|
#elif CONFIG_CONS_INDEX == 3 && defined(CONFIG_MACH_SUN8I)
|
||||||
|
#define OF_STDOUT_PATH "/soc@01c00000/serial@01c28800:115200"
|
||||||
|
#elif CONFIG_CONS_INDEX == 5 && defined(CONFIG_MACH_SUN8I)
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
@ -0,0 +1,28 @@
|
|||||||
|
From 78d5fab8e345b1273ec8c22d06f1a1d27670b518 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
|
||||||
|
Date: Tue, 16 Jun 2015 10:59:38 +0200
|
||||||
|
Subject: ARM: sunxi: Make CONS_INDEX configurable
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/board/sunxi/Kconfig b/board/sunxi/Kconfig
|
||||||
|
index 2a1cd3c..e155c4c 100644
|
||||||
|
--- a/board/sunxi/Kconfig
|
||||||
|
+++ b/board/sunxi/Kconfig
|
||||||
|
@@ -209,6 +209,14 @@ config SYS_BOARD
|
||||||
|
config SYS_SOC
|
||||||
|
default "sunxi"
|
||||||
|
|
||||||
|
+config CONS_INDEX
|
||||||
|
+ int "UART used for console"
|
||||||
|
+ range 1 5
|
||||||
|
+ default 1
|
||||||
|
+ ---help---
|
||||||
|
+ Defines the UART port used for serial output. It starts at 1 so UART0 is 1,
|
||||||
|
+ UART1 is 2 and so on.
|
||||||
|
+
|
||||||
|
config UART0_PORT_F
|
||||||
|
bool "UART0 on MicroSD breakout board"
|
||||||
|
default n
|
||||||
|
--
|
||||||
|
cgit v0.10.2
|
||||||
|
|
6
package/boot/uboot-sunxi/uEnv-pangolin.txt
Normal file
6
package/boot/uboot-sunxi/uEnv-pangolin.txt
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
setenv fdt_high ffffffff
|
||||||
|
setenv loadkernel fatload mmc 0 \$kernel_addr_r uImage
|
||||||
|
setenv loaddtb fatload mmc 0 \$fdt_addr_r dtb
|
||||||
|
setenv bootargs console=ttyS2,115200 earlyprintk root=/dev/mmcblk0p2 rootwait
|
||||||
|
setenv uenvcmd run loadkernel \&\& run loaddtb \&\& bootm \$kernel_addr_r - \$fdt_addr_r
|
||||||
|
run uenvcmd
|
Loading…
Reference in New Issue
Block a user