mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-08 20:07:46 +09:00
drm/rockchip: analogix_dp: Fix unbalanced clock
Fixes: ad3cad3616 ("drm/rockchip: analogix_dp: Covert to use bulk clk")
Change-Id: I5a980fdef172013138293c999a00014141a0ffbd
Signed-off-by: Wyon Bi <bivvy.bi@rock-chips.com>
This commit is contained in:
@@ -1258,12 +1258,6 @@ static int analogix_dp_set_bridge(struct analogix_dp_device *dp)
|
||||
|
||||
pm_runtime_get_sync(dp->dev);
|
||||
|
||||
ret = clk_prepare_enable(dp->clock);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("Failed to prepare_enable the clock clk [%d]\n", ret);
|
||||
goto out_dp_clk_pre;
|
||||
}
|
||||
|
||||
if (dp->plat_data->power_on_start)
|
||||
dp->plat_data->power_on_start(dp->plat_data);
|
||||
|
||||
@@ -1303,8 +1297,6 @@ out_dp_init:
|
||||
analogix_dp_phy_power_off(dp);
|
||||
if (dp->plat_data->power_off)
|
||||
dp->plat_data->power_off(dp->plat_data);
|
||||
clk_disable_unprepare(dp->clock);
|
||||
out_dp_clk_pre:
|
||||
pm_runtime_put_sync(dp->dev);
|
||||
|
||||
return ret;
|
||||
@@ -1355,8 +1347,6 @@ static void analogix_dp_bridge_disable(struct drm_bridge *bridge)
|
||||
analogix_dp_set_analog_power_down(dp, POWER_ALL, 1);
|
||||
analogix_dp_phy_power_off(dp);
|
||||
|
||||
clk_disable_unprepare(dp->clock);
|
||||
|
||||
pm_runtime_put_sync(dp->dev);
|
||||
|
||||
if (dp->plat_data->panel) {
|
||||
@@ -1641,14 +1631,6 @@ analogix_dp_bind(struct device *dev, struct drm_device *drm_dev,
|
||||
}
|
||||
}
|
||||
|
||||
dp->clock = devm_clk_get(&pdev->dev, "dp");
|
||||
if (IS_ERR(dp->clock)) {
|
||||
dev_err(&pdev->dev, "failed to get clock\n");
|
||||
return ERR_CAST(dp->clock);
|
||||
}
|
||||
|
||||
clk_prepare_enable(dp->clock);
|
||||
|
||||
res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
|
||||
|
||||
dp->reg_base = devm_ioremap_resource(&pdev->dev, res);
|
||||
@@ -1742,15 +1724,12 @@ void analogix_dp_unbind(struct analogix_dp_device *dp)
|
||||
|
||||
drm_dp_aux_unregister(&dp->aux);
|
||||
pm_runtime_disable(dp->dev);
|
||||
clk_disable_unprepare(dp->clock);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(analogix_dp_unbind);
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
int analogix_dp_suspend(struct analogix_dp_device *dp)
|
||||
{
|
||||
clk_disable_unprepare(dp->clock);
|
||||
|
||||
if (dp->plat_data->panel) {
|
||||
if (drm_panel_unprepare(dp->plat_data->panel))
|
||||
DRM_ERROR("failed to turnoff the panel\n");
|
||||
@@ -1762,14 +1741,6 @@ EXPORT_SYMBOL_GPL(analogix_dp_suspend);
|
||||
|
||||
int analogix_dp_resume(struct analogix_dp_device *dp)
|
||||
{
|
||||
int ret;
|
||||
|
||||
ret = clk_prepare_enable(dp->clock);
|
||||
if (ret < 0) {
|
||||
DRM_ERROR("Failed to prepare_enable the clock clk [%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
if (dp->plat_data->panel) {
|
||||
if (drm_panel_prepare(dp->plat_data->panel)) {
|
||||
DRM_ERROR("failed to setup the panel\n");
|
||||
|
||||
@@ -171,7 +171,6 @@ struct analogix_dp_device {
|
||||
struct drm_connector connector;
|
||||
struct drm_bridge *bridge;
|
||||
struct drm_dp_aux aux;
|
||||
struct clk *clock;
|
||||
unsigned int irq;
|
||||
void __iomem *reg_base;
|
||||
|
||||
|
||||
@@ -530,12 +530,6 @@ static int rockchip_dp_bind(struct device *dev, struct device *master,
|
||||
if (ret < 0)
|
||||
goto err_cleanup_encoder;
|
||||
|
||||
dp->adp = analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data);
|
||||
if (IS_ERR(dp->adp)) {
|
||||
ret = PTR_ERR(dp->adp);
|
||||
goto err_unreg_psr;
|
||||
}
|
||||
|
||||
if (dp->data->audio) {
|
||||
struct hdmi_codec_pdata codec_data = {
|
||||
.ops = &rockchip_dp_audio_codec_ops,
|
||||
@@ -555,11 +549,20 @@ static int rockchip_dp_bind(struct device *dev, struct device *master,
|
||||
}
|
||||
}
|
||||
|
||||
dp->adp = analogix_dp_bind(dev, dp->drm_dev, &dp->plat_data);
|
||||
if (IS_ERR(dp->adp)) {
|
||||
ret = PTR_ERR(dp->adp);
|
||||
goto err_unreg_audio;
|
||||
}
|
||||
|
||||
dp->sub_dev.connector = &dp->adp->connector;
|
||||
dp->sub_dev.of_node = dev->of_node;
|
||||
rockchip_drm_register_sub_dev(&dp->sub_dev);
|
||||
|
||||
return 0;
|
||||
err_unreg_audio:
|
||||
if (dp->audio_pdev)
|
||||
platform_device_unregister(dp->audio_pdev);
|
||||
err_unreg_psr:
|
||||
rockchip_drm_psr_unregister(&dp->encoder);
|
||||
err_cleanup_encoder:
|
||||
|
||||
Reference in New Issue
Block a user