linux-omap.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
@ 2011-11-15 13:50 mythripk
  2011-11-18  7:30 ` Tomi Valkeinen
  0 siblings, 1 reply; 7+ messages in thread
From: mythripk @ 2011-11-15 13:50 UTC (permalink / raw)
  To: tomi.valkeinen, linux-omap; +Cc: Mythri P K, Ricardo Salveti de Araujo

From: Mythri P K <mythripk@ti.com>

Disables the internal pull resistor for SDA and SCL which are enabled by
default, as there are expernal 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>
---
 arch/arm/mach-omap2/board-4430sdp.c    |   13 ++++++++++++-
 arch/arm/mach-omap2/board-omap4panda.c |   14 +++++++++++++-
 arch/arm/mach-omap2/display.c          |   17 ++++++++++++++---
 include/video/omapdss.h                |    4 +++-
 4 files changed, 42 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index c3bd640..d0a82f9 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -826,7 +826,18 @@ static void omap_4430sdp_display_init(void)
 	sdp4430_lcd_init();
 	sdp4430_picodlp_init();
 	omap_display_init(&sdp4430_dss_data);
-	omap_hdmi_init();
+	/*
+	 * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
+	 * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
+	 * internal pull up resistor - This is a change needed in
+	 * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
+	 * external pull up are present. This is needed to avoid
+	 * EDID read failure.
+	 */
+	if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
+		omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
+	else
+		omap_hdmi_init(0);
 }
 
 #ifdef CONFIG_OMAP_MUX
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index d95df2e..44ff8e0 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -541,7 +541,19 @@ void omap4_panda_display_init(void)
 		pr_err("error initializing panda DVI\n");
 
 	omap_display_init(&omap4_panda_dss_data);
-	omap_hdmi_init();
+
+	/*
+	 * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
+	 * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
+	 * internal pull up resistor - This is a change needed in
+	 * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
+	 * external pull up are present. This is needed to avoid
+	 * EDID read failure.
+	 */
+	if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
+		omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
+	else
+		omap_hdmi_init(0);
 }
 
 static void __init omap4_panda_init(void)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 8436088..a75e179 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 = {
 	{ "dss_hdmi", "omapdss_hdmi", -1 },
 };
 
-static void omap4_hdmi_mux_pads()
+static void omap4_hdmi_mux_pads(int flags)
 {
+	u32 reg;
+	u16 control_i2c_1;
+
 	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
 	omap_mux_init_signal("hdmi_hpd",
 			OMAP_PIN_INPUT_PULLUP);
@@ -109,6 +112,14 @@ static void omap4_hdmi_mux_pads()
 			OMAP_PIN_INPUT_PULLUP);
 	omap_mux_init_signal("hdmi_ddc_sda",
 			OMAP_PIN_INPUT_PULLUP);
+
+	if (flags & OMAP_HDMI_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)
@@ -144,10 +155,10 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
 	return 0;
 }
 
-int omap_hdmi_init(void)
+int omap_hdmi_init(int flags)
 {
 	if (cpu_is_omap44xx())
-		omap4_hdmi_mux_pads();
+		omap4_hdmi_mux_pads(flags);
 
 	return 0;
 }
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 0cb0469..df585b5 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -49,6 +49,8 @@
 #define DISPC_IRQ_FRAMEDONETV		(1 << 24)
 #define DISPC_IRQ_WBBUFFEROVERFLOW	(1 << 25)
 
+#define OMAP_HDMI_EXTERNAL_PULLUP	0x1
+
 struct omap_dss_device;
 struct omap_overlay_manager;
 
@@ -310,7 +312,7 @@ struct omap_dss_board_info {
 /* Init with the board info */
 extern int omap_display_init(struct omap_dss_board_info *board_data);
 /* HDMI mux init*/
-extern int  omap_hdmi_init(void);
+extern int  omap_hdmi_init(int flags);
 
 struct omap_display_platform_data {
 	struct omap_dss_board_info *board_data;
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
  2011-11-15 13:50 mythripk
@ 2011-11-18  7:30 ` Tomi Valkeinen
  2011-11-22 13:07   ` K, Mythri P
  0 siblings, 1 reply; 7+ messages in thread
From: Tomi Valkeinen @ 2011-11-18  7:30 UTC (permalink / raw)
  To: mythripk; +Cc: linux-omap, Ricardo Salveti de Araujo

[-- Attachment #1: Type: text/plain, Size: 4408 bytes --]

On Tue, 2011-11-15 at 19:20 +0530, mythripk@ti.com wrote:
> From: Mythri P K <mythripk@ti.com>
> 
> Disables the internal pull resistor for SDA and SCL which are enabled by
> default, as there are expernal 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>
> ---
>  arch/arm/mach-omap2/board-4430sdp.c    |   13 ++++++++++++-
>  arch/arm/mach-omap2/board-omap4panda.c |   14 +++++++++++++-
>  arch/arm/mach-omap2/display.c          |   17 ++++++++++++++---
>  include/video/omapdss.h                |    4 +++-
>  4 files changed, 42 insertions(+), 6 deletions(-)
> 
> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
> index c3bd640..d0a82f9 100644
> --- a/arch/arm/mach-omap2/board-4430sdp.c
> +++ b/arch/arm/mach-omap2/board-4430sdp.c
> @@ -826,7 +826,18 @@ static void omap_4430sdp_display_init(void)
>  	sdp4430_lcd_init();
>  	sdp4430_picodlp_init();
>  	omap_display_init(&sdp4430_dss_data);
> -	omap_hdmi_init();
> +	/*
> +	 * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
> +	 * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
> +	 * internal pull up resistor - This is a change needed in
> +	 * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
> +	 * external pull up are present. This is needed to avoid
> +	 * EDID read failure.
> +	 */

I don't think this comment makes sense here. The register and bit
details are not seen here, they are handled in the display.c.

Also, the comment is still speaking of OMAP versions. This is about
board revisions. And this is SDP board file, no need to talk about
Panda.

So the text should be something like "44xxSDP rev XYZ and later have
external HDMI I2C line pull up. We detect the board revision with the
OMAP revision."

> +	if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))

If you compare omap_rev() you should also use cpu_is_omap at the same
time. In this case (cpu_is_omap443x() && omap_rev() >
OMAP4430_REV_ES2_2). Otherwise the omap_rev check could match, say,
omap3 or omap5 boards.

> +		omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
> +	else
> +		omap_hdmi_init(0);
>  }
>  
>  #ifdef CONFIG_OMAP_MUX
> diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
> index d95df2e..44ff8e0 100644
> --- a/arch/arm/mach-omap2/board-omap4panda.c
> +++ b/arch/arm/mach-omap2/board-omap4panda.c
> @@ -541,7 +541,19 @@ void omap4_panda_display_init(void)
>  		pr_err("error initializing panda DVI\n");
>  
>  	omap_display_init(&omap4_panda_dss_data);
> -	omap_hdmi_init();
> +
> +	/*
> +	 * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
> +	 * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
> +	 * internal pull up resistor - This is a change needed in
> +	 * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
> +	 * external pull up are present. This is needed to avoid
> +	 * EDID read failure.
> +	 */
> +	if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
> +		omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
> +	else
> +		omap_hdmi_init(0);
>  }
>  
>  static void __init omap4_panda_init(void)
> diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
> index 8436088..a75e179 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 = {
>  	{ "dss_hdmi", "omapdss_hdmi", -1 },
>  };
>  
> -static void omap4_hdmi_mux_pads()
> +static void omap4_hdmi_mux_pads(int flags)
>  {
> +	u32 reg;
> +	u16 control_i2c_1;
> +
>  	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
>  	omap_mux_init_signal("hdmi_hpd",
>  			OMAP_PIN_INPUT_PULLUP);
> @@ -109,6 +112,14 @@ static void omap4_hdmi_mux_pads()
>  			OMAP_PIN_INPUT_PULLUP);
>  	omap_mux_init_signal("hdmi_ddc_sda",
>  			OMAP_PIN_INPUT_PULLUP);
> +
> +	if (flags & OMAP_HDMI_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);

Indent is wrong here, and the parenthesis are extra.

 Tomi


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
  2011-11-18  7:30 ` Tomi Valkeinen
@ 2011-11-22 13:07   ` K, Mythri P
  2011-11-22 13:19     ` Tomi Valkeinen
  0 siblings, 1 reply; 7+ messages in thread
From: K, Mythri P @ 2011-11-22 13:07 UTC (permalink / raw)
  To: Tomi Valkeinen; +Cc: linux-omap, Ricardo Salveti de Araujo

Hi,

On Fri, Nov 18, 2011 at 1:00 PM, Tomi Valkeinen <tomi.valkeinen@ti.com> wrote:
> On Tue, 2011-11-15 at 19:20 +0530, mythripk@ti.com wrote:
>> From: Mythri P K <mythripk@ti.com>
>>
>> Disables the internal pull resistor for SDA and SCL which are enabled by
>> default, as there are expernal 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>
>> ---
>>  arch/arm/mach-omap2/board-4430sdp.c    |   13 ++++++++++++-
>>  arch/arm/mach-omap2/board-omap4panda.c |   14 +++++++++++++-
>>  arch/arm/mach-omap2/display.c          |   17 ++++++++++++++---
>>  include/video/omapdss.h                |    4 +++-
>>  4 files changed, 42 insertions(+), 6 deletions(-)
>>
>> diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
>> index c3bd640..d0a82f9 100644
>> --- a/arch/arm/mach-omap2/board-4430sdp.c
>> +++ b/arch/arm/mach-omap2/board-4430sdp.c
>> @@ -826,7 +826,18 @@ static void omap_4430sdp_display_init(void)
>>       sdp4430_lcd_init();
>>       sdp4430_picodlp_init();
>>       omap_display_init(&sdp4430_dss_data);
>> -     omap_hdmi_init();
>> +     /*
>> +      * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
>> +      * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
>> +      * internal pull up resistor - This is a change needed in
>> +      * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
>> +      * external pull up are present. This is needed to avoid
>> +      * EDID read failure.
>> +      */
>
> I don't think this comment makes sense here. The register and bit
> details are not seen here, they are handled in the display.c.
>
> Also, the comment is still speaking of OMAP versions. This is about
> board revisions. And this is SDP board file, no need to talk about
> Panda.
>
> So the text should be something like "44xxSDP rev XYZ and later have
> external HDMI I2C line pull up. We detect the board revision with the
> OMAP revision."
I shall update the comment and re-post.
>
>> +     if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
>
> If you compare omap_rev() you should also use cpu_is_omap at the same
> time. In this case (cpu_is_omap443x() && omap_rev() >
> OMAP4430_REV_ES2_2). Otherwise the omap_rev check could match, say,
> omap3 or omap5 boards.
Hmmm I am not really sure if that is needed, I dont think omap3 or
omap5 boards would be named with rev "OMAP4430"_REV_ES2_2 ???

Thanks and regards,
Mythri.
>
>> +             omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
>> +     else
>> +             omap_hdmi_init(0);
>>  }
>>
>>  #ifdef CONFIG_OMAP_MUX
>> diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
>> index d95df2e..44ff8e0 100644
>> --- a/arch/arm/mach-omap2/board-omap4panda.c
>> +++ b/arch/arm/mach-omap2/board-omap4panda.c
>> @@ -541,7 +541,19 @@ void omap4_panda_display_init(void)
>>               pr_err("error initializing panda DVI\n");
>>
>>       omap_display_init(&omap4_panda_dss_data);
>> -     omap_hdmi_init();
>> +
>> +     /*
>> +      * CONTROL_I2C_1: HDMI_DDC_SDA_PULLUPRESX (bit 28) and
>> +      * HDMI_DDC_SCL_PULLUPRESX (bit 24) are set to disable
>> +      * internal pull up resistor - This is a change needed in
>> +      * OMAP4460 and OMAP4430 ES2.3 SDP, Blaze and Panda as the
>> +      * external pull up are present. This is needed to avoid
>> +      * EDID read failure.
>> +      */
>> +     if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
>> +             omap_hdmi_init(OMAP_HDMI_EXTERNAL_PULLUP);
>> +     else
>> +             omap_hdmi_init(0);
>>  }
>>
>>  static void __init omap4_panda_init(void)
>> diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
>> index 8436088..a75e179 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 = {
>>       { "dss_hdmi", "omapdss_hdmi", -1 },
>>  };
>>
>> -static void omap4_hdmi_mux_pads()
>> +static void omap4_hdmi_mux_pads(int flags)
>>  {
>> +     u32 reg;
>> +     u16 control_i2c_1;
>> +
>>       /* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
>>       omap_mux_init_signal("hdmi_hpd",
>>                       OMAP_PIN_INPUT_PULLUP);
>> @@ -109,6 +112,14 @@ static void omap4_hdmi_mux_pads()
>>                       OMAP_PIN_INPUT_PULLUP);
>>       omap_mux_init_signal("hdmi_ddc_sda",
>>                       OMAP_PIN_INPUT_PULLUP);
>> +
>> +     if (flags & OMAP_HDMI_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);
>
> Indent is wrong here, and the parenthesis are extra.
>
>  Tomi
>
>
--
To unsubscribe from this list: send the line "unsubscribe linux-omap" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
  2011-11-22 13:07   ` K, Mythri P
@ 2011-11-22 13:19     ` Tomi Valkeinen
  0 siblings, 0 replies; 7+ messages in thread
From: Tomi Valkeinen @ 2011-11-22 13:19 UTC (permalink / raw)
  To: K, Mythri P; +Cc: linux-omap, Ricardo Salveti de Araujo

[-- Attachment #1: Type: text/plain, Size: 914 bytes --]

On Tue, 2011-11-22 at 18:37 +0530, K, Mythri P wrote:
> >> +     if (cpu_is_omap446x() || (omap_rev() > OMAP4430_REV_ES2_2))
> >
> > If you compare omap_rev() you should also use cpu_is_omap at the
> same
> > time. In this case (cpu_is_omap443x() && omap_rev() >
> > OMAP4430_REV_ES2_2). Otherwise the omap_rev check could match, say,
> > omap3 or omap5 boards.
> Hmmm I am not really sure if that is needed, I dont think omap3 or
> omap5 boards would be named with rev "OMAP4430"_REV_ES2_2 ??? 

OMAP4430_REV_ES2_2 is just a symbolic name for a define for some number.
There's no reason why OMAP3430_REV_ES1_0 wouldn't be defined to the same
number.

That said, looking at arch/arm/plat-omap/include/plat/cpu.h shows that
the REV defines do include an OMAP class number, and so omap_rev() does
return a number with cpu ID. So it seems you indeed do not need
cpu_is_omap443x() there.

 Tomi


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

* [PATCH v2 1/2] OMAPDSS: HDMI: Move duplicate code from boardfile
@ 2011-12-20  8:38 mythripk
  2011-12-20  8:38 ` [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up mythripk
  0 siblings, 1 reply; 7+ messages in thread
From: mythripk @ 2011-12-20  8:38 UTC (permalink / raw)
  To: tomi.valkeinen, linux-omap; +Cc: Mythri P K

From: Mythri P K <mythripk@ti.com>

Move duplicate HDMI mux_init code from omap4 and panda board file
to display file.

Signed-off-by: Mythri P K <mythripk@ti.com>
---
 arch/arm/mach-omap2/board-4430sdp.c    |   16 +---------------
 arch/arm/mach-omap2/board-omap4panda.c |   17 +----------------
 arch/arm/mach-omap2/display.c          |   23 +++++++++++++++++++++++
 include/video/omapdss.h                |    2 ++
 4 files changed, 27 insertions(+), 31 deletions(-)

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index 73b1e99..c3bd640 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -595,20 +595,6 @@ static void __init omap_sfh7741prox_init(void)
 			__func__, OMAP4_SFH7741_ENABLE_GPIO, error);
 }
 
-static void sdp4430_hdmi_mux_init(void)
-{
-	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
-	omap_mux_init_signal("hdmi_hpd",
-			OMAP_PIN_INPUT_PULLUP);
-	omap_mux_init_signal("hdmi_cec",
-			OMAP_PIN_INPUT_PULLUP);
-	/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
-	omap_mux_init_signal("hdmi_ddc_scl",
-			OMAP_PIN_INPUT_PULLUP);
-	omap_mux_init_signal("hdmi_ddc_sda",
-			OMAP_PIN_INPUT_PULLUP);
-}
-
 static struct gpio sdp4430_hdmi_gpios[] = {
 	{ HDMI_GPIO_HPD,	GPIOF_OUT_INIT_HIGH,	"hdmi_gpio_hpd"   },
 	{ HDMI_GPIO_LS_OE,	GPIOF_OUT_INIT_HIGH,	"hdmi_gpio_ls_oe" },
@@ -838,9 +824,9 @@ static void omap_4430sdp_display_init(void)
 		pr_err("%s: Could not get display_sel GPIO\n", __func__);
 
 	sdp4430_lcd_init();
-	sdp4430_hdmi_mux_init();
 	sdp4430_picodlp_init();
 	omap_display_init(&sdp4430_dss_data);
+	omap_hdmi_init();
 }
 
 #ifdef CONFIG_OMAP_MUX
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index a5b576b..d95df2e 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -478,21 +478,6 @@ int __init omap4_panda_dvi_init(void)
 	return r;
 }
 
-
-static void omap4_panda_hdmi_mux_init(void)
-{
-	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
-	omap_mux_init_signal("hdmi_hpd",
-			OMAP_PIN_INPUT_PULLUP);
-	omap_mux_init_signal("hdmi_cec",
-			OMAP_PIN_INPUT_PULLUP);
-	/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
-	omap_mux_init_signal("hdmi_ddc_scl",
-			OMAP_PIN_INPUT_PULLUP);
-	omap_mux_init_signal("hdmi_ddc_sda",
-			OMAP_PIN_INPUT_PULLUP);
-}
-
 static struct gpio panda_hdmi_gpios[] = {
 	{ HDMI_GPIO_HPD,	GPIOF_OUT_INIT_HIGH, "hdmi_gpio_hpd"   },
 	{ HDMI_GPIO_LS_OE,	GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" },
@@ -555,8 +540,8 @@ void omap4_panda_display_init(void)
 	if (r)
 		pr_err("error initializing panda DVI\n");
 
-	omap4_panda_hdmi_mux_init();
 	omap_display_init(&omap4_panda_dss_data);
+	omap_hdmi_init();
 }
 
 static void __init omap4_panda_init(void)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index dce9905..8436088 100644
--- a/arch/arm/mach-omap2/display.c
+++ b/arch/arm/mach-omap2/display.c
@@ -29,6 +29,7 @@
 #include <plat/omap-pm.h>
 #include <plat/common.h>
 
+#include "mux.h"
 #include "control.h"
 #include "display.h"
 
@@ -96,6 +97,20 @@ static const struct omap_dss_hwmod_data omap4_dss_hwmod_data[] __initdata = {
 	{ "dss_hdmi", "omapdss_hdmi", -1 },
 };
 
+static void omap4_hdmi_mux_pads()
+{
+	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
+	omap_mux_init_signal("hdmi_hpd",
+			OMAP_PIN_INPUT_PULLUP);
+	omap_mux_init_signal("hdmi_cec",
+			OMAP_PIN_INPUT_PULLUP);
+	/* PAD0_HDMI_DDC_SCL_PAD1_HDMI_DDC_SDA */
+	omap_mux_init_signal("hdmi_ddc_scl",
+			OMAP_PIN_INPUT_PULLUP);
+	omap_mux_init_signal("hdmi_ddc_sda",
+			OMAP_PIN_INPUT_PULLUP);
+}
+
 static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
 {
 	u32 enable_mask, enable_shift;
@@ -129,6 +144,14 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
 	return 0;
 }
 
+int omap_hdmi_init(void)
+{
+	if (cpu_is_omap44xx())
+		omap4_hdmi_mux_pads();
+
+	return 0;
+}
+
 static int omap_dsi_enable_pads(int dsi_id, unsigned lane_mask)
 {
 	if (cpu_is_omap44xx())
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 378c7ed..0cb0469 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -309,6 +309,8 @@ struct omap_dss_board_info {
 
 /* Init with the board info */
 extern int omap_display_init(struct omap_dss_board_info *board_data);
+/* HDMI mux init*/
+extern int omap_hdmi_init(void);
 
 struct omap_display_platform_data {
 	struct omap_dss_board_info *board_data;
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
  2011-12-20  8:38 [PATCH v2 1/2] OMAPDSS: HDMI: Move duplicate code from boardfile mythripk
@ 2011-12-20  8:38 ` mythripk
  2011-12-20  8:56   ` Tomi Valkeinen
  0 siblings, 1 reply; 7+ messages in thread
From: mythripk @ 2011-12-20  8:38 UTC (permalink / raw)
  To: tomi.valkeinen, linux-omap; +Cc: Mythri P K, Ricardo Salveti de Araujo

From: Mythri P K <mythripk@ti.com>

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>
---
 arch/arm/mach-omap2/board-4430sdp.c    |    9 ++++++++-
 arch/arm/mach-omap2/board-omap4panda.c |   10 +++++++++-
 arch/arm/mach-omap2/display.c          |   22 +++++++++++++++++++---
 include/video/omapdss.h                |    6 +++++-
 4 files changed, 41 insertions(+), 6 deletions(-)

diff --git a/arch/arm/mach-omap2/board-4430sdp.c b/arch/arm/mach-omap2/board-4430sdp.c
index c3bd640..4af874a 100644
--- a/arch/arm/mach-omap2/board-4430sdp.c
+++ b/arch/arm/mach-omap2/board-4430sdp.c
@@ -826,7 +826,14 @@ static void omap_4430sdp_display_init(void)
 	sdp4430_lcd_init();
 	sdp4430_picodlp_init();
 	omap_display_init(&sdp4430_dss_data);
-	omap_hdmi_init();
+	/*
+	 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
+	 * later have external pull up on the HDMI I2C lines
+	 */
+	if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
+		omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
+	else
+		omap_hdmi_init(0);
 }
 
 #ifdef CONFIG_OMAP_MUX
diff --git a/arch/arm/mach-omap2/board-omap4panda.c b/arch/arm/mach-omap2/board-omap4panda.c
index d95df2e..00103e3 100644
--- a/arch/arm/mach-omap2/board-omap4panda.c
+++ b/arch/arm/mach-omap2/board-omap4panda.c
@@ -541,7 +541,15 @@ void omap4_panda_display_init(void)
 		pr_err("error initializing panda DVI\n");
 
 	omap_display_init(&omap4_panda_dss_data);
-	omap_hdmi_init();
+
+	/*
+	 * OMAP4460SDP/Blaze and OMAP4430 ES2.3 SDP/Blaze boards and
+	 * later have external pull up on the HDMI I2C lines
+	 */
+	if (cpu_is_omap446x() || omap_rev() > OMAP4430_REV_ES2_2)
+		omap_hdmi_init(OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP);
+	else
+		omap_hdmi_init(0);
 }
 
 static void __init omap4_panda_init(void)
diff --git a/arch/arm/mach-omap2/display.c b/arch/arm/mach-omap2/display.c
index 8436088..ffd9bd9 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 = {
 	{ "dss_hdmi", "omapdss_hdmi", -1 },
 };
 
-static void omap4_hdmi_mux_pads()
+static void omap4_hdmi_mux_pads(enum omap_hdmi_flags flags)
 {
+	u32 reg;
+	u16 control_i2c_1;
+
 	/* PAD0_HDMI_HPD_PAD1_HDMI_CEC */
 	omap_mux_init_signal("hdmi_hpd",
 			OMAP_PIN_INPUT_PULLUP);
@@ -109,6 +112,19 @@ static void omap4_hdmi_mux_pads()
 			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)
@@ -144,10 +160,10 @@ static int omap4_dsi_mux_pads(int dsi_id, unsigned lanes)
 	return 0;
 }
 
-int omap_hdmi_init(void)
+int omap_hdmi_init(enum omap_hdmi_flags flags)
 {
 	if (cpu_is_omap44xx())
-		omap4_hdmi_mux_pads();
+		omap4_hdmi_mux_pads(flags);
 
 	return 0;
 }
diff --git a/include/video/omapdss.h b/include/video/omapdss.h
index 0cb0469..05da097 100644
--- a/include/video/omapdss.h
+++ b/include/video/omapdss.h
@@ -200,6 +200,10 @@ enum omap_dss_clk_source {
 	OMAP_DSS_CLK_SRC_DSI2_PLL_HSDIV_DSI,	/* OMAP4: PLL2_CLK2 */
 };
 
+enum omap_hdmi_flags {
+	OMAP_HDMI_SDA_SCL_EXTERNAL_PULLUP = 1 << 0,
+};
+
 /* RFBI */
 
 struct rfbi_timings {
@@ -310,7 +314,7 @@ struct omap_dss_board_info {
 /* Init with the board info */
 extern int omap_display_init(struct omap_dss_board_info *board_data);
 /* HDMI mux init*/
-extern int  omap_hdmi_init(void);
+extern int omap_hdmi_init(enum omap_hdmi_flags flags);
 
 struct omap_display_platform_data {
 	struct omap_dss_board_info *board_data;
-- 
1.7.5.4


^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up
  2011-12-20  8:38 ` [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up mythripk
@ 2011-12-20  8:56   ` Tomi Valkeinen
  0 siblings, 0 replies; 7+ messages in thread
From: Tomi Valkeinen @ 2011-12-20  8:56 UTC (permalink / raw)
  To: mythripk; +Cc: linux-omap, Ricardo Salveti de Araujo

[-- Attachment #1: Type: text/plain, Size: 1469 bytes --]

On Tue, 2011-12-20 at 14:08 +0530, mythripk@ti.com wrote:
> From: Mythri P K <mythripk@ti.com>
> 
> 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>

<snip>

>  struct rfbi_timings {
> @@ -310,7 +314,7 @@ struct omap_dss_board_info {
>  /* Init with the board info */
>  extern int omap_display_init(struct omap_dss_board_info *board_data);
>  /* HDMI mux init*/
> -extern int  omap_hdmi_init(void);
> +extern int omap_hdmi_init(enum omap_hdmi_flags flags);

These patches you sent are broken. You add the omap_hdmi_init line in
the previous patch, and change it here, but the lines are different
(this one has two spaces between "int" and "omap_hdmi_init", and the
previous doesn't) so the patches cannot be applied.

I guess you hand edited them, or did something else manually. Never do
that. Use git rebase or similar methods to edit the patches, and create
the whole patch set with git-format-patch in one go.

If you absolutely have to edit the patch files, apply them to your git
tree afterwards and use git-format-patch to create the patch series
before sending.

And an introductory email with version history would be nice also.

 Tomi


[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 836 bytes --]

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2011-12-20  8:56 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-20  8:38 [PATCH v2 1/2] OMAPDSS: HDMI: Move duplicate code from boardfile mythripk
2011-12-20  8:38 ` [PATCH v3 2/2] OMAPDSS: HDMI: Disable DDC internal pull up mythripk
2011-12-20  8:56   ` Tomi Valkeinen
  -- strict thread matches above, loose matches on Subject: below --
2011-11-15 13:50 mythripk
2011-11-18  7:30 ` Tomi Valkeinen
2011-11-22 13:07   ` K, Mythri P
2011-11-22 13:19     ` Tomi Valkeinen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).