From 9fc2eec97a505bcb05d8d5c431b3fe7e9f687bf4 Mon Sep 17 00:00:00 2001 From: Ray Zhang Date: Fri, 5 Jun 2020 18:38:30 +0800 Subject: [PATCH] disp: msm: dsi: initialize display before request_firmware dsi_display_init has to be called after dsi_display has valid device info, so initialize it before calling request_firmware in dsi firmware case. Change-Id: Iec59882c776eb4bd19ce68d3ded052629c344d17 Signed-off-by: Ray Zhang Signed-off-by: Steve Cohen --- msm/dsi/dsi_display.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index 120445b887..e13a0db63c 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -5610,11 +5610,13 @@ static void dsi_display_firmware_display(const struct firmware *fw, struct dsi_display *display = context; if (fw) { - DSI_DEBUG("reading data from firmware, size=%zd\n", + DSI_INFO("reading data from firmware, size=%zd\n", fw->size); display->fw = fw; display->name = "dsi_firmware_display"; + } else { + DSI_INFO("no firmware available, fallback to device node\n"); } if (dsi_display_init(display)) @@ -5686,12 +5688,6 @@ int dsi_display_dev_probe(struct platform_device *pdev) "qcom,dsi-default-panel", 0); if (!panel_node) DSI_WARN("default panel not found\n"); - - if (IS_ENABLED(CONFIG_DSI_PARSER) && !display->trusted_vm_env) - firm_req = !request_firmware_nowait( - THIS_MODULE, 1, "dsi_prop", - &pdev->dev, GFP_KERNEL, display, - dsi_display_firmware_display); } boot_disp->node = pdev->dev.of_node; @@ -5706,6 +5702,13 @@ int dsi_display_dev_probe(struct platform_device *pdev) platform_set_drvdata(pdev, display); /* initialize display in firmware callback */ + if (!boot_disp->boot_disp_en && IS_ENABLED(CONFIG_DSI_PARSER)) { + firm_req = !request_firmware_nowait( + THIS_MODULE, 1, "dsi_prop", + &pdev->dev, GFP_KERNEL, display, + dsi_display_firmware_display); + } + if (!firm_req) { rc = dsi_display_init(display); if (rc)