All patches automatically rebased.
Build system: x86_64
Build-tested: bcm2711/RPi4B, mt7622/RT3200
Run-tested: bcm2711/RPi4B, mt7622/RT3200
Signed-off-by: John Audia <therealgraysky@proton.me>
-LINUX_VERSION-5.15 = .53
-LINUX_KERNEL_HASH-5.15.53 = f3aa717243051f3fcca90ebfe26fe5c3a596c2f6047846e8d1724ea90df77b07
+LINUX_VERSION-5.15 = .54
+LINUX_KERNEL_HASH-5.15.54 = 594f548bb0a73e9c08deef838836c984666709687257a624c5ccaf9ae056ce4d
static int bcm2708_fb_register(struct bcm2708_fb *fb)
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1086,6 +1086,30 @@ fb_blank(struct fb_info *info, int blank
+@@ -1096,6 +1096,30 @@ fb_blank(struct fb_info *info, int blank
}
EXPORT_SYMBOL(fb_blank);
static long do_fb_ioctl(struct fb_info *info, unsigned int cmd,
unsigned long arg)
{
-@@ -1094,6 +1118,7 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1104,6 +1128,7 @@ static long do_fb_ioctl(struct fb_info *
struct fb_fix_screeninfo fix;
struct fb_cmap cmap_from;
struct fb_cmap_user cmap;
void __user *argp = (void __user *)arg;
long ret = 0;
-@@ -1169,6 +1194,15 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1181,6 +1206,15 @@ static long do_fb_ioctl(struct fb_info *
unlock_fb_info(info);
console_unlock();
break;
default:
lock_fb_info(info);
fb = info->fbops;
-@@ -1308,6 +1342,7 @@ static long fb_compat_ioctl(struct file
+@@ -1320,6 +1354,7 @@ static long fb_compat_ioctl(struct file
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17525,6 +17525,14 @@ T: git git://linuxtv.org/media_tree.git
+@@ -17526,6 +17526,14 @@ T: git git://linuxtv.org/media_tree.git
F: Documentation/devicetree/bindings/media/i2c/sony,imx412.yaml
F: drivers/media/i2c/imx412.c
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17539,6 +17539,7 @@ M: Raspberry Pi Kernel Maintenance <kern
+@@ -17540,6 +17540,7 @@ M: Raspberry Pi Kernel Maintenance <kern
L: linux-media@vger.kernel.org
S: Maintained
T: git git://linuxtv.org/media_tree.git
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -1908,6 +1908,8 @@ static const struct usb_audio_quirk_flag
+@@ -1912,6 +1912,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x1224, 0x2a25, /* Jieli Technology USB PHY 2.0 */
QUIRK_FLAG_GET_SAMPLE_RATE),
+...
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -17543,6 +17543,14 @@ F: Documentation/devicetree/bindings/med
+@@ -17544,6 +17544,14 @@ F: Documentation/devicetree/bindings/med
F: Documentation/devicetree/bindings/media/i2c/imx477.yaml
F: drivers/media/i2c/imx477.c
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1616,14 +1616,7 @@ static void do_remove_conflicting_frameb
+@@ -1628,14 +1628,7 @@ static void do_remove_conflicting_frameb
* If it's not a platform device, at least print a warning. A
* fix would add code to remove the device from the system.
*/
#include <linux/seq_file.h>
#include <linux/console.h>
#include <linux/kmod.h>
-@@ -1593,36 +1592,18 @@ static void do_remove_conflicting_frameb
+@@ -1605,36 +1604,18 @@ static void do_remove_conflicting_frameb
/* check all firmware fbs and kick off if the base addr overlaps */
for_each_registered_fb(i) {
struct apertures_struct *gen_aper;
}
}
}
-@@ -1949,13 +1930,9 @@ EXPORT_SYMBOL(register_framebuffer);
+@@ -1961,13 +1942,9 @@ EXPORT_SYMBOL(register_framebuffer);
void
unregister_framebuffer(struct fb_info *fb_info)
{
if (ret)
return ret;
}
-@@ -2105,7 +2112,12 @@ static int qca8k_resume(struct device *d
+@@ -2124,7 +2131,12 @@ static int qca8k_resume(struct device *d
static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
qca8k_suspend, qca8k_resume);
.id = QCA8K_ID_QCA8327,
};
-@@ -2114,7 +2126,8 @@ static const struct qca8k_match_data qca
+@@ -2133,7 +2145,8 @@ static const struct qca8k_match_data qca
};
static const struct of_device_id qca8k_of_match[] = {
mask);
}
-@@ -1916,11 +1911,11 @@ qca8k_port_vlan_filtering(struct dsa_swi
+@@ -1935,11 +1930,11 @@ qca8k_port_vlan_filtering(struct dsa_swi
if (vlan_filtering) {
ret = qca8k_rmw(priv, QCA8K_PORT_LOOKUP_CTRL(port),
QCA8K_PORT_LOOKUP_VLAN_MODE_NONE);
}
-@@ -1944,10 +1939,9 @@ qca8k_port_vlan_add(struct dsa_switch *d
+@@ -1963,10 +1958,9 @@ qca8k_port_vlan_add(struct dsa_switch *d
}
if (pvid) {
if (ret)
return ret;
-@@ -2041,7 +2035,7 @@ static int qca8k_read_switch_id(struct q
+@@ -2060,7 +2054,7 @@ static int qca8k_read_switch_id(struct q
if (ret < 0)
return -ENODEV;
if (id != data->id) {
dev_err(priv->dev, "Switch id detected %x but expected %x", id, data->id);
return -ENODEV;
-@@ -2050,7 +2044,7 @@ static int qca8k_read_switch_id(struct q
+@@ -2069,7 +2063,7 @@ static int qca8k_read_switch_id(struct q
priv->switch_id = id;
/* Save revision to communicate to the internal PHY driver */
ret = qca8k_setup_mdio_bus(priv);
if (ret)
return ret;
-@@ -2077,6 +2071,14 @@ qca8k_sw_probe(struct mdio_device *mdiod
+@@ -2096,6 +2090,14 @@ qca8k_sw_probe(struct mdio_device *mdiod
gpiod_set_value_cansleep(priv->reset_gpio, 0);
}
}
static int
-@@ -2154,14 +2168,17 @@ static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
+@@ -2173,14 +2187,17 @@ static SIMPLE_DEV_PM_OPS(qca8k_pm_ops,
static const struct qca8k_match_data qca8327 = {
.id = QCA8K_ID_QCA8327,
.reduced_package = true,
static int
qca8k_port_enable(struct dsa_switch *ds, int port,
struct phy_device *phy)
-@@ -1998,6 +2008,7 @@ static const struct dsa_switch_ops qca8k
+@@ -2017,6 +2027,7 @@ static const struct dsa_switch_ops qca8k
.port_stp_state_set = qca8k_port_stp_state_set,
.port_bridge_join = qca8k_port_bridge_join,
.port_bridge_leave = qca8k_port_bridge_leave,
qca8k_port_enable(struct dsa_switch *ds, int port,
struct phy_device *phy)
{
-@@ -1999,6 +2023,7 @@ static const struct dsa_switch_ops qca8k
+@@ -2018,6 +2042,7 @@ static const struct dsa_switch_ops qca8k
.get_strings = qca8k_get_strings,
.get_ethtool_stats = qca8k_get_ethtool_stats,
.get_sset_count = qca8k_get_sset_count,
qca8k_vlan_access(struct qca8k_priv *priv, enum qca8k_vlan_cmd cmd, u16 vid)
{
u32 reg;
-@@ -1930,6 +2005,28 @@ qca8k_port_fdb_dump(struct dsa_switch *d
+@@ -1949,6 +2024,28 @@ qca8k_port_fdb_dump(struct dsa_switch *d
}
static int
qca8k_port_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
struct netlink_ext_ack *extack)
{
-@@ -2037,6 +2134,8 @@ static const struct dsa_switch_ops qca8k
+@@ -2056,6 +2153,8 @@ static const struct dsa_switch_ops qca8k
.port_fdb_add = qca8k_port_fdb_add,
.port_fdb_del = qca8k_port_fdb_del,
.port_fdb_dump = qca8k_port_fdb_dump,
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
-@@ -2027,6 +2027,99 @@ qca8k_port_mdb_del(struct dsa_switch *ds
+@@ -2046,6 +2046,99 @@ qca8k_port_mdb_del(struct dsa_switch *ds
}
static int
qca8k_port_vlan_filtering(struct dsa_switch *ds, int port, bool vlan_filtering,
struct netlink_ext_ack *extack)
{
-@@ -2136,6 +2229,8 @@ static const struct dsa_switch_ops qca8k
+@@ -2155,6 +2248,8 @@ static const struct dsa_switch_ops qca8k
.port_fdb_dump = qca8k_port_fdb_dump,
.port_mdb_add = qca8k_port_mdb_add,
.port_mdb_del = qca8k_port_mdb_del,
return 0;
}
-@@ -2207,6 +2210,178 @@ qca8k_get_tag_protocol(struct dsa_switch
+@@ -2226,6 +2229,178 @@ qca8k_get_tag_protocol(struct dsa_switch
return DSA_TAG_PROTO_QCA;
}
static const struct dsa_switch_ops qca8k_switch_ops = {
.get_tag_protocol = qca8k_get_tag_protocol,
.setup = qca8k_setup,
-@@ -2240,6 +2415,8 @@ static const struct dsa_switch_ops qca8k
+@@ -2259,6 +2434,8 @@ static const struct dsa_switch_ops qca8k
.phylink_mac_link_down = qca8k_phylink_mac_link_down,
.phylink_mac_link_up = qca8k_phylink_mac_link_up,
.get_phy_flags = qca8k_get_phy_flags,
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
-@@ -2232,7 +2232,7 @@ qca8k_lag_can_offload(struct dsa_switch
+@@ -2251,7 +2251,7 @@ qca8k_lag_can_offload(struct dsa_switch
if (info->tx_type != NETDEV_LAG_TX_TYPE_HASH)
return false;
info->hash_type != NETDEV_LAG_HASH_L23)
return false;
-@@ -2246,8 +2246,8 @@ qca8k_lag_setup_hash(struct dsa_switch *
+@@ -2265,8 +2265,8 @@ qca8k_lag_setup_hash(struct dsa_switch *
{
struct qca8k_priv *priv = ds->priv;
bool unique_lag = true;
--- a/drivers/net/dsa/qca8k.c
+++ b/drivers/net/dsa/qca8k.c
-@@ -2382,6 +2382,20 @@ qca8k_port_lag_leave(struct dsa_switch *
+@@ -2401,6 +2401,20 @@ qca8k_port_lag_leave(struct dsa_switch *
return qca8k_lag_refresh_portmap(ds, port, lag, true);
}
static const struct dsa_switch_ops qca8k_switch_ops = {
.get_tag_protocol = qca8k_get_tag_protocol,
.setup = qca8k_setup,
-@@ -2417,6 +2431,7 @@ static const struct dsa_switch_ops qca8k
+@@ -2436,6 +2450,7 @@ static const struct dsa_switch_ops qca8k
.get_phy_flags = qca8k_get_phy_flags,
.port_lag_join = qca8k_port_lag_join,
.port_lag_leave = qca8k_port_lag_leave,
qca8k_split_addr(reg, &r1, &r2, &page);
mutex_lock_nested(&bus->mdio_lock, MDIO_MUTEX_NESTED);
-@@ -2393,7 +2591,30 @@ qca8k_master_change(struct dsa_switch *d
+@@ -2412,7 +2610,30 @@ qca8k_master_change(struct dsa_switch *d
if (dp->index != 0)
return;
}
static const struct dsa_switch_ops qca8k_switch_ops = {
-@@ -2432,6 +2653,7 @@ static const struct dsa_switch_ops qca8k
+@@ -2451,6 +2672,7 @@ static const struct dsa_switch_ops qca8k
.port_lag_join = qca8k_port_lag_join,
.port_lag_leave = qca8k_port_lag_leave,
.master_state_change = qca8k_master_change,
};
static int qca8k_read_switch_id(struct qca8k_priv *priv)
-@@ -2511,6 +2733,9 @@ qca8k_sw_probe(struct mdio_device *mdiod
+@@ -2530,6 +2752,9 @@ qca8k_sw_probe(struct mdio_device *mdiod
if (!priv->ds)
return -ENOMEM;
match_data = of_device_get_match_data(priv->dev);
for (i = 0; i < match_data->mib_count; i++) {
-@@ -2592,9 +2690,11 @@ qca8k_master_change(struct dsa_switch *d
+@@ -2611,9 +2709,11 @@ qca8k_master_change(struct dsa_switch *d
return;
mutex_lock(&priv->mgmt_eth_data.mutex);
mutex_unlock(&priv->mgmt_eth_data.mutex);
}
-@@ -2608,6 +2708,7 @@ static int qca8k_connect_tag_protocol(st
+@@ -2627,6 +2727,7 @@ static int qca8k_connect_tag_protocol(st
tagger_data = ds->tagger_data;
tagger_data->rw_reg_ack_handler = qca8k_rw_reg_ack_handler;
break;
default:
-@@ -2736,6 +2837,9 @@ qca8k_sw_probe(struct mdio_device *mdiod
+@@ -2755,6 +2856,9 @@ qca8k_sw_probe(struct mdio_device *mdiod
mutex_init(&priv->mgmt_eth_data.mutex);
init_completion(&priv->mgmt_eth_data.rw_done);
if (ret < 0)
return 0xffff;
-@@ -3041,6 +3037,8 @@ qca8k_sw_probe(struct mdio_device *mdiod
+@@ -3060,6 +3056,8 @@ qca8k_sw_probe(struct mdio_device *mdiod
return PTR_ERR(priv->regmap);
}
mutex_unlock(&bus->mdio_lock);
-@@ -3038,6 +3073,8 @@ qca8k_sw_probe(struct mdio_device *mdiod
+@@ -3057,6 +3092,8 @@ qca8k_sw_probe(struct mdio_device *mdiod
}
priv->mdio_cache.page = 0xffff;
#ifdef CONFIG_MODVERSIONS
-@@ -3227,9 +3229,11 @@ static int setup_load_info(struct load_i
+@@ -3266,9 +3268,11 @@ static int setup_load_info(struct load_i
static int check_modinfo(struct module *mod, struct load_info *info, int flags)
{
if (flags & MODULE_INIT_IGNORE_VERMAGIC)
modmagic = NULL;
-@@ -3250,6 +3254,7 @@ static int check_modinfo(struct module *
+@@ -3289,6 +3293,7 @@ static int check_modinfo(struct module *
mod->name);
add_taint_module(mod, TAINT_OOT_MODULE, LOCKDEP_STILL_OK);
}
+dma-shared-buffer-objs := $(dma-buf-objs-y)
--- a/drivers/dma-buf/dma-buf.c
+++ b/drivers/dma-buf/dma-buf.c
-@@ -1506,4 +1506,5 @@ static void __exit dma_buf_deinit(void)
+@@ -1513,4 +1513,5 @@ static void __exit dma_buf_deinit(void)
kern_unmount(dma_buf_mnt);
dma_buf_uninit_sysfs_statistics();
}
--- a/drivers/mtd/mtdpart.c
+++ b/drivers/mtd/mtdpart.c
-@@ -50,7 +50,11 @@ static struct mtd_info *allocate_partiti
+@@ -51,7 +51,11 @@ static struct mtd_info *allocate_partiti
/* allocate the partition structure */
child = kzalloc(sizeof(*child), GFP_KERNEL);