gnu: Add u-boot-pinebook.
* gnu/packages/patches/u-boot-pinebook-a64-update-dts.patch: New file. * gnu/packages/patches/u-boot-pinebook-syscon-node.patch: New file. * gnu/packages/patches/u-boot-pinebook-mmc-calibration.patch: New file. * gnu/packages/patches/u-boot-pinebook-video-bridge.patch: New file. * gnu/packages/patches/u-boot-pinebook-r_i2c-controller.patch: New file. * gnu/packages/patches/u-boot-pinebook-dts.patch: New file. * gnu/local.mk (dist_patch_DATA): Add them. * gnu/packages/bootloaders.scm (u-boot-pinebook): New exported variable. * gnu/bootloader/u-boot.scm (u-boot-pinebook-bootloader): New exported variable. * gnu/system/install.scm (pinebook-installation-os): New exported variable.
This commit is contained in:
parent
eff8e0b4d9
commit
74e35e8c94
|
@ -32,6 +32,7 @@
|
|||
u-boot-nintendo-nes-classic-edition-bootloader
|
||||
u-boot-novena-bootloader
|
||||
u-boot-pine64-plus-bootloader
|
||||
u-boot-pinebook-bootloader
|
||||
u-boot-puma-rk3399-bootloader
|
||||
u-boot-wandboard-bootloader))
|
||||
|
||||
|
@ -168,6 +169,11 @@
|
|||
(inherit u-boot-allwinner64-bootloader)
|
||||
(package u-boot-pine64-plus)))
|
||||
|
||||
(define u-boot-pinebook-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner64-bootloader)
|
||||
(package u-boot-pinebook)))
|
||||
|
||||
(define u-boot-puma-rk3399-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
|
|
|
@ -1186,6 +1186,12 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/totem-meson-easy-codec.patch \
|
||||
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
||||
%D%/packages/patches/twinkle-include-qregexpvalidator.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-a64-update-dts.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-mmc-calibration.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-r_i2c-controller.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-dts.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-syscon-node.patch \
|
||||
%D%/packages/patches/u-boot-pinebook-video-bridge.patch \
|
||||
%D%/packages/patches/unrtf-CVE-2016-10091.patch \
|
||||
%D%/packages/patches/unzip-CVE-2014-8139.patch \
|
||||
%D%/packages/patches/unzip-CVE-2014-8140.patch \
|
||||
|
|
|
@ -579,6 +579,22 @@ board-independent tools.")))
|
|||
(define-public u-boot-pine64-plus
|
||||
(make-u-boot-sunxi64-package "pine64_plus" "aarch64-linux-gnu"))
|
||||
|
||||
(define-public u-boot-pinebook
|
||||
(let ((base (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu")))
|
||||
(package
|
||||
(inherit base)
|
||||
(source (origin
|
||||
(inherit (package-source u-boot))
|
||||
(patches (search-patches
|
||||
;; Add patches to enable Pinebook support from sunxi
|
||||
;; maintainer tree: git://git.denx.de/u-boot-sunxi.git
|
||||
"u-boot-pinebook-a64-update-dts.patch"
|
||||
"u-boot-pinebook-syscon-node.patch"
|
||||
"u-boot-pinebook-mmc-calibration.patch"
|
||||
"u-boot-pinebook-video-bridge.patch"
|
||||
"u-boot-pinebook-r_i2c-controller.patch"
|
||||
"u-boot-pinebook-dts.patch")))))))
|
||||
|
||||
(define-public u-boot-bananapi-m2-ultra
|
||||
(make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf"))
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,388 @@
|
|||
From b972831c3cd24f3c9bb0995ed61db8f8239f3391 Mon Sep 17 00:00:00 2001
|
||||
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Date: Mon, 5 Nov 2018 20:24:31 -0800
|
||||
Subject: [PATCH 10/13] sunxi: DT: add support for Pinebook
|
||||
|
||||
Pinebook is a laptop produced by Pine64, with USB-connected keyboard,
|
||||
USB-connected touchpad and an eDP LCD panel connected via a RGB-eDP
|
||||
bridge from Analogix.
|
||||
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Cc: Vagrant Cascadian <vagrant@debian.org>
|
||||
Reviewed-by: Jagan Teki <jagan@openedev.com>
|
||||
---
|
||||
arch/arm/dts/Makefile | 1 +
|
||||
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi | 15 ++
|
||||
arch/arm/dts/sun50i-a64-pinebook.dts | 294 +++++++++++++++++++++++++++
|
||||
configs/pinebook_defconfig | 22 ++
|
||||
4 files changed, 332 insertions(+)
|
||||
create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
|
||||
create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
|
||||
create mode 100644 configs/pinebook_defconfig
|
||||
|
||||
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
|
||||
index 3093c1185e..eae6b9ee5d 100644
|
||||
--- a/arch/arm/dts/Makefile
|
||||
+++ b/arch/arm/dts/Makefile
|
||||
@@ -406,6 +406,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \
|
||||
sun50i-a64-orangepi-win.dtb \
|
||||
sun50i-a64-pine64-plus.dtb \
|
||||
sun50i-a64-pine64.dtb \
|
||||
+ sun50i-a64-pinebook.dtb \
|
||||
sun50i-a64-sopine-baseboard.dtb
|
||||
dtb-$(CONFIG_MACH_SUN9I) += \
|
||||
sun9i-a80-optimus.dtb \
|
||||
diff --git a/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi b/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
|
||||
new file mode 100644
|
||||
index 0000000000..a99b7171d0
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
|
||||
@@ -0,0 +1,15 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (C) 2018 Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+/* The ANX6345 eDP-bridge is on r_i2c */
|
||||
+&r_i2c {
|
||||
+ anx6345: edp-bridge@38 {
|
||||
+ compatible = "analogix,anx6345";
|
||||
+ reg = <0x38>;
|
||||
+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
|
||||
+ status = "okay";
|
||||
+ };
|
||||
+};
|
||||
diff --git a/arch/arm/dts/sun50i-a64-pinebook.dts b/arch/arm/dts/sun50i-a64-pinebook.dts
|
||||
new file mode 100644
|
||||
index 0000000000..ec537c5297
|
||||
--- /dev/null
|
||||
+++ b/arch/arm/dts/sun50i-a64-pinebook.dts
|
||||
@@ -0,0 +1,294 @@
|
||||
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
|
||||
+/*
|
||||
+ * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz>
|
||||
+ * Copyright (C) 2018 Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
+ *
|
||||
+ */
|
||||
+
|
||||
+/dts-v1/;
|
||||
+
|
||||
+#include "sun50i-a64.dtsi"
|
||||
+
|
||||
+#include <dt-bindings/gpio/gpio.h>
|
||||
+#include <dt-bindings/input/input.h>
|
||||
+#include <dt-bindings/pwm/pwm.h>
|
||||
+
|
||||
+/ {
|
||||
+ model = "Pinebook";
|
||||
+ compatible = "pine64,pinebook", "allwinner,sun50i-a64";
|
||||
+
|
||||
+ aliases {
|
||||
+ serial0 = &uart0;
|
||||
+ ethernet0 = &rtl8723cs;
|
||||
+ };
|
||||
+
|
||||
+ vdd_bl: regulator@0 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "bl-3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
|
||||
+ enable-active-high;
|
||||
+ };
|
||||
+
|
||||
+ backlight: backlight {
|
||||
+ compatible = "pwm-backlight";
|
||||
+ pwms = <&pwm 0 50000 0>;
|
||||
+ brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;
|
||||
+ default-brightness-level = <2>;
|
||||
+ enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
|
||||
+ power-supply = <&vdd_bl>;
|
||||
+ };
|
||||
+
|
||||
+ chosen {
|
||||
+ stdout-path = "serial0:115200n8";
|
||||
+
|
||||
+ framebuffer-lcd {
|
||||
+ panel-supply = <®_dc1sw>;
|
||||
+ dvdd25-supply = <®_dldo2>;
|
||||
+ dvdd12-supply = <®_fldo1>;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ gpio_keys {
|
||||
+ compatible = "gpio-keys";
|
||||
+
|
||||
+ lid_switch {
|
||||
+ label = "Lid Switch";
|
||||
+ gpios = <&r_pio 0 12 GPIO_ACTIVE_LOW>; /* PL12 */
|
||||
+ linux,input-type = <EV_SW>;
|
||||
+ linux,code = <SW_LID>;
|
||||
+ linux,can-disable;
|
||||
+ wakeup-source;
|
||||
+ };
|
||||
+ };
|
||||
+
|
||||
+ reg_vcc3v3: vcc3v3 {
|
||||
+ compatible = "regulator-fixed";
|
||||
+ regulator-name = "vcc3v3";
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ };
|
||||
+
|
||||
+ wifi_pwrseq: wifi_pwrseq {
|
||||
+ compatible = "mmc-pwrseq-simple";
|
||||
+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&ehci0 {
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ehci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc0_pins>;
|
||||
+ vmmc-supply = <®_dcdc1>;
|
||||
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
|
||||
+ disable-wp;
|
||||
+ bus-width = <4>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&mmc1 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc1_pins>;
|
||||
+ vmmc-supply = <®_dldo4>;
|
||||
+ vqmmc-supply = <®_eldo1>;
|
||||
+ mmc-pwrseq = <&wifi_pwrseq>;
|
||||
+ bus-width = <4>;
|
||||
+ non-removable;
|
||||
+ status = "okay";
|
||||
+
|
||||
+ rtl8723cs: wifi@1 {
|
||||
+ reg = <1>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+&mmc2 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
|
||||
+ vmmc-supply = <®_dcdc1>;
|
||||
+ vqmmc-supply = <®_eldo1>;
|
||||
+ bus-width = <8>;
|
||||
+ non-removable;
|
||||
+ cap-mmc-hw-reset;
|
||||
+ mmc-hs200-1_8v;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci0 {
|
||||
+ phys = <&usbphy 0>;
|
||||
+ phy-names = "usb";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&ohci1 {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&pwm {
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&r_rsb {
|
||||
+ status = "okay";
|
||||
+
|
||||
+ axp803: pmic@3a3 {
|
||||
+ compatible = "x-powers,axp803";
|
||||
+ reg = <0x3a3>;
|
||||
+ interrupt-parent = <&r_intc>;
|
||||
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
|
||||
+ };
|
||||
+};
|
||||
+
|
||||
+/* The ANX6345 eDP-bridge is on r_i2c */
|
||||
+&r_i2c {
|
||||
+ clock-frequency = <100000>;
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&r_i2c_pl89_pins>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+#include "axp803.dtsi"
|
||||
+
|
||||
+®_aldo1 {
|
||||
+ regulator-min-microvolt = <2800000>;
|
||||
+ regulator-max-microvolt = <2800000>;
|
||||
+ regulator-name = "vcc-csi";
|
||||
+};
|
||||
+
|
||||
+®_aldo2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-pl";
|
||||
+};
|
||||
+
|
||||
+®_aldo3 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <2700000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-pll-avcc";
|
||||
+};
|
||||
+
|
||||
+®_dc1sw {
|
||||
+ regulator-name = "vcc-lcd";
|
||||
+};
|
||||
+
|
||||
+®_dcdc1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-3v3";
|
||||
+};
|
||||
+
|
||||
+®_dcdc2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1000000>;
|
||||
+ regulator-max-microvolt = <1300000>;
|
||||
+ regulator-name = "vdd-cpux";
|
||||
+};
|
||||
+
|
||||
+/* DCDC3 is polyphased with DCDC2 */
|
||||
+
|
||||
+®_dcdc5 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vcc-dram";
|
||||
+};
|
||||
+
|
||||
+®_dcdc6 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1100000>;
|
||||
+ regulator-max-microvolt = <1100000>;
|
||||
+ regulator-name = "vdd-sys";
|
||||
+};
|
||||
+
|
||||
+®_dldo1 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-hdmi";
|
||||
+};
|
||||
+
|
||||
+®_dldo2 {
|
||||
+ regulator-min-microvolt = <2500000>;
|
||||
+ regulator-max-microvolt = <2500000>;
|
||||
+ regulator-name = "vcc-edp";
|
||||
+};
|
||||
+
|
||||
+®_dldo3 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "avdd-csi";
|
||||
+};
|
||||
+
|
||||
+®_dldo4 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-wifi";
|
||||
+};
|
||||
+
|
||||
+®_eldo1 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "cpvdd";
|
||||
+};
|
||||
+
|
||||
+®_eldo3 {
|
||||
+ regulator-min-microvolt = <1800000>;
|
||||
+ regulator-max-microvolt = <1800000>;
|
||||
+ regulator-name = "vdd-1v8-csi";
|
||||
+};
|
||||
+
|
||||
+®_fldo1 {
|
||||
+ regulator-min-microvolt = <1200000>;
|
||||
+ regulator-max-microvolt = <1200000>;
|
||||
+ regulator-name = "vcc-1v2-hsic";
|
||||
+};
|
||||
+
|
||||
+®_fldo2 {
|
||||
+ regulator-always-on;
|
||||
+ regulator-min-microvolt = <1100000>;
|
||||
+ regulator-max-microvolt = <1100000>;
|
||||
+ regulator-name = "vdd-cpus";
|
||||
+};
|
||||
+
|
||||
+®_ldo_io0 {
|
||||
+ regulator-min-microvolt = <3300000>;
|
||||
+ regulator-max-microvolt = <3300000>;
|
||||
+ regulator-name = "vcc-usb";
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+®_rtc_ldo {
|
||||
+ regulator-name = "vcc-rtc";
|
||||
+};
|
||||
+
|
||||
+&simplefb_hdmi {
|
||||
+ vcc-hdmi-supply = <®_dldo1>;
|
||||
+};
|
||||
+
|
||||
+&uart0 {
|
||||
+ pinctrl-names = "default";
|
||||
+ pinctrl-0 = <&uart0_pb_pins>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
+
|
||||
+&usb_otg {
|
||||
+ dr_mode = "host";
|
||||
+};
|
||||
+
|
||||
+&usbphy {
|
||||
+ usb0_vbus-supply = <®_ldo_io0>;
|
||||
+ usb1_vbus-supply = <®_ldo_io0>;
|
||||
+ status = "okay";
|
||||
+};
|
||||
diff --git a/configs/pinebook_defconfig b/configs/pinebook_defconfig
|
||||
new file mode 100644
|
||||
index 0000000000..5294dbd2eb
|
||||
--- /dev/null
|
||||
+++ b/configs/pinebook_defconfig
|
||||
@@ -0,0 +1,22 @@
|
||||
+CONFIG_ARM=y
|
||||
+CONFIG_ARCH_SUNXI=y
|
||||
+CONFIG_SPL=y
|
||||
+CONFIG_MACH_SUN50I=y
|
||||
+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y
|
||||
+CONFIG_DRAM_CLK=552
|
||||
+CONFIG_DRAM_ZQ=3881949
|
||||
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
|
||||
+CONFIG_R_I2C_ENABLE=y
|
||||
+# CONFIG_CMD_FLASH is not set
|
||||
+# CONFIG_SPL_DOS_PARTITION is not set
|
||||
+# CONFIG_SPL_EFI_PARTITION is not set
|
||||
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinebook"
|
||||
+CONFIG_DM_REGULATOR=y
|
||||
+CONFIG_DM_REGULATOR_FIXED=y
|
||||
+CONFIG_DM_PWM=y
|
||||
+CONFIG_PWM_SUNXI=y
|
||||
+CONFIG_USB_EHCI_HCD=y
|
||||
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
|
||||
+# CONFIG_USB_GADGET is not set
|
||||
+CONFIG_VIDEO_BRIDGE=y
|
||||
+CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,98 @@
|
|||
From 20940ef2a397446a209350900d3bd618c3fd5b94 Mon Sep 17 00:00:00 2001
|
||||
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Date: Mon, 5 Nov 2018 20:24:28 -0800
|
||||
Subject: [PATCH 07/13] mmc: sunxi: add support for automatic delay calibration
|
||||
|
||||
A64 and H6 support automatic delay calibration and Linux driver uses it
|
||||
instead of hardcoded delays. Add support for it to u-boot driver.
|
||||
|
||||
Fixes eMMC instability on Pinebook
|
||||
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Cc: Vagrant Cascadian <vagrant@debian.org>
|
||||
Reviewed-by: Jagan Teki <jagan@openedev.com>
|
||||
---
|
||||
arch/arm/include/asm/arch-sunxi/mmc.h | 6 +++++-
|
||||
drivers/mmc/sunxi_mmc.c | 21 ++++++++++++++++++++-
|
||||
2 files changed, 25 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
|
||||
index d98c53faaa..f2deafddd2 100644
|
||||
--- a/arch/arm/include/asm/arch-sunxi/mmc.h
|
||||
+++ b/arch/arm/include/asm/arch-sunxi/mmc.h
|
||||
@@ -46,7 +46,9 @@ struct sunxi_mmc {
|
||||
u32 cbda; /* 0x94 */
|
||||
u32 res2[26];
|
||||
#if defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_MACH_SUN50I_H6)
|
||||
- u32 res3[64];
|
||||
+ u32 res3[17];
|
||||
+ u32 samp_dl;
|
||||
+ u32 res4[46];
|
||||
#endif
|
||||
u32 fifo; /* 0x100 / 0x200 FIFO access address */
|
||||
};
|
||||
@@ -130,5 +132,7 @@ struct sunxi_mmc {
|
||||
#define SUNXI_MMC_COMMON_CLK_GATE (1 << 16)
|
||||
#define SUNXI_MMC_COMMON_RESET (1 << 18)
|
||||
|
||||
+#define SUNXI_MMC_CAL_DL_SW_EN (0x1 << 7)
|
||||
+
|
||||
struct mmc *sunxi_mmc_init(int sdc_no);
|
||||
#endif /* _SUNXI_MMC_H */
|
||||
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
|
||||
index 39f15eb423..147eb9b4d5 100644
|
||||
--- a/drivers/mmc/sunxi_mmc.c
|
||||
+++ b/drivers/mmc/sunxi_mmc.c
|
||||
@@ -99,11 +99,16 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
|
||||
{
|
||||
unsigned int pll, pll_hz, div, n, oclk_dly, sclk_dly;
|
||||
bool new_mode = false;
|
||||
+ bool calibrate = false;
|
||||
u32 val = 0;
|
||||
|
||||
if (IS_ENABLED(CONFIG_MMC_SUNXI_HAS_NEW_MODE) && (priv->mmc_no == 2))
|
||||
new_mode = true;
|
||||
|
||||
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
|
||||
+ calibrate = true;
|
||||
+#endif
|
||||
+
|
||||
/*
|
||||
* The MMC clock has an extra /2 post-divider when operating in the new
|
||||
* mode.
|
||||
@@ -174,7 +179,11 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
|
||||
val = CCM_MMC_CTRL_MODE_SEL_NEW;
|
||||
setbits_le32(&priv->reg->ntsr, SUNXI_MMC_NTSR_MODE_SEL_NEW);
|
||||
#endif
|
||||
- } else {
|
||||
+ } else if (!calibrate) {
|
||||
+ /*
|
||||
+ * Use hardcoded delay values if controller doesn't support
|
||||
+ * calibration
|
||||
+ */
|
||||
val = CCM_MMC_CTRL_OCLK_DLY(oclk_dly) |
|
||||
CCM_MMC_CTRL_SCLK_DLY(sclk_dly);
|
||||
}
|
||||
@@ -228,6 +237,16 @@ static int mmc_config_clock(struct sunxi_mmc_priv *priv, struct mmc *mmc)
|
||||
rval &= ~SUNXI_MMC_CLK_DIVIDER_MASK;
|
||||
writel(rval, &priv->reg->clkcr);
|
||||
|
||||
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
|
||||
+ /* A64 supports calibration of delays on MMC controller and we
|
||||
+ * have to set delay of zero before starting calibration.
|
||||
+ * Allwinner BSP driver sets a delay only in the case of
|
||||
+ * using HS400 which is not supported by mainline U-Boot or
|
||||
+ * Linux at the moment
|
||||
+ */
|
||||
+ writel(SUNXI_MMC_CAL_DL_SW_EN, &priv->reg->samp_dl);
|
||||
+#endif
|
||||
+
|
||||
/* Re-enable Clock */
|
||||
rval |= SUNXI_MMC_CLK_ENABLE;
|
||||
writel(rval, &priv->reg->clkcr);
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,70 @@
|
|||
From 31a4ac4d79d75baeede3edfa95515fd4169ef502 Mon Sep 17 00:00:00 2001
|
||||
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Date: Mon, 5 Nov 2018 20:24:30 -0800
|
||||
Subject: [PATCH 09/13] sun50i: A64: add support for R_I2C controller
|
||||
|
||||
Allwinner A64 has a I2C controller, which is in the R_ MMIO zone and has
|
||||
two groups of pinmuxes on PL bank, so it's called R_I2C.
|
||||
|
||||
Add support for this I2C controller and the pinmux which doesn't conflict
|
||||
with RSB.
|
||||
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Cc: Vagrant Cascadian <vagrant@debian.org>
|
||||
Acked-by: Jagan Teki <jagan@openedev.com>
|
||||
---
|
||||
arch/arm/include/asm/arch-sunxi/gpio.h | 1 +
|
||||
arch/arm/mach-sunxi/Kconfig | 1 +
|
||||
board/sunxi/board.c | 6 ++++++
|
||||
3 files changed, 8 insertions(+)
|
||||
|
||||
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||
index 6a5eafc3d3..2daf23f6f5 100644
|
||||
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
|
||||
@@ -211,6 +211,7 @@ enum sunxi_gpio_number {
|
||||
#define SUN8I_H3_GPL_R_TWI 2
|
||||
#define SUN8I_A23_GPL_R_TWI 3
|
||||
#define SUN8I_GPL_R_UART 2
|
||||
+#define SUN50I_GPL_R_TWI 2
|
||||
|
||||
#define SUN9I_GPN_R_RSB 3
|
||||
|
||||
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
|
||||
index 6277abc3cc..560dc9b25d 100644
|
||||
--- a/arch/arm/mach-sunxi/Kconfig
|
||||
+++ b/arch/arm/mach-sunxi/Kconfig
|
||||
@@ -278,6 +278,7 @@ config MACH_SUN50I
|
||||
select ARM64
|
||||
select DM_I2C
|
||||
select PHY_SUN4I_USB
|
||||
+ select SUN6I_PRCM
|
||||
select SUNXI_DE2
|
||||
select SUNXI_GEN_SUN6I
|
||||
select SUPPORT_SPL
|
||||
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
|
||||
index b196d48674..64ccbc7245 100644
|
||||
--- a/board/sunxi/board.c
|
||||
+++ b/board/sunxi/board.c
|
||||
@@ -168,10 +168,16 @@ void i2c_init_board(void)
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_R_I2C_ENABLE
|
||||
+#ifdef CONFIG_MACH_SUN50I
|
||||
+ clock_twi_onoff(5, 1);
|
||||
+ sunxi_gpio_set_cfgpin(SUNXI_GPL(8), SUN50I_GPL_R_TWI);
|
||||
+ sunxi_gpio_set_cfgpin(SUNXI_GPL(9), SUN50I_GPL_R_TWI);
|
||||
+#else
|
||||
clock_twi_onoff(5, 1);
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_H3_GPL_R_TWI);
|
||||
sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_H3_GPL_R_TWI);
|
||||
#endif
|
||||
+#endif
|
||||
}
|
||||
|
||||
#if defined(CONFIG_ENV_IS_IN_MMC) && defined(CONFIG_ENV_IS_IN_FAT)
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,38 @@
|
|||
From ababb5920e8992c9bb7956df3cc85dc68d27dfe8 Mon Sep 17 00:00:00 2001
|
||||
From: Andre Przywara <andre.przywara@arm.com>
|
||||
Date: Mon, 29 Oct 2018 00:56:48 +0000
|
||||
Subject: [PATCH 04/13] sunxi: A64: Re-add syscon to DT node
|
||||
|
||||
The sun50i-a64.dtsi changes introduced in Linux v4.19-rc1 changed the
|
||||
compatible name for the syscon controller, dropping the generic "syscon"
|
||||
fallback. Using this new DT node will make the Ethernet driver in every
|
||||
older kernel (or non-Linux kernels) fail to initialise the MAC device.
|
||||
|
||||
To allow booting distribution kernels (from installer images via UEFI,
|
||||
for instance), re-add the syscon compatible string as a fallback. This
|
||||
works with both older and newer kernels.
|
||||
|
||||
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Reviewed-by: Jagan Teki <jagan@openedev.com>
|
||||
---
|
||||
arch/arm/dts/sun50i-a64.dtsi | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi
|
||||
index f3a66f8882..ff41abc96a 100644
|
||||
--- a/arch/arm/dts/sun50i-a64.dtsi
|
||||
+++ b/arch/arm/dts/sun50i-a64.dtsi
|
||||
@@ -259,7 +259,8 @@
|
||||
};
|
||||
|
||||
syscon: syscon@1c00000 {
|
||||
- compatible = "allwinner,sun50i-a64-system-control";
|
||||
+ compatible = "allwinner,sun50i-a64-system-control",
|
||||
+ "syscon";
|
||||
reg = <0x01c00000 0x1000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -0,0 +1,50 @@
|
|||
From 8336a43792a103c13d939b3925cb75322911f7fb Mon Sep 17 00:00:00 2001
|
||||
From: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Date: Mon, 5 Nov 2018 20:24:29 -0800
|
||||
Subject: [PATCH 08/13] dm: video: bridge: don't fail to activate bridge if
|
||||
reset or sleep GPIO is missing
|
||||
|
||||
Both GPIOs are optional, so we shouldn't fail if any is missing.
|
||||
Without this fix reset is not deasserted if sleep GPIO is missing.
|
||||
|
||||
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
|
||||
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
|
||||
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
|
||||
Cc: Vagrant Cascadian <vagrant@debian.org>
|
||||
---
|
||||
drivers/video/bridge/video-bridge-uclass.c | 16 +++++++++++-----
|
||||
1 file changed, 11 insertions(+), 5 deletions(-)
|
||||
|
||||
diff --git a/drivers/video/bridge/video-bridge-uclass.c b/drivers/video/bridge/video-bridge-uclass.c
|
||||
index cd4959cc71..5fecb4cfd5 100644
|
||||
--- a/drivers/video/bridge/video-bridge-uclass.c
|
||||
+++ b/drivers/video/bridge/video-bridge-uclass.c
|
||||
@@ -106,13 +106,19 @@ static int video_bridge_pre_probe(struct udevice *dev)
|
||||
int video_bridge_set_active(struct udevice *dev, bool active)
|
||||
{
|
||||
struct video_bridge_priv *uc_priv = dev_get_uclass_priv(dev);
|
||||
- int ret;
|
||||
+ int ret = 0;
|
||||
|
||||
debug("%s: %d\n", __func__, active);
|
||||
- ret = dm_gpio_set_value(&uc_priv->sleep, !active);
|
||||
- if (ret)
|
||||
- return ret;
|
||||
- if (active) {
|
||||
+ if (uc_priv->sleep.dev) {
|
||||
+ ret = dm_gpio_set_value(&uc_priv->sleep, !active);
|
||||
+ if (ret)
|
||||
+ return ret;
|
||||
+ }
|
||||
+
|
||||
+ if (!active)
|
||||
+ return 0;
|
||||
+
|
||||
+ if (uc_priv->reset.dev) {
|
||||
ret = dm_gpio_set_value(&uc_priv->reset, true);
|
||||
if (ret)
|
||||
return ret;
|
||||
--
|
||||
2.11.0
|
||||
|
|
@ -53,6 +53,7 @@
|
|||
nintendo-nes-classic-edition-installation-os
|
||||
novena-installation-os
|
||||
pine64-plus-installation-os
|
||||
pinebook-installation-os
|
||||
rk3399-puma-installation-os
|
||||
wandboard-installation-os
|
||||
os-with-u-boot))
|
||||
|
@ -473,6 +474,11 @@ The bootloader BOOTLOADER is installed to BOOTLOADER-TARGET."
|
|||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
|
||||
(define pinebook-installation-os
|
||||
(embedded-installation-os u-boot-pinebook-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
"ttyS0"))
|
||||
|
||||
(define rk3399-puma-installation-os
|
||||
(embedded-installation-os u-boot-puma-rk3399-bootloader
|
||||
"/dev/mmcblk0" ; SD card storage
|
||||
|
|
Loading…
Reference in New Issue