summaryrefslogtreecommitdiff
path: root/packages/linux
diff options
context:
space:
mode:
authorOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2008-09-25 12:31:11 +0000
committerOpenEmbedded Project <openembedded-devel@lists.openembedded.org>2008-09-25 12:31:11 +0000
commit18b8a107ca4f903a486988b9562c8055ada1c018 (patch)
treea8c9019724f4f3c55b6b59b8259439ce5ec885e9 /packages/linux
parent627c4ce3d477576fcf1f13949341c9894f913061 (diff)
parentf98bbbba774cd1fa5c4d320639617218bc74b987 (diff)
merge of '0c1609602324e53bbaa1c371330798fbeb1adaec'
and '4375f1c5c294da70172d3a0d99da040cb85d66fd'
Diffstat (limited to 'packages/linux')
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb2
-rw-r--r--packages/linux/linux-omap/beagleboard/beagle-asoc.diff212
-rw-r--r--packages/linux/linux-omap/beagleboard/defconfig24
-rw-r--r--packages/linux/linux-omap_git.bb9
-rw-r--r--packages/linux/linux-openezx-devel_svn.bb1
-rw-r--r--packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics-2.6.22.5.patch91
-rw-r--r--packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics.patch97
-rw-r--r--packages/linux/linux-openmoko/fix-gta01-flowcontrol2-2.6.22.5.patch193
-rw-r--r--packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch67
-rw-r--r--packages/linux/linux-openmoko/glamo-turbo-mode.patch32
-rw-r--r--packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch27
-rw-r--r--packages/linux/linux-openmoko/gta02-sound.patch754
-rw-r--r--packages/linux/linux-openmoko/iis-suspend.patch63
-rw-r--r--packages/linux/linux-openmoko/s3c24xx-pcm-suspend.patch73
-rw-r--r--packages/linux/linux-openmoko/soc-core-suspend.patch47
-rw-r--r--packages/linux/linux-openmoko_2.6.24+git.bb6
16 files changed, 234 insertions, 1464 deletions
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
index 7ba2556bb8..150a4a153c 100644
--- a/packages/linux/linux-ezx_2.6.21.bb
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -8,6 +8,8 @@ require linux.inc
RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+CFLAGS += "-DPATH_MAX=256"
+
SRC_URI = " \
${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://logo_linux_clut224.ppm \
diff --git a/packages/linux/linux-omap/beagleboard/beagle-asoc.diff b/packages/linux/linux-omap/beagleboard/beagle-asoc.diff
new file mode 100644
index 0000000000..6763d85c32
--- /dev/null
+++ b/packages/linux/linux-omap/beagleboard/beagle-asoc.diff
@@ -0,0 +1,212 @@
+From: Felipe Contreras <felipe.contreras@gmail.com>
+To: linux-omap@vger.kernel.org
+Cc: Felipe Contreras <felipe.contreras@gmail.com>
+Subject: [PATCH] alsa: add Beagleboard SoC configuration.
+
+This is exactly the same as the overo configuration. It might make sense
+to have them in a single one.
+
+Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
+---
+
+This was suggested by Koen Kooi.
+
+ sound/soc/omap/Kconfig | 8 ++
+ sound/soc/omap/Makefile | 2 +
+ sound/soc/omap/omap3beagle.c | 149 ++++++++++++++++++++++++++++++++++++++++++
+ 3 files changed, 159 insertions(+), 0 deletions(-)
+ create mode 100644 sound/soc/omap/omap3beagle.c
+
+diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
+index d7b8939..ebad024 100644
+--- a/sound/soc/omap/Kconfig
++++ b/sound/soc/omap/Kconfig
+@@ -22,3 +22,11 @@ config SND_OMAP_SOC_OVERO
+ help
+ Say Y if you want to add support for SoC audio on the Gumstix Overo.
+
++config SND_OMAP_SOC_OMAP3_BEAGLE
++ tristate "SoC Audio support for OMAP3 Beagle"
++ depends on SND_OMAP_SOC && MACH_OMAP3_BEAGLE
++ select SND_OMAP_SOC_MCBSP
++ select SND_SOC_TWL4030
++ help
++ Say Y if you want to add support for SoC audio on the Beagleboard.
++
+diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
+index b96b97b..09fd0bb 100644
+--- a/sound/soc/omap/Makefile
++++ b/sound/soc/omap/Makefile
+@@ -8,7 +8,9 @@ obj-$(CONFIG_SND_OMAP_SOC_MCBSP) += snd-soc-omap-mcbsp.o
+ # OMAP Machine Support
+ snd-soc-n810-objs := n810.o
+ snd-soc-overo-objs := overo.o
++snd-soc-omap3beagle-objs := omap3beagle.o
+
+ obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
+ obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
+
+diff --git a/sound/soc/omap/omap3beagle.c b/sound/soc/omap/omap3beagle.c
+new file mode 100644
+index 0000000..1d0e398
+--- /dev/null
++++ b/sound/soc/omap/omap3beagle.c
+@@ -0,0 +1,149 @@
++/*
++ * omap3beagle.c -- SoC audio for OMAP3 Beagle
++ *
++ * Author: Steve Sakoman <steve@sakoman.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * This program is distributed in the hope that it will be useful, but
++ * WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
++ * General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
++ * 02110-1301 USA
++ *
++ */
++
++#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 omap3beagle_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 omap3beagle_ops = {
++ .hw_params = omap3beagle_hw_params,
++};
++
++/* Digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link omap3beagle_dai = {
++ .name = "TWL4030",
++ .stream_name = "TWL4030",
++ .cpu_dai = &omap_mcbsp_dai[0],
++ .codec_dai = &twl4030_dai,
++ .ops = &omap3beagle_ops,
++};
++
++/* Audio machine driver */
++static struct snd_soc_machine snd_soc_machine_omap3beagle = {
++ .name = "omap3beagle",
++ .dai_link = &omap3beagle_dai,
++ .num_links = 1,
++};
++
++/* Audio subsystem */
++static struct snd_soc_device omap3beagle_snd_devdata = {
++ .machine = &snd_soc_machine_omap3beagle,
++ .platform = &omap_soc_platform,
++ .codec_dev = &soc_codec_dev_twl4030,
++};
++
++static struct platform_device *omap3beagle_snd_device;
++
++static int __init omap3beagle_soc_init(void)
++{
++ int ret;
++
++ printk(KERN_INFO "OMAP3 Beagle SoC init\n");
++ if (!machine_is_omap3_beagle()) {
++ printk(KERN_ERR "Not OMAP3 Beagle!\n");
++ return -ENODEV;
++ }
++
++ omap3beagle_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!omap3beagle_snd_device) {
++ printk(KERN_ERR "Platform device allocation failed\n");
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(omap3beagle_snd_device, &omap3beagle_snd_devdata);
++ omap3beagle_snd_devdata.dev = &omap3beagle_snd_device->dev;
++ *(unsigned int *)omap3beagle_dai.cpu_dai->private_data = 1; /* McBSP2 */
++
++ ret = platform_device_add(omap3beagle_snd_device);
++ if (ret)
++ goto err1;
++
++ return 0;
++
++err1:
++ printk(KERN_ERR "Unable to add platform device\n");
++ platform_device_put(omap3beagle_snd_device);
++
++ return ret;
++}
++
++static void __exit omap3beagle_soc_exit(void)
++{
++ platform_device_unregister(omap3beagle_snd_device);
++}
++
++module_init(omap3beagle_soc_init);
++module_exit(omap3beagle_soc_exit);
++
++MODULE_AUTHOR("Steve Sakoman <steve@sakoman.com>");
++MODULE_DESCRIPTION("ALSA SoC OMAP3 Beagle");
++MODULE_LICENSE("GPL");
+--
+1.6.0.1
+
+--
+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/packages/linux/linux-omap/beagleboard/defconfig b/packages/linux/linux-omap/beagleboard/defconfig
index 7de6a0aa90..9b9b941da1 100644
--- a/packages/linux/linux-omap/beagleboard/defconfig
+++ b/packages/linux/linux-omap/beagleboard/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.27-rc5-omap1
-# Thu Sep 4 18:30:13 2008
+# Linux kernel version: 2.6.27-rc7-omap1
+# Thu Sep 25 12:46:23 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -215,6 +215,7 @@ CONFIG_ARCH_OMAP3430=y
# CONFIG_MACH_OMAP_3430SDP is not set
# CONFIG_MACH_OMAP3EVM is not set
CONFIG_MACH_OMAP3_BEAGLE=y
+# CONFIG_MACH_OVERO is not set
CONFIG_OMAP_TICK_GPTIMER=12
#
@@ -329,7 +330,7 @@ CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
CONFIG_VFP=y
CONFIG_VFPv3=y
CONFIG_NEON=y
-CONFIG_ARM_ERRATUM_451034=y
+CONFIG_ARM_ERRATUM_451034=n
#
# Userspace binary formats
@@ -920,7 +921,6 @@ CONFIG_GPIOLIB=y
# CONFIG_DEBUG_GPIO is not set
CONFIG_GPIO_SYSFS=y
-
#
# I2C GPIO expanders:
#
@@ -1267,7 +1267,6 @@ CONFIG_FB_CFB_IMAGEBLIT=y
CONFIG_FB_OMAP=y
CONFIG_FB_OMAP_VIDEO_MODE="1024x768@60"
# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
-CONFIG_OMAP_FB_LCD_OMAP3BEAGLE=y
# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=8
# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
@@ -1333,6 +1332,9 @@ CONFIG_SND_USB_CAIAQ=m
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_OMAP3_BEAGLE=y
+CONFIG_SND_SOC_TWL4030=y
# CONFIG_SOUND_PRIME is not set
CONFIG_HID_SUPPORT=y
CONFIG_HID=y
@@ -1361,7 +1363,7 @@ CONFIG_USB_DEVICEFS=y
CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
CONFIG_USB_SUSPEND=y
-CONFIG_USB_OTG=y
+# CONFIG_USB_OTG is not set
# CONFIG_USB_OTG_WHITELIST is not set
# CONFIG_USB_OTG_BLACKLIST_HUB is not set
CONFIG_USB_MON=y
@@ -1386,14 +1388,13 @@ CONFIG_USB_MUSB_SOC=y
#
# OMAP 343x high speed USB support
#
-# CONFIG_USB_MUSB_HOST is not set
+CONFIG_USB_MUSB_HOST=y
# CONFIG_USB_MUSB_PERIPHERAL is not set
-CONFIG_USB_MUSB_OTG=y
-CONFIG_USB_GADGET_MUSB_HDRC=y
+# CONFIG_USB_MUSB_OTG is not set
+# CONFIG_USB_GADGET_MUSB_HDRC is not set
CONFIG_USB_MUSB_HDRC_HCD=y
# CONFIG_MUSB_PIO_ONLY is not set
CONFIG_USB_INVENTRA_DMA=y
-CONFIG_MUSB_USE_SYSTEM_DMA_RX=y
# CONFIG_USB_TI_CPPI_DMA is not set
# CONFIG_USB_MUSB_DEBUG is not set
@@ -1527,7 +1528,8 @@ CONFIG_USB_GADGET_SELECTED=y
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA25X is not set
-# CONFIG_USB_GADGET_M66592 is not set
+CONFIG_USB_GADGET_M66592=y
+CONFIG_USB_M66592=y
# CONFIG_USB_GADGET_PXA27X is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
diff --git a/packages/linux/linux-omap_git.bb b/packages/linux/linux-omap_git.bb
index 05448f1c23..ec9e2c0f9c 100644
--- a/packages/linux/linux-omap_git.bb
+++ b/packages/linux/linux-omap_git.bb
@@ -6,16 +6,15 @@ KERNEL_IMAGETYPE = "uImage"
COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|omap3evm"
-SRCREV = "de1121fdb899f762"
+SRCREV = "9d1dff8638c9e96a401e1885f9948662e9ff9636"
PV = "2.6.26+2.6.27-rc6+${PR}+git${SRCREV}"
-PR = "r5"
+PR = "r7"
SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \
file://defconfig"
SRC_URI_append = " \
- file://timer-suppression.patch;patch=1 \
file://no-empty-flash-warnings.patch;patch=1 \
file://oprofile-0.9.3.armv7.diff;patch=1 \
file://no-cortex-deadlock.patch;patch=1 \
@@ -31,7 +30,6 @@ SRC_URI_append = " \
file://mru-improve-pixclock-config.diff;patch=1 \
file://mru-make-video-timings-selectable.diff;patch=1 \
file://mru-enable-overlay-optimalization.diff;patch=1 \
- file://strongly-ordered-memory.diff;patch=1 \
"
temporarely-disabled = " \
@@ -39,7 +37,8 @@ temporarely-disabled = " \
"
SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
- "
+ file://beagle-asoc.diff;patch=1 \
+ "
SRC_URI_append_omap3evm = " \
file://OMAP3EVM_TWL4030-Keypad-irq-error-fix.patch;patch=1 \
diff --git a/packages/linux/linux-openezx-devel_svn.bb b/packages/linux/linux-openezx-devel_svn.bb
index 6c0af7cfb6..17156535ea 100644
--- a/packages/linux/linux-openezx-devel_svn.bb
+++ b/packages/linux/linux-openezx-devel_svn.bb
@@ -55,6 +55,7 @@ CMDLINE = "${CMDLINE_CON} ${CMDLINE_ROOT} ${CMDLINE_IP} ${CMDLINE_ROTATE} ${CMDL
do_prepatch() {
mv ${WORKDIR}/${KERNEL_PATCHES}/defconfig-${MACHINE} ${WORKDIR}/defconfig
+# mv ${WORKDIR}/defconfig-${MACHINE} ${WORKDIR}/defconfig
mv ${WORKDIR}/${KERNEL_PATCHES} ${S}/patches && cd ${S} && quilt push -av
mv patches patches.openezx
mv .pc .pc.old
diff --git a/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics-2.6.22.5.patch b/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics-2.6.22.5.patch
deleted file mode 100644
index cc74c0e289..0000000000
--- a/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics-2.6.22.5.patch
+++ /dev/null
@@ -1,91 +0,0 @@
-Index: linux-2.6.22.5/drivers/input/evdev.c
-===================================================================
---- linux-2.6.22.5.orig/drivers/input/evdev.c
-+++ linux-2.6.22.5/drivers/input/evdev.c
-@@ -28,7 +28,7 @@ struct evdev {
- char name[16];
- struct input_handle handle;
- wait_queue_head_t wait;
-- struct evdev_client *grab;
-+ int grab;
- struct list_head client_list;
- };
-
-@@ -36,6 +36,7 @@ struct evdev_client {
- struct input_event buffer[EVDEV_BUFFER_SIZE];
- int head;
- int tail;
-+ int grab;
- struct fasync_struct *fasync;
- struct evdev *evdev;
- struct list_head node;
-@@ -48,8 +49,7 @@ static void evdev_event(struct input_han
- struct evdev *evdev = handle->private;
- struct evdev_client *client;
-
-- if (evdev->grab) {
-- client = evdev->grab;
-+ list_for_each_entry(client, &evdev->client_list, node) {
-
- do_gettimeofday(&client->buffer[client->head].time);
- client->buffer[client->head].type = type;
-@@ -58,17 +58,7 @@ static void evdev_event(struct input_han
- client->head = (client->head + 1) & (EVDEV_BUFFER_SIZE - 1);
-
- kill_fasync(&client->fasync, SIGIO, POLL_IN);
-- } else
-- list_for_each_entry(client, &evdev->client_list, node) {
--
-- do_gettimeofday(&client->buffer[client->head].time);
-- client->buffer[client->head].type = type;
-- client->buffer[client->head].code = code;
-- client->buffer[client->head].value = value;
-- client->head = (client->head + 1) & (EVDEV_BUFFER_SIZE - 1);
--
-- kill_fasync(&client->fasync, SIGIO, POLL_IN);
-- }
-+ }
-
- wake_up_interruptible(&evdev->wait);
- }
-@@ -105,9 +95,10 @@ static int evdev_release(struct inode *i
- struct evdev_client *client = file->private_data;
- struct evdev *evdev = client->evdev;
-
-- if (evdev->grab == client) {
-- input_release_device(&evdev->handle);
-- evdev->grab = NULL;
-+ if (client->grab) {
-+ if(!--evdev->grab && evdev->exist)
-+ input_release_device(&evdev->handle);
-+ client->grab = 0;
- }
-
- evdev_fasync(-1, file, 0);
-@@ -488,17 +479,19 @@ static long evdev_ioctl_handler(struct f
-
- case EVIOCGRAB:
- if (p) {
-- if (evdev->grab)
-- return -EBUSY;
-- if (input_grab_device(&evdev->handle))
-+ if (client->grab)
- return -EBUSY;
-- evdev->grab = client;
-+ if (!evdev->grab++)
-+ if (input_grab_device(&evdev->handle))
-+ return -EBUSY;
-+ client->grab = 0;
- return 0;
- } else {
-- if (evdev->grab != client)
-+ if (!client->grab)
- return -EINVAL;
-- input_release_device(&evdev->handle);
-- evdev->grab = NULL;
-+ if (!--evdev->grab)
-+ input_release_device(&evdev->handle);
-+ client->grab = 0;
- return 0;
- }
-
diff --git a/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics.patch b/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics.patch
deleted file mode 100644
index 3c96faa271..0000000000
--- a/packages/linux/linux-openmoko/fix-EVIOCGRAB-semantics.patch
+++ /dev/null
@@ -1,97 +0,0 @@
-diff --git a/drivers/input/evdev.c b/drivers/input/evdev.c
-index 12c7ab8..c7e741b 100644
---- a/drivers/input/evdev.c
-+++ b/drivers/input/evdev.c
-@@ -29,7 +29,7 @@ struct evdev {
- char name[16];
- struct input_handle handle;
- wait_queue_head_t wait;
-- struct evdev_list *grab;
-+ int grab;
- struct list_head list;
- };
-
-@@ -37,6 +37,7 @@ struct evdev_list {
- struct input_event buffer[EVDEV_BUFFER_SIZE];
- int head;
- int tail;
-+ int grab;
- struct fasync_struct *fasync;
- struct evdev *evdev;
- struct list_head node;
-@@ -49,8 +50,7 @@ static void evdev_event(struct input_han
- struct evdev *evdev = handle->private;
- struct evdev_list *list;
-
-- if (evdev->grab) {
-- list = evdev->grab;
-+ list_for_each_entry(list, &evdev->list, node) {
-
- do_gettimeofday(&list->buffer[list->head].time);
- list->buffer[list->head].type = type;
-@@ -59,17 +59,7 @@ static void evdev_event(struct input_han
- list->head = (list->head + 1) & (EVDEV_BUFFER_SIZE - 1);
-
- kill_fasync(&list->fasync, SIGIO, POLL_IN);
-- } else
-- list_for_each_entry(list, &evdev->list, node) {
--
-- do_gettimeofday(&list->buffer[list->head].time);
-- list->buffer[list->head].type = type;
-- list->buffer[list->head].code = code;
-- list->buffer[list->head].value = value;
-- list->head = (list->head + 1) & (EVDEV_BUFFER_SIZE - 1);
--
-- kill_fasync(&list->fasync, SIGIO, POLL_IN);
-- }
-+ }
-
- wake_up_interruptible(&evdev->wait);
- }
-@@ -104,9 +94,10 @@ static int evdev_release(struct inode *
- {
- struct evdev_list *list = file->private_data;
-
-- if (list->evdev->grab == list) {
-- input_release_device(&list->evdev->handle);
-- list->evdev->grab = NULL;
-+ if (list->grab) {
-+ if(!--list->evdev->grab && list->evdev->exist)
-+ input_release_device(&list->evdev->handle);
-+ list->grab = 0;
- }
-
- evdev_fasync(-1, file, 0);
-@@ -483,17 +474,19 @@ static long evdev_ioctl_handler(struct f
-
- case EVIOCGRAB:
- if (p) {
-- if (evdev->grab)
-- return -EBUSY;
-- if (input_grab_device(&evdev->handle))
-+ if (list->grab)
- return -EBUSY;
-- evdev->grab = list;
-+ if (!evdev->grab++)
-+ if (input_grab_device(&evdev->handle))
-+ return -EBUSY;
-+ list->grab = 0;
- return 0;
- } else {
-- if (evdev->grab != list)
-+ if (!list->grab)
- return -EINVAL;
-- input_release_device(&evdev->handle);
-- evdev->grab = NULL;
-+ if (!--evdev->grab)
-+ input_release_device(&evdev->handle);
-+ list->grab = 0;
- return 0;
- }
-
--
-To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
-the body of a message to majordomo@vger.kernel.org
-More majordomo info at http://vger.kernel.org/majordomo-info.html
-Please read the FAQ at http://www.tux.org/lkml/
-
diff --git a/packages/linux/linux-openmoko/fix-gta01-flowcontrol2-2.6.22.5.patch b/packages/linux/linux-openmoko/fix-gta01-flowcontrol2-2.6.22.5.patch
deleted file mode 100644
index ddb58f0cdb..0000000000
--- a/packages/linux/linux-openmoko/fix-gta01-flowcontrol2-2.6.22.5.patch
+++ /dev/null
@@ -1,193 +0,0 @@
---- linux-2.6.22.5/arch/arm/common/gta01_pm_gsm.c.orig 2007-09-27 11:23:20.000000000 -0500
-+++ linux-2.6.22.5/arch/arm/common/gta01_pm_gsm.c 2007-09-27 21:09:00.000000000 -0500
-@@ -23,6 +23,9 @@
- #include <asm/arch/gta01.h>
- #include <asm/arch/gta02.h>
-
-+#include <linux/serial_core.h>
-+void s3c24xx_set_flow_control(struct uart_port *port, int fc_on);
-+
- struct gta01pm_priv {
- int gpio_ngsm_en;
- struct console *con;
-@@ -49,6 +52,23 @@
- static ssize_t gsm_read(struct device *dev, struct device_attribute *attr,
- char *buf)
- {
-+ struct uart_driver *udrive = NULL;
-+ struct uart_state *ustate = NULL;
-+ struct uart_port *uport = NULL;
-+
-+ if (gta01_gsm.con) {
-+ udrive = gta01_gsm.con->data;
-+ if (udrive) {
-+ ustate = udrive->state;
-+ if (ustate) {
-+ uport = ustate->port;
-+ }
-+ }
-+ }
-+ printk("gsm: gsm_read of \"%s\"\n", attr->attr.name);
-+ printk("gsm: con=%p udrive=%p ustate=%p uport=%p\n",
-+ gta01_gsm.con, udrive, ustate, uport);
-+
- if (!strcmp(attr->attr.name, "power_on")) {
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_ON))
- goto out_1;
-@@ -58,6 +78,24 @@
- } else if (!strcmp(attr->attr.name, "download")) {
- if (s3c2410_gpio_getpin(GTA01_GPIO_MODEM_DNLOAD))
- goto out_1;
-+ } else if (!strcmp(attr->attr.name, "flowcontrol")) {
-+ if (uport) {
-+ if (uport->unused[2] & 0x2) {
-+ if (uport->unused[2] & 0x1) {
-+ printk("gsm: flow control allowed and on\n");
-+ goto out_1;
-+ } else {
-+ printk("gsm: flow control allowed and not on\n");
-+ }
-+ } else {
-+ if (uport->unused[2] & 0x1)
-+ printk("gsm: flow control not allowed, "
-+ "but is pending\n");
-+ else
-+ printk("gsm: flow control not allowed, "
-+ "not pending\n");
-+ }
-+ }
- }
-
- return strlcpy(buf, "0\n", 3);
-@@ -68,10 +106,26 @@
- static ssize_t gsm_write(struct device *dev, struct device_attribute *attr,
- const char *buf, size_t count)
- {
-+ struct uart_driver *udrive = NULL;
-+ struct uart_state *ustate = NULL;
-+ struct uart_port *uport = NULL;
-+ static int was_on = 0;
- unsigned long on = simple_strtoul(buf, NULL, 10);
-
-+ if (gta01_gsm.con) {
-+ udrive = gta01_gsm.con->data;
-+ if (udrive) {
-+ ustate = udrive->state;
-+ if (ustate) {
-+ uport = ustate->port;
-+ }
-+ }
-+ }
-+ printk("gsm: con=%p udrive=%p ustate=%p uport=%p\n",
-+ gta01_gsm.con, udrive, ustate, uport);
-+
- if (!strcmp(attr->attr.name, "power_on")) {
-- if (on) {
-+ if (on && !was_on) {
- if (gta01_gsm.con) {
- dev_info(dev, "powering up GSM, thus "
- "disconnecting serial console\n");
-@@ -83,7 +137,24 @@
- s3c2410_gpio_setpin(gta01_gsm.gpio_ngsm_en, 0);
-
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 1);
-- } else {
-+
-+ if (uport) {
-+ /* set any pending flow-control mode */
-+ uport->unused[2] |= 0x2;
-+ s3c24xx_set_flow_control(uport,
-+ (uport->unused[2] & 0x1));
-+ dev_info(dev, "flow control allowed\n");
-+ }
-+
-+ was_on = 1;
-+
-+ } else if (!on && was_on) {
-+ if (uport) {
-+ uport->unused[2] &= ~0x2;
-+ s3c24xx_set_flow_control(uport, 0);
-+ dev_info(dev, "flow control not allowed\n");
-+ }
-+
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_ON, 0);
-
- if (gta01_gsm.gpio_ngsm_en)
-@@ -95,6 +166,8 @@
- dev_info(dev, "powered down GSM, thus enabling "
- "serial console\n");
- }
-+
-+ was_on = 0;
- }
- } else if (!strcmp(attr->attr.name, "reset")) {
- s3c2410_gpio_setpin(GTA01_GPIO_MODEM_RST, on);
-@@ -105,6 +178,7 @@
- return count;
- }
-
-+static DEVICE_ATTR(flowcontrol, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(power_on, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(reset, 0644, gsm_read, gsm_write);
- static DEVICE_ATTR(download, 0644, gsm_read, gsm_write);
-@@ -136,6 +210,7 @@
- #endif
-
- static struct attribute *gta01_gsm_sysfs_entries[] = {
-+ &dev_attr_flowcontrol.attr,
- &dev_attr_power_on.attr,
- &dev_attr_reset.attr,
- NULL,
---- linux-2.6.22.5/drivers/serial/s3c2410.c.orig 2007-09-27 11:23:27.000000000 -0500
-+++ linux-2.6.22.5/drivers/serial/s3c2410.c 2007-09-27 21:07:21.000000000 -0500
-@@ -80,6 +80,8 @@
-
- #include <asm/arch/regs-serial.h>
- #include <asm/arch/regs-gpio.h>
-+#include <asm/mach-types.h>
-+#include <asm/arch/gta01.h>
-
- /* structures */
-
-@@ -729,6 +731,17 @@
- return best->quot;
- }
-
-+/* This routine is called whenever the gta01 modem/console switches */
-+void s3c24xx_set_flow_control(struct uart_port *port, int fc_on)
-+{
-+ unsigned int umcon;
-+ if (machine_is_neo1973_gta01() && port) {
-+ umcon = (fc_on) ? S3C2410_UMCOM_AFC : 0;
-+ wr_regl(port, S3C2410_UMCON, umcon);
-+ }
-+}
-+EXPORT_SYMBOL(s3c24xx_set_flow_control);
-+
- static void s3c24xx_serial_set_termios(struct uart_port *port,
- struct ktermios *termios,
- struct ktermios *old)
-@@ -803,6 +816,23 @@
-
- umcon = (termios->c_cflag & CRTSCTS) ? S3C2410_UMCOM_AFC : 0;
-
-+ /*
-+ * Custom handling of flow control on hwport 0 for the GTA01:
-+ * Save the desired state for flow control, but if the port
-+ * is being used as a console, then do not actually enable
-+ * flow control unless the flag permiting us to do so is set.
-+ */
-+ if (machine_is_neo1973_gta01() && (cfg->hwport == 0)) {
-+ if (umcon)
-+ port->unused[2] |= 0x1;
-+ else
-+ port->unused[2] &= ~0x1;
-+ if (port->cons && (port->cons->index >= 0)) {
-+ if (!(port->unused[2] & 0x2))
-+ umcon = 0;
-+ }
-+ }
-+
- if (termios->c_cflag & PARENB) {
- if (termios->c_cflag & PARODD)
- ulcon |= S3C2410_LCON_PODD;
diff --git a/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch b/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch
deleted file mode 100644
index 563923e71c..0000000000
--- a/packages/linux/linux-openmoko/glamo-report-vram-size-to-userspace.patch
+++ /dev/null
@@ -1,67 +0,0 @@
-From ff1564e5100eeccd53ee6b007813ea722f8cf8b6 Mon Sep 17 00:00:00 2001
-From: Chia-I Wu <olv@openmoko.com>
-Date: Mon, 1 Oct 2007 21:16:46 +0800
-Subject: [PATCH] glamo: report vram size to userspace
-
-Set fb_fix_screeninfo.smem_len to RESSIZE(fb_res). This is not the real
-vram size, as it is a hardcoded value in glamo-core.c for now.
----
- drivers/video/glamo/glamo-fb.c | 13 +++++--------
- 1 files changed, 5 insertions(+), 8 deletions(-)
-
-diff --git a/drivers/video/glamo/glamo-fb.c b/drivers/video/glamo/glamo-fb.c
-index 451de75..160a5b1 100644
---- a/drivers/video/glamo/glamo-fb.c
-+++ b/drivers/video/glamo/glamo-fb.c
-@@ -54,8 +54,6 @@
-
- #define RESSIZE(ressource) (((ressource)->end - (ressource)->start)+1)
-
--#define GLAMO_FB_ALLOC (640*480*2)
--
- struct glamofb_handle {
- struct fb_info *fb;
- struct device *dev;
-@@ -224,7 +222,6 @@ static int glamofb_set_par(struct fb_info *info)
- }
-
- glamo->fb->fix.line_length = (var->width * var->bits_per_pixel) / 8;
-- glamo->fb->fix.smem_len = info->fix.line_length * var->yres_virtual;
-
- return 0;
- }
-@@ -453,7 +450,7 @@ static int __init glamofb_probe(struct platform_device *pdev)
- }
-
- glamofb->fb_res = request_mem_region(glamofb->fb_res->start,
-- GLAMO_FB_ALLOC, pdev->name);
-+ RESSIZE(glamofb->fb_res), pdev->name);
- if (!glamofb->fb_res) {
- dev_err(&pdev->dev, "failed to request vram region\n");
- goto out_release_reg;
-@@ -467,6 +464,7 @@ static int __init glamofb_probe(struct platform_device *pdev)
- goto out_release_fb;
- }
- fbinfo->fix.smem_start = (unsigned long) glamofb->fb_res->start;
-+ fbinfo->fix.smem_len = RESSIZE(glamofb->fb_res);
-
- fbinfo->screen_base = ioremap(glamofb->fb_res->start,
- RESSIZE(glamofb->fb_res));
-@@ -522,11 +520,10 @@ static int __init glamofb_probe(struct platform_device *pdev)
- fbinfo->var.green.length = 6;
- fbinfo->var.blue.length = 5;
- fbinfo->var.transp.length = 0;
-- fbinfo->fix.smem_len = mach_info->xres.max *
-- mach_info->yres.max *
-- mach_info->bpp.max / 8;
-
-- memset(fbinfo->screen_base, 0, fbinfo->fix.smem_len);
-+ memset(fbinfo->screen_base, 0, mach_info->xres.max *
-+ mach_info->yres.max *
-+ mach_info->bpp.max / 8);
-
- glamo_engine_enable(mach_info->glamo, GLAMO_ENGINE_LCD);
- glamo_engine_reset(mach_info->glamo, GLAMO_ENGINE_LCD);
---
-1.5.3.1
-
diff --git a/packages/linux/linux-openmoko/glamo-turbo-mode.patch b/packages/linux/linux-openmoko/glamo-turbo-mode.patch
deleted file mode 100644
index 4f03c967ec..0000000000
--- a/packages/linux/linux-openmoko/glamo-turbo-mode.patch
+++ /dev/null
@@ -1,32 +0,0 @@
-X-Git-Url: http://git.openmoko.org/?p=kernel.git;a=blobdiff_plain;f=drivers%2Fmfd%2Fglamo%2Fglamo-core.c;fp=drivers%2Fmfd%2Fglamo%2Fglamo-core.c;h=bc91178ba609fbb99343eca212e7dda85e110d7c;hp=2619c5fc9fc3a189232504b97d3f024249bd9a72;hb=b920e3309db7e4f733499dc724a0dfba310edc5c;hpb=c1768ad6cc5b11eeda4394f68fbaedd03eea3354
-
-diff --git a/drivers/mfd/glamo/glamo-core.c b/drivers/mfd/glamo/glamo-core.c
-index 2619c5f..bc91178 100644
---- a/drivers/mfd/glamo/glamo-core.c
-+++ b/drivers/mfd/glamo/glamo-core.c
-@@ -740,7 +740,11 @@ static struct glamo_script glamo_init_script[] = {
- { GLAMO_REG_CLOCK_GEN7, 0x0101 },
- { GLAMO_REG_CLOCK_GEN8, 0x0100 },
- { GLAMO_REG_CLOCK_HOST, 0x000d },
-- { 0x200, 0x0ef0 },
-+ /*
-+ * b7..b4 = 0 = no wait states on read or write
-+ * b0 = 1 select PLL2 for Host interface, b1 = enable it
-+ */
-+ { 0x200, 0x0e03 },
- { 0x202, 0x07ff },
- { 0x212, 0x0000 },
- { 0x214, 0x4000 },
-@@ -750,11 +754,7 @@ static struct glamo_script glamo_init_script[] = {
- * more efficiency when 640x480" */
- { GLAMO_REG_MEM_TYPE, 0x0c74 }, /* 8MB, 16 word pg wr+rd */
- { GLAMO_REG_MEM_GEN, 0xafaf }, /* 63 grants min + max */
-- /*
-- * the register below originally 0x0108 makes unreliable Glamo MMC
-- * write operations. Cranked to 0x05ad to add a wait state, the
-- * unreliability is not seen after 4GB of write / read testing
-- */
-+
- { GLAMO_REG_MEM_TIMING1, 0x0108 },
- { GLAMO_REG_MEM_TIMING2, 0x0010 }, /* Taa = 3 MCLK */
- { GLAMO_REG_MEM_TIMING3, 0x0000 },
diff --git a/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch b/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch
deleted file mode 100644
index a98f5c8ca5..0000000000
--- a/packages/linux/linux-openmoko/gta-vibro-pwm-suspend.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-Index: linux-2.6.22/drivers/leds/leds-gta01.c
-===================================================================
---- linux-2.6.22.orig/drivers/led