|
@@ -648,9 +648,18 @@ void dss_set_dac_pwrdn_bgz(bool enable)
|
|
|
REG_FLD_MOD(DSS_CONTROL, enable, 5, 5); /* DAC Power-Down Control */
|
|
|
}
|
|
|
|
|
|
-void dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select hdmi)
|
|
|
+void dss_select_hdmi_venc_clk_source(enum dss_hdmi_venc_clk_source_select src)
|
|
|
{
|
|
|
- REG_FLD_MOD(DSS_CONTROL, hdmi, 15, 15); /* VENC_HDMI_SWITCH */
|
|
|
+ enum omap_display_type dp;
|
|
|
+ dp = dss_feat_get_supported_displays(OMAP_DSS_CHANNEL_DIGIT);
|
|
|
+
|
|
|
+ /* Complain about invalid selections */
|
|
|
+ WARN_ON((src == DSS_VENC_TV_CLK) && !(dp & OMAP_DISPLAY_TYPE_VENC));
|
|
|
+ WARN_ON((src == DSS_HDMI_M_PCLK) && !(dp & OMAP_DISPLAY_TYPE_HDMI));
|
|
|
+
|
|
|
+ /* Select only if we have options */
|
|
|
+ if ((dp & OMAP_DISPLAY_TYPE_VENC) && (dp & OMAP_DISPLAY_TYPE_HDMI))
|
|
|
+ REG_FLD_MOD(DSS_CONTROL, src, 15, 15); /* VENC_HDMI_SWITCH */
|
|
|
}
|
|
|
|
|
|
enum dss_hdmi_venc_clk_source_select dss_get_hdmi_venc_clk_source(void)
|
|
@@ -661,6 +670,9 @@ enum dss_hdmi_venc_clk_source_select dss_get_hdmi_venc_clk_source(void)
|
|
|
if ((displays & OMAP_DISPLAY_TYPE_HDMI) == 0)
|
|
|
return DSS_VENC_TV_CLK;
|
|
|
|
|
|
+ if ((displays & OMAP_DISPLAY_TYPE_VENC) == 0)
|
|
|
+ return DSS_HDMI_M_PCLK;
|
|
|
+
|
|
|
return REG_GET(DSS_CONTROL, 15, 15);
|
|
|
}
|
|
|
|