-LINUX_VERSION-5.10 = .218
-LINUX_KERNEL_HASH-5.10.218 = 9c36b243e8c3ec1d5963366618f336710b84340bf95be2037b26c452392cb2d6
+LINUX_VERSION-5.10 = .219
+LINUX_KERNEL_HASH-5.10.219 = 93b73f15cc376463e6422cce09ccd9d0a20fb113921ffebddf3352c44d84cd30
+++ /dev/null
-From dbfae4876cd4c8525a0100f19307f16cf7fb384a Mon Sep 17 00:00:00 2001
-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.
-
----
- 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
-@@ -68,6 +68,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)
- {
-@@ -1861,7 +1865,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;
- }
-@@ -1879,7 +1884,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
-@@ -72,6 +72,10 @@ static bool truesize_mode = false;
- module_param(truesize_mode, bool, 0644);
- MODULE_PARM_DESC(truesize_mode, "Report larger truesize value");
+@@ -68,6 +68,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)
{
-@@ -920,13 +924,13 @@ static int smsc95xx_reset(struct usbnet
+@@ -916,13 +920,13 @@ static int smsc95xx_reset(struct usbnet
if (!turbo_mode) {
burst_cap = 0;
struct smsc95xx_priv {
u32 mac_cr;
-@@ -76,6 +77,10 @@ static int packetsize = 2560;
+@@ -72,6 +73,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)
{
-@@ -776,6 +781,53 @@ static int smsc95xx_ioctl(struct net_dev
+@@ -772,6 +777,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 */
-@@ -798,6 +850,10 @@ static void smsc95xx_init_mac_address(st
+@@ -794,6 +846,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);
-@@ -309,6 +312,8 @@ static int rpi_firmware_remove(struct pl
+@@ -310,6 +313,8 @@ static int rpi_firmware_remove(struct pl
rpi_firmware_put(fw);
return 0;
}
-@@ -322,7 +327,7 @@ static int rpi_firmware_remove(struct pl
+@@ -323,7 +328,7 @@ static int rpi_firmware_remove(struct pl
*/
struct rpi_firmware *rpi_firmware_get(struct device_node *firmware_node)
{
struct rpi_firmware *fw;
if (!pdev)
-@@ -335,12 +340,9 @@ struct rpi_firmware *rpi_firmware_get(st
+@@ -336,12 +341,9 @@ struct rpi_firmware *rpi_firmware_get(st
if (!kref_get_unless_zero(&fw->consumers))
goto err_put_device;
return NULL;
}
EXPORT_SYMBOL_GPL(rpi_firmware_get);
-@@ -382,7 +384,18 @@ static struct platform_driver rpi_firmwa
+@@ -383,7 +385,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
-@@ -46,7 +46,7 @@ static void response_callback(struct mbo
+@@ -47,7 +47,7 @@ static void response_callback(struct mbo
* Sends a request to the firmware through the BCM2835 mailbox driver,
* and synchronously waits for the reply.
*/
rpi_firmware_transaction(struct rpi_firmware *fw, u32 chan, u32 data)
{
u32 message = MBOX_MSG(chan, data);
-@@ -71,6 +71,7 @@ rpi_firmware_transaction(struct rpi_firm
+@@ -72,6 +72,7 @@ rpi_firmware_transaction(struct rpi_firm
return ret;
}
--- 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>
-@@ -180,6 +181,26 @@ int rpi_firmware_property(struct rpi_fir
+@@ -181,6 +182,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)
{
-@@ -386,15 +407,32 @@ static struct platform_driver rpi_firmwa
+@@ -387,15 +408,32 @@ static struct platform_driver rpi_firmwa
.remove = rpi_firmware_remove,
};
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -29,6 +29,7 @@ struct rpi_firmware {
+@@ -30,6 +30,7 @@ struct rpi_firmware {
struct mbox_chan *chan; /* The property channel. */
struct completion c;
u32 enabled;
struct kref consumers;
};
-@@ -177,6 +178,12 @@ int rpi_firmware_property(struct rpi_fir
+@@ -178,6 +179,12 @@ int rpi_firmware_property(struct rpi_fir
kfree(data);
return ret;
}
EXPORT_SYMBOL_GPL(rpi_firmware_property);
-@@ -201,6 +208,27 @@ static int rpi_firmware_notify_reboot(st
+@@ -202,6 +209,27 @@ static int rpi_firmware_notify_reboot(st
return 0;
}
static void
rpi_firmware_print_firmware_revision(struct rpi_firmware *fw)
{
-@@ -230,6 +258,11 @@ rpi_register_hwmon_driver(struct device
+@@ -231,6 +259,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
-@@ -234,6 +234,15 @@ rpi_firmware_print_firmware_revision(str
+@@ -235,6 +235,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));
-@@ -243,7 +252,35 @@ rpi_firmware_print_firmware_revision(str
+@@ -244,7 +253,35 @@ rpi_firmware_print_firmware_revision(str
/* This is not compatible with y2038 */
date_and_time = packet;
}
static void
-@@ -340,6 +377,7 @@ static int rpi_firmware_probe(struct pla
+@@ -341,6 +378,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
-@@ -498,7 +498,7 @@ out2:
+@@ -499,7 +499,7 @@ out2:
out1:
return ret;
}
--- a/drivers/spi/spi.c
+++ b/drivers/spi/spi.c
-@@ -3340,6 +3340,7 @@ static int __spi_validate_bits_per_word(
+@@ -3344,6 +3344,7 @@ static int __spi_validate_bits_per_word(
*/
int spi_setup(struct spi_device *spi)
{
unsigned bad_bits, ugly_bits;
int status;
-@@ -3357,6 +3358,14 @@ int spi_setup(struct spi_device *spi)
+@@ -3361,6 +3362,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/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1488,9 +1488,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1490,9 +1490,6 @@ static int vc4_hdmi_cec_init(struct vc4_
u32 value;
int ret;
vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops,
vc4_hdmi,
vc4_hdmi->variant->card_name,
-@@ -1924,7 +1921,6 @@ static const struct vc4_hdmi_variant bcm
+@@ -1926,7 +1923,6 @@ static const struct vc4_hdmi_variant bcm
.debugfs_name = "hdmi_regs",
.card_name = "vc4-hdmi",
.max_pixel_clock = 162000000,
};
static const struct snd_soc_dapm_widget vc4_hdmi_audio_widgets[] = {
-@@ -1306,6 +1361,11 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1308,6 +1363,11 @@ static int vc4_hdmi_audio_init(struct vc
vc4_hdmi->audio.dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
vc4_hdmi->audio.dma_data.maxburst = 2;
return 0;
}
-@@ -1738,6 +1744,7 @@ static int vc5_hdmi_init_resources(struc
+@@ -1740,6 +1746,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)
-@@ -1828,6 +1835,38 @@ static int vc5_hdmi_init_resources(struc
+@@ -1830,6 +1837,38 @@ static int vc5_hdmi_init_resources(struc
return PTR_ERR(vc4_hdmi->reset);
}
--- a/drivers/firmware/raspberrypi.c
+++ b/drivers/firmware/raspberrypi.c
-@@ -194,6 +194,7 @@ static int rpi_firmware_notify_reboot(st
+@@ -195,6 +195,7 @@ static int rpi_firmware_notify_reboot(st
{
struct rpi_firmware *fw;
struct platform_device *pdev = g_pdev;
if (!pdev)
return 0;
-@@ -202,8 +203,28 @@ static int rpi_firmware_notify_reboot(st
+@@ -203,8 +204,28 @@ static int rpi_firmware_notify_reboot(st
if (!fw)
return 0;
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5642,17 +5642,19 @@ static void dm_update_crtc_active_planes
+@@ -5643,17 +5643,19 @@ static void dm_update_crtc_active_planes
}
static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc,
WARN_ON(1);
return ret;
}
-@@ -5663,8 +5665,8 @@ static int dm_crtc_helper_atomic_check(s
+@@ -5664,8 +5666,8 @@ static int dm_crtc_helper_atomic_check(s
* planes are disabled, which is not supported by the hardware. And there is legacy
* userspace which stops using the HW cursor altogether in response to the resulting EINVAL.
*/
value |= clk_cnt << VC4_HDMI_CEC_DIV_CLK_CNT_SHIFT;
HDMI_WRITE(HDMI_CEC_CNTRL_1, value);
}
-@@ -1871,6 +1871,7 @@ static int vc4_hdmi_init_resources(struc
+@@ -1873,6 +1873,7 @@ static int vc4_hdmi_init_resources(struc
return PTR_ERR(vc4_hdmi->hsm_clock);
}
vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;
return 0;
}
-@@ -1965,6 +1966,12 @@ static int vc5_hdmi_init_resources(struc
+@@ -1967,6 +1968,12 @@ static int vc5_hdmi_init_resources(struc
return PTR_ERR(vc4_hdmi->audio_clock);
}
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1575,15 +1575,22 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1577,15 +1577,22 @@ static int vc4_hdmi_audio_init(struct vc
}
#ifdef CONFIG_DRM_VC4_HDMI_CEC
cec_transmit_done(vc4_hdmi->cec_adap, CEC_TX_STATUS_OK,
0, 0, 0, 0);
} else {
-@@ -1597,6 +1604,19 @@ static irqreturn_t vc4_cec_irq_handler_t
+@@ -1599,6 +1606,19 @@ static irqreturn_t vc4_cec_irq_handler_t
return IRQ_HANDLED;
}
static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1)
{
struct drm_device *dev = vc4_hdmi->connector.dev;
-@@ -1621,31 +1641,55 @@ static void vc4_cec_read_msg(struct vc4_
+@@ -1623,31 +1643,55 @@ static void vc4_cec_read_msg(struct vc4_
}
}
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1726,9 +1726,11 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1728,9 +1728,11 @@ static int vc4_hdmi_cec_adap_enable(stru
((3600 / usecs) << VC4_HDMI_CEC_CNT_TO_3600_US_SHIFT) |
((3500 / usecs) << VC4_HDMI_CEC_CNT_TO_3500_US_SHIFT));
HDMI_WRITE(HDMI_CEC_CNTRL_5, val |
VC4_HDMI_CEC_TX_SW_RESET | VC4_HDMI_CEC_RX_SW_RESET);
}
-@@ -1801,8 +1803,6 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1803,8 +1805,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);
value = HDMI_READ(HDMI_CEC_CNTRL_1);
/* Set the logical address to Unregistered */
value |= VC4_HDMI_CEC_ADDR_MASK;
-@@ -1810,12 +1810,32 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1812,12 +1812,32 @@ static int vc4_hdmi_cec_init(struct vc4_
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
ret = cec_register_adapter(vc4_hdmi->cec_adap, &pdev->dev);
if (ret < 0)
-@@ -2290,6 +2310,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2292,6 +2312,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_CK,
},
.unsupported_odd_h_timings = true,
.init_resources = vc5_hdmi_init_resources,
.csc_setup = vc5_hdmi_csc_setup,
-@@ -2316,6 +2337,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2318,6 +2339,7 @@ static const struct vc4_hdmi_variant bcm
PHY_LANE_2,
},
.unsupported_odd_h_timings = true,
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1788,9 +1788,15 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1790,9 +1790,15 @@ static int vc4_hdmi_cec_init(struct vc4_
{
struct cec_connector_info conn_info;
struct platform_device *pdev = vc4_hdmi->pdev;
}
static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
-@@ -2300,6 +2325,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2302,6 +2327,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_enable = vc4_hdmi_phy_rng_enable,
.phy_rng_disable = vc4_hdmi_phy_rng_disable,
.channel_map = vc4_hdmi_channel_map,
};
static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = {
-@@ -2327,6 +2353,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2329,6 +2355,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
};
static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = {
-@@ -2354,6 +2381,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2356,6 +2383,7 @@ static const struct vc4_hdmi_variant bcm
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -6568,9 +6568,7 @@ void amdgpu_dm_connector_init_helper(str
+@@ -6569,9 +6569,7 @@ void amdgpu_dm_connector_init_helper(str
if (connector_type == DRM_MODE_CONNECTOR_HDMIA ||
connector_type == DRM_MODE_CONNECTOR_DisplayPort ||
connector_type == DRM_MODE_CONNECTOR_eDP) {
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5513,25 +5513,6 @@ static int fill_hdr_info_packet(const st
+@@ -5514,25 +5514,6 @@ static int fill_hdr_info_packet(const st
return 0;
}
static int
amdgpu_dm_connector_atomic_check(struct drm_connector *conn,
struct drm_atomic_state *state)
-@@ -5547,7 +5528,7 @@ amdgpu_dm_connector_atomic_check(struct
+@@ -5548,7 +5529,7 @@ amdgpu_dm_connector_atomic_check(struct
if (!crtc)
return 0;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1691,6 +1691,46 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1693,6 +1693,46 @@ static int vc4_hdmi_audio_init(struct vc
}
#ifdef CONFIG_DRM_VC4_HDMI_CEC
static irqreturn_t vc4_cec_irq_handler_rx_thread(int irq, void *priv)
{
-@@ -2319,6 +2359,10 @@ static int vc4_hdmi_bind(struct device *
+@@ -2321,6 +2361,10 @@ static int vc4_hdmi_bind(struct device *
if (ret)
goto err_destroy_encoder;
static void vc4_hdmi_encoder_post_crtc_disable(struct drm_encoder *encoder,
struct drm_atomic_state *state)
{
-@@ -2277,6 +2301,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2279,6 +2303,7 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL);
if (!vc4_hdmi)
return -ENOMEM;
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1730,6 +1730,7 @@ static int vc4_hdmi_hotplug_init(struct
+@@ -1732,6 +1732,7 @@ static int vc4_hdmi_hotplug_init(struct
{
struct platform_device *pdev = vc4_hdmi->pdev;
struct device *dev = &pdev->dev;
const __be32 *addr;
int index, len;
int ret;
-@@ -1651,11 +1508,6 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1653,11 +1510,6 @@ static int vc4_hdmi_audio_init(struct vc
vc4_hdmi->audio.dma_data.addr_width = DMA_SLAVE_BUSWIDTH_4_BYTES;
vc4_hdmi->audio.dma_data.maxburst = 2;
ret = devm_snd_dmaengine_pcm_register(dev, &pcm_conf, 0);
if (ret) {
dev_err(dev, "Could not register PCM component: %d\n", ret);
-@@ -1669,12 +1521,13 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1671,12 +1523,13 @@ static int vc4_hdmi_audio_init(struct vc
return ret;
}
}
dai_link->cpus = &vc4_hdmi->audio.cpu;
-@@ -1687,9 +1540,9 @@ static int vc4_hdmi_audio_init(struct vc
+@@ -1689,9 +1542,9 @@ static int vc4_hdmi_audio_init(struct vc
dai_link->name = "MAI";
dai_link->stream_name = "MAI PCM";
static const struct drm_display_mode innolux_at070tn92_mode = {
.clock = 33333,
.hdisplay = 800,
-@@ -4087,6 +4119,9 @@ static const struct of_device_id platfor
+@@ -4090,6 +4122,9 @@ static const struct of_device_id platfor
.compatible = "innolux,at043tn24",
.data = &innolux_at043tn24,
}, {
static u32 vc4_hdmi_channel_map(struct vc4_hdmi *vc4_hdmi, u32 channel_mask)
{
int i;
-@@ -2338,6 +2355,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2340,6 +2357,7 @@ static const struct vc4_hdmi_variant bcm
.phy_disable = vc4_hdmi_phy_disable,
.phy_rng_enable = vc4_hdmi_phy_rng_enable,
.phy_rng_disable = vc4_hdmi_phy_rng_disable,
.channel_map = vc4_hdmi_channel_map,
.supports_hdr = false,
};
-@@ -2366,6 +2384,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2368,6 +2386,7 @@ static const struct vc4_hdmi_variant bcm
.phy_disable = vc5_hdmi_phy_disable,
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
.channel_map = vc5_hdmi_channel_map,
.supports_hdr = true,
};
-@@ -2394,6 +2413,7 @@ static const struct vc4_hdmi_variant bcm
+@@ -2396,6 +2415,7 @@ static const struct vc4_hdmi_variant bcm
.phy_disable = vc5_hdmi_phy_disable,
.phy_rng_enable = vc5_hdmi_phy_rng_enable,
.phy_rng_disable = vc5_hdmi_phy_rng_disable,
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1757,7 +1757,7 @@ static irqreturn_t vc4_cec_irq_handler(i
+@@ -1759,7 +1759,7 @@ static irqreturn_t vc4_cec_irq_handler(i
return ret;
}
{
struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap);
/* clock period in microseconds */
-@@ -1770,38 +1770,53 @@ static int vc4_hdmi_cec_adap_enable(stru
+@@ -1772,38 +1772,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
-@@ -1898,25 +1898,23 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1900,25 +1900,23 @@ static int vc4_hdmi_cec_init(struct vc4_
vc4_hdmi_cec_update_clk_div(vc4_hdmi);
if (vc4_hdmi->variant->external_irq_controller) {
vc4_cec_irq_handler,
vc4_cec_irq_handler_thread, 0,
"vc4 hdmi cec", vc4_hdmi);
-@@ -1926,10 +1924,20 @@ static int vc4_hdmi_cec_init(struct vc4_
+@@ -1928,10 +1926,20 @@ static int vc4_hdmi_cec_init(struct vc4_
ret = cec_register_adapter(vc4_hdmi->cec_adap, &pdev->dev);
if (ret < 0)
err_delete_cec_adap:
cec_delete_adapter(vc4_hdmi->cec_adap);
-@@ -1938,6 +1946,15 @@ err_delete_cec_adap:
+@@ -1940,6 +1948,15 @@ err_delete_cec_adap:
static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi)
{
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1613,26 +1613,28 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
+@@ -1615,26 +1615,28 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
static int vc4_hdmi_hotplug_init(struct vc4_hdmi *vc4_hdmi)
{
struct platform_device *pdev = vc4_hdmi->pdev;
connector->polled = DRM_CONNECTOR_POLL_HPD;
}
-@@ -1640,6 +1642,16 @@ static int vc4_hdmi_hotplug_init(struct
+@@ -1642,6 +1644,16 @@ static int vc4_hdmi_hotplug_init(struct
return 0;
}
#ifdef CONFIG_DRM_VC4_HDMI_CEC
static irqreturn_t vc4_cec_irq_handler_rx_thread(int irq, void *priv)
{
-@@ -2307,7 +2319,7 @@ static int vc4_hdmi_bind(struct device *
+@@ -2309,7 +2321,7 @@ static int vc4_hdmi_bind(struct device *
ret = vc4_hdmi_cec_init(vc4_hdmi);
if (ret)
ret = vc4_hdmi_audio_init(vc4_hdmi);
if (ret)
-@@ -2321,6 +2333,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -2323,6 +2335,8 @@ static int vc4_hdmi_bind(struct device *
err_free_cec:
vc4_hdmi_cec_exit(vc4_hdmi);
err_destroy_conn:
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
err_destroy_encoder:
-@@ -2362,6 +2376,7 @@ static void vc4_hdmi_unbind(struct devic
+@@ -2364,6 +2378,7 @@ static void vc4_hdmi_unbind(struct devic
kfree(vc4_hdmi->hd_regset.regs);
vc4_hdmi_cec_exit(vc4_hdmi);
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -1604,7 +1604,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
+@@ -1606,7 +1606,7 @@ static irqreturn_t vc4_hdmi_hpd_irq_thre
struct vc4_hdmi *vc4_hdmi = priv;
struct drm_device *dev = vc4_hdmi->connector.dev;
--- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
+++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
-@@ -5029,7 +5029,6 @@ static void dm_disable_vblank(struct drm
+@@ -5030,7 +5030,6 @@ static void dm_disable_vblank(struct drm
static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = {
.reset = dm_crtc_reset_state,
.destroy = amdgpu_dm_crtc_destroy,
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
-@@ -2297,6 +2297,18 @@ static int vc4_hdmi_bind(struct device *
+@@ -2299,6 +2299,18 @@ static int vc4_hdmi_bind(struct device *
if (ret)
goto err_put_ddc;
if (vc4_hdmi->variant->reset)
vc4_hdmi->variant->reset(vc4_hdmi);
-@@ -2308,8 +2320,6 @@ static int vc4_hdmi_bind(struct device *
+@@ -2310,8 +2322,6 @@ static int vc4_hdmi_bind(struct device *
clk_prepare_enable(vc4_hdmi->pixel_bvb_clock);
}
drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS);
drm_encoder_helper_add(encoder, &vc4_hdmi_encoder_helper_funcs);
-@@ -2333,6 +2343,8 @@ static int vc4_hdmi_bind(struct device *
+@@ -2335,6 +2345,8 @@ static int vc4_hdmi_bind(struct device *
vc4_hdmi_debugfs_regs,
vc4_hdmi);
return 0;
err_free_cec:
-@@ -2343,6 +2355,7 @@ err_destroy_conn:
+@@ -2345,6 +2357,7 @@ err_destroy_conn:
vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
err_destroy_encoder:
drm_encoder_cleanup(encoder);
}
--- a/net/ipv4/route.c
+++ b/net/ipv4/route.c
-@@ -410,6 +410,9 @@ static struct pernet_operations ip_rt_pr
+@@ -411,6 +411,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;
-@@ -3986,6 +3989,16 @@ packet_setsockopt(struct socket *sock, i
+@@ -3985,6 +3988,16 @@ packet_setsockopt(struct socket *sock, i
WRITE_ONCE(po->xmit, val ? packet_direct_xmit : dev_queue_xmit);
return 0;
}
default:
return -ENOPROTOOPT;
}
-@@ -4042,6 +4055,13 @@ static int packet_getsockopt(struct sock
+@@ -4041,6 +4054,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
-@@ -95,6 +95,8 @@ static int ip6_pkt_discard(struct sk_bu
+@@ -96,6 +96,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,
-@@ -310,6 +312,18 @@ static const struct rt6_info ip6_prohibi
+@@ -311,6 +313,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),
-@@ -1031,6 +1045,7 @@ static const int fib6_prop[RTN_MAX + 1]
+@@ -1032,6 +1046,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,
-@@ -1066,6 +1081,10 @@ static void ip6_rt_init_dst_reject(struc
+@@ -1067,6 +1082,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:
-@@ -4446,6 +4465,17 @@ static int ip6_pkt_prohibit_out(struct n
+@@ -4450,6 +4469,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.
*/
-@@ -4933,7 +4963,8 @@ static int rtm_to_fib6_config(struct sk_
+@@ -4937,7 +4967,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)
-@@ -6126,6 +6157,8 @@ static int ip6_route_dev_notify(struct n
+@@ -6130,6 +6161,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
-@@ -6137,6 +6170,7 @@ static int ip6_route_dev_notify(struct n
+@@ -6141,6 +6174,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
}
-@@ -6328,6 +6362,8 @@ static int __net_init ip6_route_net_init
+@@ -6332,6 +6366,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);
-@@ -6338,11 +6374,21 @@ static int __net_init ip6_route_net_init
+@@ -6342,11 +6378,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);
-@@ -6369,6 +6415,8 @@ out:
+@@ -6373,6 +6419,8 @@ out:
return ret;
#ifdef CONFIG_IPV6_MULTIPLE_TABLES
out_ip6_prohibit_entry:
kfree(net->ipv6.ip6_prohibit_entry);
out_ip6_null_entry:
-@@ -6388,6 +6436,7 @@ static void __net_exit ip6_route_net_exi
+@@ -6392,6 +6440,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);
-@@ -6471,6 +6520,9 @@ void __init ip6_route_init_special_entri
+@@ -6475,6 +6524,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);