KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .137
+LINUX_VERSION-5.4 = .142
-LINUX_KERNEL_HASH-5.4.137 = f09e5e366ce5d8bde887cda229ef17138fd1653706a702221f934f99aaa31f7c
+LINUX_KERNEL_HASH-5.4.142 = 99785728968564ba27c7e552d024b560072dcbc885540912eabb5c021e231451
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
--- a/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
+++ b/drivers/media/usb/dvb-usb-v2/rtl28xxu.c
-@@ -1938,6 +1938,10 @@ static const struct usb_device_id rtl28x
+@@ -1947,6 +1947,10 @@ static const struct usb_device_id rtl28x
&rtl28xxu_props, "Compro VideoMate U650F", NULL) },
{ DVB_USB_DEVICE(USB_VID_KWORLD_2, 0xd394,
&rtl28xxu_props, "MaxMedia HU394-T", NULL) },
--- a/drivers/media/common/videobuf2/videobuf2-core.c
+++ b/drivers/media/common/videobuf2/videobuf2-core.c
-@@ -2073,12 +2073,12 @@ static int __find_plane_by_offset(struct
+@@ -2084,12 +2084,12 @@ static int __find_plane_by_offset(struct
return -EINVAL;
}
struct dma_buf *dbuf;
if (q->memory != VB2_MEMORY_MMAP) {
-@@ -2128,6 +2128,21 @@ int vb2_core_expbuf(struct vb2_queue *q,
+@@ -2139,6 +2139,21 @@ int vb2_core_expbuf(struct vb2_queue *q,
return -EINVAL;
}
* @dma_pfn_offset: offset of DMA memory range relatively of RAM
* @dma_parms: A low level driver may set these to teach IOMMU code about
* segment limitations.
-@@ -1270,7 +1270,7 @@ struct device {
+@@ -1271,7 +1271,7 @@ struct device {
not all hardware supports
64 bit addresses for consistent
allocations such descriptors. */
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
-@@ -1218,6 +1218,59 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struc
+@@ -1216,6 +1216,59 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struc
}
EXPORT_SYMBOL_GPL(v4l2_m2m_ioctl_try_decoder_cmd);
}
schedule_next = _v4l2_m2m_job_finish(m2m_dev, m2m_ctx);
unlock:
-@@ -983,12 +1074,14 @@ struct v4l2_m2m_ctx *v4l2_m2m_ctx_init(s
+@@ -981,12 +1072,14 @@ struct v4l2_m2m_ctx *v4l2_m2m_ctx_init(s
m2m_ctx->priv = drv_priv;
m2m_ctx->m2m_dev = m2m_dev;
init_waitqueue_head(&m2m_ctx->finished);
+++ /dev/null
-From 22198e801db7542c59098a75bdab120bcbc42652 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.com>
-Date: Wed, 30 Sep 2020 19:23:43 +0100
-Subject: [PATCH] USB: gadget: f_hid: avoid crashes and log spam
-
-Disconnecting and reconnecting the USB cable can lead to crashes and a
-variety of kernel log spam. Try to fix or minimise both.
-
-See: https://github.com/raspberrypi/linux/issues/3870
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.com>
----
- drivers/usb/gadget/function/f_hid.c | 18 +++++++++++++++++-
- 1 file changed, 17 insertions(+), 1 deletion(-)
-
---- a/drivers/usb/gadget/function/f_hid.c
-+++ b/drivers/usb/gadget/function/f_hid.c
-@@ -344,6 +344,11 @@ static ssize_t f_hidg_write(struct file
-
- spin_lock_irqsave(&hidg->write_spinlock, flags);
-
-+ if (!hidg->req) {
-+ spin_unlock_irqrestore(&hidg->write_spinlock, flags);
-+ return -ESHUTDOWN;
-+ }
-+
- #define WRITE_COND (!hidg->write_pending)
- try_again:
- /* write queue */
-@@ -364,7 +369,13 @@ try_again:
- count = min_t(unsigned, count, hidg->report_length);
-
- spin_unlock_irqrestore(&hidg->write_spinlock, flags);
-- status = copy_from_user(req->buf, buffer, count);
-+ if (req) {
-+ status = copy_from_user(req->buf, buffer, count);
-+ } else {
-+ ERROR(hidg->func.config->cdev, "hidg->req is NULL\n");
-+ status = -ESHUTDOWN;
-+ goto release_write_pending;
-+ }
-
- if (status != 0) {
- ERROR(hidg->func.config->cdev,
-@@ -393,6 +404,11 @@ try_again:
-
- spin_unlock_irqrestore(&hidg->write_spinlock, flags);
-
-+ if (!hidg->in_ep->enabled) {
-+ ERROR(hidg->func.config->cdev, "in_ep is disabled\n");
-+ status = -ESHUTDOWN;
-+ goto release_write_pending;
-+ }
- status = usb_ep_queue(hidg->in_ep, req, GFP_ATOMIC);
- if (status < 0) {
- ERROR(hidg->func.config->cdev,
+++ /dev/null
-From 5018dc559136e2bca24973e71ed8747adf0f37f3 Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.com>
-Date: Mon, 5 Oct 2020 15:41:15 +0100
-Subject: [PATCH] SQUASH: USB: gadget: f_hid: remove more spam
-
-Tidying up the previous patch to this file dropped the deletion of a
-particularly noisy error message. Restore its removal.
-
-See: https://github.com/raspberrypi/linux/issues/3870
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.com>
----
- drivers/usb/gadget/function/f_hid.c | 2 --
- 1 file changed, 2 deletions(-)
-
---- a/drivers/usb/gadget/function/f_hid.c
-+++ b/drivers/usb/gadget/function/f_hid.c
-@@ -411,8 +411,6 @@ try_again:
- }
- status = usb_ep_queue(hidg->in_ep, req, GFP_ATOMIC);
- if (status < 0) {
-- ERROR(hidg->func.config->cdev,
-- "usb_ep_queue error on int endpoint %zd\n", status);
- goto release_write_pending;
- } else {
- status = count;
--- a/net/netfilter/nf_conntrack_core.c
+++ b/net/netfilter/nf_conntrack_core.c
-@@ -1207,18 +1207,6 @@ static bool gc_worker_can_early_drop(con
+@@ -1212,18 +1212,6 @@ static bool gc_worker_can_early_drop(con
return false;
}
static void gc_worker(struct work_struct *work)
{
unsigned int min_interval = max(HZ / GC_MAX_BUCKETS_DIV, 1u);
-@@ -1255,10 +1243,8 @@ static void gc_worker(struct work_struct
+@@ -1260,10 +1248,8 @@ static void gc_worker(struct work_struct
tmp = nf_ct_tuplehash_to_ctrack(h);
scanned++;
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -1145,6 +1145,64 @@ mt7530_port_vlan_del(struct dsa_switch *
+@@ -1146,6 +1146,64 @@ mt7530_port_vlan_del(struct dsa_switch *
return 0;
}
static enum dsa_tag_protocol
mtk_get_tag_protocol(struct dsa_switch *ds, int port)
{
-@@ -1522,6 +1580,8 @@ static const struct dsa_switch_ops mt753
+@@ -1523,6 +1581,8 @@ static const struct dsa_switch_ops mt753
.port_vlan_prepare = mt7530_port_vlan_prepare,
.port_vlan_add = mt7530_port_vlan_add,
.port_vlan_del = mt7530_port_vlan_del,
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -1085,12 +1085,6 @@ mt7530_port_vlan_add(struct dsa_switch *
+@@ -1086,12 +1086,6 @@ mt7530_port_vlan_add(struct dsa_switch *
struct mt7530_priv *priv = ds->priv;
u16 vid;
mutex_lock(&priv->reg_mutex);
for (vid = vlan->vid_begin; vid <= vlan->vid_end; ++vid) {
-@@ -1116,12 +1110,6 @@ mt7530_port_vlan_del(struct dsa_switch *
+@@ -1117,12 +1111,6 @@ mt7530_port_vlan_del(struct dsa_switch *
struct mt7530_priv *priv = ds->priv;
u16 vid, pvid;
mutex_lock(&priv->reg_mutex);
pvid = priv->ports[port].pvid;
-@@ -1234,6 +1222,7 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1235,6 +1223,7 @@ mt7530_setup(struct dsa_switch *ds)
* as two netdev instances.
*/
dn = ds->ports[MT7530_CPU_PORT].master->dev.of_node->parent;
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -427,34 +427,32 @@ mt7530_pad_clk_setup(struct dsa_switch *
+@@ -428,34 +428,32 @@ mt7530_pad_clk_setup(struct dsa_switch *
TD_DM_DRVP(8) | TD_DM_DRVN(8));
/* Setup core clock for MT7530 */
} \
\
/* __*init sections */ \
-@@ -904,6 +914,8 @@
+@@ -905,6 +915,8 @@
EXIT_TEXT \
EXIT_DATA \
EXIT_CALL \
+++ /dev/null
-From 8c9254d41881c81bea610193c6ac59c8cb8b79fe Mon Sep 17 00:00:00 2001
-From: Florian Eckert <fe@dev.tdt.de>
-Date: Fri, 27 Mar 2020 16:11:55 +0100
-Subject: [PATCH] Revert "platform/x86: pcengines-apuv2: wire up simswitch gpio
- as led"
-
-This reverts commit 5037d4ddda31c2dbbb018109655f61054b1756dc.
-
-Commit message from linux:
-The APU3+ boards have two SIM sockets, while only one of them
-can be routed to the mpcie slots at a time. Selection is done
-via simswap gpio.
-
-We currently don't have a fitting subsystem for those cases yet,
-so just wire it up to a LED for the time being. While this isn't
-really semantically correct, it's a good compromise.
-
-Explanation why this does not work:
-This change connects the simswap to the LED subsystem of the kernel.
-From my point of view, it's nonsense. If we do it this way, then this
-can be switched relatively easily via the LED subsystem (trigger:
-none/default-on) and that is dangerous! If this is used, it would be
-unfavorable, since there is also another trigger (trigger: heartbeat/netdev).
-This LED also appears in the LuCI and can therefore be switched by the user.
-
-Therefore, this simswap GPIO should remain in the GPIO
-subsystem and be switched via it and not be connected to the LED
-subsystem. To avoid the problems mentioned above. The LED subsystem is
-not made for this and it is not a good compromise, but rather dangerous.
-
-Signed-off-by: Florian Eckert <fe@dev.tdt.de>
----
- drivers/platform/x86/pcengines-apuv2.c | 5 +----
- 1 file changed, 1 insertion(+), 4 deletions(-)
-
---- a/drivers/platform/x86/pcengines-apuv2.c
-+++ b/drivers/platform/x86/pcengines-apuv2.c
-@@ -77,8 +77,7 @@ static const struct amd_fch_gpio_pdata b
- static const struct gpio_led apu2_leds[] = {
- { .name = "apu:green:1" },
- { .name = "apu:green:2" },
-- { .name = "apu:green:3" },
-- { .name = "apu:simswap" },
-+ { .name = "apu:green:3" }
- };
-
- static const struct gpio_led_platform_data apu2_leds_pdata = {
-@@ -95,8 +94,6 @@ static struct gpiod_lookup_table gpios_l
- NULL, 1, GPIO_ACTIVE_LOW),
- GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_LED3,
- NULL, 2, GPIO_ACTIVE_LOW),
-- GPIO_LOOKUP_IDX(AMD_FCH_GPIO_DRIVER_NAME, APU2_GPIO_LINE_SIMSWAP,
-- NULL, 3, GPIO_ACTIVE_LOW),
- }
- };
-
#define PPP_VERSION "2.4.2"
/*
-@@ -1362,12 +1367,37 @@ static void ppp_dev_priv_destructor(stru
+@@ -1373,12 +1378,37 @@ static void ppp_dev_priv_destructor(stru
ppp_destroy_interface(ppp);
}
Signed-off-by: René van Dorst <opensource@vdorst.com>
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -1409,9 +1409,13 @@ static void mt7530_phylink_mac_config(st
+@@ -1410,9 +1410,13 @@ static void mt7530_phylink_mac_config(st
switch (state->speed) {
case SPEED_1000:
mcr_new |= PMCR_FORCE_SPEED_1000;
break;
}
if (state->duplex == DUPLEX_FULL) {
-@@ -1547,6 +1551,54 @@ mt7530_phylink_mac_link_state(struct dsa
+@@ -1548,6 +1552,54 @@ mt7530_phylink_mac_link_state(struct dsa
return 1;
}
static const struct dsa_switch_ops mt7530_switch_ops = {
.get_tag_protocol = mtk_get_tag_protocol,
.setup = mt7530_setup,
-@@ -1574,6 +1626,8 @@ static const struct dsa_switch_ops mt753
+@@ -1575,6 +1627,8 @@ static const struct dsa_switch_ops mt753
.phylink_mac_config = mt7530_phylink_mac_config,
.phylink_mac_link_down = mt7530_phylink_mac_link_down,
.phylink_mac_link_up = mt7530_phylink_mac_link_up,
* All 3.1 IP version constants are greater than the 3.0 IP
--- a/drivers/usb/dwc3/gadget.c
+++ b/drivers/usb/dwc3/gadget.c
-@@ -3578,6 +3578,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
+@@ -3656,6 +3656,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.lpm_capable = true;
struct ethtool_eee *p = &priv->dev->ports[port].eee;
--- a/drivers/net/dsa/lantiq_gswip.c
+++ b/drivers/net/dsa/lantiq_gswip.c
-@@ -1657,7 +1657,9 @@ static void gswip_phylink_mac_link_down(
+@@ -1663,7 +1663,9 @@ static void gswip_phylink_mac_link_down(
static void gswip_phylink_mac_link_up(struct dsa_switch *ds, int port,
unsigned int mode,
phy_interface_t interface,
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -1442,7 +1442,9 @@ static void mt7530_phylink_mac_link_down
+@@ -1443,7 +1443,9 @@ static void mt7530_phylink_mac_link_down
static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
unsigned int mode,
phy_interface_t interface,
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -488,17 +488,6 @@ mt7530_mib_reset(struct dsa_switch *ds)
+@@ -489,17 +489,6 @@ mt7530_mib_reset(struct dsa_switch *ds)
mt7530_write(priv, MT7530_MIB_CCR, CCR_MIB_ACTIVATE);
}
static int mt7530_phy_read(struct dsa_switch *ds, int port, int regnum)
{
struct mt7530_priv *priv = ds->priv;
-@@ -672,7 +661,7 @@ mt7530_port_enable(struct dsa_switch *ds
+@@ -673,7 +662,7 @@ mt7530_port_enable(struct dsa_switch *ds
priv->ports[port].enable = true;
mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
priv->ports[port].pm);
mutex_unlock(&priv->reg_mutex);
-@@ -695,7 +684,7 @@ mt7530_port_disable(struct dsa_switch *d
+@@ -696,7 +685,7 @@ mt7530_port_disable(struct dsa_switch *d
priv->ports[port].enable = false;
mt7530_rmw(priv, MT7530_PCR_P(port), PCR_MATRIX_MASK,
PCR_MATRIX_CLR);
mutex_unlock(&priv->reg_mutex);
}
-@@ -1397,8 +1386,7 @@ static void mt7530_phylink_mac_config(st
+@@ -1398,8 +1387,7 @@ static void mt7530_phylink_mac_config(st
mcr_cur = mt7530_read(priv, MT7530_PMCR_P(port));
mcr_new = mcr_cur;
mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
PMCR_BACKPR_EN | PMCR_FORCE_MODE;
-@@ -1406,26 +1394,6 @@ static void mt7530_phylink_mac_config(st
+@@ -1407,26 +1395,6 @@ static void mt7530_phylink_mac_config(st
if (port == 5 && dsa_is_user_port(ds, 5))
mcr_new |= PMCR_EXT_PHY;
if (mcr_new != mcr_cur)
mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
}
-@@ -1436,7 +1404,7 @@ static void mt7530_phylink_mac_link_down
+@@ -1437,7 +1405,7 @@ static void mt7530_phylink_mac_link_down
{
struct mt7530_priv *priv = ds->priv;
}
static void mt7530_phylink_mac_link_up(struct dsa_switch *ds, int port,
-@@ -1447,8 +1415,31 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1448,8 +1416,31 @@ static void mt7530_phylink_mac_link_up(s
bool tx_pause, bool rx_pause)
{
struct mt7530_priv *priv = ds->priv;
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -372,8 +372,9 @@ mt7530_fdb_write(struct mt7530_priv *pri
+@@ -373,8 +373,9 @@ mt7530_fdb_write(struct mt7530_priv *pri
mt7530_write(priv, MT7530_ATA1 + (i * 4), reg[i]);
}
{
struct mt7530_priv *priv = ds->priv;
u32 ncpo1, ssc_delta, trgint, i, xtal;
-@@ -387,7 +388,7 @@ mt7530_pad_clk_setup(struct dsa_switch *
+@@ -388,7 +389,7 @@ mt7530_pad_clk_setup(struct dsa_switch *
return -EINVAL;
}
case PHY_INTERFACE_MODE_RGMII:
trgint = 0;
/* PLL frequency: 125MHz */
-@@ -409,7 +410,8 @@ mt7530_pad_clk_setup(struct dsa_switch *
+@@ -410,7 +411,8 @@ mt7530_pad_clk_setup(struct dsa_switch *
}
break;
default:
return -EINVAL;
}
-@@ -1334,12 +1336,11 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1335,12 +1337,11 @@ mt7530_setup(struct dsa_switch *ds)
return 0;
}
switch (port) {
case 0: /* Internal phy */
-@@ -1348,33 +1349,114 @@ static void mt7530_phylink_mac_config(st
+@@ -1349,33 +1350,114 @@ static void mt7530_phylink_mac_config(st
case 3:
case 4:
if (state->interface != PHY_INTERFACE_MODE_GMII)
return;
}
-@@ -1442,61 +1524,44 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1443,61 +1525,44 @@ static void mt7530_phylink_mac_link_up(s
mt7530_set(priv, MT7530_PMCR_P(port), mcr);
}
phylink_set(mask, Pause);
phylink_set(mask, Asym_Pause);
-@@ -1592,12 +1657,45 @@ static int mt7530_set_mac_eee(struct dsa
+@@ -1593,12 +1658,45 @@ static int mt7530_set_mac_eee(struct dsa
return 0;
}
.get_ethtool_stats = mt7530_get_ethtool_stats,
.get_sset_count = mt7530_get_sset_count,
.port_enable = mt7530_port_enable,
-@@ -1614,18 +1712,43 @@ static const struct dsa_switch_ops mt753
+@@ -1615,18 +1713,43 @@ static const struct dsa_switch_ops mt753
.port_vlan_del = mt7530_port_vlan_del,
.port_mirror_add = mt7530_port_mirror_add,
.port_mirror_del = mt7530_port_mirror_del,
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(of, mt7530_of_match);
-@@ -1663,8 +1786,21 @@ mt7530_probe(struct mdio_device *mdiodev
+@@ -1664,8 +1787,21 @@ mt7530_probe(struct mdio_device *mdiodev
/* Get the hardware identifier from the devicetree node.
* We will need it for some of the clock and regulator setup.
*/
--- a/drivers/net/dsa/mt7530.c
+++ b/drivers/net/dsa/mt7530.c
-@@ -234,6 +234,12 @@ mt7530_write(struct mt7530_priv *priv, u
+@@ -235,6 +235,12 @@ mt7530_write(struct mt7530_priv *priv, u
}
static u32
_mt7530_read(struct mt7530_dummy_poll *p)
{
struct mii_bus *bus = p->priv->bus;
-@@ -481,6 +487,108 @@ mt7530_pad_clk_setup(struct dsa_switch *
+@@ -482,6 +488,108 @@ mt7530_pad_clk_setup(struct dsa_switch *
return 0;
}
static void
mt7530_mib_reset(struct dsa_switch *ds)
{
-@@ -505,6 +613,217 @@ static int mt7530_phy_write(struct dsa_s
+@@ -506,6 +614,217 @@ static int mt7530_phy_write(struct dsa_s
return mdiobus_write_nested(priv->bus, port, regnum, val);
}
static void
mt7530_get_strings(struct dsa_switch *ds, int port, u32 stringset,
uint8_t *data)
-@@ -621,9 +940,14 @@ unlock_exit:
+@@ -622,9 +941,14 @@ unlock_exit:
}
static int
/* Enable Mediatek header mode on the cpu port */
mt7530_write(priv, MT7530_PVC_P(port),
PORT_SPEC_TAG);
-@@ -636,7 +960,7 @@ mt7530_cpu_port_enable(struct mt7530_pri
+@@ -637,7 +961,7 @@ mt7530_cpu_port_enable(struct mt7530_pri
mt7530_rmw(priv, MT7530_MFC, CPU_MASK, CPU_EN | CPU_PORT(port));
/* CPU port gets connected to all user ports of
*/
mt7530_write(priv, MT7530_PCR_P(port),
PCR_MATRIX(dsa_user_ports(priv->ds)));
-@@ -1122,27 +1446,42 @@ mt7530_port_vlan_del(struct dsa_switch *
+@@ -1123,27 +1447,42 @@ mt7530_port_vlan_del(struct dsa_switch *
return 0;
}
val = mt7530_read(priv, MT7530_PCR_P(port));
if (ingress) {
-@@ -1157,7 +1496,7 @@ static int mt7530_port_mirror_add(struct
+@@ -1158,7 +1497,7 @@ static int mt7530_port_mirror_add(struct
return 0;
}
struct dsa_mall_mirror_tc_entry *mirror)
{
struct mt7530_priv *priv = ds->priv;
-@@ -1174,9 +1513,9 @@ static void mt7530_port_mirror_del(struc
+@@ -1175,9 +1514,9 @@ static void mt7530_port_mirror_del(struc
mt7530_write(priv, MT7530_PCR_P(port), val);
if (!priv->mirror_rx && !priv->mirror_tx) {
}
}
-@@ -1282,7 +1621,7 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1283,7 +1622,7 @@ mt7530_setup(struct dsa_switch *ds)
PCR_MATRIX_CLR);
if (dsa_is_cpu_port(ds, i))
else
mt7530_port_disable(ds, i);
-@@ -1336,6 +1675,118 @@ mt7530_setup(struct dsa_switch *ds)
+@@ -1337,6 +1676,118 @@ mt7530_setup(struct dsa_switch *ds)
return 0;
}
static bool
mt7530_phy_mode_supported(struct dsa_switch *ds, int port,
const struct phylink_link_state *state)
-@@ -1374,6 +1825,47 @@ unsupported:
+@@ -1375,6 +1826,47 @@ unsupported:
return false;
}
static bool
mt753x_phy_mode_supported(struct dsa_switch *ds, int port,
const struct phylink_link_state *state)
-@@ -1406,6 +1898,227 @@ mt7530_mac_config(struct dsa_switch *ds,
+@@ -1407,6 +1899,227 @@ mt7530_mac_config(struct dsa_switch *ds,
return 0;
}
static int
mt753x_mac_config(struct dsa_switch *ds, int port, unsigned int mode,
const struct phylink_link_state *state)
-@@ -1441,6 +2154,8 @@ mt753x_phylink_mac_config(struct dsa_swi
+@@ -1442,6 +2155,8 @@ mt753x_phylink_mac_config(struct dsa_swi
if (mt753x_mac_config(ds, port, mode, state) < 0)
goto unsupported;
break;
case 6: /* 1st cpu port */
if (priv->p6_interface == state->interface)
-@@ -1460,7 +2175,8 @@ unsupported:
+@@ -1461,7 +2176,8 @@ unsupported:
return;
}
dev_err(ds->dev, "%s: in-band negotiation unsupported\n",
__func__);
return;
-@@ -1470,7 +2186,7 @@ unsupported:
+@@ -1471,7 +2187,7 @@ unsupported:
mcr_new = mcr_cur;
mcr_new &= ~PMCR_LINK_SETTINGS_MASK;
mcr_new |= PMCR_IFG_XMIT(1) | PMCR_MAC_MODE | PMCR_BACKOFF_EN |
/* Are we connected to external phy */
if (port == 5 && dsa_is_user_port(ds, 5))
-@@ -1480,7 +2196,18 @@ unsupported:
+@@ -1481,7 +2197,18 @@ unsupported:
mt7530_write(priv, MT7530_PMCR_P(port), mcr_new);
}
unsigned int mode,
phy_interface_t interface)
{
-@@ -1489,7 +2216,19 @@ static void mt7530_phylink_mac_link_down
+@@ -1490,7 +2217,19 @@ static void mt7530_phylink_mac_link_down
mt7530_clear(priv, MT7530_PMCR_P(port), PMCR_LINK_SETTINGS_MASK);
}
unsigned int mode,
phy_interface_t interface,
struct phy_device *phydev,
-@@ -1499,18 +2238,29 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1500,18 +2239,29 @@ static void mt7530_phylink_mac_link_up(s
struct mt7530_priv *priv = ds->priv;
u32 mcr;
break;
}
if (duplex == DUPLEX_FULL) {
-@@ -1524,6 +2274,45 @@ static void mt7530_phylink_mac_link_up(s
+@@ -1525,6 +2275,45 @@ static void mt7530_phylink_mac_link_up(s
mt7530_set(priv, MT7530_PMCR_P(port), mcr);
}
static void
mt7530_mac_port_validate(struct dsa_switch *ds, int port,
unsigned long *supported)
-@@ -1532,6 +2321,14 @@ mt7530_mac_port_validate(struct dsa_swit
+@@ -1533,6 +2322,14 @@ mt7530_mac_port_validate(struct dsa_swit
phylink_set(supported, 1000baseX_Full);
}
static void
mt753x_phylink_validate(struct dsa_switch *ds, int port,
unsigned long *supported,
-@@ -1548,7 +2345,8 @@ mt753x_phylink_validate(struct dsa_switc
+@@ -1549,7 +2346,8 @@ mt753x_phylink_validate(struct dsa_switc
phylink_set_port_modes(mask);
phylink_set(mask, 10baseT_Half);
phylink_set(mask, 10baseT_Full);
phylink_set(mask, 100baseT_Half);
-@@ -1567,6 +2365,11 @@ mt753x_phylink_validate(struct dsa_switc
+@@ -1568,6 +2366,11 @@ mt753x_phylink_validate(struct dsa_switc
linkmode_and(supported, supported, mask);
linkmode_and(state->advertising, state->advertising, mask);
}
static int
-@@ -1657,6 +2460,63 @@ static int mt7530_set_mac_eee(struct dsa
+@@ -1658,6 +2461,63 @@ static int mt7530_set_mac_eee(struct dsa
return 0;
}
static int
mt753x_phylink_mac_link_state(struct dsa_switch *ds, int port,
struct phylink_link_state *state)
-@@ -1710,13 +2570,14 @@ static const struct dsa_switch_ops mt753
+@@ -1711,13 +2571,14 @@ static const struct dsa_switch_ops mt753
.port_vlan_prepare = mt7530_port_vlan_prepare,
.port_vlan_add = mt7530_port_vlan_add,
.port_vlan_del = mt7530_port_vlan_del,
.get_mac_eee = mt7530_get_mac_eee,
.set_mac_eee = mt7530_set_mac_eee,
};
-@@ -1744,11 +2605,26 @@ static const struct mt753x_info mt753x_t
+@@ -1745,11 +2606,26 @@ static const struct mt753x_info mt753x_t
.mac_port_get_state = mt7530_phylink_mac_link_state,
.mac_port_config = mt7530_mac_config,
},
},
[PORT_NPCM] = {
.name = "Nuvoton 16550",
-@@ -2591,6 +2591,11 @@ serial8250_do_set_termios(struct uart_po
+@@ -2597,6 +2597,11 @@ serial8250_do_set_termios(struct uart_po
unsigned long flags;
unsigned int baud, quot, frac = 0;
/* J6 */
--- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
+++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
-@@ -126,10 +126,6 @@
+@@ -127,10 +127,6 @@
};
};
reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
--- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
+++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
-@@ -132,7 +132,6 @@
+@@ -133,7 +133,6 @@
status = "okay";
max-link-speed = <2>;
reset-gpios = <&gpiosb 3 GPIO_ACTIVE_LOW>;
--- a/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
+++ b/arch/arm64/boot/dts/marvell/armada-3720-turris-mox.dts
-@@ -130,7 +130,6 @@
+@@ -131,7 +131,6 @@
pinctrl-names = "default";
pinctrl-0 = <&pcie_reset_pins &pcie_clkreq_pins>;
status = "okay";
--- a/drivers/pci/controller/pci-mvebu.c
+++ b/drivers/pci/controller/pci-mvebu.c
-@@ -928,6 +928,7 @@ static int mvebu_pcie_powerup(struct mve
+@@ -936,6 +936,7 @@ static int mvebu_pcie_powerup(struct mve
if (port->reset_gpio) {
u32 reset_udelay = PCI_PM_D3COLD_WAIT * 1000;
of_property_read_u32(port->dn, "reset-delay-us",
&reset_udelay);
-@@ -935,7 +936,13 @@ static int mvebu_pcie_powerup(struct mve
+@@ -943,7 +944,13 @@ static int mvebu_pcie_powerup(struct mve
udelay(100);
gpiod_set_value_cansleep(port->reset_gpio, 0);
}
return 0;
-@@ -1099,15 +1106,16 @@ static int mvebu_pcie_probe(struct platf
+@@ -1107,15 +1114,16 @@ static int mvebu_pcie_probe(struct platf
if (!child)
continue;
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/uaccess.h>
-@@ -4335,6 +4336,22 @@ static void rtl_tally_reset(struct r8152
+@@ -4336,6 +4337,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
}
static void r8152b_init(struct r8152 *tp)
{
u32 ocp_data;
-@@ -4376,6 +4393,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -4377,6 +4394,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
}
static void r8153_init(struct r8152 *tp)
-@@ -4510,6 +4529,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -4511,6 +4530,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW;
break;
}
}
static void r8153b_init(struct r8152 *tp)
-@@ -4586,6 +4607,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -4587,6 +4608,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */
--- a/drivers/platform/x86/pcengines-apuv2.c
+++ b/drivers/platform/x86/pcengines-apuv2.c
-@@ -186,6 +186,33 @@ static const struct dmi_system_id apu_gp
+@@ -188,6 +188,33 @@ static const struct dmi_system_id apu_gp
},
.driver_data = (void *)&board_apu2,
},