static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1596,6 +1597,7 @@ static int spinand_probe(struct spi_mem
+@@ -1604,6 +1605,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1603,6 +1605,7 @@ static int spinand_probe(struct spi_mem
+@@ -1611,6 +1613,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1621,6 +1624,7 @@ static int spinand_remove(struct spi_mem
+@@ -1629,6 +1632,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
case IPV6_2292HOPOPTS:
--- a/net/ipv6/exthdrs.c
+++ b/net/ipv6/exthdrs.c
-@@ -980,7 +980,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
+@@ -986,7 +986,7 @@ static bool ipv6_hop_jumbo(struct sk_buf
goto drop;
}
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -2330,6 +2330,14 @@ config RAVE_SP_CORE
+@@ -2354,6 +2354,14 @@ config RAVE_SP_CORE
Select this to get support for the Supervisory Processor
device found on several devices in RAVE line of hardware.
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -428,7 +428,7 @@ spidev_ioctl(struct file *filp, unsigned
+@@ -415,7 +415,7 @@ spidev_ioctl(struct file *filp, unsigned
}
if (ctlr->use_gpio_descriptors && spi_get_csgpiod(spi, 0))
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -721,7 +721,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids)
+@@ -703,7 +703,7 @@ MODULE_DEVICE_TABLE(spi, spidev_spi_ids)
*/
static int spidev_of_check(struct device *dev)
{
--- a/drivers/mfd/simple-mfd-i2c.c
+++ b/drivers/mfd/simple-mfd-i2c.c
-@@ -88,6 +88,7 @@ static const struct of_device_id simple_
+@@ -119,6 +119,7 @@ static const struct of_device_id simple_
+ { .compatible = "maxim,max77705-battery", .data = &maxim_mon_max77705},
{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
- { .compatible = "maxim,max5970", .data = &maxim_max5970},
- { .compatible = "maxim,max5978", .data = &maxim_max5970},
+ { .compatible = "spacemit,p1", .data = &spacemit_p1, },
+ { .compatible = "raspberrypi,sensehat" },
{}
};
* For devices with more than one control interface, we assume the
--- a/sound/usb/quirks.c
+++ b/sound/usb/quirks.c
-@@ -2393,6 +2393,8 @@ static const struct usb_audio_quirk_flag
+@@ -2395,6 +2395,8 @@ static const struct usb_audio_quirk_flag
QUIRK_FLAG_ALIGN_TRANSFER),
DEVICE_FLG(0x534d, 0x2109, /* MacroSilicon MS2109 */
QUIRK_FLAG_ALIGN_TRANSFER),
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -3464,8 +3473,14 @@ static int lan78xx_bind(struct lan78xx_n
+@@ -3462,8 +3471,14 @@ static int lan78xx_bind(struct lan78xx_n
if (DEFAULT_RX_CSUM_ENABLE)
dev->net->features |= NETIF_F_RXCSUM;
static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data)
{
u32 *buf;
-@@ -4448,7 +4453,13 @@ static int lan78xx_probe(struct usb_inte
+@@ -4446,7 +4451,13 @@ static int lan78xx_probe(struct usb_inte
if (ret < 0)
goto out4;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2915,6 +2915,11 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2913,6 +2913,11 @@ static int lan78xx_reset(struct lan78xx_
int ret;
u32 buf;
u8 sig;
ret = lan78xx_read_reg(dev, HW_CFG, &buf);
if (ret < 0)
-@@ -2983,6 +2988,10 @@ static int lan78xx_reset(struct lan78xx_
+@@ -2981,6 +2986,10 @@ static int lan78xx_reset(struct lan78xx_
buf |= HW_CFG_CLK125_EN_;
buf |= HW_CFG_REFCLK25_EN_;
ret = lan78xx_write_reg(dev, HW_CFG, buf);
if (ret < 0)
return ret;
-@@ -3085,6 +3094,9 @@ static int lan78xx_reset(struct lan78xx_
+@@ -3083,6 +3092,9 @@ static int lan78xx_reset(struct lan78xx_
buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_;
}
}
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -1352,6 +1352,7 @@ static const struct adv7180_chip_info ad
+@@ -1359,6 +1359,7 @@ static const struct adv7180_chip_info ad
static int init_device(struct adv7180_state *state)
{
int ret;
mutex_lock(&state->mutex);
-@@ -1399,6 +1400,18 @@ static int init_device(struct adv7180_st
+@@ -1406,6 +1407,18 @@ static int init_device(struct adv7180_st
goto out_unlock;
}
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -1341,6 +1341,7 @@ static const struct adv7180_chip_info ad
+@@ -1348,6 +1348,7 @@ static const struct adv7180_chip_info ad
BIT(ADV7182_INPUT_SVIDEO_AIN1_AIN2) |
BIT(ADV7182_INPUT_SVIDEO_AIN3_AIN4) |
BIT(ADV7182_INPUT_SVIDEO_AIN7_AIN8) |
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -331,6 +331,21 @@ static int v3d_platform_drm_probe(struct
+@@ -333,6 +333,21 @@ static int v3d_platform_drm_probe(struct
}
}
if (v3d->ver < 41) {
ret = map_regs(v3d, &v3d->gca_regs, "gca");
if (ret)
-@@ -360,6 +375,8 @@ static int v3d_platform_drm_probe(struct
+@@ -362,6 +377,8 @@ static int v3d_platform_drm_probe(struct
ret = v3d_sysfs_init(dev);
if (ret)
goto drm_unregister;
struct drm_device *drm;
struct v3d_dev *v3d;
int ret;
-@@ -337,7 +343,20 @@ static int v3d_platform_drm_probe(struct
+@@ -339,7 +345,20 @@ static int v3d_platform_drm_probe(struct
dev_err(dev, "Failed to get clock (%ld)\n", PTR_ERR(v3d->clk));
return PTR_ERR(v3d->clk);
}
/* For downclocking, drop it to the minimum frequency we can get from
* the CPRMAN clock generator dividing off our parent. The divider is
* 4 bits, but ask for just higher than that so that rounding doesn't
-@@ -375,7 +394,7 @@ static int v3d_platform_drm_probe(struct
+@@ -377,7 +396,7 @@ static int v3d_platform_drm_probe(struct
ret = v3d_sysfs_init(dev);
if (ret)
goto drm_unregister;
#define USB_VENDOR_ID_BELKIN 0x050d
#define USB_DEVICE_ID_FLIP_KVM 0x3201
-@@ -1475,6 +1478,9 @@
+@@ -1479,6 +1482,9 @@
#define USB_VENDOR_ID_XIAOMI 0x2717
#define USB_DEVICE_ID_MI_SILENT_MOUSE 0x5014
v4l2_ctrl_handler_init(&sensor->ctrls, 9);
-@@ -1351,6 +1352,11 @@ static int ov5647_init_controls(struct o
+@@ -1353,6 +1354,11 @@ static int ov5647_init_controls(struct o
ARRAY_SIZE(ov5647_test_pattern_menu) - 1,
0, 0, ov5647_test_pattern_menu);
if (sensor->ctrls.error)
goto handler_free;
-@@ -1434,7 +1440,7 @@ static int ov5647_probe(struct i2c_clien
-
- sensor->mode = OV5647_DEFAULT_MODE;
+@@ -1441,7 +1447,7 @@ static int ov5647_probe(struct i2c_clien
+ sd->internal_ops = &ov5647_subdev_internal_ops;
+ sd->flags |= V4L2_SUBDEV_FL_HAS_DEVNODE | V4L2_SUBDEV_FL_HAS_EVENTS;
- ret = ov5647_init_controls(sensor);
+ ret = ov5647_init_controls(sensor, dev);
+++ /dev/null
-From 70c32664e555b0641cc187eebf0d738eb10a33a0 Mon Sep 17 00:00:00 2001
-From: David Plowman <david.plowman@raspberrypi.com>
-Date: Tue, 11 May 2021 12:52:26 +0100
-Subject: [PATCH] media: i2c: ov5647: Correct pixel array offset
-
-The top offset in the pixel array is actually 6 (see page 3-1 of the
-OV5647 data sheet).
-
-Fixes: f2f7ad5ce5e52 ("media: i2c: ov5647: Selection compliance fixes")
-Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
----
- drivers/media/i2c/ov5647.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/media/i2c/ov5647.c
-+++ b/drivers/media/i2c/ov5647.c
-@@ -69,7 +69,7 @@
- #define OV5647_NATIVE_HEIGHT 1956U
-
- #define OV5647_PIXEL_ARRAY_LEFT 16U
--#define OV5647_PIXEL_ARRAY_TOP 16U
-+#define OV5647_PIXEL_ARRAY_TOP 6U
- #define OV5647_PIXEL_ARRAY_WIDTH 2592U
- #define OV5647_PIXEL_ARRAY_HEIGHT 1944U
-
+++ /dev/null
-From 3a415d5da89b4a2d83f5590820fa649293eef6ba Mon Sep 17 00:00:00 2001
-From: David Plowman <david.plowman@raspberrypi.com>
-Date: Tue, 11 May 2021 12:57:22 +0100
-Subject: [PATCH] media: i2c: ov5647: Correct minimum VBLANK value
-
-Trial and error reveals that the minimum vblank value appears to be 24
-(the OV5647 data sheet does not give any clues). This fixes streaming
-lock-ups in full resolution mode.
-
-Fixes: 9b5a5ebedc303 ("media: i2c: ov5647: Add support for V4L2_CID_VBLANK")
-Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
----
- drivers/media/i2c/ov5647.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
---- a/drivers/media/i2c/ov5647.c
-+++ b/drivers/media/i2c/ov5647.c
-@@ -73,7 +73,7 @@
- #define OV5647_PIXEL_ARRAY_WIDTH 2592U
- #define OV5647_PIXEL_ARRAY_HEIGHT 1944U
-
--#define OV5647_VBLANK_MIN 4
-+#define OV5647_VBLANK_MIN 24
- #define OV5647_VTS_MAX 32767
-
- #define OV5647_EXPOSURE_MIN 4
+++ /dev/null
-From 2469a06f61b88939d92fd8e61a32afd5566c0be0 Mon Sep 17 00:00:00 2001
-From: David Plowman <david.plowman@raspberrypi.com>
-Date: Thu, 21 Oct 2021 14:47:00 +0100
-Subject: [PATCH] media: i2c: ov5647: Sensor should report RAW color space
-
-Tested on Raspberry Pi running libcamera.
-
-Signed-off-by: David Plowman <david.plowman@raspberrypi.com>
----
- drivers/media/i2c/ov5647.c | 8 ++++----
- 1 file changed, 4 insertions(+), 4 deletions(-)
-
---- a/drivers/media/i2c/ov5647.c
-+++ b/drivers/media/i2c/ov5647.c
-@@ -508,7 +508,7 @@ static const struct ov5647_mode ov5647_m
- {
- .format = {
- .code = MEDIA_BUS_FMT_SBGGR10_1X10,
-- .colorspace = V4L2_COLORSPACE_SRGB,
-+ .colorspace = V4L2_COLORSPACE_RAW,
- .field = V4L2_FIELD_NONE,
- .width = 2592,
- .height = 1944
-@@ -529,7 +529,7 @@ static const struct ov5647_mode ov5647_m
- {
- .format = {
- .code = MEDIA_BUS_FMT_SBGGR10_1X10,
-- .colorspace = V4L2_COLORSPACE_SRGB,
-+ .colorspace = V4L2_COLORSPACE_RAW,
- .field = V4L2_FIELD_NONE,
- .width = 1920,
- .height = 1080
-@@ -550,7 +550,7 @@ static const struct ov5647_mode ov5647_m
- {
- .format = {
- .code = MEDIA_BUS_FMT_SBGGR10_1X10,
-- .colorspace = V4L2_COLORSPACE_SRGB,
-+ .colorspace = V4L2_COLORSPACE_RAW,
- .field = V4L2_FIELD_NONE,
- .width = 1296,
- .height = 972
-@@ -571,7 +571,7 @@ static const struct ov5647_mode ov5647_m
- {
- .format = {
- .code = MEDIA_BUS_FMT_SBGGR10_1X10,
-- .colorspace = V4L2_COLORSPACE_SRGB,
-+ .colorspace = V4L2_COLORSPACE_RAW,
- .field = V4L2_FIELD_NONE,
- .width = 640,
- .height = 480
default:
dev_info(&client->dev,
"Control (id:0x%x, val:0x%x) not supported\n",
-@@ -1354,6 +1408,16 @@ static int ov5647_init_controls(struct o
+@@ -1356,6 +1410,16 @@ static int ov5647_init_controls(struct o
ARRAY_SIZE(ov5647_test_pattern_menu) - 1,
0, 0, ov5647_test_pattern_menu);
--- a/drivers/spi/spidev.c
+++ b/drivers/spi/spidev.c
-@@ -711,6 +711,7 @@ static const struct spi_device_id spidev
+@@ -693,6 +693,7 @@ static const struct spi_device_id spidev
{ .name = "spi-authenta" },
{ .name = "em3581" },
{ .name = "si3210" },
static int ov5647_init_controls(struct ov5647 *sensor, struct device *dev)
{
struct i2c_client *client = v4l2_get_subdevdata(&sensor->sd);
-@@ -1502,6 +1533,12 @@ static int ov5647_probe(struct i2c_clien
+@@ -1504,6 +1535,12 @@ static int ov5647_probe(struct i2c_clien
return -EINVAL;
}
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -1186,6 +1186,16 @@ config MFD_SY7636A
+@@ -1210,6 +1210,16 @@ config MFD_SY7636A
To enable support for building sub-devices as modules,
choose M here.
static int simple_mfd_i2c_probe(struct i2c_client *i2c)
{
const struct simple_mfd_data *simple_mfd_data;
-@@ -88,6 +97,7 @@ static const struct of_device_id simple_
+@@ -119,6 +128,7 @@ static const struct of_device_id simple_
+ { .compatible = "maxim,max77705-battery", .data = &maxim_mon_max77705},
{ .compatible = "silergy,sy7636a", .data = &silergy_sy7636a},
- { .compatible = "maxim,max5970", .data = &maxim_max5970},
- { .compatible = "maxim,max5978", .data = &maxim_max5970},
+ { .compatible = "spacemit,p1", .data = &spacemit_p1, },
+ { .compatible = "raspberrypi,poe-core", &rpi_poe_core },
{ .compatible = "raspberrypi,sensehat" },
{}
--- a/drivers/media/i2c/ov5647.c
+++ b/drivers/media/i2c/ov5647.c
-@@ -1566,7 +1566,7 @@ static int ov5647_probe(struct i2c_clien
+@@ -1568,7 +1568,7 @@ static int ov5647_probe(struct i2c_clien
if (ret < 0)
goto power_off;
--- a/drivers/char/random.c
+++ b/drivers/char/random.c
-@@ -867,6 +867,14 @@ void __init random_init_early(const char
+@@ -857,6 +857,14 @@ void __init random_init_early(const char
unsigned long entropy[BLAKE2S_BLOCK_SIZE / sizeof(long)];
size_t i, longs, arch_bits;
*norm = state->curr_norm;
return 0;
-@@ -890,6 +914,8 @@ static int adv7180_s_stream(struct v4l2_
+@@ -897,6 +921,8 @@ static int adv7180_s_stream(struct v4l2_
return 0;
}
static void macb_init_buffers(struct macb *bp)
{
struct macb_queue *queue;
-@@ -976,6 +992,7 @@ static int macb_mii_init(struct macb *bp
+@@ -974,6 +990,7 @@ static int macb_mii_init(struct macb *bp
bp->mii_bus->write = &macb_mdio_write_c22;
bp->mii_bus->read_c45 = &macb_mdio_read_c45;
bp->mii_bus->write_c45 = &macb_mdio_write_c45;
snprintf(bp->mii_bus->id, MII_BUS_ID_SIZE, "%s-%x",
bp->pdev->name, bp->pdev->id);
bp->mii_bus->priv = bp;
-@@ -1641,6 +1658,11 @@ static int macb_rx(struct macb_queue *qu
+@@ -1639,6 +1656,11 @@ static int macb_rx(struct macb_queue *qu
macb_init_rx_ring(queue);
queue_writel(queue, RBQP, queue->rx_ring_dma);
macb_writel(bp, NCR, ctrl | MACB_BIT(RE));
-@@ -1943,8 +1965,9 @@ static irqreturn_t macb_interrupt(int ir
+@@ -1941,8 +1963,9 @@ static irqreturn_t macb_interrupt(int ir
queue_writel(queue, ISR, MACB_BIT(TCOMP) |
MACB_BIT(TXUBR));
wmb(); // ensure softirq can see update
}
-@@ -2400,6 +2423,11 @@ static netdev_tx_t macb_start_xmit(struc
+@@ -2398,6 +2421,11 @@ static netdev_tx_t macb_start_xmit(struc
skb_tx_timestamp(skb);
spin_lock(&bp->lock);
macb_writel(bp, NCR, macb_readl(bp, NCR) | MACB_BIT(TSTART));
spin_unlock(&bp->lock);
-@@ -2806,6 +2834,37 @@ static void macb_configure_dma(struct ma
+@@ -2804,6 +2832,37 @@ static void macb_configure_dma(struct ma
}
}
static void macb_init_hw(struct macb *bp)
{
u32 config;
-@@ -2834,6 +2893,11 @@ static void macb_init_hw(struct macb *bp
+@@ -2832,6 +2891,11 @@ static void macb_init_hw(struct macb *bp
if (bp->caps & MACB_CAPS_JUMBO)
bp->rx_frm_len_mask = MACB_RX_JFRMLEN_MASK;
macb_configure_dma(bp);
/* Enable RX partial store and forward and set watermark */
-@@ -3200,6 +3264,52 @@ static void gem_get_ethtool_strings(stru
+@@ -3199,6 +3263,52 @@ static void gem_get_ethtool_strings(stru
}
}
static struct net_device_stats *macb_get_stats(struct net_device *dev)
{
struct macb *bp = netdev_priv(dev);
-@@ -3784,6 +3894,8 @@ static const struct ethtool_ops macb_eth
+@@ -3783,6 +3893,8 @@ static const struct ethtool_ops macb_eth
};
static const struct ethtool_ops gem_ethtool_ops = {
.get_regs_len = macb_get_regs_len,
.get_regs = macb_get_regs,
.get_wol = macb_get_wol,
-@@ -3793,6 +3905,8 @@ static const struct ethtool_ops gem_etht
+@@ -3792,6 +3904,8 @@ static const struct ethtool_ops gem_etht
.get_ethtool_stats = gem_get_ethtool_stats,
.get_strings = gem_get_ethtool_strings,
.get_sset_count = gem_get_sset_count,
.get_link_ksettings = macb_get_link_ksettings,
.set_link_ksettings = macb_set_link_ksettings,
.get_ringparam = macb_get_ringparam,
-@@ -5114,6 +5228,11 @@ static int macb_probe(struct platform_de
+@@ -5113,6 +5227,11 @@ static int macb_probe(struct platform_de
}
}
}
spin_lock_init(&bp->lock);
spin_lock_init(&bp->stats_lock);
-@@ -5174,6 +5293,21 @@ static int macb_probe(struct platform_de
+@@ -5173,6 +5292,21 @@ static int macb_probe(struct platform_de
else
bp->phy_interface = interface;
/* IP specific init */
err = init(pdev);
if (err)
-@@ -5245,6 +5379,19 @@ static void macb_remove(struct platform_
+@@ -5244,6 +5378,19 @@ static void macb_remove(struct platform_
}
}
static int __maybe_unused macb_suspend(struct device *dev)
{
struct net_device *netdev = dev_get_drvdata(dev);
-@@ -5498,6 +5645,7 @@ static const struct dev_pm_ops macb_pm_o
+@@ -5497,6 +5644,7 @@ static const struct dev_pm_ops macb_pm_o
static struct platform_driver macb_driver = {
.probe = macb_probe,
.remove_new = macb_remove,
dwc->tx_fifo_resize_max_num = tx_fifo_resize_max_num;
}
-@@ -2187,6 +2234,12 @@ static int dwc3_probe(struct platform_de
+@@ -2202,6 +2249,12 @@ static int dwc3_probe(struct platform_de
if (IS_ERR(dwc->usb_psy))
return dev_err_probe(dev, PTR_ERR(dwc->usb_psy), "couldn't get usb power supply\n");
/* Global Debug LSP MUX Select */
#define DWC3_GDBGLSPMUX_ENDBC BIT(15) /* Host only */
#define DWC3_GDBGLSPMUX_HOSTSELECT(n) ((n) & 0x3fff)
-@@ -1087,6 +1090,7 @@ struct dwc3_scratchpad_array {
+@@ -1089,6 +1092,7 @@ struct dwc3_scratchpad_array {
* @tx_max_burst_prd: max periodic ESS transmit burst size
* @tx_fifo_resize_max_num: max number of fifos allocated during txfifo resize
* @clear_stall_protocol: endpoint number that requires a delayed status phase
* @hsphy_interface: "utmi" or "ulpi"
* @connected: true when we're connected to a host, false otherwise
* @softconnect: true when gadget connect is called, false when disconnect runs
-@@ -1338,6 +1342,7 @@ struct dwc3 {
+@@ -1342,6 +1346,7 @@ struct dwc3 {
u8 tx_max_burst_prd;
u8 tx_fifo_resize_max_num;
u8 clear_stall_protocol;
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -2384,6 +2384,17 @@ config MFD_INTEL_M10_BMC_PMCI
+@@ -2408,6 +2408,17 @@ config MFD_INTEL_M10_BMC_PMCI
additional drivers must be enabled in order to use the functionality
of the device.
--- a/drivers/media/i2c/adv7180.c
+++ b/drivers/media/i2c/adv7180.c
-@@ -732,10 +732,15 @@ static int adv7180_enum_mbus_code(struct
+@@ -739,10 +739,15 @@ static int adv7180_enum_mbus_code(struct
struct v4l2_subdev_state *sd_state,
struct v4l2_subdev_mbus_code_enum *code)
{
return 0;
}
-@@ -745,7 +750,10 @@ static int adv7180_mbus_fmt(struct v4l2_
+@@ -752,7 +757,10 @@ static int adv7180_mbus_fmt(struct v4l2_
{
struct adv7180_state *state = to_state(sd);
};
#define to_adv7180_sd(_ctrl) (&container_of(_ctrl->handler, \
struct adv7180_state, \
-@@ -625,6 +636,9 @@ static int adv7180_s_ctrl(struct v4l2_ct
+@@ -632,6 +643,9 @@ static int adv7180_s_ctrl(struct v4l2_ct
if (ret)
return ret;
val = ctrl->val;
switch (ctrl->id) {
case V4L2_CID_BRIGHTNESS:
-@@ -666,6 +680,7 @@ static int adv7180_s_ctrl(struct v4l2_ct
+@@ -673,6 +687,7 @@ static int adv7180_s_ctrl(struct v4l2_ct
ret = -EINVAL;
}
mutex_unlock(&state->mutex);
return ret;
}
-@@ -686,7 +701,7 @@ static const struct v4l2_ctrl_config adv
+@@ -693,7 +708,7 @@ static const struct v4l2_ctrl_config adv
static int adv7180_init_controls(struct adv7180_state *state)
{
v4l2_ctrl_new_std(&state->ctrl_hdl, &adv7180_ctrl_ops,
V4L2_CID_BRIGHTNESS, ADV7180_BRI_MIN,
-@@ -712,6 +727,17 @@ static int adv7180_init_controls(struct
+@@ -719,6 +734,17 @@ static int adv7180_init_controls(struct
test_pattern_menu);
}
state->sd.ctrl_handler = &state->ctrl_hdl;
if (state->ctrl_hdl.error) {
int err = state->ctrl_hdl.error;
-@@ -839,7 +865,16 @@ static int adv7180_set_pad_format(struct
+@@ -846,7 +872,16 @@ static int adv7180_set_pad_format(struct
ret = adv7180_mbus_fmt(sd, &format->format);
if (format->which == V4L2_SUBDEV_FORMAT_ACTIVE) {
#define DWC3_GUCTL1_RESUME_OPMODE_HS_HOST BIT(10)
/* Global Status Register */
-@@ -1142,10 +1143,12 @@ struct dwc3_scratchpad_array {
+@@ -1144,10 +1145,12 @@ struct dwc3_scratchpad_array {
* generation after resume from suspend.
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
* VBUS with an external supply.
* @gfladj_refclk_lpm_sel: set if we need to enable SOF/ITP counter
* running based on ref_clk
* @tx_de_emphasis_quirk: set if we enable Tx de-emphasis quirk
-@@ -1386,6 +1389,7 @@ struct dwc3 {
+@@ -1390,6 +1393,7 @@ struct dwc3 {
unsigned ulpi_ext_vbus_drv:1;
unsigned parkmode_disable_ss_quirk:1;
unsigned parkmode_disable_hs_quirk:1;
--- a/drivers/net/usb/lan78xx.c
+++ b/drivers/net/usb/lan78xx.c
-@@ -2440,7 +2440,26 @@ static int lan78xx_phy_init(struct lan78
+@@ -2438,7 +2438,26 @@ static int lan78xx_phy_init(struct lan78
mii_adv_to_linkmode_adv_t(fc, mii_adv);
linkmode_or(phydev->advertising, fc, phydev->advertising);
/* Read-only, but we adjust it based on mode. */
break;
-@@ -1421,10 +1421,11 @@ static int ov5647_init_controls(struct o
+@@ -1423,10 +1423,11 @@ static int ov5647_init_controls(struct o
sensor->mode->pixel_rate, 1,
sensor->mode->pixel_rate);
hblank);
sensor->vblank = v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
-@@ -1458,7 +1459,6 @@ static int ov5647_init_controls(struct o
+@@ -1460,7 +1461,6 @@ static int ov5647_init_controls(struct o
goto handler_free;
sensor->pixel_rate->flags |= V4L2_CTRL_FLAG_READ_ONLY;
@@ -439,6 +451,7 @@ static const struct ov5647_mode ov5647_m
.height = 1920,
},
- .pixel_rate = 55000000,
+ .pixel_rate = 58333000,
+ .link_freq_index = FREQ_INDEX_VGA,
.hts = 1852,
.vts = 0x1f8,
- v4l2_ctrl_handler_init(&sensor->ctrls, 9);
+ v4l2_ctrl_handler_init(&sensor->ctrls, 10);
- v4l2_ctrl_new_std(&sensor->ctrls, &ov5647_ctrl_ops,
- V4L2_CID_AUTOGAIN, 0, 1, 1, 0);
-@@ -1302,6 +1317,14 @@ static int ov5647_init_controls(struct o
+ sensor->ctrls.lock = &sensor->lock;
+
+@@ -1304,6 +1319,14 @@ static int ov5647_init_controls(struct o
if (sensor->vflip)
sensor->vflip->flags |= V4L2_CTRL_FLAG_MODIFY_LAYOUT;
#define DWC3_GUCTL1_PARKMODE_DISABLE_SS BIT(17)
#define DWC3_GUCTL1_PARKMODE_DISABLE_HS BIT(16)
#define DWC3_GUCTL1_PARKMODE_DISABLE_FSLS BIT(15)
-@@ -1143,6 +1145,8 @@ struct dwc3_scratchpad_array {
+@@ -1145,6 +1147,8 @@ struct dwc3_scratchpad_array {
* generation after resume from suspend.
* @ulpi_ext_vbus_drv: Set to confiure the upli chip to drives CPEN pin
* VBUS with an external supply.
* @parkmode_disable_ss_quirk: If set, disable park mode feature for all
* Superspeed instances.
* @parkmode_disable_hs_quirk: If set, disable park mode feature for all
-@@ -1387,6 +1391,8 @@ struct dwc3 {
+@@ -1391,6 +1395,8 @@ struct dwc3 {
unsigned dis_tx_ipgap_linecheck_quirk:1;
unsigned resume_hs_terminations:1;
unsigned ulpi_ext_vbus_drv:1;
--- a/drivers/net/ethernet/cadence/macb_main.c
+++ b/drivers/net/ethernet/cadence/macb_main.c
-@@ -5077,6 +5077,17 @@ static const struct macb_config versal_c
+@@ -5076,6 +5076,17 @@ static const struct macb_config versal_c
.usrio = &macb_default_usrio,
};
static const struct of_device_id macb_dt_ids[] = {
{ .compatible = "cdns,at91sam9260-macb", .data = &at91sam9260_config },
{ .compatible = "cdns,macb" },
-@@ -5097,6 +5108,7 @@ static const struct of_device_id macb_dt
+@@ -5096,6 +5107,7 @@ static const struct of_device_id macb_dt
{ .compatible = "microchip,mpfs-macb", .data = &mpfs_config },
{ .compatible = "microchip,sama7g5-gem", .data = &sama7g5_gem_config },
{ .compatible = "microchip,sama7g5-emac", .data = &sama7g5_emac_config },
--- a/drivers/pci/probe.c
+++ b/drivers/pci/probe.c
-@@ -992,9 +992,6 @@ static int pci_register_host_bridge(stru
+@@ -996,9 +996,6 @@ static int pci_register_host_bridge(stru
else
pr_info("PCI host bridge to bus %s\n", name);
mmu_debug = V3D_READ(V3D_MMU_DEBUG_INFO);
mask = DMA_BIT_MASK(30 + V3D_GET_FIELD(mmu_debug, V3D_MMU_PA_WIDTH));
ret = dma_set_mask_and_coherent(dev, mask);
-@@ -325,6 +366,11 @@ static int v3d_platform_drm_probe(struct
+@@ -327,6 +368,11 @@ static int v3d_platform_drm_probe(struct
ident1 = V3D_READ(V3D_HUB_IDENT1);
v3d->ver = (V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_TVER) * 10 +
V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_REV));
v3d->cores = V3D_GET_FIELD(ident1, V3D_HUB_IDENT1_NCORES);
WARN_ON(v3d->cores > 1); /* multicore not yet implemented */
-@@ -377,7 +423,7 @@ static int v3d_platform_drm_probe(struct
+@@ -379,7 +425,7 @@ static int v3d_platform_drm_probe(struct
v3d->clk_down_rate =
(clk_get_rate(clk_get_parent(v3d->clk)) / (1 << 4)) + 10000;
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -485,6 +485,8 @@ static void v3d_platform_drm_remove(stru
+@@ -487,6 +487,8 @@ static void v3d_platform_drm_remove(stru
dma_free_wc(v3d->drm.dev, 4096, v3d->mmu_scratch,
v3d->mmu_scratch_paddr);
--- a/drivers/pci/quirks.c
+++ b/drivers/pci/quirks.c
-@@ -6256,6 +6256,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
+@@ -6283,6 +6283,22 @@ DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_I
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56b1, aspm_l1_acceptable_latency);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c0, aspm_l1_acceptable_latency);
DECLARE_PCI_FIXUP_HEADER(PCI_VENDOR_ID_INTEL, 0x56c1, aspm_l1_acceptable_latency);
--- a/drivers/gpu/drm/v3d/v3d_drv.c
+++ b/drivers/gpu/drm/v3d/v3d_drv.c
-@@ -395,21 +395,18 @@ static int v3d_platform_drm_probe(struct
+@@ -397,21 +397,18 @@ static int v3d_platform_drm_probe(struct
}
}
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1596,6 +1597,7 @@ static int spinand_probe(struct spi_mem
+@@ -1604,6 +1605,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1603,6 +1605,7 @@ static int spinand_probe(struct spi_mem
+@@ -1611,6 +1613,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1621,6 +1624,7 @@ static int spinand_remove(struct spi_mem
+@@ -1629,6 +1632,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
#define PCIE_AHB_TRANS_BASE0_L 0x438
#define PCIE_AHB_TRANS_BASE0_H 0x43c
#define AHB2PCIE_SIZE(x) ((x) & GENMASK(4, 0))
-@@ -748,6 +754,86 @@ static int mtk_pcie_startup_port_v2(stru
+@@ -750,6 +756,86 @@ static int mtk_pcie_startup_port_v2(stru
return 0;
}
static void __iomem *mtk_pcie_map_bus(struct pci_bus *bus,
unsigned int devfn, int where)
{
-@@ -1114,6 +1200,20 @@ static int mtk_pcie_probe(struct platfor
+@@ -1116,6 +1202,20 @@ static int mtk_pcie_probe(struct platfor
if (err)
goto put_resources;
return 0;
put_resources:
-@@ -1223,12 +1323,19 @@ static const struct mtk_pcie_soc mtk_pci
+@@ -1225,12 +1325,19 @@ static const struct mtk_pcie_soc mtk_pci
.setup_irq = mtk_pcie_setup_irq,
};
{
--- a/include/linux/clk.h
+++ b/include/linux/clk.h
-@@ -496,11 +496,13 @@ int __must_check devm_clk_bulk_get_all(s
+@@ -520,11 +520,13 @@ int __must_check devm_clk_bulk_get_all(s
struct clk_bulk_data **clks);
/**
*
* This helper function allows drivers to get all clocks of the
* consumer and enables them in one operation with management.
-@@ -508,8 +510,8 @@ int __must_check devm_clk_bulk_get_all(s
+@@ -532,8 +534,8 @@ int __must_check devm_clk_bulk_get_all(s
* is unbound.
*/
/**
* devm_clk_get - lookup and obtain a managed reference to a clock producer.
-@@ -1034,7 +1036,7 @@ static inline int __must_check devm_clk_
+@@ -1041,7 +1043,7 @@ static inline int __must_check devm_clk_
return 0;
}
struct clk_bulk_data **clks)
{
return 0;
-@@ -1136,6 +1138,15 @@ static inline void clk_restore_context(v
+@@ -1136,6 +1138,15 @@ static inline struct clk *clk_get_sys(co
#endif
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1115,6 +1115,7 @@ static const struct spinand_manufacturer
+@@ -1123,6 +1123,7 @@ static const struct spinand_manufacturer
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1028,18 +1028,13 @@ static int spinand_create_dirmap(struct
+@@ -1036,18 +1036,13 @@ static int spinand_create_dirmap(struct
unsigned int plane)
{
struct nand_device *nand = spinand_to_nand(spinand);
info.op_tmpl = *spinand->op_templates.update_cache;
desc = devm_spi_mem_dirmap_create(&spinand->spimem->spi->dev,
spinand->spimem, &info);
-@@ -1048,6 +1043,8 @@ static int spinand_create_dirmap(struct
+@@ -1056,6 +1051,8 @@ static int spinand_create_dirmap(struct
spinand->dirmaps[plane].wdesc = desc;
info.op_tmpl = *spinand->op_templates.read_cache;
desc = devm_spi_mem_dirmap_create(&spinand->spimem->spi->dev,
spinand->spimem, &info);
-@@ -1063,6 +1060,7 @@ static int spinand_create_dirmap(struct
+@@ -1071,6 +1068,7 @@ static int spinand_create_dirmap(struct
return 0;
}
info.op_tmpl = *spinand->op_templates.update_cache;
info.op_tmpl.data.ecc = true;
desc = devm_spi_mem_dirmap_create(&spinand->spimem->spi->dev,
-@@ -1072,6 +1070,8 @@ static int spinand_create_dirmap(struct
+@@ -1080,6 +1078,8 @@ static int spinand_create_dirmap(struct
spinand->dirmaps[plane].wdesc_ecc = desc;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1024,6 +1024,39 @@ static int spinand_mtd_block_isreserved(
+@@ -1032,6 +1032,39 @@ static int spinand_mtd_block_isreserved(
return ret;
}
static int spinand_create_dirmap(struct spinand_device *spinand,
unsigned int plane)
{
-@@ -1043,11 +1076,8 @@ static int spinand_create_dirmap(struct
+@@ -1051,11 +1084,8 @@ static int spinand_create_dirmap(struct
spinand->dirmaps[plane].wdesc = desc;
if (IS_ERR(desc))
return PTR_ERR(desc);
-@@ -1070,12 +1100,9 @@ static int spinand_create_dirmap(struct
+@@ -1078,12 +1108,9 @@ static int spinand_create_dirmap(struct
spinand->dirmaps[plane].wdesc_ecc = desc;
}
if (req->datalen)
-@@ -841,10 +849,19 @@ static int spinand_mtd_read(struct mtd_i
+@@ -849,10 +857,19 @@ static int spinand_mtd_read(struct mtd_i
old_stats = mtd->ecc_stats;
memset(spinand->oobbuf, 0xff, nanddev_per_page_oobsize(nand));
/* Only enable or disable the engine */
-@@ -921,9 +924,17 @@ static bool spinand_isbad(struct nand_de
+@@ -929,9 +932,17 @@ static bool spinand_isbad(struct nand_de
.oobbuf.in = marker,
.mode = MTD_OPS_RAW,
};
if (marker[0] != 0xff || marker[1] != 0xff)
return true;
-@@ -966,7 +977,14 @@ static int spinand_markbad(struct nand_d
+@@ -974,7 +985,14 @@ static int spinand_markbad(struct nand_d
if (ret)
return ret;
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1183,6 +1183,7 @@ static const struct spinand_manufacturer
+@@ -1191,6 +1191,7 @@ static const struct spinand_manufacturer
¯onix_spinand_manufacturer,
µn_spinand_manufacturer,
¶gon_spinand_manufacturer,
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1176,6 +1176,7 @@ static const struct nand_ops spinand_ops
+@@ -1184,6 +1184,7 @@ static const struct nand_ops spinand_ops
static const struct spinand_manufacturer *spinand_manufacturers[] = {
&alliancememory_spinand_manufacturer,
&ato_spinand_manufacturer,
--- a/block/blk.h
+++ b/block/blk.h
-@@ -570,6 +570,7 @@ void blk_free_ext_minor(unsigned int min
+@@ -574,6 +574,7 @@ void blk_free_ext_minor(unsigned int min
#define ADDPART_FLAG_NONE 0
#define ADDPART_FLAG_RAID 1
#define ADDPART_FLAG_WHOLEDISK 2
if (!count)
count = scnprintf(buf, len, "no parameters");
else
-@@ -1631,6 +1655,9 @@ static int set_machine_constraints(struc
+@@ -1636,6 +1660,9 @@ static int set_machine_constraints(struc
rdev->last_off = ktime_get();
}
print_constraints(rdev);
return 0;
}
-@@ -4646,6 +4673,87 @@ int regulator_get_current_limit(struct r
+@@ -4651,6 +4678,87 @@ int regulator_get_current_limit(struct r
EXPORT_SYMBOL_GPL(regulator_get_current_limit);
/**
* regulator_set_mode - set regulator operating mode
* @regulator: regulator source
* @mode: operating mode - one of the REGULATOR_MODE constants
-@@ -5283,6 +5391,8 @@ static struct attribute *regulator_dev_a
+@@ -5288,6 +5396,8 @@ static struct attribute *regulator_dev_a
&dev_attr_suspend_standby_mode.attr,
&dev_attr_suspend_mem_mode.attr,
&dev_attr_suspend_disk_mode.attr,
NULL
};
-@@ -5364,6 +5474,10 @@ static umode_t regulator_attr_is_visible
+@@ -5369,6 +5479,10 @@ static umode_t regulator_attr_is_visible
attr == &dev_attr_suspend_disk_mode.attr)
return ops->set_suspend_mode ? mode : 0;
--- a/drivers/base/power/wakeirq.c
+++ b/drivers/base/power/wakeirq.c
-@@ -103,6 +103,32 @@ void dev_pm_clear_wake_irq(struct device
+@@ -106,6 +106,32 @@ void dev_pm_clear_wake_irq(struct device
}
EXPORT_SYMBOL_GPL(dev_pm_clear_wake_irq);
static const char *argv0_path;
--- a/tools/objtool/Makefile
+++ b/tools/objtool/Makefile
-@@ -39,6 +39,8 @@ OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBS
+@@ -41,6 +41,8 @@ OBJTOOL_LDFLAGS := $(LIBELF_LIBS) $(LIBS
elfshdr := $(shell echo '$(pound)include <libelf.h>' | $(HOSTCC) $(OBJTOOL_CFLAGS) -x c -E - | grep elf_getshdr)
OBJTOOL_CFLAGS += $(if $(elfshdr),,-DLIBELF_USE_DEPRECATED)
if (err)
--- a/scripts/mod/modpost.c
+++ b/scripts/mod/modpost.c
-@@ -1601,7 +1601,9 @@ static void read_symbols(const char *mod
+@@ -1605,7 +1605,9 @@ static void read_symbols(const char *mod
symname = remove_dot(info.strtab + sym->st_name);
handle_symbol(mod, &info, sym, symname);
}
check_sec_ref(mod, &info);
-@@ -1758,7 +1760,9 @@ static void add_header(struct buffer *b,
+@@ -1762,7 +1764,9 @@ static void add_header(struct buffer *b,
buf_printf(b, "#include <linux/export-internal.h>\n");
buf_printf(b, "#include <linux/compiler.h>\n");
buf_printf(b, "\n");
buf_printf(b, "\n");
buf_printf(b, "__visible struct module __this_module\n");
buf_printf(b, "__section(\".gnu.linkonce.this_module\") = {\n");
-@@ -1772,11 +1776,13 @@ static void add_header(struct buffer *b,
+@@ -1776,11 +1780,13 @@ static void add_header(struct buffer *b,
buf_printf(b, "\t.arch = MODULE_ARCH_INIT,\n");
buf_printf(b, "};\n");
if (strstarts(mod->name, "tools/testing"))
buf_printf(b, "\nMODULE_INFO(test, \"Y\");\n");
-@@ -1886,11 +1892,13 @@ static void add_depends(struct buffer *b
+@@ -1890,11 +1896,13 @@ static void add_depends(struct buffer *b
static void add_srcversion(struct buffer *b, struct module *mod)
{
}
static void write_buf(struct buffer *b, const char *fname)
-@@ -1973,7 +1981,9 @@ static void write_mod_c_file(struct modu
+@@ -1977,7 +1985,9 @@ static void write_mod_c_file(struct modu
add_exported_symbols(&buf, mod);
add_versions(&buf, mod);
add_depends(&buf, mod);
*/
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3242,6 +3242,10 @@ static inline int pskb_trim(struct sk_bu
+@@ -3274,6 +3274,10 @@ static inline int pskb_trim(struct sk_bu
return (len < skb->len) ? __pskb_trim(skb, len) : 0;
}
/**
* pskb_trim_unique - remove end from a paged unique (not cloned) buffer
* @skb: buffer to alter
-@@ -3407,16 +3411,6 @@ static inline struct sk_buff *dev_alloc_
+@@ -3439,16 +3443,6 @@ static inline struct sk_buff *dev_alloc_
}
#include <linux/crc32.h>
#include <linux/if_vlan.h>
#include <linux/uaccess.h>
-@@ -7047,6 +7048,22 @@ static void rtl_tally_reset(struct r8152
+@@ -7049,6 +7050,22 @@ static void rtl_tally_reset(struct r8152
ocp_write_word(tp, MCU_TYPE_PLA, PLA_RSTTALLY, ocp_data);
}
static void r8152b_init(struct r8152 *tp)
{
u32 ocp_data;
-@@ -7088,6 +7105,8 @@ static void r8152b_init(struct r8152 *tp
+@@ -7090,6 +7107,8 @@ static void r8152b_init(struct r8152 *tp
ocp_data = ocp_read_word(tp, MCU_TYPE_USB, USB_USB_CTRL);
ocp_data &= ~(RX_AGG_DISABLE | RX_ZERO_EN);
ocp_write_word(tp, MCU_TYPE_USB, USB_USB_CTRL, ocp_data);
}
static void r8153_init(struct r8152 *tp)
-@@ -7228,6 +7247,8 @@ static void r8153_init(struct r8152 *tp)
+@@ -7230,6 +7249,8 @@ static void r8153_init(struct r8152 *tp)
tp->coalesce = COALESCE_SLOW;
break;
}
}
static void r8153b_init(struct r8152 *tp)
-@@ -7310,6 +7331,8 @@ static void r8153b_init(struct r8152 *tp
+@@ -7312,6 +7333,8 @@ static void r8153b_init(struct r8152 *tp
rtl_tally_reset(tp);
tp->coalesce = 15000; /* 15 us */
if (!pe)
--- a/mm/vmalloc.c
+++ b/mm/vmalloc.c
-@@ -5071,6 +5071,9 @@ static int vmalloc_info_show(struct seq_
+@@ -5079,6 +5079,9 @@ static int vmalloc_info_show(struct seq_
static int __init proc_vmalloc_init(void)
{
-LINUX_VERSION-6.12 = .74
-LINUX_KERNEL_HASH-6.12.74 = 3b56eeb1dc9a437f189ca56b823be3769994f59a4ea0895b08ec0d20acaca13e
+LINUX_VERSION-6.12 = .75
+LINUX_KERNEL_HASH-6.12.75 = 06ee7927556ff1aa8810c4826501b0fdb169ebdc180644b882cf7c143ac1c177
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1178,6 +1178,7 @@ static const struct spinand_manufacturer
+@@ -1186,6 +1186,7 @@ static const struct spinand_manufacturer
&ato_spinand_manufacturer,
&esmt_8c_spinand_manufacturer,
&esmt_c8_spinand_manufacturer,
- sfp_fixup_ignore_tx_fault),
+ sfp_fixup_ignore_tx_fault_and_los),
- // Lantech 8330-262D-E can operate at 2500base-X, but incorrectly report
- // 2500MBd NRZ in their EEPROM
+ // Lantech 8330-262D-E and 8330-265D can operate at 2500base-X, but
+ // incorrectly report 2500MBd NRZ in their EEPROM.
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -3209,7 +3209,7 @@ static inline int pskb_network_may_pull(
+@@ -3241,7 +3241,7 @@ static inline int pskb_network_may_pull(
* NET_IP_ALIGN(2) + ethernet_header(14) + IP_header(20/40) + ports(8)
*/
#ifndef NET_SKB_PAD
--- a/net/netfilter/nf_tables_api.c
+++ b/net/netfilter/nf_tables_api.c
-@@ -8718,7 +8718,7 @@ static int nft_register_flowtable_net_ho
+@@ -8724,7 +8724,7 @@ static int nft_register_flowtable_net_ho
err = flowtable->data.type->setup(&flowtable->data,
hook->ops.dev,
FLOW_BLOCK_BIND);
/**
* ata_build_rw_tf - Build ATA taskfile for given read/write request
* @qc: Metadata associated with the taskfile to build
-@@ -4800,6 +4811,9 @@ void __ata_qc_complete(struct ata_queued
+@@ -4818,6 +4829,9 @@ void __ata_qc_complete(struct ata_queued
link->active_tag = ATA_TAG_POISON;
ap->nr_active_links--;
}
/* clear exclusive status */
if (unlikely(qc->flags & ATA_QCFLAG_CLEAR_EXCL &&
-@@ -5522,6 +5536,9 @@ struct ata_port *ata_port_alloc(struct a
+@@ -5546,6 +5560,9 @@ struct ata_port *ata_port_alloc(struct a
ap->stats.unhandled_irq = 1;
ap->stats.idle_irq = 1;
#endif
ata_sff_port_init(ap);
ata_force_pflags(ap);
-@@ -5538,6 +5555,12 @@ void ata_port_free(struct ata_port *ap)
+@@ -5562,6 +5579,12 @@ void ata_port_free(struct ata_port *ap)
kfree(ap->pmp_link);
kfree(ap->slave_link);
ida_free(&ata_ida, ap->print_id);
kfree(ap);
}
EXPORT_SYMBOL_GPL(ata_port_free);
-@@ -5942,7 +5965,23 @@ int ata_host_register(struct ata_host *h
+@@ -5966,7 +5989,23 @@ int ata_host_register(struct ata_host *h
WARN_ON(1);
return -EINVAL;
}
+#endif
--- a/include/linux/skbuff.h
+++ b/include/linux/skbuff.h
-@@ -4818,6 +4818,9 @@ enum skb_ext_id {
+@@ -4850,6 +4850,9 @@ enum skb_ext_id {
#if IS_ENABLED(CONFIG_MCTP_FLOWS)
SKB_EXT_MCTP,
#endif
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
-@@ -207,11 +207,24 @@ struct qcom_pcie_resources_2_3_3 {
+@@ -206,11 +206,24 @@ struct qcom_pcie_resources_2_3_3 {
};
#define QCOM_PCIE_2_4_0_MAX_RESETS 12
};
#define QCOM_PCIE_2_7_0_MAX_SUPPLIES 2
-@@ -711,12 +724,65 @@ static int qcom_pcie_post_init_2_3_2(str
+@@ -710,12 +723,65 @@ static int qcom_pcie_post_init_2_3_2(str
return 0;
}
int ret;
res->num_clks = devm_clk_bulk_get_all(dev, &res->clks);
-@@ -755,6 +821,17 @@ static void qcom_pcie_deinit_2_4_0(struc
+@@ -754,6 +820,17 @@ static void qcom_pcie_deinit_2_4_0(struc
clk_bulk_disable_unprepare(res->num_clks, res->clks);
}
static int qcom_pcie_init_2_4_0(struct qcom_pcie *pcie)
{
struct qcom_pcie_resources_2_4_0 *res = &pcie->res.v2_4_0;
-@@ -1337,6 +1414,16 @@ static const struct qcom_pcie_ops ops_2_
+@@ -1336,6 +1413,16 @@ static const struct qcom_pcie_ops ops_2_
.ltssm_enable = qcom_pcie_2_3_2_ltssm_enable,
};
/* Qcom IP rev.: 2.3.3 Synopsys IP rev.: 4.30a */
static const struct qcom_pcie_ops ops_2_3_3 = {
.get_resources = qcom_pcie_get_resources_2_3_3,
-@@ -1405,6 +1492,10 @@ static const struct qcom_pcie_cfg cfg_2_
+@@ -1404,6 +1491,10 @@ static const struct qcom_pcie_cfg cfg_2_
.ops = &ops_2_4_0,
};
static const struct qcom_pcie_cfg cfg_2_7_0 = {
.ops = &ops_2_7_0,
};
-@@ -1829,6 +1920,7 @@ static const struct of_device_id qcom_pc
+@@ -1827,6 +1918,7 @@ static const struct of_device_id qcom_pc
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
const char *partname;
struct device_node *pp;
int nr_parts, i, ret = 0;
-@@ -152,9 +155,15 @@ static int parse_fixed_partitions(struct
+@@ -159,9 +162,15 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp;
parts[i].name = partname;
if (of_property_read_bool(pp, "read-only"))
-@@ -271,6 +280,18 @@ static int __init ofpart_parser_init(voi
+@@ -283,6 +292,18 @@ static int __init ofpart_parser_init(voi
return 0;
}
/* Pull of_node from the master device node */
mtd_node = mtd_get_of_node(master);
-@@ -98,6 +132,14 @@ static int parse_fixed_partitions(struct
- if (!parts)
+@@ -105,6 +139,14 @@ static int parse_fixed_partitions(struct
return -ENOMEM;
+ }
+ part_nodes = kcalloc(nr_parts, sizeof(*part_nodes), GFP_KERNEL);
+ if (!part_nodes) {
i = 0;
for_each_child_of_node(ofpart_node, pp) {
const __be32 *reg;
-@@ -166,6 +208,11 @@ static int parse_fixed_partitions(struct
+@@ -173,6 +215,11 @@ static int parse_fixed_partitions(struct
if (of_property_read_bool(pp, "slc-mode"))
parts[i].add_flags |= MTD_SLC_ON_MLC_EMULATION;
i++;
}
-@@ -175,6 +222,11 @@ static int parse_fixed_partitions(struct
- if (quirks && quirks->post_parse)
- quirks->post_parse(master, parts, nr_parts);
+@@ -185,6 +232,11 @@ static int parse_fixed_partitions(struct
+ if (dedicated)
+ of_node_put(ofpart_node);
+ if (proot_id)
+ brnboot_set_active_root_part(parts, part_nodes, nr_parts, proot_id);
*pparts = parts;
return nr_parts;
-@@ -185,6 +237,7 @@ ofpart_fail:
- ofpart_none:
+@@ -197,6 +249,7 @@ ofpart_none:
+ of_node_put(ofpart_node);
of_node_put(pp);
kfree(parts);
+ kfree(part_nodes);
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -916,7 +916,7 @@ static int spinand_mtd_write(struct mtd_
+@@ -924,7 +924,7 @@ static int spinand_mtd_write(struct mtd_
static bool spinand_isbad(struct nand_device *nand, const struct nand_pos *pos)
{
struct spinand_device *spinand = nand_to_spinand(nand);
struct nand_page_io_req req = {
.pos = *pos,
.ooblen = sizeof(marker),
-@@ -935,7 +935,7 @@ static bool spinand_isbad(struct nand_de
+@@ -943,7 +943,7 @@ static bool spinand_isbad(struct nand_de
spinand_read_page(spinand, &req);
}
static int spinand_read_reg_op(struct spinand_device *spinand, u8 reg, u8 *val)
{
-@@ -1596,6 +1597,7 @@ static int spinand_probe(struct spi_mem
+@@ -1604,6 +1605,7 @@ static int spinand_probe(struct spi_mem
if (ret)
return ret;
ret = mtd_device_register(mtd, NULL, 0);
if (ret)
goto err_spinand_cleanup;
-@@ -1603,6 +1605,7 @@ static int spinand_probe(struct spi_mem
+@@ -1611,6 +1613,7 @@ static int spinand_probe(struct spi_mem
return 0;
err_spinand_cleanup:
spinand_cleanup(spinand);
return ret;
-@@ -1621,6 +1624,7 @@ static int spinand_remove(struct spi_mem
+@@ -1629,6 +1632,7 @@ static int spinand_remove(struct spi_mem
if (ret)
return ret;
obj-$(CONFIG_MTD_SPI_NAND) += spinand.o
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1181,6 +1181,7 @@ static const struct spinand_manufacturer
+@@ -1189,6 +1189,7 @@ static const struct spinand_manufacturer
&esmt_c8_spinand_manufacturer,
&etron_spinand_manufacturer,
&fmsh_spinand_manufacturer,
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
-@@ -486,6 +486,14 @@ int spi_mem_exec_op(struct spi_mem *mem,
+@@ -497,6 +497,14 @@ int spi_mem_exec_op(struct spi_mem *mem,
}
EXPORT_SYMBOL_GPL(spi_mem_exec_op);
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1220,6 +1220,56 @@ static int spinand_manufacturer_match(st
+@@ -1228,6 +1228,56 @@ static int spinand_manufacturer_match(st
return -EOPNOTSUPP;
}
static int spinand_id_detect(struct spinand_device *spinand)
{
u8 *id = spinand->id.data;
-@@ -1473,6 +1523,10 @@ static int spinand_init(struct spinand_d
+@@ -1481,6 +1531,10 @@ static int spinand_init(struct spinand_d
if (!spinand->scratchbuf)
return -ENOMEM;
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1261,7 +1261,10 @@ static int spinand_cal_read(void *priv,
+@@ -1269,7 +1269,10 @@ static int spinand_cal_read(void *priv,
if (ret)
return ret;
--- a/drivers/pci/controller/pcie-mediatek.c
+++ b/drivers/pci/controller/pcie-mediatek.c
-@@ -599,9 +599,9 @@ static void mtk_pcie_intr_handler(struct
+@@ -601,9 +601,9 @@ static void mtk_pcie_intr_handler(struct
if (status & INTX_MASK) {
for_each_set_bit_from(bit, &status, PCI_NUM_INTX + INTX_SHIFT) {
/* Clear the INTx */
struct mtk_pcie_port;
/**
-@@ -1045,6 +1051,27 @@ static int mtk_pcie_setup(struct mtk_pci
+@@ -1047,6 +1053,27 @@ static int mtk_pcie_setup(struct mtk_pci
struct mtk_pcie_port *port, *tmp;
int err, slot;
* CONFIG_CMDLINE is meant to be a default in case nothing else
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -2381,6 +2381,14 @@ config CMDLINE_FORCE
+@@ -2382,6 +2382,14 @@ config CMDLINE_FORCE
endchoice
--- a/drivers/mtd/nand/spi/core.c
+++ b/drivers/mtd/nand/spi/core.c
-@@ -1690,6 +1690,7 @@ static int spinand_remove(struct spi_mem
+@@ -1698,6 +1698,7 @@ static int spinand_remove(struct spi_mem
static const struct spi_device_id spinand_ids[] = {
{ .name = "spi-nand" },
{ /* sentinel */ },
};
MODULE_DEVICE_TABLE(spi, spinand_ids);
-@@ -1697,6 +1698,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
+@@ -1705,6 +1706,7 @@ MODULE_DEVICE_TABLE(spi, spinand_ids);
#ifdef CONFIG_OF
static const struct of_device_id spinand_of_ids[] = {
{ .compatible = "spi-nand" },
struct device_node *pp;
int nr_parts, i, ret = 0;
bool dedicated = true;
-@@ -152,9 +155,13 @@ static int parse_fixed_partitions(struct
+@@ -159,9 +162,13 @@ static int parse_fixed_partitions(struct
parts[i].size = of_read_number(reg + a_cells, s_cells);
parts[i].of_node = pp;
parts[i].name = partname;
if (of_property_read_bool(pp, "read-only"))
-@@ -271,6 +278,18 @@ static int __init ofpart_parser_init(voi
+@@ -283,6 +290,18 @@ static int __init ofpart_parser_init(voi
return 0;
}
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -2343,6 +2343,15 @@ config SGI_MFD_IOC3
+@@ -2367,6 +2367,15 @@ config SGI_MFD_IOC3
If you have an SGI Origin, Octane, or a PCI IOC3 card,
then say Y. Otherwise say N.
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
-@@ -930,7 +930,9 @@ static int spi_mem_probe(struct spi_devi
+@@ -950,7 +950,9 @@ static int spi_mem_probe(struct spi_devi
{
struct spi_mem_driver *memdrv = to_spi_mem_drv(spi->dev.driver);
struct spi_controller *ctlr = spi->controller;
mem = devm_kzalloc(&spi->dev, sizeof(*mem), GFP_KERNEL);
if (!mem)
-@@ -938,10 +940,15 @@ static int spi_mem_probe(struct spi_devi
+@@ -958,10 +960,15 @@ static int spi_mem_probe(struct spi_devi
mem->spi = spi;
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
-@@ -1829,6 +1829,7 @@ static const struct of_device_id qcom_pc
+@@ -1827,6 +1827,7 @@ static const struct of_device_id qcom_pc
{ .compatible = "qcom,pcie-apq8064", .data = &cfg_2_1_0 },
{ .compatible = "qcom,pcie-apq8084", .data = &cfg_1_0_0 },
{ .compatible = "qcom,pcie-ipq4019", .data = &cfg_2_4_0 },
--- a/drivers/clk/qcom/gcc-ipq5018.c
+++ b/drivers/clk/qcom/gcc-ipq5018.c
-@@ -3660,7 +3660,7 @@ static const struct qcom_reset_map gcc_i
+@@ -3661,7 +3661,7 @@ static const struct qcom_reset_map gcc_i
[GCC_WCSS_AXI_S_ARES] = { 0x59008, 6 },
[GCC_WCSS_Q6_BCR] = { 0x18004, 0 },
[GCC_WCSSAON_RESET] = { 0x59010, 0},
+++ /dev/null
-From 04c4dc1f541135708d90a9b4632af51136f93ac3 Mon Sep 17 00:00:00 2001
-From: George Moussalem <george.moussalem@outlook.com>
-Date: Fri, 28 Nov 2025 15:03:19 +0400
-Subject: clk: qcom: gcc-ipq5018: flag sleep clock as critical
-
-The sleep clock never be disabled. To avoid the kernel trying to disable
-it and keep it always on, flag it as critical.
-
-Fixes: e3fdbef1bab8 ("clk: qcom: Add Global Clock controller (GCC) driver for IPQ5018")
-Signed-off-by: George Moussalem <george.moussalem@outlook.com>
-Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
-Link: https://lore.kernel.org/r/20251128-ipq5018-sleep-clk-fix-v1-1-6f4b75ec336c@outlook.com
-Signed-off-by: Bjorn Andersson <andersson@kernel.org>
----
- drivers/clk/qcom/gcc-ipq5018.c | 1 +
- 1 file changed, 1 insertion(+)
-
-(limited to 'drivers/clk/qcom/gcc-ipq5018.c')
-
---- a/drivers/clk/qcom/gcc-ipq5018.c
-+++ b/drivers/clk/qcom/gcc-ipq5018.c
-@@ -1340,6 +1340,7 @@ static struct clk_branch gcc_sleep_clk_s
- .name = "gcc_sleep_clk_src",
- .parent_data = gcc_sleep_clk_data,
- .num_parents = ARRAY_SIZE(gcc_sleep_clk_data),
-+ .flags = CLK_IS_CRITICAL,
- .ops = &clk_branch2_ops,
- },
- },
ifdef CONFIG_MDIO_DEVICE
--- a/drivers/net/phy/phy_device.c
+++ b/drivers/net/phy/phy_device.c
-@@ -1783,243 +1783,6 @@ bool phy_driver_is_genphy_10g(struct phy
+@@ -1781,243 +1781,6 @@ bool phy_driver_is_genphy_10g(struct phy
EXPORT_SYMBOL_GPL(phy_driver_is_genphy_10g);
/**
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -19123,6 +19123,15 @@ S: Maintained
+@@ -19129,6 +19129,15 @@ S: Maintained
F: Documentation/devicetree/bindings/regulator/vqmmc-ipq4019-regulator.yaml
F: drivers/regulator/vqmmc-ipq4019-regulator.c
--- a/MAINTAINERS
+++ b/MAINTAINERS
-@@ -19140,6 +19140,14 @@ S: Maintained
+@@ -19146,6 +19146,14 @@ S: Maintained
F: Documentation/devicetree/bindings/mtd/qcom,nandc.yaml
F: drivers/mtd/nand/raw/qcom_nandc.c
-TIMER_OF_DECLARE(systick, "ralink,cevt-systick", ralink_systick_init);
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
-@@ -754,4 +754,13 @@ config EP93XX_TIMER
+@@ -755,4 +755,13 @@ config EP93XX_TIMER
Enables support for the Cirrus Logic timer block
EP93XX.
}
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
-@@ -753,10 +753,15 @@ config EP93XX_TIMER
+@@ -754,10 +754,15 @@ config EP93XX_TIMER
help
Enables support for the Cirrus Logic timer block
EP93XX.
/* Mark the buffer as done if the EOF marker is set. */
if (data[1] & UVC_STREAM_EOF && buf->bytesused != 0) {
uvc_dbg(stream->dev, FRAME, "Frame complete (EOF found)\n");
-@@ -1937,6 +2082,8 @@ static int uvc_init_video_isoc(struct uv
+@@ -1938,6 +2083,8 @@ static int uvc_init_video_isoc(struct uv
if (npackets == 0)
return -ENOMEM;
--- a/drivers/net/phy/sfp.c
+++ b/drivers/net/phy/sfp.c
-@@ -724,10 +724,64 @@ static int sfp_i2c_write(struct sfp *sfp
+@@ -728,10 +728,64 @@ static int sfp_i2c_write(struct sfp *sfp
return ret == ARRAY_SIZE(msgs) ? len : 0;
}
sfp->i2c = i2c;
sfp->read = sfp_i2c_read;
-@@ -759,6 +813,29 @@ static int sfp_i2c_mdiobus_create(struct
+@@ -763,6 +817,29 @@ static int sfp_i2c_mdiobus_create(struct
return 0;
}
static void sfp_i2c_mdiobus_destroy(struct sfp *sfp)
{
mdiobus_unregister(sfp->i2c_mii);
-@@ -1933,9 +2010,15 @@ static void sfp_sm_fault(struct sfp *sfp
+@@ -1937,9 +2014,15 @@ static void sfp_sm_fault(struct sfp *sfp
static int sfp_sm_add_mdio_bus(struct sfp *sfp)
{
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -1195,6 +1195,15 @@ config MFD_RDC321X
+@@ -1219,6 +1219,15 @@ config MFD_RDC321X
southbridge which provides access to GPIOs and Watchdog using the
southbridge PCI device configuration space.
+ };
--- a/drivers/mfd/Kconfig
+++ b/drivers/mfd/Kconfig
-@@ -546,6 +546,17 @@ config MFD_MX25_TSADC
+@@ -557,6 +557,17 @@ config MFD_MX25_TSADC
i.MX25 processors. They consist of a conversion queue for general
purpose ADC and a queue for Touchscreens.
+----------------+-----------------+-----------------+-----------------------------+
--- a/arch/arm64/Kconfig
+++ b/arch/arm64/Kconfig
-@@ -1296,6 +1296,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
+@@ -1297,6 +1297,15 @@ config NVIDIA_CARMEL_CNP_ERRATUM
If unsure, say Y.
{
--- a/include/ufs/ufshcd.h
+++ b/include/ufs/ufshcd.h
-@@ -1368,6 +1368,8 @@ extern int ufshcd_system_thaw(struct dev
+@@ -1364,6 +1364,8 @@ extern int ufshcd_system_freeze(struct d
+ extern int ufshcd_system_thaw(struct device *dev);
extern int ufshcd_system_restore(struct device *dev);
- #endif
+extern int ufshcd_dme_reset(struct ufs_hba *hba);
+extern int ufshcd_dme_enable(struct ufs_hba *hba);
--- a/drivers/ufs/host/Kconfig
+++ b/drivers/ufs/host/Kconfig
-@@ -142,3 +142,15 @@ config SCSI_UFS_SPRD
+@@ -143,3 +143,15 @@ config SCSI_UFS_SPRD
Select this if you have UFS controller on Unisoc chipset.
If unsure, say N.
--- a/drivers/spi/spi-mem.c
+++ b/drivers/spi/spi-mem.c
-@@ -384,13 +384,19 @@ int spi_mem_exec_op(struct spi_mem *mem,
+@@ -395,13 +395,19 @@ int spi_mem_exec_op(struct spi_mem *mem,
if (!spi_mem_internal_supports_op(mem, op))
return -EOPNOTSUPP;
--- a/drivers/clocksource/Kconfig
+++ b/drivers/clocksource/Kconfig
-@@ -652,6 +652,17 @@ config RISCV_TIMER
+@@ -653,6 +653,17 @@ config RISCV_TIMER
is accessed via both the SBI and the rdcycle instruction. This is
required for all RISC-V systems.
clk_disable_unprepare(data->clk);
clk_disable_unprepare(data->pclk);
-@@ -727,6 +729,8 @@ static int dw8250_runtime_resume(struct
-
- clk_prepare_enable(data->clk);
+@@ -734,6 +736,8 @@ static int dw8250_runtime_resume(struct
+ return ret;
+ }
+ reset_control_deassert(data->rst);
+
--- a/drivers/tty/serial/8250/8250_dw.c
+++ b/drivers/tty/serial/8250/8250_dw.c
-@@ -770,6 +770,7 @@ static const struct of_device_id dw8250_
+@@ -777,6 +777,7 @@ static const struct of_device_id dw8250_
{ .compatible = "marvell,armada-38x-uart", .data = &dw8250_armada_38x_data },
{ .compatible = "renesas,rzn1-uart", .data = &dw8250_renesas_rzn1_data },
{ .compatible = "sophgo,sg2044-uart", .data = &dw8250_skip_set_rate_data },