#include <linux/of_gpio.h>
 #include <linux/hdmi.h>
 #include <linux/component.h>
+#include <linux/mfd/syscon.h>
+#include <linux/regmap.h>
 
 #include <drm/exynos_drm.h>
 
        struct clk                      *sclk_hdmi;
        struct clk                      *sclk_pixel;
        struct clk                      *sclk_hdmiphy;
-       struct clk                      *hdmiphy;
        struct clk                      *mout_hdmi;
        struct regulator_bulk_data      *regul_bulk;
        int                             regul_count;
        const struct hdmiphy_config             *phy_confs;
        unsigned int                    phy_conf_count;
 
+       struct regmap                   *pmureg;
        enum hdmi_type                  type;
 };
 
        if (regulator_bulk_enable(res->regul_count, res->regul_bulk))
                DRM_DEBUG_KMS("failed to enable regulator bulk\n");
 
-       clk_prepare_enable(res->hdmiphy);
+       /* set pmu hdmiphy control bit to enable hdmiphy */
+       regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL,
+                       PMU_HDMI_PHY_ENABLE_BIT, 1);
+
        clk_prepare_enable(res->hdmi);
        clk_prepare_enable(res->sclk_hdmi);
 
 
        clk_disable_unprepare(res->sclk_hdmi);
        clk_disable_unprepare(res->hdmi);
-       clk_disable_unprepare(res->hdmiphy);
+
+       /* reset pmu hdmiphy control bit to disable hdmiphy */
+       regmap_update_bits(hdata->pmureg, PMU_HDMI_PHY_CONTROL,
+                       PMU_HDMI_PHY_ENABLE_BIT, 0);
+
        regulator_bulk_disable(res->regul_count, res->regul_bulk);
 
        pm_runtime_put_sync(hdata->dev);
                DRM_ERROR("failed to get clock 'sclk_hdmiphy'\n");
                goto fail;
        }
-       res->hdmiphy = devm_clk_get(dev, "hdmiphy");
-       if (IS_ERR(res->hdmiphy)) {
-               DRM_ERROR("failed to get clock 'hdmiphy'\n");
-               goto fail;
-       }
        res->mout_hdmi = devm_clk_get(dev, "mout_hdmi");
        if (IS_ERR(res->mout_hdmi)) {
                DRM_ERROR("failed to get clock 'mout_hdmi'\n");
                goto err_hdmiphy;
        }
 
+       hdata->pmureg = syscon_regmap_lookup_by_phandle(dev->of_node,
+                       "samsung,syscon-phandle");
+       if (IS_ERR(hdata->pmureg)) {
+               DRM_ERROR("syscon regmap lookup failed.\n");
+               goto err_hdmiphy;
+       }
+
        pm_runtime_enable(dev);
        hdmi_display.ctx = hdata;