|
@@ -72,6 +72,7 @@ struct mixer_resources {
|
|
|
spinlock_t reg_slock;
|
|
|
struct clk *mixer;
|
|
|
struct clk *vp;
|
|
|
+ struct clk *hdmi;
|
|
|
struct clk *sclk_mixer;
|
|
|
struct clk *sclk_hdmi;
|
|
|
struct clk *mout_mixer;
|
|
@@ -769,6 +770,12 @@ static int mixer_resources_init(struct mixer_context *mixer_ctx)
|
|
|
return -ENODEV;
|
|
|
}
|
|
|
|
|
|
+ mixer_res->hdmi = devm_clk_get(dev, "hdmi");
|
|
|
+ if (IS_ERR(mixer_res->hdmi)) {
|
|
|
+ dev_err(dev, "failed to get clock 'hdmi'\n");
|
|
|
+ return PTR_ERR(mixer_res->hdmi);
|
|
|
+ }
|
|
|
+
|
|
|
mixer_res->sclk_hdmi = devm_clk_get(dev, "sclk_hdmi");
|
|
|
if (IS_ERR(mixer_res->sclk_hdmi)) {
|
|
|
dev_err(dev, "failed to get clock 'sclk_hdmi'\n");
|
|
@@ -1092,6 +1099,7 @@ static void mixer_poweron(struct exynos_drm_crtc *crtc)
|
|
|
pm_runtime_get_sync(ctx->dev);
|
|
|
|
|
|
clk_prepare_enable(res->mixer);
|
|
|
+ clk_prepare_enable(res->hdmi);
|
|
|
if (ctx->vp_enabled) {
|
|
|
clk_prepare_enable(res->vp);
|
|
|
if (ctx->has_sclk)
|
|
@@ -1131,6 +1139,7 @@ static void mixer_poweroff(struct exynos_drm_crtc *crtc)
|
|
|
ctx->powered = false;
|
|
|
mutex_unlock(&ctx->mixer_mutex);
|
|
|
|
|
|
+ clk_disable_unprepare(res->hdmi);
|
|
|
clk_disable_unprepare(res->mixer);
|
|
|
if (ctx->vp_enabled) {
|
|
|
clk_disable_unprepare(res->vp);
|