diff --git a/config/kernel/linux-sunxi-next.config b/config/kernel/linux-sunxi-next.config index 626868e8e..b3ccdf585 100644 --- a/config/kernel/linux-sunxi-next.config +++ b/config/kernel/linux-sunxi-next.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm 4.17.8 Kernel Configuration +# Linux/arm 4.17.14 Kernel Configuration # CONFIG_ARM=y CONFIG_ARM_HAS_SG_CHAIN=y @@ -1494,7 +1494,6 @@ CONFIG_CFG80211_WEXT=y CONFIG_LIB80211=m CONFIG_LIB80211_CRYPT_WEP=m CONFIG_LIB80211_CRYPT_CCMP=m -CONFIG_LIB80211_CRYPT_TKIP=m # CONFIG_LIB80211_DEBUG is not set CONFIG_MAC80211=m CONFIG_MAC80211_HAS_RC=y @@ -3268,6 +3267,7 @@ CONFIG_HISI_THERMAL=m # ACPI INT340X thermal drivers # CONFIG_MTK_THERMAL=m +CONFIG_SUN50I_H6_THS=m # # Broadcom thermal drivers @@ -4864,9 +4864,10 @@ CONFIG_USB_MON=m # CONFIG_USB_C67X00_HCD is not set CONFIG_USB_XHCI_HCD=y # CONFIG_USB_XHCI_DBGCAP is not set -# CONFIG_USB_XHCI_PLATFORM is not set +CONFIG_USB_XHCI_PLATFORM=y # CONFIG_USB_XHCI_MTK is not set # CONFIG_USB_XHCI_MVEBU is not set +CONFIG_USB_XHCI_RCAR=m CONFIG_USB_EHCI_HCD=y # CONFIG_USB_EHCI_ROOT_HUB_TT is not set CONFIG_USB_EHCI_TT_NEWSCHED=y @@ -4955,7 +4956,11 @@ CONFIG_USB_DWC3_DUAL_ROLE=y # # Platform Glue Driver Support # +CONFIG_USB_DWC3_OMAP=m +CONFIG_USB_DWC3_EXYNOS=m +CONFIG_USB_DWC3_KEYSTONE=m CONFIG_USB_DWC3_OF_SIMPLE=m +CONFIG_USB_DWC3_ST=m CONFIG_USB_DWC2=y # CONFIG_USB_DWC2_HOST is not set diff --git a/config/kernel/linux-sunxi64-next.config b/config/kernel/linux-sunxi64-next.config index d5ee7c290..e5d1f603d 100644 --- a/config/kernel/linux-sunxi64-next.config +++ b/config/kernel/linux-sunxi64-next.config @@ -1,6 +1,6 @@ # # Automatically generated file; DO NOT EDIT. -# Linux/arm64 4.17.13 Kernel Configuration +# Linux/arm64 4.17.14 Kernel Configuration # CONFIG_ARM64=y CONFIG_64BIT=y @@ -1863,7 +1863,7 @@ CONFIG_MDIO_BUS_MUX=y # CONFIG_MDIO_GPIO is not set # CONFIG_MDIO_HISI_FEMAC is not set # CONFIG_MDIO_OCTEON is not set -CONFIG_MDIO_SUN4I=m +CONFIG_MDIO_SUN4I=y CONFIG_PHYLIB=y CONFIG_SWPHY=y CONFIG_LED_TRIGGER_PHY=y diff --git a/patch/kernel/sunxi-next/board-a64-add-drivevbus-regulator.patch b/patch/kernel/sunxi-next/board-a64-add-drivevbus-regulator.patch new file mode 100644 index 000000000..ce16138bd --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-add-drivevbus-regulator.patch @@ -0,0 +1,16 @@ +diff --git a/arch/arm64/boot/dts/allwinner/axp803.dtsi b/arch/arm64/boot/dts/allwinner/axp803.dtsi +index ff8af527..026cb243 100644 +--- a/arch/arm64/boot/dts/allwinner/axp803.dtsi ++++ b/arch/arm64/boot/dts/allwinner/axp803.dtsi +@@ -146,5 +146,11 @@ + regulator-max-microvolt = <3000000>; + regulator-name = "rtc-ldo"; + }; ++ ++ reg_drivevbus: drivevbus { ++ regulator-name = "drivevbus"; ++ status = "disabled"; ++ }; ++ + }; + }; diff --git a/patch/kernel/sunxi-next/board-a64-v2-7-7-arm64-allwinner-a64-add-HDMI-regulator-to-all-DTs-simplefb_hdmi.patch b/patch/kernel/sunxi-next/board-a64-v2-7-7-arm64-allwinner-a64-add-HDMI-regulator-to-all-DTs-simplefb_hdmi.patch index 6e2595011..6e044beec 100644 --- a/patch/kernel/sunxi-next/board-a64-v2-7-7-arm64-allwinner-a64-add-HDMI-regulator-to-all-DTs-simplefb_hdmi.patch +++ b/patch/kernel/sunxi-next/board-a64-v2-7-7-arm64-allwinner-a64-add-HDMI-regulator-to-all-DTs-simplefb_hdmi.patch @@ -36,21 +36,6 @@ index 3b3081b10ecb..3f531393eaee 100644 regulator-name = "vcc-rtc"; }; -+&simplefb_hdmi { -+ vcc-hdmi-supply = <®_dldo1>; -+}; -+ - &uart0 { - pinctrl-names = "default"; - pinctrl-0 = <&uart0_pins_a>; -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -index bf42690a3361..1221764f5719 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -@@ -191,6 +191,10 @@ - regulator-name = "vcc-rtc"; - }; - +&simplefb_hdmi { + vcc-hdmi-supply = <®_dldo1>; +}; diff --git a/patch/kernel/sunxi-next/board-a64-v3-01-19-arm64-dts-allwinner-a64-Add-L2-cache-nodes.patch b/patch/kernel/sunxi-next/board-a64-v3-01-19-arm64-dts-allwinner-a64-Add-L2-cache-nodes.patch new file mode 100644 index 000000000..780cd552d --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-01-19-arm64-dts-allwinner-a64-Add-L2-cache-nodes.patch @@ -0,0 +1,41 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +index d3daf90a8715..934d7e87fa08 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +@@ -88,6 +88,7 @@ + device_type = "cpu"; + reg = <0>; + enable-method = "psci"; ++ next-level-cache = <&L2>; + }; + + cpu1: cpu@1 { +@@ -95,6 +96,7 @@ + device_type = "cpu"; + reg = <1>; + enable-method = "psci"; ++ next-level-cache = <&L2>; + }; + + cpu2: cpu@2 { +@@ -102,6 +104,7 @@ + device_type = "cpu"; + reg = <2>; + enable-method = "psci"; ++ next-level-cache = <&L2>; + }; + + cpu3: cpu@3 { +@@ -109,6 +112,12 @@ + device_type = "cpu"; + reg = <3>; + enable-method = "psci"; ++ next-level-cache = <&L2>; ++ }; ++ ++ L2: l2-cache { ++ compatible = "cache"; ++ cache-level = <2>; + }; + }; + diff --git a/patch/kernel/sunxi-next/board-a64-v3-02-19-arm64-dts-allwinner-a64-Add-Pine64-LTS-device-tree-file.patch b/patch/kernel/sunxi-next/board-a64-v3-02-19-arm64-dts-allwinner-a64-Add-Pine64-LTS-device-tree-file.patch new file mode 100644 index 000000000..522dda608 --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-02-19-arm64-dts-allwinner-a64-Add-Pine64-LTS-device-tree-file.patch @@ -0,0 +1,31 @@ +diff --git a/arch/arm64/boot/dts/allwinner/Makefile b/arch/arm64/boot/dts/allwinner/Makefile +index 9ffa7a038791..b7034327b28b 100644 +--- a/arch/arm64/boot/dts/allwinner/Makefile ++++ b/arch/arm64/boot/dts/allwinner/Makefile +@@ -4,6 +4,7 @@ dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-bananapi-m64.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 ++dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-lts.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pine64-plus.dtb sun50i-a64-pine64.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-pinebook.dtb + dtb-$(CONFIG_ARCH_SUNXI) += sun50i-a64-sopine-baseboard.dtb +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts +new file mode 100644 +index 000000000000..72d6961dc312 +--- /dev/null ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64-lts.dts +@@ -0,0 +1,13 @@ ++/* ++ * SPDX-License-Identifier: (GPL-2.0+ OR MIT) ++ * ++ * Copyright (c) 2018 ARM Ltd. ++ */ ++ ++#include "sun50i-a64-sopine-baseboard.dts" ++ ++/ { ++ model = "Pine64 LTS"; ++ compatible = "pine64,pine64-lts", "allwinner,sun50i-r18", ++ "allwinner,sun50i-a64"; ++}; diff --git a/patch/kernel/sunxi-next/board-a64-v3-13-19-arm64-dts-allwinner-a64-Olinuxino-fix-DRAM-voltage.patch b/patch/kernel/sunxi-next/board-a64-v3-13-19-arm64-dts-allwinner-a64-Olinuxino-fix-DRAM-voltage.patch new file mode 100644 index 000000000..0c6de7fe7 --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-13-19-arm64-dts-allwinner-a64-Olinuxino-fix-DRAM-voltage.patch @@ -0,0 +1,21 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +index 3f531393eaee..b3f186434f36 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +@@ -142,10 +142,14 @@ + + /* DCDC3 is polyphased with DCDC2 */ + ++/* ++ * The board uses DDR3L DRAM chips. 1.36V is the closest to the nominal ++ * 1.35V that the PMIC can drive. ++ */ + ®_dcdc5 { + regulator-always-on; +- regulator-min-microvolt = <1500000>; +- regulator-max-microvolt = <1500000>; ++ regulator-min-microvolt = <1360000>; ++ regulator-max-microvolt = <1360000>; + regulator-name = "vcc-ddr3"; + }; + diff --git a/patch/kernel/sunxi-next/board-a64-v3-14-19-arm64-dts-allwinner-a64-Olinuxino-add-Ethernet-nodes.patch b/patch/kernel/sunxi-next/board-a64-v3-14-19-arm64-dts-allwinner-a64-Olinuxino-add-Ethernet-nodes.patch new file mode 100644 index 000000000..44923ac64 --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-14-19-arm64-dts-allwinner-a64-Olinuxino-add-Ethernet-nodes.patch @@ -0,0 +1,35 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +index b3f186434f36..26075b9a76e3 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +@@ -51,6 +51,7 @@ + compatible = "olimex,a64-olinuxino", "allwinner,sun50i-a64"; + + aliases { ++ ethernet0 = &emac; + serial0 = &uart0; + }; + +@@ -64,6 +65,22 @@ + }; + }; + ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_dcdc1>; ++ 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>; diff --git a/patch/kernel/sunxi-next/board-a64-v3-15-19-arm64-dts-allwinner-a64-Olinuxino-enable-USB.patch b/patch/kernel/sunxi-next/board-a64-v3-15-19-arm64-dts-allwinner-a64-Olinuxino-enable-USB.patch new file mode 100644 index 000000000..e3304f4e1 --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-15-19-arm64-dts-allwinner-a64-Olinuxino-enable-USB.patch @@ -0,0 +1,87 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +index 26075b9a76e3..a1c2f06ed474 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +@@ -59,12 +59,31 @@ + stdout-path = "serial0:115200n8"; + }; + ++ reg_usb1_vbus: usb1-vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 6 9 GPIO_ACTIVE_HIGH>; /* PG9 */ ++ status = "okay"; ++ }; ++ + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ + }; + }; + ++&ehci0 { ++ status = "okay"; ++}; ++ ++&ehci1 { ++ status = "okay"; ++}; ++ + &emac { + pinctrl-names = "default"; + pinctrl-0 = <&rgmii_pins>; +@@ -109,6 +128,14 @@ + }; + }; + ++&ohci0 { ++ status = "okay"; ++}; ++ ++&ohci1 { ++ status = "okay"; ++}; ++ + &r_rsb { + status = "okay"; + +@@ -117,6 +144,7 @@ + reg = <0x3a3>; + interrupt-parent = <&r_intc>; + interrupts = <0 IRQ_TYPE_LEVEL_LOW>; ++ x-powers,drive-vbus-en; /* set N_VBUSEN as output pin */ + }; + }; + +@@ -201,6 +229,11 @@ + regulator-name = "vcc-wifi-io"; + }; + ++®_drivevbus { ++ regulator-name = "usb0-vbus"; ++ status = "okay"; ++}; ++ + ®_eldo1 { + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; +@@ -244,3 +277,15 @@ + pinctrl-0 = <&uart0_pins_a>; + status = "okay"; + }; ++ ++&usb_otg { ++ dr_mode = "otg"; ++ status = "okay"; ++}; ++ ++&usbphy { ++ status = "okay"; ++ usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ ++ usb0_vbus-supply = <®_drivevbus>; ++ usb1_vbus-supply = <®_usb1_vbus>; ++}; diff --git a/patch/kernel/sunxi-next/board-a64-v3-16-19-arm64-dts-allwinner-a64-NanoPi-A64-Fix-DCDC1-voltage.patch b/patch/kernel/sunxi-next/board-a64-v3-16-19-arm64-dts-allwinner-a64-NanoPi-A64-Fix-DCDC1-voltage.patch new file mode 100644 index 000000000..c6a9c4cae --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-16-19-arm64-dts-allwinner-a64-NanoPi-A64-Fix-DCDC1-voltage.patch @@ -0,0 +1,17 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +index 98dbff19f5cc..5caba225b4f7 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +@@ -125,9 +125,9 @@ + + ®_dcdc1 { + regulator-always-on; +- regulator-min-microvolt = <3000000>; +- regulator-max-microvolt = <3000000>; +- regulator-name = "vcc-3v"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-name = "vcc-3v3"; + }; + + ®_dcdc2 { diff --git a/patch/kernel/sunxi-next/board-a64-v3-17-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Ethernet.patch b/patch/kernel/sunxi-next/board-a64-v3-17-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Ethernet.patch new file mode 100644 index 000000000..a8513f10f --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-17-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Ethernet.patch @@ -0,0 +1,42 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +index 5caba225b4f7..1eba1324e5b9 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +@@ -51,6 +51,7 @@ + compatible = "friendlyarm,nanopi-a64", "allwinner,sun50i-a64"; + + aliases { ++ ethernet0 = &emac; + serial0 = &uart0; + }; + +@@ -67,6 +68,15 @@ + status = "okay"; + }; + ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_dcdc1>; ++ status = "okay"; ++}; ++ + /* i2c1 connected with gpio headers like pine64, bananapi */ + &i2c1 { + pinctrl-names = "default"; +@@ -78,6 +88,13 @@ + bias-pull-up; + }; + ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <7>; ++ }; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; diff --git a/patch/kernel/sunxi-next/board-a64-v3-18-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Wifi-chip.patch b/patch/kernel/sunxi-next/board-a64-v3-18-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Wifi-chip.patch new file mode 100644 index 000000000..f6cf427be --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-18-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-Wifi-chip.patch @@ -0,0 +1,41 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +index 1eba1324e5b9..5e3dc2666d0f 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +@@ -58,6 +58,11 @@ + chosen { + stdout-path = "serial0:115200n8"; + }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ ++ }; + }; + + &ehci0 { +@@ -105,6 +110,24 @@ + status = "okay"; + }; + ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins>; ++ vmmc-supply = <®_dcdc1>; ++ vqmmc-supply = <®_dldo4>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++ ++ rtl8189etv: wifi@1 { ++ reg = <1>; ++ interrupt-parent = <&r_pio>; ++ interrupts = <0 3 IRQ_TYPE_LEVEL_LOW>; /* PL3 */ ++ interrupt-names = "host-wake"; ++ }; ++}; ++ + &ohci0 { + status = "okay"; + }; diff --git a/patch/kernel/sunxi-next/board-a64-v3-19-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-blue-status-LED.patch b/patch/kernel/sunxi-next/board-a64-v3-19-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-blue-status-LED.patch new file mode 100644 index 000000000..405947f57 --- /dev/null +++ b/patch/kernel/sunxi-next/board-a64-v3-19-19-arm64-dts-allwinner-a64-NanoPi-A64-Add-blue-status-LED.patch @@ -0,0 +1,20 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +index 5e3dc2666d0f..feb8c7e51623 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +@@ -59,6 +59,15 @@ + stdout-path = "serial0:115200n8"; + }; + ++ leds { ++ compatible = "gpio-leds"; ++ ++ blue { ++ label = "nanopi-a64:blue:status"; ++ gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */ ++ }; ++ }; ++ + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ diff --git a/patch/kernel/sunxi-next/board-add-axp803-device-tree.patch b/patch/kernel/sunxi-next/board-add-axp803-device-tree.patch deleted file mode 100644 index b18c4fd38..000000000 --- a/patch/kernel/sunxi-next/board-add-axp803-device-tree.patch +++ /dev/null @@ -1,156 +0,0 @@ -diff --git a/arch/arm/boot/dts/axp803.dtsi b/arch/arm/boot/dts/axp803.dtsi -new file mode 100644 -index 00000000..2285ac06 ---- /dev/null -+++ b/arch/arm/boot/dts/axp803.dtsi -@@ -0,0 +1,150 @@ -+/* -+ * Copyright 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 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. -+ */ -+ -+/* -+ * AXP803 Integrated Power Management Chip -+ * http://files.pine64.org/doc/datasheet/pine64/AXP803_Datasheet_V1.0.pdf -+ */ -+ -+&axp803 { -+ interrupt-controller; -+ #interrupt-cells = <1>; -+ -+ regulators { -+ /* Default work frequency for buck regulators */ -+ x-powers,dcdc-freq = <3000>; -+ -+ reg_dcdc1: dcdc1 { -+ regulator-name = "dcdc1"; -+ }; -+ -+ reg_dcdc2: dcdc2 { -+ regulator-name = "dcdc2"; -+ }; -+ -+ reg_dcdc3: dcdc3 { -+ regulator-name = "dcdc3"; -+ }; -+ -+ reg_dcdc4: dcdc4 { -+ regulator-name = "dcdc4"; -+ }; -+ -+ reg_dcdc5: dcdc5 { -+ regulator-name = "dcdc5"; -+ }; -+ -+ reg_dcdc6: dcdc6 { -+ regulator-name = "dcdc6"; -+ }; -+ -+ reg_dc1sw: dc1sw { -+ regulator-name = "dc1sw"; -+ }; -+ -+ reg_aldo1: aldo1 { -+ regulator-name = "aldo1"; -+ }; -+ -+ reg_aldo2: aldo2 { -+ regulator-name = "aldo2"; -+ }; -+ -+ reg_aldo3: aldo3 { -+ regulator-name = "aldo3"; -+ }; -+ -+ reg_dldo1: dldo1 { -+ regulator-name = "dldo1"; -+ }; -+ -+ reg_dldo2: dldo2 { -+ regulator-name = "dldo2"; -+ }; -+ -+ reg_dldo3: dldo3 { -+ regulator-name = "dldo3"; -+ }; -+ -+ reg_dldo4: dldo4 { -+ regulator-name = "dldo4"; -+ }; -+ -+ reg_eldo1: eldo1 { -+ regulator-name = "eldo1"; -+ }; -+ -+ reg_eldo2: eldo2 { -+ regulator-name = "eldo2"; -+ }; -+ -+ reg_eldo3: eldo3 { -+ regulator-name = "eldo3"; -+ }; -+ -+ reg_fldo1: fldo1 { -+ regulator-name = "fldo1"; -+ }; -+ -+ reg_fldo2: fldo2 { -+ regulator-name = "fldo2"; -+ }; -+ -+ reg_ldo_io0: ldo_io0 { -+ regulator-name = "ldo_io0"; -+ status = "disabled"; -+ }; -+ -+ reg_ldo_io1: ldo_io1 { -+ regulator-name = "ldo_io1"; -+ status = "disabled"; -+ }; -+ -+ reg_rtc_ldo: rtc_ldo { -+ /* RTC_LDO is a fixed, always-on regulator */ -+ regulator-always-on; -+ regulator-min-microvolt = <3000000>; -+ regulator-max-microvolt = <3000000>; -+ regulator-name = "rtc_ldo"; -+ }; -+ }; -+}; diff --git a/patch/kernel/sunxi-next/board-orangepiwin-add-lots-of-stuff.patch b/patch/kernel/sunxi-next/board-orangepiwin-add-lots-of-stuff.patch new file mode 100644 index 000000000..0144cb92a --- /dev/null +++ b/patch/kernel/sunxi-next/board-orangepiwin-add-lots-of-stuff.patch @@ -0,0 +1,267 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts +index bf42690a..69c3eb7c 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts +@@ -1,5 +1,6 @@ + /* + * Copyright (C) 2017 Jagan Teki ++ * Copyright (C) 2017-2018 Samuel Holland + * + * 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 +@@ -51,23 +52,156 @@ + compatible = "xunlong,orangepi-win", "allwinner,sun50i-a64"; + + aliases { ++ ethernet0 = &emac; + serial0 = &uart0; ++ serial1 = &uart1; ++ serial2 = &uart2; ++ serial3 = &uart3; ++ serial4 = &uart4; ++ }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; ++ ++ reg_usb1_vbus: usb1-vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; ++ status = "okay"; ++ }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ ++ post-power-on-delay-ms = <50>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ status { ++ label = "orangepi:green:status"; ++ gpios = <&pio 7 11 GPIO_ACTIVE_HIGH>; /* PH11 */ ++ }; ++ }; ++ ++ reg_gmac_3v3: gmac-3v3 { ++ compatible = "regulator-fixed"; ++ regulator-name = "gmac-3v3"; ++ regulator-min-microvolt = <3300000>; ++ regulator-max-microvolt = <3300000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 3 14 GPIO_ACTIVE_HIGH>; /* PD14 */ ++ status = "okay"; ++ }; ++ ++ reg_usb1_vbus: usb1-vbus { ++ compatible = "regulator-fixed"; ++ regulator-name = "usb1-vbus"; ++ regulator-min-microvolt = <5000000>; ++ regulator-max-microvolt = <5000000>; ++ regulator-boot-on; ++ enable-active-high; ++ gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; /* PD7 */ ++ status = "okay"; ++ }; ++ ++ wifi_pwrseq: wifi_pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ ++ }; ++}; ++ ++&de { ++ status = "okay"; ++}; ++ ++&ehci0 { ++ status = "okay"; + }; + + &ehci1 { + status = "okay"; + }; + ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&emac { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&rgmii_pins>; ++ phy-mode = "rgmii"; ++ phy-handle = <&ext_rgmii_phy>; ++ phy-supply = <®_gmac_3v3>; ++ status = "okay"; ++}; ++ ++&mdio { ++ ext_rgmii_phy: ethernet-phy@1 { ++ compatible = "ethernet-phy-ieee802.3-c22"; ++ reg = <1>; ++ }; ++}; ++ ++&mixer1 { ++ status = "okay"; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; + vmmc-supply = <®_dcdc1>; +- cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; ++ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>; /* PF6 */ ++ disable-wp; ++ bus-width = <4>; ++ status = "okay"; ++}; ++ ++&mmc1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&mmc1_pins>; ++ vmmc-supply = <®_dldo2>; ++ vqmmc-supply = <®_dldo4>; ++ mmc-pwrseq = <&wifi_pwrseq>; ++ bus-width = <4>; ++ non-removable; ++ status = "okay"; ++ ++ brcmf: brcmf@1 { ++ reg = <1>; ++ compatible = "brcm,bcm4329-fmac"; ++ interrupt-parent = <&r_pio>; ++ interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 / EINT7 */ ++ interrupt-names = "host-wake"; ++ }; ++}; ++ ++&ohci0 { + status = "okay"; + }; + +@@ -89,9 +223,8 @@ + #include "axp803.dtsi" + + ®_aldo1 { +- regulator-always-on; +- regulator-min-microvolt = <1800000>; +- regulator-max-microvolt = <3300000>; ++ regulator-min-microvolt = <2800000>; ++ regulator-max-microvolt = <2800000>; + regulator-name = "afvcc-csi"; + }; + +@@ -169,6 +302,12 @@ + regulator-name = "cpvdd"; + }; + ++®_eldo3 { ++ regulator-min-microvolt = <1500000>; ++ regulator-max-microvolt = <1800000>; ++ regulator-name = "dvdd-csi"; ++}; ++ + ®_fldo1 { + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; +@@ -191,13 +330,71 @@ + regulator-name = "vcc-rtc"; + }; + ++&spi0 { ++ status = "okay"; ++ ++ spi-flash@0 { ++ compatible = "mxicy,mx25l1606e", "jedec,spi-nor"; ++ reg = <0>; ++ spi-max-frequency = <80000000>; ++ m25p,fast-read; ++ status = "okay"; ++ }; ++}; ++ ++&simplefb_hdmi { ++ vcc-hdmi-supply = <®_dldo1>; ++}; ++ ++&tcon1 { ++ status = "okay"; ++}; ++ ++/* On debug connector */ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>; + status = "okay"; + }; + +-&usbphy { ++/* Bluetooth */ ++&uart1 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>; ++ status = "okay"; ++ ++ rtl8723bs-bt { ++ }; ++}; ++ ++/* On Pi-2 connector, RTS/CTS optional */ ++&uart2 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart2_pins>; ++ status = "disabled"; ++}; ++ ++/* On Pi-2 connector, RTS/CTS optional */ ++&uart3 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart3_pins>; ++ status = "disabled"; ++}; ++ ++/* On Pi-2 connector (labeled for SPI1), RTS/CTS optional */ ++&uart4 { ++ pinctrl-names = "default"; ++ pinctrl-0 = <&uart4_pins>; ++ status = "disabled"; ++}; ++ ++&usb_otg { ++ dr_mode = "otg"; + status = "okay"; + }; + ++&usbphy { ++ usb0_id_det-gpios = <&pio 7 9 GPIO_ACTIVE_HIGH>; /* PH9 */ ++ usb1_vbus-supply = <®_usb1_vbus>; ++ status = "okay"; ++}; diff --git a/patch/kernel/sunxi-next/board-orangepiwin-fix-many-dts.patch b/patch/kernel/sunxi-next/board-orangepiwin-fix-many-dts.patch deleted file mode 100644 index 3eb0830cf..000000000 --- a/patch/kernel/sunxi-next/board-orangepiwin-fix-many-dts.patch +++ /dev/null @@ -1,71 +0,0 @@ -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -index bf42690..7be04d5 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -+++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-orangepi-win.dts -@@ -57,6 +57,28 @@ - chosen { - stdout-path = "serial0:115200n8"; - }; -+ -+ reg_usb1_vbus: usb1-vbus { -+ compatible = "regulator-fixed"; -+ regulator-name = "usb1-vbus"; -+ regulator-min-microvolt = <5000000>; -+ regulator-max-microvolt = <5000000>; -+ regulator-boot-on; -+ enable-active-high; -+ gpio = <&pio 3 7 GPIO_ACTIVE_HIGH>; -+ status = "okay"; -+ }; -+ -+ wifi_pwrseq: wifi_pwrseq { -+ compatible = "mmc-pwrseq-simple"; -+ reset-gpios = <&r_pio 0 8 GPIO_ACTIVE_LOW>; /* PL8 */ -+ post-power-on-delay-ms = <50>; -+ }; -+ -+}; -+ -+&ehci0 { -+ status = "okay"; - }; - - &ehci1 { -@@ -71,6 +93,29 @@ - status = "okay"; - }; - -+&mmc1 { -+ pinctrl-names = "default"; -+ pinctrl-0 = <&mmc1_pins>; -+ vmmc-supply = <®_dldo2>; -+ vqmmc-supply = <®_dldo4>; -+ mmc-pwrseq = <&wifi_pwrseq>; -+ bus-width = <4>; -+ non-removable; -+ status = "okay"; -+ -+ brcmf: brcmf@1 { -+ reg = <1>; -+ compatible = "brcm,bcm4329-fmac"; -+ interrupt-parent = <&r_pio>; -+ interrupts = <0 7 IRQ_TYPE_LEVEL_LOW>; /* PL7 / EINT7 */ -+ interrupt-names = "host-wake"; -+ }; -+}; -+ -+&ohci0 { -+ status = "okay"; -+}; -+ - &ohci1 { - status = "okay"; - }; -@@ -198,6 +243,7 @@ - }; - - &usbphy { -+ usb1_vbus-supply = <®_usb1_vbus>; - status = "okay"; - }; - diff --git a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0016-mfd-axp20x-add-support-for-power-key-on-AXP806.patch.disabled b/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0016-mfd-axp20x-add-support-for-power-key-on-AXP806.patch.disabled deleted file mode 100644 index 6eec60edc..000000000 --- a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0016-mfd-axp20x-add-support-for-power-key-on-AXP806.patch.disabled +++ /dev/null @@ -1,57 +0,0 @@ -From a3af8b65000a0c9bb18e6bb0605a8533978c0425 Mon Sep 17 00:00:00 2001 -From: Icenowy Zheng -Date: Sat, 23 Dec 2017 10:42:00 +0800 -Subject: [PATCH 16/35] mfd: axp20x: add support for power key on AXP806 - -When AXP806 is working in "Self-work mode" (which means no other PMIC is -present), a power key can be connected to the EN/PWRON pin. In master or -slave mode the pin will work as EN and there's no power key, so nothing -will be triggered. - -Add support for the power key on AXP806. - -Signed-off-by: Icenowy Zheng ---- - drivers/mfd/axp20x.c | 19 +++++++++++++++++++ - 1 file changed, 19 insertions(+) - -diff --git a/drivers/mfd/axp20x.c b/drivers/mfd/axp20x.c -index e94c72c..8980460 100644 ---- a/drivers/mfd/axp20x.c -+++ b/drivers/mfd/axp20x.c -@@ -282,6 +282,20 @@ static struct resource axp803_pek_resources[] = { - }, - }; - -+static struct resource axp806_pek_resources[] = { -+ { -+ .name = "PEK_DBR", -+ .start = AXP806_IRQ_PWROK_RISE, -+ .end = AXP806_IRQ_PWROK_RISE, -+ .flags = IORESOURCE_IRQ, -+ }, { -+ .name = "PEK_DBF", -+ .start = AXP806_IRQ_PWROK_FALL, -+ .end = AXP806_IRQ_PWROK_FALL, -+ .flags = IORESOURCE_IRQ, -+ }, -+}; -+ - static struct resource axp809_pek_resources[] = { - { - .name = "PEK_DBR", -@@ -857,6 +871,11 @@ static struct mfd_cell axp803_cells[] = { - static struct mfd_cell axp806_cells[] = { - { - .id = 2, -+ .name = "axp221-pek", -+ .num_resources = ARRAY_SIZE(axp806_pek_resources), -+ .resources = axp806_pek_resources, -+ }, { -+ .id = 2, - .name = "axp20x-regulator", - }, - }; --- -2.7.4 - diff --git a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0017-mfd-axp20x-add-support-for-AXP805-PMIC.patch.disabled b/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0017-mfd-axp20x-add-support-for-AXP805-PMIC.patch.disabled deleted file mode 100644 index edd6cf035..000000000 --- a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0017-mfd-axp20x-add-support-for-AXP805-PMIC.patch.disabled +++ /dev/null @@ -1,79 +0,0 @@ -From eae2983e7932d2ea802feed87c0ccf6be27d85d7 Mon Sep 17 00:00:00 2001 -From: Icenowy Zheng -Date: Sat, 23 Dec 2017 10:44:55 +0800 -Subject: [PATCH 17/35] mfd: axp20x: add support for AXP805 PMIC - -AXP805 is a PMIC from X-Powers, which is used in the Allwinner H6 -reference design. It's just a AXP806 with different customization data, -but it's customized to work defaultly under I2C rather than RSB. - -Add support for it by just re-using AXP806_ID to add a I2C-based AXP -PMIC. - -Signed-off-by: Icenowy Zheng ---- - Documentation/devicetree/bindings/mfd/axp20x.txt | 6 ++++-- - drivers/mfd/axp20x-i2c.c | 2 ++ - 2 files changed, 6 insertions(+), 2 deletions(-) - -diff --git a/Documentation/devicetree/bindings/mfd/axp20x.txt b/Documentation/devicetree/bindings/mfd/axp20x.txt -index 9455503..10ce35f 100644 ---- a/Documentation/devicetree/bindings/mfd/axp20x.txt -+++ b/Documentation/devicetree/bindings/mfd/axp20x.txt -@@ -7,6 +7,7 @@ axp209 (X-Powers) - axp221 (X-Powers) - axp223 (X-Powers) - axp803 (X-Powers) -+axp805 (X-Powers) - axp806 (X-Powers) - axp809 (X-Powers) - axp813 (X-Powers) -@@ -24,6 +25,7 @@ Required properties: - * "x-powers,axp221" - * "x-powers,axp223" - * "x-powers,axp803" -+ * "x-powers,axp805" - * "x-powers,axp806" - * "x-powers,axp809" - * "x-powers,axp813" -@@ -45,7 +47,7 @@ Optional properties: - board is driving OTG VBus or not. - (axp221 / axp223 / axp813 only) - --- x-powers,master-mode: Boolean (axp806 only). Set this when the PMIC is -+- x-powers,master-mode: Boolean (axp805/806 only). Set this when the PMIC is - wired for master mode. The default is slave mode. - - - -supply: a phandle to the regulator supply node. May be omitted if -@@ -133,7 +135,7 @@ LDO_IO0 : LDO : ips-supply : GPIO 0 - LDO_IO1 : LDO : ips-supply : GPIO 1 - RTC_LDO : LDO : ips-supply : always on - --AXP806 regulators, type, and corresponding input supply names: -+AXP805/806 regulators, type, and corresponding input supply names: - - Regulator Type Supply Name Notes - --------- ---- ----------- ----- -diff --git a/drivers/mfd/axp20x-i2c.c b/drivers/mfd/axp20x-i2c.c -index d35a5fe..27ba2c3 100644 ---- a/drivers/mfd/axp20x-i2c.c -+++ b/drivers/mfd/axp20x-i2c.c -@@ -65,6 +65,7 @@ static const struct of_device_id axp20x_i2c_of_match[] = { - { .compatible = "x-powers,axp202", .data = (void *)AXP202_ID }, - { .compatible = "x-powers,axp209", .data = (void *)AXP209_ID }, - { .compatible = "x-powers,axp221", .data = (void *)AXP221_ID }, -+ { .compatible = "x-powers,axp805", .data = (void *)AXP806_ID }, - { }, - }; - MODULE_DEVICE_TABLE(of, axp20x_i2c_of_match); -@@ -74,6 +75,7 @@ static const struct i2c_device_id axp20x_i2c_id[] = { - { "axp202", 0 }, - { "axp209", 0 }, - { "axp221", 0 }, -+ { "axp805", 0 }, - { }, - }; - MODULE_DEVICE_TABLE(i2c, axp20x_i2c_id); --- -2.7.4 - diff --git a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0031-arm64-allwinner-h6-add-one-more-operating-point-for-.patch.disabled b/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0031-arm64-allwinner-h6-add-one-more-operating-point-for-.patch.disabled deleted file mode 100644 index 6dd498bba..000000000 --- a/patch/kernel/sunxi-next/board-pine-h6-pine-h6-0031-arm64-allwinner-h6-add-one-more-operating-point-for-.patch.disabled +++ /dev/null @@ -1,36 +0,0 @@ -From f5a81e6b36e23f9ba2d7138b984683bcac63df85 Mon Sep 17 00:00:00 2001 -From: Icenowy Zheng -Date: Fri, 5 Jan 2018 19:41:21 +0800 -Subject: [PATCH 31/35] arm64: allwinner: h6: add one more operating point for - CPU - -As the CPU regulator is now present on all H6 board, add one more -operating point for it. - -To prevent overheat the remaining operating points are not added yet. - -Signed-off-by: Icenowy Zheng ---- - arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 6 ++++++ - 1 file changed, 6 insertions(+) - -diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -index 4183819..f548eb4 100644 ---- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi -@@ -24,6 +24,12 @@ - opp-microvolt = <880000>; - clock-latency-ns = <244144>; /* 8 32k periods */ - }; -+ -+ opp-1008000000 { -+ opp-hz = /bits/ 64 <1008000000>; -+ opp-microvolt = <940000>; -+ clock-latency-ns = <244144>; /* 8 32k periods */ -+ }; - }; - - cpus { --- -2.7.4 - diff --git a/patch/kernel/sunxi-next/wifi-V4-1-3-brcmfmac-detect-firmware-support-for-monitor-interface.patch b/patch/kernel/sunxi-next/wifi-V4-1-3-brcmfmac-detect-firmware-support-for-monitor-interface.patch deleted file mode 100644 index 29a5d546a..000000000 --- a/patch/kernel/sunxi-next/wifi-V4-1-3-brcmfmac-detect-firmware-support-for-monitor-interface.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -index 800a423c7bc2..a78b9bae44e0 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -@@ -48,6 +48,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = { - { BRCMF_FEAT_MBSS, "mbss" }, - { BRCMF_FEAT_MCHAN, "mchan" }, - { BRCMF_FEAT_P2P, "p2p" }, -+ { BRCMF_FEAT_MONITOR, "monitor" }, - }; - - #ifdef DEBUG -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -index d1193825e559..3415d5d4d6b5 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -@@ -33,6 +33,7 @@ - * MFP: 802.11w Management Frame Protection. - * GSCAN: enhanced scan offload feature. - * FWSUP: Firmware supplicant. -+ * MONITOR: firmware can pass monitor packets to host. - */ - #define BRCMF_FEAT_LIST \ - BRCMF_FEAT_DEF(MBSS) \ -@@ -48,7 +49,8 @@ - BRCMF_FEAT_DEF(WOWL_ARP_ND) \ - BRCMF_FEAT_DEF(MFP) \ - BRCMF_FEAT_DEF(GSCAN) \ -- BRCMF_FEAT_DEF(FWSUP) -+ BRCMF_FEAT_DEF(FWSUP) \ -+ BRCMF_FEAT_DEF(MONITOR) - - /* - * Quirks: diff --git a/patch/kernel/sunxi-next/wifi-V4-2-3-brcmfmac-detect-firmware-support-for-radiotap-monitor-frames.patch b/patch/kernel/sunxi-next/wifi-V4-2-3-brcmfmac-detect-firmware-support-for-radiotap-monitor-frames.patch deleted file mode 100644 index 4e9804d09..000000000 --- a/patch/kernel/sunxi-next/wifi-V4-2-3-brcmfmac-detect-firmware-support-for-radiotap-monitor-frames.patch +++ /dev/null @@ -1,34 +0,0 @@ -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -index a78b9bae44e0..4db4d444407a 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c -@@ -49,6 +49,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = { - { BRCMF_FEAT_MCHAN, "mchan" }, - { BRCMF_FEAT_P2P, "p2p" }, - { BRCMF_FEAT_MONITOR, "monitor" }, -+ { BRCMF_FEAT_MONITOR_FMT_RADIOTAP, "rtap" }, - }; - - #ifdef DEBUG -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -index 3415d5d4d6b5..0b4974df353a 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h -@@ -34,6 +34,7 @@ - * GSCAN: enhanced scan offload feature. - * FWSUP: Firmware supplicant. - * MONITOR: firmware can pass monitor packets to host. -+ * MONITOR_FMT_RADIOTAP: firmware provides monitor packets with radiotap header - */ - #define BRCMF_FEAT_LIST \ - BRCMF_FEAT_DEF(MBSS) \ -@@ -50,7 +51,8 @@ - BRCMF_FEAT_DEF(MFP) \ - BRCMF_FEAT_DEF(GSCAN) \ - BRCMF_FEAT_DEF(FWSUP) \ -- BRCMF_FEAT_DEF(MONITOR) -+ BRCMF_FEAT_DEF(MONITOR) \ -+ BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) - - /* - * Quirks: diff --git a/patch/kernel/sunxi-next/wifi-V4-3-3-brcmfmac-handle-msgbuf-packets-marked-with-monitor-mode-flag.patch b/patch/kernel/sunxi-next/wifi-brcmfmac-v4.patch similarity index 61% rename from patch/kernel/sunxi-next/wifi-V4-3-3-brcmfmac-handle-msgbuf-packets-marked-with-monitor-mode-flag.patch rename to patch/kernel/sunxi-next/wifi-brcmfmac-v4.patch index 362f49f63..df07d6ce2 100644 --- a/patch/kernel/sunxi-next/wifi-V4-3-3-brcmfmac-handle-msgbuf-packets-marked-with-monitor-mode-flag.patch +++ b/patch/kernel/sunxi-next/wifi-brcmfmac-v4.patch @@ -1,3 +1,71 @@ +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +index 800a423c7bc2..a78b9bae44e0 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +@@ -48,6 +48,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = { + { BRCMF_FEAT_MBSS, "mbss" }, + { BRCMF_FEAT_MCHAN, "mchan" }, + { BRCMF_FEAT_P2P, "p2p" }, ++ { BRCMF_FEAT_MONITOR, "monitor" }, + }; + + #ifdef DEBUG +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +index d1193825e559..3415d5d4d6b5 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +@@ -33,6 +33,7 @@ + * MFP: 802.11w Management Frame Protection. + * GSCAN: enhanced scan offload feature. + * FWSUP: Firmware supplicant. ++ * MONITOR: firmware can pass monitor packets to host. + */ + #define BRCMF_FEAT_LIST \ + BRCMF_FEAT_DEF(MBSS) \ +@@ -48,7 +49,8 @@ + BRCMF_FEAT_DEF(WOWL_ARP_ND) \ + BRCMF_FEAT_DEF(MFP) \ + BRCMF_FEAT_DEF(GSCAN) \ +- BRCMF_FEAT_DEF(FWSUP) ++ BRCMF_FEAT_DEF(FWSUP) \ ++ BRCMF_FEAT_DEF(MONITOR) + + /* + * Quirks: +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +index a78b9bae44e0..4db4d444407a 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.c +@@ -49,6 +49,7 @@ static const struct brcmf_feat_fwcap brcmf_fwcap_map[] = { + { BRCMF_FEAT_MCHAN, "mchan" }, + { BRCMF_FEAT_P2P, "p2p" }, + { BRCMF_FEAT_MONITOR, "monitor" }, ++ { BRCMF_FEAT_MONITOR_FMT_RADIOTAP, "rtap" }, + }; + + #ifdef DEBUG +diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +index 3415d5d4d6b5..0b4974df353a 100644 +--- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h ++++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/feature.h +@@ -34,6 +34,7 @@ + * GSCAN: enhanced scan offload feature. + * FWSUP: Firmware supplicant. + * MONITOR: firmware can pass monitor packets to host. ++ * MONITOR_FMT_RADIOTAP: firmware provides monitor packets with radiotap header + */ + #define BRCMF_FEAT_LIST \ + BRCMF_FEAT_DEF(MBSS) \ +@@ -50,7 +51,8 @@ + BRCMF_FEAT_DEF(MFP) \ + BRCMF_FEAT_DEF(GSCAN) \ + BRCMF_FEAT_DEF(FWSUP) \ +- BRCMF_FEAT_DEF(MONITOR) ++ BRCMF_FEAT_DEF(MONITOR) \ ++ BRCMF_FEAT_DEF(MONITOR_FMT_RADIOTAP) + + /* + * Quirks: diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c index 72954fd6df3b..b1f702faff4f 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/core.c diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-01-10-clk-sunxi-ng-a64-Add-minimal-rate-for-video-PLLs.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-01-10-clk-sunxi-ng-a64-Add-minimal-rate-for-video-PLLs.patch new file mode 100644 index 000000000..9d37c622b --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-01-10-clk-sunxi-ng-a64-Add-minimal-rate-for-video-PLLs.patch @@ -0,0 +1,64 @@ +diff --git a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +index ee9c12cf3f08..d0e30192f0cf 100644 +--- a/drivers/clk/sunxi-ng/ccu-sun50i-a64.c ++++ b/drivers/clk/sunxi-ng/ccu-sun50i-a64.c +@@ -64,17 +64,18 @@ static SUNXI_CCU_NM_WITH_GATE_LOCK(pll_audio_base_clk, "pll-audio-base", + BIT(28), /* lock */ + CLK_SET_RATE_UNGATE); + +-static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_video0_clk, "pll-video0", +- "osc24M", 0x010, +- 8, 7, /* N */ +- 0, 4, /* M */ +- BIT(24), /* frac enable */ +- BIT(25), /* frac select */ +- 270000000, /* frac rate 0 */ +- 297000000, /* frac rate 1 */ +- BIT(31), /* gate */ +- BIT(28), /* lock */ +- CLK_SET_RATE_UNGATE); ++static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(pll_video0_clk, "pll-video0", ++ "osc24M", 0x010, ++ 192000000, /* Minimum rate */ ++ 8, 7, /* N */ ++ 0, 4, /* M */ ++ BIT(24), /* frac enable */ ++ BIT(25), /* frac select */ ++ 270000000, /* frac rate 0 */ ++ 297000000, /* frac rate 1 */ ++ BIT(31), /* gate */ ++ BIT(28), /* lock */ ++ CLK_SET_RATE_UNGATE); + + static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_ve_clk, "pll-ve", + "osc24M", 0x018, +@@ -125,17 +126,18 @@ static struct ccu_nk pll_periph1_clk = { + }, + }; + +-static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_video1_clk, "pll-video1", +- "osc24M", 0x030, +- 8, 7, /* N */ +- 0, 4, /* M */ +- BIT(24), /* frac enable */ +- BIT(25), /* frac select */ +- 270000000, /* frac rate 0 */ +- 297000000, /* frac rate 1 */ +- BIT(31), /* gate */ +- BIT(28), /* lock */ +- CLK_SET_RATE_UNGATE); ++static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK_MIN(pll_video1_clk, "pll-video1", ++ "osc24M", 0x030, ++ 192000000, /* Minimum rate */ ++ 8, 7, /* N */ ++ 0, 4, /* M */ ++ BIT(24), /* frac enable */ ++ BIT(25), /* frac select */ ++ 270000000, /* frac rate 0 */ ++ 297000000, /* frac rate 1 */ ++ BIT(31), /* gate */ ++ BIT(28), /* lock */ ++ CLK_SET_RATE_UNGATE); + + static SUNXI_CCU_NM_WITH_FRAC_GATE_LOCK(pll_gpu_clk, "pll-gpu", + "osc24M", 0x038, diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-02-10-dt-bindings-display-Add-compatible-for-A64-DE2-display-pipeline.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-02-10-dt-bindings-display-Add-compatible-for-A64-DE2-display-pipeline.patch new file mode 100644 index 000000000..c2d10dd26 --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-02-10-dt-bindings-display-Add-compatible-for-A64-DE2-display-pipeline.patch @@ -0,0 +1,30 @@ +diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +index f8773ecb7525..7b79c5e3dffc 100644 +--- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt ++++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +@@ -151,6 +151,8 @@ Required properties: + * allwinner,sun8i-v3s-tcon + * allwinner,sun9i-a80-tcon-lcd + * allwinner,sun9i-a80-tcon-tv ++ * "allwinner,sun50i-a64-tcon-lcd", "allwinner,sun8i-a83t-tcon-lcd" ++ * "allwinner,sun50i-a64-tcon-tv", "allwinner,sun8i-a83t-tcon-tv" + - reg: base address and size of memory-mapped region + - interrupts: interrupt associated to this IP + - clocks: phandles to the clocks feeding the TCON. +@@ -370,6 +372,8 @@ Required properties: + * allwinner,sun8i-a83t-de2-mixer-1 + * allwinner,sun8i-h3-de2-mixer-0 + * allwinner,sun8i-v3s-de2-mixer ++ * allwinner,sun50i-a64-de2-mixer-0 ++ * allwinner,sun50i-a64-de2-mixer-1 + - reg: base address and size of the memory-mapped region. + - clocks: phandles to the clocks feeding the mixer + * bus: the mixer interface clock +@@ -403,6 +407,7 @@ Required properties: + * allwinner,sun8i-r40-display-engine + * allwinner,sun8i-v3s-display-engine + * allwinner,sun9i-a80-display-engine ++ * allwinner,sun50i-a64-display-engine + + - allwinner,pipelines: list of phandle to the display engine + frontends (DE 1.0) or mixers (DE 2.0) available. diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-03-10-drm-sun4i-Add-support-for-A64-mixers.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-03-10-drm-sun4i-Add-support-for-A64-mixers.patch new file mode 100644 index 000000000..2ebe5f159 --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-03-10-drm-sun4i-Add-support-for-A64-mixers.patch @@ -0,0 +1,42 @@ +diff --git a/drivers/gpu/drm/sun4i/sun8i_mixer.c b/drivers/gpu/drm/sun4i/sun8i_mixer.c +index fc3713608f78..8b3d02b146b7 100644 +--- a/drivers/gpu/drm/sun4i/sun8i_mixer.c ++++ b/drivers/gpu/drm/sun4i/sun8i_mixer.c +@@ -569,6 +569,22 @@ static const struct sun8i_mixer_cfg sun8i_v3s_mixer_cfg = { + .mod_rate = 150000000, + }; + ++static const struct sun8i_mixer_cfg sun50i_a64_mixer0_cfg = { ++ .ccsc = 0, ++ .mod_rate = 297000000, ++ .scaler_mask = 0xf, ++ .ui_num = 3, ++ .vi_num = 1, ++}; ++ ++static const struct sun8i_mixer_cfg sun50i_a64_mixer1_cfg = { ++ .ccsc = 1, ++ .mod_rate = 297000000, ++ .scaler_mask = 0x3, ++ .ui_num = 1, ++ .vi_num = 1, ++}; ++ + static const struct of_device_id sun8i_mixer_of_table[] = { + { + .compatible = "allwinner,sun8i-a83t-de2-mixer-0", +@@ -594,6 +610,14 @@ static const struct of_device_id sun8i_mixer_of_table[] = { + .compatible = "allwinner,sun8i-v3s-de2-mixer", + .data = &sun8i_v3s_mixer_cfg, + }, ++ { ++ .compatible = "allwinner,sun50i-a64-de2-mixer-0", ++ .data = &sun50i_a64_mixer0_cfg, ++ }, ++ { ++ .compatible = "allwinner,sun50i-a64-de2-mixer-1", ++ .data = &sun50i_a64_mixer1_cfg, ++ }, + { } + }; + MODULE_DEVICE_TABLE(of, sun8i_mixer_of_table); diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-04-10-drm-sun4i-Add-support-for-A64-display-engine.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-04-10-drm-sun4i-Add-support-for-A64-display-engine.patch new file mode 100644 index 000000000..19371fcd6 --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-04-10-drm-sun4i-Add-support-for-A64-display-engine.patch @@ -0,0 +1,12 @@ +diff --git a/drivers/gpu/drm/sun4i/sun4i_drv.c b/drivers/gpu/drm/sun4i/sun4i_drv.c +index dd19d674055c..e3c1c436b9d5 100644 +--- a/drivers/gpu/drm/sun4i/sun4i_drv.c ++++ b/drivers/gpu/drm/sun4i/sun4i_drv.c +@@ -421,6 +421,7 @@ static const struct of_device_id sun4i_drv_of_table[] = { + { .compatible = "allwinner,sun8i-r40-display-engine" }, + { .compatible = "allwinner,sun8i-v3s-display-engine" }, + { .compatible = "allwinner,sun9i-a80-display-engine" }, ++ { .compatible = "allwinner,sun50i-a64-display-engine" }, + { } + }; + MODULE_DEVICE_TABLE(of, sun4i_drv_of_table); diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-05-10-dt-bindings-display-Add-compatible-for-A64-HDMI.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-05-10-dt-bindings-display-Add-compatible-for-A64-HDMI.patch new file mode 100644 index 000000000..a4c1cf90c --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-05-10-dt-bindings-display-Add-compatible-for-A64-HDMI.patch @@ -0,0 +1,12 @@ +diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +index 7b79c5e3dffc..fdb8fb29033f 100644 +--- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt ++++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +@@ -78,6 +78,7 @@ Required properties: + + - compatible: value must be one of: + * "allwinner,sun8i-a83t-dw-hdmi" ++ * "allwinner,sun50i-a64-dw-hdmi", "allwinner,sun8i-a83t-dw-hdmi" + - reg: base address and size of memory-mapped region + - reg-io-width: See dw_hdmi.txt. Shall be 1. + - interrupts: HDMI interrupt number diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-06-10-dt-bindings-clock-sun50i-a64-ccu-Add-PLL_VIDEO-0-1-macros.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-06-10-dt-bindings-clock-sun50i-a64-ccu-Add-PLL_VIDEO-0-1-macros.patch new file mode 100644 index 000000000..ba4c8d64f --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-06-10-dt-bindings-clock-sun50i-a64-ccu-Add-PLL_VIDEO-0-1-macros.patch @@ -0,0 +1,14 @@ +diff --git a/include/dt-bindings/clock/sun50i-a64-ccu.h b/include/dt-bindings/clock/sun50i-a64-ccu.h +index d66432c6e675..d1d7d5b7d06a 100644 +--- a/include/dt-bindings/clock/sun50i-a64-ccu.h ++++ b/include/dt-bindings/clock/sun50i-a64-ccu.h +@@ -43,7 +43,9 @@ + #ifndef _DT_BINDINGS_CLK_SUN50I_A64_H_ + #define _DT_BINDINGS_CLK_SUN50I_A64_H_ + ++#define CLK_PLL_VIDEO0 7 + #define CLK_PLL_PERIPH0 11 ++#define CLK_PLL_VIDEO1 15 + + #define CLK_BUS_MIPI_DSI 28 + #define CLK_BUS_CE 29 diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-07-10-arm64-dts-allwinner-a64-Add-display-pipeline.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-07-10-arm64-dts-allwinner-a64-Add-display-pipeline.patch new file mode 100644 index 000000000..c908b485b --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-07-10-arm64-dts-allwinner-a64-Add-display-pipeline.patch @@ -0,0 +1,201 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +index d3daf90a8715..fe9cc673fe07 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi +@@ -112,6 +112,12 @@ + }; + }; + ++ de: display-engine { ++ compatible = "allwinner,sun50i-a64-display-engine"; ++ allwinner,pipelines = <&mixer1>; ++ status = "disabled"; ++ }; ++ + osc24M: osc24M_clk { + #clock-cells = <0>; + compatible = "fixed-clock"; +@@ -194,6 +200,55 @@ + #clock-cells = <1>; + #reset-cells = <1>; + }; ++ ++ mixer0: mixer@100000 { ++ compatible = "allwinner,sun50i-a64-de2-mixer-0"; ++ reg = <0x100000 0x100000>; ++ clocks = <&display_clocks CLK_BUS_MIXER0>, ++ <&display_clocks CLK_MIXER0>; ++ clock-names = "bus", ++ "mod"; ++ resets = <&display_clocks RST_MIXER0>; ++ status = "disabled"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ mixer0_out: port@1 { ++ reg = <1>; ++ ++ mixer0_out_tcon0: endpoint { ++ remote-endpoint = <&tcon0_in_mixer0>; ++ }; ++ }; ++ }; ++ }; ++ ++ mixer1: mixer@200000 { ++ compatible = "allwinner,sun50i-a64-de2-mixer-1"; ++ reg = <0x200000 0x100000>; ++ clocks = <&display_clocks CLK_BUS_MIXER1>, ++ <&display_clocks CLK_MIXER1>; ++ clock-names = "bus", ++ "mod"; ++ /* The reset line is shared */ ++ resets = <&display_clocks RST_WB>; ++ status = "disabled"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ mixer1_out: port@1 { ++ reg = <1>; ++ ++ mixer1_out_tcon1: endpoint { ++ remote-endpoint = <&tcon1_in_mixer1>; ++ }; ++ }; ++ }; ++ }; + }; + + syscon: syscon@1c00000 { +@@ -228,6 +283,76 @@ + #dma-cells = <1>; + }; + ++ tcon0: lcd-controller@1c0c000 { ++ compatible = "allwinner,sun50i-a64-tcon-lcd", ++ "allwinner,sun8i-a83t-tcon-lcd"; ++ reg = <0x01c0c000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_TCON0>, <&ccu CLK_TCON0>; ++ clock-names = "ahb", "tcon-ch0"; ++ clock-output-names = "tcon-pixel-clock"; ++ resets = <&ccu RST_BUS_TCON0>, <&ccu RST_BUS_LVDS>; ++ reset-names = "lcd", "lvds"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ tcon0_in: port@0 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <0>; ++ ++ tcon0_in_mixer0: endpoint@0 { ++ reg = <0>; ++ remote-endpoint = <&mixer0_out_tcon0>; ++ }; ++ }; ++ ++ tcon0_out: port@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <1>; ++ }; ++ }; ++ }; ++ ++ tcon1: lcd-controller@1c0d000 { ++ compatible = "allwinner,sun50i-a64-tcon-tv", ++ "allwinner,sun8i-a83t-tcon-tv"; ++ reg = <0x01c0d000 0x1000>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_TCON1>, <&ccu CLK_TCON1>; ++ clock-names = "ahb", "tcon-ch1"; ++ resets = <&ccu RST_BUS_TCON1>; ++ reset-names = "lcd"; ++ status = "disabled"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ tcon1_in: port@0 { ++ reg = <0>; ++ ++ tcon1_in_mixer1: endpoint { ++ remote-endpoint = <&mixer1_out_tcon1>; ++ }; ++ }; ++ ++ tcon1_out: port@1 { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ reg = <1>; ++ ++ tcon1_out_hdmi: endpoint@1 { ++ reg = <1>; ++ remote-endpoint = <&hdmi_in_tcon1>; ++ }; ++ }; ++ }; ++ }; ++ + mmc0: mmc@1c0f000 { + compatible = "allwinner,sun50i-a64-mmc"; + reg = <0x01c0f000 0x1000>; +@@ -686,6 +811,50 @@ + status = "disabled"; + }; + ++ hdmi: hdmi@1ee0000 { ++ compatible = "allwinner,sun50i-a64-dw-hdmi", ++ "allwinner,sun8i-a83t-dw-hdmi"; ++ reg = <0x01ee0000 0x10000>; ++ reg-io-width = <1>; ++ interrupts = ; ++ clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, ++ <&ccu CLK_HDMI>; ++ clock-names = "iahb", "isfr", "tmds"; ++ resets = <&ccu RST_BUS_HDMI1>; ++ reset-names = "ctrl"; ++ phys = <&hdmi_phy>; ++ phy-names = "hdmi-phy"; ++ status = "disabled"; ++ ++ ports { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ hdmi_in: port@0 { ++ reg = <0>; ++ ++ hdmi_in_tcon1: endpoint { ++ remote-endpoint = <&tcon1_out_hdmi>; ++ }; ++ }; ++ ++ hdmi_out: port@1 { ++ reg = <1>; ++ }; ++ }; ++ }; ++ ++ hdmi_phy: hdmi-phy@1ef0000 { ++ compatible = "allwinner,sun50i-a64-hdmi-phy"; ++ reg = <0x01ef0000 0x10000>; ++ clocks = <&ccu CLK_BUS_HDMI>, <&ccu CLK_HDMI_DDC>, ++ <&ccu CLK_PLL_VIDEO0>, <&ccu CLK_PLL_VIDEO1>; ++ clock-names = "bus", "mod", "pll-0", "pll-1"; ++ resets = <&ccu RST_BUS_HDMI0>; ++ reset-names = "phy"; ++ #phy-cells = <0>; ++ }; ++ + rtc: rtc@1f00000 { + compatible = "allwinner,sun6i-a31-rtc"; + reg = <0x01f00000 0x54>; diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-08-10-dt-bindings-sun4i-drm-add-HDMI-VCC-supply-property-for-sun8i-dw-hdmi.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-08-10-dt-bindings-sun4i-drm-add-HDMI-VCC-supply-property-for-sun8i-dw-hdmi.patch new file mode 100644 index 000000000..e0888a55b --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-08-10-dt-bindings-sun4i-drm-add-HDMI-VCC-supply-property-for-sun8i-dw-hdmi.patch @@ -0,0 +1,14 @@ +diff --git a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +index fdb8fb29033f..cb4769913e89 100644 +--- a/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt ++++ b/Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt +@@ -97,6 +97,9 @@ Required properties: + first port should be the input endpoint. The second should be the + output, usually to an HDMI connector. + ++Optional properties: ++ - hdmi-supply: the VCC power supply of the controller ++ + DWC HDMI PHY + ------------ + diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-09-10-drm-sun4i-Add-support-for-HDMI-voltage-regulator.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-09-10-drm-sun4i-Add-support-for-HDMI-voltage-regulator.patch new file mode 100644 index 000000000..c55a676e6 --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-09-10-drm-sun4i-Add-support-for-HDMI-voltage-regulator.patch @@ -0,0 +1,65 @@ +diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +index 31875b636434..bf7bf4f2fb29 100644 +--- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c ++++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.c +@@ -125,10 +125,22 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master, + return PTR_ERR(hdmi->clk_tmds); + } + ++ hdmi->regulator = devm_regulator_get(dev, "hdmi"); ++ if (IS_ERR(hdmi->regulator)) { ++ dev_err(dev, "Couldn't get regulator\n"); ++ return PTR_ERR(hdmi->regulator); ++ } ++ ++ ret = regulator_enable(hdmi->regulator); ++ if (ret) { ++ dev_err(dev, "Failed to enable regulator\n"); ++ return ret; ++ } ++ + ret = reset_control_deassert(hdmi->rst_ctrl); + if (ret) { + dev_err(dev, "Could not deassert ctrl reset control\n"); +- return ret; ++ goto err_disable_regulator; + } + + ret = clk_prepare_enable(hdmi->clk_tmds); +@@ -183,6 +195,8 @@ static int sun8i_dw_hdmi_bind(struct device *dev, struct device *master, + clk_disable_unprepare(hdmi->clk_tmds); + err_assert_ctrl_reset: + reset_control_assert(hdmi->rst_ctrl); ++err_disable_regulator: ++ regulator_disable(hdmi->regulator); + + return ret; + } +@@ -196,6 +210,7 @@ static void sun8i_dw_hdmi_unbind(struct device *dev, struct device *master, + sun8i_hdmi_phy_remove(hdmi); + clk_disable_unprepare(hdmi->clk_tmds); + reset_control_assert(hdmi->rst_ctrl); ++ regulator_disable(hdmi->regulator); + } + + static const struct component_ops sun8i_dw_hdmi_ops = { +diff --git a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h +index aadbe0a10b0c..7fdc1ecd2892 100644 +--- a/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h ++++ b/drivers/gpu/drm/sun4i/sun8i_dw_hdmi.h +@@ -10,6 +10,7 @@ + #include + #include + #include ++#include + #include + + #define SUN8I_HDMI_PHY_DBG_CTRL_REG 0x0000 +@@ -176,6 +177,7 @@ struct sun8i_dw_hdmi { + struct drm_encoder encoder; + struct sun8i_hdmi_phy *phy; + struct dw_hdmi_plat_data plat_data; ++ struct regulator *regulator; + struct reset_control *rst_ctrl; + }; + diff --git a/patch/kernel/sunxi-next/x-display-a64-v3.1-10-10-arm64-dts-allwinner-a64-Enable-HDMI-output-on-A64-boards-w-HDMI.patch b/patch/kernel/sunxi-next/x-display-a64-v3.1-10-10-arm64-dts-allwinner-a64-Enable-HDMI-output-on-A64-boards-w-HDMI.patch new file mode 100644 index 000000000..3ecc3ae2c --- /dev/null +++ b/patch/kernel/sunxi-next/x-display-a64-v3.1-10-10-arm64-dts-allwinner-a64-Enable-HDMI-output-on-A64-boards-w-HDMI.patch @@ -0,0 +1,329 @@ +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts +index 094cfed13df9..0d8f5571d574 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-bananapi-m64.dts +@@ -60,6 +60,17 @@ + stdout-path = "serial0:115200n8"; + }; + ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ + leds { + compatible = "gpio-leds"; + +@@ -103,6 +118,21 @@ + status = "okay"; + }; + ++&de { ++ status = "okay"; ++}; ++ ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ + &i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; +@@ -120,6 +146,10 @@ + }; + }; + ++&mixer1 { ++ status = "okay"; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; +@@ -300,6 +330,10 @@ + vcc-hdmi-supply = <®_dldo1>; + }; + ++&tcon1 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +index 98dbff19f5cc..2bcf02f46366 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-nanopi-a64.dts +@@ -57,6 +57,21 @@ + chosen { + stdout-path = "serial0:115200n8"; + }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++}; ++ ++&de { ++ status = "okay"; + }; + + &ehci0 { +@@ -67,6 +82,17 @@ + status = "okay"; + }; + ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ + /* i2c1 connected with gpio headers like pine64, bananapi */ + &i2c1 { + pinctrl-names = "default"; +@@ -78,6 +104,10 @@ + bias-pull-up; + }; + ++&mixer1 { ++ status = "okay"; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; +@@ -199,6 +229,10 @@ + vcc-hdmi-supply = <®_dldo1>; + }; + ++&tcon1 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +index 3f531393eaee..5445a7a1db51 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-olinuxino.dts +@@ -77,12 +77,42 @@ + regulator-max-microvolt = <3300000>; + }; + ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ + wifi_pwrseq: wifi_pwrseq { + compatible = "mmc-pwrseq-simple"; + reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */ + }; + }; + ++&de { ++ status = "okay"; ++}; ++ ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ ++&mixer1 { ++ status = "okay"; ++}; ++ + &ehci0 { + status = "okay"; + }; +@@ -218,6 +248,10 @@ + vcc-hdmi-supply = <®_dldo1>; + }; + ++&tcon1 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts +index 1b9b92e541d2..1b972bade9f6 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-pine64.dts +@@ -62,6 +62,21 @@ + chosen { + stdout-path = "serial0:115200n8"; + }; ++ ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++}; ++ ++&de { ++ status = "okay"; + }; + + &ehci0 { +@@ -82,6 +97,17 @@ + + }; + ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ + &i2c1 { + pinctrl-names = "default"; + pinctrl-0 = <&i2c1_pins>; +@@ -99,6 +125,10 @@ + }; + }; + ++&mixer1 { ++ status = "okay"; ++}; ++ + &mmc0 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc0_pins>; +@@ -238,6 +268,10 @@ + status = "disabled"; + }; + ++&tcon1 { ++ status = "okay"; ++}; ++ + /* On Exp and Euler connectors */ + &uart0 { + pinctrl-names = "default"; +diff --git a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts +index c21f2331add6..eff44b069b1d 100644 +--- a/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts ++++ b/arch/arm64/boot/dts/allwinner/sun50i-a64-sopine-baseboard.dts +@@ -61,6 +61,17 @@ + stdout-path = "serial0:115200n8"; + }; + ++ connector { ++ compatible = "hdmi-connector"; ++ type = "a"; ++ ++ port { ++ hdmi_con_in: endpoint { ++ remote-endpoint = <&hdmi_out_con>; ++ }; ++ }; ++ }; ++ + reg_vcc1v8: vcc1v8 { + compatible = "regulator-fixed"; + regulator-name = "vcc1v8"; +@@ -69,6 +80,10 @@ + }; + }; + ++&de { ++ status = "okay"; ++}; ++ + &ehci0 { + status = "okay"; + }; +@@ -86,6 +101,17 @@ + status = "okay"; + }; + ++&hdmi { ++ hdmi-supply = <®_dldo1>; ++ status = "okay"; ++}; ++ ++&hdmi_out { ++ hdmi_out_con: endpoint { ++ remote-endpoint = <&hdmi_con_in>; ++ }; ++}; ++ + &mdio { + ext_rgmii_phy: ethernet-phy@1 { + compatible = "ethernet-phy-ieee802.3-c22"; +@@ -93,6 +119,10 @@ + }; + }; + ++&mixer1 { ++ status = "okay"; ++}; ++ + &mmc2 { + pinctrl-names = "default"; + pinctrl-0 = <&mmc2_pins>; +@@ -138,6 +168,10 @@ + vcc-hdmi-supply = <®_dldo1>; + }; + ++&tcon1 { ++ status = "okay"; ++}; ++ + &uart0 { + pinctrl-names = "default"; + pinctrl-0 = <&uart0_pins_a>;