]> Pileus Git - ~andy/linux/blobdiff - arch/arm/mach-omap2/display.c
Merge commit 'v3.3-rc1' into fbdev-next
[~andy/linux] / arch / arm / mach-omap2 / display.c
index bc6cf863a563bcf51f76240598ca6424b92939fe..3677b1f58b85f32c25e9c4f1e886a0e259ee9102 100644 (file)
@@ -30,6 +30,7 @@
 #include <plat/omap-pm.h>
 #include "common.h"
 
+#include "mux.h"
 #include "control.h"
 #include "display.h"
 
@@ -97,6 +98,32 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initdata = {
        { "dss_hdmi", "omapdss_hdmi", -1 },
 };
 
+static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags)
+{
+       u32 reg;
+       u16 control_i2c_1;
+
+       omap_mux_init_signal("hdmi_cec",
+                       OMAP_PIN_INPUT_PULLUP);
+       omap_mux_init_signal("hdmi_ddc_scl",
+                       OMAP_PIN_INPUT_PULLUP);
+       omap_mux_init_signal("hdmi_ddc_sda",
+                       OMAP_PIN_INPUT_PULLUP);
+
+       /*
+        * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
+        * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
+        * internal pull up resistor.
+        */
+       if (flags & OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP) {
+               control_i2c_1 = OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_1;
+               reg = omap4_ctrl_pad_readl(control_i2c_1);
+               reg |= (OMAP4_HDMI_DDC_SDA_PULLUPRESX_MASK |
+                       OMAP4_HDMI_DDC_SCL_PULLUPRESX_MASK);
+                       omap4_ctrl_pad_writel(reg, control_i2c_1);
+       }
+}
+
 static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
 {
        u32 enable_mask, enable_shift;
@@ -130,6 +157,14 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
        return 0;
 }
 
+int omap_hdmi_init(enum omap_hdmi_flags flags)
+{
+       if (cpu_is_omap44xx())
+               omap4_hdmi_mux_pads(flags);
+
+       return 0;
+}
+
 static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask)
 {
        if (cpu_is_omap44xx())