]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
Revert "drm/ast: report connection status on Display Port."
authorSasha Levin <sashal@kernel.org>
Mon, 13 Nov 2023 16:36:36 +0000 (11:36 -0500)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Mon, 20 Nov 2023 10:57:25 +0000 (11:57 +0100)
This reverts commit f81bb0ac7872893241319ea82504956676ef02fd.

The commit depends on e329cb53b45d ("drm/ast: Add BMC virtual
connector") and will cause hangs on boot without that dependency.

Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/gpu/drm/ast/ast_dp.c
drivers/gpu/drm/ast/ast_dp501.c
drivers/gpu/drm/ast/ast_drv.h
drivers/gpu/drm/ast/ast_mode.c

index fdd9a493aa9c089df437aa6a796ca64ea2d26204..6dc1a09504e13ec2bad4bbf095c28a00b710d9e4 100644 (file)
@@ -7,17 +7,6 @@
 #include <drm/drm_print.h>
 #include "ast_drv.h"
 
-bool ast_astdp_is_connected(struct ast_device *ast)
-{
-       if (!ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xD1, ASTDP_MCU_FW_EXECUTING))
-               return false;
-       if (!ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xDF, ASTDP_HPD))
-               return false;
-       if (!ast_get_index_reg_mask(ast, AST_IO_CRTC_PORT, 0xDC, ASTDP_LINK_SUCCESS))
-               return false;
-       return true;
-}
-
 int ast_astdp_read_edid(struct drm_device *dev, u8 *ediddata)
 {
        struct ast_device *ast = to_ast_device(dev);
index fa7442b0c26120efc6fb1d5efd08e40d1178bd8b..1bc35a992369d745ce74d9f3b84bb8030e27081b 100644 (file)
@@ -272,9 +272,11 @@ static bool ast_launch_m68k(struct drm_device *dev)
        return true;
 }
 
-bool ast_dp501_is_connected(struct ast_device *ast)
+bool ast_dp501_read_edid(struct drm_device *dev, u8 *ediddata)
 {
-       u32 boot_address, offset, data;
+       struct ast_device *ast = to_ast_device(dev);
+       u32 i, boot_address, offset, data;
+       u32 *pEDIDidx;
 
        if (ast->config_mode == ast_use_p2a) {
                boot_address = get_fw_base(ast);
@@ -290,6 +292,14 @@ bool ast_dp501_is_connected(struct ast_device *ast)
                data = ast_mindwm(ast, boot_address + offset);
                if (!(data & AST_DP501_PNP_CONNECTED))
                        return false;
+
+               /* Read EDID */
+               offset = AST_DP501_EDID_DATA;
+               for (i = 0; i < 128; i += 4) {
+                       data = ast_mindwm(ast, boot_address + offset + i);
+                       pEDIDidx = (u32 *)(ediddata + i);
+                       *pEDIDidx = data;
+               }
        } else {
                if (!ast->dp501_fw_buf)
                        return false;
@@ -309,30 +319,7 @@ bool ast_dp501_is_connected(struct ast_device *ast)
                data = readl(ast->dp501_fw_buf + offset);
                if (!(data & AST_DP501_PNP_CONNECTED))
                        return false;
-       }
-       return true;
-}
-
-bool ast_dp501_read_edid(struct drm_device *dev, u8 *ediddata)
-{
-       struct ast_device *ast = to_ast_device(dev);
-       u32 i, boot_address, offset, data;
-       u32 *pEDIDidx;
-
-       if (!ast_dp501_is_connected(ast))
-               return false;
-
-       if (ast->config_mode == ast_use_p2a) {
-               boot_address = get_fw_base(ast);
 
-               /* Read EDID */
-               offset = AST_DP501_EDID_DATA;
-               for (i = 0; i < 128; i += 4) {
-                       data = ast_mindwm(ast, boot_address + offset + i);
-                       pEDIDidx = (u32 *)(ediddata + i);
-                       *pEDIDidx = data;
-               }
-       } else {
                /* Read EDID */
                offset = AST_DP501_EDID_DATA;
                for (i = 0; i < 128; i += 4) {
index 8a0ffa8b5939bfd7dc0c9226a6d404c09cc71598..5498a6676f2e8f2eede492b53c34e875ccf81635 100644 (file)
@@ -468,7 +468,6 @@ void ast_patch_ahb_2500(struct ast_device *ast);
 /* ast dp501 */
 void ast_set_dp501_video_output(struct drm_device *dev, u8 mode);
 bool ast_backup_fw(struct drm_device *dev, u8 *addr, u32 size);
-bool ast_dp501_is_connected(struct ast_device *ast);
 bool ast_dp501_read_edid(struct drm_device *dev, u8 *ediddata);
 u8 ast_get_dp501_max_clk(struct drm_device *dev);
 void ast_init_3rdtx(struct drm_device *dev);
@@ -477,7 +476,6 @@ void ast_init_3rdtx(struct drm_device *dev);
 struct ast_i2c_chan *ast_i2c_create(struct drm_device *dev);
 
 /* aspeed DP */
-bool ast_astdp_is_connected(struct ast_device *ast);
 int ast_astdp_read_edid(struct drm_device *dev, u8 *ediddata);
 void ast_dp_launch(struct drm_device *dev);
 void ast_dp_power_on_off(struct drm_device *dev, bool no);
index 0724516f297378ce13992589e92dfec07f1c7ba4..b3c670af6ef2bc309051457d292f6919200e3f5c 100644 (file)
@@ -1585,20 +1585,8 @@ err_drm_connector_update_edid_property:
        return 0;
 }
 
-static int ast_dp501_connector_helper_detect_ctx(struct drm_connector *connector,
-                                                struct drm_modeset_acquire_ctx *ctx,
-                                                bool force)
-{
-       struct ast_device *ast = to_ast_device(connector->dev);
-
-       if (ast_dp501_is_connected(ast))
-               return connector_status_connected;
-       return connector_status_disconnected;
-}
-
 static const struct drm_connector_helper_funcs ast_dp501_connector_helper_funcs = {
        .get_modes = ast_dp501_connector_helper_get_modes,
-       .detect_ctx = ast_dp501_connector_helper_detect_ctx,
 };
 
 static const struct drm_connector_funcs ast_dp501_connector_funcs = {
@@ -1623,7 +1611,7 @@ static int ast_dp501_connector_init(struct drm_device *dev, struct drm_connector
        connector->interlace_allowed = 0;
        connector->doublescan_allowed = 0;
 
-       connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
+       connector->polled = DRM_CONNECTOR_POLL_CONNECT;
 
        return 0;
 }
@@ -1695,20 +1683,8 @@ err_drm_connector_update_edid_property:
        return 0;
 }
 
-static int ast_astdp_connector_helper_detect_ctx(struct drm_connector *connector,
-                                                struct drm_modeset_acquire_ctx *ctx,
-                                                bool force)
-{
-       struct ast_device *ast = to_ast_device(connector->dev);
-
-       if (ast_astdp_is_connected(ast))
-               return connector_status_connected;
-       return connector_status_disconnected;
-}
-
 static const struct drm_connector_helper_funcs ast_astdp_connector_helper_funcs = {
        .get_modes = ast_astdp_connector_helper_get_modes,
-       .detect_ctx = ast_astdp_connector_helper_detect_ctx,
 };
 
 static const struct drm_connector_funcs ast_astdp_connector_funcs = {
@@ -1733,7 +1709,7 @@ static int ast_astdp_connector_init(struct drm_device *dev, struct drm_connector
        connector->interlace_allowed = 0;
        connector->doublescan_allowed = 0;
 
-       connector->polled = DRM_CONNECTOR_POLL_CONNECT | DRM_CONNECTOR_POLL_DISCONNECT;
+       connector->polled = DRM_CONNECTOR_POLL_CONNECT;
 
        return 0;
 }
@@ -1872,7 +1848,5 @@ int ast_mode_config_init(struct ast_device *ast)
 
        drm_mode_config_reset(dev);
 
-       drm_kms_helper_poll_init(dev);
-
        return 0;
 }