]> git.ipfire.org Git - thirdparty/kernel/stable-queue.git/commitdiff
Drop drm-bridge-add-transparent-bridge-helper.patch
authorSasha Levin <sashal@kernel.org>
Sun, 10 Mar 2024 13:17:21 +0000 (09:17 -0400)
committerSasha Levin <sashal@kernel.org>
Sun, 10 Mar 2024 13:17:21 +0000 (09:17 -0400)
Signed-off-by: Sasha Levin <sashal@kernel.org>
queue-6.6/drm-bridge-add-transparent-bridge-helper.patch [deleted file]
queue-6.6/series
queue-6.7/drm-bridge-add-transparent-bridge-helper.patch [deleted file]
queue-6.7/series

diff --git a/queue-6.6/drm-bridge-add-transparent-bridge-helper.patch b/queue-6.6/drm-bridge-add-transparent-bridge-helper.patch
deleted file mode 100644 (file)
index 367a1dc..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-From 62aa603606683e56c0e967003e07e93b73d8e901 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sun, 3 Dec 2023 14:43:28 +0300
-Subject: drm/bridge: add transparent bridge helper
-
-From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-
-[ Upstream commit 2a04739139b2b2761571e18937e2400e71eff664 ]
-
-Define a helper for creating simple transparent bridges which serve the
-only purpose of linking devices into the bridge chain up to the last
-bridge representing the connector. This is especially useful for
-DP/USB-C bridge chains, which can span across several devices, but do
-not require any additional functionality from the intermediate bridges.
-
-Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
-Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20231203114333.1305826-2-dmitry.baryshkov@linaro.org
-Stable-dep-of: b979f2d50a09 ("soc: qcom: pmic_glink_altmode: fix drm bridge use-after-free")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/Kconfig      |   9 ++
- drivers/gpu/drm/bridge/Makefile     |   1 +
- drivers/gpu/drm/bridge/aux-bridge.c | 140 ++++++++++++++++++++++++++++
- include/drm/bridge/aux-bridge.h     |  19 ++++
- 4 files changed, 169 insertions(+)
- create mode 100644 drivers/gpu/drm/bridge/aux-bridge.c
- create mode 100644 include/drm/bridge/aux-bridge.h
-
-diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
-index 3e6a4e2044c0e..a22645efe93a0 100644
---- a/drivers/gpu/drm/bridge/Kconfig
-+++ b/drivers/gpu/drm/bridge/Kconfig
-@@ -12,6 +12,15 @@ config DRM_PANEL_BRIDGE
-       help
-         DRM bridge wrapper of DRM panels
-+config DRM_AUX_BRIDGE
-+      tristate
-+      depends on DRM_BRIDGE && OF
-+      select AUXILIARY_BUS
-+      select DRM_PANEL_BRIDGE
-+      help
-+        Simple transparent bridge that is used by several non-DRM drivers to
-+        build bridges chain.
-+
- menu "Display Interface Bridges"
-       depends on DRM && DRM_BRIDGE
-diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
-index 2b892b7ed59e8..918e3bfff079c 100644
---- a/drivers/gpu/drm/bridge/Makefile
-+++ b/drivers/gpu/drm/bridge/Makefile
-@@ -1,4 +1,5 @@
- # SPDX-License-Identifier: GPL-2.0
-+obj-$(CONFIG_DRM_AUX_BRIDGE) += aux-bridge.o
- obj-$(CONFIG_DRM_CHIPONE_ICN6211) += chipone-icn6211.o
- obj-$(CONFIG_DRM_CHRONTEL_CH7033) += chrontel-ch7033.o
- obj-$(CONFIG_DRM_CROS_EC_ANX7688) += cros-ec-anx7688.o
-diff --git a/drivers/gpu/drm/bridge/aux-bridge.c b/drivers/gpu/drm/bridge/aux-bridge.c
-new file mode 100644
-index 0000000000000..49d7c2ab1ecc3
---- /dev/null
-+++ b/drivers/gpu/drm/bridge/aux-bridge.c
-@@ -0,0 +1,140 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * Copyright (C) 2023 Linaro Ltd.
-+ *
-+ * Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-+ */
-+#include <linux/auxiliary_bus.h>
-+#include <linux/module.h>
-+
-+#include <drm/drm_bridge.h>
-+#include <drm/bridge/aux-bridge.h>
-+
-+static DEFINE_IDA(drm_aux_bridge_ida);
-+
-+static void drm_aux_bridge_release(struct device *dev)
-+{
-+      struct auxiliary_device *adev = to_auxiliary_dev(dev);
-+
-+      ida_free(&drm_aux_bridge_ida, adev->id);
-+
-+      kfree(adev);
-+}
-+
-+static void drm_aux_bridge_unregister_adev(void *_adev)
-+{
-+      struct auxiliary_device *adev = _adev;
-+
-+      auxiliary_device_delete(adev);
-+      auxiliary_device_uninit(adev);
-+}
-+
-+/**
-+ * drm_aux_bridge_register - Create a simple bridge device to link the chain
-+ * @parent: device instance providing this bridge
-+ *
-+ * Creates a simple DRM bridge that doesn't implement any drm_bridge
-+ * operations. Such bridges merely fill a place in the bridge chain linking
-+ * surrounding DRM bridges.
-+ *
-+ * Return: zero on success, negative error code on failure
-+ */
-+int drm_aux_bridge_register(struct device *parent)
-+{
-+      struct auxiliary_device *adev;
-+      int ret;
-+
-+      adev = kzalloc(sizeof(*adev), GFP_KERNEL);
-+      if (!adev)
-+              return -ENOMEM;
-+
-+      ret = ida_alloc(&drm_aux_bridge_ida, GFP_KERNEL);
-+      if (ret < 0) {
-+              kfree(adev);
-+              return ret;
-+      }
-+
-+      adev->id = ret;
-+      adev->name = "aux_bridge";
-+      adev->dev.parent = parent;
-+      adev->dev.of_node = parent->of_node;
-+      adev->dev.release = drm_aux_bridge_release;
-+
-+      ret = auxiliary_device_init(adev);
-+      if (ret) {
-+              ida_free(&drm_aux_bridge_ida, adev->id);
-+              kfree(adev);
-+              return ret;
-+      }
-+
-+      ret = auxiliary_device_add(adev);
-+      if (ret) {
-+              auxiliary_device_uninit(adev);
-+              return ret;
-+      }
-+
-+      return devm_add_action_or_reset(parent, drm_aux_bridge_unregister_adev, adev);
-+}
-+EXPORT_SYMBOL_GPL(drm_aux_bridge_register);
-+
-+struct drm_aux_bridge_data {
-+      struct drm_bridge bridge;
-+      struct drm_bridge *next_bridge;
-+      struct device *dev;
-+};
-+
-+static int drm_aux_bridge_attach(struct drm_bridge *bridge,
-+                               enum drm_bridge_attach_flags flags)
-+{
-+      struct drm_aux_bridge_data *data;
-+
-+      if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR))
-+              return -EINVAL;
-+
-+      data = container_of(bridge, struct drm_aux_bridge_data, bridge);
-+
-+      return drm_bridge_attach(bridge->encoder, data->next_bridge, bridge,
-+                               DRM_BRIDGE_ATTACH_NO_CONNECTOR);
-+}
-+
-+static const struct drm_bridge_funcs drm_aux_bridge_funcs = {
-+      .attach = drm_aux_bridge_attach,
-+};
-+
-+static int drm_aux_bridge_probe(struct auxiliary_device *auxdev,
-+                              const struct auxiliary_device_id *id)
-+{
-+      struct drm_aux_bridge_data *data;
-+
-+      data = devm_kzalloc(&auxdev->dev, sizeof(*data), GFP_KERNEL);
-+      if (!data)
-+              return -ENOMEM;
-+
-+      data->dev = &auxdev->dev;
-+      data->next_bridge = devm_drm_of_get_bridge(&auxdev->dev, auxdev->dev.of_node, 0, 0);
-+      if (IS_ERR(data->next_bridge))
-+              return dev_err_probe(&auxdev->dev, PTR_ERR(data->next_bridge),
-+                                   "failed to acquire drm_bridge\n");
-+
-+      data->bridge.funcs = &drm_aux_bridge_funcs;
-+      data->bridge.of_node = data->dev->of_node;
-+
-+      return devm_drm_bridge_add(data->dev, &data->bridge);
-+}
-+
-+static const struct auxiliary_device_id drm_aux_bridge_table[] = {
-+      { .name = KBUILD_MODNAME ".aux_bridge" },
-+      {},
-+};
-+MODULE_DEVICE_TABLE(auxiliary, drm_aux_bridge_table);
-+
-+static struct auxiliary_driver drm_aux_bridge_drv = {
-+      .name = "aux_bridge",
-+      .id_table = drm_aux_bridge_table,
-+      .probe = drm_aux_bridge_probe,
-+};
-+module_auxiliary_driver(drm_aux_bridge_drv);
-+
-+MODULE_AUTHOR("Dmitry Baryshkov <dmitry.baryshkov@linaro.org>");
-+MODULE_DESCRIPTION("DRM transparent bridge");
-+MODULE_LICENSE("GPL");
-diff --git a/include/drm/bridge/aux-bridge.h b/include/drm/bridge/aux-bridge.h
-new file mode 100644
-index 0000000000000..b3a9cc9c862fd
---- /dev/null
-+++ b/include/drm/bridge/aux-bridge.h
-@@ -0,0 +1,19 @@
-+/* SPDX-License-Identifier: GPL-2.0+ */
-+/*
-+ * Copyright (C) 2023 Linaro Ltd.
-+ *
-+ * Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-+ */
-+#ifndef DRM_AUX_BRIDGE_H
-+#define DRM_AUX_BRIDGE_H
-+
-+#if IS_ENABLED(CONFIG_DRM_AUX_BRIDGE)
-+int drm_aux_bridge_register(struct device *parent);
-+#else
-+static inline int drm_aux_bridge_register(struct device *parent)
-+{
-+      return 0;
-+}
-+#endif
-+
-+#endif
--- 
-2.43.0
-
index 67e3d00eaf94cc2c7c442d75c76061c0afe31c95..28241821c847b1b736c8c45c3ec2c907dbbec764 100644 (file)
@@ -1,4 +1,3 @@
-drm-bridge-add-transparent-bridge-helper.patch
 dt-bindings-dma-fsl-edma-add-fsl-edma.h-to-prevent-h.patch
 dmaengine-fsl-edma-utilize-common-dt-binding-header-.patch
 dmaengine-fsl-edma-correct-max_segment_size-setting.patch
diff --git a/queue-6.7/drm-bridge-add-transparent-bridge-helper.patch b/queue-6.7/drm-bridge-add-transparent-bridge-helper.patch
deleted file mode 100644 (file)
index 3932022..0000000
+++ /dev/null
@@ -1,233 +0,0 @@
-From 17e9df4c7836d0de0a085dca309eba6b7a2c2747 Mon Sep 17 00:00:00 2001
-From: Sasha Levin <sashal@kernel.org>
-Date: Sun, 3 Dec 2023 14:43:28 +0300
-Subject: drm/bridge: add transparent bridge helper
-
-From: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-
-[ Upstream commit 2a04739139b2b2761571e18937e2400e71eff664 ]
-
-Define a helper for creating simple transparent bridges which serve the
-only purpose of linking devices into the bridge chain up to the last
-bridge representing the connector. This is especially useful for
-DP/USB-C bridge chains, which can span across several devices, but do
-not require any additional functionality from the intermediate bridges.
-
-Reviewed-by: Neil Armstrong <neil.armstrong@linaro.org>
-Signed-off-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-Link: https://patchwork.freedesktop.org/patch/msgid/20231203114333.1305826-2-dmitry.baryshkov@linaro.org
-Stable-dep-of: b979f2d50a09 ("soc: qcom: pmic_glink_altmode: fix drm bridge use-after-free")
-Signed-off-by: Sasha Levin <sashal@kernel.org>
----
- drivers/gpu/drm/bridge/Kconfig      |   9 ++
- drivers/gpu/drm/bridge/Makefile     |   1 +
- drivers/gpu/drm/bridge/aux-bridge.c | 140 ++++++++++++++++++++++++++++
- include/drm/bridge/aux-bridge.h     |  19 ++++
- 4 files changed, 169 insertions(+)
- create mode 100644 drivers/gpu/drm/bridge/aux-bridge.c
- create mode 100644 include/drm/bridge/aux-bridge.h
-
-diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
-index 3e6a4e2044c0e..a22645efe93a0 100644
---- a/drivers/gpu/drm/bridge/Kconfig
-+++ b/drivers/gpu/drm/bridge/Kconfig
-@@ -12,6 +12,15 @@ config DRM_PANEL_BRIDGE
-       help
-         DRM bridge wrapper of DRM panels
-+config DRM_AUX_BRIDGE
-+      tristate
-+      depends on DRM_BRIDGE && OF
-+      select AUXILIARY_BUS
-+      select DRM_PANEL_BRIDGE
-+      help
-+        Simple transparent bridge that is used by several non-DRM drivers to
-+        build bridges chain.
-+
- menu "Display Interface Bridges"
-       depends on DRM && DRM_BRIDGE
-diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
-index 2b892b7ed59e8..918e3bfff079c 100644
---- a/drivers/gpu/drm/bridge/Makefile
-+++ b/drivers/gpu/drm/bridge/Makefile
-@@ -1,4 +1,5 @@
- # SPDX-License-Identifier: GPL-2.0
-+obj-$(CONFIG_DRM_AUX_BRIDGE) += aux-bridge.o
- obj-$(CONFIG_DRM_CHIPONE_ICN6211) += chipone-icn6211.o
- obj-$(CONFIG_DRM_CHRONTEL_CH7033) += chrontel-ch7033.o
- obj-$(CONFIG_DRM_CROS_EC_ANX7688) += cros-ec-anx7688.o
-diff --git a/drivers/gpu/drm/bridge/aux-bridge.c b/drivers/gpu/drm/bridge/aux-bridge.c
-new file mode 100644
-index 0000000000000..49d7c2ab1ecc3
---- /dev/null
-+++ b/drivers/gpu/drm/bridge/aux-bridge.c
-@@ -0,0 +1,140 @@
-+// SPDX-License-Identifier: GPL-2.0+
-+/*
-+ * Copyright (C) 2023 Linaro Ltd.
-+ *
-+ * Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-+ */
-+#include <linux/auxiliary_bus.h>
-+#include <linux/module.h>
-+
-+#include <drm/drm_bridge.h>
-+#include <drm/bridge/aux-bridge.h>
-+
-+static DEFINE_IDA(drm_aux_bridge_ida);
-+
-+static void drm_aux_bridge_release(struct device *dev)
-+{
-+      struct auxiliary_device *adev = to_auxiliary_dev(dev);
-+
-+      ida_free(&drm_aux_bridge_ida, adev->id);
-+
-+      kfree(adev);
-+}
-+
-+static void drm_aux_bridge_unregister_adev(void *_adev)
-+{
-+      struct auxiliary_device *adev = _adev;
-+
-+      auxiliary_device_delete(adev);
-+      auxiliary_device_uninit(adev);
-+}
-+
-+/**
-+ * drm_aux_bridge_register - Create a simple bridge device to link the chain
-+ * @parent: device instance providing this bridge
-+ *
-+ * Creates a simple DRM bridge that doesn't implement any drm_bridge
-+ * operations. Such bridges merely fill a place in the bridge chain linking
-+ * surrounding DRM bridges.
-+ *
-+ * Return: zero on success, negative error code on failure
-+ */
-+int drm_aux_bridge_register(struct device *parent)
-+{
-+      struct auxiliary_device *adev;
-+      int ret;
-+
-+      adev = kzalloc(sizeof(*adev), GFP_KERNEL);
-+      if (!adev)
-+              return -ENOMEM;
-+
-+      ret = ida_alloc(&drm_aux_bridge_ida, GFP_KERNEL);
-+      if (ret < 0) {
-+              kfree(adev);
-+              return ret;
-+      }
-+
-+      adev->id = ret;
-+      adev->name = "aux_bridge";
-+      adev->dev.parent = parent;
-+      adev->dev.of_node = parent->of_node;
-+      adev->dev.release = drm_aux_bridge_release;
-+
-+      ret = auxiliary_device_init(adev);
-+      if (ret) {
-+              ida_free(&drm_aux_bridge_ida, adev->id);
-+              kfree(adev);
-+              return ret;
-+      }
-+
-+      ret = auxiliary_device_add(adev);
-+      if (ret) {
-+              auxiliary_device_uninit(adev);
-+              return ret;
-+      }
-+
-+      return devm_add_action_or_reset(parent, drm_aux_bridge_unregister_adev, adev);
-+}
-+EXPORT_SYMBOL_GPL(drm_aux_bridge_register);
-+
-+struct drm_aux_bridge_data {
-+      struct drm_bridge bridge;
-+      struct drm_bridge *next_bridge;
-+      struct device *dev;
-+};
-+
-+static int drm_aux_bridge_attach(struct drm_bridge *bridge,
-+                               enum drm_bridge_attach_flags flags)
-+{
-+      struct drm_aux_bridge_data *data;
-+
-+      if (!(flags & DRM_BRIDGE_ATTACH_NO_CONNECTOR))
-+              return -EINVAL;
-+
-+      data = container_of(bridge, struct drm_aux_bridge_data, bridge);
-+
-+      return drm_bridge_attach(bridge->encoder, data->next_bridge, bridge,
-+                               DRM_BRIDGE_ATTACH_NO_CONNECTOR);
-+}
-+
-+static const struct drm_bridge_funcs drm_aux_bridge_funcs = {
-+      .attach = drm_aux_bridge_attach,
-+};
-+
-+static int drm_aux_bridge_probe(struct auxiliary_device *auxdev,
-+                              const struct auxiliary_device_id *id)
-+{
-+      struct drm_aux_bridge_data *data;
-+
-+      data = devm_kzalloc(&auxdev->dev, sizeof(*data), GFP_KERNEL);
-+      if (!data)
-+              return -ENOMEM;
-+
-+      data->dev = &auxdev->dev;
-+      data->next_bridge = devm_drm_of_get_bridge(&auxdev->dev, auxdev->dev.of_node, 0, 0);
-+      if (IS_ERR(data->next_bridge))
-+              return dev_err_probe(&auxdev->dev, PTR_ERR(data->next_bridge),
-+                                   "failed to acquire drm_bridge\n");
-+
-+      data->bridge.funcs = &drm_aux_bridge_funcs;
-+      data->bridge.of_node = data->dev->of_node;
-+
-+      return devm_drm_bridge_add(data->dev, &data->bridge);
-+}
-+
-+static const struct auxiliary_device_id drm_aux_bridge_table[] = {
-+      { .name = KBUILD_MODNAME ".aux_bridge" },
-+      {},
-+};
-+MODULE_DEVICE_TABLE(auxiliary, drm_aux_bridge_table);
-+
-+static struct auxiliary_driver drm_aux_bridge_drv = {
-+      .name = "aux_bridge",
-+      .id_table = drm_aux_bridge_table,
-+      .probe = drm_aux_bridge_probe,
-+};
-+module_auxiliary_driver(drm_aux_bridge_drv);
-+
-+MODULE_AUTHOR("Dmitry Baryshkov <dmitry.baryshkov@linaro.org>");
-+MODULE_DESCRIPTION("DRM transparent bridge");
-+MODULE_LICENSE("GPL");
-diff --git a/include/drm/bridge/aux-bridge.h b/include/drm/bridge/aux-bridge.h
-new file mode 100644
-index 0000000000000..b3a9cc9c862fd
---- /dev/null
-+++ b/include/drm/bridge/aux-bridge.h
-@@ -0,0 +1,19 @@
-+/* SPDX-License-Identifier: GPL-2.0+ */
-+/*
-+ * Copyright (C) 2023 Linaro Ltd.
-+ *
-+ * Author: Dmitry Baryshkov <dmitry.baryshkov@linaro.org>
-+ */
-+#ifndef DRM_AUX_BRIDGE_H
-+#define DRM_AUX_BRIDGE_H
-+
-+#if IS_ENABLED(CONFIG_DRM_AUX_BRIDGE)
-+int drm_aux_bridge_register(struct device *parent);
-+#else
-+static inline int drm_aux_bridge_register(struct device *parent)
-+{
-+      return 0;
-+}
-+#endif
-+
-+#endif
--- 
-2.43.0
-
index cd6543f5feb57cf56259cf51c50398972e9e4661..4d73fa435afe8c299119b23aca97b92b24745804 100644 (file)
@@ -1,4 +1,3 @@
-drm-bridge-add-transparent-bridge-helper.patch
 dt-bindings-dma-fsl-edma-add-fsl-edma.h-to-prevent-h.patch
 dmaengine-fsl-edma-utilize-common-dt-binding-header-.patch
 dmaengine-fsl-edma-correct-max_segment_size-setting.patch