aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-omap2
diff options
context:
space:
mode:
authorMythri P K <mythripk@ti.com>2012-01-02 03:32:38 -0500
committerTomi Valkeinen <tomi.valkeinen@ti.com>2012-01-05 03:34:50 -0500
commit9a9016832d2601a290db4dce6dd55552bdae5b1a (patch)
tree4b21ff53e9308f7258512c0ced048e99687e2d63 /arch/arm/mach-omap2
parentee9dfd82ff1317ac5c0147fe21508ad6d7df4cff (diff)
OMAPDSS: HDMI: Disable DDC internal pull up
Disables the internal pull resistor for SDA and SCL which are enabled by default, as there are external pull up's in 4460 and 4430 ES2.3 SDP, Blaze and Panda Boards, It is done to avoid the EDID read failure. Signed-off-by: Ricardo Salveti de Araujo <ricardo.salveti@linaro.org> Signed-off-by: Mythri P K <mythripk@ti.com> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
Diffstat (limited to 'arch/arm/mach-omap2')
-rw-r--r--arch/arm/mach-omap2/board-4430sdp.c9
-rw-r--r--arch/arm/mach-omap2/board-omap4panda.c10
-rw-r--r--arch/arm/mach-omap2/display.c22
3 files changed, 36 insertions, 5 deletions
diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 312b158240ed..e1fe304ce361 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -814,7 +814,14 @@ static void omap_4430sdp_display_init(void)
814 sdp4430_lcd_init(); 814 sdp4430_lcd_init();
815 sdp4430_picodlp_init(); 815 sdp4430_picodlp_init();
816 omap_display_init(&sdp4430_dss_data); 816 omap_display_init(&sdp4430_dss_data);
817 omap_hdmi_init(); 817 /*
818 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
819 * later have external pull up on the HDMI I2C lines
820 */
821 if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
822 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
823 else
824 omap_hdmi_init(0);
818} 825}
819 826
820#ifdef CONFIG_OMAP_MUX 827#ifdef CONFIG_OMAP_MUX
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index 9cc41ce29dab..3e1c507fb01f 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -530,7 +530,15 @@ void omap4_panda_display_init(void)
530 pr_err("error initializing panda DVI\n"); 530 pr_err("error initializing panda DVI\n");
531 531
532 omap_display_init(&omap4_panda_dss_data); 532 omap_display_init(&omap4_panda_dss_data);
533 omap_hdmi_init(); 533
534 /*
535 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
536 * later have external pull up on the HDMI I2C lines
537 */
538 if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
539 omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
540 else
541 omap_hdmi_init(0);
534} 542}
535 543
536static void __init omap4_panda_init(void) 544static void __init omap4_panda_init(void)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 8436088ffe13..ffd9bd983023 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -97,8 +97,11 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initdata = {
97 { "dss_hdmi", "omapdss_hdmi", -1 }, 97 { "dss_hdmi", "omapdss_hdmi", -1 },
98}; 98};
99 99
100static void omap4_hdmi_mux_pads() 100static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags)
101{ 101{
102 u32 reg;
103 u16 control_i2c_1;
104
102 /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */ 105 /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
103 omap_mux_init_signal("hdmi_hpd", 106 omap_mux_init_signal("hdmi_hpd",
104 OMAP_PIN_INPUT_PULLUP); 107 OMAP_PIN_INPUT_PULLUP);
@@ -109,6 +112,19 @@ static void omap4_hdmi_mux_pads()
109 OMAP_PIN_INPUT_PULLUP); 112 OMAP_PIN_INPUT_PULLUP);
110 omap_mux_init_signal("hdmi_ddc_sda", 113 omap_mux_init_signal("hdmi_ddc_sda",
111 OMAP_PIN_INPUT_PULLUP); 114 OMAP_PIN_INPUT_PULLUP);
115
116 /*
117 * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
118 * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
119 * internal pull up resistor.
120 */
121 if (flags & OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP) {
122 control_i2c_1 = OMAP4_CTRL_MODULE_PAD_CORE_CONTROL_I2C_1;
123 reg = omap4_ctrl_pad_readl(control_i2c_1);
124 reg |= (OMAP4_HDMI_DDC_SDA_PULLUPRESX_MASK |
125 OMAP4_HDMI_DDC_SCL_PULLUPRESX_MASK);
126 omap4_ctrl_pad_writel(reg, control_i2c_1);
127 }
112} 128}
113 129
114static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes) 130static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
@@ -144,10 +160,10 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
144 return 0; 160 return 0;
145} 161}
146 162
147int omap_hdmi_init(void) 163int omap_hdmi_init(enum omap_hdmi_flags flags)
148{ 164{
149 if (cpu_is_omap44xx()) 165 if (cpu_is_omap44xx())
150 omap4_hdmi_mux_pads(); 166 omap4_hdmi_mux_pads(flags);
151 167
152 return 0; 168 return 0;
153} 169}