diff --git a/buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch b/buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch new file mode 100644 index 000000000..7f87d274e --- /dev/null +++ b/buildroot-external/board/asus/tinker/patches/linux/0001-Revert-ARM-dts-rockchip-use-DMA-channels-for-UARTs-f.patch @@ -0,0 +1,55 @@ +From 3f3c4cd047234fb94de4d6b701d05ff0450890cf Mon Sep 17 00:00:00 2001 +Message-Id: <3f3c4cd047234fb94de4d6b701d05ff0450890cf.1613588152.git.stefan@agner.ch> +From: Stefan Agner +Date: Wed, 17 Feb 2021 19:55:41 +0100 +Subject: [PATCH] Revert "ARM: dts: rockchip: use DMA channels for UARTs for + RK3288" + +This reverts commit 3425fe335c29310f6628faf9a7947d07f32d8962. +--- + arch/arm/boot/dts/rk3288.dtsi | 8 -------- + 1 file changed, 8 deletions(-) + +diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi +index 8fa80facc8cd..8636d95c45e1 100644 +--- a/arch/arm/boot/dts/rk3288.dtsi ++++ b/arch/arm/boot/dts/rk3288.dtsi +@@ -422,8 +422,6 @@ uart0: serial@ff180000 { + reg-io-width = <4>; + clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>; + clock-names = "baudclk", "apb_pclk"; +- dmas = <&dmac_peri 1>, <&dmac_peri 2>; +- dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart0_xfer>; + status = "disabled"; +@@ -437,8 +435,6 @@ uart1: serial@ff190000 { + reg-io-width = <4>; + clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>; + clock-names = "baudclk", "apb_pclk"; +- dmas = <&dmac_peri 3>, <&dmac_peri 4>; +- dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart1_xfer>; + status = "disabled"; +@@ -465,8 +461,6 @@ uart3: serial@ff1b0000 { + reg-io-width = <4>; + clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>; + clock-names = "baudclk", "apb_pclk"; +- dmas = <&dmac_peri 7>, <&dmac_peri 8>; +- dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart3_xfer>; + status = "disabled"; +@@ -480,8 +474,6 @@ uart4: serial@ff1c0000 { + reg-io-width = <4>; + clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>; + clock-names = "baudclk", "apb_pclk"; +- dmas = <&dmac_peri 9>, <&dmac_peri 10>; +- dma-names = "tx", "rx"; + pinctrl-names = "default"; + pinctrl-0 = <&uart4_xfer>; + status = "disabled"; +-- +2.30.1 + diff --git a/buildroot-external/board/asus/tinker/patches/linux/1010-ARM-DTSI-rk3288-Adding-missing-EDP-power-domain.patch b/buildroot-external/board/asus/tinker/patches/linux/1010-ARM-DTSI-rk3288-Adding-missing-EDP-power-domain.patch deleted file mode 100644 index 1ec2018d4..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/1010-ARM-DTSI-rk3288-Adding-missing-EDP-power-domain.patch +++ /dev/null @@ -1,27 +0,0 @@ -From ac220d592aa38b9b717d36f7bb93f7be5a08f6b3 Mon Sep 17 00:00:00 2001 -From: Myy Miouyouyou -Date: Thu, 19 Oct 2017 21:43:51 +0200 -Subject: [PATCH 14/28] ARM: DTSI: rk3288.dtsi: Adding missing EDP power domain - -Imported from Rockchip 4.4 kernel patches. - -Signed-off-by: Myy Miouyouyou ---- - arch/arm/boot/dts/rk3288.dtsi | 1 + - 1 file changed, 1 insertion(+) - -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 14ef8202..10ecebb4 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -1105,6 +1105,7 @@ - interrupts = ; - clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>; - clock-names = "dp", "pclk"; -+ power-domains = <&power RK3288_PD_VIO>; - phys = <&edp_phy>; - phy-names = "dp"; - resets = <&cru SRST_EDP>; --- -2.11.0 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/1012-ARM-DTSI-rk3288-Fixed-the-SPDIF-node-address.patch b/buildroot-external/board/asus/tinker/patches/linux/1012-ARM-DTSI-rk3288-Fixed-the-SPDIF-node-address.patch deleted file mode 100644 index 2c791cb43..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/1012-ARM-DTSI-rk3288-Fixed-the-SPDIF-node-address.patch +++ /dev/null @@ -1,31 +0,0 @@ -From a0602b2724893de7ac9b4190a7a6bb66458da2d5 Mon Sep 17 00:00:00 2001 -From: Myy Miouyouyou -Date: Thu, 19 Oct 2017 21:54:37 +0200 -Subject: [PATCH 17/28] ARM: DTSI: rk3288.dtsi: Fixed the SPDIF node address - -Now, the typo is only in the name of the node itself, not in the -actual registers addresses definition. - -Still, this ought to be fixed one day ! - -Signed-off-by: Myy Miouyouyou ---- - arch/arm/boot/dts/rk3288.dtsi | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 125f8835..e5d3d3c9 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -922,7 +922,7 @@ - status = "disabled"; - }; - -- spdif: sound@ff88b0000 { -+ spdif: sound@ff8b0000 { - compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif"; - reg = <0x0 0xff8b0000 0x0 0x10000>; - #sound-dai-cells = <0>; --- -2.11.0 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch b/buildroot-external/board/asus/tinker/patches/linux/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch new file mode 100644 index 000000000..18b6c9c0d --- /dev/null +++ b/buildroot-external/board/asus/tinker/patches/linux/1013-ARM-DTS-rk3288-tinker-Enabling-SDIO-and-Wifi.patch @@ -0,0 +1,98 @@ +From d5d5c53173c484a13cda62a537cbf75a5df4b0e4 Mon Sep 17 00:00:00 2001 +From: "Miouyouyou (Myy)" +Date: Mon, 5 Nov 2018 21:58:56 +0100 +Subject: [PATCH] ARM: DTS: rk3288-tinker: Enabling SDIO and Wifi + +Adding the appropriate nodes in order to exploit the WiFi capabilities +of the board. +Since these capabilities are provided through SDIO, and the SDIO +nodes were not defined, these were added too. + +These seems to depend on each other so they are added in one big +patch. + +Split if necessary. + +Signed-off-by: Miouyouyou (Myy) +--- + arch/arm/boot/dts/rk3288-tinker.dts | 62 +++++++++++++++++++++++++++++++++++++ + 1 file changed, 62 insertions(+) + +diff --git a/arch/arm/boot/dts/rk3288-tinker.dts b/arch/arm/boot/dts/rk3288-tinker.dts +index 1e43527aa..d4df13bed 100644 +--- a/arch/arm/boot/dts/rk3288-tinker.dts ++++ b/arch/arm/boot/dts/rk3288-tinker.dts +@@ -6,8 +6,70 @@ + /dts-v1/; + + #include "rk3288-tinker.dtsi" ++#include + + / { + model = "Rockchip RK3288 Asus Tinker Board"; + compatible = "asus,rk3288-tinker", "rockchip,rk3288"; ++ ++ /* This is essential to get SDIO devices working. ++ The Wifi depends on SDIO ! */ ++ sdio_pwrseq: sdio-pwrseq { ++ compatible = "mmc-pwrseq-simple"; ++ clocks = <&rk808 RK808_CLKOUT1>; ++ clock-names = "ext_clock"; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&chip_enable_h>, <&wifi_enable_h>; ++ ++ /* ++ * On the module itself this is one of these (depending ++ * on the actual card populated): ++ * - SDIO_RESET_L_WL_REG_ON ++ * - PDN (power down when low) ++ */ ++ reset-gpios = <&gpio4 28 GPIO_ACTIVE_LOW>, <&gpio4 27 GPIO_ACTIVE_LOW>; ++ }; ++ ++ wireless-wlan { ++ compatible = "wlan-platdata"; ++ rockchip,grf = <&grf>; ++ sdio_vref = <1800>; ++ status = "okay"; ++ wifi_chip_type = "8723bs"; ++ WIFI,host_wake_irq = <&gpio4 30 GPIO_ACTIVE_HIGH>; ++ }; ++}; ++ ++&io_domains { ++ wifi-supply = <&vcc_18>; ++}; ++ ++&pinctrl { ++ sdio-pwrseq { ++ wifi_enable_h: wifienable-h { ++ rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ ++ chip_enable_h: chip-enable-h { ++ rockchip,pins = <4 27 RK_FUNC_GPIO &pcfg_pull_none>; ++ }; ++ }; ++}; ++ ++&sdio0 { ++ bus-width = <4>; ++ cap-sd-highspeed; ++ cap-sdio-irq; ++ clock-frequency = <50000000>; ++ clock-freq-min-max = <200000 50000000>; ++ disable-wp; ++ keep-power-in-suspend; ++ mmc-pwrseq = <&sdio_pwrseq>; ++ non-removable; ++ num-slots = <1>; ++ pinctrl-names = "default"; ++ pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>; ++ sd-uhs-sdr104; ++ status = "okay"; ++ supports-sdio; + }; +-- +2.16.4 + diff --git a/buildroot-external/board/asus/tinker/patches/linux/1015-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch b/buildroot-external/board/asus/tinker/patches/linux/1015-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch new file mode 100644 index 000000000..12c6b6060 --- /dev/null +++ b/buildroot-external/board/asus/tinker/patches/linux/1015-ARM-DTSI-rk3288-tinker-Improving-the-CPU-max-voltage.patch @@ -0,0 +1,28 @@ +From ebc29962ac27264772a4227f5abd6900cb72fa79 Mon Sep 17 00:00:00 2001 +From: "Miouyouyou (Myy)" +Date: Mon, 5 Nov 2018 20:16:05 +0100 +Subject: [PATCH] ARM: DTSI: rk3288-tinker: Improving the CPU max voltage + +Taken from the various patches provided by @TonyMac32 . + +Signed-off-by: Miouyouyou (Myy) +--- + arch/arm/boot/dts/rk3288-tinker.dtsi | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi +index aa107ee41..3da1c830f 100644 +--- a/arch/arm/boot/dts/rk3288-tinker.dtsi ++++ b/arch/arm/boot/dts/rk3288-tinker.dtsi +@@ -164,7 +164,7 @@ + regulator-always-on; + regulator-boot-on; + regulator-min-microvolt = <750000>; +- regulator-max-microvolt = <1400000>; ++ regulator-max-microvolt = <1450000>; + regulator-name = "vdd_arm"; + regulator-ramp-delay = <6000>; + regulator-state-mem { +-- +2.16.4 + diff --git a/buildroot-external/board/asus/tinker/patches/linux/1019-ARM-DTSI-rk3288-tinker-Defining-SDMMC-properties.patch b/buildroot-external/board/asus/tinker/patches/linux/1019-ARM-DTSI-rk3288-tinker-Defining-SDMMC-properties.patch deleted file mode 100644 index 318f5058a..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/1019-ARM-DTSI-rk3288-tinker-Defining-SDMMC-properties.patch +++ /dev/null @@ -1,33 +0,0 @@ -From 487db7cefc9861fdaf30579c378a98f0360690ae Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Mon, 5 Nov 2018 20:27:14 +0100 -Subject: [PATCH] ARM: DTSI: rk3288-tinker: Defining SDMMC properties - -I never knew if these properties were required to fix the dreaded -reboot issue... - -Signed-off-by: Miouyouyou (Myy) ---- - arch/arm/boot/dts/rk3288-tinker.dtsi | 5 +++++ - 1 file changed, 5 insertions(+) - -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi -index dd1090728..8edd6f681 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi -@@ -436,7 +436,12 @@ - disable-wp; /* wp not hooked up */ - pinctrl-names = "default"; - pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>; -+ sd-uhs-sdr12; -+ sd-uhs-sdr25; -+ sd-uhs-sdr50; -+ sd-uhs-sdr104; - status = "okay"; -+ supports-sd; - vmmc-supply = <&vcc33_sd>; - vqmmc-supply = <&vccio_sd>; - }; --- -2.16.4 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/1020-ARM-DTSI-rk3288-Set-the-VPU-MMU-power-domains.patch b/buildroot-external/board/asus/tinker/patches/linux/1020-ARM-DTSI-rk3288-Set-the-VPU-MMU-power-domains.patch deleted file mode 100644 index 1d2985708..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/1020-ARM-DTSI-rk3288-Set-the-VPU-MMU-power-domains.patch +++ /dev/null @@ -1,48 +0,0 @@ -From d3d3fe433d9038dcd1a98f4d6711c0777ed06703 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Mon, 25 Jun 2018 17:08:32 +0200 -Subject: [PATCH 26/26] ARM: DTSI: rk3288: Set the VPU MMU power domains - -Without that, the auto-activation of the VPU hardware IOMMU fails -when enabling the hardware, before the "probe" phase of its device -driver. - -Basically, when loading a "of_platform" device driver targeting -the VPU devices, you'll get these errors without this patch : - -[12753.996950] rk_iommu ff9c0440.iommu: Error during raw reset. MMU_DTE_ADDR is not functioning -[12754.007483] rk_iommu ff9c0440.iommu: Disable stall request timed out, status: 0xffffffff -[12754.026652] rk_iommu ff9c0440.iommu: Disable paging request timed out, status: 0xffffffff -[12754.045975] rk_iommu ff9c0440.iommu: Disable stall request timed out, status: 0xffffffff - -When using this patch, the errors disappear. - -This seems to be due to the IOMMU device sharing the same power domain -than the device. -When loading an "of_platform" driver, the kernel logic seems to try -enabling the associated IOMMU device before letting the driver handles -anything with the actual VPU hardware. -It appears that setting the power domain of the VPU IOMMU nodes let the -IOMMU driver enable the IOMMU shared power domain, and make the IOMMU -device useable. - -Signed-off-by: Miouyouyou (Myy) ---- - arch/arm/boot/dts/rk3288.dtsi | 2 ++ - 1 file changed, 2 insertions(+) - -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 45ec4e89..46e1b8e2 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -1262,6 +1263,7 @@ - interrupt-names = "hevc_mmu"; - clocks = <&cru ACLK_HEVC>, <&cru HCLK_HEVC>; - clock-names = "aclk", "iface"; -+ power-domains = <&power RK3288_PD_HEVC>; - #iommu-cells = <0>; - status = "disabled"; - }; --- -2.16.4 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/1023-dts-rk3288-support-for-dedicating-npll-to-a-vop.patch b/buildroot-external/board/asus/tinker/patches/linux/1023-dts-rk3288-support-for-dedicating-npll-to-a-vop.patch deleted file mode 100644 index 3a4b8dc1f..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/1023-dts-rk3288-support-for-dedicating-npll-to-a-vop.patch +++ /dev/null @@ -1,46 +0,0 @@ -From 4ab4f88649468dada5d609e1a6f8a71a7d5610c9 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Sat, 29 Sep 2018 02:48:59 +0200 -Subject: [PATCH 4/6] dts: rk3288: support for dedicating npll to a vop - -This patch is taken from Urja Rannikko ( @urjaman ) patchset here : -https://github.com/urjaman/arch-c201/blob/master/linux-c201/0020-RK3288-HDMI-clock-hacks-combined.patch -https://www.spinics.net/lists/arm-kernel/msg673156.html - -The original description was : - - Add the VOP DCLKs to the assigned clocks list so their - parents can be set in the dts include files for - devices that do dedicate npll to a vop. - -https://www.spinics.net/lists/arm-kernel/msg673162.html - -Signed-off-by: Miouyouyou (Myy) ---- - arch/arm/boot/dts/rk3288.dtsi | 6 ++++-- - 1 file changed, 4 insertions(+), 2 deletions(-) - -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index d23c7fa55..ff04aab5e 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -867,12 +867,14 @@ - rockchip,grf = <&grf>; - #clock-cells = <1>; - #reset-cells = <1>; -- assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>, -+ assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>, -+ <&cru PLL_GPLL>, <&cru PLL_CPLL>, - <&cru PLL_NPLL>, <&cru ACLK_CPU>, - <&cru HCLK_CPU>, <&cru PCLK_CPU>, - <&cru ACLK_PERI>, <&cru HCLK_PERI>, - <&cru PCLK_PERI>; -- assigned-clock-rates = <594000000>, <400000000>, -+ assigned-clock-rates = <0>, <0>, -+ <594000000>, <400000000>, - <500000000>, <300000000>, - <150000000>, <75000000>, - <300000000>, <150000000>, --- -2.16.4 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/2002-clk-rockchip-add-all-known-operating-points-to-the-a.patch b/buildroot-external/board/asus/tinker/patches/linux/2002-clk-rockchip-add-all-known-operating-points-to-the-a.patch deleted file mode 100644 index 2cf59607b..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/2002-clk-rockchip-add-all-known-operating-points-to-the-a.patch +++ /dev/null @@ -1,50 +0,0 @@ -From e0c5a419cf5464cd02996431afa98e3b22dc6801 Mon Sep 17 00:00:00 2001 -From: Myy -Date: Mon, 17 Jul 2017 23:14:48 +0000 -Subject: [PATCH] clk: rockchip: add all known operating points to the allowed - CPU freqs - -Patch from Willy Tarreau - -Original commit message : -At least 1920 MHz runs stable on the MiQi even on openssl speed -multi 4, -which is by far the most intensive workload, and 1992/2016 work fine on -the CS-008 until it starts to heat too much. So add all of them so that -the device tree can simply manipulate them. - -Signed-off-by: Myy ---- - drivers/clk/rockchip/clk-rk3288.c | 17 +++++++++++++++++ - 1 file changed, 17 insertions(+) - -diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c -index 753c649..fd2058f 100644 ---- a/drivers/clk/rockchip/clk-rk3288.c -+++ b/drivers/clk/rockchip/clk-rk3288.c -@@ -145,6 +145,23 @@ static struct rockchip_pll_rate_table rk3288_pll_rates[] = { - } - - static struct rockchip_cpuclk_rate_table rk3288_cpuclk_rates[] __initdata = { -+ RK3288_CPUCLK_RATE(2208000000U, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2184000000U, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2160000000U, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2136000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2112000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2088000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2064000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2040000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(2016000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1992000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1968000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1944000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1920000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1896000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1872000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1848000000, 1, 3, 1, 3, 3), -+ RK3288_CPUCLK_RATE(1824000000, 1, 3, 1, 3, 3), - RK3288_CPUCLK_RATE(1800000000, 1, 3, 1, 3, 3), - RK3288_CPUCLK_RATE(1704000000, 1, 3, 1, 3, 3), - RK3288_CPUCLK_RATE(1608000000, 1, 3, 1, 3, 3), --- -2.10.2 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/2006-soc-rockchip-power-domain-export-idle-request.patch b/buildroot-external/board/asus/tinker/patches/linux/2006-soc-rockchip-power-domain-export-idle-request.patch deleted file mode 100644 index 5db1e6227..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/2006-soc-rockchip-power-domain-export-idle-request.patch +++ /dev/null @@ -1,74 +0,0 @@ -From e7b60b10cf3fd2f4374ab26c314383121c27fe82 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Tue, 22 Jan 2019 21:24:37 +0100 -Subject: [PATCH] soc: rockchip: power-domain: export idle request for RKMPP - -This function, and the added header, are required by the RKMPP driver, -provided by Randy Li. However, I can't attest that the provided code -is correct. - -Signed-off-by: Miouyouyou (Myy) ---- - drivers/soc/rockchip/pm_domains.c | 23 +++++++++++++++++++++++ - include/soc/rockchip/pm_domains.h | 15 +++++++++++++++ - 2 files changed, 38 insertions(+) - create mode 100644 include/soc/rockchip/pm_domains.h - -diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c -index 847c7c482..3e2e252cb 100644 ---- a/drivers/soc/rockchip/pm_domains.c -+++ b/drivers/soc/rockchip/pm_domains.c -@@ -199,6 +199,29 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd, - return 0; - } - -+int rockchip_pmu_idle_request(struct device *dev, bool idle) -+{ -+ struct generic_pm_domain *genpd; -+ struct rockchip_pm_domain *pd; -+ int ret; -+ -+ if (IS_ERR_OR_NULL(dev)) -+ return -EINVAL; -+ -+ if (IS_ERR_OR_NULL(dev->pm_domain)) -+ return -EINVAL; -+ -+ genpd = pd_to_genpd(dev->pm_domain); -+ pd = to_rockchip_pd(genpd); -+ -+ mutex_lock(&pd->pmu->mutex); -+ ret = rockchip_pmu_set_idle_request(pd, idle); -+ mutex_unlock(&pd->pmu->mutex); -+ -+ return ret; -+} -+EXPORT_SYMBOL(rockchip_pmu_idle_request); -+ - static int rockchip_pmu_save_qos(struct rockchip_pm_domain *pd) - { - int i; -diff --git a/include/soc/rockchip/pm_domains.h b/include/soc/rockchip/pm_domains.h -new file mode 100644 -index 000000000..720b3314e ---- /dev/null -+++ b/include/soc/rockchip/pm_domains.h -@@ -0,0 +1,15 @@ -+/* -+ * pm_domain.h - Definitions and headers related to device power domains. -+ * -+ * Copyright (C) 2017 Randy Li . -+ * -+ * This file is released under the GPLv2. -+ */ -+ -+#ifndef _LINUX_ROCKCHIP_PM_H -+#define _LINUX_ROCKCHIP_PM_H -+#include -+ -+int rockchip_pmu_idle_request(struct device *dev, bool idle); -+ -+#endif /* _LINUX_ROCKCHIP_PM_H */ --- -2.16.4 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/2007-drivers-wifi-ath9k-reverse-do-not-use-bulk-on-EP3-and-EP4.patch b/buildroot-external/board/asus/tinker/patches/linux/2007-drivers-wifi-ath9k-reverse-do-not-use-bulk-on-EP3-and-EP4.patch deleted file mode 100644 index aee35a5d9..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/2007-drivers-wifi-ath9k-reverse-do-not-use-bulk-on-EP3-and-EP4.patch +++ /dev/null @@ -1,101 +0,0 @@ -FROM: Solidhal - -This patch reverses commit 2b721118b7821107757eb1d37af4b60e877b27e7, as can bee seen here: -https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=2b721118b7821107757eb1d37af4b60e877b27e7 - -This commit caused issues on veyron speedy with ath9k and dwc2 drivers. Any ath9k device (ar9271) -would intermittently work, most of the time ending in errors as can bee seen here: -https://github.com/SolidHal/PrawnOS/issues/38 -This commit fixes that issue. -This is only a temporary work around while a permenant fix is found, as this commit seems to only cause issues -with dwc2 - -diff --git a/drivers/net/wireless/ath/ath9k/hif_usb.c b/drivers/net/wireless/ath/ath9k/hif_usb.c ---- b/drivers/net/wireless/ath/ath9k/hif_usb.c -+++ a/drivers/net/wireless/ath/ath9k/hif_usb.c -@@ -115,10 +115,10 @@ - cmd->skb = skb; - cmd->hif_dev = hif_dev; - -+ usb_fill_bulk_urb(urb, hif_dev->udev, -+ usb_sndbulkpipe(hif_dev->udev, USB_REG_OUT_PIPE), -- usb_fill_int_urb(urb, hif_dev->udev, -- usb_sndintpipe(hif_dev->udev, USB_REG_OUT_PIPE), - skb->data, skb->len, -+ hif_usb_regout_cb, cmd); -- hif_usb_regout_cb, cmd, 1); - - usb_anchor_urb(urb, &hif_dev->regout_submitted); - ret = usb_submit_urb(urb, GFP_KERNEL); -@@ -735,11 +735,11 @@ - - rx_buf->skb = nskb; - -+ usb_fill_bulk_urb(urb, hif_dev->udev, -+ usb_rcvbulkpipe(hif_dev->udev, -- usb_fill_int_urb(urb, hif_dev->udev, -- usb_rcvintpipe(hif_dev->udev, - USB_REG_IN_PIPE), - nskb->data, MAX_REG_IN_BUF_SIZE, -+ ath9k_hif_usb_reg_in_cb, nskb); -- ath9k_hif_usb_reg_in_cb, rx_buf, 1); - } - - resubmit: -@@ -909,11 +909,11 @@ - rx_buf->hif_dev = hif_dev; - rx_buf->skb = skb; - -+ usb_fill_bulk_urb(urb, hif_dev->udev, -+ usb_rcvbulkpipe(hif_dev->udev, -- usb_fill_int_urb(urb, hif_dev->udev, -- usb_rcvintpipe(hif_dev->udev, - USB_REG_IN_PIPE), - skb->data, MAX_REG_IN_BUF_SIZE, -+ ath9k_hif_usb_reg_in_cb, skb); -- ath9k_hif_usb_reg_in_cb, rx_buf, 1); - - /* Anchor URB */ - usb_anchor_urb(urb, &hif_dev->reg_in_submitted); -@@ -1031,7 +1031,9 @@ - - static int ath9k_hif_usb_dev_init(struct hif_device_usb *hif_dev) - { -+ struct usb_host_interface *alt = &hif_dev->interface->altsetting[0]; -+ struct usb_endpoint_descriptor *endp; -+ int ret, idx; -- int ret; - - ret = ath9k_hif_usb_download_fw(hif_dev); - if (ret) { -@@ -1041,6 +1043,20 @@ - return ret; - } - -+ /* On downloading the firmware to the target, the USB descriptor of EP4 -+ * is 'patched' to change the type of the endpoint to Bulk. This will -+ * bring down CPU usage during the scan period. -+ */ -+ for (idx = 0; idx < alt->desc.bNumEndpoints; idx++) { -+ endp = &alt->endpoint[idx].desc; -+ if ((endp->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK) -+ == USB_ENDPOINT_XFER_INT) { -+ endp->bmAttributes &= ~USB_ENDPOINT_XFERTYPE_MASK; -+ endp->bmAttributes |= USB_ENDPOINT_XFER_BULK; -+ endp->bInterval = 0; -+ } -+ } -+ - /* Alloc URBs */ - ret = ath9k_hif_usb_alloc_urbs(hif_dev); - if (ret) { -@@ -1252,7 +1268,7 @@ - if (!buf) - return; - -+ ret = usb_bulk_msg(udev, usb_sndbulkpipe(udev, USB_REG_OUT_PIPE), -- ret = usb_interrupt_msg(udev, usb_sndintpipe(udev, USB_REG_OUT_PIPE), - buf, 4, NULL, USB_MSG_TIMEOUT); - if (ret) - dev_err(&udev->dev, "ath9k_htc: USB reboot failed\n"); - diff --git a/buildroot-external/board/asus/tinker/patches/linux/2008-clk-rockchip-rk3288-Support-for-dedicating-NPLL-to-a.patch b/buildroot-external/board/asus/tinker/patches/linux/2008-clk-rockchip-rk3288-Support-for-dedicating-NPLL-to-a.patch deleted file mode 100644 index 9e988f19c..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/2008-clk-rockchip-rk3288-Support-for-dedicating-NPLL-to-a.patch +++ /dev/null @@ -1,178 +0,0 @@ -From e03d074b8ec00718337e7373e991912f6b6f9a52 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Mon, 5 Nov 2018 19:53:43 +0100 -Subject: [PATCH] clk: rockchip: rk3288: Support for dedicating NPLL to a VOP - -This patch is taken from Urja Rannikko ( @urjaman ) patchset here : -https://github.com/urjaman/arch-c201/blob/master/linux-c201/0020-RK3288-HDMI-clock-hacks-combined.patch -https://www.spinics.net/lists/arm-kernel/msg673156.html - -I'm not really sure what this does exactly. It basically sets the -parent clock of the newly added clocks, if the newly added property -"rockchip,npll-for-vop" is detected and set. - -I have no clear idea how HDMI Neuronal PLL (and PLL in general) work, -so I cannot comment on what it's doing and if it's a good idea in -general. - -Now, I still have to test if that patch does anything useful on -RK3288 boards. If it doesn't, I might just throw it away on next -versions. - -Signed-off-by: Miouyouyou (Myy) ---- - drivers/clk/rockchip/clk-rk3288.c | 68 ++++++++++++++++++++++++++++++++------- - drivers/clk/rockchip/clk.h | 3 ++ - 2 files changed, 59 insertions(+), 12 deletions(-) - -diff --git a/drivers/clk/rockchip/clk-rk3288.c b/drivers/clk/rockchip/clk-rk3288.c -index 13b38cb89..0d8b99b6b 100644 ---- a/drivers/clk/rockchip/clk-rk3288.c -+++ b/drivers/clk/rockchip/clk-rk3288.c -@@ -215,10 +215,13 @@ PNAME(mux_ddrphy_p) = { "dpll_ddr", "gpll_ddr" }; - PNAME(mux_aclk_cpu_src_p) = { "cpll_aclk_cpu", "gpll_aclk_cpu" }; - - PNAME(mux_pll_src_cpll_gpll_p) = { "cpll", "gpll" }; --PNAME(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" }; --PNAME(mux_pll_src_cpll_gpll_npll_p) = { "cpll", "gpll", "npll" }; -+PNAME_ED(mux_pll_src_npll_cpll_gpll_p) = { "npll", "cpll", "gpll" }; -+ -+PNAME_ED(mux_pll_src_cgn_pll_nonvop_p) = { "cpll", "gpll", "npll" }; -+PNAME_ED(mux_pll_src_cgn_pll_vop0_p) = { "cpll", "gpll", "npll" }; -+PNAME_ED(mux_pll_src_cgn_pll_vop1_p) = { "cpll", "gpll", "npll" }; - PNAME(mux_pll_src_cpll_gpll_usb480m_p) = { "cpll", "gpll", "unstable:usbphy480m_src" }; --PNAME(mux_pll_src_cpll_gll_usb_npll_p) = { "cpll", "gpll", "unstable:usbphy480m_src", "npll" }; -+PNAME_ED(mux_pll_src_cpll_gll_usb_npll_p) = { "cpll", "gpll", "usbphy480m_src", "npll" }; - - PNAME(mux_mmc_src_p) = { "cpll", "gpll", "xin24m", "xin24m" }; - PNAME(mux_i2s_pre_p) = { "i2s_src", "i2s_frac", "ext_i2s", "xin12m" }; -@@ -464,24 +467,24 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = { - RK3288_CLKSEL_CON(30), 14, 2, MFLAGS, 8, 5, DFLAGS, - RK3288_CLKGATE_CON(3), 4, GFLAGS), - -- COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(DCLK_VOP0, "dclk_vop0", mux_pll_src_cgn_pll_vop0_p, 0, - RK3288_CLKSEL_CON(27), 0, 2, MFLAGS, 8, 8, DFLAGS, - RK3288_CLKGATE_CON(3), 1, GFLAGS), -- COMPOSITE(DCLK_VOP1, "dclk_vop1", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(DCLK_VOP1, "dclk_vop1", mux_pll_src_cgn_pll_vop1_p, 0, - RK3288_CLKSEL_CON(29), 6, 2, MFLAGS, 8, 8, DFLAGS, - RK3288_CLKGATE_CON(3), 3, GFLAGS), - - COMPOSITE_NODIV(SCLK_EDP_24M, "sclk_edp_24m", mux_edp_24m_p, 0, - RK3288_CLKSEL_CON(28), 15, 1, MFLAGS, - RK3288_CLKGATE_CON(3), 12, GFLAGS), -- COMPOSITE(SCLK_EDP, "sclk_edp", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(SCLK_EDP, "sclk_edp", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(28), 6, 2, MFLAGS, 0, 6, DFLAGS, - RK3288_CLKGATE_CON(3), 13, GFLAGS), - -- COMPOSITE(SCLK_ISP, "sclk_isp", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(SCLK_ISP, "sclk_isp", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(6), 6, 2, MFLAGS, 0, 6, DFLAGS, - RK3288_CLKGATE_CON(3), 14, GFLAGS), -- COMPOSITE(SCLK_ISP_JPE, "sclk_isp_jpe", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(SCLK_ISP_JPE, "sclk_isp_jpe", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(6), 14, 2, MFLAGS, 8, 6, DFLAGS, - RK3288_CLKGATE_CON(3), 15, GFLAGS), - -@@ -490,16 +493,16 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = { - GATE(SCLK_HDMI_CEC, "sclk_hdmi_cec", "xin32k", 0, - RK3288_CLKGATE_CON(5), 11, GFLAGS), - -- COMPOSITE(ACLK_HEVC, "aclk_hevc", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(ACLK_HEVC, "aclk_hevc", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(39), 14, 2, MFLAGS, 8, 5, DFLAGS, - RK3288_CLKGATE_CON(13), 13, GFLAGS), - DIV(HCLK_HEVC, "hclk_hevc", "aclk_hevc", 0, - RK3288_CLKSEL_CON(40), 12, 2, DFLAGS), - -- COMPOSITE(SCLK_HEVC_CABAC, "sclk_hevc_cabac", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(SCLK_HEVC_CABAC, "sclk_hevc_cabac", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(42), 6, 2, MFLAGS, 0, 5, DFLAGS, - RK3288_CLKGATE_CON(13), 14, GFLAGS), -- COMPOSITE(SCLK_HEVC_CORE, "sclk_hevc_core", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(SCLK_HEVC_CORE, "sclk_hevc_core", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(42), 14, 2, MFLAGS, 8, 5, DFLAGS, - RK3288_CLKGATE_CON(13), 15, GFLAGS), - -@@ -573,7 +576,7 @@ static struct rockchip_clk_branch rk3288_clk_branches[] __initdata = { - COMPOSITE(0, "sclk_tspout", mux_tspout_p, 0, - RK3288_CLKSEL_CON(35), 14, 2, MFLAGS, 8, 5, DFLAGS, - RK3288_CLKGATE_CON(4), 11, GFLAGS), -- COMPOSITE(0, "sclk_tsp", mux_pll_src_cpll_gpll_npll_p, 0, -+ COMPOSITE(0, "sclk_tsp", mux_pll_src_cgn_pll_nonvop_p, 0, - RK3288_CLKSEL_CON(35), 6, 2, MFLAGS, 0, 5, DFLAGS, - RK3288_CLKGATE_CON(4), 10, GFLAGS), - -@@ -933,5 +936,6 @@ static void __init rk3288_clk_init(struct device_node *np) - { - struct rockchip_clk_provider *ctx; -+ s32 npll_vop = -1; - - rk3288_cru_base = of_iomap(np, 0); - if (!rk3288_cru_base) { -@@ -940,6 +944,46 @@ static void __init rk3288_clk_init(struct device_node *np) - return; - } - -+ if (!of_property_read_s32(np, "rockchip,npll-for-vop", &npll_vop)) { -+ if ((npll_vop < -1) || (npll_vop > 1)) { -+ pr_warn("%s: invalid VOP to dedicate NPLL to: %d\n", -+ __func__, npll_vop); -+ } else if (npll_vop >= 0) { -+ unsigned int vop_clk_id; -+ const char ** npll_names; -+ const char ** non_npll_names; -+ int i; -+ -+ /* Firstly, not-VOP needs to not use npll */ -+ mux_pll_src_npll_cpll_gpll_p[0] = "dummy_npll"; -+ mux_pll_src_cgn_pll_nonvop_p[2] = "dummy_npll"; -+ mux_pll_src_cpll_gll_usb_npll_p[3] = "dummy_npll"; -+ -+ /* Then the npll VOP needs to only use npll, and the other one not use npll. */ -+ if (npll_vop) { -+ vop_clk_id = DCLK_VOP1; -+ npll_names = mux_pll_src_cgn_pll_vop1_p; -+ non_npll_names = mux_pll_src_cgn_pll_vop0_p; -+ } else { -+ vop_clk_id = DCLK_VOP0; -+ npll_names = mux_pll_src_cgn_pll_vop0_p; -+ non_npll_names = mux_pll_src_cgn_pll_vop1_p; -+ } -+ npll_names[0] = "dummy_cpll"; -+ npll_names[1] = "dummy_gpll"; -+ non_npll_names[2] = "dummy_npll"; -+ -+ /* Lastly the npll-dedicated-VOP needs to be able to control npll. */ -+ for (i = 0; i < ARRAY_SIZE(rk3288_clk_branches); i++) { -+ if (rk3288_clk_branches[i].id == vop_clk_id) { -+ rk3288_clk_branches[i].flags |= CLK_SET_RATE_PARENT; -+ break; -+ } -+ } -+ pr_debug("%s: npll dedicated for VOP %d\n", __func__, npll_vop); -+ } -+ } -+ - ctx = rockchip_clk_init(np, rk3288_cru_base, CLK_NR_CLKS); - if (IS_ERR(ctx)) { - pr_err("%s: rockchip clk init failed\n", __func__); -diff --git a/drivers/clk/rockchip/clk.h b/drivers/clk/rockchip/clk.h -index 6b53fff4c..dbda9d281 100644 ---- a/drivers/clk/rockchip/clk.h -+++ b/drivers/clk/rockchip/clk.h -@@ -382,6 +382,9 @@ struct clk *rockchip_clk_register_muxgrf(const char *name, - - #define PNAME(x) static const char *const x[] __initconst - -+/* For when you want to be able to modify the pointers. */ -+#define PNAME_ED(x) static const char * x[] __initdata -+ - enum rockchip_clk_branch_type { - branch_composite, - branch_mux, --- -2.16.4 - diff --git a/buildroot-external/board/asus/tinker/patches/linux/2013-spi-Added-support-for-Tinkerboard-s-SPI-interface.patch b/buildroot-external/board/asus/tinker/patches/linux/2013-spi-Added-support-for-Tinkerboard-s-SPI-interface.patch deleted file mode 100644 index 8e0b23b57..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/2013-spi-Added-support-for-Tinkerboard-s-SPI-interface.patch +++ /dev/null @@ -1,22 +0,0 @@ -From d4d128324b8f8a9f5c441203d94703e41fa07df3 Mon Sep 17 00:00:00 2001 -From: "Miouyouyou (Myy)" -Date: Mon, 5 Nov 2018 19:57:56 +0100 -Subject: [PATCH] spi: Added support for Tinkerboard's SPI interface - -Imported from ARMbian - -Signed-off-by: Miouyouyou (Myy) ---- - -diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index 255786f2e..3a3f2e6fd 100644 ---- a/drivers/spi/spidev.c -+++ b/drivers/spi/spidev.c -@@ -665,6 +665,7 @@ static const struct of_device_id spidev_dt_ids[] = { - { .compatible = "lwn,bk4" }, - { .compatible = "dh,dhcom-board" }, - { .compatible = "menlo,m53cpld" }, -+ { .compatible = "rockchip,spi_tinker" }, - {}, - }; - MODULE_DEVICE_TABLE(of, spidev_dt_ids); diff --git a/buildroot-external/board/asus/tinker/patches/linux/261_gpiomem_driver.patch b/buildroot-external/board/asus/tinker/patches/linux/261_gpiomem_driver.patch deleted file mode 100644 index 058563b9b..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/261_gpiomem_driver.patch +++ /dev/null @@ -1,395 +0,0 @@ -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi -index e5b7ef1a5..f88c913ff 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi -@@ -544,3 +544,6 @@ - &wdt { - status = "okay"; - }; -+&gpiomem { -+ status = "okay"; -+}; -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index f3ca55496..14bbcb192 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -1418,6 +1418,12 @@ - interrupts = ; - }; - -+ gpiomem: rk3288-gpiomem@ff750000 { -+ compatible = "rockchip,rk3288-gpiomem"; -+ reg = <0x0 0xff750000 0x0 0x1000>; -+ status = "disabled"; -+ }; -+ - pinctrl: pinctrl { - compatible = "rockchip,rk3288-pinctrl"; - rockchip,grf = <&grf>; - -diff --git a/drivers/char/Kconfig b/drivers/char/Kconfig -index 3143db5..9c18b74 100644 ---- a/drivers/char/Kconfig -+++ b/drivers/char/Kconfig -@@ -5,6 +5,7 @@ - menu "Character devices" - - source "drivers/tty/Kconfig" -+source "drivers/char/rockchip/Kconfig" - - config DEVMEM - bool "/dev/mem virtual device support" -diff --git a/drivers/char/Makefile b/drivers/char/Makefile -index d8a7579..290cb32 100644 ---- a/drivers/char/Makefile -+++ b/drivers/char/Makefile -@@ -51,6 +51,8 @@ obj-$(CONFIG_PS3_FLASH) += ps3flash.o - obj-$(CONFIG_JS_RTC) += js-rtc.o - js-rtc-y = rtc.o - -+obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/ -+ - obj-$(CONFIG_XILLYBUS) += xillybus/ - obj-$(CONFIG_POWERNV_OP_PANEL) += powernv-op-panel.o - obj-$(CONFIG_ADI) += adi.o -diff --git a/drivers/char/rockchip/Kconfig b/drivers/char/rockchip/Kconfig -new file mode 100644 -index 0000000..6e97486 ---- /dev/null -+++ b/drivers/char/rockchip/Kconfig -@@ -0,0 +1,16 @@ -+# -+# Broadcom char driver config -+# -+ -+menuconfig RK_CHAR_DRIVERS -+ bool "Rockchip Char Drivers" -+ help -+ Rockchip's char drivers -+ -+config RK3288_DEVGPIOMEM -+ tristate "/dev/gpiomem rootless GPIO access via mmap() on the RK3288" -+ default y -+ help -+ Provides users with root-free access to the GPIO registers -+ on the 3288. Calling mmap(/dev/gpiomem) will map the GPIO -+ register page to the user's pointer. -\ No newline at end of file -diff --git a/drivers/char/rockchip/Makefile b/drivers/char/rockchip/Makefile -new file mode 100644 -index 0000000..2287ec2 ---- /dev/null -+++ b/drivers/char/rockchip/Makefile -@@ -0,0 +1 @@ -+obj-$(CONFIG_RK3288_DEVGPIOMEM)+= rk3288-gpiomem.o -\ No newline at end of file -diff --git a/drivers/char/rockchip/rk3288-gpiomem.c b/drivers/char/rockchip/rk3288-gpiomem.c -new file mode 100644 -index 0000000..984471c ---- /dev/null -+++ b/drivers/char/rockchip/rk3288-gpiomem.c -@@ -0,0 +1,303 @@ -+/** -+ * GPIO memory device driver -+ * -+ * Creates a chardev /dev/gpiomem which will provide user access to -+ * the rk3288's GPIO registers when it is mmap()'d. -+ * No longer need root for user GPIO access, but without relaxing permissions -+ * on /dev/mem. -+ * -+ * Written by Luke Wren -+ * Copyright (c) 2015, Raspberry Pi (Trading) Ltd. -+ * -+ * Redistribution and use in source and binary forms, with or without -+ * modification, are permitted provided that the following conditions -+ * are met: -+ * 1. Redistributions of source code must retain the above copyright -+ * notice, this list of conditions, and the following disclaimer, -+ * without modification. -+ * 2. Redistributions in binary form must reproduce the above copyright -+ * notice, this list of conditions and the following disclaimer in the -+ * documentation and/or other materials provided with the distribution. -+ * 3. The names of the above-listed copyright holders may not be used -+ * to endorse or promote products derived from this software without -+ * specific prior written permission. -+ * -+ * ALTERNATIVELY, this software may be distributed under the terms of the -+ * GNU General Public License ("GPL") version 2, as published by the Free -+ * Software Foundation. -+ * -+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS -+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, -+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR -+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR -+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, -+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, -+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR -+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS -+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -+ */ -+ -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#define DEVICE_NAME "rk3288-gpiomem" -+#define DRIVER_NAME "gpiomem-rk3288" -+#define DEVICE_MINOR 0 -+ -+struct rk3288_gpiomem_instance { -+ unsigned long gpio_regs_phys; -+ struct device *dev; -+}; -+ -+static struct cdev rk3288_gpiomem_cdev; -+static dev_t rk3288_gpiomem_devid; -+static struct class *rk3288_gpiomem_class; -+static struct device *rk3288_gpiomem_dev; -+static struct rk3288_gpiomem_instance *inst; -+ -+ -+/**************************************************************************** -+* -+* GPIO mem chardev file ops -+* -+***************************************************************************/ -+ -+static int rk3288_gpiomem_open(struct inode *inode, struct file *file) -+{ -+ int dev = iminor(inode); -+ int ret = 0; -+ -+ if (dev != DEVICE_MINOR) { -+ dev_err(inst->dev, "Unknown minor device: %d", dev); -+ ret = -ENXIO; -+ } -+ return ret; -+} -+ -+static int rk3288_gpiomem_release(struct inode *inode, struct file *file) -+{ -+ int dev = iminor(inode); -+ int ret = 0; -+ -+ if (dev != DEVICE_MINOR) { -+ dev_err(inst->dev, "Unknown minor device %d", dev); -+ ret = -ENXIO; -+ } -+ return ret; -+} -+ -+static const struct vm_operations_struct rk3288_gpiomem_vm_ops = { -+#ifdef CONFIG_HAVE_IOREMAP_PROT -+ .access = generic_access_phys -+#endif -+}; -+static int address_is_allowed(unsigned long pfn, unsigned long size) -+{ -+ unsigned long address = pfn << PAGE_SHIFT; -+ -+ dev_info(inst->dev, "address_is_allowed.pfn: 0x%08lx", address); -+ -+ switch(address) { -+ -+ case 0xff750000: -+ case 0xff760000: -+ case 0xff780000: -+ case 0xff790000: -+ case 0xff7a0000: -+ case 0xff7b0000: -+ case 0xff7c0000: -+ case 0xff7d0000: -+ case 0xff7e0000: -+ case 0xff7f0000: -+ case 0xff7f2000: -+ case 0xff770000: -+ case 0xff730000: -+ case 0xff680000: -+ dev_info(inst->dev, "address_is_allowed.return 1"); -+ return 1; -+ break; -+ default : -+ dev_info(inst->dev, "address_is_allowed.return 0"); -+ return 0; -+ } -+} -+ -+static int rk3288_gpiomem_mmap(struct file *file, struct vm_area_struct *vma) -+{ -+ -+ size_t size; -+ -+ size = vma->vm_end - vma->vm_start; -+ -+ -+ if (!address_is_allowed(vma->vm_pgoff, size)) -+ return -EPERM; -+ -+ vma->vm_page_prot = phys_mem_access_prot(file, vma->vm_pgoff, -+ size, -+ vma->vm_page_prot); -+ -+ vma->vm_ops = &rk3288_gpiomem_vm_ops; -+ -+ /* Remap-pfn-range will mark the range VM_IO */ -+ if (remap_pfn_range(vma, -+ vma->vm_start, -+ vma->vm_pgoff, -+ size, -+ vma->vm_page_prot)) { -+ return -EAGAIN; -+ } -+ -+ return 0; -+} -+ -+static const struct file_operations -+rk3288_gpiomem_fops = { -+ .owner = THIS_MODULE, -+ .open = rk3288_gpiomem_open, -+ .release = rk3288_gpiomem_release, -+ .mmap = rk3288_gpiomem_mmap, -+}; -+ -+static int rk3288_gpiomem_dev_uevent(struct device *dev, struct kobj_uevent_env *env) -+{ -+ add_uevent_var(env, "DEVMODE=%#o", 0666); -+ return 0; -+} -+ -+ /**************************************************************************** -+* -+* Probe and remove functions -+* -+***************************************************************************/ -+ -+ -+static int rk3288_gpiomem_probe(struct platform_device *pdev) -+{ -+ int err; -+ void *ptr_err; -+ struct device *dev = &pdev->dev; -+ struct resource *ioresource; -+ -+ /* Allocate buffers and instance data */ -+ -+ inst = kzalloc(sizeof(struct rk3288_gpiomem_instance), GFP_KERNEL); -+ -+ if (!inst) { -+ err = -ENOMEM; -+ goto failed_inst_alloc; -+ } -+ -+ inst->dev = dev; -+ -+ ioresource = platform_get_resource(pdev, IORESOURCE_MEM, 0); -+ if (ioresource) { -+ inst->gpio_regs_phys = ioresource->start; -+ } else { -+ dev_err(inst->dev, "failed to get IO resource"); -+ err = -ENOENT; -+ goto failed_get_resource; -+ } -+ -+ /* Create character device entries */ -+ -+ err = alloc_chrdev_region(&rk3288_gpiomem_devid, -+ DEVICE_MINOR, 1, DEVICE_NAME); -+ if (err != 0) { -+ dev_err(inst->dev, "unable to allocate device number"); -+ goto failed_alloc_chrdev; -+ } -+ cdev_init(&rk3288_gpiomem_cdev, &rk3288_gpiomem_fops); -+ rk3288_gpiomem_cdev.owner = THIS_MODULE; -+ err = cdev_add(&rk3288_gpiomem_cdev, rk3288_gpiomem_devid, 1); -+ if (err != 0) { -+ dev_err(inst->dev, "unable to register device"); -+ goto failed_cdev_add; -+ } -+ -+ /* Create sysfs entries */ -+ -+ rk3288_gpiomem_class = class_create(THIS_MODULE, DEVICE_NAME); -+ ptr_err = rk3288_gpiomem_class; -+ if (IS_ERR(ptr_err)) -+ goto failed_class_create; -+ rk3288_gpiomem_class->dev_uevent = rk3288_gpiomem_dev_uevent; -+ rk3288_gpiomem_dev = device_create(rk3288_gpiomem_class, NULL, -+ rk3288_gpiomem_devid, NULL, -+ "gpiomem"); -+ ptr_err = rk3288_gpiomem_dev; -+ if (IS_ERR(ptr_err)) -+ goto failed_device_create; -+ -+ dev_info(inst->dev, "Initialised: Registers at 0x%08lx", -+ inst->gpio_regs_phys); -+ -+ return 0; -+ -+failed_device_create: -+ class_destroy(rk3288_gpiomem_class); -+failed_class_create: -+ cdev_del(&rk3288_gpiomem_cdev); -+ err = PTR_ERR(ptr_err); -+failed_cdev_add: -+ unregister_chrdev_region(rk3288_gpiomem_devid, 1); -+failed_alloc_chrdev: -+failed_get_resource: -+ kfree(inst); -+failed_inst_alloc: -+ dev_err(inst->dev, "could not load rk3288_gpiomem"); -+ return err; -+} -+ -+static int rk3288_gpiomem_remove(struct platform_device *pdev) -+{ -+ struct device *dev = inst->dev; -+ -+ kfree(inst); -+ device_destroy(rk3288_gpiomem_class, rk3288_gpiomem_devid); -+ class_destroy(rk3288_gpiomem_class); -+ cdev_del(&rk3288_gpiomem_cdev); -+ unregister_chrdev_region(rk3288_gpiomem_devid, 1); -+ -+ dev_info(dev, "GPIO mem driver removed - OK"); -+ return 0; -+} -+ -+ /**************************************************************************** -+* -+* Register the driver with device tree -+* -+***************************************************************************/ -+ -+static const struct of_device_id rk3288_gpiomem_of_match[] = { -+ {.compatible = "rockchip,rk3288-gpiomem",}, -+ { /* sentinel */ }, -+}; -+ -+MODULE_DEVICE_TABLE(of, rk3288_gpiomem_of_match); -+ -+static struct platform_driver rk3288_gpiomem_driver = { -+ .probe = rk3288_gpiomem_probe, -+ .remove = rk3288_gpiomem_remove, -+ .driver = { -+ .name = DRIVER_NAME, -+ .owner = THIS_MODULE, -+ .of_match_table = rk3288_gpiomem_of_match, -+ }, -+}; -+ -+module_platform_driver(rk3288_gpiomem_driver); -+ -+MODULE_ALIAS("platform:gpiomem-rk3288"); -+MODULE_LICENSE("GPL"); -+MODULE_DESCRIPTION("gpiomem driver for accessing GPIO from userspace"); -+MODULE_AUTHOR("Luke Wren "); -\ No newline at end of file diff --git a/buildroot-external/board/asus/tinker/patches/linux/3000_DTS_rearrange_thermal_zones.patch b/buildroot-external/board/asus/tinker/patches/linux/3000_DTS_rearrange_thermal_zones.patch deleted file mode 100644 index 86663a543..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/3000_DTS_rearrange_thermal_zones.patch +++ /dev/null @@ -1,32 +0,0 @@ -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index bc3601a..37ae378 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -467,13 +467,6 @@ - }; - - thermal-zones { -- reserve_thermal: reserve_thermal { -- polling-delay-passive = <1000>; /* milliseconds */ -- polling-delay = <5000>; /* milliseconds */ -- -- thermal-sensors = <&tsadc 0>; -- }; -- - cpu_thermal: cpu_thermal { - polling-delay-passive = <100>; /* milliseconds */ - polling-delay = <5000>; /* milliseconds */ -@@ -539,6 +532,13 @@ - }; - }; - }; -+ -+ reserve_thermal: reserve_thermal { -+ polling-delay-passive = <1000>; /* milliseconds */ -+ polling-delay = <5000>; /* milliseconds */ -+ -+ thermal-sensors = <&tsadc 0>; -+ }; - }; - - tsadc: tsadc@ff280000 { diff --git a/buildroot-external/board/asus/tinker/patches/linux/RK3288-1.8GHz-and-boost.patch b/buildroot-external/board/asus/tinker/patches/linux/RK3288-1.8GHz-and-boost.patch deleted file mode 100644 index 83403b49e..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/RK3288-1.8GHz-and-boost.patch +++ /dev/null @@ -1,80 +0,0 @@ -diff --git a/arch/arm/boot/dts/rk3288.dtsi b/arch/arm/boot/dts/rk3288.dtsi -index 58bd91539..9c0dac199 100644 ---- a/arch/arm/boot/dts/rk3288.dtsi -+++ b/arch/arm/boot/dts/rk3288.dtsi -@@ -153,6 +153,75 @@ - opp-hz = /bits/ 64 <1608000000>; - opp-microvolt = <1350000>; - }; -+ opp@1704000000 { -+ opp-hz = /bits/ 64 <1704000000>; -+ opp-microvolt = <1350000>; -+ }; -+ opp@1800000000 { -+ opp-hz = /bits/ 64 <1800000000>; -+ opp-microvolt = <1400000>; -+ }; -+ /* boot-only frequencies below */ -+ opp@1896000000 { -+ opp-hz = /bits/ 64 <1896000000>; -+ opp-microvolt = <1425000>; -+ turbo-mode; -+ }; -+ opp@1920000000 { -+ opp-hz = /bits/ 64 <1920000000>; -+ opp-microvolt = <1425000>; -+ turbo-mode; -+ }; -+ opp@1992000000 { -+ opp-hz = /bits/ 64 <1992000000>; -+ opp-microvolt = <1450000>; -+ turbo-mode; -+ }; -+ opp@2016000000 { -+ opp-hz = /bits/ 64 <2016000000>; -+ opp-microvolt = <1475000>; -+ turbo-mode; -+ }; -+ opp@2040000000 { -+ opp-hz = /bits/ 64 <2040000000>; -+ opp-microvolt = <1475000>; -+ turbo-mode; -+ }; -+ opp@2064000000 { -+ opp-hz = /bits/ 64 <2064000000>; -+ opp-microvolt = <1475000>; -+ turbo-mode; -+ }; -+ opp@2088000000 { -+ opp-hz = /bits/ 64 <2088000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; -+ opp@2112000000 { -+ opp-hz = /bits/ 64 <2112000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; -+ opp@2136000000 { -+ opp-hz = /bits/ 64 <2136000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; -+ opp@2160000000 { -+ opp-hz = /bits/ 64 <2160000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; -+ opp@2184000000 { -+ opp-hz = /bits/ 64 <2184000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; -+ opp@2208000000 { -+ opp-hz = /bits/ 64 <2208000000>; -+ opp-microvolt = <1500000>; -+ turbo-mode; -+ }; - }; - - amba { diff --git a/buildroot-external/board/asus/tinker/patches/linux/brcmfmac-add-ap6330-firmware.patch b/buildroot-external/board/asus/tinker/patches/linux/brcmfmac-add-ap6330-firmware.patch deleted file mode 100644 index affb86e4e..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/brcmfmac-add-ap6330-firmware.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index a907d7b06..ec71996c7 100644 ---- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -+++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -@@ -619,13 +619,17 @@ BRCMF_FW_DEF(4354, "brcmfmac4354-sdio"); - BRCMF_FW_DEF(4356, "brcmfmac4356-sdio"); - BRCMF_FW_DEF(4373, "brcmfmac4373-sdio"); - -+/* AMPAK */ -+BRCMF_FW_DEF(AP6330, "brcmfmac-ap6330-sdio"); -+ - static const struct brcmf_firmware_mapping brcmf_sdio_fwnames[] = { - BRCMF_FW_ENTRY(BRCM_CC_43143_CHIP_ID, 0xFFFFFFFF, 43143), - BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x0000001F, 43241B0), - BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0x00000020, 43241B4), - BRCMF_FW_ENTRY(BRCM_CC_43241_CHIP_ID, 0xFFFFFFC0, 43241B5), - BRCMF_FW_ENTRY(BRCM_CC_4329_CHIP_ID, 0xFFFFFFFF, 4329), -- BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFFF, 4330), -+ BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0xFFFFFFEF, 4330), -+ BRCMF_FW_ENTRY(BRCM_CC_4330_CHIP_ID, 0x10, AP6330), - BRCMF_FW_ENTRY(BRCM_CC_4334_CHIP_ID, 0xFFFFFFFF, 4334), - BRCMF_FW_ENTRY(BRCM_CC_43340_CHIP_ID, 0xFFFFFFFF, 43340), - BRCMF_FW_ENTRY(BRCM_CC_43341_CHIP_ID, 0xFFFFFFFF, 43340), diff --git a/buildroot-external/board/asus/tinker/patches/linux/general-adjust-tinker-dts-hdmi-sound.patch b/buildroot-external/board/asus/tinker/patches/linux/general-adjust-tinker-dts-hdmi-sound.patch deleted file mode 100644 index 4745d5d96..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/general-adjust-tinker-dts-hdmi-sound.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/arch/arm/boot/dts/rk3288-tinker.dtsi b/arch/arm/boot/dts/rk3288-tinker.dtsi -index 01be2bca9..5439e29e0 100644 ---- a/arch/arm/boot/dts/rk3288-tinker.dtsi -+++ b/arch/arm/boot/dts/rk3288-tinker.dtsi -@@ -64,7 +64,7 @@ - sound { - compatible = "simple-audio-card"; - simple-audio-card,format = "i2s"; -- simple-audio-card,name = "rockchip,tinker-codec"; -+ simple-audio-card,name = "DW-I2S-HDMI"; - simple-audio-card,mclk-fs = <512>; - - simple-audio-card,codec { diff --git a/buildroot-external/board/asus/tinker/patches/linux/general-fix-reboot-from-kwiboo.patch b/buildroot-external/board/asus/tinker/patches/linux/general-fix-reboot-from-kwiboo.patch deleted file mode 100644 index 088b7ebe8..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/general-fix-reboot-from-kwiboo.patch +++ /dev/null @@ -1,19 +0,0 @@ -diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c -index 5bd58b95d..48ebe081f 100644 ---- a/drivers/mmc/core/core.c -+++ b/drivers/mmc/core/core.c -@@ -1684,6 +1684,14 @@ void mmc_power_off(struct mmc_host *host) - if (host->ios.power_mode == MMC_POWER_OFF) - return; - -+ mmc_set_initial_signal_voltage(host); -+ -+ /* -+ * This delay should be sufficient to allow the power supply -+ * to reach the minimum voltage. -+ */ -+ mmc_delay(host->ios.power_delay_ms); -+ - mmc_pwrseq_power_off(host); - - host->ios.clock = 0; diff --git a/buildroot-external/board/asus/tinker/patches/linux/remove-broken-dtb.patch b/buildroot-external/board/asus/tinker/patches/linux/remove-broken-dtb.patch deleted file mode 100644 index 2b66c1d74..000000000 --- a/buildroot-external/board/asus/tinker/patches/linux/remove-broken-dtb.patch +++ /dev/null @@ -1,22 +0,0 @@ -diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile -index a98dee2ae..d3cef7033 100644 ---- a/arch/arm/boot/dts/Makefile -+++ b/arch/arm/boot/dts/Makefile -@@ -916,17 +916,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \ - rk3288-rock2-square.dtb \ - rk3288-tinker.dtb \ - rk3288-tinker-s.dtb \ -- rk3288-veyron-brain.dtb \ -- rk3288-veyron-fievel.dtb \ -- rk3288-veyron-jaq.dtb \ -- rk3288-veyron-jerry.dtb \ -- rk3288-veyron-mickey.dtb \ -- rk3288-veyron-mighty.dtb \ -- rk3288-veyron-minnie.dtb \ -- rk3288-veyron-pinky.dtb \ -- rk3288-veyron-speedy.dtb \ -- rk3288-veyron-tiger.dtb \ - rk3288-vyasa.dtb - dtb-$(CONFIG_ARCH_S3C24XX) += \ - s3c2416-smdk2416.dtb - dtb-$(CONFIG_ARCH_S3C64XX) += \ diff --git a/buildroot-external/package/bluetooth-rtl8723/bluetooth-rtl8723 b/buildroot-external/package/bluetooth-rtl8723/bluetooth-rtl8723 index 9246df401..7126336b1 100755 --- a/buildroot-external/package/bluetooth-rtl8723/bluetooth-rtl8723 +++ b/buildroot-external/package/bluetooth-rtl8723/bluetooth-rtl8723 @@ -18,4 +18,4 @@ echo -e "\tBluetooth chip power up..." sleep 1 echo -e "\tResetting done" -/usr/sbin/rtk_hciattach -s 115200 /dev/ttyS0 rtk_h5 +/usr/sbin/rtk_hciattach -s 115200 /dev/ttyS0 rtk_h5 115200 flow