From 6bb8c983cef87fa326ea7bc4206c1fcffc24c256 Mon Sep 17 00:00:00 2001 From: Greg Kroah-Hartman Date: Wed, 7 Mar 2012 12:02:57 -0800 Subject: [PATCH] 3.0-stable patches added patches: omap-4430sdp-panda-add-hdmi-hpd-gpio.patch omapdss-hdmi-phy-burnout-fix.patch --- ...omap-4430sdp-panda-add-hdmi-hpd-gpio.patch | 74 ++++++ queue-3.0/omapdss-hdmi-phy-burnout-fix.patch | 225 ++++++++++++++++++ queue-3.0/series | 2 + 3 files changed, 301 insertions(+) create mode 100644 queue-3.0/omap-4430sdp-panda-add-hdmi-hpd-gpio.patch create mode 100644 queue-3.0/omapdss-hdmi-phy-burnout-fix.patch diff --git a/queue-3.0/omap-4430sdp-panda-add-hdmi-hpd-gpio.patch b/queue-3.0/omap-4430sdp-panda-add-hdmi-hpd-gpio.patch new file mode 100644 index 00000000000..4740864fe00 --- /dev/null +++ b/queue-3.0/omap-4430sdp-panda-add-hdmi-hpd-gpio.patch @@ -0,0 +1,74 @@ +From aa74274b464d4aa24703963ac89a0ee942d5d267 Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 17 Jan 2012 11:05:32 +0200 +Subject: OMAP: 4430SDP/Panda: add HDMI HPD gpio + +From: Tomi Valkeinen + +commit aa74274b464d4aa24703963ac89a0ee942d5d267 upstream. + +Both Panda and 4430SDP use GPIO 63 as HDMI hot-plug-detect. Configure +this GPIO in the board files. + +Signed-off-by: Tomi Valkeinen +Acked-by: Tony Lindgren +Signed-off-by: Greg Kroah-Hartman + + +--- + arch/arm/mach-omap2/board-4430sdp.c | 3 +++ + arch/arm/mach-omap2/board-omap4panda.c | 3 +++ + 2 files changed, 6 insertions(+) + +--- a/arch/arm/mach-omap2/board-4430sdp.c ++++ b/arch/arm/mach-omap2/board-4430sdp.c +@@ -51,6 +51,7 @@ + #define OMAP4_SFH7741_ENABLE_GPIO 188 + #define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */ + #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ ++#define HDMI_GPIO_HPD 63 /* Hotplug detect */ + + static const int sdp4430_keymap[] = { + KEY(0, 0, KEY_E), +@@ -589,6 +590,7 @@ static void sdp4430_hdmi_mux_init(void) + static struct gpio sdp4430_hdmi_gpios[] = { + { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" }, + { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" }, ++ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" }, + }; + + static int sdp4430_panel_enable_hdmi(struct omap_dss_device *dssdev) +@@ -634,6 +636,7 @@ void omap_4430sdp_display_init(void) + + omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT); + omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT); ++ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN); + } + + #ifdef CONFIG_OMAP_MUX +--- a/arch/arm/mach-omap2/board-omap4panda.c ++++ b/arch/arm/mach-omap2/board-omap4panda.c +@@ -54,6 +54,7 @@ + #define GPIO_WIFI_IRQ 53 + #define HDMI_GPIO_CT_CP_HPD 60 /* HPD mode enable/disable */ + #define HDMI_GPIO_LS_OE 41 /* Level shifter for HDMI */ ++#define HDMI_GPIO_HPD 63 /* Hotplug detect */ + + /* wl127x BT, FM, GPS connectivity chip */ + static int wl1271_gpios[] = {46, -1, -1}; +@@ -625,6 +626,7 @@ static void omap4_panda_hdmi_mux_init(vo + static struct gpio panda_hdmi_gpios[] = { + { HDMI_GPIO_CT_CP_HPD, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ct_cp_hpd" }, + { HDMI_GPIO_LS_OE, GPIOF_OUT_INIT_HIGH, "hdmi_gpio_ls_oe" }, ++ { HDMI_GPIO_HPD, GPIOF_DIR_IN, "hdmi_gpio_hpd" }, + }; + + static int omap4_panda_panel_enable_hdmi(struct omap_dss_device *dssdev) +@@ -677,6 +679,7 @@ void omap4_panda_display_init(void) + + omap_mux_init_gpio(HDMI_GPIO_LS_OE, OMAP_PIN_OUTPUT); + omap_mux_init_gpio(HDMI_GPIO_CT_CP_HPD, OMAP_PIN_OUTPUT); ++ omap_mux_init_gpio(HDMI_GPIO_HPD, OMAP_PIN_INPUT_PULLDOWN); + } + + static void __init omap4_panda_init(void) diff --git a/queue-3.0/omapdss-hdmi-phy-burnout-fix.patch b/queue-3.0/omapdss-hdmi-phy-burnout-fix.patch new file mode 100644 index 00000000000..0d1c53018a7 --- /dev/null +++ b/queue-3.0/omapdss-hdmi-phy-burnout-fix.patch @@ -0,0 +1,225 @@ +From c49d005b6cc8491fad5b24f82805be2d6bcbd3dd Mon Sep 17 00:00:00 2001 +From: Tomi Valkeinen +Date: Tue, 17 Jan 2012 11:09:57 +0200 +Subject: OMAPDSS: HDMI: PHY burnout fix + +From: Tomi Valkeinen + +commit c49d005b6cc8491fad5b24f82805be2d6bcbd3dd upstream. + +A hardware bug in the OMAP4 HDMI PHY causes physical damage to the board +if the HDMI PHY is kept powered on when the cable is not connected. + +This patch solves the problem by adding hot-plug-detection into the HDMI +IP driver. This is not a real HPD support in the sense that nobody else +than the IP driver gets to know about the HPD events, but is only meant +to fix the HW bug. + +The strategy is simple: If the display device is turned off by the user, +the PHY power is set to OFF. When the display device is turned on by the +user, the PHY power is set either to LDOON or TXON, depending on whether +the HDMI cable is connected. + +The reason to avoid PHY OFF when the display device is on, but the cable +is disconnected, is that when the PHY is turned OFF, the HDMI IP is not +"ticking" and thus the DISPC does not receive pixel clock from the HDMI +IP. This would, for example, prevent any VSYNCs from happening, and +would thus affect the users of omapdss. By using LDOON when the cable is +disconnected we'll avoid the HW bug, but keep the HDMI working as usual +from the user's point of view. + +Signed-off-by: Tomi Valkeinen +Signed-off-by: Greg Kroah-Hartman + +--- + arch/arm/mach-omap2/board-4430sdp.c | 5 ++ + arch/arm/mach-omap2/board-omap4panda.c | 5 ++ + drivers/video/omap2/dss/hdmi.c | 71 +++++++++++++++++++++++++++++++-- + include/video/omapdss.h | 5 ++ + 4 files changed, 82 insertions(+), 4 deletions(-) + +--- a/arch/arm/mach-omap2/board-4430sdp.c ++++ b/arch/arm/mach-omap2/board-4430sdp.c +@@ -610,6 +610,10 @@ static void sdp4430_panel_disable_hdmi(s + gpio_free_array(sdp4430_hdmi_gpios, ARRAY_SIZE(sdp4430_hdmi_gpios)); + } + ++static struct omap_dss_hdmi_data sdp4430_hdmi_data = { ++ .hpd_gpio = HDMI_GPIO_HPD, ++}; ++ + static struct omap_dss_device sdp4430_hdmi_device = { + .name = "hdmi", + .driver_name = "hdmi_panel", +@@ -617,6 +621,7 @@ static struct omap_dss_device sdp4430_hd + .platform_enable = sdp4430_panel_enable_hdmi, + .platform_disable = sdp4430_panel_disable_hdmi, + .channel = OMAP_DSS_CHANNEL_DIGIT, ++ .data = &sdp4430_hdmi_data, + }; + + static struct omap_dss_device *sdp4430_dss_devices[] = { +--- a/arch/arm/mach-omap2/board-omap4panda.c ++++ b/arch/arm/mach-omap2/board-omap4panda.c +@@ -646,6 +646,10 @@ static void omap4_panda_panel_disable_hd + gpio_free_array(panda_hdmi_gpios, ARRAY_SIZE(panda_hdmi_gpios)); + } + ++static struct omap_dss_hdmi_data omap4_panda_hdmi_data = { ++ .hpd_gpio = HDMI_GPIO_HPD, ++}; ++ + static struct omap_dss_device omap4_panda_hdmi_device = { + .name = "hdmi", + .driver_name = "hdmi_panel", +@@ -653,6 +657,7 @@ static struct omap_dss_device omap4_pan + .platform_enable = omap4_panda_panel_enable_hdmi, + .platform_disable = omap4_panda_panel_disable_hdmi, + .channel = OMAP_DSS_CHANNEL_DIGIT, ++ .data = &omap4_panda_hdmi_data, + }; + + static struct omap_dss_device *omap4_panda_dss_devices[] = { +--- a/drivers/video/omap2/dss/hdmi.c ++++ b/drivers/video/omap2/dss/hdmi.c +@@ -29,6 +29,7 @@ + #include + #include + #include ++#include + #include