omapdrm: hdmi4: make low-level functions available
Three low-level functions in hdmi4.c and hdmi4_core.c are made available for use by the OMAP4 CEC support. Renamed the prefix to hdmi4 since these are OMAP4 specific. These function deal with the HDMI core and are needed to power it up for use with CEC, even when the HPD is low. Background: even if the HPD is low it should still be possible to use CEC. Some displays will set the HPD low when they go into standby or when they switch to another input, but CEC is still available and able to wake up/change input for such a display. This is explicitly allowed by the CEC standard. Signed-off-by: Hans Verkuil <hans.verkuil@cisco.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
This commit is contained in:
parent
eb2f17b496
commit
5bebbbfecc
|
@ -393,11 +393,11 @@ static void hdmi_display_disable(struct omap_dss_device *dssdev)
|
||||||
mutex_unlock(&hdmi.lock);
|
mutex_unlock(&hdmi.lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int hdmi_core_enable(struct omap_dss_device *dssdev)
|
int hdmi4_core_enable(struct omap_dss_device *dssdev)
|
||||||
{
|
{
|
||||||
int r = 0;
|
int r = 0;
|
||||||
|
|
||||||
DSSDBG("ENTER omapdss_hdmi_core_enable\n");
|
DSSDBG("ENTER omapdss_hdmi4_core_enable\n");
|
||||||
|
|
||||||
mutex_lock(&hdmi.lock);
|
mutex_lock(&hdmi.lock);
|
||||||
|
|
||||||
|
@ -415,9 +415,9 @@ err0:
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hdmi_core_disable(struct omap_dss_device *dssdev)
|
void hdmi4_core_disable(struct omap_dss_device *dssdev)
|
||||||
{
|
{
|
||||||
DSSDBG("Enter omapdss_hdmi_core_disable\n");
|
DSSDBG("Enter omapdss_hdmi4_core_disable\n");
|
||||||
|
|
||||||
mutex_lock(&hdmi.lock);
|
mutex_lock(&hdmi.lock);
|
||||||
|
|
||||||
|
@ -475,7 +475,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev,
|
||||||
need_enable = hdmi.core_enabled == false;
|
need_enable = hdmi.core_enabled == false;
|
||||||
|
|
||||||
if (need_enable) {
|
if (need_enable) {
|
||||||
r = hdmi_core_enable(dssdev);
|
r = hdmi4_core_enable(dssdev);
|
||||||
if (r)
|
if (r)
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
@ -483,7 +483,7 @@ static int hdmi_read_edid(struct omap_dss_device *dssdev,
|
||||||
r = read_edid(edid, len);
|
r = read_edid(edid, len);
|
||||||
|
|
||||||
if (need_enable)
|
if (need_enable)
|
||||||
hdmi_core_disable(dssdev);
|
hdmi4_core_disable(dssdev);
|
||||||
|
|
||||||
return r;
|
return r;
|
||||||
}
|
}
|
||||||
|
|
|
@ -208,9 +208,9 @@ static void hdmi_core_init(struct hdmi_core_video_config *video_cfg)
|
||||||
video_cfg->tclk_sel_clkmult = HDMI_FPLL10IDCK;
|
video_cfg->tclk_sel_clkmult = HDMI_FPLL10IDCK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void hdmi_core_powerdown_disable(struct hdmi_core_data *core)
|
void hdmi4_core_powerdown_disable(struct hdmi_core_data *core)
|
||||||
{
|
{
|
||||||
DSSDBG("Enter hdmi_core_powerdown_disable\n");
|
DSSDBG("Enter hdmi4_core_powerdown_disable\n");
|
||||||
REG_FLD_MOD(core->base, HDMI_CORE_SYS_SYS_CTRL1, 0x1, 0, 0);
|
REG_FLD_MOD(core->base, HDMI_CORE_SYS_SYS_CTRL1, 0x1, 0, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -336,7 +336,7 @@ void hdmi4_configure(struct hdmi_core_data *core,
|
||||||
hdmi_core_swreset_assert(core);
|
hdmi_core_swreset_assert(core);
|
||||||
|
|
||||||
/* power down off */
|
/* power down off */
|
||||||
hdmi_core_powerdown_disable(core);
|
hdmi4_core_powerdown_disable(core);
|
||||||
|
|
||||||
v_core_cfg.pkt_mode = HDMI_PACKETMODE24BITPERPIXEL;
|
v_core_cfg.pkt_mode = HDMI_PACKETMODE24BITPERPIXEL;
|
||||||
v_core_cfg.hdmi_dvi = cfg->hdmi_dvi_mode;
|
v_core_cfg.hdmi_dvi = cfg->hdmi_dvi_mode;
|
||||||
|
|
|
@ -266,6 +266,10 @@ void hdmi4_configure(struct hdmi_core_data *core, struct hdmi_wp_data *wp,
|
||||||
void hdmi4_core_dump(struct hdmi_core_data *core, struct seq_file *s);
|
void hdmi4_core_dump(struct hdmi_core_data *core, struct seq_file *s);
|
||||||
int hdmi4_core_init(struct platform_device *pdev, struct hdmi_core_data *core);
|
int hdmi4_core_init(struct platform_device *pdev, struct hdmi_core_data *core);
|
||||||
|
|
||||||
|
int hdmi4_core_enable(struct omap_dss_device *dssdev);
|
||||||
|
void hdmi4_core_disable(struct omap_dss_device *dssdev);
|
||||||
|
void hdmi4_core_powerdown_disable(struct hdmi_core_data *core);
|
||||||
|
|
||||||
int hdmi4_audio_start(struct hdmi_core_data *core, struct hdmi_wp_data *wp);
|
int hdmi4_audio_start(struct hdmi_core_data *core, struct hdmi_wp_data *wp);
|
||||||
void hdmi4_audio_stop(struct hdmi_core_data *core, struct hdmi_wp_data *wp);
|
void hdmi4_audio_stop(struct hdmi_core_data *core, struct hdmi_wp_data *wp);
|
||||||
int hdmi4_audio_config(struct hdmi_core_data *core, struct hdmi_wp_data *wp,
|
int hdmi4_audio_config(struct hdmi_core_data *core, struct hdmi_wp_data *wp,
|
||||||
|
|
Loading…
Reference in a new issue