summaryrefslogtreecommitdiff
path: root/recipes
diff options
context:
space:
mode:
Diffstat (limited to 'recipes')
-rw-r--r--recipes/linux/linux-omap-2.6.31/beagleboard/defconfig21
-rw-r--r--recipes/linux/linux-omap-2.6.31/dss2/beagle-dss2-support.patch326
-rw-r--r--recipes/linux/linux-omap-2.6.31/fix-omapfb.patch137
-rw-r--r--recipes/linux/linux-omap-2.6.31/modedb-hd720.patch13
-rw-r--r--recipes/linux/linux-omap_2.6.31.bb3
5 files changed, 490 insertions, 10 deletions
diff --git a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
index 629148b783..efe8e6d8dd 100644
--- a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
+++ b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.31-rc8-omap1
-# Fri Sep 4 15:16:17 2009
+# Linux kernel version: 2.6.31-omap1
+# Thu Sep 17 17:27:43 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -216,6 +216,8 @@ CONFIG_OMAP_DM_TIMER=y
# CONFIG_OMAP_LL_DEBUG_UART1 is not set
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
CONFIG_OMAP_LL_DEBUG_UART3=y
+# CONFIG_OMAP_PM_NONE is not set
+CONFIG_OMAP_PM_NOOP=y
CONFIG_ARCH_OMAP34XX=y
CONFIG_ARCH_OMAP3430=y
@@ -224,7 +226,7 @@ CONFIG_ARCH_OMAP3430=y
#
CONFIG_MACH_OMAP3_BEAGLE=y
# CONFIG_MACH_OMAP_LDP is not set
-CONFIG_MACH_OVERO=n
+# CONFIG_MACH_OVERO is not set
CONFIG_MACH_OMAP3EVM=y
# CONFIG_MACH_OMAP3_PANDORA is not set
# CONFIG_MACH_OMAP_3430SDP is not set
@@ -285,6 +287,7 @@ CONFIG_PREEMPT=y
CONFIG_HZ=128
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
# CONFIG_HIGHMEM is not set
@@ -1686,8 +1689,7 @@ CONFIG_DVB_USB_ANYSEE=m
CONFIG_DVB_USB_DTV5100=m
CONFIG_DVB_USB_AF9015=m
# CONFIG_DVB_USB_CE6230 is not set
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
+# CONFIG_SMS_SIANO_MDTV is not set
#
# Supported FlexCopII (B2C2) Adapters
@@ -1760,7 +1762,7 @@ CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
-# CONFIG_FB_MODE_HELPERS is not set
+CONFIG_FB_MODE_HELPERS=y
# CONFIG_FB_TILEBLITTING is not set
#
@@ -1793,8 +1795,8 @@ CONFIG_FB_OMAP2_NUM_FBS=3
# OMAP2/3 Display Device Drivers
#
CONFIG_PANEL_GENERIC=y
-CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C=m
-CONFIG_PANEL_SHARP_LS037V7DW01=m
+CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C=y
+CONFIG_PANEL_SHARP_LS037V7DW01=y
# CONFIG_PANEL_TAAL is not set
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
@@ -1864,7 +1866,6 @@ CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_SOC=y
CONFIG_SND_OMAP_SOC=y
CONFIG_SND_OMAP_SOC_MCBSP=y
-# CONFIG_SND_OMAP_SOC_OVERO is not set
# CONFIG_SND_OMAP_SOC_OMAP3EVM is not set
CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y
CONFIG_SND_SOC_I2C_AND_SPI=y
@@ -2563,7 +2564,7 @@ CONFIG_NLS_ISO8859_8=m
CONFIG_NLS_CODEPAGE_1250=m
CONFIG_NLS_CODEPAGE_1251=m
CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
+CONFIG_NLS_ISO8859_1=y
CONFIG_NLS_ISO8859_2=m
CONFIG_NLS_ISO8859_3=m
CONFIG_NLS_ISO8859_4=m
diff --git a/recipes/linux/linux-omap-2.6.31/dss2/beagle-dss2-support.patch b/recipes/linux/linux-omap-2.6.31/dss2/beagle-dss2-support.patch
new file mode 100644
index 0000000000..53f921e087
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.31/dss2/beagle-dss2-support.patch
@@ -0,0 +1,326 @@
+--- /tmp/board-omap3beagle.c 2009-09-17 17:44:58.000000000 +0200
++++ git/arch/arm/mach-omap2/board-omap3beagle.c 2009-09-17 18:48:57.000000000 +0200
+@@ -31,6 +31,7 @@
+
+ #include <linux/regulator/machine.h>
+ #include <linux/i2c/twl4030.h>
++#include <linux/omapfb.h>
+
+ #include <mach/hardware.h>
+ #include <asm/mach-types.h>
+@@ -45,6 +46,7 @@
+ #include <mach/mux.h>
+ #include <mach/usb.h>
+ #include <mach/timer-gp.h>
++#include <mach/display.h>
+
+ #include "mmc-twl4030.h"
+
+@@ -169,15 +171,6 @@
+ {} /* Terminator */
+ };
+
+-static struct platform_device omap3_beagle_lcd_device = {
+- .name = "omap3beagle_lcd",
+- .id = -1,
+-};
+-
+-static struct omap_lcd_config omap3_beagle_lcd_config __initdata = {
+- .ctrl_name = "internal",
+-};
+-
+ static struct regulator_consumer_supply beagle_vmmc1_supply = {
+ .supply = "vmmc",
+ };
+@@ -228,16 +221,6 @@
+ .setup = beagle_twl_gpio_setup,
+ };
+
+-static struct regulator_consumer_supply beagle_vdac_supply = {
+- .supply = "vdac",
+- .dev = &omap3_beagle_lcd_device.dev,
+-};
+-
+-static struct regulator_consumer_supply beagle_vdvi_supply = {
+- .supply = "vdvi",
+- .dev = &omap3_beagle_lcd_device.dev,
+-};
+-
+ /* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
+ static struct regulator_init_data beagle_vmmc1 = {
+ .constraints = {
+@@ -268,61 +251,10 @@
+ .consumer_supplies = &beagle_vsim_supply,
+ };
+
+-/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
+-static struct regulator_init_data beagle_vdac = {
+- .constraints = {
+- .min_uV = 1800000,
+- .max_uV = 1800000,
+- .valid_modes_mask = REGULATOR_MODE_NORMAL
+- | REGULATOR_MODE_STANDBY,
+- .valid_ops_mask = REGULATOR_CHANGE_MODE
+- | REGULATOR_CHANGE_STATUS,
+- },
+- .num_consumer_supplies = 1,
+- .consumer_supplies = &beagle_vdac_supply,
+-};
+-
+-/* VPLL2 for digital video outputs */
+-static struct regulator_init_data beagle_vpll2 = {
+- .constraints = {
+- .name = "VDVI",
+- .min_uV = 1800000,
+- .max_uV = 1800000,
+- .valid_modes_mask = REGULATOR_MODE_NORMAL
+- | REGULATOR_MODE_STANDBY,
+- .valid_ops_mask = REGULATOR_CHANGE_MODE
+- | REGULATOR_CHANGE_STATUS,
+- },
+- .num_consumer_supplies = 1,
+- .consumer_supplies = &beagle_vdvi_supply,
+-};
+-
+ static struct twl4030_usb_data beagle_usb_data = {
+ .usb_mode = T2_USB_MODE_ULPI,
+ };
+
+-static struct twl4030_platform_data beagle_twldata = {
+- .irq_base = TWL4030_IRQ_BASE,
+- .irq_end = TWL4030_IRQ_END,
+-
+- /* platform_data for children goes here */
+- .usb = &beagle_usb_data,
+- .gpio = &beagle_gpio_data,
+- .vmmc1 = &beagle_vmmc1,
+- .vsim = &beagle_vsim,
+- .vdac = &beagle_vdac,
+- .vpll2 = &beagle_vpll2,
+-};
+-
+-static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = {
+- {
+- I2C_BOARD_INFO("twl4030", 0x48),
+- .flags = I2C_CLIENT_WAKE,
+- .irq = INT_34XX_SYS_NIRQ,
+- .platform_data = &beagle_twldata,
+- },
+-};
+-
+ #if defined(CONFIG_RTC_DRV_DS1307) || \
+ defined(CONFIG_RTC_DRV_DS1307_MODULE)
+
+@@ -335,18 +267,6 @@
+ static struct i2c_board_info __initdata beagle_i2c2_boardinfo[] = {};
+ #endif
+
+-static int __init omap3_beagle_i2c_init(void)
+-{
+- omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo,
+- ARRAY_SIZE(beagle_i2c1_boardinfo));
+- omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo,
+- ARRAY_SIZE(beagle_i2c2_boardinfo));
+- /* Bus 3 is attached to the DVI port where devices like the pico DLP
+- * projector don't work reliably with 400kHz */
+- omap_register_i2c_bus(3, 100, NULL, 0);
+- return 0;
+-}
+-
+ static struct gpio_led gpio_leds[] = {
+ {
+ .name = "beagleboard::usr0",
+@@ -400,14 +320,158 @@
+ },
+ };
+
+-static struct omap_board_config_kernel omap3_beagle_config[] __initdata = {
+- { OMAP_TAG_LCD, &omap3_beagle_lcd_config },
++/* DSS */
++
++static int beagle_enable_dvi(struct omap_dss_device *dssdev)
++{
++ if (dssdev->reset_gpio != -1)
++ gpio_set_value(dssdev->reset_gpio, 1);
++
++ return 0;
++}
++
++static void beagle_disable_dvi(struct omap_dss_device *dssdev)
++{
++ if (dssdev->reset_gpio != -1)
++ gpio_set_value(dssdev->reset_gpio, 0);
++}
++
++static struct omap_dss_device beagle_dvi_device = {
++ .type = OMAP_DISPLAY_TYPE_DPI,
++ .name = "dvi",
++ .driver_name = "generic_panel",
++ .phy.dpi.data_lines = 24,
++ .reset_gpio = 170,
++ .platform_enable = beagle_enable_dvi,
++ .platform_disable = beagle_disable_dvi,
+ };
+
++static int beagle_panel_enable_tv(struct omap_dss_device *dssdev)
++{
++ return 0;
++}
++
++static void beagle_panel_disable_tv(struct omap_dss_device *dssdev)
++{
++}
++
++static struct omap_dss_device beagle_tv_device = {
++ .name = "tv",
++ .driver_name = "venc",
++ .type = OMAP_DISPLAY_TYPE_VENC,
++ .phy.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
++ .platform_enable = beagle_panel_enable_tv,
++ .platform_disable = beagle_panel_disable_tv,
++};
++
++static struct omap_dss_device *beagle_dss_devices[] = {
++ &beagle_dvi_device,
++ &beagle_tv_device,
++};
++
++static struct omap_dss_board_info beagle_dss_data = {
++ .num_devices = ARRAY_SIZE(beagle_dss_devices),
++ .devices = beagle_dss_devices,
++ .default_device = &beagle_dvi_device,
++};
++
++static struct platform_device beagle_dss_device = {
++ .name = "omapdss",
++ .id = -1,
++ .dev = {
++ .platform_data = &beagle_dss_data,
++ },
++};
++
++static struct regulator_consumer_supply beagle_vdda_dac_supply = {
++ .supply = "vdda_dac",
++ .dev = &beagle_dss_device.dev,
++};
++
++static struct regulator_consumer_supply beagle_vdds_dsi_supply = {
++ .supply = "vdds_dsi",
++ .dev = &beagle_dss_device.dev,
++};
++
++static void __init beagle_display_init(void)
++{
++ int r;
++
++ r = gpio_request(beagle_dvi_device.reset_gpio, "DVI reset");
++ if (r < 0) {
++ printk(KERN_ERR "Unable to get DVI reset GPIO\n");
++ return;
++ }
++
++ gpio_direction_output(beagle_dvi_device.reset_gpio, 0);
++}
++
++/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
++static struct regulator_init_data beagle_vdac = {
++ .constraints = {
++ .min_uV = 1800000,
++ .max_uV = 1800000,
++ .apply_uV = true,
++ .valid_modes_mask = REGULATOR_MODE_NORMAL
++ | REGULATOR_MODE_STANDBY,
++ .valid_ops_mask = REGULATOR_CHANGE_MODE
++ | REGULATOR_CHANGE_STATUS,
++ },
++ .num_consumer_supplies = 1,
++ .consumer_supplies = &beagle_vdda_dac_supply,
++};
++
++/* VPLL2 for digital video outputs */
++static struct regulator_init_data beagle_vpll2 = {
++ .constraints = {
++ .name = "VDVI",
++ .min_uV = 1800000,
++ .max_uV = 1800000, .valid_modes_mask = REGULATOR_MODE_NORMAL
++ | REGULATOR_MODE_STANDBY,
++ .valid_ops_mask = REGULATOR_CHANGE_MODE
++ | REGULATOR_CHANGE_STATUS,
++ },
++ .num_consumer_supplies = 1,
++ .consumer_supplies = &beagle_vdds_dsi_supply,
++};
++
++static struct twl4030_platform_data beagle_twldata = {
++ .irq_base = TWL4030_IRQ_BASE,
++ .irq_end = TWL4030_IRQ_END,
++
++ /* platform_data for children goes here */
++ .usb = &beagle_usb_data,
++ .gpio = &beagle_gpio_data,
++ .vmmc1 = &beagle_vmmc1,
++ .vsim = &beagle_vsim,
++ .vdac = &beagle_vdac,
++ .vpll2 = &beagle_vpll2,
++};
++
++static struct i2c_board_info __initdata beagle_i2c1_boardinfo[] = {
++ {
++ I2C_BOARD_INFO("twl4030", 0x48),
++ .flags = I2C_CLIENT_WAKE,
++ .irq = INT_34XX_SYS_NIRQ,
++ .platform_data = &beagle_twldata,
++ },
++};
++
++static int __init omap3_beagle_i2c_init(void)
++{
++ omap_register_i2c_bus(1, 2600, beagle_i2c1_boardinfo,
++ ARRAY_SIZE(beagle_i2c1_boardinfo));
++ omap_register_i2c_bus(2, 400, beagle_i2c2_boardinfo,
++ ARRAY_SIZE(beagle_i2c2_boardinfo));
++ /* Bus 3 is attached to the DVI port where devices like the pico DLP
++ * projector don't work reliably with 400kHz */
++ omap_register_i2c_bus(3, 100, NULL, 0);
++ return 0;
++}
++
++
+ static void __init omap3_beagle_init_irq(void)
+ {
+- omap_board_config = omap3_beagle_config;
+- omap_board_config_size = ARRAY_SIZE(omap3_beagle_config);
+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params,
+ mt46h32m32lf6_sdrc_params);
+ omap_init_irq();
+@@ -418,7 +482,7 @@
+ }
+
+ static struct platform_device *omap3_beagle_devices[] __initdata = {
+- &omap3_beagle_lcd_device,
++ &beagle_dss_device,
+ &leds_gpio,
+ &keys_gpio,
+ };
+@@ -480,11 +544,8 @@
+ platform_add_devices(omap3_beagle_devices,
+ ARRAY_SIZE(omap3_beagle_devices));
+ omap_serial_init();
+-
++
+ omap_cfg_reg(J25_34XX_GPIO170);
+- gpio_request(170, "DVI_nPD");
+- /* REVISIT leave DVI powered down until it's needed ... */
+- gpio_direction_output(170, true);
+
+ omap3beagle_enc28j60_init();
+
+@@ -492,6 +553,8 @@
+ usb_ehci_init(&ehci_pdata);
+ omap3beagle_flash_init();
+
++ beagle_display_init();
++
+ /* Ensure SDRC pins are mux'd for self-refresh */
+ omap_cfg_reg(H16_34XX_SDRC_CKE0);
+ omap_cfg_reg(H17_34XX_SDRC_CKE1);
diff --git a/recipes/linux/linux-omap-2.6.31/fix-omapfb.patch b/recipes/linux/linux-omap-2.6.31/fix-omapfb.patch
new file mode 100644
index 0000000000..6658bceb12
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.31/fix-omapfb.patch
@@ -0,0 +1,137 @@
+From linux-omap-owner@vger.kernel.org Sat Sep 12 18:36:17 2009
+Received: from localhost
+ ([127.0.0.1] helo=dominion ident=koen)
+ by dominion.dominion.void with esmtp (Exim 4.69)
+ (envelope-from <linux-omap-owner@vger.kernel.org>)
+ id 1MmVaD-0005nl-6f
+ for koen@localhost; Sat, 12 Sep 2009 18:36:17 +0200
+Received: from xs.service.utwente.nl [130.89.5.250]
+ by dominion with POP3 (fetchmail-6.3.9-rc2)
+ for <koen@localhost> (single-drop); Sat, 12 Sep 2009 18:36:17 +0200 (CEST)
+Received: from mail.service.utwente.nl ([130.89.5.254]) by exchange.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);
+ Sat, 12 Sep 2009 18:34:31 +0200
+Received: from mx.utwente.nl ([130.89.2.13]) by mail.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);
+ Sat, 12 Sep 2009 18:34:31 +0200
+Received: from vger.kernel.org (vger.kernel.org [209.132.176.167])
+ by mx.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id n8CGYLR7001279
+ for <k.kooi@student.utwente.nl>; Sat, 12 Sep 2009 18:34:22 +0200
+Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
+ id S1754253AbZILQeP (ORCPT <rfc822;k.kooi@student.utwente.nl>);
+ Sat, 12 Sep 2009 12:34:15 -0400
+Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754362AbZILQeP
+ (ORCPT <rfc822;linux-omap-outgoing>);
+ Sat, 12 Sep 2009 12:34:15 -0400
+Received: from fg-out-1718.google.com ([72.14.220.157]:62107 "EHLO
+ fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
+ with ESMTP id S1754253AbZILQeO (ORCPT
+ <rfc822;linux-omap@vger.kernel.org>); Sat, 12 Sep 2009 12:34:14 -0400
+Received: by fg-out-1718.google.com with SMTP id 22so194962fge.1
+ for <linux-omap@vger.kernel.org>; Sat, 12 Sep 2009 09:34:17 -0700 (PDT)
+DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
+ d=gmail.com; s=gamma;
+ h=domainkey-signature:received:received:sender:from:to:cc:subject
+ :date:message-id:x-mailer;
+ bh=AAXJA19IlSONsCjIPh2mme+ulWCBhEJbyCxyyJZk4jY=;
+ b=CENOacQ7/T2g5eQKy8wvo7vClGTIOU0xNgsYWpcBl2GAwrVooMvJRMWImFJYSEaU9r
+ wZTrSIouwCoeC5J2yZII6kezDggm44Nj1eA8S+c9Hj/SSt6oU1Jqc9Ttvn7jS2SxC47i
+ 0QMLWTjaRyCHVy8jfQtObilIeTnBjDMU70FkE=
+DomainKey-Signature: a=rsa-sha1; c=nofws;
+ d=gmail.com; s=gamma;
+ h=sender:from:to:cc:subject:date:message-id:x-mailer;
+ b=TVKZoERoRk1PULFXvIXEWvDKkUb/E37Cni4zLjE4PU+5bT/zGL4a+NSkifrRx5w3ku
+ X7DR9Zc5c1NIJ0mhR5kCk6fZ6Yjp1vwo6tmzvZB9Dcy6AxWumrzjBte2EdW1Lw1l1URf
+ /QDALV74V+WT4Etn+yPAlt6Zd7WbgVcqCSEc4=
+Received: by 10.87.42.14 with SMTP id u14mr3277117fgj.28.1252773257105;
+ Sat, 12 Sep 2009 09:34:17 -0700 (PDT)
+Received: from localhost ([95.87.222.103])
+ by mx.google.com with ESMTPS id 4sm1764938fge.4.2009.09.12.09.34.12
+ (version=TLSv1/SSLv3 cipher=RC4-MD5);
+ Sat, 12 Sep 2009 09:34:13 -0700 (PDT)
+From: Sergio Aguirre <saaguirre@ti.com>
+To: Imre Deak <imre.deak@nokia.com>
+Cc: linux-fbdev-devel@lists.sourceforge.net, linux-omap@vger.kernel.org,
+ Sergio Aguirre <saaguirre@ti.com>
+Subject: [PATCH] omapfb: Reorder Register_framebuffer call
+Date: Sat, 12 Sep 2009 19:34:09 +0300
+Message-Id: <1252773249-24444-1-git-send-email-saaguirre@ti.com>
+X-Mailer: git-send-email 1.6.4.2
+Sender: linux-omap-owner@vger.kernel.org
+Precedence: bulk
+List-ID: <linux-omap.vger.kernel.org>
+X-Mailing-List: linux-omap@vger.kernel.org
+X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact icts.servicedesk@utwente.nl for more information.
+X-UTwente-MailScanner: Found to be clean
+X-UTwente-MailScanner-From: linux-omap-owner@vger.kernel.org
+X-Spam-Status: No
+X-OriginalArrivalTime: 12 Sep 2009 16:34:31.0630 (UTC) FILETIME=[E7A3E6E0:01CA33C6]
+
+This fixes the issue in which mm_lock mutex was attempted to be
+used without initializing previously.
+
+Thanks to the testers!
+ - OMAP3430 SDP (Anand Gadiyar)
+ - OMAP3530 EVM (Vaibhav Hiremath)
+ - LogicPD's OMAP boards (Peter Brada)
+ - Beagleboard Rev. C2 (Eric Witcher)
+
+Signed-off-by: Sergio Aguirre <saaguirre@ti.com>
+Tested-by: Vaibhav Hiremath <hvaibhav@ti.com>
+Tested-by: Anand Gadiyar <gadiyar@ti.com>
+Tested-by: Peter Barada <peterb@logicpd.com>
+Tested-by: Eric Witcher <ewitcher@mindspring.com>
+---
+ drivers/video/omap/omapfb_main.c | 20 +++++++++++---------
+ 1 files changed, 11 insertions(+), 9 deletions(-)
+
+diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
+index 125e605..60f9482 100644
+--- a/drivers/video/omap/omapfb_main.c
++++ b/drivers/video/omap/omapfb_main.c
+@@ -1503,12 +1503,21 @@ static int fbinfo_init(struct omapfb_device *fbdev, struct fb_info *info)
+ var->rotate = def_rotate;
+ var->bits_per_pixel = fbdev->panel->bpp;
+
++ r = register_framebuffer(info);
++ if (r != 0) {
++ dev_err(fbdev->dev,
++ "registering framebuffer failed\n");
++ return r;
++ }
++
+ set_fb_var(info, var);
+ set_fb_fix(info);
+
+ r = fb_alloc_cmap(&info->cmap, 16, 0);
+- if (r != 0)
++ if (r != 0) {
+ dev_err(fbdev->dev, "unable to allocate color map memory\n");
++ unregister_framebuffer(info);
++ }
+
+ return r;
+ }
+@@ -1773,15 +1782,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
+ init_state++;
+
+ vram = 0;
+- for (i = 0; i < fbdev->mem_desc.region_cnt; i++) {
+- r = register_framebuffer(fbdev->fb_info[i]);
+- if (r != 0) {
+- dev_err(fbdev->dev,
+- "registering framebuffer %d failed\n", i);
+- goto cleanup;
+- }
++ for (i = 0; i < fbdev->mem_desc.region_cnt; i++)
+ vram += fbdev->mem_desc.region[i].size;
+- }
+
+ fbdev->state = OMAPFB_ACTIVE;
+
+--
+1.6.3.2
+
+--
+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
+
diff --git a/recipes/linux/linux-omap-2.6.31/modedb-hd720.patch b/recipes/linux/linux-omap-2.6.31/modedb-hd720.patch
new file mode 100644
index 0000000000..0166de651a
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.31/modedb-hd720.patch
@@ -0,0 +1,13 @@
+--- orig/drivers/video/modedb.c.orig 2009-04-07 11:40:10.000000000 +0200
++++ git/drivers/video/modedb.c 2009-04-07 10:35:29.000000000 +0200
+@@ -44,6 +44,10 @@
+ NULL, 60, 640, 480, 39721, 40, 24, 32, 11, 96, 2,
+ 0, FB_VMODE_NONINTERLACED
+ }, {
++ /* 1280x720 @ 60 Hz, 45 kHz hsync, CEA 681-E Format 4 */
++ "hd720", 60, 1280, 720, 13468, 220, 110, 20, 5, 40, 5,
++ 0, FB_VMODE_NONINTERLACED
++ }, {
+ /* 800x600 @ 56 Hz, 35.15 kHz hsync */
+ NULL, 56, 800, 600, 27777, 128, 24, 22, 1, 72, 2,
+ 0, FB_VMODE_NONINTERLACED
diff --git a/recipes/linux/linux-omap_2.6.31.bb b/recipes/linux/linux-omap_2.6.31.bb
index 70bd906f55..c0f1bc4c63 100644
--- a/recipes/linux/linux-omap_2.6.31.bb
+++ b/recipes/linux/linux-omap_2.6.31.bb
@@ -63,6 +63,9 @@ SRC_URI_append = " \
file://usb/0014-musb-disable-PING-on-status-phase-of-control-transf.patch;patch=1 \
file://usb/0015-musb-Add-context-save-and-restore-support.patch;patch=1 \
file://usb/0016-usb-update-defconfig.patch;patch=1 \
+ file://modedb-hd720.patch;patch=1 \
+ file://fix-omapfb.patch;patch=1 \
+ file://dss2/beagle-dss2-support.patch;patch=1 \
"
SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \