kernel: bump 4.14 to 4.14.48
Remove upstreamed patches: generic/pending/101-clocksource-mips-gic-timer-fix-clocksource-counter-w.patch generic/pending/103-MIPS-c-r4k-fix-data-corruption-related-to-cache-coherence.patch generic/pending/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch lantiq/0025-MIPS-lantiq-gphy-Remove-reboot-remove-reset-asserts.patch Update patches that no longer apply: generic/pending/811-pci_disable_usb_common_quirks.patch ath79/0009-MIPS-ath79-add-lots-of-missing-registers.patch Fixes CVE-2018-6412. Compile-tested: octeon, x86/64. Runtime-tested: octeon, x86/64. Signed-off-by: Stijn Tintel <stijn@linux-ipv6.be>
This commit is contained in:
parent
7590c3c58f
commit
e52f3e9b13
46 changed files with 550 additions and 383 deletions
|
@ -5,12 +5,12 @@ LINUX_RELEASE?=1
|
||||||
LINUX_VERSION-3.18 = .71
|
LINUX_VERSION-3.18 = .71
|
||||||
LINUX_VERSION-4.4 = .121
|
LINUX_VERSION-4.4 = .121
|
||||||
LINUX_VERSION-4.9 = .105
|
LINUX_VERSION-4.9 = .105
|
||||||
LINUX_VERSION-4.14 = .44
|
LINUX_VERSION-4.14 = .48
|
||||||
|
|
||||||
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
|
||||||
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
|
||||||
LINUX_KERNEL_HASH-4.9.105 = d085d228e3ac1fdbdf5a31bb8154e4e8a0943a9085f0384842601db8e9d96dc4
|
LINUX_KERNEL_HASH-4.9.105 = d085d228e3ac1fdbdf5a31bb8154e4e8a0943a9085f0384842601db8e9d96dc4
|
||||||
LINUX_KERNEL_HASH-4.14.44 = 2eb356e6af25f6ca65affe7704be8c4e0cdf224505e7441ac9d5b6e8d96ec8e4
|
LINUX_KERNEL_HASH-4.14.48 = 80a0608f611fe7a5c54556402cdc2880a21301e1c4e1b19d4c1db82ad2bf22b9
|
||||||
|
|
||||||
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
|
||||||
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
|
||||||
|
|
|
@ -44,7 +44,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||||
|
|
||||||
#include "xhci.h"
|
#include "xhci.h"
|
||||||
#include "xhci-trace.h"
|
#include "xhci-trace.h"
|
||||||
@@ -244,6 +246,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
@@ -255,6 +257,458 @@ static void xhci_pme_acpi_rtd3_enable(st
|
||||||
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
static void xhci_pme_acpi_rtd3_enable(struct pci_dev *dev) { }
|
||||||
#endif /* CONFIG_ACPI */
|
#endif /* CONFIG_ACPI */
|
||||||
|
|
||||||
|
@ -503,7 +503,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||||
/* called during probe() after chip reset completes */
|
/* called during probe() after chip reset completes */
|
||||||
static int xhci_pci_setup(struct usb_hcd *hcd)
|
static int xhci_pci_setup(struct usb_hcd *hcd)
|
||||||
{
|
{
|
||||||
@@ -279,6 +733,22 @@ static int xhci_pci_probe(struct pci_dev
|
@@ -290,6 +744,22 @@ static int xhci_pci_probe(struct pci_dev
|
||||||
struct hc_driver *driver;
|
struct hc_driver *driver;
|
||||||
struct usb_hcd *hcd;
|
struct usb_hcd *hcd;
|
||||||
|
|
||||||
|
@ -526,7 +526,7 @@ Signed-off-by: Christian Lamparter <chunkeey@googlemail.com>
|
||||||
driver = (struct hc_driver *)id->driver_data;
|
driver = (struct hc_driver *)id->driver_data;
|
||||||
|
|
||||||
/* For some HW implementation, a XHCI reset is just not enough... */
|
/* For some HW implementation, a XHCI reset is just not enough... */
|
||||||
@@ -343,6 +813,16 @@ static void xhci_pci_remove(struct pci_d
|
@@ -354,6 +824,16 @@ static void xhci_pci_remove(struct pci_d
|
||||||
{
|
{
|
||||||
struct xhci_hcd *xhci;
|
struct xhci_hcd *xhci;
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,7 @@ produce a noisy warning.
|
||||||
|
|
||||||
--- a/drivers/usb/host/xhci-pci.c
|
--- a/drivers/usb/host/xhci-pci.c
|
||||||
+++ b/drivers/usb/host/xhci-pci.c
|
+++ b/drivers/usb/host/xhci-pci.c
|
||||||
@@ -202,7 +202,7 @@ static void xhci_pci_quirks(struct devic
|
@@ -213,7 +213,7 @@ static void xhci_pci_quirks(struct devic
|
||||||
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
|
xhci->quirks |= XHCI_TRUST_TX_LENGTH;
|
||||||
if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
|
if (pdev->vendor == PCI_VENDOR_ID_RENESAS &&
|
||||||
pdev->device == 0x0015)
|
pdev->device == 0x0015)
|
||||||
|
|
|
@ -156,7 +156,7 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
/*
|
/*
|
||||||
* PLL block
|
* PLL block
|
||||||
*/
|
*/
|
||||||
@@ -166,8 +260,14 @@
|
@@ -166,9 +260,15 @@
|
||||||
#define AR71XX_AHB_DIV_SHIFT 20
|
#define AR71XX_AHB_DIV_SHIFT 20
|
||||||
#define AR71XX_AHB_DIV_MASK 0x7
|
#define AR71XX_AHB_DIV_MASK 0x7
|
||||||
|
|
||||||
|
@ -164,14 +164,14 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
+#define AR71XX_ETH1_PLL_SHIFT 19
|
+#define AR71XX_ETH1_PLL_SHIFT 19
|
||||||
+
|
+
|
||||||
#define AR724X_PLL_REG_CPU_CONFIG 0x00
|
#define AR724X_PLL_REG_CPU_CONFIG 0x00
|
||||||
-#define AR724X_PLL_REG_PCIE_CONFIG 0x18
|
#define AR724X_PLL_REG_PCIE_CONFIG 0x10
|
||||||
+#define AR724X_PLL_REG_PCIE_CONFIG 0x10
|
|
||||||
+
|
|
||||||
+#define AR724X_PLL_REG_PCIE_CONFIG_PPL_BYPASS BIT(16)
|
+#define AR724X_PLL_REG_PCIE_CONFIG_PPL_BYPASS BIT(16)
|
||||||
+#define AR724X_PLL_REG_PCIE_CONFIG_PPL_RESET BIT(25)
|
+#define AR724X_PLL_REG_PCIE_CONFIG_PPL_RESET BIT(25)
|
||||||
|
+
|
||||||
#define AR724X_PLL_FB_SHIFT 0
|
#define AR724X_PLL_FB_SHIFT 0
|
||||||
#define AR724X_PLL_FB_MASK 0x3ff
|
#define AR724X_PLL_FB_MASK 0x3ff
|
||||||
|
#define AR724X_PLL_REF_DIV_SHIFT 10
|
||||||
@@ -178,6 +278,8 @@
|
@@ -178,6 +278,8 @@
|
||||||
#define AR724X_DDR_DIV_SHIFT 22
|
#define AR724X_DDR_DIV_SHIFT 22
|
||||||
#define AR724X_DDR_DIV_MASK 0x3
|
#define AR724X_DDR_DIV_MASK 0x3
|
||||||
|
|
|
@ -724,7 +724,7 @@
|
||||||
| TCPOLEN_TIMESTAMP))
|
| TCPOLEN_TIMESTAMP))
|
||||||
--- a/net/xfrm/xfrm_input.c
|
--- a/net/xfrm/xfrm_input.c
|
||||||
+++ b/net/xfrm/xfrm_input.c
|
+++ b/net/xfrm/xfrm_input.c
|
||||||
@@ -187,8 +187,8 @@ int xfrm_parse_spi(struct sk_buff *skb,
|
@@ -193,8 +193,8 @@ int xfrm_parse_spi(struct sk_buff *skb,
|
||||||
if (!pskb_may_pull(skb, hlen))
|
if (!pskb_may_pull(skb, hlen))
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
|
@ -737,7 +737,7 @@
|
||||||
EXPORT_SYMBOL(xfrm_parse_spi);
|
EXPORT_SYMBOL(xfrm_parse_spi);
|
||||||
--- a/net/ipv4/tcp_input.c
|
--- a/net/ipv4/tcp_input.c
|
||||||
+++ b/net/ipv4/tcp_input.c
|
+++ b/net/ipv4/tcp_input.c
|
||||||
@@ -3842,14 +3842,16 @@ static bool tcp_parse_aligned_timestamp(
|
@@ -3844,14 +3844,16 @@ static bool tcp_parse_aligned_timestamp(
|
||||||
{
|
{
|
||||||
const __be32 *ptr = (const __be32 *)(th + 1);
|
const __be32 *ptr = (const __be32 *)(th + 1);
|
||||||
|
|
||||||
|
|
|
@ -129,7 +129,7 @@ it on BCM4708 family.
|
||||||
+++ b/drivers/usb/host/xhci.h
|
+++ b/drivers/usb/host/xhci.h
|
||||||
@@ -1831,6 +1831,7 @@ struct xhci_hcd {
|
@@ -1831,6 +1831,7 @@ struct xhci_hcd {
|
||||||
#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
|
#define XHCI_LIMIT_ENDPOINT_INTERVAL_7 (1 << 26)
|
||||||
/* Reserved. It was XHCI_U2_DISABLE_WAKE */
|
#define XHCI_U2_DISABLE_WAKE (1 << 27)
|
||||||
#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
|
#define XHCI_ASMEDIA_MODIFY_FLOWCONTROL (1 << 28)
|
||||||
+#define XHCI_FAKE_DOORBELL (1 << 29)
|
+#define XHCI_FAKE_DOORBELL (1 << 29)
|
||||||
#define XHCI_SUSPEND_DELAY (1 << 30)
|
#define XHCI_SUSPEND_DELAY (1 << 30)
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -433,8 +433,8 @@ KBUILD_CFLAGS_MODULE := -DMODULE
|
@@ -428,8 +428,8 @@ KBUILD_CFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
KBUILD_LDFLAGS_MODULE := -T $(srctree)/scripts/module-common.lds
|
||||||
GCC_PLUGINS_CFLAGS :=
|
GCC_PLUGINS_CFLAGS :=
|
||||||
|
|
||||||
|
|
|
@ -26,7 +26,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
* IEEE 802.3 Ethernet magic constants. The frame sizes omit the preamble
|
||||||
@@ -149,11 +150,13 @@
|
@@ -150,11 +151,13 @@
|
||||||
* This is an Ethernet frame header.
|
* This is an Ethernet frame header.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,7 @@ Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
|
||||||
|
|
||||||
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
|
--- a/net/ipv4/netfilter/ipt_CLUSTERIP.c
|
||||||
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
|
+++ b/net/ipv4/netfilter/ipt_CLUSTERIP.c
|
||||||
@@ -829,6 +829,7 @@ static void clusterip_net_exit(struct ne
|
@@ -834,6 +834,7 @@ static void clusterip_net_exit(struct ne
|
||||||
cn->procdir = NULL;
|
cn->procdir = NULL;
|
||||||
#endif
|
#endif
|
||||||
nf_unregister_net_hook(net, &cip_arp_ops);
|
nf_unregister_net_hook(net, &cip_arp_ops);
|
||||||
|
|
|
@ -13,7 +13,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -430,7 +430,7 @@ KBUILD_AFLAGS_KERNEL :=
|
@@ -425,7 +425,7 @@ KBUILD_AFLAGS_KERNEL :=
|
||||||
KBUILD_CFLAGS_KERNEL :=
|
KBUILD_CFLAGS_KERNEL :=
|
||||||
KBUILD_AFLAGS_MODULE := -DMODULE
|
KBUILD_AFLAGS_MODULE := -DMODULE
|
||||||
KBUILD_CFLAGS_MODULE := -DMODULE
|
KBUILD_CFLAGS_MODULE := -DMODULE
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -1233,7 +1233,6 @@ all: modules
|
@@ -1227,7 +1227,6 @@ all: modules
|
||||||
|
|
||||||
PHONY += modules
|
PHONY += modules
|
||||||
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
modules: $(vmlinux-dirs) $(if $(KBUILD_BUILTIN),vmlinux) modules.builtin
|
||||||
|
@ -23,7 +23,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
@$(kecho) ' Building modules, stage 2.';
|
@$(kecho) ' Building modules, stage 2.';
|
||||||
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
$(Q)$(MAKE) -f $(srctree)/scripts/Makefile.modpost
|
||||||
|
|
||||||
@@ -1262,7 +1261,6 @@ _modinst_:
|
@@ -1256,7 +1255,6 @@ _modinst_:
|
||||||
rm -f $(MODLIB)/build ; \
|
rm -f $(MODLIB)/build ; \
|
||||||
ln -s $(CURDIR) $(MODLIB)/build ; \
|
ln -s $(CURDIR) $(MODLIB)/build ; \
|
||||||
fi
|
fi
|
||||||
|
|
|
@ -33,7 +33,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
|
||||||
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
# Read KERNELRELEASE from include/config/kernel.release (if it exists)
|
||||||
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
|
KERNELRELEASE = $(shell cat include/config/kernel.release 2> /dev/null)
|
||||||
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
|
KERNELVERSION = $(VERSION)$(if $(PATCHLEVEL),.$(PATCHLEVEL)$(if $(SUBLEVEL),.$(SUBLEVEL)))$(EXTRAVERSION)
|
||||||
@@ -787,11 +792,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
|
@@ -781,11 +786,6 @@ ifdef CONFIG_DEBUG_SECTION_MISMATCH
|
||||||
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
|
KBUILD_CFLAGS += $(call cc-option, -fno-inline-functions-called-once)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
#include <linux/bcm47xx_nvram.h>
|
#include <linux/bcm47xx_nvram.h>
|
||||||
#include <linux/phy.h>
|
#include <linux/phy.h>
|
||||||
#include <linux/phy_fixed.h>
|
#include <linux/phy_fixed.h>
|
||||||
@@ -1409,6 +1410,17 @@ static const struct ethtool_ops bgmac_et
|
@@ -1410,6 +1411,17 @@ static const struct ethtool_ops bgmac_et
|
||||||
.set_link_ksettings = phy_ethtool_set_link_ksettings,
|
.set_link_ksettings = phy_ethtool_set_link_ksettings,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -50,7 +50,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
/**************************************************
|
/**************************************************
|
||||||
* MII
|
* MII
|
||||||
**************************************************/
|
**************************************************/
|
||||||
@@ -1538,6 +1550,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
@@ -1539,6 +1551,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
|
||||||
net_dev->hw_features = net_dev->features;
|
net_dev->hw_features = net_dev->features;
|
||||||
net_dev->vlan_features = net_dev->features;
|
net_dev->vlan_features = net_dev->features;
|
||||||
|
|
||||||
|
@ -65,7 +65,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
|
||||||
err = register_netdev(bgmac->net_dev);
|
err = register_netdev(bgmac->net_dev);
|
||||||
if (err) {
|
if (err) {
|
||||||
dev_err(bgmac->dev, "Cannot register net device\n");
|
dev_err(bgmac->dev, "Cannot register net device\n");
|
||||||
@@ -1560,6 +1580,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
@@ -1561,6 +1581,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
|
||||||
|
|
||||||
void bgmac_enet_remove(struct bgmac *bgmac)
|
void bgmac_enet_remove(struct bgmac *bgmac)
|
||||||
{
|
{
|
||||||
|
|
|
@ -243,7 +243,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
}
|
}
|
||||||
--- a/mm/vmstat.c
|
--- a/mm/vmstat.c
|
||||||
+++ b/mm/vmstat.c
|
+++ b/mm/vmstat.c
|
||||||
@@ -1944,10 +1944,12 @@ void __init init_mm_internals(void)
|
@@ -1946,10 +1946,12 @@ void __init init_mm_internals(void)
|
||||||
start_shepherd_timer();
|
start_shepherd_timer();
|
||||||
#endif
|
#endif
|
||||||
#ifdef CONFIG_PROC_FS
|
#ifdef CONFIG_PROC_FS
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
From: Felix Fietkau <nbd@nbd.name>
|
|
||||||
Date: Wed, 21 Feb 2018 13:40:12 +0100
|
|
||||||
Subject: [PATCH] clocksource: mips-gic-timer: fix clocksource counter width
|
|
||||||
|
|
||||||
This code needs to use ffs instead of fls on the mask to determine the
|
|
||||||
shift for reading the GIC_CONFIG_COUNTBITS field.
|
|
||||||
|
|
||||||
Fixes: e07127a077c7 ("clocksource: mips-gic-timer: Use new GIC accessor functions")
|
|
||||||
Cc: Paul Burton <paul.burton@imgtec.com>
|
|
||||||
Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
|
||||||
---
|
|
||||||
|
|
||||||
--- a/drivers/clocksource/mips-gic-timer.c
|
|
||||||
+++ b/drivers/clocksource/mips-gic-timer.c
|
|
||||||
@@ -164,7 +164,7 @@ static int __init __gic_clocksource_init
|
|
||||||
|
|
||||||
/* Set clocksource mask. */
|
|
||||||
count_width = read_gic_config() & GIC_CONFIG_COUNTBITS;
|
|
||||||
- count_width >>= __fls(GIC_CONFIG_COUNTBITS);
|
|
||||||
+ count_width >>= __ffs(GIC_CONFIG_COUNTBITS);
|
|
||||||
count_width *= 4;
|
|
||||||
count_width += 32;
|
|
||||||
gic_clocksource.mask = CLOCKSOURCE_MASK(count_width);
|
|
|
@ -1,90 +0,0 @@
|
||||||
From patchwork Thu Apr 26 23:28:34 2018
|
|
||||||
Content-Type: text/plain; charset="utf-8"
|
|
||||||
MIME-Version: 1.0
|
|
||||||
Content-Transfer-Encoding: 7bit
|
|
||||||
Subject: [v2] MIPS: c-r4k: fix data corruption related to cache coherence.
|
|
||||||
X-Patchwork-Submitter: NeilBrown <neil@brown.name>
|
|
||||||
X-Patchwork-Id: 19259
|
|
||||||
Message-Id: <87vacdlf8d.fsf@notabene.neil.brown.name>
|
|
||||||
To: James Hogan <jhogan@kernel.org>
|
|
||||||
Cc: Ralf Baechle <ralf@linux-mips.org>,
|
|
||||||
Paul Burton <paul.burton@mips.com>, linux-mips@linux-mips.org,
|
|
||||||
linux-kernel@vger.kernel.org
|
|
||||||
Date: Fri, 27 Apr 2018 09:28:34 +1000
|
|
||||||
From: NeilBrown <neil@brown.name>
|
|
||||||
List-Id: linux-mips <linux-mips.eddie.linux-mips.org>
|
|
||||||
|
|
||||||
When DMA will be performed to a MIPS32 1004K CPS, the
|
|
||||||
L1-cache for the range needs to be flushed and invalidated
|
|
||||||
first.
|
|
||||||
The code currently takes one of two approaches.
|
|
||||||
1/ If the range is less than the size of the dcache, then
|
|
||||||
HIT type requests flush/invalidate cache lines for the
|
|
||||||
particular addresses. HIT-type requests a globalised
|
|
||||||
by the CPS so this is safe on SMP.
|
|
||||||
|
|
||||||
2/ If the range is larger than the size of dcache, then
|
|
||||||
INDEX type requests flush/invalidate the whole cache.
|
|
||||||
INDEX type requests affect the local cache only. CPS
|
|
||||||
does not propagate them in any way. So this invalidation
|
|
||||||
is not safe on SMP CPS systems.
|
|
||||||
|
|
||||||
Data corruption due to '2' can quite easily be demonstrated by
|
|
||||||
repeatedly "echo 3 > /proc/sys/vm/drop_caches" and then sha1sum
|
|
||||||
a file that is several times the size of available memory.
|
|
||||||
Dropping caches means that large contiguous extents (large than
|
|
||||||
dcache) are more likely.
|
|
||||||
|
|
||||||
This was not a problem before Linux-4.8 because option 2 was
|
|
||||||
never used if CONFIG_MIPS_CPS was defined. The commit
|
|
||||||
which removed that apparently didn't appreciate the full
|
|
||||||
consequence of the change.
|
|
||||||
|
|
||||||
We could, in theory, globalize the INDEX based flush by sending an IPI
|
|
||||||
to other cores. These cache invalidation routines can be called with
|
|
||||||
interrupts disabled and synchronous IPI require interrupts to be
|
|
||||||
enabled. Asynchronous IPI may not trigger writeback soon enough.
|
|
||||||
So we cannot use IPI in practice.
|
|
||||||
|
|
||||||
We can already test is IPI would be needed for an INDEX operation
|
|
||||||
with r4k_op_needs_ipi(R4K_INDEX). If this is True then we mustn't try
|
|
||||||
the INDEX approach as we cannot use IPI. If this is False (e.g. when
|
|
||||||
there is only one core and hence one L1 cache) then it is safe to
|
|
||||||
use the INDEX approach without IPI.
|
|
||||||
|
|
||||||
This patch avoids options 2 if r4k_op_needs_ipi(R4K_INDEX), and so
|
|
||||||
eliminates the corruption.
|
|
||||||
|
|
||||||
Fixes: c00ab4896ed5 ("MIPS: Remove cpu_has_safe_index_cacheops")
|
|
||||||
Cc: stable@vger.kernel.org # v4.8+
|
|
||||||
Signed-off-by: NeilBrown <neil@brown.name>
|
|
||||||
---
|
|
||||||
arch/mips/mm/c-r4k.c | 9 ++++++---
|
|
||||||
1 file changed, 6 insertions(+), 3 deletions(-)
|
|
||||||
|
|
||||||
--- a/arch/mips/mm/c-r4k.c
|
|
||||||
+++ b/arch/mips/mm/c-r4k.c
|
|
||||||
@@ -851,9 +851,12 @@ static void r4k_dma_cache_wback_inv(unsi
|
|
||||||
/*
|
|
||||||
* Either no secondary cache or the available caches don't have the
|
|
||||||
* subset property so we have to flush the primary caches
|
|
||||||
- * explicitly
|
|
||||||
+ * explicitly.
|
|
||||||
+ * If we would need IPI to perform an INDEX-type operation, then
|
|
||||||
+ * we have to use the HIT-type alternative as IPI cannot be used
|
|
||||||
+ * here due to interrupts possibly being disabled.
|
|
||||||
*/
|
|
||||||
- if (size >= dcache_size) {
|
|
||||||
+ if (!r4k_op_needs_ipi(R4K_INDEX) && size >= dcache_size) {
|
|
||||||
r4k_blast_dcache();
|
|
||||||
} else {
|
|
||||||
R4600_HIT_CACHEOP_WAR_IMPL;
|
|
||||||
@@ -890,7 +893,7 @@ static void r4k_dma_cache_inv(unsigned l
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (size >= dcache_size) {
|
|
||||||
+ if (!r4k_op_needs_ipi(R4K_INDEX) && size >= dcache_size) {
|
|
||||||
r4k_blast_dcache();
|
|
||||||
} else {
|
|
||||||
R4600_HIT_CACHEOP_WAR_IMPL;
|
|
|
@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/fs/jffs2/dir.c
|
--- a/fs/jffs2/dir.c
|
||||||
+++ b/fs/jffs2/dir.c
|
+++ b/fs/jffs2/dir.c
|
||||||
@@ -756,6 +756,24 @@ static int jffs2_mknod (struct inode *di
|
@@ -752,6 +752,24 @@ static int jffs2_mknod (struct inode *di
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
|
static int jffs2_rename (struct inode *old_dir_i, struct dentry *old_dentry,
|
||||||
struct inode *new_dir_i, struct dentry *new_dentry,
|
struct inode *new_dir_i, struct dentry *new_dentry,
|
||||||
unsigned int flags)
|
unsigned int flags)
|
||||||
@@ -766,7 +784,7 @@ static int jffs2_rename (struct inode *o
|
@@ -762,7 +780,7 @@ static int jffs2_rename (struct inode *o
|
||||||
uint8_t type;
|
uint8_t type;
|
||||||
uint32_t now;
|
uint32_t now;
|
||||||
|
|
||||||
|
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
|
|
||||||
/* The VFS will check for us and prevent trying to rename a
|
/* The VFS will check for us and prevent trying to rename a
|
||||||
@@ -832,9 +850,14 @@ static int jffs2_rename (struct inode *o
|
@@ -828,9 +846,14 @@ static int jffs2_rename (struct inode *o
|
||||||
if (d_is_dir(old_dentry) && !victim_f)
|
if (d_is_dir(old_dentry) && !victim_f)
|
||||||
inc_nlink(new_dir_i);
|
inc_nlink(new_dir_i);
|
||||||
|
|
||||||
|
|
|
@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/fs/jffs2/dir.c
|
--- a/fs/jffs2/dir.c
|
||||||
+++ b/fs/jffs2/dir.c
|
+++ b/fs/jffs2/dir.c
|
||||||
@@ -781,18 +781,31 @@ static int jffs2_rename (struct inode *o
|
@@ -777,18 +777,31 @@ static int jffs2_rename (struct inode *o
|
||||||
int ret;
|
int ret;
|
||||||
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
|
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
|
||||||
struct jffs2_inode_info *victim_f = NULL;
|
struct jffs2_inode_info *victim_f = NULL;
|
||||||
|
@ -40,7 +40,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
|
victim_f = JFFS2_INODE_INFO(d_inode(new_dentry));
|
||||||
if (d_is_dir(new_dentry)) {
|
if (d_is_dir(new_dentry)) {
|
||||||
struct jffs2_full_dirent *fd;
|
struct jffs2_full_dirent *fd;
|
||||||
@@ -827,7 +840,7 @@ static int jffs2_rename (struct inode *o
|
@@ -823,7 +836,7 @@ static int jffs2_rename (struct inode *o
|
||||||
if (ret)
|
if (ret)
|
||||||
return ret;
|
return ret;
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
/* There was a victim. Kill it off nicely */
|
/* There was a victim. Kill it off nicely */
|
||||||
if (d_is_dir(new_dentry))
|
if (d_is_dir(new_dentry))
|
||||||
clear_nlink(d_inode(new_dentry));
|
clear_nlink(d_inode(new_dentry));
|
||||||
@@ -853,6 +866,12 @@ static int jffs2_rename (struct inode *o
|
@@ -849,6 +862,12 @@ static int jffs2_rename (struct inode *o
|
||||||
if (flags & RENAME_WHITEOUT)
|
if (flags & RENAME_WHITEOUT)
|
||||||
/* Replace with whiteout */
|
/* Replace with whiteout */
|
||||||
ret = jffs2_whiteout(old_dir_i, old_dentry);
|
ret = jffs2_whiteout(old_dir_i, old_dentry);
|
||||||
|
@ -62,7 +62,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
else
|
else
|
||||||
/* Unlink the original */
|
/* Unlink the original */
|
||||||
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
|
ret = jffs2_do_unlink(c, JFFS2_INODE_INFO(old_dir_i),
|
||||||
@@ -884,7 +903,7 @@ static int jffs2_rename (struct inode *o
|
@@ -880,7 +899,7 @@ static int jffs2_rename (struct inode *o
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,28 +0,0 @@
|
||||||
From 743989254ea9f132517806d8893ca9b6cf9dc86b Mon Sep 17 00:00:00 2001
|
|
||||||
From: Pawel Dembicki <paweldembicki@gmail.com>
|
|
||||||
Date: Sat, 24 Mar 2018 22:08:14 +0100
|
|
||||||
Subject: [PATCH] net: qmi_wwan: add BroadMobi BM806U 2020:2033
|
|
||||||
|
|
||||||
BroadMobi BM806U is an Qualcomm MDM9225 based 3G/4G modem.
|
|
||||||
Tested hardware BM806U is mounted on D-Link DWR-921-C3 router.
|
|
||||||
The USB id is added to qmi_wwan.c to allow QMI communication with
|
|
||||||
the BM806U.
|
|
||||||
|
|
||||||
Tested on 4.14 kernel and OpenWRT.
|
|
||||||
|
|
||||||
Signed-off-by: Pawel Dembicki <paweldembicki@gmail.com>
|
|
||||||
Signed-off-by: David S. Miller <davem@davemloft.net>
|
|
||||||
---
|
|
||||||
drivers/net/usb/qmi_wwan.c | 1 +
|
|
||||||
1 file changed, 1 insertion(+)
|
|
||||||
|
|
||||||
--- a/drivers/net/usb/qmi_wwan.c
|
|
||||||
+++ b/drivers/net/usb/qmi_wwan.c
|
|
||||||
@@ -1184,6 +1184,7 @@ static const struct usb_device_id produc
|
|
||||||
{QMI_FIXED_INTF(0x19d2, 0x2002, 4)}, /* ZTE (Vodafone) K3765-Z */
|
|
||||||
{QMI_FIXED_INTF(0x2001, 0x7e19, 4)}, /* D-Link DWM-221 B1 */
|
|
||||||
{QMI_FIXED_INTF(0x2001, 0x7e35, 4)}, /* D-Link DWM-222 */
|
|
||||||
+ {QMI_FIXED_INTF(0x2020, 0x2033, 4)}, /* BroadMobi BM806U */
|
|
||||||
{QMI_FIXED_INTF(0x0f3d, 0x68a2, 8)}, /* Sierra Wireless MC7700 */
|
|
||||||
{QMI_FIXED_INTF(0x114f, 0x68a2, 8)}, /* Sierra Wireless MC7750 */
|
|
||||||
{QMI_FIXED_INTF(0x1199, 0x68a2, 8)}, /* Sierra Wireless MC7710 in QMI mode */
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/Makefile
|
--- a/Makefile
|
||||||
+++ b/Makefile
|
+++ b/Makefile
|
||||||
@@ -650,12 +650,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
@@ -645,12 +645,12 @@ KBUILD_CFLAGS += $(call cc-disable-warni
|
||||||
|
|
||||||
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
ifdef CONFIG_CC_OPTIMIZE_FOR_SIZE
|
||||||
KBUILD_CFLAGS += $(call cc-option,-Oz,-Os)
|
KBUILD_CFLAGS += $(call cc-option,-Oz,-Os)
|
||||||
|
|
|
@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
|
||||||
@@ -2060,6 +2271,12 @@ static void ip6_tnl_dellink(struct net_d
|
@@ -2064,6 +2275,12 @@ static void ip6_tnl_dellink(struct net_d
|
||||||
|
|
||||||
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
static size_t ip6_tnl_get_size(const struct net_device *dev)
|
||||||
{
|
{
|
||||||
|
@ -426,7 +426,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
return
|
return
|
||||||
/* IFLA_IPTUN_LINK */
|
/* IFLA_IPTUN_LINK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
@@ -2089,6 +2306,24 @@ static size_t ip6_tnl_get_size(const str
|
@@ -2093,6 +2310,24 @@ static size_t ip6_tnl_get_size(const str
|
||||||
nla_total_size(0) +
|
nla_total_size(0) +
|
||||||
/* IFLA_IPTUN_FWMARK */
|
/* IFLA_IPTUN_FWMARK */
|
||||||
nla_total_size(4) +
|
nla_total_size(4) +
|
||||||
|
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
0;
|
0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2096,6 +2331,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2100,6 +2335,9 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
{
|
{
|
||||||
struct ip6_tnl *tunnel = netdev_priv(dev);
|
struct ip6_tnl *tunnel = netdev_priv(dev);
|
||||||
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
struct __ip6_tnl_parm *parm = &tunnel->parms;
|
||||||
|
@ -461,7 +461,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
|
|
||||||
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
if (nla_put_u32(skb, IFLA_IPTUN_LINK, parm->link) ||
|
||||||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
|
||||||
@@ -2105,9 +2343,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
@@ -2109,9 +2347,27 @@ static int ip6_tnl_fill_info(struct sk_b
|
||||||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
|
||||||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
|
||||||
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
nla_put_u8(skb, IFLA_IPTUN_PROTO, parm->proto) ||
|
||||||
|
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
|
||||||
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
|
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_SPORT, tunnel->encap.sport) ||
|
||||||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
|
||||||
@@ -2147,6 +2403,7 @@ static const struct nla_policy ip6_tnl_p
|
@@ -2151,6 +2407,7 @@ static const struct nla_policy ip6_tnl_p
|
||||||
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
|
||||||
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },
|
||||||
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
[IFLA_IPTUN_FWMARK] = { .type = NLA_U32 },
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
|
|
||||||
--- a/drivers/usb/host/pci-quirks.c
|
--- a/drivers/usb/host/pci-quirks.c
|
||||||
+++ b/drivers/usb/host/pci-quirks.c
|
+++ b/drivers/usb/host/pci-quirks.c
|
||||||
@@ -107,6 +107,8 @@ struct amd_chipset_type {
|
@@ -124,6 +124,8 @@ struct amd_chipset_type {
|
||||||
u8 rev;
|
u8 rev;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -19,9 +19,9 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static struct amd_chipset_info {
|
static struct amd_chipset_info {
|
||||||
struct pci_dev *nb_dev;
|
struct pci_dev *nb_dev;
|
||||||
struct pci_dev *smbus_dev;
|
struct pci_dev *smbus_dev;
|
||||||
@@ -511,6 +513,10 @@ void usb_amd_dev_put(void)
|
@@ -620,6 +622,10 @@ bool usb_amd_pt_check_port(struct device
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(usb_amd_dev_put);
|
EXPORT_SYMBOL_GPL(usb_amd_pt_check_port);
|
||||||
|
|
||||||
+#endif /* CONFIG_PCI_DISABLE_COMMON_QUIRKS */
|
+#endif /* CONFIG_PCI_DISABLE_COMMON_QUIRKS */
|
||||||
+
|
+
|
||||||
|
@ -30,7 +30,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
/*
|
/*
|
||||||
* Make sure the controller is completely inactive, unable to
|
* Make sure the controller is completely inactive, unable to
|
||||||
* generate interrupts or do DMA.
|
* generate interrupts or do DMA.
|
||||||
@@ -590,8 +596,17 @@ reset_needed:
|
@@ -699,8 +705,17 @@ reset_needed:
|
||||||
uhci_reset_hc(pdev, base);
|
uhci_reset_hc(pdev, base);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
|
static inline int io_type_enabled(struct pci_dev *pdev, unsigned int mask)
|
||||||
{
|
{
|
||||||
u16 cmd;
|
u16 cmd;
|
||||||
@@ -1178,3 +1193,4 @@ bool usb_xhci_needs_pci_reset(struct pci
|
@@ -1287,3 +1302,4 @@ bool usb_xhci_needs_pci_reset(struct pci
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
|
EXPORT_SYMBOL_GPL(usb_xhci_needs_pci_reset);
|
||||||
|
@ -65,8 +65,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
int usb_amd_find_chipset_info(void);
|
int usb_amd_find_chipset_info(void);
|
||||||
int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
|
int usb_hcd_amd_remote_wakeup_quirk(struct pci_dev *pdev);
|
||||||
bool usb_amd_hang_symptom_quirk(void);
|
bool usb_amd_hang_symptom_quirk(void);
|
||||||
@@ -19,12 +22,29 @@ void sb800_prefetch(struct device *dev,
|
@@ -20,6 +23,18 @@ bool usb_xhci_needs_pci_reset(struct pci
|
||||||
bool usb_xhci_needs_pci_reset(struct pci_dev *pdev);
|
bool usb_amd_pt_check_port(struct device *device, int port);
|
||||||
#else
|
#else
|
||||||
struct pci_dev;
|
struct pci_dev;
|
||||||
+static inline int usb_amd_find_chipset_info(void)
|
+static inline int usb_amd_find_chipset_info(void)
|
||||||
|
@ -84,9 +84,10 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static inline void usb_amd_quirk_pll_disable(void) {}
|
static inline void usb_amd_quirk_pll_disable(void) {}
|
||||||
static inline void usb_amd_quirk_pll_enable(void) {}
|
static inline void usb_amd_quirk_pll_enable(void) {}
|
||||||
static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
|
static inline void usb_asmedia_modifyflowcontrol(struct pci_dev *pdev) {}
|
||||||
static inline void usb_amd_dev_put(void) {}
|
@@ -30,6 +45,11 @@ static inline bool usb_amd_pt_check_port
|
||||||
static inline void usb_disable_xhci_ports(struct pci_dev *xhci_pdev) {}
|
{
|
||||||
static inline void sb800_prefetch(struct device *dev, int on) {}
|
return false;
|
||||||
|
}
|
||||||
+static inline void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev) {}
|
+static inline void usb_enable_intel_xhci_ports(struct pci_dev *xhci_pdev) {}
|
||||||
+static inline bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
|
+static inline bool usb_xhci_needs_pci_reset(struct pci_dev *pdev)
|
||||||
+{
|
+{
|
||||||
|
|
|
@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
/**
|
/**
|
||||||
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
* ata_build_rw_tf - Build ATA taskfile for given read/write request
|
||||||
* @tf: Target ATA taskfile
|
* @tf: Target ATA taskfile
|
||||||
@@ -5114,6 +5127,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
@@ -5120,6 +5133,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||||
if (tag < 0)
|
if (tag < 0)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
|
|
||||||
qc = __ata_qc_from_tag(ap, tag);
|
qc = __ata_qc_from_tag(ap, tag);
|
||||||
qc->tag = tag;
|
qc->tag = tag;
|
||||||
@@ -6015,6 +6031,9 @@ struct ata_port *ata_port_alloc(struct a
|
@@ -6021,6 +6037,9 @@ struct ata_port *ata_port_alloc(struct a
|
||||||
ap->stats.unhandled_irq = 1;
|
ap->stats.unhandled_irq = 1;
|
||||||
ap->stats.idle_irq = 1;
|
ap->stats.idle_irq = 1;
|
||||||
#endif
|
#endif
|
||||||
|
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
ata_sff_port_init(ap);
|
ata_sff_port_init(ap);
|
||||||
|
|
||||||
return ap;
|
return ap;
|
||||||
@@ -6036,6 +6055,12 @@ static void ata_host_release(struct devi
|
@@ -6042,6 +6061,12 @@ static void ata_host_release(struct devi
|
||||||
|
|
||||||
kfree(ap->pmp_link);
|
kfree(ap->pmp_link);
|
||||||
kfree(ap->slave_link);
|
kfree(ap->slave_link);
|
||||||
|
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
kfree(ap);
|
kfree(ap);
|
||||||
host->ports[i] = NULL;
|
host->ports[i] = NULL;
|
||||||
}
|
}
|
||||||
@@ -6482,7 +6507,23 @@ int ata_host_register(struct ata_host *h
|
@@ -6488,7 +6513,23 @@ int ata_host_register(struct ata_host *h
|
||||||
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
|
||||||
host->ports[i]->local_port_no = i + 1;
|
host->ports[i]->local_port_no = i + 1;
|
||||||
}
|
}
|
||||||
|
|
|
@ -114,7 +114,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
|
|
||||||
struct list_head node;
|
struct list_head node;
|
||||||
};
|
};
|
||||||
@@ -539,7 +544,7 @@ static void bam_free_chan(struct dma_cha
|
@@ -540,7 +545,7 @@ static void bam_free_chan(struct dma_cha
|
||||||
|
|
||||||
vchan_free_chan_resources(to_virt_chan(chan));
|
vchan_free_chan_resources(to_virt_chan(chan));
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
dev_err(bchan->bdev->dev, "Cannot free busy channel\n");
|
dev_err(bchan->bdev->dev, "Cannot free busy channel\n");
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@@ -632,8 +637,6 @@ static struct dma_async_tx_descriptor *b
|
@@ -633,8 +638,6 @@ static struct dma_async_tx_descriptor *b
|
||||||
|
|
||||||
if (flags & DMA_PREP_INTERRUPT)
|
if (flags & DMA_PREP_INTERRUPT)
|
||||||
async_desc->flags |= DESC_FLAG_EOT;
|
async_desc->flags |= DESC_FLAG_EOT;
|
||||||
|
@ -132,7 +132,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
|
|
||||||
async_desc->num_desc = num_alloc;
|
async_desc->num_desc = num_alloc;
|
||||||
async_desc->curr_desc = async_desc->desc;
|
async_desc->curr_desc = async_desc->desc;
|
||||||
@@ -684,14 +687,16 @@ err_out:
|
@@ -685,14 +688,16 @@ err_out:
|
||||||
static int bam_dma_terminate_all(struct dma_chan *chan)
|
static int bam_dma_terminate_all(struct dma_chan *chan)
|
||||||
{
|
{
|
||||||
struct bam_chan *bchan = to_bam_chan(chan);
|
struct bam_chan *bchan = to_bam_chan(chan);
|
||||||
|
@ -152,7 +152,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
vchan_get_all_descriptors(&bchan->vc, &head);
|
vchan_get_all_descriptors(&bchan->vc, &head);
|
||||||
@@ -763,9 +768,9 @@ static int bam_resume(struct dma_chan *c
|
@@ -764,9 +769,9 @@ static int bam_resume(struct dma_chan *c
|
||||||
*/
|
*/
|
||||||
static u32 process_channel_irqs(struct bam_device *bdev)
|
static u32 process_channel_irqs(struct bam_device *bdev)
|
||||||
{
|
{
|
||||||
|
@ -164,7 +164,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
|
|
||||||
srcs = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_SRCS_EE));
|
srcs = readl_relaxed(bam_addr(bdev, 0, BAM_IRQ_SRCS_EE));
|
||||||
|
|
||||||
@@ -785,27 +790,40 @@ static u32 process_channel_irqs(struct b
|
@@ -786,27 +791,40 @@ static u32 process_channel_irqs(struct b
|
||||||
writel_relaxed(pipe_stts, bam_addr(bdev, i, BAM_P_IRQ_CLR));
|
writel_relaxed(pipe_stts, bam_addr(bdev, i, BAM_P_IRQ_CLR));
|
||||||
|
|
||||||
spin_lock_irqsave(&bchan->vc.lock, flags);
|
spin_lock_irqsave(&bchan->vc.lock, flags);
|
||||||
|
@ -214,7 +214,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
}
|
}
|
||||||
|
|
||||||
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
||||||
@@ -867,6 +885,7 @@ static enum dma_status bam_tx_status(str
|
@@ -868,6 +886,7 @@ static enum dma_status bam_tx_status(str
|
||||||
struct dma_tx_state *txstate)
|
struct dma_tx_state *txstate)
|
||||||
{
|
{
|
||||||
struct bam_chan *bchan = to_bam_chan(chan);
|
struct bam_chan *bchan = to_bam_chan(chan);
|
||||||
|
@ -222,7 +222,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
struct virt_dma_desc *vd;
|
struct virt_dma_desc *vd;
|
||||||
int ret;
|
int ret;
|
||||||
size_t residue = 0;
|
size_t residue = 0;
|
||||||
@@ -882,11 +901,17 @@ static enum dma_status bam_tx_status(str
|
@@ -883,11 +902,17 @@ static enum dma_status bam_tx_status(str
|
||||||
|
|
||||||
spin_lock_irqsave(&bchan->vc.lock, flags);
|
spin_lock_irqsave(&bchan->vc.lock, flags);
|
||||||
vd = vchan_find_desc(&bchan->vc, cookie);
|
vd = vchan_find_desc(&bchan->vc, cookie);
|
||||||
|
@ -244,7 +244,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
|
|
||||||
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
||||||
|
|
||||||
@@ -927,63 +952,86 @@ static void bam_start_dma(struct bam_cha
|
@@ -928,63 +953,86 @@ static void bam_start_dma(struct bam_cha
|
||||||
{
|
{
|
||||||
struct virt_dma_desc *vd = vchan_next_desc(&bchan->vc);
|
struct virt_dma_desc *vd = vchan_next_desc(&bchan->vc);
|
||||||
struct bam_device *bdev = bchan->bdev;
|
struct bam_device *bdev = bchan->bdev;
|
||||||
|
@ -367,7 +367,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
|
|
||||||
/* ensure descriptor writes and dma start not reordered */
|
/* ensure descriptor writes and dma start not reordered */
|
||||||
wmb();
|
wmb();
|
||||||
@@ -1012,7 +1060,7 @@ static void dma_tasklet(unsigned long da
|
@@ -1013,7 +1061,7 @@ static void dma_tasklet(unsigned long da
|
||||||
bchan = &bdev->channels[i];
|
bchan = &bdev->channels[i];
|
||||||
spin_lock_irqsave(&bchan->vc.lock, flags);
|
spin_lock_irqsave(&bchan->vc.lock, flags);
|
||||||
|
|
||||||
|
@ -376,7 +376,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
bam_start_dma(bchan);
|
bam_start_dma(bchan);
|
||||||
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
||||||
}
|
}
|
||||||
@@ -1033,7 +1081,7 @@ static void bam_issue_pending(struct dma
|
@@ -1034,7 +1082,7 @@ static void bam_issue_pending(struct dma
|
||||||
spin_lock_irqsave(&bchan->vc.lock, flags);
|
spin_lock_irqsave(&bchan->vc.lock, flags);
|
||||||
|
|
||||||
/* if work pending and idle, start a transaction */
|
/* if work pending and idle, start a transaction */
|
||||||
|
@ -385,7 +385,7 @@ Signed-off-by: Vinod Koul <vinod.koul@intel.com>
|
||||||
bam_start_dma(bchan);
|
bam_start_dma(bchan);
|
||||||
|
|
||||||
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
spin_unlock_irqrestore(&bchan->vc.lock, flags);
|
||||||
@@ -1133,6 +1181,7 @@ static void bam_channel_init(struct bam_
|
@@ -1138,6 +1186,7 @@ static void bam_channel_init(struct bam_
|
||||||
|
|
||||||
vchan_init(&bchan->vc, &bdev->common);
|
vchan_init(&bchan->vc, &bdev->common);
|
||||||
bchan->vc.desc_free = bam_dma_free_desc;
|
bchan->vc.desc_free = bam_dma_free_desc;
|
||||||
|
|
|
@ -18,7 +18,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||||
|
|
||||||
--- a/drivers/soc/lantiq/gphy.c
|
--- a/drivers/soc/lantiq/gphy.c
|
||||||
+++ b/drivers/soc/lantiq/gphy.c
|
+++ b/drivers/soc/lantiq/gphy.c
|
||||||
@@ -56,6 +56,7 @@ static const struct xway_gphy_match_data
|
@@ -55,6 +55,7 @@ static const struct xway_gphy_match_data
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct of_device_id xway_gphy_match[] = {
|
static const struct of_device_id xway_gphy_match[] = {
|
||||||
|
@ -26,7 +26,7 @@ Signed-off-by: Mathias Kresin <dev@kresin.me>
|
||||||
{ .compatible = "lantiq,xrx200a1x-gphy", .data = &xrx200a1x_gphy_data },
|
{ .compatible = "lantiq,xrx200a1x-gphy", .data = &xrx200a1x_gphy_data },
|
||||||
{ .compatible = "lantiq,xrx200a2x-gphy", .data = &xrx200a2x_gphy_data },
|
{ .compatible = "lantiq,xrx200a2x-gphy", .data = &xrx200a2x_gphy_data },
|
||||||
{ .compatible = "lantiq,xrx300-gphy", .data = &xrx300_gphy_data },
|
{ .compatible = "lantiq,xrx300-gphy", .data = &xrx300_gphy_data },
|
||||||
@@ -130,6 +131,16 @@ static int xway_gphy_of_probe(struct pla
|
@@ -111,6 +112,16 @@ static int xway_gphy_of_probe(struct pla
|
||||||
|
|
||||||
gphy_fw_name_cfg = of_device_get_match_data(dev);
|
gphy_fw_name_cfg = of_device_get_match_data(dev);
|
||||||
|
|
||||||
|
|
|
@ -1,86 +0,0 @@
|
||||||
From ae14aba7fc748b2da282b59a2f516a311ed1f6eb Mon Sep 17 00:00:00 2001
|
|
||||||
From: Mathias Kresin <dev@kresin.me>
|
|
||||||
Date: Tue, 27 Mar 2018 23:15:07 +0200
|
|
||||||
Subject: [PATCH] MIPS: lantiq: gphy: Remove reboot/remove reset asserts
|
|
||||||
|
|
||||||
While doing a global software reset, these bits are not cleared and let
|
|
||||||
some bootloader fail to initialise the GPHYs. The bootloader don't expect
|
|
||||||
these bits to be set, as they aren't during power on.
|
|
||||||
|
|
||||||
The asserts were a workaround for a wrong syscon-reboot mask. With a mask
|
|
||||||
set which includes the GPHY resets of the first reset register, the
|
|
||||||
resets of the second reset register arn't required any more.
|
|
||||||
|
|
||||||
Signed-off-by: Mathias Kresin <dev@kresin.me>
|
|
||||||
---
|
|
||||||
drivers/soc/lantiq/gphy.c | 34 ----------------------------------
|
|
||||||
1 file changed, 34 deletions(-)
|
|
||||||
|
|
||||||
--- a/drivers/soc/lantiq/gphy.c
|
|
||||||
+++ b/drivers/soc/lantiq/gphy.c
|
|
||||||
@@ -30,7 +30,6 @@ struct xway_gphy_priv {
|
|
||||||
struct clk *gphy_clk_gate;
|
|
||||||
struct reset_control *gphy_reset;
|
|
||||||
struct reset_control *gphy_reset2;
|
|
||||||
- struct notifier_block gphy_reboot_nb;
|
|
||||||
void __iomem *membase;
|
|
||||||
char *fw_name;
|
|
||||||
};
|
|
||||||
@@ -65,24 +64,6 @@ static const struct of_device_id xway_gp
|
|
||||||
};
|
|
||||||
MODULE_DEVICE_TABLE(of, xway_gphy_match);
|
|
||||||
|
|
||||||
-static struct xway_gphy_priv *to_xway_gphy_priv(struct notifier_block *nb)
|
|
||||||
-{
|
|
||||||
- return container_of(nb, struct xway_gphy_priv, gphy_reboot_nb);
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
-static int xway_gphy_reboot_notify(struct notifier_block *reboot_nb,
|
|
||||||
- unsigned long code, void *unused)
|
|
||||||
-{
|
|
||||||
- struct xway_gphy_priv *priv = to_xway_gphy_priv(reboot_nb);
|
|
||||||
-
|
|
||||||
- if (priv) {
|
|
||||||
- reset_control_assert(priv->gphy_reset);
|
|
||||||
- reset_control_assert(priv->gphy_reset2);
|
|
||||||
- }
|
|
||||||
-
|
|
||||||
- return NOTIFY_DONE;
|
|
||||||
-}
|
|
||||||
-
|
|
||||||
static int xway_gphy_load(struct device *dev, struct xway_gphy_priv *priv,
|
|
||||||
dma_addr_t *dev_addr)
|
|
||||||
{
|
|
||||||
@@ -216,14 +197,6 @@ static int xway_gphy_probe(struct platfo
|
|
||||||
reset_control_deassert(priv->gphy_reset);
|
|
||||||
reset_control_deassert(priv->gphy_reset2);
|
|
||||||
|
|
||||||
- /* assert the gphy reset because it can hang after a reboot: */
|
|
||||||
- priv->gphy_reboot_nb.notifier_call = xway_gphy_reboot_notify;
|
|
||||||
- priv->gphy_reboot_nb.priority = -1;
|
|
||||||
-
|
|
||||||
- ret = register_reboot_notifier(&priv->gphy_reboot_nb);
|
|
||||||
- if (ret)
|
|
||||||
- dev_warn(dev, "Failed to register reboot notifier\n");
|
|
||||||
-
|
|
||||||
platform_set_drvdata(pdev, priv);
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
@@ -235,17 +208,10 @@ static int xway_gphy_remove(struct platf
|
|
||||||
struct xway_gphy_priv *priv = platform_get_drvdata(pdev);
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
- reset_control_assert(priv->gphy_reset);
|
|
||||||
- reset_control_assert(priv->gphy_reset2);
|
|
||||||
-
|
|
||||||
iowrite32be(0, priv->membase);
|
|
||||||
|
|
||||||
clk_disable_unprepare(priv->gphy_clk_gate);
|
|
||||||
|
|
||||||
- ret = unregister_reboot_notifier(&priv->gphy_reboot_nb);
|
|
||||||
- if (ret)
|
|
||||||
- dev_warn(dev, "Failed to unregister reboot notifier\n");
|
|
||||||
-
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
|
@ -57,9 +57,9 @@ Signed-off-by: John Crispin <john@phrozen.org>
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct of_device_id mt7530_of_match[] = {
|
static const struct of_device_id mt7530_of_match[] = {
|
||||||
@@ -1135,16 +1142,16 @@ static const struct of_device_id mt7530_
|
@@ -1136,16 +1143,16 @@ static const struct of_device_id mt7530_
|
||||||
{ /* sentinel */ },
|
|
||||||
};
|
};
|
||||||
|
MODULE_DEVICE_TABLE(of, mt7530_of_match);
|
||||||
|
|
||||||
-static struct mdio_driver mt7530_mdio_driver = {
|
-static struct mdio_driver mt7530_mdio_driver = {
|
||||||
+static struct platform_driver mtk_mt7530_driver = {
|
+static struct platform_driver mtk_mt7530_driver = {
|
||||||
|
|
|
@ -86,7 +86,7 @@ Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
|
||||||
if (!xhci->shared_hcd) {
|
if (!xhci->shared_hcd) {
|
||||||
--- a/drivers/usb/host/xhci-pci.c
|
--- a/drivers/usb/host/xhci-pci.c
|
||||||
+++ b/drivers/usb/host/xhci-pci.c
|
+++ b/drivers/usb/host/xhci-pci.c
|
||||||
@@ -255,6 +255,9 @@ static int xhci_pci_setup(struct usb_hcd
|
@@ -266,6 +266,9 @@ static int xhci_pci_setup(struct usb_hcd
|
||||||
if (!xhci->sbrn)
|
if (!xhci->sbrn)
|
||||||
pci_read_config_byte(pdev, XHCI_SBRN_OFFSET, &xhci->sbrn);
|
pci_read_config_byte(pdev, XHCI_SBRN_OFFSET, &xhci->sbrn);
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
|
|
||||||
--- a/arch/arm/Kconfig
|
--- a/arch/arm/Kconfig
|
||||||
+++ b/arch/arm/Kconfig
|
+++ b/arch/arm/Kconfig
|
||||||
@@ -1948,6 +1948,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
@@ -1938,6 +1938,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
|
||||||
The command-line arguments provided by the boot loader will be
|
The command-line arguments provided by the boot loader will be
|
||||||
appended to the the device tree bootargs property.
|
appended to the the device tree bootargs property.
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
config CMDLINE
|
config CMDLINE
|
||||||
--- a/arch/arm/boot/compressed/atags_to_fdt.c
|
--- a/arch/arm/boot/compressed/atags_to_fdt.c
|
||||||
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
|
+++ b/arch/arm/boot/compressed/atags_to_fdt.c
|
||||||
@@ -3,6 +3,8 @@
|
@@ -4,6 +4,8 @@
|
||||||
|
|
||||||
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
#if defined(CONFIG_ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEND)
|
||||||
#define do_extend_cmdline 1
|
#define do_extend_cmdline 1
|
||||||
|
@ -57,7 +57,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
#else
|
#else
|
||||||
#define do_extend_cmdline 0
|
#define do_extend_cmdline 0
|
||||||
#endif
|
#endif
|
||||||
@@ -66,6 +68,65 @@ static uint32_t get_cell_size(const void
|
@@ -67,6 +69,65 @@ static uint32_t get_cell_size(const void
|
||||||
return cell_size;
|
return cell_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -123,7 +123,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
|
static void merge_fdt_bootargs(void *fdt, const char *fdt_cmdline)
|
||||||
{
|
{
|
||||||
char cmdline[COMMAND_LINE_SIZE];
|
char cmdline[COMMAND_LINE_SIZE];
|
||||||
@@ -85,12 +140,21 @@ static void merge_fdt_bootargs(void *fdt
|
@@ -86,12 +147,21 @@ static void merge_fdt_bootargs(void *fdt
|
||||||
|
|
||||||
/* and append the ATAG_CMDLINE */
|
/* and append the ATAG_CMDLINE */
|
||||||
if (fdt_cmdline) {
|
if (fdt_cmdline) {
|
||||||
|
@ -145,7 +145,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
}
|
}
|
||||||
*ptr = '\0';
|
*ptr = '\0';
|
||||||
|
|
||||||
@@ -147,7 +211,9 @@ int atags_to_fdt(void *atag_list, void *
|
@@ -148,7 +218,9 @@ int atags_to_fdt(void *atag_list, void *
|
||||||
else
|
else
|
||||||
setprop_string(fdt, "/chosen", "bootargs",
|
setprop_string(fdt, "/chosen", "bootargs",
|
||||||
atag->u.cmdline.cmdline);
|
atag->u.cmdline.cmdline);
|
||||||
|
@ -156,7 +156,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
if (memcount >= sizeof(mem_reg_property)/4)
|
if (memcount >= sizeof(mem_reg_property)/4)
|
||||||
continue;
|
continue;
|
||||||
if (!atag->u.mem.size)
|
if (!atag->u.mem.size)
|
||||||
@@ -186,6 +252,10 @@ int atags_to_fdt(void *atag_list, void *
|
@@ -187,6 +259,10 @@ int atags_to_fdt(void *atag_list, void *
|
||||||
setprop(fdt, "/memory", "reg", mem_reg_property,
|
setprop(fdt, "/memory", "reg", mem_reg_property,
|
||||||
4 * memcount * memsize);
|
4 * memcount * memsize);
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
}
|
}
|
||||||
--- a/init/main.c
|
--- a/init/main.c
|
||||||
+++ b/init/main.c
|
+++ b/init/main.c
|
||||||
@@ -89,6 +89,10 @@
|
@@ -95,6 +95,10 @@
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
|
|
||||||
|
@ -180,7 +180,7 @@ Signed-off-by: Michael Gray <michael.gray@lantisproject.com>
|
||||||
static int kernel_init(void *);
|
static int kernel_init(void *);
|
||||||
|
|
||||||
extern void init_IRQ(void);
|
extern void init_IRQ(void);
|
||||||
@@ -540,6 +544,18 @@ asmlinkage __visible void __init start_k
|
@@ -574,6 +578,18 @@ asmlinkage __visible void __init start_k
|
||||||
page_alloc_init();
|
page_alloc_init();
|
||||||
|
|
||||||
pr_notice("Kernel command line: %s\n", boot_command_line);
|
pr_notice("Kernel command line: %s\n", boot_command_line);
|
||||||
|
|
|
@ -9,7 +9,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
---
|
---
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||||
@@ -3961,6 +3961,15 @@ static int mvneta_ethtool_set_wol(struct
|
@@ -3962,6 +3962,15 @@ static int mvneta_ethtool_set_wol(struct
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
|
||||||
static const struct net_device_ops mvneta_netdev_ops = {
|
static const struct net_device_ops mvneta_netdev_ops = {
|
||||||
.ndo_open = mvneta_open,
|
.ndo_open = mvneta_open,
|
||||||
.ndo_stop = mvneta_stop,
|
.ndo_stop = mvneta_stop,
|
||||||
@@ -3971,6 +3980,7 @@ static const struct net_device_ops mvnet
|
@@ -3972,6 +3981,7 @@ static const struct net_device_ops mvnet
|
||||||
.ndo_fix_features = mvneta_fix_features,
|
.ndo_fix_features = mvneta_fix_features,
|
||||||
.ndo_get_stats64 = mvneta_get_stats64,
|
.ndo_get_stats64 = mvneta_get_stats64,
|
||||||
.ndo_do_ioctl = mvneta_ioctl,
|
.ndo_do_ioctl = mvneta_ioctl,
|
||||||
|
|
|
@ -132,7 +132,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
u64 ethtool_stats[ARRAY_SIZE(mvneta_statistics)];
|
u64 ethtool_stats[ARRAY_SIZE(mvneta_statistics)];
|
||||||
|
|
||||||
u32 indir[MVNETA_RSS_LU_TABLE_SIZE];
|
u32 indir[MVNETA_RSS_LU_TABLE_SIZE];
|
||||||
@@ -1214,10 +1233,6 @@ static void mvneta_port_disable(struct m
|
@@ -1215,10 +1234,6 @@ static void mvneta_port_disable(struct m
|
||||||
val &= ~MVNETA_GMAC0_PORT_ENABLE;
|
val &= ~MVNETA_GMAC0_PORT_ENABLE;
|
||||||
mvreg_write(pp, MVNETA_GMAC_CTRL_0, val);
|
mvreg_write(pp, MVNETA_GMAC_CTRL_0, val);
|
||||||
|
|
||||||
|
@ -143,7 +143,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
udelay(200);
|
udelay(200);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1277,44 +1292,6 @@ static void mvneta_set_other_mcast_table
|
@@ -1278,44 +1293,6 @@ static void mvneta_set_other_mcast_table
|
||||||
mvreg_write(pp, MVNETA_DA_FILT_OTH_MCAST + offset, val);
|
mvreg_write(pp, MVNETA_DA_FILT_OTH_MCAST + offset, val);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -188,7 +188,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
static void mvneta_percpu_unmask_interrupt(void *arg)
|
static void mvneta_percpu_unmask_interrupt(void *arg)
|
||||||
{
|
{
|
||||||
struct mvneta_port *pp = arg;
|
struct mvneta_port *pp = arg;
|
||||||
@@ -1467,7 +1444,6 @@ static void mvneta_defaults_set(struct m
|
@@ -1468,7 +1445,6 @@ static void mvneta_defaults_set(struct m
|
||||||
val &= ~MVNETA_PHY_POLLING_ENABLE;
|
val &= ~MVNETA_PHY_POLLING_ENABLE;
|
||||||
mvreg_write(pp, MVNETA_UNIT_CONTROL, val);
|
mvreg_write(pp, MVNETA_UNIT_CONTROL, val);
|
||||||
|
|
||||||
|
@ -196,7 +196,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
mvneta_set_ucast_table(pp, -1);
|
mvneta_set_ucast_table(pp, -1);
|
||||||
mvneta_set_special_mcast_table(pp, -1);
|
mvneta_set_special_mcast_table(pp, -1);
|
||||||
mvneta_set_other_mcast_table(pp, -1);
|
mvneta_set_other_mcast_table(pp, -1);
|
||||||
@@ -2692,26 +2668,11 @@ static irqreturn_t mvneta_percpu_isr(int
|
@@ -2693,26 +2669,11 @@ static irqreturn_t mvneta_percpu_isr(int
|
||||||
return IRQ_HANDLED;
|
return IRQ_HANDLED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -225,7 +225,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* NAPI handler
|
/* NAPI handler
|
||||||
@@ -2727,7 +2688,6 @@ static int mvneta_poll(struct napi_struc
|
@@ -2728,7 +2689,6 @@ static int mvneta_poll(struct napi_struc
|
||||||
u32 cause_rx_tx;
|
u32 cause_rx_tx;
|
||||||
int rx_queue;
|
int rx_queue;
|
||||||
struct mvneta_port *pp = netdev_priv(napi->dev);
|
struct mvneta_port *pp = netdev_priv(napi->dev);
|
||||||
|
@ -233,7 +233,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
struct mvneta_pcpu_port *port = this_cpu_ptr(pp->ports);
|
struct mvneta_pcpu_port *port = this_cpu_ptr(pp->ports);
|
||||||
|
|
||||||
if (!netif_running(pp->dev)) {
|
if (!netif_running(pp->dev)) {
|
||||||
@@ -2741,12 +2701,11 @@ static int mvneta_poll(struct napi_struc
|
@@ -2742,12 +2702,11 @@ static int mvneta_poll(struct napi_struc
|
||||||
u32 cause_misc = mvreg_read(pp, MVNETA_INTR_MISC_CAUSE);
|
u32 cause_misc = mvreg_read(pp, MVNETA_INTR_MISC_CAUSE);
|
||||||
|
|
||||||
mvreg_write(pp, MVNETA_INTR_MISC_CAUSE, 0);
|
mvreg_write(pp, MVNETA_INTR_MISC_CAUSE, 0);
|
||||||
|
@ -251,7 +251,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Release Tx descriptors */
|
/* Release Tx descriptors */
|
||||||
@@ -3060,7 +3019,6 @@ static int mvneta_setup_txqs(struct mvne
|
@@ -3061,7 +3020,6 @@ static int mvneta_setup_txqs(struct mvne
|
||||||
static void mvneta_start_dev(struct mvneta_port *pp)
|
static void mvneta_start_dev(struct mvneta_port *pp)
|
||||||
{
|
{
|
||||||
int cpu;
|
int cpu;
|
||||||
|
@ -259,7 +259,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
|
||||||
mvneta_max_rx_size_set(pp, pp->pkt_size);
|
mvneta_max_rx_size_set(pp, pp->pkt_size);
|
||||||
mvneta_txq_max_tx_size_set(pp, pp->pkt_size);
|
mvneta_txq_max_tx_size_set(pp, pp->pkt_size);
|
||||||
@@ -3088,16 +3046,15 @@ static void mvneta_start_dev(struct mvne
|
@@ -3089,16 +3047,15 @@ static void mvneta_start_dev(struct mvne
|
||||||
MVNETA_CAUSE_LINK_CHANGE |
|
MVNETA_CAUSE_LINK_CHANGE |
|
||||||
MVNETA_CAUSE_PSC_SYNC_CHANGE);
|
MVNETA_CAUSE_PSC_SYNC_CHANGE);
|
||||||
|
|
||||||
|
@ -278,7 +278,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
|
||||||
if (!pp->neta_armada3700) {
|
if (!pp->neta_armada3700) {
|
||||||
for_each_online_cpu(cpu) {
|
for_each_online_cpu(cpu) {
|
||||||
@@ -3251,103 +3208,232 @@ static int mvneta_set_mac_addr(struct ne
|
@@ -3252,103 +3209,232 @@ static int mvneta_set_mac_addr(struct ne
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -585,7 +585,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Electing a CPU must be done in an atomic way: it should be done
|
/* Electing a CPU must be done in an atomic way: it should be done
|
||||||
@@ -3626,10 +3712,9 @@ static int mvneta_stop(struct net_device
|
@@ -3627,10 +3713,9 @@ static int mvneta_stop(struct net_device
|
||||||
|
|
||||||
static int mvneta_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
static int mvneta_ioctl(struct net_device *dev, struct ifreq *ifr, int cmd)
|
||||||
{
|
{
|
||||||
|
@ -598,7 +598,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Ethtool methods */
|
/* Ethtool methods */
|
||||||
@@ -3640,44 +3725,25 @@ mvneta_ethtool_set_link_ksettings(struct
|
@@ -3641,44 +3726,25 @@ mvneta_ethtool_set_link_ksettings(struct
|
||||||
const struct ethtool_link_ksettings *cmd)
|
const struct ethtool_link_ksettings *cmd)
|
||||||
{
|
{
|
||||||
struct mvneta_port *pp = netdev_priv(ndev);
|
struct mvneta_port *pp = netdev_priv(ndev);
|
||||||
|
@ -657,7 +657,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set interrupt coalescing for ethtools */
|
/* Set interrupt coalescing for ethtools */
|
||||||
@@ -3769,6 +3835,22 @@ static int mvneta_ethtool_set_ringparam(
|
@@ -3770,6 +3836,22 @@ static int mvneta_ethtool_set_ringparam(
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -680,7 +680,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
static void mvneta_ethtool_get_strings(struct net_device *netdev, u32 sset,
|
static void mvneta_ethtool_get_strings(struct net_device *netdev, u32 sset,
|
||||||
u8 *data)
|
u8 *data)
|
||||||
{
|
{
|
||||||
@@ -3785,26 +3867,35 @@ static void mvneta_ethtool_update_stats(
|
@@ -3786,26 +3868,35 @@ static void mvneta_ethtool_update_stats(
|
||||||
{
|
{
|
||||||
const struct mvneta_statistic *s;
|
const struct mvneta_statistic *s;
|
||||||
void __iomem *base = pp->base;
|
void __iomem *base = pp->base;
|
||||||
|
@ -721,7 +721,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3939,28 +4030,65 @@ static int mvneta_ethtool_get_rxfh(struc
|
@@ -3940,28 +4031,65 @@ static int mvneta_ethtool_get_rxfh(struc
|
||||||
static void mvneta_ethtool_get_wol(struct net_device *dev,
|
static void mvneta_ethtool_get_wol(struct net_device *dev,
|
||||||
struct ethtool_wolinfo *wol)
|
struct ethtool_wolinfo *wol)
|
||||||
{
|
{
|
||||||
|
@ -795,7 +795,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
|
static u16 mvneta_select_queue(struct net_device *dev, struct sk_buff *skb,
|
||||||
void *accel_priv,
|
void *accel_priv,
|
||||||
select_queue_fallback_t fallback)
|
select_queue_fallback_t fallback)
|
||||||
@@ -3984,13 +4112,15 @@ static const struct net_device_ops mvnet
|
@@ -3985,13 +4113,15 @@ static const struct net_device_ops mvnet
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct ethtool_ops mvneta_eth_tool_ops = {
|
static const struct ethtool_ops mvneta_eth_tool_ops = {
|
||||||
|
@ -812,7 +812,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
.get_strings = mvneta_ethtool_get_strings,
|
.get_strings = mvneta_ethtool_get_strings,
|
||||||
.get_ethtool_stats = mvneta_ethtool_get_stats,
|
.get_ethtool_stats = mvneta_ethtool_get_stats,
|
||||||
.get_sset_count = mvneta_ethtool_get_sset_count,
|
.get_sset_count = mvneta_ethtool_get_sset_count,
|
||||||
@@ -3998,10 +4128,12 @@ static const struct ethtool_ops mvneta_e
|
@@ -3999,10 +4129,12 @@ static const struct ethtool_ops mvneta_e
|
||||||
.get_rxnfc = mvneta_ethtool_get_rxnfc,
|
.get_rxnfc = mvneta_ethtool_get_rxnfc,
|
||||||
.get_rxfh = mvneta_ethtool_get_rxfh,
|
.get_rxfh = mvneta_ethtool_get_rxfh,
|
||||||
.set_rxfh = mvneta_ethtool_set_rxfh,
|
.set_rxfh = mvneta_ethtool_set_rxfh,
|
||||||
|
@ -826,7 +826,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Initialize hw */
|
/* Initialize hw */
|
||||||
@@ -4146,14 +4278,13 @@ static int mvneta_probe(struct platform_
|
@@ -4147,14 +4279,13 @@ static int mvneta_probe(struct platform_
|
||||||
{
|
{
|
||||||
struct resource *res;
|
struct resource *res;
|
||||||
struct device_node *dn = pdev->dev.of_node;
|
struct device_node *dn = pdev->dev.of_node;
|
||||||
|
@ -842,7 +842,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
int tx_csum_limit;
|
int tx_csum_limit;
|
||||||
int phy_mode;
|
int phy_mode;
|
||||||
int err;
|
int err;
|
||||||
@@ -4169,31 +4300,11 @@ static int mvneta_probe(struct platform_
|
@@ -4170,31 +4301,11 @@ static int mvneta_probe(struct platform_
|
||||||
goto err_free_netdev;
|
goto err_free_netdev;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -875,7 +875,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
dev->tx_queue_len = MVNETA_MAX_TXD;
|
dev->tx_queue_len = MVNETA_MAX_TXD;
|
||||||
@@ -4204,12 +4315,7 @@ static int mvneta_probe(struct platform_
|
@@ -4205,12 +4316,7 @@ static int mvneta_probe(struct platform_
|
||||||
|
|
||||||
pp = netdev_priv(dev);
|
pp = netdev_priv(dev);
|
||||||
spin_lock_init(&pp->lock);
|
spin_lock_init(&pp->lock);
|
||||||
|
@ -889,7 +889,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
|
||||||
pp->rxq_def = rxq_def;
|
pp->rxq_def = rxq_def;
|
||||||
|
|
||||||
@@ -4231,7 +4337,7 @@ static int mvneta_probe(struct platform_
|
@@ -4232,7 +4338,7 @@ static int mvneta_probe(struct platform_
|
||||||
pp->clk = devm_clk_get(&pdev->dev, NULL);
|
pp->clk = devm_clk_get(&pdev->dev, NULL);
|
||||||
if (IS_ERR(pp->clk)) {
|
if (IS_ERR(pp->clk)) {
|
||||||
err = PTR_ERR(pp->clk);
|
err = PTR_ERR(pp->clk);
|
||||||
|
@ -898,7 +898,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
}
|
}
|
||||||
|
|
||||||
clk_prepare_enable(pp->clk);
|
clk_prepare_enable(pp->clk);
|
||||||
@@ -4357,6 +4463,14 @@ static int mvneta_probe(struct platform_
|
@@ -4358,6 +4464,14 @@ static int mvneta_probe(struct platform_
|
||||||
/* 9676 == 9700 - 20 and rounding to 8 */
|
/* 9676 == 9700 - 20 and rounding to 8 */
|
||||||
dev->max_mtu = 9676;
|
dev->max_mtu = 9676;
|
||||||
|
|
||||||
|
@ -913,7 +913,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
err = register_netdev(dev);
|
err = register_netdev(dev);
|
||||||
if (err < 0) {
|
if (err < 0) {
|
||||||
dev_err(&pdev->dev, "failed to register\n");
|
dev_err(&pdev->dev, "failed to register\n");
|
||||||
@@ -4368,14 +4482,6 @@ static int mvneta_probe(struct platform_
|
@@ -4369,14 +4483,6 @@ static int mvneta_probe(struct platform_
|
||||||
|
|
||||||
platform_set_drvdata(pdev, pp->dev);
|
platform_set_drvdata(pdev, pp->dev);
|
||||||
|
|
||||||
|
@ -928,7 +928,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
err_netdev:
|
err_netdev:
|
||||||
@@ -4386,16 +4492,14 @@ err_netdev:
|
@@ -4387,16 +4493,14 @@ err_netdev:
|
||||||
1 << pp->id);
|
1 << pp->id);
|
||||||
}
|
}
|
||||||
err_free_stats:
|
err_free_stats:
|
||||||
|
@ -947,7 +947,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
err_free_irq:
|
err_free_irq:
|
||||||
irq_dispose_mapping(dev->irq);
|
irq_dispose_mapping(dev->irq);
|
||||||
err_free_netdev:
|
err_free_netdev:
|
||||||
@@ -4407,7 +4511,6 @@ err_free_netdev:
|
@@ -4408,7 +4512,6 @@ err_free_netdev:
|
||||||
static int mvneta_remove(struct platform_device *pdev)
|
static int mvneta_remove(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct net_device *dev = platform_get_drvdata(pdev);
|
struct net_device *dev = platform_get_drvdata(pdev);
|
||||||
|
@ -955,7 +955,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
struct mvneta_port *pp = netdev_priv(dev);
|
struct mvneta_port *pp = netdev_priv(dev);
|
||||||
|
|
||||||
unregister_netdev(dev);
|
unregister_netdev(dev);
|
||||||
@@ -4415,10 +4518,8 @@ static int mvneta_remove(struct platform
|
@@ -4416,10 +4519,8 @@ static int mvneta_remove(struct platform
|
||||||
clk_disable_unprepare(pp->clk);
|
clk_disable_unprepare(pp->clk);
|
||||||
free_percpu(pp->ports);
|
free_percpu(pp->ports);
|
||||||
free_percpu(pp->stats);
|
free_percpu(pp->stats);
|
||||||
|
@ -967,7 +967,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
free_netdev(dev);
|
free_netdev(dev);
|
||||||
|
|
||||||
if (pp->bm_priv) {
|
if (pp->bm_priv) {
|
||||||
@@ -4470,9 +4571,6 @@ static int mvneta_resume(struct device *
|
@@ -4471,9 +4572,6 @@ static int mvneta_resume(struct device *
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -18,7 +18,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
struct device_node *dn;
|
struct device_node *dn;
|
||||||
unsigned int tx_csum_limit;
|
unsigned int tx_csum_limit;
|
||||||
struct phylink *phylink;
|
struct phylink *phylink;
|
||||||
@@ -4315,6 +4316,7 @@ static int mvneta_probe(struct platform_
|
@@ -4316,6 +4317,7 @@ static int mvneta_probe(struct platform_
|
||||||
|
|
||||||
pp = netdev_priv(dev);
|
pp = netdev_priv(dev);
|
||||||
spin_lock_init(&pp->lock);
|
spin_lock_init(&pp->lock);
|
||||||
|
|
|
@ -14,7 +14,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||||
@@ -2704,8 +2704,7 @@ static int mvneta_poll(struct napi_struc
|
@@ -2705,8 +2705,7 @@ static int mvneta_poll(struct napi_struc
|
||||||
mvreg_write(pp, MVNETA_INTR_MISC_CAUSE, 0);
|
mvreg_write(pp, MVNETA_INTR_MISC_CAUSE, 0);
|
||||||
|
|
||||||
if (cause_misc & (MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
if (cause_misc & (MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||||
|
@ -24,7 +24,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
mvneta_link_change(pp);
|
mvneta_link_change(pp);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3044,8 +3043,7 @@ static void mvneta_start_dev(struct mvne
|
@@ -3045,8 +3044,7 @@ static void mvneta_start_dev(struct mvne
|
||||||
|
|
||||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||||
|
@ -34,7 +34,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
|
||||||
phylink_start(pp->phylink);
|
phylink_start(pp->phylink);
|
||||||
netif_tx_start_all_queues(pp->dev);
|
netif_tx_start_all_queues(pp->dev);
|
||||||
@@ -3542,8 +3540,7 @@ static int mvneta_cpu_online(unsigned in
|
@@ -3543,8 +3541,7 @@ static int mvneta_cpu_online(unsigned in
|
||||||
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
|
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
|
||||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||||
|
@ -44,7 +44,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
netif_tx_start_all_queues(pp->dev);
|
netif_tx_start_all_queues(pp->dev);
|
||||||
spin_unlock(&pp->lock);
|
spin_unlock(&pp->lock);
|
||||||
return 0;
|
return 0;
|
||||||
@@ -3584,8 +3581,7 @@ static int mvneta_cpu_dead(unsigned int
|
@@ -3585,8 +3582,7 @@ static int mvneta_cpu_dead(unsigned int
|
||||||
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
|
on_each_cpu(mvneta_percpu_unmask_interrupt, pp, true);
|
||||||
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
mvreg_write(pp, MVNETA_INTR_MISC_MASK,
|
||||||
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
MVNETA_CAUSE_PHY_STATUS_CHANGE |
|
||||||
|
|
|
@ -10,7 +10,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||||
@@ -4045,6 +4045,22 @@ static int mvneta_ethtool_set_wol(struct
|
@@ -4046,6 +4046,22 @@ static int mvneta_ethtool_set_wol(struct
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
|
||||||
static int mvneta_ethtool_get_eee(struct net_device *dev,
|
static int mvneta_ethtool_get_eee(struct net_device *dev,
|
||||||
struct ethtool_eee *eee)
|
struct ethtool_eee *eee)
|
||||||
{
|
{
|
||||||
@@ -4129,6 +4145,8 @@ static const struct ethtool_ops mvneta_e
|
@@ -4130,6 +4146,8 @@ static const struct ethtool_ops mvneta_e
|
||||||
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
|
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
|
||||||
.get_wol = mvneta_ethtool_get_wol,
|
.get_wol = mvneta_ethtool_get_wol,
|
||||||
.set_wol = mvneta_ethtool_set_wol,
|
.set_wol = mvneta_ethtool_set_wol,
|
||||||
|
|
|
@ -15,7 +15,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
|
|
||||||
--- a/drivers/net/ethernet/marvell/mvneta.c
|
--- a/drivers/net/ethernet/marvell/mvneta.c
|
||||||
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
+++ b/drivers/net/ethernet/marvell/mvneta.c
|
||||||
@@ -4045,22 +4045,6 @@ static int mvneta_ethtool_set_wol(struct
|
@@ -4046,22 +4046,6 @@ static int mvneta_ethtool_set_wol(struct
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,7 +38,7 @@ Signed-off-by: Russell King <rmk+kernel@armlinux.org.uk>
|
||||||
static int mvneta_ethtool_get_eee(struct net_device *dev,
|
static int mvneta_ethtool_get_eee(struct net_device *dev,
|
||||||
struct ethtool_eee *eee)
|
struct ethtool_eee *eee)
|
||||||
{
|
{
|
||||||
@@ -4145,8 +4129,6 @@ static const struct ethtool_ops mvneta_e
|
@@ -4146,8 +4130,6 @@ static const struct ethtool_ops mvneta_e
|
||||||
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
|
.set_link_ksettings = mvneta_ethtool_set_link_ksettings,
|
||||||
.get_wol = mvneta_ethtool_get_wol,
|
.get_wol = mvneta_ethtool_get_wol,
|
||||||
.set_wol = mvneta_ethtool_set_wol,
|
.set_wol = mvneta_ethtool_set_wol,
|
||||||
|
|
|
@ -20,8 +20,6 @@ Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||||
rename arch/arm/boot/dts/{wd-mbwe.dts => ox810se-wd-mbwe.dts} (100%)
|
rename arch/arm/boot/dts/{wd-mbwe.dts => ox810se-wd-mbwe.dts} (100%)
|
||||||
rename arch/arm/boot/dts/{cloudengines-pogoplug-series-3.dts => ox820-cloudengines-pogoplug-series-3.dts} (100%)
|
rename arch/arm/boot/dts/{cloudengines-pogoplug-series-3.dts => ox820-cloudengines-pogoplug-series-3.dts} (100%)
|
||||||
|
|
||||||
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
|
|
||||||
index eff87a344566..1ae23ffa6ff4 100644
|
|
||||||
--- a/arch/arm/boot/dts/Makefile
|
--- a/arch/arm/boot/dts/Makefile
|
||||||
+++ b/arch/arm/boot/dts/Makefile
|
+++ b/arch/arm/boot/dts/Makefile
|
||||||
@@ -685,8 +685,8 @@ dtb-$(CONFIG_ARCH_ACTIONS) += \
|
@@ -685,8 +685,8 @@ dtb-$(CONFIG_ARCH_ACTIONS) += \
|
||||||
|
@ -35,14 +33,427 @@ index eff87a344566..1ae23ffa6ff4 100644
|
||||||
dtb-$(CONFIG_ARCH_QCOM) += \
|
dtb-$(CONFIG_ARCH_QCOM) += \
|
||||||
qcom-apq8060-dragonboard.dtb \
|
qcom-apq8060-dragonboard.dtb \
|
||||||
qcom-apq8064-arrow-sd-600eval.dtb \
|
qcom-apq8064-arrow-sd-600eval.dtb \
|
||||||
diff --git a/arch/arm/boot/dts/wd-mbwe.dts b/arch/arm/boot/dts/ox810se-wd-mbwe.dts
|
--- a/arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts
|
||||||
similarity index 100%
|
+++ /dev/null
|
||||||
rename from arch/arm/boot/dts/wd-mbwe.dts
|
@@ -1,94 +0,0 @@
|
||||||
rename to arch/arm/boot/dts/ox810se-wd-mbwe.dts
|
-/*
|
||||||
diff --git a/arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts b/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
|
- * cloudengines-pogoplug-series-3.dtsi - Device tree file for Cloud Engines PogoPlug Series 3
|
||||||
similarity index 100%
|
- *
|
||||||
rename from arch/arm/boot/dts/cloudengines-pogoplug-series-3.dts
|
- * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
||||||
rename to arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
|
- *
|
||||||
--
|
- * Licensed under GPLv2 or later
|
||||||
2.17.1
|
- */
|
||||||
|
-
|
||||||
|
-/dts-v1/;
|
||||||
|
-#include "ox820.dtsi"
|
||||||
|
-
|
||||||
|
-/ {
|
||||||
|
- model = "Cloud Engines PogoPlug Series 3";
|
||||||
|
-
|
||||||
|
- compatible = "cloudengines,pogoplugv3", "oxsemi,ox820";
|
||||||
|
-
|
||||||
|
- chosen {
|
||||||
|
- bootargs = "earlyprintk";
|
||||||
|
- stdout-path = "serial0:115200n8";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- memory {
|
||||||
|
- /* 128Mbytes DDR */
|
||||||
|
- reg = <0x60000000 0x8000000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- aliases {
|
||||||
|
- serial0 = &uart0;
|
||||||
|
- gpio0 = &gpio0;
|
||||||
|
- gpio1 = &gpio1;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- leds {
|
||||||
|
- compatible = "gpio-leds";
|
||||||
|
-
|
||||||
|
- blue {
|
||||||
|
- label = "pogoplug:blue";
|
||||||
|
- gpios = <&gpio0 2 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- orange {
|
||||||
|
- label = "pogoplug:orange";
|
||||||
|
- gpios = <&gpio1 16 1>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- green {
|
||||||
|
- label = "pogoplug:green";
|
||||||
|
- gpios = <&gpio1 17 1>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-&uart0 {
|
||||||
|
- status = "okay";
|
||||||
|
-
|
||||||
|
- pinctrl-names = "default";
|
||||||
|
- pinctrl-0 = <&pinctrl_uart0>;
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-&nandc {
|
||||||
|
- status = "okay";
|
||||||
|
-
|
||||||
|
- pinctrl-names = "default";
|
||||||
|
- pinctrl-0 = <&pinctrl_nand>;
|
||||||
|
-
|
||||||
|
- nand@0 {
|
||||||
|
- reg = <0>;
|
||||||
|
- #address-cells = <1>;
|
||||||
|
- #size-cells = <1>;
|
||||||
|
- nand-ecc-mode = "soft";
|
||||||
|
- nand-ecc-algo = "hamming";
|
||||||
|
-
|
||||||
|
- partition@0 {
|
||||||
|
- label = "boot";
|
||||||
|
- reg = <0x00000000 0x00e00000>;
|
||||||
|
- read-only;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- partition@e00000 {
|
||||||
|
- label = "ubi";
|
||||||
|
- reg = <0x00e00000 0x07200000>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-ða {
|
||||||
|
- status = "okay";
|
||||||
|
-
|
||||||
|
- pinctrl-names = "default";
|
||||||
|
- pinctrl-0 = <&pinctrl_etha_mdio>;
|
||||||
|
-};
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/ox810se-wd-mbwe.dts
|
||||||
|
@@ -0,0 +1,112 @@
|
||||||
|
+/*
|
||||||
|
+ * wd-mbwe.dtsi - Device tree file for Western Digital My Book World Edition
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
+ *
|
||||||
|
+ * Licensed under GPLv2 or later
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "ox810se.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Western Digital My Book World Edition";
|
||||||
|
+
|
||||||
|
+ compatible = "wd,mbwe", "oxsemi,ox810se";
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ bootargs = "console=ttyS1,115200n8 earlyprintk=serial";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ memory {
|
||||||
|
+ /* 128Mbytes DDR */
|
||||||
|
+ reg = <0x48000000 0x8000000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ serial1 = &uart1;
|
||||||
|
+ gpio0 = &gpio0;
|
||||||
|
+ gpio1 = &gpio1;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ gpio-keys-polled {
|
||||||
|
+ compatible = "gpio-keys-polled";
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+ poll-interval = <100>;
|
||||||
|
+
|
||||||
|
+ power {
|
||||||
|
+ label = "power";
|
||||||
|
+ gpios = <&gpio0 0 1>;
|
||||||
|
+ linux,code = <0x198>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ recovery {
|
||||||
|
+ label = "recovery";
|
||||||
|
+ gpios = <&gpio0 4 1>;
|
||||||
|
+ linux,code = <0xab>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ a0 {
|
||||||
|
+ label = "activity0";
|
||||||
|
+ gpios = <&gpio0 25 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ a1 {
|
||||||
|
+ label = "activity1";
|
||||||
|
+ gpios = <&gpio0 26 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ a2 {
|
||||||
|
+ label = "activity2";
|
||||||
|
+ gpios = <&gpio0 5 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ a3 {
|
||||||
|
+ label = "activity3";
|
||||||
|
+ gpios = <&gpio0 6 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ a4 {
|
||||||
|
+ label = "activity4";
|
||||||
|
+ gpios = <&gpio0 7 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ a5 {
|
||||||
|
+ label = "activity5";
|
||||||
|
+ gpios = <&gpio1 2 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ i2c-gpio {
|
||||||
|
+ compatible = "i2c-gpio";
|
||||||
|
+ gpios = <&gpio0 3 0 /* sda */
|
||||||
|
+ &gpio0 2 0 /* scl */
|
||||||
|
+ >;
|
||||||
|
+ i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <0>;
|
||||||
|
+
|
||||||
|
+ rtc0: rtc@48 {
|
||||||
|
+ compatible = "st,m41t00";
|
||||||
|
+ reg = <0x68>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart1 {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pinctrl_uart1>;
|
||||||
|
+};
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/arch/arm/boot/dts/ox820-cloudengines-pogoplug-series-3.dts
|
||||||
|
@@ -0,0 +1,94 @@
|
||||||
|
+/*
|
||||||
|
+ * cloudengines-pogoplug-series-3.dtsi - Device tree file for Cloud Engines PogoPlug Series 3
|
||||||
|
+ *
|
||||||
|
+ * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
+ *
|
||||||
|
+ * Licensed under GPLv2 or later
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+/dts-v1/;
|
||||||
|
+#include "ox820.dtsi"
|
||||||
|
+
|
||||||
|
+/ {
|
||||||
|
+ model = "Cloud Engines PogoPlug Series 3";
|
||||||
|
+
|
||||||
|
+ compatible = "cloudengines,pogoplugv3", "oxsemi,ox820";
|
||||||
|
+
|
||||||
|
+ chosen {
|
||||||
|
+ bootargs = "earlyprintk";
|
||||||
|
+ stdout-path = "serial0:115200n8";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ memory {
|
||||||
|
+ /* 128Mbytes DDR */
|
||||||
|
+ reg = <0x60000000 0x8000000>;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ aliases {
|
||||||
|
+ serial0 = &uart0;
|
||||||
|
+ gpio0 = &gpio0;
|
||||||
|
+ gpio1 = &gpio1;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ leds {
|
||||||
|
+ compatible = "gpio-leds";
|
||||||
|
+
|
||||||
|
+ blue {
|
||||||
|
+ label = "pogoplug:blue";
|
||||||
|
+ gpios = <&gpio0 2 0>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ orange {
|
||||||
|
+ label = "pogoplug:orange";
|
||||||
|
+ gpios = <&gpio1 16 1>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ green {
|
||||||
|
+ label = "pogoplug:green";
|
||||||
|
+ gpios = <&gpio1 17 1>;
|
||||||
|
+ default-state = "keep";
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&uart0 {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pinctrl_uart0>;
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+&nandc {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pinctrl_nand>;
|
||||||
|
+
|
||||||
|
+ nand@0 {
|
||||||
|
+ reg = <0>;
|
||||||
|
+ #address-cells = <1>;
|
||||||
|
+ #size-cells = <1>;
|
||||||
|
+ nand-ecc-mode = "soft";
|
||||||
|
+ nand-ecc-algo = "hamming";
|
||||||
|
+
|
||||||
|
+ partition@0 {
|
||||||
|
+ label = "boot";
|
||||||
|
+ reg = <0x00000000 0x00e00000>;
|
||||||
|
+ read-only;
|
||||||
|
+ };
|
||||||
|
+
|
||||||
|
+ partition@e00000 {
|
||||||
|
+ label = "ubi";
|
||||||
|
+ reg = <0x00e00000 0x07200000>;
|
||||||
|
+ };
|
||||||
|
+ };
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+ða {
|
||||||
|
+ status = "okay";
|
||||||
|
+
|
||||||
|
+ pinctrl-names = "default";
|
||||||
|
+ pinctrl-0 = <&pinctrl_etha_mdio>;
|
||||||
|
+};
|
||||||
|
--- a/arch/arm/boot/dts/wd-mbwe.dts
|
||||||
|
+++ /dev/null
|
||||||
|
@@ -1,112 +0,0 @@
|
||||||
|
-/*
|
||||||
|
- * wd-mbwe.dtsi - Device tree file for Western Digital My Book World Edition
|
||||||
|
- *
|
||||||
|
- * Copyright (C) 2016 Neil Armstrong <narmstrong@baylibre.com>
|
||||||
|
- *
|
||||||
|
- * Licensed under GPLv2 or later
|
||||||
|
- */
|
||||||
|
-
|
||||||
|
-/dts-v1/;
|
||||||
|
-#include "ox810se.dtsi"
|
||||||
|
-
|
||||||
|
-/ {
|
||||||
|
- model = "Western Digital My Book World Edition";
|
||||||
|
-
|
||||||
|
- compatible = "wd,mbwe", "oxsemi,ox810se";
|
||||||
|
-
|
||||||
|
- chosen {
|
||||||
|
- bootargs = "console=ttyS1,115200n8 earlyprintk=serial";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- memory {
|
||||||
|
- /* 128Mbytes DDR */
|
||||||
|
- reg = <0x48000000 0x8000000>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- aliases {
|
||||||
|
- serial1 = &uart1;
|
||||||
|
- gpio0 = &gpio0;
|
||||||
|
- gpio1 = &gpio1;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- gpio-keys-polled {
|
||||||
|
- compatible = "gpio-keys-polled";
|
||||||
|
- #address-cells = <1>;
|
||||||
|
- #size-cells = <0>;
|
||||||
|
- poll-interval = <100>;
|
||||||
|
-
|
||||||
|
- power {
|
||||||
|
- label = "power";
|
||||||
|
- gpios = <&gpio0 0 1>;
|
||||||
|
- linux,code = <0x198>;
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- recovery {
|
||||||
|
- label = "recovery";
|
||||||
|
- gpios = <&gpio0 4 1>;
|
||||||
|
- linux,code = <0xab>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- leds {
|
||||||
|
- compatible = "gpio-leds";
|
||||||
|
-
|
||||||
|
- a0 {
|
||||||
|
- label = "activity0";
|
||||||
|
- gpios = <&gpio0 25 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- a1 {
|
||||||
|
- label = "activity1";
|
||||||
|
- gpios = <&gpio0 26 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- a2 {
|
||||||
|
- label = "activity2";
|
||||||
|
- gpios = <&gpio0 5 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- a3 {
|
||||||
|
- label = "activity3";
|
||||||
|
- gpios = <&gpio0 6 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- a4 {
|
||||||
|
- label = "activity4";
|
||||||
|
- gpios = <&gpio0 7 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- a5 {
|
||||||
|
- label = "activity5";
|
||||||
|
- gpios = <&gpio1 2 0>;
|
||||||
|
- default-state = "keep";
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-
|
||||||
|
- i2c-gpio {
|
||||||
|
- compatible = "i2c-gpio";
|
||||||
|
- gpios = <&gpio0 3 0 /* sda */
|
||||||
|
- &gpio0 2 0 /* scl */
|
||||||
|
- >;
|
||||||
|
- i2c-gpio,delay-us = <2>; /* ~100 kHz */
|
||||||
|
- #address-cells = <1>;
|
||||||
|
- #size-cells = <0>;
|
||||||
|
-
|
||||||
|
- rtc0: rtc@48 {
|
||||||
|
- compatible = "st,m41t00";
|
||||||
|
- reg = <0x68>;
|
||||||
|
- };
|
||||||
|
- };
|
||||||
|
-};
|
||||||
|
-
|
||||||
|
-&uart1 {
|
||||||
|
- status = "okay";
|
||||||
|
-
|
||||||
|
- pinctrl-names = "default";
|
||||||
|
- pinctrl-0 = <&pinctrl_uart1>;
|
||||||
|
-};
|
||||||
|
|
|
@ -19,11 +19,9 @@ Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
|
||||||
MAINTAINERS | 4 +---
|
MAINTAINERS | 4 +---
|
||||||
1 file changed, 1 insertion(+), 3 deletions(-)
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
diff --git a/MAINTAINERS b/MAINTAINERS
|
|
||||||
index 546beb6b0176..6ecdaed0a3ef 100644
|
|
||||||
--- a/MAINTAINERS
|
--- a/MAINTAINERS
|
||||||
+++ b/MAINTAINERS
|
+++ b/MAINTAINERS
|
||||||
@@ -1677,9 +1677,7 @@ L: linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
|
@@ -1677,9 +1677,7 @@ L: linux-arm-kernel@lists.infradead.org
|
||||||
L: linux-oxnas@lists.tuxfamily.org (moderated for non-subscribers)
|
L: linux-oxnas@lists.tuxfamily.org (moderated for non-subscribers)
|
||||||
S: Maintained
|
S: Maintained
|
||||||
F: arch/arm/mach-oxnas/
|
F: arch/arm/mach-oxnas/
|
||||||
|
@ -34,6 +32,3 @@ index 546beb6b0176..6ecdaed0a3ef 100644
|
||||||
N: oxnas
|
N: oxnas
|
||||||
|
|
||||||
ARM/PALM TREO SUPPORT
|
ARM/PALM TREO SUPPORT
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
|
|
@ -13,9 +13,6 @@ Signed-off-by: Arnd Bergmann <arnd@arndb.de>
|
||||||
1 file changed, 93 insertions(+)
|
1 file changed, 93 insertions(+)
|
||||||
create mode 100644 arch/arm/configs/oxnas_v6_defconfig
|
create mode 100644 arch/arm/configs/oxnas_v6_defconfig
|
||||||
|
|
||||||
diff --git a/arch/arm/configs/oxnas_v6_defconfig b/arch/arm/configs/oxnas_v6_defconfig
|
|
||||||
new file mode 100644
|
|
||||||
index 000000000000..f6ba32c9d173
|
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/arch/arm/configs/oxnas_v6_defconfig
|
+++ b/arch/arm/configs/oxnas_v6_defconfig
|
||||||
@@ -0,0 +1,93 @@
|
@@ -0,0 +1,93 @@
|
||||||
|
@ -112,6 +109,3 @@ index 000000000000..f6ba32c9d173
|
||||||
+CONFIG_NLS_UTF8=y
|
+CONFIG_NLS_UTF8=y
|
||||||
+CONFIG_PRINTK_TIME=y
|
+CONFIG_PRINTK_TIME=y
|
||||||
+CONFIG_MAGIC_SYSRQ=y
|
+CONFIG_MAGIC_SYSRQ=y
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
|
|
@ -9,8 +9,6 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
|
||||||
include/dt-bindings/clock/oxsemi,ox820.h | 32 +++++++++++-------------
|
include/dt-bindings/clock/oxsemi,ox820.h | 32 +++++++++++-------------
|
||||||
2 files changed, 14 insertions(+), 20 deletions(-)
|
2 files changed, 14 insertions(+), 20 deletions(-)
|
||||||
|
|
||||||
diff --git a/drivers/clk/clk-oxnas.c b/drivers/clk/clk-oxnas.c
|
|
||||||
index e51e0023fc6e..da6af71649de 100644
|
|
||||||
--- a/drivers/clk/clk-oxnas.c
|
--- a/drivers/clk/clk-oxnas.c
|
||||||
+++ b/drivers/clk/clk-oxnas.c
|
+++ b/drivers/clk/clk-oxnas.c
|
||||||
@@ -40,8 +40,6 @@ struct oxnas_stdclk_data {
|
@@ -40,8 +40,6 @@ struct oxnas_stdclk_data {
|
||||||
|
@ -22,8 +20,6 @@ index e51e0023fc6e..da6af71649de 100644
|
||||||
};
|
};
|
||||||
|
|
||||||
/* Regmap offsets */
|
/* Regmap offsets */
|
||||||
diff --git a/include/dt-bindings/clock/oxsemi,ox820.h b/include/dt-bindings/clock/oxsemi,ox820.h
|
|
||||||
index f661ecc8d760..35b44ca1b104 100644
|
|
||||||
--- a/include/dt-bindings/clock/oxsemi,ox820.h
|
--- a/include/dt-bindings/clock/oxsemi,ox820.h
|
||||||
+++ b/include/dt-bindings/clock/oxsemi,ox820.h
|
+++ b/include/dt-bindings/clock/oxsemi,ox820.h
|
||||||
@@ -17,24 +17,20 @@
|
@@ -17,24 +17,20 @@
|
||||||
|
@ -65,6 +61,3 @@ index f661ecc8d760..35b44ca1b104 100644
|
||||||
+#define CLK_820_USBDEV 13
|
+#define CLK_820_USBDEV 13
|
||||||
|
|
||||||
#endif /* DT_CLOCK_OXSEMI_OX820_H */
|
#endif /* DT_CLOCK_OXSEMI_OX820_H */
|
||||||
--
|
|
||||||
2.17.1
|
|
||||||
|
|
||||||
|
|
|
@ -43,7 +43,7 @@
|
||||||
/* Standard regmap gate clocks */
|
/* Standard regmap gate clocks */
|
||||||
struct clk_oxnas_gate {
|
struct clk_oxnas_gate {
|
||||||
struct clk_hw hw;
|
struct clk_hw hw;
|
||||||
@@ -49,6 +70,135 @@ struct oxnas_stdclk_data {
|
@@ -47,6 +70,135 @@ struct oxnas_stdclk_data {
|
||||||
#define CLK_SET_REGOFFSET 0x2c
|
#define CLK_SET_REGOFFSET 0x2c
|
||||||
#define CLK_CLR_REGOFFSET 0x30
|
#define CLK_CLR_REGOFFSET 0x30
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@
|
||||||
static inline struct clk_oxnas_gate *to_clk_oxnas_gate(struct clk_hw *hw)
|
static inline struct clk_oxnas_gate *to_clk_oxnas_gate(struct clk_hw *hw)
|
||||||
{
|
{
|
||||||
return container_of(hw, struct clk_oxnas_gate, hw);
|
return container_of(hw, struct clk_oxnas_gate, hw);
|
||||||
@@ -262,3 +412,42 @@ static struct platform_driver oxnas_stdc
|
@@ -260,3 +412,42 @@ static struct platform_driver oxnas_stdc
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
builtin_platform_driver(oxnas_stdclk_driver);
|
builtin_platform_driver(oxnas_stdclk_driver);
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
--- a/arch/arm/boot/dts/ox820.dtsi
|
--- a/arch/arm/boot/dts/ox820.dtsi
|
||||||
+++ b/arch/arm/boot/dts/ox820.dtsi
|
+++ b/arch/arm/boot/dts/ox820.dtsi
|
||||||
@@ -302,6 +302,83 @@
|
@@ -307,6 +307,83 @@
|
||||||
reg = <0x1000 0x1000>,
|
reg = <0x1000 0x1000>,
|
||||||
<0x100 0x500>;
|
<0x100 0x500>;
|
||||||
};
|
};
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
obj-$(CONFIG_PATA_ALI) += pata_ali.o
|
obj-$(CONFIG_PATA_ALI) += pata_ali.o
|
||||||
--- a/arch/arm/boot/dts/ox820.dtsi
|
--- a/arch/arm/boot/dts/ox820.dtsi
|
||||||
+++ b/arch/arm/boot/dts/ox820.dtsi
|
+++ b/arch/arm/boot/dts/ox820.dtsi
|
||||||
@@ -380,5 +380,20 @@
|
@@ -385,5 +385,20 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
--- linux-4.14.44.orig/arch/arm/mach-oxnas/Kconfig
|
--- a/arch/arm/mach-oxnas/Kconfig
|
||||||
+++ linux-4.14.44/arch/arm/mach-oxnas/Kconfig
|
+++ b/arch/arm/mach-oxnas/Kconfig
|
||||||
@@ -1,6 +1,7 @@
|
@@ -1,6 +1,7 @@
|
||||||
menuconfig ARCH_OXNAS
|
menuconfig ARCH_OXNAS
|
||||||
bool "Oxford Semiconductor OXNAS Family SoCs"
|
bool "Oxford Semiconductor OXNAS Family SoCs"
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o
|
obj-$(CONFIG_USB_ISP116X_HCD) += isp116x-hcd.o
|
||||||
--- a/arch/arm/boot/dts/ox820.dtsi
|
--- a/arch/arm/boot/dts/ox820.dtsi
|
||||||
+++ b/arch/arm/boot/dts/ox820.dtsi
|
+++ b/arch/arm/boot/dts/ox820.dtsi
|
||||||
@@ -120,6 +120,22 @@
|
@@ -105,6 +105,22 @@
|
||||||
status = "disabled";
|
status = "disabled";
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -157,7 +157,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||||
}
|
}
|
||||||
--- a/init/main.c
|
--- a/init/main.c
|
||||||
+++ b/init/main.c
|
+++ b/init/main.c
|
||||||
@@ -96,6 +96,10 @@
|
@@ -95,6 +95,10 @@
|
||||||
#include <asm/sections.h>
|
#include <asm/sections.h>
|
||||||
#include <asm/cacheflush.h>
|
#include <asm/cacheflush.h>
|
||||||
|
|
||||||
|
@ -168,7 +168,7 @@ Signed-off-by: Adrian Panella <ianchi74@outlook.com>
|
||||||
static int kernel_init(void *);
|
static int kernel_init(void *);
|
||||||
|
|
||||||
extern void init_IRQ(void);
|
extern void init_IRQ(void);
|
||||||
@@ -575,6 +579,18 @@ asmlinkage __visible void __init start_k
|
@@ -574,6 +578,18 @@ asmlinkage __visible void __init start_k
|
||||||
page_alloc_init();
|
page_alloc_init();
|
||||||
|
|
||||||
pr_notice("Kernel command line: %s\n", boot_command_line);
|
pr_notice("Kernel command line: %s\n", boot_command_line);
|
||||||
|
|
|
@ -15,7 +15,7 @@
|
||||||
/* initialize internal qc */
|
/* initialize internal qc */
|
||||||
|
|
||||||
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
/* XXX: Tag 0 is used for drivers with legacy EH as some
|
||||||
@@ -5096,6 +5104,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
@@ -5127,6 +5135,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
|
||||||
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
|
if (unlikely(ap->pflags & ATA_PFLAG_FROZEN))
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
@ -25,7 +25,7 @@
|
||||||
/* libsas case */
|
/* libsas case */
|
||||||
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
if (ap->flags & ATA_FLAG_SAS_HOST) {
|
||||||
tag = ata_sas_allocate_tag(ap);
|
tag = ata_sas_allocate_tag(ap);
|
||||||
@@ -5141,6 +5152,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
@@ -5172,6 +5183,8 @@ void ata_qc_free(struct ata_queued_cmd *
|
||||||
qc->tag = ATA_TAG_POISON;
|
qc->tag = ATA_TAG_POISON;
|
||||||
if (ap->flags & ATA_FLAG_SAS_HOST)
|
if (ap->flags & ATA_FLAG_SAS_HOST)
|
||||||
ata_sas_free_tag(tag, ap);
|
ata_sas_free_tag(tag, ap);
|
||||||
|
|
Loading…
Reference in a new issue