kernel: bump to 4.9.105

Refresh patches.

Drop patches that have been upstreamed:
target/linux/ar71xx/patches-4.9/106-01-MIPS-ath79-fix-AR724X_PLL_REG_PCIE_CONFIG-offset.patch
target/linux/generic/backport-4.9/095-v4.12-ipv6-Need-to-export-ipv6_push_frag_opts-for-tunnelin.patch
target/linux/generic/pending-4.9/180-net-phy-at803x-add-support-for-AT8032.patch
target/linux/generic/pending-4.9/181-net-usb-add-lte-modem-wistron-neweb-d18q1.patch
target/linux/generic/pending-4.9/182-net-qmi_wwan-add-BroadMobi-BM806U-2020-2033.patch

Compile & run tested: ar71xx Archer C7 v2

Signed-off-by: Kevin Darbyshire-Bryant <ldir@darbyshire-bryant.me.uk>
This commit is contained in:
Kevin Darbyshire-Bryant 2018-05-31 19:49:08 +00:00 committed by John Crispin
parent 5b0c899bfd
commit 7dca1bae82
36 changed files with 439 additions and 681 deletions

View file

@ -4,12 +4,12 @@ LINUX_RELEASE?=1
LINUX_VERSION-3.18 = .71
LINUX_VERSION-4.4 = .121
LINUX_VERSION-4.9 = .102
LINUX_VERSION-4.9 = .105
LINUX_VERSION-4.14 = .44
LINUX_KERNEL_HASH-3.18.71 = 5abc9778ad44ce02ed6c8ab52ece8a21c6d20d21f6ed8a19287b4a38a50c1240
LINUX_KERNEL_HASH-4.4.121 = 44a88268b5088dc326b30c9b9133ac35a9a200b636b7268d08f32abeae6ca729
LINUX_KERNEL_HASH-4.9.102 = d155a36ba52d5809805cd370902582ac373c5b23a958c6424325684447119dc5
LINUX_KERNEL_HASH-4.9.105 = d085d228e3ac1fdbdf5a31bb8154e4e8a0943a9085f0384842601db8e9d96dc4
LINUX_KERNEL_HASH-4.14.44 = 2eb356e6af25f6ca65affe7704be8c4e0cdf224505e7441ac9d5b6e8d96ec8e4
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))

View file

@ -1,29 +0,0 @@
From 0f15814bcdf59f10b708a3fba636acb089e9a4f1 Mon Sep 17 00:00:00 2001
From: Mathias Kresin <dev@kresin.me>
Date: Thu, 30 Mar 2017 15:34:39 +0200
Subject: [PATCH] MIPS: ath79: fix AR724X_PLL_REG_PCIE_CONFIG offset
According to the QCA u-boot source the "PCIE Phase Lock Loop
Configuration (PCIE_PLL_CONFIG)" register is for all SoCs except the
QCA955X and QCA956X at offset 0x10.
Since the PCIE PLL config register is only defined for the AR724x fix
only this value. The value is wrong since the day it was added and isn't
yet used by any driver.
Signed-off-by: Mathias Kresin <dev@kresin.me>
---
arch/mips/include/asm/mach-ath79/ar71xx_regs.h | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
--- a/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
+++ b/arch/mips/include/asm/mach-ath79/ar71xx_regs.h
@@ -167,7 +167,7 @@
#define AR71XX_AHB_DIV_MASK 0x7
#define AR724X_PLL_REG_CPU_CONFIG 0x00
-#define AR724X_PLL_REG_PCIE_CONFIG 0x18
+#define AR724X_PLL_REG_PCIE_CONFIG 0x10
#define AR724X_PLL_FB_SHIFT 0
#define AR724X_PLL_FB_MASK 0x3ff

View file

@ -16,7 +16,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
#endif /* _PHY_AT803X_PDATA_H */
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -264,6 +264,7 @@ static int at803x_resume(struct phy_devi
@@ -263,6 +263,7 @@ static int at803x_resume(struct phy_devi
static int at803x_probe(struct phy_device *phydev)
{
@ -24,8 +24,8 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
struct device *dev = &phydev->mdio.dev;
struct at803x_priv *priv;
struct gpio_desc *gpiod_reset;
@@ -276,6 +277,12 @@ static int at803x_probe(struct phy_devic
phydev->drv->phy_id != ATH8032_PHY_ID)
@@ -274,6 +275,12 @@ static int at803x_probe(struct phy_devic
if (phydev->drv->phy_id != ATH8030_PHY_ID)
goto does_not_require_reset_workaround;
+ pdata = dev_get_platdata(dev);
@ -37,7 +37,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(gpiod_reset))
return PTR_ERR(gpiod_reset);
@@ -407,15 +414,23 @@ static void at803x_link_change_notify(st
@@ -405,15 +412,23 @@ static void at803x_link_change_notify(st
* cannot recover from by software.
*/
if (phydev->state == PHY_NOLINK) {

View file

@ -39,7 +39,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -4369,6 +4369,9 @@ static int _dwc2_hcd_suspend(struct usb_
@@ -4381,6 +4381,9 @@ static int _dwc2_hcd_suspend(struct usb_
if (!HCD_HW_ACCESSIBLE(hcd))
goto unlock;

View file

@ -396,7 +396,7 @@
if (dc_lsize == 0)
r4k_blast_dcache = (void *)cache_noop;
else if (dc_lsize == 16)
@@ -952,6 +964,8 @@ static void local_r4k_flush_cache_sigtra
@@ -955,6 +967,8 @@ static void local_r4k_flush_cache_sigtra
}
R4600_HIT_CACHEOP_WAR_IMPL;
@ -405,7 +405,7 @@
if (!cpu_has_ic_fills_f_dc) {
if (dc_lsize)
vaddr ? flush_dcache_line(addr & ~(dc_lsize - 1))
@@ -1840,6 +1854,17 @@ static void coherency_setup(void)
@@ -1843,6 +1857,17 @@ static void coherency_setup(void)
* silly idea of putting something else there ...
*/
switch (current_cpu_type()) {
@ -423,7 +423,7 @@
case CPU_R4000PC:
case CPU_R4000SC:
case CPU_R4000MC:
@@ -1886,6 +1911,15 @@ void r4k_cache_init(void)
@@ -1889,6 +1914,15 @@ void r4k_cache_init(void)
extern void build_copy_page(void);
struct cpuinfo_mips *c = &current_cpu_data;
@ -439,7 +439,7 @@
probe_pcache();
probe_vcache();
setup_scache();
@@ -1963,7 +1997,15 @@ void r4k_cache_init(void)
@@ -1966,7 +2000,15 @@ void r4k_cache_init(void)
*/
local_r4k___flush_cache_all(NULL);

View file

@ -134,7 +134,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
if (tcp_small_queue_check(sk, skb, 0))
break;
@@ -3531,8 +3531,6 @@ void tcp_send_ack(struct sock *sk)
@@ -3534,8 +3534,6 @@ void tcp_send_ack(struct sock *sk)
/* We do not want pure acks influencing TCP Small Queues or fq/pacing
* too much.
* SKB_TRUESIZE(max(1 .. 66, MAX_TCP_HEADER)) is unfortunately ~784

View file

@ -14,7 +14,7 @@ Signed-off-by: Felipe Balbi <felipe.balbi@linux.intel.com>
--- a/drivers/usb/dwc2/hcd.c
+++ b/drivers/usb/dwc2/hcd.c
@@ -5188,7 +5188,6 @@ error3:
@@ -5200,7 +5200,6 @@ error3:
error2:
usb_put_hcd(hcd);
error1:

View file

@ -68,7 +68,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1459,22 +1459,32 @@ static int bgmac_phy_connect(struct bgma
@@ -1460,22 +1460,32 @@ static int bgmac_phy_connect(struct bgma
return 0;
}
@ -106,7 +106,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
net_dev->irq = bgmac->irq;
SET_NETDEV_DEV(net_dev, bgmac->dev);
@@ -1501,7 +1511,7 @@ int bgmac_enet_probe(struct bgmac *info)
@@ -1502,7 +1512,7 @@ int bgmac_enet_probe(struct bgmac *info)
err = bgmac_dma_alloc(bgmac);
if (err) {
dev_err(bgmac->dev, "Unable to alloc memory for DMA\n");
@ -115,7 +115,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
}
bgmac->int_mask = BGMAC_IS_ERRMASK | BGMAC_IS_RX | BGMAC_IS_TX_MASK;
@@ -1537,8 +1547,7 @@ err_phy_disconnect:
@@ -1538,8 +1548,7 @@ err_phy_disconnect:
phy_disconnect(net_dev->phydev);
err_dma_free:
bgmac_dma_free(bgmac);

View file

@ -357,7 +357,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
enet_dmac_writel(priv, priv->dma_chan_int_mask,
--- a/drivers/net/ethernet/broadcom/bgmac.c
+++ b/drivers/net/ethernet/broadcom/bgmac.c
@@ -1145,7 +1145,7 @@ static int bgmac_poll(struct napi_struct
@@ -1146,7 +1146,7 @@ static int bgmac_poll(struct napi_struct
return weight;
if (handled < weight) {
@ -637,7 +637,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
return received;
--- a/drivers/net/ethernet/freescale/gianfar.c
+++ b/drivers/net/ethernet/freescale/gianfar.c
@@ -3193,7 +3193,7 @@ static int gfar_poll_rx_sq(struct napi_s
@@ -3197,7 +3197,7 @@ static int gfar_poll_rx_sq(struct napi_s
if (work_done < budget) {
u32 imask;
@ -646,7 +646,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
/* Clear the halt bit in RSTAT */
gfar_write(&regs->rstat, gfargrp->rstat);
@@ -3282,7 +3282,7 @@ static int gfar_poll_rx(struct napi_stru
@@ -3286,7 +3286,7 @@ static int gfar_poll_rx(struct napi_stru
if (!num_act_queues) {
u32 imask;
@ -712,7 +712,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
* then check once more to make sure we are done.
--- a/drivers/net/ethernet/ibm/ibmvnic.c
+++ b/drivers/net/ethernet/ibm/ibmvnic.c
@@ -1027,7 +1027,7 @@ restart_poll:
@@ -1028,7 +1028,7 @@ restart_poll:
if (frames_processed < budget) {
enable_scrq_irq(adapter, adapter->rx_scrq[scrq_num]);
@ -803,7 +803,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
--- a/drivers/net/ethernet/marvell/mvneta.c
+++ b/drivers/net/ethernet/marvell/mvneta.c
@@ -2701,11 +2701,9 @@ static int mvneta_poll(struct napi_struc
@@ -2702,11 +2702,9 @@ static int mvneta_poll(struct napi_struc
rx_done = mvneta_rx_swbm(pp, budget, &pp->rxqs[rx_queue]);
}
@ -1095,7 +1095,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
dma_intr_ena = smsc9420_reg_read(pd, DMAC_INTR_ENA);
--- a/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
+++ b/drivers/net/ethernet/stmicro/stmmac/stmmac_main.c
@@ -2693,7 +2693,7 @@ static int stmmac_poll(struct napi_struc
@@ -2705,7 +2705,7 @@ static int stmmac_poll(struct napi_struc
work_done = stmmac_rx(priv, budget);
if (work_done < budget) {
@ -1304,7 +1304,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
adapter->rx_last_jiffies = jiffies;
--- a/drivers/net/vmxnet3/vmxnet3_drv.c
+++ b/drivers/net/vmxnet3/vmxnet3_drv.c
@@ -1851,7 +1851,7 @@ vmxnet3_poll(struct napi_struct *napi, i
@@ -1873,7 +1873,7 @@ vmxnet3_poll(struct napi_struct *napi, i
rxd_done = vmxnet3_do_poll(rx_queue->adapter, budget);
if (rxd_done < budget) {
@ -1313,7 +1313,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
vmxnet3_enable_all_intrs(rx_queue->adapter);
}
return rxd_done;
@@ -1882,7 +1882,7 @@ vmxnet3_poll_rx_only(struct napi_struct
@@ -1904,7 +1904,7 @@ vmxnet3_poll_rx_only(struct napi_struct
rxd_done = vmxnet3_rq_rx_complete(rq, adapter, budget);
if (rxd_done < budget) {
@ -1379,7 +1379,7 @@ Signed-off-by: David S. Miller <davem@davemloft.net>
*/
--- a/drivers/net/xen-netfront.c
+++ b/drivers/net/xen-netfront.c
@@ -1061,7 +1061,7 @@ err:
@@ -1064,7 +1064,7 @@ err:
if (work_done < budget) {
int more_to_do = 0;

View file

@ -1,36 +0,0 @@
From 5b8481fa42ac58484d633b558579e302aead64c1 Mon Sep 17 00:00:00 2001
From: "David S. Miller" <davem@davemloft.net>
Date: Mon, 1 May 2017 15:10:20 -0400
Subject: [PATCH] ipv6: Need to export ipv6_push_frag_opts for tunneling now.
Since that change also made the nfrag function not necessary
for exports, remove it.
Fixes: 89a23c8b528b ("ip6_tunnel: Fix missing tunnel encapsulation limit option")
Signed-off-by: David S. Miller <davem@davemloft.net>
---
net/ipv6/exthdrs.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/net/ipv6/exthdrs.c b/net/ipv6/exthdrs.c
index d32e2110aff2..b636f1da9aec 100644
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
@@ -946,13 +946,13 @@ void ipv6_push_nfrag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt,
if (opt->hopopt)
ipv6_push_exthdr(skb, proto, NEXTHDR_HOP, opt->hopopt);
}
-EXPORT_SYMBOL(ipv6_push_nfrag_opts);
void ipv6_push_frag_opts(struct sk_buff *skb, struct ipv6_txoptions *opt, u8 *proto)
{
if (opt->dst1opt)
ipv6_push_exthdr(skb, proto, NEXTHDR_DEST, opt->dst1opt);
}
+EXPORT_SYMBOL(ipv6_push_frag_opts);
struct ipv6_txoptions *
ipv6_dup_options(struct sock *sk, struct ipv6_txoptions *opt)
--
2.17.1

View file

@ -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
@@ -138,11 +139,13 @@
@@ -139,11 +140,13 @@
* This is an Ethernet frame header.
*/

View file

@ -32,7 +32,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
#include <linux/bcm47xx_nvram.h>
#include "bgmac.h"
@@ -1387,6 +1388,17 @@ static const struct ethtool_ops bgmac_et
@@ -1388,6 +1389,17 @@ static const struct ethtool_ops bgmac_et
.set_link_ksettings = phy_ethtool_set_link_ksettings,
};
@ -50,7 +50,7 @@ Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
/**************************************************
* MII
**************************************************/
@@ -1533,6 +1545,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
@@ -1534,6 +1546,14 @@ int bgmac_enet_probe(struct bgmac *bgmac
net_dev->hw_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);
if (err) {
dev_err(bgmac->dev, "Cannot register net device\n");
@@ -1555,6 +1575,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
@@ -1556,6 +1576,10 @@ EXPORT_SYMBOL_GPL(bgmac_enet_probe);
void bgmac_enet_remove(struct bgmac *bgmac)
{

View file

@ -46,7 +46,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
static void __sk_free(struct sock *sk)
{
+#ifdef CONFIG_SOCK_DIAG
if (unlikely(sock_diag_has_destroy_listeners(sk) && sk->sk_net_refcnt))
if (unlikely(sk->sk_net_refcnt && sock_diag_has_destroy_listeners(sk)))
sock_diag_broadcast_destroy(sk);
else
+#endif

View file

@ -8,7 +8,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/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;
}
@ -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,
struct inode *new_dir_i, struct dentry *new_dentry,
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;
uint32_t now;
@ -42,7 +42,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
return -EINVAL;
/* 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)
inc_nlink(new_dir_i);

View file

@ -6,7 +6,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
--- a/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;
struct jffs2_sb_info *c = JFFS2_SB_INFO(old_dir_i->i_sb);
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));
if (d_is_dir(new_dentry)) {
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)
return ret;
@ -49,7 +49,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
/* There was a victim. Kill it off nicely */
if (d_is_dir(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)
/* Replace with whiteout */
ret = jffs2_whiteout(old_dir_i, old_dentry);
@ -62,7 +62,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
else
/* Unlink the original */
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;
}

View file

@ -1,70 +0,0 @@
From: Felix Fietkau <nbd@nbd.name>
Subject: net: phy: at803x: add support for AT8032
Like AT8030, this PHY needs the GPIO reset workaround
Signed-off-by: Felix Fietkau <nbd@nbd.name>
---
--- a/drivers/net/phy/at803x.c
+++ b/drivers/net/phy/at803x.c
@@ -62,6 +62,7 @@
#define ATH8030_PHY_ID 0x004dd076
#define ATH8031_PHY_ID 0x004dd074
+#define ATH8032_PHY_ID 0x004dd023
#define ATH8035_PHY_ID 0x004dd072
MODULE_DESCRIPTION("Atheros 803x PHY driver");
@@ -259,7 +260,8 @@ static int at803x_probe(struct phy_devic
if (!priv)
return -ENOMEM;
- if (phydev->drv->phy_id != ATH8030_PHY_ID)
+ if (phydev->drv->phy_id != ATH8030_PHY_ID &&
+ phydev->drv->phy_id != ATH8032_PHY_ID)
goto does_not_require_reset_workaround;
gpiod_reset = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
@@ -335,7 +337,7 @@ static void at803x_link_change_notify(st
struct at803x_priv *priv = phydev->priv;
/*
- * Conduct a hardware reset for AT8030 every time a link loss is
+ * Conduct a hardware reset for AT8030/2 every time a link loss is
* signalled. This is necessary to circumvent a hardware bug that
* occurs when the cable is unplugged while TX packets are pending
* in the FIFO. In such cases, the FIFO enters an error mode it
@@ -447,6 +449,24 @@ static struct phy_driver at803x_driver[]
.aneg_done = at803x_aneg_done,
.ack_interrupt = &at803x_ack_interrupt,
.config_intr = &at803x_config_intr,
+}, {
+ /* ATHEROS 8032 */
+ .phy_id = ATH8032_PHY_ID,
+ .name = "Atheros 8032 ethernet",
+ .phy_id_mask = 0xffffffef,
+ .probe = at803x_probe,
+ .config_init = at803x_config_init,
+ .link_change_notify = at803x_link_change_notify,
+ .set_wol = at803x_set_wol,
+ .get_wol = at803x_get_wol,
+ .suspend = at803x_suspend,
+ .resume = at803x_resume,
+ .features = PHY_BASIC_FEATURES,
+ .flags = PHY_HAS_INTERRUPT,
+ .config_aneg = genphy_config_aneg,
+ .read_status = genphy_read_status,
+ .ack_interrupt = at803x_ack_interrupt,
+ .config_intr = at803x_config_intr,
} };
module_phy_driver(at803x_driver);
@@ -454,6 +474,7 @@ module_phy_driver(at803x_driver);
static struct mdio_device_id __maybe_unused atheros_tbl[] = {
{ ATH8030_PHY_ID, 0xffffffef },
{ ATH8031_PHY_ID, 0xffffffef },
+ { ATH8032_PHY_ID, 0xffffffef },
{ ATH8035_PHY_ID, 0xffffffef },
{ }
};

View file

@ -1,61 +0,0 @@
From d4c4bc11353f3bea6754f7d21e3612c9f32d1d64 Mon Sep 17 00:00:00 2001
From: Giuseppe Lippolis <giu.lippolis@gmail.com>
Date: Mon, 26 Mar 2018 16:34:39 +0200
Subject: [PATCH] net-usb: add qmi_wwan if on lte modem wistron neweb d18q1
This modem is embedded on dlink dwr-921 router.
The oem configuration states:
T: Bus=02 Lev=01 Prnt=01 Port=00 Cnt=01 Dev#= 2 Spd=480 MxCh= 0
D: Ver= 2.00 Cls=00(>ifc ) Sub=00 Prot=00 MxPS=64 #Cfgs= 1
P: Vendor=1435 ProdID=0918 Rev= 2.32
S: Manufacturer=Android
S: Product=Android
S: SerialNumber=0123456789ABCDEF
C:* #Ifs= 7 Cfg#= 1 Atr=80 MxPwr=500mA
I:* If#= 0 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=ff Prot=ff Driver=option
E: Ad=81(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=01(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 1 Alt= 0 #EPs= 2 Cls=ff(vend.) Sub=42 Prot=01 Driver=(none)
E: Ad=82(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=02(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 2 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=00 Prot=00 Driver=option
E: Ad=84(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
E: Ad=83(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=03(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 3 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=86(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
E: Ad=85(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=04(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 4 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=88(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
E: Ad=87(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=05(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 5 Alt= 0 #EPs= 3 Cls=ff(vend.) Sub=ff Prot=ff Driver=qmi_wwan
E: Ad=8a(I) Atr=03(Int.) MxPS= 64 Ivl=32ms
E: Ad=89(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=06(O) Atr=02(Bulk) MxPS= 512 Ivl=0ms
I:* If#= 6 Alt= 0 #EPs= 2 Cls=08(stor.) Sub=06 Prot=50 Driver=(none)
E: Ad=8b(I) Atr=02(Bulk) MxPS= 512 Ivl=0ms
E: Ad=07(O) Atr=02(Bulk) MxPS= 512 Ivl=125us
Tested on openwrt distribution
Signed-off-by: Giuseppe Lippolis <giu.lippolis@gmail.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
---
drivers/net/usb/qmi_wwan.c | 3 +++
1 file changed, 3 insertions(+)
--- a/drivers/net/usb/qmi_wwan.c
+++ b/drivers/net/usb/qmi_wwan.c
@@ -810,6 +810,9 @@ static const struct usb_device_id produc
{QMI_FIXED_INTF(0x0846, 0x68a2, 8)},
{QMI_FIXED_INTF(0x12d1, 0x140c, 1)}, /* Huawei E173 */
{QMI_FIXED_INTF(0x12d1, 0x14ac, 1)}, /* Huawei E1820 */
+ {QMI_FIXED_INTF(0x1435, 0xd181, 3)}, /* Wistron NeWeb D18Q1 */
+ {QMI_FIXED_INTF(0x1435, 0xd181, 4)}, /* Wistron NeWeb D18Q1 */
+ {QMI_FIXED_INTF(0x1435, 0xd181, 5)}, /* Wistron NeWeb D18Q1 */
{QMI_FIXED_INTF(0x16d8, 0x6003, 0)}, /* CMOTech 6003 */
{QMI_FIXED_INTF(0x16d8, 0x6007, 0)}, /* CMOTech CHE-628S */
{QMI_FIXED_INTF(0x16d8, 0x6008, 0)}, /* CMOTech CMU-301 */

View file

@ -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
@@ -889,6 +889,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 */

View file

@ -87,7 +87,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
@@ -3260,6 +3262,7 @@ static int packet_create(struct net *net
@@ -3262,6 +3264,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
@ -95,7 +95,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
@@ -3873,6 +3876,16 @@ packet_setsockopt(struct socket *sock, i
@@ -3875,6 +3878,16 @@ packet_setsockopt(struct socket *sock, i
po->xmit = val ? packet_direct_xmit : dev_queue_xmit;
return 0;
}
@ -112,7 +112,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
default:
return -ENOPROTOOPT;
}
@@ -3925,6 +3938,13 @@ static int packet_getsockopt(struct sock
@@ -3927,6 +3940,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;

View file

@ -413,7 +413,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
}
static bool ip6_tnl_netlink_encap_parms(struct nlattr *data[],
@@ -2041,6 +2252,12 @@ static void ip6_tnl_dellink(struct net_d
@@ -2045,6 +2256,12 @@ static void ip6_tnl_dellink(struct net_d
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
/* IFLA_IPTUN_LINK */
nla_total_size(4) +
@@ -2068,6 +2285,24 @@ static size_t ip6_tnl_get_size(const str
@@ -2072,6 +2289,24 @@ static size_t ip6_tnl_get_size(const str
nla_total_size(2) +
/* IFLA_IPTUN_COLLECT_METADATA */
nla_total_size(0) +
@ -451,7 +451,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
0;
}
@@ -2075,6 +2310,9 @@ static int ip6_tnl_fill_info(struct sk_b
@@ -2079,6 +2314,9 @@ static int ip6_tnl_fill_info(struct sk_b
{
struct ip6_tnl *tunnel = netdev_priv(dev);
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) ||
nla_put_in6_addr(skb, IFLA_IPTUN_LOCAL, &parm->laddr) ||
@@ -2083,9 +2321,27 @@ static int ip6_tnl_fill_info(struct sk_b
@@ -2087,9 +2325,27 @@ static int ip6_tnl_fill_info(struct sk_b
nla_put_u8(skb, IFLA_IPTUN_ENCAP_LIMIT, parm->encap_limit) ||
nla_put_be32(skb, IFLA_IPTUN_FLOWINFO, parm->flowinfo) ||
nla_put_u32(skb, IFLA_IPTUN_FLAGS, parm->flags) ||
@ -490,7 +490,7 @@ Signed-off-by: Steven Barth <cyrus@openwrt.org>
if (nla_put_u16(skb, IFLA_IPTUN_ENCAP_TYPE, tunnel->encap.type) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_SPORT, tunnel->encap.sport) ||
nla_put_be16(skb, IFLA_IPTUN_ENCAP_DPORT, tunnel->encap.dport) ||
@@ -2123,6 +2379,7 @@ static const struct nla_policy ip6_tnl_p
@@ -2127,6 +2383,7 @@ static const struct nla_policy ip6_tnl_p
[IFLA_IPTUN_ENCAP_SPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_ENCAP_DPORT] = { .type = NLA_U16 },
[IFLA_IPTUN_COLLECT_METADATA] = { .type = NLA_FLAG },

View file

@ -40,7 +40,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
#define AT803X_DEBUG_ADDR 0x1D
#define AT803X_DEBUG_DATA 0x1E
@@ -72,6 +79,7 @@ MODULE_LICENSE("GPL");
@@ -71,6 +78,7 @@ MODULE_LICENSE("GPL");
struct at803x_priv {
bool phy_reset:1;
struct gpio_desc *gpiod_reset;
@ -48,7 +48,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
};
struct at803x_context {
@@ -276,8 +284,16 @@ does_not_require_reset_workaround:
@@ -274,8 +282,16 @@ does_not_require_reset_workaround:
return 0;
}
@ -65,7 +65,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
int ret;
ret = genphy_config_init(phydev);
@@ -298,6 +314,26 @@ static int at803x_config_init(struct phy
@@ -296,6 +312,26 @@ static int at803x_config_init(struct phy
return ret;
}
@ -92,7 +92,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
return 0;
}
@@ -335,6 +371,8 @@ static int at803x_config_intr(struct phy
@@ -333,6 +369,8 @@ static int at803x_config_intr(struct phy
static void at803x_link_change_notify(struct phy_device *phydev)
{
struct at803x_priv *priv = phydev->priv;
@ -100,8 +100,8 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
+ pdata = dev_get_platdata(&phydev->mdio.dev);
/*
* Conduct a hardware reset for AT8030/2 every time a link loss is
@@ -363,6 +401,24 @@ static void at803x_link_change_notify(st
* Conduct a hardware reset for AT8030 every time a link loss is
@@ -361,6 +399,24 @@ static void at803x_link_change_notify(st
} else {
priv->phy_reset = false;
}

View file

@ -24,7 +24,7 @@ Signed-off-by: Roman Yeryomin <roman@advem.lv>
#define AT803X_MODE_CFG_MASK 0x0F
#define AT803X_MODE_CFG_SGMII 0x01
@@ -295,6 +299,27 @@ static int at803x_config_init(struct phy
@@ -293,6 +297,27 @@ static int at803x_config_init(struct phy
{
struct at803x_platform_data *pdata;
int ret;

View file

@ -65,7 +65,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @tf: Target ATA taskfile
@@ -4988,6 +5001,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
@@ -4994,6 +5007,9 @@ struct ata_queued_cmd *ata_qc_new_init(s
if (tag < 0)
return NULL;
}
@ -75,7 +75,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
qc = __ata_qc_from_tag(ap, tag);
qc->tag = tag;
@@ -5889,6 +5905,9 @@ struct ata_port *ata_port_alloc(struct a
@@ -5895,6 +5911,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
@ -85,7 +85,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
ata_sff_port_init(ap);
return ap;
@@ -5910,6 +5929,12 @@ static void ata_host_release(struct devi
@@ -5916,6 +5935,12 @@ static void ata_host_release(struct devi
kfree(ap->pmp_link);
kfree(ap->slave_link);
@ -98,7 +98,7 @@ Signed-off-by: Daniel Golle <daniel@makrotopia.org>
kfree(ap);
host->ports[i] = NULL;
}
@@ -6356,7 +6381,23 @@ int ata_host_register(struct ata_host *h
@@ -6362,7 +6387,23 @@ int ata_host_register(struct ata_host *h
host->ports[i]->print_id = atomic_inc_return(&ata_print_id);
host->ports[i]->local_port_no = i + 1;
}

View file

@ -26,7 +26,7 @@ Signed-off-by: Felix Fietkau <nbd@nbd.name>
{
--- a/lib/Kconfig.debug
+++ b/lib/Kconfig.debug
@@ -396,6 +396,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
@@ -410,6 +410,11 @@ config MAGIC_SYSRQ_DEFAULT_ENABLE
This may be set to 1 or 0 to enable or disable them all, or
to a bitmask as described in Documentation/sysrq.txt.

View file

@ -105,7 +105,7 @@
case UPIO_AU:
p->serial_out(p, offset, value);
p->serial_in(p, UART_LCR); /* safe, no side-effects */
@@ -2759,6 +2779,7 @@ static int serial8250_request_std_resour
@@ -2760,6 +2780,7 @@ static int serial8250_request_std_resour
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:
@ -113,7 +113,7 @@
if (!port->mapbase)
break;
@@ -2797,6 +2818,7 @@ static void serial8250_release_std_resou
@@ -2798,6 +2819,7 @@ static void serial8250_release_std_resou
case UPIO_MEM32BE:
case UPIO_MEM16:
case UPIO_MEM:

View file

@ -411,7 +411,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
#endif /* __SOC_BUS_H */
--- a/include/uapi/linux/if_ether.h
+++ b/include/uapi/linux/if_ether.h
@@ -35,6 +35,7 @@
@@ -36,6 +36,7 @@
#define ETH_DATA_LEN 1500 /* Max. octets in payload */
#define ETH_FRAME_LEN 1514 /* Max. octets in frame sans FCS */
#define ETH_FCS_LEN 4 /* Octets in the FCS */

View file

@ -2060,7 +2060,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
}
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
@@ -4654,3 +4654,11 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_IN
@@ -4659,3 +4659,11 @@ DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_IN
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2031, quirk_no_aersid);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2032, quirk_no_aersid);
DECLARE_PCI_FIXUP_EARLY(PCI_VENDOR_ID_INTEL, 0x2033, quirk_no_aersid);

View file

@ -8267,7 +8267,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
.msi_prepare = its_fsl_mc_msi_prepare,
};
@@ -95,8 +95,8 @@ int __init its_fsl_mc_msi_init(void)
@@ -97,8 +97,8 @@ int __init its_fsl_mc_msi_init(void)
continue;
}

View file

@ -995,7 +995,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
};
struct dmar_atsr_unit {
@@ -4252,27 +4253,40 @@ static inline void init_iommu_pm_ops(voi
@@ -4251,27 +4252,40 @@ static inline void init_iommu_pm_ops(voi
int __init dmar_parse_one_rmrr(struct acpi_dmar_header *header, void *arg)
{
struct acpi_dmar_reserved_memory *rmrr;
@ -1041,7 +1041,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
}
static struct dmar_atsr_unit *dmar_find_atsr(struct acpi_dmar_atsr *atsr)
@@ -4486,6 +4500,7 @@ static void intel_iommu_free_dmars(void)
@@ -4485,6 +4499,7 @@ static void intel_iommu_free_dmars(void)
list_for_each_entry_safe(rmrru, rmrr_n, &dmar_rmrr_units, list) {
list_del(&rmrru->list);
dmar_free_dev_scope(&rmrru->devices, &rmrru->devices_cnt);
@ -1049,7 +1049,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
kfree(rmrru);
}
@@ -5221,6 +5236,45 @@ static void intel_iommu_remove_device(st
@@ -5220,6 +5235,45 @@ static void intel_iommu_remove_device(st
iommu_device_unlink(iommu->iommu_dev, dev);
}
@ -1095,7 +1095,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
#ifdef CONFIG_INTEL_IOMMU_SVM
#define MAX_NR_PASID_BITS (20)
static inline unsigned long intel_iommu_get_pts(struct intel_iommu *iommu)
@@ -5351,19 +5405,21 @@ struct intel_iommu *intel_svm_device_to_
@@ -5350,19 +5404,21 @@ struct intel_iommu *intel_svm_device_to_
#endif /* CONFIG_INTEL_IOMMU_SVM */
static const struct iommu_ops intel_iommu_ops = {

View file

@ -117,12 +117,16 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
}
/*
@@ -1899,9 +1922,13 @@ static int lpuart_probe(struct platform_
@@ -1899,13 +1922,13 @@ static int lpuart_probe(struct platform_
ret = of_alias_get_id(np, "serial");
if (ret < 0) {
- dev_err(&pdev->dev, "failed to get alias id, errno %d\n", ret);
- return ret;
- }
- if (ret >= ARRAY_SIZE(lpuart_ports)) {
- dev_err(&pdev->dev, "serial%d out of range\n", ret);
- return -EINVAL;
+ ret = find_first_zero_bit(linemap, UART_NR);
+ if (ret >= UART_NR) {
+ dev_err(&pdev->dev, "port line is full, add device failed\n");
@ -133,7 +137,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
sport->port.line = ret;
sport->lpuart32 = of_device_is_compatible(np, "fsl,ls1021a-lpuart");
@@ -1983,6 +2010,7 @@ static int lpuart_remove(struct platform
@@ -1987,6 +2010,7 @@ static int lpuart_remove(struct platform
struct lpuart_port *sport = platform_get_drvdata(pdev);
uart_remove_one_port(&lpuart_reg, &sport->port);
@ -141,7 +145,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
clk_disable_unprepare(sport->clk);
@@ -2067,12 +2095,10 @@ static int lpuart_resume(struct device *
@@ -2071,12 +2095,10 @@ static int lpuart_resume(struct device *
if (sport->lpuart_dma_rx_use) {
if (sport->port.irq_wake) {

View file

@ -206,7 +206,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
if (IS_ENABLED(CONFIG_USB_DWC3_HOST))
mode = USB_DR_MODE_HOST;
else if (IS_ENABLED(CONFIG_USB_DWC3_GADGET))
@@ -213,8 +232,9 @@ static void dwc3_frame_length_adjustment
@@ -227,8 +246,9 @@ static void dwc3_frame_length_adjustment
reg = dwc3_readl(dwc->regs, DWC3_GFLADJ);
dft = reg & DWC3_GFLADJ_30MHZ_MASK;
@ -218,7 +218,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
reg &= ~DWC3_GFLADJ_30MHZ_MASK;
reg |= DWC3_GFLADJ_30MHZ_SDBND_SEL | dwc->fladj;
dwc3_writel(dwc->regs, DWC3_GFLADJ, reg);
@@ -585,6 +605,99 @@ static int dwc3_phy_setup(struct dwc3 *d
@@ -599,6 +619,99 @@ static int dwc3_phy_setup(struct dwc3 *d
return 0;
}
@ -318,7 +318,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
static void dwc3_core_exit(struct dwc3 *dwc)
{
dwc3_event_buffers_cleanup(dwc);
@@ -727,6 +840,8 @@ static int dwc3_core_init(struct dwc3 *d
@@ -741,6 +854,8 @@ static int dwc3_core_init(struct dwc3 *d
if (ret)
goto err1;
@ -327,7 +327,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
/* Adjust Frame Length */
dwc3_frame_length_adjustment(dwc);
@@ -925,11 +1040,117 @@ static void dwc3_core_exit_mode(struct d
@@ -939,11 +1054,117 @@ static void dwc3_core_exit_mode(struct d
}
}
@ -445,7 +445,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
struct resource *res;
struct dwc3 *dwc;
u8 lpm_nyet_threshold;
@@ -961,6 +1182,11 @@ static int dwc3_probe(struct platform_de
@@ -975,6 +1196,11 @@ static int dwc3_probe(struct platform_de
dwc->xhci_resources[0].flags = res->flags;
dwc->xhci_resources[0].name = res->name;
@ -457,7 +457,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
res->start += DWC3_GLOBALS_REGS_START;
/*
@@ -1003,6 +1229,12 @@ static int dwc3_probe(struct platform_de
@@ -1017,6 +1243,12 @@ static int dwc3_probe(struct platform_de
dwc->usb3_lpm_capable = device_property_read_bool(dev,
"snps,usb3_lpm_capable");
@ -470,7 +470,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
dwc->disable_scramble_quirk = device_property_read_bool(dev,
"snps,disable_scramble_quirk");
dwc->u2exit_lfps_quirk = device_property_read_bool(dev,
@@ -1047,6 +1279,8 @@ static int dwc3_probe(struct platform_de
@@ -1061,6 +1293,8 @@ static int dwc3_probe(struct platform_de
dwc->hird_threshold = hird_threshold
| (dwc->is_utmi_l1_suspend << 4);
@ -479,7 +479,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
platform_set_drvdata(pdev, dwc);
dwc3_cache_hwparams(dwc);
@@ -1070,6 +1304,11 @@ static int dwc3_probe(struct platform_de
@@ -1084,6 +1318,11 @@ static int dwc3_probe(struct platform_de
if (ret < 0)
goto err1;
@ -542,7 +542,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
#define DWC3_GCTL_PRTCAP(n) (((n) & (3 << 12)) >> 12)
#define DWC3_GCTL_PRTCAPDIR(n) ((n) << 12)
#define DWC3_GCTL_PRTCAP_HOST 1
@@ -292,6 +318,10 @@
@@ -294,6 +320,10 @@
/* Global Frame Length Adjustment Register */
#define DWC3_GFLADJ_30MHZ_SDBND_SEL (1 << 7)
#define DWC3_GFLADJ_30MHZ_MASK 0x3f
@ -553,7 +553,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
/* Global User Control Register 2 */
#define DWC3_GUCTL2_RST_ACTBITLATER (1 << 14)
@@ -756,6 +786,7 @@ struct dwc3_scratchpad_array {
@@ -758,6 +788,7 @@ struct dwc3_scratchpad_array {
* @regs: base address for our registers
* @regs_size: address space size
* @fladj: frame length adjustment
@ -561,7 +561,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
* @irq_gadget: peripheral controller's IRQ number
* @nr_scratch: number of scratch buffers
* @u1u2: only used on revisions <1.83a for workaround
@@ -832,6 +863,7 @@ struct dwc3_scratchpad_array {
@@ -834,6 +865,7 @@ struct dwc3_scratchpad_array {
* 1 - -3.5dB de-emphasis
* 2 - No de-emphasis
* 3 - Reserved
@ -569,7 +569,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
*/
struct dwc3 {
struct usb_ctrlrequest *ctrl_req;
@@ -850,6 +882,7 @@ struct dwc3 {
@@ -852,6 +884,7 @@ struct dwc3 {
spinlock_t lock;
struct device *dev;
@ -577,7 +577,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
struct platform_device *xhci;
struct resource xhci_resources[DWC3_XHCI_RESOURCES_NUM];
@@ -875,6 +908,12 @@ struct dwc3 {
@@ -877,6 +910,12 @@ struct dwc3 {
enum usb_phy_interface hsphy_mode;
u32 fladj;
@ -590,7 +590,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
u32 irq_gadget;
u32 nr_scratch;
u32 u1u2;
@@ -951,9 +990,12 @@ struct dwc3 {
@@ -953,9 +992,12 @@ struct dwc3 {
unsigned ep0_bounced:1;
unsigned ep0_expect_in:1;
unsigned has_hibernation:1;
@ -603,7 +603,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
unsigned pending_events:1;
unsigned pullups_connected:1;
unsigned setup_packet_pending:1;
@@ -974,9 +1016,16 @@ struct dwc3 {
@@ -976,9 +1018,16 @@ struct dwc3 {
unsigned dis_rxdet_inp3_quirk:1;
unsigned dis_u2_freeclk_exists_quirk:1;
unsigned dis_del_phy_power_chg_quirk:1;
@ -822,7 +822,7 @@ Signed-off-by: Yangbo Lu <yangbo.lu@nxp.com>
curr_ep = get_ep_by_pipe(udc, i);
/* If the ep is configured */
- if (curr_ep->name == NULL) {
- if (!curr_ep->ep.name) {
+ if (strncmp(curr_ep->name, "ep", 2)) {
WARNING("Invalid EP?");
continue;

View file

@ -17,7 +17,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
--- a/arch/powerpc/boot/Makefile
+++ b/arch/powerpc/boot/Makefile
@@ -137,6 +137,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
@@ -138,6 +138,7 @@ src-plat-$(CONFIG_PPC_PSERIES) += pserie
src-plat-$(CONFIG_PPC_POWERNV) += pseries-head.S
src-plat-$(CONFIG_PPC_IBM_CELL_BLADE) += pseries-head.S
src-plat-$(CONFIG_MVME7100) += motload-head.S mvme7100.c
@ -25,7 +25,7 @@ Signed-off-by: Gabor Juhos <juhosg@openwrt.org>
src-wlib := $(sort $(src-wlib-y))
src-plat := $(sort $(src-plat-y))
@@ -320,6 +321,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
@@ -321,6 +322,7 @@ image-$(CONFIG_TQM8555) += cuImage.tqm
image-$(CONFIG_TQM8560) += cuImage.tqm8560
image-$(CONFIG_SBC8548) += cuImage.sbc8548
image-$(CONFIG_KSI8560) += cuImage.ksi8560

View file

@ -2317,7 +2317,7 @@
priv->xstats.tx_clean++;
@@ -1393,22 +1394,17 @@ static void stmmac_tx_clean(struct stmma
@@ -1398,22 +1399,17 @@ static void stmmac_tx_clean(struct stmma
netdev_completed_queue(priv->dev, pkts_compl, bytes_compl);
if (unlikely(netif_queue_stopped(priv->dev) &&
@ -2345,7 +2345,7 @@
}
static inline void stmmac_enable_dma_irq(struct stmmac_priv *priv)
@@ -1512,7 +1508,7 @@ static void stmmac_mmc_setup(struct stmm
@@ -1517,7 +1513,7 @@ static void stmmac_mmc_setup(struct stmm
dwmac_mmc_ctrl(priv->mmcaddr, mode);
memset(&priv->mmc, 0, sizeof(struct stmmac_counters));
} else
@ -2354,7 +2354,7 @@
}
/**
@@ -1525,18 +1521,18 @@ static void stmmac_mmc_setup(struct stmm
@@ -1530,18 +1526,18 @@ static void stmmac_mmc_setup(struct stmm
static void stmmac_selec_desc_mode(struct stmmac_priv *priv)
{
if (priv->plat->enh_desc) {
@ -2377,7 +2377,7 @@
priv->hw->desc = &ndesc_ops;
}
}
@@ -1577,8 +1573,8 @@ static void stmmac_check_ether_addr(stru
@@ -1582,8 +1578,8 @@ static void stmmac_check_ether_addr(stru
priv->dev->dev_addr, 0);
if (!is_valid_ether_addr(priv->dev->dev_addr))
eth_hw_addr_random(priv->dev);
@ -2388,7 +2388,7 @@
}
}
@@ -1592,16 +1588,12 @@ static void stmmac_check_ether_addr(stru
@@ -1597,16 +1593,12 @@ static void stmmac_check_ether_addr(stru
*/
static int stmmac_init_dma_engine(struct stmmac_priv *priv)
{
@ -2408,7 +2408,7 @@
}
if (priv->extend_desc && (priv->mode == STMMAC_RING_MODE))
@@ -1613,8 +1605,8 @@ static int stmmac_init_dma_engine(struct
@@ -1618,8 +1610,8 @@ static int stmmac_init_dma_engine(struct
return ret;
}
@ -2419,7 +2419,7 @@
if (priv->synopsys_id >= DWMAC_CORE_4_00) {
priv->rx_tail_addr = priv->dma_rx_phy +
@@ -1686,7 +1678,8 @@ static int stmmac_hw_setup(struct net_de
@@ -1691,7 +1683,8 @@ static int stmmac_hw_setup(struct net_de
/* DMA initialization and SW reset */
ret = stmmac_init_dma_engine(priv);
if (ret < 0) {
@ -2429,7 +2429,7 @@
return ret;
}
@@ -1715,7 +1708,7 @@ static int stmmac_hw_setup(struct net_de
@@ -1720,7 +1713,7 @@ static int stmmac_hw_setup(struct net_de
ret = priv->hw->mac->rx_ipc(priv->hw);
if (!ret) {
@ -2438,7 +2438,7 @@
priv->plat->rx_coe = STMMAC_RX_COE_NONE;
priv->hw->rx_csum = 0;
}
@@ -1740,10 +1733,11 @@ static int stmmac_hw_setup(struct net_de
@@ -1745,10 +1738,11 @@ static int stmmac_hw_setup(struct net_de
#ifdef CONFIG_DEBUG_FS
ret = stmmac_init_fs(dev);
if (ret < 0)
@ -2452,7 +2452,7 @@
priv->hw->dma->start_tx(priv->ioaddr);
priv->hw->dma->start_rx(priv->ioaddr);
@@ -1798,8 +1792,9 @@ static int stmmac_open(struct net_device
@@ -1803,8 +1797,9 @@ static int stmmac_open(struct net_device
priv->hw->pcs != STMMAC_PCS_RTBI) {
ret = stmmac_init_phy(dev);
if (ret) {
@ -2464,7 +2464,7 @@
return ret;
}
}
@@ -1814,33 +1809,36 @@ static int stmmac_open(struct net_device
@@ -1819,33 +1814,36 @@ static int stmmac_open(struct net_device
ret = alloc_dma_desc_resources(priv);
if (ret < 0) {
@ -2508,7 +2508,7 @@
goto init_error;
}
@@ -1849,8 +1847,9 @@ static int stmmac_open(struct net_device
@@ -1854,8 +1852,9 @@ static int stmmac_open(struct net_device
ret = request_irq(priv->wol_irq, stmmac_interrupt,
IRQF_SHARED, dev->name, dev);
if (unlikely(ret < 0)) {
@ -2520,7 +2520,7 @@
goto wolirq_error;
}
}
@@ -1860,8 +1859,9 @@ static int stmmac_open(struct net_device
@@ -1865,8 +1864,9 @@ static int stmmac_open(struct net_device
ret = request_irq(priv->lpi_irq, stmmac_interrupt, IRQF_SHARED,
dev->name, dev);
if (unlikely(ret < 0)) {
@ -2532,7 +2532,7 @@
goto lpiirq_error;
}
}
@@ -1880,8 +1880,8 @@ wolirq_error:
@@ -1885,8 +1885,8 @@ wolirq_error:
init_error:
free_dma_desc_resources(priv);
dma_desc_error:
@ -2543,7 +2543,7 @@
return ret;
}
@@ -1900,10 +1900,9 @@ static int stmmac_release(struct net_dev
@@ -1905,10 +1905,9 @@ static int stmmac_release(struct net_dev
del_timer_sync(&priv->eee_ctrl_timer);
/* Stop and disconnect the PHY */
@ -2557,7 +2557,7 @@
}
netif_stop_queue(dev);
@@ -1963,13 +1962,13 @@ static void stmmac_tso_allocator(struct
@@ -1968,13 +1967,13 @@ static void stmmac_tso_allocator(struct
priv->cur_tx = STMMAC_GET_ENTRY(priv->cur_tx, DMA_TX_SIZE);
desc = priv->dma_tx + priv->cur_tx;
@ -2573,7 +2573,7 @@
0, 0);
tmp_len -= TSO_MAX_BUFF_SIZE;
@@ -2014,8 +2013,6 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2019,8 +2018,6 @@ static netdev_tx_t stmmac_tso_xmit(struc
u8 proto_hdr_len;
int i;
@ -2582,7 +2582,7 @@
/* Compute header lengths */
proto_hdr_len = skb_transport_offset(skb) + tcp_hdrlen(skb);
@@ -2025,9 +2022,10 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2030,9 +2027,10 @@ static netdev_tx_t stmmac_tso_xmit(struc
if (!netif_queue_stopped(dev)) {
netif_stop_queue(dev);
/* This is a hard error, log it. */
@ -2595,7 +2595,7 @@
return NETDEV_TX_BUSY;
}
@@ -2065,11 +2063,11 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2070,11 +2068,11 @@ static netdev_tx_t stmmac_tso_xmit(struc
priv->tx_skbuff_dma[first_entry].len = skb_headlen(skb);
priv->tx_skbuff[first_entry] = skb;
@ -2609,7 +2609,7 @@
/* If needed take extra descriptors to fill the remaining payload */
tmp_pay_len = pay_len - TSO_MAX_BUFF_SIZE;
@@ -2098,8 +2096,8 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2103,8 +2101,8 @@ static netdev_tx_t stmmac_tso_xmit(struc
priv->cur_tx = STMMAC_GET_ENTRY(priv->cur_tx, DMA_TX_SIZE);
if (unlikely(stmmac_tx_avail(priv) <= (MAX_SKB_FRAGS + 1))) {
@ -2620,7 +2620,7 @@
netif_stop_queue(dev);
}
@@ -2143,7 +2141,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2155,7 +2153,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
* descriptor and then barrier is needed to make sure that
* all is coherent before granting the DMA engine.
*/
@ -2629,7 +2629,7 @@
if (netif_msg_pktdata(priv)) {
pr_info("%s: curr=%d dirty=%d f=%d, e=%d, f_p=%p, nfrags %d\n",
@@ -2162,11 +2160,9 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2174,11 +2172,9 @@ static netdev_tx_t stmmac_tso_xmit(struc
priv->hw->dma->set_tx_tail_ptr(priv->ioaddr, priv->tx_tail_addr,
STMMAC_CHAN0);
@ -2641,7 +2641,7 @@
dev_err(priv->device, "Tx dma map failed\n");
dev_kfree_skb(skb);
priv->dev->stats.tx_dropped++;
@@ -2198,14 +2194,13 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2210,14 +2206,13 @@ static netdev_tx_t stmmac_xmit(struct sk
return stmmac_tso_xmit(skb, dev);
}
@ -2659,7 +2659,7 @@
}
return NETDEV_TX_BUSY;
}
@@ -2258,13 +2253,11 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2270,13 +2265,11 @@ static netdev_tx_t stmmac_xmit(struct sk
priv->tx_skbuff[entry] = NULL;
@ -2678,7 +2678,7 @@
priv->tx_skbuff_dma[entry].map_as_page = true;
priv->tx_skbuff_dma[entry].len = len;
@@ -2282,9 +2275,10 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2294,9 +2287,10 @@ static netdev_tx_t stmmac_xmit(struct sk
if (netif_msg_pktdata(priv)) {
void *tx_head;
@ -2692,7 +2692,7 @@
if (priv->extend_desc)
tx_head = (void *)priv->dma_etx;
@@ -2293,13 +2287,13 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2305,13 +2299,13 @@ static netdev_tx_t stmmac_xmit(struct sk
priv->hw->desc->display_ring(tx_head, DMA_TX_SIZE, false);
@ -2709,7 +2709,7 @@
netif_stop_queue(dev);
}
@@ -2335,13 +2329,11 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2347,13 +2341,11 @@ static netdev_tx_t stmmac_xmit(struct sk
if (dma_mapping_error(priv->device, des))
goto dma_map_err;
@ -2728,7 +2728,7 @@
priv->tx_skbuff_dma[first_entry].len = nopaged_len;
priv->tx_skbuff_dma[first_entry].last_segment = last_segment;
@@ -2362,7 +2354,7 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2374,7 +2366,7 @@ static netdev_tx_t stmmac_xmit(struct sk
* descriptor and then barrier is needed to make sure that
* all is coherent before granting the DMA engine.
*/
@ -2737,7 +2737,7 @@
}
netdev_sent_queue(dev, skb->len);
@@ -2373,12 +2365,10 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2385,12 +2377,10 @@ static netdev_tx_t stmmac_xmit(struct sk
priv->hw->dma->set_tx_tail_ptr(priv->ioaddr, priv->tx_tail_addr,
STMMAC_CHAN0);
@ -2751,7 +2751,7 @@
dev_kfree_skb(skb);
priv->dev->stats.tx_dropped++;
return NETDEV_TX_OK;
@@ -2449,16 +2439,16 @@ static inline void stmmac_rx_refill(stru
@@ -2461,16 +2451,16 @@ static inline void stmmac_rx_refill(stru
DMA_FROM_DEVICE);
if (dma_mapping_error(priv->device,
priv->rx_skbuff_dma[entry])) {
@ -2771,7 +2771,7 @@
}
if (priv->hw->mode->refill_desc3)
priv->hw->mode->refill_desc3(priv, p);
@@ -2466,17 +2456,17 @@ static inline void stmmac_rx_refill(stru
@@ -2478,17 +2468,17 @@ static inline void stmmac_rx_refill(stru
if (priv->rx_zeroc_thresh > 0)
priv->rx_zeroc_thresh--;
@ -2793,7 +2793,7 @@
entry = STMMAC_GET_ENTRY(entry, DMA_RX_SIZE);
}
@@ -2500,7 +2490,7 @@ static int stmmac_rx(struct stmmac_priv
@@ -2512,7 +2502,7 @@ static int stmmac_rx(struct stmmac_priv
if (netif_msg_rx_status(priv)) {
void *rx_head;
@ -2802,7 +2802,7 @@
if (priv->extend_desc)
rx_head = (void *)priv->dma_erx;
else
@@ -2562,9 +2552,9 @@ static int stmmac_rx(struct stmmac_priv
@@ -2574,9 +2564,9 @@ static int stmmac_rx(struct stmmac_priv
unsigned int des;
if (unlikely(priv->synopsys_id >= DWMAC_CORE_4_00))
@ -2814,7 +2814,7 @@
frame_len = priv->hw->desc->get_rx_frame_len(p, coe);
@@ -2573,9 +2563,9 @@ static int stmmac_rx(struct stmmac_priv
@@ -2585,9 +2575,9 @@ static int stmmac_rx(struct stmmac_priv
* ignored
*/
if (frame_len > priv->dma_buf_sz) {
@ -2827,7 +2827,7 @@
priv->dev->stats.rx_length_errors++;
break;
}
@@ -2587,11 +2577,11 @@ static int stmmac_rx(struct stmmac_priv
@@ -2599,11 +2589,11 @@ static int stmmac_rx(struct stmmac_priv
frame_len -= ETH_FCS_LEN;
if (netif_msg_rx_status(priv)) {
@ -2843,7 +2843,7 @@
}
/* The zero-copy is always used for all the sizes
@@ -2628,8 +2618,9 @@ static int stmmac_rx(struct stmmac_priv
@@ -2640,8 +2630,9 @@ static int stmmac_rx(struct stmmac_priv
} else {
skb = priv->rx_skbuff[entry];
if (unlikely(!skb)) {
@ -2855,7 +2855,7 @@
priv->dev->stats.rx_dropped++;
break;
}
@@ -2645,7 +2636,8 @@ static int stmmac_rx(struct stmmac_priv
@@ -2657,7 +2648,8 @@ static int stmmac_rx(struct stmmac_priv
}
if (netif_msg_pktdata(priv)) {
@ -2865,7 +2865,7 @@
print_pkt(skb->data, frame_len);
}
@@ -2748,7 +2740,7 @@ static int stmmac_change_mtu(struct net_
@@ -2760,7 +2752,7 @@ static int stmmac_change_mtu(struct net_
int max_mtu;
if (netif_running(dev)) {
@ -2874,7 +2874,7 @@
return -EBUSY;
}
@@ -2840,7 +2832,7 @@ static irqreturn_t stmmac_interrupt(int
@@ -2852,7 +2844,7 @@ static irqreturn_t stmmac_interrupt(int
pm_wakeup_event(priv->device, 0);
if (unlikely(!dev)) {
@ -2883,7 +2883,7 @@
return IRQ_NONE;
}
@@ -2898,7 +2890,6 @@ static void stmmac_poll_controller(struc
@@ -2910,7 +2902,6 @@ static void stmmac_poll_controller(struc
*/
static int stmmac_ioctl(struct net_device *dev, struct ifreq *rq, int cmd)
{
@ -2891,7 +2891,7 @@
int ret = -EOPNOTSUPP;
if (!netif_running(dev))
@@ -2908,9 +2899,9 @@ static int stmmac_ioctl(struct net_devic
@@ -2920,9 +2911,9 @@ static int stmmac_ioctl(struct net_devic
case SIOCGMIIPHY:
case SIOCGMIIREG:
case SIOCSMIIREG:
@ -2903,7 +2903,7 @@
break;
case SIOCSHWTSTAMP:
ret = stmmac_hwtstamp_ioctl(dev, rq);
@@ -2938,14 +2929,17 @@ static void sysfs_display_ring(void *hea
@@ -2950,14 +2941,17 @@ static void sysfs_display_ring(void *hea
x = *(u64 *) ep;
seq_printf(seq, "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n",
i, (unsigned int)virt_to_phys(ep),
@ -2924,7 +2924,7 @@
p++;
}
seq_printf(seq, "\n");
@@ -2977,6 +2971,8 @@ static int stmmac_sysfs_ring_open(struct
@@ -2989,6 +2983,8 @@ static int stmmac_sysfs_ring_open(struct
return single_open(file, stmmac_sysfs_ring_read, inode->i_private);
}
@ -2933,7 +2933,7 @@
static const struct file_operations stmmac_rings_status_fops = {
.owner = THIS_MODULE,
.open = stmmac_sysfs_ring_open,
@@ -2999,11 +2995,11 @@ static int stmmac_sysfs_dma_cap_read(str
@@ -3011,11 +3007,11 @@ static int stmmac_sysfs_dma_cap_read(str
seq_printf(seq, "\tDMA HW features\n");
seq_printf(seq, "==============================\n");
@ -2948,7 +2948,7 @@
(priv->dma_cap.half_duplex) ? "Y" : "N");
seq_printf(seq, "\tHash Filter: %s\n",
(priv->dma_cap.hash_filter) ? "Y" : "N");
@@ -3021,9 +3017,9 @@ static int stmmac_sysfs_dma_cap_read(str
@@ -3033,9 +3029,9 @@ static int stmmac_sysfs_dma_cap_read(str
(priv->dma_cap.rmon) ? "Y" : "N");
seq_printf(seq, "\tIEEE 1588-2002 Time Stamp: %s\n",
(priv->dma_cap.time_stamp) ? "Y" : "N");
@ -2960,7 +2960,7 @@
(priv->dma_cap.eee) ? "Y" : "N");
seq_printf(seq, "\tAV features: %s\n", (priv->dma_cap.av) ? "Y" : "N");
seq_printf(seq, "\tChecksum Offload in TX: %s\n",
@@ -3070,8 +3066,7 @@ static int stmmac_init_fs(struct net_dev
@@ -3082,8 +3078,7 @@ static int stmmac_init_fs(struct net_dev
priv->dbgfs_dir = debugfs_create_dir(dev->name, stmmac_fs_dir);
if (!priv->dbgfs_dir || IS_ERR(priv->dbgfs_dir)) {
@ -2970,7 +2970,7 @@
return -ENOMEM;
}
@@ -3083,7 +3078,7 @@ static int stmmac_init_fs(struct net_dev
@@ -3095,7 +3090,7 @@ static int stmmac_init_fs(struct net_dev
&stmmac_rings_status_fops);
if (!priv->dbgfs_rings_status || IS_ERR(priv->dbgfs_rings_status)) {
@ -2979,7 +2979,7 @@
debugfs_remove_recursive(priv->dbgfs_dir);
return -ENOMEM;
@@ -3095,7 +3090,7 @@ static int stmmac_init_fs(struct net_dev
@@ -3107,7 +3102,7 @@ static int stmmac_init_fs(struct net_dev
dev, &stmmac_dma_cap_fops);
if (!priv->dbgfs_dma_cap || IS_ERR(priv->dbgfs_dma_cap)) {
@ -2988,7 +2988,7 @@
debugfs_remove_recursive(priv->dbgfs_dir);
return -ENOMEM;
@@ -3167,11 +3162,11 @@ static int stmmac_hw_init(struct stmmac_
@@ -3179,11 +3174,11 @@ static int stmmac_hw_init(struct stmmac_
} else {
if (chain_mode) {
priv->hw->mode = &chain_mode_ops;
@ -3002,7 +3002,7 @@
priv->mode = STMMAC_RING_MODE;
}
}
@@ -3179,7 +3174,7 @@ static int stmmac_hw_init(struct stmmac_
@@ -3191,7 +3186,7 @@ static int stmmac_hw_init(struct stmmac_
/* Get the HW capability (new GMAC newer than 3.50a) */
priv->hw_cap_support = stmmac_get_hw_features(priv);
if (priv->hw_cap_support) {
@ -3011,7 +3011,7 @@
/* We can override some gmac/dma configuration fields: e.g.
* enh_desc, tx_coe (e.g. that are passed through the
@@ -3204,8 +3199,9 @@ static int stmmac_hw_init(struct stmmac_
@@ -3216,8 +3211,9 @@ static int stmmac_hw_init(struct stmmac_
else if (priv->dma_cap.rx_coe_type1)
priv->plat->rx_coe = STMMAC_RX_COE_TYPE1;
@ -3023,7 +3023,7 @@
/* To use alternate (extended), normal or GMAC4 descriptor structures */
if (priv->synopsys_id >= DWMAC_CORE_4_00)
@@ -3215,20 +3211,20 @@ static int stmmac_hw_init(struct stmmac_
@@ -3227,20 +3223,20 @@ static int stmmac_hw_init(struct stmmac_
if (priv->plat->rx_coe) {
priv->hw->rx_csum = priv->plat->rx_coe;
@ -3049,7 +3049,7 @@
return 0;
}
@@ -3287,8 +3283,8 @@ int stmmac_dvr_probe(struct device *devi
@@ -3299,8 +3295,8 @@ int stmmac_dvr_probe(struct device *devi
priv->stmmac_clk = devm_clk_get(priv->device, STMMAC_RESOURCE_NAME);
if (IS_ERR(priv->stmmac_clk)) {
@ -3060,7 +3060,7 @@
/* If failed to obtain stmmac_clk and specific clk_csr value
* is NOT passed from the platform, probe fail.
*/
@@ -3337,7 +3333,7 @@ int stmmac_dvr_probe(struct device *devi
@@ -3349,7 +3345,7 @@ int stmmac_dvr_probe(struct device *devi
if ((priv->plat->tso_en) && (priv->dma_cap.tsoen)) {
ndev->hw_features |= NETIF_F_TSO;
priv->tso = true;
@ -3069,7 +3069,7 @@
}
ndev->features |= ndev->hw_features | NETIF_F_HIGHDMA;
ndev->watchdog_timeo = msecs_to_jiffies(watchdog);
@@ -3357,13 +3353,13 @@ int stmmac_dvr_probe(struct device *devi
@@ -3369,13 +3365,13 @@ int stmmac_dvr_probe(struct device *devi
*/
if ((priv->synopsys_id >= DWMAC_CORE_3_50) && (!priv->plat->riwt_off)) {
priv->use_riwt = 1;
@ -3085,7 +3085,7 @@
/* If a specific clk_csr value is passed from the platform
* this means that the CSR Clock Range selection cannot be
@@ -3384,15 +3380,17 @@ int stmmac_dvr_probe(struct device *devi
@@ -3396,15 +3392,17 @@ int stmmac_dvr_probe(struct device *devi
/* MDIO bus Registration */
ret = stmmac_mdio_register(ndev);
if (ret < 0) {
@ -3107,7 +3107,7 @@
goto error_netdev_register;
}
@@ -3403,7 +3401,7 @@ error_netdev_register:
@@ -3415,7 +3413,7 @@ error_netdev_register:
priv->hw->pcs != STMMAC_PCS_TBI &&
priv->hw->pcs != STMMAC_PCS_RTBI)
stmmac_mdio_unregister(ndev);
@ -3116,7 +3116,7 @@
netif_napi_del(&priv->napi);
error_hw_init:
clk_disable_unprepare(priv->pclk);
@@ -3427,7 +3425,7 @@ int stmmac_dvr_remove(struct device *dev
@@ -3439,7 +3437,7 @@ int stmmac_dvr_remove(struct device *dev
struct net_device *ndev = dev_get_drvdata(dev);
struct stmmac_priv *priv = netdev_priv(ndev);
@ -3125,7 +3125,7 @@
priv->hw->dma->stop_rx(priv->ioaddr);
priv->hw->dma->stop_tx(priv->ioaddr);
@@ -3465,8 +3463,8 @@ int stmmac_suspend(struct device *dev)
@@ -3477,8 +3475,8 @@ int stmmac_suspend(struct device *dev)
if (!ndev || !netif_running(ndev))
return 0;
@ -3136,7 +3136,7 @@
spin_lock_irqsave(&priv->lock, flags);
@@ -3560,8 +3558,8 @@ int stmmac_resume(struct device *dev)
@@ -3572,8 +3570,8 @@ int stmmac_resume(struct device *dev)
spin_unlock_irqrestore(&priv->lock, flags);

View file

@ -418,7 +418,7 @@
};
static void meson8b_dwmac_mask_bits(struct meson8b_dwmac *dwmac, u32 reg,
@@ -179,11 +177,19 @@ static int meson8b_init_prg_eth(struct m
@@ -181,11 +179,19 @@ static int meson8b_init_prg_eth(struct m
{
int ret;
unsigned long clk_rate;
@ -439,7 +439,7 @@
case PHY_INTERFACE_MODE_RGMII_TXID:
/* Generate a 25MHz clock for the PHY */
clk_rate = 25 * 1000 * 1000;
@@ -196,9 +202,8 @@ static int meson8b_init_prg_eth(struct m
@@ -198,9 +204,8 @@ static int meson8b_init_prg_eth(struct m
meson8b_dwmac_mask_bits(dwmac, PRG_ETH0,
PRG_ETH0_INVERTED_RMII_CLK, 0);
@ -450,7 +450,7 @@
break;
case PHY_INTERFACE_MODE_RMII:
@@ -284,6 +289,11 @@ static int meson8b_dwmac_probe(struct pl
@@ -286,6 +291,11 @@ static int meson8b_dwmac_probe(struct pl
goto err_remove_config_dt;
}
@ -1671,7 +1671,7 @@
* stmmac_dma_operation_mode - HW DMA operation mode
* @priv: driver private structure
* Description: it is used for configuring the DMA operation mode register in
@@ -1686,10 +1687,6 @@ static int stmmac_hw_setup(struct net_de
@@ -1691,10 +1692,6 @@ static int stmmac_hw_setup(struct net_de
/* Copy the MAC addr into the HW */
priv->hw->mac->set_umac_addr(priv->hw, dev->dev_addr, 0);
@ -1682,7 +1682,7 @@
/* PS and related bits will be programmed according to the speed */
if (priv->hw->pcs) {
int speed = priv->plat->mac_port_sel_speed;
@@ -1706,6 +1703,10 @@ static int stmmac_hw_setup(struct net_de
@@ -1711,6 +1708,10 @@ static int stmmac_hw_setup(struct net_de
/* Initialize the MAC Core */
priv->hw->mac->core_init(priv->hw, dev->mtu);
@ -1693,7 +1693,7 @@
ret = priv->hw->mac->rx_ipc(priv->hw);
if (!ret) {
netdev_warn(priv->dev, "RX IPC Checksum Offload disabled\n");
@@ -1726,8 +1727,10 @@ static int stmmac_hw_setup(struct net_de
@@ -1731,8 +1732,10 @@ static int stmmac_hw_setup(struct net_de
if (init_ptp) {
ret = stmmac_init_ptp(priv);
@ -1706,7 +1706,7 @@
}
#ifdef CONFIG_DEBUG_FS
@@ -1741,11 +1744,6 @@ static int stmmac_hw_setup(struct net_de
@@ -1746,11 +1749,6 @@ static int stmmac_hw_setup(struct net_de
priv->hw->dma->start_tx(priv->ioaddr);
priv->hw->dma->start_rx(priv->ioaddr);
@ -1718,7 +1718,7 @@
priv->tx_lpi_timer = STMMAC_DEFAULT_TWT_LS;
if ((priv->use_riwt) && (priv->hw->dma->rx_watchdog)) {
@@ -2535,7 +2533,7 @@ static int stmmac_rx(struct stmmac_priv
@@ -2547,7 +2545,7 @@ static int stmmac_rx(struct stmmac_priv
if (unlikely(status == discard_frame)) {
priv->dev->stats.rx_errors++;
if (priv->hwts_rx_en && !priv->extend_desc) {
@ -1727,7 +1727,7 @@
* with timestamp value, hence reinitialize
* them in stmmac_rx_refill() function so that
* device can reuse it.
@@ -2558,7 +2556,7 @@ static int stmmac_rx(struct stmmac_priv
@@ -2570,7 +2568,7 @@ static int stmmac_rx(struct stmmac_priv
frame_len = priv->hw->desc->get_rx_frame_len(p, coe);
@ -1736,7 +1736,7 @@
* (preallocated during init) then the packet is
* ignored
*/
@@ -2778,7 +2776,7 @@ static netdev_features_t stmmac_fix_feat
@@ -2790,7 +2788,7 @@ static netdev_features_t stmmac_fix_feat
/* Some GMAC devices have a bugged Jumbo frame support that
* needs to have the Tx COE disabled for oversized frames
* (due to limited buffer sizes). In this case we disable
@ -1745,7 +1745,7 @@
*/
if (priv->plat->bugged_jumbo && (dev->mtu > ETH_DATA_LEN))
features &= ~NETIF_F_CSUM_MASK;
@@ -2924,9 +2922,7 @@ static void sysfs_display_ring(void *hea
@@ -2936,9 +2934,7 @@ static void sysfs_display_ring(void *hea
struct dma_desc *p = (struct dma_desc *)head;
for (i = 0; i < size; i++) {
@ -1755,7 +1755,7 @@
seq_printf(seq, "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n",
i, (unsigned int)virt_to_phys(ep),
le32_to_cpu(ep->basic.des0),
@@ -2935,7 +2931,6 @@ static void sysfs_display_ring(void *hea
@@ -2947,7 +2943,6 @@ static void sysfs_display_ring(void *hea
le32_to_cpu(ep->basic.des3));
ep++;
} else {
@ -1763,7 +1763,7 @@
seq_printf(seq, "%d [0x%x]: 0x%x 0x%x 0x%x 0x%x\n",
i, (unsigned int)virt_to_phys(ep),
le32_to_cpu(p->des0), le32_to_cpu(p->des1),
@@ -3005,7 +3000,7 @@ static int stmmac_sysfs_dma_cap_read(str
@@ -3017,7 +3012,7 @@ static int stmmac_sysfs_dma_cap_read(str
(priv->dma_cap.hash_filter) ? "Y" : "N");
seq_printf(seq, "\tMultiple MAC address registers: %s\n",
(priv->dma_cap.multi_addr) ? "Y" : "N");
@ -1772,7 +1772,7 @@
(priv->dma_cap.pcs) ? "Y" : "N");
seq_printf(seq, "\tSMA (MDIO) Interface: %s\n",
(priv->dma_cap.sma_mdio) ? "Y" : "N");
@@ -3281,44 +3276,8 @@ int stmmac_dvr_probe(struct device *devi
@@ -3293,44 +3288,8 @@ int stmmac_dvr_probe(struct device *devi
if ((phyaddr >= 0) && (phyaddr <= 31))
priv->plat->phy_addr = phyaddr;
@ -1819,7 +1819,7 @@
/* Init MAC and get the capabilities */
ret = stmmac_hw_init(priv);
@@ -3404,10 +3363,6 @@ error_netdev_register:
@@ -3416,10 +3375,6 @@ error_netdev_register:
error_mdio_register:
netif_napi_del(&priv->napi);
error_hw_init:
@ -1830,7 +1830,7 @@
free_netdev(ndev);
return ret;
@@ -3433,10 +3388,10 @@ int stmmac_dvr_remove(struct device *dev
@@ -3445,10 +3400,10 @@ int stmmac_dvr_remove(struct device *dev
stmmac_set_mac(priv->ioaddr, false);
netif_carrier_off(ndev);
unregister_netdev(ndev);
@ -1845,7 +1845,7 @@
if (priv->hw->pcs != STMMAC_PCS_RGMII &&
priv->hw->pcs != STMMAC_PCS_TBI &&
priv->hw->pcs != STMMAC_PCS_RTBI)
@@ -3485,14 +3440,14 @@ int stmmac_suspend(struct device *dev)
@@ -3497,14 +3452,14 @@ int stmmac_suspend(struct device *dev)
stmmac_set_mac(priv->ioaddr, false);
pinctrl_pm_select_sleep_state(priv->device);
/* Disable clock in case of PWM is off */
@ -1864,7 +1864,7 @@
return 0;
}
EXPORT_SYMBOL_GPL(stmmac_suspend);
@@ -3525,9 +3480,9 @@ int stmmac_resume(struct device *dev)
@@ -3537,9 +3492,9 @@ int stmmac_resume(struct device *dev)
priv->irq_wake = 0;
} else {
pinctrl_pm_select_default_state(priv->device);

File diff suppressed because it is too large Load diff

View file

@ -1491,7 +1491,7 @@
free_dma_tx_desc_resources(priv);
return ret;
@@ -2902,8 +2900,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
@@ -2907,8 +2905,7 @@ static netdev_tx_t stmmac_tso_xmit(struc
priv->xstats.tx_set_ic_bit++;
}
@ -1501,7 +1501,7 @@
if (unlikely((skb_shinfo(skb)->tx_flags & SKBTX_HW_TSTAMP) &&
priv->hwts_tx_en)) {
@@ -2981,7 +2978,7 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -2993,7 +2990,7 @@ static netdev_tx_t stmmac_xmit(struct sk
/* Manage oversized TCP frames for GMAC4 device */
if (skb_is_gso(skb) && priv->tso) {
@ -1510,7 +1510,7 @@
return stmmac_tso_xmit(skb, dev);
}
@@ -3112,8 +3109,7 @@ static netdev_tx_t stmmac_xmit(struct sk
@@ -3124,8 +3121,7 @@ static netdev_tx_t stmmac_xmit(struct sk
priv->xstats.tx_set_ic_bit++;
}
@ -1520,7 +1520,7 @@
/* Ready to fill the first descriptor and set the OWN bit w/o any
* problems because all the descriptors are actually ready to be
@@ -3990,7 +3986,9 @@ static int stmmac_hw_init(struct stmmac_
@@ -4002,7 +3998,9 @@ static int stmmac_hw_init(struct stmmac_
struct mac_device_info *mac;
/* Identify the MAC HW device */
@ -1531,7 +1531,7 @@
priv->dev->priv_flags |= IFF_UNICAST_FLT;
mac = dwmac1000_setup(priv->ioaddr,
priv->plat->multicast_filter_bins,
@@ -4010,6 +4008,10 @@ static int stmmac_hw_init(struct stmmac_
@@ -4022,6 +4020,10 @@ static int stmmac_hw_init(struct stmmac_
priv->hw = mac;
@ -1542,7 +1542,7 @@
/* To use the chained or ring mode */
if (priv->synopsys_id >= DWMAC_CORE_4_00) {
priv->hw->mode = &dwmac4_ring_mode_ops;
@@ -4138,8 +4140,15 @@ int stmmac_dvr_probe(struct device *devi
@@ -4150,8 +4152,15 @@ int stmmac_dvr_probe(struct device *devi
if ((phyaddr >= 0) && (phyaddr <= 31))
priv->plat->phy_addr = phyaddr;
@ -1559,7 +1559,7 @@
/* Init MAC and get the capabilities */
ret = stmmac_hw_init(priv);
@@ -4156,7 +4165,7 @@ int stmmac_dvr_probe(struct device *devi
@@ -4168,7 +4177,7 @@ int stmmac_dvr_probe(struct device *devi
NETIF_F_RXCSUM;
if ((priv->plat->tso_en) && (priv->dma_cap.tsoen)) {
@ -1568,7 +1568,7 @@
priv->tso = true;
dev_info(priv->device, "TSO feature enabled\n");
}
@@ -4318,7 +4327,7 @@ int stmmac_suspend(struct device *dev)
@@ -4330,7 +4339,7 @@ int stmmac_suspend(struct device *dev)
}
spin_unlock_irqrestore(&priv->lock, flags);