Skip to content

Commit 47a0131

Browse files
xubilvharryliou
authored andcommitted
Display: fix bugs when resume panel
1.Fix get wrong panel informations 2.Fix fail to wait for phy clk lane stop state Change-Id: I19fea947fe100dfb8f5cbacde35e8bc218e52fb5 Signed-off-by: xubilv <xbl@rock-chips.com>
1 parent 3308568 commit 47a0131

1 file changed

Lines changed: 7 additions & 5 deletions

File tree

drivers/gpu/drm/rockchip/dw-mipi-dsi.c

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -416,8 +416,6 @@ static int dw_mipi_dsi_phy_init(struct dw_mipi_dsi *dsi)
416416
return testdin;
417417
}
418418

419-
dsi_write(dsi, DSI_PWR_UP, POWERUP);
420-
421419
if (!IS_ERR(dsi->phy_cfg_clk)) {
422420
ret = clk_prepare_enable(dsi->phy_cfg_clk);
423421
if (ret) {
@@ -465,7 +463,6 @@ static int dw_mipi_dsi_phy_init(struct dw_mipi_dsi *dsi)
465463
dsi_write(dsi, DSI_PHY_RSTZ, PHY_ENFORCEPLL | PHY_ENABLECLK |
466464
PHY_UNRSTZ | PHY_UNSHUTDOWNZ);
467465

468-
469466
ret = readx_poll_timeout(readl, dsi->base + DSI_PHY_STATUS,
470467
val, val & LOCK, 1000, PHY_STATUS_TIMEOUT_US);
471468
if (ret < 0) {
@@ -480,6 +477,8 @@ static int dw_mipi_dsi_phy_init(struct dw_mipi_dsi *dsi)
480477
dev_err(dsi->dev,
481478
"failed to wait for phy clk lane stop state\n");
482479

480+
dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS);
481+
483482
phy_init_end:
484483
if (!IS_ERR(dsi->phy_cfg_clk))
485484
clk_disable_unprepare(dsi->phy_cfg_clk);
@@ -724,9 +723,9 @@ static void dw_mipi_dsi_init(struct dw_mipi_dsi *dsi)
724723
dsi_write(dsi, DSI_PWR_UP, RESET);
725724
dsi_write(dsi, DSI_PHY_RSTZ, PHY_DISFORCEPLL | PHY_DISABLECLK
726725
| PHY_RSTZ | PHY_SHUTDOWNZ);
726+
dsi_write(dsi, DSI_PWR_UP, POWERUP);
727727
dsi_write(dsi, DSI_CLKMGR_CFG, TO_CLK_DIVIDSION(10) |
728728
TX_ESC_CLK_DIVIDSION(7));
729-
dsi_write(dsi, DSI_LPCLK_CTRL, PHY_TXREQUESTCLKHS);
730729
}
731730

732731
static void dw_mipi_dsi_dpi_config(struct dw_mipi_dsi *dsi,
@@ -864,7 +863,7 @@ static void dw_mipi_dsi_encoder_mode_set(struct drm_encoder *encoder,
864863
if (dsi->dpms_mode == DRM_MODE_DPMS_ON)
865864
return;
866865

867-
dsi->mode = adjusted_mode;
866+
drm_mode_copy(dsi->mode, adjusted_mode);
868867

869868
ret = dw_mipi_dsi_get_lane_bps(dsi);
870869
if (ret < 0)
@@ -1254,6 +1253,9 @@ static int dw_mipi_dsi_probe(struct platform_device *pdev)
12541253
dsi->pdata = pdata;
12551254
dsi->dsi_host.ops = &dw_mipi_dsi_host_ops;
12561255
dsi->dsi_host.dev = &pdev->dev;
1256+
dsi->mode = devm_kzalloc(&pdev->dev, sizeof(struct drm_display_mode), GFP_KERNEL);
1257+
if (!dsi)
1258+
return -ENOMEM;
12571259

12581260
ret = mipi_dsi_host_register(&dsi->dsi_host);
12591261
if (ret)

0 commit comments

Comments
 (0)