kernel: update kernel 4.9 to 4.9.29
- Refresh all patches - Removed upstreamed - Adapted 1 Compile tested on: bcm53xx, cns3xxx, imx6, lantiq Run tested on: cns3xxx & imx6 Signed-off-by: Koen Vandeputte <koen.vandeputte@ncentric.com> [update from 4.9.28 to 4.9.29] Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
088e28772c
commit
e842e16f45
71 changed files with 149 additions and 1089 deletions
|
@ -4,11 +4,11 @@ LINUX_RELEASE?=1
|
|||
|
||||
LINUX_VERSION-3.18 = .43
|
||||
LINUX_VERSION-4.4 = .69
|
||||
LINUX_VERSION-4.9 = .20
|
||||
LINUX_VERSION-4.9 = .29
|
||||
|
||||
LINUX_KERNEL_HASH-3.18.43 = 1236e8123a6ce537d5029232560966feed054ae31776fe8481dd7d18cdd5492c
|
||||
LINUX_KERNEL_HASH-4.4.69 = 207bbc50aaf827d667a2762312bd6127887cc669ff7a7270b876e7102b8f84fa
|
||||
LINUX_KERNEL_HASH-4.9.20 = 48660806dd32fb8dcbcf5932291bf6cc7d29240070372230871e0f56fea81341
|
||||
LINUX_KERNEL_HASH-4.9.29 = 51b6df767544e593e3161b0109a6a76be18bfc9d6cc1fb7fa92b48de6cff24cf
|
||||
|
||||
ifdef KERNEL_PATCHVER
|
||||
LINUX_VERSION:=$(KERNEL_PATCHVER)$(strip $(LINUX_VERSION-$(KERNEL_PATCHVER)))
|
||||
|
|
|
@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
|||
|
||||
#include "xhci.h"
|
||||
#include "xhci-trace.h"
|
||||
@@ -221,6 +223,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
@@ -224,6 +226,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||
#endif /* CONFIG_ACPI */
|
||||
|
||||
|
@ -503,7 +503,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
|||
/* called during probe() after chip reset completes */
|
||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||
{
|
||||
@@ -260,6 +714,22 @@ static int xhci_pci_probe(struct pci_dev
|
||||
@@ -263,6 +717,22 @@ static int xhci_pci_probe(struct pci_dev
|
||||
struct hc_driver *driver;
|
||||
struct usb_hcd *hcd;
|
||||
|
||||
|
@ -526,7 +526,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
|||
driver = (struct hc_driver *)id->driver_data;
|
||||
|
||||
/* Prevent runtime suspending between USB-2 and USB-3 initialization */
|
||||
@@ -317,6 +787,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
@@ -320,6 +790,16 @@ static void xhci_pci_remove(struct pci_d
|
||||
{
|
||||
struct xhci_hcd *xhci;
|
||||
|
||||
|
|
|
@ -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 {
|
||||
@@ -1678,6 +1678,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 */
|
||||
|
|
|
@ -20,8 +20,8 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
|||
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
|
||||
@@ -42,7 +42,7 @@
|
||||
#define DWMAC_CORE_3_50 0x35
|
||||
@@ -49,7 +49,7 @@
|
||||
#define STMMAC_GET_ENTRY(x, size) ((x + 1) & (size - 1))
|
||||
|
||||
#undef FRAME_FILTER_DEBUG
|
||||
-/* #define FRAME_FILTER_DEBUG */
|
||||
|
|
|
@ -20,8 +20,8 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
|||
|
||||
--- a/drivers/net/ethernet/stmicro/stmmac/common.h
|
||||
+++ b/drivers/net/ethernet/stmicro/stmmac/common.h
|
||||
@@ -42,7 +42,7 @@
|
||||
#define DWMAC_CORE_3_50 0x35
|
||||
@@ -49,7 +49,7 @@
|
||||
#define STMMAC_GET_ENTRY(x, size) ((x + 1) & (size - 1))
|
||||
|
||||
#undef FRAME_FILTER_DEBUG
|
||||
-/* #define FRAME_FILTER_DEBUG */
|
||||
|
|
|
@ -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
|
|
@ -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>;
|
||||
};
|
||||
|
|
@ -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);
|
|
@ -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)
|
||||
#define XHCI_MISSING_CAS (1 << 24)
|
||||
+#define XHCI_FAKE_DOORBELL (1 << 25)
|
||||
@@ -1660,6 +1660,7 @@ struct xhci_hcd {
|
||||
/* For controller with a broken Port Disable implementation */
|
||||
#define XHCI_BROKEN_PORT_PED (1 << 25)
|
||||
#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
|
||||
+#define XHCI_FAKE_DOORBELL (1 << 27)
|
||||
|
||||
unsigned int num_active_eps;
|
||||
unsigned int limit_active_eps;
|
||||
/* There are two roothubs to keep track of bus suspend info for */
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Eric Anholt <eric@anholt.net>
|
|||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -7323,8 +7323,6 @@ int alloc_contig_range(unsigned long sta
|
||||
@@ -7324,8 +7324,6 @@ int alloc_contig_range(unsigned long sta
|
||||
|
||||
/* Make sure the range is really isolated. */
|
||||
if (test_pages_isolated(outer_start, end, false)) {
|
||||
|
|
|
@ -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
|
||||
@@ -5025,7 +5025,7 @@ static void port_event(struct usb_hub *h
|
||||
if (portchange & USB_PORT_STAT_C_OVERCURRENT) {
|
||||
u16 status = 0, unused;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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);
|
|
@ -1,49 +0,0 @@
|
|||
From 3d6159640da9c9175d1ca42f151fc1a14caded59 Mon Sep 17 00:00:00 2001
|
||||
From: Alexey Brodkin <Alexey.Brodkin@synopsys.com>
|
||||
Date: Thu, 13 Apr 2017 15:33:34 +0300
|
||||
Subject: [PATCH] usb: Make sure usb/phy/of gets built-in
|
||||
|
||||
DWC3 driver uses of_usb_get_phy_mode() which is
|
||||
implemented in drivers/usb/phy/of.c and in bare minimal
|
||||
configuration it might not be pulled in kernel binary.
|
||||
|
||||
In case of ARC or ARM this could be easily reproduced with
|
||||
"allnodefconfig" +CONFIG_USB=m +CONFIG_USB_DWC3=m.
|
||||
|
||||
On building all ends-up with:
|
||||
---------------------->8------------------
|
||||
Kernel: arch/arm/boot/Image is ready
|
||||
Kernel: arch/arm/boot/zImage is ready
|
||||
Building modules, stage 2.
|
||||
MODPOST 5 modules
|
||||
ERROR: "of_usb_get_phy_mode" [drivers/usb/dwc3/dwc3.ko] undefined!
|
||||
make[1]: *** [__modpost] Error 1
|
||||
make: *** [modules] Error 2
|
||||
---------------------->8------------------
|
||||
|
||||
Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
|
||||
Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
Cc: Masahiro Yamada <yamada.masahiro@socionext.com>
|
||||
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
|
||||
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
|
||||
Cc: Thomas Gleixner <tglx@linutronix.de>
|
||||
Cc: Felipe Balbi <balbi@kernel.org>
|
||||
Cc: Felix Fietkau <nbd@nbd.name>
|
||||
Cc: Jeremy Kerr <jk@ozlabs.org>
|
||||
Cc: linux-snps-arc@lists.infradead.org
|
||||
Cc: stable@vger.kernel.org
|
||||
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||
---
|
||||
drivers/Makefile | 1 +
|
||||
1 file changed, 1 insertion(+)
|
||||
|
||||
--- a/drivers/Makefile
|
||||
+++ b/drivers/Makefile
|
||||
@@ -101,6 +101,7 @@ obj-$(CONFIG_USB_PHY) += usb/
|
||||
obj-$(CONFIG_USB) += usb/
|
||||
obj-$(CONFIG_PCI) += usb/
|
||||
obj-$(CONFIG_USB_GADGET) += usb/
|
||||
+obj-$(CONFIG_OF) += usb/
|
||||
obj-$(CONFIG_SERIO) += input/serio/
|
||||
obj-$(CONFIG_GAMEPORT) += input/gameport/
|
||||
obj-$(CONFIG_INPUT) += input/
|
|
@ -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.
|
|
@ -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
|
|
@ -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
|
|
@ -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
|
||||
|
|
@ -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)
|
||||
|
||||
/*
|
|
@ -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
|
|
@ -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
|
|
@ -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;
|
||||
}
|
||||
|
|
@ -75,7 +75,7 @@ Signed-off-by: Tobias Wolf <dev-NTEO@vplace.de>
|
|||
|
||||
--- a/mm/page_alloc.c
|
||||
+++ b/mm/page_alloc.c
|
||||
@@ -5893,7 +5893,7 @@ static void __ref alloc_node_mem_map(str
|
||||
@@ -5894,7 +5894,7 @@ static void __ref alloc_node_mem_map(str
|
||||
mem_map = NODE_DATA(0)->node_mem_map;
|
||||
#if defined(CONFIG_HAVE_MEMBLOCK_NODE_MAP) || defined(CONFIG_FLATMEM)
|
||||
if (page_to_pfn(mem_map) != pgdat->node_start_pfn)
|
||||
|
|
|
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||
|
||||
if (sock->type == SOCK_PACKET)
|
||||
po->prot_hook.func = packet_rcv_spkt;
|
||||
@@ -3813,6 +3816,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
@@ -3815,6 +3818,16 @@ packet_setsockopt(struct socket *sock, i
|
||||
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
|
||||
return 0;
|
||||
}
|
||||
|
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|||
default:
|
||||
return -ENOPROTOOPT;
|
||||
}
|
||||
@@ -3865,6 +3878,13 @@ static int packet_getsockopt(struct sock
|
||||
@@ -3867,6 +3880,13 @@ static int packet_getsockopt(struct sock
|
||||
case PACKET_VNET_HDR:
|
||||
val = po->has_vnet_hdr;
|
||||
break;
|
||||
|
|
|
@ -302,7 +302,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
/**
|
||||
* ip6_tnl_addr_conflict - compare packet addresses to tunnel's own
|
||||
* @t: the outgoing tunnel device
|
||||
@@ -1281,6 +1421,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1283,6 +1423,7 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
{
|
||||
struct ip6_tnl *t = netdev_priv(dev);
|
||||
struct ipv6hdr *ipv6h = ipv6_hdr(skb);
|
||||
|
@ -310,7 +310,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
int encap_limit = -1;
|
||||
__u16 offset;
|
||||
struct flowi6 fl6;
|
||||
@@ -1336,6 +1477,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
@@ -1338,6 +1479,18 @@ ip6ip6_tnl_xmit(struct sk_buff *skb, str
|
||||
fl6.flowi6_mark = skb->mark;
|
||||
}
|
||||
|
||||
|
@ -329,7 +329,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
if (iptunnel_handle_offloads(skb, SKB_GSO_IPXIP6))
|
||||
return -1;
|
||||
|
||||
@@ -1461,6 +1614,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
@@ -1463,6 +1616,14 @@ ip6_tnl_change(struct ip6_tnl *t, const
|
||||
t->parms.flowinfo = p->flowinfo;
|
||||
t->parms.link = p->link;
|
||||
t->parms.proto = p->proto;
|
||||
|
@ -344,7 +344,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
dst_cache_reset(&t->dst_cache);
|
||||
ip6_tnl_link_config(t);
|
||||
return 0;
|
||||
@@ -1499,6 +1660,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
@@ -1501,6 +1662,7 @@ ip6_tnl_parm_from_user(struct __ip6_tnl_
|
||||
p->flowinfo = u->flowinfo;
|
||||
p->link = u->link;
|
||||
p->proto = u->proto;
|
||||
|
@ -352,7 +352,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
memcpy(p->name, u->name, sizeof(u->name));
|
||||
}
|
||||
|
||||
@@ -1876,6 +2038,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
@@ -1878,6 +2040,15 @@ static int ip6_tnl_validate(struct nlatt
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -368,7 +368,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
static void ip6_tnl_netlink_parms(struct nlattr *data[],
|
||||
struct __ip6_tnl_parm *parms)
|
||||
{
|
||||
@@ -1910,6 +2081,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
@@ -1912,6 +2083,46 @@ static void ip6_tnl_netlink_parms(struct
|
||||
|
||||
if (data[IFLA_IPTUN_COLLECT_METADATA])
|
||||
parms->collect_md = true;
|
||||
|
@ -415,7 +415,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
}
|
||||
|
||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||
@@ -2019,6 +2230,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
@@ -2021,6 +2232,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||
|
||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||
{
|
||||
|
@ -428,7 +428,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
return
|
||||
/* IFLA_IPTUN_LINK */
|
||||
nla_total_size(4) +
|
||||
@@ -2046,6 +2263,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
@@ -2048,6 +2265,24 @@ static size_t ip6_tnl_get_size(const str
|
||||
nla_total_size(2) +
|
||||
/* IFLA_IPTUN_COLLECT_METADATA */
|
||||
nla_total_size(0) +
|
||||
|
@ -453,7 +453,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
0;
|
||||
}
|
||||
|
||||
@@ -2053,6 +2288,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2055,6 +2290,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
{
|
||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||
|
@ -463,7 +463,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
|
||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||
@@ -2061,9 +2299,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
@@ -2063,9 +2301,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
|
||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||
|
@ -492,7 +492,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
|||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
|
||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||
@@ -2101,6 +2357,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
@@ -2103,6 +2359,7 @@ static const struct nla_policy ip6_tnl_p
|
||||
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||
|
|
|
@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||
static const struct rt6_info ip6_blk_hole_entry_template = {
|
||||
.dst = {
|
||||
.__refcnt = ATOMIC_INIT(1),
|
||||
@@ -1953,6 +1970,11 @@ static struct rt6_info *ip6_route_info_c
|
||||
@@ -1957,6 +1974,11 @@ static struct rt6_info *ip6_route_info_c
|
||||
rt->dst.output = ip6_pkt_prohibit_out;
|
||||
rt->dst.input = ip6_pkt_prohibit;
|
||||
break;
|
||||
|
@ -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
|
||||
@@ -2600,6 +2622,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_
|
||||
@@ -2835,7 +2868,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
|
||||
@@ -3213,6 +3247,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
|
||||
@@ -3489,6 +3526,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
|
||||
@@ -3711,6 +3750,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:
|
||||
@@ -3729,6 +3779,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
|
||||
@@ -3746,6 +3798,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)
|
||||
@@ -3819,6 +3872,9 @@ void __init ip6_route_init_special_entri
|
||||
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);
|
||||
|
@ -245,5 +245,5 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
|
|||
+ init_net.ipv6.ip6_policy_failed_entry->rt6i_idev =
|
||||
+ in6_dev_get(init_net.loopback_dev);
|
||||
#endif
|
||||
ret = fib6_init();
|
||||
if (ret)
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@
|
|||
* @phydev: the phy_device struct
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -812,6 +812,7 @@ int phy_ethtool_ksettings_get(struct phy
|
||||
@@ -813,6 +813,7 @@ int phy_ethtool_ksettings_get(struct phy
|
||||
struct ethtool_link_ksettings *cmd);
|
||||
int phy_ethtool_ksettings_set(struct phy_device *phydev,
|
||||
const struct ethtool_link_ksettings *cmd);
|
||||
|
|
|
@ -50,7 +50,7 @@
|
|||
phy_device_free(phydev);
|
||||
--- a/include/linux/phy.h
|
||||
+++ b/include/linux/phy.h
|
||||
@@ -855,6 +855,23 @@ void mdio_bus_exit(void);
|
||||
@@ -856,6 +856,23 @@ void mdio_bus_exit(void);
|
||||
|
||||
extern struct bus_type mdio_bus_type;
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
@ -13,7 +13,7 @@ Signed-off-by: Andy Gross <agross@codeaurora.org>
|
|||
|
||||
--- a/drivers/phy/Kconfig
|
||||
+++ b/drivers/phy/Kconfig
|
||||
@@ -489,4 +489,16 @@ config PHY_NS2_PCIE
|
||||
@@ -490,4 +490,16 @@ config PHY_NS2_PCIE
|
||||
help
|
||||
Enable this to support the Broadcom Northstar2 PCIe PHY.
|
||||
If unsure, say N.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1032,7 +1032,8 @@ void phy_state_machine(struct work_struc
|
||||
/* If the link is down, give up on negotiation for now */
|
||||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
phydev->adjust_link(phydev->attached_dev);
|
||||
break;
|
||||
}
|
||||
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1115,7 +1116,8 @@ void phy_state_machine(struct work_struc
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1127,7 +1129,8 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1032,7 +1032,8 @@ void phy_state_machine(struct work_struc
|
||||
/* If the link is down, give up on negotiation for now */
|
||||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
phydev->adjust_link(phydev->attached_dev);
|
||||
break;
|
||||
}
|
||||
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1115,7 +1116,8 @@ void phy_state_machine(struct work_struc
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1127,7 +1129,8 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
},
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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"
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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)));
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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 @@
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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];
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 */
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
--- a/arch/powerpc/platforms/85xx/common.c
|
||||
+++ b/arch/powerpc/platforms/85xx/common.c
|
||||
@@ -33,6 +33,7 @@ static const struct of_device_id mpc85xx_common_ids[] __initconst = {
|
||||
@@ -33,6 +33,7 @@ static const struct of_device_id mpc85xx
|
||||
{ .compatible = "fsl,mpc8548-guts", },
|
||||
/* Probably unnecessary? */
|
||||
{ .compatible = "gpio-leds", },
|
||||
|
|
|
@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
|
||||
--- a/arch/powerpc/boot/Makefile
|
||||
+++ b/arch/powerpc/boot/Makefile
|
||||
@@ -137,6 +137,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pseries-head.S
|
||||
@@ -137,6 +137,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
|
||||
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
|
||||
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
|
||||
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
|
||||
|
@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
|||
|
||||
src-wlib := $(sort $(src-wlib-y))
|
||||
src-plat := $(sort $(src-plat-y))
|
||||
@@ -320,6 +321,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm8555
|
||||
@@ -320,6 +321,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
|
||||
image-$(CONFIG_TQM8560) += cuImage.tqm8560
|
||||
image-$(CONFIG_SBC8548) += cuImage.sbc8548
|
||||
image-$(CONFIG_KSI8560) += cuImage.ksi8560
|
||||
|
|
|
@ -16,7 +16,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -959,6 +959,16 @@ void phy_start(struct phy_device *phydev
|
||||
@@ -991,6 +991,16 @@ void phy_start(struct phy_device *phydev
|
||||
}
|
||||
EXPORT_SYMBOL(phy_start);
|
||||
|
||||
|
@ -33,7 +33,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
/**
|
||||
* phy_state_machine - Handle the state machine
|
||||
* @work: work_struct that describes the work to be done
|
||||
@@ -1000,8 +1010,7 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1032,8 +1042,7 @@ void phy_state_machine(struct work_struc
|
||||
/* If the link is down, give up on negotiation for now */
|
||||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -43,7 +43,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
break;
|
||||
}
|
||||
|
||||
@@ -1013,9 +1022,7 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1045,9 +1054,7 @@ void phy_state_machine(struct work_struc
|
||||
/* If AN is done, we're running */
|
||||
if (err > 0) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
@ -54,7 +54,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
} else if (0 == phydev->link_timeout--)
|
||||
needs_aneg = true;
|
||||
break;
|
||||
@@ -1040,8 +1047,7 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1072,8 +1079,7 @@ void phy_state_machine(struct work_struc
|
||||
}
|
||||
}
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
@ -64,7 +64,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
}
|
||||
break;
|
||||
case PHY_FORCING:
|
||||
@@ -1051,13 +1057,12 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1083,13 +1089,12 @@ void phy_state_machine(struct work_struc
|
||||
|
||||
if (phydev->link) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
@ -80,7 +80,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
break;
|
||||
case PHY_RUNNING:
|
||||
/* Only register a CHANGE if we are polling and link changed
|
||||
@@ -1080,14 +1085,12 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1112,14 +1117,12 @@ void phy_state_machine(struct work_struc
|
||||
|
||||
if (phydev->link) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
@ -97,7 +97,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
if (phy_interrupt_is_valid(phydev))
|
||||
err = phy_config_interrupt(phydev,
|
||||
PHY_INTERRUPT_ENABLED);
|
||||
@@ -1095,8 +1098,7 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1127,8 +1130,7 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
@ -107,7 +107,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
do_suspend = true;
|
||||
}
|
||||
break;
|
||||
@@ -1116,11 +1118,11 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1148,11 +1150,11 @@ void phy_state_machine(struct work_struc
|
||||
|
||||
if (phydev->link) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
@ -121,7 +121,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
} else {
|
||||
phydev->state = PHY_AN;
|
||||
phydev->link_timeout = PHY_AN_TIMEOUT;
|
||||
@@ -1132,11 +1134,11 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1164,11 +1166,11 @@ void phy_state_machine(struct work_struc
|
||||
|
||||
if (phydev->link) {
|
||||
phydev->state = PHY_RUNNING;
|
||||
|
|
|
@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||
obj-$(CONFIG_MDIO_BOARDINFO) += mdio-boardinfo.o
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1175,91 +1175,6 @@ void phy_mac_interrupt(struct phy_device
|
||||
@@ -1207,91 +1207,6 @@ void phy_mac_interrupt(struct phy_device
|
||||
}
|
||||
EXPORT_SYMBOL(phy_mac_interrupt);
|
||||
|
||||
|
|
|
@ -30,7 +30,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1311,11 +1311,16 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
|
||||
@@ -1343,11 +1343,16 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
|
||||
*/
|
||||
int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data)
|
||||
{
|
||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1311,16 +1311,33 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
|
||||
@@ -1343,16 +1343,33 @@ EXPORT_SYMBOL(phy_ethtool_get_eee);
|
||||
*/
|
||||
int phy_ethtool_set_eee(struct phy_device *phydev, struct ethtool_eee *data)
|
||||
{
|
||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1195,6 +1195,7 @@ int phy_init_eee(struct phy_device *phyd
|
||||
@@ -1227,6 +1227,7 @@ int phy_init_eee(struct phy_device *phyd
|
||||
if ((phydev->duplex == DUPLEX_FULL) &&
|
||||
((phydev->interface == PHY_INTERFACE_MODE_MII) ||
|
||||
(phydev->interface == PHY_INTERFACE_MODE_GMII) ||
|
||||
|
|
|
@ -37,7 +37,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
|||
|
||||
/**
|
||||
* phy_aneg_done - return auto-negotiation status
|
||||
@@ -1407,3 +1425,14 @@ int phy_ethtool_set_link_ksettings(struc
|
||||
@@ -1439,3 +1457,14 @@ int phy_ethtool_set_link_ksettings(struc
|
||||
return phy_ethtool_ksettings_set(phydev, cmd);
|
||||
}
|
||||
EXPORT_SYMBOL(phy_ethtool_set_link_ksettings);
|
||||
|
|
|
@ -12,7 +12,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -580,6 +580,7 @@ void phy_start_machine(struct phy_device
|
||||
@@ -612,6 +612,7 @@ void phy_start_machine(struct phy_device
|
||||
{
|
||||
queue_delayed_work(system_power_efficient_wq, &phydev->state_queue, HZ);
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
|
||||
--- a/drivers/net/phy/phy.c
|
||||
+++ b/drivers/net/phy/phy.c
|
||||
@@ -1000,7 +1000,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1032,7 +1032,8 @@ void phy_state_machine(struct work_struc
|
||||
/* If the link is down, give up on negotiation for now */
|
||||
if (!phydev->link) {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -21,7 +21,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
phydev->adjust_link(phydev->attached_dev);
|
||||
break;
|
||||
}
|
||||
@@ -1083,7 +1084,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1115,7 +1116,8 @@ void phy_state_machine(struct work_struc
|
||||
netif_carrier_on(phydev->attached_dev);
|
||||
} else {
|
||||
phydev->state = PHY_NOLINK;
|
||||
|
@ -31,7 +31,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
|
|||
}
|
||||
|
||||
phydev->adjust_link(phydev->attached_dev);
|
||||
@@ -1095,7 +1097,8 @@ void phy_state_machine(struct work_struc
|
||||
@@ -1127,7 +1129,8 @@ void phy_state_machine(struct work_struc
|
||||
case PHY_HALTED:
|
||||
if (phydev->link) {
|
||||
phydev->link = 0;
|
||||
|
|
|
@ -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),
|
|
@ -1,8 +1,6 @@
|
|||
diff --git a/drivers/hwmon/w83627ehf.c b/drivers/hwmon/w83627ehf.c
|
||||
index 697007afb99c..4a4e0b4c077c 100644
|
||||
--- a/drivers/hwmon/w83627ehf.c
|
||||
+++ b/drivers/hwmon/w83627ehf.c
|
||||
@@ -2707,8 +2707,8 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
|
||||
@@ -2707,8 +2707,8 @@ static int __init w83627ehf_find(int sio
|
||||
static const char sio_name_W83627UHG[] __initconst = "W83627UHG";
|
||||
static const char sio_name_W83667HG[] __initconst = "W83667HG";
|
||||
static const char sio_name_W83667HG_B[] __initconst = "W83667HG-B";
|
||||
|
@ -13,7 +11,7 @@ index 697007afb99c..4a4e0b4c077c 100644
|
|||
|
||||
u16 val;
|
||||
const char *sio_name;
|
||||
@@ -2749,14 +2749,14 @@ static int __init w83627ehf_find(int sioaddr, unsigned short *addr,
|
||||
@@ -2749,14 +2749,14 @@ static int __init w83627ehf_find(int sio
|
||||
sio_data->kind = w83667hg_b;
|
||||
sio_name = sio_name_W83667HG_B;
|
||||
break;
|
||||
|
|
Loading…
Reference in a new issue