diff --git a/0000-raspberrypi-kernel.patch b/0000-raspberrypi-kernel.patch index 8bbb294..4c8e9ab 100644 --- a/0000-raspberrypi-kernel.patch +++ b/0000-raspberrypi-kernel.patch @@ -1,7 +1,7 @@ -From 206dcf42462c5ad8d8c38955848f9320d419b89c Mon Sep 17 00:00:00 2001 +From 231d4ba348b135a32c34856cdaf75df2d28cc8b8 Mon Sep 17 00:00:00 2001 From: Yafen -Date: Thu, 30 May 2024 00:36:36 +0800 -Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-201.0.0) +Date: Wed, 6 Nov 2024 14:10:34 +0800 +Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-235.0.0) --- .../admin-guide/media/bcm2835-isp.rst | 127 + @@ -611,14 +611,14 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-201.0.0) drivers/mmc/host/bcm2835-sdhost.c | 2208 +++++ drivers/mmc/host/sdhci-iproc.c | 1 + drivers/mmc/host/sdhci.c | 6 +- - .../net/ethernet/broadcom/genet/bcmgenet.c | 31 +- + .../net/ethernet/broadcom/genet/bcmgenet.c | 15 +- .../net/ethernet/broadcom/genet/bcmgenet.h | 2 +- drivers/net/ethernet/broadcom/genet/bcmmii.c | 2 + drivers/net/phy/broadcom.c | 37 +- drivers/net/phy/microchip.c | 27 + drivers/net/phy/smsc.c | 12 +- drivers/net/usb/Makefile | 2 +- - drivers/net/usb/lan78xx.c | 65 +- + drivers/net/usb/lan78xx.c | 66 +- drivers/net/usb/r8152.c | 3929 +++++++-- drivers/net/usb/r8153_ecm.c | 162 + drivers/net/usb/smsc95xx.c | 80 +- @@ -900,7 +900,7 @@ Subject: [PATCH] apply RPi patch of 5.10.0(openEuler 5.10.0-201.0.0) sound/soc/soc-core.c | 14 +- sound/usb/quirks-table.h | 9 + sound/usb/quirks.c | 6 + - 896 files changed, 175469 insertions(+), 4723 deletions(-) + 896 files changed, 175457 insertions(+), 4720 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 @@ -4155,7 +4155,7 @@ index 4a05a105a9e6..ba3a5b599362 100644 pixfmt-nv16m pixfmt-nv24 diff --git a/MAINTAINERS b/MAINTAINERS -index 83b9596bbe7c..683dbfea3a4d 100644 +index e15f6cc90b64..abc0d515402b 100644 --- a/MAINTAINERS +++ b/MAINTAINERS @@ -3427,6 +3427,29 @@ N: bcm113* @@ -4203,7 +4203,7 @@ index 83b9596bbe7c..683dbfea3a4d 100644 DRM DRIVER FOR GRAIN MEDIA GM12U320 PROJECTORS M: Hans de Goede S: Maintained -@@ -16470,6 +16501,23 @@ S: Maintained +@@ -16477,6 +16508,23 @@ S: Maintained T: git git://linuxtv.org/media_tree.git F: drivers/media/i2c/imx355.c @@ -45979,7 +45979,7 @@ index fb507d569922..cc52829d426a 100644 asmlinkage void aesbs_ecb_encrypt(u8 out[], u8 const in[], u8 const rk[], diff --git a/arch/arm64/kernel/armv8_deprecated.c b/arch/arm64/kernel/armv8_deprecated.c -index 637e57a4868e..c217a8cf8310 100644 +index cc736c5309fd..9dd6962db742 100644 --- a/arch/arm64/kernel/armv8_deprecated.c +++ b/arch/arm64/kernel/armv8_deprecated.c @@ -57,6 +57,57 @@ struct insn_emulation { @@ -46091,10 +46091,10 @@ index 9d8b2f75cc25..b5298196cfb3 100644 } diff --git a/drivers/bluetooth/btusb.c b/drivers/bluetooth/btusb.c -index a1a8b282b99b..802b12e53809 100644 +index b2836e8efefd..76db7152b6d1 100644 --- a/drivers/bluetooth/btusb.c +++ b/drivers/bluetooth/btusb.c -@@ -470,6 +470,14 @@ static const struct usb_device_id blacklist_table[] = { +@@ -472,6 +472,14 @@ static const struct usb_device_id blacklist_table[] = { { USB_DEVICE(0x0bda, 0xb009), .driver_info = BTUSB_REALTEK }, { USB_DEVICE(0x2ff8, 0xb011), .driver_info = BTUSB_REALTEK }, @@ -49019,10 +49019,10 @@ index 000000000000..9e2634465823 +MODULE_LICENSE("GPL v2"); +MODULE_ALIAS("platform:clk-hifiberry-dacpro"); diff --git a/drivers/clk/clk.c b/drivers/clk/clk.c -index 62572d59e7e3..958ec7e9af00 100644 +index b3ae0c828e6e..0b08cb91069e 100644 --- a/drivers/clk/clk.c +++ b/drivers/clk/clk.c -@@ -77,12 +77,14 @@ struct clk_core { +@@ -82,12 +82,14 @@ struct clk_core { unsigned int protect_count; unsigned long min_rate; unsigned long max_rate; @@ -49037,7 +49037,7 @@ index 62572d59e7e3..958ec7e9af00 100644 unsigned int notifier_count; #ifdef CONFIG_DEBUG_FS struct dentry *dentry; -@@ -105,6 +107,12 @@ struct clk { +@@ -110,6 +112,12 @@ struct clk { struct hlist_node clks_node; }; @@ -49050,7 +49050,7 @@ index 62572d59e7e3..958ec7e9af00 100644 /*** runtime pm ***/ static int clk_pm_runtime_get(struct clk_core *core) { -@@ -1336,6 +1344,8 @@ static int clk_core_determine_round_nolock(struct clk_core *core, +@@ -1448,6 +1456,8 @@ static int clk_core_determine_round_nolock(struct clk_core *core, if (!core) return 0; @@ -49059,7 +49059,7 @@ index 62572d59e7e3..958ec7e9af00 100644 /* * At this point, core protection will be disabled if * - if the provider is not protected at all -@@ -1441,10 +1451,14 @@ unsigned long clk_hw_round_rate(struct clk_hw *hw, unsigned long rate) +@@ -1553,10 +1563,14 @@ unsigned long clk_hw_round_rate(struct clk_hw *hw, unsigned long rate) { int ret; struct clk_rate_request req; @@ -49074,7 +49074,7 @@ index 62572d59e7e3..958ec7e9af00 100644 ret = clk_core_round_rate_nolock(hw->core, &req); if (ret) return 0; -@@ -1465,6 +1479,7 @@ EXPORT_SYMBOL_GPL(clk_hw_round_rate); +@@ -1577,6 +1591,7 @@ EXPORT_SYMBOL_GPL(clk_hw_round_rate); long clk_round_rate(struct clk *clk, unsigned long rate) { struct clk_rate_request req; @@ -49082,7 +49082,7 @@ index 62572d59e7e3..958ec7e9af00 100644 int ret; if (!clk) -@@ -1478,6 +1493,9 @@ long clk_round_rate(struct clk *clk, unsigned long rate) +@@ -1590,6 +1605,9 @@ long clk_round_rate(struct clk *clk, unsigned long rate) clk_core_get_boundaries(clk->core, &req.min_rate, &req.max_rate); req.rate = rate; @@ -49092,7 +49092,7 @@ index 62572d59e7e3..958ec7e9af00 100644 ret = clk_core_round_rate_nolock(clk->core, &req); if (clk->exclusive_count) -@@ -1945,6 +1963,7 @@ static struct clk_core *clk_calc_new_rates(struct clk_core *core, +@@ -2057,6 +2075,7 @@ static struct clk_core *clk_calc_new_rates(struct clk_core *core, unsigned long new_rate; unsigned long min_rate; unsigned long max_rate; @@ -49100,7 +49100,7 @@ index 62572d59e7e3..958ec7e9af00 100644 int p_index = 0; long ret; -@@ -1959,6 +1978,9 @@ static struct clk_core *clk_calc_new_rates(struct clk_core *core, +@@ -2071,6 +2090,9 @@ static struct clk_core *clk_calc_new_rates(struct clk_core *core, clk_core_get_boundaries(core, &min_rate, &max_rate); @@ -49110,7 +49110,7 @@ index 62572d59e7e3..958ec7e9af00 100644 /* find the closest rate and parent clk/rate */ if (clk_core_can_round(core)) { struct clk_rate_request req; -@@ -2163,6 +2185,7 @@ static unsigned long clk_core_req_round_rate_nolock(struct clk_core *core, +@@ -2275,6 +2297,7 @@ static unsigned long clk_core_req_round_rate_nolock(struct clk_core *core, { int ret, cnt; struct clk_rate_request req; @@ -49118,7 +49118,7 @@ index 62572d59e7e3..958ec7e9af00 100644 lockdep_assert_held(&prepare_lock); -@@ -2177,6 +2200,9 @@ static unsigned long clk_core_req_round_rate_nolock(struct clk_core *core, +@@ -2289,6 +2312,9 @@ static unsigned long clk_core_req_round_rate_nolock(struct clk_core *core, clk_core_get_boundaries(core, &req.min_rate, &req.max_rate); req.rate = req_rate; @@ -49128,7 +49128,7 @@ index 62572d59e7e3..958ec7e9af00 100644 ret = clk_core_round_rate_nolock(core, &req); /* restore the protection */ -@@ -2270,6 +2296,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate) +@@ -2382,6 +2408,9 @@ int clk_set_rate(struct clk *clk, unsigned long rate) ret = clk_core_set_rate_nolock(clk->core, rate); @@ -49138,7 +49138,7 @@ index 62572d59e7e3..958ec7e9af00 100644 if (clk->exclusive_count) clk_core_rate_protect(clk->core); -@@ -2435,6 +2464,103 @@ int clk_set_max_rate(struct clk *clk, unsigned long rate) +@@ -2547,6 +2576,103 @@ int clk_set_max_rate(struct clk *clk, unsigned long rate) } EXPORT_SYMBOL_GPL(clk_set_max_rate); @@ -49242,7 +49242,7 @@ index 62572d59e7e3..958ec7e9af00 100644 /** * clk_get_parent - return the parent of a clk * @clk: the clk whose parent gets returned -@@ -3888,6 +4014,7 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) +@@ -4014,6 +4140,7 @@ __clk_register(struct device *dev, struct device_node *np, struct clk_hw *hw) goto fail_parents; INIT_HLIST_HEAD(&core->clks); @@ -52357,10 +52357,10 @@ 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 d10f621085e2..f520399c38d2 100644 +index ae000b513bc1..081e13158b8d 100644 --- a/drivers/gpio/gpiolib.c +++ b/drivers/gpio/gpiolib.c -@@ -51,6 +51,8 @@ +@@ -52,6 +52,8 @@ #define extra_checks 0 #endif @@ -52369,7 +52369,7 @@ index d10f621085e2..f520399c38d2 100644 /* Device and char device-related information */ static DEFINE_IDA(gpio_ida); static dev_t gpio_devt; -@@ -2475,8 +2477,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) +@@ -2485,8 +2487,8 @@ int gpiod_direction_output(struct gpio_desc *desc, int value) value = !!value; /* GPIOs used for enabled IRQs shall not be set as output */ @@ -52380,7 +52380,7 @@ index d10f621085e2..f520399c38d2 100644 gpiod_err(desc, "%s: tried to set a GPIO tied to an IRQ as output\n", __func__); -@@ -3290,8 +3292,8 @@ int gpiochip_lock_as_irq(struct gpio_chip *gc, unsigned int offset) +@@ -3300,8 +3302,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 */ @@ -52414,10 +52414,10 @@ index 495448f93d86..e58a5371852e 100644 obj-$(CONFIG_DRM_PHYTIUM) += phytium/ +obj-y += gud/ 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 3578e3b3536e..b59546d60005 100644 +index 8da1fda96262..ab1a22b8c21e 100644 --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c -@@ -5029,7 +5029,6 @@ static void dm_disable_vblank(struct drm_crtc *crtc) +@@ -5036,7 +5036,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, @@ -52425,7 +52425,7 @@ index 3578e3b3536e..b59546d60005 100644 .set_config = drm_atomic_helper_set_config, .page_flip = drm_atomic_helper_page_flip, .atomic_duplicate_state = dm_crtc_duplicate_state, -@@ -5513,25 +5512,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, +@@ -5524,25 +5523,6 @@ static int fill_hdr_info_packet(const struct drm_connector_state *state, return 0; } @@ -52451,7 +52451,7 @@ index 3578e3b3536e..b59546d60005 100644 static int amdgpu_dm_connector_atomic_check(struct drm_connector *conn, struct drm_atomic_state *state) -@@ -5547,7 +5527,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, +@@ -5558,7 +5538,7 @@ amdgpu_dm_connector_atomic_check(struct drm_connector *conn, if (!crtc) return 0; @@ -52460,7 +52460,7 @@ index 3578e3b3536e..b59546d60005 100644 struct dc_info_packet hdr_infopacket; ret = fill_hdr_info_packet(new_con_state, &hdr_infopacket); -@@ -5642,17 +5622,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, +@@ -5653,17 +5633,19 @@ static void dm_update_crtc_active_planes(struct drm_crtc *crtc, } static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, @@ -52484,7 +52484,7 @@ index 3578e3b3536e..b59546d60005 100644 WARN_ON(1); return ret; } -@@ -5663,8 +5645,8 @@ static int dm_crtc_helper_atomic_check(struct drm_crtc *crtc, +@@ -5674,8 +5656,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. */ @@ -52495,7 +52495,7 @@ index 3578e3b3536e..b59546d60005 100644 return -EINVAL; /* In some use cases, like reset, no stream is attached */ -@@ -6566,9 +6548,7 @@ void amdgpu_dm_connector_init_helper(struct amdgpu_display_manager *dm, +@@ -6578,9 +6560,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) { @@ -52506,7 +52506,7 @@ index 3578e3b3536e..b59546d60005 100644 if (!aconnector->mst_port) drm_connector_attach_vrr_capable_property(&aconnector->base); -@@ -7830,7 +7810,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) +@@ -7846,7 +7826,7 @@ static void amdgpu_dm_atomic_commit_tail(struct drm_atomic_state *state) dm_old_crtc_state->abm_level; hdr_changed = @@ -53521,7 +53521,7 @@ index 39eb39e78d7a..e74d823f203a 100644 /** * drm_hdmi_avi_infoframe_quant_range() - fill the HDMI AVI infoframe diff --git a/drivers/gpu/drm/drm_framebuffer.c b/drivers/gpu/drm/drm_framebuffer.c -index 2f5b0c2bb0fe..89ced6af9c5c 100644 +index e490ef42441f..250570146420 100644 --- a/drivers/gpu/drm/drm_framebuffer.c +++ b/drivers/gpu/drm/drm_framebuffer.c @@ -217,12 +217,16 @@ static int framebuffer_check(struct drm_device *dev, @@ -53548,7 +53548,7 @@ index 2f5b0c2bb0fe..89ced6af9c5c 100644 if (r->modifier[i] && !(r->flags & DRM_MODE_FB_MODIFIERS)) { diff --git a/drivers/gpu/drm/drm_panel.c b/drivers/gpu/drm/drm_panel.c -index f634371c717a..bee5066e9227 100644 +index 7fd3de89ed07..ad55f179cfb2 100644 --- a/drivers/gpu/drm/drm_panel.c +++ b/drivers/gpu/drm/drm_panel.c @@ -61,6 +61,9 @@ void drm_panel_init(struct drm_panel *panel, struct device *dev, @@ -53561,7 +53561,7 @@ index f634371c717a..bee5066e9227 100644 } EXPORT_SYMBOL(drm_panel_init); -@@ -289,16 +292,18 @@ int of_drm_get_panel_orientation(const struct device_node *np, +@@ -294,16 +297,18 @@ int of_drm_get_panel_orientation(const struct device_node *np, if (ret < 0) return ret; @@ -56736,7 +56736,7 @@ index 4c64e2d4f650..356174a88c79 100644 DPU_ERROR("crtc%d failed performance check %d\n", crtc->base.id, rc); diff --git a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c -index a0253297bc76..34e3186e236d 100644 +index bf54b9e4fd61..3cfcd1bdc6ca 100644 --- a/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c +++ b/drivers/gpu/drm/msm/disp/mdp4/mdp4_crtc.c @@ -264,7 +264,7 @@ static void mdp4_crtc_mode_set_nofb(struct drm_crtc *crtc) @@ -56748,7 +56748,7 @@ index a0253297bc76..34e3186e236d 100644 { struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); struct mdp4_kms *mdp4_kms = get_kms(crtc); -@@ -284,7 +284,7 @@ static void mdp4_crtc_atomic_disable(struct drm_crtc *crtc, +@@ -293,7 +293,7 @@ static void mdp4_crtc_atomic_disable(struct drm_crtc *crtc, } static void mdp4_crtc_atomic_enable(struct drm_crtc *crtc, @@ -56757,7 +56757,7 @@ index a0253297bc76..34e3186e236d 100644 { struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); struct mdp4_kms *mdp4_kms = get_kms(crtc); -@@ -307,7 +307,7 @@ static void mdp4_crtc_atomic_enable(struct drm_crtc *crtc, +@@ -316,7 +316,7 @@ static void mdp4_crtc_atomic_enable(struct drm_crtc *crtc, } static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, @@ -56766,7 +56766,7 @@ index a0253297bc76..34e3186e236d 100644 { struct mdp4_crtc *mdp4_crtc = to_mdp4_crtc(crtc); DBG("%s: check", mdp4_crtc->name); -@@ -316,14 +316,14 @@ static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, +@@ -325,14 +325,14 @@ static int mdp4_crtc_atomic_check(struct drm_crtc *crtc, } static void mdp4_crtc_atomic_begin(struct drm_crtc *crtc, @@ -57073,7 +57073,7 @@ index 328a4a74f534..84101e27cfb7 100644 .atomic_destroy_state = drm_atomic_helper_crtc_destroy_state, .atomic_set_property = omap_crtc_atomic_set_property, diff --git a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c -index 534dd7414d42..6e03d9b0be60 100644 +index 917cb322bab1..f4615a805cac 100644 --- a/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c +++ b/drivers/gpu/drm/panel/panel-ilitek-ili9881c.c @@ -1,6 +1,8 @@ @@ -57492,7 +57492,7 @@ index 4b92c6341490..3f0c11fa60a5 100644 } diff --git a/drivers/gpu/drm/panel/panel-simple.c b/drivers/gpu/drm/panel/panel-simple.c -index ee01b61a6baf..d4b32feea1a6 100644 +index 51470020ba61..4259711a1baa 100644 --- a/drivers/gpu/drm/panel/panel-simple.c +++ b/drivers/gpu/drm/panel/panel-simple.c @@ -112,8 +112,6 @@ struct panel_simple { @@ -57648,7 +57648,7 @@ index ee01b61a6baf..d4b32feea1a6 100644 static const struct display_timing rocktech_rk070er9427_timing = { .pixelclock = { 26400000, 33300000, 46800000 }, .hactive = { 800, 800, 800 }, -@@ -4066,6 +4141,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4068,6 +4143,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "friendlyarm,hd702e", .data = &friendlyarm_hd702e, @@ -57658,7 +57658,7 @@ index ee01b61a6baf..d4b32feea1a6 100644 }, { .compatible = "giantplus,gpg482739qs5", .data = &giantplus_gpg482739qs5 -@@ -4084,6 +4162,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4086,6 +4164,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "innolux,at043tn24", .data = &innolux_at043tn24, @@ -57668,7 +57668,7 @@ index ee01b61a6baf..d4b32feea1a6 100644 }, { .compatible = "innolux,at070tn92", .data = &innolux_at070tn92, -@@ -4213,6 +4294,9 @@ static const struct of_device_id platform_of_match[] = { +@@ -4215,6 +4296,9 @@ static const struct of_device_id platform_of_match[] = { }, { .compatible = "qiaodian,qd43003c0-40", .data = &qd43003c0_40, @@ -57679,10 +57679,10 @@ index ee01b61a6baf..d4b32feea1a6 100644 .compatible = "rocktech,rk070er9427", .data = &rocktech_rk070er9427, diff --git a/drivers/gpu/drm/qxl/qxl_display.c b/drivers/gpu/drm/qxl/qxl_display.c -index f22a1b776f4b..5c9e28fdb6ad 100644 +index 3ffa721d777b..f8f7bc783909 100644 --- a/drivers/gpu/drm/qxl/qxl_display.c +++ b/drivers/gpu/drm/qxl/qxl_display.c -@@ -373,7 +373,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc, +@@ -376,7 +376,7 @@ static void qxl_crtc_update_monitors_config(struct drm_crtc *crtc, } static void qxl_crtc_atomic_flush(struct drm_crtc *crtc, @@ -57691,7 +57691,7 @@ index f22a1b776f4b..5c9e28fdb6ad 100644 { qxl_crtc_update_monitors_config(crtc, "flush"); } -@@ -445,13 +445,13 @@ static const struct drm_framebuffer_funcs qxl_fb_funcs = { +@@ -448,13 +448,13 @@ static const struct drm_framebuffer_funcs qxl_fb_funcs = { }; static void qxl_crtc_atomic_enable(struct drm_crtc *crtc, @@ -57887,10 +57887,10 @@ index 6f37c104c46f..409795786f03 100644 struct drm_device *drm_dev = crtc->dev; struct sti_mixer *mixer = to_sti_mixer(crtc); diff --git a/drivers/gpu/drm/stm/ltdc.c b/drivers/gpu/drm/stm/ltdc.c -index 089c00a8e7d4..ef05b58eeac3 100644 +index 3a4e51857a6c..8e118aabf330 100644 --- a/drivers/gpu/drm/stm/ltdc.c +++ b/drivers/gpu/drm/stm/ltdc.c -@@ -420,7 +420,7 @@ static void ltdc_crtc_update_clut(struct drm_crtc *crtc) +@@ -421,7 +421,7 @@ static void ltdc_crtc_update_clut(struct drm_crtc *crtc) } static void ltdc_crtc_atomic_enable(struct drm_crtc *crtc, @@ -57899,7 +57899,7 @@ index 089c00a8e7d4..ef05b58eeac3 100644 { struct ltdc_device *ldev = crtc_to_ltdc(crtc); struct drm_device *ddev = crtc->dev; -@@ -442,7 +442,7 @@ static void ltdc_crtc_atomic_enable(struct drm_crtc *crtc, +@@ -443,7 +443,7 @@ static void ltdc_crtc_atomic_enable(struct drm_crtc *crtc, } static void ltdc_crtc_atomic_disable(struct drm_crtc *crtc, @@ -57908,7 +57908,7 @@ index 089c00a8e7d4..ef05b58eeac3 100644 { struct ltdc_device *ldev = crtc_to_ltdc(crtc); struct drm_device *ddev = crtc->dev; -@@ -629,7 +629,7 @@ static void ltdc_crtc_mode_set_nofb(struct drm_crtc *crtc) +@@ -630,7 +630,7 @@ static void ltdc_crtc_mode_set_nofb(struct drm_crtc *crtc) } static void ltdc_crtc_atomic_flush(struct drm_crtc *crtc, @@ -57917,7 +57917,7 @@ index 089c00a8e7d4..ef05b58eeac3 100644 { struct ltdc_device *ldev = crtc_to_ltdc(crtc); struct drm_device *ddev = crtc->dev; -@@ -746,7 +746,6 @@ static const struct drm_crtc_funcs ltdc_crtc_funcs = { +@@ -747,7 +747,6 @@ static const struct drm_crtc_funcs ltdc_crtc_funcs = { .enable_vblank = ltdc_crtc_enable_vblank, .disable_vblank = ltdc_crtc_disable_vblank, .get_vblank_timestamp = drm_crtc_vblank_helper_get_vblank_timestamp, @@ -58060,7 +58060,7 @@ index 958d12da902d..75cfcd0a89fd 100644 value = tegra_dc_readl(dc, DC_CMD_STATE_CONTROL); } diff --git a/drivers/gpu/drm/tidss/tidss_crtc.c b/drivers/gpu/drm/tidss/tidss_crtc.c -index 3c5744a91d4a..2218da3b3ca3 100644 +index 26fd2761e80d..812be02c16ef 100644 --- a/drivers/gpu/drm/tidss/tidss_crtc.c +++ b/drivers/gpu/drm/tidss/tidss_crtc.c @@ -85,8 +85,10 @@ void tidss_crtc_error_irq(struct drm_crtc *crtc, u64 irqstatus) @@ -61749,7 +61749,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 7e8620838de9..3957fc0391fa 100644 +index 0bd49538cb6d..4f2eb6106ef0 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -35,25 +35,39 @@ @@ -62013,7 +62013,7 @@ index 7e8620838de9..3957fc0391fa 100644 edid = drm_get_edid(connector, vc4_hdmi->ddc); cec_s_phys_addr_from_edid(vc4_hdmi->cec_adap, edid); - if (!edid) -- return -ENODEV; +- return 0; + if (!edid) { + ret = -ENODEV; + goto out; @@ -64119,7 +64119,7 @@ index 7e8620838de9..3957fc0391fa 100644 dev_warn(dev, "'dmas' DT property is missing or empty, no HDMI audio\n"); return 0; -@@ -1271,12 +2358,13 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) +@@ -1273,12 +2360,13 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) return ret; } @@ -64139,7 +64139,7 @@ index 7e8620838de9..3957fc0391fa 100644 } dai_link->cpus = &vc4_hdmi->audio.cpu; -@@ -1289,9 +2377,9 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) +@@ -1291,9 +2379,9 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) dai_link->name = "MAI"; dai_link->stream_name = "MAI PCM"; @@ -64151,7 +64151,7 @@ index 7e8620838de9..3957fc0391fa 100644 dai_link->platforms->name = dev_name(dev); card->dai_link = dai_link; -@@ -1311,22 +2399,83 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) +@@ -1313,22 +2401,83 @@ static int vc4_hdmi_audio_init(struct vc4_hdmi *vc4_hdmi) snd_soc_card_set_drvdata(card, vc4_hdmi); ret = devm_snd_soc_register_card(dev, card); if (ret) @@ -64242,7 +64242,7 @@ index 7e8620838de9..3957fc0391fa 100644 cec_transmit_done(vc4_hdmi->cec_adap, CEC_TX_STATUS_OK, 0, 0, 0, 0); } else { -@@ -1340,12 +2489,27 @@ static irqreturn_t vc4_cec_irq_handler_thread(int irq, void *priv) +@@ -1342,12 +2491,27 @@ static irqreturn_t vc4_cec_irq_handler_thread(int irq, void *priv) return IRQ_HANDLED; } @@ -64270,7 +64270,7 @@ index 7e8620838de9..3957fc0391fa 100644 msg->len = 1 + ((cntrl1 & VC4_HDMI_CEC_REC_WRD_CNT_MASK) >> VC4_HDMI_CEC_REC_WRD_CNT_SHIFT); -@@ -1364,83 +2528,208 @@ static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1) +@@ -1366,83 +2530,208 @@ static void vc4_cec_read_msg(struct vc4_hdmi *vc4_hdmi, u32 cntrl1) } } @@ -64520,7 +64520,7 @@ index 7e8620838de9..3957fc0391fa 100644 return 0; } -@@ -1449,14 +2738,28 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, +@@ -1451,14 +2740,28 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, { struct vc4_hdmi *vc4_hdmi = cec_get_drvdata(adap); struct drm_device *dev = vc4_hdmi->connector.dev; @@ -64549,7 +64549,7 @@ index 7e8620838de9..3957fc0391fa 100644 for (i = 0; i < msg->len; i += 4) HDMI_WRITE(HDMI_CEC_TX_DATA_1 + (i >> 2), (msg->msg[i]) | -@@ -1472,6 +2775,9 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, +@@ -1474,6 +2777,9 @@ static int vc4_hdmi_cec_adap_transmit(struct cec_adapter *adap, u8 attempts, val |= VC4_HDMI_CEC_START_XMIT_BEGIN; HDMI_WRITE(HDMI_CEC_CNTRL_1, val); @@ -64559,7 +64559,7 @@ index 7e8620838de9..3957fc0391fa 100644 return 0; } -@@ -1485,11 +2791,14 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1487,11 +2793,14 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) { struct cec_connector_info conn_info; struct platform_device *pdev = vc4_hdmi->pdev; @@ -64576,7 +64576,7 @@ index 7e8620838de9..3957fc0391fa 100644 vc4_hdmi->cec_adap = cec_allocate_adapter(&vc4_hdmi_cec_adap_ops, vc4_hdmi, -@@ -1503,28 +2812,49 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1505,28 +2814,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); @@ -64642,7 +64642,7 @@ index 7e8620838de9..3957fc0391fa 100644 err_delete_cec_adap: cec_delete_adapter(vc4_hdmi->cec_adap); -@@ -1533,8 +2863,40 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1535,8 +2865,40 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) { @@ -64683,7 +64683,7 @@ index 7e8620838de9..3957fc0391fa 100644 #else static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) { -@@ -1543,6 +2905,10 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) +@@ -1545,6 +2907,10 @@ static int vc4_hdmi_cec_init(struct vc4_hdmi *vc4_hdmi) static void vc4_hdmi_cec_exit(struct vc4_hdmi *vc4_hdmi) {}; @@ -64694,7 +64694,7 @@ index 7e8620838de9..3957fc0391fa 100644 #endif static int vc4_hdmi_build_regset(struct vc4_hdmi *vc4_hdmi, -@@ -1617,6 +2983,7 @@ static int vc4_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1619,6 +2985,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; @@ -64702,7 +64702,7 @@ index 7e8620838de9..3957fc0391fa 100644 return 0; } -@@ -1626,6 +2993,7 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1628,6 +2995,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; @@ -64710,7 +64710,7 @@ index 7e8620838de9..3957fc0391fa 100644 res = platform_get_resource_byname(pdev, IORESOURCE_MEM, "hdmi"); if (!res) -@@ -1710,12 +3078,50 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) +@@ -1712,12 +3080,50 @@ static int vc5_hdmi_init_resources(struct vc4_hdmi *vc4_hdmi) return PTR_ERR(vc4_hdmi->audio_clock); } @@ -64761,7 +64761,7 @@ index 7e8620838de9..3957fc0391fa 100644 return 0; } -@@ -1738,6 +3144,15 @@ static int vc4_hdmi_runtime_resume(struct device *dev) +@@ -1740,6 +3146,15 @@ static int vc4_hdmi_runtime_resume(struct device *dev) if (ret) return ret; @@ -64777,7 +64777,7 @@ index 7e8620838de9..3957fc0391fa 100644 return 0; } #endif -@@ -1756,6 +3171,9 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1758,6 +3173,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; @@ -64787,7 +64787,7 @@ index 7e8620838de9..3957fc0391fa 100644 dev_set_drvdata(dev, vc4_hdmi); encoder = &vc4_hdmi->encoder.base.base; -@@ -1768,6 +3186,15 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1770,6 +3188,15 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi->pdev = pdev; vc4_hdmi->variant = variant; @@ -64803,7 +64803,7 @@ index 7e8620838de9..3957fc0391fa 100644 ret = variant->init_resources(vc4_hdmi); if (ret) return ret; -@@ -1805,6 +3232,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1807,6 +3234,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"); @@ -64818,7 +64818,7 @@ index 7e8620838de9..3957fc0391fa 100644 /* * If we boot without any cable connected to the HDMI connector, * the firmware will skip the HSM initialization and leave it -@@ -1813,13 +3248,29 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1815,13 +3250,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. @@ -64851,7 +64851,7 @@ index 7e8620838de9..3957fc0391fa 100644 if ((of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi0") || of_device_is_compatible(dev->of_node, "brcm,bcm2711-hdmi1")) && -@@ -1829,8 +3280,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1831,8 +3282,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) clk_prepare_enable(vc4_hdmi->pixel_bvb_clock); } @@ -64860,7 +64860,7 @@ index 7e8620838de9..3957fc0391fa 100644 drm_simple_encoder_init(drm, encoder, DRM_MODE_ENCODER_TMDS); drm_encoder_helper_add(encoder, &vc4_hdmi_encoder_helper_funcs); -@@ -1838,10 +3287,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1840,10 +3289,14 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) if (ret) goto err_destroy_encoder; @@ -64876,7 +64876,7 @@ index 7e8620838de9..3957fc0391fa 100644 ret = vc4_hdmi_audio_init(vc4_hdmi); if (ret) goto err_free_cec; -@@ -1850,14 +3303,19 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) +@@ -1852,14 +3305,19 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data) vc4_hdmi_debugfs_regs, vc4_hdmi); @@ -64896,7 +64896,7 @@ index 7e8620838de9..3957fc0391fa 100644 pm_runtime_disable(dev); err_put_ddc: put_device(&vc4_hdmi->ddc->dev); -@@ -1895,6 +3353,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master, +@@ -1897,6 +3355,7 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master, kfree(vc4_hdmi->hd_regset.regs); vc4_hdmi_cec_exit(vc4_hdmi); @@ -64904,7 +64904,7 @@ index 7e8620838de9..3957fc0391fa 100644 vc4_hdmi_connector_destroy(&vc4_hdmi->connector); drm_encoder_cleanup(&vc4_hdmi->encoder.base.base); -@@ -1924,7 +3383,6 @@ static const struct vc4_hdmi_variant bcm2835_variant = { +@@ -1926,7 +3385,6 @@ static const struct vc4_hdmi_variant bcm2835_variant = { .debugfs_name = "hdmi_regs", .card_name = "vc4-hdmi", .max_pixel_clock = 162000000, @@ -64912,7 +64912,7 @@ index 7e8620838de9..3957fc0391fa 100644 .registers = vc4_hdmi_fields, .num_registers = ARRAY_SIZE(vc4_hdmi_fields), -@@ -1936,14 +3394,16 @@ static const struct vc4_hdmi_variant bcm2835_variant = { +@@ -1938,14 +3396,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, @@ -64930,7 +64930,7 @@ index 7e8620838de9..3957fc0391fa 100644 .registers = vc5_hdmi_hdmi0_fields, .num_registers = ARRAY_SIZE(vc5_hdmi_hdmi0_fields), .phy_lane_mapping = { -@@ -1953,6 +3413,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { +@@ -1955,6 +3415,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { PHY_LANE_CK, }, .unsupported_odd_h_timings = true, @@ -64938,7 +64938,7 @@ index 7e8620838de9..3957fc0391fa 100644 .init_resources = vc5_hdmi_init_resources, .csc_setup = vc5_hdmi_csc_setup, -@@ -1962,7 +3423,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi0_variant = { +@@ -1964,7 +3425,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, @@ -64949,7 +64949,7 @@ index 7e8620838de9..3957fc0391fa 100644 }; static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { -@@ -1979,6 +3443,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { +@@ -1981,6 +3445,7 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { PHY_LANE_2, }, .unsupported_odd_h_timings = true, @@ -64957,7 +64957,7 @@ index 7e8620838de9..3957fc0391fa 100644 .init_resources = vc5_hdmi_init_resources, .csc_setup = vc5_hdmi_csc_setup, -@@ -1988,7 +3453,10 @@ static const struct vc4_hdmi_variant bcm2711_hdmi1_variant = { +@@ -1990,7 +3455,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, @@ -66282,7 +66282,7 @@ index f4aa75efd16b..18abc06335c1 100644 static int vc4_perfmon_idr_del(int id, void *elem, void *data) diff --git a/drivers/gpu/drm/vc4/vc4_plane.c b/drivers/gpu/drm/vc4/vc4_plane.c -index 2e03c16c60bb..07c1bf57cc39 100644 +index 3915c78c57b9..875e0dd900b6 100644 --- a/drivers/gpu/drm/vc4/vc4_plane.c +++ b/drivers/gpu/drm/vc4/vc4_plane.c @@ -33,6 +33,7 @@ static const struct hvs_format { @@ -66653,7 +66653,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 plane->state->alpha = state->alpha; plane->state->pixel_blend_mode = state->pixel_blend_mode; plane->state->rotation = state->rotation; -@@ -1281,11 +1445,6 @@ static const struct drm_plane_helper_funcs vc4_plane_helper_funcs = { +@@ -1278,11 +1442,6 @@ static const struct drm_plane_helper_funcs vc4_plane_helper_funcs = { .atomic_async_update = vc4_plane_atomic_async_update, }; @@ -66665,7 +66665,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 static bool vc4_format_mod_supported(struct drm_plane *plane, uint32_t format, uint64_t modifier) -@@ -1318,6 +1477,13 @@ static bool vc4_format_mod_supported(struct drm_plane *plane, +@@ -1315,6 +1474,13 @@ static bool vc4_format_mod_supported(struct drm_plane *plane, default: return false; } @@ -66679,7 +66679,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 case DRM_FORMAT_RGBX1010102: case DRM_FORMAT_BGRX1010102: case DRM_FORMAT_RGBA1010102: -@@ -1336,7 +1502,7 @@ static bool vc4_format_mod_supported(struct drm_plane *plane, +@@ -1333,7 +1499,7 @@ static bool vc4_format_mod_supported(struct drm_plane *plane, static const struct drm_plane_funcs vc4_plane_funcs = { .update_plane = drm_atomic_helper_update_plane, .disable_plane = drm_atomic_helper_disable_plane, @@ -66688,7 +66688,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 .set_property = NULL, .reset = vc4_plane_reset, .atomic_duplicate_state = vc4_plane_duplicate_state, -@@ -1350,8 +1516,11 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, +@@ -1347,8 +1513,11 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, struct drm_plane *plane = NULL; struct vc4_plane *vc4_plane; u32 formats[ARRAY_SIZE(hvs_formats)]; @@ -66700,7 +66700,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 static const uint64_t modifiers[] = { DRM_FORMAT_MOD_BROADCOM_VC4_T_TILED, DRM_FORMAT_MOD_BROADCOM_SAND128, -@@ -1366,13 +1535,17 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, +@@ -1363,13 +1532,17 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, if (!vc4_plane) return ERR_PTR(-ENOMEM); @@ -66721,7 +66721,7 @@ index 2e03c16c60bb..07c1bf57cc39 100644 modifiers, type, NULL); if (ret) return ERR_PTR(ret); -@@ -1380,12 +1553,25 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, +@@ -1377,12 +1550,25 @@ struct drm_plane *vc4_plane_init(struct drm_device *dev, drm_plane_helper_add(plane, &vc4_plane_helper_funcs); drm_plane_create_alpha_property(plane); @@ -68073,10 +68073,10 @@ 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 6273ab615af8..66bbcb34e3a3 100644 +index 0732fe6c7a85..f89a94efdce7 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h -@@ -221,6 +221,9 @@ +@@ -222,6 +222,9 @@ #define USB_VENDOR_ID_BAANTO 0x2453 #define USB_DEVICE_ID_BAANTO_MT_190W2 0x0100 @@ -68086,7 +68086,7 @@ index 6273ab615af8..66bbcb34e3a3 100644 #define USB_VENDOR_ID_BELKIN 0x050d #define USB_DEVICE_ID_FLIP_KVM 0x3201 -@@ -1286,6 +1289,9 @@ +@@ -1287,6 +1290,9 @@ #define USB_VENDOR_ID_XAT 0x2505 #define USB_DEVICE_ID_XAT_CSR 0x0220 @@ -68097,7 +68097,7 @@ index 6273ab615af8..66bbcb34e3a3 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 1b3a83fa7616..ba48be0785bc 100644 +index 67953cdae31c..961d908894e7 100644 --- a/drivers/hid/hid-quirks.c +++ b/drivers/hid/hid-quirks.c @@ -42,6 +42,7 @@ static const struct hid_device_id hid_quirks[] = { @@ -80665,7 +80665,7 @@ index 000000000000..ff1b99e26a20 +MODULE_DESCRIPTION("OmniVision ov9281 sensor driver"); +MODULE_LICENSE("GPL v2"); diff --git a/drivers/media/i2c/tc358743.c b/drivers/media/i2c/tc358743.c -index f21da11caf22..ce64c25c1511 100644 +index 8bcb4b354c89..f3ac5cc9ccef 100644 --- a/drivers/media/i2c/tc358743.c +++ b/drivers/media/i2c/tc358743.c @@ -110,7 +110,7 @@ static inline struct tc358743_state *to_state(struct v4l2_subdev *sd) @@ -84935,7 +84935,7 @@ index fbf0dcb313c8..bf3aa9252458 100644 EXPORT_SYMBOL_GPL(v4l2_subdev_link_validate_default); diff --git a/drivers/mfd/Kconfig b/drivers/mfd/Kconfig -index 15680c3c9279..947c2ab6fff3 100644 +index b4a59e131f08..65f9ad1e4085 100644 --- a/drivers/mfd/Kconfig +++ b/drivers/mfd/Kconfig @@ -11,6 +11,14 @@ config MFD_CORE @@ -85159,7 +85159,7 @@ index 000000000000..6cfd63e5e8b8 +MODULE_LICENSE("GPL"); + diff --git a/drivers/misc/Kconfig b/drivers/misc/Kconfig -index 890790145977..f938fe5fc971 100644 +index 0633049a2797..ed15970b82ee 100644 --- a/drivers/misc/Kconfig +++ b/drivers/misc/Kconfig @@ -9,6 +9,14 @@ config SENSORS_LIS3LV02D @@ -85178,7 +85178,7 @@ index 890790145977..f938fe5fc971 100644 tristate "Analog Devices Digital Potentiometers" depends on (I2C || SPI) && SYSFS diff --git a/drivers/misc/Makefile b/drivers/misc/Makefile -index 64fb645bdc91..c52637c0d5c9 100644 +index 1f9e143d107f..65d7799028f0 100644 --- a/drivers/misc/Makefile +++ b/drivers/misc/Makefile @@ -11,6 +11,7 @@ obj-$(CONFIG_AD525X_DPOT_SPI) += ad525x_dpot-spi.o @@ -86151,7 +86151,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 41d98d7198be..3a4f4ef7c984 100644 +index 71ecdb13477a..e7f0718f6991 100644 --- a/drivers/mmc/core/block.c +++ b/drivers/mmc/core/block.c @@ -165,6 +165,13 @@ static DEFINE_MUTEX(open_lock); @@ -86168,7 +86168,7 @@ index 41d98d7198be..3a4f4ef7c984 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, -@@ -2909,6 +2916,7 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2953,6 +2960,7 @@ static int mmc_blk_probe(struct mmc_card *card) { struct mmc_blk_data *md, *part_md; char cap_str[10]; @@ -86176,7 +86176,7 @@ index 41d98d7198be..3a4f4ef7c984 100644 /* * Check that the card supports the command class(es) we need. -@@ -2916,7 +2924,16 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2960,7 +2968,16 @@ static int mmc_blk_probe(struct mmc_card *card) if (!(card->csd.cmdclass & CCC_BLOCK_READ)) return -ENODEV; @@ -86194,7 +86194,7 @@ index 41d98d7198be..3a4f4ef7c984 100644 card->complete_wq = alloc_workqueue("mmc_complete", WQ_MEM_RECLAIM | WQ_HIGHPRI, 0); -@@ -2931,9 +2948,14 @@ static int mmc_blk_probe(struct mmc_card *card) +@@ -2975,9 +2992,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)); @@ -86245,7 +86245,7 @@ index afe8d8c5fa8a..a5b4ac9f4c91 100644 }; diff --git a/drivers/mmc/host/Kconfig b/drivers/mmc/host/Kconfig -index a5b2bf0e40cc..60bbe3eeffe4 100644 +index 8fe4a0fd6ef1..cc0af17b59a1 100644 --- a/drivers/mmc/host/Kconfig +++ b/drivers/mmc/host/Kconfig @@ -5,6 +5,45 @@ @@ -90147,7 +90147,7 @@ index bad01cc6823f..236bc90c5329 100644 sdhci_dumpregs(host); diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.c b/drivers/net/ethernet/broadcom/genet/bcmgenet.c -index 667eb628aa23..2c9ea8c4317b 100644 +index c37c30f00303..401c176a3b61 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.c +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.c @@ -67,6 +67,9 @@ @@ -90160,7 +90160,7 @@ index 667eb628aa23..2c9ea8c4317b 100644 static inline void bcmgenet_writel(u32 value, void __iomem *offset) { -@@ -2447,6 +2450,11 @@ static void reset_umac(struct bcmgenet_priv *priv) +@@ -2450,6 +2453,11 @@ static void reset_umac(struct bcmgenet_priv *priv) bcmgenet_rbuf_ctrl_set(priv, 0); udelay(10); @@ -90170,9 +90170,9 @@ index 667eb628aa23..2c9ea8c4317b 100644 + } + /* issue soft reset and disable MAC while updating its registers */ + spin_lock_bh(&priv->reg_lock); bcmgenet_umac_writel(priv, CMD_SW_RESET, UMAC_CMD); - udelay(2); -@@ -2616,7 +2624,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_priv *priv, +@@ -2621,7 +2629,7 @@ static void bcmgenet_init_tx_ring(struct bcmgenet_priv *priv, bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_PROD_INDEX); bcmgenet_tdma_ring_writel(priv, index, 0, TDMA_CONS_INDEX); @@ -90181,42 +90181,7 @@ index 667eb628aa23..2c9ea8c4317b 100644 /* Disable rate control for now */ bcmgenet_tdma_ring_writel(priv, index, flow_period_val, TDMA_FLOW_PERIOD); -@@ -3257,7 +3265,7 @@ static void bcmgenet_get_hw_addr(struct bcmgenet_priv *priv, - } - - /* Returns a reusable dma control register value */ --static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv) -+static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv, bool flush_rx) - { - unsigned int i; - u32 reg; -@@ -3282,6 +3290,14 @@ static u32 bcmgenet_dma_disable(struct bcmgenet_priv *priv) - udelay(10); - bcmgenet_umac_writel(priv, 0, UMAC_TX_FLUSH); - -+ if (flush_rx) { -+ reg = bcmgenet_rbuf_ctrl_get(priv); -+ bcmgenet_rbuf_ctrl_set(priv, reg | BIT(0)); -+ udelay(10); -+ bcmgenet_rbuf_ctrl_set(priv, reg); -+ udelay(10); -+ } -+ - return dma_ctrl; - } - -@@ -3345,8 +3361,8 @@ static int bcmgenet_open(struct net_device *dev) - - bcmgenet_set_hw_addr(priv, dev->dev_addr); - -- /* Disable RX/TX DMA and flush TX queues */ -- dma_ctrl = bcmgenet_dma_disable(priv); -+ /* Disable RX/TX DMA and flush TX and RX queues */ -+ dma_ctrl = bcmgenet_dma_disable(priv, true); - - /* Reinitialize TDMA and RDMA and SW housekeeping */ - ret = bcmgenet_init_dma(priv); -@@ -4086,9 +4102,12 @@ static int bcmgenet_probe(struct platform_device *pdev) +@@ -4105,9 +4113,12 @@ static int bcmgenet_probe(struct platform_device *pdev) netif_set_real_num_rx_queues(priv->dev, priv->hw_params->rx_queues + 1); /* Set default coalescing parameters */ @@ -90230,17 +90195,8 @@ index 667eb628aa23..2c9ea8c4317b 100644 /* libphy will determine the link state */ netif_carrier_off(dev); -@@ -4204,7 +4223,7 @@ static int bcmgenet_resume(struct device *d) - bcmgenet_hfb_create_rxnfc_filter(priv, rule); - - /* Disable RX/TX DMA and flush TX queues */ -- dma_ctrl = bcmgenet_dma_disable(priv); -+ dma_ctrl = bcmgenet_dma_disable(priv, false); - - /* Reinitialize TDMA and RDMA and SW housekeeping */ - ret = bcmgenet_init_dma(priv); diff --git a/drivers/net/ethernet/broadcom/genet/bcmgenet.h b/drivers/net/ethernet/broadcom/genet/bcmgenet.h -index f6ca01da141d..45ea07829b8c 100644 +index 82f9fdf59103..3ed77d385c80 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmgenet.h +++ b/drivers/net/ethernet/broadcom/genet/bcmgenet.h @@ -29,7 +29,7 @@ @@ -90253,10 +90209,10 @@ index f6ca01da141d..45ea07829b8c 100644 /* misc. configuration */ #define MAX_NUM_OF_FS_RULES 16 diff --git a/drivers/net/ethernet/broadcom/genet/bcmmii.c b/drivers/net/ethernet/broadcom/genet/bcmmii.c -index 2b0538f2af63..29f898bb5d02 100644 +index 1e07f57ff3ed..dd596bee33a0 100644 --- a/drivers/net/ethernet/broadcom/genet/bcmmii.c +++ b/drivers/net/ethernet/broadcom/genet/bcmmii.c -@@ -286,6 +286,8 @@ int bcmgenet_mii_probe(struct net_device *dev) +@@ -296,6 +296,8 @@ int bcmgenet_mii_probe(struct net_device *dev) /* Communicate the integrated PHY revision */ if (priv->internal_phy) phy_flags = priv->gphy_rev; @@ -90469,10 +90425,10 @@ index 99fd12be2111..99381e6bea78 100644 obj-$(CONFIG_USB_NET_DM9601) += dm9601.o obj-$(CONFIG_USB_NET_SR9700) += sr9700.o diff --git a/drivers/net/usb/lan78xx.c b/drivers/net/usb/lan78xx.c -index 667984efeb3b..607703748279 100644 +index 96d3d0bd248b..64c9105a92b3 100644 --- a/drivers/net/usb/lan78xx.c +++ b/drivers/net/usb/lan78xx.c -@@ -427,6 +427,20 @@ static int msg_level = -1; +@@ -434,6 +434,20 @@ static int msg_level = -1; module_param(msg_level, int, 0); MODULE_PARM_DESC(msg_level, "Override default message level"); @@ -90493,9 +90449,9 @@ index 667984efeb3b..607703748279 100644 static int lan78xx_read_reg(struct lan78xx_net *dev, u32 index, u32 *data) { u32 *buf = kmalloc(sizeof(u32), GFP_KERNEL); -@@ -1165,6 +1179,9 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) +@@ -1194,6 +1208,9 @@ static int lan78xx_link_reset(struct lan78xx_net *dev) if (unlikely(ret < 0)) - return -EIO; + return ret; + /* Acknowledge any pending PHY interrupt, lest it be the last */ + phy_read(phydev, LAN88XX_INT_STS); @@ -90503,7 +90459,7 @@ index 667984efeb3b..607703748279 100644 mutex_lock(&phydev->lock); phy_read_status(phydev); link = phydev->link; -@@ -1664,6 +1681,7 @@ static const struct ethtool_ops lan78xx_ethtool_ops = { +@@ -1708,6 +1725,7 @@ static const struct ethtool_ops lan78xx_ethtool_ops = { .set_link_ksettings = lan78xx_set_link_ksettings, .get_regs_len = lan78xx_get_regs_len, .get_regs = lan78xx_get_regs, @@ -90511,7 +90467,7 @@ index 667984efeb3b..607703748279 100644 }; static void lan78xx_init_mac_address(struct lan78xx_net *dev) -@@ -2136,6 +2154,22 @@ static int lan78xx_phy_init(struct lan78xx_net *dev) +@@ -2180,6 +2198,22 @@ static int lan78xx_phy_init(struct lan78xx_net *dev) mii_adv_to_linkmode_adv_t(fc, mii_adv); linkmode_or(phydev->advertising, fc, phydev->advertising); @@ -90534,9 +90490,9 @@ index 667984efeb3b..607703748279 100644 if (phydev->mdio.dev.of_node) { u32 reg; int len; -@@ -2427,6 +2461,11 @@ static int lan78xx_reset(struct lan78xx_net *dev) - int ret = 0; - unsigned long timeout; +@@ -2628,6 +2662,11 @@ static int lan78xx_reset(struct lan78xx_net *dev) + int ret; + u32 buf; u8 sig; + bool has_eeprom; + bool has_otp; @@ -90545,18 +90501,19 @@ index 667984efeb3b..607703748279 100644 + has_otp = !lan78xx_read_otp(dev, 0, 0, NULL); ret = lan78xx_read_reg(dev, HW_CFG, &buf); - buf |= HW_CFG_LRST_; -@@ -2480,6 +2519,9 @@ static int lan78xx_reset(struct lan78xx_net *dev) + if (ret < 0) +@@ -2708,7 +2747,9 @@ static int lan78xx_reset(struct lan78xx_net *dev) + return ret; - ret = lan78xx_read_reg(dev, HW_CFG, &buf); buf |= HW_CFG_MEF_; +- + /* If no valid EEPROM and no valid OTP, enable the LEDs by default */ + if (!has_eeprom && !has_otp) + buf |= HW_CFG_LED0_EN_ | HW_CFG_LED1_EN_; ret = lan78xx_write_reg(dev, HW_CFG, buf); - - ret = lan78xx_read_reg(dev, USB_CFG0, &buf); -@@ -2535,6 +2577,9 @@ static int lan78xx_reset(struct lan78xx_net *dev) + if (ret < 0) + return ret; +@@ -2808,6 +2849,9 @@ static int lan78xx_reset(struct lan78xx_net *dev) buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; } } @@ -90564,9 +90521,9 @@ index 667984efeb3b..607703748279 100644 + if (!has_eeprom && !has_otp) + buf |= MAC_CR_AUTO_DUPLEX_ | MAC_CR_AUTO_SPEED_; ret = lan78xx_write_reg(dev, MAC_CR, buf); - - ret = lan78xx_read_reg(dev, MAC_TX, &buf); -@@ -2864,8 +2909,14 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf) + if (ret < 0) + return ret; +@@ -3169,8 +3213,14 @@ static int lan78xx_bind(struct lan78xx_net *dev, struct usb_interface *intf) if (DEFAULT_RX_CSUM_ENABLE) dev->net->features |= NETIF_F_RXCSUM; @@ -90583,7 +90540,7 @@ index 667984efeb3b..607703748279 100644 if (DEFAULT_VLAN_RX_OFFLOAD) dev->net->features |= NETIF_F_HW_VLAN_CTAG_RX; -@@ -3088,7 +3139,7 @@ static int rx_submit(struct lan78xx_net *dev, struct urb *urb, gfp_t flags) +@@ -3393,7 +3443,7 @@ static int rx_submit(struct lan78xx_net *dev, struct urb *urb, gfp_t flags) size_t size = dev->rx_urb_size; int ret = 0; @@ -90592,7 +90549,7 @@ index 667984efeb3b..607703748279 100644 if (!skb) { usb_free_urb(urb); return -ENOMEM; -@@ -3692,7 +3743,13 @@ static int lan78xx_probe(struct usb_interface *intf, +@@ -3989,7 +4039,13 @@ static int lan78xx_probe(struct usb_interface *intf, netdev->max_mtu = MAX_SINGLE_PACKET_SIZE; netif_set_gso_max_size(netdev, MAX_SINGLE_PACKET_SIZE - MAX_HEADER); @@ -98895,10 +98852,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 857a1399850c..7667278a0e74 100644 +index 49ff49d97745..531313ddb4c0 100644 --- a/drivers/spi/spi.c +++ b/drivers/spi/spi.c -@@ -3340,6 +3340,7 @@ static int __spi_validate_bits_per_word(struct spi_controller *ctlr, +@@ -3350,6 +3350,7 @@ static int __spi_validate_bits_per_word(struct spi_controller *ctlr, */ int spi_setup(struct spi_device *spi) { @@ -98906,7 +98863,7 @@ index 857a1399850c..7667278a0e74 100644 unsigned bad_bits, ugly_bits; int status; -@@ -3357,6 +3358,14 @@ int spi_setup(struct spi_device *spi) +@@ -3367,6 +3368,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; @@ -98922,10 +98879,10 @@ index 857a1399850c..7667278a0e74 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 aee960a7d7f9..ffde42bcd3ff 100644 +index 1c072a6e947e..956be95fe184 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c -@@ -413,7 +413,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -423,7 +423,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) else retval = get_user(tmp, (u32 __user *)arg); if (retval == 0) { @@ -98933,7 +98890,7 @@ index aee960a7d7f9..ffde42bcd3ff 100644 u32 save = spi->mode; if (tmp & ~SPI_MODE_MASK) { -@@ -421,10 +420,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) +@@ -431,10 +430,6 @@ spidev_ioctl(struct file *filp, unsigned int cmd, unsigned long arg) break; } @@ -98944,7 +98901,7 @@ index aee960a7d7f9..ffde42bcd3ff 100644 tmp |= spi->mode & ~SPI_MODE_MASK; spi->mode = (u16)tmp; retval = spi_setup(spi); -@@ -746,7 +741,7 @@ static int spidev_probe(struct spi_device *spi) +@@ -758,7 +753,7 @@ static int spidev_probe(struct spi_device *spi) * compatible string, it is a Linux implementation thing * rather than a description of the hardware. */ @@ -114597,7 +114554,7 @@ index a1e39b1b1701..21087496a481 100644 #endif diff --git a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c -index d697ea55a0da..a6cdc7dc9c30 100644 +index 3306ec5bb291..06f4a64dae57 100644 --- a/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c +++ b/drivers/staging/vc04_services/vchiq-mmal/mmal-vchiq.c @@ -15,21 +15,33 @@ @@ -114988,7 +114945,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -965,9 +1101,9 @@ static int create_component(struct vchiq_mmal_instance *instance, +@@ -966,9 +1102,9 @@ static int create_component(struct vchiq_mmal_instance *instance, component->outputs = rmsg->u.component_create_reply.output_num; component->clocks = rmsg->u.component_create_reply.clock_num; @@ -115001,7 +114958,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 release_msg: vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -1136,10 +1272,9 @@ static int port_action_port(struct vchiq_mmal_instance *instance, +@@ -1137,10 +1273,9 @@ static int port_action_port(struct vchiq_mmal_instance *instance, ret = -rmsg->u.port_action_reply.status; @@ -115015,7 +114972,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 release_msg: vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -1183,11 +1318,11 @@ static int port_action_handle(struct vchiq_mmal_instance *instance, +@@ -1184,11 +1319,11 @@ static int port_action_handle(struct vchiq_mmal_instance *instance, ret = -rmsg->u.port_action_reply.status; @@ -115032,7 +114989,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 release_msg: vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -1226,9 +1361,9 @@ static int port_parameter_set(struct vchiq_mmal_instance *instance, +@@ -1227,9 +1362,9 @@ static int port_parameter_set(struct vchiq_mmal_instance *instance, ret = -rmsg->u.port_parameter_set_reply.status; @@ -115045,7 +115002,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 release_msg: vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -1286,8 +1421,9 @@ static int port_parameter_get(struct vchiq_mmal_instance *instance, +@@ -1287,8 +1422,9 @@ static int port_parameter_get(struct vchiq_mmal_instance *instance, /* Always report the size of the returned parameter to the caller */ *value_size = rmsg->u.port_parameter_get_reply.size; @@ -115057,7 +115014,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 release_msg: vchiq_release_message(instance->service_handle, rmsg_handle); -@@ -1332,6 +1468,7 @@ static int port_disable(struct vchiq_mmal_instance *instance, +@@ -1333,6 +1469,7 @@ static int port_disable(struct vchiq_mmal_instance *instance, mmalbuf->mmal_flags = 0; mmalbuf->dts = MMAL_TIME_UNKNOWN; mmalbuf->pts = MMAL_TIME_UNKNOWN; @@ -115065,7 +115022,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 port->buffer_cb(instance, port, 0, mmalbuf); } -@@ -1363,6 +1500,8 @@ static int port_enable(struct vchiq_mmal_instance *instance, +@@ -1364,6 +1501,8 @@ static int port_enable(struct vchiq_mmal_instance *instance, port->enabled = 1; @@ -115074,7 +115031,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 if (port->buffer_cb) { /* send buffer headers to videocore */ hdr_count = 1; -@@ -1428,6 +1567,9 @@ int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance, +@@ -1429,6 +1568,9 @@ int vchiq_mmal_port_parameter_set(struct vchiq_mmal_instance *instance, mutex_unlock(&instance->vchiq_mutex); @@ -115084,7 +115041,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 return ret; } EXPORT_SYMBOL_GPL(vchiq_mmal_port_parameter_set); -@@ -1540,7 +1682,7 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, +@@ -1541,7 +1683,7 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, if (!dst) { /* do not make new connection */ ret = 0; @@ -115093,7 +115050,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 goto release_unlock; } -@@ -1558,14 +1700,14 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, +@@ -1559,14 +1701,14 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, /* set new format */ ret = port_info_set(instance, dst); if (ret) { @@ -115110,7 +115067,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 goto release_unlock; } -@@ -1574,9 +1716,9 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, +@@ -1575,9 +1717,9 @@ int vchiq_mmal_port_connect_tunnel(struct vchiq_mmal_instance *instance, MMAL_MSG_PORT_ACTION_TYPE_CONNECT, dst->component->handle, dst->handle); if (ret < 0) { @@ -115123,7 +115080,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 goto release_unlock; } src->connected = dst; -@@ -1596,6 +1738,32 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance, +@@ -1597,6 +1739,32 @@ int vchiq_mmal_submit_buffer(struct vchiq_mmal_instance *instance, unsigned long flags = 0; int ret; @@ -115156,7 +115113,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 ret = buffer_from_host(instance, port, buffer); if (ret == -EINVAL) { /* Port is disabled. Queue for when it is enabled. */ -@@ -1629,10 +1797,74 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf) +@@ -1630,10 +1798,74 @@ int mmal_vchi_buffer_cleanup(struct mmal_buffer *buf) release_msg_context(msg_context); buf->msg_context = NULL; @@ -115231,7 +115188,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 /* Initialise a mmal component and its ports * */ -@@ -1682,6 +1914,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, +@@ -1683,6 +1915,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, ret = port_info_get(instance, &component->control); if (ret < 0) goto release_component; @@ -115239,7 +115196,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 for (idx = 0; idx < component->inputs; idx++) { component->input[idx].type = MMAL_PORT_TYPE_INPUT; -@@ -1692,6 +1925,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, +@@ -1693,6 +1926,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, ret = port_info_get(instance, &component->input[idx]); if (ret < 0) goto release_component; @@ -115247,7 +115204,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 } for (idx = 0; idx < component->outputs; idx++) { -@@ -1703,6 +1937,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, +@@ -1704,6 +1938,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, ret = port_info_get(instance, &component->output[idx]); if (ret < 0) goto release_component; @@ -115255,7 +115212,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 } for (idx = 0; idx < component->clocks; idx++) { -@@ -1714,6 +1949,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, +@@ -1715,6 +1950,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, ret = port_info_get(instance, &component->clock[idx]); if (ret < 0) goto release_component; @@ -115263,7 +115220,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 } *component_out = component; -@@ -1724,6 +1960,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, +@@ -1725,6 +1961,7 @@ int vchiq_mmal_component_init(struct vchiq_mmal_instance *instance, release_component: destroy_component(instance, component); @@ -115271,7 +115228,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 unlock: if (component) component->in_use = 0; -@@ -1751,6 +1988,8 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance, +@@ -1752,6 +1989,8 @@ int vchiq_mmal_component_finalise(struct vchiq_mmal_instance *instance, component->in_use = 0; @@ -115280,7 +115237,7 @@ index d697ea55a0da..a6cdc7dc9c30 100644 mutex_unlock(&instance->vchiq_mutex); return ret; -@@ -1775,7 +2014,7 @@ int vchiq_mmal_component_enable(struct vchiq_mmal_instance *instance, +@@ -1776,7 +2015,7 @@ int vchiq_mmal_component_enable(struct vchiq_mmal_instance *instance, ret = enable_component(instance, component); if (ret == 0) @@ -115626,10 +115583,10 @@ index 638255a0ea37..0a9f11fdff0b 100644 uap->vendor = vendor; uap->fifosize = vendor->get_fifosize(dev); diff --git a/drivers/tty/serial/sc16is7xx.c b/drivers/tty/serial/sc16is7xx.c -index b1569a5cfeef..4d3cdce844a0 100644 +index 367692a35398..14ec8ac1d938 100644 --- a/drivers/tty/serial/sc16is7xx.c +++ b/drivers/tty/serial/sc16is7xx.c -@@ -524,8 +524,9 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud) +@@ -525,8 +525,9 @@ static int sc16is7xx_set_baud(struct uart_port *port, int baud) /* Enable enhanced features */ regcache_cache_bypass(s->regmap, true); @@ -115641,7 +115598,7 @@ index b1569a5cfeef..4d3cdce844a0 100644 regcache_cache_bypass(s->regmap, false); /* Put LCR back to the normal mode */ -@@ -709,6 +710,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno) +@@ -714,6 +715,8 @@ static bool sc16is7xx_port_irq(struct sc16is7xx_port *s, int portno) if (rxlen) sc16is7xx_handle_rx(port, rxlen, iir); @@ -115650,7 +115607,7 @@ index b1569a5cfeef..4d3cdce844a0 100644 break; case SC16IS7XX_IIR_THRI_SRC: sc16is7xx_handle_tx(port); -@@ -853,7 +856,7 @@ static unsigned int sc16is7xx_get_mctrl(struct uart_port *port) +@@ -858,7 +861,7 @@ static unsigned int sc16is7xx_get_mctrl(struct uart_port *port) /* DCD and DSR are not wired and CTS/RTS is handled automatically * so just indicate DSR and CAR asserted */ @@ -115659,7 +115616,7 @@ index b1569a5cfeef..4d3cdce844a0 100644 } static void sc16is7xx_set_mctrl(struct uart_port *port, unsigned int mctrl) -@@ -940,14 +943,19 @@ static void sc16is7xx_set_termios(struct uart_port *port, +@@ -945,14 +948,19 @@ static void sc16is7xx_set_termios(struct uart_port *port, regcache_cache_bypass(s->regmap, true); sc16is7xx_port_write(port, SC16IS7XX_XON1_REG, termios->c_cc[VSTART]); sc16is7xx_port_write(port, SC16IS7XX_XOFF1_REG, termios->c_cc[VSTOP]); @@ -115726,10 +115683,10 @@ index 0a77717d6af2..3be1cc9d8045 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 cfcd4f2ffffa..a10a41cdc114 100644 +index 06eef338aebe..1f48ed8516b9 100644 --- a/drivers/usb/core/hub.c +++ b/drivers/usb/core/hub.c -@@ -5662,7 +5662,7 @@ static void port_event(struct usb_hub *hub, int port1) +@@ -5680,7 +5680,7 @@ static void port_event(struct usb_hub *hub, int port1) port_dev->over_current_count++; port_over_current_notify(port_dev); @@ -175968,7 +175925,7 @@ index a556f040af5f..a43e207df9ed 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 96641f6411ec..924ff26fd456 100644 +index 5abd9e69391a..b81e309c37f7 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) @@ -176031,7 +175988,7 @@ index 96641f6411ec..924ff26fd456 100644 state->new_deq_seg = new_seg; state->new_deq_ptr = new_deq; -@@ -2978,7 +2996,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) +@@ -3026,7 +3044,7 @@ irqreturn_t xhci_irq(struct usb_hcd *hcd) * that clears the EHB. */ while (xhci_handle_event(xhci) > 0) { @@ -176040,7 +175997,7 @@ index 96641f6411ec..924ff26fd456 100644 continue; xhci_update_erst_dequeue(xhci, event_ring_deq); event_ring_deq = xhci->event_ring->dequeue; -@@ -3410,14 +3428,15 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3458,14 +3476,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; @@ -176058,7 +176015,7 @@ index 96641f6411ec..924ff26fd456 100644 full_len = urb->transfer_buffer_length; /* If we have scatter/gather list, we use it. */ if (urb->num_sgs) { -@@ -3454,6 +3473,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3502,6 +3521,17 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, start_cycle = ring->cycle_state; send_addr = addr; @@ -176076,7 +176033,7 @@ index 96641f6411ec..924ff26fd456 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) { -@@ -3466,6 +3496,11 @@ int xhci_queue_bulk_tx(struct xhci_hcd *xhci, gfp_t mem_flags, +@@ -3514,6 +3544,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; @@ -176088,7 +176045,7 @@ index 96641f6411ec..924ff26fd456 100644 /* Don't change the cycle bit of the first TRB until later */ if (first_trb) { first_trb = false; -@@ -4272,9 +4307,9 @@ void xhci_queue_new_dequeue_state(struct xhci_hcd *xhci, +@@ -4325,9 +4360,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)) { @@ -176102,7 +176059,7 @@ index 96641f6411ec..924ff26fd456 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 b37ddbb88b74..dd004e1690cc 100644 +index b4e5b15fbed9..6ca16581e874 100644 --- a/drivers/usb/host/xhci.c +++ b/drivers/usb/host/xhci.c @@ -881,8 +881,8 @@ static void xhci_clear_command_ring(struct xhci_hcd *xhci) @@ -176229,7 +176186,7 @@ index b37ddbb88b74..dd004e1690cc 100644 /* * non-error returns are a promise to giveback() the urb later * we drop ownership so next owner (or urb unlink) can get it -@@ -5467,6 +5564,7 @@ static const struct hc_driver xhci_hc_driver = { +@@ -5469,6 +5566,7 @@ static const struct hc_driver xhci_hc_driver = { .endpoint_reset = xhci_endpoint_reset, .check_bandwidth = xhci_check_bandwidth, .reset_bandwidth = xhci_reset_bandwidth, @@ -176238,10 +176195,10 @@ index b37ddbb88b74..dd004e1690cc 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 878cde819072..72cd89e499f6 100644 +index f8f93c6c4298..a86ddb450726 100644 --- a/drivers/usb/host/xhci.h +++ b/drivers/usb/host/xhci.h -@@ -1622,6 +1622,7 @@ struct xhci_ring { +@@ -1625,6 +1625,7 @@ struct xhci_ring { unsigned int num_trbs_free; unsigned int num_trbs_free_temp; unsigned int bounce_buf_len; @@ -176249,7 +176206,7 @@ index 878cde819072..72cd89e499f6 100644 enum xhci_ring_type type; bool last_td_was_short; struct radix_tree_root *trb_address_map; -@@ -1660,8 +1661,8 @@ struct urb_priv { +@@ -1663,8 +1664,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. @@ -176260,7 +176217,7 @@ index 878cde819072..72cd89e499f6 100644 /* Initial allocated size of the ERST, in number of entries */ #define ERST_SIZE 64 /* Initial number of event segment rings allocated */ -@@ -1897,6 +1898,9 @@ struct xhci_hcd { +@@ -1900,6 +1901,9 @@ struct xhci_hcd { #define XHCI_EP_CTX_BROKEN_DCS BIT_ULL(43) #define XHCI_SUSPEND_RESUME_CLKS BIT_ULL(44) #define XHCI_RESET_TO_DEFAULT BIT_ULL(45) @@ -180820,7 +180777,7 @@ index d4632aace402..4832cd8c2596 100644 /* * This will simply set the line as input since we are doing diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c -index dec6ca019bea..de25e3682f03 100644 +index 3a8dec05b591..5c9dfbb64dbb 100644 --- a/drivers/watchdog/bcm2835_wdt.c +++ b/drivers/watchdog/bcm2835_wdt.c @@ -32,13 +32,7 @@ @@ -180838,7 +180795,7 @@ index dec6ca019bea..de25e3682f03 100644 #define SECS_TO_WDOG_TICKS(x) ((x) << 16) #define WDOG_TICKS_TO_SECS(x) ((x) >> 16) -@@ -97,9 +91,24 @@ static unsigned int bcm2835_wdt_get_timeleft(struct watchdog_device *wdog) +@@ -98,9 +92,24 @@ static unsigned int bcm2835_wdt_get_timeleft(struct watchdog_device *wdog) return WDOG_TICKS_TO_SECS(ret & PM_WDOG_TIME_SET); } @@ -180865,7 +180822,7 @@ index dec6ca019bea..de25e3682f03 100644 /* use a timeout of 10 ticks (~150us) */ writel_relaxed(10 | PM_PASSWORD, wdt->base + PM_WDOG); -@@ -117,7 +126,15 @@ static int bcm2835_restart(struct watchdog_device *wdog, +@@ -118,7 +127,15 @@ static int bcm2835_restart(struct watchdog_device *wdog, { struct bcm2835_wdt *wdt = watchdog_get_drvdata(wdog); @@ -180882,7 +180839,7 @@ index dec6ca019bea..de25e3682f03 100644 return 0; } -@@ -152,19 +169,9 @@ static struct watchdog_device bcm2835_wdt_wdd = { +@@ -153,19 +170,9 @@ static struct watchdog_device bcm2835_wdt_wdd = { static void bcm2835_power_off(void) { struct bcm2835_wdt *wdt = bcm2835_power_off_wdt; @@ -181974,7 +181931,7 @@ index 000000000000..3c7079237496 + +#endif /* _VC_MEM_H */ diff --git a/include/linux/clk.h b/include/linux/clk.h -index 12c85ba606ec..cda227c6bc44 100644 +index 60760312b881..4ab5118c89b1 100644 --- a/include/linux/clk.h +++ b/include/linux/clk.h @@ -15,6 +15,7 @@ @@ -181985,7 +181942,7 @@ index 12c85ba606ec..cda227c6bc44 100644 struct device_node; struct of_phandle_args; -@@ -836,6 +837,9 @@ int clk_save_context(void); +@@ -853,6 +854,9 @@ int clk_save_context(void); */ void clk_restore_context(void); @@ -183234,7 +183191,7 @@ index 55b8c4b82479..9a252bb63a2a 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 21a46f616756..30024d8177de 100644 +index 69b6bbaf28a3..369f1994a22c 100644 --- a/kernel/cgroup/cgroup.c +++ b/kernel/cgroup/cgroup.c @@ -5991,6 +5991,9 @@ int __init cgroup_init_early(void) @@ -183321,10 +183278,10 @@ index 100253d4909c..fb32fdc53687 100644 for (;;) { tmp = *p; diff --git a/mm/page_alloc.c b/mm/page_alloc.c -index 1ba392f11e6b..933083742dc5 100644 +index 7cf3cd1d028b..383210531056 100644 --- a/mm/page_alloc.c +++ b/mm/page_alloc.c -@@ -9230,8 +9230,6 @@ int alloc_contig_range(unsigned long start, unsigned long end, +@@ -9232,8 +9232,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)) { @@ -196169,7 +196126,7 @@ index 000000000000..835d0f9420e7 +MODULE_DESCRIPTION("ASoC Raspberry Pi Hat generic digi driver for WM8804 based cards"); +MODULE_LICENSE("GPL v2"); diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig -index 04a7070c78e2..9862f21ac717 100644 +index a8b9eb6ce2ea..34b60b5919ea 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig @@ -100,12 +100,14 @@ config SND_SOC_ALL_CODECS diff --git a/raspberrypi-kernel.spec b/raspberrypi-kernel.spec index 1b1d26c..f8f98aa 100644 --- a/raspberrypi-kernel.spec +++ b/raspberrypi-kernel.spec @@ -2,13 +2,13 @@ %global KernelVer %{version}-%{release}.raspi.%{_target_cpu} -%global hulkrelease 219.0.0 +%global hulkrelease 235.0.0 %global debug_package %{nil} Name: raspberrypi-kernel Version: 5.10.0 -Release: %{hulkrelease}.22 +Release: %{hulkrelease}.23 Summary: Linux Kernel License: GPLv2 URL: http://www.kernel.org/ @@ -262,6 +262,9 @@ fi /usr/src/kernels/%{KernelVer} %changelog +* Wed Nov 6 2024 Yafen Fang - 5.10.0-235.0.0.23 +- update kernel version to openEuler 5.10.0-235.0.0 + * Sun Jul 21 2024 Yafen Fang - 5.10.0-219.0.0.22 - update kernel version to openEuler 5.10.0-219.0.0