diff options
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_drv.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_hdmi.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_mixer.c | 11 |
3 files changed, 8 insertions, 23 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_drv.c b/drivers/gpu/drm/exynos/exynos_drm_drv.c index 121470a83d1a..1bcbe07cecfc 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_drv.c +++ b/drivers/gpu/drm/exynos/exynos_drm_drv.c | |||
| @@ -645,18 +645,6 @@ static int exynos_drm_init(void) | |||
| 645 | if (!is_exynos) | 645 | if (!is_exynos) |
| 646 | return -ENODEV; | 646 | return -ENODEV; |
| 647 | 647 | ||
| 648 | /* | ||
| 649 | * Register device object only in case of Exynos SoC. | ||
| 650 | * | ||
| 651 | * Below codes resolves temporarily infinite loop issue incurred | ||
| 652 | * by Exynos drm driver when using multi-platform kernel. | ||
| 653 | * So these codes will be replaced with more generic way later. | ||
| 654 | */ | ||
| 655 | if (!of_machine_is_compatible("samsung,exynos3") && | ||
| 656 | !of_machine_is_compatible("samsung,exynos4") && | ||
| 657 | !of_machine_is_compatible("samsung,exynos5")) | ||
| 658 | return -ENODEV; | ||
| 659 | |||
| 660 | exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1, | 648 | exynos_drm_pdev = platform_device_register_simple("exynos-drm", -1, |
| 661 | NULL, 0); | 649 | NULL, 0); |
| 662 | if (IS_ERR(exynos_drm_pdev)) | 650 | if (IS_ERR(exynos_drm_pdev)) |
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 5765a161abdd..98051e8e855a 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c | |||
| @@ -1669,7 +1669,6 @@ static void hdmi_mode_apply(struct hdmi_context *hdata) | |||
| 1669 | 1669 | ||
| 1670 | static void hdmiphy_conf_reset(struct hdmi_context *hdata) | 1670 | static void hdmiphy_conf_reset(struct hdmi_context *hdata) |
| 1671 | { | 1671 | { |
| 1672 | u8 buffer[2]; | ||
| 1673 | u32 reg; | 1672 | u32 reg; |
| 1674 | 1673 | ||
| 1675 | clk_disable_unprepare(hdata->res.sclk_hdmi); | 1674 | clk_disable_unprepare(hdata->res.sclk_hdmi); |
| @@ -1677,11 +1676,8 @@ static void hdmiphy_conf_reset(struct hdmi_context *hdata) | |||
| 1677 | clk_prepare_enable(hdata->res.sclk_hdmi); | 1676 | clk_prepare_enable(hdata->res.sclk_hdmi); |
| 1678 | 1677 | ||
| 1679 | /* operation mode */ | 1678 | /* operation mode */ |
| 1680 | buffer[0] = 0x1f; | 1679 | hdmiphy_reg_writeb(hdata, HDMIPHY_MODE_SET_DONE, |
| 1681 | buffer[1] = 0x00; | 1680 | HDMI_PHY_ENABLE_MODE_SET); |
| 1682 | |||
| 1683 | if (hdata->hdmiphy_port) | ||
| 1684 | i2c_master_send(hdata->hdmiphy_port, buffer, 2); | ||
| 1685 | 1681 | ||
| 1686 | if (hdata->type == HDMI_TYPE13) | 1682 | if (hdata->type == HDMI_TYPE13) |
| 1687 | reg = HDMI_V13_PHY_RSTOUT; | 1683 | reg = HDMI_V13_PHY_RSTOUT; |
diff --git a/drivers/gpu/drm/exynos/exynos_mixer.c b/drivers/gpu/drm/exynos/exynos_mixer.c index 820b76234ef4..064ed6597def 100644 --- a/drivers/gpu/drm/exynos/exynos_mixer.c +++ b/drivers/gpu/drm/exynos/exynos_mixer.c | |||
| @@ -1026,6 +1026,7 @@ static void mixer_win_disable(struct exynos_drm_manager *mgr, int zpos) | |||
| 1026 | static void mixer_wait_for_vblank(struct exynos_drm_manager *mgr) | 1026 | static void mixer_wait_for_vblank(struct exynos_drm_manager *mgr) |
| 1027 | { | 1027 | { |
| 1028 | struct mixer_context *mixer_ctx = mgr_to_mixer(mgr); | 1028 | struct mixer_context *mixer_ctx = mgr_to_mixer(mgr); |
| 1029 | int err; | ||
| 1029 | 1030 | ||
| 1030 | mutex_lock(&mixer_ctx->mixer_mutex); | 1031 | mutex_lock(&mixer_ctx->mixer_mutex); |
| 1031 | if (!mixer_ctx->powered) { | 1032 | if (!mixer_ctx->powered) { |
| @@ -1034,7 +1035,11 @@ static void mixer_wait_for_vblank(struct exynos_drm_manager *mgr) | |||
| 1034 | } | 1035 | } |
| 1035 | mutex_unlock(&mixer_ctx->mixer_mutex); | 1036 | mutex_unlock(&mixer_ctx->mixer_mutex); |
| 1036 | 1037 | ||
| 1037 | drm_vblank_get(mgr->crtc->dev, mixer_ctx->pipe); | 1038 | err = drm_vblank_get(mgr->crtc->dev, mixer_ctx->pipe); |
| 1039 | if (err < 0) { | ||
| 1040 | DRM_DEBUG_KMS("failed to acquire vblank counter\n"); | ||
| 1041 | return; | ||
| 1042 | } | ||
| 1038 | 1043 | ||
| 1039 | atomic_set(&mixer_ctx->wait_vsync_event, 1); | 1044 | atomic_set(&mixer_ctx->wait_vsync_event, 1); |
| 1040 | 1045 | ||
| @@ -1262,8 +1267,6 @@ static int mixer_bind(struct device *dev, struct device *manager, void *data) | |||
| 1262 | return ret; | 1267 | return ret; |
| 1263 | } | 1268 | } |
| 1264 | 1269 | ||
| 1265 | pm_runtime_enable(dev); | ||
| 1266 | |||
| 1267 | return 0; | 1270 | return 0; |
| 1268 | } | 1271 | } |
| 1269 | 1272 | ||
| @@ -1272,8 +1275,6 @@ static void mixer_unbind(struct device *dev, struct device *master, void *data) | |||
| 1272 | struct mixer_context *ctx = dev_get_drvdata(dev); | 1275 | struct mixer_context *ctx = dev_get_drvdata(dev); |
| 1273 | 1276 | ||
| 1274 | mixer_mgr_remove(&ctx->manager); | 1277 | mixer_mgr_remove(&ctx->manager); |
| 1275 | |||
| 1276 | pm_runtime_disable(dev); | ||
| 1277 | } | 1278 | } |
| 1278 | 1279 | ||
| 1279 | static const struct component_ops mixer_component_ops = { | 1280 | static const struct component_ops mixer_component_ops = { |
