diff options
| author | Koen Kooi <koen@openembedded.org> | 2009-03-19 11:32:06 +0100 |
|---|---|---|
| committer | Koen Kooi <koen@openembedded.org> | 2009-03-19 11:32:06 +0100 |
| commit | ebd561bc14a9a0883ad7c0ef2a6560ec9ae6824a (patch) | |
| tree | 20eb796ad4af13c056223c9da31ecbf01e7dac79 | |
| parent | 2612236bf6abf8ebd98fac5359f3b1b830404ed5 (diff) | |
linux-omap-pm: add 2.6.28 recipe so git can move to .29rc
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 |
