[LEDE-DEV] [PATCH] kernel: update kernel 4.9 to 4.9.25
Alexandru Ardelean
ardeleanalex at gmail.com
Mon May 8 00:36:34 PDT 2017
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 at 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 at 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 at 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 at milecki.pl>
>> -Signed-off-by: Florian Fainelli <f.fainelli at 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 at 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 at milecki.pl>
>> -Signed-off-by: Jon Mason <jon.mason at broadcom.com>
>> -Fixes: d27509f1 ("ARM: BCM5301X: add dts files for BCM4708 SoC")
>> -Signed-off-by: Florian Fainelli <f.fainelli at 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 at 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 at 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 at 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 at gmail.com>
>> -Signed-off-by: Bjorn Helgaas <bhelgaas at google.com>
>> -CC: stable at 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 at 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 at 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 at 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 at 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 at tronnes.org>
>> -Reviewed-by: Eric Anholt <eric at anholt.net>
>> -Reviewed-by: Martin Sperl <kernel at 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 at 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 at vger.kernel.org
>> -Signed-off-by: Felix Fietkau <nbd at 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 at 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 at 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 at 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 at 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 at 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 at imgtec.com>
>> -Reviewed-by: Maciej W. Rozycki <macro at 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 at 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 at 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 at 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 at 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 at 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 at imgtec.com>
>> -Cc: Ralf Baechle <ralf at linux-mips.org>
>> -Cc: Paul Burton <paul.burton at imgtec.com>
>> -Cc: linux-mips at linux-mips.org
>> -Patchwork: https://patchwork.linux-mips.org/patch/15110/
>> -Signed-off-by: James Hogan <james.hogan at 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 at 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 at milecki.pl>
>> -Signed-off-by: Brian Norris <computersforpeace at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at gateworks.com>
>> -Signed-off-by: Haibo Chen <haibo.chen at nxp.com>
>> -Cc: stable at vger.kernel.org # v4.4+
>> -Acked-by: Dong Aisheng <aisheng.dong at nxp.com>
>> -Acked-by: Adrian Hunter <adrian.hunter at intel.com>
>> -Signed-off-by: Ulf Hansson <ulf.hansson at linaro.org>
>> -Signed-off-by: Tim Harvey <tharvey at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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
More information about the Lede-dev
mailing list