KERNEL_PATCHVER:=$(KERNEL_TESTING_PATCHVER)
endif
-LINUX_VERSION-5.4 = .203
+LINUX_VERSION-5.4 = .211
-LINUX_KERNEL_HASH-5.4.203 = fc933f5b13066cfa54aacb5e86747a167bad1d8d23972e4a03ab5ee36c29798a
+LINUX_KERNEL_HASH-5.4.211 = bfb43241b72cd55797af68bea1cebe630d37664c0f9a99b6e9263a63a67e2dec
remove_uri_prefix=$(subst git://,,$(subst http://,,$(subst https://,,$(1))))
sanitize_uri=$(call qstrip,$(subst @,_,$(subst :,_,$(subst .,_,$(subst -,_,$(subst /,_,$(1)))))))
struct fis_image_desc {
unsigned char name[16]; // Null terminated name
uint32_t flash_base; // Address within FLASH of image
-@@ -72,6 +74,7 @@ static int parse_redboot_partitions(stru
+@@ -73,6 +75,7 @@ static int parse_redboot_partitions(stru
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
{
int nrparts = 0;
struct fis_image_desc *buf;
struct mtd_partition *parts;
-@@ -239,14 +242,15 @@ static int parse_redboot_partitions(stru
+@@ -240,14 +243,15 @@ static int parse_redboot_partitions(stru
}
}
#endif
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
if (nulllen > 0) {
strcpy(nullname, nullstring);
-@@ -265,6 +269,8 @@ static int parse_redboot_partitions(stru
+@@ -266,6 +270,8 @@ static int parse_redboot_partitions(stru
}
#endif
for ( ; i<nrparts; i++) {
parts[i].size = fl->img->size;
parts[i].offset = fl->img->flash_base;
parts[i].name = names;
-@@ -298,6 +304,13 @@ static int parse_redboot_partitions(stru
+@@ -299,6 +305,13 @@ static int parse_redboot_partitions(stru
fl = fl->next;
kfree(tmp_fl);
}
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -93,12 +93,18 @@ static int parse_redboot_partitions(stru
+@@ -94,12 +94,18 @@ static int parse_redboot_partitions(stru
parse_redboot_of(master);
return -EIO;
}
offset -= master->erasesize;
-@@ -111,10 +117,6 @@ static int parse_redboot_partitions(stru
+@@ -112,10 +118,6 @@ static int parse_redboot_partitions(stru
goto nogood;
}
}
printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
master->name, offset);
-@@ -187,6 +189,11 @@ static int parse_redboot_partitions(stru
+@@ -188,6 +190,11 @@ static int parse_redboot_partitions(stru
}
if (i == numslots) {
/* Didn't find it */
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -70,6 +70,22 @@ static void parse_redboot_of(struct mtd_
+@@ -71,6 +71,22 @@ static void parse_redboot_of(struct mtd_
directory = dirblock;
}
static int parse_redboot_partitions(struct mtd_info *master,
const struct mtd_partition **pparts,
struct mtd_part_parser_data *data)
-@@ -86,6 +102,7 @@ static int parse_redboot_partitions(stru
+@@ -87,6 +103,7 @@ static int parse_redboot_partitions(stru
int namelen = 0;
int nulllen = 0;
int numslots;
unsigned long offset;
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
static char nullstring[] = "unallocated";
-@@ -200,7 +217,10 @@ static int parse_redboot_partitions(stru
+@@ -201,7 +218,10 @@ static int parse_redboot_partitions(stru
goto out;
}
struct fis_list *new_fl, **prev;
if (buf[i].name[0] == 0xff) {
-@@ -276,12 +296,13 @@ static int parse_redboot_partitions(stru
+@@ -277,12 +297,13 @@ static int parse_redboot_partitions(stru
}
#endif
for ( ; i<nrparts; i++) {
strcpy(names, fl->img->name);
#ifdef CONFIG_MTD_REDBOOT_PARTS_READONLY
if (!memcmp(names, "RedBoot", 8) ||
-@@ -311,7 +332,9 @@ static int parse_redboot_partitions(stru
+@@ -312,7 +333,9 @@ static int parse_redboot_partitions(stru
fl = fl->next;
kfree(tmp_fl);
}
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -824,6 +824,17 @@ config LEDS_LM36274
- Say Y to enable the LM36274 LED driver for TI LMU devices.
- This supports the LED device LM36274.
+@@ -826,6 +826,17 @@ config LEDS_LM36274
+
+ source "drivers/leds/blink/Kconfig"
+config LEDS_RESET
+ tristate "LED support for reset-controller API"
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -915,3 +917,68 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -917,3 +919,68 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(chip->of_node);
}
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -90,12 +90,18 @@ static int parse_redboot_partitions(stru
+@@ -91,12 +91,18 @@ static int parse_redboot_partitions(stru
parse_redboot_of(master);
return -EIO;
}
offset -= master->erasesize;
-@@ -108,10 +114,6 @@ static int parse_redboot_partitions(stru
+@@ -109,10 +115,6 @@ static int parse_redboot_partitions(stru
goto nogood;
}
}
printk(KERN_NOTICE "Searching for RedBoot partition table in %s at offset 0x%lx\n",
master->name, offset);
-@@ -184,6 +186,11 @@ static int parse_redboot_partitions(stru
+@@ -185,6 +187,11 @@ static int parse_redboot_partitions(stru
}
if (i == numslots) {
/* Didn't find it */
EXPORT_SYMBOL(xfrm_parse_spi);
--- a/net/ipv4/tcp_input.c
+++ b/net/ipv4/tcp_input.c
-@@ -3980,14 +3980,16 @@ static bool tcp_parse_aligned_timestamp(
+@@ -3986,14 +3986,16 @@ static bool tcp_parse_aligned_timestamp(
{
const __be32 *ptr = (const __be32 *)(th + 1);
--- a/drivers/tty/serial/amba-pl011.c
+++ b/drivers/tty/serial/amba-pl011.c
-@@ -2557,7 +2557,12 @@ static int pl011_setup_port(struct devic
+@@ -2576,7 +2576,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
-@@ -1653,6 +1653,23 @@ static void pl011_put_poll_char(struct u
+@@ -1662,6 +1662,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 =
-@@ -1669,7 +1686,7 @@ static int pl011_hwinit(struct uart_port
+@@ -1678,7 +1695,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 |
-@@ -2303,7 +2320,7 @@ static int pl011_console_setup(struct co
+@@ -2322,7 +2339,7 @@ static int pl011_console_setup(struct co
plat->init();
}
if (uap->vendor->fixed_options) {
baud = uap->fixed_baud;
-@@ -2488,6 +2505,7 @@ static struct uart_driver amba_reg = {
+@@ -2507,6 +2524,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;
-@@ -2519,6 +2537,7 @@ static int pl011_probe_dt_alias(int inde
+@@ -2538,6 +2556,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
-@@ -1386,6 +1386,7 @@ static bool pl011_tx_char(struct uart_am
+@@ -1395,6 +1395,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
-@@ -2644,6 +2644,11 @@ static int pl011_probe(struct amba_devic
+@@ -2663,6 +2663,11 @@ static int pl011_probe(struct amba_devic
if (IS_ERR(uap->clk))
return PTR_ERR(uap->clk);
static int bcm2708_fb_register(struct bcm2708_fb *fb)
--- a/drivers/video/fbdev/core/fbmem.c
+++ b/drivers/video/fbdev/core/fbmem.c
-@@ -1080,6 +1080,30 @@ fb_blank(struct fb_info *info, int blank
+@@ -1090,6 +1090,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)
{
-@@ -1088,6 +1112,7 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1098,6 +1122,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;
-@@ -1163,6 +1188,15 @@ static long do_fb_ioctl(struct fb_info *
+@@ -1175,6 +1200,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/arch/arm64/kernel/armv8_deprecated.c
+++ b/arch/arm64/kernel/armv8_deprecated.c
-@@ -182,10 +182,15 @@ static void __init register_insn_emulati
+@@ -183,10 +183,15 @@ static void __init register_insn_emulati
switch (ops->status) {
case INSN_DEPRECATED:
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -5788,6 +5788,9 @@ int __init cgroup_init_early(void)
+@@ -5797,6 +5797,9 @@ int __init cgroup_init_early(void)
return 0;
}
/**
* cgroup_init - cgroup initialization
*
-@@ -5826,6 +5829,12 @@ int __init cgroup_init(void)
+@@ -5835,6 +5838,12 @@ int __init cgroup_init(void)
mutex_unlock(&cgroup_mutex);
for_each_subsys(ss, ssid) {
if (ss->early_init) {
struct cgroup_subsys_state *css =
-@@ -6235,6 +6244,10 @@ static int __init cgroup_disable(char *s
+@@ -6244,6 +6253,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);
-@@ -6244,6 +6257,31 @@ static int __init cgroup_disable(char *s
+@@ -6253,6 +6266,31 @@ static int __init cgroup_disable(char *s
}
__setup("cgroup_disable=", cgroup_disable);
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1236,31 +1236,6 @@ static int bcm2835_spi_setup(struct spi_
+@@ -1240,31 +1240,6 @@ static int bcm2835_spi_setup(struct spi_
return -EINVAL;
}
/* Read as many bytes as possible from FIFO */
bcm2835_rd_fifo(bs);
/* Write as many bytes as possible to FIFO */
-@@ -1287,7 +1291,8 @@ static int bcm2835_spi_probe(struct plat
+@@ -1291,7 +1295,8 @@ static int bcm2835_spi_probe(struct plat
bcm2835_wr(bs, BCM2835_SPI_CS,
BCM2835_SPI_CS_CLEAR_RX | BCM2835_SPI_CS_CLEAR_TX);
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -1962,6 +1962,16 @@ reset:
+@@ -1965,6 +1965,16 @@ reset:
return ret;
}
extern int usb_driver_set_configuration(struct usb_device *udev, int config);
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
-@@ -384,6 +384,11 @@ struct hc_driver {
+@@ -385,6 +385,11 @@ struct hc_driver {
* or bandwidth constraints.
*/
void (*reset_bandwidth)(struct usb_hcd *, struct usb_device *);
/* Returns the hardware-chosen device address */
int (*address_device)(struct usb_hcd *, struct usb_device *udev);
/* prepares the hardware to send commands to the device */
-@@ -445,6 +450,8 @@ extern void usb_hcd_unmap_urb_setup_for_
+@@ -446,6 +451,8 @@ extern void usb_hcd_unmap_urb_setup_for_
extern void usb_hcd_unmap_urb_for_dma(struct usb_hcd *, struct urb *);
extern void usb_hcd_flush_endpoint(struct usb_device *udev,
struct usb_host_endpoint *ep);
--- a/drivers/gpu/drm/vc4/vc4_dsi.c
+++ b/drivers/gpu/drm/vc4/vc4_dsi.c
-@@ -1485,9 +1485,11 @@ static int vc4_dsi_bind(struct device *d
+@@ -1483,9 +1483,11 @@ static int vc4_dsi_bind(struct device *d
/* DSI1 has a broken AXI slave that doesn't respond to writes
* from the ARM. It does handle writes from the DMA engine,
* so set up a channel for talking to it.
&dsi->reg_dma_paddr,
GFP_KERNEL);
if (!dsi->reg_dma_mem) {
-@@ -1506,6 +1508,8 @@ static int vc4_dsi_bind(struct device *d
+@@ -1504,6 +1506,8 @@ static int vc4_dsi_bind(struct device *d
return ret;
}
/* Get the physical address of the device's registers. The
* struct resource for the regs gives us the bus address
* instead.
-@@ -1532,7 +1536,7 @@ static int vc4_dsi_bind(struct device *d
+@@ -1530,7 +1534,7 @@ static int vc4_dsi_bind(struct device *d
if (ret) {
if (ret != -EPROBE_DEFER)
dev_err(dev, "Failed to get interrupt: %d\n", ret);
}
dsi->escape_clock = devm_clk_get(dev, "escape");
-@@ -1540,7 +1544,7 @@ static int vc4_dsi_bind(struct device *d
+@@ -1538,7 +1542,7 @@ static int vc4_dsi_bind(struct device *d
ret = PTR_ERR(dsi->escape_clock);
if (ret != -EPROBE_DEFER)
dev_err(dev, "Failed to get escape clock: %d\n", ret);
}
dsi->pll_phy_clock = devm_clk_get(dev, "phy");
-@@ -1548,7 +1552,7 @@ static int vc4_dsi_bind(struct device *d
+@@ -1546,7 +1550,7 @@ static int vc4_dsi_bind(struct device *d
ret = PTR_ERR(dsi->pll_phy_clock);
if (ret != -EPROBE_DEFER)
dev_err(dev, "Failed to get phy clock: %d\n", ret);
}
dsi->pixel_clock = devm_clk_get(dev, "pixel");
-@@ -1556,7 +1560,7 @@ static int vc4_dsi_bind(struct device *d
+@@ -1554,7 +1558,7 @@ static int vc4_dsi_bind(struct device *d
ret = PTR_ERR(dsi->pixel_clock);
if (ret != -EPROBE_DEFER)
dev_err(dev, "Failed to get pixel clock: %d\n", ret);
}
ret = drm_of_find_panel_or_bridge(dev->of_node, 0, 0,
-@@ -1571,26 +1575,28 @@ static int vc4_dsi_bind(struct device *d
+@@ -1569,26 +1573,28 @@ static int vc4_dsi_bind(struct device *d
if (ret == -ENODEV)
return 0;
if (dsi->port == 1)
vc4->dsi1 = dsi;
-@@ -1602,7 +1608,7 @@ static int vc4_dsi_bind(struct device *d
+@@ -1600,7 +1606,7 @@ static int vc4_dsi_bind(struct device *d
ret = drm_bridge_attach(dsi->encoder, dsi->bridge, NULL);
if (ret) {
dev_err(dev, "bridge attach failed: %d\n", ret);
}
/* Disable the atomic helper calls into the bridge. We
* manually call the bridge pre_enable / enable / etc. calls
-@@ -1619,6 +1625,11 @@ static int vc4_dsi_bind(struct device *d
+@@ -1617,6 +1623,11 @@ static int vc4_dsi_bind(struct device *d
pm_runtime_enable(dev);
return 0;
}
static void vc4_dsi_unbind(struct device *dev, struct device *master,
-@@ -1633,6 +1644,8 @@ static void vc4_dsi_unbind(struct device
+@@ -1631,6 +1642,8 @@ static void vc4_dsi_unbind(struct device
vc4_dsi_encoder_destroy(dsi->encoder);
spin_unlock(&uap->port.lock);
dev_vdbg(uap->port.dev,
"Took %d chars from DMA buffer and %d chars from the FIFO\n",
-@@ -1350,6 +1353,7 @@ __acquires(&uap->port.lock)
+@@ -1359,6 +1362,7 @@ __acquires(&uap->port.lock)
{
pl011_fifo_to_tty(uap);
spin_unlock(&uap->port.lock);
tty_flip_buffer_push(&uap->port.state->port);
/*
-@@ -1485,6 +1489,7 @@ static irqreturn_t pl011_int(int irq, vo
+@@ -1494,6 +1498,7 @@ static irqreturn_t pl011_int(int irq, vo
int handled = 0;
spin_lock_irqsave(&uap->port.lock, flags);
status = pl011_read(uap, REG_RIS) & uap->im;
if (status) {
do {
-@@ -1504,7 +1509,7 @@ static irqreturn_t pl011_int(int irq, vo
+@@ -1513,7 +1518,7 @@ static irqreturn_t pl011_int(int irq, vo
UART011_CTSMIS|UART011_RIMIS))
pl011_modem_status(uap);
if (status & UART011_TXIS)
--- a/Makefile
+++ b/Makefile
-@@ -1269,6 +1269,9 @@ ifneq ($(dtstree),)
+@@ -1272,6 +1272,9 @@ ifneq ($(dtstree),)
%.dtb: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -585,6 +585,53 @@ static int vc4_plane_allocate_lbm(struct
+@@ -581,6 +581,53 @@ static int vc4_plane_allocate_lbm(struct
return 0;
}
/* Writes out a full display list for an active plane to the plane's
* private dlist state.
*/
-@@ -864,9 +911,20 @@ static int vc4_plane_mode_set(struct drm
+@@ -860,9 +907,20 @@ static int vc4_plane_mode_set(struct drm
/* Colorspace conversion words */
if (vc4_state->is_yuv) {
}
vc4_state->lbm_offset = 0;
-@@ -1275,5 +1333,13 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1271,5 +1329,13 @@ struct drm_plane *vc4_plane_init(struct
DRM_MODE_REFLECT_X |
DRM_MODE_REFLECT_Y);
+++ /dev/null
-From a3749ee48539fa832b1832cdcae26d34e5d20f00 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
-@@ -1326,6 +1326,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 =
-@@ -2150,6 +2176,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
-@@ -1447,6 +1447,10 @@ static bool pl011_tx_chars(struct uart_a
+@@ -1430,6 +1430,10 @@ static bool pl011_tx_chars(struct uart_a
if (likely(from_irq) && count-- == 0)
break;
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1182,7 +1182,6 @@ static int bcm2835_spi_setup(struct spi_
+@@ -1186,7 +1186,6 @@ static int bcm2835_spi_setup(struct spi_
{
struct spi_controller *ctlr = spi->controller;
struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr);
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -267,6 +267,10 @@ config GENERIC_CSUM
+@@ -266,6 +266,10 @@ config GENERIC_CSUM
config GENERIC_CALIBRATE_DELAY
def_bool y
--- a/arch/x86/Kconfig
+++ b/arch/x86/Kconfig
-@@ -709,7 +709,6 @@ config X86_SUPPORTS_MEMORY_FAILURE
+@@ -708,7 +708,6 @@ config X86_SUPPORTS_MEMORY_FAILURE
config STA2X11
bool "STA2X11 Companion Chip Support"
depends on X86_32_NON_STANDARD && PCI
--- a/Makefile
+++ b/Makefile
-@@ -1269,7 +1269,7 @@ ifneq ($(dtstree),)
+@@ -1272,7 +1272,7 @@ ifneq ($(dtstree),)
%.dtb: include/config/kernel.release scripts_dtc
$(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@
--- a/drivers/media/v4l2-core/v4l2-mem2mem.c
+++ b/drivers/media/v4l2-core/v4l2-mem2mem.c
-@@ -1216,6 +1216,59 @@ int v4l2_m2m_ioctl_try_decoder_cmd(struc
+@@ -1248,6 +1248,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:
-@@ -981,12 +1072,14 @@ struct v4l2_m2m_ctx *v4l2_m2m_ctx_init(s
+@@ -1013,12 +1104,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);
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -500,6 +500,11 @@ static void vc4_plane_calc_load(struct d
+@@ -496,6 +496,11 @@ static void vc4_plane_calc_load(struct d
struct vc4_plane_state *vc4_state;
struct drm_crtc_state *crtc_state;
unsigned int vscale_factor;
.pixel_order = HVS_PIXEL_ORDER_XBGR,
},
{
-@@ -836,35 +851,6 @@ static int vc4_plane_mode_set(struct drm
+@@ -832,35 +847,6 @@ static int vc4_plane_mode_set(struct drm
return -EINVAL;
}
/* Don't waste cycles mixing with plane alpha if the set alpha
* is opaque or there is no per-pixel alpha information.
* In any case we use the alpha property value as the fixed alpha.
-@@ -872,20 +858,120 @@ static int vc4_plane_mode_set(struct drm
+@@ -868,20 +854,120 @@ static int vc4_plane_mode_set(struct drm
mix_plane_alpha = state->alpha != DRM_BLEND_ALPHA_OPAQUE &&
fb->format->has_alpha;
/* Pointer Word 0/1/2: RGB / Y / Cb / Cr Pointers
-@@ -1276,6 +1362,10 @@ static bool vc4_format_mod_supported(str
+@@ -1272,6 +1358,10 @@ static bool vc4_format_mod_supported(str
default:
return false;
}
return VC4_SCALING_NONE;
if (3 * dst >= 2 * src)
return VC4_SCALING_PPF;
-@@ -377,9 +378,11 @@ static int vc4_plane_setup_clipping_and_
+@@ -373,9 +374,11 @@ static int vc4_plane_setup_clipping_and_
return ret;
vc4_state->x_scaling[0] = vc4_get_scaling_mode(vc4_state->src_w[0],
vc4_state->is_unity = (vc4_state->x_scaling[0] == VC4_SCALING_NONE &&
vc4_state->y_scaling[0] == VC4_SCALING_NONE);
-@@ -392,10 +395,12 @@ static int vc4_plane_setup_clipping_and_
+@@ -388,10 +391,12 @@ static int vc4_plane_setup_clipping_and_
vc4_state->x_scaling[1] =
vc4_get_scaling_mode(vc4_state->src_w[1],
/* YUV conversion requires that horizontal scaling be enabled
* on the UV plane even if vc4_get_scaling_mode() returned
-@@ -445,10 +450,7 @@ static void vc4_write_ppf(struct vc4_pla
+@@ -441,10 +446,7 @@ static void vc4_write_ppf(struct vc4_pla
static u32 vc4_lbm_size(struct drm_plane_state *state)
{
struct vc4_plane_state *vc4_state = to_vc4_plane_state(state);
u32 lbm;
/* LBM is not needed when there's no vertical scaling. */
-@@ -456,6 +458,11 @@ static u32 vc4_lbm_size(struct drm_plane
+@@ -452,6 +454,11 @@ static u32 vc4_lbm_size(struct drm_plane
vc4_state->y_scaling[1] == VC4_SCALING_NONE)
return 0;
if (!vc4_state->is_yuv) {
if (vc4_state->y_scaling[0] == VC4_SCALING_TPZ)
lbm = pix_per_line * 8;
-@@ -591,7 +598,9 @@ static int vc4_plane_allocate_lbm(struct
+@@ -587,7 +594,9 @@ static int vc4_plane_allocate_lbm(struct
spin_lock_irqsave(&vc4->hvs->mm_lock, irqflags);
ret = drm_mm_insert_node_generic(&vc4->hvs->lbm_mm,
&vc4_state->lbm,
void vc4_plane_async_set_fb(struct drm_plane *plane,
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1447,3 +1447,41 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1443,3 +1443,41 @@ struct drm_plane *vc4_plane_init(struct
return plane;
}
void vc4_plane_async_set_fb(struct drm_plane *plane,
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1448,39 +1448,41 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1444,39 +1444,41 @@ struct drm_plane *vc4_plane_init(struct
return plane;
}
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1454,26 +1454,27 @@ int vc4_plane_create_additional_planes(s
+@@ -1450,26 +1450,27 @@ int vc4_plane_create_additional_planes(s
struct drm_crtc *crtc;
unsigned int i;
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1463,7 +1463,7 @@ int vc4_plane_create_additional_planes(s
+@@ -1459,7 +1459,7 @@ int vc4_plane_create_additional_planes(s
* modest number of planes to expose, that should hopefully
* still cover any sane usecase.
*/
};
static const struct hvs_format *vc4_get_hvs_format(u32 drm_format)
-@@ -809,27 +816,33 @@ static int vc4_plane_mode_set(struct drm
+@@ -805,27 +812,33 @@ static int vc4_plane_mode_set(struct drm
uint32_t param = fourcc_mod_broadcom_param(fb->modifier);
u32 tile_w, tile, x_off, pix_per_tile;
return -EINVAL;
}
-@@ -839,6 +852,13 @@ static int vc4_plane_mode_set(struct drm
+@@ -835,6 +848,13 @@ static int vc4_plane_mode_set(struct drm
/* Adjust the base pointer to the first pixel to be scanned
* out.
*/
for (i = 0; i < num_planes; i++) {
vc4_state->offsets[i] += param * tile_w * tile;
-@@ -951,8 +971,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -947,8 +967,8 @@ static int vc4_plane_mode_set(struct drm
vc4_dlist_write(vc4_state,
VC4_SET_FIELD(state->alpha >> 4,
SCALER5_CTL2_ALPHA) |
(mix_plane_alpha ?
SCALER5_CTL2_ALPHA_MIX : 0) |
VC4_SET_FIELD(fb->format->has_alpha ?
-@@ -1000,7 +1020,8 @@ static int vc4_plane_mode_set(struct drm
+@@ -996,7 +1016,8 @@ static int vc4_plane_mode_set(struct drm
/* Pitch word 1/2 */
for (i = 1; i < num_planes; i++) {
vc4_dlist_write(vc4_state,
VC4_SET_FIELD(fb->pitches[i],
SCALER_SRC_PITCH));
-@@ -1371,6 +1392,13 @@ static bool vc4_format_mod_supported(str
+@@ -1367,6 +1388,13 @@ static bool vc4_format_mod_supported(str
default:
return false;
}
case DRM_FORMAT_RGBX1010102:
case DRM_FORMAT_BGRX1010102:
case DRM_FORMAT_RGBA1010102:
-@@ -1403,8 +1431,11 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1399,8 +1427,11 @@ struct drm_plane *vc4_plane_init(struct
struct drm_plane *plane = NULL;
struct vc4_plane *vc4_plane;
u32 formats[ARRAY_SIZE(hvs_formats)];
static const uint64_t modifiers[] = {
DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED,
DRM_FORMAT_MOD_BROADCOM_SAND128,
-@@ -1419,13 +1450,17 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1415,13 +1446,17 @@ struct drm_plane *vc4_plane_init(struct
if (!vc4_plane)
return ERR_PTR(-ENOMEM);
--- a/drivers/gpu/drm/vc4/vc4_plane.c
+++ b/drivers/gpu/drm/vc4/vc4_plane.c
-@@ -1451,7 +1451,7 @@ struct drm_plane *vc4_plane_init(struct
+@@ -1447,7 +1447,7 @@ struct drm_plane *vc4_plane_init(struct
return ERR_PTR(-ENOMEM);
for (i = 0; i < ARRAY_SIZE(hvs_formats); i++) {
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1182,6 +1182,8 @@ static int bcm2835_spi_setup(struct spi_
+@@ -1186,6 +1186,8 @@ static int bcm2835_spi_setup(struct spi_
{
struct spi_controller *ctlr = spi->controller;
struct bcm2835_spi *bs = spi_controller_get_devdata(ctlr);
--- a/drivers/spi/spi-bcm2835.c
+++ b/drivers/spi/spi-bcm2835.c
-@@ -1241,6 +1241,43 @@ static int bcm2835_spi_setup(struct spi_
+@@ -1245,6 +1245,43 @@ static int bcm2835_spi_setup(struct spi_
return -EINVAL;
}
offset = CORE_STS_OVERRIDE_GMIIP_PORT(port);
else
offset = CORE_STS_OVERRIDE_GMIIP2_PORT(port);
-@@ -985,6 +987,30 @@ struct bcm_sf2_of_data {
+@@ -990,6 +992,30 @@ struct bcm_sf2_of_data {
unsigned int num_cfp_rules;
};
/* Register offsets for the SWITCH_REG_* block */
static const u16 bcm_sf2_7445_reg_offsets[] = {
[REG_SWITCH_CNTRL] = 0x00,
-@@ -1033,6 +1059,9 @@ static const struct bcm_sf2_of_data bcm_
+@@ -1038,6 +1064,9 @@ static const struct bcm_sf2_of_data bcm_
};
static const struct of_device_id bcm_sf2_of_match[] = {
static void bcm_sf2_intr_disable(struct bcm_sf2_priv *priv)
{
intrl2_0_mask_set(priv, 0xffffffff);
-@@ -734,6 +772,8 @@ static int bcm_sf2_sw_resume(struct dsa_
+@@ -739,6 +777,8 @@ static int bcm_sf2_sw_resume(struct dsa_
return ret;
}
ret = bcm_sf2_cfp_resume(ds);
if (ret)
return ret;
-@@ -996,6 +1036,7 @@ struct bcm_sf2_of_data {
+@@ -1001,6 +1041,7 @@ struct bcm_sf2_of_data {
const u16 *reg_offsets;
unsigned int core_reg_align;
unsigned int num_cfp_rules;
};
static const u16 bcm_sf2_4908_reg_offsets[] = {
-@@ -1020,6 +1061,7 @@ static const struct bcm_sf2_of_data bcm_
+@@ -1025,6 +1066,7 @@ static const struct bcm_sf2_of_data bcm_
.core_reg_align = 0,
.reg_offsets = bcm_sf2_4908_reg_offsets,
.num_cfp_rules = 0, /* FIXME */
};
/* Register offsets for the SWITCH_REG_* block */
-@@ -1130,6 +1172,7 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1135,6 +1177,7 @@ static int bcm_sf2_sw_probe(struct platf
priv->reg_offsets = data->reg_offsets;
priv->core_reg_align = data->core_reg_align;
priv->num_cfp_rules = data->num_cfp_rules;
/* Auto-detection using standard registers will not work, so
* provide an indication of what kind of device we are for
-@@ -1184,6 +1227,8 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1189,6 +1232,8 @@ static int bcm_sf2_sw_probe(struct platf
return ret;
}
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1060,7 +1060,7 @@ static const struct bcm_sf2_of_data bcm_
+@@ -1065,7 +1065,7 @@ static const struct bcm_sf2_of_data bcm_
.type = BCM4908_DEVICE_ID,
.core_reg_align = 0,
.reg_offsets = bcm_sf2_4908_reg_offsets,
force_link:
/* Force link settings detected from the PHY */
-@@ -661,6 +689,7 @@ static void bcm_sf2_sw_mac_link_set(stru
+@@ -666,6 +694,7 @@ static void bcm_sf2_sw_mac_link_set(stru
phy_interface_t interface, bool link)
{
struct bcm_sf2_priv *priv = bcm_sf2_to_priv(ds);
u32 reg;
if (!phy_interface_mode_is_rgmii(interface) &&
-@@ -668,13 +697,15 @@ static void bcm_sf2_sw_mac_link_set(stru
+@@ -673,13 +702,15 @@ static void bcm_sf2_sw_mac_link_set(stru
interface != PHY_INTERFACE_MODE_REVMII)
return;
break;
default:
switch (port) {
-@@ -1079,9 +1084,7 @@ static const u16 bcm_sf2_4908_reg_offset
+@@ -1084,9 +1089,7 @@ static const u16 bcm_sf2_4908_reg_offset
[REG_PHY_REVISION] = 0x14,
[REG_SPHY_CNTRL] = 0x24,
[REG_CROSSBAR] = 0xc8,
}
}
-@@ -1085,9 +1122,14 @@ static const u16 bcm_sf2_4908_reg_offset
+@@ -1090,9 +1127,14 @@ static const u16 bcm_sf2_4908_reg_offset
[REG_SPHY_CNTRL] = 0x24,
[REG_CROSSBAR] = 0xc8,
[REG_RGMII_11_CNTRL] = 0x014c,
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1363,10 +1363,14 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1368,10 +1368,14 @@ static int bcm_sf2_sw_probe(struct platf
rev = reg_readl(priv, REG_PHY_REVISION);
priv->hw_params.gphy_rev = rev & PHY_REVISION_MASK;
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -1377,6 +1377,12 @@ static int bcm_sf2_sw_probe(struct platf
+@@ -1382,6 +1382,12 @@ static int bcm_sf2_sw_probe(struct platf
priv->hw_params.core_rev >> 8, priv->hw_params.core_rev & 0xff,
priv->irq0, priv->irq1);
ret = gpiod_hog(desc, name, lflags, dflags);
if (ret < 0) {
of_node_put(np);
-@@ -904,9 +911,11 @@ int of_gpiochip_add(struct gpio_chip *ch
+@@ -906,9 +913,11 @@ int of_gpiochip_add(struct gpio_chip *ch
of_node_get(chip->of_node);
.width = 2,
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -84,6 +84,7 @@ static int parse_redboot_partitions(stru
+@@ -85,6 +85,7 @@ static int parse_redboot_partitions(stru
int nulllen = 0;
int numslots;
unsigned long offset;
#ifdef CONFIG_MTD_REDBOOT_PARTS_UNALLOCATED
static char nullstring[] = "unallocated";
#endif
-@@ -190,6 +191,16 @@ static int parse_redboot_partitions(stru
+@@ -191,6 +192,16 @@ static int parse_redboot_partitions(stru
goto out;
}
for (i = 0; i < numslots; i++) {
struct fis_list *new_fl, **prev;
-@@ -210,10 +221,10 @@ static int parse_redboot_partitions(stru
+@@ -211,10 +222,10 @@ static int parse_redboot_partitions(stru
goto out;
}
new_fl->img = &buf[i];
--- a/arch/arm64/crypto/Kconfig
+++ b/arch/arm64/crypto/Kconfig
-@@ -103,7 +103,7 @@ config CRYPTO_CHACHA20_NEON
+@@ -104,7 +104,7 @@ config CRYPTO_CHACHA20_NEON
tristate "ChaCha20, XChaCha20, and XChaCha12 stream ciphers using NEON instructions"
depends on KERNEL_MODE_NEON
select CRYPTO_BLKCIPHER
--- a/arch/arm64/crypto/Kconfig
+++ b/arch/arm64/crypto/Kconfig
-@@ -104,6 +104,7 @@ config CRYPTO_CHACHA20_NEON
+@@ -105,6 +105,7 @@ config CRYPTO_CHACHA20_NEON
depends on KERNEL_MODE_NEON
select CRYPTO_BLKCIPHER
select CRYPTO_LIB_CHACHA_GENERIC
--- a/arch/arm64/crypto/Kconfig
+++ b/arch/arm64/crypto/Kconfig
-@@ -106,6 +106,12 @@ config CRYPTO_CHACHA20_NEON
+@@ -107,6 +107,12 @@ config CRYPTO_CHACHA20_NEON
select CRYPTO_LIB_CHACHA_GENERIC
select CRYPTO_ARCH_HAVE_LIB_CHACHA
--- a/arch/powerpc/Makefile
+++ b/arch/powerpc/Makefile
-@@ -61,20 +61,6 @@ machine-$(CONFIG_PPC64) += 64
+@@ -44,20 +44,6 @@ machine-$(CONFIG_PPC64) += 64
machine-$(CONFIG_CPU_LITTLE_ENDIAN) += le
UTS_MACHINE := $(subst $(space),,$(machine-y))
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -305,6 +305,7 @@ static int parse_redboot_partitions(stru
+@@ -306,6 +306,7 @@ static int parse_redboot_partitions(stru
static const struct of_device_id mtd_parser_redboot_of_match_table[] = {
{ .compatible = "redboot-fis" },
--- a/drivers/mtd/parsers/redboot.c
+++ b/drivers/mtd/parsers/redboot.c
-@@ -279,14 +279,21 @@ static int parse_redboot_partitions(stru
+@@ -280,14 +280,21 @@ static int parse_redboot_partitions(stru
#endif
names += strlen(names)+1;
+MODULE_ALIAS("nf-flow-table-hw");
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -5752,6 +5752,13 @@ static int nf_tables_flowtable_parse_hoo
+@@ -5758,6 +5758,13 @@ static int nf_tables_flowtable_parse_hoo
if (err < 0)
return err;
ops = kcalloc(n, sizeof(struct nf_hook_ops), GFP_KERNEL);
if (!ops)
return -ENOMEM;
-@@ -5882,10 +5889,19 @@ static int nf_tables_newflowtable(struct
+@@ -5888,10 +5895,19 @@ static int nf_tables_newflowtable(struct
}
flowtable->data.type = type;
err = nf_tables_flowtable_parse_hook(&ctx, nla[NFTA_FLOWTABLE_HOOK],
flowtable);
if (err < 0)
-@@ -6011,7 +6027,8 @@ static int nf_tables_fill_flowtable_info
+@@ -6017,7 +6033,8 @@ static int nf_tables_fill_flowtable_info
nla_put_string(skb, NFTA_FLOWTABLE_NAME, flowtable->name) ||
nla_put_be32(skb, NFTA_FLOWTABLE_USE, htonl(flowtable->use)) ||
nla_put_be64(skb, NFTA_FLOWTABLE_HANDLE, cpu_to_be64(flowtable->handle),
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4940,7 +4970,8 @@ static int rtm_to_fib6_config(struct sk_
if (rtm->rtm_type == RTN_UNREACHABLE ||
rtm->rtm_type == RTN_BLACKHOLE ||
rtm->rtm_type == RTN_PROHIBIT ||
cfg->fc_flags |= RTF_REJECT;
if (rtm->rtm_type == RTN_LOCAL)
-@@ -6084,6 +6115,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6091,6 +6122,8 @@ static int ip6_route_dev_notify(struct n
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.ip6_prohibit_entry->dst.dev = dev;
net->ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(dev);
net->ipv6.ip6_blk_hole_entry->dst.dev = dev;
net->ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(dev);
#endif
-@@ -6095,6 +6128,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6102,6 +6135,7 @@ static int ip6_route_dev_notify(struct n
in6_dev_put_clear(&net->ipv6.ip6_null_entry->rt6i_idev);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
in6_dev_put_clear(&net->ipv6.ip6_prohibit_entry->rt6i_idev);
in6_dev_put_clear(&net->ipv6.ip6_blk_hole_entry->rt6i_idev);
#endif
}
-@@ -6287,6 +6321,8 @@ static int __net_init ip6_route_net_init
+@@ -6294,6 +6328,8 @@ static int __net_init ip6_route_net_init
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
net->ipv6.fib6_has_custom_rules = false;
net->ipv6.ip6_prohibit_entry = kmemdup(&ip6_prohibit_entry_template,
sizeof(*net->ipv6.ip6_prohibit_entry),
GFP_KERNEL);
-@@ -6297,11 +6333,21 @@ static int __net_init ip6_route_net_init
+@@ -6304,11 +6340,21 @@ static int __net_init ip6_route_net_init
ip6_template_metrics, true);
INIT_LIST_HEAD(&net->ipv6.ip6_prohibit_entry->rt6i_uncached);
net->ipv6.ip6_blk_hole_entry->dst.ops = &net->ipv6.ip6_dst_ops;
dst_init_metrics(&net->ipv6.ip6_blk_hole_entry->dst,
ip6_template_metrics, true);
-@@ -6325,6 +6371,8 @@ out:
+@@ -6332,6 +6378,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6344,6 +6392,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6351,6 +6399,7 @@ static void __net_exit ip6_route_net_exi
kfree(net->ipv6.ip6_null_entry);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.ip6_prohibit_entry);
kfree(net->ipv6.ip6_blk_hole_entry);
#endif
dst_entries_destroy(&net->ipv6.ip6_dst_ops);
-@@ -6421,6 +6470,9 @@ void __init ip6_route_init_special_entri
+@@ -6428,6 +6477,9 @@ void __init ip6_route_init_special_entri
init_net.ipv6.ip6_prohibit_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
init_net.ipv6.ip6_blk_hole_entry->dst.dev = init_net.loopback_dev;
init_net.ipv6.ip6_blk_hole_entry->rt6i_idev = in6_dev_get(init_net.loopback_dev);
#endif /* __LINUX_USB_PCI_QUIRKS_H */
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
-@@ -485,7 +485,14 @@ extern int usb_hcd_pci_probe(struct pci_
+@@ -486,7 +486,14 @@ extern int usb_hcd_pci_probe(struct pci_
extern void usb_hcd_pci_remove(struct pci_dev *dev);
extern void usb_hcd_pci_shutdown(struct pci_dev *dev);
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -915,3 +917,68 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -917,3 +919,68 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(chip->of_node);
}
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -319,7 +319,7 @@ config ARCH_MULTIPLATFORM
+@@ -318,7 +318,7 @@ config ARCH_MULTIPLATFORM
depends on MMU
select ARM_HAS_SG_CHAIN
select ARM_PATCH_PHYS_VIRT
{
struct __thermal_zone *data = tz->devdata;
-- if (!data->ops->get_temp)
-+ if (!data->ops->get_temp || (data->mode == THERMAL_DEVICE_DISABLED))
+- if (!data->ops || !data->ops->get_temp)
++ if (!data->ops || !data->ops->get_temp || (data->mode == THERMAL_DEVICE_DISABLED))
return -EINVAL;
return data->ops->get_temp(data->sensor_data, temp);
return -EINVAL;
return data->ops->set_trips(data->sensor_data, low, high);
-@@ -188,6 +189,9 @@ static int of_thermal_set_emul_temp(stru
- {
- struct __thermal_zone *data = tz->devdata;
+@@ -191,6 +192,9 @@ static int of_thermal_set_emul_temp(stru
+ if (!data->ops || !data->ops->set_emul_temp)
+ return -EINVAL;
+ if (data->mode == THERMAL_DEVICE_DISABLED)
+ return -EINVAL;
return data->ops->set_emul_temp(data->sensor_data, temp);
}
-@@ -196,7 +200,7 @@ static int of_thermal_get_trend(struct t
+@@ -199,7 +203,7 @@ static int of_thermal_get_trend(struct t
{
struct __thermal_zone *data = tz->devdata;
-- if (!data->ops->get_trend)
-+ if (!data->ops->get_trend || (data->mode == THERMAL_DEVICE_DISABLED))
+- if (!data->ops || !data->ops->get_trend)
++ if (!data->ops || !data->ops->get_trend || (data->mode == THERMAL_DEVICE_DISABLED))
return -EINVAL;
return data->ops->get_trend(data->sensor_data, trip, trend);
-@@ -297,7 +301,9 @@ static int of_thermal_set_mode(struct th
+@@ -300,7 +304,9 @@ static int of_thermal_set_mode(struct th
mutex_unlock(&tz->lock);
data->mode = mode;
return 0;
}
-@@ -307,7 +313,8 @@ static int of_thermal_get_trip_type(stru
+@@ -310,7 +316,8 @@ static int of_thermal_get_trip_type(stru
{
struct __thermal_zone *data = tz->devdata;
return -EDOM;
*type = data->trips[trip].type;
-@@ -315,12 +322,39 @@ static int of_thermal_get_trip_type(stru
+@@ -318,12 +325,39 @@ static int of_thermal_get_trip_type(stru
return 0;
}
return -EDOM;
*temp = data->trips[trip].temperature;
-@@ -333,7 +367,8 @@ static int of_thermal_set_trip_temp(stru
+@@ -336,7 +370,8 @@ static int of_thermal_set_trip_temp(stru
{
struct __thermal_zone *data = tz->devdata;
+ || (data->mode == THERMAL_DEVICE_DISABLED))
return -EDOM;
- if (data->ops->set_trip_temp) {
-@@ -355,7 +390,8 @@ static int of_thermal_get_trip_hyst(stru
+ if (data->ops && data->ops->set_trip_temp) {
+@@ -358,7 +393,8 @@ static int of_thermal_get_trip_hyst(stru
{
struct __thermal_zone *data = tz->devdata;
return -EDOM;
*hyst = data->trips[trip].hysteresis;
-@@ -368,7 +404,8 @@ static int of_thermal_set_trip_hyst(stru
+@@ -371,7 +407,8 @@ static int of_thermal_set_trip_hyst(stru
{
struct __thermal_zone *data = tz->devdata;
return -EDOM;
/* thermal framework should take care of data->mask & (1 << trip) */
-@@ -443,6 +480,9 @@ thermal_zone_of_add_sensor(struct device
+@@ -446,6 +483,9 @@ thermal_zone_of_add_sensor(struct device
if (ops->set_emul_temp)
tzd->ops->set_emul_temp = of_thermal_set_emul_temp;
mutex_unlock(&tzd->lock);
return tzd;
-@@ -765,7 +805,10 @@ static const char * const trip_types[] =
+@@ -768,7 +808,10 @@ static const char * const trip_types[] =
[THERMAL_TRIP_ACTIVE] = "active",
[THERMAL_TRIP_PASSIVE] = "passive",
[THERMAL_TRIP_HOT] = "hot",
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1824,6 +1824,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
+@@ -1823,6 +1823,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
The command-line arguments provided by the boot loader will be
appended to the the device tree bootargs property.
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1837,6 +1837,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
+@@ -1836,6 +1836,14 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_MANGL
endchoice
unsigned long type);
--- a/include/linux/pci_ids.h
+++ b/include/linux/pci_ids.h
-@@ -1076,6 +1076,12 @@
+@@ -1078,6 +1078,12 @@
#define PCI_DEVICE_ID_SGI_IOC3 0x0003
#define PCI_DEVICE_ID_SGI_LITHIUM 0x1002
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -915,3 +917,72 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -917,3 +919,72 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(chip->of_node);
}
* address space as memory. Needed when the kernel wants to execute
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
-@@ -316,6 +316,13 @@ static struct mem_type mem_types[] __ro_
- .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE,
+@@ -323,6 +323,13 @@ static struct mem_type mem_types[] __ro_
+ .prot_sect = PMD_TYPE_SECT,
.domain = DOMAIN_KERNEL,
},
+ [MT_MEMORY_RW_NS] = {
[MT_ROM] = {
.prot_sect = PMD_TYPE_SECT,
.domain = DOMAIN_KERNEL,
-@@ -652,6 +659,7 @@ static void __init build_mem_type_table(
+@@ -663,6 +670,7 @@ static void __init build_mem_type_table(
}
kern_pgprot |= PTE_EXT_AF;
vecs_pgprot |= PTE_EXT_AF;
/*
* Set PXN for user mappings
-@@ -680,6 +688,7 @@ static void __init build_mem_type_table(
+@@ -691,6 +699,7 @@ static void __init build_mem_type_table(
mem_types[MT_MEMORY_RWX].prot_pte |= kern_pgprot;
mem_types[MT_MEMORY_RW].prot_sect |= ecc_mask | cp->pmd;
mem_types[MT_MEMORY_RW].prot_pte |= kern_pgprot;
+ mem_types[MT_MEMORY_RW_NS].prot_sect |= ecc_mask | cp->pmd;
+ mem_types[MT_MEMORY_RO].prot_sect |= ecc_mask | cp->pmd;
+ mem_types[MT_MEMORY_RO].prot_pte |= kern_pgprot;
mem_types[MT_MEMORY_DMA_READY].prot_pte |= kern_pgprot;
- mem_types[MT_MEMORY_RWX_NONCACHED].prot_sect |= ecc_mask;
- mem_types[MT_ROM].prot_sect |= cp->pmd;
/* internal flags, do not use outside cgroup core proper */
__CFTYPE_ONLY_ON_DFL = (1 << 16), /* only on default hierarchy */
__CFTYPE_NOT_ON_DFL = (1 << 17), /* not on default hierarchy */
-@@ -544,6 +546,7 @@ struct cftype {
+@@ -545,6 +547,7 @@ struct cftype {
* end of cftype array.
*/
char name[MAX_CFTYPE_NAME];
/*
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -1465,8 +1465,8 @@ struct cgroup *task_cgroup_from_root(str
+@@ -1467,8 +1467,8 @@ struct cgroup *task_cgroup_from_root(str
static struct kernfs_syscall_ops cgroup_kf_syscall_ops;
{
struct cgroup_subsys *ss = cft->ss;
-@@ -1476,13 +1476,26 @@ static char *cgroup_file_name(struct cgr
+@@ -1478,13 +1478,26 @@ static char *cgroup_file_name(struct cgr
snprintf(buf, CGROUP_FILE_NAME_MAX, "%s%s.%s",
dbg, cgroup_on_dfl(cgrp) ? ss->name : ss->legacy_name,
/**
* cgroup_file_mode - deduce file mode of a control file
* @cft: the control file in question
-@@ -1641,6 +1654,9 @@ static void cgroup_rm_file(struct cgroup
+@@ -1643,6 +1656,9 @@ static void cgroup_rm_file(struct cgroup
}
kernfs_remove_by_name(cgrp->kn, cgroup_file_name(cgrp, cft, name));
}
/**
-@@ -3924,6 +3940,7 @@ static int cgroup_add_file(struct cgroup
+@@ -3933,6 +3949,7 @@ static int cgroup_add_file(struct cgroup
{
char name[CGROUP_FILE_NAME_MAX];
struct kernfs_node *kn;
struct lock_class_key *key = NULL;
int ret;
-@@ -3954,6 +3971,14 @@ static int cgroup_add_file(struct cgroup
+@@ -3963,6 +3980,14 @@ static int cgroup_add_file(struct cgroup
spin_unlock_irq(&cgroup_file_kn_lock);
}
/* internal flags, do not use outside cgroup core proper */
__CFTYPE_ONLY_ON_DFL = (1 << 16), /* only on default hierarchy */
__CFTYPE_NOT_ON_DFL = (1 << 17), /* not on default hierarchy */
-@@ -546,7 +544,6 @@ struct cftype {
+@@ -547,7 +545,6 @@ struct cftype {
* end of cftype array.
*/
char name[MAX_CFTYPE_NAME];
/*
--- a/kernel/cgroup/cgroup.c
+++ b/kernel/cgroup/cgroup.c
-@@ -1465,8 +1465,8 @@ struct cgroup *task_cgroup_from_root(str
+@@ -1467,8 +1467,8 @@ struct cgroup *task_cgroup_from_root(str
static struct kernfs_syscall_ops cgroup_kf_syscall_ops;
{
struct cgroup_subsys *ss = cft->ss;
-@@ -1476,26 +1476,13 @@ static char *cgroup_fill_name(struct cgr
+@@ -1478,26 +1478,13 @@ static char *cgroup_fill_name(struct cgr
snprintf(buf, CGROUP_FILE_NAME_MAX, "%s%s.%s",
dbg, cgroup_on_dfl(cgrp) ? ss->name : ss->legacy_name,
/**
* cgroup_file_mode - deduce file mode of a control file
* @cft: the control file in question
-@@ -1654,9 +1641,6 @@ static void cgroup_rm_file(struct cgroup
+@@ -1656,9 +1643,6 @@ static void cgroup_rm_file(struct cgroup
}
kernfs_remove_by_name(cgrp->kn, cgroup_file_name(cgrp, cft, name));
}
/**
-@@ -3940,7 +3924,6 @@ static int cgroup_add_file(struct cgroup
+@@ -3949,7 +3933,6 @@ static int cgroup_add_file(struct cgroup
{
char name[CGROUP_FILE_NAME_MAX];
struct kernfs_node *kn;
struct lock_class_key *key = NULL;
int ret;
-@@ -3971,14 +3954,6 @@ static int cgroup_add_file(struct cgroup
+@@ -3980,14 +3963,6 @@ static int cgroup_add_file(struct cgroup
spin_unlock_irq(&cgroup_file_kn_lock);
}
}
/* Wait max 20 ms */
-@@ -892,10 +916,7 @@ static void esdhc_tuning_block_enable(st
+@@ -893,10 +917,7 @@ static void esdhc_tuning_block_enable(st
u32 val;
esdhc_clock_enable(host, false);
--- a/drivers/mmc/host/sdhci-of-esdhc.c
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
-@@ -928,20 +928,11 @@ static void esdhc_tuning_block_enable(st
+@@ -929,20 +929,11 @@ static void esdhc_tuning_block_enable(st
esdhc_clock_enable(host, true);
}
/* Write TBCTL[11:8]=4'h8 */
val = sdhci_readl(host, ESDHC_TBCTL);
val &= ~(0xf << 8);
-@@ -960,6 +951,25 @@ static void esdhc_prepare_sw_tuning(stru
+@@ -961,6 +952,25 @@ static void esdhc_prepare_sw_tuning(stru
val = sdhci_readl(host, ESDHC_TBSTAT);
val = sdhci_readl(host, ESDHC_TBSTAT);
/* Reset data lines by setting ESDHCCTL[RSTD] */
sdhci_reset(host, SDHCI_RESET_DATA);
/* Write 32'hFFFF_FFFF to IRQSTAT register */
-@@ -970,10 +980,8 @@ static void esdhc_prepare_sw_tuning(stru
+@@ -971,10 +981,8 @@ static void esdhc_prepare_sw_tuning(stru
* then program TBPTR[TB_WNDW_END_PTR] = 4 * div_ratio
* and program TBPTR[TB_WNDW_START_PTR] = 8 * div_ratio.
*/
--- a/drivers/mmc/host/sdhci-of-esdhc.c
+++ b/drivers/mmc/host/sdhci-of-esdhc.c
-@@ -894,20 +894,20 @@ static int esdhc_signal_voltage_switch(s
+@@ -895,20 +895,20 @@ static int esdhc_signal_voltage_switch(s
}
static struct soc_device_attribute soc_tuning_erratum_type1[] = {
{ },
};
-@@ -975,13 +975,13 @@ static void esdhc_prepare_sw_tuning(stru
+@@ -976,13 +976,13 @@ static void esdhc_prepare_sw_tuning(stru
/* Write 32'hFFFF_FFFF to IRQSTAT register */
sdhci_writel(host, 0xFFFFFFFF, SDHCI_INT_STATUS);
*window_start = 8 * esdhc->div_ratio;
*window_end = 4 * esdhc->div_ratio;
} else {
-@@ -1065,6 +1065,19 @@ static int esdhc_execute_tuning(struct m
+@@ -1066,6 +1066,19 @@ static int esdhc_execute_tuning(struct m
if (ret)
break;
* 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
-@@ -3699,6 +3699,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
+@@ -3701,6 +3701,10 @@ int dwc3_gadget_init(struct dwc3 *dwc)
dwc->gadget.sg_supported = true;
dwc->gadget.name = "dwc3-gadget";
dwc->gadget.lpm_capable = true;
--- a/drivers/usb/core/hcd.c
+++ b/drivers/usb/core/hcd.c
-@@ -2125,6 +2125,140 @@ int usb_hcd_get_frame_number (struct usb
+@@ -2128,6 +2128,140 @@ int usb_hcd_get_frame_number (struct usb
}
/*-------------------------------------------------------------------------*/
int is_setup
--- a/include/linux/usb/hcd.h
+++ b/include/linux/usb/hcd.h
-@@ -411,7 +411,10 @@ struct hc_driver {
+@@ -412,7 +412,10 @@ struct hc_driver {
int (*find_raw_port_number)(struct usb_hcd *, int);
/* Call for power on/off the port if necessary */
int (*port_power)(struct usb_hcd *hcd, int portnum, bool enable);
};
static inline int hcd_giveback_urb_in_bh(struct usb_hcd *hcd)
-@@ -476,6 +479,14 @@ int usb_hcd_setup_local_mem(struct usb_h
+@@ -477,6 +480,14 @@ int usb_hcd_setup_local_mem(struct usb_h
struct platform_device;
extern void usb_hcd_platform_shutdown(struct platform_device *dev);
--- a/drivers/gpio/gpio-pca953x.c
+++ b/drivers/gpio/gpio-pca953x.c
-@@ -881,10 +881,12 @@ static int pca953x_irq_setup(struct pca9
+@@ -884,10 +884,12 @@ static int pca953x_irq_setup(struct pca9
for (i = 0; i < NBANK(chip); i++)
chip->irq_stat[i] &= reg_direction[i];
mutex_init(&chip->irq_lock);
clk_disable_unprepare(priv->clk);
for (i = 0; i < priv->config.rings; i++)
-@@ -1666,9 +1795,7 @@ static struct platform_driver crypto_sa
+@@ -1668,9 +1797,7 @@ static struct platform_driver crypto_sa
.of_match_table = safexcel_of_match_table,
},
};
/* PCIE devices - i.e. Inside Secure development boards */
static int safexcel_pci_probe(struct pci_dev *pdev,
-@@ -1759,7 +1886,7 @@ static int safexcel_pci_probe(struct pci
+@@ -1761,7 +1888,7 @@ static int safexcel_pci_probe(struct pci
return rc;
}
{
struct safexcel_crypto_priv *priv = pci_get_drvdata(pdev);
int i;
-@@ -1789,54 +1916,32 @@ static struct pci_driver safexcel_pci_dr
+@@ -1791,54 +1918,32 @@ static struct pci_driver safexcel_pci_dr
.probe = safexcel_pci_probe,
.remove = safexcel_pci_remove,
};
const struct switchdev_obj_port_vlan *vlan);
--- a/drivers/net/dsa/bcm_sf2.c
+++ b/drivers/net/dsa/bcm_sf2.c
-@@ -636,7 +636,9 @@ static void bcm_sf2_sw_mac_link_down(str
+@@ -641,7 +641,9 @@ static void bcm_sf2_sw_mac_link_down(str
static void bcm_sf2_sw_mac_link_up(struct dsa_switch *ds, int port,
unsigned int mode,
phy_interface_t interface,
--- a/drivers/leds/Kconfig
+++ b/drivers/leds/Kconfig
-@@ -824,6 +824,16 @@ config LEDS_LM36274
- Say Y to enable the LM36274 LED driver for TI LMU devices.
- This supports the LED device LM36274.
+@@ -826,6 +826,16 @@ config LEDS_LM36274
+
+ source "drivers/leds/blink/Kconfig"
+config LEDS_UBNT_LEDBAR
+ tristate "LED support for Ubiquiti UniFi 6 LR"
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1824,6 +1824,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
+@@ -1823,6 +1823,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
The command-line arguments provided by the boot loader will be
appended to the the device tree bootargs property.
}
--- a/arch/mips/cavium-octeon/octeon-platform.c
+++ b/arch/mips/cavium-octeon/octeon-platform.c
-@@ -773,7 +773,7 @@ int __init octeon_prune_device_tree(void
+@@ -774,7 +774,7 @@ int __init octeon_prune_device_tree(void
if (fdt_check_header(initial_boot_params))
panic("Corrupt Device Tree.");
#include <linux/platform_data/x86/apple.h>
#include <linux/pm_runtime.h>
#include <linux/suspend.h>
-@@ -5793,3 +5794,34 @@ static void nvidia_ion_ahci_fixup(struct
+@@ -5796,3 +5797,34 @@ static void nvidia_ion_ahci_fixup(struct
pdev->dev_flags |= PCI_DEV_FLAGS_HAS_MSI_MASKING;
}
DECLARE_PCI_FIXUP_FINAL(PCI_VENDOR_ID_NVIDIA, 0x0ab8, nvidia_ion_ahci_fixup);
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
-@@ -1824,6 +1824,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
+@@ -1823,6 +1823,17 @@ config ARM_ATAG_DTB_COMPAT_CMDLINE_EXTEN
The command-line arguments provided by the boot loader will be
appended to the the device tree bootargs property.
#include "gpiolib.h"
#include "gpiolib-of.h"
-@@ -915,3 +917,68 @@ void of_gpiochip_remove(struct gpio_chip
+@@ -917,3 +919,68 @@ void of_gpiochip_remove(struct gpio_chip
{
of_node_put(chip->of_node);
}