linux-omap 2.6.31: add some more display fixes
authorKoen Kooi <koen@openembedded.org>
Thu, 17 Sep 2009 17:01:41 +0000 (19:01 +0200)
committerKoen Kooi <koen@openembedded.org>
Thu, 17 Sep 2009 17:01:41 +0000 (19:01 +0200)
recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
recipes/linux/linux-omap-2.6.31/dss2/beagle-dss2-support.patch [new file with mode: 0644]
recipes/linux/linux-omap-2.6.31/fix-omapfb.patch [new file with mode: 0644]
recipes/linux/linux-omap-2.6.31/modedb-hd720.patch [new file with mode: 0644]
recipes/linux/linux-omap_2.6.31.bb

index 629148b..efe8e6d 100644 (file)
@@ -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 (file)
index 0000000..53f921e
--- /dev/null
@@ -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 (file)
index 0000000..6658bce
--- /dev/null
@@ -0,0 +1,137 @@
+From linux-omap-owner@vger.kernel.org Sat Sep 12 18:36:17 2009\r
+Received: from localhost\r
+       ([127.0.0.1] helo=dominion ident=koen)\r
+       by dominion.dominion.void with esmtp (Exim 4.69)\r
+       (envelope-from <linux-omap-owner@vger.kernel.org>)\r
+       id 1MmVaD-0005nl-6f\r
+       for koen@localhost; Sat, 12 Sep 2009 18:36:17 +0200\r
+Received: from xs.service.utwente.nl [130.89.5.250]\r
+       by dominion with POP3 (fetchmail-6.3.9-rc2)\r
+       for <koen@localhost> (single-drop); Sat, 12 Sep 2009 18:36:17 +0200 (CEST)\r
+Received: from mail.service.utwente.nl ([130.89.5.254]) by exchange.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);\r
+        Sat, 12 Sep 2009 18:34:31 +0200\r
+Received: from mx.utwente.nl ([130.89.2.13]) by mail.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);\r
+        Sat, 12 Sep 2009 18:34:31 +0200\r
+Received: from vger.kernel.org (vger.kernel.org [209.132.176.167])\r
+          by mx.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id n8CGYLR7001279\r
+          for <k.kooi@student.utwente.nl>; Sat, 12 Sep 2009 18:34:22 +0200\r
+Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand\r
+       id S1754253AbZILQeP (ORCPT <rfc822;k.kooi@student.utwente.nl>);\r
+       Sat, 12 Sep 2009 12:34:15 -0400\r
+Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754362AbZILQeP\r
+       (ORCPT <rfc822;linux-omap-outgoing>);\r
+       Sat, 12 Sep 2009 12:34:15 -0400\r
+Received: from fg-out-1718.google.com ([72.14.220.157]:62107 "EHLO\r
+       fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org\r
+       with ESMTP id S1754253AbZILQeO (ORCPT\r
+       <rfc822;linux-omap@vger.kernel.org>); Sat, 12 Sep 2009 12:34:14 -0400\r
+Received: by fg-out-1718.google.com with SMTP id 22so194962fge.1\r
+        for <linux-omap@vger.kernel.org>; Sat, 12 Sep 2009 09:34:17 -0700 (PDT)\r
+DKIM-Signature:        v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+        d=gmail.com; s=gamma;\r
+        h=domainkey-signature:received:received:sender:from:to:cc:subject\r
+         :date:message-id:x-mailer;\r
+        bh=AAXJA19IlSONsCjIPh2mme+ulWCBhEJbyCxyyJZk4jY=;\r
+        b=CENOacQ7/T2g5eQKy8wvo7vClGTIOU0xNgsYWpcBl2GAwrVooMvJRMWImFJYSEaU9r\r
+         wZTrSIouwCoeC5J2yZII6kezDggm44Nj1eA8S+c9Hj/SSt6oU1Jqc9Ttvn7jS2SxC47i\r
+         0QMLWTjaRyCHVy8jfQtObilIeTnBjDMU70FkE=\r
+DomainKey-Signature: a=rsa-sha1; c=nofws;\r
+        d=gmail.com; s=gamma;\r
+        h=sender:from:to:cc:subject:date:message-id:x-mailer;\r
+        b=TVKZoERoRk1PULFXvIXEWvDKkUb/E37Cni4zLjE4PU+5bT/zGL4a+NSkifrRx5w3ku\r
+         X7DR9Zc5c1NIJ0mhR5kCk6fZ6Yjp1vwo6tmzvZB9Dcy6AxWumrzjBte2EdW1Lw1l1URf\r
+         /QDALV74V+WT4Etn+yPAlt6Zd7WbgVcqCSEc4=\r
+Received: by 10.87.42.14 with SMTP id u14mr3277117fgj.28.1252773257105;\r
+        Sat, 12 Sep 2009 09:34:17 -0700 (PDT)\r
+Received: from localhost ([95.87.222.103])\r
+        by mx.google.com with ESMTPS id 4sm1764938fge.4.2009.09.12.09.34.12\r
+        (version=TLSv1/SSLv3 cipher=RC4-MD5);\r
+        Sat, 12 Sep 2009 09:34:13 -0700 (PDT)\r
+From: Sergio Aguirre <saaguirre@ti.com>\r
+To: Imre Deak <imre.deak@nokia.com>\r
+Cc: linux-fbdev-devel@lists.sourceforge.net, linux-omap@vger.kernel.org,\r
+        Sergio Aguirre <saaguirre@ti.com>\r
+Subject: [PATCH] omapfb: Reorder Register_framebuffer call\r
+Date:  Sat, 12 Sep 2009 19:34:09 +0300\r
+Message-Id: <1252773249-24444-1-git-send-email-saaguirre@ti.com>\r
+X-Mailer: git-send-email 1.6.4.2\r
+Sender: linux-omap-owner@vger.kernel.org\r
+Precedence: bulk\r
+List-ID: <linux-omap.vger.kernel.org>\r
+X-Mailing-List:        linux-omap@vger.kernel.org\r
+X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact icts.servicedesk@utwente.nl for more information.\r
+X-UTwente-MailScanner: Found to be clean\r
+X-UTwente-MailScanner-From: linux-omap-owner@vger.kernel.org\r
+X-Spam-Status: No\r
+X-OriginalArrivalTime: 12 Sep 2009 16:34:31.0630 (UTC) FILETIME=[E7A3E6E0:01CA33C6]\r
+\r
+This fixes the issue in which mm_lock mutex was attempted to be\r
+used without initializing previously.\r
+\r
+Thanks to the testers!\r
+ - OMAP3430 SDP (Anand Gadiyar)\r
+ - OMAP3530 EVM (Vaibhav Hiremath)\r
+ - LogicPD's OMAP boards (Peter Brada)\r
+ - Beagleboard Rev. C2 (Eric Witcher)\r
+\r
+Signed-off-by: Sergio Aguirre <saaguirre@ti.com>\r
+Tested-by: Vaibhav Hiremath <hvaibhav@ti.com>\r
+Tested-by: Anand Gadiyar <gadiyar@ti.com>\r
+Tested-by: Peter Barada <peterb@logicpd.com>\r
+Tested-by: Eric Witcher <ewitcher@mindspring.com>\r
+---\r
+ drivers/video/omap/omapfb_main.c |   20 +++++++++++---------\r
+ 1 files changed, 11 insertions(+), 9 deletions(-)\r
+\r
+diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c\r
+index 125e605..60f9482 100644\r
+--- a/drivers/video/omap/omapfb_main.c\r
++++ b/drivers/video/omap/omapfb_main.c\r
+@@ -1503,12 +1503,21 @@ static int fbinfo_init(struct omapfb_device *fbdev, struct fb_info *info)\r
+       var->rotate       = def_rotate;\r
+       var->bits_per_pixel = fbdev->panel->bpp;\r
\r
++      r = register_framebuffer(info);\r
++      if (r != 0) {\r
++              dev_err(fbdev->dev,\r
++                      "registering framebuffer failed\n");\r
++              return r;\r
++      }\r
++\r
+       set_fb_var(info, var);\r
+       set_fb_fix(info);\r
\r
+       r = fb_alloc_cmap(&info->cmap, 16, 0);\r
+-      if (r != 0)\r
++      if (r != 0) {\r
+               dev_err(fbdev->dev, "unable to allocate color map memory\n");\r
++              unregister_framebuffer(info);\r
++      }\r
\r
+       return r;\r
+ }\r
+@@ -1773,15 +1782,8 @@ static int omapfb_do_probe(struct platform_device *pdev,\r
+       init_state++;\r
\r
+       vram = 0;\r
+-      for (i = 0; i < fbdev->mem_desc.region_cnt; i++) {\r
+-              r = register_framebuffer(fbdev->fb_info[i]);\r
+-              if (r != 0) {\r
+-                      dev_err(fbdev->dev,\r
+-                              "registering framebuffer %d failed\n", i);\r
+-                      goto cleanup;\r
+-              }\r
++      for (i = 0; i < fbdev->mem_desc.region_cnt; i++)\r
+               vram += fbdev->mem_desc.region[i].size;\r
+-      }\r
\r
+       fbdev->state = OMAPFB_ACTIVE;\r
\r
+-- \r
+1.6.3.2\r
+\r
+--\r
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in\r
+the body of a message to majordomo@vger.kernel.org\r
+More majordomo info at  http://vger.kernel.org/majordomo-info.html\r
+\r
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 (file)
index 0000000..0166de6
--- /dev/null
@@ -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
index 70bd906..c0f1bc4 100644 (file)
@@ -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 \