kernel/4.3: update to version 4.3.3

Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de

SVN-Revision: 48224
v19.07.3_mercusys_ac12_duma
Hauke Mehrtens 8 years ago
parent 93b50ade93
commit cdb83aaf5f

@ -4,12 +4,12 @@ LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .23
LINUX_VERSION-4.1 = .15
LINUX_VERSION-4.3 =
LINUX_VERSION-4.3 = .3
LINUX_VERSION-4.4 =
LINUX_KERNEL_MD5SUM-3.18.23 = dc6d265ab38716be3676ac294b481ad8
LINUX_KERNEL_MD5SUM-4.1.15 = b227333912b161c96ff3e30f5041e1c0
LINUX_KERNEL_MD5SUM-4.3 = 58b35794eee3b6d52ce7be39357801e7
LINUX_KERNEL_MD5SUM-4.3.3 = f3068333fa524ff98914cf751d0b5710
LINUX_KERNEL_MD5SUM-4.4 = 9a78fa2eb6c68ca5a40ed5af08142599
ifdef KERNEL_PATCHVER

@ -18,11 +18,9 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/Kconfig | 2 --
1 file changed, 2 deletions(-)
diff --git a/arch/arc/Kconfig b/arch/arc/Kconfig
index cf96ef2..f0c6d4c 100644
--- a/arch/arc/Kconfig
+++ b/arch/arc/Kconfig
@@ -11,8 +11,6 @@ config ARC
@@ -12,8 +12,6 @@ config ARC
select BUILDTIME_EXTABLE_SORT
select COMMON_CLK
select CLONE_BACKWARDS
@ -31,6 +29,3 @@ index cf96ef2..f0c6d4c 100644
select GENERIC_ATOMIC64
select GENERIC_CLOCKEVENTS
select GENERIC_FIND_FIRST_BIT
--
2.4.3

@ -19,8 +19,6 @@ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/kernel/vmlinux.lds.S | 13 +++++++++++++
3 files changed, 26 insertions(+), 1 deletion(-)
diff --git a/arch/arc/kernel/head.S b/arch/arc/kernel/head.S
index 689dd86..51154ae 100644
--- a/arch/arc/kernel/head.S
+++ b/arch/arc/kernel/head.S
@@ -49,6 +49,16 @@
@ -38,13 +36,11 @@ index 689dd86..51154ae 100644
+END(__image_dtb)
+
.section .init.text, "ax",@progbits
;----------------------------------------------------------------
diff --git a/arch/arc/kernel/setup.c b/arch/arc/kernel/setup.c
index c33e77c..96fbfd0 100644
.type stext, @function
.globl stext
--- a/arch/arc/kernel/setup.c
+++ b/arch/arc/kernel/setup.c
@@ -370,6 +370,8 @@ static inline int is_kernel(unsigned long addr)
@@ -374,6 +374,8 @@ static inline int is_kernel(unsigned lon
return 0;
}
@ -53,7 +49,7 @@ index c33e77c..96fbfd0 100644
void __init setup_arch(char **cmdline_p)
{
#ifdef CONFIG_ARC_UBOOT_SUPPORT
@@ -383,7 +385,7 @@ void __init setup_arch(char **cmdline_p)
@@ -387,7 +389,7 @@ void __init setup_arch(char **cmdline_p)
#endif
{
/* No, so try the embedded one */
@ -62,8 +58,6 @@ index c33e77c..96fbfd0 100644
if (!machine_desc)
panic("Embedded DT invalid\n");
diff --git a/arch/arc/kernel/vmlinux.lds.S b/arch/arc/kernel/vmlinux.lds.S
index dd35bde..f309104 100644
--- a/arch/arc/kernel/vmlinux.lds.S
+++ b/arch/arc/kernel/vmlinux.lds.S
@@ -30,6 +30,19 @@ SECTIONS
@ -86,6 +80,3 @@ index dd35bde..f309104 100644
_int_vec_base_lds = .;
.vector : {
*(.vector)
--
2.4.3

@ -1,59 +0,0 @@
From 63243a4da7d0dfa19dcacd0a529782eeb2f86f92 Mon Sep 17 00:00:00 2001
From: Simran Rai <ssimran@broadcom.com>
Date: Mon, 19 Oct 2015 15:27:19 -0700
Subject: [PATCH] clk: iproc: Fix PLL output frequency calculation
This patch affects the clocks that use fractional ndivider in their
PLL output frequency calculation. Instead of 2^20 divide factor, the
clock's ndiv integer shift was used. Fixed the bug by replacing ndiv
integer shift with 2^20 factor.
Signed-off-by: Simran Rai <ssimran@broadcom.com>
Signed-off-by: Ray Jui <rjui@broadcom.com>
Reviewed-by: Scott Branden <sbranden@broadcom.com>
Fixes: 5fe225c105fd ("clk: iproc: add initial common clock support")
Cc: <stable@vger.kernel.org> # v4.1+
Signed-off-by: Michael Turquette <mturquette@baylibre.com>
---
drivers/clk/bcm/clk-iproc-pll.c | 13 +++++--------
1 file changed, 5 insertions(+), 8 deletions(-)
--- a/drivers/clk/bcm/clk-iproc-pll.c
+++ b/drivers/clk/bcm/clk-iproc-pll.c
@@ -345,8 +345,8 @@ static unsigned long iproc_pll_recalc_ra
struct iproc_pll *pll = clk->pll;
const struct iproc_pll_ctrl *ctrl = pll->ctrl;
u32 val;
- u64 ndiv;
- unsigned int ndiv_int, ndiv_frac, pdiv;
+ u64 ndiv, ndiv_int, ndiv_frac;
+ unsigned int pdiv;
if (parent_rate == 0)
return 0;
@@ -366,22 +366,19 @@ static unsigned long iproc_pll_recalc_ra
val = readl(pll->pll_base + ctrl->ndiv_int.offset);
ndiv_int = (val >> ctrl->ndiv_int.shift) &
bit_mask(ctrl->ndiv_int.width);
- ndiv = (u64)ndiv_int << ctrl->ndiv_int.shift;
+ ndiv = ndiv_int << 20;
if (ctrl->flags & IPROC_CLK_PLL_HAS_NDIV_FRAC) {
val = readl(pll->pll_base + ctrl->ndiv_frac.offset);
ndiv_frac = (val >> ctrl->ndiv_frac.shift) &
bit_mask(ctrl->ndiv_frac.width);
-
- if (ndiv_frac != 0)
- ndiv = ((u64)ndiv_int << ctrl->ndiv_int.shift) |
- ndiv_frac;
+ ndiv += ndiv_frac;
}
val = readl(pll->pll_base + ctrl->pdiv.offset);
pdiv = (val >> ctrl->pdiv.shift) & bit_mask(ctrl->pdiv.width);
- clk->rate = (ndiv * parent_rate) >> ctrl->ndiv_int.shift;
+ clk->rate = (ndiv * parent_rate) >> 20;
if (pdiv == 0)
clk->rate *= 2;

@ -74,7 +74,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
/*
* Set the run bit and wait for the host to be running.
*/
@@ -557,10 +590,25 @@ int xhci_init(struct usb_hcd *hcd)
@@ -567,10 +600,25 @@ int xhci_init(struct usb_hcd *hcd)
static int xhci_run_finished(struct xhci_hcd *xhci)
{
@ -103,7 +103,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
xhci->shared_hcd->state = HC_STATE_RUNNING;
xhci->cmd_ring_state = CMD_RING_STATE_RUNNING;
@@ -570,6 +618,9 @@ static int xhci_run_finished(struct xhci
@@ -580,6 +628,9 @@ static int xhci_run_finished(struct xhci
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"Finished xhci_run for USB3 roothub");
return 0;

@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -2323,7 +2323,7 @@ static void tpacket_destruct_skb(struct
@@ -2329,7 +2329,7 @@ static void tpacket_destruct_skb(struct
static bool ll_header_truncated(const struct net_device *dev, int len)
{
/* net device doesn't like empty head */

@ -20,7 +20,7 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
--- a/drivers/mtd/bcm47xxpart.c
+++ b/drivers/mtd/bcm47xxpart.c
@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -118,8 +118,8 @@ static int bcm47xxpart_parse(struct mtd_
/* Parse block by block looking for magics */
for (offset = 0; offset <= master->size - blocksize;
offset += blocksize) {

@ -14,11 +14,9 @@ Signed-off-by: Rafał Miłecki <zajec5@gmail.com>
drivers/mtd/bcm47xxpart.c | 38 ++++++++++++++++++++++----------------
1 file changed, 22 insertions(+), 16 deletions(-)
diff --git a/drivers/mtd/bcm47xxpart.c b/drivers/mtd/bcm47xxpart.c
index 4450e74..1ab3451 100644
--- a/drivers/mtd/bcm47xxpart.c
+++ b/drivers/mtd/bcm47xxpart.c
@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_part_name(struct mtd_info *master,
@@ -66,11 +66,13 @@ static const char *bcm47xxpart_trx_data_
{
uint32_t buf;
size_t bytes_read;
@ -36,7 +34,7 @@ index 4450e74..1ab3451 100644
goto out_default;
}
@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -95,6 +97,7 @@ static int bcm47xxpart_parse(struct mtd_
int trx_part = -1;
int last_trx_part = -1;
int possible_nvram_sizes[] = { 0x8000, 0xF000, 0x10000, };
@ -44,7 +42,7 @@ index 4450e74..1ab3451 100644
/*
* Some really old flashes (like AT45DB*) had smaller erasesize-s, but
@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -128,10 +131,11 @@ static int bcm47xxpart_parse(struct mtd_
}
/* Read beginning of the block */
@ -60,7 +58,7 @@ index 4450e74..1ab3451 100644
continue;
}
@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -254,10 +258,11 @@ static int bcm47xxpart_parse(struct mtd_
}
/* Read middle of the block */
@ -76,7 +74,7 @@ index 4450e74..1ab3451 100644
continue;
}
@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_info *master,
@@ -277,10 +282,11 @@ static int bcm47xxpart_parse(struct mtd_
}
offset = master->size - possible_nvram_sizes[i];
@ -92,6 +90,3 @@ index 4450e74..1ab3451 100644
continue;
}
--
1.8.4.5

@ -1,114 +0,0 @@
From 128524b9db3e4f4245226852bee771bd03db75be Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Petr=20=C5=A0tetiar?= <ynezz@true.cz>
Date: Tue, 3 Nov 2015 11:01:42 +0100
Subject: [PATCH 1/2] USB: qcserial: Add support for Quectel EC20 Mini PCIe
module
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
It seems like this device has same vendor and product IDs as G2K
devices, but it has different number of interfaces(4 vs 5) and also
different interface layout which makes it currently unusable:
usbcore: registered new interface driver qcserial
usbserial: USB Serial support registered for Qualcomm USB modem
usb 2-1.2: unknown number of interfaces: 5
lsusb output:
Bus 002 Device 003: ID 05c6:9215 Qualcomm, Inc. Acer Gobi 2000 Wireless
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 (Defined at Interface level)
bDeviceSubClass 0
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x05c6 Qualcomm, Inc.
idProduct 0x9215 Acer Gobi 2000 Wireless Modem
bcdDevice 2.32
iManufacturer 1 Quectel
iProduct 2 Quectel LTE Module
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 209
bNumInterfaces 5
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xa0
(Bus Powered)
Remote Wakeup
MaxPower 500mA
Signed-off-by: Petr Štetiar <ynezz@true.cz>
---
drivers/usb/serial/qcserial.c | 39 +++++++++++++++++++++++++++++++++++++++
1 file changed, 39 insertions(+)
--- a/drivers/usb/serial/qcserial.c
+++ b/drivers/usb/serial/qcserial.c
@@ -22,6 +22,8 @@
#define DRIVER_AUTHOR "Qualcomm Inc"
#define DRIVER_DESC "Qualcomm USB Serial driver"
+#define QUECTEL_EC20_IDPRODUCT 0x9215
+
/* standard device layouts supported by this driver */
enum qcserial_layouts {
QCSERIAL_G2K = 0, /* Gobi 2000 */
@@ -167,6 +169,38 @@ static const struct usb_device_id id_tab
};
MODULE_DEVICE_TABLE(usb, id_table);
+static int handle_quectel_ec20(struct device *dev, int ifnum)
+{
+ int altsetting = 0;
+
+ /*
+ * Quectel EC20 Mini PCIe LTE module layout:
+ * 0: DM/DIAG (use libqcdm from ModemManager for communication)
+ * 1: NMEA
+ * 2: AT-capable modem port
+ * 3: Modem interface
+ * 4: NDIS
+ */
+ switch (ifnum) {
+ case 0:
+ dev_dbg(dev, "Quectel EC20 DM/DIAG interface found\n");
+ break;
+ case 1:
+ dev_dbg(dev, "Quectel EC20 NMEA GPS interface found\n");
+ break;
+ case 2:
+ case 3:
+ dev_dbg(dev, "Quectel EC20 Modem port found\n");
+ break;
+ case 4:
+ /* Don't claim the QMI/net interface */
+ altsetting = -1;
+ break;
+ }
+
+ return altsetting;
+}
+
static int qcprobe(struct usb_serial *serial, const struct usb_device_id *id)
{
struct usb_host_interface *intf = serial->interface->cur_altsetting;
@@ -235,6 +269,11 @@ static int qcprobe(struct usb_serial *se
altsetting = -1;
break;
case QCSERIAL_G2K:
+ if (nintf == 5 && id->idProduct == QUECTEL_EC20_IDPRODUCT) {
+ altsetting = handle_quectel_ec20(dev, ifnum);
+ goto done;
+ }
+
/*
* Gobi 2K+ USB layout:
* 0: QMI/net

@ -1,58 +0,0 @@
From patchwork Tue Nov 3 23:59:28 2015
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Subject: net: Fix prefsrc lookups
From: David Ahern <dsa@cumulusnetworks.com>
X-Patchwork-Id: 539645
Message-Id: <1446595168-27323-1-git-send-email-dsa@cumulusnetworks.com>
To: netdev@vger.kernel.org
Cc: vladi@aresgate.net, David Ahern <dsa@cumulusnetworks.com>
Date: Tue, 3 Nov 2015 15:59:28 -0800
A bug report (https://bugzilla.kernel.org/show_bug.cgi?id=107071) noted
that the follwoing ip command is failing with v4.3:
$ ip route add 10.248.5.0/24 dev bond0.250 table vlan_250 src 10.248.5.154
RTNETLINK answers: Invalid argument
021dd3b8a142d changed the lookup of the given preferred source address to
use the table id passed in, but this assumes the local entries are in the
given table which is not necessarily true for non-VRF use cases. When
validating the preferred source fallback to the local table on failure.
Fixes: 021dd3b8a142d ("net: Add routes to the table associated with the device")
Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
---
This is needed in v4.3.
net/ipv4/fib_semantics.c | 13 ++++++++++---
1 file changed, 10 insertions(+), 3 deletions(-)
--- a/net/ipv4/fib_semantics.c
+++ b/net/ipv4/fib_semantics.c
@@ -864,14 +864,21 @@ static bool fib_valid_prefsrc(struct fib
if (cfg->fc_type != RTN_LOCAL || !cfg->fc_dst ||
fib_prefsrc != cfg->fc_dst) {
u32 tb_id = cfg->fc_table;
+ int rc;
if (tb_id == RT_TABLE_MAIN)
tb_id = RT_TABLE_LOCAL;
- if (inet_addr_type_table(cfg->fc_nlinfo.nl_net,
- fib_prefsrc, tb_id) != RTN_LOCAL) {
- return false;
+ rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net,
+ fib_prefsrc, tb_id);
+
+ if (rc != RTN_LOCAL && tb_id != RT_TABLE_LOCAL) {
+ rc = inet_addr_type_table(cfg->fc_nlinfo.nl_net,
+ fib_prefsrc, RT_TABLE_LOCAL);
}
+
+ if (rc != RTN_LOCAL)
+ return false;
}
return true;
}

@ -48,7 +48,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -822,6 +822,7 @@ static const struct usb_device_id produc
@@ -823,6 +823,7 @@ static const struct usb_device_id produc
{QMI_GOBI_DEVICE(0x05c6, 0x9245)}, /* Samsung Gobi 2000 Modem device (VL176) */
{QMI_GOBI_DEVICE(0x03f0, 0x251d)}, /* HP Gobi 2000 Modem device (VP412) */
{QMI_GOBI_DEVICE(0x05c6, 0x9215)}, /* Acer Gobi 2000 Modem device (VP413) */
@ -56,7 +56,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
{QMI_GOBI_DEVICE(0x05c6, 0x9265)}, /* Asus Gobi 2000 Modem device (VR305) */
{QMI_GOBI_DEVICE(0x05c6, 0x9235)}, /* Top Global Gobi 2000 Modem device (VR306) */
{QMI_GOBI_DEVICE(0x05c6, 0x9275)}, /* iRex Technologies Gobi 2000 Modem device (VR307) */
@@ -853,10 +854,24 @@ static const struct usb_device_id produc
@@ -854,10 +855,24 @@ static const struct usb_device_id produc
};
MODULE_DEVICE_TABLE(usb, products);
@ -81,7 +81,7 @@ Signed-off-by: Petr Štetiar <ynezz@true.cz>
/* Workaround to enable dynamic IDs. This disables usbnet
* blacklisting functionality. Which, if required, can be
@@ -868,6 +883,12 @@ static int qmi_wwan_probe(struct usb_int
@@ -869,6 +884,12 @@ static int qmi_wwan_probe(struct usb_int
id->driver_info = (unsigned long)&qmi_wwan_info;
}

@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
#define PACKET_FANOUT_LB 1
--- a/net/packet/af_packet.c
+++ b/net/packet/af_packet.c
@@ -1750,6 +1750,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1764,6 +1764,7 @@ static int packet_rcv_spkt(struct sk_buf
{
struct sock *sk;
struct sockaddr_pkt *spkt;
@ -34,7 +34,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/*
* When we registered the protocol we saved the socket in the data
@@ -1757,6 +1758,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1771,6 +1772,7 @@ static int packet_rcv_spkt(struct sk_buf
*/
sk = pt->af_packet_priv;
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
/*
* Yank back the headers [hope the device set this
@@ -1769,7 +1771,7 @@ static int packet_rcv_spkt(struct sk_buf
@@ -1783,7 +1785,7 @@ static int packet_rcv_spkt(struct sk_buf
* so that this procedure is noop.
*/
@ -51,7 +51,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
goto out;
if (!net_eq(dev_net(dev), sock_net(sk)))
@@ -1976,12 +1978,12 @@ static int packet_rcv(struct sk_buff *sk
@@ -1982,12 +1984,12 @@ static int packet_rcv(struct sk_buff *sk
int skb_len = skb->len;
unsigned int snaplen, res;
@ -67,7 +67,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -2101,12 +2103,12 @@ static int tpacket_rcv(struct sk_buff *s
@@ -2107,12 +2109,12 @@ static int tpacket_rcv(struct sk_buff *s
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h2)) != 32);
BUILD_BUG_ON(TPACKET_ALIGN(sizeof(*h.h3)) != 48);
@ -83,7 +83,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -3069,6 +3071,7 @@ static int packet_create(struct net *net
@@ -3089,6 +3091,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@ -91,7 +91,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
@@ -3684,6 +3687,16 @@ packet_setsockopt(struct socket *sock, i
@@ -3704,6 +3707,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
@ -108,7 +108,7 @@ Signed-off-by: Felix Fietkau <nbd@openwrt.org>
default:
return -ENOPROTOOPT;
}
@@ -3736,6 +3749,13 @@ static int packet_getsockopt(struct sock
@@ -3756,6 +3769,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;

@ -32,7 +32,7 @@
{
--- a/include/net/sch_generic.h
+++ b/include/net/sch_generic.h
@@ -341,6 +341,7 @@ extern struct Qdisc_ops noop_qdisc_ops;
@@ -344,6 +344,7 @@ extern struct Qdisc_ops noop_qdisc_ops;
extern struct Qdisc_ops pfifo_fast_ops;
extern struct Qdisc_ops mq_qdisc_ops;
extern struct Qdisc_ops noqueue_qdisc_ops;

@ -1,6 +1,6 @@
--- a/net/sched/sch_api.c
+++ b/net/sched/sch_api.c
@@ -1936,7 +1936,7 @@ static int __init pktsched_init(void)
@@ -1945,7 +1945,7 @@ static int __init pktsched_init(void)
return err;
}

@ -143,7 +143,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
@@ -1886,6 +1903,11 @@ int ip6_route_info_create(struct fib6_co
@@ -1902,6 +1919,11 @@ int ip6_route_info_create(struct fib6_co
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
@ -155,7 +155,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case RTN_THROW:
case RTN_UNREACHABLE:
default:
@@ -2488,6 +2510,17 @@ static int ip6_pkt_prohibit_out(struct s
@@ -2504,6 +2526,17 @@ static int ip6_pkt_prohibit_out(struct s
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
@ -173,7 +173,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
/*
* Allocate a dst for local (unicast / anycast) address.
*/
@@ -2728,7 +2761,8 @@ static int rtm_to_fib6_config(struct sk_
@@ -2744,7 +2777,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
@ -183,7 +183,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
@@ -3084,6 +3118,9 @@ static int rt6_fill_node(struct net *net
@@ -3100,6 +3134,9 @@ static int rt6_fill_node(struct net *net
case -EACCES:
rtm->rtm_type = RTN_PROHIBIT;
break;
@ -193,7 +193,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
case -EAGAIN:
rtm->rtm_type = RTN_THROW;
break;
@@ -3352,6 +3389,8 @@ static int ip6_route_dev_notify(struct n
@@ -3368,6 +3405,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
@ -202,7 +202,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
@@ -3568,6 +3607,17 @@ static int __net_init ip6_route_net_init
@@ -3584,6 +3623,17 @@ static int __net_init ip6_route_net_init
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
@ -220,7 +220,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
#endif
net->ipv6.sysctl.flush_delay = 0;
@@ -3586,6 +3636,8 @@ out:
@@ -3602,6 +3652,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
@ -229,7 +229,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
@@ -3603,6 +3655,7 @@ static void __net_exit ip6_route_net_exi
@@ -3619,6 +3671,7 @@ static void __net_exit ip6_route_net_exi
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
@ -237,7 +237,7 @@ Signed-off-by: Jonas Gorski <jogo@openwrt.org>
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
}
@@ -3700,6 +3753,9 @@ int __init ip6_route_init(void)
@@ -3716,6 +3769,9 @@ int __init ip6_route_init(void)
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);

@ -13,10 +13,8 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 2 ++
1 file changed, 2 insertions(+)
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:37.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -260,6 +260,8 @@
swbst_reg: swbst {
regulator-min-microvolt = <5000000>;

@ -9,10 +9,8 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:43:32.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -247,7 +247,7 @@
&ldb {
status = "okay";
@ -22,10 +20,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
fsl,data-mapping = "spwg";
fsl,data-width = <18>;
status = "okay";
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:39:44.855158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:32.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -338,7 +338,7 @@
&ldb {
status = "okay";

@ -20,10 +20,8 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
arch/arm/boot/dts/imx6qdl-gw54xx.dtsi | 7 +++++++
3 files changed, 21 insertions(+)
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:43:32.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
@@ -151,6 +151,13 @@
status = "okay";
};
@ -38,10 +36,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
&fec {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet>;
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:39:44.867158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:43:32.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -152,6 +152,13 @@
status = "okay";
};
@ -56,10 +52,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
&fec {
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_enet>;
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:39:44.871158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:32.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -142,6 +142,13 @@
status = "okay";
};

@ -1,7 +1,5 @@
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi 2015-12-18 10:43:27.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
@@ -174,6 +174,24 @@
status = "okay";
};
@ -52,10 +50,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
pinctrl_uart1: uart1grp {
fsl,pins = <
MX6QDL_PAD_SD3_DAT7__UART1_TX_DATA 0x1b0b1
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:39:44.883158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:43:31.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
@@ -282,6 +282,18 @@
status = "okay";
};
@ -94,10 +90,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX6QDL_PAD_SD1_CMD__PWM4_OUT 0x1b0b1
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:39:44.883158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:43:27.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -287,6 +287,18 @@
};
};
@ -136,10 +130,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX6QDL_PAD_SD1_CMD__PWM4_OUT 0x1b0b1
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:39:44.883158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:27.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -378,6 +378,24 @@
};
};
@ -190,10 +182,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
pinctrl_pwm4: pwm4grp {
fsl,pins = <
MX6QDL_PAD_SD1_CMD__PWM4_OUT 0x1b0b1
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw551x.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw551x.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw551x.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw551x.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw551x.dtsi
@@ -198,6 +198,18 @@
status = "okay";
};
@ -232,10 +222,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw551x.dtsi
pinctrl_uart2: uart2grp {
fsl,pins = <
MX6QDL_PAD_SD4_DAT7__UART2_TX_DATA 0x1b0b1
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw552x.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw552x.dtsi 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw552x.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw552x.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw552x.dtsi
@@ -164,6 +164,18 @@
status = "okay";
};

@ -1,7 +1,5 @@
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:39:44.899158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:43:27.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
@@ -158,6 +158,14 @@
<&clks IMX6QDL_CLK_PLL3_USB_OTG>;
};

@ -1,7 +1,5 @@
Index: linux-4.3/drivers/thermal/imx_thermal.c
===================================================================
--- linux-4.3.orig/drivers/thermal/imx_thermal.c 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/thermal/imx_thermal.c 2015-12-18 10:39:44.915158318 -0800
--- a/drivers/thermal/imx_thermal.c
+++ b/drivers/thermal/imx_thermal.c
@@ -55,6 +55,7 @@
#define TEMPSENSE2_PANIC_VALUE_SHIFT 16
#define TEMPSENSE2_PANIC_VALUE_MASK 0xfff0000
@ -10,7 +8,7 @@ Index: linux-4.3/drivers/thermal/imx_thermal.c
#define OCOTP_ANA1 0x04e0
/* The driver supports 1 passive trip point and 1 critical trip point */
@@ -64,12 +65,6 @@
@@ -64,12 +65,6 @@ enum imx_thermal_trip {
IMX_TRIP_NUM,
};
@ -23,7 +21,7 @@ Index: linux-4.3/drivers/thermal/imx_thermal.c
#define IMX_POLLING_DELAY 2000 /* millisecond */
#define IMX_PASSIVE_DELAY 1000
@@ -100,12 +95,14 @@
@@ -100,12 +95,14 @@ struct imx_thermal_data {
u32 c1, c2; /* See formula in imx_get_sensor_data() */
int temp_passive;
int temp_critical;
@ -38,7 +36,7 @@ Index: linux-4.3/drivers/thermal/imx_thermal.c
};
static void imx_set_panic_temp(struct imx_thermal_data *data,
@@ -285,10 +282,12 @@
@@ -285,10 +282,12 @@ static int imx_set_trip_temp(struct ther
{
struct imx_thermal_data *data = tz->devdata;
@ -52,7 +50,7 @@ Index: linux-4.3/drivers/thermal/imx_thermal.c
return -EINVAL;
data->temp_passive = temp;
@@ -404,17 +403,39 @@
@@ -404,17 +403,39 @@ static int imx_get_sensor_data(struct pl
data->c1 = temp64;
data->c2 = n1 * data->c1 + 1000 * t1;
@ -100,7 +98,7 @@ Index: linux-4.3/drivers/thermal/imx_thermal.c
return 0;
}
@@ -559,6 +580,11 @@
@@ -559,6 +580,11 @@ static int imx_thermal_probe(struct plat
return ret;
}

@ -1,7 +1,5 @@
Index: linux-4.3/arch/arm/boot/dts/imx6dl-wandboard.dts
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6dl-wandboard.dts 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6dl-wandboard.dts 2015-12-18 10:39:44.923158318 -0800
--- a/arch/arm/boot/dts/imx6dl-wandboard.dts
+++ b/arch/arm/boot/dts/imx6dl-wandboard.dts
@@ -19,4 +19,8 @@
memory {
reg = <0x10000000 0x40000000>;

@ -8,11 +8,9 @@ Date: Thu May 15 00:12:26 2014 -0700
Signed-off-by: Tim Harvey <tharvey@gateworks.com>
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_phy.c 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c 2015-12-18 10:43:28.000000000 -0800
@@ -129,7 +129,7 @@
--- a/drivers/net/ethernet/intel/igb/e1000_phy.c
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.c
@@ -129,7 +129,7 @@ out:
s32 igb_read_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 *data)
{
struct e1000_phy_info *phy = &hw->phy;
@ -21,7 +19,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
s32 ret_val = 0;
if (offset > MAX_PHY_REG_ADDRESS) {
@@ -142,11 +142,25 @@
@@ -142,11 +142,25 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
* Control register. The MAC will take care of interfacing with the
* PHY to retrieve the desired data.
*/
@ -50,7 +48,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
/* Poll the ready bit to see if the MDI read completed
* Increasing the time out as testing showed failures with
@@ -171,6 +185,18 @@
@@ -171,6 +185,18 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
*data = (u16) mdic;
out:
@ -69,7 +67,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
return ret_val;
}
@@ -185,7 +211,7 @@
@@ -185,7 +211,7 @@ out:
s32 igb_write_phy_reg_mdic(struct e1000_hw *hw, u32 offset, u16 data)
{
struct e1000_phy_info *phy = &hw->phy;
@ -78,7 +76,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
s32 ret_val = 0;
if (offset > MAX_PHY_REG_ADDRESS) {
@@ -198,12 +224,27 @@
@@ -198,12 +224,27 @@ s32 igb_write_phy_reg_mdic(struct e1000_
* Control register. The MAC will take care of interfacing with the
* PHY to retrieve the desired data.
*/
@ -110,7 +108,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
/* Poll the ready bit to see if the MDI read completed
* Increasing the time out as testing showed failures with
@@ -227,6 +268,18 @@
@@ -227,6 +268,18 @@ s32 igb_write_phy_reg_mdic(struct e1000_
}
out:

@ -14,11 +14,9 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
drivers/net/ethernet/intel/igb/e1000_phy.h | 6 ++-
3 files changed, 58 insertions(+), 26 deletions(-)
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_82575.c 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c 2015-12-18 10:43:28.000000000 -0800
@@ -2153,7 +2153,7 @@
--- a/drivers/net/ethernet/intel/igb/e1000_82575.c
+++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
@@ -2153,7 +2153,7 @@ static s32 igb_read_phy_reg_82580(struct
if (ret_val)
goto out;
@ -27,7 +25,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
hw->phy.ops.release(hw);
@@ -2178,7 +2178,7 @@
@@ -2178,7 +2178,7 @@ static s32 igb_write_phy_reg_82580(struc
if (ret_val)
goto out;
@ -36,11 +34,9 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
hw->phy.ops.release(hw);
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_phy.c 2015-12-18 10:39:44.931158318 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c 2015-12-18 10:39:44.939158318 -0800
@@ -126,9 +126,8 @@
--- a/drivers/net/ethernet/intel/igb/e1000_phy.c
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.c
@@ -126,9 +126,8 @@ out:
* Reads the MDI control regsiter in the PHY at offset and stores the
* information read to data.
**/
@ -51,7 +47,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
u32 i, mdicnfg, mdic = 0;
s32 ret_val = 0;
@@ -147,14 +146,14 @@
@@ -147,14 +146,14 @@ s32 igb_read_phy_reg_mdic(struct e1000_h
case e1000_i211:
mdicnfg = rd32(E1000_MDICNFG);
mdicnfg &= ~(E1000_MDICNFG_PHY_MASK);
@ -68,7 +64,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
(E1000_MDIC_OP_READ));
break;
}
@@ -208,9 +207,8 @@
@@ -208,9 +207,8 @@ out:
*
* Writes data to MDI control register in the PHY at offset.
**/
@ -79,7 +75,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
u32 i, mdicnfg, mdic = 0;
s32 ret_val = 0;
@@ -229,7 +227,7 @@
@@ -229,7 +227,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
case e1000_i211:
mdicnfg = rd32(E1000_MDICNFG);
mdicnfg &= ~(E1000_MDICNFG_PHY_MASK);
@ -88,7 +84,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
wr32(E1000_MDICNFG, mdicnfg);
mdic = (((u32)data) |
(offset << E1000_MDIC_REG_SHIFT) |
@@ -238,7 +236,7 @@
@@ -238,7 +236,7 @@ s32 igb_write_phy_reg_mdic(struct e1000_
default:
mdic = (((u32)data) |
(offset << E1000_MDIC_REG_SHIFT) |
@ -97,7 +93,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
(E1000_MDIC_OP_WRITE));
break;
}
@@ -458,7 +456,7 @@
@@ -458,7 +456,7 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
goto out;
if (offset > MAX_PHY_MULTI_PAGE_REG) {
@ -106,7 +102,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
IGP01E1000_PHY_PAGE_SELECT,
(u16)offset);
if (ret_val) {
@@ -467,8 +465,8 @@
@@ -467,8 +465,8 @@ s32 igb_read_phy_reg_igp(struct e1000_hw
}
}
@ -117,7 +113,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
hw->phy.ops.release(hw);
@@ -497,7 +495,7 @@
@@ -497,7 +495,7 @@ s32 igb_write_phy_reg_igp(struct e1000_h
goto out;
if (offset > MAX_PHY_MULTI_PAGE_REG) {
@ -126,7 +122,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
IGP01E1000_PHY_PAGE_SELECT,
(u16)offset);
if (ret_val) {
@@ -506,8 +504,8 @@
@@ -506,8 +504,8 @@ s32 igb_write_phy_reg_igp(struct e1000_h
}
}
@ -137,7 +133,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
hw->phy.ops.release(hw);
@@ -2547,8 +2545,9 @@
@@ -2547,8 +2545,9 @@ out:
}
/**
@ -148,7 +144,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
* @offset: lower half is register offset to write to
* upper half is page to use.
* @data: data to write at register offset
@@ -2556,7 +2555,7 @@
@@ -2556,7 +2555,7 @@ out:
* Acquires semaphore, if necessary, then writes the data to PHY register
* at the offset. Release any acquired semaphores before exiting.
**/
@ -157,7 +153,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
{
s32 ret_val;
u16 page = offset >> GS40G_PAGE_SHIFT;
@@ -2566,10 +2565,10 @@
@@ -2566,10 +2565,10 @@ s32 igb_write_phy_reg_gs40g(struct e1000
if (ret_val)
return ret_val;
@ -170,7 +166,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
release:
hw->phy.ops.release(hw);
@@ -2577,8 +2576,24 @@
@@ -2577,8 +2576,24 @@ release:
}
/**
@ -196,7 +192,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
* @offset: lower half is register offset to read to
* upper half is page to use.
* @data: data to read at register offset
@@ -2586,7 +2601,7 @@
@@ -2586,7 +2601,7 @@ release:
* Acquires semaphore, if necessary, then reads the data in the PHY register
* at the offset. Release any acquired semaphores before exiting.
**/
@ -205,7 +201,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
{
s32 ret_val;
u16 page = offset >> GS40G_PAGE_SHIFT;
@@ -2596,10 +2611,10 @@
@@ -2596,10 +2611,10 @@ s32 igb_read_phy_reg_gs40g(struct e1000_
if (ret_val)
return ret_val;
@ -218,7 +214,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
release:
hw->phy.ops.release(hw);
@@ -2607,6 +2622,21 @@
@@ -2607,6 +2622,21 @@ release:
}
/**
@ -240,11 +236,9 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.c
* igb_set_master_slave_mode - Setup PHY for Master/slave mode
* @hw: pointer to the HW structure
*
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.h
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_phy.h 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.h 2015-12-18 10:39:44.939158318 -0800
@@ -62,8 +62,8 @@
--- a/drivers/net/ethernet/intel/igb/e1000_phy.h
+++ b/drivers/net/ethernet/intel/igb/e1000_phy.h
@@ -62,8 +62,8 @@ void igb_power_up_phy_copper(struct e100
void igb_power_down_phy_copper(struct e1000_hw *hw);
s32 igb_phy_init_script_igp3(struct e1000_hw *hw);
s32 igb_initialize_M88E1512_phy(struct e1000_hw *hw);
@ -255,7 +249,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_phy.h
s32 igb_read_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 *data);
s32 igb_write_phy_reg_i2c(struct e1000_hw *hw, u32 offset, u16 data);
s32 igb_read_sfp_data_byte(struct e1000_hw *hw, u16 offset, u8 *data);
@@ -73,6 +73,8 @@
@@ -73,6 +73,8 @@ s32 igb_phy_force_speed_duplex_82580(st
s32 igb_get_cable_length_82580(struct e1000_hw *hw);
s32 igb_read_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 *data);
s32 igb_write_phy_reg_gs40g(struct e1000_hw *hw, u32 offset, u16 data);

@ -21,11 +21,9 @@ Signed-off-by: Tim Harvey <tharvey@gateworks.com>
drivers/net/ethernet/intel/igb/igb_main.c | 168 ++++++++++++++++++++++++++-
3 files changed, 185 insertions(+), 5 deletions(-)
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_82575.c 2015-12-18 10:39:44.935158318 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c 2015-12-18 10:39:44.943158318 -0800
@@ -612,13 +612,25 @@
--- a/drivers/net/ethernet/intel/igb/e1000_82575.c
+++ b/drivers/net/ethernet/intel/igb/e1000_82575.c
@@ -612,13 +612,25 @@ static s32 igb_get_invariants_82575(stru
switch (link_mode) {
case E1000_CTRL_EXT_LINK_MODE_1000BASE_KX:
hw->phy.media_type = e1000_media_type_internal_serdes;
@ -51,7 +49,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
}
/* fall through for I2C based SGMII */
case E1000_CTRL_EXT_LINK_MODE_PCIE_SERDES:
@@ -635,8 +647,11 @@
@@ -635,8 +647,11 @@ static s32 igb_get_invariants_82575(stru
hw->phy.media_type = e1000_media_type_copper;
dev_spec->sgmii_active = true;
}
@ -63,10 +61,8 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_82575.c
}
/* do not change link mode for 100BaseFX */
Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_hw.h
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/e1000_hw.h 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/e1000_hw.h 2015-12-18 10:39:44.943158318 -0800
--- a/drivers/net/ethernet/intel/igb/e1000_hw.h
+++ b/drivers/net/ethernet/intel/igb/e1000_hw.h
@@ -27,6 +27,7 @@
#include <linux/delay.h>
#include <linux/io.h>
@ -75,7 +71,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_hw.h
#include "e1000_regs.h"
#include "e1000_defines.h"
@@ -543,6 +544,12 @@
@@ -543,6 +544,12 @@ struct e1000_hw {
struct e1000_mbx_info mbx;
struct e1000_host_mng_dhcp_cookie mng_cookie;
@ -88,10 +84,8 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/e1000_hw.h
union {
struct e1000_dev_spec_82575 _82575;
} dev_spec;
Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/intel/igb/igb_main.c 2015-12-18 10:39:44.407158315 -0800
+++ linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c 2015-12-18 10:39:44.943158318 -0800
--- a/drivers/net/ethernet/intel/igb/igb_main.c
+++ b/drivers/net/ethernet/intel/igb/igb_main.c
@@ -41,6 +41,7 @@
#include <linux/if_vlan.h>
#include <linux/pci.h>
@ -100,7 +94,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
#include <linux/delay.h>
#include <linux/interrupt.h>
#include <linux/ip.h>
@@ -2223,6 +2224,126 @@
@@ -2223,6 +2224,126 @@ static s32 igb_init_i2c(struct igb_adapt
return status;
}
@ -227,7 +221,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
/**
* igb_probe - Device Initialization Routine
* @pdev: PCI device information struct
@@ -2645,6 +2766,13 @@
@@ -2645,6 +2766,13 @@ static int igb_probe(struct pci_dev *pde
}
}
pm_runtime_put_noidle(&pdev->dev);
@ -241,7 +235,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
return 0;
err_register:
@@ -2792,6 +2920,10 @@
@@ -2792,6 +2920,10 @@ static void igb_remove(struct pci_dev *p
struct e1000_hw *hw = &adapter->hw;
pm_runtime_get_noresume(&pdev->dev);
@ -252,7 +246,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
#ifdef CONFIG_IGB_HWMON
igb_sysfs_exit(adapter);
#endif
@@ -3105,6 +3237,12 @@
@@ -3105,6 +3237,12 @@ static int __igb_open(struct net_device
if (!resuming)
pm_runtime_put(&pdev->dev);
@ -265,7 +259,7 @@ Index: linux-4.3/drivers/net/ethernet/intel/igb/igb_main.c
/* start the watchdog. */
hw->mac.get_link_status = 1;
schedule_work(&adapter->watchdog_task);
@@ -7090,21 +7228,41 @@
@@ -7090,21 +7228,41 @@ void igb_alloc_rx_buffers(struct igb_rin
static int igb_mii_ioctl(struct net_device *netdev, struct ifreq *ifr, int cmd)
{
struct igb_adapter *adapter = netdev_priv(netdev);

@ -1,8 +1,6 @@
Index: linux-4.3/drivers/net/phy/Kconfig
===================================================================
--- linux-4.3.orig/drivers/net/phy/Kconfig 2015-12-18 10:39:44.371158315 -0800
+++ linux-4.3/drivers/net/phy/Kconfig 2015-12-18 10:39:44.951158318 -0800
@@ -309,6 +309,14 @@
--- a/drivers/net/phy/Kconfig
+++ b/drivers/net/phy/Kconfig
@@ -309,6 +309,14 @@ endif # RTL8366_SMI
source "drivers/net/phy/b53/Kconfig"
@ -17,11 +15,9 @@ Index: linux-4.3/drivers/net/phy/Kconfig
endif # PHYLIB
config MICREL_KS8995MA
Index: linux-4.3/drivers/net/phy/Makefile
===================================================================
--- linux-4.3.orig/drivers/net/phy/Makefile 2015-12-18 10:39:44.371158315 -0800
+++ linux-4.3/drivers/net/phy/Makefile 2015-12-18 10:39:44.951158318 -0800
@@ -44,6 +44,7 @@
--- a/drivers/net/phy/Makefile
+++ b/drivers/net/phy/Makefile
@@ -44,6 +44,7 @@ obj-$(CONFIG_DP83848_PHY) += dp83848.o
obj-$(CONFIG_DP83867_PHY) += dp83867.o
obj-$(CONFIG_STE10XP) += ste10Xp.o
obj-$(CONFIG_MICREL_PHY) += micrel.o

@ -1,7 +1,5 @@
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi 2015-12-18 10:39:44.895158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
@@ -158,6 +158,11 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
@ -14,10 +12,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw51xx.dtsi
};
&i2c3 {
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:39:44.907158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
@@ -233,6 +233,11 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
@ -30,10 +26,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw52xx.dtsi
};
&i2c3 {
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:39:44.899158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:43:25.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -226,6 +226,11 @@
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i2c2>;
@ -46,10 +40,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
};
&i2c3 {
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:39:44.899158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:25.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -317,6 +317,11 @@
};
};

@ -1,8 +1,6 @@
Index: linux-4.3/drivers/i2c/busses/i2c-imx.c
===================================================================
--- linux-4.3.orig/drivers/i2c/busses/i2c-imx.c 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/i2c/busses/i2c-imx.c 2015-12-18 10:39:44.971158318 -0800
@@ -461,6 +461,8 @@
--- a/drivers/i2c/busses/i2c-imx.c
+++ b/drivers/i2c/busses/i2c-imx.c
@@ -461,6 +461,8 @@ static int i2c_imx_acked(struct imx_i2c_
{
if (imx_i2c_read_reg(i2c_imx, IMX_I2C_I2SR) & I2SR_RXAK) {
dev_dbg(&i2c_imx->adapter.dev, "<%s> No ACK\n", __func__);
@ -11,7 +9,7 @@ Index: linux-4.3/drivers/i2c/busses/i2c-imx.c
return -EIO; /* No ACK */
}
@@ -1010,6 +1012,10 @@
@@ -1010,6 +1012,10 @@ static int i2c_imx_probe(struct platform
i2c_imx->adapter.nr = pdev->id;
i2c_imx->adapter.dev.of_node = pdev->dev.of_node;
i2c_imx->base = base;

@ -1,8 +1,6 @@
Index: linux-4.3/drivers/net/ethernet/marvell/sky2.c
===================================================================
--- linux-4.3.orig/drivers/net/ethernet/marvell/sky2.c 2015-11-01 16:05:25.000000000 -0800
+++ linux-4.3/drivers/net/ethernet/marvell/sky2.c 2015-12-18 10:39:44.983158318 -0800
@@ -4812,7 +4812,24 @@
--- a/drivers/net/ethernet/marvell/sky2.c
+++ b/drivers/net/ethernet/marvell/sky2.c
@@ -4812,7 +4812,24 @@ static struct net_device *sky2_init_netd
* 1) from device tree data
* 2) from internal registers set by bootloader
*/

@ -1,7 +1,5 @@
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:39:44.959158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
@@ -15,6 +15,7 @@
/* these are used by bootloader for disabling nodes */
aliases {
@ -10,10 +8,8 @@ Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw53xx.dtsi
led0 = &led0;
led1 = &led1;
led2 = &led2;
Index: linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
===================================================================
--- linux-4.3.orig/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:39:44.959158318 -0800
+++ linux-4.3/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi 2015-12-18 10:43:21.000000000 -0800
--- a/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
+++ b/arch/arm/boot/dts/imx6qdl-gw54xx.dtsi
@@ -15,6 +15,7 @@
/* these are used by bootloader for disabling nodes */
aliases {

@ -1,31 +1,31 @@
--- a/arch/mips/include/asm/octeon/cvmx-bootinfo.h
+++ b/arch/mips/include/asm/octeon/cvmx-bootinfo.h
@@ -283,6 +283,8 @@ enum cvmx_board_types_enum {
*/
CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
CVMX_BOARD_TYPE_UBNT_E100 = 20002,
*/
CVMX_BOARD_TYPE_CUST_PRIVATE_MIN = 20001,
CVMX_BOARD_TYPE_UBNT_E100 = 20002,
+ CVMX_BOARD_TYPE_UBNT_E200 = 20003,
+ CVMX_BOARD_TYPE_UBNT_E220 = 20005,
CVMX_BOARD_TYPE_CUST_DSR1000N = 20006,
CVMX_BOARD_TYPE_KONTRON_S1901 = 21901,
CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000,
CVMX_BOARD_TYPE_CUST_DSR1000N = 20006,
CVMX_BOARD_TYPE_KONTRON_S1901 = 21901,
CVMX_BOARD_TYPE_CUST_PRIVATE_MAX = 30000,
@@ -384,6 +386,8 @@ static inline const char *cvmx_board_typ
/* Customer private range */
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
/* Customer private range */
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MIN)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E100)
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E200)
+ ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_UBNT_E220)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KONTRON_S1901)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_DSR1000N)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_KONTRON_S1901)
ENUM_BRD_TYPE_CASE(CVMX_BOARD_TYPE_CUST_PRIVATE_MAX)
--- a/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
+++ b/arch/mips/cavium-octeon/executive/cvmx-helper-board.c
@@ -195,6 +195,8 @@ int cvmx_helper_board_get_mii_address(in
return 8;
else
return -1;
return 8;
else
return -1;
+ case CVMX_BOARD_TYPE_UBNT_E200:
+ return -1;
case CVMX_BOARD_TYPE_KONTRON_S1901:
if (ipd_port == CVMX_HELPER_BOARD_MGMT_IPD_PORT)
return 1;
case CVMX_BOARD_TYPE_KONTRON_S1901:
if (ipd_port == CVMX_HELPER_BOARD_MGMT_IPD_PORT)
return 1;

@ -1,17 +1,17 @@
--- a/drivers/staging/octeon/ethernet.c
+++ b/drivers/staging/octeon/ethernet.c
@@ -663,6 +663,7 @@ static int cvm_oct_probe(struct platform
int interface;
int fau = FAU_NUM_PACKET_BUFFERS_TO_FREE;
int qos;
int interface;
int fau = FAU_NUM_PACKET_BUFFERS_TO_FREE;
int qos;
+ int i;
struct device_node *pip;
octeon_mdiobus_force_mod_depencency();
struct device_node *pip;
octeon_mdiobus_force_mod_depencency();
@@ -747,13 +748,19 @@ static int cvm_oct_probe(struct platform
}
num_interfaces = cvmx_helper_get_number_of_interfaces();
}
num_interfaces = cvmx_helper_get_number_of_interfaces();
- for (interface = 0; interface < num_interfaces; interface++) {
- cvmx_helper_interface_mode_t imode =
- cvmx_helper_interface_get_mode(interface);
@ -20,15 +20,15 @@
+ cvmx_helper_interface_mode_t imode;
+ int interface;
+ int num_ports;
int port;
int port_index;
int port;
int port_index;
+ interface = i;
+ if (cvmx_sysinfo_get()->board_type == CVMX_BOARD_TYPE_UBNT_E200)
+ interface = num_interfaces - (i + 1);
+
+ num_ports = cvmx_helper_ports_on_interface(interface);
+ imode = cvmx_helper_interface_get_mode(interface);
for (port_index = 0,
port = cvmx_helper_get_ipd_port(interface, 0);
port < cvmx_helper_get_ipd_port(interface, num_ports);
for (port_index = 0,
port = cvmx_helper_get_ipd_port(interface, 0);
port < cvmx_helper_get_ipd_port(interface, num_ports);

@ -73,9 +73,9 @@
--- a/drivers/mmc/host/Kconfig
+++ b/drivers/mmc/host/Kconfig
@@ -436,6 +436,16 @@ config MMC_MXS
If unsure, say N.
If unsure, say N.
+config MMC_OCTEON
+ tristate "Cavium OCTEON Multimedia Card Interface support"
+ depends on CAVIUM_OCTEON_SOC
@ -87,8 +87,8 @@
+ If unsure, say N.
+
config MMC_TIFM_SD
tristate "TI Flash Media MMC/SD Interface support"
depends on PCI
tristate "TI Flash Media MMC/SD Interface support"
depends on PCI
--- a/drivers/mmc/host/Makefile
+++ b/drivers/mmc/host/Makefile
@@ -20,6 +20,7 @@ obj-$(CONFIG_MMC_SDHCI_F_SDH30) += sdhci

@ -1,9 +1,9 @@
--- a/arch/mips/cavium-octeon/setup.c
+++ b/arch/mips/cavium-octeon/setup.c
@@ -611,6 +611,35 @@ void octeon_user_io_init(void)
write_c0_derraddr1(0);
write_c0_derraddr1(0);
}
+#ifdef CONFIG_IMAGE_CMDLINE_HACK
+extern char __image_cmdline[];
+
@ -37,11 +37,11 @@
* Early entry point for arch setup
*/
@@ -842,6 +871,8 @@ void __init prom_init(void)
}
}
}
}
+ octeon_use_image_cmdline();
+
if (strstr(arcs_cmdline, "console=") == NULL) {
if (strstr(arcs_cmdline, "console=") == NULL) {
#ifdef CONFIG_CAVIUM_OCTEON_2ND_KERNEL
strcat(arcs_cmdline, " console=ttyS0,115200");
strcat(arcs_cmdline, " console=ttyS0,115200");

@ -9,9 +9,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
1 file changed, 197 insertions(+)
create mode 100644 arch/mips/configs/mt7621_defconfig
diff --git a/arch/mips/configs/mt7621_defconfig b/arch/mips/configs/mt7621_defconfig
new file mode 100644
index 0000000..7719471
--- /dev/null
+++ b/arch/mips/configs/mt7621_defconfig
@@ -0,0 +1,197 @@
@ -212,6 +209,3 @@ index 0000000..7719471
+CONFIG_CRC32_SARWATE=y
+# CONFIG_XZ_DEC_X86 is not set
+CONFIG_AVERAGE=y
--
1.7.10.4

@ -11,8 +11,6 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
arch/mips/ralink/early_printk.c | 25 +++++++++++++++++++++++++
1 file changed, 25 insertions(+)
diff --git a/arch/mips/ralink/early_printk.c b/arch/mips/ralink/early_printk.c
index 255d695..c04ee53 100644
--- a/arch/mips/ralink/early_printk.c
+++ b/arch/mips/ralink/early_printk.c
@@ -25,11 +25,13 @@
@ -61,6 +59,3 @@ index 255d695..c04ee53 100644
if (IS_ENABLED(CONFIG_SOC_MT7621) || soc_is_mt7628()) {
uart_w32(ch, UART_TX);
while ((uart_r32(UART_REG_LSR) & UART_LSR_THRE) == 0)
--
1.7.10.4

@ -38,7 +38,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
+};
--- a/drivers/phy/Kconfig
+++ b/drivers/phy/Kconfig
@@ -331,6 +331,14 @@
@@ -331,6 +331,14 @@ config PHY_XGENE
help
This option enables support for APM X-Gene SoC multi-purpose PHY.
@ -55,7 +55,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
depends on RESET_CONTROLLER
--- a/drivers/phy/Makefile
+++ b/drivers/phy/Makefile
@@ -46,3 +46,4 @@
@@ -46,3 +46,4 @@ obj-$(CONFIG_PHY_QCOM_UFS) += phy-qcom-
obj-$(CONFIG_PHY_TUSB1210) += phy-tusb1210.o
obj-$(CONFIG_PHY_BRCMSTB_SATA) += phy-brcmstb-sata.o
obj-$(CONFIG_PHY_PISTACHIO_USB) += phy-pistachio-usb.o

@ -5391,7 +5391,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
/* TODO: copied from ehci-hcd.c - can this be refactored? */
/*
* xhci_handshake - spin reading hc until handshake completes or fails
@@ -198,7 +220,7 @@ int xhci_reset(struct xhci_hcd *xhci)
@@ -208,7 +230,7 @@ int xhci_reset(struct xhci_hcd *xhci)
return ret;
}
@ -5400,7 +5400,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
static int xhci_free_msi(struct xhci_hcd *xhci)
{
int i;
@@ -448,6 +470,11 @@ static void compliance_mode_recovery(uns
@@ -458,6 +480,11 @@ static void compliance_mode_recovery(uns
"Attempting compliance mode recovery");
hcd = xhci->shared_hcd;
@ -5412,7 +5412,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
if (hcd->state == HC_STATE_SUSPENDED)
usb_hcd_resume_root_hub(hcd);
@@ -495,6 +522,9 @@ static bool xhci_compliance_mode_recover
@@ -505,6 +532,9 @@ static bool xhci_compliance_mode_recover
{
const char *dmi_product_name, *dmi_sys_vendor;
@ -5422,7 +5422,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
dmi_product_name = dmi_get_system_info(DMI_PRODUCT_NAME);
dmi_sys_vendor = dmi_get_system_info(DMI_SYS_VENDOR);
if (!dmi_product_name || !dmi_sys_vendor)
@@ -540,6 +570,10 @@ int xhci_init(struct usb_hcd *hcd)
@@ -550,6 +580,10 @@ int xhci_init(struct usb_hcd *hcd)
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"xHCI doesn't need link TRB QUIRK");
}
@ -5433,7 +5433,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
retval = xhci_mem_init(xhci, GFP_KERNEL);
xhci_dbg_trace(xhci, trace_xhci_dbg_init, "Finished xhci_init");
@@ -624,7 +658,11 @@ int xhci_run(struct usb_hcd *hcd)
@@ -634,7 +668,11 @@ int xhci_run(struct usb_hcd *hcd)
"// Set the interrupt modulation register");
temp = readl(&xhci->ir_set->irq_control);
temp &= ~ER_IRQ_INTERVAL_MASK;
@ -5445,7 +5445,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
writel(temp, &xhci->ir_set->irq_control);
/* Set the HCD state before we enable the irqs */
@@ -649,6 +687,9 @@ int xhci_run(struct usb_hcd *hcd)
@@ -659,6 +697,9 @@ int xhci_run(struct usb_hcd *hcd)
xhci_queue_vendor_command(xhci, command, 0, 0, 0,
TRB_TYPE(TRB_NEC_GET_FW));
}
@ -5455,7 +5455,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
xhci_dbg_trace(xhci, trace_xhci_dbg_init,
"Finished xhci_run for USB2 roothub");
return 0;
@@ -1639,6 +1680,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
@@ -1649,6 +1690,14 @@ int xhci_drop_endpoint(struct usb_hcd *h
u32 drop_flag;
u32 new_add_flags, new_drop_flags;
int ret;
@ -5470,7 +5470,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
if (ret <= 0)
@@ -1688,6 +1737,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
@@ -1698,6 +1747,40 @@ int xhci_drop_endpoint(struct usb_hcd *h
xhci_endpoint_zero(xhci, xhci->devs[udev->slot_id], ep);
@ -5511,7 +5511,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
xhci_dbg(xhci, "drop ep 0x%x, slot id %d, new drop flags = %#x, new add flags = %#x\n",
(unsigned int) ep->desc.bEndpointAddress,
udev->slot_id,
@@ -1720,6 +1803,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
@@ -1730,6 +1813,19 @@ int xhci_add_endpoint(struct usb_hcd *hc
u32 new_add_flags, new_drop_flags;
struct xhci_virt_device *virt_dev;
int ret = 0;
@ -5531,7 +5531,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
ret = xhci_check_args(hcd, udev, ep, 1, true, __func__);
if (ret <= 0) {
@@ -1783,6 +1879,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
@@ -1793,6 +1889,56 @@ int xhci_add_endpoint(struct usb_hcd *hc
return -ENOMEM;
}
@ -5588,7 +5588,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
ctrl_ctx->add_flags |= cpu_to_le32(added_ctxs);
new_add_flags = le32_to_cpu(ctrl_ctx->add_flags);
@@ -4446,8 +4592,14 @@ static u16 xhci_call_host_update_timeout
@@ -4456,8 +4602,14 @@ static u16 xhci_call_host_update_timeout
u16 *timeout)
{
if (state == USB3_LPM_U1)
@ -5603,7 +5603,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
return xhci_calculate_u2_timeout(xhci, udev, desc);
return USB3_LPM_DISABLED;
@@ -4839,7 +4991,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
@@ -4849,7 +5001,9 @@ int xhci_gen_setup(struct usb_hcd *hcd,
hcd->self.no_sg_constraint = 1;
/* XHCI controllers don't stop the ep queue on short packets :| */
@ -5613,7 +5613,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
if (usb_hcd_is_primary_hcd(hcd)) {
xhci = hcd_to_xhci(hcd);
@@ -4900,6 +5054,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
@@ -4910,6 +5064,10 @@ int xhci_gen_setup(struct usb_hcd *hcd,
return retval;
xhci_dbg(xhci, "Reset complete\n");
@ -5624,7 +5624,7 @@ Signed-off-by: John Crispin <blogic@openwrt.org>
/* Set dma_mask and coherent_dma_mask to 64-bits,
* if xHC supports 64-bit addressing */
if (HCC_64BIT_ADDR(xhci->hcc_params) &&
@@ -5005,8 +5163,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
@@ -5015,8 +5173,57 @@ MODULE_DESCRIPTION(DRIVER_DESC);
MODULE_AUTHOR(DRIVER_AUTHOR);
MODULE_LICENSE("GPL");

@ -1,6 +1,6 @@
--- a/arch/mips/ralink/mt7620.c
+++ b/arch/mips/ralink/mt7620.c
@@ -104,31 +104,31 @@
@@ -104,31 +104,31 @@ static struct rt2880_pmx_group mt7620a_p
};
static struct rt2880_pmx_func pwm1_grp_mt7628[] = {
@ -37,7 +37,7 @@
};
static struct rt2880_pmx_func i2c_grp_mt7628[] = {
@@ -140,21 +140,21 @@
@@ -140,21 +140,21 @@ static struct rt2880_pmx_func i2c_grp_mt
static struct rt2880_pmx_func refclk_grp_mt7628[] = { FUNC("reclk", 0, 36, 1) };
static struct rt2880_pmx_func perst_grp_mt7628[] = { FUNC("perst", 0, 37, 1) };
@ -62,7 +62,7 @@
};
static struct rt2880_pmx_func i2s_grp_mt7628[] = {
@@ -449,6 +449,8 @@
@@ -449,6 +449,8 @@ void __init ralink_clk_init(void)
ralink_clk_add("10000b00.spi", sys_rate);
ralink_clk_add("10000b40.spi", sys_rate);
ralink_clk_add("10000c00.uartlite", periph_rate);
@ -71,7 +71,7 @@
ralink_clk_add("10180000.wmac", xtal_rate);
if (IS_ENABLED(CONFIG_USB) &&
@@ -571,13 +573,13 @@
@@ -571,13 +573,13 @@ void prom_soc_init(struct ralink_soc_inf
cfg0 = __raw_readl(sysc + SYSC_REG_SYSTEM_CONFIG0);

Loading…
Cancel
Save