diff --git a/config/lahainadisp.conf b/config/lahainadisp.conf index d413be39445f..953a3ef338f8 100644 --- a/config/lahainadisp.conf +++ b/config/lahainadisp.conf @@ -4,7 +4,7 @@ export CONFIG_DRM_MSM_DP=y export CONFIG_DRM_MSM_DP_MST=y export CONFIG_SYNC_FILE=y export CONFIG_DRM_MSM_DSI=y -export CONFIG_DSI_PARSER=y +export CONFIG_DSI_PARSER=n export CONFIG_DRM_SDE_WB=y export CONFIG_DRM_MSM_REGISTER_LOGGING=y export CONFIG_QCOM_MDSS_PLL=y diff --git a/config/lahainadispconf.h b/config/lahainadispconf.h index e72e0a43f1ab..379c456689c8 100644 --- a/config/lahainadispconf.h +++ b/config/lahainadispconf.h @@ -1,6 +1,6 @@ /* SPDX-License-Identifier: GPL-2.0-only */ /* - * Copyright (c) 2020, The Linux Foundation. All rights reserved. + * Copyright (c) 2020, 2024 The Linux Foundation. All rights reserved. */ #define CONFIG_DRM_MSM 1 @@ -9,7 +9,6 @@ #define CONFIG_DRM_MSM_SDE 1 #define CONFIG_SYNC_FILE 1 #define CONFIG_DRM_MSM_DSI 1 -#define CONFIG_DSI_PARSER 1 #define CONFIG_DRM_SDE_WB 1 #define CONFIG_DRM_MSM_REGISTER_LOGGING 1 #define CONFIG_DRM_SDE_EVTLOG_DEBUG 1 diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index ddafc11d5921..e0d4720f5564 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -3918,6 +3918,7 @@ static int dp_display_get_display_type(struct dp_display *dp_display, const char **display_type) { struct dp_display_private *dp; + struct device_node *of_node; if (!dp_display || !display_type) { pr_err("invalid input\n"); @@ -3927,7 +3928,11 @@ static int dp_display_get_display_type(struct dp_display *dp_display, dp = container_of(dp_display, struct dp_display_private, dp_display); if (dp->parser) *display_type = dp->parser->display_type; - + else { + of_node = dp->pdev->dev.of_node; + *display_type = of_get_property(of_node, "qcom,display-type", + NULL); + } return 0; } diff --git a/msm/dp/dp_drm.c b/msm/dp/dp_drm.c index 6af98873cb38..ad90da674401 100644 --- a/msm/dp/dp_drm.c +++ b/msm/dp/dp_drm.c @@ -471,6 +471,7 @@ int dp_connector_get_info(struct drm_connector *connector, { struct dp_display *display = data; const char *display_type = NULL; + u32 conn_disp_type = SDE_CONNECTOR_PRIMARY; if (!info || !display || !display->drm_dev) { DP_ERR("invalid params\n"); @@ -480,11 +481,11 @@ int dp_connector_get_info(struct drm_connector *connector, info->intf_type = DRM_MODE_CONNECTOR_DisplayPort; display->get_display_type(display, &display_type); - if (display_type){ + if (display_type) { if (!strcmp(display_type, "primary")) - info->display_type = SDE_CONNECTOR_PRIMARY; + conn_disp_type = SDE_CONNECTOR_PRIMARY; else if (!strcmp(display_type, "secondary")) - info->display_type = SDE_CONNECTOR_SECONDARY; + conn_disp_type = SDE_CONNECTOR_SECONDARY; } info->num_of_h_tiles = 1; @@ -495,7 +496,8 @@ int dp_connector_get_info(struct drm_connector *connector, if (display && display->is_edp) { info->intf_type = DRM_MODE_CONNECTOR_eDP; - if(display->ext_hpd_en) + info->display_type = conn_disp_type; + if (display->ext_hpd_en) info->capabilities |= MSM_DISPLAY_CAP_HOT_PLUG; else info->is_connected = true; diff --git a/msm/dp/dp_parser.c b/msm/dp/dp_parser.c index ea5546ea476c..0a138bbe4a1d 100644 --- a/msm/dp/dp_parser.c +++ b/msm/dp/dp_parser.c @@ -178,13 +178,10 @@ static int dp_parser_misc(struct dp_parser *parser) &parser->pixel_base_off[i]); } - parser->display_type = of_get_property(of_node, "qcom,display-type", NULL); - if (!parser->display_type) { - if (parser->is_edp) - parser->display_type = "primary"; - else - parser->display_type = "secondary"; - } + parser->display_type = of_get_property(of_node, "qcom,display-type", + NULL); + if (!parser->display_type) + parser->display_type = "unknown"; parser->panel_notifier_support = of_property_read_bool(of_node, "qcom,panel-notifier-support"); diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index b75c465340b0..6962049ee8fb 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -6131,6 +6131,10 @@ int dsi_display_dev_remove(struct platform_device *pdev) } display = platform_get_drvdata(pdev); + if (!display || !display->panel_node) { + DSI_ERR("invalid display\n"); + return -EINVAL; + } /* decrement ref count */ of_node_put(display->panel_node);