From: Greg Kroah-Hartman Date: Wed, 20 Dec 2023 14:43:14 +0000 (+0100) Subject: 5.15-stable patches X-Git-Tag: v5.10.205~1 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=cde66f19c46f55b837523afc0359f2cfa5f2a700;p=thirdparty%2Fkernel%2Fstable-queue.git 5.15-stable patches added patches: revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch --- diff --git a/queue-5.15/revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch b/queue-5.15/revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch new file mode 100644 index 00000000000..9651900fbe0 --- /dev/null +++ b/queue-5.15/revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch @@ -0,0 +1,53 @@ +From stable+bounces-7893-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:36 2023 +From: Amit Pundir +Date: Tue, 19 Dec 2023 15:41:16 +0530 +Subject: Revert "drm/bridge: lt9611uxc: fix the race in the error path" +To: Greg KH , Stable , Sasha Levin +Cc: Maxime Ripard , Dmitry Baryshkov +Message-ID: <20231219101118.965996-2-amit.pundir@linaro.org> + +From: Amit Pundir + +This reverts commit d0d01bb4a56093fa214c0949e9e7ccb9fb437795. + +This and the dependent fixes broke display on RB5. + +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 10 ++++------ + 1 file changed, 4 insertions(+), 6 deletions(-) + +--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c ++++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +@@ -927,9 +927,9 @@ retry: + init_waitqueue_head(<9611uxc->wq); + INIT_WORK(<9611uxc->work, lt9611uxc_hpd_work); + +- ret = request_threaded_irq(client->irq, NULL, +- lt9611uxc_irq_thread_handler, +- IRQF_ONESHOT, "lt9611uxc", lt9611uxc); ++ ret = devm_request_threaded_irq(dev, client->irq, NULL, ++ lt9611uxc_irq_thread_handler, ++ IRQF_ONESHOT, "lt9611uxc", lt9611uxc); + if (ret) { + dev_err(dev, "failed to request irq\n"); + goto err_disable_regulators; +@@ -965,8 +965,6 @@ retry: + return lt9611uxc_audio_init(dev, lt9611uxc); + + err_remove_bridge: +- free_irq(client->irq, lt9611uxc); +- cancel_work_sync(<9611uxc->work); + drm_bridge_remove(<9611uxc->bridge); + + err_disable_regulators: +@@ -983,7 +981,7 @@ static int lt9611uxc_remove(struct i2c_c + { + struct lt9611uxc *lt9611uxc = i2c_get_clientdata(client); + +- free_irq(client->irq, lt9611uxc); ++ disable_irq(client->irq); + cancel_work_sync(<9611uxc->work); + lt9611uxc_audio_exit(lt9611uxc); + drm_bridge_remove(<9611uxc->bridge); diff --git a/queue-5.15/revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch b/queue-5.15/revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch new file mode 100644 index 00000000000..bdfc9a8d5af --- /dev/null +++ b/queue-5.15/revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch @@ -0,0 +1,69 @@ +From stable+bounces-7894-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:35 2023 +From: Amit Pundir +Date: Tue, 19 Dec 2023 15:41:17 +0530 +Subject: Revert "drm/bridge: lt9611uxc: Register and attach our DSI device at probe" +To: Greg KH , Stable , Sasha Levin +Cc: Maxime Ripard , Dmitry Baryshkov +Message-ID: <20231219101118.965996-3-amit.pundir@linaro.org> + +From: Amit Pundir + +This reverts commit 29aba28ea195182f547cd8dac1b80eed51b6b73d. + +This and the dependent fixes broke display on RB5. + +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 31 +++++++++++------------------ + 1 file changed, 12 insertions(+), 19 deletions(-) + +--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c ++++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +@@ -367,6 +367,18 @@ static int lt9611uxc_bridge_attach(struc + return ret; + } + ++ /* Attach primary DSI */ ++ lt9611uxc->dsi0 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi0_node); ++ if (IS_ERR(lt9611uxc->dsi0)) ++ return PTR_ERR(lt9611uxc->dsi0); ++ ++ /* Attach secondary DSI, if specified */ ++ if (lt9611uxc->dsi1_node) { ++ lt9611uxc->dsi1 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi1_node); ++ if (IS_ERR(lt9611uxc->dsi1)) ++ return PTR_ERR(lt9611uxc->dsi1); ++ } ++ + return 0; + } + +@@ -946,27 +958,8 @@ retry: + + drm_bridge_add(<9611uxc->bridge); + +- /* Attach primary DSI */ +- lt9611uxc->dsi0 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi0_node); +- if (IS_ERR(lt9611uxc->dsi0)) { +- ret = PTR_ERR(lt9611uxc->dsi0); +- goto err_remove_bridge; +- } +- +- /* Attach secondary DSI, if specified */ +- if (lt9611uxc->dsi1_node) { +- lt9611uxc->dsi1 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi1_node); +- if (IS_ERR(lt9611uxc->dsi1)) { +- ret = PTR_ERR(lt9611uxc->dsi1); +- goto err_remove_bridge; +- } +- } +- + return lt9611uxc_audio_init(dev, lt9611uxc); + +-err_remove_bridge: +- drm_bridge_remove(<9611uxc->bridge); +- + err_disable_regulators: + regulator_bulk_disable(ARRAY_SIZE(lt9611uxc->supplies), lt9611uxc->supplies); + diff --git a/queue-5.15/revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch b/queue-5.15/revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch new file mode 100644 index 00000000000..afcf60698f0 --- /dev/null +++ b/queue-5.15/revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch @@ -0,0 +1,107 @@ +From stable+bounces-7895-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:40 2023 +From: Amit Pundir +Date: Tue, 19 Dec 2023 15:41:18 +0530 +Subject: Revert "drm/bridge: lt9611uxc: Switch to devm MIPI-DSI helpers" +To: Greg KH , Stable , Sasha Levin +Cc: Maxime Ripard , Dmitry Baryshkov +Message-ID: <20231219101118.965996-4-amit.pundir@linaro.org> + +From: Amit Pundir + +This reverts commit f53a045793289483b3c2930007fc52c7f1f642d5. + +This and the dependent fixes broke display on RB5. + +Signed-off-by: Amit Pundir +Signed-off-by: Greg Kroah-Hartman +--- + drivers/gpu/drm/bridge/lontium-lt9611uxc.c | 38 ++++++++++++++++++++++------- + 1 file changed, 30 insertions(+), 8 deletions(-) + +--- a/drivers/gpu/drm/bridge/lontium-lt9611uxc.c ++++ b/drivers/gpu/drm/bridge/lontium-lt9611uxc.c +@@ -258,18 +258,17 @@ static struct mipi_dsi_device *lt9611uxc + const struct mipi_dsi_device_info info = { "lt9611uxc", 0, NULL }; + struct mipi_dsi_device *dsi; + struct mipi_dsi_host *host; +- struct device *dev = lt9611uxc->dev; + int ret; + + host = of_find_mipi_dsi_host_by_node(dsi_node); + if (!host) { +- dev_err(dev, "failed to find dsi host\n"); ++ dev_err(lt9611uxc->dev, "failed to find dsi host\n"); + return ERR_PTR(-EPROBE_DEFER); + } + +- dsi = devm_mipi_dsi_device_register_full(dev, host, &info); ++ dsi = mipi_dsi_device_register_full(host, &info); + if (IS_ERR(dsi)) { +- dev_err(dev, "failed to create dsi device\n"); ++ dev_err(lt9611uxc->dev, "failed to create dsi device\n"); + return dsi; + } + +@@ -278,9 +277,10 @@ static struct mipi_dsi_device *lt9611uxc + dsi->mode_flags = MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_SYNC_PULSE | + MIPI_DSI_MODE_VIDEO_HSE; + +- ret = devm_mipi_dsi_attach(dev, dsi); ++ ret = mipi_dsi_attach(dsi); + if (ret < 0) { +- dev_err(dev, "failed to attach dsi to host\n"); ++ dev_err(lt9611uxc->dev, "failed to attach dsi to host\n"); ++ mipi_dsi_device_unregister(dsi); + return ERR_PTR(ret); + } + +@@ -355,6 +355,19 @@ static int lt9611uxc_connector_init(stru + return drm_connector_attach_encoder(<9611uxc->connector, bridge->encoder); + } + ++static void lt9611uxc_bridge_detach(struct drm_bridge *bridge) ++{ ++ struct lt9611uxc *lt9611uxc = bridge_to_lt9611uxc(bridge); ++ ++ if (lt9611uxc->dsi1) { ++ mipi_dsi_detach(lt9611uxc->dsi1); ++ mipi_dsi_device_unregister(lt9611uxc->dsi1); ++ } ++ ++ mipi_dsi_detach(lt9611uxc->dsi0); ++ mipi_dsi_device_unregister(lt9611uxc->dsi0); ++} ++ + static int lt9611uxc_bridge_attach(struct drm_bridge *bridge, + enum drm_bridge_attach_flags flags) + { +@@ -375,11 +388,19 @@ static int lt9611uxc_bridge_attach(struc + /* Attach secondary DSI, if specified */ + if (lt9611uxc->dsi1_node) { + lt9611uxc->dsi1 = lt9611uxc_attach_dsi(lt9611uxc, lt9611uxc->dsi1_node); +- if (IS_ERR(lt9611uxc->dsi1)) +- return PTR_ERR(lt9611uxc->dsi1); ++ if (IS_ERR(lt9611uxc->dsi1)) { ++ ret = PTR_ERR(lt9611uxc->dsi1); ++ goto err_unregister_dsi0; ++ } + } + + return 0; ++ ++err_unregister_dsi0: ++ mipi_dsi_detach(lt9611uxc->dsi0); ++ mipi_dsi_device_unregister(lt9611uxc->dsi0); ++ ++ return ret; + } + + static enum drm_mode_status +@@ -523,6 +544,7 @@ static struct edid *lt9611uxc_bridge_get + + static const struct drm_bridge_funcs lt9611uxc_bridge_funcs = { + .attach = lt9611uxc_bridge_attach, ++ .detach = lt9611uxc_bridge_detach, + .mode_valid = lt9611uxc_bridge_mode_valid, + .mode_set = lt9611uxc_bridge_mode_set, + .detect = lt9611uxc_bridge_detect, diff --git a/queue-5.15/series b/queue-5.15/series index d854eec1a52..39f64e8d5a9 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -152,3 +152,6 @@ ksmbd-move-oplock-handling-after-unlock-parent-dir.patch ksmbd-release-interim-response-after-sending-status-pending-response.patch ksmbd-move-setting-smb2_flags_async_command-and-asyncid.patch ksmbd-don-t-update-op_state-as-oplock_state_none-on-error.patch +revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch +revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch +revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch