summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--classes/lsppchd-image.bbclass4
-rw-r--r--classes/lsppchg-image.bbclass4
-rw-r--r--classes/n2100-image.bbclass6
-rw-r--r--classes/turbostation-image.bbclass5
-rw-r--r--conf/distro/foonas.conf9
-rw-r--r--conf/machine/lsppchd.conf1
-rw-r--r--conf/machine/lsppchg.conf1
-rw-r--r--conf/machine/n2100.conf10
-rw-r--r--conf/machine/turbostation.conf7
-rw-r--r--packages/angstrom/angstrom-e-image.bb37
-rw-r--r--packages/angstrom/task-angstrom-e.bb27
-rw-r--r--packages/gsm/files/gsmd4
-rw-r--r--packages/gsm/libgsmd_svn.bb2
-rw-r--r--packages/images/foonas-image.bb11
-rw-r--r--packages/linux/linux-gta01_2.6.20.bb4
-rw-r--r--packages/linux/linux-rp-2.6.20/defconfig-spitz1
-rw-r--r--packages/linux/linux-rp-2.6.20/sharpsl-rc-r0.patch491
-rw-r--r--packages/linux/linux-rp_2.6.20.bb3
-rw-r--r--packages/tzdata/tzdata_2007c.bb4
19 files changed, 603 insertions, 28 deletions
diff --git a/classes/lsppchd-image.bbclass b/classes/lsppchd-image.bbclass
index da280551d4..6aab20127a 100644
--- a/classes/lsppchd-image.bbclass
+++ b/classes/lsppchd-image.bbclass
@@ -1 +1,3 @@
-IMAGE_POSTPROCESS_COMMAND += ""
+lsppchd_pack_image() {
+:
+} \ No newline at end of file
diff --git a/classes/lsppchg-image.bbclass b/classes/lsppchg-image.bbclass
index da280551d4..5d9da87c7d 100644
--- a/classes/lsppchg-image.bbclass
+++ b/classes/lsppchg-image.bbclass
@@ -1 +1,3 @@
-IMAGE_POSTPROCESS_COMMAND += ""
+lsppchg_pack_image() {
+:
+} \ No newline at end of file
diff --git a/classes/n2100-image.bbclass b/classes/n2100-image.bbclass
index 811b1d37b7..519be213d5 100644
--- a/classes/n2100-image.bbclass
+++ b/classes/n2100-image.bbclass
@@ -1,9 +1,3 @@
-DEPENDS += "openssl-native"
-EXTRA_IMAGECMD = "--little-endian"
-ERASEBLOCK_SIZE = "0x20000"
-IMAGE_FSTYPES = "jffs2"
-IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;'
-
n2100_pack_image() {
# find latest kernel
KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/zImage* | tail -1`
diff --git a/classes/turbostation-image.bbclass b/classes/turbostation-image.bbclass
index d82e3996d5..e61ffc825b 100644
--- a/classes/turbostation-image.bbclass
+++ b/classes/turbostation-image.bbclass
@@ -1,8 +1,3 @@
-EXTRA_IMAGECMD = "--big-endian"
-ERASEBLOCK_SIZE = "0x20000"
-IMAGE_FSTYPES = "jffs2"
-IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;'
-
turbostation_pack_image() {
# find latest kernel
KERNEL=`ls -tr ${DEPLOY_DIR_IMAGE}/uImage* | tail -1`
diff --git a/conf/distro/foonas.conf b/conf/distro/foonas.conf
index b43090202d..d21e5cfe6f 100644
--- a/conf/distro/foonas.conf
+++ b/conf/distro/foonas.conf
@@ -1,3 +1,4 @@
+
#
# FooNAS distribution - a NAS-centric distribution
# based on openprotium
@@ -20,6 +21,12 @@ FOONAS_KERNEL_n2100 = "kernel-module-ext2 kernel-module-usb-storage"
FOONAS_SUPPORT_n2100 += "fis"
BOOTSTRAP_EXTRA_RDEPENDS_n2100 = "udev mdadm"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
+IMAGE_PREPROCESS_COMMAND += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
+FOONAS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
+
+
# Various defines for QNAP Turbostation
FOONAS_KERNEL_turbostation = "kernel-module-ext3 kernel-module-minix \
kernel-module-usb-storage"
@@ -36,6 +43,8 @@ FOONAS_SUPPORT_lsppchg = ${FOONAS_SUPPORT_lsppchd}
IMAGE_FSTYPES_lsppchd = "tar.gz"
IMAGE_FSTYPES_lsppchg = ${IMAGE_FSTYPES_lsppchd}
+IMAGE_POSTPROCESS_COMMAND += '${MACHINE}_pack_image;'
+
#
# Naming schemes
#
diff --git a/conf/machine/lsppchd.conf b/conf/machine/lsppchd.conf
index 52d58ded5b..51d0186dbe 100644
--- a/conf/machine/lsppchd.conf
+++ b/conf/machine/lsppchd.conf
@@ -3,5 +3,6 @@
#@DESCRIPTION: Machine configuration for the Buffalo Linkstation HD
UBOOT_MACHINE = "linkstation_HDLAN"
+IMAGE_FSTYPES = "tar.gz"
require conf/machine/include/linkstationppc.conf
diff --git a/conf/machine/lsppchg.conf b/conf/machine/lsppchg.conf
index b7ceb6fc95..516a3aaa98 100644
--- a/conf/machine/lsppchg.conf
+++ b/conf/machine/lsppchg.conf
@@ -3,5 +3,6 @@
#@DESCRIPTION: Machine configuration for the Buffalo Linkstation HG
UBOOT_MACHINE = "linkstation_HGLAN"
+IMAGE_FSTYPES = "tar.gz"
require conf/machine/include/linkstationppc.conf
diff --git a/conf/machine/n2100.conf b/conf/machine/n2100.conf
index 6aee9f1b71..c84bf352da 100644
--- a/conf/machine/n2100.conf
+++ b/conf/machine/n2100.conf
@@ -7,11 +7,19 @@ SERIAL_CONSOLE="115200 console"
USE_VT="0"
MODUTILS=26
-MACHINE_FEATURES= "kernel26 usbhost"
+MACHINE_FEATURES= "kernel26 usbhost pci ext2"
PREFERRED_PROVIDER_virtual/kernel = "linux"
PREFERRED_VERSION_linux = "2.6.20"
+MACHINE_TASK_PROVIDER = "task-base"
# We want udev support in the image
udevdir = "/dev"
+ERASEBLOCK_SIZE = "0x20000"
+IMAGE_FSTYPES = "jffs2"
+EXTRA_IMAGECMD = "--little-endian"
+# Creating an image that works with the webinterface required encrypting it
+# So we'll need openssl
+EXTRA_IMAGEDEPENDS = "openssl-native"
+
require conf/machine/include/tune-xscale.conf
diff --git a/conf/machine/turbostation.conf b/conf/machine/turbostation.conf
index a3856dbaf1..ffa44207cd 100644
--- a/conf/machine/turbostation.conf
+++ b/conf/machine/turbostation.conf
@@ -9,10 +9,15 @@ SERIAL_CONSOLE="115200 console"
USE_VT="0"
MODUTILS=26
-MACHINE_FEATURES= "kernel26 usbhost"
+MACHINE_FEATURES= "kernel26 usbhost pci ext2"
PREFERRED_PROVIDER_virtual/kernel = "linux-turbostation"
+MACHINE_TASK_PROVIDER = "task-base"
# We want udev support in the image
udevdir = "/dev"
+EXTRA_IMAGECMD = "--big-endian"
+ERASEBLOCK_SIZE = "0x20000"
+IMAGE_FSTYPES = "jffs2"
+
require conf/machine/include/tune-ppc603e.conf
diff --git a/packages/angstrom/angstrom-e-image.bb b/packages/angstrom/angstrom-e-image.bb
new file mode 100644
index 0000000000..da40f7e00c
--- /dev/null
+++ b/packages/angstrom/angstrom-e-image.bb
@@ -0,0 +1,37 @@
+#Angstrom e image
+LICENSE = "MIT"
+PR = "r0"
+
+
+PREFERRED_PROVIDER_virtual/evas ?= "evas-x11"
+PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11"
+PREFERRED_PROVIDER_virtual/imlib2 ?= "imlib2-x11"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+
+PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
+PREFERRED_PROVIDER_tslib ?= "tslib"
+PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
+PREFERRED_PROVIDER_virtual/libxine ?= "libxine-x11"
+
+ANGSTROM_EXTRA_INSTALL ?= ""
+XSERVER ?= "xserver-kdrive-fbdev"
+
+export IMAGE_BASENAME = "e-image"
+
+DEPENDS = "task-base"
+RDEPENDS = "\
+ ${XSERVER} \
+ task-base-core-default \
+ task-base \
+ angstrom-e-base-depends \
+ angstrom-e-depends \
+ angstrom-gpe-task-settings \
+ ${ANGSTROM_EXTRA_INSTALL}"
+
+
+export PACKAGE_INSTALL = "${RDEPENDS}"
+
+#zap root password for release images
+ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+
+inherit image
diff --git a/packages/angstrom/task-angstrom-e.bb b/packages/angstrom/task-angstrom-e.bb
new file mode 100644
index 0000000000..228c637158
--- /dev/null
+++ b/packages/angstrom/task-angstrom-e.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "Task packages for the Angstrom distribution"
+PR = "r0"
+ALLOW_EMPTY = "1"
+
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
+PACKAGES = "\
+ angstrom-e-base-depends \
+ angstrom-e-depends"
+
+RDEPENDS_angstrom-e-base-depends := "\
+ angstrom-x11-base-depends \
+ rxvt-unicode xstroke xtscal xrandr xmodmap xdpyinfo \
+ ttf-bitstream-vera \
+ entrance e-wm \
+ glibc-charmap-utf-8 glibc-localedata-i18n"
+#xserver-kdrive-fbdev
+
+RDEPENDS_angstrom-e-depends := "\
+ pango-module-basic-fc \
+ gdk-pixbuf-loader-bmp \
+ gdk-pixbuf-loader-gif \
+ gdk-pixbuf-loader-jpeg \
+ gdk-pixbuf-loader-png \
+ gdk-pixbuf-loader-pnm \
+ gdk-pixbuf-loader-xbm \
+ gdk-pixbuf-loader-xpm" \ No newline at end of file
diff --git a/packages/gsm/files/gsmd b/packages/gsm/files/gsmd
index 26ff56aa5c..254fe0a451 100644
--- a/packages/gsm/files/gsmd
+++ b/packages/gsm/files/gsmd
@@ -18,6 +18,10 @@ prog="gsmd"
start() {
# FIXME add check whether GSM_POW is set at all, otherwise don't try to power on
# Power on GSM device
+
+ # Hack for broken uboot and/or kernel on the neo1973
+ dmesg -n1
+
if [ -e "${GSM_POW}" ]
then
echo -n "Powering up GSM device..."
diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb
index 720ba55d76..734624b3ff 100644
--- a/packages/gsm/libgsmd_svn.bb
+++ b/packages/gsm/libgsmd_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL"
SECTION = "libs/gsm"
PROVIDES += "gsmd"
PV = "0.0+svn${SRCDATE}"
-PR = "r6"
+PR = "r7"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://gsmd \
diff --git a/packages/images/foonas-image.bb b/packages/images/foonas-image.bb
index db5ff198fc..8dc2370b5e 100644
--- a/packages/images/foonas-image.bb
+++ b/packages/images/foonas-image.bb
@@ -2,15 +2,11 @@ DESCRIPTION = "Foonas image"
LICENSE = "GPL"
PR = "r0"
-inherit image
+inherit image n2100-image turbostation-image lsppchg-image lsppchd-image storcenter-image
DEPENDS = "${MACHINE_TASK_PROVIDER} makedevs-native mtd-utils-native"
-IMAGE_PREPROCESS_COMMAND += "sed -i -es,^id:5:initdefault:,id:3:initdefault:, ${IMAGE_ROOTFS}/etc/inittab;"
-IMAGE_PREPROCESS_COMMAND += "sed -i -es,^root::0,root:BTMzOOAQfESg6:0, ${IMAGE_ROOTFS}/etc/passwd;"
-IMAGE_PREPROCESS_COMMAND += "sed -i -es,^VERBOSE=no,VERBOSE=very, ${IMAGE_ROOTFS}/etc/default/rcS;"
-FOONAS_DEVICE_TABLE = "${@bb.which(bb.data.getVar('BBPATH', d, 1), 'files/device_table-slugos.txt')}"
-EXTRA_IMAGECMD_jffs2 += " --eraseblock=${ERASEBLOCK_SIZE} -D ${FOONAS_DEVICE_TABLE}"
+EXTRA_IMAGECMD_jffs2 += " --pad --eraseblock=${ERASEBLOCK_SIZE} -D ${FOONAS_DEVICE_TABLE}"
IMAGE_LINGUAS = ""
RDEPENDS = " \
@@ -20,11 +16,10 @@ RDEPENDS = " \
module-init-tools-depmod modutils-initscripts \
ipkg-collateral ipkg ipkg-link \
libgcc1 diffutils cpio findutils\
- portmap dropbear e2fsprogs-blkid \
+ dropbear e2fsprogs-blkid \
mdadm hdparm mtd-utils udev \
${FOONAS_SUPPORT} \
${FOONAS_KERNEL} "
PACKAGE_INSTALL = "${RDEPENDS}"
-inherit n2100-image turbostation-image lsppchg-image lsppchd-image \ No newline at end of file
diff --git a/packages/linux/linux-gta01_2.6.20.bb b/packages/linux/linux-gta01_2.6.20.bb
index a041877c55..67e6c76960 100644
--- a/packages/linux/linux-gta01_2.6.20.bb
+++ b/packages/linux/linux-gta01_2.6.20.bb
@@ -5,7 +5,7 @@ HOMEPAGE = "N/A"
LICENSE = "GPL"
DEPENDS += "u-boot-mkimage-gta01-native"
MOKOR = "moko8"
-PR = "${MOKOR}-r1"
+PR = "${MOKOR}-r2"
VANILLA_VERSION = "2.6.20"
@@ -29,7 +29,7 @@ ALLOW_EMPTY = "1"
COMPATIBLE_MACHINE = 'fic-gta01'
-CMDLINE_CON = "console=ttySAC0,115200n8"
+CMDLINE_CON = ""
#CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
# uncomment if you want to boot over NFS
#CMDLINE_ROOT = "root=/dev/nfs nfsroot=192.168.1.10:/export/opie-image rootdelay=5 3"
diff --git a/packages/linux/linux-rp-2.6.20/defconfig-spitz b/packages/linux/linux-rp-2.6.20/defconfig-spitz
index 824fd57aaa..91f73ed4e9 100644
--- a/packages/linux/linux-rp-2.6.20/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.20/defconfig-spitz
@@ -1601,3 +1601,4 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_SHARPSL_RC=m \ No newline at end of file
diff --git a/packages/linux/linux-rp-2.6.20/sharpsl-rc-r0.patch b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r0.patch
new file mode 100644
index 0000000000..9761f43aca
--- /dev/null
+++ b/packages/linux/linux-rp-2.6.20/sharpsl-rc-r0.patch
@@ -0,0 +1,491 @@
+Index: linux-2.6.20/arch/arm/mach-pxa/spitz.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz.c
++++ linux-2.6.20/arch/arm/mach-pxa/spitz.c
+@@ -244,6 +244,13 @@ static struct platform_device spitzkbd_d
+ .id = -1,
+ };
+
++/*
++ * Spitz Remote Control Device
++ */
++static struct platform_device sharpsl_rc_device = {
++ .name = "sharpsl-remote-control",
++ .id = -1,
++};
+
+ /*
+ * Spitz LEDs
+@@ -476,6 +483,7 @@ static struct platform_device *devices[]
+ &spitzscoop_device,
+ &spitzssp_device,
+ &spitzkbd_device,
++ &sharpsl_rc_device,
+ &spitzts_device,
+ &spitzbl_device,
+ &spitzled_device,
+Index: linux-2.6.20/drivers/input/keyboard/Kconfig
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/Kconfig
++++ linux-2.6.20/drivers/input/keyboard/Kconfig
+@@ -154,6 +154,17 @@ config KEYBOARD_SPITZ
+ To compile this driver as a module, choose M here: the
+ module will be called spitzkbd.
+
++config SHARPSL_RC
++ tristate "Sharp SL-Cxx00 Remote Control"
++ depends on PXA_SHARPSL
++ default y
++ help
++ Say Y here to enable the remote on the Sharp Zaurus SL-Cxx00,
++ SL-C1000, SL-C3000 and Sl-C3100 series of PDAs.
++
++ To compile this driver as a module, choose M here: the
++ module will be called sharpsl_rc.
++
+ config KEYBOARD_AMIGA
+ tristate "Amiga keyboard"
+ depends on AMIGA
+Index: linux-2.6.20/drivers/input/keyboard/Makefile
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/Makefile
++++ linux-2.6.20/drivers/input/keyboard/Makefile
+@@ -14,6 +14,7 @@ obj-$(CONFIG_KEYBOARD_NEWTON) += newton
+ obj-$(CONFIG_KEYBOARD_STOWAWAY) += stowaway.o
+ obj-$(CONFIG_KEYBOARD_CORGI) += corgikbd.o
+ obj-$(CONFIG_KEYBOARD_SPITZ) += spitzkbd.o
++obj-$(CONFIG_SHARPSL_RC) += sharpsl_rc.o
+ obj-$(CONFIG_KEYBOARD_HIL) += hil_kbd.o
+ obj-$(CONFIG_KEYBOARD_HIL_OLD) += hilkbd.o
+ obj-$(CONFIG_KEYBOARD_OMAP) += omap-keypad.o
+Index: linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
+===================================================================
+--- /dev/null
++++ linux-2.6.20/drivers/input/keyboard/sharpsl_rc.c
+@@ -0,0 +1,263 @@
++/*
++ * Keyboard driver for Sharp Clamshell Models (SL-Cxx00)
++ *
++ * Copyright (c) 2004-2005 Richard Purdie
++ *
++ * Based on corgikbd.c and Sharp's RC driver
++ *
++ * 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.
++ *
++ */
++
++#define DEBUG 1
++#include <linux/delay.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/input.h>
++#include <linux/interrupt.h>
++#include <linux/jiffies.h>
++#include <linux/module.h>
++#include <linux/slab.h>
++
++#include <asm/arch/spitz.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/hardware/scoop.h>
++#include <asm/arch/sharpsl.h>
++#include <asm/hardware/sharpsl_pm.h>
++
++#define DPRINTK(fmt, args...) dev_dbg(data->dev, fmt "\n", ##args)
++
++struct remote_control_key {
++ unsigned char min;
++ unsigned char max;
++ unsigned char key;
++};
++
++static struct remote_control_key spitz_remote_keys[] = {
++ { 25, 35, KEY_STOPCD},
++ { 55, 65, KEY_PLAYPAUSE},
++ { 85, 95, KEY_NEXTSONG},
++ { 115, 125, KEY_VOLUMEUP},
++ { 145, 155, KEY_PREVIOUSSONG},
++ { 180, 190, KEY_MUTE},
++ { 215, 225, KEY_VOLUMEDOWN},
++};
++
++#define RELEASE_HI 230
++#define MAX_EARPHONE 6
++#define RC_POLL_MS 10
++#define RC_FINISH_MS 500
++#define WAIT_STATE 3
++#define NOISE_THRESHOLD 100
++
++struct sharpsl_rc {
++ struct input_dev *input;
++ struct device *dev;
++
++ spinlock_t lock;
++ struct timer_list rctimer;
++ struct timer_list rctimer_finish;
++
++ unsigned int handling_press;
++ unsigned int noise;
++ unsigned int state;
++ unsigned int last_key;
++};
++
++static int get_remocon_raw(void)
++{
++ int i, val;
++
++ val = sharpsl_pm_pxa_read_max1111(MAX1111_REMCOM);
++ for (i = 0; i < ARRAY_SIZE(spitz_remote_keys); ++i) {
++ if (val >= spitz_remote_keys[i].min
++ && val <= spitz_remote_keys[i].max) {
++ printk("get_remocon_raw: VAL=%i, KEY=%i\n", val, spitz_remote_keys[i].key);
++ return spitz_remote_keys[i].key;
++ }
++ }
++ return 0;
++}
++
++static irqreturn_t sharpsl_rc_interrupt(int irq, void *dev_id, struct pt_regs *regs)
++{
++ struct sharpsl_rc *data = dev_id;
++ DPRINTK("sharpsl_rc_interrupt %d\n", irq);
++ if (!data->handling_press) {
++ DPRINTK("handling interrupt");
++ data->handling_press = 1;
++ data->noise = 0;
++ data->state = 0;
++ data->last_key = 0;
++
++ reset_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_AKIN_PULLUP);
++
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ }
++ return IRQ_HANDLED;
++}
++
++static void sharpsl_rc_timer_callback(unsigned long dataPtr)
++{
++ struct sharpsl_rc *data = (struct sharpsl_rc *) dataPtr;
++ int timer = 1;
++ int key = get_remocon_raw();
++ DPRINTK("timer callback, key: %d", key);
++
++ //wait for value to stabilize
++ if (data->state < WAIT_STATE) {
++ if (data->last_key != key) {
++ ++data->noise;
++ if (data->noise > NOISE_THRESHOLD) {
++ DPRINTK("too much noise, bailing");
++ timer = 0;
++ }
++ data->state = 0;
++ } else {
++ ++data->state;
++ }
++ data->last_key = key;
++
++ //stable value, send event
++ } else if (data->state == WAIT_STATE) {
++ data->noise = 0;
++ //non-key returned, skip the rest of the states and bail now
++ if (data->last_key == 0) {
++ DPRINTK("non-key detected %d, noise: %d", data->last_key, data->noise);
++ timer = 0;
++ //send button press
++ } else {
++ DPRINTK("key press detected %d, noise %d", data->last_key, data->noise);
++ input_report_key(data->input, data->last_key, 1);
++ }
++ ++data->state;
++
++ //wait until key is released
++ } else if (data->state < WAIT_STATE * 2) {
++ if (key == data->last_key
++ && data->noise < NOISE_THRESHOLD) {
++ data->state = WAIT_STATE + 1;
++ ++data->noise;
++ } else {
++ ++data->state;
++ }
++ //key is released, send event
++ } else {
++ //send button release
++ DPRINTK("release key %d", data->last_key);
++ input_report_key(data->input, data->last_key, 0);
++ timer = 0;
++ }
++ if (timer) {
++ mod_timer(&data->rctimer, jiffies + msecs_to_jiffies(RC_POLL_MS));
++ } else {
++ set_scoop_gpio(&spitzscoop2_device.dev, SPITZ_SCP2_AKIN_PULLUP);
++ data->handling_press = 0;
++ }
++}
++
++static int __init sharpsl_rc_probe(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc;
++ struct input_dev *input_dev;
++ int i, ret;
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_probe\n");
++
++ sharpsl_rc = kzalloc(sizeof(struct sharpsl_rc), GFP_KERNEL);
++ input_dev = input_allocate_device();
++ if (!sharpsl_rc || !input_dev) {
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return -ENOMEM;
++ }
++
++ platform_set_drvdata(pdev, sharpsl_rc);
++
++ sharpsl_rc->dev = &pdev->dev;
++ sharpsl_rc->input = input_dev;
++ spin_lock_init(&sharpsl_rc->lock);
++
++ /* Init Remote Control Timer */
++ init_timer(&sharpsl_rc->rctimer);
++ sharpsl_rc->rctimer.function = sharpsl_rc_timer_callback;
++ sharpsl_rc->rctimer.data = (unsigned long) sharpsl_rc;
++
++ input_dev->name = "Spitz Remote Control";
++ input_dev->phys = "sharpsl_rc/input0";
++ input_dev->id.bustype = BUS_HOST;
++ input_dev->id.vendor = 0x0001;
++ input_dev->id.product = 0x0001;
++ input_dev->id.version = 0x0100;
++ input_dev->cdev.dev = &pdev->dev;
++ input_dev->private = sharpsl_rc;
++
++ input_dev->evbit[0] = BIT(EV_KEY);
++
++ for (i = 0; i <= ARRAY_SIZE(spitz_remote_keys); i++)
++ set_bit(spitz_remote_keys[i].key, input_dev->keybit);
++
++ input_register_device(sharpsl_rc->input);
++
++ pxa_gpio_mode(SPITZ_GPIO_AK_INT | GPIO_IN);
++ ret = request_irq(SPITZ_IRQ_GPIO_AK_INT,
++ sharpsl_rc_interrupt,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_SHARED,
++ "sharpsl_rc",
++ sharpsl_rc);
++ if (ret < 0) {
++ dev_dbg(&pdev->dev, "Can't get IRQ: %d!\n", i);
++ kfree(sharpsl_rc);
++ input_free_device(input_dev);
++ return ret;
++ }
++
++ return 0;
++}
++
++static int sharpsl_rc_remove(struct platform_device *pdev)
++{
++ struct sharpsl_rc *sharpsl_rc = platform_get_drvdata(pdev);
++
++ dev_dbg(&pdev->dev, "sharpsl_rc_remove\n");
++
++ free_irq(SPITZ_IRQ_GPIO_AK_INT, sharpsl_rc);
++ del_timer_sync(&sharpsl_rc->rctimer);
++ input_unregister_device(sharpsl_rc->input);
++ kfree(sharpsl_rc);
++
++ return 0;
++}
++
++static struct platform_driver sharpsl_rc_driver = {
++ .probe = sharpsl_rc_probe,
++ .remove = sharpsl_rc_remove,
++ .suspend = NULL,
++ .resume = NULL,
++ .driver = {
++ .name = "sharpsl-remote-control",
++ },
++};
++
++static int __devinit sharpsl_rc_init(void)
++{
++ printk("sharpsl_rc_init\n");
++ return platform_driver_register(&sharpsl_rc_driver);
++}
++
++static void __exit sharpsl_rc_exit(void)
++{
++ printk("sharpsl_rc_exit\n");
++ platform_driver_unregister(&sharpsl_rc_driver);
++}
++
++module_init(sharpsl_rc_init);
++module_exit(sharpsl_rc_exit);
++
++MODULE_AUTHOR("Justin Patrin <papercrane@reversefold.com>");
++MODULE_AUTHOR("Richard Purdie <rpurdie@rpsys.net>");
++MODULE_DESCRIPTION("SharpSL Remote Control Driver");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.20/drivers/input/keyboard/spitzkbd.c
+===================================================================
+--- linux-2.6.20.orig/drivers/input/keyboard/spitzkbd.c
++++ linux-2.6.20/drivers/input/keyboard/spitzkbd.c
+@@ -19,6 +19,7 @@
+ #include <linux/jiffies.h>
+ #include <linux/module.h>
+ #include <linux/slab.h>
++#include <linux/kmod.h>
+
+ #include <asm/arch/spitz.h>
+ #include <asm/arch/hardware.h>
+@@ -279,13 +280,21 @@ static irqreturn_t spitzkbd_hinge_isr(in
+ static int sharpsl_hinge_state;
+ static int hinge_count;
+
++void spitzkbd_handle_sharpsl_rc(void *arg) {
++ request_module("sharpsl_rc");
++}
++
++DECLARE_WORK(spitzkbd_work, spitzkbd_handle_sharpsl_rc);
++
+ static void spitzkbd_hinge_timer(unsigned long data)
+ {
+ struct spitzkbd *spitzkbd_data = (struct spitzkbd *) data;
+ unsigned long state;
+ unsigned long flags;
++ unsigned int headphone, remote;
+
+ state = GPLR(SPITZ_GPIO_SWA) & (GPIO_bit(SPITZ_GPIO_SWA)|GPIO_bit(SPITZ_GPIO_SWB));
++ state |= (GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN));
+ state |= (GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT));
+ if (state != sharpsl_hinge_state) {
+ hinge_count = 0;
+@@ -299,9 +308,18 @@ static void spitzkbd_hinge_timer(unsigne
+
+ input_report_switch(spitzkbd_data->input, SW_LID, ((GPLR(SPITZ_GPIO_SWA) & GPIO_bit(SPITZ_GPIO_SWA)) != 0));
+ input_report_switch(spitzkbd_data->input, SW_TABLET_MODE, ((GPLR(SPITZ_GPIO_SWB) & GPIO_bit(SPITZ_GPIO_SWB)) != 0));
+- input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) != 0));
++
++ headphone = ((GPLR(SPITZ_GPIO_HP_IN) & GPIO_bit(SPITZ_GPIO_HP_IN)) != 0);
++ input_report_switch(spitzkbd_data->input, SW_HEADPHONE_INSERT, headphone);
++
++ remote = headphone && ((GPLR(SPITZ_GPIO_AK_INT) & GPIO_bit(SPITZ_GPIO_AK_INT)) == 0);
++ input_report_switch(spitzkbd_data->input, SW_REMOTE_INSERT, remote);
+ input_sync(spitzkbd_data->input);
+
++ if (remote) {
++ schedule_work(&spitzkbd_work);
++ }
++
+ spin_unlock_irqrestore(&spitzkbd_data->lock, flags);
+ } else {
+ mod_timer(&spitzkbd_data->htimer, jiffies + msecs_to_jiffies(HINGE_SCAN_INTERVAL));
+@@ -394,6 +412,7 @@ static int __init spitzkbd_probe(struct
+ set_bit(SW_LID, input_dev->swbit);
+ set_bit(SW_TABLET_MODE, input_dev->swbit);
+ set_bit(SW_HEADPHONE_INSERT, input_dev->swbit);
++ set_bit(SW_REMOTE_INSERT, input_dev->swbit);
+
+ err = input_register_device(input_dev);
+ if (err)
+@@ -431,9 +450,12 @@ static int __init spitzkbd_probe(struct
+ request_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd SWB", spitzkbd);
+- request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ request_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd_hinge_isr,
+ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING,
+ "Spitzkbd HP", spitzkbd);
++ request_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd_hinge_isr,
++ IRQF_DISABLED | IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_SHARED,
++ "Spitzkbd HP Type", spitzkbd);
+
+ return 0;
+
+@@ -454,6 +476,7 @@ static int spitzkbd_remove(struct platfo
+ free_irq(SPITZ_IRQ_GPIO_ON_KEY, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWA, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_SWB, spitzkbd);
++ free_irq(SPITZ_IRQ_GPIO_HP_IN, spitzkbd);
+ free_irq(SPITZ_IRQ_GPIO_AK_INT, spitzkbd);
+
+ del_timer_sync(&spitzkbd->htimer);
+Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl.h
++++ linux-2.6.20/arch/arm/mach-pxa/sharpsl.h
+@@ -50,15 +50,10 @@ void spitz_wait_hsync(void);
+
+ #define READ_GPIO_BIT(x) (GPLR(x) & GPIO_bit(x))
+
+-/* MAX1111 Channel Definitions */
+-#define MAX1111_BATT_VOLT 4u
+-#define MAX1111_BATT_TEMP 2u
+-#define MAX1111_ACIN_VOLT 6u
+-
+ extern struct battery_thresh spitz_battery_levels_acin[];
+ extern struct battery_thresh spitz_battery_levels_noac[];
+ void sharpsl_pm_pxa_init(void);
+ void sharpsl_pm_pxa_remove(void);
+-int sharpsl_pm_pxa_read_max1111(int channel);
++
+
+
+Index: linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/sharpsl_pm.c
++++ linux-2.6.20/arch/arm/mach-pxa/sharpsl_pm.c
+@@ -135,6 +135,8 @@ int sharpsl_pm_pxa_read_max1111(int chan
+ | MAXCTRL_SGL | MAXCTRL_UNI | MAXCTRL_STR);
+ }
+
++EXPORT_SYMBOL(sharpsl_pm_pxa_read_max1111);
++
+ void sharpsl_pm_pxa_init(void)
+ {
+ pxa_gpio_mode(sharpsl_pm.machinfo->gpio_acin | GPIO_IN);
+Index: linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
+===================================================================
+--- linux-2.6.20.orig/include/asm-arm/hardware/sharpsl_pm.h
++++ linux-2.6.20/include/asm-arm/hardware/sharpsl_pm.h
+@@ -104,3 +104,10 @@ irqreturn_t sharpsl_ac_isr(int irq, void
+ irqreturn_t sharpsl_chrg_full_isr(int irq, void *dev_id);
+ irqreturn_t sharpsl_fatal_isr(int irq, void *dev_id);
+
++/* MAX1111 Channel Definitions */
++#define MAX1111_REMCOM 0u
++#define MAX1111_BATT_VOLT 4u
++#define MAX1111_BATT_TEMP 2u
++#define MAX1111_ACIN_VOLT 6u
++
++int sharpsl_pm_pxa_read_max1111(int channel);
+Index: linux-2.6.20/include/linux/input.h
+===================================================================
+--- linux-2.6.20.orig/include/linux/input.h
++++ linux-2.6.20/include/linux/input.h
+@@ -602,6 +602,7 @@ struct input_absinfo {
+ #define SW_LID 0x00 /* set = lid shut */
+ #define SW_TABLET_MODE 0x01 /* set = tablet mode */
+ #define SW_HEADPHONE_INSERT 0x02 /* set = inserted */
++#define SW_REMOTE_INSERT 0x04 /* set = remote */
+ #define SW_MAX 0x0f
+
+ /*
+Index: linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
+===================================================================
+--- linux-2.6.20.orig/arch/arm/mach-pxa/spitz_pm.c
++++ linux-2.6.20/arch/arm/mach-pxa/spitz_pm.c
+@@ -161,6 +161,13 @@ static int spitz_should_wakeup(unsigned
+ if (resume_on_alarm && (PEDR & PWER_RTC))
+ is_resume |= PWER_RTC;
+
++ printk("wakeup: PEDR: %x, PKSR: %x, HP_IN: %x, AK_INT: %x\n", PEDR, PKSR, GPIO_bit(SPITZ_GPIO_HP_IN), GPIO_bit(SPITZ_GPIO_AK_INT));
++
++ //remote/headphone interrupt, wakeup
++ if (PEDR == 0 && (PKSR & 0xc0d01) != 0) {
++ is_resume |= PWER_RTC;
++ }
++
+ dev_dbg(sharpsl_pm.dev, "is_resume: %x\n",is_resume);
+ return is_resume;
+ }
diff --git a/packages/linux/linux-rp_2.6.20.bb b/packages/linux/linux-rp_2.6.20.bb
index 49446a772a..70aa40610a 100644
--- a/packages/linux/linux-rp_2.6.20.bb
+++ b/packages/linux/linux-rp_2.6.20.bb
@@ -1,6 +1,6 @@
require linux-rp.inc
-PR = "r6"
+PR = "r7"
# Handy URLs
# git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git;protocol=git;tag=ef7d1b244fa6c94fb76d5f787b8629df64ea4046
@@ -53,6 +53,7 @@ SRC_URI = "http://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.20.tar.bz2 \
file://connectplus-remove-ide-HACK.patch;patch=1;status=hack \
file://squashfs3.0-2.6.15.patch;patch=1;status=external \
file://vesafb-tng-1.0-rc2-2.6.20-rc2.patch;patch=1;status=external \
+ file://sharpsl-rc-r0.patch;patch=1 \
file://defconfig-c7x0 \
file://defconfig-hx2000 \
file://defconfig-collie \
diff --git a/packages/tzdata/tzdata_2007c.bb b/packages/tzdata/tzdata_2007c.bb
index 3b6c45502b..1e8ff25137 100644
--- a/packages/tzdata/tzdata_2007c.bb
+++ b/packages/tzdata/tzdata_2007c.bb
@@ -3,11 +3,13 @@ SECTION = "base"
PRIORITY = "optional"
DEPENDS = "tzcode-native"
+PR = "r1"
+
PROVIDES = "tzdata tzdata-misc tzdata-posix tzdata-right tzdata-africa \
tzdata-americas tzdata-antarctica tzdata-arctic tzdata-asia \
tzdata-atlantic tzdata-australia tzdata-europe tzdata-pacific"
RPROVIDES = "tzdata"
-RCONFLICTS= "timezone-africa timezone-america timezone-antarctica \
+RCONFLICTS= "timezones timezone-africa timezone-america timezone-antarctica \
timezone-arctic timezone-asia timezone-atlantic \
timezone-australia timezone-europe timezone-indian \
timezone-iso3166.tab timezone-pacific timezone-zone.tab"