diff --git a/0000-raspberrypi-kernel.patch b/0000-raspberrypi-kernel.patch index fe2205edf042b8a2d1513a407f8958ce5e7ccfd1..894a2854c9f8f65f124bccd9aa8e00cf06f59a8d 100644 --- a/0000-raspberrypi-kernel.patch +++ b/0000-raspberrypi-kernel.patch @@ -1,7 +1,7 @@ -From 66c44c6084aa288a00454ea42231001f659ddbe5 Mon Sep 17 00:00:00 2001 -From: Yafen -Date: Wed, 19 Apr 2023 00:38:17 +0800 -Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) +From 3554c6c6478932af731e011d2286763b849c55d4 Mon Sep 17 00:00:00 2001 +From: junyu mu +Date: Tue, 24 Oct 2023 21:34:38 +0800 +Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-161.0.0) --- .../admin-guide/media/bcm2835-isp.rst | 127 + @@ -522,7 +522,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) drivers/gpu/drm/vc4/vc4_dsi.c | 73 +- drivers/gpu/drm/vc4/vc4_firmware_kms.c | 1992 +++++ drivers/gpu/drm/vc4/vc4_gem.c | 3 +- - drivers/gpu/drm/vc4/vc4_hdmi.c | 2294 +++++- + drivers/gpu/drm/vc4/vc4_hdmi.c | 2296 +++++- drivers/gpu/drm/vc4/vc4_hdmi.h | 148 +- drivers/gpu/drm/vc4/vc4_hdmi_phy.c | 45 +- drivers/gpu/drm/vc4/vc4_hdmi_regs.h | 35 +- @@ -532,7 +532,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) drivers/gpu/drm/vc4/vc4_plane.c | 312 +- drivers/gpu/drm/vc4/vc4_regs.h | 90 +- drivers/gpu/drm/vc4/vc4_txp.c | 24 +- - drivers/gpu/drm/vc4/vc4_vec.c | 397 +- + drivers/gpu/drm/vc4/vc4_vec.c | 399 +- drivers/gpu/drm/vc4/vc_image_types.h | 175 + drivers/gpu/drm/virtio/virtgpu_display.c | 8 +- drivers/gpu/drm/vkms/vkms_crtc.c | 24 +- @@ -797,7 +797,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) drivers/video/backlight/Kconfig | 7 + drivers/video/backlight/Makefile | 1 + drivers/video/backlight/rpi_backlight.c | 119 + - drivers/video/fbdev/Kconfig | 27 + + drivers/video/fbdev/Kconfig | 26 + drivers/video/fbdev/Makefile | 2 + drivers/video/fbdev/bcm2708_fb.c | 1274 +++ drivers/video/fbdev/core/cfbimgblt.c | 152 +- @@ -826,7 +826,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) include/linux/mfd/rpisense/framebuffer.h | 32 + include/linux/mfd/rpisense/joystick.h | 35 + include/linux/microchipphy.h | 8 + - include/linux/mmc/card.h | 2 + + include/linux/mmc/card.h | 1 + include/linux/platform_data/dma-bcm2708.h | 143 + include/linux/usb.h | 2 + include/linux/usb/hcd.h | 7 + @@ -838,7 +838,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) include/soc/bcm2835/raspberrypi-firmware.h | 29 +- include/sound/hdmi-codec.h | 17 +- include/sound/pcm_iec958.h | 8 + - include/uapi/drm/drm_fourcc.h | 11 + + include/uapi/drm/drm_fourcc.h | 7 + include/uapi/drm/drm_mode.h | 1 + include/uapi/linux/bcm2835-isp.h | 347 + include/uapi/linux/fb.h | 12 + @@ -901,7 +901,7 @@ Subject: [PATCH] apply RPi patch of 5.10.110(openEuler 5.10.0-147.0.0) sound/soc/soc-core.c | 14 +- sound/usb/quirks-table.h | 9 + sound/usb/quirks.c | 6 + - 897 files changed, 175469 insertions(+), 4751 deletions(-) + 897 files changed, 175465 insertions(+), 4753 deletions(-) create mode 100644 Documentation/admin-guide/media/bcm2835-isp.rst create mode 100644 Documentation/devicetree/bindings/clock/raspberrypi,firmware-clocks.yaml create mode 100644 Documentation/devicetree/bindings/hwmon/rpi-poe-fan.txt @@ -4156,7 +4156,7 @@ index 4a05a105a9e6..ba3a5b599362 100644 pixfmt-nv16m pixfmt-nv24 diff --git a/MAINTAINERS b/MAINTAINERS -index 1b5a590049fb..4f5c47b2ad9b 100644 +index 50b205a570f0..c6b9a8530598 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3427,6 +3427,29 @@ N: bcm113* @@ -4189,7 +4189,7 @@ index 1b5a590049fb..4f5c47b2ad9b 100644 BROADCOM BCM47XX MIPS ARCHITECTURE M: Hauke Mehrtens M: Rafał Miłecki -@@ -5529,6 +5552,14 @@ S: Maintained +@@ -5515,6 +5538,14 @@ S: Maintained F: Documentation/devicetree/bindings/display/panel/feiyang,fy07024di26a30d.yaml F: drivers/gpu/drm/panel/panel-feiyang-fy07024di26a30d.c @@ -4204,7 +4204,7 @@ index 1b5a590049fb..4f5c47b2ad9b 100644 DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS M: Hans de Goede S: Maintained -@@ -16466,6 +16497,23 @@ S: Maintained +@@ -16464,6 +16495,23 @@ S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx355.c @@ -4229,10 +4229,10 @@ index 1b5a590049fb..4f5c47b2ad9b 100644 M: Maxim Levitsky M: Alex Dubov diff --git a/Makefile b/Makefile -index aaa05a3e38d8..030088c396f6 100644 +index 6ece128aa360..51b04d69183d 100644 --- a/Makefile +++ b/Makefile -@@ -1375,6 +1375,9 @@ ifneq ($(dtstree),) +@@ -1385,6 +1385,9 @@ ifneq ($(dtstree),) %.dtb: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ @@ -46000,7 +46000,7 @@ index ab955c249f37..bdc8e8ab1d81 100644 case INSN_OBSOLETE: insn->current_mode = INSN_UNDEF; diff --git a/arch/arm64/kernel/cpuinfo.c b/arch/arm64/kernel/cpuinfo.c -index 97dab8f4634f..74cfb4935f4b 100644 +index 0cd3453a6f41..bd3a9d0c7093 100644 --- a/arch/arm64/kernel/cpuinfo.c +++ b/arch/arm64/kernel/cpuinfo.c @@ -17,6 +17,7 @@ @@ -46011,7 +46011,7 @@ index 97dab8f4634f..74cfb4935f4b 100644 #include #include #include -@@ -140,6 +141,10 @@ static int c_show(struct seq_file *m, void *v) +@@ -141,6 +142,10 @@ static int c_show(struct seq_file *m, void *v) { int i, j; bool aarch32 = personality(current->personality) == PER_LINUX32; @@ -46022,7 +46022,7 @@ index 97dab8f4634f..74cfb4935f4b 100644 for_each_online_cpu(i) { struct cpuinfo_arm64 *cpuinfo = &per_cpu(cpu_data, i); -@@ -200,6 +205,26 @@ static int c_show(struct seq_file *m, void *v) +@@ -201,6 +206,26 @@ static int c_show(struct seq_file *m, void *v) seq_printf(m, "CPU revision\t: %d\n\n", MIDR_REVISION(midr)); } @@ -46050,7 +46050,7 @@ index 97dab8f4634f..74cfb4935f4b 100644 } diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c -index a699e6166aef..ffe22b5ff280 100644 +index 3d905fda9b29..060f74279838 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c @@ -451,6 +451,14 @@ static const struct usb_device_id blacklist_table[] = { @@ -46069,7 +46069,7 @@ index a699e6166aef..ffe22b5ff280 100644 { USB_DEVICE(0x0b05, 0x17dc), .driver_info = BTUSB_REALTEK }, { USB_DEVICE(0x13d3, 0x3414), .driver_info = BTUSB_REALTEK }, diff --git a/drivers/bluetooth/hci_h5.c b/drivers/bluetooth/hci_h5.c -index 996729e78105..6d179e455721 100644 +index 7f70a677b92b..ae95ed54a118 100644 --- a/drivers/bluetooth/hci_h5.c +++ b/drivers/bluetooth/hci_h5.c @@ -343,7 +343,8 @@ static void h5_handle_internal_rx(struct hci_uart *hu) @@ -47888,7 +47888,7 @@ index da8fcf147eb1..f78099e1d9e7 100644 obj-$(CONFIG_COMMON_CLK_MAX9485) += clk-max9485.o obj-$(CONFIG_ARCH_MILBEAUT_M10V) += clk-milbeaut.o diff --git a/drivers/clk/bcm/clk-bcm2835.c b/drivers/clk/bcm/clk-bcm2835.c -index 178886823b90..7e74aafddbf8 100644 +index b7f89873fcf5..36e110f963bc 100644 --- a/drivers/clk/bcm/clk-bcm2835.c +++ b/drivers/clk/bcm/clk-bcm2835.c @@ -35,6 +35,7 @@ @@ -50430,7 +50430,7 @@ index 630dfbb01a40..94a1b40b1645 100644 MODULE_ALIAS("platform:bcm2835-dma"); MODULE_DESCRIPTION("BCM2835 DMA engine driver"); diff --git a/drivers/firmware/raspberrypi.c b/drivers/firmware/raspberrypi.c -index 1d965c1252ca..849e63bb426d 100644 +index 9eef49da47e0..fbb5ec576e0e 100644 --- a/drivers/firmware/raspberrypi.c +++ b/drivers/firmware/raspberrypi.c @@ -12,6 +12,7 @@ @@ -50597,7 +50597,7 @@ index 1d965c1252ca..849e63bb426d 100644 } static void rpi_register_clk_driver(struct device *dev) -@@ -272,8 +386,10 @@ static int rpi_firmware_probe(struct platform_device *pdev) +@@ -273,8 +387,10 @@ static int rpi_firmware_probe(struct platform_device *pdev) kref_init(&fw->consumers); platform_set_drvdata(pdev, fw); @@ -50608,7 +50608,7 @@ index 1d965c1252ca..849e63bb426d 100644 rpi_register_hwmon_driver(dev, fw); rpi_register_clk_driver(dev); -@@ -298,6 +414,7 @@ static int rpi_firmware_remove(struct platform_device *pdev) +@@ -299,6 +415,7 @@ static int rpi_firmware_remove(struct platform_device *pdev) rpi_hwmon = NULL; platform_device_unregister(rpi_clk); rpi_clk = NULL; @@ -50616,7 +50616,7 @@ index 1d965c1252ca..849e63bb426d 100644 rpi_firmware_put(fw); -@@ -352,7 +469,35 @@ static struct platform_driver rpi_firmware_driver = { +@@ -353,7 +470,35 @@ static struct platform_driver rpi_firmware_driver = { .shutdown = rpi_firmware_shutdown, .remove = rpi_firmware_remove, }; @@ -52316,7 +52316,7 @@ index 000000000000..89f5d6b353ab +MODULE_AUTHOR("Dave Stevenson "); +MODULE_DESCRIPTION("PWM GPIO driver"); diff --git a/drivers/gpio/gpiolib.c b/drivers/gpio/gpiolib.c -index 59d8affad343..2ab00355b37b 100644 +index 3e01a3ac652d..f7f3c294c085 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c @@ -51,6 +51,8 @@ @@ -52328,7 +52328,7 @@ index 59d8affad343..2ab00355b37b 100644 /* Device and char device-related information */ static DEFINE_IDA(gpio_ida); static dev_t gpio_devt; -@@ -2463,8 +2465,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) +@@ -2462,8 +2464,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) value = !!value; /* GPIOs used for enabled IRQs shall not be set as output */ @@ -52339,7 +52339,7 @@ index 59d8affad343..2ab00355b37b 100644 gpiod_err(desc, "%s: tried to set a GPIO tied to an IRQ as output\n", __func__); -@@ -3279,8 +3281,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) +@@ -3277,8 +3279,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) } /* To be valid for IRQ the line needs to be input or open drain */ @@ -52351,10 +52351,10 @@ index 59d8affad343..2ab00355b37b 100644 "%s: tried to flag a GPIO set as output for IRQ\n", __func__); diff --git a/drivers/gpu/drm/Kconfig b/drivers/gpu/drm/Kconfig -index af407d01e1c4..75bf087160bc 100644 +index f6dcb60be551..f74579a3f08f 100644 --- a/drivers/gpu/drm/Kconfig +++ b/drivers/gpu/drm/Kconfig -@@ -394,6 +394,8 @@ source "drivers/gpu/drm/tidss/Kconfig" +@@ -397,6 +397,8 @@ source "drivers/gpu/drm/tidss/Kconfig" source "drivers/gpu/drm/xlnx/Kconfig" @@ -52364,19 +52364,20 @@ index af407d01e1c4..75bf087160bc 100644 menuconfig DRM_LEGACY diff --git a/drivers/gpu/drm/Makefile b/drivers/gpu/drm/Makefile -index e9dd6847c9fa..cc9a1da9402b 100644 +index e806bda8650a..a6adea6c7028 100644 --- a/drivers/gpu/drm/Makefile +++ b/drivers/gpu/drm/Makefile -@@ -125,3 +125,4 @@ obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/ +@@ -125,4 +125,5 @@ obj-$(CONFIG_DRM_ASPEED_GFX) += aspeed/ obj-$(CONFIG_DRM_MCDE) += mcde/ obj-$(CONFIG_DRM_TIDSS) += tidss/ obj-y += xlnx/ -+obj-y += gud/ ++obj-y += gud/ + obj-$(CONFIG_DRM_INSPUR) += inspur/ diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -index 55ecc67592eb..c8fe42d1d17c 100644 +index fbe15f4b75fd..898501cb7804 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -5026,7 +5026,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) +@@ -5025,7 +5025,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) static const struct drm_crtc_funcs amdgpu_dm_crtc_funcs = { .reset = dm_crtc_reset_state, .destroy = amdgpu_dm_crtc_destroy, @@ -52384,7 +52385,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = dm_crtc_duplicate_state, -@@ -5510,25 +5509,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, +@@ -5509,25 +5508,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, return 0; } @@ -52410,7 +52411,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 static int amdgpu_dm_connector_atomic_check(struct drm_connector *conn, struct drm_atomic_state *state) -@@ -5544,7 +5524,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, +@@ -5543,7 +5523,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, if (!crtc) return 0; @@ -52419,7 +52420,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 struct dc_info_packet hdr_infopacket; ret = fill_hdr_info_packet(new_con_state, &hdr_infopacket); -@@ -5639,17 +5619,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, +@@ -5638,17 +5618,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, } static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, @@ -52443,7 +52444,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 WARN_ON(1); return ret; } -@@ -5660,8 +5642,8 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, +@@ -5659,8 +5641,8 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, * 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. */ @@ -52454,7 +52455,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 return -EINVAL; /* In some use cases, like reset, no stream is attached */ -@@ -6563,9 +6545,7 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, +@@ -6562,9 +6544,7 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, if (connector_type == DRM_MODE_CONNECTOR_HDMIA || connector_type == DRM_MODE_CONNECTOR_DisplayPort || connector_type == DRM_MODE_CONNECTOR_eDP) { @@ -52465,7 +52466,7 @@ index 55ecc67592eb..c8fe42d1d17c 100644 if (!aconnector->mst_port) drm_connector_attach_vrr_capable_property(&aconnector->base); -@@ -7815,7 +7795,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) +@@ -7814,7 +7794,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) dm_old_crtc_state->abm_level; hdr_changed = @@ -52924,7 +52925,7 @@ index c916f4b8907e..a63d6d238e3c 100644 bridge->encoder); diff --git a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c -index b10228b9e3a9..add1da26d8da 100644 +index 2c3c743df950..5524b2f9571a 100644 --- a/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c +++ b/drivers/gpu/drm/bridge/synopsys/dw-hdmi.c @@ -2403,21 +2403,6 @@ static int dw_hdmi_connector_get_modes(struct drm_connector *connector) @@ -53346,7 +53347,7 @@ index 138ff34b31db..78933e2a5f44 100644 out: DRM_MODESET_LOCK_ALL_END(dev, ctx, ret); diff --git a/drivers/gpu/drm/drm_connector.c b/drivers/gpu/drm/drm_connector.c -index 5163433ac561..a0803ac21a43 100644 +index 9c3bbe2c3e6f..4b2df9162d66 100644 --- a/drivers/gpu/drm/drm_connector.c +++ b/drivers/gpu/drm/drm_connector.c @@ -94,6 +94,7 @@ static struct drm_conn_prop_enum_list drm_connector_enum_list[] = { @@ -53357,7 +53358,7 @@ index 5163433ac561..a0803ac21a43 100644 }; void drm_connector_ida_init(void) -@@ -2143,6 +2144,75 @@ int drm_connector_attach_max_bpc_property(struct drm_connector *connector, +@@ -2146,6 +2147,75 @@ int drm_connector_attach_max_bpc_property(struct drm_connector *connector, } EXPORT_SYMBOL(drm_connector_attach_max_bpc_property); @@ -53480,16 +53481,16 @@ index 4334e466b4e0..8ba175445a6b 100644 /** * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe diff --git a/drivers/gpu/drm/drm_fourcc.c b/drivers/gpu/drm/drm_fourcc.c -index 722c7ebe4e88..bdc7c605f43e 100644 +index 92152c06b75b..d25b05618f67 100644 --- a/drivers/gpu/drm/drm_fourcc.c +++ b/drivers/gpu/drm/drm_fourcc.c -@@ -286,6 +286,9 @@ const struct drm_format_info *__drm_format_info(u32 format) - .num_planes = 3, .char_per_block = { 2, 2, 2 }, - .block_w = { 1, 1, 1 }, .block_h = { 1, 1, 1 }, .hsub = 0, - .vsub = 0, .is_yuv = true }, -+ { .format = DRM_FORMAT_P030, .depth = 0, .num_planes = 2, -+ .char_per_block = { 4, 4, 0 }, .block_w = { 3, 0, 0 }, .block_h = { 1, 0, 0 }, -+ .hsub = 2, .vsub = 2, .is_yuv = true}, +@@ -289,6 +289,9 @@ const struct drm_format_info *__drm_format_info(u32 format) + { .format = DRM_FORMAT_P030, .depth = 0, .num_planes = 2, + .char_per_block = { 4, 8, 0 }, .block_w = { 3, 3, 0 }, .block_h = { 1, 1, 0 }, + .hsub = 2, .vsub = 2, .is_yuv = true}, ++ { .format = DRM_FORMAT_P030, .depth = 0, .num_planes = 2, ++ .char_per_block = { 4, 4, 0 }, .block_w = { 3, 0, 0 }, .block_h = { 1, 0, 0 }, ++ .hsub = 2, .vsub = 2, .is_yuv = true}, }; unsigned int i; @@ -56361,7 +56362,7 @@ index fd9d8e51837f..987fc13bca25 100644 spin_lock_irq(&crtc->dev->event_lock); if (crtc->state->event) { diff --git a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c -index e34718cf5c2e..b0a4bbb0b6c4 100644 +index 5ec9770e401e..4b73ed6a0e98 100644 --- a/drivers/gpu/drm/ingenic/ingenic-drm-drv.c +++ b/drivers/gpu/drm/ingenic/ingenic-drm-drv.c @@ -151,7 +151,7 @@ static int ingenic_drm_update_pixclk(struct notifier_block *nb, @@ -56586,7 +56587,7 @@ index 2854272dc2d9..d70616da8ce2 100644 struct meson_crtc *meson_crtc = to_meson_crtc(crtc); struct meson_drm *priv = meson_crtc->priv; diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c -index f56414a06ec4..5bc1ead269d3 100644 +index 9bc4a1cd9ac6..e660489d99e6 100644 --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c @@ -11,6 +11,7 @@ @@ -56653,16 +56654,16 @@ index f56414a06ec4..5bc1ead269d3 100644 struct plane_state *pstates; const struct drm_plane_state *pstate; -@@ -832,32 +837,33 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc, - - pstates = kzalloc(sizeof(*pstates) * DPU_STAGE_MAX * 4, GFP_KERNEL); +@@ -834,32 +839,33 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc, + if (!pstates) + return -ENOMEM; - if (!state->enable || !state->active) { + if (!crtc_state->enable || !crtc_state->active) { DPU_DEBUG("crtc%d -> enable %d, active %d, skip atomic_check\n", - crtc->base.id, state->enable, state->active); + crtc->base.id, crtc_state->enable, -+ crtc_state->active); ++ crtc_state->active); goto end; } @@ -56694,7 +56695,7 @@ index f56414a06ec4..5bc1ead269d3 100644 struct drm_rect dst, clip = crtc_rect; if (IS_ERR_OR_NULL(pstate)) { -@@ -963,7 +969,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc, +@@ -965,7 +971,7 @@ static int dpu_crtc_atomic_check(struct drm_crtc *crtc, atomic_inc(&_dpu_crtc_get_kms(crtc)->bandwidth_ref); @@ -57460,7 +57461,7 @@ index 4b92c6341490..3f0c11fa60a5 100644 } diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index b7b37082a9d7..860d3a784665 100644 +index 1a87cc445b5e..f25aad3fa08d 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -112,8 +112,6 @@ struct panel_simple { @@ -57584,7 +57585,7 @@ index b7b37082a9d7..860d3a784665 100644 static const struct drm_display_mode innolux_at070tn92_mode = { .clock = 33333, .hdisplay = 800, -@@ -3189,6 +3239,31 @@ static const struct panel_desc qd43003c0_40 = { +@@ -3191,6 +3241,31 @@ static const struct panel_desc qd43003c0_40 = { .bus_format = MEDIA_BUS_FMT_RGB888_1X24, }; @@ -57616,7 +57617,7 @@ index b7b37082a9d7..860d3a784665 100644 static const struct display_timing rocktech_rk070er9427_timing = { .pixelclock = { 26400000, 33300000, 46800000 }, .hactive = { 800, 800, 800 }, -@@ -4059,6 +4134,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4061,6 +4136,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "friendlyarm,hd702e", .data = &friendlyarm_hd702e, @@ -57626,7 +57627,7 @@ index b7b37082a9d7..860d3a784665 100644 }, { .compatible = "giantplus,gpg482739qs5", .data = &giantplus_gpg482739qs5 -@@ -4077,6 +4155,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4079,6 +4157,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "innolux,at043tn24", .data = &innolux_at043tn24, @@ -57636,7 +57637,7 @@ index b7b37082a9d7..860d3a784665 100644 }, { .compatible = "innolux,at070tn92", .data = &innolux_at070tn92, -@@ -4206,6 +4287,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4208,6 +4289,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "qiaodian,qd43003c0-40", .data = &qd43003c0_40, @@ -57962,7 +57963,7 @@ index 3a153648b369..45d9eb552d86 100644 struct drm_encoder *encoder = sun4i_crtc_get_encoder(crtc); struct sun4i_crtc *scrtc = drm_crtc_to_sun4i_crtc(crtc); diff --git a/drivers/gpu/drm/tegra/dc.c b/drivers/gpu/drm/tegra/dc.c -index ceb86338c003..1e486da92ac3 100644 +index 958d12da902d..75cfcd0a89fd 100644 --- a/drivers/gpu/drm/tegra/dc.c +++ b/drivers/gpu/drm/tegra/dc.c @@ -1748,7 +1748,7 @@ static int tegra_dc_wait_idle(struct tegra_dc *dc, unsigned long timeout) @@ -59237,7 +59238,7 @@ index a90f2545baee..0d4fb6818d51 100644 DPI_WRITE(DPI_C, dpi_c); diff --git a/drivers/gpu/drm/vc4/vc4_drv.c b/drivers/gpu/drm/vc4/vc4_drv.c -index 52426bc8edb8..dec3620bc7c5 100644 +index 888aec1bbeee..806bb0eefcd8 100644 --- a/drivers/gpu/drm/vc4/vc4_drv.c +++ b/drivers/gpu/drm/vc4/vc4_drv.c @@ -36,6 +36,8 @@ @@ -61760,7 +61761,7 @@ index b641252939d8..445d3bab89e0 100644 /* Scheduled when any job has been completed, this walks the list of diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c -index 08175c3dd374..b34667b9577e 100644 +index 539ebf85fd7c..b3064293dbb1 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -35,25 +35,39 @@ @@ -63307,13 +63308,12 @@ index 08175c3dd374..b34667b9577e 100644 + vc4_hdmi_enable_scrambling(encoder); + + mutex_unlock(&vc4_hdmi->mutex); - } - --static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder) ++} ++ +static void vc4_hdmi_encoder_atomic_mode_set(struct drm_encoder *encoder, + struct drm_crtc_state *crtc_state, + struct drm_connector_state *conn_state) - { ++{ + struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); + struct vc4_hdmi_connector_state *vc4_state = + conn_state_to_vc4_hdmi_conn_state(conn_state); @@ -63503,13 +63503,14 @@ index 08175c3dd374..b34667b9577e 100644 + drm_dbg(dev, "Failed. No Format Supported for that bpc count.\n"); + + return -EINVAL; -+} -+ + } + +-static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder) +static int +vc4_hdmi_encoder_compute_config(const struct vc4_hdmi *vc4_hdmi, + struct vc4_hdmi_connector_state *vc4_state, + const struct drm_display_mode *mode) -+{ + { + struct drm_device *dev = vc4_hdmi->connector.dev; + struct drm_connector_state *conn_state = &vc4_state->base; + unsigned int max_bpc = clamp_t(unsigned int, conn_state->max_bpc, 8, 12); @@ -63800,12 +63801,12 @@ index 08175c3dd374..b34667b9577e 100644 + VC4_HD_MAI_CTL_DLATE | + VC4_HD_MAI_CTL_ERRORE | + VC4_HD_MAI_CTL_ERRORF); -+ + + spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + + if (vc4_hdmi->variant->phy_rng_disable) + vc4_hdmi->variant->phy_rng_disable(vc4_hdmi); - ++ + vc4_hdmi->audio.streaming = false; vc4_hdmi_audio_reset(vc4_hdmi); @@ -63893,10 +63894,10 @@ index 08175c3dd374..b34667b9577e 100644 + mutex_unlock(&vc4_hdmi->mutex); + return -EINVAL; + } -+ -+ vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); - vc4_hdmi_audio_set_mai_clock(vc4_hdmi); ++ vc4_hdmi_audio_set_mai_clock(vc4_hdmi, sample_rate); ++ + spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); + HDMI_WRITE(HDMI_MAI_CTL, + VC4_SET_FIELD(channels, VC4_HD_MAI_CTL_CHNUM) | @@ -63938,9 +63939,8 @@ index 08175c3dd374..b34667b9577e 100644 HDMI_WRITE(HDMI_MAI_CHANNEL_MAP, channel_map); HDMI_WRITE(HDMI_AUDIO_PACKET_CONFIG, audio_packet_config); - vc4_hdmi_set_n_cts(vc4_hdmi); - +- - vc4_hdmi_set_audio_infoframe(encoder); -+ vc4_hdmi_set_n_cts(vc4_hdmi, sample_rate); - return 0; -} @@ -63953,11 +63953,12 @@ index 08175c3dd374..b34667b9577e 100644 - switch (cmd) { - case SNDRV_PCM_TRIGGER_START: - vc4_hdmi->audio.streaming = true; -+ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); ++ vc4_hdmi_set_n_cts(vc4_hdmi, sample_rate); - if (vc4_hdmi->variant->phy_rng_enable) - vc4_hdmi->variant->phy_rng_enable(vc4_hdmi); -- ++ spin_unlock_irqrestore(&vc4_hdmi->hw_lock, flags); + - HDMI_WRITE(HDMI_MAI_CTL, - VC4_SET_FIELD(vc4_hdmi->audio.channels, - VC4_HD_MAI_CTL_CHNUM) | @@ -64036,10 +64037,11 @@ index 08175c3dd374..b34667b9577e 100644 static const struct snd_soc_dapm_widget vc4_hdmi_audio_widgets[] = { SND_SOC_DAPM_OUTPUT("TX"), }; -@@ -1149,38 +2231,14 @@ static const struct snd_soc_dapm_route vc4_hdmi_audio_routes[] = { +@@ -1148,39 +2230,15 @@ static const struct snd_soc_dapm_route vc4_hdmi_audio_routes[] = { + }; static const struct snd_soc_component_driver vc4_hdmi_audio_component_drv = { - .name = "vc4-hdmi-codec-dai-component", +- .name = "vc4-hdmi-codec-dai-component", - .controls = vc4_hdmi_audio_controls, - .num_controls = ARRAY_SIZE(vc4_hdmi_audio_controls), - .dapm_widgets = vc4_hdmi_audio_widgets, @@ -64072,6 +64074,7 @@ index 08175c3dd374..b34667b9577e 100644 - SNDRV_PCM_RATE_192000, - .formats = SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE, - }, ++ .name = "vc4-hdmi-codec-dai-component", + .dapm_widgets = vc4_hdmi_audio_widgets, + .num_dapm_widgets = ARRAY_SIZE(vc4_hdmi_audio_widgets), + .dapm_routes = vc4_hdmi_audio_routes, @@ -64416,9 +64419,9 @@ index 08175c3dd374..b34667b9577e 100644 + ret = pm_runtime_resume_and_get(&vc4_hdmi->pdev->dev); + if (ret) + return ret; -+ -+ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ spin_lock_irqsave(&vc4_hdmi->hw_lock, flags); ++ + 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 | @@ -64588,18 +64591,18 @@ index 08175c3dd374..b34667b9577e 100644 struct platform_device *pdev = vc4_hdmi->pdev; - u32 value; + struct device *dev = &pdev->dev; -+ unsigned long flags; ++ unsigned long flags; int ret; - if (!vc4_hdmi->variant->cec_available) + if (!of_find_property(dev->of_node, "interrupts", NULL)) { -+ dev_warn(dev, "'interrupts' DT property is missing, no CEC\n"); ++ dev_warn(dev, "'interrupts' DT property is missing, no CEC\n"); return 0; -+ } ++ } vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops, - vc4_hdmi, "vc4", -@@ -1501,28 +2810,49 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) + vc4_hdmi, +@@ -1502,28 +2811,49 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) cec_fill_conn_info_from_drm(&conn_info, &vc4_hdmi->connector); cec_s_conn_info(vc4_hdmi->cec_adap, &conn_info); @@ -64665,7 +64668,7 @@ index 08175c3dd374..b34667b9577e 100644 err_delete_cec_adap: cec_delete_adapter(vc4_hdmi->cec_adap); -@@ -1531,8 +2861,40 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1532,8 +2862,40 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) { @@ -64706,7 +64709,7 @@ index 08175c3dd374..b34667b9577e 100644 #else static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) { -@@ -1541,6 +2903,10 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1542,6 +2904,10 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {}; @@ -64717,7 +64720,7 @@ index 08175c3dd374..b34667b9577e 100644 #endif static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi, -@@ -1615,6 +2981,7 @@ static int vc4_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1616,6 +2982,7 @@ static int vc4_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) return PTR_ERR(vc4_hdmi->hsm_clock); } vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock; @@ -64725,7 +64728,7 @@ index 08175c3dd374..b34667b9577e 100644 return 0; } -@@ -1624,6 +2991,7 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1625,6 +2992,7 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) struct platform_device *pdev = vc4_hdmi->pdev; struct device *dev = &pdev->dev; struct resource *res; @@ -64733,7 +64736,7 @@ index 08175c3dd374..b34667b9577e 100644 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi"); if (!res) -@@ -1708,12 +3076,50 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1709,12 +3077,50 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) return PTR_ERR(vc4_hdmi->audio_clock); } @@ -64784,7 +64787,7 @@ index 08175c3dd374..b34667b9577e 100644 return 0; } -@@ -1736,6 +3142,15 @@ static int vc4_hdmi_runtime_resume(struct device *dev) +@@ -1737,6 +3143,15 @@ static int vc4_hdmi_runtime_resume(struct device *dev) if (ret) return ret; @@ -64800,7 +64803,7 @@ index 08175c3dd374..b34667b9577e 100644 return 0; } #endif -@@ -1754,6 +3169,9 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1755,6 +3170,9 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi = devm_kzalloc(dev, sizeof(*vc4_hdmi), GFP_KERNEL); if (!vc4_hdmi) return -ENOMEM; @@ -64810,7 +64813,7 @@ index 08175c3dd374..b34667b9577e 100644 dev_set_drvdata(dev, vc4_hdmi); encoder = &vc4_hdmi->encoder.base.base; -@@ -1766,6 +3184,15 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1767,6 +3185,15 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi->pdev = pdev; vc4_hdmi->variant = variant; @@ -64826,7 +64829,7 @@ index 08175c3dd374..b34667b9577e 100644 ret = variant->init_resources(vc4_hdmi); if (ret) return ret; -@@ -1803,6 +3230,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1804,6 +3231,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi->disable_wifi_frequencies = of_property_read_bool(dev->of_node, "wifi-2.4ghz-coexistence"); @@ -64841,7 +64844,7 @@ index 08175c3dd374..b34667b9577e 100644 /* * If we boot without any cable connected to the HDMI connector, * the firmware will skip the HSM initialization and leave it -@@ -1811,13 +3246,29 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1812,13 +3247,29 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) * * Let's put a sensible default at runtime_resume so that we * don't end up in this situation. @@ -64874,7 +64877,7 @@ index 08175c3dd374..b34667b9577e 100644 if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") || of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi1")) && -@@ -1827,8 +3278,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1828,8 +3279,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) clk_prepare_enable(vc4_hdmi->pixel_bvb_clock); } @@ -64883,7 +64886,7 @@ index 08175c3dd374..b34667b9577e 100644 drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); drm_encoder_helper_add(encoder, &vc4_hdmi_encoder_helper_funcs); -@@ -1836,10 +3285,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1837,10 +3286,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) if (ret) goto err_destroy_encoder; @@ -64899,7 +64902,7 @@ index 08175c3dd374..b34667b9577e 100644 ret = vc4_hdmi_audio_init(vc4_hdmi); if (ret) goto err_free_cec; -@@ -1848,14 +3301,19 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1849,14 +3302,19 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi_debugfs_regs, vc4_hdmi); @@ -64919,7 +64922,7 @@ index 08175c3dd374..b34667b9577e 100644 pm_runtime_disable(dev); err_put_ddc: put_device(&vc4_hdmi->ddc->dev); -@@ -1893,6 +3351,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master, +@@ -1894,6 +3352,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master, kfree(vc4_hdmi->hd_regset.regs); vc4_hdmi_cec_exit(vc4_hdmi); @@ -64927,7 +64930,7 @@ index 08175c3dd374..b34667b9577e 100644 vc4_hdmi_connector_destroy(&vc4_hdmi->connector); drm_encoder_cleanup(&vc4_hdmi->encoder.base.base); -@@ -1922,7 +3381,6 @@ static const struct vc4_hdmi_variant bcm2835_variant = { +@@ -1923,7 +3382,6 @@ static const struct vc4_hdmi_variant bcm2835_variant = { .debugfs_name = "hdmi_regs", .card_name = "vc4-hdmi", .max_pixel_clock = 162000000, @@ -64935,7 +64938,7 @@ index 08175c3dd374..b34667b9577e 100644 .registers = vc4_hdmi_fields, .num_registers = ARRAY_SIZE(vc4_hdmi_fields), -@@ -1934,14 +3392,16 @@ static const struct vc4_hdmi_variant bcm2835_variant = { +@@ -1935,14 +3393,16 @@ static const struct vc4_hdmi_variant bcm2835_variant = { .phy_disable = vc4_hdmi_phy_disable, .phy_rng_enable = vc4_hdmi_phy_rng_enable, .phy_rng_disable = vc4_hdmi_phy_rng_disable, @@ -64953,7 +64956,7 @@ index 08175c3dd374..b34667b9577e 100644 .registers = vc5_hdmi_hdmi0_fields, .num_registers = ARRAY_SIZE(vc5_hdmi_hdmi0_fields), .phy_lane_mapping = { -@@ -1951,6 +3411,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { +@@ -1952,6 +3412,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { PHY_LANE_CK, }, .unsupported_odd_h_timings = true, @@ -64961,7 +64964,7 @@ index 08175c3dd374..b34667b9577e 100644 .init_resources = vc5_hdmi_init_resources, .csc_setup = vc5_hdmi_csc_setup, -@@ -1960,7 +3421,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { +@@ -1961,7 +3422,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { .phy_disable = vc5_hdmi_phy_disable, .phy_rng_enable = vc5_hdmi_phy_rng_enable, .phy_rng_disable = vc5_hdmi_phy_rng_disable, @@ -64972,7 +64975,7 @@ index 08175c3dd374..b34667b9577e 100644 }; static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { -@@ -1977,6 +3441,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { +@@ -1978,6 +3442,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { PHY_LANE_2, }, .unsupported_odd_h_timings = true, @@ -64980,7 +64983,7 @@ index 08175c3dd374..b34667b9577e 100644 .init_resources = vc5_hdmi_init_resources, .csc_setup = vc5_hdmi_csc_setup, -@@ -1986,7 +3451,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { +@@ -1987,7 +3452,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { .phy_disable = vc5_hdmi_phy_disable, .phy_rng_enable = vc5_hdmi_phy_rng_enable, .phy_rng_disable = vc5_hdmi_phy_rng_disable, @@ -67002,7 +67005,7 @@ index f8fa09dfea5d..82beb8c159f2 100644 txp->pdev = pdev; diff --git a/drivers/gpu/drm/vc4/vc4_vec.c b/drivers/gpu/drm/vc4/vc4_vec.c -index bd5b8eb58b18..255e5c6c48e0 100644 +index c6bd168a5898..179f6edbecf3 100644 --- a/drivers/gpu/drm/vc4/vc4_vec.c +++ b/drivers/gpu/drm/vc4/vc4_vec.c @@ -45,6 +45,7 @@ @@ -67134,12 +67137,14 @@ index bd5b8eb58b18..255e5c6c48e0 100644 - -static const struct drm_display_mode ntsc_mode = { - DRM_MODE("720x480", DRM_MODE_TYPE_DRIVER, 13500, +- 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, +- 480, 480 + 7, 480 + 7 + 6, 525, 0, +- DRM_MODE_FLAG_INTERLACE) +static const struct drm_display_mode drm_mode_480i = { + DRM_MODE("720x480i", DRM_MODE_TYPE_DRIVER, 13500, - 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, -- 480, 480 + 3, 480 + 3 + 3, 480 + 3 + 3 + 16, 0, -+ 480, 480 + 7, 480 + 7 + 6, 525, 0, - DRM_MODE_FLAG_INTERLACE) ++ 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, ++ 480, 480 + 7, 480 + 7 + 6, 525, 0, ++ DRM_MODE_FLAG_INTERLACE) }; -static void vc4_vec_pal_mode_set(struct vc4_vec *vec) @@ -67158,24 +67163,23 @@ index bd5b8eb58b18..255e5c6c48e0 100644 -} +static const struct drm_display_mode drm_mode_240p = { + DRM_MODE("720x240", DRM_MODE_TYPE_DRIVER, 13500, -+ 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, -+ 240, 240 + 3, 240 + 3 + 3, 262, 0, 0) ++ 720, 720 + 14, 720 + 14 + 64, 720 + 14 + 64 + 60, 0, ++ 240, 240 + 3, 240 + 3 + 3, 262, 0, 0) +}; -static const struct drm_display_mode pal_mode = { - DRM_MODE("720x576", DRM_MODE_TYPE_DRIVER, 13500, -+static const struct drm_display_mode drm_mode_576i = { ++static const struct drm_display_mode pal_mode_576i = { + DRM_MODE("720x576i", DRM_MODE_TYPE_DRIVER, 13500, 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, -- 576, 576 + 2, 576 + 2 + 3, 576 + 2 + 3 + 20, 0, -+ 576, 576 + 4, 576 + 4 + 6, 625, 0, + 576, 576 + 4, 576 + 4 + 6, 625, 0, DRM_MODE_FLAG_INTERLACE) }; +static const struct drm_display_mode drm_mode_288p = { + DRM_MODE("720x288", DRM_MODE_TYPE_DRIVER, 13500, -+ 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, -+ 288, 288 + 2, 288 + 2 + 3, 312, 0, 0) ++ 720, 720 + 20, 720 + 20 + 64, 720 + 20 + 64 + 60, 0, ++ 288, 288 + 2, 288 + 2 + 3, 312, 0, 0) +}; + static const struct vc4_vec_tv_mode vc4_vec_tv_modes[] = { @@ -67190,7 +67194,7 @@ index bd5b8eb58b18..255e5c6c48e0 100644 [VC4_VEC_TV_MODE_NTSC_J] = { - .mode = &ntsc_mode, - .mode_set = vc4_vec_ntsc_j_mode_set, -+ .interlaced_mode = &drm_mode_480i, ++ .interlaced_mode = &drm_mode_288p, + .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_NTSC_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, @@ -67206,25 +67210,25 @@ index bd5b8eb58b18..255e5c6c48e0 100644 [VC4_VEC_TV_MODE_PAL] = { - .mode = &pal_mode, - .mode_set = vc4_vec_pal_mode_set, -+ .interlaced_mode = &drm_mode_576i, -+ .progressive_mode = &drm_mode_288p, -+ .config0 = VEC_CONFIG0_PAL_BDGHI_STD, -+ .config1 = VEC_CONFIG1_C_CVBS_CVBS, ++ .interlaced_mode = &pal_mode_576i, ++ .progressive_mode = &drm_mode_288p, ++ .config0 = VEC_CONFIG0_PAL_BDGHI_STD, ++ .config1 = VEC_CONFIG1_C_CVBS_CVBS, }, [VC4_VEC_TV_MODE_PAL_M] = { - .mode = &pal_mode, - .mode_set = vc4_vec_pal_m_mode_set, -+ .interlaced_mode = &drm_mode_480i, ++ .interlaced_mode = &pal_mode_576i, + .progressive_mode = &drm_mode_240p, + .config0 = VEC_CONFIG0_PAL_M_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, -+ }, ++ }, + [VC4_VEC_TV_MODE_PAL_N] = { -+ .interlaced_mode = &drm_mode_576i, ++ .interlaced_mode = &pal_mode_576i, + .progressive_mode = &drm_mode_288p, + .config0 = VEC_CONFIG0_PAL_N_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, -+ }, ++ }, + [VC4_VEC_TV_MODE_PAL60] = { + /* PAL-M with chroma frequency of regular PAL */ + .interlaced_mode = &drm_mode_480i, @@ -67232,9 +67236,9 @@ index bd5b8eb58b18..255e5c6c48e0 100644 + .config0 = VEC_CONFIG0_PAL_M_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS | VEC_CONFIG1_CUSTOM_FREQ, + .custom_freq = 0x2a098acb, -+ }, ++ }, + [VC4_VEC_TV_MODE_SECAM] = { -+ .interlaced_mode = &drm_mode_576i, ++ .interlaced_mode = &pal_mode_576i, + .progressive_mode = &drm_mode_288p, + .config0 = VEC_CONFIG0_SECAM_STD, + .config1 = VEC_CONFIG1_C_CVBS_CVBS, @@ -67243,41 +67247,41 @@ index bd5b8eb58b18..255e5c6c48e0 100644 }; +static const char * const tv_mode_names[] = { -+ [VC4_VEC_TV_MODE_NTSC] = "NTSC", -+ [VC4_VEC_TV_MODE_NTSC_J] = "NTSC-J", -+ [VC4_VEC_TV_MODE_NTSC_443] = "NTSC-443", -+ [VC4_VEC_TV_MODE_PAL] = "PAL", -+ [VC4_VEC_TV_MODE_PAL_M] = "PAL-M", -+ [VC4_VEC_TV_MODE_PAL_N] = "PAL-N", -+ [VC4_VEC_TV_MODE_PAL60] = "PAL60", -+ [VC4_VEC_TV_MODE_SECAM] = "SECAM", ++ [VC4_VEC_TV_MODE_NTSC] = "NTSC", ++ [VC4_VEC_TV_MODE_NTSC_J] = "NTSC-J", ++ [VC4_VEC_TV_MODE_NTSC_443] = "NTSC-443", ++ [VC4_VEC_TV_MODE_PAL] = "PAL", ++ [VC4_VEC_TV_MODE_PAL_M] = "PAL-M", ++ [VC4_VEC_TV_MODE_PAL_N] = "PAL-N", ++ [VC4_VEC_TV_MODE_PAL60] = "PAL60", ++ [VC4_VEC_TV_MODE_SECAM] = "SECAM", +}; + +enum vc4_vec_tv_mode_id +vc4_vec_get_default_mode(struct drm_connector *connector) +{ -+ int i; -+ -+ if (vc4_vec_tv_norm) { -+ for (i = 0; i < ARRAY_SIZE(tv_mode_names); i++) -+ if (strcmp(vc4_vec_tv_norm, tv_mode_names[i]) == 0) -+ return (enum vc4_vec_tv_mode_id) i; -+ } else if (connector->cmdline_mode.specified && -+ ((connector->cmdline_mode.refresh_specified && -+ (connector->cmdline_mode.refresh == 25 || -+ connector->cmdline_mode.refresh == 50)) || -+ (!connector->cmdline_mode.refresh_specified && -+ (connector->cmdline_mode.yres == 288 || -+ connector->cmdline_mode.yres == 576)))) { -+ /* -+ * no explicitly specified TV norm; use PAL if a mode that -+ * looks like PAL has been specified on the command line -+ */ -+ return VC4_VEC_TV_MODE_PAL; -+ } ++ int i; ++ ++ if (vc4_vec_tv_norm) { ++ for (i = 0; i < ARRAY_SIZE(tv_mode_names); i++) ++ if (strcmp(vc4_vec_tv_norm, tv_mode_names[i])) ++ return (enum vc4_vec_tv_mode_id) i; ++ } else if (connector->cmdline_mode.specified && ++ ((connector->cmdline_mode.refresh_specified && ++ (connector->cmdline_mode.refresh == 25 || ++ connector->cmdline_mode.refresh == 50)) || ++ (!connector->cmdline_mode.refresh_specified && ++ (connector->cmdline_mode.yres == 288 || ++ connector->cmdline_mode.yres == 576)))) { ++ /* ++ * no explicitly specified TV norm; use PAL if a mode ++ * looks like PAL has been specified on the command l ++ */ ++ return VC4_VEC_TV_MODE_PAL; ++ } + -+ /* in all other cases, default to NTSC */ -+ return VC4_VEC_TV_MODE_NTSC; ++ /* in all other cases, default to NTSC */ ++ return VC4_VEC_TV_MODE_NTSC; +} + static enum drm_connector_status @@ -67902,10 +67906,10 @@ index 094fa4aa061d..c0a53a2cbbf1 100644 static const struct drm_connector_helper_funcs vkms_wb_conn_helper_funcs = { diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c -index e58112997c88..415078e9ea39 100644 +index 0e963fd7db17..cc7a05bac6b8 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_kms.c -@@ -522,8 +522,10 @@ int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane, +@@ -523,8 +523,10 @@ int vmw_du_cursor_plane_atomic_check(struct drm_plane *plane, int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, @@ -67917,7 +67921,7 @@ index e58112997c88..415078e9ea39 100644 struct vmw_display_unit *du = vmw_crtc_to_du(new_state->crtc); int connector_mask = drm_connector_mask(&du->connector); bool has_primary = new_state->plane_mask & -@@ -552,13 +554,13 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, +@@ -553,13 +555,13 @@ int vmw_du_crtc_atomic_check(struct drm_crtc *crtc, void vmw_du_crtc_atomic_begin(struct drm_crtc *crtc, @@ -67975,7 +67979,7 @@ index c4017c7a24db..9d1de5b5cc6a 100644 } diff --git a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c -index 4bf0f5ec4fc2..dfa55fb80b07 100644 +index 2b6590344468..3aed0be901b5 100644 --- a/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c +++ b/drivers/gpu/drm/vmwgfx/vmwgfx_scrn.c @@ -279,7 +279,7 @@ static void vmw_sou_crtc_helper_prepare(struct drm_crtc *crtc) @@ -68098,7 +68102,7 @@ index 5259ff2825f9..904f62f3bfc1 100644 struct drm_pending_vblank_event *event = crtc->state->event; diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h -index bb096dfb7b36..09d605f73e10 100644 +index 1d1306a6004e..15ceb2f2b888 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -221,6 +221,9 @@ @@ -68111,7 +68115,7 @@ index bb096dfb7b36..09d605f73e10 100644 #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1273,6 +1276,9 @@ +@@ -1280,6 +1283,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 @@ -68122,7 +68126,7 @@ index bb096dfb7b36..09d605f73e10 100644 #define USB_DEVICE_ID_XIN_MO_DUAL_ARCADE 0x05e1 #define USB_DEVICE_ID_THT_2P_ARCADE 0x75e1 diff --git a/drivers/hid/hid-quirks.c b/drivers/hid/hid-quirks.c -index 2ab71d717bb0..cc9aaea2d9ab 100644 +index 9f1fcbea19eb..3a80a5ed724b 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -41,6 +41,7 @@ static const struct hid_device_id hid_quirks[] = { @@ -68133,7 +68137,7 @@ index 2ab71d717bb0..cc9aaea2d9ab 100644 { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_MULTI_TOUCH), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE), HID_QUIRK_ALWAYS_POLL }, { HID_USB_DEVICE(USB_VENDOR_ID_CHICONY, USB_DEVICE_ID_CHICONY_PIXART_USB_OPTICAL_MOUSE2), HID_QUIRK_ALWAYS_POLL }, -@@ -195,6 +196,7 @@ static const struct hid_device_id hid_quirks[] = { +@@ -197,6 +198,7 @@ static const struct hid_device_id hid_quirks[] = { { HID_USB_DEVICE(USB_VENDOR_ID_WISEGROUP, USB_DEVICE_ID_QUAD_USB_JOYPAD), HID_QUIRK_NOGET | HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_XIN_MO, USB_DEVICE_ID_XIN_MO_DUAL_ARCADE), HID_QUIRK_MULTI_INPUT }, { HID_USB_DEVICE(USB_VENDOR_ID_LOGITECH, USB_DEVICE_ID_LOGITECH_GROUP_AUDIO), HID_QUIRK_NOGET }, @@ -68174,10 +68178,10 @@ index 009a0469d54f..1f0e61d1312d 100644 ret = -ENOMEM; if (usb_endpoint_dir_in(endpoint)) { diff --git a/drivers/hwmon/Kconfig b/drivers/hwmon/Kconfig -index 8bcffda38cb7..f2057f1ad090 100644 +index a0f0bf6493f3..78861407c4ee 100644 --- a/drivers/hwmon/Kconfig +++ b/drivers/hwmon/Kconfig -@@ -1499,6 +1499,17 @@ config SENSORS_RASPBERRYPI_HWMON +@@ -1500,6 +1500,17 @@ config SENSORS_RASPBERRYPI_HWMON This driver can also be built as a module. If so, the module will be called raspberrypi-hwmon. @@ -69484,10 +69488,10 @@ index a4a6825c8758..cfbcf3952ddc 100644 if (ret) return ret; diff --git a/drivers/input/joystick/Kconfig b/drivers/input/joystick/Kconfig -index b080f0cfb068..7457dd54fee9 100644 +index d8ec5193a941..1e4f631a74a7 100644 --- a/drivers/input/joystick/Kconfig +++ b/drivers/input/joystick/Kconfig -@@ -382,4 +382,12 @@ config JOYSTICK_FSIA6B +@@ -383,4 +383,12 @@ config JOYSTICK_FSIA6B To compile this driver as a module, choose M here: the module will be called fsia6b. @@ -70482,10 +70486,10 @@ index 4229b9b5da98..2358ec3431ad 100644 static void tx_tick(struct mbox_chan *chan, int r) diff --git a/drivers/media/common/videobuf2/videobuf2-core.c b/drivers/media/common/videobuf2/videobuf2-core.c -index 72350343a56a..3c6a74b29683 100644 +index 3bafde87a125..c48d5bc8fdf2 100644 --- a/drivers/media/common/videobuf2/videobuf2-core.c +++ b/drivers/media/common/videobuf2/videobuf2-core.c -@@ -2140,12 +2140,12 @@ static int __find_plane_by_offset(struct vb2_queue *q, unsigned long off, +@@ -2191,12 +2191,12 @@ static int __find_plane_by_offset(struct vb2_queue *q, unsigned long off, return -EINVAL; } @@ -70501,7 +70505,7 @@ index 72350343a56a..3c6a74b29683 100644 struct dma_buf *dbuf; if (q->memory != VB2_MEMORY_MMAP) { -@@ -2195,6 +2195,21 @@ int vb2_core_expbuf(struct vb2_queue *q, int *fd, unsigned int type, +@@ -2246,6 +2246,21 @@ int vb2_core_expbuf(struct vb2_queue *q, int *fd, unsigned int type, return -EINVAL; } @@ -86176,7 +86180,7 @@ index 000000000000..f1a7f6a3e966 +MODULE_DESCRIPTION("Device driver for BCM2835's secondary memory interface"); +MODULE_AUTHOR("Luke Wren "); diff --git a/drivers/mmc/core/block.c b/drivers/mmc/core/block.c -index 66a00b7c751f..511dc5f5ee25 100644 +index 6622e3262187..e27fd8e711cc 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -165,6 +165,13 @@ static DEFINE_MUTEX(open_lock); @@ -86193,7 +86197,7 @@ index 66a00b7c751f..511dc5f5ee25 100644 static inline int mmc_blk_part_switch(struct mmc_card *card, unsigned int part_type); static void mmc_blk_rw_rq_prep(struct mmc_queue_req *mqrq, -@@ -2896,6 +2903,7 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2901,6 +2908,7 @@ static int mmc_blk_probe(struct mmc_card *card) { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -86201,7 +86205,7 @@ index 66a00b7c751f..511dc5f5ee25 100644 /* * Check that the card supports the command class(es) we need. -@@ -2903,7 +2911,16 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2908,7 +2916,16 @@ static int mmc_blk_probe(struct mmc_card *card) if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -86219,7 +86223,7 @@ index 66a00b7c751f..511dc5f5ee25 100644 card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -2918,9 +2935,14 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2923,9 +2940,14 @@ static int mmc_blk_probe(struct mmc_card *card) string_get_size((u64)get_capacity(md->disk), 512, STRING_UNITS_2, cap_str, sizeof(cap_str)); @@ -86237,10 +86241,10 @@ index 66a00b7c751f..511dc5f5ee25 100644 if (mmc_blk_alloc_parts(card, md)) goto out; diff --git a/drivers/mmc/core/core.c b/drivers/mmc/core/core.c -index eb82f6aac951..6870e8bbd2ec 100644 +index 8f2465394253..f13832ad1003 100644 --- a/drivers/mmc/core/core.c +++ b/drivers/mmc/core/core.c -@@ -1874,7 +1874,8 @@ EXPORT_SYMBOL(mmc_erase); +@@ -1885,7 +1885,8 @@ EXPORT_SYMBOL(mmc_erase); int mmc_can_erase(struct mmc_card *card) { @@ -86251,26 +86255,26 @@ index eb82f6aac951..6870e8bbd2ec 100644 return 0; } diff --git a/drivers/mmc/core/quirks.h b/drivers/mmc/core/quirks.h -index d68e6e513a4f..e41bc00ece42 100644 +index c8c0f50a2076..ab0f24e6526c 100644 --- a/drivers/mmc/core/quirks.h +++ b/drivers/mmc/core/quirks.h -@@ -99,6 +99,14 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { - MMC_FIXUP("V10016", CID_MANFID_KINGSTON, CID_OEMID_ANY, add_quirk_mmc, - MMC_QUIRK_TRIM_BROKEN), +@@ -105,6 +105,14 @@ static const struct mmc_fixup __maybe_unused mmc_blk_fixups[] = { + MMC_FIXUP(CID_NAME_ANY, CID_MANFID_SANDISK_SD, 0x5344, add_quirk_sd, + MMC_QUIRK_BROKEN_SD_DISCARD), -+ /* -+ * On some Kingston SD cards, multiple erases of less than 64 -+ * sectors can cause corruption. -+ */ -+ MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), -+ MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), -+ MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), -+ ++ /* ++ * On some Kingston SD cards, multiple erases of less than 64 ++ * sectors can cause corruption. ++ */ ++ MMC_FIXUP("SD16G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), ++ MMC_FIXUP("SD32G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), ++ MMC_FIXUP("SD64G", 0x41, 0x3432, add_quirk, MMC_QUIRK_ERASE_BROKEN), ++ END_FIXUP }; diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index 30ff42fd173e..c077890df8ab 100644 +index 82e1fbd6b2ff..66b2a205910c 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -5,6 +5,45 @@ @@ -90141,7 +90145,7 @@ index b9eb2ec61a83..404870e6b759 100644 .reset = sdhci_reset, .set_uhs_signaling = sdhci_set_uhs_signaling, diff --git a/drivers/mmc/host/sdhci.c b/drivers/mmc/host/sdhci.c -index d42e86cdff12..0533339d7979 100644 +index 133f0d376480..3b6b396219db 100644 --- a/drivers/mmc/host/sdhci.c +++ b/drivers/mmc/host/sdhci.c @@ -41,7 +41,7 @@ @@ -90153,7 +90157,7 @@ index d42e86cdff12..0533339d7979 100644 #define MAX_TUNING_LOOP 40 -@@ -3145,7 +3145,7 @@ static void sdhci_timeout_timer(struct timer_list *t) +@@ -3190,7 +3190,7 @@ static void sdhci_timeout_timer(struct timer_list *t) spin_lock_irqsave(&host->lock, flags); if (host->cmd && !sdhci_data_line_cmd(host->cmd)) { @@ -90162,7 +90166,7 @@ index d42e86cdff12..0533339d7979 100644 mmc_hostname(host->mmc)); sdhci_dumpregs(host); -@@ -3167,7 +3167,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t) +@@ -3212,7 +3212,7 @@ static void sdhci_timeout_data_timer(struct timer_list *t) if (host->data || host->data_cmd || (host->cmd && sdhci_data_line_cmd(host->cmd))) { @@ -90633,7 +90637,7 @@ index 6f7b70522d92..54b3eb586b7e 100644 buf = kmalloc(maxp, GFP_KERNEL); if (buf) { diff --git a/drivers/net/usb/r8152.c b/drivers/net/usb/r8152.c -index eaff8f83b5ac..706325f52f62 100644 +index 84f44d00d4d9..b481ee3382fe 100644 --- a/drivers/net/usb/r8152.c +++ b/drivers/net/usb/r8152.c @@ -26,9 +26,10 @@ @@ -95974,7 +95978,7 @@ index 000000000000..2c3fabd38b16 +MODULE_DESCRIPTION("Realtek USB ECM device"); +MODULE_LICENSE("GPL"); diff --git a/drivers/net/usb/smsc95xx.c b/drivers/net/usb/smsc95xx.c -index 65d42f5d42a3..bd5ab236ca13 100644 +index e1cd4c2de2d3..0fba826e255c 100644 --- a/drivers/net/usb/smsc95xx.c +++ b/drivers/net/usb/smsc95xx.c @@ -50,6 +50,7 @@ @@ -95985,7 +95989,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 struct smsc95xx_priv { u32 mac_cr; -@@ -67,6 +68,18 @@ static bool turbo_mode = true; +@@ -68,6 +69,18 @@ static bool turbo_mode = true; module_param(turbo_mode, bool, 0644); MODULE_PARM_DESC(turbo_mode, "Enable multiple frames per Rx transaction"); @@ -96004,7 +96008,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 static int __must_check __smsc95xx_read_reg(struct usbnet *dev, u32 index, u32 *data, int in_pm) { -@@ -763,6 +776,53 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) +@@ -766,6 +779,53 @@ static int smsc95xx_ioctl(struct net_device *netdev, struct ifreq *rq, int cmd) return phy_mii_ioctl(netdev->phydev, rq, cmd); } @@ -96058,7 +96062,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 static void smsc95xx_init_mac_address(struct usbnet *dev) { /* maybe the boot loader passed the MAC address in devicetree */ -@@ -785,6 +845,10 @@ static void smsc95xx_init_mac_address(struct usbnet *dev) +@@ -788,6 +848,10 @@ static void smsc95xx_init_mac_address(struct usbnet *dev) } } @@ -96069,7 +96073,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 /* no useful static MAC address found. generate a random one */ eth_hw_addr_random(dev->net); netif_dbg(dev, ifup, dev->net, "MAC address set to eth_random_addr\n"); -@@ -911,13 +975,13 @@ static int smsc95xx_reset(struct usbnet *dev) +@@ -914,13 +978,13 @@ static int smsc95xx_reset(struct usbnet *dev) if (!turbo_mode) { burst_cap = 0; @@ -96088,7 +96092,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 } netif_dbg(dev, ifup, dev->net, "rx_urb_size=%ld\n", -@@ -1838,7 +1902,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +@@ -1853,7 +1917,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(skb); skb_trim(skb, skb->len - 4); /* remove fcs */ @@ -96098,7 +96102,7 @@ index 65d42f5d42a3..bd5ab236ca13 100644 return 1; } -@@ -1856,7 +1921,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) +@@ -1871,7 +1936,8 @@ static int smsc95xx_rx_fixup(struct usbnet *dev, struct sk_buff *skb) if (dev->net->features & NETIF_F_RXCSUM) smsc95xx_rx_csum_offload(ax_skb); skb_trim(ax_skb, ax_skb->len - 4); /* remove fcs */ @@ -96138,7 +96142,7 @@ index 3f5da3bb6aa5..ba3c58caac9f 100644 static inline diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c -index 300c63d75df2..923b7559efb6 100644 +index df5970619712..3b9d903c6d16 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/cfg80211.c @@ -9,6 +9,7 @@ @@ -96149,7 +96153,7 @@ index 300c63d75df2..923b7559efb6 100644 #include #include #include -@@ -2940,7 +2941,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2943,7 +2944,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, brcmf_dbg(INFO, "Do not enable power save for P2P clients\n"); pm = PM_OFF; } @@ -96158,7 +96162,7 @@ index 300c63d75df2..923b7559efb6 100644 err = brcmf_fil_cmd_int_set(ifp, BRCMF_C_SET_PM, pm); if (err) { -@@ -2950,6 +2951,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, +@@ -2953,6 +2954,7 @@ brcmf_cfg80211_set_power_mgmt(struct wiphy *wiphy, struct net_device *ndev, bphy_err(drvr, "error (%d)\n", err); } @@ -96166,7 +96170,7 @@ index 300c63d75df2..923b7559efb6 100644 err = brcmf_fil_iovar_int_set(ifp, "pm2_sleep_ret", min_t(u32, timeout, BRCMF_PS_MAX_TIMEOUT_MS)); if (err) -@@ -7361,12 +7363,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -7378,12 +7380,18 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], struct brcmfmac_pd_cc *country_codes; struct brcmfmac_pd_cc_entry *cc; s32 found_index; @@ -96187,7 +96191,7 @@ index 300c63d75df2..923b7559efb6 100644 } if ((alpha2[0] == ccreq->country_abbrev[0]) && -@@ -7390,10 +7398,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], +@@ -7407,10 +7415,14 @@ static s32 brcmf_translate_country_code(struct brcmf_pub *drvr, char alpha2[2], brcmf_dbg(TRACE, "No country code match found\n"); return -EINVAL; } @@ -96205,7 +96209,7 @@ index 300c63d75df2..923b7559efb6 100644 ccreq->country_abbrev[0] = alpha2[0]; ccreq->country_abbrev[1] = alpha2[1]; ccreq->country_abbrev[2] = 0; -@@ -7408,31 +7420,45 @@ static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy, +@@ -7425,31 +7437,45 @@ static void brcmf_cfg80211_reg_notifier(struct wiphy *wiphy, struct brcmf_if *ifp = brcmf_get_ifp(cfg->pub, 0); struct brcmf_pub *drvr = cfg->pub; struct brcmf_fil_country_le ccreq; @@ -96312,7 +96316,7 @@ index 4146faeed344..d7d0f84f3693 100644 __printf(3, 4) void __brcmf_dbg(u32 level, const char *func, const char *fmt, ...); diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c -index a2b8d9171af2..76c5c540a9a5 100644 +index 060889bf6d05..fcd48e11982f 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/firmware.c @@ -10,6 +10,7 @@ @@ -96442,10 +96446,10 @@ index 10bf52253337..5b39a39812d0 100644 +} #endif /* CONFIG_OF */ diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c -index 61febc9bfa14..7491710bdec0 100644 +index 721d587425c7..9e26250077ab 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/pcie.c -@@ -1372,7 +1372,8 @@ static int brcmf_pcie_get_memdump(struct device *dev, void *data, size_t len) +@@ -1376,7 +1376,8 @@ static int brcmf_pcie_get_memdump(struct device *dev, void *data, size_t len) } static @@ -96455,7 +96459,7 @@ index 61febc9bfa14..7491710bdec0 100644 { struct brcmf_bus *bus_if = dev_get_drvdata(dev); struct brcmf_fw_request *fwreq; -@@ -1380,6 +1381,10 @@ int brcmf_pcie_get_fwname(struct device *dev, const char *ext, u8 *fw_name) +@@ -1384,6 +1385,10 @@ int brcmf_pcie_get_fwname(struct device *dev, const char *ext, u8 *fw_name) { ext, fw_name }, }; @@ -96467,7 +96471,7 @@ index 61febc9bfa14..7491710bdec0 100644 brcmf_pcie_fwnames, ARRAY_SIZE(brcmf_pcie_fwnames), diff --git a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c -index 9929e90866f0..5de2f21a3cfe 100644 +index 3c0d5c68eaca..58afbfded68f 100644 --- a/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c +++ b/drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c @@ -35,6 +35,7 @@ @@ -96514,7 +96518,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 #define TXCTL_CREDITS 2 static void pkt_align(struct sk_buff *p, int len, int align) -@@ -4114,17 +4119,27 @@ brcmf_sdio_watchdog(struct timer_list *t) +@@ -4115,17 +4120,27 @@ brcmf_sdio_watchdog(struct timer_list *t) } static @@ -96544,7 +96548,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 fwnames, ARRAY_SIZE(fwnames)); if (!fwreq) return -ENOMEM; -@@ -4180,6 +4195,9 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = { +@@ -4181,6 +4196,9 @@ static const struct brcmf_bus_ops brcmf_sdio_bus_ops = { #define BRCMF_SDIO_FW_CODE 0 #define BRCMF_SDIO_FW_NVRAM 1 @@ -96554,7 +96558,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 static void brcmf_sdio_firmware_callback(struct device *dev, int err, struct brcmf_fw_request *fwreq) { -@@ -4195,6 +4213,22 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, +@@ -4196,6 +4214,22 @@ static void brcmf_sdio_firmware_callback(struct device *dev, int err, brcmf_dbg(TRACE, "Enter: dev=%s, err=%d\n", dev_name(dev), err); @@ -96577,7 +96581,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 if (err) goto fail; -@@ -4402,7 +4436,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) +@@ -4403,7 +4437,7 @@ brcmf_sdio_prepare_fw_request(struct brcmf_sdio *bus) fwreq = brcmf_fw_alloc_request(bus->ci->chip, bus->ci->chiprev, brcmf_sdio_fwnames, @@ -96586,7 +96590,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 fwnames, ARRAY_SIZE(fwnames)); if (!fwreq) return NULL; -@@ -4420,6 +4454,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) +@@ -4421,6 +4455,9 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) struct brcmf_sdio *bus; struct workqueue_struct *wq; struct brcmf_fw_request *fwreq; @@ -96596,7 +96600,7 @@ index 9929e90866f0..5de2f21a3cfe 100644 brcmf_dbg(TRACE, "Enter\n"); -@@ -4502,6 +4539,23 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) +@@ -4503,6 +4540,23 @@ struct brcmf_sdio *brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) brcmf_dbg(INFO, "completed!!\n"); @@ -97087,7 +97091,7 @@ index 000000000000..ac04301dabe1 +} +late_initcall(of_cfs_init); diff --git a/drivers/of/overlay.c b/drivers/of/overlay.c -index c8a0c0e9dec1..7682daa65ba1 100644 +index 67b404f36e79..d2f1393c77a6 100644 --- a/drivers/of/overlay.c +++ b/drivers/of/overlay.c @@ -243,6 +243,8 @@ static struct property *dup_and_fixup_symbol_prop( @@ -98687,7 +98691,7 @@ index c3691fa4210e..ead1fd376d2d 100644 MODULE_LICENSE("GPL"); +MODULE_ALIAS("spi:rtc-pcf2123"); diff --git a/drivers/rtc/rtc-pcf85063.c b/drivers/rtc/rtc-pcf85063.c -index 62684ca3a665..fc293d4d8901 100644 +index 449204d84c61..2b2ff2e7ed28 100644 --- a/drivers/rtc/rtc-pcf85063.c +++ b/drivers/rtc/rtc-pcf85063.c @@ -34,6 +34,7 @@ @@ -98920,10 +98924,10 @@ index bb9d8386ba3b..417b37084551 100644 if (err) { dev_err(&pdev->dev, "could not request IRQ: %d\n", err); diff --git a/drivers/spi/spi.c b/drivers/spi/spi.c -index 6ea7b286c80c..7cc5319bce13 100644 +index 857a1399850c..7667278a0e74 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -3338,6 +3338,7 @@ static int __spi_validate_bits_per_word(struct spi_controller *ctlr, +@@ -3340,6 +3340,7 @@ static int __spi_validate_bits_per_word(struct spi_controller *ctlr, */ int spi_setup(struct spi_device *spi) { @@ -98931,7 +98935,7 @@ index 6ea7b286c80c..7cc5319bce13 100644 unsigned bad_bits, ugly_bits; int status; -@@ -3355,6 +3356,14 @@ int spi_setup(struct spi_device *spi) +@@ -3357,6 +3358,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; @@ -98947,10 +98951,10 @@ index 6ea7b286c80c..7cc5319bce13 100644 * that aren't supported with their current controller * SPI_CS_WORD has a fallback software implementation, diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c -index 859910ec8d9f..a262479f0a92 100644 +index aee960a7d7f9..ffde42bcd3ff 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -402,7 +402,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -413,7 +413,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) else retval = get_user(tmp, (u32 __user *)arg); if (retval == 0) { @@ -98958,7 +98962,7 @@ index 859910ec8d9f..a262479f0a92 100644 u32 save = spi->mode; if (tmp & ~SPI_MODE_MASK) { -@@ -410,10 +409,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -421,10 +420,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) break; } @@ -98969,7 +98973,7 @@ index 859910ec8d9f..a262479f0a92 100644 tmp |= spi->mode & ~SPI_MODE_MASK; spi->mode = (u16)tmp; retval = spi_setup(spi); -@@ -737,7 +732,7 @@ static int spidev_probe(struct spi_device *spi) +@@ -746,7 +741,7 @@ static int spidev_probe(struct spi_device *spi) * compatible string, it is a Linux implementation thing * rather than a description of the hardware. */ @@ -111372,7 +111376,7 @@ index 3d378da119e7..a936102dbc34 100644 device_destroy(vchiq_class, vchiq_devid); cdev_del(&vchiq_cdev); diff --git a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h -index 0784c5002417..f8b1c005af62 100644 +index 77d8fb180173..6fd7aacca0b0 100644 --- a/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h +++ b/drivers/staging/vc04_services/interface/vchiq_arm/vchiq_arm.h @@ -52,6 +52,7 @@ struct vchiq_arm_state { @@ -115452,7 +115456,7 @@ index fd95860cd661..fc36e5963e30 100644 ret = serial8250_register_8250_port(&up); if (ret < 0) { diff --git a/drivers/tty/serial/amba-pl011.c b/drivers/tty/serial/amba-pl011.c -index d80e8064b75e..75aa943f683e 100644 +index c9876040ca44..048805aed90c 100644 --- a/drivers/tty/serial/amba-pl011.c +++ b/drivers/tty/serial/amba-pl011.c @@ -266,6 +266,7 @@ struct uart_amba_port { @@ -115479,7 +115483,7 @@ index d80e8064b75e..75aa943f683e 100644 spin_unlock(&uap->port.lock); dev_vdbg(uap->port.dev, "Took %d chars from DMA buffer and %d chars from the FIFO\n", -@@ -1315,6 +1318,32 @@ static void pl011_start_tx(struct uart_port *port) +@@ -1318,6 +1321,32 @@ static void pl011_start_tx(struct uart_port *port) pl011_start_tx_pio(uap); } @@ -115512,7 +115516,7 @@ index d80e8064b75e..75aa943f683e 100644 static void pl011_stop_rx(struct uart_port *port) { struct uart_amba_port *uap = -@@ -1351,6 +1380,7 @@ __acquires(&uap->port.lock) +@@ -1354,6 +1383,7 @@ __acquires(&uap->port.lock) { pl011_fifo_to_tty(uap); @@ -115520,7 +115524,7 @@ index d80e8064b75e..75aa943f683e 100644 spin_unlock(&uap->port.lock); tty_flip_buffer_push(&uap->port.state->port); /* -@@ -1387,6 +1417,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, +@@ -1390,6 +1420,7 @@ static bool pl011_tx_char(struct uart_amba_port *uap, unsigned char c, return false; /* unable to transmit character */ pl011_write(c, uap, REG_DR); @@ -115528,7 +115532,7 @@ index d80e8064b75e..75aa943f683e 100644 uap->port.icount.tx++; return true; -@@ -1417,6 +1448,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) +@@ -1420,6 +1451,10 @@ static bool pl011_tx_chars(struct uart_amba_port *uap, bool from_irq) if (likely(from_irq) && count-- == 0) break; @@ -115539,7 +115543,7 @@ index d80e8064b75e..75aa943f683e 100644 if (!pl011_tx_char(uap, xmit->buf[xmit->tail], from_irq)) break; -@@ -1544,6 +1579,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) +@@ -1547,6 +1582,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) int handled = 0; spin_lock_irqsave(&uap->port.lock, flags); @@ -115547,7 +115551,7 @@ index d80e8064b75e..75aa943f683e 100644 status = pl011_read(uap, REG_RIS) & uap->im; if (status) { do { -@@ -1563,7 +1599,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) +@@ -1566,7 +1602,7 @@ static irqreturn_t pl011_int(int irq, void *dev_id) UART011_CTSMIS|UART011_RIMIS)) pl011_modem_status(uap); if (status & UART011_TXIS) @@ -115556,7 +115560,7 @@ index d80e8064b75e..75aa943f683e 100644 if (pass_counter-- == 0) break; -@@ -1718,6 +1754,23 @@ static void pl011_put_poll_char(struct uart_port *port, +@@ -1721,6 +1757,23 @@ static void pl011_put_poll_char(struct uart_port *port, #endif /* CONFIG_CONSOLE_POLL */ @@ -115580,7 +115584,7 @@ index d80e8064b75e..75aa943f683e 100644 static int pl011_hwinit(struct uart_port *port) { struct uart_amba_port *uap = -@@ -1734,7 +1787,7 @@ static int pl011_hwinit(struct uart_port *port) +@@ -1737,7 +1790,7 @@ static int pl011_hwinit(struct uart_port *port) if (retval) return retval; @@ -115589,7 +115593,7 @@ index d80e8064b75e..75aa943f683e 100644 /* Clear pending error and receive interrupts */ pl011_write(UART011_OEIS | UART011_BEIS | UART011_PEIS | -@@ -2202,8 +2255,8 @@ static const struct uart_ops amba_pl011_pops = { +@@ -2214,8 +2267,8 @@ static const struct uart_ops amba_pl011_pops = { .stop_tx = pl011_stop_tx, .start_tx = pl011_start_tx, .stop_rx = pl011_stop_rx, @@ -115600,7 +115604,7 @@ index d80e8064b75e..75aa943f683e 100644 .enable_ms = pl011_enable_ms, .break_ctl = pl011_break_ctl, .startup = pl011_startup, -@@ -2380,7 +2433,7 @@ static int pl011_console_setup(struct console *co, char *options) +@@ -2392,7 +2445,7 @@ static int pl011_console_setup(struct console *co, char *options) plat->init(); } @@ -115609,7 +115613,7 @@ index d80e8064b75e..75aa943f683e 100644 if (uap->vendor->fixed_options) { baud = uap->fixed_baud; -@@ -2597,6 +2650,7 @@ static struct uart_driver amba_reg = { +@@ -2609,6 +2662,7 @@ static struct uart_driver amba_reg = { .cons = AMBA_CONSOLE, }; @@ -115617,7 +115621,7 @@ index d80e8064b75e..75aa943f683e 100644 static int pl011_probe_dt_alias(int index, struct device *dev) { struct device_node *np; -@@ -2628,6 +2682,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) +@@ -2640,6 +2694,7 @@ static int pl011_probe_dt_alias(int index, struct device *dev) return ret; } @@ -115625,7 +115629,7 @@ index d80e8064b75e..75aa943f683e 100644 /* unregisters the driver also if no more ports are left */ static void pl011_unregister_port(struct uart_amba_port *uap) -@@ -2666,7 +2721,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, +@@ -2678,7 +2733,12 @@ static int pl011_setup_port(struct device *dev, struct uart_amba_port *uap, if (IS_ERR(base)) return PTR_ERR(base); @@ -115638,7 +115642,7 @@ index d80e8064b75e..75aa943f683e 100644 uap->old_cr = 0; uap->port.dev = dev; -@@ -2728,6 +2788,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) +@@ -2740,6 +2800,11 @@ static int pl011_probe(struct amba_device *dev, const struct amba_id *id) if (IS_ERR(uap->clk)) return PTR_ERR(uap->clk); @@ -115751,10 +115755,10 @@ index ac347f9d5ef0..ea7c074c98aa 100644 * endpoint state is gone from hardware. usb_hcd_flush_endpoint() must * have been called previously. Use for set_configuration, set_interface, diff --git a/drivers/usb/core/hub.c b/drivers/usb/core/hub.c -index f2a3c0b5b535..2cb336e517fe 100644 +index 7af2def631a2..94a3298a139a 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5506,7 +5506,7 @@ static void port_event(struct usb_hub *hub, int port1) +@@ -5508,7 +5508,7 @@ static void port_event(struct usb_hub *hub, int port1) port_dev->over_current_count++; port_over_current_notify(port_dev); @@ -175805,7 +175809,7 @@ index 000000000000..cdc9963176e5 +test_main(); +0; diff --git a/drivers/usb/host/xhci-mem.c b/drivers/usb/host/xhci-mem.c -index 4aab93d5b651..f482c43bc64e 100644 +index a610a7524fef..bffd7e4dca7a 100644 --- a/drivers/usb/host/xhci-mem.c +++ b/drivers/usb/host/xhci-mem.c @@ -98,6 +98,7 @@ static void xhci_free_segments_for_ring(struct xhci_hcd *xhci, @@ -175946,7 +175950,7 @@ index 4aab93d5b651..f482c43bc64e 100644 if (ret) return -ENOMEM; -@@ -1825,7 +1840,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhci, +@@ -1838,7 +1853,7 @@ int xhci_alloc_erst(struct xhci_hcd *xhci, for (val = 0; val < evt_ring->num_segs; val++) { entry = &erst->entries[val]; entry->seg_addr = cpu_to_le64(seg->dma); @@ -175955,7 +175959,7 @@ index 4aab93d5b651..f482c43bc64e 100644 entry->rsvd = 0; seg = seg->next; } -@@ -2533,9 +2548,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) +@@ -2546,9 +2561,11 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) * Event ring setup: Allocate a normal ring, but also setup * the event ring segment table (ERST). Section 4.9.3. */ @@ -175969,7 +175973,7 @@ index 4aab93d5b651..f482c43bc64e 100644 if (!xhci->event_ring) goto fail; if (xhci_check_trb_in_td_math(xhci) < 0) -@@ -2548,7 +2565,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) +@@ -2561,7 +2578,7 @@ int xhci_mem_init(struct xhci_hcd *xhci, gfp_t flags) /* set ERST count with the number of entries in the segment table */ val = readl(&xhci->ir_set->erst_size); val &= ERST_SIZE_MASK; @@ -175979,10 +175983,10 @@ index 4aab93d5b651..f482c43bc64e 100644 "// Write ERST size = %i to ir_set 0 (some bits preserved)", val); diff --git a/drivers/usb/host/xhci-pci.c b/drivers/usb/host/xhci-pci.c -index c4cf3b138131..8667c442475b 100644 +index 67291945de62..6eac092eee89 100644 --- a/drivers/usb/host/xhci-pci.c +++ b/drivers/usb/host/xhci-pci.c -@@ -305,6 +305,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) +@@ -303,6 +303,9 @@ static void xhci_pci_quirks(struct device *dev, struct xhci_hcd *xhci) if (pdev->vendor == PCI_VENDOR_ID_VIA && pdev->device == 0x3483) { xhci->quirks |= XHCI_LPM_SUPPORT; xhci->quirks |= XHCI_EP_CTX_BROKEN_DCS; @@ -175993,7 +175997,7 @@ index c4cf3b138131..8667c442475b 100644 if (pdev->vendor == PCI_VENDOR_ID_ZHAOXIN && diff --git a/drivers/usb/host/xhci-ring.c b/drivers/usb/host/xhci-ring.c -index fa3a7ac15f82..4fa23c9f0f87 100644 +index 935368c6b31d..9f96c7e44113 100644 --- a/drivers/usb/host/xhci-ring.c +++ b/drivers/usb/host/xhci-ring.c @@ -87,15 +87,16 @@ static bool trb_is_link(union xhci_trb *trb) @@ -176056,7 +176060,7 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 state->new_deq_seg = new_seg; state->new_deq_ptr = new_deq; -@@ -2966,7 +2984,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) +@@ -2976,7 +2994,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * that clears the EHB. */ while (xhci_handle_event(xhci) > 0) { @@ -176065,7 +176069,7 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 continue; xhci_update_erst_dequeue(xhci, event_ring_deq); event_ring_deq = xhci->event_ring->dequeue; -@@ -3398,14 +3416,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3408,14 +3426,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, unsigned int num_trbs; unsigned int start_cycle, num_sgs = 0; unsigned int enqd_len, block_len, trb_buff_len, full_len; @@ -176083,7 +176087,7 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 full_len = urb->transfer_buffer_length; /* If we have scatter/gather list, we use it. */ if (urb->num_sgs) { -@@ -3442,6 +3461,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3452,6 +3471,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, start_cycle = ring->cycle_state; send_addr = addr; @@ -176101,7 +176105,7 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 /* Queue the TRBs, even if they are zero-length */ for (enqd_len = 0; first_trb || enqd_len < full_len; enqd_len += trb_buff_len) { -@@ -3454,6 +3484,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3464,6 +3494,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, if (enqd_len + trb_buff_len > full_len) trb_buff_len = full_len - enqd_len; @@ -176113,7 +176117,7 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 /* Don't change the cycle bit of the first TRB until later */ if (first_trb) { first_trb = false; -@@ -4260,9 +4295,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +@@ -4270,9 +4305,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, } ep = &xhci->devs[slot_id]->eps[ep_index]; if ((ep->ep_state & SET_DEQ_PENDING)) { @@ -176127,10 +176131,10 @@ index fa3a7ac15f82..4fa23c9f0f87 100644 /* This function gets called from contexts where it cannot sleep */ diff --git a/drivers/usb/host/xhci.c b/drivers/usb/host/xhci.c -index e390f64d0f04..e167b67c7521 100644 +index 30af35a30728..c666576a9eca 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c -@@ -869,8 +869,8 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) +@@ -877,8 +877,8 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) seg = ring->deq_seg; do { memset(seg->trbs, 0, @@ -176141,7 +176145,7 @@ index e390f64d0f04..e167b67c7521 100644 cpu_to_le32(~TRB_CYCLE); seg = seg->next; } while (seg != ring->deq_seg); -@@ -881,7 +881,7 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) +@@ -889,7 +889,7 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) ring->enq_seg = ring->deq_seg; ring->enqueue = ring->dequeue; @@ -176150,7 +176154,7 @@ index e390f64d0f04..e167b67c7521 100644 /* * Ring is now zeroed, so the HW should look for change of ownership * when the cycle bit is set to 1. -@@ -1484,6 +1484,103 @@ static int xhci_check_maxpacket(struct xhci_hcd *xhci, unsigned int slot_id, +@@ -1493,6 +1493,103 @@ static int xhci_check_maxpacket(struct xhci_hcd *xhci, unsigned int slot_id, return ret; } @@ -176254,7 +176258,7 @@ index e390f64d0f04..e167b67c7521 100644 /* * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it -@@ -5440,6 +5537,7 @@ static const struct hc_driver xhci_hc_driver = { +@@ -5463,6 +5560,7 @@ static const struct hc_driver xhci_hc_driver = { .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, @@ -176263,10 +176267,10 @@ index e390f64d0f04..e167b67c7521 100644 .enable_device = xhci_enable_device, .update_hub_device = xhci_update_hub_device, diff --git a/drivers/usb/host/xhci.h b/drivers/usb/host/xhci.h -index 02772b274224..29fe0326b9d1 100644 +index 7e92740221e1..c9abf489301f 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1618,6 +1618,7 @@ struct xhci_ring { +@@ -1622,6 +1622,7 @@ struct xhci_ring { unsigned int num_trbs_free; unsigned int num_trbs_free_temp; unsigned int bounce_buf_len; @@ -176274,7 +176278,7 @@ index 02772b274224..29fe0326b9d1 100644 enum xhci_ring_type type; bool last_td_was_short; struct radix_tree_root *trb_address_map; -@@ -1656,8 +1657,8 @@ struct urb_priv { +@@ -1660,8 +1661,8 @@ struct urb_priv { * Each segment table entry is 4*32bits long. 1K seems like an ok size: * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table, * meaning 64 ring segments. @@ -176285,16 +176289,16 @@ index 02772b274224..29fe0326b9d1 100644 /* Initial allocated size of the ERST, in number of entries */ #define ERST_SIZE 64 /* Initial number of event segment rings allocated */ -@@ -1890,6 +1891,9 @@ struct xhci_hcd { +@@ -1896,6 +1897,9 @@ struct xhci_hcd { #define XHCI_ZHAOXIN_HOST BIT_ULL(41) #define XHCI_ZHAOXIN_TRB_FETCH BIT_ULL(42) #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(43) -+#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(44) -+#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(45) -+#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(46) ++#define XHCI_AVOID_DQ_ON_LINK BIT_ULL(44) ++#define XHCI_VLI_TRB_CACHE_BUG BIT_ULL(45) ++#define XHCI_VLI_SS_BULK_OUT_BUG BIT_ULL(46) + #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(44) + #define XHCI_RESET_TO_DEFAULT BIT_ULL(45) - unsigned int num_active_eps; - unsigned int limit_active_eps; diff --git a/drivers/video/backlight/Kconfig b/drivers/video/backlight/Kconfig index d83c87b902c1..ed22a119c992 100644 --- a/drivers/video/backlight/Kconfig @@ -176451,7 +176455,7 @@ index 000000000000..14a0d9b03739 +MODULE_DESCRIPTION("Raspberry Pi mailbox based Backlight Driver"); +MODULE_LICENSE("GPL"); diff --git a/drivers/video/fbdev/Kconfig b/drivers/video/fbdev/Kconfig -index 4f02db65dede..d3f87a523f6e 100644 +index 9cb29c86e594..a5d0bf402029 100644 --- a/drivers/video/fbdev/Kconfig +++ b/drivers/video/fbdev/Kconfig @@ -219,6 +219,20 @@ config FB_TILEBLITTING @@ -176475,28 +176479,27 @@ index 4f02db65dede..d3f87a523f6e 100644 config FB_GRVGA tristate "Aeroflex Gaisler framebuffer support" depends on FB && SPARC -@@ -2236,6 +2250,19 @@ config FB_SM712 - called sm712fb. If you want to compile it as a module, say M - here and read . +@@ -2243,6 +2257,18 @@ config FB_LS2K500 + select FB_CFB_IMAGEBLIT + help + Frame buffer driver for the Loongson LS7A Platform-Bridge. ++ ++config FB_RPISENSE ++ tristate "Raspberry Pi Sense HAT framebuffer" ++ depends on FB ++ select MFD_RPISENSE_CORE ++ select FB_SYS_FOPS ++ select FB_SYS_FILLRECT ++ select FB_SYS_COPYAREA ++ select FB_SYS_IMAGEBLIT ++ select FB_DEFERRED_IO ++ help ++ This is the framebuffer driver for the Raspberry Pi Sense HAT -+config FB_RPISENSE -+ tristate "Raspberry Pi Sense HAT framebuffer" -+ depends on FB -+ select MFD_RPISENSE_CORE -+ select FB_SYS_FOPS -+ select FB_SYS_FILLRECT -+ select FB_SYS_COPYAREA -+ select FB_SYS_IMAGEBLIT -+ select FB_DEFERRED_IO -+ -+ help -+ This is the framebuffer driver for the Raspberry Pi Sense HAT -+ source "drivers/video/fbdev/omap/Kconfig" source "drivers/video/fbdev/omap2/Kconfig" - source "drivers/video/fbdev/mmp/Kconfig" diff --git a/drivers/video/fbdev/Makefile b/drivers/video/fbdev/Makefile -index 477b9624b703..5a478be6bcb4 100644 +index a446c174d4e3..ee23e3b86021 100644 --- a/drivers/video/fbdev/Makefile +++ b/drivers/video/fbdev/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_FB_MACMODES) += macmodes.o @@ -181999,7 +182002,7 @@ index 000000000000..3c7079237496 + +#endif /* _VC_MEM_H */ diff --git a/include/linux/clk.h b/include/linux/clk.h -index 7fd6a1febcf4..ab53a0873c8d 100644 +index 1814eabb7c20..b57c97e6dd7b 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -15,6 +15,7 @@ @@ -182010,7 +182013,7 @@ index 7fd6a1febcf4..ab53a0873c8d 100644 struct device_node; struct of_phandle_args; -@@ -743,6 +744,9 @@ int clk_save_context(void); +@@ -828,6 +829,9 @@ int clk_save_context(void); */ void clk_restore_context(void); @@ -182211,18 +182214,17 @@ index 517288da19fd..626c450d71f4 100644 #define PHY_ARDENNES_MMD_DEV_3_PHY_CFG (0x806A) #define PHY_ARDENNES_MMD_DEV_3_PHY_CFG_ZD_DLY_EN_ (0x2000) diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h -index 42df06c6b19c..e7f45a2b0c72 100644 +index ef870d1f4f5f..7fab4d749543 100644 --- a/include/linux/mmc/card.h +++ b/include/linux/mmc/card.h -@@ -271,6 +271,8 @@ struct mmc_card { +@@ -270,6 +270,7 @@ struct mmc_card { + #define MMC_QUIRK_BROKEN_IRQ_POLLING (1<<11) /* Polling SDIO_CCCR_INTx could create a fake interrupt */ #define MMC_QUIRK_TRIM_BROKEN (1<<12) /* Skip trim */ #define MMC_QUIRK_BROKEN_HPI (1<<13) /* Disable broken HPI support */ ++#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */ + #define MMC_QUIRK_BROKEN_SD_DISCARD (1<<14) /* Disable broken SD discard support */ -+#define MMC_QUIRK_ERASE_BROKEN (1<<31) /* Skip erase */ -+ bool reenable_cmdq; /* Re-enable Command Queue */ - - unsigned int erase_size; /* erase size in sectors */ diff --git a/include/linux/platform_data/dma-bcm2708.h b/include/linux/platform_data/dma-bcm2708.h new file mode 100644 index 000000000000..6ca874d332a8 @@ -182373,10 +182375,10 @@ index 000000000000..6ca874d332a8 + +#endif /* _PLAT_BCM2708_DMA_H */ diff --git a/include/linux/usb.h b/include/linux/usb.h -index a093667991bb..f2da7ddacf3f 100644 +index 568be613bdb3..a13026026c65 100644 --- a/include/linux/usb.h +++ b/include/linux/usb.h -@@ -1840,6 +1840,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); +@@ -1843,6 +1843,8 @@ extern int usb_clear_halt(struct usb_device *dev, int pipe); extern int usb_reset_configuration(struct usb_device *dev); extern int usb_set_interface(struct usb_device *dev, int ifnum, int alternate); extern void usb_reset_endpoint(struct usb_device *dev, unsigned int epaddr); @@ -182734,10 +182736,10 @@ index 0939aa45e2fe..64e84441cde1 100644 size_t len); diff --git a/include/uapi/drm/drm_fourcc.h b/include/uapi/drm/drm_fourcc.h -index 5498d7a6556a..3aeab2680295 100644 +index dad9d3b4a97a..70cc045a7fa3 100644 --- a/include/uapi/drm/drm_fourcc.h +++ b/include/uapi/drm/drm_fourcc.h -@@ -287,6 +287,13 @@ extern "C" { +@@ -294,6 +294,13 @@ extern "C" { */ #define DRM_FORMAT_Q401 fourcc_code('Q', '4', '0', '1') @@ -182751,17 +182753,6 @@ index 5498d7a6556a..3aeab2680295 100644 /* * 3 plane YCbCr * index 0: Y plane, [7:0] Y -@@ -777,6 +784,10 @@ drm_fourcc_canonicalize_nvidia_format_mod(__u64 modifier) - * and UV. Some SAND-using hardware stores UV in a separate tiled - * image from Y to reduce the column height, which is not supported - * with these modifiers. -+ * -+ * The DRM_FORMAT_MOD_BROADCOM_SAND128_COL_HEIGHT modifier is also -+ * supported for DRM_FORMAT_P030 where the columns remain as 128 bytes -+ * wide, but as this is a 10 bpp format that translates to 96 pixels. - */ - - #define DRM_FORMAT_MOD_BROADCOM_SAND32_COL_HEIGHT(v) \ diff --git a/include/uapi/drm/drm_mode.h b/include/uapi/drm/drm_mode.h index 863eda048265..8bc13daec0a3 100644 --- a/include/uapi/drm/drm_mode.h @@ -183225,7 +183216,7 @@ index a184c4939438..773e24a1427d 100644 /* Image processing controls */ diff --git a/include/uapi/linux/videodev2.h b/include/uapi/linux/videodev2.h -index 534eaa4d39bc..53d526dbe004 100644 +index b28817c59fdf..5a220bff12c7 100644 --- a/include/uapi/linux/videodev2.h +++ b/include/uapi/linux/videodev2.h @@ -82,6 +82,11 @@ @@ -183270,10 +183261,10 @@ index 534eaa4d39bc..53d526dbe004 100644 /* priv field value to indicates that subsequent fields are valid. */ #define V4L2_PIX_FMT_PRIV_MAGIC 0xfeedcafe diff --git a/kernel/cgroup/cgroup.c b/kernel/cgroup/cgroup.c -index 41dde1800526..6cf13f32f9b1 100644 +index 2bc5bae49d20..3e76b7836313 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c -@@ -5910,6 +5910,9 @@ int __init cgroup_init_early(void) +@@ -5924,6 +5924,9 @@ int __init cgroup_init_early(void) return 0; } @@ -183283,7 +183274,7 @@ index 41dde1800526..6cf13f32f9b1 100644 /** * cgroup_init - cgroup initialization * -@@ -5948,6 +5951,12 @@ int __init cgroup_init(void) +@@ -5962,6 +5965,12 @@ int __init cgroup_init(void) mutex_unlock(&cgroup_mutex); @@ -183296,7 +183287,7 @@ index 41dde1800526..6cf13f32f9b1 100644 for_each_subsys(ss, ssid) { if (ss->early_init) { struct cgroup_subsys_state *css = -@@ -6545,6 +6554,10 @@ static int __init cgroup_disable(char *str) +@@ -6558,6 +6567,10 @@ static int __init cgroup_disable(char *str) strcmp(token, ss->legacy_name)) continue; @@ -183307,7 +183298,7 @@ index 41dde1800526..6cf13f32f9b1 100644 static_branch_disable(cgroup_subsys_enabled_key[i]); pr_info("Disabling %s control group subsystem\n", ss->name); -@@ -6554,6 +6567,31 @@ static int __init cgroup_disable(char *str) +@@ -6567,6 +6580,31 @@ static int __init cgroup_disable(char *str) } __setup("cgroup_disable=", cgroup_disable); @@ -183357,10 +183348,10 @@ index 817545ff80b9..375a43d99b28 100644 for (;;) { tmp = *p; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 12da70f39e0c..d28541e15f33 100644 +index 9e85e8b52299..913d86aecd30 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -9155,8 +9155,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, +@@ -9163,8 +9163,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, /* Make sure the range is really isolated. */ if (test_pages_isolated(outer_start, end, 0)) { @@ -198633,7 +198624,7 @@ index 000000000000..36b5b6c26655 +MODULE_AUTHOR("Florian Meier "); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/pcm512x.c b/sound/soc/codecs/pcm512x.c -index 8153d3d01654..7a5b716c8add 100644 +index 3677e9029f91..5ba6308c2048 100644 --- a/sound/soc/codecs/pcm512x.c +++ b/sound/soc/codecs/pcm512x.c @@ -534,7 +534,7 @@ static unsigned long pcm512x_ncp_target(struct pcm512x_priv *pcm512x, @@ -199231,7 +199222,7 @@ index 000000000000..8f019e048987 + +#endif /* _TAS5713_H */ diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c -index a6d6d10cd471..54dfa830633b 100644 +index e9da95ebccc8..c17bb2eeda10 100644 --- a/sound/soc/soc-core.c +++ b/sound/soc/soc-core.c @@ -1016,7 +1016,7 @@ int snd_soc_add_pcm_runtime(struct snd_soc_card *card, @@ -199270,7 +199261,7 @@ index a6d6d10cd471..54dfa830633b 100644 dev_warn(codec_dai->dev, "ASoC: Failed to set DAI format: %d\n", ret); diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h -index 1ac91c46da3c..6dd5aac4c319 100644 +index ec74aead0844..af53f79634de 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -46,6 +46,15 @@ @@ -199290,7 +199281,7 @@ index 1ac91c46da3c..6dd5aac4c319 100644 /* Creative BT-D1 */ USB_DEVICE(0x041e, 0x0005), diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c -index 41f5d8242478..6edc611e8819 100644 +index 752422147fb3..977c3b33d640 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -531,6 +531,11 @@ static int setup_disable_autosuspend(struct snd_usb_audio *chip, @@ -199305,7 +199296,7 @@ index 41f5d8242478..6edc611e8819 100644 usb_disable_autosuspend(interface_to_usbdev(iface)); return 1; /* Continue with creating streams and mixer */ } -@@ -1530,6 +1535,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) +@@ -1531,6 +1536,7 @@ bool snd_usb_get_sample_rate_quirk(struct snd_usb_audio *chip) case USB_ID(0x2912, 0x30c8): /* Audioengine D1 */ case USB_ID(0x413c, 0xa506): /* Dell AE515 sound bar */ case USB_ID(0x046d, 0x084c): /* Logitech ConferenceCam Connect */ @@ -199314,5 +199305,5 @@ index 41f5d8242478..6edc611e8819 100644 } -- -2.33.0 +2.27.0 diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec index 4ae9511bf5aa55334688848fde72bf82a9b480dd..ef7a4e550f564f25be3220b5d0fbea0ad7972c8c 100644 --- a/raspberrypi-kernel.spec +++ b/raspberrypi-kernel.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 146.0.0 +%global hulkrelease 161.0.0 %global debug_package %{nil} Name: raspberrypi-kernel Version: 5.10.0 -Release: %{hulkrelease}.14 +Release: %{hulkrelease}.15 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -166,6 +166,9 @@ install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ /lib/modules/%{KernelVer} %changelog +* Tue Oct 24 2023 Junyu Mu - 5.10.0-161.0.0.15 +- update kernel version to openEuler 5.10.0-161.0.0 + * Wed Apr 19 2023 Yafen Fang - 5.10.0-146.0.0.14 - update kernel version to openEuler 5.10.0-146.0.0 @@ -2761,7 +2764,7 @@ install -m 644 /boot/dtb-%{KernelVer}/overlays/README /boot/overlays/ - crypto: hisilicon - enable zip device clock gating - crypto: hisilicon/sec - fix the process of disabling sva prefetching -* Web Sep 15 2021 Zheng Zengkai - 5.10.0-6.0.0.0 +* Wed Sep 15 2021 Zheng Zengkai - 5.10.0-6.0.0.0 - mm/page_alloc: correct return value of populated elements if bulk array is populated - mm: fix oom killing for disabled pid - X86/config: Enable CONFIG_USERSWAP