-LINUX_VERSION-5.15 = .55
-LINUX_KERNEL_HASH-5.15.55 = 1ef6bd508b6c3af3bef2d5b337e4477254dba284c79e329aa38f9763ae3bfdcc
+LINUX_VERSION-5.15 = .56
+LINUX_KERNEL_HASH-5.15.56 = e9a6bb3437f1497b1c74841ebf70d5b96f915d6ac767b5ba3d8d820dd89b8223
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -5824,6 +5824,9 @@ int __init cgroup_init_early(void)
+@@ -5833,6 +5833,9 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -5862,6 +5865,12 @@ int __init cgroup_init(void)
+@@ -5871,6 +5874,12 @@ int __init cgroup_init(void)
mutex_unlock(&cgroup_mutex);
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6446,6 +6455,10 @@ static int __init cgroup_disable(char *s
+@@ -6455,6 +6464,10 @@ static int __init cgroup_disable(char *s
strcmp(token, ss->legacy_name))
continue;
static_branch_disable(cgroup_subsys_enabled_key[i]);
pr_info("Disabling %s control group subsystem\n",
ss->name);
-@@ -6464,6 +6477,31 @@ static int __init cgroup_disable(char *s
+@@ -6473,6 +6486,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2725,7 +2725,12 @@ static int pl011_setup_port(struct devic
+@@ -2744,7 +2744,12 @@ static int pl011_setup_port(struct devic
if (IS_ERR(base))
return PTR_ERR(base);
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1718,6 +1718,23 @@ static void pl011_put_poll_char(struct u
+@@ -1727,6 +1727,23 @@ static void pl011_put_poll_char(struct u
#endif /* CONFIG_CONSOLE_POLL */
static int pl011_hwinit(struct uart_port *port)
{
struct uart_amba_port *uap =
-@@ -1734,7 +1751,7 @@ static int pl011_hwinit(struct uart_port
+@@ -1743,7 +1760,7 @@ static int pl011_hwinit(struct uart_port
if (retval)
return retval;
/* Clear pending error and receive interrupts */
pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS |
-@@ -2421,7 +2438,7 @@ static int pl011_console_setup(struct co
+@@ -2440,7 +2457,7 @@ static int pl011_console_setup(struct co
plat->init();
}
if (uap->vendor->fixed_options) {
baud = uap->fixed_baud;
-@@ -2638,6 +2655,7 @@ static struct uart_driver amba_reg = {
+@@ -2657,6 +2674,7 @@ static struct uart_driver amba_reg = {
.cons = AMBA_CONSOLE,
};
static int pl011_probe_dt_alias(int index, struct device *dev)
{
struct device_node *np;
-@@ -2669,6 +2687,7 @@ static int pl011_probe_dt_alias(int inde
+@@ -2688,6 +2706,7 @@ static int pl011_probe_dt_alias(int inde
return ret;
}
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1423,6 +1423,7 @@ static bool pl011_tx_char(struct uart_am
+@@ -1432,6 +1432,7 @@ static bool pl011_tx_char(struct uart_am
return false; /* unable to transmit character */
pl011_write(c, uap, REG_DR);
- reg
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2816,6 +2816,11 @@ static int pl011_probe(struct amba_devic
+@@ -2835,6 +2835,11 @@ static int pl011_probe(struct amba_devic
if (IS_ERR(uap->clk))
return PTR_ERR(uap->clk);
+++ /dev/null
-From 48cb6ac7067b412c56a0a6aca43f5c964dfb7dec Mon Sep 17 00:00:00 2001
-From: Phil Elwell <phil@raspberrypi.org>
-Date: Fri, 24 Jan 2020 11:38:28 +0000
-Subject: [PATCH] tty: amba-pl011: Add un/throttle support
-
-The PL011 driver lacks throttle and unthrottle methods. As a result,
-sending more data to the Pi than it can immediately sink while CRTSCTS
-is enabled causes a NULL pointer to be followed.
-
-Add a throttle handler that disables the RX interrupts, and an
-unthrottle handler that reenables them.
-
-Signed-off-by: Phil Elwell <phil@raspberrypi.org>
----
- drivers/tty/serial/amba-pl011.c | 28 ++++++++++++++++++++++++++++
- 1 file changed, 28 insertions(+)
-
---- a/drivers/tty/serial/amba-pl011.c
-+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1360,6 +1360,32 @@ static void pl011_start_tx(struct uart_p
- pl011_start_tx_pio(uap);
- }
-
-+static void pl011_throttle(struct uart_port *port)
-+{
-+ struct uart_amba_port *uap =
-+ container_of(port, struct uart_amba_port, port);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&uap->port.lock, flags);
-+ uap->im &= ~(UART011_RTIM | UART011_RXIM);
-+ pl011_write(uap->im, uap, REG_IMSC);
-+ spin_unlock_irqrestore(&uap->port.lock, flags);
-+}
-+
-+static void pl011_unthrottle(struct uart_port *port)
-+{
-+ struct uart_amba_port *uap =
-+ container_of(port, struct uart_amba_port, port);
-+ unsigned long flags;
-+
-+ spin_lock_irqsave(&uap->port.lock, flags);
-+ uap->im |= UART011_RTIM;
-+ if (!pl011_dma_rx_running(uap))
-+ uap->im |= UART011_RXIM;
-+ pl011_write(uap->im, uap, REG_IMSC);
-+ spin_unlock_irqrestore(&uap->port.lock, flags);
-+}
-+
- static void pl011_stop_rx(struct uart_port *port)
- {
- struct uart_amba_port *uap =
-@@ -2263,6 +2289,8 @@ static const struct uart_ops amba_pl011_
- .stop_tx = pl011_stop_tx,
- .start_tx = pl011_start_tx,
- .stop_rx = pl011_stop_rx,
-+ .throttle = pl011_throttle,
-+ .unthrottle = pl011_unthrottle,
- .enable_ms = pl011_enable_ms,
- .break_ctl = pl011_break_ctl,
- .startup = pl011_startup,
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -1510,6 +1510,10 @@ static bool pl011_tx_chars(struct uart_a
+@@ -1493,6 +1493,10 @@ static bool pl011_tx_chars(struct uart_a
if (likely(from_irq) && count-- == 0)
break;
static int bcm2708_fb_register(struct bcm2708_fb *fb)
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1096,6 +1096,30 @@ fb_blank(struct fb_info *info, int blank
+@@ -1097,6 +1097,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)
{
-@@ -1104,6 +1128,7 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1105,6 +1129,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;
-@@ -1181,6 +1206,15 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1182,6 +1207,15 @@ static long do_fb_ioctl(struct fb_info *
unlock_fb_info(info);
console_unlock();
break;
default:
lock_fb_info(info);
fb = info->fbops;
-@@ -1320,6 +1354,7 @@ static long fb_compat_ioctl(struct file
+@@ -1321,6 +1355,7 @@ static long fb_compat_ioctl(struct file
case FBIOPAN_DISPLAY:
case FBIOGET_CON2FBMAP:
case FBIOPUT_CON2FBMAP:
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -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),
+@@ -1921,6 +1921,8 @@ static const struct usb_audio_quirk_flag
+ QUIRK_FLAG_GENERIC_IMPLICIT_FB),
+ DEVICE_FLG(0x2b53, 0x0031, /* Fiero SC-01 (firmware v1.1.0) */
+ QUIRK_FLAG_GENERIC_IMPLICIT_FB),
+ DEVICE_FLG(0x09da, 0x2695, /* A4Tech FHD 1080p webcam */
+ QUIRK_FLAG_DISABLE_AUTOSUSPEND | QUIRK_FLAG_GET_SAMPLE_RATE),
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1628,14 +1628,7 @@ static void do_remove_conflicting_frameb
+@@ -1629,14 +1629,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.
*/
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -25,7 +25,6 @@
+@@ -26,7 +26,6 @@
#include <linux/init.h>
#include <linux/linux_logo.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/console.h>
#include <linux/kmod.h>
-@@ -1605,36 +1604,18 @@ static void do_remove_conflicting_frameb
+@@ -1606,36 +1605,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;
}
}
}
-@@ -1961,13 +1942,9 @@ EXPORT_SYMBOL(register_framebuffer);
+@@ -1973,13 +1954,9 @@ EXPORT_SYMBOL(register_framebuffer);
void
unregister_framebuffer(struct fb_info *fb_info)
{
+};
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
-@@ -129,6 +129,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
+@@ -128,6 +128,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
bcm47094-luxul-xwr-3150-v1.dtb \
bcm47094-netgear-r8500.dtb \
bcm47094-phicomm-k3.dtb \
--- a/drivers/base/core.c
+++ b/drivers/base/core.c
-@@ -1561,7 +1561,7 @@ static void device_links_purge(struct de
+@@ -1562,7 +1562,7 @@ static void device_links_purge(struct de
#define FW_DEVLINK_FLAGS_RPM (FW_DEVLINK_FLAGS_ON | \
DL_FLAG_PM_RUNTIME)