diff options
-rw-r--r-- | drivers/gpu/drm/exynos/exynos_hdmi.c | 21 | ||||
-rw-r--r-- | drivers/gpu/drm/exynos/regs-hdmi.h | 5 |
2 files changed, 26 insertions, 0 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_hdmi.c b/drivers/gpu/drm/exynos/exynos_hdmi.c index 98c587321521..68936e6aa6ab 100644 --- a/drivers/gpu/drm/exynos/exynos_hdmi.c +++ b/drivers/gpu/drm/exynos/exynos_hdmi.c | |||
@@ -2003,6 +2003,24 @@ static void hdmiphy_conf_reset(struct hdmi_context *hdata) | |||
2003 | mdelay(10); | 2003 | mdelay(10); |
2004 | } | 2004 | } |
2005 | 2005 | ||
2006 | static void hdmiphy_poweron(struct hdmi_context *hdata) | ||
2007 | { | ||
2008 | DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__); | ||
2009 | |||
2010 | if (hdata->type == HDMI_TYPE14) | ||
2011 | hdmi_reg_writemask(hdata, HDMI_PHY_CON_0, 0, | ||
2012 | HDMI_PHY_POWER_OFF_EN); | ||
2013 | } | ||
2014 | |||
2015 | static void hdmiphy_poweroff(struct hdmi_context *hdata) | ||
2016 | { | ||
2017 | DRM_DEBUG_KMS("[%d] %s\n", __LINE__, __func__); | ||
2018 | |||
2019 | if (hdata->type == HDMI_TYPE14) | ||
2020 | hdmi_reg_writemask(hdata, HDMI_PHY_CON_0, ~0, | ||
2021 | HDMI_PHY_POWER_OFF_EN); | ||
2022 | } | ||
2023 | |||
2006 | static void hdmiphy_conf_apply(struct hdmi_context *hdata) | 2024 | static void hdmiphy_conf_apply(struct hdmi_context *hdata) |
2007 | { | 2025 | { |
2008 | const u8 *hdmiphy_data; | 2026 | const u8 *hdmiphy_data; |
@@ -2175,6 +2193,8 @@ static void hdmi_poweron(struct hdmi_context *hdata) | |||
2175 | clk_enable(res->hdmiphy); | 2193 | clk_enable(res->hdmiphy); |
2176 | clk_enable(res->hdmi); | 2194 | clk_enable(res->hdmi); |
2177 | clk_enable(res->sclk_hdmi); | 2195 | clk_enable(res->sclk_hdmi); |
2196 | |||
2197 | hdmiphy_poweron(hdata); | ||
2178 | } | 2198 | } |
2179 | 2199 | ||
2180 | static void hdmi_poweroff(struct hdmi_context *hdata) | 2200 | static void hdmi_poweroff(struct hdmi_context *hdata) |
@@ -2193,6 +2213,7 @@ static void hdmi_poweroff(struct hdmi_context *hdata) | |||
2193 | * its reset state seems to meet the condition. | 2213 | * its reset state seems to meet the condition. |
2194 | */ | 2214 | */ |
2195 | hdmiphy_conf_reset(hdata); | 2215 | hdmiphy_conf_reset(hdata); |
2216 | hdmiphy_poweroff(hdata); | ||
2196 | 2217 | ||
2197 | clk_disable(res->sclk_hdmi); | 2218 | clk_disable(res->sclk_hdmi); |
2198 | clk_disable(res->hdmi); | 2219 | clk_disable(res->hdmi); |
diff --git a/drivers/gpu/drm/exynos/regs-hdmi.h b/drivers/gpu/drm/exynos/regs-hdmi.h index 970cdb518eb1..ef1b3eb3ba6e 100644 --- a/drivers/gpu/drm/exynos/regs-hdmi.h +++ b/drivers/gpu/drm/exynos/regs-hdmi.h | |||
@@ -176,6 +176,11 @@ | |||
176 | #define HDMI_PHY_CMU HDMI_CTRL_BASE(0x007C) | 176 | #define HDMI_PHY_CMU HDMI_CTRL_BASE(0x007C) |
177 | #define HDMI_CORE_RSTOUT HDMI_CTRL_BASE(0x0080) | 177 | #define HDMI_CORE_RSTOUT HDMI_CTRL_BASE(0x0080) |
178 | 178 | ||
179 | /* PHY Control bit definition */ | ||
180 | |||
181 | /* HDMI_PHY_CON_0 */ | ||
182 | #define HDMI_PHY_POWER_OFF_EN (1 << 0) | ||
183 | |||
179 | /* Video related registers */ | 184 | /* Video related registers */ |
180 | #define HDMI_YMAX HDMI_CORE_BASE(0x0060) | 185 | #define HDMI_YMAX HDMI_CORE_BASE(0x0060) |
181 | #define HDMI_YMIN HDMI_CORE_BASE(0x0064) | 186 | #define HDMI_YMIN HDMI_CORE_BASE(0x0064) |