--- /dev/null
+From stable+bounces-7893-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:36 2023
+From: Amit Pundir <amit.pundir@linaro.org>
+Date: Tue, 19 Dec 2023 15:41:16 +0530
+Subject: Revert "drm/bridge: lt9611uxc: fix the race in the error path"
+To: Greg KH <gregkh@linuxfoundation.org>, Stable <stable@vger.kernel.org>, Sasha Levin <sashal@kernel.org>
+Cc: Maxime Ripard <maxime@cerno.tech>, Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Message-ID: <20231219101118.965996-2-amit.pundir@linaro.org>
+
+From: Amit Pundir <amit.pundir@linaro.org>
+
+This reverts commit d0d01bb4a56093fa214c0949e9e7ccb9fb437795.
+
+This and the dependent fixes broke display on RB5.
+
+Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
--- /dev/null
+From stable+bounces-7894-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:35 2023
+From: Amit Pundir <amit.pundir@linaro.org>
+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 <gregkh@linuxfoundation.org>, Stable <stable@vger.kernel.org>, Sasha Levin <sashal@kernel.org>
+Cc: Maxime Ripard <maxime@cerno.tech>, Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Message-ID: <20231219101118.965996-3-amit.pundir@linaro.org>
+
+From: Amit Pundir <amit.pundir@linaro.org>
+
+This reverts commit 29aba28ea195182f547cd8dac1b80eed51b6b73d.
+
+This and the dependent fixes broke display on RB5.
+
+Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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);
+
--- /dev/null
+From stable+bounces-7895-greg=kroah.com@vger.kernel.org Tue Dec 19 11:11:40 2023
+From: Amit Pundir <amit.pundir@linaro.org>
+Date: Tue, 19 Dec 2023 15:41:18 +0530
+Subject: Revert "drm/bridge: lt9611uxc: Switch to devm MIPI-DSI helpers"
+To: Greg KH <gregkh@linuxfoundation.org>, Stable <stable@vger.kernel.org>, Sasha Levin <sashal@kernel.org>
+Cc: Maxime Ripard <maxime@cerno.tech>, Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
+Message-ID: <20231219101118.965996-4-amit.pundir@linaro.org>
+
+From: Amit Pundir <amit.pundir@linaro.org>
+
+This reverts commit f53a045793289483b3c2930007fc52c7f1f642d5.
+
+This and the dependent fixes broke display on RB5.
+
+Signed-off-by: Amit Pundir <amit.pundir@linaro.org>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ 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,
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