]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
5.15-stable patches
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2023 14:43:14 +0000 (15:43 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 20 Dec 2023 14:43:14 +0000 (15:43 +0100)
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

queue-5.15/revert-drm-bridge-lt9611uxc-fix-the-race-in-the-error-path.patch [new file with mode: 0644]
queue-5.15/revert-drm-bridge-lt9611uxc-register-and-attach-our-dsi-device-at-probe.patch [new file with mode: 0644]
queue-5.15/revert-drm-bridge-lt9611uxc-switch-to-devm-mipi-dsi-helpers.patch [new file with mode: 0644]
queue-5.15/series

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 (file)
index 0000000..9651900
--- /dev/null
@@ -0,0 +1,53 @@
+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(&lt9611uxc->wq);
+       INIT_WORK(&lt9611uxc->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(&lt9611uxc->work);
+       drm_bridge_remove(&lt9611uxc->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(&lt9611uxc->work);
+       lt9611uxc_audio_exit(lt9611uxc);
+       drm_bridge_remove(&lt9611uxc->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 (file)
index 0000000..bdfc9a8
--- /dev/null
@@ -0,0 +1,69 @@
+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(&lt9611uxc->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(&lt9611uxc->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 (file)
index 0000000..afcf606
--- /dev/null
@@ -0,0 +1,107 @@
+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(&lt9611uxc->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,
index d854eec1a52893204302412505870e7203439746..39f64e8d5a9f92571c474015073a70ba9ddc50f9 100644 (file)
@@ -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