From 8d79506120821dfa98786f2bbab86376ab16c15d Mon Sep 17 00:00:00 2001 From: Nilesh Laad Date: Tue, 28 May 2024 13:26:09 +0530 Subject: [PATCH 1/3] disp: msm: dp: parse display_type before connector initialization dp_parser is only available post connector init, so if parser is not available get display_type from devicetree itself and remove redundant code. Change-Id: I2131a257cb4795f52be1706882dce533baf94600 Signed-off-by: Nilesh Laad --- msm/dp/dp_display.c | 7 ++++++- msm/dp/dp_drm.c | 10 ++++++---- msm/dp/dp_parser.c | 11 ++++------- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/msm/dp/dp_display.c b/msm/dp/dp_display.c index 99ff3c7d1c74..788c43d1da2e 100644 --- a/msm/dp/dp_display.c +++ b/msm/dp/dp_display.c @@ -3919,6 +3919,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"); @@ -3928,7 +3929,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"); From 52c920054b2cb07d8df4b6e36e4b489ad9d6e348 Mon Sep 17 00:00:00 2001 From: Zeyuan Lu Date: Wed, 11 Sep 2024 17:56:14 +0800 Subject: [PATCH 2/3] disp: config :disable CONFIG_DSI_PARSER for kodiak Disable dsi firmware support on kodiak Change-Id: I223c5ac9c1c7f136137a115f844e5e75c01e433c Signed-off-by: Zeyuan Lu --- config/lahainadisp.conf | 2 +- config/lahainadispconf.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) 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 From c8f3df8ea4a8674e41969fd0cacabcdfc2facfa1 Mon Sep 17 00:00:00 2001 From: Jinfeng Gu Date: Thu, 22 Aug 2024 15:51:37 +0800 Subject: [PATCH 3/3] disp: msm: dsi: add null pointer check in dsi_display_dev_remove This change add display null pointer check in dsi_display_dev_remove. Change-Id: Ib31756c3b22256d19cbcb508f60de4550e3834e1 Signed-off-by: Jinfeng Gu --- msm/dsi/dsi_display.c | 4 ++++ 1 file changed, 4 insertions(+) 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);