diff mbox

[LEDE-DEV] kernel: update kernel 4.9 to 4.9.25

Message ID 1493385466-29108-1-git-send-email-koen.vandeputte@ncentric.com
State Superseded
Headers show

Commit Message

Koen Vandeputte April 28, 2017, 1:17 p.m. UTC
- Refresh all patches
- Removed upstreamed
- Adapted 1

Compiled & Tested on targets: cns3xxx & imx6

Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
---
 include/kernel-version.mk                          |   4 +-
 .../802-usb-xhci-force-msi-renesas-xhci.patch      |   2 +-
 ...X-Add-back-handler-ignoring-external-impr.patch |  75 ------------
 ...-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch |  41 -------
 ...ave-host-bridge-window-resource-in-struct.patch | 131 ---------------------
 ...-add-support-for-performing-fake-doorbell.patch |  10 +-
 .../patches-4.9/905-BCM53573-minor-hacks.patch     |   2 +-
 .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
 ...-thermal-driver-for-reporting-core-temper.patch |   2 +-
 ...le-CONFIG_MEMCG-but-leave-it-disabled-due.patch |   4 +-
 ...-Fix-hang-for-writing-messages-larger-tha.patch |  90 --------------
 .../031-ubifs-fix-RENAME_WHITEOUT-support.patch    |  25 ----
 .../040-01-MIPS-Introduce-irq_stack.patch          |  70 -----------
 ...2-MIPS-Stack-unwinding-while-on-IRQ-stack.patch |  42 -------
 ...hange-28-to-thread_info-if-coming-from-us.patch |  48 --------
 ...IPS-Switch-to-the-irq_stack-in-interrupts.patch | 116 ------------------
 ...05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch |  21 ----
 ...ack-Fix-erroneous-jal-to-plat_irq_dispatc.patch |  35 ------
 ...part-fix-parsing-first-block-after-aligne.patch |  40 -------
 ...jecting-with-source-address-failed-policy.patch |  16 +--
 .../810-pci_disable_common_quirks.patch            |   6 +-
 .../generic/patches-4.9/904-debloat_dma_buf.patch  |   2 +-
 ...sdhc-imx-increase-the-pad-I-O-drive-stren.patch |  42 -------
 ...om-use-scm_call-to-route-GPIO-irq-to-Apps.patch |   2 +-
 .../0008-MIPS-lantiq-backport-old-timer-code.patch |   2 +-
 ...-lantiq-wifi-and-ethernet-eeprom-handling.patch |   2 +-
 ...soc-mediatek-Add-MT2701-power-dt-bindings.patch |  10 +-
 ...k-Refine-scpsys-to-support-multiple-platf.patch |  19 ++-
 ...015-soc-mediatek-Add-MT2701-scpsys-driver.patch |  12 +-
 .../patches-4.9/0071-pwm-add-pwm-mediatek.patch    |  16 +--
 .../linux/mediatek/patches-4.9/0083-mfd-led3.patch |   4 +-
 .../mediatek/patches-4.9/0085-pmic-led0.patch      |   3 -
 .../mediatek/patches-4.9/0086-pmic-led1.patch      |   4 +-
 .../mediatek/patches-4.9/0087-pmic-led2.patch      |  10 +-
 .../mediatek/patches-4.9/0088-pmic-led3.patch      |   4 +-
 target/linux/mediatek/patches-4.9/0091-dsa1.patch  |   3 -
 .../0091-net-next-mediatek-fix-DQL-support.patch   |   6 +-
 target/linux/mediatek/patches-4.9/0092-dsa2.patch  |  23 +---
 target/linux/mediatek/patches-4.9/0092-dsa3.patch  |   6 +-
 target/linux/mediatek/patches-4.9/0092-dsa4.patch  |   4 +-
 target/linux/mediatek/patches-4.9/0092-dsa5.patch  |  16 +--
 .../mediatek/patches-4.9/0093-dsa-compat.patch     |  18 +--
 .../mediatek/patches-4.9/0094-net-affinity.patch   |  12 +-
 target/linux/mediatek/patches-4.9/0095-ephy.patch  |  12 +-
 .../mediatek/patches-4.9/0096-dsa-multi-cpu.patch  |  30 ++---
 .../mediatek/patches-4.9/0097-dsa-mt7530.patch     |   6 +-
 .../patches-4.9/200-rt3883-fix-pinctrl-typo.patch  |  21 ----
 47 files changed, 91 insertions(+), 980 deletions(-)
 delete mode 100644 target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
 delete mode 100644 target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
 delete mode 100644 target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
 delete mode 100644 target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
 delete mode 100644 target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
 delete mode 100644 target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
 delete mode 100644 target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
 delete mode 100644 target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
 delete mode 100644 target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch

Comments

Koen Vandeputte May 8, 2017, 7:29 a.m. UTC | #1
Dear,

Please cancel this patch


Since this was submitted:

- 4.9.27 already arrived
- Some other kernel patches have been submitted or got staged after this 
patch was created

Logically, this one will now not apply anymore.


Koen

On 2017-04-28 15:17, Koen Vandeputte wrote:
> - Refresh all patches
> - Removed upstreamed
> - Adapted 1
>
> Compiled & Tested on targets: cns3xxx & imx6
>
> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
> ---
>   include/kernel-version.mk                          |   4 +-
>   .../802-usb-xhci-force-msi-renesas-xhci.patch      |   2 +-
>   ...X-Add-back-handler-ignoring-external-impr.patch |  75 ------------
>   ...-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch |  41 -------
>   ...ave-host-bridge-window-resource-in-struct.patch | 131 ---------------------
>   ...-add-support-for-performing-fake-doorbell.patch |  10 +-
>   .../patches-4.9/905-BCM53573-minor-hacks.patch     |   2 +-
>   .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
>   ...-thermal-driver-for-reporting-core-temper.patch |   2 +-
>   ...le-CONFIG_MEMCG-but-leave-it-disabled-due.patch |   4 +-
>   ...-Fix-hang-for-writing-messages-larger-tha.patch |  90 --------------
>   .../031-ubifs-fix-RENAME_WHITEOUT-support.patch    |  25 ----
>   .../040-01-MIPS-Introduce-irq_stack.patch          |  70 -----------
>   ...2-MIPS-Stack-unwinding-while-on-IRQ-stack.patch |  42 -------
>   ...hange-28-to-thread_info-if-coming-from-us.patch |  48 --------
>   ...IPS-Switch-to-the-irq_stack-in-interrupts.patch | 116 ------------------
>   ...05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch |  21 ----
>   ...ack-Fix-erroneous-jal-to-plat_irq_dispatc.patch |  35 ------
>   ...part-fix-parsing-first-block-after-aligne.patch |  40 -------
>   ...jecting-with-source-address-failed-policy.patch |  16 +--
>   .../810-pci_disable_common_quirks.patch            |   6 +-
>   .../generic/patches-4.9/904-debloat_dma_buf.patch  |   2 +-
>   ...sdhc-imx-increase-the-pad-I-O-drive-stren.patch |  42 -------
>   ...om-use-scm_call-to-route-GPIO-irq-to-Apps.patch |   2 +-
>   .../0008-MIPS-lantiq-backport-old-timer-code.patch |   2 +-
>   ...-lantiq-wifi-and-ethernet-eeprom-handling.patch |   2 +-
>   ...soc-mediatek-Add-MT2701-power-dt-bindings.patch |  10 +-
>   ...k-Refine-scpsys-to-support-multiple-platf.patch |  19 ++-
>   ...015-soc-mediatek-Add-MT2701-scpsys-driver.patch |  12 +-
>   .../patches-4.9/0071-pwm-add-pwm-mediatek.patch    |  16 +--
>   .../linux/mediatek/patches-4.9/0083-mfd-led3.patch |   4 +-
>   .../mediatek/patches-4.9/0085-pmic-led0.patch      |   3 -
>   .../mediatek/patches-4.9/0086-pmic-led1.patch      |   4 +-
>   .../mediatek/patches-4.9/0087-pmic-led2.patch      |  10 +-
>   .../mediatek/patches-4.9/0088-pmic-led3.patch      |   4 +-
>   target/linux/mediatek/patches-4.9/0091-dsa1.patch  |   3 -
>   .../0091-net-next-mediatek-fix-DQL-support.patch   |   6 +-
>   target/linux/mediatek/patches-4.9/0092-dsa2.patch  |  23 +---
>   target/linux/mediatek/patches-4.9/0092-dsa3.patch  |   6 +-
>   target/linux/mediatek/patches-4.9/0092-dsa4.patch  |   4 +-
>   target/linux/mediatek/patches-4.9/0092-dsa5.patch  |  16 +--
>   .../mediatek/patches-4.9/0093-dsa-compat.patch     |  18 +--
>   .../mediatek/patches-4.9/0094-net-affinity.patch   |  12 +-
>   target/linux/mediatek/patches-4.9/0095-ephy.patch  |  12 +-
>   .../mediatek/patches-4.9/0096-dsa-multi-cpu.patch  |  30 ++---
>   .../mediatek/patches-4.9/0097-dsa-mt7530.patch     |   6 +-
>   .../patches-4.9/200-rt3883-fix-pinctrl-typo.patch  |  21 ----
>   47 files changed, 91 insertions(+), 980 deletions(-)
>   delete mode 100644 target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
>   delete mode 100644 target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
>   delete mode 100644 target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
>   delete mode 100644 target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
>   delete mode 100644 target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
>   delete mode 100644 target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
>   delete mode 100644 target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
>   delete mode 100644 target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
>   delete mode 100644 target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
>
> diff --git a/include/kernel-version.mk b/include/kernel-version.mk
> index 0a58a45..dce59d6 100644
> --- a/include/kernel-version.mk
> +++ b/include/kernel-version.mk
> @@ -4,11 +4,11 @@ LINUX_RELEASE?=1
>   
>   LINUX_VERSION-3.18 = .43
>   LINUX_VERSION-4.4 = .61
> -LINUX_VERSION-4.9 = .20
> +LINUX_VERSION-4.9 = .25
>   
>   LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
>   LINUX_KERNEL_HASH-4.4.61 = 30dee7164615ad8184eba4ea6f4906b3ceb2fe462a8a4a929c8e9aab8d4a31da
> -LINUX_KERNEL_HASH-4.9.20 = 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341
> +LINUX_KERNEL_HASH-4.9.25 = 82ade4695a21a7058f1537f22b64db62fe23e6c3aa57cc55be427e30cbf92e37
>   
>   ifdef KERNEL_PATCHVER
>     LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
> diff --git a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
> index a201d79..86cab14 100644
> --- a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
> +++ b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
> @@ -44,7 +44,7 @@ produce a noisy warning.
>    		/* hcd->irq is 0, we have MSI */
>   --- a/drivers/usb/host/xhci.h
>   +++ b/drivers/usb/host/xhci.h
> -@@ -1674,6 +1674,7 @@ struct xhci_hcd {
> +@@ -1677,6 +1677,7 @@ struct xhci_hcd {
>    	/* support xHCI 0.96 spec USB2 software LPM */
>    	unsigned		sw_lpm_support:1;
>    	/* support xHCI 1.0 spec USB2 hardware LPM */
> diff --git a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch b/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
> deleted file mode 100644
> index a4f32f5..0000000
> --- a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
> +++ /dev/null
> @@ -1,75 +0,0 @@
> -From 09f3510fb70a46c8921f2cf4a90dbcae460a6820 Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
> -Date: Sat, 29 Oct 2016 13:12:29 +0200
> -Subject: [PATCH] ARM: BCM5301X: Add back handler ignoring external imprecise
> - aborts
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Since early BCM5301X days we got abort handler that was removed by
> -commit 937b12306ea79 ("ARM: BCM5301X: remove workaround imprecise abort
> -fault handler"). It assumed we need to deal only with pending aborts
> -left by the bootloader. Unfortunately this isn't true for BCM5301X.
> -
> -When probing PCI config space (device enumeration) it is expected to
> -have master aborts on the PCI bus. Most bridges don't forward (or they
> -allow disabling it) these errors onto the AXI/AMBA bus but not the
> -Northstar (BCM5301X) one.
> -
> -iProc PCIe controller on Northstar seems to be some older one, without
> -a control register for errors forwarding. It means we need to workaround
> -this at platform level. All newer platforms are not affected by this
> -issue.
> -
> -Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ----
> - arch/arm/mach-bcm/bcm_5301x.c | 28 ++++++++++++++++++++++++++++
> - 1 file changed, 28 insertions(+)
> -
> ---- a/arch/arm/mach-bcm/bcm_5301x.c
> -+++ b/arch/arm/mach-bcm/bcm_5301x.c
> -@@ -9,14 +9,42 @@
> - #include <asm/hardware/cache-l2x0.h>
> -
> - #include <asm/mach/arch.h>
> -+#include <asm/siginfo.h>
> -+#include <asm/signal.h>
> -+
> -+#define FSR_EXTERNAL		(1 << 12)
> -+#define FSR_READ		(0 << 10)
> -+#define FSR_IMPRECISE		0x0406
> -
> - static const char *const bcm5301x_dt_compat[] __initconst = {
> - 	"brcm,bcm4708",
> - 	NULL,
> - };
> -
> -+static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr,
> -+				  struct pt_regs *regs)
> -+{
> -+	/*
> -+	 * We want to ignore aborts forwarded from the PCIe bus that are
> -+	 * expected and shouldn't really be passed by the PCIe controller.
> -+	 * The biggest disadvantage is the same FSR code may be reported when
> -+	 * reading non-existing APB register and we shouldn't ignore that.
> -+	 */
> -+	if (fsr == (FSR_EXTERNAL | FSR_READ | FSR_IMPRECISE))
> -+		return 0;
> -+
> -+	return 1;
> -+}
> -+
> -+static void __init bcm5301x_init_early(void)
> -+{
> -+	hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS, BUS_OBJERR,
> -+			"imprecise external abort");
> -+}
> -+
> - DT_MACHINE_START(BCM5301X, "BCM5301X")
> - 	.l2c_aux_val	= 0,
> - 	.l2c_aux_mask	= ~0,
> - 	.dt_compat	= bcm5301x_dt_compat,
> -+	.init_early	= bcm5301x_init_early,
> - MACHINE_END
> diff --git a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch b/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
> deleted file mode 100644
> index 70df201..0000000
> --- a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
> +++ /dev/null
> @@ -1,41 +0,0 @@
> -From 0e34079cd1f674449749aafe4be07336177de90d Mon Sep 17 00:00:00 2001
> -From: Jon Mason <jon.mason@broadcom.com>
> -Date: Thu, 2 Mar 2017 19:21:32 -0500
> -Subject: [PATCH] ARM: dts: BCM5301X: Correct GIC_PPI interrupt flags
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -GIC_PPI flags were misconfigured for the timers, resulting in errors
> -like:
> -[    0.000000] GIC: PPI11 is secure or misconfigured
> -
> -Changing them to being edge triggered corrects the issue
> -
> -Suggested-by: Rafał Miłecki <rafal@milecki.pl>
> -Signed-off-by: Jon Mason <jon.mason@broadcom.com>
> -Fixes: d27509f1 ("ARM: BCM5301X: add dts files for BCM4708 SoC")
> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
> ----
> - arch/arm/boot/dts/bcm5301x.dtsi | 4 ++--
> - 1 file changed, 2 insertions(+), 2 deletions(-)
> -
> ---- a/arch/arm/boot/dts/bcm5301x.dtsi
> -+++ b/arch/arm/boot/dts/bcm5301x.dtsi
> -@@ -66,14 +66,14 @@
> - 		timer@20200 {
> - 			compatible = "arm,cortex-a9-global-timer";
> - 			reg = <0x20200 0x100>;
> --			interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
> -+			interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
> - 			clocks = <&periph_clk>;
> - 		};
> -
> - 		local-timer@20600 {
> - 			compatible = "arm,cortex-a9-twd-timer";
> - 			reg = <0x20600 0x100>;
> --			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
> -+			interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
> - 			clocks = <&periph_clk>;
> - 		};
> -
> diff --git a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch b/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
> deleted file mode 100644
> index 3de4395..0000000
> --- a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
> +++ /dev/null
> @@ -1,131 +0,0 @@
> -From 6e347b5e05ea2ac4ac467a5a1cfaebb2c7f06f80 Mon Sep 17 00:00:00 2001
> -From: Bjorn Helgaas <bhelgaas@google.com>
> -Date: Thu, 9 Mar 2017 11:27:07 -0600
> -Subject: [PATCH] PCI: iproc: Save host bridge window resource in struct
> - iproc_pcie
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -The host bridge memory window resource is inserted into the iomem_resource
> -tree and cannot be deallocated until the host bridge itself is removed.
> -
> -Previously, the window was on the stack, which meant the iomem_resource
> -entry pointed into the stack and was corrupted as soon as the probe
> -function returned, which caused memory corruption and errors like this:
> -
> -  pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
> -
> -Move the memory window resource from the stack into struct iproc_pcie so
> -its lifetime matches that of the host bridge.
> -
> -Fixes: c3245a566400 ("PCI: iproc: Request host bridge window resources")
> -Reported-and-tested-by: Rafał Miłecki <zajec5@gmail.com>
> -Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
> -CC: stable@vger.kernel.org	# v4.8+
> ----
> - drivers/pci/host/pcie-iproc-bcma.c     | 24 ++++++++++++------------
> - drivers/pci/host/pcie-iproc-platform.c | 19 ++++++++++---------
> - drivers/pci/host/pcie-iproc.h          |  1 +
> - 3 files changed, 23 insertions(+), 21 deletions(-)
> -
> ---- a/drivers/pci/host/pcie-iproc-bcma.c
> -+++ b/drivers/pci/host/pcie-iproc-bcma.c
> -@@ -44,8 +44,7 @@ static int iproc_pcie_bcma_probe(struct
> - {
> - 	struct device *dev = &bdev->dev;
> - 	struct iproc_pcie *pcie;
> --	LIST_HEAD(res);
> --	struct resource res_mem;
> -+	LIST_HEAD(resources);
> - 	int ret;
> -
> - 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
> -@@ -62,22 +61,23 @@ static int iproc_pcie_bcma_probe(struct
> -
> - 	pcie->base_addr = bdev->addr;
> -
> --	res_mem.start = bdev->addr_s[0];
> --	res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
> --	res_mem.name = "PCIe MEM space";
> --	res_mem.flags = IORESOURCE_MEM;
> --	pci_add_resource(&res, &res_mem);
> -+	pcie->mem.start = bdev->addr_s[0];
> -+	pcie->mem.end = bdev->addr_s[0] + SZ_128M - 1;
> -+	pcie->mem.name = "PCIe MEM space";
> -+	pcie->mem.flags = IORESOURCE_MEM;
> -+	pci_add_resource(&resources, &pcie->mem);
> -
> - 	pcie->map_irq = iproc_pcie_bcma_map_irq;
> -
> --	ret = iproc_pcie_setup(pcie, &res);
> --	if (ret)
> -+	ret = iproc_pcie_setup(pcie, &resources);
> -+	if (ret) {
> - 		dev_err(dev, "PCIe controller setup failed\n");
> --
> --	pci_free_resource_list(&res);
> -+		pci_free_resource_list(&resources);
> -+		return ret;
> -+	}
> -
> - 	bcma_set_drvdata(bdev, pcie);
> --	return ret;
> -+	return 0;
> - }
> -
> - static void iproc_pcie_bcma_remove(struct bcma_device *bdev)
> ---- a/drivers/pci/host/pcie-iproc-platform.c
> -+++ b/drivers/pci/host/pcie-iproc-platform.c
> -@@ -46,7 +46,7 @@ static int iproc_pcie_pltfm_probe(struct
> - 	struct device_node *np = dev->of_node;
> - 	struct resource reg;
> - 	resource_size_t iobase = 0;
> --	LIST_HEAD(res);
> -+	LIST_HEAD(resources);
> - 	int ret;
> -
> - 	of_id = of_match_device(iproc_pcie_of_match_table, dev);
> -@@ -108,23 +108,24 @@ static int iproc_pcie_pltfm_probe(struct
> - 		pcie->phy = NULL;
> - 	}
> -
> --	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &res, &iobase);
> -+	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &resources,
> -+					       &iobase);
> - 	if (ret) {
> --		dev_err(dev,
> --			"unable to get PCI host bridge resources\n");
> -+		dev_err(dev, "unable to get PCI host bridge resources\n");
> - 		return ret;
> - 	}
> -
> - 	pcie->map_irq = of_irq_parse_and_map_pci;
> -
> --	ret = iproc_pcie_setup(pcie, &res);
> --	if (ret)
> -+	ret = iproc_pcie_setup(pcie, &resources);
> -+	if (ret) {
> - 		dev_err(dev, "PCIe controller setup failed\n");
> --
> --	pci_free_resource_list(&res);
> -+		pci_free_resource_list(&resources);
> -+		return ret;
> -+	}
> -
> - 	platform_set_drvdata(pdev, pcie);
> --	return ret;
> -+	return 0;
> - }
> -
> - static int iproc_pcie_pltfm_remove(struct platform_device *pdev)
> ---- a/drivers/pci/host/pcie-iproc.h
> -+++ b/drivers/pci/host/pcie-iproc.h
> -@@ -68,6 +68,7 @@ struct iproc_pcie {
> - #ifdef CONFIG_ARM
> - 	struct pci_sys_data sysdata;
> - #endif
> -+	struct resource mem;
> - 	struct pci_bus *root_bus;
> - 	struct phy *phy;
> - 	int (*map_irq)(const struct pci_dev *, u8, u8);
> diff --git a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
> index 9e5bd83..83ea89b 100644
> --- a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
> +++ b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
> @@ -127,11 +127,11 @@ it on BCM4708 family.
>    /*
>   --- a/drivers/usb/host/xhci.h
>   +++ b/drivers/usb/host/xhci.h
> -@@ -1657,6 +1657,7 @@ struct xhci_hcd {
> - #define XHCI_SSIC_PORT_UNUSED	(1 << 22)
> - #define XHCI_NO_64BIT_SUPPORT	(1 << 23)
> +@@ -1659,6 +1659,7 @@ struct xhci_hcd {
>    #define XHCI_MISSING_CAS	(1 << 24)
> -+#define XHCI_FAKE_DOORBELL	(1 << 25)
> + /* For controller with a broken Port Disable implementation */
> + #define XHCI_BROKEN_PORT_PED	(1 << 25)
> ++#define XHCI_FAKE_DOORBELL	(1 << 26)
> +
>    	unsigned int		num_active_eps;
>    	unsigned int		limit_active_eps;
> - 	/* There are two roothubs to keep track of bus suspend info for */
> diff --git a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
> index c702390..3245269 100644
> --- a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
> +++ b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
> @@ -69,7 +69,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>    #include <linux/clockchips.h>
>    #include <linux/clocksource.h>
>    #include <linux/interrupt.h>
> -@@ -513,6 +514,16 @@ arch_timer_detect_rate(void __iomem *cnt
> +@@ -514,6 +515,16 @@ arch_timer_detect_rate(void __iomem *cnt
>    			arch_timer_rate = arch_timer_get_cntfrq();
>    	}
>    
> diff --git a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> index 0610d03..d13cae7 100644
> --- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> +++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
> @@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>    }
>   --- a/drivers/usb/core/hub.c
>   +++ b/drivers/usb/core/hub.c
> -@@ -5009,7 +5009,7 @@ static void port_event(struct usb_hub *h
> +@@ -5016,7 +5016,7 @@ static void port_event(struct usb_hub *h
>    	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
>    		u16 status = 0, unused;
>    
> diff --git a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
> index ff6084f..cbae56b 100644
> --- a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
> +++ b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
> @@ -39,7 +39,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>    	depends on X86_THERMAL_VECTOR
>   --- a/drivers/thermal/Makefile
>   +++ b/drivers/thermal/Makefile
> -@@ -41,6 +41,7 @@ obj-$(CONFIG_MAX77620_THERMAL)	+= max776
> +@@ -42,6 +42,7 @@ obj-$(CONFIG_MAX77620_THERMAL)	+= max776
>    obj-$(CONFIG_QORIQ_THERMAL)	+= qoriq_thermal.o
>    obj-$(CONFIG_DB8500_CPUFREQ_COOLING)	+= db8500_cpufreq_cooling.o
>    obj-$(CONFIG_INTEL_POWERCLAMP)	+= intel_powerclamp.o
> diff --git a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
> index 73c9ede..e17a84d 100644
> --- a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
> +++ b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
> @@ -10,7 +10,7 @@ Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave it disabled (due to
>   
>   --- a/kernel/cgroup.c
>   +++ b/kernel/cgroup.c
> -@@ -5626,7 +5626,7 @@ int __init cgroup_init_early(void)
> +@@ -5627,7 +5627,7 @@ int __init cgroup_init_early(void)
>    	return 0;
>    }
>    
> @@ -19,7 +19,7 @@ Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave it disabled (due to
>    
>    /**
>     * cgroup_init - cgroup initialization
> -@@ -6163,6 +6163,28 @@ static int __init cgroup_no_v1(char *str
> +@@ -6164,6 +6164,28 @@ static int __init cgroup_no_v1(char *str
>    }
>    __setup("cgroup_no_v1=", cgroup_no_v1);
>    
> diff --git a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch b/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
> deleted file mode 100644
> index 899c75e..0000000
> --- a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
> +++ /dev/null
> @@ -1,90 +0,0 @@
> -From 89b466914a0d49f08d00be25556ba22497b9a284 Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
> -Date: Sat, 17 Sep 2016 15:07:10 +0200
> -Subject: [PATCH] i2c: bcm2835: Fix hang for writing messages larger than 16
> - bytes
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -Writing messages larger than the FIFO size results in a hang, rendering
> -the machine unusable. This is because the RXD status flag is set on the
> -first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
> -from the buffer. The controller continues to trigger interrupts waiting
> -for the missing bytes, but bcm2835_fill_txfifo() has none to give.
> -In this situation wait_for_completion_timeout() apparently is unable to
> -stop the madness.
> -
> -The BCM2835 ARM Peripherals datasheet has this to say about the flags:
> -  TXD: is set when the FIFO has space for at least one byte of data.
> -  RXD: is set when the FIFO contains at least one byte of data.
> -  TXW: is set during a write transfer and the FIFO is less than full.
> -  RXR: is set during a read transfer and the FIFO is or more full.
> -
> -Implementing the logic from the downstream i2c-bcm2708 driver solved
> -the hang problem.
> -
> -Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
> -Reviewed-by: Eric Anholt <eric@anholt.net>
> -Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
> ----
> - drivers/i2c/busses/i2c-bcm2835.c | 22 ++++++++++++++--------
> - 1 file changed, 14 insertions(+), 8 deletions(-)
> -
> ---- a/drivers/i2c/busses/i2c-bcm2835.c
> -+++ b/drivers/i2c/busses/i2c-bcm2835.c
> -@@ -64,6 +64,7 @@ struct bcm2835_i2c_dev {
> - 	int irq;
> - 	struct i2c_adapter adapter;
> - 	struct completion completion;
> -+	struct i2c_msg *curr_msg;
> - 	u32 msg_err;
> - 	u8 *msg_buf;
> - 	size_t msg_buf_remaining;
> -@@ -126,14 +127,13 @@ static irqreturn_t bcm2835_i2c_isr(int t
> - 		return IRQ_HANDLED;
> - 	}
> -
> --	if (val & BCM2835_I2C_S_RXD) {
> --		bcm2835_drain_rxfifo(i2c_dev);
> --		if (!(val & BCM2835_I2C_S_DONE))
> --			return IRQ_HANDLED;
> --	}
> --
> - 	if (val & BCM2835_I2C_S_DONE) {
> --		if (i2c_dev->msg_buf_remaining)
> -+		if (i2c_dev->curr_msg->flags & I2C_M_RD) {
> -+			bcm2835_drain_rxfifo(i2c_dev);
> -+			val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
> -+		}
> -+
> -+		if ((val & BCM2835_I2C_S_RXD) || i2c_dev->msg_buf_remaining)
> - 			i2c_dev->msg_err = BCM2835_I2C_S_LEN;
> - 		else
> - 			i2c_dev->msg_err = 0;
> -@@ -141,11 +141,16 @@ static irqreturn_t bcm2835_i2c_isr(int t
> - 		return IRQ_HANDLED;
> - 	}
> -
> --	if (val & BCM2835_I2C_S_TXD) {
> -+	if (val & BCM2835_I2C_S_TXW) {
> - 		bcm2835_fill_txfifo(i2c_dev);
> - 		return IRQ_HANDLED;
> - 	}
> -
> -+	if (val & BCM2835_I2C_S_RXR) {
> -+		bcm2835_drain_rxfifo(i2c_dev);
> -+		return IRQ_HANDLED;
> -+	}
> -+
> - 	return IRQ_NONE;
> - }
> -
> -@@ -155,6 +160,7 @@ static int bcm2835_i2c_xfer_msg(struct b
> - 	u32 c;
> - 	unsigned long time_left;
> -
> -+	i2c_dev->curr_msg = msg;
> - 	i2c_dev->msg_buf = msg->buf;
> - 	i2c_dev->msg_buf_remaining = msg->len;
> - 	reinit_completion(&i2c_dev->completion);
> diff --git a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch b/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
> deleted file mode 100644
> index 7b81afb..0000000
> --- a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
> +++ /dev/null
> @@ -1,25 +0,0 @@
> -From: Felix Fietkau <nbd@nbd.name>
> -Date: Mon, 6 Mar 2017 09:48:52 +0100
> -Subject: [PATCH] ubifs: fix RENAME_WHITEOUT support
> -
> -Remove faulty leftover check in do_rename(), apparently introduced in a
> -merge that combined whiteout support changes with commit f03b8ad8d386
> -("fs: support RENAME_NOREPLACE for local filesystems")
> -
> -Fixes: 9e0a1fff8db5 ("ubifs: Implement RENAME_WHITEOUT")
> -Cc: stable@vger.kernel.org
> -Signed-off-by: Felix Fietkau <nbd@nbd.name>
> ----
> -
> ---- a/fs/ubifs/dir.c
> -+++ b/fs/ubifs/dir.c
> -@@ -1088,9 +1088,6 @@ static int do_rename(struct inode *old_d
> - 	struct timespec time;
> - 	unsigned int uninitialized_var(saved_nlink);
> -
> --	if (flags & ~RENAME_NOREPLACE)
> --		return -EINVAL;
> --
> - 	/*
> - 	 * Budget request settings: deletion direntry, new direntry, removing
> - 	 * the old inode, and changing old and new parent directory inodes.
> diff --git a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch b/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
> deleted file mode 100644
> index 1cdbcda..0000000
> --- a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
> +++ /dev/null
> @@ -1,70 +0,0 @@
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Mon, 19 Dec 2016 14:20:56 +0000
> -Subject: [PATCH] MIPS: Introduce irq_stack
> -
> -Allocate a per-cpu irq stack for use within interrupt handlers.
> -
> -Also add a utility function on_irq_stack to determine if a given stack
> -pointer is within the irq stack for that cpu.
> -
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> ----
> -
> ---- a/arch/mips/include/asm/irq.h
> -+++ b/arch/mips/include/asm/irq.h
> -@@ -17,6 +17,18 @@
> -
> - #include <irq.h>
> -
> -+#define IRQ_STACK_SIZE			THREAD_SIZE
> -+
> -+extern void *irq_stack[NR_CPUS];
> -+
> -+static inline bool on_irq_stack(int cpu, unsigned long sp)
> -+{
> -+	unsigned long low = (unsigned long)irq_stack[cpu];
> -+	unsigned long high = low + IRQ_STACK_SIZE;
> -+
> -+	return (low <= sp && sp <= high);
> -+}
> -+
> - #ifdef CONFIG_I8259
> - static inline int irq_canonicalize(int irq)
> - {
> ---- a/arch/mips/kernel/asm-offsets.c
> -+++ b/arch/mips/kernel/asm-offsets.c
> -@@ -102,6 +102,7 @@ void output_thread_info_defines(void)
> - 	OFFSET(TI_REGS, thread_info, regs);
> - 	DEFINE(_THREAD_SIZE, THREAD_SIZE);
> - 	DEFINE(_THREAD_MASK, THREAD_MASK);
> -+	DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
> - 	BLANK();
> - }
> -
> ---- a/arch/mips/kernel/irq.c
> -+++ b/arch/mips/kernel/irq.c
> -@@ -25,6 +25,8 @@
> - #include <linux/atomic.h>
> - #include <asm/uaccess.h>
> -
> -+void *irq_stack[NR_CPUS];
> -+
> - /*
> -  * 'what should we do if we get a hw irq event on an illegal vector'.
> -  * each architecture has to answer this themselves.
> -@@ -58,6 +60,15 @@ void __init init_IRQ(void)
> - 		clear_c0_status(ST0_IM);
> -
> - 	arch_init_irq();
> -+
> -+	for_each_possible_cpu(i) {
> -+		int irq_pages = IRQ_STACK_SIZE / PAGE_SIZE;
> -+		void *s = (void *)__get_free_pages(GFP_KERNEL, irq_pages);
> -+
> -+		irq_stack[i] = s;
> -+		pr_debug("CPU%d IRQ stack at 0x%p - 0x%p\n", i,
> -+			irq_stack[i], irq_stack[i] + IRQ_STACK_SIZE);
> -+	}
> - }
> -
> - #ifdef CONFIG_DEBUG_STACKOVERFLOW
> diff --git a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch b/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
> deleted file mode 100644
> index b2e90c8..0000000
> --- a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Mon, 19 Dec 2016 14:20:57 +0000
> -Subject: [PATCH] MIPS: Stack unwinding while on IRQ stack
> -
> -Within unwind stack, check if the stack pointer being unwound is within
> -the CPU's irq_stack and if so use that page rather than the task's stack
> -page.
> -
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> ----
> -
> ---- a/arch/mips/kernel/process.c
> -+++ b/arch/mips/kernel/process.c
> -@@ -33,6 +33,7 @@
> - #include <asm/dsemul.h>
> - #include <asm/dsp.h>
> - #include <asm/fpu.h>
> -+#include <asm/irq.h>
> - #include <asm/msa.h>
> - #include <asm/pgtable.h>
> - #include <asm/mipsregs.h>
> -@@ -556,7 +557,19 @@ EXPORT_SYMBOL(unwind_stack_by_address);
> - unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
> - 			   unsigned long pc, unsigned long *ra)
> - {
> --	unsigned long stack_page = (unsigned long)task_stack_page(task);
> -+	unsigned long stack_page = 0;
> -+	int cpu;
> -+
> -+	for_each_possible_cpu(cpu) {
> -+		if (on_irq_stack(cpu, *sp)) {
> -+			stack_page = (unsigned long)irq_stack[cpu];
> -+			break;
> -+		}
> -+	}
> -+
> -+	if (!stack_page)
> -+		stack_page = (unsigned long)task_stack_page(task);
> -+
> - 	return unwind_stack_by_address(stack_page, sp, pc, ra);
> - }
> - #endif
> diff --git a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch b/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
> deleted file mode 100644
> index e13c67b..0000000
> --- a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
> +++ /dev/null
> @@ -1,48 +0,0 @@
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Mon, 19 Dec 2016 14:20:58 +0000
> -Subject: [PATCH] MIPS: Only change $28 to thread_info if coming from user
> - mode
> -
> -The SAVE_SOME macro is used to save the execution context on all
> -exceptions.
> -If an exception occurs while executing user code, the stack is switched
> -to the kernel's stack for the current task, and register $28 is switched
> -to point to the current_thread_info, which is at the bottom of the stack
> -region.
> -If the exception occurs while executing kernel code, the stack is left,
> -and this change ensures that register $28 is not updated. This is the
> -correct behaviour when the kernel can be executing on the separate irq
> -stack, because the thread_info will not be at the base of it.
> -
> -With this change, register $28 is only switched to it's kernel
> -conventional usage of the currrent thread info pointer at the point at
> -which execution enters kernel space. Doing it on every exception was
> -redundant, but OK without an IRQ stack, but will be erroneous once that
> -is introduced.
> -
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> -Reviewed-by: Maciej W. Rozycki <macro@imgtec.com>
> ----
> -
> ---- a/arch/mips/include/asm/stackframe.h
> -+++ b/arch/mips/include/asm/stackframe.h
> -@@ -216,12 +216,19 @@
> - 		LONG_S	$25, PT_R25(sp)
> - 		LONG_S	$28, PT_R28(sp)
> - 		LONG_S	$31, PT_R31(sp)
> -+
> -+		/* Set thread_info if we're coming from user mode */
> -+		mfc0	k0, CP0_STATUS
> -+		sll	k0, 3		/* extract cu0 bit */
> -+		bltz	k0, 9f
> -+
> - 		ori	$28, sp, _THREAD_MASK
> - 		xori	$28, _THREAD_MASK
> - #ifdef CONFIG_CPU_CAVIUM_OCTEON
> - 		.set    mips64
> - 		pref    0, 0($28)       /* Prefetch the current pointer */
> - #endif
> -+9:
> - 		.set	pop
> - 		.endm
> -
> diff --git a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch b/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
> deleted file mode 100644
> index 0c7e45b..0000000
> --- a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
> +++ /dev/null
> @@ -1,116 +0,0 @@
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Mon, 19 Dec 2016 14:20:59 +0000
> -Subject: [PATCH] MIPS: Switch to the irq_stack in interrupts
> -
> -When enterring interrupt context via handle_int or except_vec_vi, switch
> -to the irq_stack of the current CPU if it is not already in use.
> -
> -The current stack pointer is masked with the thread size and compared to
> -the base or the irq stack. If it does not match then the stack pointer
> -is set to the top of that stack, otherwise this is a nested irq being
> -handled on the irq stack so the stack pointer should be left as it was.
> -
> -The in-use stack pointer is placed in the callee saved register s1. It
> -will be saved to the stack when plat_irq_dispatch is invoked and can be
> -restored once control returns here.
> -
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> ----
> -
> ---- a/arch/mips/kernel/genex.S
> -+++ b/arch/mips/kernel/genex.S
> -@@ -187,9 +187,44 @@ NESTED(handle_int, PT_SIZE, sp)
> -
> - 	LONG_L	s0, TI_REGS($28)
> - 	LONG_S	sp, TI_REGS($28)
> --	PTR_LA	ra, ret_from_irq
> --	PTR_LA	v0, plat_irq_dispatch
> --	jr	v0
> -+
> -+	/*
> -+	 * SAVE_ALL ensures we are using a valid kernel stack for the thread.
> -+	 * Check if we are already using the IRQ stack.
> -+	 */
> -+	move	s1, sp # Preserve the sp
> -+
> -+	/* Get IRQ stack for this CPU */
> -+	ASM_CPUID_MFC0	k0, ASM_SMP_CPUID_REG
> -+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
> -+	lui	k1, %hi(irq_stack)
> -+#else
> -+	lui	k1, %highest(irq_stack)
> -+	daddiu	k1, %higher(irq_stack)
> -+	dsll	k1, 16
> -+	daddiu	k1, %hi(irq_stack)
> -+	dsll	k1, 16
> -+#endif
> -+	LONG_SRL	k0, SMP_CPUID_PTRSHIFT
> -+	LONG_ADDU	k1, k0
> -+	LONG_L	t0, %lo(irq_stack)(k1)
> -+
> -+	# Check if already on IRQ stack
> -+	PTR_LI	t1, ~(_THREAD_SIZE-1)
> -+	and	t1, t1, sp
> -+	beq	t0, t1, 2f
> -+
> -+	/* Switch to IRQ stack */
> -+	li	t1, _IRQ_STACK_SIZE
> -+	PTR_ADD sp, t0, t1
> -+
> -+2:
> -+	jal	plat_irq_dispatch
> -+
> -+	/* Restore sp */
> -+	move	sp, s1
> -+
> -+	j	ret_from_irq
> - #ifdef CONFIG_CPU_MICROMIPS
> - 	nop
> - #endif
> -@@ -262,8 +297,44 @@ NESTED(except_vec_vi_handler, 0, sp)
> -
> - 	LONG_L	s0, TI_REGS($28)
> - 	LONG_S	sp, TI_REGS($28)
> --	PTR_LA	ra, ret_from_irq
> --	jr	v0
> -+
> -+	/*
> -+	 * SAVE_ALL ensures we are using a valid kernel stack for the thread.
> -+	 * Check if we are already using the IRQ stack.
> -+	 */
> -+	move	s1, sp # Preserve the sp
> -+
> -+	/* Get IRQ stack for this CPU */
> -+	ASM_CPUID_MFC0	k0, ASM_SMP_CPUID_REG
> -+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
> -+	lui	k1, %hi(irq_stack)
> -+#else
> -+	lui	k1, %highest(irq_stack)
> -+	daddiu	k1, %higher(irq_stack)
> -+	dsll	k1, 16
> -+	daddiu	k1, %hi(irq_stack)
> -+	dsll	k1, 16
> -+#endif
> -+	LONG_SRL	k0, SMP_CPUID_PTRSHIFT
> -+	LONG_ADDU	k1, k0
> -+	LONG_L	t0, %lo(irq_stack)(k1)
> -+
> -+	# Check if already on IRQ stack
> -+	PTR_LI	t1, ~(_THREAD_SIZE-1)
> -+	and	t1, t1, sp
> -+	beq	t0, t1, 2f
> -+
> -+	/* Switch to IRQ stack */
> -+	li	t1, _IRQ_STACK_SIZE
> -+	PTR_ADD sp, t0, t1
> -+
> -+2:
> -+	jal	plat_irq_dispatch
> -+
> -+	/* Restore sp */
> -+	move	sp, s1
> -+
> -+	j	ret_from_irq
> - 	END(except_vec_vi_handler)
> -
> - /*
> diff --git a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch b/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
> deleted file mode 100644
> index a4942b8..0000000
> --- a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Mon, 19 Dec 2016 14:21:00 +0000
> -Subject: [PATCH] MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
> -
> -Since do_IRQ is now invoked on a separate IRQ stack, we select
> -HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirq's may be invoked directly
> -from irq_exit(), rather than requiring do_softirq_own_stack.
> -
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> ----
> -
> ---- a/arch/mips/Kconfig
> -+++ b/arch/mips/Kconfig
> -@@ -9,6 +9,7 @@ config MIPS
> - 	select HAVE_CONTEXT_TRACKING
> - 	select HAVE_GENERIC_DMA_COHERENT
> - 	select HAVE_IDE
> -+	select HAVE_IRQ_EXIT_ON_IRQ_STACK
> - 	select HAVE_OPROFILE
> - 	select HAVE_PERF_EVENTS
> - 	select PERF_USE_VMALLOC
> diff --git a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch b/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
> deleted file mode 100644
> index bb16bb1..0000000
> --- a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
> +++ /dev/null
> @@ -1,35 +0,0 @@
> -From de856416e7143e32afc4849625616554aa060f7a Mon Sep 17 00:00:00 2001
> -From: Matt Redfearn <matt.redfearn@imgtec.com>
> -Date: Wed, 25 Jan 2017 17:00:25 +0000
> -Subject: [PATCH] MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
> -
> -Commit dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
> -changed both the normal and vectored interrupt handlers. Unfortunately
> -the vectored version, "except_vec_vi_handler", was incorrectly modified
> -to unconditionally jal to plat_irq_dispatch, rather than doing a jalr to
> -the vectored handler that has been set up. This is ok for many platforms
> -which set the vectored handler to plat_irq_dispatch anyway, but will
> -cause problems with platforms that use other handlers.
> -
> -Fixes: dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
> -Cc: Ralf Baechle <ralf@linux-mips.org>
> -Cc: Paul Burton <paul.burton@imgtec.com>
> -Cc: linux-mips@linux-mips.org
> -Patchwork: https://patchwork.linux-mips.org/patch/15110/
> -Signed-off-by: James Hogan <james.hogan@imgtec.com>
> ----
> - arch/mips/kernel/genex.S | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> ---- a/arch/mips/kernel/genex.S
> -+++ b/arch/mips/kernel/genex.S
> -@@ -329,7 +329,7 @@ NESTED(except_vec_vi_handler, 0, sp)
> - 	PTR_ADD sp, t0, t1
> -
> - 2:
> --	jal	plat_irq_dispatch
> -+	jalr	v0
> -
> - 	/* Restore sp */
> - 	move	sp, s1
> diff --git a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch b/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
> deleted file mode 100644
> index 7eed777..0000000
> --- a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
> +++ /dev/null
> @@ -1,40 +0,0 @@
> -From bd5d21310133921021d78995ad6346f908483124 Mon Sep 17 00:00:00 2001
> -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
> -Date: Sun, 20 Nov 2016 16:09:30 +0100
> -Subject: [PATCH] mtd: bcm47xxpart: fix parsing first block after aligned TRX
> -MIME-Version: 1.0
> -Content-Type: text/plain; charset=UTF-8
> -Content-Transfer-Encoding: 8bit
> -
> -After parsing TRX we should skip to the first block placed behind it.
> -Our code was working only with TRX with length not aligned to the
> -blocksize. In other cases (length aligned) it was missing the block
> -places right after TRX.
> -
> -This fixes calculation and simplifies the comment.
> -
> -Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
> -Signed-off-by: Brian Norris <computersforpeace@gmail.com>
> ----
> - drivers/mtd/bcm47xxpart.c | 10 ++++------
> - 1 file changed, 4 insertions(+), 6 deletions(-)
> -
> ---- a/drivers/mtd/bcm47xxpart.c
> -+++ b/drivers/mtd/bcm47xxpart.c
> -@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_
> -
> - 			last_trx_part = curr_part - 1;
> -
> --			/*
> --			 * We have whole TRX scanned, skip to the next part. Use
> --			 * roundown (not roundup), as the loop will increase
> --			 * offset in next step.
> --			 */
> --			offset = rounddown(offset + trx->length, blocksize);
> -+			/* Jump to the end of TRX */
> -+			offset = roundup(offset + trx->length, blocksize);
> -+			/* Next loop iteration will increase the offset */
> -+			offset -= blocksize;
> - 			continue;
> - 		}
> -
> diff --git a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> index 7c5cb45..5a86131 100644
> --- a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> +++ b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
> @@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    		case RTN_THROW:
>    		case RTN_UNREACHABLE:
>    		default:
> -@@ -2594,6 +2616,17 @@ static int ip6_pkt_prohibit_out(struct n
> +@@ -2596,6 +2618,17 @@ static int ip6_pkt_prohibit_out(struct n
>    	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
>    }
>    
> @@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    /*
>     *	Allocate a dst for local (unicast / anycast) address.
>     */
> -@@ -2829,7 +2862,8 @@ static int rtm_to_fib6_config(struct sk_
> +@@ -2831,7 +2864,8 @@ static int rtm_to_fib6_config(struct sk_
>    	if (rtm->rtm_type == RTN_UNREACHABLE ||
>    	    rtm->rtm_type == RTN_BLACKHOLE ||
>    	    rtm->rtm_type == RTN_PROHIBIT ||
> @@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    		cfg->fc_flags |= RTF_REJECT;
>    
>    	if (rtm->rtm_type == RTN_LOCAL)
> -@@ -3207,6 +3241,9 @@ static int rt6_fill_node(struct net *net
> +@@ -3209,6 +3243,9 @@ static int rt6_fill_node(struct net *net
>    		case -EACCES:
>    			rtm->rtm_type = RTN_PROHIBIT;
>    			break;
> @@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    		case -EAGAIN:
>    			rtm->rtm_type = RTN_THROW;
>    			break;
> -@@ -3480,6 +3517,8 @@ static int ip6_route_dev_notify(struct n
> +@@ -3482,6 +3519,8 @@ static int ip6_route_dev_notify(struct n
>    #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>    		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
>    		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
> @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
>    		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
>    #endif
> -@@ -3696,6 +3735,17 @@ static int __net_init ip6_route_net_init
> +@@ -3698,6 +3737,17 @@ static int __net_init ip6_route_net_init
>    	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
>    	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
>    			 ip6_template_metrics, true);
> @@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    #endif
>    
>    	net->ipv6.sysctl.flush_delay = 0;
> -@@ -3714,6 +3764,8 @@ out:
> +@@ -3716,6 +3766,8 @@ out:
>    	return ret;
>    
>    #ifdef CONFIG_IPV6_MULTIPLE_TABLES
> @@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    out_ip6_prohibit_entry:
>    	kfree(net->ipv6.ip6_prohibit_entry);
>    out_ip6_null_entry:
> -@@ -3731,6 +3783,7 @@ static void __net_exit ip6_route_net_exi
> +@@ -3733,6 +3785,7 @@ static void __net_exit ip6_route_net_exi
>    #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>    	kfree(net->ipv6.ip6_prohibit_entry);
>    	kfree(net->ipv6.ip6_blk_hole_entry);
> @@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>    #endif
>    	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
>    }
> -@@ -3828,6 +3881,9 @@ int __init ip6_route_init(void)
> +@@ -3830,6 +3883,9 @@ int __init ip6_route_init(void)
>    	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
>    	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
>    	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
> diff --git a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
> index 99ffb5e..cb9fa19 100644
> --- a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
> +++ b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
> @@ -23,7 +23,7 @@
>    /* The Mellanox Tavor device gives false positive parity errors
>     * Mark this device with a broken_parity_status, to allow
>     * PCI scanning code to "skip" this now blacklisted device.
> -@@ -3016,6 +3017,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
> +@@ -3038,6 +3039,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
>    DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
>    DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
>    
> @@ -31,7 +31,7 @@
>    
>    /*
>     * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
> -@@ -3072,6 +3074,8 @@ static void fixup_debug_report(struct pc
> +@@ -3094,6 +3096,8 @@ static void fixup_debug_report(struct pc
>    	}
>    }
>    
> @@ -40,7 +40,7 @@
>    /*
>     * Some BIOS implementations leave the Intel GPU interrupts enabled,
>     * even though no one is handling them (f.e. i915 driver is never loaded).
> -@@ -3106,6 +3110,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
> +@@ -3128,6 +3132,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
>    DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
>    DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
>    
> diff --git a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
> index 91a3870..25c9851 100644
> --- a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
> +++ b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
> @@ -32,7 +32,7 @@
>    
>    #include <uapi/linux/dma-buf.h>
>    
> -@@ -974,4 +975,5 @@ static void __exit dma_buf_deinit(void)
> +@@ -977,4 +978,5 @@ static void __exit dma_buf_deinit(void)
>    {
>    	dma_buf_uninit_debugfs();
>    }
> diff --git a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch b/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
> deleted file mode 100644
> index f97e829..0000000
> --- a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
> +++ /dev/null
> @@ -1,42 +0,0 @@
> -From 9f327845358d3dd0d8a5a7a5436b0aa5c432e757 Mon Sep 17 00:00:00 2001
> -From: Haibo Chen <haibo.chen@nxp.com>
> -Date: Wed, 19 Apr 2017 10:53:51 +0800
> -Subject: [PATCH] mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for
> - DDR50 card
> -
> -Currently for DDR50 card, it need tuning in default. We meet tuning fail
> -issue for DDR50 card and some data CRC error when DDR50 sd card works.
> -
> -This is because the default pad I/O drive strength can't make sure DDR50
> -card work stable. So increase the pad I/O drive strength for DDR50 card,
> -and use pins_100mhz.
> -
> -This fixes DDR50 card support for IMX since DDR50 tuning was enabled from
> -commit 9faac7b95ea4 ("mmc: sdhci: enable tuning for DDR50")
> -
> -Tested-and-reported-by: Tim Harvey <tharvey@gateworks.com>
> -Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
> -Cc: stable@vger.kernel.org # v4.4+
> -Acked-by: Dong Aisheng <aisheng.dong@nxp.com>
> -Acked-by: Adrian Hunter <adrian.hunter@intel.com>
> -Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
> -Signed-off-by: Tim Harvey <tharvey@gateworks.com>
> ----
> - drivers/mmc/host/sdhci-esdhc-imx.c | 1 +
> - 1 file changed, 1 insertion(+)
> -
> -diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
> -index 7123ef9..445fc47 100644
> ---- a/drivers/mmc/host/sdhci-esdhc-imx.c
> -+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
> -@@ -830,6 +830,7 @@ static int esdhc_change_pinstate(struct sdhci_host *host,
> -
> - 	switch (uhs) {
> - 	case MMC_TIMING_UHS_SDR50:
> -+	case MMC_TIMING_UHS_DDR50:
> - 		pinctrl = imx_data->pins_100mhz;
> - 		break;
> - 	case MMC_TIMING_UHS_SDR104:
> ---
> -2.7.4
> -
> diff --git a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
> index 40656d1..c6a0470 100644
> --- a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
> +++ b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
> @@ -45,7 +45,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
>   + }
>   --- a/drivers/firmware/qcom_scm-64.c
>   +++ b/drivers/firmware/qcom_scm-64.c
> -@@ -358,3 +358,12 @@ int __qcom_scm_pas_mss_reset(struct devi
> +@@ -365,3 +365,12 @@ int __qcom_scm_pas_mss_reset(struct devi
>    
>    	return ret ? : res.a1;
>    }
> diff --git a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
> index 5525503..f36a79a 100644
> --- a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
> +++ b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
> @@ -176,7 +176,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
>   -obj-y := prom.o sysctrl.o clk.o reset.o dma.o gptu.o dcdc.o
>   +obj-y := prom.o sysctrl.o clk.o reset.o dma.o timer.o dcdc.o
>    
> - obj-y += vmmc.o tffs.o
> + obj-y += vmmc.o
>    
>   --- /dev/null
>   +++ b/arch/mips/lantiq/xway/timer.c
> diff --git a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
> index d79b401..d875c55 100644
> --- a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
> +++ b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
> @@ -29,7 +29,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
>   +++ b/arch/mips/lantiq/xway/Makefile
>   @@ -2,4 +2,7 @@ obj-y := prom.o sysctrl.o clk.o reset.o
>    
> - obj-y += vmmc.o tffs.o
> + obj-y += vmmc.o
>    
>   +obj-y += eth_mac.o
>   +obj-$(CONFIG_PCI) += ath5k_eep.o
> diff --git a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
> index 28b3d7f..ce38640 100644
> --- a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
> +++ b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
> @@ -16,10 +16,8 @@ Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
>    2 files changed, 35 insertions(+), 5 deletions(-)
>    create mode 100644 include/dt-bindings/power/mt2701-power.h
>   
> -Index: linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> -===================================================================
> ---- linux-4.9.14.orig/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> -+++ linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> +--- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
> ++++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>   @@ -9,17 +9,20 @@ domain control.
>    
>    The driver implements the Generic PM domain bindings described in
> @@ -46,10 +44,8 @@ Index: linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>    
>    Optional properties:
>    - vdec-supply: Power supply for the vdec power domain
> -Index: linux-4.9.14/include/dt-bindings/power/mt2701-power.h
> -===================================================================
>   --- /dev/null
> -+++ linux-4.9.14/include/dt-bindings/power/mt2701-power.h
> ++++ b/include/dt-bindings/power/mt2701-power.h
>   @@ -0,0 +1,26 @@
>   +/*
>   + * Copyright (C) 2015 MediaTek Inc.
> diff --git a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
> index 4c9e790..0786e52 100644
> --- a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
> +++ b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
> @@ -12,8 +12,6 @@ Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
>    drivers/soc/mediatek/mtk-scpsys.c | 348 +++++++++++++++++++++++---------------
>    1 file changed, 210 insertions(+), 138 deletions(-)
>   
> -diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
> -index 837effe19907..722aac80e611 100644
>   --- a/drivers/soc/mediatek/mtk-scpsys.c
>   +++ b/drivers/soc/mediatek/mtk-scpsys.c
>   @@ -11,17 +11,15 @@
> @@ -181,7 +179,7 @@ index 837effe19907..722aac80e611 100644
>    	struct genpd_onecell_data pd_data;
>    	struct device *dev;
>    	void __iomem *base;
> -@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct device *dev)
> +@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct
>    	return scpd->data->active_wakeup;
>    }
>    
> @@ -262,7 +260,7 @@ index 837effe19907..722aac80e611 100644
>    		struct scp_domain *scpd = &scp->domains[i];
>    		const struct scp_domain_data *data = &scp_domain_data[i];
>    
> -@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_device *pdev)
> +@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_
>    			if (PTR_ERR(scpd->supply) == -ENODEV)
>    				scpd->supply = NULL;
>    			else
> @@ -273,15 +271,15 @@ index 837effe19907..722aac80e611 100644
>    
>   -	pd_data->num_domains = NUM_DOMAINS;
>   +	pd_data->num_domains = num;
> ++
> ++	init_clks(pdev, clk);
>    
>   -	for (i = 0; i < NUM_DOMAINS; i++) {
> -+	init_clks(pdev, clk);
> -+
>   +	for (i = 0; i < num; i++) {
>    		struct scp_domain *scpd = &scp->domains[i];
>    		struct generic_pm_domain *genpd = &scpd->genpd;
>    		const struct scp_domain_data *data = &scp_domain_data[i];
> -@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_device *pdev)
> +@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_
>    		scpd->scp = scp;
>    
>    		scpd->data = data;
> @@ -321,7 +319,7 @@ index 837effe19907..722aac80e611 100644
>    
>    		/*
>    		 * Initially turn on all domains to make the domains usable
> -@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_device *pdev)
> +@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_
>    	 * valid.
>    	 */
>    
> @@ -445,7 +443,7 @@ index 837effe19907..722aac80e611 100644
>    	ret = pm_genpd_add_subdomain(pd_data->domains[MT8173_POWER_DOMAIN_MFG_ASYNC],
>    		pd_data->domains[MT8173_POWER_DOMAIN_MFG_2D]);
>    	if (ret && IS_ENABLED(CONFIG_PM))
> -@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_device *pdev)
> +@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_
>    	if (ret && IS_ENABLED(CONFIG_PM))
>    		dev_err(&pdev->dev, "Failed to add subdomain: %d\n", ret);
>    
> @@ -486,6 +484,3 @@ index 837effe19907..722aac80e611 100644
>    static struct platform_driver scpsys_drv = {
>    	.probe = scpsys_probe,
>    	.driver = {
> ---
> -2.11.0
> -
> diff --git a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
> index c56a8a9..5147149 100644
> --- a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
> +++ b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
> @@ -17,10 +17,8 @@ Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
>    drivers/soc/mediatek/mtk-scpsys.c | 117 +++++++++++++++++++++++++++++++++++++-
>    2 files changed, 117 insertions(+), 2 deletions(-)
>   
> -Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
> -===================================================================
> ---- linux-4.9.14.orig/drivers/soc/mediatek/Kconfig
> -+++ linux-4.9.14/drivers/soc/mediatek/Kconfig
> +--- a/drivers/soc/mediatek/Kconfig
> ++++ b/drivers/soc/mediatek/Kconfig
>   @@ -23,7 +23,7 @@ config MTK_PMIC_WRAP
>    config MTK_SCPSYS
>    	bool "MediaTek SCPSYS Support"
> @@ -30,10 +28,8 @@ Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
>    	select REGMAP
>    	select MTK_INFRACFG
>    	select PM_GENERIC_DOMAINS if PM
> -Index: linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
> -===================================================================
> ---- linux-4.9.14.orig/drivers/soc/mediatek/mtk-scpsys.c
> -+++ linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
> +--- a/drivers/soc/mediatek/mtk-scpsys.c
> ++++ b/drivers/soc/mediatek/mtk-scpsys.c
>   @@ -20,6 +20,7 @@
>    #include <linux/regulator/consumer.h>
>    #include <linux/soc/mediatek/infracfg.h>
> diff --git a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
> index cf604f4..19be772 100644
> --- a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
> +++ b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
> @@ -13,10 +13,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
>    5 files changed, 279 insertions(+)
>    create mode 100644 drivers/pwm/pwm-mediatek.c
>   
> -Index: linux-4.9.17/drivers/pwm/Kconfig
> -===================================================================
> ---- linux-4.9.17.orig/drivers/pwm/Kconfig
> -+++ linux-4.9.17/drivers/pwm/Kconfig
> +--- a/drivers/pwm/Kconfig
> ++++ b/drivers/pwm/Kconfig
>   @@ -282,6 +282,15 @@ config PWM_MTK_DISP
>    	  To compile this driver as a module, choose M here: the module
>    	  will be called pwm-mtk-disp.
> @@ -33,10 +31,8 @@ Index: linux-4.9.17/drivers/pwm/Kconfig
>    config PWM_MXS
>    	tristate "Freescale MXS PWM support"
>    	depends on ARCH_MXS && OF
> -Index: linux-4.9.17/drivers/pwm/Makefile
> -===================================================================
> ---- linux-4.9.17.orig/drivers/pwm/Makefile
> -+++ linux-4.9.17/drivers/pwm/Makefile
> +--- a/drivers/pwm/Makefile
> ++++ b/drivers/pwm/Makefile
>   @@ -25,6 +25,7 @@ obj-$(CONFIG_PWM_LPSS)		+= pwm-lpss.o
>    obj-$(CONFIG_PWM_LPSS_PCI)	+= pwm-lpss-pci.o
>    obj-$(CONFIG_PWM_LPSS_PLATFORM)	+= pwm-lpss-platform.o
> @@ -45,10 +41,8 @@ Index: linux-4.9.17/drivers/pwm/Makefile
>    obj-$(CONFIG_PWM_MTK_DISP)	+= pwm-mtk-disp.o
>    obj-$(CONFIG_PWM_MXS)		+= pwm-mxs.o
>    obj-$(CONFIG_PWM_OMAP_DMTIMER)	+= pwm-omap-dmtimer.o
> -Index: linux-4.9.17/drivers/pwm/pwm-mediatek.c
> -===================================================================
>   --- /dev/null
> -+++ linux-4.9.17/drivers/pwm/pwm-mediatek.c
> ++++ b/drivers/pwm/pwm-mediatek.c
>   @@ -0,0 +1,230 @@
>   +/*
>   + * Mediatek Pulse Width Modulator driver
> diff --git a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
> index a72da69..f743e10 100644
> --- a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
> +++ b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
> @@ -26,11 +26,9 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>    drivers/mfd/mt6397-core.c | 4 ++++
>    1 file changed, 4 insertions(+)
>   
> -diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> -index e14d8b0..8e601c8 100644
>   --- a/drivers/mfd/mt6397-core.c
>   +++ b/drivers/mfd/mt6397-core.c
> -@@ -48,6 +48,10 @@
> +@@ -48,6 +48,10 @@ static const struct mfd_cell mt6323_devs
>    		.name = "mt6323-regulator",
>    		.of_compatible = "mediatek,mt6323-regulator"
>    	},
> diff --git a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
> index 96662dd..dee31cd 100644
> --- a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
> +++ b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
> @@ -26,9 +26,6 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>    1 file changed, 60 insertions(+)
>    create mode 100644 Documentation/devicetree/bindings/leds/leds-mt6323.txt
>   
> -diff --git a/Documentation/devicetree/bindings/leds/leds-mt6323.txt b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
> -new file mode 100644
> -index 0000000..ac38472
>   --- /dev/null
>   +++ b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
>   @@ -0,0 +1,60 @@
> diff --git a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
> index 215b1b0..2edb4ba 100644
> --- a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
> +++ b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
> @@ -26,11 +26,9 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>    Documentation/devicetree/bindings/mfd/mt6397.txt | 1 +
>    1 file changed, 1 insertion(+)
>   
> -diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt b/Documentation/devicetree/bindings/mfd/mt6397.txt
> -index c568d52..522a3bb 100644
>   --- a/Documentation/devicetree/bindings/mfd/mt6397.txt
>   +++ b/Documentation/devicetree/bindings/mfd/mt6397.txt
> -@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device with the following sub modules:
> +@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device
>    - Audio codec
>    - GPIO
>    - Clock
> diff --git a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
> index f3bc921..f0d706c 100644
> --- a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
> +++ b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
> @@ -30,10 +30,8 @@ Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
>    3 files changed, 511 insertions(+)
>    create mode 100644 drivers/leds/leds-mt6323.c
>   
> -Index: linux-4.9.17/drivers/leds/Kconfig
> -===================================================================
> ---- linux-4.9.17.orig/drivers/leds/Kconfig
> -+++ linux-4.9.17/drivers/leds/Kconfig
> +--- a/drivers/leds/Kconfig
> ++++ b/drivers/leds/Kconfig
>   @@ -117,6 +117,14 @@ config LEDS_MIKROTIK_RB532
>    	  This option enables support for the so called "User LED" of
>    	  Mikrotik's Routerboard 532.
> @@ -49,10 +47,8 @@ Index: linux-4.9.17/drivers/leds/Kconfig
>    config LEDS_S3C24XX
>    	tristate "LED Support for Samsung S3C24XX GPIO LEDs"
>    	depends on LEDS_CLASS
> -Index: linux-4.9.17/drivers/leds/leds-mt6323.c
> -===================================================================
>   --- /dev/null
> -+++ linux-4.9.17/drivers/leds/leds-mt6323.c
> ++++ b/drivers/leds/leds-mt6323.c
>   @@ -0,0 +1,502 @@
>   +/*
>   + * LED driver for Mediatek MT6323 PMIC
> diff --git a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
> index 701dcec..888218b 100644
> --- a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
> +++ b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
> @@ -28,11 +28,9 @@ Acked-by: Lee Jones <lee.jones@linaro.org>
>    drivers/mfd/mt6397-core.c | 3 +--
>    1 file changed, 1 insertion(+), 2 deletions(-)
>   
> -diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
> -index 8e601c8..04a601f 100644
>   --- a/drivers/mfd/mt6397-core.c
>   +++ b/drivers/mfd/mt6397-core.c
> -@@ -47,8 +47,7 @@
> +@@ -47,8 +47,7 @@ static const struct mfd_cell mt6323_devs
>    	{
>    		.name = "mt6323-regulator",
>    		.of_compatible = "mediatek,mt6323-regulator"
> diff --git a/target/linux/mediatek/patches-4.9/0091-dsa1.patch b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
> index c9bad93..ffc63dc 100644
> --- a/target/linux/mediatek/patches-4.9/0091-dsa1.patch
> +++ b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
> @@ -27,9 +27,6 @@ Acked-by: Rob Herring <robh@kernel.org>
>    1 file changed, 92 insertions(+)
>    create mode 100644 Documentation/devicetree/bindings/net/dsa/mt7530.txt
>   
> -diff --git a/Documentation/devicetree/bindings/net/dsa/mt7530.txt b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
> -new file mode 100644
> -index 0000000..a9bc27b
>   --- /dev/null
>   +++ b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
>   @@ -0,0 +1,92 @@
> diff --git a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
> index 5ae90e3..6e65d27 100644
> --- a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
> +++ b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
> @@ -16,10 +16,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
>    drivers/net/ethernet/mediatek/mtk_eth_soc.c |   33 ++++++++++++++++-----------
>    1 file changed, 20 insertions(+), 13 deletions(-)
>   
> -Index: linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -===================================================================
> ---- linux-4.9.14.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -+++ linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>   @@ -706,7 +706,16 @@ static int mtk_tx_map(struct sk_buff *sk
>    	WRITE_ONCE(itxd->txd3, (TX_DMA_SWC | TX_DMA_PLEN0(skb_headlen(skb)) |
>    				(!nr_frags * TX_DMA_LS0)));
> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa2.patch b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
> index 84e5cb4..a5b4242 100644
> --- a/target/linux/mediatek/patches-4.9/0092-dsa2.patch
> +++ b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
> @@ -36,11 +36,9 @@ Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>    6 files changed, 127 insertions(+)
>    create mode 100644 net/dsa/tag_mtk.c
>   
> -diff --git a/include/net/dsa.h b/include/net/dsa.h
> -index 4e13e69..3276547 100644
>   --- a/include/net/dsa.h
>   +++ b/include/net/dsa.h
> -@@ -31,6 +31,7 @@ enum dsa_tag_protocol {
> +@@ -27,6 +27,7 @@ enum dsa_tag_protocol {
>    	DSA_TAG_PROTO_EDSA,
>    	DSA_TAG_PROTO_BRCM,
>    	DSA_TAG_PROTO_QCA,
> @@ -48,31 +46,25 @@ index 4e13e69..3276547 100644
>    	DSA_TAG_LAST,		/* MUST BE LAST */
>    };
>    
> -diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
> -index 9649238..d78789b 100644
>   --- a/net/dsa/Kconfig
>   +++ b/net/dsa/Kconfig
> -@@ -31,4 +31,6 @@ config NET_DSA_TAG_TRAILER
> +@@ -41,4 +41,6 @@ config NET_DSA_TAG_TRAILER
>    config NET_DSA_TAG_QCA
>    	bool
>    
>   +config NET_DSA_TAG_MTK
>   +	bool
>    endif
> -diff --git a/net/dsa/Makefile b/net/dsa/Makefile
> -index 31d3437..9b1d478 100644
>   --- a/net/dsa/Makefile
>   +++ b/net/dsa/Makefile
> -@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o
> +@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += ta
>    dsa_core-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o
>    dsa_core-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o
>    dsa_core-$(CONFIG_NET_DSA_TAG_QCA) += tag_qca.o
>   +dsa_core-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o
> -diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
> -index b6d4f6a..617f736 100644
>   --- a/net/dsa/dsa.c
>   +++ b/net/dsa/dsa.c
> -@@ -53,6 +53,9 @@ static struct sk_buff *dsa_slave_notag_xmit(struct sk_buff *skb,
> +@@ -57,6 +57,9 @@ const struct dsa_device_ops *dsa_device_
>    #ifdef CONFIG_NET_DSA_TAG_QCA
>    	[DSA_TAG_PROTO_QCA] = &qca_netdev_ops,
>    #endif
> @@ -82,11 +74,9 @@ index b6d4f6a..617f736 100644
>    	[DSA_TAG_PROTO_NONE] = &none_ops,
>    };
>    
> -diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
> -index 0706a51..2a31399 100644
>   --- a/net/dsa/dsa_priv.h
>   +++ b/net/dsa/dsa_priv.h
> -@@ -85,4 +85,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
> +@@ -84,4 +84,7 @@ extern const struct dsa_device_ops brcm_
>    /* tag_qca.c */
>    extern const struct dsa_device_ops qca_netdev_ops;
>    
> @@ -94,9 +84,6 @@ index 0706a51..2a31399 100644
>   +extern const struct dsa_device_ops mtk_netdev_ops;
>   +
>    #endif
> -diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c
> -new file mode 100644
> -index 0000000..833a9d6
>   --- /dev/null
>   +++ b/net/dsa/tag_mtk.c
>   @@ -0,0 +1,117 @@
> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa3.patch b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
> index 7c4dc4f..385add1 100644
> --- a/target/linux/mediatek/patches-4.9/0092-dsa3.patch
> +++ b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
> @@ -33,11 +33,9 @@ Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>    drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++++
>    2 files changed, 10 insertions(+)
>   
> -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -index 9e75768..c21ed99 100644
>   --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>   +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -@@ -1846,6 +1846,12 @@ static int mtk_hw_init(struct mtk_eth *eth)
> +@@ -1855,6 +1855,12 @@ static int mtk_hw_init(struct mtk_eth *e
>    	/* GE2, Force 1000M/FD, FC ON */
>    	mtk_w32(eth, MAC_MCR_FIXED_LINK, MTK_MAC_MCR(1));
>    
> @@ -50,8 +48,6 @@ index 9e75768..c21ed99 100644
>    	/* Enable RX VLan Offloading */
>    	mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
>    
> -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
> -index 99b1c8e..996024d 100644
>   --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
>   +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
>   @@ -70,6 +70,10 @@
> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa4.patch b/target/linux/mediatek/patches-4.9/0092-dsa4.patch
> index d67b4a9..4daebfb 100644
> --- a/target/linux/mediatek/patches-4.9/0092-dsa4.patch
> +++ b/target/linux/mediatek/patches-4.9/0092-dsa4.patch
> @@ -31,11 +31,9 @@ Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>    drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 ++
>    1 file changed, 2 insertions(+)
>   
> -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -index c21ed99..84b09a4 100644
>   --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>   +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -@@ -2323,6 +2323,8 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
> +@@ -2333,6 +2333,8 @@ static int mtk_add_mac(struct mtk_eth *e
>    	eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops;
>    
>    	eth->netdev[id]->irq = eth->irq[0];
> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa5.patch b/target/linux/mediatek/patches-4.9/0092-dsa5.patch
> index 6c10137..63a40d0 100644
> --- a/target/linux/mediatek/patches-4.9/0092-dsa5.patch
> +++ b/target/linux/mediatek/patches-4.9/0092-dsa5.patch
> @@ -49,8 +49,6 @@ Signed-off-by: Landen Chao <Landen.Chao@mediatek.com>
>    create mode 100644 drivers/net/dsa/mt7530.c
>    create mode 100644 drivers/net/dsa/mt7530.h
>   
> -diff --git a/drivers/net/dsa/Kconfig b/drivers/net/dsa/Kconfig
> -index 0659846..5b322b4 100644
>   --- a/drivers/net/dsa/Kconfig
>   +++ b/drivers/net/dsa/Kconfig
>   @@ -34,4 +34,12 @@ config NET_DSA_QCA8K
> @@ -66,21 +64,16 @@ index 0659846..5b322b4 100644
>   +	  chip.
>   +
>    endmenu
> -diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
> -index a3c9416..8e629c1 100644
>   --- a/drivers/net/dsa/Makefile
>   +++ b/drivers/net/dsa/Makefile
> -@@ -2,6 +2,6 @@ obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
> - obj-$(CONFIG_NET_DSA_BCM_SF2)	+= bcm-sf2.o
> - bcm-sf2-objs			:= bcm_sf2.o bcm_sf2_cfp.o
> +@@ -1,6 +1,6 @@
> + obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
> + obj-$(CONFIG_NET_DSA_BCM_SF2)	+= bcm_sf2.o
>    obj-$(CONFIG_NET_DSA_QCA8K)	+= qca8k.o
>   -
>   +obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
>    obj-y				+= b53/
>    obj-y				+= mv88e6xxx/
> -diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
> -new file mode 100644
> -index 0000000..ad2e6f8
>   --- /dev/null
>   +++ b/drivers/net/dsa/mt7530.c
>   @@ -0,0 +1,1126 @@
> @@ -1210,9 +1203,6 @@ index 0000000..ad2e6f8
>   +MODULE_DESCRIPTION("Driver for Mediatek MT7530 Switch");
>   +MODULE_LICENSE("GPL");
>   +MODULE_ALIAS("platform:mediatek-mt7530");
> -diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
> -new file mode 100644
> -index 0000000..05a612f
>   --- /dev/null
>   +++ b/drivers/net/dsa/mt7530.h
>   @@ -0,0 +1,390 @@
> diff --git a/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch b/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
> index ca36d4c..f69078c 100644
> --- a/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
> +++ b/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
> @@ -1,7 +1,5 @@
> -Index: linux-4.9.17/drivers/net/dsa/mt7530.c
> -===================================================================
> ---- linux-4.9.17.orig/drivers/net/dsa/mt7530.c
> -+++ linux-4.9.17/drivers/net/dsa/mt7530.c
> +--- a/drivers/net/dsa/mt7530.c
> ++++ b/drivers/net/dsa/mt7530.c
>   @@ -834,6 +834,7 @@ mt7530_port_bridge_join(struct dsa_switc
>    	int i;
>    
> @@ -70,10 +68,8 @@ Index: linux-4.9.17/drivers/net/dsa/mt7530.c
>    }
>    
>    static void
> -Index: linux-4.9.17/drivers/net/dsa/mt7530.h
> -===================================================================
> ---- linux-4.9.17.orig/drivers/net/dsa/mt7530.h
> -+++ linux-4.9.17/drivers/net/dsa/mt7530.h
> +--- a/drivers/net/dsa/mt7530.h
> ++++ b/drivers/net/dsa/mt7530.h
>   @@ -379,6 +379,8 @@ struct mt7530_priv {
>    	struct mt7530_port	ports[MT7530_NUM_PORTS];
>    	/* protect among processes for registers access*/
> @@ -83,10 +79,8 @@ Index: linux-4.9.17/drivers/net/dsa/mt7530.h
>    };
>    
>    struct mt7530_hw_stats {
> -Index: linux-4.9.17/net/dsa/tag_mtk.c
> -===================================================================
> ---- linux-4.9.17.orig/net/dsa/tag_mtk.c
> -+++ linux-4.9.17/net/dsa/tag_mtk.c
> +--- a/net/dsa/tag_mtk.c
> ++++ b/net/dsa/tag_mtk.c
>   @@ -35,7 +35,7 @@ static struct sk_buff *mtk_tag_xmit(stru
>    	/* Build the tag after the MAC Source Address */
>    	mtk_tag = skb->data + 2 * ETH_ALEN;
> diff --git a/target/linux/mediatek/patches-4.9/0094-net-affinity.patch b/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
> index 8e51bdd..0c468fb 100644
> --- a/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
> +++ b/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
> @@ -1,7 +1,5 @@
> -Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -===================================================================
> ---- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -+++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>   @@ -2459,15 +2459,23 @@ static int mtk_probe(struct platform_dev
>    			goto err_deinit_hw;
>    	}
> @@ -26,10 +24,8 @@ Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>    
>    	err = mtk_mdio_init(eth);
>    	if (err)
> -Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
> -===================================================================
> ---- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.h
> -+++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
> +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
> ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
>   @@ -539,6 +539,7 @@ struct mtk_eth {
>    	struct net_device		*netdev[MTK_MAX_DEVS];
>    	struct mtk_mac			*mac[MTK_MAX_DEVS];
> diff --git a/target/linux/mediatek/patches-4.9/0095-ephy.patch b/target/linux/mediatek/patches-4.9/0095-ephy.patch
> index 52d8299..dc88ca2 100644
> --- a/target/linux/mediatek/patches-4.9/0095-ephy.patch
> +++ b/target/linux/mediatek/patches-4.9/0095-ephy.patch
> @@ -1,7 +1,5 @@
> -Index: linux-4.9.20/drivers/net/dsa/mt7530.c
> -===================================================================
> ---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
> -+++ linux-4.9.20/drivers/net/dsa/mt7530.c
> +--- a/drivers/net/dsa/mt7530.c
> ++++ b/drivers/net/dsa/mt7530.c
>   @@ -629,6 +629,11 @@ mt7530_setup(struct dsa_switch *ds)
>    	val = mt7530_read(priv, MT7530_MHWTRAP);
>    	val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
> @@ -14,10 +12,8 @@ Index: linux-4.9.20/drivers/net/dsa/mt7530.c
>    	mt7530_write(priv, MT7530_MHWTRAP, val);
>    
>    	/* Enable and reset MIB counters */
> -Index: linux-4.9.20/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -===================================================================
> ---- linux-4.9.20.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> -+++ linux-4.9.20/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
> ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>   @@ -221,6 +221,9 @@ static void mtk_phy_link_adjust(struct n
>    		netif_carrier_on(dev);
>    	else
> diff --git a/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch b/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
> index 2a562e1..1a74e63 100644
> --- a/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
> +++ b/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
> @@ -1,7 +1,5 @@
> -Index: linux-4.9.20/drivers/net/dsa/mt7530.c
> -===================================================================
> ---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
> -+++ linux-4.9.20/drivers/net/dsa/mt7530.c
> +--- a/drivers/net/dsa/mt7530.c
> ++++ b/drivers/net/dsa/mt7530.c
>   @@ -996,15 +996,7 @@ err:
>    static enum dsa_tag_protocol
>    mtk_get_tag_protocol(struct dsa_switch *ds)
> @@ -19,10 +17,8 @@ Index: linux-4.9.20/drivers/net/dsa/mt7530.c
>    }
>    
>    static struct dsa_switch_ops mt7530_switch_ops = {
> -Index: linux-4.9.20/include/net/dsa.h
> -===================================================================
> ---- linux-4.9.20.orig/include/net/dsa.h
> -+++ linux-4.9.20/include/net/dsa.h
> +--- a/include/net/dsa.h
> ++++ b/include/net/dsa.h
>   @@ -145,6 +145,8 @@ struct dsa_port {
>    	struct device_node	*dn;
>    	unsigned int		ageing_time;
> @@ -72,10 +68,8 @@ Index: linux-4.9.20/include/net/dsa.h
>    struct switchdev_trans;
>    struct switchdev_obj;
>    struct switchdev_obj_port_fdb;
> -Index: linux-4.9.20/net/dsa/dsa2.c
> -===================================================================
> ---- linux-4.9.20.orig/net/dsa/dsa2.c
> -+++ linux-4.9.20/net/dsa/dsa2.c
> +--- a/net/dsa/dsa2.c
> ++++ b/net/dsa/dsa2.c
>   @@ -248,8 +248,6 @@ static int dsa_cpu_port_apply(struct dev
>    		return err;
>    	}
> @@ -151,10 +145,8 @@ Index: linux-4.9.20/net/dsa/dsa2.c
>    	}
>    
>    	pr_info("DSA: switch %d %d parsed\n", dst->tree, ds->index);
> -Index: linux-4.9.20/net/dsa/dsa_priv.h
> -===================================================================
> ---- linux-4.9.20.orig/net/dsa/dsa_priv.h
> -+++ linux-4.9.20/net/dsa/dsa_priv.h
> +--- a/net/dsa/dsa_priv.h
> ++++ b/net/dsa/dsa_priv.h
>   @@ -43,6 +43,7 @@ struct dsa_slave_priv {
>    	int			old_duplex;
>    
> @@ -163,10 +155,8 @@ Index: linux-4.9.20/net/dsa/dsa_priv.h
>    #ifdef CONFIG_NET_POLL_CONTROLLER
>    	struct netpoll		*netpoll;
>    #endif
> -Index: linux-4.9.20/net/dsa/slave.c
> -===================================================================
> ---- linux-4.9.20.orig/net/dsa/slave.c
> -+++ linux-4.9.20/net/dsa/slave.c
> +--- a/net/dsa/slave.c
> ++++ b/net/dsa/slave.c
>   @@ -61,7 +61,7 @@ static int dsa_slave_get_iflink(const st
>    {
>    	struct dsa_slave_priv *p = netdev_priv(dev);
> diff --git a/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch b/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
> index 9f785dd..26eff60 100644
> --- a/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
> +++ b/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
> @@ -1,7 +1,5 @@
> -Index: linux-4.9.20/drivers/net/dsa/mt7530.c
> -===================================================================
> ---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
> -+++ linux-4.9.20/drivers/net/dsa/mt7530.c
> +--- a/drivers/net/dsa/mt7530.c
> ++++ b/drivers/net/dsa/mt7530.c
>   @@ -627,7 +627,7 @@ mt7530_setup(struct dsa_switch *ds)
>    
>    	/* Enable Port 6 only; P5 as GMAC5 which currently is not supported */
> diff --git a/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch b/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
> deleted file mode 100644
> index aa55fd9..0000000
> --- a/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -From 2583143af8111d430bdca0268b6cdb7ccc7c3f9d Mon Sep 17 00:00:00 2001
> -From: Daniel Golle <daniel@makrotopia.org>
> -Date: Fri, 13 Jan 2017 05:40:04 +0100
> -Subject: [PATCH] mips: ralink/rt3883: fix typo in pinctrl lna_g_func
> -
> -Signed-off-by: Daniel Golle <daniel@makrotopia.org>
> ----
> - arch/mips/ralink/rt3883.c | 2 +-
> - 1 file changed, 1 insertion(+), 1 deletion(-)
> -
> ---- a/arch/mips/ralink/rt3883.c
> -+++ b/arch/mips/ralink/rt3883.c
> -@@ -36,7 +36,7 @@ static struct rt2880_pmx_func uartlite_f
> - static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
> - static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
> - static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
> --static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna a", 0, 35, 3) };
> -+static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna g", 0, 35, 3) };
> - static struct rt2880_pmx_func pci_func[] = {
> - 	FUNC("pci-dev", 0, 40, 32),
> - 	FUNC("pci-host2", 1, 40, 32),
Alexandru Ardelean May 8, 2017, 7:36 a.m. UTC | #2
Hey,

You can also Reject your patch here:
http://patchwork.ozlabs.org/project/lede/list/

Specifically, this patch is:
http://patchwork.ozlabs.org/patch/756400/

And [for reference] you can see all patches submitted by you [from
your email account]:
http://patchwork.ozlabs.org/project/lede/list/?submitter=69184&state=*&q=&archive=&delegate=

The email list is indexed in that tool.

You do need to create an account.
But it's a simple process ; should not require too many personal details.

Patchwork is still partially used for tracking some patches sent via email.
Tho, I will admit, I'm more of a fan of the Github PR process.

Alex


On Mon, May 8, 2017 at 10:29 AM, Koen Vandeputte
<koen.vandeputte@ncentric.com> wrote:
> Dear,
>
> Please cancel this patch
>
>
> Since this was submitted:
>
> - 4.9.27 already arrived
> - Some other kernel patches have been submitted or got staged after this
> patch was created
>
> Logically, this one will now not apply anymore.
>
>
> Koen
>
> On 2017-04-28 15:17, Koen Vandeputte wrote:
>>
>> - Refresh all patches
>> - Removed upstreamed
>> - Adapted 1
>>
>> Compiled & Tested on targets: cns3xxx & imx6
>>
>> Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com>
>> ---
>>   include/kernel-version.mk                          |   4 +-
>>   .../802-usb-xhci-force-msi-renesas-xhci.patch      |   2 +-
>>   ...X-Add-back-handler-ignoring-external-impr.patch |  75 ------------
>>   ...-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch |  41 -------
>>   ...ave-host-bridge-window-resource-in-struct.patch | 131
>> ---------------------
>>   ...-add-support-for-performing-fake-doorbell.patch |  10 +-
>>   .../patches-4.9/905-BCM53573-minor-hacks.patch     |   2 +-
>>   .../patches-4.9/950-0031-Add-dwc_otg-driver.patch  |   2 +-
>>   ...-thermal-driver-for-reporting-core-temper.patch |   2 +-
>>   ...le-CONFIG_MEMCG-but-leave-it-disabled-due.patch |   4 +-
>>   ...-Fix-hang-for-writing-messages-larger-tha.patch |  90 --------------
>>   .../031-ubifs-fix-RENAME_WHITEOUT-support.patch    |  25 ----
>>   .../040-01-MIPS-Introduce-irq_stack.patch          |  70 -----------
>>   ...2-MIPS-Stack-unwinding-while-on-IRQ-stack.patch |  42 -------
>>   ...hange-28-to-thread_info-if-coming-from-us.patch |  48 --------
>>   ...IPS-Switch-to-the-irq_stack-in-interrupts.patch | 116
>> ------------------
>>   ...05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch |  21 ----
>>   ...ack-Fix-erroneous-jal-to-plat_irq_dispatc.patch |  35 ------
>>   ...part-fix-parsing-first-block-after-aligne.patch |  40 -------
>>   ...jecting-with-source-address-failed-policy.patch |  16 +--
>>   .../810-pci_disable_common_quirks.patch            |   6 +-
>>   .../generic/patches-4.9/904-debloat_dma_buf.patch  |   2 +-
>>   ...sdhc-imx-increase-the-pad-I-O-drive-stren.patch |  42 -------
>>   ...om-use-scm_call-to-route-GPIO-irq-to-Apps.patch |   2 +-
>>   .../0008-MIPS-lantiq-backport-old-timer-code.patch |   2 +-
>>   ...-lantiq-wifi-and-ethernet-eeprom-handling.patch |   2 +-
>>   ...soc-mediatek-Add-MT2701-power-dt-bindings.patch |  10 +-
>>   ...k-Refine-scpsys-to-support-multiple-platf.patch |  19 ++-
>>   ...015-soc-mediatek-Add-MT2701-scpsys-driver.patch |  12 +-
>>   .../patches-4.9/0071-pwm-add-pwm-mediatek.patch    |  16 +--
>>   .../linux/mediatek/patches-4.9/0083-mfd-led3.patch |   4 +-
>>   .../mediatek/patches-4.9/0085-pmic-led0.patch      |   3 -
>>   .../mediatek/patches-4.9/0086-pmic-led1.patch      |   4 +-
>>   .../mediatek/patches-4.9/0087-pmic-led2.patch      |  10 +-
>>   .../mediatek/patches-4.9/0088-pmic-led3.patch      |   4 +-
>>   target/linux/mediatek/patches-4.9/0091-dsa1.patch  |   3 -
>>   .../0091-net-next-mediatek-fix-DQL-support.patch   |   6 +-
>>   target/linux/mediatek/patches-4.9/0092-dsa2.patch  |  23 +---
>>   target/linux/mediatek/patches-4.9/0092-dsa3.patch  |   6 +-
>>   target/linux/mediatek/patches-4.9/0092-dsa4.patch  |   4 +-
>>   target/linux/mediatek/patches-4.9/0092-dsa5.patch  |  16 +--
>>   .../mediatek/patches-4.9/0093-dsa-compat.patch     |  18 +--
>>   .../mediatek/patches-4.9/0094-net-affinity.patch   |  12 +-
>>   target/linux/mediatek/patches-4.9/0095-ephy.patch  |  12 +-
>>   .../mediatek/patches-4.9/0096-dsa-multi-cpu.patch  |  30 ++---
>>   .../mediatek/patches-4.9/0097-dsa-mt7530.patch     |   6 +-
>>   .../patches-4.9/200-rt3883-fix-pinctrl-typo.patch  |  21 ----
>>   47 files changed, 91 insertions(+), 980 deletions(-)
>>   delete mode 100644
>> target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
>>   delete mode 100644
>> target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
>>   delete mode 100644
>> target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
>>   delete mode 100644
>> target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
>>   delete mode 100644
>> target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
>>   delete mode 100644
>> target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
>>   delete mode 100644
>> target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
>>
>> diff --git a/include/kernel-version.mk b/include/kernel-version.mk
>> index 0a58a45..dce59d6 100644
>> --- a/include/kernel-version.mk
>> +++ b/include/kernel-version.mk
>> @@ -4,11 +4,11 @@ LINUX_RELEASE?=1
>>     LINUX_VERSION-3.18 = .43
>>   LINUX_VERSION-4.4 = .61
>> -LINUX_VERSION-4.9 = .20
>> +LINUX_VERSION-4.9 = .25
>>     LINUX_KERNEL_HASH-3.18.43 =
>> 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
>>   LINUX_KERNEL_HASH-4.4.61 =
>> 30dee7164615ad8184eba4ea6f4906b3ceb2fe462a8a4a929c8e9aab8d4a31da
>> -LINUX_KERNEL_HASH-4.9.20 =
>> 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341
>> +LINUX_KERNEL_HASH-4.9.25 =
>> 82ade4695a21a7058f1537f22b64db62fe23e6c3aa57cc55be427e30cbf92e37
>>     ifdef KERNEL_PATCHVER
>>     LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip
>> $(LINUX_VERSION-$(KERNEL_PATCHVER)))
>> diff --git
>> a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
>> b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
>> index a201d79..86cab14 100644
>> ---
>> a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
>> +++
>> b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
>> @@ -44,7 +44,7 @@ produce a noisy warning.
>>                 /* hcd->irq is 0, we have MSI */
>>   --- a/drivers/usb/host/xhci.h
>>   +++ b/drivers/usb/host/xhci.h
>> -@@ -1674,6 +1674,7 @@ struct xhci_hcd {
>> +@@ -1677,6 +1677,7 @@ struct xhci_hcd {
>>         /* support xHCI 0.96 spec USB2 software LPM */
>>         unsigned                sw_lpm_support:1;
>>         /* support xHCI 1.0 spec USB2 hardware LPM */
>> diff --git
>> a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
>> b/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
>> deleted file mode 100644
>> index a4f32f5..0000000
>> ---
>> a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
>> +++ /dev/null
>> @@ -1,75 +0,0 @@
>> -From 09f3510fb70a46c8921f2cf4a90dbcae460a6820 Mon Sep 17 00:00:00 2001
>> -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
>> -Date: Sat, 29 Oct 2016 13:12:29 +0200
>> -Subject: [PATCH] ARM: BCM5301X: Add back handler ignoring external
>> imprecise
>> - aborts
>> -MIME-Version: 1.0
>> -Content-Type: text/plain; charset=UTF-8
>> -Content-Transfer-Encoding: 8bit
>> -
>> -Since early BCM5301X days we got abort handler that was removed by
>> -commit 937b12306ea79 ("ARM: BCM5301X: remove workaround imprecise abort
>> -fault handler"). It assumed we need to deal only with pending aborts
>> -left by the bootloader. Unfortunately this isn't true for BCM5301X.
>> -
>> -When probing PCI config space (device enumeration) it is expected to
>> -have master aborts on the PCI bus. Most bridges don't forward (or they
>> -allow disabling it) these errors onto the AXI/AMBA bus but not the
>> -Northstar (BCM5301X) one.
>> -
>> -iProc PCIe controller on Northstar seems to be some older one, without
>> -a control register for errors forwarding. It means we need to workaround
>> -this at platform level. All newer platforms are not affected by this
>> -issue.
>> -
>> -Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> ----
>> - arch/arm/mach-bcm/bcm_5301x.c | 28 ++++++++++++++++++++++++++++
>> - 1 file changed, 28 insertions(+)
>> -
>> ---- a/arch/arm/mach-bcm/bcm_5301x.c
>> -+++ b/arch/arm/mach-bcm/bcm_5301x.c
>> -@@ -9,14 +9,42 @@
>> - #include <asm/hardware/cache-l2x0.h>
>> -
>> - #include <asm/mach/arch.h>
>> -+#include <asm/siginfo.h>
>> -+#include <asm/signal.h>
>> -+
>> -+#define FSR_EXTERNAL          (1 << 12)
>> -+#define FSR_READ              (0 << 10)
>> -+#define FSR_IMPRECISE         0x0406
>> -
>> - static const char *const bcm5301x_dt_compat[] __initconst = {
>> -       "brcm,bcm4708",
>> -       NULL,
>> - };
>> -
>> -+static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr,
>> -+                                struct pt_regs *regs)
>> -+{
>> -+      /*
>> -+       * We want to ignore aborts forwarded from the PCIe bus that are
>> -+       * expected and shouldn't really be passed by the PCIe controller.
>> -+       * The biggest disadvantage is the same FSR code may be reported
>> when
>> -+       * reading non-existing APB register and we shouldn't ignore that.
>> -+       */
>> -+      if (fsr == (FSR_EXTERNAL | FSR_READ | FSR_IMPRECISE))
>> -+              return 0;
>> -+
>> -+      return 1;
>> -+}
>> -+
>> -+static void __init bcm5301x_init_early(void)
>> -+{
>> -+      hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS,
>> BUS_OBJERR,
>> -+                      "imprecise external abort");
>> -+}
>> -+
>> - DT_MACHINE_START(BCM5301X, "BCM5301X")
>> -       .l2c_aux_val    = 0,
>> -       .l2c_aux_mask   = ~0,
>> -       .dt_compat      = bcm5301x_dt_compat,
>> -+      .init_early     = bcm5301x_init_early,
>> - MACHINE_END
>> diff --git
>> a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
>> b/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
>> deleted file mode 100644
>> index 70df201..0000000
>> ---
>> a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
>> +++ /dev/null
>> @@ -1,41 +0,0 @@
>> -From 0e34079cd1f674449749aafe4be07336177de90d Mon Sep 17 00:00:00 2001
>> -From: Jon Mason <jon.mason@broadcom.com>
>> -Date: Thu, 2 Mar 2017 19:21:32 -0500
>> -Subject: [PATCH] ARM: dts: BCM5301X: Correct GIC_PPI interrupt flags
>> -MIME-Version: 1.0
>> -Content-Type: text/plain; charset=UTF-8
>> -Content-Transfer-Encoding: 8bit
>> -
>> -GIC_PPI flags were misconfigured for the timers, resulting in errors
>> -like:
>> -[    0.000000] GIC: PPI11 is secure or misconfigured
>> -
>> -Changing them to being edge triggered corrects the issue
>> -
>> -Suggested-by: Rafał Miłecki <rafal@milecki.pl>
>> -Signed-off-by: Jon Mason <jon.mason@broadcom.com>
>> -Fixes: d27509f1 ("ARM: BCM5301X: add dts files for BCM4708 SoC")
>> -Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
>> ----
>> - arch/arm/boot/dts/bcm5301x.dtsi | 4 ++--
>> - 1 file changed, 2 insertions(+), 2 deletions(-)
>> -
>> ---- a/arch/arm/boot/dts/bcm5301x.dtsi
>> -+++ b/arch/arm/boot/dts/bcm5301x.dtsi
>> -@@ -66,14 +66,14 @@
>> -               timer@20200 {
>> -                       compatible = "arm,cortex-a9-global-timer";
>> -                       reg = <0x20200 0x100>;
>> --                      interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
>> -+                      interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
>> -                       clocks = <&periph_clk>;
>> -               };
>> -
>> -               local-timer@20600 {
>> -                       compatible = "arm,cortex-a9-twd-timer";
>> -                       reg = <0x20600 0x100>;
>> --                      interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
>> -+                      interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
>> -                       clocks = <&periph_clk>;
>> -               };
>> -
>> diff --git
>> a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
>> b/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
>> deleted file mode 100644
>> index 3de4395..0000000
>> ---
>> a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
>> +++ /dev/null
>> @@ -1,131 +0,0 @@
>> -From 6e347b5e05ea2ac4ac467a5a1cfaebb2c7f06f80 Mon Sep 17 00:00:00 2001
>> -From: Bjorn Helgaas <bhelgaas@google.com>
>> -Date: Thu, 9 Mar 2017 11:27:07 -0600
>> -Subject: [PATCH] PCI: iproc: Save host bridge window resource in struct
>> - iproc_pcie
>> -MIME-Version: 1.0
>> -Content-Type: text/plain; charset=UTF-8
>> -Content-Transfer-Encoding: 8bit
>> -
>> -The host bridge memory window resource is inserted into the
>> iomem_resource
>> -tree and cannot be deallocated until the host bridge itself is removed.
>> -
>> -Previously, the window was on the stack, which meant the iomem_resource
>> -entry pointed into the stack and was corrupted as soon as the probe
>> -function returned, which caused memory corruption and errors like this:
>> -
>> -  pcie_iproc_bcma bcma0:8: resource collision: [mem
>> 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem
>> 0x40000000-0x47ffffff]
>> -
>> -Move the memory window resource from the stack into struct iproc_pcie so
>> -its lifetime matches that of the host bridge.
>> -
>> -Fixes: c3245a566400 ("PCI: iproc: Request host bridge window resources")
>> -Reported-and-tested-by: Rafał Miłecki <zajec5@gmail.com>
>> -Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
>> -CC: stable@vger.kernel.org     # v4.8+
>> ----
>> - drivers/pci/host/pcie-iproc-bcma.c     | 24 ++++++++++++------------
>> - drivers/pci/host/pcie-iproc-platform.c | 19 ++++++++++---------
>> - drivers/pci/host/pcie-iproc.h          |  1 +
>> - 3 files changed, 23 insertions(+), 21 deletions(-)
>> -
>> ---- a/drivers/pci/host/pcie-iproc-bcma.c
>> -+++ b/drivers/pci/host/pcie-iproc-bcma.c
>> -@@ -44,8 +44,7 @@ static int iproc_pcie_bcma_probe(struct
>> - {
>> -       struct device *dev = &bdev->dev;
>> -       struct iproc_pcie *pcie;
>> --      LIST_HEAD(res);
>> --      struct resource res_mem;
>> -+      LIST_HEAD(resources);
>> -       int ret;
>> -
>> -       pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
>> -@@ -62,22 +61,23 @@ static int iproc_pcie_bcma_probe(struct
>> -
>> -       pcie->base_addr = bdev->addr;
>> -
>> --      res_mem.start = bdev->addr_s[0];
>> --      res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
>> --      res_mem.name = "PCIe MEM space";
>> --      res_mem.flags = IORESOURCE_MEM;
>> --      pci_add_resource(&res, &res_mem);
>> -+      pcie->mem.start = bdev->addr_s[0];
>> -+      pcie->mem.end = bdev->addr_s[0] + SZ_128M - 1;
>> -+      pcie->mem.name = "PCIe MEM space";
>> -+      pcie->mem.flags = IORESOURCE_MEM;
>> -+      pci_add_resource(&resources, &pcie->mem);
>> -
>> -       pcie->map_irq = iproc_pcie_bcma_map_irq;
>> -
>> --      ret = iproc_pcie_setup(pcie, &res);
>> --      if (ret)
>> -+      ret = iproc_pcie_setup(pcie, &resources);
>> -+      if (ret) {
>> -               dev_err(dev, "PCIe controller setup failed\n");
>> --
>> --      pci_free_resource_list(&res);
>> -+              pci_free_resource_list(&resources);
>> -+              return ret;
>> -+      }
>> -
>> -       bcma_set_drvdata(bdev, pcie);
>> --      return ret;
>> -+      return 0;
>> - }
>> -
>> - static void iproc_pcie_bcma_remove(struct bcma_device *bdev)
>> ---- a/drivers/pci/host/pcie-iproc-platform.c
>> -+++ b/drivers/pci/host/pcie-iproc-platform.c
>> -@@ -46,7 +46,7 @@ static int iproc_pcie_pltfm_probe(struct
>> -       struct device_node *np = dev->of_node;
>> -       struct resource reg;
>> -       resource_size_t iobase = 0;
>> --      LIST_HEAD(res);
>> -+      LIST_HEAD(resources);
>> -       int ret;
>> -
>> -       of_id = of_match_device(iproc_pcie_of_match_table, dev);
>> -@@ -108,23 +108,24 @@ static int iproc_pcie_pltfm_probe(struct
>> -               pcie->phy = NULL;
>> -       }
>> -
>> --      ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &res,
>> &iobase);
>> -+      ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &resources,
>> -+                                             &iobase);
>> -       if (ret) {
>> --              dev_err(dev,
>> --                      "unable to get PCI host bridge resources\n");
>> -+              dev_err(dev, "unable to get PCI host bridge resources\n");
>> -               return ret;
>> -       }
>> -
>> -       pcie->map_irq = of_irq_parse_and_map_pci;
>> -
>> --      ret = iproc_pcie_setup(pcie, &res);
>> --      if (ret)
>> -+      ret = iproc_pcie_setup(pcie, &resources);
>> -+      if (ret) {
>> -               dev_err(dev, "PCIe controller setup failed\n");
>> --
>> --      pci_free_resource_list(&res);
>> -+              pci_free_resource_list(&resources);
>> -+              return ret;
>> -+      }
>> -
>> -       platform_set_drvdata(pdev, pcie);
>> --      return ret;
>> -+      return 0;
>> - }
>> -
>> - static int iproc_pcie_pltfm_remove(struct platform_device *pdev)
>> ---- a/drivers/pci/host/pcie-iproc.h
>> -+++ b/drivers/pci/host/pcie-iproc.h
>> -@@ -68,6 +68,7 @@ struct iproc_pcie {
>> - #ifdef CONFIG_ARM
>> -       struct pci_sys_data sysdata;
>> - #endif
>> -+      struct resource mem;
>> -       struct pci_bus *root_bus;
>> -       struct phy *phy;
>> -       int (*map_irq)(const struct pci_dev *, u8, u8);
>> diff --git
>> a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
>> b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
>> index 9e5bd83..83ea89b 100644
>> ---
>> a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
>> +++
>> b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
>> @@ -127,11 +127,11 @@ it on BCM4708 family.
>>    /*
>>   --- a/drivers/usb/host/xhci.h
>>   +++ b/drivers/usb/host/xhci.h
>> -@@ -1657,6 +1657,7 @@ struct xhci_hcd {
>> - #define XHCI_SSIC_PORT_UNUSED (1 << 22)
>> - #define XHCI_NO_64BIT_SUPPORT (1 << 23)
>> +@@ -1659,6 +1659,7 @@ struct xhci_hcd {
>>    #define XHCI_MISSING_CAS     (1 << 24)
>> -+#define XHCI_FAKE_DOORBELL    (1 << 25)
>> + /* For controller with a broken Port Disable implementation */
>> + #define XHCI_BROKEN_PORT_PED  (1 << 25)
>> ++#define XHCI_FAKE_DOORBELL    (1 << 26)
>> +
>>         unsigned int            num_active_eps;
>>         unsigned int            limit_active_eps;
>> -       /* There are two roothubs to keep track of bus suspend info for */
>> diff --git
>> a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
>> b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
>> index c702390..3245269 100644
>> --- a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
>> +++ b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
>> @@ -69,7 +69,7 @@ Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>>    #include <linux/clockchips.h>
>>    #include <linux/clocksource.h>
>>    #include <linux/interrupt.h>
>> -@@ -513,6 +514,16 @@ arch_timer_detect_rate(void __iomem *cnt
>> +@@ -514,6 +515,16 @@ arch_timer_detect_rate(void __iomem *cnt
>>                         arch_timer_rate = arch_timer_get_cntfrq();
>>         }
>>    diff --git
>> a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
>> b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
>> index 0610d03..d13cae7 100644
>> --- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
>> +++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
>> @@ -696,7 +696,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>>    }
>>   --- a/drivers/usb/core/hub.c
>>   +++ b/drivers/usb/core/hub.c
>> -@@ -5009,7 +5009,7 @@ static void port_event(struct usb_hub *h
>> +@@ -5016,7 +5016,7 @@ static void port_event(struct usb_hub *h
>>         if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
>>                 u16 status = 0, unused;
>>    diff --git
>> a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
>> b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
>> index ff6084f..cbae56b 100644
>> ---
>> a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
>> +++
>> b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
>> @@ -39,7 +39,7 @@ Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>>         depends on X86_THERMAL_VECTOR
>>   --- a/drivers/thermal/Makefile
>>   +++ b/drivers/thermal/Makefile
>> -@@ -41,6 +41,7 @@ obj-$(CONFIG_MAX77620_THERMAL)       += max776
>> +@@ -42,6 +42,7 @@ obj-$(CONFIG_MAX77620_THERMAL)       += max776
>>    obj-$(CONFIG_QORIQ_THERMAL)  += qoriq_thermal.o
>>    obj-$(CONFIG_DB8500_CPUFREQ_COOLING) += db8500_cpufreq_cooling.o
>>    obj-$(CONFIG_INTEL_POWERCLAMP)       += intel_powerclamp.o
>> diff --git
>> a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
>> b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
>> index 73c9ede..e17a84d 100644
>> ---
>> a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
>> +++
>> b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
>> @@ -10,7 +10,7 @@ Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave
>> it disabled (due to
>>     --- a/kernel/cgroup.c
>>   +++ b/kernel/cgroup.c
>> -@@ -5626,7 +5626,7 @@ int __init cgroup_init_early(void)
>> +@@ -5627,7 +5627,7 @@ int __init cgroup_init_early(void)
>>         return 0;
>>    }
>>    @@ -19,7 +19,7 @@ Subject: [PATCH] config: Enable CONFIG_MEMCG, but
>> leave it disabled (due to
>>       /**
>>     * cgroup_init - cgroup initialization
>> -@@ -6163,6 +6163,28 @@ static int __init cgroup_no_v1(char *str
>> +@@ -6164,6 +6164,28 @@ static int __init cgroup_no_v1(char *str
>>    }
>>    __setup("cgroup_no_v1=", cgroup_no_v1);
>>    diff --git
>> a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
>> b/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
>> deleted file mode 100644
>> index 899c75e..0000000
>> ---
>> a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
>> +++ /dev/null
>> @@ -1,90 +0,0 @@
>> -From 89b466914a0d49f08d00be25556ba22497b9a284 Mon Sep 17 00:00:00 2001
>> -From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
>> -Date: Sat, 17 Sep 2016 15:07:10 +0200
>> -Subject: [PATCH] i2c: bcm2835: Fix hang for writing messages larger than
>> 16
>> - bytes
>> -MIME-Version: 1.0
>> -Content-Type: text/plain; charset=UTF-8
>> -Content-Transfer-Encoding: 8bit
>> -
>> -Writing messages larger than the FIFO size results in a hang, rendering
>> -the machine unusable. This is because the RXD status flag is set on the
>> -first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
>> -from the buffer. The controller continues to trigger interrupts waiting
>> -for the missing bytes, but bcm2835_fill_txfifo() has none to give.
>> -In this situation wait_for_completion_timeout() apparently is unable to
>> -stop the madness.
>> -
>> -The BCM2835 ARM Peripherals datasheet has this to say about the flags:
>> -  TXD: is set when the FIFO has space for at least one byte of data.
>> -  RXD: is set when the FIFO contains at least one byte of data.
>> -  TXW: is set during a write transfer and the FIFO is less than full.
>> -  RXR: is set during a read transfer and the FIFO is or more full.
>> -
>> -Implementing the logic from the downstream i2c-bcm2708 driver solved
>> -the hang problem.
>> -
>> -Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
>> -Reviewed-by: Eric Anholt <eric@anholt.net>
>> -Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
>> ----
>> - drivers/i2c/busses/i2c-bcm2835.c | 22 ++++++++++++++--------
>> - 1 file changed, 14 insertions(+), 8 deletions(-)
>> -
>> ---- a/drivers/i2c/busses/i2c-bcm2835.c
>> -+++ b/drivers/i2c/busses/i2c-bcm2835.c
>> -@@ -64,6 +64,7 @@ struct bcm2835_i2c_dev {
>> -       int irq;
>> -       struct i2c_adapter adapter;
>> -       struct completion completion;
>> -+      struct i2c_msg *curr_msg;
>> -       u32 msg_err;
>> -       u8 *msg_buf;
>> -       size_t msg_buf_remaining;
>> -@@ -126,14 +127,13 @@ static irqreturn_t bcm2835_i2c_isr(int t
>> -               return IRQ_HANDLED;
>> -       }
>> -
>> --      if (val & BCM2835_I2C_S_RXD) {
>> --              bcm2835_drain_rxfifo(i2c_dev);
>> --              if (!(val & BCM2835_I2C_S_DONE))
>> --                      return IRQ_HANDLED;
>> --      }
>> --
>> -       if (val & BCM2835_I2C_S_DONE) {
>> --              if (i2c_dev->msg_buf_remaining)
>> -+              if (i2c_dev->curr_msg->flags & I2C_M_RD) {
>> -+                      bcm2835_drain_rxfifo(i2c_dev);
>> -+                      val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
>> -+              }
>> -+
>> -+              if ((val & BCM2835_I2C_S_RXD) ||
>> i2c_dev->msg_buf_remaining)
>> -                       i2c_dev->msg_err = BCM2835_I2C_S_LEN;
>> -               else
>> -                       i2c_dev->msg_err = 0;
>> -@@ -141,11 +141,16 @@ static irqreturn_t bcm2835_i2c_isr(int t
>> -               return IRQ_HANDLED;
>> -       }
>> -
>> --      if (val & BCM2835_I2C_S_TXD) {
>> -+      if (val & BCM2835_I2C_S_TXW) {
>> -               bcm2835_fill_txfifo(i2c_dev);
>> -               return IRQ_HANDLED;
>> -       }
>> -
>> -+      if (val & BCM2835_I2C_S_RXR) {
>> -+              bcm2835_drain_rxfifo(i2c_dev);
>> -+              return IRQ_HANDLED;
>> -+      }
>> -+
>> -       return IRQ_NONE;
>> - }
>> -
>> -@@ -155,6 +160,7 @@ static int bcm2835_i2c_xfer_msg(struct b
>> -       u32 c;
>> -       unsigned long time_left;
>> -
>> -+      i2c_dev->curr_msg = msg;
>> -       i2c_dev->msg_buf = msg->buf;
>> -       i2c_dev->msg_buf_remaining = msg->len;
>> -       reinit_completion(&i2c_dev->completion);
>> diff --git
>> a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
>> b/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
>> deleted file mode 100644
>> index 7b81afb..0000000
>> ---
>> a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
>> +++ /dev/null
>> @@ -1,25 +0,0 @@
>> -From: Felix Fietkau <nbd@nbd.name>
>> -Date: Mon, 6 Mar 2017 09:48:52 +0100
>> -Subject: [PATCH] ubifs: fix RENAME_WHITEOUT support
>> -
>> -Remove faulty leftover check in do_rename(), apparently introduced in a
>> -merge that combined whiteout support changes with commit f03b8ad8d386
>> -("fs: support RENAME_NOREPLACE for local filesystems")
>> -
>> -Fixes: 9e0a1fff8db5 ("ubifs: Implement RENAME_WHITEOUT")
>> -Cc: stable@vger.kernel.org
>> -Signed-off-by: Felix Fietkau <nbd@nbd.name>
>> ----
>> -
>> ---- a/fs/ubifs/dir.c
>> -+++ b/fs/ubifs/dir.c
>> -@@ -1088,9 +1088,6 @@ static int do_rename(struct inode *old_d
>> -       struct timespec time;
>> -       unsigned int uninitialized_var(saved_nlink);
>> -
>> --      if (flags & ~RENAME_NOREPLACE)
>> --              return -EINVAL;
>> --
>> -       /*
>> -        * Budget request settings: deletion direntry, new direntry,
>> removing
>> -        * the old inode, and changing old and new parent directory
>> inodes.
>> diff --git
>> a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
>> b/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
>> deleted file mode 100644
>> index 1cdbcda..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
>> +++ /dev/null
>> @@ -1,70 +0,0 @@
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Mon, 19 Dec 2016 14:20:56 +0000
>> -Subject: [PATCH] MIPS: Introduce irq_stack
>> -
>> -Allocate a per-cpu irq stack for use within interrupt handlers.
>> -
>> -Also add a utility function on_irq_stack to determine if a given stack
>> -pointer is within the irq stack for that cpu.
>> -
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> ----
>> -
>> ---- a/arch/mips/include/asm/irq.h
>> -+++ b/arch/mips/include/asm/irq.h
>> -@@ -17,6 +17,18 @@
>> -
>> - #include <irq.h>
>> -
>> -+#define IRQ_STACK_SIZE                        THREAD_SIZE
>> -+
>> -+extern void *irq_stack[NR_CPUS];
>> -+
>> -+static inline bool on_irq_stack(int cpu, unsigned long sp)
>> -+{
>> -+      unsigned long low = (unsigned long)irq_stack[cpu];
>> -+      unsigned long high = low + IRQ_STACK_SIZE;
>> -+
>> -+      return (low <= sp && sp <= high);
>> -+}
>> -+
>> - #ifdef CONFIG_I8259
>> - static inline int irq_canonicalize(int irq)
>> - {
>> ---- a/arch/mips/kernel/asm-offsets.c
>> -+++ b/arch/mips/kernel/asm-offsets.c
>> -@@ -102,6 +102,7 @@ void output_thread_info_defines(void)
>> -       OFFSET(TI_REGS, thread_info, regs);
>> -       DEFINE(_THREAD_SIZE, THREAD_SIZE);
>> -       DEFINE(_THREAD_MASK, THREAD_MASK);
>> -+      DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
>> -       BLANK();
>> - }
>> -
>> ---- a/arch/mips/kernel/irq.c
>> -+++ b/arch/mips/kernel/irq.c
>> -@@ -25,6 +25,8 @@
>> - #include <linux/atomic.h>
>> - #include <asm/uaccess.h>
>> -
>> -+void *irq_stack[NR_CPUS];
>> -+
>> - /*
>> -  * 'what should we do if we get a hw irq event on an illegal vector'.
>> -  * each architecture has to answer this themselves.
>> -@@ -58,6 +60,15 @@ void __init init_IRQ(void)
>> -               clear_c0_status(ST0_IM);
>> -
>> -       arch_init_irq();
>> -+
>> -+      for_each_possible_cpu(i) {
>> -+              int irq_pages = IRQ_STACK_SIZE / PAGE_SIZE;
>> -+              void *s = (void *)__get_free_pages(GFP_KERNEL, irq_pages);
>> -+
>> -+              irq_stack[i] = s;
>> -+              pr_debug("CPU%d IRQ stack at 0x%p - 0x%p\n", i,
>> -+                      irq_stack[i], irq_stack[i] + IRQ_STACK_SIZE);
>> -+      }
>> - }
>> -
>> - #ifdef CONFIG_DEBUG_STACKOVERFLOW
>> diff --git
>> a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
>> b/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
>> deleted file mode 100644
>> index b2e90c8..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
>> +++ /dev/null
>> @@ -1,42 +0,0 @@
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Mon, 19 Dec 2016 14:20:57 +0000
>> -Subject: [PATCH] MIPS: Stack unwinding while on IRQ stack
>> -
>> -Within unwind stack, check if the stack pointer being unwound is within
>> -the CPU's irq_stack and if so use that page rather than the task's stack
>> -page.
>> -
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> ----
>> -
>> ---- a/arch/mips/kernel/process.c
>> -+++ b/arch/mips/kernel/process.c
>> -@@ -33,6 +33,7 @@
>> - #include <asm/dsemul.h>
>> - #include <asm/dsp.h>
>> - #include <asm/fpu.h>
>> -+#include <asm/irq.h>
>> - #include <asm/msa.h>
>> - #include <asm/pgtable.h>
>> - #include <asm/mipsregs.h>
>> -@@ -556,7 +557,19 @@ EXPORT_SYMBOL(unwind_stack_by_address);
>> - unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
>> -                          unsigned long pc, unsigned long *ra)
>> - {
>> --      unsigned long stack_page = (unsigned long)task_stack_page(task);
>> -+      unsigned long stack_page = 0;
>> -+      int cpu;
>> -+
>> -+      for_each_possible_cpu(cpu) {
>> -+              if (on_irq_stack(cpu, *sp)) {
>> -+                      stack_page = (unsigned long)irq_stack[cpu];
>> -+                      break;
>> -+              }
>> -+      }
>> -+
>> -+      if (!stack_page)
>> -+              stack_page = (unsigned long)task_stack_page(task);
>> -+
>> -       return unwind_stack_by_address(stack_page, sp, pc, ra);
>> - }
>> - #endif
>> diff --git
>> a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
>> b/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
>> deleted file mode 100644
>> index e13c67b..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
>> +++ /dev/null
>> @@ -1,48 +0,0 @@
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Mon, 19 Dec 2016 14:20:58 +0000
>> -Subject: [PATCH] MIPS: Only change $28 to thread_info if coming from user
>> - mode
>> -
>> -The SAVE_SOME macro is used to save the execution context on all
>> -exceptions.
>> -If an exception occurs while executing user code, the stack is switched
>> -to the kernel's stack for the current task, and register $28 is switched
>> -to point to the current_thread_info, which is at the bottom of the stack
>> -region.
>> -If the exception occurs while executing kernel code, the stack is left,
>> -and this change ensures that register $28 is not updated. This is the
>> -correct behaviour when the kernel can be executing on the separate irq
>> -stack, because the thread_info will not be at the base of it.
>> -
>> -With this change, register $28 is only switched to it's kernel
>> -conventional usage of the currrent thread info pointer at the point at
>> -which execution enters kernel space. Doing it on every exception was
>> -redundant, but OK without an IRQ stack, but will be erroneous once that
>> -is introduced.
>> -
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Reviewed-by: Maciej W. Rozycki <macro@imgtec.com>
>> ----
>> -
>> ---- a/arch/mips/include/asm/stackframe.h
>> -+++ b/arch/mips/include/asm/stackframe.h
>> -@@ -216,12 +216,19 @@
>> -               LONG_S  $25, PT_R25(sp)
>> -               LONG_S  $28, PT_R28(sp)
>> -               LONG_S  $31, PT_R31(sp)
>> -+
>> -+              /* Set thread_info if we're coming from user mode */
>> -+              mfc0    k0, CP0_STATUS
>> -+              sll     k0, 3           /* extract cu0 bit */
>> -+              bltz    k0, 9f
>> -+
>> -               ori     $28, sp, _THREAD_MASK
>> -               xori    $28, _THREAD_MASK
>> - #ifdef CONFIG_CPU_CAVIUM_OCTEON
>> -               .set    mips64
>> -               pref    0, 0($28)       /* Prefetch the current pointer */
>> - #endif
>> -+9:
>> -               .set    pop
>> -               .endm
>> -
>> diff --git
>> a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
>> b/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
>> deleted file mode 100644
>> index 0c7e45b..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
>> +++ /dev/null
>> @@ -1,116 +0,0 @@
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Mon, 19 Dec 2016 14:20:59 +0000
>> -Subject: [PATCH] MIPS: Switch to the irq_stack in interrupts
>> -
>> -When enterring interrupt context via handle_int or except_vec_vi, switch
>> -to the irq_stack of the current CPU if it is not already in use.
>> -
>> -The current stack pointer is masked with the thread size and compared to
>> -the base or the irq stack. If it does not match then the stack pointer
>> -is set to the top of that stack, otherwise this is a nested irq being
>> -handled on the irq stack so the stack pointer should be left as it was.
>> -
>> -The in-use stack pointer is placed in the callee saved register s1. It
>> -will be saved to the stack when plat_irq_dispatch is invoked and can be
>> -restored once control returns here.
>> -
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> ----
>> -
>> ---- a/arch/mips/kernel/genex.S
>> -+++ b/arch/mips/kernel/genex.S
>> -@@ -187,9 +187,44 @@ NESTED(handle_int, PT_SIZE, sp)
>> -
>> -       LONG_L  s0, TI_REGS($28)
>> -       LONG_S  sp, TI_REGS($28)
>> --      PTR_LA  ra, ret_from_irq
>> --      PTR_LA  v0, plat_irq_dispatch
>> --      jr      v0
>> -+
>> -+      /*
>> -+       * SAVE_ALL ensures we are using a valid kernel stack for the
>> thread.
>> -+       * Check if we are already using the IRQ stack.
>> -+       */
>> -+      move    s1, sp # Preserve the sp
>> -+
>> -+      /* Get IRQ stack for this CPU */
>> -+      ASM_CPUID_MFC0  k0, ASM_SMP_CPUID_REG
>> -+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
>> -+      lui     k1, %hi(irq_stack)
>> -+#else
>> -+      lui     k1, %highest(irq_stack)
>> -+      daddiu  k1, %higher(irq_stack)
>> -+      dsll    k1, 16
>> -+      daddiu  k1, %hi(irq_stack)
>> -+      dsll    k1, 16
>> -+#endif
>> -+      LONG_SRL        k0, SMP_CPUID_PTRSHIFT
>> -+      LONG_ADDU       k1, k0
>> -+      LONG_L  t0, %lo(irq_stack)(k1)
>> -+
>> -+      # Check if already on IRQ stack
>> -+      PTR_LI  t1, ~(_THREAD_SIZE-1)
>> -+      and     t1, t1, sp
>> -+      beq     t0, t1, 2f
>> -+
>> -+      /* Switch to IRQ stack */
>> -+      li      t1, _IRQ_STACK_SIZE
>> -+      PTR_ADD sp, t0, t1
>> -+
>> -+2:
>> -+      jal     plat_irq_dispatch
>> -+
>> -+      /* Restore sp */
>> -+      move    sp, s1
>> -+
>> -+      j       ret_from_irq
>> - #ifdef CONFIG_CPU_MICROMIPS
>> -       nop
>> - #endif
>> -@@ -262,8 +297,44 @@ NESTED(except_vec_vi_handler, 0, sp)
>> -
>> -       LONG_L  s0, TI_REGS($28)
>> -       LONG_S  sp, TI_REGS($28)
>> --      PTR_LA  ra, ret_from_irq
>> --      jr      v0
>> -+
>> -+      /*
>> -+       * SAVE_ALL ensures we are using a valid kernel stack for the
>> thread.
>> -+       * Check if we are already using the IRQ stack.
>> -+       */
>> -+      move    s1, sp # Preserve the sp
>> -+
>> -+      /* Get IRQ stack for this CPU */
>> -+      ASM_CPUID_MFC0  k0, ASM_SMP_CPUID_REG
>> -+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
>> -+      lui     k1, %hi(irq_stack)
>> -+#else
>> -+      lui     k1, %highest(irq_stack)
>> -+      daddiu  k1, %higher(irq_stack)
>> -+      dsll    k1, 16
>> -+      daddiu  k1, %hi(irq_stack)
>> -+      dsll    k1, 16
>> -+#endif
>> -+      LONG_SRL        k0, SMP_CPUID_PTRSHIFT
>> -+      LONG_ADDU       k1, k0
>> -+      LONG_L  t0, %lo(irq_stack)(k1)
>> -+
>> -+      # Check if already on IRQ stack
>> -+      PTR_LI  t1, ~(_THREAD_SIZE-1)
>> -+      and     t1, t1, sp
>> -+      beq     t0, t1, 2f
>> -+
>> -+      /* Switch to IRQ stack */
>> -+      li      t1, _IRQ_STACK_SIZE
>> -+      PTR_ADD sp, t0, t1
>> -+
>> -+2:
>> -+      jal     plat_irq_dispatch
>> -+
>> -+      /* Restore sp */
>> -+      move    sp, s1
>> -+
>> -+      j       ret_from_irq
>> -       END(except_vec_vi_handler)
>> -
>> - /*
>> diff --git
>> a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
>> b/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
>> deleted file mode 100644
>> index a4942b8..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
>> +++ /dev/null
>> @@ -1,21 +0,0 @@
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Mon, 19 Dec 2016 14:21:00 +0000
>> -Subject: [PATCH] MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
>> -
>> -Since do_IRQ is now invoked on a separate IRQ stack, we select
>> -HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirq's may be invoked directly
>> -from irq_exit(), rather than requiring do_softirq_own_stack.
>> -
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> ----
>> -
>> ---- a/arch/mips/Kconfig
>> -+++ b/arch/mips/Kconfig
>> -@@ -9,6 +9,7 @@ config MIPS
>> -       select HAVE_CONTEXT_TRACKING
>> -       select HAVE_GENERIC_DMA_COHERENT
>> -       select HAVE_IDE
>> -+      select HAVE_IRQ_EXIT_ON_IRQ_STACK
>> -       select HAVE_OPROFILE
>> -       select HAVE_PERF_EVENTS
>> -       select PERF_USE_VMALLOC
>> diff --git
>> a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
>> b/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
>> deleted file mode 100644
>> index bb16bb1..0000000
>> ---
>> a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
>> +++ /dev/null
>> @@ -1,35 +0,0 @@
>> -From de856416e7143e32afc4849625616554aa060f7a Mon Sep 17 00:00:00 2001
>> -From: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Date: Wed, 25 Jan 2017 17:00:25 +0000
>> -Subject: [PATCH] MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
>> -
>> -Commit dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
>> -changed both the normal and vectored interrupt handlers. Unfortunately
>> -the vectored version, "except_vec_vi_handler", was incorrectly modified
>> -to unconditionally jal to plat_irq_dispatch, rather than doing a jalr to
>> -the vectored handler that has been set up. This is ok for many platforms
>> -which set the vectored handler to plat_irq_dispatch anyway, but will
>> -cause problems with platforms that use other handlers.
>> -
>> -Fixes: dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
>> -Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
>> -Cc: Ralf Baechle <ralf@linux-mips.org>
>> -Cc: Paul Burton <paul.burton@imgtec.com>
>> -Cc: linux-mips@linux-mips.org
>> -Patchwork: https://patchwork.linux-mips.org/patch/15110/
>> -Signed-off-by: James Hogan <james.hogan@imgtec.com>
>> ----
>> - arch/mips/kernel/genex.S | 2 +-
>> - 1 file changed, 1 insertion(+), 1 deletion(-)
>> -
>> ---- a/arch/mips/kernel/genex.S
>> -+++ b/arch/mips/kernel/genex.S
>> -@@ -329,7 +329,7 @@ NESTED(except_vec_vi_handler, 0, sp)
>> -       PTR_ADD sp, t0, t1
>> -
>> - 2:
>> --      jal     plat_irq_dispatch
>> -+      jalr    v0
>> -
>> -       /* Restore sp */
>> -       move    sp, s1
>> diff --git
>> a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
>> b/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
>> deleted file mode 100644
>> index 7eed777..0000000
>> ---
>> a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
>> +++ /dev/null
>> @@ -1,40 +0,0 @@
>> -From bd5d21310133921021d78995ad6346f908483124 Mon Sep 17 00:00:00 2001
>> -From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
>> -Date: Sun, 20 Nov 2016 16:09:30 +0100
>> -Subject: [PATCH] mtd: bcm47xxpart: fix parsing first block after aligned
>> TRX
>> -MIME-Version: 1.0
>> -Content-Type: text/plain; charset=UTF-8
>> -Content-Transfer-Encoding: 8bit
>> -
>> -After parsing TRX we should skip to the first block placed behind it.
>> -Our code was working only with TRX with length not aligned to the
>> -blocksize. In other cases (length aligned) it was missing the block
>> -places right after TRX.
>> -
>> -This fixes calculation and simplifies the comment.
>> -
>> -Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
>> -Signed-off-by: Brian Norris <computersforpeace@gmail.com>
>> ----
>> - drivers/mtd/bcm47xxpart.c | 10 ++++------
>> - 1 file changed, 4 insertions(+), 6 deletions(-)
>> -
>> ---- a/drivers/mtd/bcm47xxpart.c
>> -+++ b/drivers/mtd/bcm47xxpart.c
>> -@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_
>> -
>> -                       last_trx_part = curr_part - 1;
>> -
>> --                      /*
>> --                       * We have whole TRX scanned, skip to the next
>> part. Use
>> --                       * roundown (not roundup), as the loop will
>> increase
>> --                       * offset in next step.
>> --                       */
>> --                      offset = rounddown(offset + trx->length,
>> blocksize);
>> -+                      /* Jump to the end of TRX */
>> -+                      offset = roundup(offset + trx->length, blocksize);
>> -+                      /* Next loop iteration will increase the offset */
>> -+                      offset -= blocksize;
>> -                       continue;
>> -               }
>> -
>> diff --git
>> a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
>> b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
>> index 7c5cb45..5a86131 100644
>> ---
>> a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
>> +++
>> b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
>> @@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>                 case RTN_THROW:
>>                 case RTN_UNREACHABLE:
>>                 default:
>> -@@ -2594,6 +2616,17 @@ static int ip6_pkt_prohibit_out(struct n
>> +@@ -2596,6 +2618,17 @@ static int ip6_pkt_prohibit_out(struct n
>>         return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED,
>> IPSTATS_MIB_OUTNOROUTES);
>>    }
>>    @@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>    /*
>>     *   Allocate a dst for local (unicast / anycast) address.
>>     */
>> -@@ -2829,7 +2862,8 @@ static int rtm_to_fib6_config(struct sk_
>> +@@ -2831,7 +2864,8 @@ static int rtm_to_fib6_config(struct sk_
>>         if (rtm->rtm_type == RTN_UNREACHABLE ||
>>             rtm->rtm_type == RTN_BLACKHOLE ||
>>             rtm->rtm_type == RTN_PROHIBIT ||
>> @@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>                 cfg->fc_flags |= RTF_REJECT;
>>         if (rtm->rtm_type == RTN_LOCAL)
>> -@@ -3207,6 +3241,9 @@ static int rt6_fill_node(struct net *net
>> +@@ -3209,6 +3243,9 @@ static int rt6_fill_node(struct net *net
>>                 case -EACCES:
>>                         rtm->rtm_type = RTN_PROHIBIT;
>>                         break;
>> @@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>                 case -EAGAIN:
>>                         rtm->rtm_type = RTN_THROW;
>>                         break;
>> -@@ -3480,6 +3517,8 @@ static int ip6_route_dev_notify(struct n
>> +@@ -3482,6 +3519,8 @@ static int ip6_route_dev_notify(struct n
>>    #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>>                 net->ipv6.ip6_prohibit_entry->dst.dev = dev;
>>                 net->ipv6.ip6_prohibit_entry->rt6i_idev =
>> in6_dev_get(dev);
>> @@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>                 net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
>>                 net->ipv6.ip6_blk_hole_entry->rt6i_idev =
>> in6_dev_get(dev);
>>    #endif
>> -@@ -3696,6 +3735,17 @@ static int __net_init ip6_route_net_init
>> +@@ -3698,6 +3737,17 @@ static int __net_init ip6_route_net_init
>>         net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
>>         dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
>>                          ip6_template_metrics, true);
>> @@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>    #endif
>>         net->ipv6.sysctl.flush_delay = 0;
>> -@@ -3714,6 +3764,8 @@ out:
>> +@@ -3716,6 +3766,8 @@ out:
>>         return ret;
>>       #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>> @@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>    out_ip6_prohibit_entry:
>>         kfree(net->ipv6.ip6_prohibit_entry);
>>    out_ip6_null_entry:
>> -@@ -3731,6 +3783,7 @@ static void __net_exit ip6_route_net_exi
>> +@@ -3733,6 +3785,7 @@ static void __net_exit ip6_route_net_exi
>>    #ifdef CONFIG_IPV6_MULTIPLE_TABLES
>>         kfree(net->ipv6.ip6_prohibit_entry);
>>         kfree(net->ipv6.ip6_blk_hole_entry);
>> @@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
>>    #endif
>>         dst_entries_destroy(&net->ipv6.ip6_dst_ops);
>>    }
>> -@@ -3828,6 +3881,9 @@ int __init ip6_route_init(void)
>> +@@ -3830,6 +3883,9 @@ int __init ip6_route_init(void)
>>         init_net.ipv6.ip6_prohibit_entry->rt6i_idev =
>> in6_dev_get(init_net.loopback_dev);
>>         init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
>>         init_net.ipv6.ip6_blk_hole_entry->rt6i_idev =
>> in6_dev_get(init_net.loopback_dev);
>> diff --git
>> a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
>> b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
>> index 99ffb5e..cb9fa19 100644
>> --- a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
>> +++ b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
>> @@ -23,7 +23,7 @@
>>    /* The Mellanox Tavor device gives false positive parity errors
>>     * Mark this device with a broken_parity_status, to allow
>>     * PCI scanning code to "skip" this now blacklisted device.
>> -@@ -3016,6 +3017,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
>> +@@ -3038,6 +3039,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
>>    DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9,
>> quirk_intel_mc_errata);
>>    DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa,
>> quirk_intel_mc_errata);
>>    @@ -31,7 +31,7 @@
>>       /*
>>     * Ivytown NTB BAR sizes are misreported by the hardware due to an
>> erratum.  To
>> -@@ -3072,6 +3074,8 @@ static void fixup_debug_report(struct pc
>> +@@ -3094,6 +3096,8 @@ static void fixup_debug_report(struct pc
>>         }
>>    }
>>    @@ -40,7 +40,7 @@
>>    /*
>>     * Some BIOS implementations leave the Intel GPU interrupts enabled,
>>     * even though no one is handling them (f.e. i915 driver is never
>> loaded).
>> -@@ -3106,6 +3110,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
>> +@@ -3128,6 +3132,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
>>    DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
>>    DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
>>    diff --git a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
>> b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
>> index 91a3870..25c9851 100644
>> --- a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
>> +++ b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
>> @@ -32,7 +32,7 @@
>>       #include <uapi/linux/dma-buf.h>
>>    -@@ -974,4 +975,5 @@ static void __exit dma_buf_deinit(void)
>> +@@ -977,4 +978,5 @@ static void __exit dma_buf_deinit(void)
>>    {
>>         dma_buf_uninit_debugfs();
>>    }
>> diff --git
>> a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
>> b/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
>> deleted file mode 100644
>> index f97e829..0000000
>> ---
>> a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
>> +++ /dev/null
>> @@ -1,42 +0,0 @@
>> -From 9f327845358d3dd0d8a5a7a5436b0aa5c432e757 Mon Sep 17 00:00:00 2001
>> -From: Haibo Chen <haibo.chen@nxp.com>
>> -Date: Wed, 19 Apr 2017 10:53:51 +0800
>> -Subject: [PATCH] mmc: sdhci-esdhc-imx: increase the pad I/O drive
>> strength for
>> - DDR50 card
>> -
>> -Currently for DDR50 card, it need tuning in default. We meet tuning fail
>> -issue for DDR50 card and some data CRC error when DDR50 sd card works.
>> -
>> -This is because the default pad I/O drive strength can't make sure DDR50
>> -card work stable. So increase the pad I/O drive strength for DDR50 card,
>> -and use pins_100mhz.
>> -
>> -This fixes DDR50 card support for IMX since DDR50 tuning was enabled from
>> -commit 9faac7b95ea4 ("mmc: sdhci: enable tuning for DDR50")
>> -
>> -Tested-and-reported-by: Tim Harvey <tharvey@gateworks.com>
>> -Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
>> -Cc: stable@vger.kernel.org # v4.4+
>> -Acked-by: Dong Aisheng <aisheng.dong@nxp.com>
>> -Acked-by: Adrian Hunter <adrian.hunter@intel.com>
>> -Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
>> -Signed-off-by: Tim Harvey <tharvey@gateworks.com>
>> ----
>> - drivers/mmc/host/sdhci-esdhc-imx.c | 1 +
>> - 1 file changed, 1 insertion(+)
>> -
>> -diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c
>> b/drivers/mmc/host/sdhci-esdhc-imx.c
>> -index 7123ef9..445fc47 100644
>> ---- a/drivers/mmc/host/sdhci-esdhc-imx.c
>> -+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
>> -@@ -830,6 +830,7 @@ static int esdhc_change_pinstate(struct sdhci_host
>> *host,
>> -
>> -       switch (uhs) {
>> -       case MMC_TIMING_UHS_SDR50:
>> -+      case MMC_TIMING_UHS_DDR50:
>> -               pinctrl = imx_data->pins_100mhz;
>> -               break;
>> -       case MMC_TIMING_UHS_SDR104:
>> ---
>> -2.7.4
>> -
>> diff --git
>> a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
>> b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
>> index 40656d1..c6a0470 100644
>> ---
>> a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
>> +++
>> b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
>> @@ -45,7 +45,7 @@ Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
>>   + }
>>   --- a/drivers/firmware/qcom_scm-64.c
>>   +++ b/drivers/firmware/qcom_scm-64.c
>> -@@ -358,3 +358,12 @@ int __qcom_scm_pas_mss_reset(struct devi
>> +@@ -365,3 +365,12 @@ int __qcom_scm_pas_mss_reset(struct devi
>>         return ret ? : res.a1;
>>    }
>> diff --git
>> a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
>> b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
>> index 5525503..f36a79a 100644
>> ---
>> a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
>> +++
>> b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
>> @@ -176,7 +176,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
>>   -obj-y := prom.o sysctrl.o clk.o reset.o dma.o gptu.o dcdc.o
>>   +obj-y := prom.o sysctrl.o clk.o reset.o dma.o timer.o dcdc.o
>>    - obj-y += vmmc.o tffs.o
>> + obj-y += vmmc.o
>>      --- /dev/null
>>   +++ b/arch/mips/lantiq/xway/timer.c
>> diff --git
>> a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
>> b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
>> index d79b401..d875c55 100644
>> ---
>> a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
>> +++
>> b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
>> @@ -29,7 +29,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
>>   +++ b/arch/mips/lantiq/xway/Makefile
>>   @@ -2,4 +2,7 @@ obj-y := prom.o sysctrl.o clk.o reset.o
>>    - obj-y += vmmc.o tffs.o
>> + obj-y += vmmc.o
>>      +obj-y += eth_mac.o
>>   +obj-$(CONFIG_PCI) += ath5k_eep.o
>> diff --git
>> a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
>> b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
>> index 28b3d7f..ce38640 100644
>> ---
>> a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
>> +++
>> b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
>> @@ -16,10 +16,8 @@ Signed-off-by: Matthias Brugger
>> <matthias.bgg@gmail.com>
>>    2 files changed, 35 insertions(+), 5 deletions(-)
>>    create mode 100644 include/dt-bindings/power/mt2701-power.h
>>   -Index:
>> linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>> -===================================================================
>> ----
>> linux-4.9.14.orig/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>> -+++
>> linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>> +--- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>> ++++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>>   @@ -9,17 +9,20 @@ domain control.
>>       The driver implements the Generic PM domain bindings described in
>> @@ -46,10 +44,8 @@ Index:
>> linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
>>       Optional properties:
>>    - vdec-supply: Power supply for the vdec power domain
>> -Index: linux-4.9.14/include/dt-bindings/power/mt2701-power.h
>> -===================================================================
>>   --- /dev/null
>> -+++ linux-4.9.14/include/dt-bindings/power/mt2701-power.h
>> ++++ b/include/dt-bindings/power/mt2701-power.h
>>   @@ -0,0 +1,26 @@
>>   +/*
>>   + * Copyright (C) 2015 MediaTek Inc.
>> diff --git
>> a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
>> b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
>> index 4c9e790..0786e52 100644
>> ---
>> a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
>> +++
>> b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
>> @@ -12,8 +12,6 @@ Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
>>    drivers/soc/mediatek/mtk-scpsys.c | 348
>> +++++++++++++++++++++++---------------
>>    1 file changed, 210 insertions(+), 138 deletions(-)
>>   -diff --git a/drivers/soc/mediatek/mtk-scpsys.c
>> b/drivers/soc/mediatek/mtk-scpsys.c
>> -index 837effe19907..722aac80e611 100644
>>   --- a/drivers/soc/mediatek/mtk-scpsys.c
>>   +++ b/drivers/soc/mediatek/mtk-scpsys.c
>>   @@ -11,17 +11,15 @@
>> @@ -181,7 +179,7 @@ index 837effe19907..722aac80e611 100644
>>         struct genpd_onecell_data pd_data;
>>         struct device *dev;
>>         void __iomem *base;
>> -@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct device
>> *dev)
>> +@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct
>>         return scpd->data->active_wakeup;
>>    }
>>    @@ -262,7 +260,7 @@ index 837effe19907..722aac80e611 100644
>>                 struct scp_domain *scpd = &scp->domains[i];
>>                 const struct scp_domain_data *data = &scp_domain_data[i];
>>    -@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_device
>> *pdev)
>> +@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_
>>                         if (PTR_ERR(scpd->supply) == -ENODEV)
>>                                 scpd->supply = NULL;
>>                         else
>> @@ -273,15 +271,15 @@ index 837effe19907..722aac80e611 100644
>>      -  pd_data->num_domains = NUM_DOMAINS;
>>   +     pd_data->num_domains = num;
>> ++
>> ++      init_clks(pdev, clk);
>>      -  for (i = 0; i < NUM_DOMAINS; i++) {
>> -+      init_clks(pdev, clk);
>> -+
>>   +     for (i = 0; i < num; i++) {
>>                 struct scp_domain *scpd = &scp->domains[i];
>>                 struct generic_pm_domain *genpd = &scpd->genpd;
>>                 const struct scp_domain_data *data = &scp_domain_data[i];
>> -@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_device
>> *pdev)
>> +@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_
>>                 scpd->scp = scp;
>>                 scpd->data = data;
>> @@ -321,7 +319,7 @@ index 837effe19907..722aac80e611 100644
>>                 /*
>>                  * Initially turn on all domains to make the domains
>> usable
>> -@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_device
>> *pdev)
>> +@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_
>>          * valid.
>>          */
>>    @@ -445,7 +443,7 @@ index 837effe19907..722aac80e611 100644
>>         ret =
>> pm_genpd_add_subdomain(pd_data->domains[MT8173_POWER_DOMAIN_MFG_ASYNC],
>>                 pd_data->domains[MT8173_POWER_DOMAIN_MFG_2D]);
>>         if (ret && IS_ENABLED(CONFIG_PM))
>> -@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_device
>> *pdev)
>> +@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_
>>         if (ret && IS_ENABLED(CONFIG_PM))
>>                 dev_err(&pdev->dev, "Failed to add subdomain: %d\n", ret);
>>    @@ -486,6 +484,3 @@ index 837effe19907..722aac80e611 100644
>>    static struct platform_driver scpsys_drv = {
>>         .probe = scpsys_probe,
>>         .driver = {
>> ---
>> -2.11.0
>> -
>> diff --git
>> a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
>> b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
>> index c56a8a9..5147149 100644
>> ---
>> a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
>> +++
>> b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
>> @@ -17,10 +17,8 @@ Signed-off-by: Matthias Brugger
>> <matthias.bgg@gmail.com>
>>    drivers/soc/mediatek/mtk-scpsys.c | 117
>> +++++++++++++++++++++++++++++++++++++-
>>    2 files changed, 117 insertions(+), 2 deletions(-)
>>   -Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
>> -===================================================================
>> ---- linux-4.9.14.orig/drivers/soc/mediatek/Kconfig
>> -+++ linux-4.9.14/drivers/soc/mediatek/Kconfig
>> +--- a/drivers/soc/mediatek/Kconfig
>> ++++ b/drivers/soc/mediatek/Kconfig
>>   @@ -23,7 +23,7 @@ config MTK_PMIC_WRAP
>>    config MTK_SCPSYS
>>         bool "MediaTek SCPSYS Support"
>> @@ -30,10 +28,8 @@ Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
>>         select REGMAP
>>         select MTK_INFRACFG
>>         select PM_GENERIC_DOMAINS if PM
>> -Index: linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
>> -===================================================================
>> ---- linux-4.9.14.orig/drivers/soc/mediatek/mtk-scpsys.c
>> -+++ linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
>> +--- a/drivers/soc/mediatek/mtk-scpsys.c
>> ++++ b/drivers/soc/mediatek/mtk-scpsys.c
>>   @@ -20,6 +20,7 @@
>>    #include <linux/regulator/consumer.h>
>>    #include <linux/soc/mediatek/infracfg.h>
>> diff --git
>> a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
>> b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
>> index cf604f4..19be772 100644
>> --- a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
>> +++ b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
>> @@ -13,10 +13,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
>>    5 files changed, 279 insertions(+)
>>    create mode 100644 drivers/pwm/pwm-mediatek.c
>>   -Index: linux-4.9.17/drivers/pwm/Kconfig
>> -===================================================================
>> ---- linux-4.9.17.orig/drivers/pwm/Kconfig
>> -+++ linux-4.9.17/drivers/pwm/Kconfig
>> +--- a/drivers/pwm/Kconfig
>> ++++ b/drivers/pwm/Kconfig
>>   @@ -282,6 +282,15 @@ config PWM_MTK_DISP
>>           To compile this driver as a module, choose M here: the module
>>           will be called pwm-mtk-disp.
>> @@ -33,10 +31,8 @@ Index: linux-4.9.17/drivers/pwm/Kconfig
>>    config PWM_MXS
>>         tristate "Freescale MXS PWM support"
>>         depends on ARCH_MXS && OF
>> -Index: linux-4.9.17/drivers/pwm/Makefile
>> -===================================================================
>> ---- linux-4.9.17.orig/drivers/pwm/Makefile
>> -+++ linux-4.9.17/drivers/pwm/Makefile
>> +--- a/drivers/pwm/Makefile
>> ++++ b/drivers/pwm/Makefile
>>   @@ -25,6 +25,7 @@ obj-$(CONFIG_PWM_LPSS)              += pwm-lpss.o
>>    obj-$(CONFIG_PWM_LPSS_PCI)   += pwm-lpss-pci.o
>>    obj-$(CONFIG_PWM_LPSS_PLATFORM)      += pwm-lpss-platform.o
>> @@ -45,10 +41,8 @@ Index: linux-4.9.17/drivers/pwm/Makefile
>>    obj-$(CONFIG_PWM_MTK_DISP)   += pwm-mtk-disp.o
>>    obj-$(CONFIG_PWM_MXS)                += pwm-mxs.o
>>    obj-$(CONFIG_PWM_OMAP_DMTIMER)       += pwm-omap-dmtimer.o
>> -Index: linux-4.9.17/drivers/pwm/pwm-mediatek.c
>> -===================================================================
>>   --- /dev/null
>> -+++ linux-4.9.17/drivers/pwm/pwm-mediatek.c
>> ++++ b/drivers/pwm/pwm-mediatek.c
>>   @@ -0,0 +1,230 @@
>>   +/*
>>   + * Mediatek Pulse Width Modulator driver
>> diff --git a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
>> b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
>> index a72da69..f743e10 100644
>> --- a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
>> +++ b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
>> @@ -26,11 +26,9 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>>    drivers/mfd/mt6397-core.c | 4 ++++
>>    1 file changed, 4 insertions(+)
>>   -diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
>> -index e14d8b0..8e601c8 100644
>>   --- a/drivers/mfd/mt6397-core.c
>>   +++ b/drivers/mfd/mt6397-core.c
>> -@@ -48,6 +48,10 @@
>> +@@ -48,6 +48,10 @@ static const struct mfd_cell mt6323_devs
>>                 .name = "mt6323-regulator",
>>                 .of_compatible = "mediatek,mt6323-regulator"
>>         },
>> diff --git a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
>> b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
>> index 96662dd..dee31cd 100644
>> --- a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
>> +++ b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
>> @@ -26,9 +26,6 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>>    1 file changed, 60 insertions(+)
>>    create mode 100644
>> Documentation/devicetree/bindings/leds/leds-mt6323.txt
>>   -diff --git a/Documentation/devicetree/bindings/leds/leds-mt6323.txt
>> b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
>> -new file mode 100644
>> -index 0000000..ac38472
>>   --- /dev/null
>>   +++ b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
>>   @@ -0,0 +1,60 @@
>> diff --git a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
>> b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
>> index 215b1b0..2edb4ba 100644
>> --- a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
>> +++ b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
>> @@ -26,11 +26,9 @@ Signed-off-by: Sean Wang <sean.wang@mediatek.com>
>>    Documentation/devicetree/bindings/mfd/mt6397.txt | 1 +
>>    1 file changed, 1 insertion(+)
>>   -diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt
>> b/Documentation/devicetree/bindings/mfd/mt6397.txt
>> -index c568d52..522a3bb 100644
>>   --- a/Documentation/devicetree/bindings/mfd/mt6397.txt
>>   +++ b/Documentation/devicetree/bindings/mfd/mt6397.txt
>> -@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device with the
>> following sub modules:
>> +@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device
>>    - Audio codec
>>    - GPIO
>>    - Clock
>> diff --git a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
>> b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
>> index f3bc921..f0d706c 100644
>> --- a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
>> +++ b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
>> @@ -30,10 +30,8 @@ Reviewed-by: Jacek Anaszewski
>> <jacek.anaszewski@gmail.com>
>>    3 files changed, 511 insertions(+)
>>    create mode 100644 drivers/leds/leds-mt6323.c
>>   -Index: linux-4.9.17/drivers/leds/Kconfig
>> -===================================================================
>> ---- linux-4.9.17.orig/drivers/leds/Kconfig
>> -+++ linux-4.9.17/drivers/leds/Kconfig
>> +--- a/drivers/leds/Kconfig
>> ++++ b/drivers/leds/Kconfig
>>   @@ -117,6 +117,14 @@ config LEDS_MIKROTIK_RB532
>>           This option enables support for the so called "User LED" of
>>           Mikrotik's Routerboard 532.
>> @@ -49,10 +47,8 @@ Index: linux-4.9.17/drivers/leds/Kconfig
>>    config LEDS_S3C24XX
>>         tristate "LED Support for Samsung S3C24XX GPIO LEDs"
>>         depends on LEDS_CLASS
>> -Index: linux-4.9.17/drivers/leds/leds-mt6323.c
>> -===================================================================
>>   --- /dev/null
>> -+++ linux-4.9.17/drivers/leds/leds-mt6323.c
>> ++++ b/drivers/leds/leds-mt6323.c
>>   @@ -0,0 +1,502 @@
>>   +/*
>>   + * LED driver for Mediatek MT6323 PMIC
>> diff --git a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
>> b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
>> index 701dcec..888218b 100644
>> --- a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
>> +++ b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
>> @@ -28,11 +28,9 @@ Acked-by: Lee Jones <lee.jones@linaro.org>
>>    drivers/mfd/mt6397-core.c | 3 +--
>>    1 file changed, 1 insertion(+), 2 deletions(-)
>>   -diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
>> -index 8e601c8..04a601f 100644
>>   --- a/drivers/mfd/mt6397-core.c
>>   +++ b/drivers/mfd/mt6397-core.c
>> -@@ -47,8 +47,7 @@
>> +@@ -47,8 +47,7 @@ static const struct mfd_cell mt6323_devs
>>         {
>>                 .name = "mt6323-regulator",
>>                 .of_compatible = "mediatek,mt6323-regulator"
>> diff --git a/target/linux/mediatek/patches-4.9/0091-dsa1.patch
>> b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
>> index c9bad93..ffc63dc 100644
>> --- a/target/linux/mediatek/patches-4.9/0091-dsa1.patch
>> +++ b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
>> @@ -27,9 +27,6 @@ Acked-by: Rob Herring <robh@kernel.org>
>>    1 file changed, 92 insertions(+)
>>    create mode 100644 Documentation/devicetree/bindings/net/dsa/mt7530.txt
>>   -diff --git a/Documentation/devicetree/bindings/net/dsa/mt7530.txt
>> b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
>> -new file mode 100644
>> -index 0000000..a9bc27b
>>   --- /dev/null
>>   +++ b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
>>   @@ -0,0 +1,92 @@
>> diff --git
>> a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
>> b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
>> index 5ae90e3..6e65d27 100644
>> ---
>> a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
>> +++
>> b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
>> @@ -16,10 +16,8 @@ Signed-off-by: John Crispin <john@phrozen.org>
>>    drivers/net/ethernet/mediatek/mtk_eth_soc.c |   33
>> ++++++++++++++++-----------
>>    1 file changed, 20 insertions(+), 13 deletions(-)
>>   -Index: linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> -===================================================================
>> ---- linux-4.9.14.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> -+++ linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> +--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> ++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>>   @@ -706,7 +706,16 @@ static int mtk_tx_map(struct sk_buff *sk
>>         WRITE_ONCE(itxd->txd3, (TX_DMA_SWC |
>> TX_DMA_PLEN0(skb_headlen(skb)) |
>>                                 (!nr_frags * TX_DMA_LS0)));
>> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa2.patch
>> b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
>> index 84e5cb4..a5b4242 100644
>> --- a/target/linux/mediatek/patches-4.9/0092-dsa2.patch
>> +++ b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
>> @@ -36,11 +36,9 @@ Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>>    6 files changed, 127 insertions(+)
>>    create mode 100644 net/dsa/tag_mtk.c
>>   -diff --git a/include/net/dsa.h b/include/net/dsa.h
>> -index 4e13e69..3276547 100644
>>   --- a/include/net/dsa.h
>>   +++ b/include/net/dsa.h
>> -@@ -31,6 +31,7 @@ enum dsa_tag_protocol {
>> +@@ -27,6 +27,7 @@ enum dsa_tag_protocol {
>>         DSA_TAG_PROTO_EDSA,
>>         DSA_TAG_PROTO_BRCM,
>>         DSA_TAG_PROTO_QCA,
>> @@ -48,31 +46,25 @@ index 4e13e69..3276547 100644
>>         DSA_TAG_LAST,           /* MUST BE LAST */
>>    };
>>    -diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
>> -index 9649238..d78789b 100644
>>   --- a/net/dsa/Kconfig
>>   +++ b/net/dsa/Kconfig
>> -@@ -31,4 +31,6 @@ config NET_DSA_TAG_TRAILER
>> +@@ -41,4 +41,6 @@ config NET_DSA_TAG_TRAILER
>>    config NET_DSA_TAG_QCA
>>         bool
>>      +config NET_DSA_TAG_MTK
>>   +     bool
>>    endif
>> -diff --git a/net/dsa/Makefile b/net/dsa/Makefile
>> -index 31d3437..9b1d478 100644
>>   --- a/net/dsa/Makefile
>>   +++ b/net/dsa/Makefile
>> -@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o
>> +@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += ta
>>    dsa_core-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o
>>    dsa_core-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o
>>    dsa_core-$(CONFIG_NET_DSA_TAG_QCA) += tag_qca.o
>>   +dsa_core-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o
>> -diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
>> -index b6d4f6a..617f736 100644
>>   --- a/net/dsa/dsa.c
>>   +++ b/net/dsa/dsa.c
>> -@@ -53,6 +53,9 @@ static struct sk_buff *dsa_slave_notag_xmit(struct
>> sk_buff *skb,
>> +@@ -57,6 +57,9 @@ const struct dsa_device_ops *dsa_device_
>>    #ifdef CONFIG_NET_DSA_TAG_QCA
>>         [DSA_TAG_PROTO_QCA] = &qca_netdev_ops,
>>    #endif
>> @@ -82,11 +74,9 @@ index b6d4f6a..617f736 100644
>>         [DSA_TAG_PROTO_NONE] = &none_ops,
>>    };
>>    -diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
>> -index 0706a51..2a31399 100644
>>   --- a/net/dsa/dsa_priv.h
>>   +++ b/net/dsa/dsa_priv.h
>> -@@ -85,4 +85,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct
>> device *parent,
>> +@@ -84,4 +84,7 @@ extern const struct dsa_device_ops brcm_
>>    /* tag_qca.c */
>>    extern const struct dsa_device_ops qca_netdev_ops;
>>    @@ -94,9 +84,6 @@ index 0706a51..2a31399 100644
>>   +extern const struct dsa_device_ops mtk_netdev_ops;
>>   +
>>    #endif
>> -diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c
>> -new file mode 100644
>> -index 0000000..833a9d6
>>   --- /dev/null
>>   +++ b/net/dsa/tag_mtk.c
>>   @@ -0,0 +1,117 @@
>> diff --git a/target/linux/mediatek/patches-4.9/0092-dsa3.patch
>> b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
>> index 7c4dc4f..385add1 100644
>> --- a/target/linux/mediatek/patches-4.9/0092-dsa3.patch
>> +++ b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
>> @@ -33,11 +33,9 @@ Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
>>    drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++++
>>    2 files changed, 10 insertions(+)
>>   -diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> -index 9e75768..c21ed99 100644
>>   --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>>   +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
>> -@@ -1846,6 +1846,12 @@ static int mtk_hw_init(struct mtk_eth *eth)
>> +@@ -1855,6 +1855,12 @@ static int mtk_hw_init(struct mtk_eth *e
>>         /* GE2, Force 1000M/FD, FC ON */
>>         mtk_w32(eth, MAC_MCR_FIXED_LINK, MTK_MAC_MCR(1));
>>    @@ -50,8 +48,6 @@ index 9e75768..c21ed99 100644
Koen Vandeputte May 8, 2017, 7:54 a.m. UTC | #3
On 2017-05-08 09:36, Alexandru Ardelean wrote:
> Hey,
>
> You can also Reject your patch here:
> http://patchwork.ozlabs.org/project/lede/list/
>
> Specifically, this patch is:
> http://patchwork.ozlabs.org/patch/756400/
>
> And [for reference] you can see all patches submitted by you [from
> your email account]:
> http://patchwork.ozlabs.org/project/lede/list/?submitter=69184&state=*&q=&archive=&delegate=
>
> The email list is indexed in that tool.
>
> You do need to create an account.
> But it's a simple process ; should not require too many personal details.
>
> Patchwork is still partially used for tracking some patches sent via email.
> Tho, I will admit, I'm more of a fan of the Github PR process.
>
> Alex
>

Done
Thanks Alex.


Koen
diff mbox

Patch

diff --git a/include/kernel-version.mk b/include/kernel-version.mk
index 0a58a45..dce59d6 100644
--- a/include/kernel-version.mk
+++ b/include/kernel-version.mk
@@ -4,11 +4,11 @@  LINUX_RELEASE?=1
 
 LINUX_VERSION-3.18 = .43
 LINUX_VERSION-4.4 = .61
-LINUX_VERSION-4.9 = .20
+LINUX_VERSION-4.9 = .25
 
 LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
 LINUX_KERNEL_HASH-4.4.61 = 30dee7164615ad8184eba4ea6f4906b3ceb2fe462a8a4a929c8e9aab8d4a31da
-LINUX_KERNEL_HASH-4.9.20 = 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341
+LINUX_KERNEL_HASH-4.9.25 = 82ade4695a21a7058f1537f22b64db62fe23e6c3aa57cc55be427e30cbf92e37
 
 ifdef KERNEL_PATCHVER
   LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
diff --git a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
index a201d79..86cab14 100644
--- a/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
+++ b/target/linux/apm821xx/patches-4.9/802-usb-xhci-force-msi-renesas-xhci.patch
@@ -44,7 +44,7 @@  produce a noisy warning.
  		/* hcd->irq is 0, we have MSI */
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1674,6 +1674,7 @@ struct xhci_hcd {
+@@ -1677,6 +1677,7 @@ struct xhci_hcd {
  	/* support xHCI 0.96 spec USB2 software LPM */
  	unsigned		sw_lpm_support:1;
  	/* support xHCI 1.0 spec USB2 hardware LPM */
diff --git a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch b/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
deleted file mode 100644
index a4f32f5..0000000
--- a/target/linux/bcm53xx/patches-4.9/031-ARM-BCM5301X-Add-back-handler-ignoring-external-impr.patch
+++ /dev/null
@@ -1,75 +0,0 @@ 
-From 09f3510fb70a46c8921f2cf4a90dbcae460a6820 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Sat, 29 Oct 2016 13:12:29 +0200
-Subject: [PATCH] ARM: BCM5301X: Add back handler ignoring external imprecise
- aborts
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Since early BCM5301X days we got abort handler that was removed by
-commit 937b12306ea79 ("ARM: BCM5301X: remove workaround imprecise abort
-fault handler"). It assumed we need to deal only with pending aborts
-left by the bootloader. Unfortunately this isn't true for BCM5301X.
-
-When probing PCI config space (device enumeration) it is expected to
-have master aborts on the PCI bus. Most bridges don't forward (or they
-allow disabling it) these errors onto the AXI/AMBA bus but not the
-Northstar (BCM5301X) one.
-
-iProc PCIe controller on Northstar seems to be some older one, without
-a control register for errors forwarding. It means we need to workaround
-this at platform level. All newer platforms are not affected by this
-issue.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
----
- arch/arm/mach-bcm/bcm_5301x.c | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
---- a/arch/arm/mach-bcm/bcm_5301x.c
-+++ b/arch/arm/mach-bcm/bcm_5301x.c
-@@ -9,14 +9,42 @@
- #include <asm/hardware/cache-l2x0.h>
- 
- #include <asm/mach/arch.h>
-+#include <asm/siginfo.h>
-+#include <asm/signal.h>
-+
-+#define FSR_EXTERNAL		(1 << 12)
-+#define FSR_READ		(0 << 10)
-+#define FSR_IMPRECISE		0x0406
- 
- static const char *const bcm5301x_dt_compat[] __initconst = {
- 	"brcm,bcm4708",
- 	NULL,
- };
- 
-+static int bcm5301x_abort_handler(unsigned long addr, unsigned int fsr,
-+				  struct pt_regs *regs)
-+{
-+	/*
-+	 * We want to ignore aborts forwarded from the PCIe bus that are
-+	 * expected and shouldn't really be passed by the PCIe controller.
-+	 * The biggest disadvantage is the same FSR code may be reported when
-+	 * reading non-existing APB register and we shouldn't ignore that.
-+	 */
-+	if (fsr == (FSR_EXTERNAL | FSR_READ | FSR_IMPRECISE))
-+		return 0;
-+
-+	return 1;
-+}
-+
-+static void __init bcm5301x_init_early(void)
-+{
-+	hook_fault_code(16 + 6, bcm5301x_abort_handler, SIGBUS, BUS_OBJERR,
-+			"imprecise external abort");
-+}
-+
- DT_MACHINE_START(BCM5301X, "BCM5301X")
- 	.l2c_aux_val	= 0,
- 	.l2c_aux_mask	= ~0,
- 	.dt_compat	= bcm5301x_dt_compat,
-+	.init_early	= bcm5301x_init_early,
- MACHINE_END
diff --git a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch b/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
deleted file mode 100644
index 70df201..0000000
--- a/target/linux/bcm53xx/patches-4.9/033-0013-ARM-dts-BCM5301X-Correct-GIC_PPI-interrupt-flags.patch
+++ /dev/null
@@ -1,41 +0,0 @@ 
-From 0e34079cd1f674449749aafe4be07336177de90d Mon Sep 17 00:00:00 2001
-From: Jon Mason <jon.mason@broadcom.com>
-Date: Thu, 2 Mar 2017 19:21:32 -0500
-Subject: [PATCH] ARM: dts: BCM5301X: Correct GIC_PPI interrupt flags
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-GIC_PPI flags were misconfigured for the timers, resulting in errors
-like:
-[    0.000000] GIC: PPI11 is secure or misconfigured
-
-Changing them to being edge triggered corrects the issue
-
-Suggested-by: Rafał Miłecki <rafal@milecki.pl>
-Signed-off-by: Jon Mason <jon.mason@broadcom.com>
-Fixes: d27509f1 ("ARM: BCM5301X: add dts files for BCM4708 SoC")
-Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
----
- arch/arm/boot/dts/bcm5301x.dtsi | 4 ++--
- 1 file changed, 2 insertions(+), 2 deletions(-)
-
---- a/arch/arm/boot/dts/bcm5301x.dtsi
-+++ b/arch/arm/boot/dts/bcm5301x.dtsi
-@@ -66,14 +66,14 @@
- 		timer@20200 {
- 			compatible = "arm,cortex-a9-global-timer";
- 			reg = <0x20200 0x100>;
--			interrupts = <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH>;
-+			interrupts = <GIC_PPI 11 IRQ_TYPE_EDGE_RISING>;
- 			clocks = <&periph_clk>;
- 		};
- 
- 		local-timer@20600 {
- 			compatible = "arm,cortex-a9-twd-timer";
- 			reg = <0x20600 0x100>;
--			interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH>;
-+			interrupts = <GIC_PPI 13 IRQ_TYPE_EDGE_RISING>;
- 			clocks = <&periph_clk>;
- 		};
- 
diff --git a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch b/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
deleted file mode 100644
index 3de4395..0000000
--- a/target/linux/bcm53xx/patches-4.9/089-PCI-iproc-Save-host-bridge-window-resource-in-struct.patch
+++ /dev/null
@@ -1,131 +0,0 @@ 
-From 6e347b5e05ea2ac4ac467a5a1cfaebb2c7f06f80 Mon Sep 17 00:00:00 2001
-From: Bjorn Helgaas <bhelgaas@google.com>
-Date: Thu, 9 Mar 2017 11:27:07 -0600
-Subject: [PATCH] PCI: iproc: Save host bridge window resource in struct
- iproc_pcie
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-The host bridge memory window resource is inserted into the iomem_resource
-tree and cannot be deallocated until the host bridge itself is removed.
-
-Previously, the window was on the stack, which meant the iomem_resource
-entry pointed into the stack and was corrupted as soon as the probe
-function returned, which caused memory corruption and errors like this:
-
-  pcie_iproc_bcma bcma0:8: resource collision: [mem 0x40000000-0x47ffffff] conflicts with PCIe MEM space [mem 0x40000000-0x47ffffff]
-
-Move the memory window resource from the stack into struct iproc_pcie so
-its lifetime matches that of the host bridge.
-
-Fixes: c3245a566400 ("PCI: iproc: Request host bridge window resources")
-Reported-and-tested-by: Rafał Miłecki <zajec5@gmail.com>
-Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
-CC: stable@vger.kernel.org	# v4.8+
----
- drivers/pci/host/pcie-iproc-bcma.c     | 24 ++++++++++++------------
- drivers/pci/host/pcie-iproc-platform.c | 19 ++++++++++---------
- drivers/pci/host/pcie-iproc.h          |  1 +
- 3 files changed, 23 insertions(+), 21 deletions(-)
-
---- a/drivers/pci/host/pcie-iproc-bcma.c
-+++ b/drivers/pci/host/pcie-iproc-bcma.c
-@@ -44,8 +44,7 @@ static int iproc_pcie_bcma_probe(struct
- {
- 	struct device *dev = &bdev->dev;
- 	struct iproc_pcie *pcie;
--	LIST_HEAD(res);
--	struct resource res_mem;
-+	LIST_HEAD(resources);
- 	int ret;
- 
- 	pcie = devm_kzalloc(dev, sizeof(*pcie), GFP_KERNEL);
-@@ -62,22 +61,23 @@ static int iproc_pcie_bcma_probe(struct
- 
- 	pcie->base_addr = bdev->addr;
- 
--	res_mem.start = bdev->addr_s[0];
--	res_mem.end = bdev->addr_s[0] + SZ_128M - 1;
--	res_mem.name = "PCIe MEM space";
--	res_mem.flags = IORESOURCE_MEM;
--	pci_add_resource(&res, &res_mem);
-+	pcie->mem.start = bdev->addr_s[0];
-+	pcie->mem.end = bdev->addr_s[0] + SZ_128M - 1;
-+	pcie->mem.name = "PCIe MEM space";
-+	pcie->mem.flags = IORESOURCE_MEM;
-+	pci_add_resource(&resources, &pcie->mem);
- 
- 	pcie->map_irq = iproc_pcie_bcma_map_irq;
- 
--	ret = iproc_pcie_setup(pcie, &res);
--	if (ret)
-+	ret = iproc_pcie_setup(pcie, &resources);
-+	if (ret) {
- 		dev_err(dev, "PCIe controller setup failed\n");
--
--	pci_free_resource_list(&res);
-+		pci_free_resource_list(&resources);
-+		return ret;
-+	}
- 
- 	bcma_set_drvdata(bdev, pcie);
--	return ret;
-+	return 0;
- }
- 
- static void iproc_pcie_bcma_remove(struct bcma_device *bdev)
---- a/drivers/pci/host/pcie-iproc-platform.c
-+++ b/drivers/pci/host/pcie-iproc-platform.c
-@@ -46,7 +46,7 @@ static int iproc_pcie_pltfm_probe(struct
- 	struct device_node *np = dev->of_node;
- 	struct resource reg;
- 	resource_size_t iobase = 0;
--	LIST_HEAD(res);
-+	LIST_HEAD(resources);
- 	int ret;
- 
- 	of_id = of_match_device(iproc_pcie_of_match_table, dev);
-@@ -108,23 +108,24 @@ static int iproc_pcie_pltfm_probe(struct
- 		pcie->phy = NULL;
- 	}
- 
--	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &res, &iobase);
-+	ret = of_pci_get_host_bridge_resources(np, 0, 0xff, &resources,
-+					       &iobase);
- 	if (ret) {
--		dev_err(dev,
--			"unable to get PCI host bridge resources\n");
-+		dev_err(dev, "unable to get PCI host bridge resources\n");
- 		return ret;
- 	}
- 
- 	pcie->map_irq = of_irq_parse_and_map_pci;
- 
--	ret = iproc_pcie_setup(pcie, &res);
--	if (ret)
-+	ret = iproc_pcie_setup(pcie, &resources);
-+	if (ret) {
- 		dev_err(dev, "PCIe controller setup failed\n");
--
--	pci_free_resource_list(&res);
-+		pci_free_resource_list(&resources);
-+		return ret;
-+	}
- 
- 	platform_set_drvdata(pdev, pcie);
--	return ret;
-+	return 0;
- }
- 
- static int iproc_pcie_pltfm_remove(struct platform_device *pdev)
---- a/drivers/pci/host/pcie-iproc.h
-+++ b/drivers/pci/host/pcie-iproc.h
-@@ -68,6 +68,7 @@ struct iproc_pcie {
- #ifdef CONFIG_ARM
- 	struct pci_sys_data sysdata;
- #endif
-+	struct resource mem;
- 	struct pci_bus *root_bus;
- 	struct phy *phy;
- 	int (*map_irq)(const struct pci_dev *, u8, u8);
diff --git a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
index 9e5bd83..83ea89b 100644
--- a/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
+++ b/target/linux/bcm53xx/patches-4.9/180-usb-xhci-add-support-for-performing-fake-doorbell.patch
@@ -127,11 +127,11 @@  it on BCM4708 family.
  /*
 --- a/drivers/usb/host/xhci.h
 +++ b/drivers/usb/host/xhci.h
-@@ -1657,6 +1657,7 @@ struct xhci_hcd {
- #define XHCI_SSIC_PORT_UNUSED	(1 << 22)
- #define XHCI_NO_64BIT_SUPPORT	(1 << 23)
+@@ -1659,6 +1659,7 @@ struct xhci_hcd {
  #define XHCI_MISSING_CAS	(1 << 24)
-+#define XHCI_FAKE_DOORBELL	(1 << 25)
+ /* For controller with a broken Port Disable implementation */
+ #define XHCI_BROKEN_PORT_PED	(1 << 25)
++#define XHCI_FAKE_DOORBELL	(1 << 26)
+ 
  	unsigned int		num_active_eps;
  	unsigned int		limit_active_eps;
- 	/* There are two roothubs to keep track of bus suspend info for */
diff --git a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
index c702390..3245269 100644
--- a/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
+++ b/target/linux/bcm53xx/patches-4.9/905-BCM53573-minor-hacks.patch
@@ -69,7 +69,7 @@  Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
  #include <linux/clockchips.h>
  #include <linux/clocksource.h>
  #include <linux/interrupt.h>
-@@ -513,6 +514,16 @@ arch_timer_detect_rate(void __iomem *cnt
+@@ -514,6 +515,16 @@ arch_timer_detect_rate(void __iomem *cnt
  			arch_timer_rate = arch_timer_get_cntfrq();
  	}
  
diff --git a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
index 0610d03..d13cae7 100644
--- a/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0031-Add-dwc_otg-driver.patch
@@ -696,7 +696,7 @@  Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
  }
 --- a/drivers/usb/core/hub.c
 +++ b/drivers/usb/core/hub.c
-@@ -5009,7 +5009,7 @@ static void port_event(struct usb_hub *h
+@@ -5016,7 +5016,7 @@ static void port_event(struct usb_hub *h
  	if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
  		u16 status = 0, unused;
  
diff --git a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
index ff6084f..cbae56b 100644
--- a/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0047-Added-hwmon-thermal-driver-for-reporting-core-temper.patch
@@ -39,7 +39,7 @@  Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
  	depends on X86_THERMAL_VECTOR
 --- a/drivers/thermal/Makefile
 +++ b/drivers/thermal/Makefile
-@@ -41,6 +41,7 @@ obj-$(CONFIG_MAX77620_THERMAL)	+= max776
+@@ -42,6 +42,7 @@ obj-$(CONFIG_MAX77620_THERMAL)	+= max776
  obj-$(CONFIG_QORIQ_THERMAL)	+= qoriq_thermal.o
  obj-$(CONFIG_DB8500_CPUFREQ_COOLING)	+= db8500_cpufreq_cooling.o
  obj-$(CONFIG_INTEL_POWERCLAMP)	+= intel_powerclamp.o
diff --git a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
index 73c9ede..e17a84d 100644
--- a/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
+++ b/target/linux/brcm2708/patches-4.9/950-0060-config-Enable-CONFIG_MEMCG-but-leave-it-disabled-due.patch
@@ -10,7 +10,7 @@  Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave it disabled (due to
 
 --- a/kernel/cgroup.c
 +++ b/kernel/cgroup.c
-@@ -5626,7 +5626,7 @@ int __init cgroup_init_early(void)
+@@ -5627,7 +5627,7 @@ int __init cgroup_init_early(void)
  	return 0;
  }
  
@@ -19,7 +19,7 @@  Subject: [PATCH] config: Enable CONFIG_MEMCG, but leave it disabled (due to
  
  /**
   * cgroup_init - cgroup initialization
-@@ -6163,6 +6163,28 @@ static int __init cgroup_no_v1(char *str
+@@ -6164,6 +6164,28 @@ static int __init cgroup_no_v1(char *str
  }
  __setup("cgroup_no_v1=", cgroup_no_v1);
  
diff --git a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch b/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
deleted file mode 100644
index 899c75e..0000000
--- a/target/linux/brcm2708/patches-4.9/950-0106-i2c-bcm2835-Fix-hang-for-writing-messages-larger-tha.patch
+++ /dev/null
@@ -1,90 +0,0 @@ 
-From 89b466914a0d49f08d00be25556ba22497b9a284 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Noralf=20Tr=C3=B8nnes?= <noralf@tronnes.org>
-Date: Sat, 17 Sep 2016 15:07:10 +0200
-Subject: [PATCH] i2c: bcm2835: Fix hang for writing messages larger than 16
- bytes
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-Writing messages larger than the FIFO size results in a hang, rendering
-the machine unusable. This is because the RXD status flag is set on the
-first interrupt which results in bcm2835_drain_rxfifo() stealing bytes
-from the buffer. The controller continues to trigger interrupts waiting
-for the missing bytes, but bcm2835_fill_txfifo() has none to give.
-In this situation wait_for_completion_timeout() apparently is unable to
-stop the madness.
-
-The BCM2835 ARM Peripherals datasheet has this to say about the flags:
-  TXD: is set when the FIFO has space for at least one byte of data.
-  RXD: is set when the FIFO contains at least one byte of data.
-  TXW: is set during a write transfer and the FIFO is less than full.
-  RXR: is set during a read transfer and the FIFO is or more full.
-
-Implementing the logic from the downstream i2c-bcm2708 driver solved
-the hang problem.
-
-Signed-off-by: Noralf Trønnes <noralf@tronnes.org>
-Reviewed-by: Eric Anholt <eric@anholt.net>
-Reviewed-by: Martin Sperl <kernel@martin.sperl.org>
----
- drivers/i2c/busses/i2c-bcm2835.c | 22 ++++++++++++++--------
- 1 file changed, 14 insertions(+), 8 deletions(-)
-
---- a/drivers/i2c/busses/i2c-bcm2835.c
-+++ b/drivers/i2c/busses/i2c-bcm2835.c
-@@ -64,6 +64,7 @@ struct bcm2835_i2c_dev {
- 	int irq;
- 	struct i2c_adapter adapter;
- 	struct completion completion;
-+	struct i2c_msg *curr_msg;
- 	u32 msg_err;
- 	u8 *msg_buf;
- 	size_t msg_buf_remaining;
-@@ -126,14 +127,13 @@ static irqreturn_t bcm2835_i2c_isr(int t
- 		return IRQ_HANDLED;
- 	}
- 
--	if (val & BCM2835_I2C_S_RXD) {
--		bcm2835_drain_rxfifo(i2c_dev);
--		if (!(val & BCM2835_I2C_S_DONE))
--			return IRQ_HANDLED;
--	}
--
- 	if (val & BCM2835_I2C_S_DONE) {
--		if (i2c_dev->msg_buf_remaining)
-+		if (i2c_dev->curr_msg->flags & I2C_M_RD) {
-+			bcm2835_drain_rxfifo(i2c_dev);
-+			val = bcm2835_i2c_readl(i2c_dev, BCM2835_I2C_S);
-+		}
-+
-+		if ((val & BCM2835_I2C_S_RXD) || i2c_dev->msg_buf_remaining)
- 			i2c_dev->msg_err = BCM2835_I2C_S_LEN;
- 		else
- 			i2c_dev->msg_err = 0;
-@@ -141,11 +141,16 @@ static irqreturn_t bcm2835_i2c_isr(int t
- 		return IRQ_HANDLED;
- 	}
- 
--	if (val & BCM2835_I2C_S_TXD) {
-+	if (val & BCM2835_I2C_S_TXW) {
- 		bcm2835_fill_txfifo(i2c_dev);
- 		return IRQ_HANDLED;
- 	}
- 
-+	if (val & BCM2835_I2C_S_RXR) {
-+		bcm2835_drain_rxfifo(i2c_dev);
-+		return IRQ_HANDLED;
-+	}
-+
- 	return IRQ_NONE;
- }
- 
-@@ -155,6 +160,7 @@ static int bcm2835_i2c_xfer_msg(struct b
- 	u32 c;
- 	unsigned long time_left;
- 
-+	i2c_dev->curr_msg = msg;
- 	i2c_dev->msg_buf = msg->buf;
- 	i2c_dev->msg_buf_remaining = msg->len;
- 	reinit_completion(&i2c_dev->completion);
diff --git a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch b/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
deleted file mode 100644
index 7b81afb..0000000
--- a/target/linux/generic/patches-4.9/031-ubifs-fix-RENAME_WHITEOUT-support.patch
+++ /dev/null
@@ -1,25 +0,0 @@ 
-From: Felix Fietkau <nbd@nbd.name>
-Date: Mon, 6 Mar 2017 09:48:52 +0100
-Subject: [PATCH] ubifs: fix RENAME_WHITEOUT support
-
-Remove faulty leftover check in do_rename(), apparently introduced in a
-merge that combined whiteout support changes with commit f03b8ad8d386
-("fs: support RENAME_NOREPLACE for local filesystems")
-
-Fixes: 9e0a1fff8db5 ("ubifs: Implement RENAME_WHITEOUT")
-Cc: stable@vger.kernel.org
-Signed-off-by: Felix Fietkau <nbd@nbd.name>
----
-
---- a/fs/ubifs/dir.c
-+++ b/fs/ubifs/dir.c
-@@ -1088,9 +1088,6 @@ static int do_rename(struct inode *old_d
- 	struct timespec time;
- 	unsigned int uninitialized_var(saved_nlink);
- 
--	if (flags & ~RENAME_NOREPLACE)
--		return -EINVAL;
--
- 	/*
- 	 * Budget request settings: deletion direntry, new direntry, removing
- 	 * the old inode, and changing old and new parent directory inodes.
diff --git a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch b/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
deleted file mode 100644
index 1cdbcda..0000000
--- a/target/linux/generic/patches-4.9/040-01-MIPS-Introduce-irq_stack.patch
+++ /dev/null
@@ -1,70 +0,0 @@ 
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Mon, 19 Dec 2016 14:20:56 +0000
-Subject: [PATCH] MIPS: Introduce irq_stack
-
-Allocate a per-cpu irq stack for use within interrupt handlers.
-
-Also add a utility function on_irq_stack to determine if a given stack
-pointer is within the irq stack for that cpu.
-
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
----
-
---- a/arch/mips/include/asm/irq.h
-+++ b/arch/mips/include/asm/irq.h
-@@ -17,6 +17,18 @@
- 
- #include <irq.h>
- 
-+#define IRQ_STACK_SIZE			THREAD_SIZE
-+
-+extern void *irq_stack[NR_CPUS];
-+
-+static inline bool on_irq_stack(int cpu, unsigned long sp)
-+{
-+	unsigned long low = (unsigned long)irq_stack[cpu];
-+	unsigned long high = low + IRQ_STACK_SIZE;
-+
-+	return (low <= sp && sp <= high);
-+}
-+
- #ifdef CONFIG_I8259
- static inline int irq_canonicalize(int irq)
- {
---- a/arch/mips/kernel/asm-offsets.c
-+++ b/arch/mips/kernel/asm-offsets.c
-@@ -102,6 +102,7 @@ void output_thread_info_defines(void)
- 	OFFSET(TI_REGS, thread_info, regs);
- 	DEFINE(_THREAD_SIZE, THREAD_SIZE);
- 	DEFINE(_THREAD_MASK, THREAD_MASK);
-+	DEFINE(_IRQ_STACK_SIZE, IRQ_STACK_SIZE);
- 	BLANK();
- }
- 
---- a/arch/mips/kernel/irq.c
-+++ b/arch/mips/kernel/irq.c
-@@ -25,6 +25,8 @@
- #include <linux/atomic.h>
- #include <asm/uaccess.h>
- 
-+void *irq_stack[NR_CPUS];
-+
- /*
-  * 'what should we do if we get a hw irq event on an illegal vector'.
-  * each architecture has to answer this themselves.
-@@ -58,6 +60,15 @@ void __init init_IRQ(void)
- 		clear_c0_status(ST0_IM);
- 
- 	arch_init_irq();
-+
-+	for_each_possible_cpu(i) {
-+		int irq_pages = IRQ_STACK_SIZE / PAGE_SIZE;
-+		void *s = (void *)__get_free_pages(GFP_KERNEL, irq_pages);
-+
-+		irq_stack[i] = s;
-+		pr_debug("CPU%d IRQ stack at 0x%p - 0x%p\n", i,
-+			irq_stack[i], irq_stack[i] + IRQ_STACK_SIZE);
-+	}
- }
- 
- #ifdef CONFIG_DEBUG_STACKOVERFLOW
diff --git a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch b/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
deleted file mode 100644
index b2e90c8..0000000
--- a/target/linux/generic/patches-4.9/040-02-MIPS-Stack-unwinding-while-on-IRQ-stack.patch
+++ /dev/null
@@ -1,42 +0,0 @@ 
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Mon, 19 Dec 2016 14:20:57 +0000
-Subject: [PATCH] MIPS: Stack unwinding while on IRQ stack
-
-Within unwind stack, check if the stack pointer being unwound is within
-the CPU's irq_stack and if so use that page rather than the task's stack
-page.
-
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
----
-
---- a/arch/mips/kernel/process.c
-+++ b/arch/mips/kernel/process.c
-@@ -33,6 +33,7 @@
- #include <asm/dsemul.h>
- #include <asm/dsp.h>
- #include <asm/fpu.h>
-+#include <asm/irq.h>
- #include <asm/msa.h>
- #include <asm/pgtable.h>
- #include <asm/mipsregs.h>
-@@ -556,7 +557,19 @@ EXPORT_SYMBOL(unwind_stack_by_address);
- unsigned long unwind_stack(struct task_struct *task, unsigned long *sp,
- 			   unsigned long pc, unsigned long *ra)
- {
--	unsigned long stack_page = (unsigned long)task_stack_page(task);
-+	unsigned long stack_page = 0;
-+	int cpu;
-+
-+	for_each_possible_cpu(cpu) {
-+		if (on_irq_stack(cpu, *sp)) {
-+			stack_page = (unsigned long)irq_stack[cpu];
-+			break;
-+		}
-+	}
-+
-+	if (!stack_page)
-+		stack_page = (unsigned long)task_stack_page(task);
-+
- 	return unwind_stack_by_address(stack_page, sp, pc, ra);
- }
- #endif
diff --git a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch b/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
deleted file mode 100644
index e13c67b..0000000
--- a/target/linux/generic/patches-4.9/040-03-MIPS-Only-change-28-to-thread_info-if-coming-from-us.patch
+++ /dev/null
@@ -1,48 +0,0 @@ 
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Mon, 19 Dec 2016 14:20:58 +0000
-Subject: [PATCH] MIPS: Only change $28 to thread_info if coming from user
- mode
-
-The SAVE_SOME macro is used to save the execution context on all
-exceptions.
-If an exception occurs while executing user code, the stack is switched
-to the kernel's stack for the current task, and register $28 is switched
-to point to the current_thread_info, which is at the bottom of the stack
-region.
-If the exception occurs while executing kernel code, the stack is left,
-and this change ensures that register $28 is not updated. This is the
-correct behaviour when the kernel can be executing on the separate irq
-stack, because the thread_info will not be at the base of it.
-
-With this change, register $28 is only switched to it's kernel
-conventional usage of the currrent thread info pointer at the point at
-which execution enters kernel space. Doing it on every exception was
-redundant, but OK without an IRQ stack, but will be erroneous once that
-is introduced.
-
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
-Reviewed-by: Maciej W. Rozycki <macro@imgtec.com>
----
-
---- a/arch/mips/include/asm/stackframe.h
-+++ b/arch/mips/include/asm/stackframe.h
-@@ -216,12 +216,19 @@
- 		LONG_S	$25, PT_R25(sp)
- 		LONG_S	$28, PT_R28(sp)
- 		LONG_S	$31, PT_R31(sp)
-+
-+		/* Set thread_info if we're coming from user mode */
-+		mfc0	k0, CP0_STATUS
-+		sll	k0, 3		/* extract cu0 bit */
-+		bltz	k0, 9f
-+
- 		ori	$28, sp, _THREAD_MASK
- 		xori	$28, _THREAD_MASK
- #ifdef CONFIG_CPU_CAVIUM_OCTEON
- 		.set    mips64
- 		pref    0, 0($28)       /* Prefetch the current pointer */
- #endif
-+9:
- 		.set	pop
- 		.endm
- 
diff --git a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch b/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
deleted file mode 100644
index 0c7e45b..0000000
--- a/target/linux/generic/patches-4.9/040-04-MIPS-Switch-to-the-irq_stack-in-interrupts.patch
+++ /dev/null
@@ -1,116 +0,0 @@ 
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Mon, 19 Dec 2016 14:20:59 +0000
-Subject: [PATCH] MIPS: Switch to the irq_stack in interrupts
-
-When enterring interrupt context via handle_int or except_vec_vi, switch
-to the irq_stack of the current CPU if it is not already in use.
-
-The current stack pointer is masked with the thread size and compared to
-the base or the irq stack. If it does not match then the stack pointer
-is set to the top of that stack, otherwise this is a nested irq being
-handled on the irq stack so the stack pointer should be left as it was.
-
-The in-use stack pointer is placed in the callee saved register s1. It
-will be saved to the stack when plat_irq_dispatch is invoked and can be
-restored once control returns here.
-
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
----
-
---- a/arch/mips/kernel/genex.S
-+++ b/arch/mips/kernel/genex.S
-@@ -187,9 +187,44 @@ NESTED(handle_int, PT_SIZE, sp)
- 
- 	LONG_L	s0, TI_REGS($28)
- 	LONG_S	sp, TI_REGS($28)
--	PTR_LA	ra, ret_from_irq
--	PTR_LA	v0, plat_irq_dispatch
--	jr	v0
-+
-+	/*
-+	 * SAVE_ALL ensures we are using a valid kernel stack for the thread.
-+	 * Check if we are already using the IRQ stack.
-+	 */
-+	move	s1, sp # Preserve the sp
-+
-+	/* Get IRQ stack for this CPU */
-+	ASM_CPUID_MFC0	k0, ASM_SMP_CPUID_REG
-+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
-+	lui	k1, %hi(irq_stack)
-+#else
-+	lui	k1, %highest(irq_stack)
-+	daddiu	k1, %higher(irq_stack)
-+	dsll	k1, 16
-+	daddiu	k1, %hi(irq_stack)
-+	dsll	k1, 16
-+#endif
-+	LONG_SRL	k0, SMP_CPUID_PTRSHIFT
-+	LONG_ADDU	k1, k0
-+	LONG_L	t0, %lo(irq_stack)(k1)
-+
-+	# Check if already on IRQ stack
-+	PTR_LI	t1, ~(_THREAD_SIZE-1)
-+	and	t1, t1, sp
-+	beq	t0, t1, 2f
-+
-+	/* Switch to IRQ stack */
-+	li	t1, _IRQ_STACK_SIZE
-+	PTR_ADD sp, t0, t1
-+
-+2:
-+	jal	plat_irq_dispatch
-+
-+	/* Restore sp */
-+	move	sp, s1
-+
-+	j	ret_from_irq
- #ifdef CONFIG_CPU_MICROMIPS
- 	nop
- #endif
-@@ -262,8 +297,44 @@ NESTED(except_vec_vi_handler, 0, sp)
- 
- 	LONG_L	s0, TI_REGS($28)
- 	LONG_S	sp, TI_REGS($28)
--	PTR_LA	ra, ret_from_irq
--	jr	v0
-+
-+	/*
-+	 * SAVE_ALL ensures we are using a valid kernel stack for the thread.
-+	 * Check if we are already using the IRQ stack.
-+	 */
-+	move	s1, sp # Preserve the sp
-+
-+	/* Get IRQ stack for this CPU */
-+	ASM_CPUID_MFC0	k0, ASM_SMP_CPUID_REG
-+#if defined(CONFIG_32BIT) || defined(KBUILD_64BIT_SYM32)
-+	lui	k1, %hi(irq_stack)
-+#else
-+	lui	k1, %highest(irq_stack)
-+	daddiu	k1, %higher(irq_stack)
-+	dsll	k1, 16
-+	daddiu	k1, %hi(irq_stack)
-+	dsll	k1, 16
-+#endif
-+	LONG_SRL	k0, SMP_CPUID_PTRSHIFT
-+	LONG_ADDU	k1, k0
-+	LONG_L	t0, %lo(irq_stack)(k1)
-+
-+	# Check if already on IRQ stack
-+	PTR_LI	t1, ~(_THREAD_SIZE-1)
-+	and	t1, t1, sp
-+	beq	t0, t1, 2f
-+
-+	/* Switch to IRQ stack */
-+	li	t1, _IRQ_STACK_SIZE
-+	PTR_ADD sp, t0, t1
-+
-+2:
-+	jal	plat_irq_dispatch
-+
-+	/* Restore sp */
-+	move	sp, s1
-+
-+	j	ret_from_irq
- 	END(except_vec_vi_handler)
- 
- /*
diff --git a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch b/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
deleted file mode 100644
index a4942b8..0000000
--- a/target/linux/generic/patches-4.9/040-05-MIPS-Select-HAVE_IRQ_EXIT_ON_IRQ_STACK.patch
+++ /dev/null
@@ -1,21 +0,0 @@ 
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Mon, 19 Dec 2016 14:21:00 +0000
-Subject: [PATCH] MIPS: Select HAVE_IRQ_EXIT_ON_IRQ_STACK
-
-Since do_IRQ is now invoked on a separate IRQ stack, we select
-HAVE_IRQ_EXIT_ON_IRQ_STACK so that softirq's may be invoked directly
-from irq_exit(), rather than requiring do_softirq_own_stack.
-
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
----
-
---- a/arch/mips/Kconfig
-+++ b/arch/mips/Kconfig
-@@ -9,6 +9,7 @@ config MIPS
- 	select HAVE_CONTEXT_TRACKING
- 	select HAVE_GENERIC_DMA_COHERENT
- 	select HAVE_IDE
-+	select HAVE_IRQ_EXIT_ON_IRQ_STACK
- 	select HAVE_OPROFILE
- 	select HAVE_PERF_EVENTS
- 	select PERF_USE_VMALLOC
diff --git a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch b/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
deleted file mode 100644
index bb16bb1..0000000
--- a/target/linux/generic/patches-4.9/040-06-MIPS-IRQ-Stack-Fix-erroneous-jal-to-plat_irq_dispatc.patch
+++ /dev/null
@@ -1,35 +0,0 @@ 
-From de856416e7143e32afc4849625616554aa060f7a Mon Sep 17 00:00:00 2001
-From: Matt Redfearn <matt.redfearn@imgtec.com>
-Date: Wed, 25 Jan 2017 17:00:25 +0000
-Subject: [PATCH] MIPS: IRQ Stack: Fix erroneous jal to plat_irq_dispatch
-
-Commit dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
-changed both the normal and vectored interrupt handlers. Unfortunately
-the vectored version, "except_vec_vi_handler", was incorrectly modified
-to unconditionally jal to plat_irq_dispatch, rather than doing a jalr to
-the vectored handler that has been set up. This is ok for many platforms
-which set the vectored handler to plat_irq_dispatch anyway, but will
-cause problems with platforms that use other handlers.
-
-Fixes: dda45f701c9d ("MIPS: Switch to the irq_stack in interrupts")
-Signed-off-by: Matt Redfearn <matt.redfearn@imgtec.com>
-Cc: Ralf Baechle <ralf@linux-mips.org>
-Cc: Paul Burton <paul.burton@imgtec.com>
-Cc: linux-mips@linux-mips.org
-Patchwork: https://patchwork.linux-mips.org/patch/15110/
-Signed-off-by: James Hogan <james.hogan@imgtec.com>
----
- arch/mips/kernel/genex.S | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/mips/kernel/genex.S
-+++ b/arch/mips/kernel/genex.S
-@@ -329,7 +329,7 @@ NESTED(except_vec_vi_handler, 0, sp)
- 	PTR_ADD sp, t0, t1
- 
- 2:
--	jal	plat_irq_dispatch
-+	jalr	v0
- 
- 	/* Restore sp */
- 	move	sp, s1
diff --git a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch b/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
deleted file mode 100644
index 7eed777..0000000
--- a/target/linux/generic/patches-4.9/060-0001-mtd-bcm47xxpart-fix-parsing-first-block-after-aligne.patch
+++ /dev/null
@@ -1,40 +0,0 @@ 
-From bd5d21310133921021d78995ad6346f908483124 Mon Sep 17 00:00:00 2001
-From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <rafal@milecki.pl>
-Date: Sun, 20 Nov 2016 16:09:30 +0100
-Subject: [PATCH] mtd: bcm47xxpart: fix parsing first block after aligned TRX
-MIME-Version: 1.0
-Content-Type: text/plain; charset=UTF-8
-Content-Transfer-Encoding: 8bit
-
-After parsing TRX we should skip to the first block placed behind it.
-Our code was working only with TRX with length not aligned to the
-blocksize. In other cases (length aligned) it was missing the block
-places right after TRX.
-
-This fixes calculation and simplifies the comment.
-
-Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
-Signed-off-by: Brian Norris <computersforpeace@gmail.com>
----
- drivers/mtd/bcm47xxpart.c | 10 ++++------
- 1 file changed, 4 insertions(+), 6 deletions(-)
-
---- a/drivers/mtd/bcm47xxpart.c
-+++ b/drivers/mtd/bcm47xxpart.c
-@@ -229,12 +229,10 @@ static int bcm47xxpart_parse(struct mtd_
- 
- 			last_trx_part = curr_part - 1;
- 
--			/*
--			 * We have whole TRX scanned, skip to the next part. Use
--			 * roundown (not roundup), as the loop will increase
--			 * offset in next step.
--			 */
--			offset = rounddown(offset + trx->length, blocksize);
-+			/* Jump to the end of TRX */
-+			offset = roundup(offset + trx->length, blocksize);
-+			/* Next loop iteration will increase the offset */
-+			offset -= blocksize;
- 			continue;
- 		}
- 
diff --git a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
index 7c5cb45..5a86131 100644
--- a/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
+++ b/target/linux/generic/patches-4.9/670-ipv6-allow-rejecting-with-source-address-failed-policy.patch
@@ -155,7 +155,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case RTN_THROW:
  		case RTN_UNREACHABLE:
  		default:
-@@ -2594,6 +2616,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -2596,6 +2618,17 @@ static int ip6_pkt_prohibit_out(struct n
  	return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
  }
  
@@ -173,7 +173,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  /*
   *	Allocate a dst for local (unicast / anycast) address.
   */
-@@ -2829,7 +2862,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -2831,7 +2864,8 @@ static int rtm_to_fib6_config(struct sk_
  	if (rtm->rtm_type == RTN_UNREACHABLE ||
  	    rtm->rtm_type == RTN_BLACKHOLE ||
  	    rtm->rtm_type == RTN_PROHIBIT ||
@@ -183,7 +183,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		cfg->fc_flags |= RTF_REJECT;
  
  	if (rtm->rtm_type == RTN_LOCAL)
-@@ -3207,6 +3241,9 @@ static int rt6_fill_node(struct net *net
+@@ -3209,6 +3243,9 @@ static int rt6_fill_node(struct net *net
  		case -EACCES:
  			rtm->rtm_type = RTN_PROHIBIT;
  			break;
@@ -193,7 +193,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		case -EAGAIN:
  			rtm->rtm_type = RTN_THROW;
  			break;
-@@ -3480,6 +3517,8 @@ static int ip6_route_dev_notify(struct n
+@@ -3482,6 +3519,8 @@ static int ip6_route_dev_notify(struct n
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  		net->ipv6.ip6_prohibit_entry->dst.dev = dev;
  		net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@@ -202,7 +202,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  		net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
  		net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
  #endif
-@@ -3696,6 +3735,17 @@ static int __net_init ip6_route_net_init
+@@ -3698,6 +3737,17 @@ static int __net_init ip6_route_net_init
  	net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
  	dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
  			 ip6_template_metrics, true);
@@ -220,7 +220,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  
  	net->ipv6.sysctl.flush_delay = 0;
-@@ -3714,6 +3764,8 @@ out:
+@@ -3716,6 +3766,8 @@ out:
  	return ret;
  
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
@@ -229,7 +229,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  out_ip6_prohibit_entry:
  	kfree(net->ipv6.ip6_prohibit_entry);
  out_ip6_null_entry:
-@@ -3731,6 +3783,7 @@ static void __net_exit ip6_route_net_exi
+@@ -3733,6 +3785,7 @@ static void __net_exit ip6_route_net_exi
  #ifdef CONFIG_IPV6_MULTIPLE_TABLES
  	kfree(net->ipv6.ip6_prohibit_entry);
  	kfree(net->ipv6.ip6_blk_hole_entry);
@@ -237,7 +237,7 @@  Signed-off-by: Jonas Gorski <jogo@openwrt.org>
  #endif
  	dst_entries_destroy(&net->ipv6.ip6_dst_ops);
  }
-@@ -3828,6 +3881,9 @@ int __init ip6_route_init(void)
+@@ -3830,6 +3883,9 @@ int __init ip6_route_init(void)
  	init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
  	init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
  	init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
diff --git a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
index 99ffb5e..cb9fa19 100644
--- a/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
+++ b/target/linux/generic/patches-4.9/810-pci_disable_common_quirks.patch
@@ -23,7 +23,7 @@ 
  /* The Mellanox Tavor device gives false positive parity errors
   * Mark this device with a broken_parity_status, to allow
   * PCI scanning code to "skip" this now blacklisted device.
-@@ -3016,6 +3017,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -3038,6 +3039,7 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65f9, quirk_intel_mc_errata);
  DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x65fa, quirk_intel_mc_errata);
  
@@ -31,7 +31,7 @@ 
  
  /*
   * Ivytown NTB BAR sizes are misreported by the hardware due to an erratum.  To
-@@ -3072,6 +3074,8 @@ static void fixup_debug_report(struct pc
+@@ -3094,6 +3096,8 @@ static void fixup_debug_report(struct pc
  	}
  }
  
@@ -40,7 +40,7 @@ 
  /*
   * Some BIOS implementations leave the Intel GPU interrupts enabled,
   * even though no one is handling them (f.e. i915 driver is never loaded).
-@@ -3106,6 +3110,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
+@@ -3128,6 +3132,8 @@ DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_IN
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x010a, disable_igfx_irq);
  DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_INTEL, 0x0152, disable_igfx_irq);
  
diff --git a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
index 91a3870..25c9851 100644
--- a/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
+++ b/target/linux/generic/patches-4.9/904-debloat_dma_buf.patch
@@ -32,7 +32,7 @@ 
  
  #include <uapi/linux/dma-buf.h>
  
-@@ -974,4 +975,5 @@ static void __exit dma_buf_deinit(void)
+@@ -977,4 +978,5 @@ static void __exit dma_buf_deinit(void)
  {
  	dma_buf_uninit_debugfs();
  }
diff --git a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch b/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
deleted file mode 100644
index f97e829..0000000
--- a/target/linux/imx6/patches-4.9/0003-mmc-sdhci-esdhc-imx-increase-the-pad-I-O-drive-stren.patch
+++ /dev/null
@@ -1,42 +0,0 @@ 
-From 9f327845358d3dd0d8a5a7a5436b0aa5c432e757 Mon Sep 17 00:00:00 2001
-From: Haibo Chen <haibo.chen@nxp.com>
-Date: Wed, 19 Apr 2017 10:53:51 +0800
-Subject: [PATCH] mmc: sdhci-esdhc-imx: increase the pad I/O drive strength for
- DDR50 card
-
-Currently for DDR50 card, it need tuning in default. We meet tuning fail
-issue for DDR50 card and some data CRC error when DDR50 sd card works.
-
-This is because the default pad I/O drive strength can't make sure DDR50
-card work stable. So increase the pad I/O drive strength for DDR50 card,
-and use pins_100mhz.
-
-This fixes DDR50 card support for IMX since DDR50 tuning was enabled from
-commit 9faac7b95ea4 ("mmc: sdhci: enable tuning for DDR50")
-
-Tested-and-reported-by: Tim Harvey <tharvey@gateworks.com>
-Signed-off-by: Haibo Chen <haibo.chen@nxp.com>
-Cc: stable@vger.kernel.org # v4.4+
-Acked-by: Dong Aisheng <aisheng.dong@nxp.com>
-Acked-by: Adrian Hunter <adrian.hunter@intel.com>
-Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
-Signed-off-by: Tim Harvey <tharvey@gateworks.com>
----
- drivers/mmc/host/sdhci-esdhc-imx.c | 1 +
- 1 file changed, 1 insertion(+)
-
-diff --git a/drivers/mmc/host/sdhci-esdhc-imx.c b/drivers/mmc/host/sdhci-esdhc-imx.c
-index 7123ef9..445fc47 100644
---- a/drivers/mmc/host/sdhci-esdhc-imx.c
-+++ b/drivers/mmc/host/sdhci-esdhc-imx.c
-@@ -830,6 +830,7 @@ static int esdhc_change_pinstate(struct sdhci_host *host,
- 
- 	switch (uhs) {
- 	case MMC_TIMING_UHS_SDR50:
-+	case MMC_TIMING_UHS_DDR50:
- 		pinctrl = imx_data->pins_100mhz;
- 		break;
- 	case MMC_TIMING_UHS_SDR104:
--- 
-2.7.4
-
diff --git a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
index 40656d1..c6a0470 100644
--- a/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
+++ b/target/linux/ipq806x/patches-4.9/0073-pinctrl-qom-use-scm_call-to-route-GPIO-irq-to-Apps.patch
@@ -45,7 +45,7 @@  Signed-off-by: Ajay Kishore <akisho@codeaurora.org>
 + }
 --- a/drivers/firmware/qcom_scm-64.c
 +++ b/drivers/firmware/qcom_scm-64.c
-@@ -358,3 +358,12 @@ int __qcom_scm_pas_mss_reset(struct devi
+@@ -365,3 +365,12 @@ int __qcom_scm_pas_mss_reset(struct devi
  
  	return ret ? : res.a1;
  }
diff --git a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
index 5525503..f36a79a 100644
--- a/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
+++ b/target/linux/lantiq/patches-4.9/0008-MIPS-lantiq-backport-old-timer-code.patch
@@ -176,7 +176,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 -obj-y := prom.o sysctrl.o clk.o reset.o dma.o gptu.o dcdc.o
 +obj-y := prom.o sysctrl.o clk.o reset.o dma.o timer.o dcdc.o
  
- obj-y += vmmc.o tffs.o
+ obj-y += vmmc.o
  
 --- /dev/null
 +++ b/arch/mips/lantiq/xway/timer.c
diff --git a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
index d79b401..d875c55 100644
--- a/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
+++ b/target/linux/lantiq/patches-4.9/0035-owrt-lantiq-wifi-and-ethernet-eeprom-handling.patch
@@ -29,7 +29,7 @@  Signed-off-by: John Crispin <blogic@openwrt.org>
 +++ b/arch/mips/lantiq/xway/Makefile
 @@ -2,4 +2,7 @@ obj-y := prom.o sysctrl.o clk.o reset.o
  
- obj-y += vmmc.o tffs.o
+ obj-y += vmmc.o
  
 +obj-y += eth_mac.o
 +obj-$(CONFIG_PCI) += ath5k_eep.o
diff --git a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
index 28b3d7f..ce38640 100644
--- a/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
+++ b/target/linux/mediatek/patches-4.9/00013-soc-mediatek-Add-MT2701-power-dt-bindings.patch
@@ -16,10 +16,8 @@  Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
  2 files changed, 35 insertions(+), 5 deletions(-)
  create mode 100644 include/dt-bindings/power/mt2701-power.h
 
-Index: linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
-===================================================================
---- linux-4.9.14.orig/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
-+++ linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
+--- a/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
++++ b/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
 @@ -9,17 +9,20 @@ domain control.
  
  The driver implements the Generic PM domain bindings described in
@@ -46,10 +44,8 @@  Index: linux-4.9.14/Documentation/devicetree/bindings/soc/mediatek/scpsys.txt
  
  Optional properties:
  - vdec-supply: Power supply for the vdec power domain
-Index: linux-4.9.14/include/dt-bindings/power/mt2701-power.h
-===================================================================
 --- /dev/null
-+++ linux-4.9.14/include/dt-bindings/power/mt2701-power.h
++++ b/include/dt-bindings/power/mt2701-power.h
 @@ -0,0 +1,26 @@
 +/*
 + * Copyright (C) 2015 MediaTek Inc.
diff --git a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
index 4c9e790..0786e52 100644
--- a/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
+++ b/target/linux/mediatek/patches-4.9/0014-soc-mediatek-Refine-scpsys-to-support-multiple-platf.patch
@@ -12,8 +12,6 @@  Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
  drivers/soc/mediatek/mtk-scpsys.c | 348 +++++++++++++++++++++++---------------
  1 file changed, 210 insertions(+), 138 deletions(-)
 
-diff --git a/drivers/soc/mediatek/mtk-scpsys.c b/drivers/soc/mediatek/mtk-scpsys.c
-index 837effe19907..722aac80e611 100644
 --- a/drivers/soc/mediatek/mtk-scpsys.c
 +++ b/drivers/soc/mediatek/mtk-scpsys.c
 @@ -11,17 +11,15 @@
@@ -181,7 +179,7 @@  index 837effe19907..722aac80e611 100644
  	struct genpd_onecell_data pd_data;
  	struct device *dev;
  	void __iomem *base;
-@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct device *dev)
+@@ -408,57 +324,55 @@ static bool scpsys_active_wakeup(struct
  	return scpd->data->active_wakeup;
  }
  
@@ -262,7 +260,7 @@  index 837effe19907..722aac80e611 100644
  		struct scp_domain *scpd = &scp->domains[i];
  		const struct scp_domain_data *data = &scp_domain_data[i];
  
-@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_device *pdev)
+@@ -467,13 +381,15 @@ static int scpsys_probe(struct platform_
  			if (PTR_ERR(scpd->supply) == -ENODEV)
  				scpd->supply = NULL;
  			else
@@ -273,15 +271,15 @@  index 837effe19907..722aac80e611 100644
  
 -	pd_data->num_domains = NUM_DOMAINS;
 +	pd_data->num_domains = num;
++
++	init_clks(pdev, clk);
  
 -	for (i = 0; i < NUM_DOMAINS; i++) {
-+	init_clks(pdev, clk);
-+
 +	for (i = 0; i < num; i++) {
  		struct scp_domain *scpd = &scp->domains[i];
  		struct generic_pm_domain *genpd = &scpd->genpd;
  		const struct scp_domain_data *data = &scp_domain_data[i];
-@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_device *pdev)
+@@ -482,13 +398,37 @@ static int scpsys_probe(struct platform_
  		scpd->scp = scp;
  
  		scpd->data = data;
@@ -321,7 +319,7 @@  index 837effe19907..722aac80e611 100644
  
  		/*
  		 * Initially turn on all domains to make the domains usable
-@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_device *pdev)
+@@ -507,6 +447,123 @@ static int scpsys_probe(struct platform_
  	 * valid.
  	 */
  
@@ -445,7 +443,7 @@  index 837effe19907..722aac80e611 100644
  	ret = pm_genpd_add_subdomain(pd_data->domains[MT8173_POWER_DOMAIN_MFG_ASYNC],
  		pd_data->domains[MT8173_POWER_DOMAIN_MFG_2D]);
  	if (ret && IS_ENABLED(CONFIG_PM))
-@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_device *pdev)
+@@ -517,21 +574,36 @@ static int scpsys_probe(struct platform_
  	if (ret && IS_ENABLED(CONFIG_PM))
  		dev_err(&pdev->dev, "Failed to add subdomain: %d\n", ret);
  
@@ -486,6 +484,3 @@  index 837effe19907..722aac80e611 100644
  static struct platform_driver scpsys_drv = {
  	.probe = scpsys_probe,
  	.driver = {
--- 
-2.11.0
-
diff --git a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
index c56a8a9..5147149 100644
--- a/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
+++ b/target/linux/mediatek/patches-4.9/0015-soc-mediatek-Add-MT2701-scpsys-driver.patch
@@ -17,10 +17,8 @@  Signed-off-by: Matthias Brugger <matthias.bgg@gmail.com>
  drivers/soc/mediatek/mtk-scpsys.c | 117 +++++++++++++++++++++++++++++++++++++-
  2 files changed, 117 insertions(+), 2 deletions(-)
 
-Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
-===================================================================
---- linux-4.9.14.orig/drivers/soc/mediatek/Kconfig
-+++ linux-4.9.14/drivers/soc/mediatek/Kconfig
+--- a/drivers/soc/mediatek/Kconfig
++++ b/drivers/soc/mediatek/Kconfig
 @@ -23,7 +23,7 @@ config MTK_PMIC_WRAP
  config MTK_SCPSYS
  	bool "MediaTek SCPSYS Support"
@@ -30,10 +28,8 @@  Index: linux-4.9.14/drivers/soc/mediatek/Kconfig
  	select REGMAP
  	select MTK_INFRACFG
  	select PM_GENERIC_DOMAINS if PM
-Index: linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
-===================================================================
---- linux-4.9.14.orig/drivers/soc/mediatek/mtk-scpsys.c
-+++ linux-4.9.14/drivers/soc/mediatek/mtk-scpsys.c
+--- a/drivers/soc/mediatek/mtk-scpsys.c
++++ b/drivers/soc/mediatek/mtk-scpsys.c
 @@ -20,6 +20,7 @@
  #include <linux/regulator/consumer.h>
  #include <linux/soc/mediatek/infracfg.h>
diff --git a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
index cf604f4..19be772 100644
--- a/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
+++ b/target/linux/mediatek/patches-4.9/0071-pwm-add-pwm-mediatek.patch
@@ -13,10 +13,8 @@  Signed-off-by: John Crispin <john@phrozen.org>
  5 files changed, 279 insertions(+)
  create mode 100644 drivers/pwm/pwm-mediatek.c
 
-Index: linux-4.9.17/drivers/pwm/Kconfig
-===================================================================
---- linux-4.9.17.orig/drivers/pwm/Kconfig
-+++ linux-4.9.17/drivers/pwm/Kconfig
+--- a/drivers/pwm/Kconfig
++++ b/drivers/pwm/Kconfig
 @@ -282,6 +282,15 @@ config PWM_MTK_DISP
  	  To compile this driver as a module, choose M here: the module
  	  will be called pwm-mtk-disp.
@@ -33,10 +31,8 @@  Index: linux-4.9.17/drivers/pwm/Kconfig
  config PWM_MXS
  	tristate "Freescale MXS PWM support"
  	depends on ARCH_MXS && OF
-Index: linux-4.9.17/drivers/pwm/Makefile
-===================================================================
---- linux-4.9.17.orig/drivers/pwm/Makefile
-+++ linux-4.9.17/drivers/pwm/Makefile
+--- a/drivers/pwm/Makefile
++++ b/drivers/pwm/Makefile
 @@ -25,6 +25,7 @@ obj-$(CONFIG_PWM_LPSS)		+= pwm-lpss.o
  obj-$(CONFIG_PWM_LPSS_PCI)	+= pwm-lpss-pci.o
  obj-$(CONFIG_PWM_LPSS_PLATFORM)	+= pwm-lpss-platform.o
@@ -45,10 +41,8 @@  Index: linux-4.9.17/drivers/pwm/Makefile
  obj-$(CONFIG_PWM_MTK_DISP)	+= pwm-mtk-disp.o
  obj-$(CONFIG_PWM_MXS)		+= pwm-mxs.o
  obj-$(CONFIG_PWM_OMAP_DMTIMER)	+= pwm-omap-dmtimer.o
-Index: linux-4.9.17/drivers/pwm/pwm-mediatek.c
-===================================================================
 --- /dev/null
-+++ linux-4.9.17/drivers/pwm/pwm-mediatek.c
++++ b/drivers/pwm/pwm-mediatek.c
 @@ -0,0 +1,230 @@
 +/*
 + * Mediatek Pulse Width Modulator driver
diff --git a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
index a72da69..f743e10 100644
--- a/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
+++ b/target/linux/mediatek/patches-4.9/0083-mfd-led3.patch
@@ -26,11 +26,9 @@  Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  drivers/mfd/mt6397-core.c | 4 ++++
  1 file changed, 4 insertions(+)
 
-diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
-index e14d8b0..8e601c8 100644
 --- a/drivers/mfd/mt6397-core.c
 +++ b/drivers/mfd/mt6397-core.c
-@@ -48,6 +48,10 @@
+@@ -48,6 +48,10 @@ static const struct mfd_cell mt6323_devs
  		.name = "mt6323-regulator",
  		.of_compatible = "mediatek,mt6323-regulator"
  	},
diff --git a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
index 96662dd..dee31cd 100644
--- a/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
+++ b/target/linux/mediatek/patches-4.9/0085-pmic-led0.patch
@@ -26,9 +26,6 @@  Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  1 file changed, 60 insertions(+)
  create mode 100644 Documentation/devicetree/bindings/leds/leds-mt6323.txt
 
-diff --git a/Documentation/devicetree/bindings/leds/leds-mt6323.txt b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
-new file mode 100644
-index 0000000..ac38472
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/leds/leds-mt6323.txt
 @@ -0,0 +1,60 @@
diff --git a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
index 215b1b0..2edb4ba 100644
--- a/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
+++ b/target/linux/mediatek/patches-4.9/0086-pmic-led1.patch
@@ -26,11 +26,9 @@  Signed-off-by: Sean Wang <sean.wang@mediatek.com>
  Documentation/devicetree/bindings/mfd/mt6397.txt | 1 +
  1 file changed, 1 insertion(+)
 
-diff --git a/Documentation/devicetree/bindings/mfd/mt6397.txt b/Documentation/devicetree/bindings/mfd/mt6397.txt
-index c568d52..522a3bb 100644
 --- a/Documentation/devicetree/bindings/mfd/mt6397.txt
 +++ b/Documentation/devicetree/bindings/mfd/mt6397.txt
-@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device with the following sub modules:
+@@ -6,6 +6,7 @@ MT6397/MT6323 is a multifunction device
  - Audio codec
  - GPIO
  - Clock
diff --git a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
index f3bc921..f0d706c 100644
--- a/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
+++ b/target/linux/mediatek/patches-4.9/0087-pmic-led2.patch
@@ -30,10 +30,8 @@  Reviewed-by: Jacek Anaszewski <jacek.anaszewski@gmail.com>
  3 files changed, 511 insertions(+)
  create mode 100644 drivers/leds/leds-mt6323.c
 
-Index: linux-4.9.17/drivers/leds/Kconfig
-===================================================================
---- linux-4.9.17.orig/drivers/leds/Kconfig
-+++ linux-4.9.17/drivers/leds/Kconfig
+--- a/drivers/leds/Kconfig
++++ b/drivers/leds/Kconfig
 @@ -117,6 +117,14 @@ config LEDS_MIKROTIK_RB532
  	  This option enables support for the so called "User LED" of
  	  Mikrotik's Routerboard 532.
@@ -49,10 +47,8 @@  Index: linux-4.9.17/drivers/leds/Kconfig
  config LEDS_S3C24XX
  	tristate "LED Support for Samsung S3C24XX GPIO LEDs"
  	depends on LEDS_CLASS
-Index: linux-4.9.17/drivers/leds/leds-mt6323.c
-===================================================================
 --- /dev/null
-+++ linux-4.9.17/drivers/leds/leds-mt6323.c
++++ b/drivers/leds/leds-mt6323.c
 @@ -0,0 +1,502 @@
 +/*
 + * LED driver for Mediatek MT6323 PMIC
diff --git a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
index 701dcec..888218b 100644
--- a/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
+++ b/target/linux/mediatek/patches-4.9/0088-pmic-led3.patch
@@ -28,11 +28,9 @@  Acked-by: Lee Jones <lee.jones@linaro.org>
  drivers/mfd/mt6397-core.c | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)
 
-diff --git a/drivers/mfd/mt6397-core.c b/drivers/mfd/mt6397-core.c
-index 8e601c8..04a601f 100644
 --- a/drivers/mfd/mt6397-core.c
 +++ b/drivers/mfd/mt6397-core.c
-@@ -47,8 +47,7 @@
+@@ -47,8 +47,7 @@ static const struct mfd_cell mt6323_devs
  	{
  		.name = "mt6323-regulator",
  		.of_compatible = "mediatek,mt6323-regulator"
diff --git a/target/linux/mediatek/patches-4.9/0091-dsa1.patch b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
index c9bad93..ffc63dc 100644
--- a/target/linux/mediatek/patches-4.9/0091-dsa1.patch
+++ b/target/linux/mediatek/patches-4.9/0091-dsa1.patch
@@ -27,9 +27,6 @@  Acked-by: Rob Herring <robh@kernel.org>
  1 file changed, 92 insertions(+)
  create mode 100644 Documentation/devicetree/bindings/net/dsa/mt7530.txt
 
-diff --git a/Documentation/devicetree/bindings/net/dsa/mt7530.txt b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
-new file mode 100644
-index 0000000..a9bc27b
 --- /dev/null
 +++ b/Documentation/devicetree/bindings/net/dsa/mt7530.txt
 @@ -0,0 +1,92 @@
diff --git a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
index 5ae90e3..6e65d27 100644
--- a/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
+++ b/target/linux/mediatek/patches-4.9/0091-net-next-mediatek-fix-DQL-support.patch
@@ -16,10 +16,8 @@  Signed-off-by: John Crispin <john@phrozen.org>
  drivers/net/ethernet/mediatek/mtk_eth_soc.c |   33 ++++++++++++++++-----------
  1 file changed, 20 insertions(+), 13 deletions(-)
 
-Index: linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-===================================================================
---- linux-4.9.14.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ linux-4.9.14/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 @@ -706,7 +706,16 @@ static int mtk_tx_map(struct sk_buff *sk
  	WRITE_ONCE(itxd->txd3, (TX_DMA_SWC | TX_DMA_PLEN0(skb_headlen(skb)) |
  				(!nr_frags * TX_DMA_LS0)));
diff --git a/target/linux/mediatek/patches-4.9/0092-dsa2.patch b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
index 84e5cb4..a5b4242 100644
--- a/target/linux/mediatek/patches-4.9/0092-dsa2.patch
+++ b/target/linux/mediatek/patches-4.9/0092-dsa2.patch
@@ -36,11 +36,9 @@  Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
  6 files changed, 127 insertions(+)
  create mode 100644 net/dsa/tag_mtk.c
 
-diff --git a/include/net/dsa.h b/include/net/dsa.h
-index 4e13e69..3276547 100644
 --- a/include/net/dsa.h
 +++ b/include/net/dsa.h
-@@ -31,6 +31,7 @@ enum dsa_tag_protocol {
+@@ -27,6 +27,7 @@ enum dsa_tag_protocol {
  	DSA_TAG_PROTO_EDSA,
  	DSA_TAG_PROTO_BRCM,
  	DSA_TAG_PROTO_QCA,
@@ -48,31 +46,25 @@  index 4e13e69..3276547 100644
  	DSA_TAG_LAST,		/* MUST BE LAST */
  };
  
-diff --git a/net/dsa/Kconfig b/net/dsa/Kconfig
-index 9649238..d78789b 100644
 --- a/net/dsa/Kconfig
 +++ b/net/dsa/Kconfig
-@@ -31,4 +31,6 @@ config NET_DSA_TAG_TRAILER
+@@ -41,4 +41,6 @@ config NET_DSA_TAG_TRAILER
  config NET_DSA_TAG_QCA
  	bool
  
 +config NET_DSA_TAG_MTK
 +	bool
  endif
-diff --git a/net/dsa/Makefile b/net/dsa/Makefile
-index 31d3437..9b1d478 100644
 --- a/net/dsa/Makefile
 +++ b/net/dsa/Makefile
-@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += tag_dsa.o
+@@ -8,3 +8,4 @@ dsa_core-$(CONFIG_NET_DSA_TAG_DSA) += ta
  dsa_core-$(CONFIG_NET_DSA_TAG_EDSA) += tag_edsa.o
  dsa_core-$(CONFIG_NET_DSA_TAG_TRAILER) += tag_trailer.o
  dsa_core-$(CONFIG_NET_DSA_TAG_QCA) += tag_qca.o
 +dsa_core-$(CONFIG_NET_DSA_TAG_MTK) += tag_mtk.o
-diff --git a/net/dsa/dsa.c b/net/dsa/dsa.c
-index b6d4f6a..617f736 100644
 --- a/net/dsa/dsa.c
 +++ b/net/dsa/dsa.c
-@@ -53,6 +53,9 @@ static struct sk_buff *dsa_slave_notag_xmit(struct sk_buff *skb,
+@@ -57,6 +57,9 @@ const struct dsa_device_ops *dsa_device_
  #ifdef CONFIG_NET_DSA_TAG_QCA
  	[DSA_TAG_PROTO_QCA] = &qca_netdev_ops,
  #endif
@@ -82,11 +74,9 @@  index b6d4f6a..617f736 100644
  	[DSA_TAG_PROTO_NONE] = &none_ops,
  };
  
-diff --git a/net/dsa/dsa_priv.h b/net/dsa/dsa_priv.h
-index 0706a51..2a31399 100644
 --- a/net/dsa/dsa_priv.h
 +++ b/net/dsa/dsa_priv.h
-@@ -85,4 +85,7 @@ int dsa_slave_create(struct dsa_switch *ds, struct device *parent,
+@@ -84,4 +84,7 @@ extern const struct dsa_device_ops brcm_
  /* tag_qca.c */
  extern const struct dsa_device_ops qca_netdev_ops;
  
@@ -94,9 +84,6 @@  index 0706a51..2a31399 100644
 +extern const struct dsa_device_ops mtk_netdev_ops;
 +
  #endif
-diff --git a/net/dsa/tag_mtk.c b/net/dsa/tag_mtk.c
-new file mode 100644
-index 0000000..833a9d6
 --- /dev/null
 +++ b/net/dsa/tag_mtk.c
 @@ -0,0 +1,117 @@
diff --git a/target/linux/mediatek/patches-4.9/0092-dsa3.patch b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
index 7c4dc4f..385add1 100644
--- a/target/linux/mediatek/patches-4.9/0092-dsa3.patch
+++ b/target/linux/mediatek/patches-4.9/0092-dsa3.patch
@@ -33,11 +33,9 @@  Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
  drivers/net/ethernet/mediatek/mtk_eth_soc.h | 4 ++++
  2 files changed, 10 insertions(+)
 
-diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-index 9e75768..c21ed99 100644
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -1846,6 +1846,12 @@ static int mtk_hw_init(struct mtk_eth *eth)
+@@ -1855,6 +1855,12 @@ static int mtk_hw_init(struct mtk_eth *e
  	/* GE2, Force 1000M/FD, FC ON */
  	mtk_w32(eth, MAC_MCR_FIXED_LINK, MTK_MAC_MCR(1));
  
@@ -50,8 +48,6 @@  index 9e75768..c21ed99 100644
  	/* Enable RX VLan Offloading */
  	mtk_w32(eth, 1, MTK_CDMP_EG_CTRL);
  
-diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.h b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
-index 99b1c8e..996024d 100644
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 @@ -70,6 +70,10 @@
diff --git a/target/linux/mediatek/patches-4.9/0092-dsa4.patch b/target/linux/mediatek/patches-4.9/0092-dsa4.patch
index d67b4a9..4daebfb 100644
--- a/target/linux/mediatek/patches-4.9/0092-dsa4.patch
+++ b/target/linux/mediatek/patches-4.9/0092-dsa4.patch
@@ -31,11 +31,9 @@  Reviewed-by: Florian Fainelli <f.fainelli@gmail.com>
  drivers/net/ethernet/mediatek/mtk_eth_soc.c | 2 ++
  1 file changed, 2 insertions(+)
 
-diff --git a/drivers/net/ethernet/mediatek/mtk_eth_soc.c b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-index c21ed99..84b09a4 100644
 --- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 +++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-@@ -2323,6 +2323,8 @@ static int mtk_add_mac(struct mtk_eth *eth, struct device_node *np)
+@@ -2333,6 +2333,8 @@ static int mtk_add_mac(struct mtk_eth *e
  	eth->netdev[id]->ethtool_ops = &mtk_ethtool_ops;
  
  	eth->netdev[id]->irq = eth->irq[0];
diff --git a/target/linux/mediatek/patches-4.9/0092-dsa5.patch b/target/linux/mediatek/patches-4.9/0092-dsa5.patch
index 6c10137..63a40d0 100644
--- a/target/linux/mediatek/patches-4.9/0092-dsa5.patch
+++ b/target/linux/mediatek/patches-4.9/0092-dsa5.patch
@@ -49,8 +49,6 @@  Signed-off-by: Landen Chao <Landen.Chao@mediatek.com>
  create mode 100644 drivers/net/dsa/mt7530.c
  create mode 100644 drivers/net/dsa/mt7530.h
 
-diff --git a/drivers/net/dsa/Kconfig b/drivers/net/dsa/Kconfig
-index 0659846..5b322b4 100644
 --- a/drivers/net/dsa/Kconfig
 +++ b/drivers/net/dsa/Kconfig
 @@ -34,4 +34,12 @@ config NET_DSA_QCA8K
@@ -66,21 +64,16 @@  index 0659846..5b322b4 100644
 +	  chip.
 +
  endmenu
-diff --git a/drivers/net/dsa/Makefile b/drivers/net/dsa/Makefile
-index a3c9416..8e629c1 100644
 --- a/drivers/net/dsa/Makefile
 +++ b/drivers/net/dsa/Makefile
-@@ -2,6 +2,6 @@ obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
- obj-$(CONFIG_NET_DSA_BCM_SF2)	+= bcm-sf2.o
- bcm-sf2-objs			:= bcm_sf2.o bcm_sf2_cfp.o
+@@ -1,6 +1,6 @@
+ obj-$(CONFIG_NET_DSA_MV88E6060) += mv88e6060.o
+ obj-$(CONFIG_NET_DSA_BCM_SF2)	+= bcm_sf2.o
  obj-$(CONFIG_NET_DSA_QCA8K)	+= qca8k.o
 -
 +obj-$(CONFIG_NET_DSA_MT7530) += mt7530.o
  obj-y				+= b53/
  obj-y				+= mv88e6xxx/
-diff --git a/drivers/net/dsa/mt7530.c b/drivers/net/dsa/mt7530.c
-new file mode 100644
-index 0000000..ad2e6f8
 --- /dev/null
 +++ b/drivers/net/dsa/mt7530.c
 @@ -0,0 +1,1126 @@
@@ -1210,9 +1203,6 @@  index 0000000..ad2e6f8
 +MODULE_DESCRIPTION("Driver for Mediatek MT7530 Switch");
 +MODULE_LICENSE("GPL");
 +MODULE_ALIAS("platform:mediatek-mt7530");
-diff --git a/drivers/net/dsa/mt7530.h b/drivers/net/dsa/mt7530.h
-new file mode 100644
-index 0000000..05a612f
 --- /dev/null
 +++ b/drivers/net/dsa/mt7530.h
 @@ -0,0 +1,390 @@
diff --git a/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch b/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
index ca36d4c..f69078c 100644
--- a/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
+++ b/target/linux/mediatek/patches-4.9/0093-dsa-compat.patch
@@ -1,7 +1,5 @@ 
-Index: linux-4.9.17/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-4.9.17.orig/drivers/net/dsa/mt7530.c
-+++ linux-4.9.17/drivers/net/dsa/mt7530.c
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
 @@ -834,6 +834,7 @@ mt7530_port_bridge_join(struct dsa_switc
  	int i;
  
@@ -70,10 +68,8 @@  Index: linux-4.9.17/drivers/net/dsa/mt7530.c
  }
  
  static void
-Index: linux-4.9.17/drivers/net/dsa/mt7530.h
-===================================================================
---- linux-4.9.17.orig/drivers/net/dsa/mt7530.h
-+++ linux-4.9.17/drivers/net/dsa/mt7530.h
+--- a/drivers/net/dsa/mt7530.h
++++ b/drivers/net/dsa/mt7530.h
 @@ -379,6 +379,8 @@ struct mt7530_priv {
  	struct mt7530_port	ports[MT7530_NUM_PORTS];
  	/* protect among processes for registers access*/
@@ -83,10 +79,8 @@  Index: linux-4.9.17/drivers/net/dsa/mt7530.h
  };
  
  struct mt7530_hw_stats {
-Index: linux-4.9.17/net/dsa/tag_mtk.c
-===================================================================
---- linux-4.9.17.orig/net/dsa/tag_mtk.c
-+++ linux-4.9.17/net/dsa/tag_mtk.c
+--- a/net/dsa/tag_mtk.c
++++ b/net/dsa/tag_mtk.c
 @@ -35,7 +35,7 @@ static struct sk_buff *mtk_tag_xmit(stru
  	/* Build the tag after the MAC Source Address */
  	mtk_tag = skb->data + 2 * ETH_ALEN;
diff --git a/target/linux/mediatek/patches-4.9/0094-net-affinity.patch b/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
index 8e51bdd..0c468fb 100644
--- a/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
+++ b/target/linux/mediatek/patches-4.9/0094-net-affinity.patch
@@ -1,7 +1,5 @@ 
-Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-===================================================================
---- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 @@ -2459,15 +2459,23 @@ static int mtk_probe(struct platform_dev
  			goto err_deinit_hw;
  	}
@@ -26,10 +24,8 @@  Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.c
  
  	err = mtk_mdio_init(eth);
  	if (err)
-Index: linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
-===================================================================
---- linux-4.9.17.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.h
-+++ linux-4.9.17/drivers/net/ethernet/mediatek/mtk_eth_soc.h
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.h
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.h
 @@ -539,6 +539,7 @@ struct mtk_eth {
  	struct net_device		*netdev[MTK_MAX_DEVS];
  	struct mtk_mac			*mac[MTK_MAX_DEVS];
diff --git a/target/linux/mediatek/patches-4.9/0095-ephy.patch b/target/linux/mediatek/patches-4.9/0095-ephy.patch
index 52d8299..dc88ca2 100644
--- a/target/linux/mediatek/patches-4.9/0095-ephy.patch
+++ b/target/linux/mediatek/patches-4.9/0095-ephy.patch
@@ -1,7 +1,5 @@ 
-Index: linux-4.9.20/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
-+++ linux-4.9.20/drivers/net/dsa/mt7530.c
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
 @@ -629,6 +629,11 @@ mt7530_setup(struct dsa_switch *ds)
  	val = mt7530_read(priv, MT7530_MHWTRAP);
  	val &= ~MHWTRAP_P6_DIS & ~MHWTRAP_PHY_ACCESS;
@@ -14,10 +12,8 @@  Index: linux-4.9.20/drivers/net/dsa/mt7530.c
  	mt7530_write(priv, MT7530_MHWTRAP, val);
  
  	/* Enable and reset MIB counters */
-Index: linux-4.9.20/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-===================================================================
---- linux-4.9.20.orig/drivers/net/ethernet/mediatek/mtk_eth_soc.c
-+++ linux-4.9.20/drivers/net/ethernet/mediatek/mtk_eth_soc.c
+--- a/drivers/net/ethernet/mediatek/mtk_eth_soc.c
++++ b/drivers/net/ethernet/mediatek/mtk_eth_soc.c
 @@ -221,6 +221,9 @@ static void mtk_phy_link_adjust(struct n
  		netif_carrier_on(dev);
  	else
diff --git a/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch b/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
index 2a562e1..1a74e63 100644
--- a/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
+++ b/target/linux/mediatek/patches-4.9/0096-dsa-multi-cpu.patch
@@ -1,7 +1,5 @@ 
-Index: linux-4.9.20/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
-+++ linux-4.9.20/drivers/net/dsa/mt7530.c
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
 @@ -996,15 +996,7 @@ err:
  static enum dsa_tag_protocol
  mtk_get_tag_protocol(struct dsa_switch *ds)
@@ -19,10 +17,8 @@  Index: linux-4.9.20/drivers/net/dsa/mt7530.c
  }
  
  static struct dsa_switch_ops mt7530_switch_ops = {
-Index: linux-4.9.20/include/net/dsa.h
-===================================================================
---- linux-4.9.20.orig/include/net/dsa.h
-+++ linux-4.9.20/include/net/dsa.h
+--- a/include/net/dsa.h
++++ b/include/net/dsa.h
 @@ -145,6 +145,8 @@ struct dsa_port {
  	struct device_node	*dn;
  	unsigned int		ageing_time;
@@ -72,10 +68,8 @@  Index: linux-4.9.20/include/net/dsa.h
  struct switchdev_trans;
  struct switchdev_obj;
  struct switchdev_obj_port_fdb;
-Index: linux-4.9.20/net/dsa/dsa2.c
-===================================================================
---- linux-4.9.20.orig/net/dsa/dsa2.c
-+++ linux-4.9.20/net/dsa/dsa2.c
+--- a/net/dsa/dsa2.c
++++ b/net/dsa/dsa2.c
 @@ -248,8 +248,6 @@ static int dsa_cpu_port_apply(struct dev
  		return err;
  	}
@@ -151,10 +145,8 @@  Index: linux-4.9.20/net/dsa/dsa2.c
  	}
  
  	pr_info("DSA: switch %d %d parsed\n", dst->tree, ds->index);
-Index: linux-4.9.20/net/dsa/dsa_priv.h
-===================================================================
---- linux-4.9.20.orig/net/dsa/dsa_priv.h
-+++ linux-4.9.20/net/dsa/dsa_priv.h
+--- a/net/dsa/dsa_priv.h
++++ b/net/dsa/dsa_priv.h
 @@ -43,6 +43,7 @@ struct dsa_slave_priv {
  	int			old_duplex;
  
@@ -163,10 +155,8 @@  Index: linux-4.9.20/net/dsa/dsa_priv.h
  #ifdef CONFIG_NET_POLL_CONTROLLER
  	struct netpoll		*netpoll;
  #endif
-Index: linux-4.9.20/net/dsa/slave.c
-===================================================================
---- linux-4.9.20.orig/net/dsa/slave.c
-+++ linux-4.9.20/net/dsa/slave.c
+--- a/net/dsa/slave.c
++++ b/net/dsa/slave.c
 @@ -61,7 +61,7 @@ static int dsa_slave_get_iflink(const st
  {
  	struct dsa_slave_priv *p = netdev_priv(dev);
diff --git a/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch b/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
index 9f785dd..26eff60 100644
--- a/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
+++ b/target/linux/mediatek/patches-4.9/0097-dsa-mt7530.patch
@@ -1,7 +1,5 @@ 
-Index: linux-4.9.20/drivers/net/dsa/mt7530.c
-===================================================================
---- linux-4.9.20.orig/drivers/net/dsa/mt7530.c
-+++ linux-4.9.20/drivers/net/dsa/mt7530.c
+--- a/drivers/net/dsa/mt7530.c
++++ b/drivers/net/dsa/mt7530.c
 @@ -627,7 +627,7 @@ mt7530_setup(struct dsa_switch *ds)
  
  	/* Enable Port 6 only; P5 as GMAC5 which currently is not supported */
diff --git a/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch b/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
deleted file mode 100644
index aa55fd9..0000000
--- a/target/linux/ramips/patches-4.9/200-rt3883-fix-pinctrl-typo.patch
+++ /dev/null
@@ -1,21 +0,0 @@ 
-From 2583143af8111d430bdca0268b6cdb7ccc7c3f9d Mon Sep 17 00:00:00 2001
-From: Daniel Golle <daniel@makrotopia.org>
-Date: Fri, 13 Jan 2017 05:40:04 +0100
-Subject: [PATCH] mips: ralink/rt3883: fix typo in pinctrl lna_g_func
-
-Signed-off-by: Daniel Golle <daniel@makrotopia.org>
----
- arch/mips/ralink/rt3883.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/arch/mips/ralink/rt3883.c
-+++ b/arch/mips/ralink/rt3883.c
-@@ -36,7 +36,7 @@ static struct rt2880_pmx_func uartlite_f
- static struct rt2880_pmx_func jtag_func[] = { FUNC("jtag", 0, 17, 5) };
- static struct rt2880_pmx_func mdio_func[] = { FUNC("mdio", 0, 22, 2) };
- static struct rt2880_pmx_func lna_a_func[] = { FUNC("lna a", 0, 32, 3) };
--static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna a", 0, 35, 3) };
-+static struct rt2880_pmx_func lna_g_func[] = { FUNC("lna g", 0, 35, 3) };
- static struct rt2880_pmx_func pci_func[] = {
- 	FUNC("pci-dev", 0, 40, 32),
- 	FUNC("pci-host2", 1, 40, 32),