-LINUX_VERSION-5.15 = .160
-LINUX_KERNEL_HASH-5.15.160 = f41e718e33b88f269a6b6a7653e5e9824c4ba541f6ffe5bf26ecc37c540a1b05
+LINUX_VERSION-5.15 = .161
+LINUX_KERNEL_HASH-5.15.161 = d629f78680dc4b65e3d78b61406fb7757b960c83c206e63ad8c2606b3e3c474c
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1749,7 +1749,7 @@ static irqreturn_t vc4_cec_irq_handler(i
+@@ -1751,7 +1751,7 @@ static irqreturn_t vc4_cec_irq_handler(i
return ret;
}
{
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
/* clock period in microseconds */
-@@ -1762,38 +1762,53 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1764,38 +1764,53 @@ static int vc4_hdmi_cec_adap_enable(stru
val |= ((4700 / usecs) << VC4_HDMI_CEC_CNT_TO_4700_US_SHIFT) |
((4500 / usecs) << VC4_HDMI_CEC_CNT_TO_4500_US_SHIFT);
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1754,8 +1754,14 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1756,8 +1756,14 @@ static int vc4_hdmi_cec_enable(struct ce
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
/* clock period in microseconds */
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
VC4_HDMI_CEC_CNT_TO_4500_US_MASK);
-@@ -1798,6 +1804,8 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1800,6 +1806,8 @@ static int vc4_hdmi_cec_disable(struct c
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2387,7 +2387,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2389,7 +2389,7 @@ static const struct vc4_hdmi_variant bcm
.encoder_type = VC4_ENCODER_TYPE_HDMI0,
.debugfs_name = "hdmi0_regs",
.card_name = "vc4-hdmi-0",
memcpy(&vc4_hdmi->audio.infoframe, ¶ms->cea, sizeof(params->cea));
vc4_hdmi_set_audio_infoframe(encoder);
-@@ -1678,6 +1803,8 @@ static void vc4_cec_read_msg(struct vc4_
+@@ -1680,6 +1805,8 @@ static void vc4_cec_read_msg(struct vc4_
struct cec_msg *msg = &vc4_hdmi->cec_rx_msg;
unsigned int i;
msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >>
VC4_HDMI_CEC_REC_WRD_CNT_SHIFT);
-@@ -1696,11 +1823,12 @@ static void vc4_cec_read_msg(struct vc4_
+@@ -1698,11 +1825,12 @@ static void vc4_cec_read_msg(struct vc4_
}
}
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
vc4_hdmi->cec_tx_ok = cntrl1 & VC4_HDMI_CEC_TX_STATUS_GOOD;
cntrl1 &= ~VC4_HDMI_CEC_START_XMIT_BEGIN;
-@@ -1709,11 +1837,24 @@ static irqreturn_t vc4_cec_irq_handler_t
+@@ -1711,11 +1839,24 @@ static irqreturn_t vc4_cec_irq_handler_t
return IRQ_WAKE_THREAD;
}
vc4_hdmi->cec_rx_msg.len = 0;
cntrl1 = HDMI_READ(HDMI_CEC_CNTRL_1);
vc4_cec_read_msg(vc4_hdmi, cntrl1);
-@@ -1726,6 +1867,18 @@ static irqreturn_t vc4_cec_irq_handler_r
+@@ -1728,6 +1869,18 @@ static irqreturn_t vc4_cec_irq_handler_r
return IRQ_WAKE_THREAD;
}
static irqreturn_t vc4_cec_irq_handler(int irq, void *priv)
{
struct vc4_hdmi *vc4_hdmi = priv;
-@@ -1736,14 +1889,17 @@ static irqreturn_t vc4_cec_irq_handler(i
+@@ -1738,14 +1891,17 @@ static irqreturn_t vc4_cec_irq_handler(i
if (!(stat & VC4_HDMI_CPU_CEC))
return IRQ_NONE;
return ret;
}
-@@ -1752,6 +1908,7 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1754,6 +1910,7 @@ static int vc4_hdmi_cec_enable(struct ce
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
/* clock period in microseconds */
const u32 usecs = 1000000 / CEC_CLOCK_FREQ;
u32 val;
int ret;
-@@ -1759,6 +1916,8 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1761,6 +1918,8 @@ static int vc4_hdmi_cec_enable(struct ce
if (ret)
return ret;
val = HDMI_READ(HDMI_CEC_CNTRL_5);
val &= ~(VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET |
VC4_HDMI_CEC_CNT_TO_4700_US_MASK |
-@@ -1789,12 +1948,17 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1791,12 +1950,17 @@ static int vc4_hdmi_cec_enable(struct ce
if (!vc4_hdmi->variant->external_irq_controller)
HDMI_WRITE(HDMI_CEC_CPU_MASK_CLEAR, VC4_HDMI_CPU_CEC);
if (!vc4_hdmi->variant->external_irq_controller)
HDMI_WRITE(HDMI_CEC_CPU_MASK_SET, VC4_HDMI_CPU_CEC);
-@@ -1802,6 +1966,8 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1804,6 +1968,8 @@ static int vc4_hdmi_cec_disable(struct c
HDMI_WRITE(HDMI_CEC_CNTRL_5, HDMI_READ(HDMI_CEC_CNTRL_5) |
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
pm_runtime_put(&vc4_hdmi->pdev->dev);
return 0;
-@@ -1818,10 +1984,14 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1820,10 +1986,14 @@ static int vc4_hdmi_cec_adap_enable(stru
static int vc4_hdmi_cec_adap_log_addr(struct cec_adapter *adap, u8 log_addr)
{
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
return 0;
}
-@@ -1830,6 +2000,7 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1832,6 +2002,7 @@ static int vc4_hdmi_cec_adap_transmit(st
{
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
struct drm_device *dev = vc4_hdmi->connector.dev;
u32 val;
unsigned int i;
-@@ -1838,6 +2009,8 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1840,6 +2011,8 @@ static int vc4_hdmi_cec_adap_transmit(st
return -ENOMEM;
}
for (i = 0; i < msg->len; i += 4)
HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2),
(msg->msg[i]) |
-@@ -1853,6 +2026,9 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -1855,6 +2028,9 @@ static int vc4_hdmi_cec_adap_transmit(st
val |= VC4_HDMI_CEC_START_XMIT_BEGIN;
HDMI_WRITE(HDMI_CEC_CNTRL_1, val);
return 0;
}
-@@ -1867,6 +2043,7 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1869,6 +2045,7 @@ static int vc4_hdmi_cec_init(struct vc4_
struct cec_connector_info conn_info;
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
u32 value;
int ret;
-@@ -1887,10 +2064,12 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1889,10 +2066,12 @@ static int vc4_hdmi_cec_init(struct vc4_
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
-@@ -1909,7 +2088,9 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1911,7 +2090,9 @@ static int vc4_hdmi_cec_init(struct vc4_
if (ret)
goto err_remove_cec_rx_handler;
} else {
ret = request_threaded_irq(platform_get_irq(pdev, 0),
vc4_cec_irq_handler,
-@@ -2179,6 +2360,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2181,6 +2362,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
if (!vc4_hdmi)
return -ENOMEM;
return 0;
}
-@@ -1912,6 +1973,17 @@ static int vc4_hdmi_cec_enable(struct ce
+@@ -1914,6 +1975,17 @@ static int vc4_hdmi_cec_enable(struct ce
u32 val;
int ret;
ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev);
if (ret)
return ret;
-@@ -1958,6 +2030,17 @@ static int vc4_hdmi_cec_disable(struct c
+@@ -1960,6 +2032,17 @@ static int vc4_hdmi_cec_disable(struct c
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
unsigned long flags;
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
if (!vc4_hdmi->variant->external_irq_controller)
-@@ -1986,6 +2069,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
+@@ -1988,6 +2071,17 @@ static int vc4_hdmi_cec_adap_log_addr(st
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
unsigned long flags;
spin_lock_irqsave(&vc4_hdmi->hw_lock, flags);
HDMI_WRITE(HDMI_CEC_CNTRL_1,
(HDMI_READ(HDMI_CEC_CNTRL_1) & ~VC4_HDMI_CEC_ADDR_MASK) |
-@@ -2004,6 +2098,17 @@ static int vc4_hdmi_cec_adap_transmit(st
+@@ -2006,6 +2100,17 @@ static int vc4_hdmi_cec_adap_transmit(st
u32 val;
unsigned int i;
if (msg->len > 16) {
drm_err(dev, "Attempting to transmit too much data (%d)\n", msg->len);
return -ENOMEM;
-@@ -2360,6 +2465,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2362,6 +2467,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
if (!vc4_hdmi)
return -ENOMEM;
if (delayed_work_pending(&vc4_hdmi->scrambling_work))
cancel_delayed_work_sync(&vc4_hdmi->scrambling_work);
-@@ -2523,6 +2517,14 @@ static int vc4_hdmi_bind(struct device *
+@@ -2525,6 +2519,14 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->pdev = pdev;
vc4_hdmi->variant = variant;
--- a/drivers/gpu/drm/drm_probe_helper.c
+++ b/drivers/gpu/drm/drm_probe_helper.c
-@@ -796,6 +796,86 @@ void drm_kms_helper_poll_fini(struct drm
+@@ -805,6 +805,86 @@ void drm_kms_helper_poll_fini(struct drm
}
EXPORT_SYMBOL(drm_kms_helper_poll_fini);
/**
* drm_helper_hpd_irq_event - hotplug processing
* @dev: drm_device
-@@ -809,9 +889,10 @@ EXPORT_SYMBOL(drm_kms_helper_poll_fini);
+@@ -818,9 +898,10 @@ EXPORT_SYMBOL(drm_kms_helper_poll_fini);
* interrupts for each connector.
*
* Drivers which support hotplug interrupts for each connector individually and
*
* This function must be called from process context with no mode
* setting locks held.
-@@ -823,9 +904,7 @@ bool drm_helper_hpd_irq_event(struct drm
+@@ -832,9 +913,7 @@ bool drm_helper_hpd_irq_event(struct drm
{
struct drm_connector *connector;
struct drm_connector_list_iter conn_iter;
if (!dev->mode_config.poll_enabled)
return false;
-@@ -833,37 +912,8 @@ bool drm_helper_hpd_irq_event(struct drm
+@@ -842,37 +921,8 @@ bool drm_helper_hpd_irq_event(struct drm
mutex_lock(&dev->mode_config.mutex);
drm_connector_list_iter_begin(dev, &conn_iter);
drm_for_each_connector_iter(connector, &conn_iter) {
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1802,10 +1802,11 @@ static void vc4_hdmi_audio_exit(struct v
+@@ -1804,10 +1804,11 @@ static void vc4_hdmi_audio_exit(struct v
static irqreturn_t vc4_hdmi_hpd_irq_thread(int irq, void *priv)
{
struct vc4_hdmi *vc4_hdmi = priv;
+++ /dev/null
-From bcfe73a54afc6871e3dc16f6ca2c626f21fd4e8d Mon Sep 17 00:00:00 2001
-From: Steve Glendinning <steve.glendinning@smsc.com>
-Date: Thu, 19 Feb 2015 18:47:12 +0000
-Subject: [PATCH] smsx95xx: fix crimes against truesize
-
-smsc95xx is adjusting truesize when it shouldn't, and following a recent patch from Eric this is now triggering warnings.
-
-This patch stops smsc95xx from changing truesize.
-
-Signed-off-by: Steve Glendinning <steve.glendinning@smsc.com>
----
- drivers/net/usb/smsc95xx.c | 10 ++++++++--
- 1 file changed, 8 insertions(+), 2 deletions(-)
-
---- a/drivers/net/usb/smsc95xx.c
-+++ b/drivers/net/usb/smsc95xx.c
-@@ -67,6 +67,10 @@ static bool turbo_mode = true;
- module_param(turbo_mode, bool, 0644);
- MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
-
-+static bool truesize_mode = false;
-+module_param(truesize_mode, bool, 0644);
-+MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
-+
- static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
- u32 *data, int in_pm)
- {
-@@ -1845,7 +1849,8 @@ static int smsc95xx_rx_fixup(struct usbn
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(skb);
- skb_trim(skb, skb->len - 4); /* remove fcs */
-- skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ skb->truesize = size + sizeof(struct sk_buff);
-
- return 1;
- }
-@@ -1863,7 +1868,8 @@ static int smsc95xx_rx_fixup(struct usbn
- if (dev->net->features & NETIF_F_RXCSUM)
- smsc95xx_rx_csum_offload(ax_skb);
- skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */
-- ax_skb->truesize = size + sizeof(struct sk_buff);
-+ if (truesize_mode)
-+ ax_skb->truesize = size + sizeof(struct sk_buff);
-
- usbnet_skb_return(dev, ax_skb);
- }
--- a/drivers/net/usb/smsc95xx.c
+++ b/drivers/net/usb/smsc95xx.c
-@@ -71,6 +71,10 @@ static bool truesize_mode = false;
- module_param(truesize_mode, bool, 0644);
- MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
+@@ -67,6 +67,10 @@ static bool turbo_mode = true;
+ module_param(turbo_mode, bool, 0644);
+ MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction");
+static int packetsize = 2560;
+module_param(packetsize, int, 0644);
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
-@@ -917,13 +921,13 @@ static int smsc95xx_reset(struct usbnet
+@@ -913,13 +917,13 @@ static int smsc95xx_reset(struct usbnet
if (!turbo_mode) {
burst_cap = 0;
struct smsc95xx_priv {
u32 mac_cr;
-@@ -75,6 +76,10 @@ static int packetsize = 2560;
+@@ -71,6 +72,10 @@ static int packetsize = 2560;
module_param(packetsize, int, 0644);
MODULE_PARM_DESC(packetsize, "Override the RX URB packet size");
static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index,
u32 *data, int in_pm)
{
-@@ -773,6 +778,53 @@ static int smsc95xx_ioctl(struct net_dev
+@@ -769,6 +774,53 @@ static int smsc95xx_ioctl(struct net_dev
return phy_mii_ioctl(netdev->phydev, rq, cmd);
}
static void smsc95xx_init_mac_address(struct usbnet *dev)
{
/* maybe the boot loader passed the MAC address in devicetree */
-@@ -795,6 +847,10 @@ static void smsc95xx_init_mac_address(st
+@@ -791,6 +843,10 @@ static void smsc95xx_init_mac_address(st
}
}
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -32,6 +32,8 @@ struct rpi_firmware {
+@@ -33,6 +33,8 @@ struct rpi_firmware {
struct kref consumers;
};
static DEFINE_MUTEX(transaction_lock);
static void response_callback(struct mbox_client *cl, void *msg)
-@@ -280,6 +282,7 @@ static int rpi_firmware_probe(struct pla
+@@ -281,6 +283,7 @@ static int rpi_firmware_probe(struct pla
kref_init(&fw->consumers);
platform_set_drvdata(pdev, fw);
rpi_firmware_print_firmware_revision(fw);
rpi_register_hwmon_driver(dev, fw);
-@@ -308,6 +311,7 @@ static int rpi_firmware_remove(struct pl
+@@ -309,6 +312,7 @@ static int rpi_firmware_remove(struct pl
rpi_clk = NULL;
rpi_firmware_put(fw);
return 0;
}
-@@ -382,7 +386,18 @@ static struct platform_driver rpi_firmwa
+@@ -383,7 +387,18 @@ static struct platform_driver rpi_firmwa
.shutdown = rpi_firmware_shutdown,
.remove = rpi_firmware_remove,
};
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -12,6 +12,7 @@
+@@ -13,6 +13,7 @@
#include <linux/module.h>
#include <linux/of_platform.h>
#include <linux/platform_device.h>
#include <linux/slab.h>
#include <soc/bcm2835/raspberrypi-firmware.h>
-@@ -179,6 +180,26 @@ int rpi_firmware_property(struct rpi_fir
+@@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa
+@@ -388,15 +409,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -31,6 +31,7 @@ struct rpi_firmware {
+@@ -32,6 +32,7 @@ struct rpi_firmware {
u32 enabled;
struct kref consumers;
};
static struct platform_device *g_pdev;
-@@ -176,6 +177,12 @@ int rpi_firmware_property(struct rpi_fir
+@@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
kfree(data);
return ret;
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
-@@ -200,6 +207,27 @@ static int rpi_firmware_notify_reboot(st
+@@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
return 0;
}
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -229,6 +257,11 @@ rpi_register_hwmon_driver(struct device
+@@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
rpi_hwmon = platform_device_register_data(dev, "raspberrypi-hwmon",
-1, NULL, 0);
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -233,6 +233,15 @@ rpi_firmware_print_firmware_revision(str
+@@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
{
time64_t date_and_time;
u32 packet;
int ret = rpi_firmware_property(fw,
RPI_FIRMWARE_GET_FIRMWARE_REVISION,
&packet, sizeof(packet));
-@@ -242,7 +251,35 @@ rpi_firmware_print_firmware_revision(str
+@@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */
date_and_time = packet;
}
static void
-@@ -339,6 +376,7 @@ static int rpi_firmware_probe(struct pla
+@@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
g_pdev = pdev;
rpi_firmware_print_firmware_revision(fw);
MODULE_DESCRIPTION("BCM2835 clock driver");
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -499,7 +499,7 @@ out2:
+@@ -500,7 +500,7 @@ out2:
out1:
return ret;
}
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -3492,6 +3492,7 @@ static int __spi_validate_bits_per_word(
+@@ -3496,6 +3496,7 @@ static int __spi_validate_bits_per_word(
*/
int spi_setup(struct spi_device *spi)
{
unsigned bad_bits, ugly_bits;
int status;
-@@ -3513,6 +3514,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3517,6 +3518,14 @@ int spi_setup(struct spi_device *spi)
(SPI_TX_DUAL | SPI_TX_QUAD | SPI_TX_OCTAL |
SPI_RX_DUAL | SPI_RX_QUAD | SPI_RX_OCTAL)))
return -EINVAL;
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -193,6 +193,7 @@ static int rpi_firmware_notify_reboot(st
+@@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
{
struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev;
if (!pdev)
return 0;
-@@ -201,8 +202,28 @@ static int rpi_firmware_notify_reboot(st
+@@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw)
return 0;
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
-@@ -4669,6 +4701,9 @@ static const struct of_device_id platfor
+@@ -4672,6 +4704,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
return 0;
}
-@@ -2370,6 +2376,7 @@ static int vc5_hdmi_init_resources(struc
+@@ -2372,6 +2378,7 @@ static int vc5_hdmi_init_resources(struc
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
struct resource *res;
res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi");
if (!res)
-@@ -2466,6 +2473,38 @@ static int vc5_hdmi_init_resources(struc
+@@ -2468,6 +2475,38 @@ static int vc5_hdmi_init_resources(struc
return PTR_ERR(vc4_hdmi->reset);
}
--- a/drivers/gpu/drm/panel/panel-simple.c
+++ b/drivers/gpu/drm/panel/panel-simple.c
-@@ -3766,6 +3766,31 @@ static const struct panel_desc qishenglo
+@@ -3769,6 +3769,31 @@ static const struct panel_desc qishenglo
.connector_type = DRM_MODE_CONNECTOR_DPI,
};
static const struct display_timing rocktech_rk070er9427_timing = {
.pixelclock = { 26400000, 33300000, 46800000 },
.hactive = { 800, 800, 800 },
-@@ -4848,6 +4873,9 @@ static const struct of_device_id platfor
+@@ -4851,6 +4876,9 @@ static const struct of_device_id platfor
.compatible = "qishenglong,gopher2b-lcd",
.data = &qishenglong_gopher2b_lcd,
}, {
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2558,7 +2558,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -2560,7 +2560,8 @@ static int vc4_hdmi_bind(struct device *
* vc4_hdmi_disable_scrambling() will thus run at boot, make
* sure it's disabled, and avoid any inconsistency.
*/
/* HDMI audio codec callbacks */
static void vc4_hdmi_audio_set_mai_clock(struct vc4_hdmi *vc4_hdmi,
unsigned int samplerate)
-@@ -2778,6 +2784,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2780,6 +2786,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
.supports_hdr = true,
};
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
-@@ -2806,6 +2813,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2808,6 +2815,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
.supports_hdr = true,
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2194,7 +2194,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2196,7 +2196,6 @@ static int vc4_hdmi_cec_init(struct vc4_
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
unsigned long flags;
int ret;
if (!of_find_property(dev->of_node, "interrupts", NULL)) {
-@@ -2214,15 +2213,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2216,15 +2215,6 @@ static int vc4_hdmi_cec_init(struct vc4_
cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector);
cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info);
if (vc4_hdmi->variant->external_irq_controller) {
ret = request_threaded_irq(platform_get_irq_byname(pdev, "cec-rx"),
vc4_cec_irq_handler_rx_bare,
-@@ -2285,6 +2275,29 @@ static void vc4_hdmi_cec_exit(struct vc4
+@@ -2287,6 +2277,29 @@ static void vc4_hdmi_cec_exit(struct vc4
cec_unregister_adapter(vc4_hdmi->cec_adap);
}
#else
static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi)
{
-@@ -2293,6 +2306,10 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2295,6 +2308,10 @@ static int vc4_hdmi_cec_init(struct vc4_
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
#endif
static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi,
-@@ -2527,6 +2544,15 @@ static int vc4_hdmi_runtime_resume(struc
+@@ -2529,6 +2546,15 @@ static int vc4_hdmi_runtime_resume(struc
if (ret)
return ret;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2281,7 +2281,7 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -2283,7 +2283,7 @@ static int vc4_hdmi_cec_init(struct vc4_
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {};
static const struct drm_display_mode giantplus_gpg482739qs5_mode = {
.clock = 9000,
.hdisplay = 480,
-@@ -4711,6 +4737,9 @@ static const struct of_device_id platfor
+@@ -4714,6 +4740,9 @@ static const struct of_device_id platfor
.compatible = "friendlyarm,hd702e",
.data = &friendlyarm_hd702e,
}, {
return MODE_CLOCK_HIGH;
if (info->max_tmds_clock && clock > (info->max_tmds_clock * 1000))
-@@ -3158,14 +3160,6 @@ static int vc4_hdmi_bind(struct device *
+@@ -3160,14 +3162,6 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi->disable_wifi_frequencies =
of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence");
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -1236,6 +1236,34 @@ int __get_mtd_device(struct mtd_info *mt
+@@ -1238,6 +1238,34 @@ int __get_mtd_device(struct mtd_info *mt
EXPORT_SYMBOL_GPL(__get_mtd_device);
/**
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -1676,6 +1676,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
+@@ -1678,6 +1678,9 @@ int mtd_read_oob(struct mtd_info *mtd, l
if (!master->_read_oob && (!master->_read || ops->oobbuf))
return -EOPNOTSUPP;
if (mtd->flags & MTD_SLC_ON_MLC_EMULATION)
ret_code = mtd_io_emulated_slc(mtd, from, true, ops);
else
-@@ -1693,6 +1696,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
+@@ -1695,6 +1698,8 @@ int mtd_read_oob(struct mtd_info *mtd, l
return ret_code;
if (mtd->ecc_strength == 0)
return 0; /* device lacks ecc */
--- a/drivers/mtd/mtdcore.c
+++ b/drivers/mtd/mtdcore.c
-@@ -960,8 +960,8 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -962,8 +962,8 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "user-otp", size,
mtd_nvmem_user_otp_reg_read);
if (IS_ERR(nvmem)) {
}
mtd->otp_user_nvmem = nvmem;
}
-@@ -978,7 +978,6 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -980,7 +980,6 @@ static int mtd_otp_nvmem_add(struct mtd_
nvmem = mtd_otp_nvmem_register(mtd, "factory-otp", size,
mtd_nvmem_fact_otp_reg_read);
if (IS_ERR(nvmem)) {
err = PTR_ERR(nvmem);
goto err;
}
-@@ -991,7 +990,7 @@ static int mtd_otp_nvmem_add(struct mtd_
+@@ -993,7 +992,7 @@ static int mtd_otp_nvmem_add(struct mtd_
err:
if (mtd->otp_user_nvmem)
nvmem_unregister(mtd->otp_user_nvmem);
* of_find_node_by_phandle - Find a node given a phandle
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -2140,8 +2140,8 @@ of_register_spi_device(struct spi_contro
+@@ -2144,8 +2144,8 @@ of_register_spi_device(struct spi_contro
}
/* Select device driver */
#include "mtdcore.h"
-@@ -1106,6 +1107,8 @@ int mtd_device_parse_register(struct mtd
+@@ -1108,6 +1109,8 @@ int mtd_device_parse_register(struct mtd
register_reboot_notifier(&mtd->reboot_notifier);
}
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -2995,6 +2995,9 @@ static int mv88e6xxx_setup_port(struct m
+@@ -3005,6 +3005,9 @@ static int mv88e6xxx_setup_port(struct m
else
reg = 1 << port;
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -387,6 +387,9 @@ static struct pernet_operations ip_rt_pr
+@@ -388,6 +388,9 @@ static struct pernet_operations ip_rt_pr
static int __init ip_rt_proc_init(void)
{
if (!net_eq(dev_net(dev), sock_net(sk)))
goto drop;
-@@ -3346,6 +3348,7 @@ static int packet_create(struct net *net
+@@ -3345,6 +3347,7 @@ static int packet_create(struct net *net
mutex_init(&po->pg_vec_lock);
po->rollover = NULL;
po->prot_hook.func = packet_rcv;
if (sock->type == SOCK_PACKET)
po->prot_hook.func = packet_rcv_spkt;
-@@ -3983,6 +3986,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3982,6 +3985,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4039,6 +4052,13 @@ static int packet_getsockopt(struct sock
+@@ -4038,6 +4051,13 @@ static int packet_getsockopt(struct sock
case PACKET_VNET_HDR:
val = po->has_vnet_hdr;
break;
return -EINVAL;
--- a/net/ipv6/route.c
+++ b/net/ipv6/route.c
-@@ -97,6 +97,8 @@ static int ip6_pkt_discard(struct sk_bu
+@@ -98,6 +98,8 @@ static int ip6_pkt_discard(struct sk_bu
static int ip6_pkt_discard_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct net *net, struct sock *sk, struct sk_buff *skb);
static void ip6_link_failure(struct sk_buff *skb);
static void ip6_rt_update_pmtu(struct dst_entry *dst, struct sock *sk,
struct sk_buff *skb, u32 mtu,
-@@ -312,6 +314,18 @@ static const struct rt6_info ip6_prohibi
+@@ -313,6 +315,18 @@ static const struct rt6_info ip6_prohibi
.rt6i_flags = (RTF_REJECT | RTF_NONEXTHOP),
};
static const struct rt6_info ip6_blk_hole_entry_template = {
.dst = {
.__refcnt = ATOMIC_INIT(1),
-@@ -1033,6 +1047,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1034,6 +1048,7 @@ static const int fib6_prop[RTN_MAX + 1]
[RTN_BLACKHOLE] = -EINVAL,
[RTN_UNREACHABLE] = -EHOSTUNREACH,
[RTN_PROHIBIT] = -EACCES,
[RTN_THROW] = -EAGAIN,
[RTN_NAT] = -EINVAL,
[RTN_XRESOLVE] = -EINVAL,
-@@ -1068,6 +1083,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1069,6 +1084,10 @@ static void ip6_rt_init_dst_reject(struc
rt->dst.output = ip6_pkt_prohibit_out;
rt->dst.input = ip6_pkt_prohibit;
break;
case RTN_THROW:
case RTN_UNREACHABLE:
default:
-@@ -4557,6 +4576,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4561,6 +4580,17 @@ static int ip6_pkt_prohibit_out(struct n
return ip6_pkt_drop(skb, ICMPV6_ADM_PROHIBITED, IPSTATS_MIB_OUTNOROUTES);
}
/*
* Allocate a dst for local (unicast / anycast) address.
*/
-@@ -5044,7 +5074,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -5048,7 +5078,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)
-@@ -6291,6 +6322,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6295,6 +6326,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
-@@ -6302,6 +6335,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6306,6 +6339,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
}
-@@ -6493,6 +6527,8 @@ static int __net_init ip6_route_net_init
+@@ -6497,6 +6531,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);
-@@ -6503,11 +6539,21 @@ static int __net_init ip6_route_net_init
+@@ -6507,11 +6543,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);
-@@ -6534,6 +6580,8 @@ out:
+@@ -6538,6 +6584,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6553,6 +6601,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6557,6 +6605,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);
-@@ -6636,6 +6685,9 @@ void __init ip6_route_init_special_entri
+@@ -6640,6 +6689,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);
void netif_napi_add(struct net_device *dev, struct napi_struct *napi,
int (*poll)(struct napi_struct *, int), int weight)
{
-@@ -11384,6 +11459,9 @@ static int dev_cpu_dead(unsigned int old
+@@ -11385,6 +11460,9 @@ static int dev_cpu_dead(unsigned int old
raise_softirq_irqoff(NET_TX_SOFTIRQ);
local_irq_enable();
#ifdef CONFIG_RPS
remsd = oldsd->rps_ipi_list;
oldsd->rps_ipi_list = NULL;
-@@ -11723,6 +11801,7 @@ static int __init net_dev_init(void)
+@@ -11724,6 +11802,7 @@ static int __init net_dev_init(void)
sd->cpu = i;
#endif
--- a/drivers/net/dsa/mv88e6xxx/chip.c
+++ b/drivers/net/dsa/mv88e6xxx/chip.c
-@@ -6343,6 +6343,7 @@ static int mv88e6xxx_register_switch(str
+@@ -6385,6 +6385,7 @@ static int mv88e6xxx_register_switch(str
ds->ops = &mv88e6xxx_switch_ops;
ds->ageing_time_min = chip->info->age_time_coeff;
ds->ageing_time_max = chip->info->age_time_coeff * U8_MAX;
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -1246,6 +1246,70 @@ static int spi_transfer_wait(struct spi_
+@@ -1250,6 +1250,70 @@ static int spi_transfer_wait(struct spi_
return 0;
}
static void _spi_transfer_delay_ns(u32 ns)
{
if (!ns)
-@@ -2033,6 +2097,75 @@ void spi_flush_queue(struct spi_controll
+@@ -2037,6 +2101,75 @@ void spi_flush_queue(struct spi_controll
/*-------------------------------------------------------------------------*/
#if defined(CONFIG_OF)
static int of_spi_parse_dt(struct spi_controller *ctlr, struct spi_device *spi,
struct device_node *nc)
{
-@@ -2151,6 +2284,10 @@ of_register_spi_device(struct spi_contro
+@@ -2155,6 +2288,10 @@ of_register_spi_device(struct spi_contro
if (rc)
goto err_out;