diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_dsi.c')
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_dsi.c | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_dsi.c b/drivers/gpu/drm/exynos/exynos_drm_dsi.c index 6f948bdeb855..102433e5d15f 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_dsi.c +++ b/drivers/gpu/drm/exynos/exynos_drm_dsi.c @@ -1462,6 +1462,12 @@ static int exynos_dsi_poweron(struct exynos_dsi *dsi) goto err_clk; } + ret = phy_power_on(dsi->phy); + if (ret < 0) { + dev_err(dsi->dev, "cannot enable phy %d\n", ret); + goto err_clk; + } + return 0; err_clk: @@ -1489,6 +1495,8 @@ static void exynos_dsi_poweroff(struct exynos_dsi *dsi) dsi->state &= ~DSIM_STATE_CMD_LPM; + phy_power_off(dsi->phy); + for (i = driver_data->num_clks - 1; i > -1; i--) clk_disable_unprepare(dsi->clks[i]); @@ -1901,6 +1909,13 @@ static int exynos_dsi_probe(struct platform_device *pdev) goto err_del_component; } + dsi->phy = devm_phy_get(dev, "dsim"); + if (IS_ERR(dsi->phy)) { + dev_info(dev, "failed to get dsim phy\n"); + ret = PTR_ERR(dsi->phy); + goto err_del_component; + } + dsi->irq = platform_get_irq(pdev, 0); if (dsi->irq < 0) { dev_err(dev, "failed to request dsi irq resource\n"); |