KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .80
+LINUX_VERSION-5.4 = .81
-LINUX_KERNEL_HASH-5.4.80 = 49da425c1f3c530fd3ff31d85a0461f6b6dc6e459f7faf3eee23e49a98ce64c7
+LINUX_KERNEL_HASH-5.4.81 = 9470bde475726996202d845a5fc3bc8bd3bb546bbc6816fb663fa73df25d8427
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
/* Read as many bytes as possible from FIFO */
bcm2835_rd_fifo(bs);
/* Write as many bytes as possible to FIFO */
-@@ -1334,7 +1338,8 @@ static int bcm2835_spi_probe(struct plat
+@@ -1330,7 +1334,8 @@ static int bcm2835_spi_probe(struct plat
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1245,6 +1248,9 @@
+@@ -1253,6 +1256,9 @@
#define USB_VENDOR_ID_XAT 0x2505
#define USB_DEVICE_ID_XAT_CSR 0x0220
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL },
{ HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL },
-@@ -184,6 +185,7 @@ static const struct hid_device_id hid_qu
+@@ -189,6 +190,7 @@ static const struct hid_device_id hid_qu
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP_LTD2, USB_DEVICE_ID_SMARTJOY_DUAL_PLUS), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT },
{ HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT },
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2378,7 +2378,14 @@ static int mv88e6xxx_setup_upstream_port
+@@ -2380,7 +2380,14 @@ static int mv88e6xxx_setup_upstream_port
if (chip->info->ops->set_egress_port) {
err = chip->info->ops->set_egress_port(chip,
#define MV88E6XXX_CASCADE_PORT_MULTIPLE 0xf
--- a/drivers/net/dsa/mv88e6xxx/global1.c
+++ b/drivers/net/dsa/mv88e6xxx/global1.c
-@@ -263,7 +263,9 @@ int mv88e6250_g1_ieee_pri_map(struct mv8
+@@ -294,7 +294,9 @@ int mv88e6250_g1_ieee_pri_map(struct mv8
/* Offset 0x1a: Monitor Control */
/* Offset 0x1a: Monitor & MGMT Control on some devices */
{
u16 reg;
int err;
-@@ -272,11 +274,20 @@ int mv88e6095_g1_set_egress_port(struct
+@@ -303,11 +305,20 @@ int mv88e6095_g1_set_egress_port(struct
if (err)
return err;
return mv88e6xxx_g1_write(chip, MV88E6185_G1_MONITOR_CTL, reg);
}
-@@ -310,17 +321,24 @@ static int mv88e6390_g1_monitor_write(st
+@@ -341,17 +352,24 @@ static int mv88e6390_g1_monitor_write(st
return mv88e6xxx_g1_write(chip, MV88E6390_G1_MONITOR_MGMT_CTL, reg);
}
return err;
--- a/drivers/net/dsa/mv88e6xxx/global1.h
+++ b/drivers/net/dsa/mv88e6xxx/global1.h
-@@ -288,8 +288,12 @@ int mv88e6095_g1_stats_set_histogram(str
+@@ -289,8 +289,12 @@ int mv88e6095_g1_stats_set_histogram(str
int mv88e6390_g1_stats_set_histogram(struct mv88e6xxx_chip *chip);
void mv88e6xxx_g1_stats_read(struct mv88e6xxx_chip *chip, int stat, u32 *val);
int mv88e6xxx_g1_stats_clear(struct mv88e6xxx_chip *chip);
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -4920,6 +4920,80 @@ static int mv88e6xxx_port_mdb_del(struct
+@@ -4922,6 +4922,80 @@ static int mv88e6xxx_port_mdb_del(struct
return err;
}
static int mv88e6xxx_port_egress_floods(struct dsa_switch *ds, int port,
bool unicast, bool multicast)
{
-@@ -4974,6 +5048,8 @@ static const struct dsa_switch_ops mv88e
+@@ -4976,6 +5050,8 @@ static const struct dsa_switch_ops mv88e
.port_mdb_prepare = mv88e6xxx_port_mdb_prepare,
.port_mdb_add = mv88e6xxx_port_mdb_add,
.port_mdb_del = mv88e6xxx_port_mdb_del,
--- a/drivers/net/dsa/mv88e6xxx/global1.c
+++ b/drivers/net/dsa/mv88e6xxx/global1.c
-@@ -267,6 +267,7 @@ int mv88e6095_g1_set_egress_port(struct
+@@ -298,6 +298,7 @@ int mv88e6095_g1_set_egress_port(struct
enum mv88e6xxx_egress_direction direction,
int port)
{
u16 reg;
int err;
-@@ -276,11 +277,13 @@ int mv88e6095_g1_set_egress_port(struct
+@@ -307,11 +308,13 @@ int mv88e6095_g1_set_egress_port(struct
switch (direction) {
case MV88E6XXX_EGRESS_DIR_INGRESS:
reg &= MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK;
reg |= port <<
__bf_shf(MV88E6185_G1_MONITOR_CTL_EGRESS_DEST_MASK);
-@@ -289,7 +292,11 @@ int mv88e6095_g1_set_egress_port(struct
+@@ -320,7 +323,11 @@ int mv88e6095_g1_set_egress_port(struct
return -EINVAL;
}
}
/* Older generations also call this the ARP destination. It has been
-@@ -325,14 +332,17 @@ int mv88e6390_g1_set_egress_port(struct
+@@ -356,14 +363,17 @@ int mv88e6390_g1_set_egress_port(struct
enum mv88e6xxx_egress_direction direction,
int port)
{
ptr = MV88E6390_G1_MONITOR_MGMT_CTL_PTR_EGRESS_DEST;
break;
default:
-@@ -340,10 +350,10 @@ int mv88e6390_g1_set_egress_port(struct
+@@ -371,10 +381,10 @@ int mv88e6390_g1_set_egress_port(struct
}
err = mv88e6390_g1_monitor_write(chip, ptr, port);
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -4987,7 +4987,7 @@ static void mv88e6xxx_port_mirror_del(st
+@@ -4989,7 +4989,7 @@ static void mv88e6xxx_port_mirror_del(st
if (chip->info->ops->set_egress_port(chip,
direction,
dsa_upstream_port(ds,
--- a/drivers/net/dsa/mv88e6xxx/global1.c
+++ b/drivers/net/dsa/mv88e6xxx/global1.c
-@@ -278,13 +278,13 @@ int mv88e6095_g1_set_egress_port(struct
+@@ -309,13 +309,13 @@ int mv88e6095_g1_set_egress_port(struct
switch (direction) {
case MV88E6XXX_EGRESS_DIR_INGRESS:
dest_port_chip = &chip->ingress_dest_port;
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2657,6 +2657,7 @@ static int mv88e6xxx_setup(struct dsa_sw
+@@ -2659,6 +2659,7 @@ static int mv88e6xxx_setup(struct dsa_sw
chip->ds = ds;
ds->slave_mii_bus = mv88e6xxx_default_mdio_bus(chip);
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
-@@ -414,6 +414,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
+@@ -422,6 +422,9 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_DEVICE_nGnRnE) | PTE_PXN | PTE_UXN)
#define pgprot_writecombine(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL_NC) | PTE_PXN | PTE_UXN)
--- a/arch/arm64/include/asm/pgtable.h
+++ b/arch/arm64/include/asm/pgtable.h
-@@ -417,6 +417,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
+@@ -425,6 +425,8 @@ static inline pmd_t pmd_mkdevmap(pmd_t p
#define pgprot_cached(prot) \
__pgprot_modify(prot, PTE_ATTRINDX_MASK, PTE_ATTRINDX(MT_NORMAL) | \
PTE_PXN | PTE_UXN)