mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-03-11 23:27:42 +07:00
OMAPDSS: HDMI: use core power on/off with edid & detect
This patch makes use of the hdmi_power_[on|off]_core() functions added in the previous patch. The functions are used when reading EDID or detecting if a monitor is connected. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com> Cc: Ricardo Neri <ricardo.neri@ti.com>
This commit is contained in:
parent
bb426fc963
commit
4489823ca7
@ -509,6 +509,8 @@ static inline unsigned long hdmi_get_pixel_clock(void)
|
|||||||
#endif
|
#endif
|
||||||
int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev);
|
int omapdss_hdmi_display_enable(struct omap_dss_device *dssdev);
|
||||||
void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev);
|
void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev);
|
||||||
|
int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev);
|
||||||
|
void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev);
|
||||||
void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev,
|
void omapdss_hdmi_display_set_timing(struct omap_dss_device *dssdev,
|
||||||
struct omap_video_timings *timings);
|
struct omap_video_timings *timings);
|
||||||
int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev,
|
int omapdss_hdmi_display_check_timing(struct omap_dss_device *dssdev,
|
||||||
|
@ -759,6 +759,41 @@ void omapdss_hdmi_display_disable(struct omap_dss_device *dssdev)
|
|||||||
mutex_unlock(&hdmi.lock);
|
mutex_unlock(&hdmi.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int omapdss_hdmi_core_enable(struct omap_dss_device *dssdev)
|
||||||
|
{
|
||||||
|
int r = 0;
|
||||||
|
|
||||||
|
DSSDBG("ENTER omapdss_hdmi_core_enable\n");
|
||||||
|
|
||||||
|
mutex_lock(&hdmi.lock);
|
||||||
|
|
||||||
|
hdmi.ip_data.hpd_gpio = hdmi.hpd_gpio;
|
||||||
|
|
||||||
|
r = hdmi_power_on_core(dssdev);
|
||||||
|
if (r) {
|
||||||
|
DSSERR("failed to power on device\n");
|
||||||
|
goto err0;
|
||||||
|
}
|
||||||
|
|
||||||
|
mutex_unlock(&hdmi.lock);
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
err0:
|
||||||
|
mutex_unlock(&hdmi.lock);
|
||||||
|
return r;
|
||||||
|
}
|
||||||
|
|
||||||
|
void omapdss_hdmi_core_disable(struct omap_dss_device *dssdev)
|
||||||
|
{
|
||||||
|
DSSDBG("Enter omapdss_hdmi_core_disable\n");
|
||||||
|
|
||||||
|
mutex_lock(&hdmi.lock);
|
||||||
|
|
||||||
|
hdmi_power_off_core(dssdev);
|
||||||
|
|
||||||
|
mutex_unlock(&hdmi.lock);
|
||||||
|
}
|
||||||
|
|
||||||
static int hdmi_get_clocks(struct platform_device *pdev)
|
static int hdmi_get_clocks(struct platform_device *pdev)
|
||||||
{
|
{
|
||||||
struct clk *clk;
|
struct clk *clk;
|
||||||
|
@ -334,7 +334,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev, u8 *buf, int len)
|
|||||||
need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED;
|
need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED;
|
||||||
|
|
||||||
if (need_enable) {
|
if (need_enable) {
|
||||||
r = omapdss_hdmi_display_enable(dssdev);
|
r = omapdss_hdmi_core_enable(dssdev);
|
||||||
if (r)
|
if (r)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@ -342,7 +342,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev, u8 *buf, int len)
|
|||||||
r = omapdss_hdmi_read_edid(buf, len);
|
r = omapdss_hdmi_read_edid(buf, len);
|
||||||
|
|
||||||
if (need_enable)
|
if (need_enable)
|
||||||
omapdss_hdmi_display_disable(dssdev);
|
omapdss_hdmi_core_disable(dssdev);
|
||||||
err:
|
err:
|
||||||
mutex_unlock(&hdmi.lock);
|
mutex_unlock(&hdmi.lock);
|
||||||
|
|
||||||
@ -359,7 +359,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev)
|
|||||||
need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED;
|
need_enable = dssdev->state == OMAP_DSS_DISPLAY_DISABLED;
|
||||||
|
|
||||||
if (need_enable) {
|
if (need_enable) {
|
||||||
r = omapdss_hdmi_display_enable(dssdev);
|
r = omapdss_hdmi_core_enable(dssdev);
|
||||||
if (r)
|
if (r)
|
||||||
goto err;
|
goto err;
|
||||||
}
|
}
|
||||||
@ -367,7 +367,7 @@ static bool hdmi_detect(struct omap_dss_device *dssdev)
|
|||||||
r = omapdss_hdmi_detect();
|
r = omapdss_hdmi_detect();
|
||||||
|
|
||||||
if (need_enable)
|
if (need_enable)
|
||||||
omapdss_hdmi_display_disable(dssdev);
|
omapdss_hdmi_core_disable(dssdev);
|
||||||
err:
|
err:
|
||||||
mutex_unlock(&hdmi.lock);
|
mutex_unlock(&hdmi.lock);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user