From: Sasha Levin Date: Sun, 10 Jul 2022 15:18:33 +0000 (-0400) Subject: Drop drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch X-Git-Tag: v4.9.323~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=bd2d48612c729a4ad7214ef8fd5ea122c9b25698;p=thirdparty%2Fkernel%2Fstable-queue.git Drop drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch Signed-off-by: Sasha Levin --- diff --git a/queue-5.15/drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch b/queue-5.15/drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch deleted file mode 100644 index fc6ba93b9bb..00000000000 --- a/queue-5.15/drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch +++ /dev/null @@ -1,270 +0,0 @@ -From 41d3abef580d693a38c7b7c5b130fa7412d97f86 Mon Sep 17 00:00:00 2001 -From: Sasha Levin -Date: Tue, 7 Dec 2021 15:15:33 -0800 -Subject: drm/msm/dp: employ bridge mechanism for display enable and disable - -From: Kuogee Hsieh - -[ Upstream commit 8a3b4c17f863cde8e8743edd8faffe916c49b960 ] - -Currently the msm_dp_*** functions implement the same sequence which would -happen when drm_bridge is used. hence get rid of this intermediate layer -and align with the drm_bridge usage to avoid customized implementation. - -Signed-off-by: Kuogee Hsieh - -Changes in v2: --- revise commit text --- rename dp_bridge to msm_dp_bridge --- delete empty functions - -Changes in v3: --- replace kzalloc() with devm_kzalloc() --- replace __dp_display_enable() with dp_display_enable() --- replace __dp_display_disable() with dp_display_disable() - -Changes in v4: --- msm_dp_bridge_init() called from msm_dp_modeset_init() same as dsi - -Changes in v5: --- delete attach, mode_fixup and pre_enable from dp_bridge_ops - -Changes in v6: --- rebase on msm-next-plus-fixes branch - -Signed-off-by: Kuogee Hsieh -Reviewed-by: Abhinav Kumar -Link: https://lore.kernel.org/r/1638918933-2544-1-git-send-email-quic_khsieh@quicinc.com -Signed-off-by: Rob Clark -Signed-off-by: Sasha Levin ---- - drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c | 21 ------ - drivers/gpu/drm/msm/dp/dp_display.c | 16 ++++- - drivers/gpu/drm/msm/dp/dp_display.h | 1 + - drivers/gpu/drm/msm/dp/dp_drm.c | 76 +++++++++++++++++++++ - drivers/gpu/drm/msm/msm_drv.h | 12 ++-- - 5 files changed, 99 insertions(+), 27 deletions(-) - -diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c -index 5f236395677e..119a1f5766fb 100644 ---- a/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c -+++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_encoder.c -@@ -1003,9 +1003,6 @@ static void dpu_encoder_virt_mode_set(struct drm_encoder *drm_enc, - - trace_dpu_enc_mode_set(DRMID(drm_enc)); - -- if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) -- msm_dp_display_mode_set(dpu_enc->dp, drm_enc, mode, adj_mode); -- - list_for_each_entry(conn_iter, connector_list, head) - if (conn_iter->encoder == drm_enc) - conn = conn_iter; -@@ -1185,14 +1182,6 @@ static void dpu_encoder_virt_enable(struct drm_encoder *drm_enc) - - _dpu_encoder_virt_enable_helper(drm_enc); - -- if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) { -- ret = msm_dp_display_enable(dpu_enc->dp, drm_enc); -- if (ret) { -- DPU_ERROR_ENC(dpu_enc, "dp display enable failed: %d\n", -- ret); -- goto out; -- } -- } - dpu_enc->enabled = true; - - out: -@@ -1226,11 +1215,6 @@ static void dpu_encoder_virt_disable(struct drm_encoder *drm_enc) - /* wait for idle */ - dpu_encoder_wait_for_event(drm_enc, MSM_ENC_TX_COMPLETE); - -- if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) { -- if (msm_dp_display_pre_disable(dpu_enc->dp, drm_enc)) -- DPU_ERROR_ENC(dpu_enc, "dp display push idle failed\n"); -- } -- - dpu_encoder_resource_control(drm_enc, DPU_ENC_RC_EVENT_PRE_STOP); - - for (i = 0; i < dpu_enc->num_phys_encs; i++) { -@@ -1255,11 +1239,6 @@ static void dpu_encoder_virt_disable(struct drm_encoder *drm_enc) - - DPU_DEBUG_ENC(dpu_enc, "encoder disabled\n"); - -- if (drm_enc->encoder_type == DRM_MODE_ENCODER_TMDS) { -- if (msm_dp_display_disable(dpu_enc->dp, drm_enc)) -- DPU_ERROR_ENC(dpu_enc, "dp display disable failed\n"); -- } -- - mutex_unlock(&dpu_enc->enc_lock); - } - -diff --git a/drivers/gpu/drm/msm/dp/dp_display.c b/drivers/gpu/drm/msm/dp/dp_display.c -index b141ccb527b0..a51d665ab556 100644 ---- a/drivers/gpu/drm/msm/dp/dp_display.c -+++ b/drivers/gpu/drm/msm/dp/dp_display.c -@@ -1504,6 +1504,18 @@ int msm_dp_modeset_init(struct msm_dp *dp_display, struct drm_device *dev, - dp_priv->panel->connector = dp_display->connector; - - priv->connectors[priv->num_connectors++] = dp_display->connector; -+ -+ dp_display->bridge = msm_dp_bridge_init(dp_display, dev, encoder); -+ if (IS_ERR(dp_display->bridge)) { -+ ret = PTR_ERR(dp_display->bridge); -+ DRM_DEV_ERROR(dev->dev, -+ "failed to create dp bridge: %d\n", ret); -+ dp_display->bridge = NULL; -+ return ret; -+ } -+ -+ priv->bridges[priv->num_bridges++] = dp_display->bridge; -+ - return 0; - } - -@@ -1606,8 +1618,8 @@ int msm_dp_display_disable(struct msm_dp *dp, struct drm_encoder *encoder) - } - - void msm_dp_display_mode_set(struct msm_dp *dp, struct drm_encoder *encoder, -- struct drm_display_mode *mode, -- struct drm_display_mode *adjusted_mode) -+ const struct drm_display_mode *mode, -+ const struct drm_display_mode *adjusted_mode) - { - struct dp_display_private *dp_display; - -diff --git a/drivers/gpu/drm/msm/dp/dp_display.h b/drivers/gpu/drm/msm/dp/dp_display.h -index 8b47cdabb67e..04f4383bd3e7 100644 ---- a/drivers/gpu/drm/msm/dp/dp_display.h -+++ b/drivers/gpu/drm/msm/dp/dp_display.h -@@ -13,6 +13,7 @@ - struct msm_dp { - struct drm_device *drm_dev; - struct device *codec_dev; -+ struct drm_bridge *bridge; - struct drm_connector *connector; - struct drm_encoder *encoder; - bool is_connected; -diff --git a/drivers/gpu/drm/msm/dp/dp_drm.c b/drivers/gpu/drm/msm/dp/dp_drm.c -index 764f4b81017e..6ab19a7ea57e 100644 ---- a/drivers/gpu/drm/msm/dp/dp_drm.c -+++ b/drivers/gpu/drm/msm/dp/dp_drm.c -@@ -11,6 +11,14 @@ - #include "msm_kms.h" - #include "dp_drm.h" - -+ -+struct msm_dp_bridge { -+ struct drm_bridge bridge; -+ struct msm_dp *dp_display; -+}; -+ -+#define to_dp_display(x) container_of((x), struct msm_dp_bridge, bridge) -+ - struct dp_connector { - struct drm_connector base; - struct msm_dp *dp_display; -@@ -162,3 +170,71 @@ struct drm_connector *dp_drm_connector_init(struct msm_dp *dp_display) - - return connector; - } -+ -+static void dp_bridge_mode_set(struct drm_bridge *drm_bridge, -+ const struct drm_display_mode *mode, -+ const struct drm_display_mode *adjusted_mode) -+{ -+ struct msm_dp_bridge *dp_bridge = to_dp_display(drm_bridge); -+ struct msm_dp *dp_display = dp_bridge->dp_display; -+ -+ msm_dp_display_mode_set(dp_display, drm_bridge->encoder, mode, adjusted_mode); -+} -+ -+static void dp_bridge_enable(struct drm_bridge *drm_bridge) -+{ -+ struct msm_dp_bridge *dp_bridge = to_dp_display(drm_bridge); -+ struct msm_dp *dp_display = dp_bridge->dp_display; -+ -+ msm_dp_display_enable(dp_display, drm_bridge->encoder); -+} -+ -+static void dp_bridge_disable(struct drm_bridge *drm_bridge) -+{ -+ struct msm_dp_bridge *dp_bridge = to_dp_display(drm_bridge); -+ struct msm_dp *dp_display = dp_bridge->dp_display; -+ -+ msm_dp_display_pre_disable(dp_display, drm_bridge->encoder); -+} -+ -+static void dp_bridge_post_disable(struct drm_bridge *drm_bridge) -+{ -+ struct msm_dp_bridge *dp_bridge = to_dp_display(drm_bridge); -+ struct msm_dp *dp_display = dp_bridge->dp_display; -+ -+ msm_dp_display_disable(dp_display, drm_bridge->encoder); -+} -+ -+static const struct drm_bridge_funcs dp_bridge_ops = { -+ .enable = dp_bridge_enable, -+ .disable = dp_bridge_disable, -+ .post_disable = dp_bridge_post_disable, -+ .mode_set = dp_bridge_mode_set, -+}; -+ -+struct drm_bridge *msm_dp_bridge_init(struct msm_dp *dp_display, struct drm_device *dev, -+ struct drm_encoder *encoder) -+{ -+ int rc; -+ struct msm_dp_bridge *dp_bridge; -+ struct drm_bridge *bridge; -+ -+ dp_bridge = devm_kzalloc(dev->dev, sizeof(*dp_bridge), GFP_KERNEL); -+ if (!dp_bridge) -+ return ERR_PTR(-ENOMEM); -+ -+ dp_bridge->dp_display = dp_display; -+ -+ bridge = &dp_bridge->bridge; -+ bridge->funcs = &dp_bridge_ops; -+ bridge->encoder = encoder; -+ -+ rc = drm_bridge_attach(encoder, bridge, NULL, DRM_BRIDGE_ATTACH_NO_CONNECTOR); -+ if (rc) { -+ DRM_ERROR("failed to attach bridge, rc=%d\n", rc); -+ kfree(dp_bridge); -+ return ERR_PTR(rc); -+ } -+ -+ return bridge; -+} -diff --git a/drivers/gpu/drm/msm/msm_drv.h b/drivers/gpu/drm/msm/msm_drv.h -index bd5132bb9bde..89b7edf755d3 100644 ---- a/drivers/gpu/drm/msm/msm_drv.h -+++ b/drivers/gpu/drm/msm/msm_drv.h -@@ -384,8 +384,12 @@ int msm_dp_display_enable(struct msm_dp *dp, struct drm_encoder *encoder); - int msm_dp_display_disable(struct msm_dp *dp, struct drm_encoder *encoder); - int msm_dp_display_pre_disable(struct msm_dp *dp, struct drm_encoder *encoder); - void msm_dp_display_mode_set(struct msm_dp *dp, struct drm_encoder *encoder, -- struct drm_display_mode *mode, -- struct drm_display_mode *adjusted_mode); -+ const struct drm_display_mode *mode, -+ const struct drm_display_mode *adjusted_mode); -+ -+struct drm_bridge *msm_dp_bridge_init(struct msm_dp *dp_display, -+ struct drm_device *dev, -+ struct drm_encoder *encoder); - void msm_dp_irq_postinstall(struct msm_dp *dp_display); - void msm_dp_snapshot(struct msm_disp_state *disp_state, struct msm_dp *dp_display); - -@@ -422,8 +426,8 @@ static inline int msm_dp_display_pre_disable(struct msm_dp *dp, - } - static inline void msm_dp_display_mode_set(struct msm_dp *dp, - struct drm_encoder *encoder, -- struct drm_display_mode *mode, -- struct drm_display_mode *adjusted_mode) -+ const struct drm_display_mode *mode, -+ const struct drm_display_mode *adjusted_mode) - { - } - --- -2.35.1 - diff --git a/queue-5.15/series b/queue-5.15/series index a8945d3c01b..8588ad2fbf2 100644 --- a/queue-5.15/series +++ b/queue-5.15/series @@ -146,7 +146,6 @@ drm-mediatek-remove-the-pointer-of-struct-cmdq_clien.patch drm-mediatek-detect-cmdq-execution-timeout.patch drm-mediatek-add-cmdq_handle-in-mtk_crtc.patch drm-mediatek-add-vblank-register-unregister-callback.patch -drm-msm-dp-employ-bridge-mechanism-for-display-enabl.patch drm-msm-dp-fix-double-free-on-error-in-msm_dp_bridge.patch drm-msm-properly-add-and-remove-internal-bridges.patch bluetooth-protect-le-accept-and-resolv-lists-with-hd.patch