# source and patches
#
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${VANILLA_VERSION}.tar.bz2 \
- file://defconfig-${VANILLA_VERSION}-${MACHINE}"
+ file://defconfig-${VANILLA_VERSION}-${MACHINE} \
+ file://logo_linux_clut224.ppm"
S = "${WORKDIR}/linux-${VANILLA_VERSION}"
##############################################################
###############################################################
# module configs specific to this kernel
#
+
+# usb
module_autoload_ohci-hcd = "ohci-hcd"
+module_autoload_hci_usb = "hci_usb"
module_autoload_g_ether = "g_ether"
-#module_autoload_snd-pcm-oss = "snd-pcm-oss"
-#module_autoload_snd-soc-corgi_c7x0 = "snd-soc-s3c24xx"
+# audio
+module_autoload_snd-soc-neo1973-wm8753 = "snd-soc-neo1973-wm8753"
+# sd/mmc
+module_autoload_s3cmci = "s3cmci"
do_prepatch() {
- mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
- rm -Rf patches .pc
+ mv ${WORKDIR}/patches ${S}/patches && cd ${S} && quilt push -av
+ mv patches patches.openmoko
+ mv .pc .pc.old
}
do_configure() {
+ install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+
if [ ! -e ${WORKDIR}/defconfig-${VANILLA_VERSION}-${MACHINE} ]; then
die "No default configuration for ${MACHINE} available."
fi
echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
- if [ "${TARGET_OS}" == "linux-gnueabi" ]; then
+ if [ "${TARGET_OS}" = "linux-gnueabi" ]; then
echo "CONFIG_AEABI=y" >> ${S}/.config
echo "CONFIG_OABI_COMPAT=y" >> ${S}/.config
else
${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
rm -f linux.bin.gz
gzip -9 linux.bin
- uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}-${DATETIME}.bin
+ ${STAGING_BINDIR_NATIVE}/uboot-mkimage -A arm -O linux -T kernel -C gzip -a 30008000 -e 30008000 -n "OpenMoko Kernel Image Neo1973(GTA01)" -d linux.bin.gz ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}.bin
+ ln -sf ${DEPLOY_DIR_IMAGE}/uImage-${PV}-${PR}-${MACHINE}.bin ${DEPLOY_DIR_IMAGE}/uImage-${MACHINE}-latest.bin
rm -f linux.bin.gz
}
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21.1
-# Fri May 18 12:58:24 2007
+# Linux kernel version: 2.6.21.3
+# Mon Jun 11 18:32:32 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
#
# General setup
#
-CONFIG_LOCALVERSION="-moko10"
+CONFIG_LOCALVERSION="-moko11"
# CONFIG_LOCALVERSION_AUTO is not set
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_TASKSTATS is not set
# CONFIG_UTS_NS is not set
# CONFIG_AUDIT is not set
-CONFIG_IKCONFIG=y
-CONFIG_IKCONFIG_PROC=y
+# CONFIG_IKCONFIG is not set
# CONFIG_SYSFS_DEPRECATED is not set
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
# CONFIG_MACH_OTOM is not set
# CONFIG_MACH_AML_M5900 is not set
# CONFIG_MACH_VR1000 is not set
-# CONFIG_MACH_QT2410 is not set
+CONFIG_MACH_QT2410=y
CONFIG_MACH_NEO1973_GTA01=y
#
# CONFIG_MACH_NEXCODER_2440 is not set
CONFIG_SMDK2440_CPU2440=y
CONFIG_MACH_HXD8=y
+CONFIG_MACH_NEO1973_GTA02=y
#
# S3C2442 Machines
#
CONFIG_ZBOOT_ROM_TEXT=0x0
CONFIG_ZBOOT_ROM_BSS=0x0
-CONFIG_CMDLINE=" ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
+CONFIG_CMDLINE="console=ttySAC0,115200n8 ip=192.168.1.2:192.168.1.10:192.168.1.10:255.255.255.0:ezx:usb0:off debug"
# CONFIG_XIP_KERNEL is not set
CONFIG_KEXEC=y
#
# At least one emulation must be selected
#
-# CONFIG_FPE_NWFPE is not set
-CONFIG_FPE_FASTFPE=y
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
-CONFIG_BINFMT_MISC=m
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
#
# Power management options
#
CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
+CONFIG_PM_LEGACY=y
+CONFIG_PM_DEBUG=y
+CONFIG_DISABLE_CONSOLE_SUSPEND=y
# CONFIG_PM_SYSFS_DEPRECATED is not set
CONFIG_APM_EMULATION=y
CONFIG_IP_MULTIPLE_TABLES=y
# CONFIG_IP_ROUTE_MULTIPATH is not set
# CONFIG_IP_ROUTE_VERBOSE is not set
-# CONFIG_IP_PNP is not set
+CONFIG_IP_PNP=y
+# CONFIG_IP_PNP_DHCP is not set
+# CONFIG_IP_PNP_BOOTP is not set
+# CONFIG_IP_PNP_RARP is not set
CONFIG_NET_IPIP=m
CONFIG_NET_IPGRE=m
# CONFIG_NET_IPGRE_BROADCAST is not set
CONFIG_MII=m
# CONFIG_SMC91X is not set
# CONFIG_DM9000 is not set
+CONFIG_NET_PCI=y
+CONFIG_CS89x0=m
#
# Ethernet (1000 Mbit)
CONFIG_KEYBOARD_STOWAWAY=m
CONFIG_KEYBOARD_GPIO=m
CONFIG_KEYBOARD_GTA01=y
+CONFIG_KEYBOARD_QT2410=y
CONFIG_INPUT_MOUSE=y
# CONFIG_MOUSE_PS2 is not set
# CONFIG_MOUSE_SERIAL is not set
#
# I2C Algorithms
#
-CONFIG_I2C_ALGOBIT=m
-CONFIG_I2C_ALGOPCF=m
-CONFIG_I2C_ALGOPCA=m
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
#
# I2C Hardware Bus support
# CONFIG_SENSORS_DS1374 is not set
# CONFIG_SENSORS_EEPROM is not set
CONFIG_SENSORS_PCF50606=y
+CONFIG_SENSORS_PCF50633=y
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
# CONFIG_SENSORS_MAX6875 is not set
-# CONFIG_SENSORS_TSL256X is not set
+CONFIG_SENSORS_TSL256X=m
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
#
# LED drivers
#
-# CONFIG_LEDS_S3C24XX is not set
+CONFIG_LEDS_S3C24XX=m
CONFIG_LEDS_GTA01=y
#
#
CONFIG_LEDS_TRIGGERS=y
CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=m
+# CONFIG_LEDS_TRIGGER_HEARTBEAT is not set
#
# Multimedia devices
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_S3C2410=y
CONFIG_FB_S3C2410_DEBUG=y
+CONFIG_GLAMO=y
+CONFIG_FB_GLAMO=y
+CONFIG_GLAMO_SPI_GPIO=y
+CONFIG_FB_GLAMO_SPI=y
# CONFIG_FB_VIRTUAL is not set
#
#
# Logo configuration
#
-CONFIG_LOGO=y
+# CONFIG_LOGO is not set
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
-CONFIG_LOGO_LINUX_CLUT224=y
+# CONFIG_LOGO_LINUX_CLUT224 is not set
#
# Sound
#
# SoC Audio for the Samsung S3C24XX
#
-CONFIG_SND_S3C24XX_SOC=y
-CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC=m
+CONFIG_SND_S3C24XX_SOC_I2S=m
CONFIG_SND_S3C24XX_SOC_SMDK2440=m
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
-CONFIG_SND_SOC_WM8753=y
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
+CONFIG_SND_SOC_WM8753=m
CONFIG_SND_SOC_UDA1380=m
#
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
CONFIG_MMC_BLOCK=y
-CONFIG_MMC_S3C=y
+CONFIG_MMC_S3C=m
#
# Real Time Clock
#
CONFIG_RTC_LIB=y
CONFIG_RTC_CLASS=y
-# CONFIG_RTC_HCTOSYS is not set
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE=rtc0
CONFIG_RTC_DEBUG=y
#
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-CONFIG_XFS_FS=m
-# CONFIG_XFS_QUOTA is not set
-# CONFIG_XFS_SECURITY is not set
-# CONFIG_XFS_POSIX_ACL is not set
-# CONFIG_XFS_RT is not set
+# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
-# CONFIG_YAFFS_FS is not set
+CONFIG_YAFFS_FS=y
+CONFIG_YAFFS_YAFFS1=y
+# CONFIG_YAFFS_DOES_ECC is not set
+CONFIG_YAFFS_YAFFS2=y
+CONFIG_YAFFS_AUTO_YAFFS2=y
+# CONFIG_YAFFS_DISABLE_LAZY_LOAD is not set
+CONFIG_YAFFS_CHECKPOINT_RESERVED_BLOCKS=10
+# CONFIG_YAFFS_DISABLE_WIDE_TNODES is not set
+# CONFIG_YAFFS_ALWAYS_CHECK_CHUNK_ERASED is not set
+CONFIG_YAFFS_SHORT_NAMES_IN_RAM=y
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
# CONFIG_NFSD_V3_ACL is not set
CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
+CONFIG_ROOT_NFS=y
CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
# CONFIG_SCHEDSTATS is not set
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_SLAB is not set
-# CONFIG_DEBUG_PREEMPT is not set
+CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
# CONFIG_DEBUG_KOBJECT is not set
CONFIG_DEBUG_BUGVERBOSE=y
-# CONFIG_DEBUG_INFO is not set
+CONFIG_DEBUG_INFO=y
# CONFIG_DEBUG_VM is not set
# CONFIG_DEBUG_LIST is not set
CONFIG_FRAME_POINTER=y
--- /dev/null
+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/
+