summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKoen Kooi <koen@openembedded.org>2009-03-19 11:32:06 +0100
committerKoen Kooi <koen@openembedded.org>2009-03-19 11:32:06 +0100
commitebd561bc14a9a0883ad7c0ef2a6560ec9ae6824a (patch)
tree20eb796ad4af13c056223c9da31ecbf01e7dac79
parent2612236bf6abf8ebd98fac5359f3b1b830404ed5 (diff)
linux-omap-pm: add 2.6.28 recipe so git can move to .29rc
-rw-r--r--recipes/linux/linux-omap-2.6.28/0124-leds-gpio-broken-with-current-git.patch79
-rw-r--r--recipes/linux/linux-omap-2.6.28/ioremap-fix.patch75
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0001-ASoC-Add-support-for-OMAP3-EVM.patch206
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0001-DSS-New-display-subsystem-driver-for-OMAP2-3.patch10355
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0001-Implement-downsampling-with-debugs.patch138
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0001-Removed-resolution-check-that-prevents-scaling-when.patch26
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0001-This-merges-Steve-Kipisz-USB-EHCI-support.-He-star.patch146
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0002-DSS-OMAPFB-fb-driver-for-new-display-subsystem.patch3809
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0003-DSS-Add-generic-DVI-panel.patch146
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0004-DSS-support-for-Beagle-Board.patch1607
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0005-DSS-Sharp-LS037V7DW01-LCD-Panel-driver.patch156
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0006-DSS-Support-for-OMAP3-SDP-board.patch1877
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0007-DSS-Support-for-OMAP3-EVM-board.patch255
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0008-DSS-Hacked-N810-support.patch1076
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0009-DSS-OMAPFB-allocate-fbmem-only-for-fb0-or-if-spes.patch121
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0010-DSS-OMAPFB-remove-extra-omapfb_setup_overlay-call.patch29
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0011-DSS-OMAPFB-fix-GFX_SYNC-to-be-compatible-with-DSS1.patch27
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0012-DSS-Add-comments-to-FAKE_VSYNC-to-make-things-more.patch27
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0013-DSS-OMAPFB-remove-extra-spaces.patch25
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0014-DSS-fix-clk_get_usecount.patch67
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/0124-leds-gpio-broken-with-current-git.patch79
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/add-cpufreq-for-omap3evm.diff28
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/beagleboard/defconfig2416
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/beagleboard/logo_linux_clut224.ppm73147
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/cache-display-fix.patch238
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/dss2.diff9
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/dvb-fix-dma.diff60
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/evm-mcspi-ts.diff132
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/fix-clkrate-programming.diff57
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/fix-dpll-m4.diff37
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/fix-install.patch23
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/fix-irq33.diff111
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/fixup-evm-cpufreq.diff44
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/ioremap-fix.patch75
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-256MB.diff24
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-enable-overlay-optimalization.diff117
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-fix-display-panning.diff49
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-fix-timings.diff26
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-improve-pixclock-config.diff93
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/mru-make-video-timings-selectable.diff312
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/musb-support-high-bandwidth.patch.eml134
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/no-cortex-deadlock.patch77
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/no-empty-flash-warnings.patch15
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/no-harry-potter.diff11
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap-2430-lcd.patch11
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap1710h3/defconfig1224
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap2420h4/defconfig1119
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap2430sdp/defconfig1303
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap3-pandora/defconfig2186
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap3evm/defconfig2217
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap3evm/omap3evm-dss2.diff443
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap3evm/omap3evm-lcd-redtint.diff66
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/omap5912osk/defconfig1098
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/oprofile-0.9.3.armv7.diff599
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/read_die_ids.patch23
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/register-all-OPPs.diff12
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/strongly-ordered-memory.diff18
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/tick-schedc-suppress-needless-timer-reprogramming.patch81
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/timer-suppression.patch43
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/touchscreen.patch22
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/twl-asoc-fix-record.diff34
-rw-r--r--recipes/linux/linux-omap-pm-2.6.28/usbttyfix.patch29
-rw-r--r--recipes/linux/linux-omap-pm/0124-leds-gpio-broken-with-current-git.patch79
-rw-r--r--recipes/linux/linux-omap-pm/fixup-evm-cpufreq.diff44
-rw-r--r--recipes/linux/linux-omap-pm/ioremap-fix.patch75
-rw-r--r--recipes/linux/linux-omap-pm_2.6.28.bb66
-rw-r--r--recipes/linux/linux-omap-pm_git.bb10
-rw-r--r--recipes/linux/linux-omap_2.6.28.bb4
68 files changed, 108362 insertions, 5 deletions
diff --git a/recipes/linux/linux-omap-2.6.28/0124-leds-gpio-broken-with-current-git.patch b/recipes/linux/linux-omap-2.6.28/0124-leds-gpio-broken-with-current-git.patch
new file mode 100644
index 0000000000..dc6e190e89
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.28/0124-leds-gpio-broken-with-current-git.patch
@@ -0,0 +1,79 @@
+From c810e850d830330cf04225a4cff8e981e153f269 Mon Sep 17 00:00:00 2001
+From: David Brownell <david-b@pacbell.net>
+Date: Mon, 23 Feb 2009 14:08:14 -0800
+Subject: [PATCH 124/133] leds-gpio broken with current git?
+MIME-Version: 1.0
+Content-Type: text/plain; charset=utf-8
+Content-Transfer-Encoding: 8bit
+
+On Monday 23 February 2009, David Brownell wrote:
+>
+> > Perhaps something broke with Tony's RC1 merge?
+> > The LEDs are broken for me as well.
+>
+> Still works for me.  Did you maybe not enable the twl4030
+> GPIO support in Kconfig?
+
+Oh, and if you did *not*, please give this patch a try.
+I've been meaning to test it.
+
+- Dave
+
+==============
+Sometimes it's awkward to make sure that the array in the
+platform_data handed to the leds-gpio driver has only valid
+data ... some leds may not be always available, and coping
+with that currently requires patching or rebuilding the array.
+
+This patch fixes that by making it be OK to pass an invalid
+GPIO (such as "-EINVAL") ... such table entries are skipped.
+---
+ drivers/leds/leds-gpio.c | 12 +++++++++++-
+ 1 files changed, 11 insertions(+), 1 deletions(-)
+
+diff --git a/drivers/leds/leds-gpio.c b/drivers/leds/leds-gpio.c
+index b13bd29..83737e6 100644
+--- a/drivers/leds/leds-gpio.c
++++ b/drivers/leds/leds-gpio.c
+@@ -90,13 +90,19 @@ static int gpio_led_probe(struct platform_device *pdev)
+ cur_led = &pdata->leds[i];
+ led_dat = &leds_data[i];
+
++ /* skip leds that aren't available */
++ led_dat->gpio = cur_led->gpio;
++ if (!gpio_is_valid(led_dat->gpio)) {
++ dev_dbg(&pdev->dev, "skipping %s\n", cur_led->name);
++ continue;
++ }
++
+ ret = gpio_request(cur_led->gpio, cur_led->name);
+ if (ret < 0)
+ goto err;
+
+ led_dat->cdev.name = cur_led->name;
+ led_dat->cdev.default_trigger = cur_led->default_trigger;
+- led_dat->gpio = cur_led->gpio;
+ led_dat->can_sleep = gpio_cansleep(cur_led->gpio);
+ led_dat->active_low = cur_led->active_low;
+ if (pdata->gpio_blink_set) {
+@@ -124,6 +130,8 @@ static int gpio_led_probe(struct platform_device *pdev)
+ err:
+ if (i > 0) {
+ for (i = i - 1; i >= 0; i--) {
++ if (!gpio_is_valid(leds_data[i].gpio))
++ continue;
+ led_classdev_unregister(&leds_data[i].cdev);
+ cancel_work_sync(&leds_data[i].work);
+ gpio_free(leds_data[i].gpio);
+@@ -144,6 +152,8 @@ static int __devexit gpio_led_remove(struct platform_device *pdev)
+ leds_data = platform_get_drvdata(pdev);
+
+ for (i = 0; i < pdata->num_leds; i++) {
++ if (!gpio_is_valid(leds_data[i].gpio))
++ continue;
+ led_classdev_unregister(&leds_data[i].cdev);
+ cancel_work_sync(&leds_data[i].work);
+ gpio_free(leds_data[i].gpio);
+--
+1.6.0.4.790.gaa14a
+
diff --git a/recipes/linux/linux-omap-2.6.28/ioremap-fix.patch b/recipes/linux/linux-omap-2.6.28/ioremap-fix.patch
new file mode 100644
index 0000000000..406138b04d
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.28/ioremap-fix.patch
@@ -0,0 +1,75 @@
+From: Russell King <rmk@dyn-67.arm.linux.org.uk>
+Date: Sun, 25 Jan 2009 17:36:34 +0000 (+0000)
+Subject: [ARM] fix section-based ioremap
+X-Git-Url: http://git.kernel.org/?p=linux%2Fkernel%2Fgit%2Fkhilman%2Flinux-omap-pm.git;a=commitdiff_plain;h=9ae635f00a568cf95dbd15fa2c50eaee0aa27d2a
+
+[ARM] fix section-based ioremap
+
+Tomi Valkeinen reports:
+ Running with latest linux-omap kernel on OMAP3 SDP board, I have
+ problem with iounmap(). It looks like iounmap() does not properly
+ free large areas. Below is a test which fails for me in 6-7 loops.
+
+ for (i = 0; i < 200; ++i) {
+ vaddr = ioremap(paddr, size);
+ if (!vaddr) {
+ printk("couldn't ioremap\n");
+ break;
+ }
+ iounmap(vaddr);
+ }
+
+The changes to vmalloc.c weren't reflected in the ARM ioremap
+implementation. Turns out the fix is rather simple.
+
+Tested-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
+Tested-by: Matt Gerassimoff <mgeras@gmail.com>
+Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
+(cherry picked from commit 24f11ec001920f1cfaeeed8e8b55725d900bbb56)
+---
+
+diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c
+index 18373f7..9f88dd3 100644
+--- a/arch/arm/mm/ioremap.c
++++ b/arch/arm/mm/ioremap.c
+@@ -138,7 +138,7 @@ void __check_kvm_seq(struct mm_struct *mm)
+ */
+ static void unmap_area_sections(unsigned long virt, unsigned long size)
+ {
+- unsigned long addr = virt, end = virt + (size & ~SZ_1M);
++ unsigned long addr = virt, end = virt + (size & ~(SZ_1M - 1));
+ pgd_t *pgd;
+
+ flush_cache_vunmap(addr, end);
+@@ -337,10 +337,7 @@ void __iounmap(volatile void __iomem *io_addr)
+ void *addr = (void *)(PAGE_MASK & (unsigned long)io_addr);
+ #ifndef CONFIG_SMP
+ struct vm_struct **p, *tmp;
+-#endif
+- unsigned int section_mapping = 0;
+
+-#ifndef CONFIG_SMP
+ /*
+ * If this is a section based mapping we need to handle it
+ * specially as the VM subsystem does not know how to handle
+@@ -352,11 +349,8 @@ void __iounmap(volatile void __iomem *io_addr)
+ for (p = &vmlist ; (tmp = *p) ; p = &tmp->next) {
+ if ((tmp->flags & VM_IOREMAP) && (tmp->addr == addr)) {
+ if (tmp->flags & VM_ARM_SECTION_MAPPING) {
+- *p = tmp->next;
+ unmap_area_sections((unsigned long)tmp->addr,
+ tmp->size);
+- kfree(tmp);
+- section_mapping = 1;
+ }
+ break;
+ }
+@@ -364,7 +358,6 @@ void __iounmap(volatile void __iomem *io_addr)
+ write_unlock(&vmlist_lock);
+ #endif
+
+- if (!section_mapping)
+- vunmap(addr);
++ vunmap(addr);
+ }
+ EXPORT_SYMBOL(__iounmap);
diff --git a/recipes/linux/linux-omap-pm-2.6.28/0001-ASoC-Add-support-for-OMAP3-EVM.patch b/recipes/linux/linux-omap-pm-2.6.28/0001-ASoC-Add-support-for-OMAP3-EVM.patch
new file mode 100644
index 0000000000..a76e96e444
--- /dev/null
+++ b/recipes/linux/linux-omap-pm-2.6.28/0001-ASoC-Add-support-for-OMAP3-EVM.patch
@@ -0,0 +1,206 @@
+From c1dad0b6b434300ae64c902d11611c54c513ea10 Mon Sep 17 00:00:00 2001
+From: Anuj Aggarwal <anuj.aggarwal@ti.com>
+Date: Fri, 21 Nov 2008 17:41:03 +0530
+Subject: [PATCH] ASoC: Add support for OMAP3 EVM
+
+This patch adds ALSA SoC support for OMAP3 EVM using TWL4030 audio codec.
+
+Signed-off-by: Anuj Aggarwal <anuj.aggarwal@ti.com>
+---
+ sound/soc/omap/Kconfig | 8 +++
+ sound/soc/omap/Makefile | 3 +-
+ sound/soc/omap/omap3evm.c | 147 +++++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 157 insertions(+), 1 deletions(-)
+ create mode 100644 sound/soc/omap/omap3evm.c
+
+diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
+index 0daeee4..deb6ba9 100644
+--- a/sound/soc/omap/Kconfig
++++ b/sound/soc/omap/Kconfig
+@@ -22,6 +22,14 @@ config SND_OMAP_SOC_OMAP3_BEAGLE
+ help
+ Say Y if you want to add support for SoC audio on the Beagleboard.
+
++config SND_OMAP_SOC_OMAP3EVM
++ tristate "SoC Audio support for OMAP3EVM board"
++ depends on SND_OMAP_SOC && MACH_OMAP3EVM
++ select SND_OMAP_SOC_MCBSP
++ select SND_SOC_TWL4030
++ help
++ Say Y if you want to add support for SoC audio on the omap3evm board.
++
+ config SND_OMAP_SOC_OSK5912
+ tristate "SoC Audio support for omap osk5912"
+ depends on SND_OMAP_SOC && MACH_OMAP_OSK
+diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
+index 4bae404..ef31c25 100644
+--- a/sound/soc/omap/Makefile
++++ b/sound/soc/omap/Makefile
+@@ -10,9 +10,10 @@ snd-soc-n810-objs := n810.o
+ snd-soc-omap3beagle-objs := omap3beagle.o
+ snd-soc-osk5912-objs := osk5912.o
+ snd-soc-overo-objs := overo.o
++snd-soc-omap3evm-objs := omap3evm.o
+
+ obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
+ obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
+ obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
+ obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
+-
++obj-$(CONFIG_MACH_OMAP3EVM) += snd-soc-omap3evm.o
+diff --git a/sound/soc/omap/omap3evm.c b/sound/soc/omap/omap3evm.c
+new file mode 100644
+index 0000000..570af55
+--- /dev/null
++++ b/sound/soc/omap/omap3evm.c
+@@ -0,0 +1,147 @@
++/*
++ * omap3evm.c -- ALSA SoC support for OMAP3 EVM
++ *
++ * Author: Anuj Aggarwal <anuj.aggarwal@ti.com>
++ *
++ * Based on sound/soc/omap/beagle.c by Steve Sakoman
++ *
++ * Copyright (C) 2008 Texas Instruments, Incorporated
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation version 2.
++ *
++ * This program is distributed "as is" WITHOUT ANY WARRANTY of any kind,
++ * whether express or implied; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ */
++
++#include <linux/clk.h>
++#include <linux/platform_device.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <mach/hardware.h>
++#include <mach/gpio.h>
++#include <mach/mcbsp.h>
++
++#include "omap-mcbsp.h"
++#include "omap-pcm.h"
++#include "../codecs/twl4030.h"
++
++static int omap3evm_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret;
++
++ /* Set codec DAI configuration */
++ ret = snd_soc_dai_set_fmt(codec_dai,
++ SND_SOC_DAIFMT_I2S |
++ SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set codec DAI configuration\n");
++ return ret;
++ }
++
++ /* Set cpu DAI configuration */
++ ret = snd_soc_dai_set_fmt(cpu_dai,
++ SND_SOC_DAIFMT_I2S |
++ SND_SOC_DAIFMT_NB_NF |
++ SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set cpu DAI configuration\n");
++ return ret;
++ }
++
++ /* Set the codec system clock for DAC and ADC */
++ ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000,
++ SND_SOC_CLOCK_IN);
++ if (ret < 0) {
++ printk(KERN_ERR "can't set codec system clock\n");
++ return ret;
++ }
++
++ return 0;
++}
++
++static struct snd_soc_ops omap3evm_ops = {
++ .hw_params = omap3evm_hw_params,
++};
++
++/* Digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link omap3evm_dai = {
++ .name = "TWL4030",
++ .stream_name = "TWL4030",
++ .cpu_dai = &omap_mcbsp_dai[0],
++ .codec_dai = &twl4030_dai,
++ .ops = &omap3evm_ops,
++};
++
++/* Audio machine driver */
++static struct snd_soc_machine snd_soc_machine_omap3evm = {
++ .name = "omap3evm",
++ .dai_link = &omap3evm_dai,
++ .num_links = 1,
++};
++
++/* Audio subsystem */
++static struct snd_soc_device omap3evm_snd_devdata = {
++ .machine = &snd_soc_machine_omap3evm,
++ .platform = &omap_soc_platform,
++ .codec_dev = &soc_codec_dev_twl4030,
++};
++
++static struct platform_device *omap3evm_snd_device;
++
++static int __init omap3evm_soc_init(void)
++{
++ int ret;
++
++ if (!machine_is_omap3evm()) {
++ pr_debug("Not OMAP3 EVM!\n");
++ return -ENODEV;
++ }
++ pr_info("OMAP3 EVM SoC init\n");
++
++ omap3evm_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!omap3evm_snd_device) {
++ printk(KERN_ERR "Platform device allocation failed\n");
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(omap3evm_snd_device, &omap3evm_snd_devdata);
++ omap3evm_snd_devdata.dev = &omap3evm_snd_device->dev;
++ *(unsigned int *)omap3evm_dai.cpu_dai->private_data = 1; /* McBSP2 */
++
++ ret = platform_device_add(omap3evm_snd_device);
++ if (ret)
++ goto err1;
++
++ return 0;
++
++err1:
++ printk(KERN_ERR "Unable to add platform device\n");
++ platform_device_put(omap3evm_snd_device);
++
++ return ret;
++}
++
++static void __exit omap3evm_soc_exit(void)
++{
++ platform_device_unregister(omap3evm_snd_device);
++}
++
++module_init(omap3evm_soc_init);
++module_exit(omap3evm_soc_exit);
++
++MODULE_AUTHOR("Anuj Aggarwal <anuj.aggarwal@ti.com>");
++MODULE_DESCRIPTION("ALSA SoC OMAP3 EVM");
++MODULE_LICENSE("GPL");
+--
+1.5.6.5
+
diff --git a/recipes/linux/linux-omap-pm-2.6.28/0001-DSS-New-display-subsystem-driver-for-OMAP2-3.patch b/recipes/linux/linux-omap-pm-2.6.28/0001-DSS-New-display-subsystem-driver-for-OMAP2-3.patch
new file mode 100644
index 0000000000..2c77fcc205
--- /dev/null
+++ b/recipes/linux/linux-omap-pm-2.6.28/0001-DSS-New-display-subsystem-driver-for-OMAP2-3.patch
@@ -0,0 +1,10355 @@
+From 3128e95ff7e6a1bed47cc5c64a138cc3bbab492a Mon Sep 17 00:00:00 2001
+From: Tomi Valkeinen <tomi.valkeinen@nokia.com>
+Date: Wed, 7 Jan 2009 14:30:09 +0200
+Subject: [PATCH] DSS: New display subsystem driver for OMAP2/3
+
+Signed-off-by: Tomi Valkeinen <tomi.valkeinen@nokia.com>
+---
+ Documentation/arm/OMAP/DSS | 266 +++
+ arch/arm/plat-omap/Kconfig | 2 +
+ arch/arm/plat-omap/Makefile | 2 +
+ arch/arm/plat-omap/dss/Kconfig | 69 +
+ arch/arm/plat-omap/dss/Makefile | 6 +
+ arch/arm/plat-omap/dss/dispc.c | 2113 +++++++++++++++++++
+ arch/arm/plat-omap/dss/display.c | 787 +++++++
+ arch/arm/plat-omap/dss/dpi.c | 344 ++++
+ arch/arm/plat-omap/dss/dsi.c | 3187 +++++++++++++++++++++++++++++
+ arch/arm/plat-omap/dss/dss.c | 774 +++++++
+ arch/arm/plat-omap/dss/dss.h | 274 +++
+ arch/arm/plat-omap/dss/rfbi.c | 1262 ++++++++++++
+ arch/arm/plat-omap/dss/sdi.c | 174 ++
+ arch/arm/plat-omap/dss/venc.c | 506 +++++
+ arch/arm/plat-omap/include/mach/display.h | 462 +++++
+ 15 files changed, 10228 insertions(+), 0 deletions(-)
+ create mode 100644 Documentation/arm/OMAP/DSS
+ create mode 100644 arch/arm/plat-omap/dss/Kconfig
+ create mode 100644 arch/arm/plat-omap/dss/Makefile
+ create mode 100644 arch/arm/plat-omap/dss/dispc.c
+ create mode 100644 arch/arm/plat-omap/dss/display.c
+ create mode 100644 arch/arm/plat-omap/dss/dpi.c
+ create mode 100644 arch/arm/plat-omap/dss/dsi.c
+ create mode 100644 arch/arm/plat-omap/dss/dss.c
+ create mode 100644 arch/arm/plat-omap/dss/dss.h
+ create mode 100644 arch/arm/plat-omap/dss/rfbi.c
+ create mode 100644 arch/arm/plat-omap/dss/sdi.c
+ create mode 100644 arch/arm/plat-omap/dss/venc.c
+ create mode 100644 arch/arm/plat-omap/include/mach/display.h
+
+diff --git a/Documentation/arm/OMAP/DSS b/Documentation/arm/OMAP/DSS
+new file mode 100644
+index 0000000..a5e608c
+--- /dev/null
++++ b/Documentation/arm/OMAP/DSS
+@@ -0,0 +1,266 @@
++OMAP2/3 Display Subsystem
++-------------------------
++
++This is an almost total rewrite of the OMAP FB driver in drivers/video/omap
++(let's call it DSS1). The main differences between DSS1 and DSS2 are DSI,
++TV-out and multiple display support.
++
++The DSS2 driver (omap-dss module) is in arch/arm/plat-omap/dss/, and the FB,
++panel and controller drivers are in d