summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--conf/checksums.ini4
-rw-r--r--conf/distro/include/insane-srcrevs.inc1
-rw-r--r--conf/distro/include/moko-autorev.inc2
-rw-r--r--conf/distro/include/preferred-opie-versions-1.2.3.inc2
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.3.inc4
-rw-r--r--conf/distro/include/sane-srcrevs.inc17
-rw-r--r--conf/machine/dht-walnut.conf2
-rw-r--r--packages/abiword/abiword-2.5.inc8
-rw-r--r--packages/abiword/abiword_2.5.1.bb2
-rw-r--r--packages/abiword/abiword_2.5.2.bb2
-rw-r--r--packages/alsa/alsa-state.bb2
-rw-r--r--packages/alsa/alsa-state/a780/.mtn2git_empty0
-rw-r--r--packages/alsa/alsa-state/a780/asound.state80
-rw-r--r--packages/alsa/alsa-state/hx4700/.mtn2git_empty0
-rw-r--r--packages/alsa/alsa-state/hx4700/asound.state37
-rw-r--r--packages/alsa/alsa-state/magician/.mtn2git_empty0
-rw-r--r--packages/alsa/alsa-state/magician/asound.state202
-rw-r--r--packages/binutils/binutils-cross.inc6
-rw-r--r--packages/cairo/cairo-directfb_1.4.8.bb17
-rw-r--r--packages/cairo/files/cairo_directfb_is_similar-typo.patch11
-rw-r--r--packages/dbus/dbus.inc1
-rw-r--r--packages/dbus/dbus/fix-segfault.patch11
-rw-r--r--packages/dbus/dbus_1.0.1.bb2
-rw-r--r--packages/dbus/dbus_1.0.2.bb2
-rw-r--r--packages/directfb/directfb_1.1.0.bb57
-rw-r--r--packages/directfb/files/fix-font-missing-char.patch11
-rw-r--r--packages/directfb/files/fix-pkgconfig-cflags.patch45
-rw-r--r--packages/directfb/fusionsound_1.1.0+git20070709.bb57
-rw-r--r--packages/evince/evince_2.20.0.bb19
-rw-r--r--packages/ezx/ezxd_svn.bb11
-rw-r--r--packages/gcc/gcc_4.1.2.bb1
-rw-r--r--packages/gnome/epiphany_2.19.6.bb2
-rw-r--r--packages/gsm/files/0001-Introduce-ports.patch710
-rw-r--r--packages/gsm/files/0002-Flush-all-pending-commands-before-restarting-the-mod.patch74
-rw-r--r--packages/gsm/files/0003-Correctly-segment-incoming-usock-data-into-packets.patch77
-rw-r--r--packages/gsm/files/0004-Handle-read-and-write-return-values.patch176
-rw-r--r--packages/gsm/files/0005-Add-ask-ds-option-forSMS.patch130
-rw-r--r--packages/gsm/files/024_sms-text-in-bracket.patch70
-rw-r--r--packages/gsm/files/025_sms-status-report.patch133
-rw-r--r--packages/gsm/files/027_phonebook-find-and-read-range-support.patch423
-rw-r--r--packages/gsm/files/028_shell-phonebook-find-and-read-range-support.patch264
-rw-r--r--packages/gsm/files/default2
-rw-r--r--packages/gsm/libgsmd_svn.bb11
-rw-r--r--packages/gtk-webcore/osb-jscore_svn.bb2
-rw-r--r--packages/gtk-webcore/osb-nrcit_svn.bb2
-rw-r--r--packages/gtk-webcore/osb-nrcore_svn.bb2
-rw-r--r--packages/guichan/.mtn2git_empty0
-rw-r--r--packages/guichan/guichan_0.7.1.bb20
-rw-r--r--packages/hal/hal-info_20070618.bb20
-rw-r--r--packages/hal/hal-info_git.bb3
-rw-r--r--packages/imagemagick/imagemagick_6.2.9.bb33
-rw-r--r--packages/imagemagick/imagemagick_6.3.5-10.bb35
-rw-r--r--packages/libpng/libpng-native_1.2.20.bb14
-rw-r--r--packages/libpng/libpng_1.2.20.bb50
-rw-r--r--packages/libsdl/libsdl-net_1.2.7.bb1
-rw-r--r--packages/libtiff/tiff_3.7.2.bb7
-rw-r--r--packages/linux/ixp4xx-kernel.inc1
-rw-r--r--packages/linux/linux-davinci/binutils-buildid-arm.patch12
-rw-r--r--packages/linux/linux-davinci/davinci-dvevm/defconfig295
-rw-r--r--packages/linux/linux-davinci_2.6.x+git-davinci.bb1
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a1200/defconfig2
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a780/defconfig12
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX50
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch12
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-flip.patch47
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-kbd.patch99
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch7
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e6-eoc.patch12
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e6-ts.patch7
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-core.patch54
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch35
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch52
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/index.html14
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch9
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/series28
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre6/defconfig2
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb37
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb5
-rw-r--r--packages/meta/slugos-packages.bb3
-rw-r--r--packages/mplayer/files/makefile-nostrip-svn.patch17
-rw-r--r--packages/mplayer/files/simple_idct_armv5te.S715
-rw-r--r--packages/mplayer/mplayer_svn.bb98
-rw-r--r--packages/navit/navit_0.0.1.bb4
-rw-r--r--packages/networkmanager/networkmanager.inc8
-rw-r--r--packages/openal/.mtn2git_empty0
-rw-r--r--packages/openal/files/.mtn2git_empty0
-rw-r--r--packages/openal/files/void-workaround.patch13
-rw-r--r--packages/openal/openal_0.0.8.bb24
-rw-r--r--packages/openmoko2/libmokoui2_svn.bb9
-rw-r--r--packages/openmoko2/moko-gtk-engine_svn.bb14
-rw-r--r--packages/openmoko2/openmoko-session2.bb14
-rw-r--r--packages/opie-taskbar/opie-taskbar-images.inc6
-rw-r--r--packages/opie-taskbar/opie-taskbar-images_1.2.3+cvs20070922.bb5
-rw-r--r--packages/pimlico/tasks-0.12/.mtn2git_empty0
-rw-r--r--packages/pimlico/tasks-0.12/tasks-owl.diff62
-rw-r--r--packages/pimlico/tasks_svn.bb2
-rw-r--r--packages/pointercal/files/nokia800/pointercal.broken (renamed from packages/pointercal/files/nokia800/pointercal)0
-rw-r--r--packages/pointercal/pointercal_0.0.bb2
-rw-r--r--packages/ppp/ppp_2.4.3.bb6
-rw-r--r--packages/redboot-utils/fis_1.0.bb4
100 files changed, 4164 insertions, 512 deletions
diff --git a/conf/checksums.ini b/conf/checksums.ini
index 9e2b73cc5e..27b9e87e92 100644
--- a/conf/checksums.ini
+++ b/conf/checksums.ini
@@ -11914,3 +11914,7 @@ sha256=9bb7412a03a76da4219215d2f92addf71305ab3fcc7d9315bb6f9c41fbe851fd
md5=e34320c97d768191217424af64de380a
sha256=f8e9efccbccbe1326a0a2579eb86651cf65e0937a38fae1afaec2269208d24a1
+[http://downloads.sourceforge.net/navit/navit-0.0.1.tar.gz]
+md5=521fbc102a804f7c26d4240b3f970380
+sha256=d79151209bf6b2d470773968b62258c56313bf857cda8ef27f8e321dd1a9d084
+
diff --git a/conf/distro/include/insane-srcrevs.inc b/conf/distro/include/insane-srcrevs.inc
index 14d6336b96..ae1ec5fb9c 100644
--- a/conf/distro/include/insane-srcrevs.inc
+++ b/conf/distro/include/insane-srcrevs.inc
@@ -78,5 +78,6 @@ SRCREV_pn-sjf2410-linux-native ?= "${AUTOREV}"
SRCREV_pn-sphyrna ?= "${AUTOREV}"
SRCREV_pn-webkit-gtk ?= "${AUTOREV}"
SRCREV_pn-xoo ?= "${AUTOREV}"
+SRCREV_pn-mplayer ?= "${AUTOREV}"
SRCREV ?= "${AUTOREV}"
diff --git a/conf/distro/include/moko-autorev.inc b/conf/distro/include/moko-autorev.inc
index 020a8ebf86..c4d478ccde 100644
--- a/conf/distro/include/moko-autorev.inc
+++ b/conf/distro/include/moko-autorev.inc
@@ -6,6 +6,8 @@ SRCREV_pn-libmokoui2 ?= "${AUTOREV}"
SRCREV_pn-linux-openmoko ?= "${AUTOREV}"
SRCREV_pn-linux-openmoko-devel ?= "${AUTOREV}"
+SRCREV_pn-moko-gtk-engine ?= "${AUTOREV}"
+
SRCREV_pn-openmoko-appmanager ?= "${AUTOREV}"
SRCREV_pn-openmoko-calculator ?= "${AUTOREV}"
SRCREV_pn-openmoko-calculator2 ?= "${AUTOREV}"
diff --git a/conf/distro/include/preferred-opie-versions-1.2.3.inc b/conf/distro/include/preferred-opie-versions-1.2.3.inc
index 1f39916f4f..ffcbbc2217 100644
--- a/conf/distro/include/preferred-opie-versions-1.2.3.inc
+++ b/conf/distro/include/preferred-opie-versions-1.2.3.inc
@@ -176,7 +176,7 @@ PREFERRED_VERSION_opie-systemtime = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-tableviewer = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-tabmanager = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-taskbar = "${OPIE_VERSION}"
-PREFERRED_VERSION_opie-taskbar-images = "${OPIE_VERSION}"
+PREFERRED_VERSION_opie-taskbar-images = "${OPIE_VERSION}+cvs20070922"
PREFERRED_VERSION_opie-tetrix = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-textedit = "${OPIE_VERSION}"
PREFERRED_VERSION_opie-theme = "${OPIE_VERSION}"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
index 0ff684ed68..19ee48174d 100644
--- a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
@@ -277,6 +277,6 @@ PREFERRED_VERSION_util-macros ?= "1.1.5"
PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
# xserver
-PREFERRED_VERSION_xserver-kdrive ?= "1.4.0"
-PREFERRED_VERSION_xserver-xorg ?= "1.4.0"
+PREFERRED_VERSION_xserver-kdrive ?= "1.4"
+PREFERRED_VERSION_xserver-xorg ?= "1.4"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index ba5040ba07..3330ecff4d 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -8,9 +8,9 @@
SRCREV_pn-bfin-uclibc ?= "1806"
SRCREV_pn-dfu-util ?= "2866"
SRCREV_pn-dfu-util-native ?= "2866"
-SRCREV_pn-eglibc ?= "3468"
-SRCREV_pn-eglibc-initial ?= "3468"
-SRCREV_pn-eglibc-intermediate ?= "3468"
+SRCREV_pn-eglibc ?= "3531"
+SRCREV_pn-eglibc-initial ?= "3531"
+SRCREV_pn-eglibc-intermediate ?= "3531"
SRCREV_pn-ezxd ?= "2058"
SRCREV_pn-elf2flt="1786"
SRCREV_pn-fbgrab-viewer-native ?= "1943"
@@ -22,7 +22,7 @@ SRCREV_pn-libgsmd ?= "2957"
SRCREV_pn-libmokogsmd2 ?= "2950"
SRCREV_pn-libmokojournal2 ?= "2780"
SRCREV_pn-libmokopanelui2 ?= "2958"
-SRCREV_pn-libmokoui2 ?= "2868"
+SRCREV_pn-libmokoui2 ?= "3032"
SRCREV_pn-libowl ?= "277"
SRCREV_pn-libxosd ?= "627"
SRCREV_pn-linux-hackndev-2.6 ?= "1308"
@@ -33,10 +33,15 @@ SRCREV_pn-matchbox-desktop-2 ?= "1649"
SRCREV_pn-matchbox-keyboard ?= "1675"
SRCREV_pn-matchbox-keyboard-inputmethod ?= "1675"
SRCREV_pn-matchbox-panel-2 ?= "1626"
+SRCREV_moko-gtk-engine ?= "3029"
SRCREV_pn-neod ?= "2956"
SRCREV_pn-oh-puzzles ?= "22"
+SRCREV_pn-osb-browser ?= "125"
+SRCREV_pn-osb-jscore ?= "117"
+SRCREV_pn-osb-nrcit ?= "125"
+SRCREV_pn-osb-nrcore ?= "126"
SRCREV_pn-openmoko-appmanager ?= "1851"
-SRCREV_pn-openmoko-browser2 ?= "3007"
+SRCREV_pn-openmoko-browser2 ?= "3031"
SRCREV_pn-openmoko-calculator ?= "2404"
SRCREV_pn-openmoko-calculator2 ?= "2789"
SRCREV_pn-openmoko-common ?= "397"
@@ -91,3 +96,5 @@ SRCREV_pn-sjf2410-linux-native ?= "933"
SRCREV_pn-sphyrna ?= "44"
SRCREV_pn-webkit-gtk ?= "25615"
SRCREV_pn-xoo ?= "1623"
+SRCREV_pn-mplayer ?= "24587"
+
diff --git a/conf/machine/dht-walnut.conf b/conf/machine/dht-walnut.conf
index d490028eca..ead6a83282 100644
--- a/conf/machine/dht-walnut.conf
+++ b/conf/machine/dht-walnut.conf
@@ -5,7 +5,7 @@
#@DESCRIPTION: Machine configuration for the DHT-Walnut 405GP development platform
TARGET_ARCH = "powerpc"
-PACKAGE_EXTRA_ARCHS = "all ${MACHINE} ppc ppc405"
+PACKAGE_EXTRA_ARCHS = "ppc ppc405"
PREFERRED_PROVIDER_virtual/kernel = "linux-${MACHINE}"
UBOOT_ENTRYPOINT = "0"
diff --git a/packages/abiword/abiword-2.5.inc b/packages/abiword/abiword-2.5.inc
index 42fc6c7d6e..09f61d0534 100644
--- a/packages/abiword/abiword-2.5.inc
+++ b/packages/abiword/abiword-2.5.inc
@@ -13,10 +13,10 @@ SHRT_VER = "${@bb.data.getVar('PV',d,1).split('.')[0]}.${@bb.data.getVar('PV',d,
FILES_${PN} += " \
${datadir}/icons/* \
- ${datadir}/abiword-${SHRT_VER}/AbiWord/glade \
- ${datadir}/abiword-${SHRT_VER}/AbiWord/scripts \
- ${datadir}/abiword-${SHRT_VER}/AbiWord/system.profile-en \
- ${datadir}/abiword-${SHRT_VER}/AbiWord/system.profile-en_GB \
+ ${datadir}/abiword-${SHRT_VER}/glade \
+ ${datadir}/abiword-${SHRT_VER}/scripts \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en \
+ ${datadir}/abiword-${SHRT_VER}/system.profile-en_GB \
# ${datadir}/abiword-${SHRT_VER}/templates/A4.awt \
# ${datadir}/abiword-${SHRT_VER}/templates/US-Letter.awt \
${datadir}/abiword-${SHRT_VER}/templates/normal.awt \
diff --git a/packages/abiword/abiword_2.5.1.bb b/packages/abiword/abiword_2.5.1.bb
index 5fcc1dd1a2..9741ad6413 100644
--- a/packages/abiword/abiword_2.5.1.bb
+++ b/packages/abiword/abiword_2.5.1.bb
@@ -2,6 +2,6 @@ require abiword-2.5.inc
DEFAULT_PREFERENCE = "-1"
-PR = "r1"
+PR = "r2"
RCONFLICTS = "abiword-embedded"
diff --git a/packages/abiword/abiword_2.5.2.bb b/packages/abiword/abiword_2.5.2.bb
index 66d8fae0ad..5fcc1dd1a2 100644
--- a/packages/abiword/abiword_2.5.2.bb
+++ b/packages/abiword/abiword_2.5.2.bb
@@ -2,6 +2,6 @@ require abiword-2.5.inc
DEFAULT_PREFERENCE = "-1"
-PR = "r0"
+PR = "r1"
RCONFLICTS = "abiword-embedded"
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index e2a92dcfc8..1bac841a6e 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -8,7 +8,7 @@ DESCRIPTION = "Default ALSA configuration"
LICENSE = "GPL"
RRECOMMENDS_alsa-state = "alsa-states"
PV = "0.1.0"
-PR = "r1"
+PR = "r3"
SRC_URI = " \
file://asoundrc \
diff --git a/packages/alsa/alsa-state/a780/.mtn2git_empty b/packages/alsa/alsa-state/a780/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/alsa/alsa-state/a780/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/a780/asound.state b/packages/alsa/alsa-state/a780/asound.state
new file mode 100644
index 0000000000..eafd409857
--- /dev/null
+++ b/packages/alsa/alsa-state/a780/asound.state
@@ -0,0 +1,80 @@
+state.EZX {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Output gain'
+ value 9
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 31'
+ iface MIXER
+ name 'Input gain'
+ value 14
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Input Mixer A3 Switch'
+ value true
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Input Mixer A5 Switch'
+ value true
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Output Mixer A1 Switch'
+ value true
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Output Mixer A2 Switch'
+ value true
+ }
+ control.7 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Output Mixer AR Switch'
+ value true
+ }
+ control.8 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Output Mixer AL Switch'
+ value true
+ }
+ control.9 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 '2ch'
+ comment.item.1 '2->1ch'
+ comment.item.2 '2->1ch -3db'
+ comment.item.3 '2->1ch -6db'
+ iface MIXER
+ name Downmixer
+ value '2ch'
+ }
+}
diff --git a/packages/alsa/alsa-state/hx4700/.mtn2git_empty b/packages/alsa/alsa-state/hx4700/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/alsa/alsa-state/hx4700/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/hx4700/asound.state b/packages/alsa/alsa-state/hx4700/asound.state
new file mode 100644
index 0000000000..98661f5e3a
--- /dev/null
+++ b/packages/alsa/alsa-state/hx4700/asound.state
@@ -0,0 +1,37 @@
+state.'hx4700 Audio' {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'Master Playback Volume'
+ value.0 205
+ value.1 205
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Master Playback Switch'
+ value true
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Mic Capture Gain'
+ value 16
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Mic Boost (+20dB)'
+ value true
+ }
+}
diff --git a/packages/alsa/alsa-state/magician/.mtn2git_empty b/packages/alsa/alsa-state/magician/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/alsa/alsa-state/magician/.mtn2git_empty
diff --git a/packages/alsa/alsa-state/magician/asound.state b/packages/alsa/alsa-state/magician/asound.state
new file mode 100644
index 0000000000..edc85dd364
--- /dev/null
+++ b/packages/alsa/alsa-state/magician/asound.state
@@ -0,0 +1,202 @@
+state.Magician {
+ control.1 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'Playback Volume'
+ value.0 205
+ value.1 205
+ }
+ control.2 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 255'
+ iface MIXER
+ name 'Mixer Volume'
+ value.0 255
+ value.1 0
+ }
+ control.3 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Flat
+ comment.item.1 Minimum1
+ comment.item.2 Minimum2
+ comment.item.3 Maximum
+ iface MIXER
+ name 'Sound Processing Filter Mode'
+ value Flat
+ }
+ control.4 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 3'
+ iface MIXER
+ name 'Treble Volume'
+ value.0 0
+ value.1 0
+ }
+ control.5 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Bass Volume'
+ value.0 0
+ value.1 0
+ }
+ control.6 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 2
+ comment.item.0 None
+ comment.item.1 '32kHz'
+ comment.item.2 '44.1kHz'
+ comment.item.3 '48kHz'
+ comment.item.4 '96kHz'
+ iface MIXER
+ name 'Playback De-emphasis'
+ value.0 None
+ value.1 None
+ }
+ control.7 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 127'
+ iface MIXER
+ name 'Capture Volume'
+ value.0 0
+ value.1 0
+ }
+ control.8 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 2
+ comment.range '0 - 15'
+ iface MIXER
+ name 'Line Capture Volume'
+ value.0 0
+ value.1 0
+ }
+ control.9 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 11'
+ iface MIXER
+ name 'Mic Capture Volume'
+ value 0
+ }
+ control.10 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 2
+ iface MIXER
+ name 'Playback Switch'
+ value.0 true
+ value.1 false
+ }
+ control.11 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Capture Switch'
+ value true
+ }
+ control.12 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 7'
+ iface MIXER
+ name 'AGC Timing'
+ value 0
+ }
+ control.13 {
+ comment.access 'read write'
+ comment.type INTEGER
+ comment.count 1
+ comment.range '0 - 3'
+ iface MIXER
+ name 'AGC Target level'
+ value 3
+ }
+ control.14 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'AGC Switch'
+ value false
+ }
+ control.15 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name Silence
+ value false
+ }
+ control.16 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Silence Detection'
+ value false
+ }
+ control.17 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Direct
+ comment.item.1 Mixer
+ iface MIXER
+ name 'Output Mux'
+ value Direct
+ }
+ control.18 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 Line
+ comment.item.1 Mic
+ iface MIXER
+ name 'Input Mux'
+ value Line
+ }
+ control.19 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Headphone Switch'
+ value false
+ }
+ control.20 {
+ comment.access 'read write'
+ comment.type BOOLEAN
+ comment.count 1
+ iface MIXER
+ name 'Speaker Switch'
+ value true
+ }
+ control.21 {
+ comment.access 'read write'
+ comment.type ENUMERATED
+ comment.count 1
+ comment.item.0 'Call Mic'
+ comment.item.1 'Headset Mic'
+ iface MIXER
+ name 'Input Select'
+ value 'Call Mic'
+ }
+}
diff --git a/packages/binutils/binutils-cross.inc b/packages/binutils/binutils-cross.inc
index 74ff4dd7a7..fb966d3c7b 100644
--- a/packages/binutils/binutils-cross.inc
+++ b/packages/binutils/binutils-cross.inc
@@ -18,13 +18,17 @@ do_stage () {
rm -rf ${CROSS_DIR}/share/man
rmdir ${CROSS_DIR}/share || :
rmdir ${CROSS_DIR}/${libdir}/gcc-lib || :
+ rmdir ${CROSS_DIR}/${libdir}64/gcc-lib || :
rmdir ${CROSS_DIR}/${libdir} || :
+ rmdir ${CROSS_DIR}/${libdir}64 || :
rmdir ${CROSS_DIR}/${prefix} || :
# We want to move this into the target specific location
mkdir -p ${CROSS_DIR}/${TARGET_SYS}/lib
- mv -f ${CROSS_DIR}/lib/libiberty.a ${CROSS_DIR}/${TARGET_SYS}/lib
+ mv -f ${CROSS_DIR}/lib/libiberty.a ${CROSS_DIR}/${TARGET_SYS}/lib || \
+ mv -f ${CROSS_DIR}/lib64/libiberty.a ${CROSS_DIR}/${TARGET_SYS}/lib
rmdir ${CROSS_DIR}/lib || :
+ rmdir ${CROSS_DIR}/lib64 || :
}
do_install () {
diff --git a/packages/cairo/cairo-directfb_1.4.8.bb b/packages/cairo/cairo-directfb_1.4.8.bb
new file mode 100644
index 0000000000..0a2090cf66
--- /dev/null
+++ b/packages/cairo/cairo-directfb_1.4.8.bb
@@ -0,0 +1,17 @@
+require cairo.inc
+RCONFLICTS = "cairo"
+DEPENDS = "directfb libsm libpng fontconfig"
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+ file://cairo_directfb_is_similar-typo.patch;patch=1 \
+ "
+
+EXTRA_OECONF += " --enable-directfb \
+ --disable-xlib \
+ --disable-win32"
+
+LDFLAGS_append += " -ldirectfb"
+CFLAGS_append += " -I${STAGING_INCDIR}/directfb"
+
+PR = "r1"
+
+S = "${WORKDIR}/cairo-${PV}"
diff --git a/packages/cairo/files/cairo_directfb_is_similar-typo.patch b/packages/cairo/files/cairo_directfb_is_similar-typo.patch
new file mode 100644
index 0000000000..10c81464f0
--- /dev/null
+++ b/packages/cairo/files/cairo_directfb_is_similar-typo.patch
@@ -0,0 +1,11 @@
+--- cairo-1.4.8/src/cairo-directfb-surface.c~org 2007-09-22 19:34:35.000000000 -0400
++++ cairo-1.4.8/src/cairo-directfb-surface.c 2007-09-22 19:36:01.000000000 -0400
+@@ -1572,7 +1572,7 @@
+ NULL, /* show_glyphs */
+ #endif
+ NULL, /* snapshot */
+- _cairo_directfb_is_similar,
++ _cairo_directfb_surface_is_similar,
+ NULL /* reset */
+ };
+
diff --git a/packages/dbus/dbus.inc b/packages/dbus/dbus.inc
index 8baf8d9feb..b329e82fa3 100644
--- a/packages/dbus/dbus.inc
+++ b/packages/dbus/dbus.inc
@@ -7,7 +7,6 @@ DEPENDS = "expat virtual/libintl"
SRC_URI = "http://dbus.freedesktop.org/releases/dbus/dbus-${PV}.tar.gz \
file://tmpdir.patch;patch=1 \
file://dbus-1.init \
- file://fix-segfault.patch;patch=1 \
file://cross.patch;patch=1 \
file://fix-install-daemon.patch;patch=1"
diff --git a/packages/dbus/dbus/fix-segfault.patch b/packages/dbus/dbus/fix-segfault.patch
deleted file mode 100644
index de5bcff774..0000000000
--- a/packages/dbus/dbus/fix-segfault.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- /tmp/dbus-marshal-recursive.c 2006-07-28 14:58:08.000000000 +0200
-+++ dbus-0.90/dbus/dbus-marshal-recursive.c 2006-07-28 14:58:18.724411000 +0200
-@@ -1294,7 +1294,7 @@
- _dbus_string_get_length (&block->replacement) - block->padding,
- &fixups))
- goto oom;
--
-+printf("%s(%d)""got here", __FILE__, __LINE__);
- #if RECURSIVE_MARSHAL_WRITE_TRACE
- _dbus_verbose ("REPLACEMENT at padding %d len %d\n", block->padding,
- _dbus_string_get_length (&block->replacement) - block->padding);
diff --git a/packages/dbus/dbus_1.0.1.bb b/packages/dbus/dbus_1.0.1.bb
index 3c45ee8bd6..f5e4aa16ea 100644
--- a/packages/dbus/dbus_1.0.1.bb
+++ b/packages/dbus/dbus_1.0.1.bb
@@ -2,4 +2,4 @@ require dbus.inc
SRC_URI += "file://dbus-exploit-fix.patch;patch=1"
-PR = "r3"
+PR = "r4"
diff --git a/packages/dbus/dbus_1.0.2.bb b/packages/dbus/dbus_1.0.2.bb
index 0c97e30406..799509ab66 100644
--- a/packages/dbus/dbus_1.0.2.bb
+++ b/packages/dbus/dbus_1.0.2.bb
@@ -2,4 +2,4 @@ require dbus.inc
SRC_URI += " file://fix-waitpid.patch;patch=1"
-PR = "r3"
+PR = "r4"
diff --git a/packages/directfb/directfb_1.1.0.bb b/packages/directfb/directfb_1.1.0.bb
new file mode 100644
index 0000000000..bbda02e900
--- /dev/null
+++ b/packages/directfb/directfb_1.1.0.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "DirectFB is a thin library that provides developers \
+with hardware graphics acceleration, input device handling and \
+abstraction, an integrated windowing system with support for \
+translucent windows and multiple display layers on top of the \
+Linux framebuffer device."
+SECTION = "libs"
+LICENSE = "LGPL"
+HOMEPAGE = "http://directfb.org"
+DEPENDS = "jpeg libpng freetype zlib tslib"
+PR = "r0"
+RV = "1.1-0"
+
+SRC_URI = "http://www.directfb.org/download/DirectFB/DirectFB-${PV}.tar.gz \
+ file://fix-pkgconfig-cflags.patch;patch=1 \
+ file://fix-font-missing-char.patch;patch=1 \
+ file://getpagesize.patch;patch=1 \
+ file://fix-includes.patch;patch=1 \
+ file://mkdfiff.patch;patch=1"
+
+S = "${WORKDIR}/DirectFB-${PV}"
+
+LDFLAGS_append =" -lts -lm"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--with-gfxdrivers=none \
+ --enable-libmpeg3=no \
+ --enable-freetype=yes \
+ --enable-sdl=no \
+ --disable-x11 \
+ "
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+FILES_directfb-dbg_append = " ${libdir}/directfb-${RV}/*/*/.debug/*.so \
+ ${libdir}/directfb-${RV}/*/.debug/*.so \
+ "
+
+FILES_directfb-dev_append = " ${libdir}/directfb-${RV}/systems/*.la \
+ ${libdir}/directfb-${RV}/inputdrivers/*.la \
+ ${libdir}/directfb-${RV}/interfaces/*/*.la \
+ ${libdir}/directfb-${RV}/wm/*.la \
+ "
+
+
+FILES_directfb_append = " ${libdir}/directfb-${RV}/systems/*.so \
+ ${libdir}/directfb-${RV}/inputdrivers/*.so \
+ ${libdir}/directfb-${RV}/interfaces/*/*.so \
+ ${libdir}/directfb-${RV}/wm/*.so \
+ ${datadir}/directfb-1.1.0 \
+ "
diff --git a/packages/directfb/files/fix-font-missing-char.patch b/packages/directfb/files/fix-font-missing-char.patch
new file mode 100644
index 0000000000..4c5e5883f4
--- /dev/null
+++ b/packages/directfb/files/fix-font-missing-char.patch
@@ -0,0 +1,11 @@
+--- git/src/media/idirectfbfont.c~org 2007-07-10 10:35:46.000000000 -0400
++++ git/src/media/idirectfbfont.c 2007-07-10 10:36:09.000000000 -0400
+@@ -497,7 +497,7 @@
+
+ if (width<max_width && string >= end) {
+ *ret_next_line = NULL;
+- *ret_str_length = length-1;
++ *ret_str_length = length;
+ *ret_width = width;
+
+ return DFB_OK;
diff --git a/packages/directfb/files/fix-pkgconfig-cflags.patch b/packages/directfb/files/fix-pkgconfig-cflags.patch
new file mode 100644
index 0000000000..0273b58ec5
--- /dev/null
+++ b/packages/directfb/files/fix-pkgconfig-cflags.patch
@@ -0,0 +1,45 @@
+diff -ur DirectFB-1.0.0~org/directfb-internal.pc.in DirectFB-1.0.0/directfb-internal.pc.in
+--- DirectFB-1.0.0~org/directfb-internal.pc.in 2003-07-04 13:30:22.000000000 -0400
++++ DirectFB-1.0.0/directfb-internal.pc.in 2007-03-16 22:34:17.000000000 -0400
+@@ -8,4 +8,4 @@
+ Description: Third party module support package for DirectFB.
+ Version: @VERSION@
+ Requires: directfb = @VERSION@
+-Cflags: @DFB_INTERNAL_CFLAGS@ -I@INTERNALINCLUDEDIR@
++Cflags: @DFB_INTERNAL_CFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/directfb.pc.in DirectFB-1.0.0/directfb.pc.in
+--- DirectFB-1.0.0~org/directfb.pc.in 2004-08-04 12:28:20.000000000 -0400
++++ DirectFB-1.0.0/directfb.pc.in 2007-03-16 22:31:33.000000000 -0400
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: fusion direct
+ Libs: -L${libdir} -ldirectfb @THREADLIB@ @DYNLIB@ @ZLIB_LIBS@ @OSX_LIBS@
+-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
++Cflags: @THREADFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/direct/direct.pc.in DirectFB-1.0.0/lib/direct/direct.pc.in
+--- DirectFB-1.0.0~org/lib/direct/direct.pc.in 2005-11-23 09:18:59.000000000 -0500
++++ DirectFB-1.0.0/lib/direct/direct.pc.in 2007-03-16 22:32:13.000000000 -0400
+@@ -7,4 +7,4 @@
+ Description: DirectFB base development library
+ Version: @VERSION@
+ Libs: -L${libdir} -ldirect @THREADLIB@ @DYNLIB@
+-Cflags: @THREADFLAGS@ -I@INCLUDEDIR@
++Cflags: @THREADFLAGS@ -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/fusion/fusion.pc.in DirectFB-1.0.0/lib/fusion/fusion.pc.in
+--- DirectFB-1.0.0~org/lib/fusion/fusion.pc.in 2004-05-19 07:30:56.000000000 -0400
++++ DirectFB-1.0.0/lib/fusion/fusion.pc.in 2007-03-16 22:32:34.000000000 -0400
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lfusion
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}
+diff -ur DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in DirectFB-1.0.0/lib/voodoo/voodoo.pc.in
+--- DirectFB-1.0.0~org/lib/voodoo/voodoo.pc.in 2004-05-19 07:31:28.000000000 -0400
++++ DirectFB-1.0.0/lib/voodoo/voodoo.pc.in 2007-03-16 22:32:55.000000000 -0400
+@@ -8,4 +8,4 @@
+ Version: @VERSION@
+ Requires: direct
+ Libs: -L${libdir} -lvoodoo
+-Cflags: -I@INCLUDEDIR@
++Cflags: -I${includedir}
diff --git a/packages/directfb/fusionsound_1.1.0+git20070709.bb b/packages/directfb/fusionsound_1.1.0+git20070709.bb
new file mode 100644
index 0000000000..54e2ba211f
--- /dev/null
+++ b/packages/directfb/fusionsound_1.1.0+git20070709.bb
@@ -0,0 +1,57 @@
+DESCRIPTION = "FusionSound for DirectFB"
+DEPENDS = "directfb"
+SECTION = "libs"
+LICENSE = "LGPL"
+PR = "r0"
+
+SRC_URI = "git://git.directfb.org/git/directfb/core/FusionSound;protocol=git;tag=0b2162b570c8314fd1240b08d6ab4a8d074ccf37 \
+"
+
+S = "${WORKDIR}/git"
+
+inherit autotools pkgconfig
+
+CFLAGS_append += " -I${STAGING_INCDIR}/directfb -I${STAGING_INCDIR}/directfb-internal"
+
+#Below are some of the configure options
+EXTRA_OECONF = " \
+ --disable-ieee-floats \
+ --disable-precision \
+ --enable-linear-filter \
+ --disable-dithering \
+ --enable-debug \
+ --enable-examples \
+ --enable-module \
+ --disable-timidity \
+ --disable-wave \
+ --enable-vorbis \
+ --enable-tremor \
+ --disable-mad \
+ --disable-cdda \
+ --disable-playlist \
+ "
+
+do_configure_append() {
+ find ${S} -type f | xargs sed -i 's:I/usr/include:I${STAGING_INCDIR}:g'
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+do_install() {
+ oe_runmake 'DESTDIR=${D}' install
+}
+
+FILES_fusionsound-dbg_append = " ${libdir}/directfb-1.1-0/*/*/.debug/*.so \
+ ${libdir}/directfb-1.1-0/*/.debug/*.so \
+ "
+
+FILES_fusionsound-dev_append = " ${libdir}/directfb-1.1-0/interfaces/*/*.la \
+ ${libdir}/directfb-1.1-0/snddrivers/*.la \
+ "
+
+FILES_fusionsound_append = " ${libdir}/directfb-1.1-0/interfaces/*/*.so \
+ ${libdir}/directfb-1.1-0/snddrivers/*.so \
+ "
+
diff --git a/packages/evince/evince_2.20.0.bb b/packages/evince/evince_2.20.0.bb
new file mode 100644
index 0000000000..dbfec26f4e
--- /dev/null
+++ b/packages/evince/evince_2.20.0.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "Evince is a document viewer for document formats like pdf, ps, djvu."
+LICENSE = "GPL"
+SECTION = "x11/office"
+DEPENDS = "tiff djvulibre libxt espgs gnome-doc-utils poppler libxml2 gtk+ gnome-vfs gconf libglade gnome-keyring "
+RDEPENDS = "espgs "
+RRECOMMENDS = "gnome-vfs-plugin-file"
+PR = "r2"
+
+inherit gnome pkgconfig gtk-icon-cache
+
+SRC_URI += "file://no-icon-theme.diff;patch=1;pnum=0 \
+ file://no-help-dir.patch;patch=1"
+
+EXTRA_OECONF = " --without-libgnome \
+ --disable-thumbnailer \
+ --disable-scrollkeeper \
+ --enable-djvu \
+ "
+
diff --git a/packages/ezx/ezxd_svn.bb b/packages/ezx/ezxd_svn.bb
index 56bc1c05bf..8b3390cea9 100644
--- a/packages/ezx/ezxd_svn.bb
+++ b/packages/ezx/ezxd_svn.bb
@@ -4,7 +4,7 @@ SECTION = "devel"
AUTHOR = "Daniel Ribeiro"
PV = "0.0+svnr${SRCREV}"
-PR = "r0"
+PR = "r1"
SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=ezxd;proto=http \
file://ezxd.init \
@@ -21,8 +21,11 @@ do_configure() {
sed -i -e s:CROSS:CC:g Makefile
}
-do_install() {
- install -d ${D}${bindir}
+fakeroot do_install() {
+ install -d ${D}/dev/input
+ mknod ${D}/dev/input/uinput c 10 223
+
+ install -d ${D}${bindir}
install -m 755 ezxd ${D}${bindir}
install -d ${D}${libdir}/ezxd
@@ -33,3 +36,5 @@ do_install() {
install -m 0755 ${WORKDIR}/ezxd.init ${D}${sysconfdir}/init.d/ezxd
}
+FILES_${PN} += "/dev"
+
diff --git a/packages/gcc/gcc_4.1.2.bb b/packages/gcc/gcc_4.1.2.bb
index 1d76a48d3b..5d01163d94 100644
--- a/packages/gcc/gcc_4.1.2.bb
+++ b/packages/gcc/gcc_4.1.2.bb
@@ -38,7 +38,6 @@ SRC_URI_append_sh3 = " file://sh3-installfix-fixheaders.patch;patch=1 "
#Set the fortran bits
# ',fortran' or '', not 'f77' like gcc3 had
FORTRAN = ""
-FORTRAN_linux-gnueabi = ",fortran"
#Set the java bits
JAVA = ""
diff --git a/packages/gnome/epiphany_2.19.6.bb b/packages/gnome/epiphany_2.19.6.bb
index cebd39637d..570f8ba4f5 100644
--- a/packages/gnome/epiphany_2.19.6.bb
+++ b/packages/gnome/epiphany_2.19.6.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "GNOME default webbrowser"
-DEPENDS = "gnome-desktop gnome-vfs libgnomeui webkit-gtk iso-codes"
+DEPENDS = "gnome-desktop gnome-vfs libgnomeui webkit-gtk iso-codes libstartup-notification"
RDEPENDS = "gnome-vfs-plugin-http"
PR = "r1"
diff --git a/packages/gsm/files/0001-Introduce-ports.patch b/packages/gsm/files/0001-Introduce-ports.patch
new file mode 100644
index 0000000000..b3ba3cb957
--- /dev/null
+++ b/packages/gsm/files/0001-Introduce-ports.patch
@@ -0,0 +1,710 @@
+From 516d67c679101d1503dbd4c0613bcd6ff1b604e4 Mon Sep 17 00:00:00 2001
+From: Andrzej Zaborowski <balrog@zabor.org>
+Date: Wed, 19 Sep 2007 14:03:28 +0200
+Subject: [PATCH] Introduce ports.
+
+---
+ include/gsmd/atcmd.h | 2 +-
+ include/gsmd/gsmd.h | 7 +-
+ include/gsmd/uart.h | 28 ++++++
+ include/gsmd/vendorplugin.h | 4 +-
+ src/gsmd/Makefile.am | 2 +-
+ src/gsmd/atcmd.c | 177 +++++++++++++++++---------------------
+ src/gsmd/gsmd.c | 64 ++------------
+ src/gsmd/uart.c | 202 +++++++++++++++++++++++++++++++++++++++++++
+ 8 files changed, 328 insertions(+), 158 deletions(-)
+ create mode 100644 include/gsmd/uart.h
+ create mode 100644 src/gsmd/uart.c
+
+diff --git a/include/gsmd/atcmd.h b/include/gsmd/atcmd.h
+index 0d6c62a..a1af6a0 100644
+--- a/include/gsmd/atcmd.h
++++ b/include/gsmd/atcmd.h
+@@ -9,7 +9,7 @@ typedef int atcmd_cb_t(struct gsmd_atcmd *cmd, void *ctx, char *resp);
+
+ extern struct gsmd_atcmd *atcmd_fill(const char *cmd, int rlen, atcmd_cb_t *cb, void *ctx, u_int16_t id);
+ extern int atcmd_submit(struct gsmd *g, struct gsmd_atcmd *cmd);
+-extern int atcmd_init(struct gsmd *g, int sockfd);
++extern int atcmd_init(struct gsmd *g, struct gsmd_port *port);
+ extern void atcmd_drain(int fd);
+
+ #endif /* __GSMD__ */
+diff --git a/include/gsmd/gsmd.h b/include/gsmd/gsmd.h
+index ed334f1..4afdf66 100644
+--- a/include/gsmd/gsmd.h
++++ b/include/gsmd/gsmd.h
+@@ -10,6 +10,7 @@
+ #include <gsmd/machineplugin.h>
+ #include <gsmd/vendorplugin.h>
+ #include <gsmd/select.h>
++#include <gsmd/uart.h>
+ #include <gsmd/state.h>
+
+ void *gsmd_tallocs;
+@@ -52,6 +53,7 @@ enum llparse_state {
+ #define MLPARSE_BUF_SIZE 65535
+
+ struct llparser {
++ struct gsmd_port *port;
+ enum llparse_state state;
+ unsigned int len;
+ unsigned int flags;
+@@ -70,7 +72,7 @@ struct gsmd;
+ struct gsmd {
+ unsigned int flags;
+ int interpreter_ready;
+- struct gsmd_fd gfd_uart;
++ struct gsmd_uart uart;
+ struct gsmd_fd gfd_sock;
+ struct llparser llp;
+ struct llist_head users;
+@@ -81,9 +83,10 @@ struct gsmd {
+ struct gsmd_device_state dev_state;
+
+ struct llist_head operators; /* cached list of operator names */
+- unsigned char *mlbuf; /* ml_parse buffer */
++ char *mlbuf; /* ml_parse buffer */
+ unsigned int mlbuf_len;
+ int mlunsolicited;
++ int clear_to_send;
+ };
+
+ struct gsmd_user {
+diff --git a/include/gsmd/uart.h b/include/gsmd/uart.h
+new file mode 100644
+index 0000000..a006fa7
+--- /dev/null
++++ b/include/gsmd/uart.h
+@@ -0,0 +1,28 @@
++#ifndef __GSMD_UART_H
++#define __GSMD_UART_H
++
++#ifdef __GSMD__
++
++struct gsmd_port {
++ int (*write)(struct gsmd_port *port, const char data[], int len);
++ int (*set_break)(struct gsmd_port *port, int state);
++ /* more parameters here */
++ int (*newdata_cb)(void *opaque, const char data[], int len);
++ void *newdata_opaque;
++};
++
++struct gsmd_uart {
++ struct gsmd_port port;
++ struct gsmd_fd gfd;
++ char txfifo[2048];
++ int tx_start;
++ int tx_len;
++};
++
++extern int set_baudrate(int fd, int baudrate, int hwflow);
++extern void uart_drain(int fd);
++extern int uart_init(struct gsmd_uart *uart, int sockfd);
++
++#endif /* __GSMD__ */
++
++#endif
+diff --git a/include/gsmd/vendorplugin.h b/include/gsmd/vendorplugin.h
+index 1911fef..1c82790 100644
+--- a/include/gsmd/vendorplugin.h
++++ b/include/gsmd/vendorplugin.h
+@@ -11,8 +11,8 @@ struct gsmd_unsolicit;
+
+ struct gsmd_vendor_plugin {
+ struct llist_head list;
+- unsigned char *name;
+- unsigned char *ext_chars;
++ char *name;
++ char *ext_chars;
+ unsigned int num_unsolicit;
+ const struct gsmd_unsolicit *unsolicit;
+ int (*detect)(struct gsmd *g);
+diff --git a/src/gsmd/Makefile.am b/src/gsmd/Makefile.am
+index 9ac45ee..110b757 100644
+--- a/src/gsmd/Makefile.am
++++ b/src/gsmd/Makefile.am
+@@ -13,7 +13,7 @@ sbin_PROGRAMS = gsmd
+ gsmd_CFLAGS = -D PLUGINDIR=\"$(plugindir)\"
+ gsmd_SOURCES = gsmd.c atcmd.c select.c machine.c vendor.c unsolicited.c log.c \
+ usock.c talloc.c timer.c operator_cache.c ext_response.c \
+- sms_cb.c sms_pdu.c
++ sms_cb.c sms_pdu.c uart.c
+ gsmd_LDADD = -ldl
+ gsmd_LDFLAGS = -Wl,--export-dynamic
+
+diff --git a/src/gsmd/atcmd.c b/src/gsmd/atcmd.c
+index 2ef6a10..27dfa41 100644
+--- a/src/gsmd/atcmd.c
++++ b/src/gsmd/atcmd.c
+@@ -159,7 +159,8 @@ static int llparse_byte(struct llparser *llp, char byte)
+ return ret;
+ }
+
+-static int llparse_string(struct llparser *llp, char *buf, unsigned int len)
++static int llparse_string(struct llparser *llp, const char *buf,
++ unsigned int len)
+ {
+ while (len--) {
+ int rc = llparse_byte(llp, *(buf++));
+@@ -187,6 +188,55 @@ static int llparse_init(struct llparser *llp)
+ return 0;
+ }
+
++/* See if we can now send more commands to the port */
++static void atcmd_wake_queue(struct gsmd *g)
++{
++ int len, rc;
++ char *cr;
++
++ /* write pending commands to UART */
++ while (g->interpreter_ready && g->clear_to_send) {
++ struct gsmd_atcmd *pos, *pos2;
++ llist_for_each_entry_safe(pos, pos2, &g->pending_atcmds, list) {
++ cr = strchr(pos->cur, '\n');
++ if (cr)
++ len = cr - pos->cur;
++ else
++ len = pos->buflen;
++ rc = g->llp.port->write(g->llp.port, pos->cur, len);
++ if (rc == 0) {
++ gsmd_log(GSMD_ERROR,
++ "write returns 0, aborting\n");
++ break;
++ }
++ if (cr && rc == len)
++ rc ++; /* Skip the \n */
++ pos->buflen -= rc;
++ pos->cur += rc;
++ g->llp.port->write(g->llp.port, "\r", 1);
++
++ if (!pos->buflen) {
++ /* success: remove from global list of
++ * to-be-sent atcmds */
++ llist_del(&pos->list);
++ /* append to global list of executing atcmds */
++ llist_add_tail(&pos->list, &g->busy_atcmds);
++
++ /* we only send one cmd at the moment */
++ g->clear_to_send = 0;
++ break;
++ } else {
++ /* The write was short or the atcmd has more
++ * lines to send after a "> ". */
++ if (rc < len)
++ break;
++ g->clear_to_send = 0;
++ break;
++ }
++ }
++ }
++}
++
+ /* mid-level parser */
+
+ static int parse_final_result(const char *res)
+@@ -216,6 +266,7 @@ static int ml_parse(const char *buf, int len, void *ctx)
+ g->interpreter_ready = 1;
+ gsmd_initsettings(g);
+ gmsd_alive_start(g);
++ atcmd_wake_queue(g);
+ return 0;
+ }
+
+@@ -316,6 +367,7 @@ static int ml_parse(const char *buf, int len, void *ctx)
+ } else {
+ DEBUGP("Calling cmd->cb()\n");
+ cmd->resp = g->mlbuf;
++ g->mlbuf[g->mlbuf_len] = 0;
+ rc = cmd->cb(cmd, cmd->ctx, cmd->resp);
+ DEBUGP("Clearing mlbuf\n");
+ }
+@@ -370,12 +422,15 @@ static int ml_parse(const char *buf, int len, void *ctx)
+ if (g->mlbuf_len)
+ g->mlbuf[g->mlbuf_len ++] = '\n';
+ DEBUGP("Appending buf to mlbuf\n");
+- if (len > MLPARSE_BUF_SIZE - g->mlbuf_len)
++ if (len > MLPARSE_BUF_SIZE - g->mlbuf_len) {
+ len = MLPARSE_BUF_SIZE - g->mlbuf_len;
++ gsmd_log(GSMD_NOTICE, "g->mlbuf overrun\n");
++ }
+ memcpy(g->mlbuf + g->mlbuf_len, buf, len);
+ g->mlbuf_len += len;
+
+ if (g->mlunsolicited) {
++ g->mlbuf[g->mlbuf_len] = 0;
+ rc = unsolicited_parse(g, g->mlbuf, g->mlbuf_len,
+ strchr(g->mlbuf, ':') + 1);
+ if (rc == -EAGAIN) {
+@@ -422,8 +477,11 @@ final_cb:
+
+ /* if we're finished with current commands, but still have pending
+ * commands: we want to WRITE again */
+- if (llist_empty(&g->busy_atcmds) && !llist_empty(&g->pending_atcmds))
+- g->gfd_uart.when |= GSMD_FD_WRITE;
++ if (llist_empty(&g->busy_atcmds)) {
++ g->clear_to_send = 1;
++ if (!llist_empty(&g->pending_atcmds))
++ atcmd_wake_queue(g);
++ }
+
+ return rc;
+ }
+@@ -433,85 +491,23 @@ static int atcmd_prompt(void *data)
+ {
+ struct gsmd *g = data;
+
+- g->gfd_uart.when |= GSMD_FD_WRITE;
++ g->clear_to_send = 1;
++ atcmd_wake_queue(g);
+ }
+
+ /* callback to be called if [virtual] UART has some data for us */
+-static int atcmd_select_cb(int fd, unsigned int what, void *data)
++static int atcmd_newdata_cb(void *opaque, const char data[], int len)
+ {
+- int len, rc;
+- static char rxbuf[1024];
+- struct gsmd *g = data;
+- char *cr;
+-
+- if (what & GSMD_FD_READ) {
+- memset(rxbuf, 0, sizeof(rxbuf));
+- while ((len = read(fd, rxbuf, sizeof(rxbuf)))) {
+- if (len < 0) {
+- if (errno == EAGAIN)
+- return 0;
+- gsmd_log(GSMD_NOTICE, "ERROR reading from fd %u: %d (%s)\n", fd, len,
+- strerror(errno));
+- return len;
+- }
+- rc = llparse_string(&g->llp, rxbuf, len);
+- if (rc < 0) {
+- gsmd_log(GSMD_ERROR, "ERROR during llparse_string: %d\n", rc);
+- return rc;
+- }
+- }
+- }
+-
+- /* write pending commands to UART */
+- if ((what & GSMD_FD_WRITE) && g->interpreter_ready) {
+- struct gsmd_atcmd *pos, *pos2;
+- llist_for_each_entry_safe(pos, pos2, &g->pending_atcmds, list) {
+- cr = strchr(pos->cur, '\n');
+- if (cr)
+- len = cr - pos->cur;
+- else
+- len = pos->buflen - 1; /* assuming zero-terminated strings */
+- rc = write(fd, pos->cur, len);
+- if (rc == 0) {
+- gsmd_log(GSMD_ERROR, "write returns 0, aborting\n");
+- break;
+- } else if (rc < 0) {
+- gsmd_log(GSMD_ERROR, "error during write to fd %d: %d\n",
+- fd, rc);
+- return rc;
+- }
+- if (!cr || rc == len)
+- rc ++; /* Skip the \n or \0 */
+- pos->buflen -= rc;
+- pos->cur += rc;
+- write(fd, "\r", 1);
+-
+- if (!pos->buflen) {
+- /* success: remove from global list of
+- * to-be-sent atcmds */
+- llist_del(&pos->list);
+- /* append to global list of executing atcmds */
+- llist_add_tail(&pos->list, &g->busy_atcmds);
+-
+- /* we only send one cmd at the moment */
+- break;
+- } else {
+- /* The write was short or the atcmd has more
+- * lines to send after a "> ". */
+- if (rc < len)
+- return 0;
+- break;
+- }
+- }
++ struct gsmd *g = opaque;
++ int rc;
+
+- /* Either pending_atcmds is empty or a command has to wait */
+- g->gfd_uart.when &= ~GSMD_FD_WRITE;
+- }
++ rc = llparse_string(&g->llp, data, len);
++ if (rc < 0)
++ gsmd_log(GSMD_ERROR, "ERROR during llparse_string: %d\n", rc);
+
+- return 0;
++ return rc;
+ }
+
+-
+ struct gsmd_atcmd *atcmd_fill(const char *cmd, int rlen,
+ atcmd_cb_t cb, void *ctx, u_int16_t id)
+ {
+@@ -544,36 +540,18 @@ int atcmd_submit(struct gsmd *g, struct gsmd_atcmd *cmd)
+ {
+ DEBUGP("submitting command `%s'\n", cmd->buf);
+
+- if (llist_empty(&g->pending_atcmds))
+- g->gfd_uart.when |= GSMD_FD_WRITE;
++ llist_empty(&g->pending_atcmds);
+ llist_add_tail(&cmd->list, &g->pending_atcmds);
++ atcmd_wake_queue(g);
+
+ return 0;
+ }
+
+-void atcmd_drain(int fd)
+-{
+- int rc;
+- struct termios t;
+- rc = tcflush(fd, TCIOFLUSH);
+- rc = tcgetattr(fd, &t);
+- DEBUGP("c_iflag = 0x%08x, c_oflag = 0x%08x, c_cflag = 0x%08x, c_lflag = 0x%08x\n",
+- t.c_iflag, t.c_oflag, t.c_cflag, t.c_lflag);
+- t.c_iflag = t.c_oflag = 0;
+- cfmakeraw(&t);
+- rc = tcsetattr(fd, TCSANOW, &t);
+-}
+-
+ /* init atcmd parser */
+-int atcmd_init(struct gsmd *g, int sockfd)
++int atcmd_init(struct gsmd *g, struct gsmd_port *port)
+ {
+ __atcmd_ctx = talloc_named_const(gsmd_tallocs, 1, "atcmds");
+
+- g->gfd_uart.fd = sockfd;
+- g->gfd_uart.when = GSMD_FD_READ;
+- g->gfd_uart.data = g;
+- g->gfd_uart.cb = &atcmd_select_cb;
+-
+ INIT_LLIST_HEAD(&g->pending_atcmds);
+ INIT_LLIST_HEAD(&g->busy_atcmds);
+
+@@ -581,7 +559,9 @@ int atcmd_init(struct gsmd *g, int sockfd)
+
+ g->mlbuf_len = 0;
+ g->mlunsolicited = 0;
++ g->clear_to_send = 1;
+
++ g->llp.port = port;
+ g->llp.cur = g->llp.buf;
+ g->llp.len = sizeof(g->llp.buf);
+ g->llp.cb = &ml_parse;
+@@ -589,5 +569,8 @@ int atcmd_init(struct gsmd *g, int sockfd)
+ g->llp.ctx = g;
+ g->llp.flags = LGSM_ATCMD_F_EXTENDED;
+
+- return gsmd_register_fd(&g->gfd_uart);
++ port->newdata_opaque = g;
++ port->newdata_cb = atcmd_newdata_cb;
++
++ return 0;
+ }
+diff --git a/src/gsmd/gsmd.c b/src/gsmd/gsmd.c
+index 51b4f2c..846bd17 100644
+--- a/src/gsmd/gsmd.c
++++ b/src/gsmd/gsmd.c
+@@ -26,7 +26,6 @@
+ #include <string.h>
+ #include <errno.h>
+ #include <fcntl.h>
+-#include <termios.h>
+ #include <signal.h>
+
+ #define _GNU_SOURCE
+@@ -247,56 +246,6 @@ int gsmd_initsettings(struct gsmd *gsmd)
+ return atcmd_submit(gsmd, cmd);
+ }
+
+-struct bdrt {
+- int bps;
+- u_int32_t b;
+-};
+-
+-static struct bdrt bdrts[] = {
+- { 0, B0 },
+- { 9600, B9600 },
+- { 19200, B19200 },
+- { 38400, B38400 },
+- { 57600, B57600 },
+- { 115200, B115200 },
+- { 230400, B230400 },
+- { 460800, B460800 },
+- { 921600, B921600 },
+-};
+-
+-static int set_baudrate(int fd, int baudrate, int hwflow)
+-{
+- int i;
+- u_int32_t bd = 0;
+- struct termios ti;
+-
+- for (i = 0; i < ARRAY_SIZE(bdrts); i++) {
+- if (bdrts[i].bps == baudrate)
+- bd = bdrts[i].b;
+- }
+- if (bd == 0)
+- return -EINVAL;
+-
+- i = tcgetattr(fd, &ti);
+- if (i < 0)
+- return i;
+-
+- i = cfsetispeed(&ti, B0);
+- if (i < 0)
+- return i;
+-
+- i = cfsetospeed(&ti, bd);
+- if (i < 0)
+- return i;
+-
+- if (hwflow)
+- ti.c_cflag |= CRTSCTS;
+- else
+- ti.c_cflag &= ~CRTSCTS;
+-
+- return tcsetattr(fd, 0, &ti);
+-}
+-
+ static int gsmd_initialize(struct gsmd *g)
+ {
+ INIT_LLIST_HEAD(&g->users);
+@@ -478,14 +427,19 @@ int main(int argc, char **argv)
+ if (wait >= 0)
+ g.interpreter_ready = !wait;
+
+- if (atcmd_init(&g, fd) < 0) {
++ if (uart_init(&g.uart, fd) < 0) {
+ fprintf(stderr, "can't initialize UART device\n");
+ exit(1);
+ }
+
+- write(fd, "\r", 1);
+- sleep(1);
+- atcmd_drain(fd);
++ if (atcmd_init(&g, &g.uart.port) < 0) {
++ fprintf(stderr, "can't initialize AT parser\n");
++ exit(1);
++ }
++ write(fd, "\r", 1);
++ sleep(1);
++
++ uart_drain(fd);
+
+ if (usock_init(&g) < 0) {
+ fprintf(stderr, "can't open unix socket\n");
+diff --git a/src/gsmd/uart.c b/src/gsmd/uart.c
+new file mode 100644
+index 0000000..22a4a5c
+--- /dev/null
++++ b/src/gsmd/uart.c
+@@ -0,0 +1,202 @@
++/* Wrapper for the physical UART in a struct gsmd_port abstraction.
++ *
++ * Copyright (C) 2007 OpenMoko, Inc.
++ * Written by Andrzej Zaborowski <andrew@openedhand.com>
++ *
++ * 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; either version 2 of
++ * the License, or (at your option) any later version.
++ *
++ * 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., 59 Temple Place, Suite 330, Boston,
++ * MA 02111-1307 USA
++ */
++
++#include <string.h>
++#include <fcntl.h>
++#include <termios.h>
++#include <unistd.h>
++#include <errno.h>
++
++#include "gsmd.h"
++
++#include <gsmd/gsmd.h>
++
++void uart_drain(int fd)
++{
++ int rc;
++ struct termios t;
++ rc = tcflush(fd, TCIOFLUSH);
++ rc = tcgetattr(fd, &t);
++ DEBUGP(
++ "c_iflag = 0x%08x, c_oflag = 0x%08x, "
++ "c_cflag = 0x%08x, c_lflag = 0x%08x\n",
++ t.c_iflag, t.c_oflag, t.c_cflag, t.c_lflag);
++ t.c_iflag = t.c_oflag = 0;
++ cfmakeraw(&t);
++ rc = tcsetattr(fd, TCSANOW, &t);
++}
++
++struct bdrt {
++ int bps;
++ u_int32_t b;
++};
++
++static struct bdrt bdrts[] = {
++ { 0, B0 },
++ { 9600, B9600 },
++ { 19200, B19200 },
++ { 38400, B38400 },
++ { 57600, B57600 },
++ { 115200, B115200 },
++ { 230400, B230400 },
++ { 460800, B460800 },
++ { 921600, B921600 },
++};
++
++int set_baudrate(int fd, int baudrate, int hwflow)
++{
++ int i;
++ u_int32_t bd = 0;
++ struct termios ti;
++
++ for (i = 0; i < ARRAY_SIZE(bdrts); i++) {
++ if (bdrts[i].bps == baudrate)
++ bd = bdrts[i].b;
++ }
++ if (bd == 0)
++ return -EINVAL;
++
++ i = tcgetattr(fd, &ti);
++ if (i < 0)
++ return i;
++
++ i = cfsetispeed(&ti, B0);
++ if (i < 0)
++ return i;
++
++ i = cfsetospeed(&ti, bd);
++ if (i < 0)
++ return i;
++
++ if (hwflow)
++ ti.c_cflag |= CRTSCTS;
++ else
++ ti.c_cflag &= ~CRTSCTS;
++
++ return tcsetattr(fd, 0, &ti);
++}
++
++static int uart_select_cb(int fd, unsigned int what, void *data)
++{
++ struct gsmd_uart *uart = (struct gsmd_uart *) data;
++ static char rxbuf[2048];
++ int rc, len;
++
++ if ((what & GSMD_FD_READ) && uart->port.newdata_cb) {
++ while ((len = read(fd, rxbuf, sizeof(rxbuf)))) {
++ if (len < 0) {
++ if (errno == EAGAIN || errno == EINTR)
++ return 0;
++ gsmd_log(GSMD_NOTICE, "ERROR reading from "
++ "fd %u: %d (%s)\n", fd, errno,
++ strerror(errno));
++ return -errno;
++ }
++
++ rc = uart->port.newdata_cb(
++ uart->port.newdata_opaque,
++ rxbuf,
++ len);
++ if (rc < 0)
++ return rc;
++ }
++ }
++
++ /* Write pending data to UART. */
++ if ((what & GSMD_FD_WRITE) && uart->tx_len) {
++ while (uart->tx_start + uart->tx_len >= sizeof(uart->txfifo)) {
++ len = sizeof(uart->txfifo) - uart->tx_start;
++ rc = write(fd, &uart->txfifo[uart->tx_start], len);
++ if (rc < 0 && errno != EINTR) {
++ if (errno == EAGAIN)
++ return 0;
++ gsmd_log(GSMD_NOTICE, "ERROR writing "
++ "fd %u: %d (%s)\n", fd, errno,
++ strerror(errno));
++ return -errno;
++ }
++
++ if (rc > 0) {
++ uart->tx_start += rc;
++ uart->tx_len -= rc;
++ }
++ }
++ uart->tx_start &= sizeof(uart->txfifo) - 1;
++
++ while (uart->tx_len) {
++ rc = write(fd, &uart->txfifo[uart->tx_start],
++ uart->tx_len);
++ if (rc < 0 && errno != EINTR) {
++ if (errno == EAGAIN)
++ return 0;
++ gsmd_log(GSMD_NOTICE, "ERROR writing "
++ "fd %u: %d (%s)\n", fd, errno,
++ strerror(errno));
++ return -errno;
++ }
++
++ if (rc > 0) {
++ uart->tx_start += rc;
++ uart->tx_len -= rc;
++ }
++ }
++
++ /* If we reached here, there's no more data for the moment. */
++ uart->gfd.when &= ~GSMD_FD_WRITE;
++ }
++
++ return 0;
++}
++
++static int uart_write(struct gsmd_port *port, const char data[], int len)
++{
++ struct gsmd_uart *uart = (struct gsmd_uart *) port;
++ int start = (uart->tx_start + uart->tx_len) &
++ (sizeof(uart->txfifo) - 1);
++ int space = sizeof(uart->txfifo) - start;
++
++ if (uart->tx_len + len > sizeof(uart->txfifo))
++ len = sizeof(uart->txfifo) - uart->tx_len;
++
++ if (len)
++ uart->gfd.when |= GSMD_FD_WRITE;
++
++ if (len > space) {
++ memcpy(uart->txfifo + start, data, space);
++ memcpy(uart->txfifo, data + space, len - space);
++ } else
++ memcpy(uart->txfifo + start, data, len);
++
++ uart->tx_len += len;
++ return len;
++}
++
++int uart_init(struct gsmd_uart *uart, int sockfd)
++{
++ uart->gfd.fd = sockfd;
++ uart->gfd.when = GSMD_FD_READ;
++ uart->gfd.data = uart;
++ uart->gfd.cb = &uart_select_cb;
++
++ uart->port.write = uart_write;
++
++ return gsmd_register_fd(&uart->gfd);
++}
+--
+1.5.2.1
+
diff --git a/packages/gsm/files/0002-Flush-all-pending-commands-before-restarting-the-mod.patch b/packages/gsm/files/0002-Flush-all-pending-commands-before-restarting-the-mod.patch
new file mode 100644
index 0000000000..3683596389
--- /dev/null
+++ b/packages/gsm/files/0002-Flush-all-pending-commands-before-restarting-the-mod.patch
@@ -0,0 +1,74 @@
+From 1078f7aced63c6216bffe649930b97c9ccf9a16e Mon Sep 17 00:00:00 2001
+From: Andrzej Zaborowski <balrog@zabor.org>
+Date: Wed, 19 Sep 2007 14:04:50 +0200
+Subject: [PATCH] Flush all pending commands before restarting the modem initialisation.
+
+---
+ include/gsmd/gsmd.h | 1 +
+ src/gsmd/atcmd.c | 21 +++++++++++++++++++++
+ src/gsmd/timer.c | 8 ++++++++
+ 3 files changed, 30 insertions(+), 0 deletions(-)
+
+diff --git a/include/gsmd/gsmd.h b/include/gsmd/gsmd.h
+index 4afdf66..6ac9d8e 100644
+--- a/include/gsmd/gsmd.h
++++ b/include/gsmd/gsmd.h
+@@ -131,6 +131,7 @@ struct gsmd_timer {
+
+ int gsmd_timer_init(void);
+ void gmsd_timer_check_n_run(void);
++void gsmd_timer_reset(void);
+
+ struct gsmd_timer *gsmd_timer_alloc(void);
+ int gsmd_timer_register(struct gsmd_timer *timer);
+diff --git a/src/gsmd/atcmd.c b/src/gsmd/atcmd.c
+index 27dfa41..2f6cee2 100644
+--- a/src/gsmd/atcmd.c
++++ b/src/gsmd/atcmd.c
+@@ -264,6 +264,27 @@ static int ml_parse(const char *buf, int len, void *ctx)
+ if (strlen(buf) == 0 ||
+ !strcmp(buf, "AT-Command Interpreter ready")) {
+ g->interpreter_ready = 1;
++ g->clear_to_send = 1;
++
++ /* Flush current queue and reinitialise */
++ while (!llist_empty(&g->busy_atcmds)) {
++ cmd = llist_entry(g->busy_atcmds.next,
++ struct gsmd_atcmd, list);
++ gsmd_log(GSMD_NOTICE, "discarding busy cmd %s\n",
++ cmd->buf);
++ llist_del(&cmd->list);
++ talloc_free(cmd);
++ }
++ while (!llist_empty(&g->pending_atcmds)) {
++ cmd = llist_entry(g->pending_atcmds.next,
++ struct gsmd_atcmd, list);
++ gsmd_log(GSMD_NOTICE, "discarding pending cmd %s\n",
++ cmd->buf);
++ llist_del(&cmd->list);
++ talloc_free(cmd);
++ }
++
++ gsmd_timer_reset();
+ gsmd_initsettings(g);
+ gmsd_alive_start(g);
+ atcmd_wake_queue(g);
+diff --git a/src/gsmd/timer.c b/src/gsmd/timer.c
+index 5200690..8877275 100644
+--- a/src/gsmd/timer.c
++++ b/src/gsmd/timer.c
+@@ -215,3 +215,11 @@ void gsmd_timer_unregister(struct gsmd_timer *timer)
+ /* re-calculate next expiration */
+ calc_next_expiration();
+ }
++
++void gsmd_timer_reset(void)
++{
++ while (!llist_empty(&gsmd_timers))
++ /* TODO: free associated resources (e.g timer->cancel_cb()) */
++ llist_del(&llist_entry(gsmd_timers.next,
++ struct gsmd_timer, list)->list);
++}
+--
+1.5.2.1
+
diff --git a/packages/gsm/files/0003-Correctly-segment-incoming-usock-data-into-packets.patch b/packages/gsm/files/0003-Correctly-segment-incoming-usock-data-into-packets.patch
new file mode 100644
index 0000000000..984acc9369
--- /dev/null
+++ b/packages/gsm/files/0003-Correctly-segment-incoming-usock-data-into-packets.patch
@@ -0,0 +1,77 @@
+From 8af1bb4a0d0df9baa80859c5f7f56cbd7634aded Mon Sep 17 00:00:00 2001
+From: Andrzej Zaborowski <balrog@zabor.org>
+Date: Wed, 19 Sep 2007 14:06:19 +0200
+Subject: [PATCH] Correctly segment incoming usock data into packets, handler short reads.
+
+---
+ include/gsmd/gsmd.h | 2 ++
+ src/gsmd/usock.c | 20 ++++++++++++++++----
+ 2 files changed, 18 insertions(+), 4 deletions(-)
+
+diff --git a/include/gsmd/gsmd.h b/include/gsmd/gsmd.h
+index 6ac9d8e..acec02a 100644
+--- a/include/gsmd/gsmd.h
++++ b/include/gsmd/gsmd.h
+@@ -95,6 +95,8 @@ struct gsmd_user {
+ struct gsmd *gsmd;
+ struct gsmd_fd gfd; /* the socket */
+ u_int32_t subscriptions; /* bitmaks of subscribed event groups */
++ char usock_fifo[1024];
++ int usock_len;
+
+ struct llist_head pb_readrg_list; /* our READRG phonebook list */
+ struct llist_head pb_find_list; /* our FIND phonebook list */
+diff --git a/src/gsmd/usock.c b/src/gsmd/usock.c
+index 32e98d0..bac5f0c 100644
+--- a/src/gsmd/usock.c
++++ b/src/gsmd/usock.c
+@@ -1529,14 +1529,15 @@ static int usock_rcv_pcmd(struct gsmd_user *gu, char *buf, int len)
+ static int gsmd_usock_user_cb(int fd, unsigned int what, void *data)
+ {
+ struct gsmd_user *gu = data;
++ struct gsmd_msg_hdr *gph;
+
+ /* FIXME: check some kind of backlog and limit it */
+
+ if (what & GSMD_FD_READ) {
+- char buf[1024];
+ int rcvlen;
+ /* read data from socket, determine what he wants */
+- rcvlen = read(fd, buf, sizeof(buf));
++ rcvlen = read(fd, gu->usock_fifo + gu->usock_len,
++ sizeof(gu->usock_fifo) - gu->usock_len);
+ if (rcvlen == 0) {
+ DEBUGP("EOF, this client has just vanished\n");
+ /* EOF, this client has just vanished */
+@@ -1549,8 +1550,18 @@ static int gsmd_usock_user_cb(int fd, unsigned int what, void *data)
+ return 0;
+ } else if (rcvlen < 0)
+ return rcvlen;
+- else
+- return usock_rcv_pcmd(gu, buf, rcvlen);
++
++ gu->usock_len += rcvlen;
++ gph = (struct gsmd_msg_hdr *) gu->usock_fifo;
++ while (gu->usock_len >= sizeof(*gph) &&
++ gu->usock_len >= sizeof(*gph) + gph->len) {
++ usock_rcv_pcmd(gu, gu->usock_fifo, gu->usock_len);
++ gu->usock_len -= sizeof(*gph) + gph->len;
++ memmove(gu->usock_fifo,
++ gu->usock_fifo + sizeof(*gph) +
++ gph->len,
++ gu->usock_len);
++ }
+ }
+
+ if (what & GSMD_FD_WRITE) {
+@@ -1609,6 +1620,7 @@ static int gsmd_usock_cb(int fd, unsigned int what, void *data)
+ newuser->gfd.cb = &gsmd_usock_user_cb;
+ newuser->gsmd = g;
+ newuser->subscriptions = 0xffffffff;
++ newuser->usock_len = 0;
+ INIT_LLIST_HEAD(&newuser->finished_ucmds);
+ INIT_LLIST_HEAD(&newuser->pb_readrg_list);
+ INIT_LLIST_HEAD(&newuser->pb_find_list);
+--
+1.5.2.1
+
diff --git a/packages/gsm/files/0004-Handle-read-and-write-return-values.patch b/packages/gsm/files/0004-Handle-read-and-write-return-values.patch
new file mode 100644
index 0000000000..f5e7a7902d
--- /dev/null
+++ b/packages/gsm/files/0004-Handle-read-and-write-return-values.patch
@@ -0,0 +1,176 @@
+From 421b0fa14fefbd13a455c20380fecddda616b41a Mon Sep 17 00:00:00 2001
+From: Andrzej Zaborowski <balrog@zabor.org>
+Date: Wed, 19 Sep 2007 18:30:36 +0200
+Subject: [PATCH] Handle read() and write() return values.
+
+---
+ include/libgsmd/libgsmd.h | 3 +-
+ src/gsmd/usock.c | 38 ++++++++++++++++-----------
+ src/libgsmd/lgsm_internals.h | 2 +
+ src/libgsmd/libgsmd.c | 58 ++++++++++++++++++++++++++---------------
+ 4 files changed, 63 insertions(+), 38 deletions(-)
+
+diff --git a/include/libgsmd/libgsmd.h b/include/libgsmd/libgsmd.h
+index fc56890..db15aa9 100644
+--- a/include/libgsmd/libgsmd.h
++++ b/include/libgsmd/libgsmd.h
+@@ -65,6 +65,7 @@ extern int lgsm_subscriptions(struct lgsm_handle *lh, u_int32_t subscriptions);
+
+ extern struct gsmd_msg_hdr *lgsm_gmh_fill(int type, int subtype, int payload_len);
+ extern int lgsm_send(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh);
+-extern int lgsm_handle_packet(struct lgsm_handle *lh, char *buf, int len);
++extern int lgsm_handle_packet(struct lgsm_handle *lh,
++ const char *buf, int len);
+
+ #endif
+diff --git a/src/gsmd/usock.c b/src/gsmd/usock.c
+index bac5f0c..2283600 100644
+--- a/src/gsmd/usock.c
++++ b/src/gsmd/usock.c
+@@ -1569,23 +1569,29 @@ static int gsmd_usock_user_cb(int fd, unsigned int what, void *data)
+ struct gsmd_ucmd *ucmd, *uctmp;
+ llist_for_each_entry_safe(ucmd, uctmp, &gu->finished_ucmds,
+ list) {
+- int rc;
+-
+- rc = write(fd, &ucmd->hdr, sizeof(ucmd->hdr) + ucmd->hdr.len);
+- if (rc < 0) {
+- DEBUGP("write return %d\n", rc);
+- return rc;
+- }
+- if (rc == 0) {
+- DEBUGP("write returns zero!!\n");
+- break;
++ const void *pos = &ucmd->hdr;
++ size_t len = sizeof(ucmd->hdr) + ucmd->hdr.len;
++
++ while (len) {
++ ssize_t rc;
++
++ rc = write(fd, pos, len);
++ if (rc < 0 && errno != EINTR) {
++ DEBUGP("write returned %s\n",
++ strerror(errno));
++ return rc;
++ }
++ if (rc == 0 && pos == &ucmd->hdr) {
++ DEBUGP("write returns zero!!\n");
++ return 0;
++ }
++ if (rc > 0) {
++ len -= rc;
++ pos += rc;
++ }
+ }
+- if (rc != sizeof(ucmd->hdr) + ucmd->hdr.len) {
+- DEBUGP("short write\n");
+- break;
+- }
+-
+- DEBUGP("successfully sent cmd %p to user %p, freeing\n", ucmd, gu);
++ DEBUGP("successfully sent cmd %p to user %p, "
++ "freeing\n", ucmd, gu);
+ llist_del(&ucmd->list);
+ talloc_free(ucmd);
+ }
+diff --git a/src/libgsmd/lgsm_internals.h b/src/libgsmd/lgsm_internals.h
+index c826723..f1b1a23 100644
+--- a/src/libgsmd/lgsm_internals.h
++++ b/src/libgsmd/lgsm_internals.h
+@@ -8,6 +8,8 @@ struct lgsm_handle {
+ int fd;
+ lgsm_msg_handler *handler[__NUM_GSMD_MSGS];
+ enum lgsm_netreg_state netreg_state;
++ char usock_fifo[1024];
++ int usock_len;
+ };
+
+ int lgsm_send(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh);
+diff --git a/src/libgsmd/libgsmd.c b/src/libgsmd/libgsmd.c
+index 9906ea8..cc804ed 100644
+--- a/src/libgsmd/libgsmd.c
++++ b/src/libgsmd/libgsmd.c
+@@ -86,34 +86,37 @@ static int lgsm_open_backend(struct lgsm_handle *lh, const char *device)
+ }
+
+ /* handle a packet that was received on the gsmd socket */
+-int lgsm_handle_packet(struct lgsm_handle *lh, char *buf, int len)
++int lgsm_handle_packet(struct lgsm_handle *lh, const char *buf, int len)
+ {
+ struct gsmd_msg_hdr *gmh;
+ lgsm_msg_handler *handler;
+ int rc = 0;
+
+- while (len) {
+- if (len < sizeof(*gmh))
+- return -EINVAL;
+- gmh = (struct gsmd_msg_hdr *) buf;
+-
+- if (len - sizeof(*gmh) < gmh->len)
+- return -EINVAL;
+- len -= sizeof(*gmh) + gmh->len;
+- buf += sizeof(*gmh) + gmh->len;
+-
+- if (gmh->msg_type >= __NUM_GSMD_MSGS)
+- return -EINVAL;
+-
+- handler = lh->handler[gmh->msg_type];
++ if (lh->usock_len + len > sizeof(lh->usock_fifo))
++ return -ENOMEM;
+
+- if (handler)
++ memcpy(lh->usock_fifo + lh->usock_len, buf, len);
++ lh->usock_len += len;
++ gmh = (struct gsmd_msg_hdr *) lh->usock_fifo;
++ while (lh->usock_len >= sizeof(*gmh) &&
++ lh->usock_len >= sizeof(*gmh) + gmh->len) {
++ if (gmh->msg_type < __NUM_GSMD_MSGS &&
++ (handler = lh->handler[gmh->msg_type]))
+ rc |= handler(lh, gmh);
+- else
+- fprintf(stderr, "unable to handle packet type=%u\n",
+- gmh->msg_type);
++ else {
++ fprintf(stderr, "unable to handle packet "
++ "type=%u id=%u\n",
++ gmh->msg_type, gmh->id);
++ rc |= EINVAL;
++ }
++
++ lh->usock_len -= gmh->len + sizeof(*gmh);
++ memmove(lh->usock_fifo,
++ lh->usock_fifo + gmh->len + sizeof(*gmh),
++ lh->usock_len);
+ }
+- return rc;
++
++ return -rc;
+ }
+
+ int lgsm_register_handler(struct lgsm_handle *lh, int type, lgsm_msg_handler *handler)
+@@ -193,8 +196,21 @@ static u_int16_t next_msg_id;
+
+ int lgsm_send(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
+ {
++ ssize_t rc;
++ size_t len = sizeof(*gmh) + gmh->len;
++ const void *pos = gmh;
++
+ gmh->id = next_msg_id++;
+- return send(lh->fd, (char *) gmh, sizeof(*gmh) + gmh->len, 0);
++ while (len) {
++ rc = send(lh->fd, pos, len, 0);
++ if (rc < 0 && errno != EINTR)
++ return -errno;
++ if (rc > 0) {
++ len -= rc;
++ pos += rc;
++ }
++ }
++ return 0;
+ }
+
+ struct gsmd_msg_hdr *lgsm_gmh_fill(int type, int subtype, int payload_len)
+--
+1.5.2.1
+
diff --git a/packages/gsm/files/0005-Add-ask-ds-option-forSMS.patch b/packages/gsm/files/0005-Add-ask-ds-option-forSMS.patch
new file mode 100644
index 0000000000..e9f49bd7d2
--- /dev/null
+++ b/packages/gsm/files/0005-Add-ask-ds-option-forSMS.patch
@@ -0,0 +1,130 @@
+diff --git a/include/gsmd/usock.h b/include/gsmd/usock.h
+index 236ad78..66cdf48 100644
+--- a/include/gsmd/usock.h
++++ b/include/gsmd/usock.h
+@@ -332,6 +332,7 @@ struct gsmd_sms {
+ struct gsmd_sms_submit {
+ struct gsmd_addr addr;
+ struct gsmd_sms payload;
++ int ask_ds;
+ };
+
+ /* Refer to GSM 07.05 subclause 4.4 */
+diff --git a/include/libgsmd/sms.h b/include/libgsmd/sms.h
+index 3ada62d..9808442 100644
+--- a/include/libgsmd/sms.h
++++ b/include/libgsmd/sms.h
+@@ -46,6 +46,7 @@ struct lgsm_sms {
+ enum gsmd_sms_alphabet alpha;
+ u_int8_t data[LGSM_SMS_DATA_MAXLEN+1];
+ int length;
++ int ask_ds;
+ };
+
+ /* GSM 03.40 subclause 9.2.2.2 and GSM 07.05 subclause 4.4 and subclause 3.1 */
+diff --git a/src/gsmd/sms_pdu.c b/src/gsmd/sms_pdu.c
+index d1235dd..d461999 100644
+--- a/src/gsmd/sms_pdu.c
++++ b/src/gsmd/sms_pdu.c
+@@ -247,7 +247,8 @@ int sms_pdu_make_smssubmit(char *dest, const struct gsmd_sms_submit *src)
+ GSMD_SMS_TP_MTI_SUBMIT |
+ (0 << 2) | /* Reject Duplicates: 0 */
+ GSMD_SMS_TP_VPF_NOT_PRESENT |
+- GSMD_SMS_TP_SRR_STATUS_REQUEST |
++ (src->ask_ds ? GSMD_SMS_TP_SRR_STATUS_REQUEST :
++ GSMD_SMS_TP_SRR_NOT_REQUEST) |
+ (src->payload.has_header ? GSMD_SMS_TP_UDHI_WITH_HEADER :
+ GSMD_SMS_TP_UDHI_NO_HEADER) |
+ GSMD_SMS_TP_RP_NOT_SET;
+diff --git a/src/libgsmd/libgsmd_sms.c b/src/libgsmd/libgsmd_sms.c
+index 22d7dbf..bbc8689 100644
+--- a/src/libgsmd/libgsmd_sms.c
++++ b/src/libgsmd/libgsmd_sms.c
+@@ -126,6 +126,7 @@ int lgsm_sms_send(struct lgsm_handle *lh,
+ if (lgsm_number2addr(&gss->addr, sms->addr, 1))
+ return -EINVAL;
+
++ gss->ask_ds = sms->ask_ds;
+ gss->payload.has_header = 0;
+ gss->payload.length = sms->length;
+ gss->payload.coding_scheme = sms->alpha;
+@@ -161,6 +162,7 @@ int lgsm_sms_write(struct lgsm_handle *lh,
+ if (lgsm_number2addr(&gsw->sms.addr, sms_write->sms.addr, 1))
+ return -EINVAL;
+
++ gsw->sms.ask_ds = sms_write->sms.ask_ds;
+ gsw->sms.payload.has_header = 0;
+ gsw->sms.payload.length = sms_write->sms.length;
+ gsw->sms.payload.coding_scheme = sms_write->sms.alpha;
+diff --git a/src/util/shell.c b/src/util/shell.c
+index f902126..f26e17e 100644
+--- a/src/util/shell.c
++++ b/src/util/shell.c
+@@ -355,7 +355,7 @@ static int shell_help(void)
+ "\tsd\tSMS Delete (sd=index,delflg)\n"
+ "\tsl\tSMS List (sl=stat)\n"
+ "\tsr\tSMS Read (sr=index)\n"
+- "\tss\tSMS Send (ss=number,text|[\"text\"])\n"
++ "\tss\tSMS Send (ss=ask_ds,number,text|[\"text\"])\n"
+ "\tsw\tSMS Write (sw=stat,number,text)\n"
+ "\tsm\tSMS Storage stats\n"
+ "\tsM\tSMS Set preferred storage (sM=mem1,mem2,mem3)\n"
+@@ -563,33 +563,29 @@ int shell_main(struct lgsm_handle *lgsmh)
+ struct lgsm_sms sms;
+
+ ptr = strchr(buf, '=');
++ sms.ask_ds = atoi(ptr+1);
+ fcomma = strchr(buf, ',');
+- if (!ptr || !fcomma) {
+- printf("Wrong command format\n");
+- } else {
+- strncpy(sms.addr, ptr+1, fcomma-ptr-1);
+- sms.addr[fcomma-ptr-1] = '\0';
+-
+- /* todo define \" to allow " in text */
+- if (fcomma[1] == '"' &&
+- !strchr(fcomma+2, '"')) {
++ lcomma = strchr(fcomma+1, ',');
++ strncpy(sms.addr, fcomma+1, lcomma-fcomma-1);
++ sms.addr[lcomma-fcomma-1] = '\0';
++ /* todo define \" to allow " in text */
++ if (lcomma[1]=='"' &&
++ !strchr(lcomma+2, '"')) {
+ /* read until closing '"' */
+ rc = fscanf(stdin, "%[^\"]\"",
+- fcomma+strlen(fcomma));
++ lcomma+strlen(lcomma));
+ if (rc == EOF) {
+ printf("EOF\n");
+ return -1;
+ }
+ /* remove brackets */
+- fcomma++;
+- fcomma[strlen(fcomma)] = '\0';
+- }
+-
+- printf("Send SMS\n");
+- packing_7bit_character(fcomma+1, &sms);
++ lcomma++;
++ lcomma[strlen(lcomma)] = '\0';
++ }
++ printf("Send SMS\n");
++ packing_7bit_character(lcomma+1, &sms);
+
+- lgsm_sms_send(lgsmh, &sms);
+- }
++ lgsm_sms_send(lgsmh, &sms);
+ } else if ( !strncmp(buf, "sw", 2)) {
+ printf("Write SMS\n");
+ struct lgsm_sms_write sms_write;
+@@ -603,6 +599,7 @@ int shell_main(struct lgsm_handle *lgsmh)
+ sms_write.sms.addr[lcomma-fcomma-1] = '\0';
+ packing_7bit_character(
+ lcomma+1, &sms_write.sms);
++ sms_write.sms.ask_ds = 0;
+
+ lgsm_sms_write(lgsmh, &sms_write);
+ } else if (!strncmp(buf, "sm", 2)) {
+--
+1.5.2.1
+
diff --git a/packages/gsm/files/024_sms-text-in-bracket.patch b/packages/gsm/files/024_sms-text-in-bracket.patch
new file mode 100644
index 0000000000..32a1ca33ff
--- /dev/null
+++ b/packages/gsm/files/024_sms-text-in-bracket.patch
@@ -0,0 +1,70 @@
+http://bugzilla.openmoko.org/cgi-bin/bugzilla/show_bug.cgi?id=834
+
+From: Kristian Mueller <kristian@mput.de>
+Subject: [PATCH] libgsmd-tool does not allow sms with more than one word
+
+libgsmd-tool only allows for command strings without spaces.
+SMS messages with more than one word will be parsed as multible commands.
+The patch introduces SMS message text in bracket and fixes a NULL pointer
+reference on mailformed "ss" commands.
+
+Signed-off-by: Jim Huang <jserv@openmoko.org>
+---
+ src/util/shell.c | 32 ++++++++++++++++++++++++++------
+ 1 file changed, 26 insertions(+), 6 deletions(-)
+
+Index: gsm/src/util/shell.c
+===================================================================
+--- gsm.orig/src/util/shell.c 2007-08-31 16:15:30.000000000 +0800
++++ gsm/src/util/shell.c 2007-09-17 23:35:31.000000000 +0800
+@@ -389,7 +389,7 @@
+ "\tsd\tSMS Delete (sd=index,delflg)\n"
+ "\tsl\tSMS List (sl=stat)\n"
+ "\tsr\tSMS Read (sr=index)\n"
+- "\tss\tSMS Send (ss=number,text)\n"
++ "\tss\tSMS Send (ss=number,text|[\"text\"])\n"
+ "\tsw\tSMS Write (sw=stat,number,text)\n"
+ "\tsm\tSMS Storage stats\n"
+ "\tsM\tSMS Set preferred storage (sM=mem1,mem2,mem3)\n"
+@@ -612,16 +612,36 @@
+
+ lgsm_sms_read(lgsmh, atoi(ptr+1));
+ } else if ( !strncmp(buf, "ss", 2)) {
+- printf("Send SMS\n");
+ struct lgsm_sms sms;
+
+ ptr = strchr(buf, '=');
+ fcomma = strchr(buf, ',');
+- strncpy(sms.addr, ptr+1, fcomma-ptr-1);
+- sms.addr[fcomma-ptr-1] = '\0';
+- packing_7bit_character(fcomma+1, &sms);
++ if (!ptr || !fcomma) {
++ printf("Wrong command format\n");
++ } else {
++ strncpy(sms.addr, ptr+1, fcomma-ptr-1);
++ sms.addr[fcomma-ptr-1] = '\0';
++
++ /* todo define \" to allow " in text */
++ if (fcomma[1] == '"' &&
++ !strchr(fcomma+2, '"')) {
++ /* read until closing '"' */
++ rc = fscanf(stdin, "%[^\"]\"",
++ fcomma+strlen(fcomma));
++ if (rc == EOF) {
++ printf("EOF\n");
++ return -1;
++ }
++ /* remove brackets */
++ fcomma++;
++ fcomma[strlen(fcomma)] = '\0';
++ }
++
++ printf("Send SMS\n");
++ packing_7bit_character(fcomma+1, &sms);
+
+- lgsm_sms_send(lgsmh, &sms);
++ lgsm_sms_send(lgsmh, &sms);
++ }
+ } else if ( !strncmp(buf, "sw", 2)) {
+ printf("Write SMS\n");
+ struct lgsm_sms_write sms_write;
diff --git a/packages/gsm/files/025_sms-status-report.patch b/packages/gsm/files/025_sms-status-report.patch
new file mode 100644
index 0000000000..560e72e380
--- /dev/null
+++ b/packages/gsm/files/025_sms-status-report.patch
@@ -0,0 +1,133 @@
+From: Erin Yueh <erin_yueh@openmoko.com>
+Subject: [PATCH] SMS status report
+
+I made a patch for SMS status report. It can change SMS-Submit messages
+and ask for a status report. When the destination address receives our
+message, the service center will send a SMS-STATUS-REPORT to us. We can
+tell what messages we sent by TP-MR (message reference number) value and
+can know the sending result by TP-ST (Status) value from status report
+messages.
+
+PS. if you don't want to ask a status report, you can change this value
+back. Replace "GSMD_SMS_TP_SRR_STATUS_REQUEST" with
+"GSMD_SMS_TP_SRR_NOT_REQUEST".
+header[pos ++] =
+ GSMD_SMS_TP_MTI_SUBMIT |
+ (0 << 2) | /* Reject Duplicates: 0 */
+ GSMD_SMS_TP_VPF_NOT_PRESENT |
+- GSMD_SMS_TP_SRR_NOT_REQUEST |
++ GSMD_SMS_TP_SRR_STATUS_REQUEST |
+ (src->payload.has_header ? GSMD_SMS_TP_UDHI_WITH_HEADER :
+ GSMD_SMS_TP_UDHI_NO_HEADER) |
+ GSMD_SMS_TP_RP_NOT_SET;
+
+Signed-off-by: Jim Huang <jserv@openmoko.org>
+---
+ src/gsmd/sms_pdu.c | 54 +++++++++++++++++++++++++++++++++++++++++++-----------
+ src/util/event.c | 6 +++++-
+ 2 files changed, 48 insertions(+), 12 deletions(-)
+
+Index: gsm/src/gsmd/sms_pdu.c
+===================================================================
+--- gsm.orig/src/gsmd/sms_pdu.c 2007-09-06 11:14:34.000000000 +0800
++++ gsm/src/gsmd/sms_pdu.c 2007-09-17 23:39:20.000000000 +0800
+@@ -139,6 +139,17 @@
+ /* Skip TP-PID */
+ len -= 9;
+ src += 9;
++
++ /* TP-UDL */
++ dst->payload.length = src[0];
++ i = sms_data_bytelen(dst->payload.coding_scheme, src[0]);
++
++ /* TP-UD */
++ if (len < 1 + i || i > GSMD_SMS_DATA_MAXLEN)
++ return 1;
++ memcpy(dst->payload.data, src + 1, i);
++ dst->payload.data[i] = 0;
++
+ break;
+ case GSMD_SMS_TP_MTI_SUBMIT:
+ if (len < 4)
+@@ -179,23 +190,44 @@
+ src += vpf ? 3 : 2;
+
+ memset(dst->time_stamp, 0, 7);
++
++ /* TP-UDL */
++ dst->payload.length = src[0];
++ i = sms_data_bytelen(dst->payload.coding_scheme, src[0]);
++
++ /* TP-UD */
++ if (len < 1 + i || i > GSMD_SMS_DATA_MAXLEN)
++ return 1;
++ memcpy(dst->payload.data, src + 1, i);
++ dst->payload.data[i] = 0;
+ break;
+ case GSMD_SMS_TP_MTI_STATUS_REPORT:
+- /* TODO */
++ if (len < 3)
++ return 1;
++
++ /* TP-MR set it gsmd_sms_list.index*/
++ dst->index = (int) src[1];
++ /* TP-STATUS set it to coding_scheme */
++ dst->payload.coding_scheme = (int) src[len-1];
++ /* TP-RA */
++ i = sms_number_bytelen(src[3], src[2]);
++ if (len < 13 + i)
++ return 1;
++ if (sms_address2ascii(&dst->addr, src + 2))
++ return 1;
++ len -= 4 + i;
++ src += 4 + i;
++ /* TP-SCTS */
++ memcpy(dst->time_stamp, src, 7);
++ /* TP-UD */
++ dst->payload.length = 0;
++ dst->payload.data[0] = 0;
++ break;
+ default:
+ /* Unknown PDU type */
+ return 1;
+ }
+
+- /* TP-UDL */
+- dst->payload.length = src[0];
+- i = sms_data_bytelen(dst->payload.coding_scheme, src[0]);
+-
+- /* TP-UD */
+- if (len < 1 + i || i > GSMD_SMS_DATA_MAXLEN)
+- return 1;
+- memcpy(dst->payload.data, src + 1, i);
+- dst->payload.data[i] = 0;
+
+ return 0;
+ }
+@@ -215,7 +247,7 @@
+ GSMD_SMS_TP_MTI_SUBMIT |
+ (0 << 2) | /* Reject Duplicates: 0 */
+ GSMD_SMS_TP_VPF_NOT_PRESENT |
+- GSMD_SMS_TP_SRR_NOT_REQUEST |
++ GSMD_SMS_TP_SRR_STATUS_REQUEST |
+ (src->payload.has_header ? GSMD_SMS_TP_UDHI_WITH_HEADER :
+ GSMD_SMS_TP_UDHI_NO_HEADER) |
+ GSMD_SMS_TP_RP_NOT_SET;
+Index: gsm/src/util/event.c
+===================================================================
+--- gsm.orig/src/util/event.c 2007-09-06 11:14:34.000000000 +0800
++++ gsm/src/util/event.c 2007-09-17 23:39:47.000000000 +0800
+@@ -128,8 +128,12 @@
+ static int inds_handler(struct lgsm_handle *lh, int evt,
+ struct gsmd_evt_auxdata *aux)
+ {
+- if (aux->u.ds.inlined)
++ if (aux->u.ds.inlined) {
++ struct gsmd_sms_list *sms;
++ sms = (struct gsmd_sms_list *) aux->data;
+ printf("EVENT: Incoming Status Report\n");
++ printf("message ref = %d, status = %d\n", sms->index,sms->payload.coding_scheme);
++ }
+ else
+ printf("EVENT: Incoming Status Report stored at location %i\n",
+ aux->u.ds.index);
diff --git a/packages/gsm/files/027_phonebook-find-and-read-range-support.patch b/packages/gsm/files/027_phonebook-find-and-read-range-support.patch
new file mode 100644
index 0000000000..ea0f12daac
--- /dev/null
+++ b/packages/gsm/files/027_phonebook-find-and-read-range-support.patch
@@ -0,0 +1,423 @@
+From: Sean Chiang <sean_chiang@openmoko.com>
+Subject: [PATCH] Improvement for find and read phonebooks in gsmd
+
+This patch is an improvement for find and read phonebooks.
+After clients make a request to find / read phonebooks, then clients
+should make a request to retrieve all the records.
+
+Signed-off-by: Jim Huang <jserv@openmoko.org>
+---
+ include/gsmd/gsmd.h | 3
+ include/gsmd/usock.h | 20 +++-
+ include/libgsmd/phonebook.h | 6 +
+ src/gsmd/usock.c | 184 +++++++++++++++++++++++++++++++++++-----
+ src/libgsmd/libgsmd_phonebook.c | 48 ++++++++++
+ 5 files changed, 238 insertions(+), 23 deletions(-)
+
+Index: gsm/include/libgsmd/phonebook.h
+===================================================================
+--- gsm.orig/include/libgsmd/phonebook.h 2007-08-31 16:15:29.000000000 +0800
++++ gsm/include/libgsmd/phonebook.h 2007-09-17 23:48:41.000000000 +0800
+@@ -106,4 +106,10 @@
+ /* Get the location range/nlength/tlength supported */
+ extern int lgsm_pb_get_support(struct lgsm_handle *lh);
+
++/* Retrieve the records of READRG request */
++extern int lgsm_pb_retrieve_readrg(struct lgsm_handle *lh, int num);
++
++/* Retrieve the records of FIND request */
++extern int lgsm_pb_retrieve_find(struct lgsm_handle *lh, int num);
++
+ #endif
+Index: gsm/include/gsmd/gsmd.h
+===================================================================
+--- gsm.orig/include/gsmd/gsmd.h 2007-08-31 16:15:29.000000000 +0800
++++ gsm/include/gsmd/gsmd.h 2007-09-17 23:48:41.000000000 +0800
+@@ -92,6 +92,9 @@
+ struct gsmd *gsmd;
+ struct gsmd_fd gfd; /* the socket */
+ u_int32_t subscriptions; /* bitmaks of subscribed event groups */
++
++ struct llist_head pb_readrg_list; /* our READRG phonebook list */
++ struct llist_head pb_find_list; /* our FIND phonebook list */
+ };
+
+ #define GSMD_DEBUG 1 /* debugging information */
+Index: gsm/include/gsmd/usock.h
+===================================================================
+--- gsm.orig/include/gsmd/usock.h 2007-08-31 16:15:29.000000000 +0800
++++ gsm/include/gsmd/usock.h 2007-09-17 23:48:56.000000000 +0800
+@@ -194,6 +194,8 @@
+ GSMD_PHONEBOOK_GET_SUPPORT = 6,
+ GSMD_PHONEBOOK_LIST_STORAGE = 7,
+ GSMD_PHONEBOOK_SET_STORAGE = 8,
++ GSMD_PHONEBOOK_RETRIEVE_READRG = 9,
++ GSMD_PHONEBOOK_RETRIEVE_FIND = 10,
+ };
+
+ /* Type-of-Address, Numbering-Plan-Identification field, GSM 03.40, 9.1.2.5 */
+@@ -431,7 +433,6 @@
+ char text[GSMD_PB_TEXT_MAXLEN+1];
+ } __attribute__ ((packed));
+
+-
+ /* Refer to GSM 07.07 subclause 8.13 */
+ /* FIXME: the tlength depends on SIM, use +CPBR=? to get */
+ struct gsmd_phonebook_find {
+@@ -471,8 +472,18 @@
+ char opname_longalpha[16];
+ };
+
++/* Refer to GSM 07.07 subclause 8.11 */
++struct gsmd_phonebook_mem {
++ u_int8_t type[3];
++ u_int8_t pad;
++ u_int16_t used;
++ u_int16_t total;
++} __attribute__ ((packed));
++
+ struct gsmd_phonebook_storage {
+- char storage[3];
++ /* FIXME the amount of phonebook storage should be dynamic */
++ u_int8_t num;
++ struct gsmd_phonebook_mem mem[20];
+ } __attribute__ ((packed));
+
+ /* Subscriber number information from 3GPP TS 07.07, Clause 7.1 */
+@@ -517,6 +528,11 @@
+ char buf[];
+ } __attribute__ ((packed));
+
++struct gsmd_phonebooks {
++ struct llist_head list;
++ struct gsmd_phonebook pb;
++} __attribute__ ((packed));
++
+ extern struct gsmd_ucmd *ucmd_alloc(int extra_size);
+ extern int usock_init(struct gsmd *g);
+ extern void usock_cmd_enqueue(struct gsmd_ucmd *ucmd, struct gsmd_user *gu);
+Index: gsm/src/libgsmd/libgsmd_phonebook.c
+===================================================================
+--- gsm.orig/src/libgsmd/libgsmd_phonebook.c 2007-08-31 16:15:29.000000000 +0800
++++ gsm/src/libgsmd/libgsmd_phonebook.c 2007-09-17 23:48:41.000000000 +0800
+@@ -33,7 +33,7 @@
+ gmh->data[2] = '\0';
+
+ rc = lgsm_send(lh, gmh);
+- if (rc < gmh->len + 3) {
++ if (rc < gmh->len + sizeof(*gmh)) {
+ lgsm_gmh_free(gmh);
+ return -EIO;
+ }
+@@ -177,3 +177,49 @@
+ {
+ return lgsm_send_simple(lh, GSMD_MSG_PHONEBOOK, GSMD_PHONEBOOK_GET_SUPPORT);
+ }
++
++int lgsm_pb_retrieve_readrg(struct lgsm_handle *lh, int num)
++{
++ struct gsmd_msg_hdr *gmh;
++ int rc;
++
++ gmh = lgsm_gmh_fill(GSMD_MSG_PHONEBOOK,
++ GSMD_PHONEBOOK_RETRIEVE_READRG, sizeof(int));
++ if (!gmh)
++ return -ENOMEM;
++
++ *(int *)(gmh->data) = num;
++
++ rc = lgsm_send(lh, gmh);
++ if (rc < gmh->len + sizeof(*gmh)) {
++ lgsm_gmh_free(gmh);
++ return -EIO;
++ }
++
++ lgsm_gmh_free(gmh);
++
++ return 0;
++}
++
++int lgsm_pb_retrieve_find(struct lgsm_handle *lh, int num)
++{
++ struct gsmd_msg_hdr *gmh;
++ int rc;
++
++ gmh = lgsm_gmh_fill(GSMD_MSG_PHONEBOOK,
++ GSMD_PHONEBOOK_RETRIEVE_FIND, sizeof(int));
++ if (!gmh)
++ return -ENOMEM;
++
++ *(int *)(gmh->data) = num;
++
++ rc = lgsm_send(lh, gmh);
++ if (rc < gmh->len + sizeof(*gmh)) {
++ lgsm_gmh_free(gmh);
++ return -EIO;
++ }
++
++ lgsm_gmh_free(gmh);
++
++ return 0;
++}
+Index: gsm/src/gsmd/usock.c
+===================================================================
+--- gsm.orig/src/gsmd/usock.c 2007-08-31 16:15:30.000000000 +0800
++++ gsm/src/gsmd/usock.c 2007-09-17 23:53:34.000000000 +0800
+@@ -1035,21 +1035,56 @@
+
+ static int phonebook_find_cb(struct gsmd_atcmd *cmd, void *ctx, char *resp)
+ {
+- struct gsmd_user *gu = ctx;
+- struct gsmd_ucmd *ucmd;
+-
++ struct gsmd_user *gu = ctx;
++ struct gsmd_ucmd *ucmd;
++ struct gsmd_phonebooks *gps;
++ char *fcomma, *lcomma, *ptr1, *ptr2 = NULL;
++ int *num;
++
+ DEBUGP("resp: %s\n", resp);
+
+- /* FIXME: using link list, also we need to handle the case of
+- * no query result */
+- ucmd = gsmd_ucmd_fill(strlen(resp) + 1, GSMD_MSG_PHONEBOOK,
++ /*
++ * [+CPBF: <index1>,<number>,<type>,<text>[[...]
++ * <CR><LF>+CPBF: <index2>,<unmber>,<type>,<text>]]
++ */
++ ucmd = gsmd_ucmd_fill(sizeof(int), GSMD_MSG_PHONEBOOK,
+ GSMD_PHONEBOOK_FIND, 0);
+ if (!ucmd)
+ return -ENOMEM;
+
+- strcpy(ucmd->buf, resp);
++ num = (int*) ucmd->buf;
++
++ *num = 0;
++
++ ptr1 = strtok(resp, "\n");
++
++ while (ptr1) {
++ gps = (struct gsmd_phonebooks *) malloc(sizeof(struct gsmd_phonebooks));
++ ptr2 = strchr(ptr1, ' ');
++ gps->pb.index = atoi(ptr2+1);
++
++ fcomma = strchr(ptr1, '"');
++ lcomma = strchr(fcomma+1, '"');
++ strncpy(gps->pb.numb, fcomma + 1, (lcomma-fcomma-1));
++ gps->pb.numb[(lcomma - fcomma) - 1] = '\0';
++
++ gps->pb.type = atoi(lcomma + 2);
++
++ ptr2 = strrchr(ptr1, ',');
++ fcomma = ptr2 + 1;
++ lcomma = strchr(fcomma + 1, '"');
++ strncpy(gps->pb.text, fcomma + 1, (lcomma - fcomma - 1));
++ gps->pb.text[(lcomma - fcomma) - 1] = '\0';
++
++ llist_add_tail(&gps->list, &gu->pb_find_list);
++
++ (*num)++;
++
++ ptr1 = strtok(NULL, "\n");
++ }
+
+ usock_cmd_enqueue(ucmd, gu);
++
+ return 0;
+ }
+
+@@ -1102,22 +1137,51 @@
+ {
+ struct gsmd_user *gu = ctx;
+ struct gsmd_ucmd *ucmd;
++ struct gsmd_phonebooks *gps;
++ char *fcomma, *lcomma, *ptr1, *ptr2 = NULL;
++ int *num;
+
+ DEBUGP("resp: %s\n", resp);
+
+ /*
+- * +CPBR: 4,"1234",129,"6C5F745E7965"
+- * +CPBR: 5,"5678",129,"800062115BB6"
+- * +CPBR: 6,"7890",129,"810280AA591A"
+- * +CPBR: 8,"36874",129,"005300650061006E"
+- *
++ * [+CPBR: <index1>,<number>,<type>,<text>[[...]
++ * <CR><LF>+CPBR: <index2>,<unmber>,<type>,<text>]]
+ */
+- ucmd = gsmd_ucmd_fill(strlen(resp)+1, GSMD_MSG_PHONEBOOK,
++ ucmd = gsmd_ucmd_fill(sizeof(int), GSMD_MSG_PHONEBOOK,
+ GSMD_PHONEBOOK_READRG, 0);
+ if (!ucmd)
+ return -ENOMEM;
+
+- strcpy(ucmd->buf, resp);
++ num = (int*) ucmd->buf;
++
++ *num = 0;
++
++ ptr1 = strtok(resp, "\n");
++
++ while(ptr1) {
++ gps = (struct gsmd_phonebooks *) malloc(sizeof(struct gsmd_phonebooks));
++ ptr2 = strchr(ptr1, ' ');
++ gps->pb.index = atoi(ptr2+1);
++
++ fcomma = strchr(ptr1, '"');
++ lcomma = strchr(fcomma+1, '"');
++ strncpy(gps->pb.numb, fcomma + 1, (lcomma-fcomma-1));
++ gps->pb.numb[(lcomma - fcomma) - 1] = '\0';
++
++ gps->pb.type = atoi(lcomma + 2);
++
++ ptr2 = strrchr(ptr1, ',');
++ fcomma = ptr2 + 1;
++ lcomma = strchr(fcomma + 1, '"');
++ strncpy(gps->pb.text, fcomma + 1, (lcomma - fcomma - 1));
++ gps->pb.text[(lcomma - fcomma) - 1] = '\0';
++
++ llist_add_tail(&gps->list, &gu->pb_readrg_list);
++
++ (*num)++;
++
++ ptr1 = strtok(NULL, "\n");
++ }
+
+ usock_cmd_enqueue(ucmd, gu);
+
+@@ -1209,22 +1273,38 @@
+ static int phonebook_list_storage_cb(struct gsmd_atcmd *cmd,
+ void *ctx, char *resp)
+ {
+- /* +CPBS: ("EN","BD","FD","DC","LD","RC","LR","MT","AD",
+- * "SM","SD","MC","LM","AF","ON","UD") */
+ /* TODO; using link list ; need to handle command error */
+ struct gsmd_user *gu = ctx;
+ struct gsmd_ucmd *ucmd;
++ struct gsmd_phonebook_storage *gps;
++ char *ptr;
+
+ DEBUGP("resp: %s\n", resp);
+
+- ucmd = gsmd_ucmd_fill(strlen(resp) + 1,
++ /*
++ * +CPBS: (<storage>s)
++ */
++
++ ucmd = gsmd_ucmd_fill(sizeof(*gps),
+ GSMD_MSG_PHONEBOOK,
+ GSMD_PHONEBOOK_LIST_STORAGE, 0);
+
+ if (!ucmd)
+ return -ENOMEM;
+
+- strcpy(ucmd->buf, resp);
++ gps = (struct gsmd_phonebook_storage *) ucmd->buf;
++ gps->num = 0;
++
++ if (!strncmp(resp, "+CPBS", 5)) {
++ char* delim = "(,";
++ ptr = strpbrk(resp, delim);
++ while ( ptr ) {
++ strncpy(gps->mem[gps->num].type, ptr+2, 2);
++ gps->mem[gps->num].type[2] = '\0';
++ ptr = strpbrk(ptr+2, delim);
++ gps->num++;
++ }
++ }
+
+ usock_cmd_enqueue(ucmd, gu);
+
+@@ -1235,11 +1315,13 @@
+ struct gsmd_msg_hdr *gph,int len)
+ {
+ struct gsmd_atcmd *cmd = NULL;
++ struct gsmd_ucmd *ucmd = NULL;
+ struct gsmd_phonebook_readrg *gpr;
+ struct gsmd_phonebook *gp;
+ struct gsmd_phonebook_find *gpf;
+- int *index;
+- int atcmd_len;
++ struct gsmd_phonebooks *cur, *cur2;
++ int *index, *num;
++ int atcmd_len, i;
+ char *storage;
+ char buf[1024];
+
+@@ -1343,6 +1425,66 @@
+ cmd = atcmd_fill("AT+CPBR=?", 9+1,
+ &phonebook_get_support_cb, gu, gph->id);
+ break;
++ case GSMD_PHONEBOOK_RETRIEVE_READRG:
++ if (len < sizeof(*gph) + sizeof(int))
++ return -EINVAL;
++
++ num = (int *) ((void *)gph + sizeof(*gph));
++
++ ucmd = gsmd_ucmd_fill(sizeof(struct gsmd_phonebook)*(*num),
++ GSMD_MSG_PHONEBOOK,
++ GSMD_PHONEBOOK_RETRIEVE_READRG, 0);
++ if (!ucmd)
++ return -ENOMEM;
++
++ gp = (struct gsmd_phonebook*) ucmd->buf;
++
++ if (!llist_empty(&gu->pb_readrg_list)) {
++
++ llist_for_each_entry_safe(cur, cur2,
++ &gu->pb_readrg_list, list) {
++ gp->index = cur->pb.index;
++ strcpy(gp->numb, cur->pb.numb);
++ gp->type = cur->pb.type;
++ strcpy(gp->text, cur->pb.text);
++ gp++;
++
++ llist_del(&cur->list);
++ free(cur);
++ }
++ }
++
++ usock_cmd_enqueue(ucmd, gu);
++
++ break;
++ case GSMD_PHONEBOOK_RETRIEVE_FIND:
++ if (len < sizeof(*gph) + sizeof(int))
++ return -EINVAL;
++
++ num = (int *) ((void *)gph + sizeof(*gph));
++
++ ucmd = gsmd_ucmd_fill(sizeof(struct gsmd_phonebook)*(*num), GSMD_MSG_PHONEBOOK,
++ GSMD_PHONEBOOK_RETRIEVE_FIND, 0);
++ if (!ucmd)
++ return -ENOMEM;
++
++ gp = (struct gsmd_phonebook*) ucmd->buf;
++
++ if (!llist_empty(&gu->pb_find_list)) {
++ llist_for_each_entry_safe(cur, cur2, &gu->pb_find_list, list) {
++ gp->index = cur->pb.index;
++ strcpy(gp->numb, cur->pb.numb);
++ gp->type = cur->pb.type;
++ strcpy(gp->text, cur->pb.text);
++ gp++;
++
++ llist_del(&cur->list);
++ free(cur);
++ }
++ }
++
++ usock_cmd_enqueue(ucmd, gu);
++ break;
+ default:
+ return -EINVAL;
+ }
+@@ -1468,6 +1610,8 @@
+ newuser->gsmd = g;
+ newuser->subscriptions = 0xffffffff;
+ INIT_LLIST_HEAD(&newuser->finished_ucmds);
++ INIT_LLIST_HEAD(&newuser->pb_readrg_list);
++ INIT_LLIST_HEAD(&newuser->pb_find_list);
+
+ llist_add(&newuser->list, &g->users);
+ gsmd_register_fd(&newuser->gfd);
diff --git a/packages/gsm/files/028_shell-phonebook-find-and-read-range-support.patch b/packages/gsm/files/028_shell-phonebook-find-and-read-range-support.patch
new file mode 100644
index 0000000000..db07a5df35
--- /dev/null
+++ b/packages/gsm/files/028_shell-phonebook-find-and-read-range-support.patch
@@ -0,0 +1,264 @@
+From: Sean Chiang <sean_chiang@openmoko.com>
+Subject: [PATCH] improvement for find and read phonebooks in shell
+
+This patch improves the functions to find and read phonebooks in shell.
+
+Besides prr and pf, I add two new commands pRr and pRf to retrieve the
+phonebook.
+
+Signed-off-by: Jim Huang <jserv@openmoko.org>
+
+Index: gsm/src/util/shell.c
+===================================================================
+--- gsm.orig/src/util/shell.c 2007-09-17 23:57:51.000000000 +0800
++++ gsm/src/util/shell.c 2007-09-17 23:59:04.000000000 +0800
+@@ -34,8 +34,6 @@
+ #include <gsmd/usock.h>
+ #include <gsmd/ts0705.h>
+
+-#include <common/linux_list.h>
+-
+ #ifndef __GSMD__
+ #define __GSMD__
+ #include <gsmd/talloc.h>
+@@ -43,9 +41,8 @@
+ #endif
+
+ #define STDIN_BUF_SIZE 1024
+-
+-static LLIST_HEAD(storage_list);
+-static LLIST_HEAD(phonebook_list);
++static int nFIND = 0;
++static int nREADRG = 0;
+
+ /* this is the handler for receiving passthrough responses */
+ static int pt_msghandler(struct lgsm_handle *lh, struct gsmd_msg_hdr *gmh)
+@@ -62,46 +59,23 @@
+ struct gsmd_phonebook_storage *gpst;
+ char *payload;
+ char *fcomma, *lcomma, *ptr = NULL;
++ int *num;
+ char buf[128];
++ int i;
+
+ switch (gmh->msg_subtype) {
+-#if 0
+ case GSMD_PHONEBOOK_FIND:
++ num = (int *) ((char *)gmh + sizeof(*gmh));
++ printf("Records:%d\n", *num);
++
++ nFIND = *num;
++ break;
+ case GSMD_PHONEBOOK_READRG:
+- payload = (char *)gmh + sizeof(*gmh);
++ num = (int *) ((char *)gmh + sizeof(*gmh));
++ printf("Records:%d\n", *num);
+
+- if (!strncmp(payload, "+CPBR", 5) ||
+- !strncmp(payload, "+CPBF", 5)) {
+- gp = (struct gsmd_phonebook *) malloc(sizeof(struct gsmd_phonebook));
+- ptr = strchr(payload, ' ');
+- gp->index = atoi(ptr+1);
+-
+- fcomma = strchr(payload, '"');
+- lcomma = strchr(fcomma+1, '"');
+- strncpy(gp->numb, fcomma + 1, (lcomma-fcomma-1));
+- gp->numb[(lcomma - fcomma) - 1] = '\0';
+-
+- gp->type = atoi(lcomma + 2);
+-
+- ptr = strrchr(payload, ',');
+- fcomma = ptr + 1;
+- lcomma = strchr(fcomma + 1, '"');
+- strncpy(gp->text, fcomma + 1, (lcomma - fcomma - 1));
+- gp->text[(lcomma - fcomma) - 1] = '\0';
+-
+- llist_add_tail(&gp->list, &phonebook_list);
+-
+-#if 0
+- llist_for_each_entry(gp, &phonebook_list, list) {
+- printf("%d, %s, %d, %s\n", gp->index, gp->numb, gp->type, gp->text);
+- }
+-#endif
+- printf("%d, %s, %d, %s\n", gp->index, gp->numb, gp->type, gp->text);
+- }
+- else
+- printf("%s\n", payload);
++ nREADRG = *num;
+ break;
+-#endif
+ case GSMD_PHONEBOOK_READ:
+ gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
+ if (gp->index)
+@@ -115,48 +89,18 @@
+ gps = (struct gsmd_phonebook_support *) ((char *)gmh + sizeof(*gmh));
+ printf("(1-%d), %d, %d\n", gps->index, gps->nlength, gps->tlength);
+ break;
+-#if 0
+- case GSMD_PHONEBOOK_LIST_STORAGE:
+- payload = (char *)gmh + sizeof(*gmh);
+
+- if (!strncmp(payload, "+CPBS", 5)) {
+- char* delim = "(,";
+- struct gsmd_phonebook_storage *cur, *cur2;
+-
+- /* Remove previous record */
+- if (!llist_empty(&storage_list)) {
+- llist_for_each_entry_safe(cur, cur2,
+- &storage_list, list) {
+- llist_del(&cur->list);
+- talloc_free(cur);
+- }
+- }
+-
+- ptr = strpbrk(payload, delim);
+-
+- while ( ptr ) {
+- gpst = (struct gsmd_phonebook_storage *) malloc(sizeof(struct gsmd_phonebook_storage));
+- strncpy(gpst->storage, ptr+2, 2);
+- gpst->storage[2] = '\0';
+-
+- ptr = strpbrk(ptr+2, delim);
+-
+- llist_add_tail(&gpst->list, &storage_list);
+- }
++ case GSMD_PHONEBOOK_LIST_STORAGE:
++ gpst = (struct gsmd_phonebook_storage *)((char *)gmh + sizeof(*gmh));
+
+- if (llist_empty(&storage_list))
+- return 0;
++ for (i = 0; i < gpst->num; i++) {
++ printf("%s, ", gpst->mem[i].type);
++ }
+
+- llist_for_each_entry(cur, &storage_list, list) {
+- printf("\n%s",cur->storage);
+- }
++ printf("\n");
+
+- printf("\n");
+- }
+- else
+- printf("%s\n", payload);
+ break;
+-#endif
++
+ case GSMD_PHONEBOOK_WRITE:
+ case GSMD_PHONEBOOK_DELETE:
+ case GSMD_PHONEBOOK_SET_STORAGE:
+@@ -164,6 +108,26 @@
+ payload = (char *)gmh + sizeof(*gmh);
+ printf("%s\n", payload);
+ break;
++ case GSMD_PHONEBOOK_RETRIEVE_READRG:
++ gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
++
++ for (i=0; i<nREADRG; i++) {
++ printf("%d,%s,%d,%s\n", gp->index, gp->numb, gp->type, gp->text);
++ gp++;
++ }
++
++ nREADRG = 0;
++ break;
++ case GSMD_PHONEBOOK_RETRIEVE_FIND:
++ gp = (struct gsmd_phonebook *) ((char *)gmh + sizeof(*gmh));
++
++ for (i = 0; i < nFIND; i++) {
++ printf("%d,%s,%d,%s\n", gp->index, gp->numb, gp->type, gp->text);
++ gp++;
++ }
++
++ nFIND = 0;
++ break;
+ default:
+ return -EINVAL;
+ }
+@@ -381,11 +345,13 @@
+ "\tpd\tPB Delete (pb=index)\n"
+ "\tpr\tPB Read (pr=index)\n"
+ "\tprr\tPB Read Range (prr=index1,index2)\n"
+- "\tpf\tPB Find (pff=indtext)\n"
++ "\tpf\tPB Find (pf=indtext)\n"
+ "\tpw\tPB Write (pw=index,number,text)\n"
+ "\tps\tPB Support\n"
+ "\tpm\tPB Memory\n"
+ "\tpp\tPB Set Memory (pp=storage)\n"
++ "\tpRr\tRetrieve Readrg Records\n"
++ "\tpRf\tRetrieve Find Records\n"
+ "\tsd\tSMS Delete (sd=index,delflg)\n"
+ "\tsl\tSMS List (sl=stat)\n"
+ "\tsr\tSMS Read (sr=index)\n"
+@@ -509,48 +475,21 @@
+ printf("Delete Phonebook Entry\n");
+ ptr = strchr(buf, '=');
+ lgsm_pb_del_entry(lgsmh, atoi(ptr+1));
+-#if 0
+ } else if ( !strncmp(buf, "prr", 3)) {
+ printf("Read Phonebook Entries\n");
+ struct lgsm_phonebook_readrg pb_readrg;
+- struct gsmd_phonebook *gp_cur, *gp_cur2;
+-
+- /* Remove records */
+- if (!llist_empty(&phonebook_list)) {
+- llist_for_each_entry_safe(gp_cur,
+- gp_cur2,
+- &phonebook_list,
+- list) {
+- llist_del(&gp_cur->list);
+- talloc_free(gp_cur);
+- }
+- }
+
+ ptr = strchr(buf, '=');
+ pb_readrg.index1 = atoi(ptr+1);
+ ptr = strchr(buf, ',');
+ pb_readrg.index2 = atoi(ptr+1);
+ lgsm_pb_read_entries(lgsmh, &pb_readrg);
+-#endif
+ } else if ( !strncmp(buf, "pr", 2)) {
+ ptr = strchr(buf, '=');
+ lgsm_pb_read_entry(lgsmh, atoi(ptr+1));
+-#if 0
+ } else if ( !strncmp(buf, "pf", 2)) {
+ printf("Find Phonebook Entry\n");
+ struct lgsm_phonebook_find pb_find;
+- struct gsmd_phonebook *gp_cur, *gp_cur2;
+-
+- /* Remove records */
+- if (!llist_empty(&phonebook_list)) {
+- llist_for_each_entry_safe(gp_cur,
+- gp_cur2,
+- &phonebook_list,
+- list) {
+- llist_del(&gp_cur->list);
+- talloc_free(gp_cur);
+- }
+- }
+
+ ptr = strchr(buf, '=');
+ strncpy(pb_find.findtext,
+@@ -559,7 +498,6 @@
+ pb_find.findtext[strlen(ptr+1)] = '\0';
+
+ lgsm_pb_find_entry(lgsmh, &pb_find);
+-#endif
+ } else if ( !strncmp(buf, "pw", 2)) {
+ printf("Write Phonebook Entry\n");
+ struct lgsm_phonebook pb;
+@@ -591,6 +529,16 @@
+ } else if ( !strncmp(buf, "ps", 2)) {
+ printf("Get Phonebook Support\n");
+ lgsm_pb_get_support(lgsmh);
++ } else if( !strncmp(buf, "pRr", 3) ) {
++ printf("Retrieve Readrg Records\n");
++
++ if ( nREADRG )
++ lgsm_pb_retrieve_readrg(lgsmh, nREADRG);
++ } else if( !strncmp(buf, "pRf", 3) ) {
++ printf("Retrieve Find Records\n");
++
++ if ( nFIND )
++ lgsm_pb_retrieve_find(lgsmh, nFIND);
+ } else if ( !strncmp(buf, "sd", 2)) {
+ printf("Delete SMS\n");
+ struct lgsm_sms_delete sms_del;
diff --git a/packages/gsm/files/default b/packages/gsm/files/default
index 0d3eb74c7d..761100f702 100644
--- a/packages/gsm/files/default
+++ b/packages/gsm/files/default
@@ -26,7 +26,7 @@ case `cpuinfo_id` in
GSM_DEV="/dev/ttyS0"
;;
"Motorola Ezx Platform")
- GSMD_OPTS="-s 115200 -F"
+ GSMD_OPTS="-s 115200 -F -v ti"
GSM_DEV="/dev/mux0"
;;
*)
diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb
index a3b8f8a21a..c2b758ecf4 100644
--- a/packages/gsm/libgsmd_svn.bb
+++ b/packages/gsm/libgsmd_svn.bb
@@ -4,9 +4,18 @@ LICENSE = "GPL LGPL"
SECTION = "libs/gsm"
PROVIDES += "gsmd"
PV = "0.1+svnr${SRCREV}"
-PR = "r27"
+PR = "r29"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
+ file://024_sms-text-in-bracket.patch;patch=1;minrev=2957 \
+ file://025_sms-status-report.patch;patch=1;minrev=2957 \
+ file://027_phonebook-find-and-read-range-support.patch;patch=1;minrev=2957 \
+ file://028_shell-phonebook-find-and-read-range-support.patch;patch=1;minrev=2957 \
+ file://0001-Introduce-ports.patch;patch=1;minrev=2957 \
+ file://0002-Flush-all-pending-commands-before-restarting-the-mod.patch;patch=1;minrev=2957 \
+ file://0003-Correctly-segment-incoming-usock-data-into-packets.patch;patch=1;minrev=2957 \
+ file://0004-Handle-read-and-write-return-values.patch;patch=1;minrev=2957 \
+ file://0005-Add-ask-ds-option-forSMS.patch;patch=1;minrev=2957 \
file://gsmd \
file://default"
S = "${WORKDIR}/gsm"
diff --git a/packages/gtk-webcore/osb-jscore_svn.bb b/packages/gtk-webcore/osb-jscore_svn.bb
index a504be42fa..c75db61a9a 100644
--- a/packages/gtk-webcore/osb-jscore_svn.bb
+++ b/packages/gtk-webcore/osb-jscore_svn.bb
@@ -5,7 +5,7 @@ PRIORITY = "optional"
DEFAULT_PREFERENCE = "-1"
-PV = "0.5.2+svnr${SRCREV}"
+PV = "0.5.2+svnr${SRCDATE}"
PR = "r1"
SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=JavaScriptCore;proto=https \
diff --git a/packages/gtk-webcore/osb-nrcit_svn.bb b/packages/gtk-webcore/osb-nrcit_svn.bb
index 2cab1101ca..d982c6b595 100644
--- a/packages/gtk-webcore/osb-nrcit_svn.bb
+++ b/packages/gtk-webcore/osb-nrcit_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "nokia"
PRIORITY = "optional"
SECTION = "gpe"
-PV = "0.5.2+svnr${SRCREV}"
+PV = "0.5.2+svnr${SRCDATE}"
PR = "r0"
DEPENDS = "curl librsvg osb-nrcore pango"
diff --git a/packages/gtk-webcore/osb-nrcore_svn.bb b/packages/gtk-webcore/osb-nrcore_svn.bb
index 402638d28e..5ca22d3083 100644
--- a/packages/gtk-webcore/osb-nrcore_svn.bb
+++ b/packages/gtk-webcore/osb-nrcore_svn.bb
@@ -2,7 +2,7 @@ require osb-nrcore.inc
DEFAULT_PREFERENCE = "-1"
-PV = "0.5.2+svnr${SRCREV}"
+PV = "0.5.2+svnr${SRCDATE}"
PR = "r1"
SRC_URI = "svn://gtk-webcore.svn.sourceforge.net/svnroot/gtk-webcore/trunk;module=NRCore;proto=https \
diff --git a/packages/guichan/.mtn2git_empty b/packages/guichan/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/guichan/.mtn2git_empty
diff --git a/packages/guichan/guichan_0.7.1.bb b/packages/guichan/guichan_0.7.1.bb
new file mode 100644
index 0000000000..28c5c8e948
--- /dev/null
+++ b/packages/guichan/guichan_0.7.1.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "A portable C++ GUI library designed for games using Allegro, HGE, OpenGL, OpenLayer and/or SDL."
+HOMEPAGE = "http://guichan.sourceforge.net"
+DEPENDS = "virtual/libsdl libsdl-image"
+
+SRC_URI = "http://guichan.googlecode.com/files/guichan-0.7.1.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--disable-opengl --disable-glut --disable-allegro \
+ --enable-sdlimage --enable-sdl"
+
+PACKAGES =+ "libguichan libguichan-sdl"
+
+FILES_libguichan = "${libdir}/libguichan.so.*"
+FILES_libguichan-sdl = "${libdir}/libguichan_sdl.so.*"
+
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/hal/hal-info_20070618.bb b/packages/hal/hal-info_20070618.bb
new file mode 100644
index 0000000000..690dbe614d
--- /dev/null
+++ b/packages/hal/hal-info_20070618.bb
@@ -0,0 +1,20 @@
+DESCRIPTION = "Hardware Abstraction Layer device information"
+HOMEPAGE = "http://freedesktop.org/Software/hal"
+SECTION = "unknown"
+LICENSE = "GPL AFL"
+
+SRC_URI = "http://people.freedesktop.org/~david/dist/hal-info-20070618.tar.gz"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--disable-recall --disable-video"
+
+do_configure() {
+ gnu-configize
+ libtoolize --force
+ oe_runconf
+}
+
+
+PACKAGE_ARCH = "all"
+FILES_${PN} += "${datadir}/hal/"
diff --git a/packages/hal/hal-info_git.bb b/packages/hal/hal-info_git.bb
index 597107fe2b..2812f19fe0 100644
--- a/packages/hal/hal-info_git.bb
+++ b/packages/hal/hal-info_git.bb
@@ -6,6 +6,7 @@ LICENSE = "GPL AFL"
PV = "${SRCDATE}+git"
PR = "r1"
+DEFAULT_PREFERENCE = "-1"
SRC_URI = "git://anongit.freedesktop.org/hal-info/;protocol=git"
@@ -17,4 +18,4 @@ EXTRA_OECONF = "--disable-recall --disable-video"
PACKAGE_ARCH = "all"
-FILES_${PN} += "/usr/share/hal/"
+FILES_${PN} += "${datadir}/hal/"
diff --git a/packages/imagemagick/imagemagick_6.2.9.bb b/packages/imagemagick/imagemagick_6.2.9.bb
deleted file mode 100644
index a403e1a629..0000000000
--- a/packages/imagemagick/imagemagick_6.2.9.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-LICENSE = "GPL"
-SECTION = "console/utils"
-DEPENDS = "tiff"
-DESCRIPTION = "ImageMagick is an image convertion tools"
-
-SRC_URI = "ftp://ftp.nluug.nl/pub/ImageMagick/ImageMagick-${PV}-2.tar.bz2 \
- file://PerlMagic_MakePatch;patch=1"
-
-S = "${WORKDIR}/ImageMagick-${PV}"
-PR="r1"
-
-inherit autotools binconfig
-
-EXTRA_OECONF="--without-x"
-EXTRA_OECONF_openprotium="--without-x --without-xml --without-perl"
-
-LEAD_SONAME="libMagick.so.*"
-
-FILES_${PN} += "${libdir}/ImageMagick-${PV}/modules-Q16/*/*.so \
- ${libdir}/ImageMagick-${PV}/modules-Q16/*/*.la \
- ${libdir}/ImageMagick-${PV}/config/ \
- ${datadir}/ImageMagick-${PV}"
-
-FILES_${PN}-dbg += "${libdir}/ImageMagick-${PV}/modules-Q16/*/.debug/*"
-
-do_stage() {
- oe_libinstall -so -a libMagick ${STAGING_LIBDIR}
- oe_libinstall -so -a libWand ${STAGING_LIBDIR}
- install -d ${STAGING_INCDIR}/wand/
- install -d ${STAGING_INCDIR}/magick/
- install -m 0644 wand/*.h ${STAGING_INCDIR}/wand/
- install -m 0644 magick/*.h ${STAGING_INCDIR}/magick/
-}
diff --git a/packages/imagemagick/imagemagick_6.3.5-10.bb b/packages/imagemagick/imagemagick_6.3.5-10.bb
new file mode 100644
index 0000000000..56229802ac
--- /dev/null
+++ b/packages/imagemagick/imagemagick_6.3.5-10.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "ImageMagick is an image convertion tools"
+SECTION = "console/utils"
+LICENSE = "GPL"
+DEPENDS = "tiff"
+PR = "r1"
+
+SRC_URI = "ftp://ftp.nluug.nl/pub/ImageMagick/ImageMagick-${PV}.tar.bz2 \
+ file://PerlMagic_MakePatch;patch=1 \
+ file://makefile-am.patch;patch=1 \
+ file://binconfig-fixes.patch;patch=1 "
+
+IMVER = "6.3.5"
+
+S = "${WORKDIR}/ImageMagick-${IMVER}"
+
+inherit autotools binconfig pkgconfig
+
+EXTRA_OECONF = "--without-x --without-freetype --without-perl"
+EXTRA_OECONF_openprotium = "--without-x --without-freetype --without-xml --without-perl"
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.so \
+ ${libdir}/ImageMagick-${IMVER}/config/ \
+ ${datadir}/ImageMagick-${IMVER}"
+
+FILES_${PN}-dev += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.la \
+ ${libdir}/ImageMagick-${IMVER}/modules-Q16/*/*.a"
+
+FILES_${PN}-dbg += "${libdir}/ImageMagick-${IMVER}/modules-Q16/*/.debug/*"
+
+LEAD_SONAME = "libMagick.so.*"
+
diff --git a/packages/libpng/libpng-native_1.2.20.bb b/packages/libpng/libpng-native_1.2.20.bb
new file mode 100644
index 0000000000..231b956678
--- /dev/null
+++ b/packages/libpng/libpng-native_1.2.20.bb
@@ -0,0 +1,14 @@
+require libpng_${PV}.bb
+inherit native
+FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/libpng-${PV}"
+DEPENDS = "zlib-native"
+
+INHIBIT_NATIVE_STAGE_INSTALL = "1"
+
+do_stage_append() {
+ cp libpng.pc libpng12.pc
+ install -m 644 png.h ${STAGING_INCDIR}/png.h
+ install -m 644 pngconf.h ${STAGING_INCDIR}/pngconf.h
+ oe_libinstall -so libpng12 ${STAGING_LIBDIR}/
+ ln -sf libpng12.so ${STAGING_LIBDIR}/libpng.so
+}
diff --git a/packages/libpng/libpng_1.2.20.bb b/packages/libpng/libpng_1.2.20.bb
new file mode 100644
index 0000000000..c6c296cae4
--- /dev/null
+++ b/packages/libpng/libpng_1.2.20.bb
@@ -0,0 +1,50 @@
+DESCRIPTION = "PNG Library"
+HOMEPAGE = "http://www.libpng.org/"
+LICENSE = "libpng"
+SECTION = "libs"
+DEPENDS = "zlib"
+PRIORITY = "required"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/libpng/libpng-${PV}.tar.bz2"
+S = "${WORKDIR}/libpng-${PV}"
+
+inherit autotools binconfig pkgconfig
+
+do_stage() {
+ cp libpng.pc libpng12.pc
+ install -m 644 png.h ${STAGING_INCDIR}/png.h
+ install -m 644 pngconf.h ${STAGING_INCDIR}/pngconf.h
+ oe_libinstall -so libpng ${STAGING_LIBDIR}/
+ oe_libinstall -so libpng12 ${STAGING_LIBDIR}/
+ ln -sf libpng12.so ${STAGING_LIBDIR}/libpng.so
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -d ${D}${mandir}
+ install -d ${D}${libdir}
+ install -d ${D}${includedir}
+ unset LDFLAGS
+ oe_runmake 'prefix=${prefix}' 'DESTDIR=${D}' \
+ 'DB=${D}${bindir}' 'DI=${D}${includedir}' \
+ 'DL=${D}${libdir}' 'DM=${D}${mandir}' \
+ install
+}
+
+python do_package() {
+ if bb.data.getVar('DEBIAN_NAMES', d, 1):
+ bb.data.setVar('PKG_${PN}', 'libpng12', d)
+ bb.build.exec_func('package_do_package', d)
+}
+
+PACKAGES =+ "${PN}12-dbg ${PN}12 ${PN}12-dev"
+
+FILES_${PN}12-dbg = "${libdir}/libpng12*.dbg"
+FILES_${PN}12 = "${libdir}/libpng12.so.*"
+FILES_${PN}12-dev = "${libdir}/libpng12.* ${includedir}/libpng12 ${libdir}/pkgconfig/libpng12.pc"
+FILES_${PN} = "${libdir}/lib*.so.*"
+FILES_${PN}-dev = "${includedir} ${libdir}/lib*.so ${libdir}/*.la \
+ ${libdir}/*.a ${libdir}/pkgconfig \
+ ${datadir}/aclocal ${bindir} ${sbindir}"
+
diff --git a/packages/libsdl/libsdl-net_1.2.7.bb b/packages/libsdl/libsdl-net_1.2.7.bb
index a2ab06d479..8149cce379 100644
--- a/packages/libsdl/libsdl-net_1.2.7.bb
+++ b/packages/libsdl/libsdl-net_1.2.7.bb
@@ -8,6 +8,7 @@ SRC_URI = "http://www.libsdl.org/projects/SDL_net/release/SDL_net-${PV}.tar.gz"
S = "${WORKDIR}/SDL_net-${PV}"
inherit autotools
+EXTRA_OECONF += "SDL_CONFIG=${STAGING_BINDIR_CROSS}/sdl-config"
do_stage() {
oe_libinstall -so libSDL_net ${STAGING_LIBDIR}
diff --git a/packages/libtiff/tiff_3.7.2.bb b/packages/libtiff/tiff_3.7.2.bb
index 23110b6007..d98974541d 100644
--- a/packages/libtiff/tiff_3.7.2.bb
+++ b/packages/libtiff/tiff_3.7.2.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This software provides support for the Tag Image File Format (TIF
LICENSE = ""
HOMEPAGE = "http://www.remotesensing.org/libtiff/"
DEPENDS = "zlib jpeg"
-PR = "r1"
+PR = "r2"
SRC_URI = "http://dl.maptools.org/dl/libtiff/old/tiff-${PV}.tar.gz"
@@ -11,8 +11,9 @@ inherit autotools
do_stage() {
autotools_stage_includes
install -d ${STAGING_LIBDIR}
- install -m 755 libtiff/.libs/libtiff.so.3.7.2 ${STAGING_LIBDIR}/libtiff.so
- install -m 755 ./libtiff/.libs/libtiffxx.so.3.7.2 ${STAGING_LIBDIR}/libtiffxx.so
+ oe_libinstall -C libtiff -a -so libtiff ${STAGING_LIBDIR}
+ oe_libinstall -C libtiff -a -so libtiffxx ${STAGING_LIBDIR}
+
}
PACKAGES =+ "tiffxx tiffxx-dbg tiffxx-dev tiff-utils tiff-utils-dbg"
diff --git a/packages/linux/ixp4xx-kernel.inc b/packages/linux/ixp4xx-kernel.inc
index 92bc34c987..af5f78b918 100644
--- a/packages/linux/ixp4xx-kernel.inc
+++ b/packages/linux/ixp4xx-kernel.inc
@@ -213,6 +213,7 @@ do_configure_prepend() {
# Kernel module dependencies
+DEPENDS += "zd1211-firmware"
RDEPENDS_kernel-module-zd1211rw += "zd1211-firmware"
diff --git a/packages/linux/linux-davinci/binutils-buildid-arm.patch b/packages/linux/linux-davinci/binutils-buildid-arm.patch
new file mode 100644
index 0000000000..edd224f4dd
--- /dev/null
+++ b/packages/linux/linux-davinci/binutils-buildid-arm.patch
@@ -0,0 +1,12 @@
+diff --git a/arch/arm/kernel/vmlinux.lds.S b/arch/arm/kernel/vmlinux.lds.S
+index 5ff5406..538fcb5 100644
+--- a/arch/arm/kernel/vmlinux.lds.S
++++ b/arch/arm/kernel/vmlinux.lds.S
+@@ -94,6 +94,7 @@ SECTIONS
+ TEXT_TEXT
+ SCHED_TEXT
+ LOCK_TEXT
++ *(.note.*)
+ #ifdef CONFIG_MMU
+ *(.fixup)
+ #endif
diff --git a/packages/linux/linux-davinci/davinci-dvevm/defconfig b/packages/linux/linux-davinci/davinci-dvevm/defconfig
index 02df8e79d9..e64431a1b6 100644
--- a/packages/linux/linux-davinci/davinci-dvevm/defconfig
+++ b/packages/linux/linux-davinci/davinci-dvevm/defconfig
@@ -1,13 +1,13 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21-omap1
-# Sun Aug 12 17:15:12 2007
+# Linux kernel version: 2.6.23-rc2-davinci1
+# Fri Aug 17 20:43:45 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
CONFIG_GENERIC_GPIO=y
-# CONFIG_GENERIC_TIME is not set
-# CONFIG_GENERIC_CLOCKEVENTS is not set
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_MMU=y
# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_HARDIRQS=y
@@ -26,26 +26,20 @@ CONFIG_VECTORS_BASE=0xffff0000
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
-# Code maturity level options
+# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
CONFIG_LOCALVERSION=""
CONFIG_LOCALVERSION_AUTO=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
+# CONFIG_USER_NS is not set
# CONFIG_AUDIT is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
@@ -67,34 +61,30 @@ CONFIG_BUG=y
CONFIG_ELF_CORE=y
CONFIG_BASE_FULL=y
CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
CONFIG_SHMEM=y
CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_SLUB_DEBUG=y
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_RT_MUTEXES=y
# CONFIG_TINY_SHMEM is not set
CONFIG_BASE_SMALL=0
-
-#
-# Loadable module support
-#
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
CONFIG_MODULE_FORCE_UNLOAD=y
CONFIG_MODVERSIONS=y
# CONFIG_MODULE_SRCVERSION_ALL is not set
CONFIG_KMOD=y
-
-#
-# Block layer
-#
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set
+# CONFIG_BLK_DEV_BSG is not set
#
# IO Schedulers
@@ -126,14 +116,16 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_ARCH_NETX is not set
# CONFIG_ARCH_H720X is not set
# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
# CONFIG_ARCH_IOP32X is not set
# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KS8695 is not set
# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_MXC is not set
# CONFIG_ARCH_PNX4008 is not set
# CONFIG_ARCH_PXA is not set
# CONFIG_ARCH_RPC is not set
@@ -141,8 +133,17 @@ CONFIG_DEFAULT_IOSCHED="anticipatory"
# CONFIG_ARCH_S3C2410 is not set
# CONFIG_ARCH_SHARK is not set
# CONFIG_ARCH_LH7A40X is not set
-# CONFIG_ARCH_OMAP is not set
CONFIG_ARCH_DAVINCI=y
+# CONFIG_ARCH_OMAP is not set
+# CONFIG_MACH_OMAP_APOLLON_PLUS is not set
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
#
# TI DaVinci Implementations
@@ -172,6 +173,7 @@ CONFIG_CPU_32=y
CONFIG_CPU_ARM926T=y
CONFIG_CPU_32v5=y
CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_PABRT_NOIFAR=y
CONFIG_CPU_CACHE_VIVT=y
CONFIG_CPU_COPY_V4WB=y
CONFIG_CPU_TLB_V4WBI=y
@@ -191,6 +193,7 @@ CONFIG_ARM_THUMB=y
#
# Bus support
#
+# CONFIG_PCI_SYSCALL is not set
# CONFIG_ARCH_SUPPORTS_MSI is not set
#
@@ -202,11 +205,11 @@ CONFIG_ARM_THUMB=y
# Kernel Features
#
# CONFIG_TICK_ONESHOT is not set
-CONFIG_PREEMPT=y
-# CONFIG_NO_IDLE_HZ is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+# CONFIG_PREEMPT is not set
CONFIG_HZ=100
-CONFIG_AEABI=y
-CONFIG_OABI_COMPAT=y
+# CONFIG_AEABI is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -218,8 +221,9 @@ CONFIG_FLAT_NODE_MEM_MAP=y
CONFIG_SPLIT_PTLOCK_CPUS=4096
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
CONFIG_LEDS=y
-# CONFIG_LEDS_TIMER is not set
# CONFIG_LEDS_CPU is not set
CONFIG_ALIGNMENT_TRAP=y
@@ -239,8 +243,7 @@ CONFIG_CMDLINE=""
#
# At least one emulation must be selected
#
-CONFIG_FPE_NWFPE=y
-# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_NWFPE is not set
# CONFIG_FPE_FASTFPE is not set
# CONFIG_VFP is not set
@@ -250,6 +253,7 @@ CONFIG_FPE_NWFPE=y
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_AOUT is not set
# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
#
# Power management options
@@ -298,10 +302,6 @@ CONFIG_INET_TCP_DIAG=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-
-#
-# IP: Virtual Server Configuration
-#
# CONFIG_IP_VS is not set
CONFIG_IPV6=m
# CONFIG_IPV6_PRIVACY is not set
@@ -344,20 +344,8 @@ CONFIG_NETFILTER=y
#
# CONFIG_IP6_NF_QUEUE is not set
# CONFIG_IP6_NF_IPTABLES is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
@@ -393,6 +381,7 @@ CONFIG_NETFILTER=y
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
#
# Device Drivers
@@ -405,10 +394,6 @@ CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
# CONFIG_CONNECTOR is not set
CONFIG_MTD=y
# CONFIG_MTD_DEBUG is not set
@@ -494,20 +479,8 @@ CONFIG_MTD_NAND_IDS=y
# UBI - Unsorted block images
#
# CONFIG_MTD_UBI is not set
-
-#
-# Parallel port support
-#
# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNPACPI is not set
-
-#
-# Block devices
-#
+CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
@@ -519,10 +492,6 @@ CONFIG_BLK_DEV_RAM_SIZE=32768
CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
CONFIG_IDE=y
CONFIG_IDE_MAX_HWIFS=4
CONFIG_BLK_DEV_IDE=y
@@ -584,6 +553,7 @@ CONFIG_BLK_DEV_IDEDMA=y
#
# CONFIG_RAID_ATTRS is not set
CONFIG_SCSI=m
+CONFIG_SCSI_DMA=y
# CONFIG_SCSI_TGT is not set
# CONFIG_SCSI_NETLINK is not set
CONFIG_SCSI_PROC_FS=y
@@ -613,74 +583,28 @@ CONFIG_SCSI_WAIT_SCAN=m
# CONFIG_SCSI_SPI_ATTRS is not set
# CONFIG_SCSI_FC_ATTRS is not set
# CONFIG_SCSI_ISCSI_ATTRS is not set
-# CONFIG_SCSI_SAS_ATTRS is not set
# CONFIG_SCSI_SAS_LIBSAS is not set
-
-#
-# SCSI low-level drivers
-#
+CONFIG_SCSI_LOWLEVEL=y
# CONFIG_ISCSI_TCP is not set
# CONFIG_SCSI_DEBUG is not set
-# CONFIG_SCSI_ESP_CORE is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
CONFIG_NETDEVICES=y
+# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
CONFIG_TUN=m
-
-#
-# PHY device support
-#
# CONFIG_PHYLIB is not set
-
-#
-# Ethernet (10 or 100Mbit)
-#
CONFIG_NET_ETHERNET=y
# CONFIG_MII is not set
-CONFIG_TI_DAVINCI_EMAC=y
+# CONFIG_AX88796 is not set
# CONFIG_SMC91X is not set
+CONFIG_TI_DAVINCI_EMAC=y
# CONFIG_DM9000 is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-CONFIG_MLX4_DEBUG=y
-
-#
-# Token Ring devices
-#
+CONFIG_NETDEV_1000=y
+CONFIG_NETDEV_10000=y
#
# Wireless LAN
@@ -697,10 +621,6 @@ CONFIG_MLX4_DEBUG=y
# CONFIG_USB_RTL8150 is not set
# CONFIG_USB_USBNET_MII is not set
# CONFIG_USB_USBNET is not set
-
-#
-# Wan interfaces
-#
# CONFIG_WAN is not set
CONFIG_PPP=m
# CONFIG_PPP_MULTILINK is not set
@@ -711,6 +631,7 @@ CONFIG_PPP_DEFLATE=m
# CONFIG_PPP_BSDCOMP is not set
# CONFIG_PPP_MPPE is not set
# CONFIG_PPPOE is not set
+# CONFIG_PPPOL2TP is not set
# CONFIG_SLIP is not set
CONFIG_SLHC=m
# CONFIG_SHAPER is not set
@@ -718,10 +639,6 @@ CONFIG_NETCONSOLE=y
CONFIG_NETPOLL=y
CONFIG_NETPOLL_TRAP=y
CONFIG_NET_POLL_CONTROLLER=y
-
-#
-# ISDN subsystem
-#
# CONFIG_ISDN is not set
#
@@ -729,6 +646,7 @@ CONFIG_NET_POLL_CONTROLLER=y
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
#
# Userland interfaces
@@ -794,26 +712,13 @@ CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=256
-
-#
-# IPMI
-#
# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
# CONFIG_WATCHDOG is not set
CONFIG_HW_RANDOM=y
# CONFIG_NVRAM is not set
CONFIG_DAVINCI_RTC=y
-# CONFIG_DTLK is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
# CONFIG_TCG_TPM is not set
CONFIG_I2C=y
CONFIG_I2C_BOARDINFO=y
@@ -833,6 +738,7 @@ CONFIG_I2C_CHARDEV=y
# CONFIG_I2C_OCORES is not set
# CONFIG_I2C_PARPORT_LIGHT is not set
# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_TAOS_EVM is not set
# CONFIG_I2C_STUB is not set
# CONFIG_I2C_TINY_USB is not set
CONFIG_I2C_DAVINCI=y
@@ -842,13 +748,16 @@ CONFIG_I2C_DAVINCI=y
#
# CONFIG_SENSORS_DS1337 is not set
# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_DS1682 is not set
# CONFIG_SENSORS_EEPROM is not set
# CONFIG_SENSORS_PCF8574 is not set
# CONFIG_SENSORS_PCA9539 is not set
# CONFIG_SENSORS_PCF8591 is not set
CONFIG_SENSORS_TLV320AIC23=y
-# CONFIG_SENSORS_MAX6875 is not set
CONFIG_SENSORS_TLV320AIC33=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+CONFIG_GPIOEXPANDER_DAVINCI=y
# CONFIG_I2C_DEBUG_CORE is not set
# CONFIG_I2C_DEBUG_ALGO is not set
# CONFIG_I2C_DEBUG_BUS is not set
@@ -859,14 +768,11 @@ CONFIG_SENSORS_TLV320AIC33=y
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
-
-#
-# Dallas's 1-wire bus
-#
# CONFIG_W1 is not set
CONFIG_HWMON=y
# CONFIG_HWMON_VID is not set
# CONFIG_SENSORS_ABITUGURU is not set
+# CONFIG_SENSORS_ABITUGURU3 is not set
# CONFIG_SENSORS_AD7418 is not set
# CONFIG_SENSORS_ADM1021 is not set
# CONFIG_SENSORS_ADM1025 is not set
@@ -893,13 +799,16 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_LM87 is not set
# CONFIG_SENSORS_LM90 is not set
# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
# CONFIG_SENSORS_MAX1619 is not set
# CONFIG_SENSORS_MAX6650 is not set
# CONFIG_SENSORS_PC87360 is not set
# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
# CONFIG_SENSORS_SMSC47M1 is not set
# CONFIG_SENSORS_SMSC47M192 is not set
# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_THMC50 is not set
# CONFIG_SENSORS_VT1211 is not set
# CONFIG_SENSORS_W83781D is not set
# CONFIG_SENSORS_W83791D is not set
@@ -909,57 +818,33 @@ CONFIG_HWMON=y
# CONFIG_SENSORS_W83627HF is not set
# CONFIG_SENSORS_W83627EHF is not set
# CONFIG_HWMON_DEBUG_CHIP is not set
-
-#
-# Misc devices
-#
-# CONFIG_BLINK is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set
-
-#
-# LED devices
-#
# CONFIG_NEW_LEDS is not set
#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-
-#
# Multimedia devices
#
CONFIG_VIDEO_DEV=y
CONFIG_VIDEO_V4L1=y
CONFIG_VIDEO_V4L1_COMPAT=y
CONFIG_VIDEO_V4L2=y
-
-#
-# Video Capture Adapters
-#
-
-#
-# Video Capture Adapters
-#
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
# CONFIG_VIDEO_ADV_DEBUG is not set
CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_TVP5146 is not set
# CONFIG_VIDEO_CPIA is not set
# CONFIG_VIDEO_CPIA2 is not set
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_TUNER_3036 is not set
-# CONFIG_VIDEO_IVTV is not set
-
-#
-# V4L USB devices
-#
+# CONFIG_TUNER_TEA5761 is not set
+CONFIG_V4L_USB_DRIVERS=y
# CONFIG_VIDEO_PVRUSB2 is not set
# CONFIG_VIDEO_EM28XX is not set
# CONFIG_VIDEO_USBVISION is not set
@@ -977,17 +862,11 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
# CONFIG_USB_ZC0301 is not set
# CONFIG_USB_PWC is not set
# CONFIG_USB_ZR364XX is not set
-
-#
-# Radio Adapters
-#
+CONFIG_RADIO_ADAPTERS=y
# CONFIG_RADIO_TEA5761 is not set
# CONFIG_USB_DSBR is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
+# CONFIG_DVB_CORE is not set
+CONFIG_DAB=y
# CONFIG_USB_DABUSB is not set
#
@@ -1000,6 +879,7 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
#
# CONFIG_DISPLAY_SUPPORT is not set
# CONFIG_VGASTATE is not set
+CONFIG_VIDEO_OUTPUT_CONTROL=m
CONFIG_FB=y
CONFIG_FIRMWARE_EDID=y
# CONFIG_FB_DDC is not set
@@ -1030,6 +910,7 @@ CONFIG_FB_DAVINCI=y
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
# CONFIG_FONTS is not set
CONFIG_FONT_8x8=y
@@ -1053,7 +934,6 @@ CONFIG_SOUND=y
# Open Sound System
#
CONFIG_SOUND_PRIME=y
-# CONFIG_OSS_OBSOLETE is not set
# CONFIG_SOUND_MSNDCLAS is not set
# CONFIG_SOUND_MSNDPIN is not set
CONFIG_SOUND_DAVINCI=y
@@ -1064,10 +944,7 @@ CONFIG_SOUND_DAVINCI_AIC33=y
#
# CONFIG_MONOSTEREO_DIFFJACK is not set
CONFIG_MONOSTEREO_SAMEJACK=y
-
-#
-# HID Devices
-#
+CONFIG_HID_SUPPORT=y
CONFIG_HID=y
# CONFIG_HID_DEBUG is not set
@@ -1084,10 +961,7 @@ CONFIG_USB_HID=m
#
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
-
-#
-# USB support
-#
+CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
# CONFIG_USB_ARCH_HAS_OHCI is not set
# CONFIG_USB_ARCH_HAS_EHCI is not set
@@ -1098,7 +972,7 @@ CONFIG_USB=m
# Miscellaneous USB options
#
CONFIG_USB_DEVICEFS=y
-# CONFIG_USB_DEVICE_CLASS is not set
+CONFIG_USB_DEVICE_CLASS=y
# CONFIG_USB_DYNAMIC_MINORS is not set
# CONFIG_USB_OTG is not set
@@ -1107,6 +981,7 @@ CONFIG_USB_DEVICEFS=y
#
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
CONFIG_USB_MUSB_HDRC=m
CONFIG_USB_MUSB_SOC=y
@@ -1197,12 +1072,15 @@ CONFIG_USB_MON=y
CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
CONFIG_USB_GADGET_DUALSPEED=y
@@ -1222,17 +1100,27 @@ CONFIG_MMC=y
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
#
# MMC/SD Host Controller Drivers
#
# CONFIG_MMC_DAVINCI is not set
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS is not set
#
-# Real Time Clock
+# DMA Engine support
+#
+# CONFIG_DMA_ENGINE is not set
+
+#
+# DMA Clients
+#
+
+#
+# DMA Devices
#
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
#
# File systems
@@ -1350,7 +1238,6 @@ CONFIG_SMB_FS=m
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
-# CONFIG_9P_FS is not set
#
# Partition Types
@@ -1447,10 +1334,6 @@ CONFIG_FRAME_POINTER=y
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
# CONFIG_CRYPTO is not set
#
@@ -1459,7 +1342,9 @@ CONFIG_FRAME_POINTER=y
CONFIG_BITREVERSE=y
CONFIG_CRC_CCITT=m
# CONFIG_CRC16 is not set
+# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
+# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_ZLIB_INFLATE=y
CONFIG_ZLIB_DEFLATE=y
diff --git a/packages/linux/linux-davinci_2.6.x+git-davinci.bb b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
index b4dcabedd7..0381716253 100644
--- a/packages/linux/linux-davinci_2.6.x+git-davinci.bb
+++ b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
@@ -6,6 +6,7 @@ PR = "r1"
COMPATIBLE_MACHINE = "davinci-dvevm"
SRC_URI = "git://source.mvista.com/git/linux-davinci-2.6.git;protocol=git \
+ file://binutils-buildid-arm.patch;patch=1 \
file://defconfig"
S = "${WORKDIR}/git"
diff --git a/packages/linux/linux-ezx-2.6.21/a1200/defconfig b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
index b40f2f6eba..929eae4d5c 100755
--- a/packages/linux/linux-ezx-2.6.21/a1200/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
@@ -1003,7 +1003,7 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_EZX=y
+CONFIG_BACKLIGHT_EZX=N
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
diff --git a/packages/linux/linux-ezx-2.6.21/a780/defconfig b/packages/linux/linux-ezx-2.6.21/a780/defconfig
index 613fe3de5b..f79aaa7e7d 100755
--- a/packages/linux/linux-ezx-2.6.21/a780/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/a780/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Sun Sep 9 10:37:45 2007
+# Fri Sep 21 18:10:00 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -152,6 +152,7 @@ CONFIG_PXA_EZX_A780=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
+# CONFIG_EZX_EOC is not set
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -589,9 +590,11 @@ CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
CONFIG_MTD_EZX=y
-CONFIG_MTD_EZX_A780=y
-# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_A780 is not set
+CONFIG_MTD_EZX_A780_ALTERNATE=y
+# CONFIG_MTD_EZX_A1200 is not set
# CONFIG_MTD_EZX_E2 is not set
+# CONFIG_MTD_EZX_E6 is not set
# CONFIG_MTD_PLATRAM is not set
#
@@ -1019,6 +1022,9 @@ CONFIG_FB_CFB_IMAGEBLIT=y
#
# CONFIG_FB_S1D13XXX is not set
CONFIG_FB_PXA=y
+CONFIG_FB_PXA_LCD_QVGA=y
+# CONFIG_FB_PXA_LCD_VGA is not set
+CONFIG_FB_PXA_OVERLAY=y
CONFIG_FB_PXA_PARAMETERS=y
# CONFIG_FB_MBX is not set
# CONFIG_FB_VIRTUAL is not set
diff --git a/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX b/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX
index 7e7e0f2898..c6d90c61b9 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX
+++ b/packages/linux/linux-ezx-2.6.21/patches/Makefile.OpenEZX
@@ -8,12 +8,18 @@
# in your environment.
#
-PHONES = a780 e680 a1200 e2 e6
+PHONES = a780 e680 a1200 e6 e2
CROSS_COMPILE ?= /home/wyrm/ezx/dev/cross/bin/arm-angstrom-linux-gnueabi-
QUILT_PATCHES ?= patches
+LV ?= ezxdev # replace LOCALVERSION string
+J ?= 2 # simultaneous jobs
+SIG ?= 0 # BOOL sign md5sums file
+
DATE = $(shell date +%Y%m%d)
+DEPLOY_SERVER ?= people.openezx.org
+DEPLOY_DIR ?= public_html/images/$(DATE)/
all: $(foreach p, $(PHONES), zImage-$(p) modules-$(p).tar.gz)
@@ -21,8 +27,27 @@ zImages: $(foreach p, $(PHONES), zImage-$(p))
modules: $(foreach p, $(PHONES), modules-$(p).tar.gz)
+config: $(foreach p, $(PHONES), config-$(p))
+
+config-%: $(QUILT_PATCHES)/defconfig-%
+ cp $< .config
+ make ARCH=arm oldconfig
+ cp .config $<
+
+deploy: release
+ ssh $(DEPLOY_SERVER) \
+ mkdir -p $(DEPLOY_DIR)
+ scp ezxrelease-$(DATE).tar $(DEPLOY_SERVER):$(DEPLOY_DIR)
+ ssh $(DEPLOY_SERVER) \
+ cd $(DEPLOY_DIR)\; \
+ tar -xf ezxrelease-$(DATE).tar\; \
+ rm -f ezxrelease-$(DATE).tar
+
release: $(foreach p, $(PHONES), tag-$(p))
- cat md5sums.tmp | gpg --clearsign > md5sums
+ cp md5sums.tmp md5sums
+ test "$(SIG)" = "1" && \
+ cat md5sums.tmp | gpg --clearsign > md5sums \
+ ; echo
tar -rf ezxrelease.tar md5sums
rm -f md5sums.tmp md5sums
mv ezxrelease.tar ezxrelease-$(DATE).tar
@@ -30,22 +55,23 @@ release: $(foreach p, $(PHONES), tag-$(p))
tag-%: zImage-% modules-%.tar.gz
p=$(patsubst tag-%,%,$@) && \
tag=$(shell cat include/config/kernel.release)-$(DATE) && \
- cp zImage-$$p zImage-$$tag-$$p && \
- cp modules-$$p.tar.gz modules-$$tag-$$p.tar.gz && \
+ mv zImage-$$p zImage-$$tag-$$p && \
+ mv modules-$$p.tar.gz modules-$$tag-$$p.tar.gz && \
tar -rf ezxrelease.tar zImage-$$tag-$$p modules-$$tag-$$p.tar.gz && \
md5sum zImage-$$tag-$$p modules-$$tag-$$p.tar.gz >> md5sums.tmp && \
rm -f zImage-$$tag-$$p modules-$$tag-$$p.tar.gz
zImage-%: $(QUILT_PATCHES)/defconfig-%
- cp $< ./.config
- make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage
+ cat $< | sed 's/LOCALVERSION=".*"$$/LOCALVERSION="-$(LV)"/' > .config
+ make -j$(J) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) zImage
mv arch/arm/boot/zImage $@
modules-%.tar.gz: $(QUILT_PATCHES)/defconfig-%
- cp $< ./.config
+ cat $< | sed 's/LOCALVERSION=".*"$$/LOCALVERSION="-$(LV)"/' > .config
-find . -name "*.ko" -print0 | xargs -r0 rm
- mkdir /tmp/$@
- make ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) \
- INSTALL_MOD_PATH=/tmp/$@ modules modules_install
- tar -C /tmp/$@ -czf $@ .
- rm -rf /tmp/$@
+ mkdir -p Makefile.OpenEZX-tmp/$@
+ make -j$(J) ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) modules
+ make -j1 ARCH=arm CROSS_COMPILE=$(CROSS_COMPILE) \
+ INSTALL_MOD_PATH=Makefile.OpenEZX-tmp/$@ modules_install
+ tar -C Makefile.OpenEZX-tmp/$@ -czf $@ .
+ rm -rf Makefile.OpenEZX-tmp/
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
index 577aa66303..e6146058a0 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 22:15:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-09 13:29:56.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-21 21:38:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-21 21:48:23.000000000 -0300
@@ -25,6 +25,7 @@
#include <asm/arch/mmc.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
-@@ -227,11 +228,69 @@
- .resource = pcap_ts_resources,
+@@ -203,8 +204,65 @@
+ },
};
+
@@ -72,11 +72,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+
static struct platform_device *devices[] __initdata = {
&a1200_pcap_device,
- &pcap_ts_device,
+ &a1200_eoc_device,
};
-+
static void __init a1200_init(void)
- {
- set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-flip.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-flip.patch
new file mode 100644
index 0000000000..15d87f7751
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-flip.patch
@@ -0,0 +1,47 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-23 13:28:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-23 13:31:40.000000000 -0300
+@@ -16,6 +16,7 @@
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
+ #include <linux/input.h>
++#include <linux/gpio_keys.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -343,11 +344,34 @@
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+ };
++/* Flip */
++#undef GPIO_FLIP_PIN
++#define GPIO_FLIP_PIN 15 /* FIXME */
++static struct gpio_keys_button a1200flip_buttons[] = {
++ [0] = {
++ .keycode = KEY_SLEEP,
++ .gpio = GPIO_FLIP_PIN,
++ .desc = "A1200 flip",
++ },
++};
++
++static struct gpio_keys_platform_data a1200flip_platform_data = {
++ .buttons = a1200flip_buttons,
++ .nbuttons = 1,
++};
++static struct platform_device a1200flip_device = {
++ .name = "gpio-keys",
++ .id = -1,
++ .dev = {
++ .platform_data = &a1200flip_platform_data,
++ },
++};
+
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &a1200_eoc_device,
+ &pcap_ts_device,
++ &a1200flip_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-kbd.patch
new file mode 100644
index 0000000000..be1a6f11f7
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-kbd.patch
@@ -0,0 +1,99 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-23 11:48:10.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-23 13:24:58.000000000 -0300
+@@ -15,6 +15,7 @@
+ #include <linux/fb.h>
+ #include <linux/mmc/host.h>
+ #include <linux/irq.h>
++#include <linux/input.h>
+
+ #include <asm/mach-types.h>
+ #include <asm/mach/arch.h>
+@@ -23,12 +24,14 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+ #include <asm/arch/mmc.h>
++#include <asm/arch/kbd.h>
+
+ #include "generic.h"
+ #include "ezx-eoc.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
++extern void __init pxa_set_kbd_info(struct pxakbd_platform_data *);
+
+ #ifdef CONFIG_EZX_PCAP
+ extern int ezx_pcap_mmcsd_power(int);
+@@ -284,6 +287,63 @@
+ .resource = pcap_ts_resources,
+ };
+
++/* Keypad */
++static unsigned char a1200_keycode[] = {
++ /* row 0 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 1 */
++ KEY_RIGHT, KEY_DOWN, KEY_KPENTER, KEY_UP, KEY_LEFT,
++ /* row 2 */
++ KEY_PAGEDOWN, KEY_CAMERA, KEY_RECORD, KEY_HOME, KEY_PAGEUP,
++ /* row 3 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 4 */
++ KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED, KEY_RESERVED,
++ /* row 5 */
++ KEY_RESERVED, KEY_RESERVED, KEY_MENU, KEY_RESERVED, KEY_RESERVED,
++};
++/*
++static unsigned char a1200_direct_keycode[] = {
++ KEY_CAMERA,
++};
++*/
++
++static int a1200_kbd_init(void)
++{
++ pxa_gpio_mode(100 | GPIO_ALT_FN_1_IN); /* KP_MKIN<0> */
++ pxa_gpio_mode(101 | GPIO_ALT_FN_1_IN); /* KP_MKIN<1> */
++ pxa_gpio_mode(102 | GPIO_ALT_FN_1_IN); /* KP_MKIN<2> */
++ pxa_gpio_mode(97 | GPIO_ALT_FN_3_IN); /* KP_MKIN<3> */
++ pxa_gpio_mode(98 | GPIO_ALT_FN_3_IN); /* KP_MKIN<4> */
++ pxa_gpio_mode(103 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<0> */
++ pxa_gpio_mode(104 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<1> */
++ pxa_gpio_mode(105 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<2> */
++ pxa_gpio_mode(106 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<3> */
++ pxa_gpio_mode(107 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<4> */
++ pxa_gpio_mode(108 | GPIO_ALT_FN_2_OUT); /* KP_MKOUT<5> */
++
++ PKWR = 0xEC000;
++ PGSR3 |= 0x1F80;
++ return 0;
++}
++
++static struct pxakbd_platform_data a1200_kbd_platform_data = {
++ .init = &a1200_kbd_init,
++ .scan_interval = HZ/40,
++ .matrix = {
++ .keycode = a1200_keycode,
++ .cols = 6,
++ .rows = 5,
++ },
++/*
++ .direct = {
++ .keycode = a1200_direct_keycode,
++ .num = 1,
++ },
++*/
++};
++
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &a1200_eoc_device,
+@@ -294,6 +354,7 @@
+ {
+ set_pxa_fb_info(&a1200_fb_info);
+ pxa_set_mci_info(&a1200_mci_platform_data);
++ pxa_set_kbd_info(&a1200_kbd_platform_data);
+
+ platform_add_devices(devices, ARRAY_SIZE(devices));
+ }
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
index a8c8f2ee29..2327257507 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:55:10.000000000 -0300
-@@ -203,8 +203,33 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-21 21:50:31.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-21 21:51:06.000000000 -0300
+@@ -260,9 +260,34 @@
},
};
@@ -32,6 +32,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+
static struct platform_device *devices[] __initdata = {
&a1200_pcap_device,
+ &a1200_eoc_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e6-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/e6-eoc.patch
index 79c60c8ca2..f6e152c735 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/e6-eoc.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e6-eoc.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e6.c 2007-09-07 22:15:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-09-09 13:29:56.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e6.c 2007-09-21 21:38:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-09-21 21:49:42.000000000 -0300
@@ -25,6 +25,7 @@
#include <asm/arch/mmc.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
-@@ -227,11 +228,69 @@
- .resource = pcap_ts_resources,
+@@ -203,8 +204,65 @@
+ },
};
+
@@ -72,11 +72,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+
static struct platform_device *devices[] __initdata = {
&e6_pcap_device,
- &pcap_ts_device,
+ &e6_eoc_device,
};
-+
static void __init e6_init(void)
- {
- set_pxa_fb_info(&e6_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e6-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/e6-ts.patch
index 6472f77886..a39b782300 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/e6-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e6-ts.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e6.c 2007-09-07 11:54:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-09-07 11:55:10.000000000 -0300
-@@ -203,8 +203,33 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e6.c 2007-09-21 21:50:31.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-09-21 21:51:40.000000000 -0300
+@@ -260,9 +260,34 @@
},
};
@@ -32,6 +32,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+
static struct platform_device *devices[] __initdata = {
&e6_pcap_device,
+ &e6_eoc_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
index 653e814fb4..e85a40d1a9 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:50.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-09-23 11:17:06.000000000 -0300
@@ -53,3 +53,6 @@
str r1, [r0, #0x18]
#endif
@@ -11,8 +11,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+#endif
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-28 20:54:54.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-23 11:18:47.000000000 -0300
@@ -37,6 +37,10 @@
bool "Keith und Koep Trizeps4 DIMM-Module"
select PXA27x
@@ -68,8 +68,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-28 20:54:54.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-23 11:18:47.000000000 -0300
@@ -18,6 +18,12 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
@@ -86,7 +86,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-28 20:54:54.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-09-23 11:18:47.000000000 -0300
@@ -0,0 +1,118 @@
+/*
+ * ezx.c - Common code for EZX platform.
@@ -209,7 +209,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-28 16:51:50.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-09-23 11:17:06.000000000 -0300
@@ -0,0 +1,225 @@
+/*
+ * linux/include/asm-arm/arch-pxa/ezx.h
@@ -438,8 +438,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+
Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 18:18:49.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-09-23 11:17:06.000000000 -0300
@@ -849,6 +849,8 @@
#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
#define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
@@ -555,8 +555,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
#define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
Index: linux-2.6.21/arch/arm/boot/compressed/head.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-28 16:51:50.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-09-23 11:17:06.000000000 -0300
@@ -117,6 +117,9 @@
mov r0, r0
.endr
@@ -569,8 +569,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head.S
.word start @ absolute load/run zImage address
Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:50.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-09-23 11:17:06.000000000 -0300
@@ -14,14 +14,14 @@
#define STUART ((volatile unsigned long *)0x40700000)
#define HWUART ((volatile unsigned long *)0x41600000)
@@ -591,8 +591,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
/*
Index: linux-2.6.21/arch/arm/mm/init.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-28 16:51:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mm/init.c 2007-06-28 16:51:50.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-09-23 11:16:58.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-09-23 11:17:06.000000000 -0300
@@ -241,6 +241,10 @@
*/
reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
@@ -607,7 +607,7 @@ Index: linux-2.6.21/arch/arm/mm/init.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 20:53:01.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-09-23 11:17:06.000000000 -0300
@@ -0,0 +1,88 @@
+/*
+ * ezx-a780.c - Code specific to A780 GSM Phone.
@@ -700,7 +700,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-28 20:54:24.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-09-23 11:20:03.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e2.c - Code specific to E2 GSM Phone.
@@ -748,7 +748,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
+ .num_modes = 1,
+ .lccr0 = 0x022008B8,
+ .lccr3 = 0xC130FF13,
-+ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_backlight_power = &ezx_backlight_power,
+ .pxafb_lcd_power = &ezx_lcd_power,
+};
+
@@ -766,7 +766,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
+ /* Maintainer: OpenEZX Team (www.openezx.org) */
+ .phys_io = 0x40000000,
+ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
-+ .boot_params = 0xa0000100,
++ .boot_params = 0xa0000200,
+ .map_io = pxa_map_io,
+ .init_irq = pxa_init_irq,
+ .timer = &pxa_timer,
@@ -775,7 +775,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-28 20:53:29.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-23 11:17:06.000000000 -0300
@@ -0,0 +1,87 @@
+/*
+ * ezx-e680.c - Code specific to E680 GSM Phone.
@@ -867,7 +867,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 20:53:48.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-23 11:19:29.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-a1200.c - Code specific to A1200 GSM Phone.
@@ -915,7 +915,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+ .num_modes = 1,
+ .lccr0 = 0x022008B8,
+ .lccr3 = 0xC130FF13,
-+ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_backlight_power = &ezx_backlight_power,
+ .pxafb_lcd_power = &ezx_lcd_power,
+};
+
@@ -933,7 +933,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+ /* Maintainer: OpenEZX Team (www.openezx.org) */
+ .phys_io = 0x40000000,
+ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
-+ .boot_params = 0xa0000100,
++ .boot_params = 0xa0000200,
+ .map_io = pxa_map_io,
+ .init_irq = pxa_init_irq,
+ .timer = &pxa_timer,
@@ -942,7 +942,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-28 20:54:07.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-09-23 11:19:52.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e6.c - Code specific to E6 GSM Phone.
@@ -990,7 +990,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+ .num_modes = 1,
+ .lccr0 = 0x022008B8,
+ .lccr3 = 0xC130FF13,
-+ .pxafb_backlight_power = ezx_backlight_power,
++ .pxafb_backlight_power = &ezx_backlight_power,
+ .pxafb_lcd_power = &ezx_lcd_power,
+};
+
@@ -1008,7 +1008,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+ /* Maintainer: OpenEZX Team (www.openezx.org) */
+ .phys_io = 0x40000000,
+ .io_pg_offst = (io_p2v(0x40000000) >> 18) & 0xfffc,
-+ .boot_params = 0xa0000100,
++ .boot_params = 0xa0000200,
+ .map_io = pxa_map_io,
+ .init_irq = pxa_init_irq,
+ .timer = &pxa_timer,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
index 77c79fd107..293251423c 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c 2007-09-11 20:14:33.000000000 -0300
-@@ -0,0 +1,267 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c 2007-09-23 09:31:23.000000000 -0300
+@@ -0,0 +1,272 @@
+/*
+ * EZX EOC Driver for Motorola EZX phones
+ *
@@ -32,6 +32,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+
+#define EOC_REG_ADDR_SIZE 1
+#define EOC_REG_DATA_SIZE 3
++#define I2C_DRIVERID_EOC 2100
+
+struct ezx_eoc_platform_data *pdata;
+static int eoc_func = EOC_FUNC_USB_NET;
@@ -57,7 +58,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+ .driver = {
+ .name = (char *)eoc_i2c_driver_name,
+ },
-+ .id = I2C_DRIVERID_EEPROM,
++ .id = I2C_DRIVERID_EOC,
+ .attach_adapter = ezx_eoc_attach_adapter,
+ .detach_client = ezx_eoc_detach_client,
+};
@@ -154,10 +155,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+ }
+}
+
-+
++int x = 0;
+static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter)
+{
-+ return i2c_probe(adapter, &addr_data, ezx_eoc_detect);
++ if (!x) {
++ x++;
++ return i2c_probe(adapter, &addr_data, ezx_eoc_detect);
++ }
++ return -1;
+}
+
+/* This function is called by i2c_probe */
@@ -210,11 +215,11 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+ ret = i2c_add_driver(&eoc_i2c_driver);
+ if (ret != 0)
+ return -EINVAL;
-+
-+ /*
++
++ /*
+ * I think we should save platform_data and call init and eoc_switch
+ * from ezx_eoc_detect, after client is setup.
-+ * And there is no need for all the "check if initialised" checks if
++ * And there is no need for all the "check if initialised" checks if
+ * you assure that you only call read/write after the client is set.
+ * Probably, this was causing the crash on i2c-core too.
+ * --WM
@@ -267,13 +272,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+MODULE_LICENSE("GPL");
+
+/* doesnt module_init work?? -WM */
-+/*late_initcall(ezx_eoc_init);*/
-+module_init(ezx_eoc_init);
++late_initcall(ezx_eoc_init);
++//module_init(ezx_eoc_init);
+module_exit(ezx_eoc_exit);
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h 2007-09-09 21:46:27.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h 2007-09-22 14:12:05.000000000 -0300
@@ -0,0 +1,33 @@
+/*
+ * linux/arch/arm/mach-pxa/ezx-eoc.h
@@ -310,8 +315,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h
+#endif /* __EZX_EOC_H__ */
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-09 21:46:27.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-09 21:46:27.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-22 14:12:05.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-22 14:12:05.000000000 -0300
@@ -108,6 +108,12 @@
config EZX_PCAP
bool "PCAP Support"
@@ -327,8 +332,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
depends on EZX_PCAP
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-09 21:46:27.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-09 21:46:27.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-22 14:12:05.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-22 14:12:05.000000000 -0300
@@ -27,6 +27,7 @@
obj-$(CONFIG_EZX_BP) += ezx-bp.o
obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
index ff3413f062..05748e681c 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-06-28 19:44:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-06-28 19:44:58.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pxa27x.c 2007-09-21 23:57:40.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pxa27x.c 2007-09-21 23:57:49.000000000 -0300
@@ -22,6 +22,10 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/ohci.h>
@@ -29,8 +29,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/pxa27x.c
}
Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-06-28 19:44:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-06-28 19:44:58.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/pm.c 2007-09-21 23:57:40.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/pm.c 2007-09-21 23:57:49.000000000 -0300
@@ -24,6 +24,10 @@
#include <asm/arch/lubbock.h>
#include <asm/mach/time.h>
@@ -58,8 +58,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/pm.c
RESTORE(GPDR0); RESTORE(GPDR1); RESTORE(GPDR2);
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-28 19:44:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-28 19:44:58.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-09-21 23:57:48.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-09-22 00:07:34.000000000 -0300
@@ -19,6 +19,7 @@
#include <asm/arch/pxa-regs.h>
#include <asm/arch/ohci.h>
@@ -68,49 +68,33 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
#include "generic.h"
-@@ -122,8 +123,69 @@
+@@ -122,8 +123,53 @@
&ezxbp_device,
};
+/* PM */
+extern int bp_handshake_passed(void);
+
-+#define POWER_OFF_TIMEOUT (2*60*HZ)
-+
+static void ezx_reboot_poweroff(char mode)
+{
-+#ifdef CONFIG_EZX_BP
-+ unsigned long start = jiffies;
-+
-+ printk("Waiting for BP to turn off. This can take some time...\n");
+ *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = NO_FLAG;
+ cpu_proc_fin();
+
-+ do {
-+ /*
-+ * Turn off gracefully. Wait BP turn off first, and then
-+ * properly turn off.
-+ */
-+ if (pxa_gpio_get_value(GPIO_BB_WDI) == 0) {
-+ *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = WDI_FLAG;
++#ifdef CONFIG_EZX_BP
++ if (pxa_gpio_get_value(GPIO_BB_WDI) == 0) {
++ *(unsigned long *)(phys_to_virt(BPSIG_ADDR)) = WDI_FLAG;
+
-+ /* reset BP */
-+ pxa_gpio_set_value(GPIO_BB_RESET, 0);
-+ mdelay(1);
-+ pxa_gpio_set_value(GPIO_BB_RESET, 1);
++ /* reset BP */
++ pxa_gpio_set_value(GPIO_BB_RESET, 0);
++ mdelay(1);
++ pxa_gpio_set_value(GPIO_BB_RESET, 1);
+
-+ if (mode == 'z')
-+ arch_reset('h');
-+ break;
-+ }
-+ /* Just turn it off! */
-+ if (!bp_handshake_passed() || !pxa_gpio_get_value(GPIO_BB_WDI2)
-+ || (jiffies - start) >= POWER_OFF_TIMEOUT) {
-+ break;
++ if (mode == 'z') {
++ arch_reset('h');
++ while(1);
+ }
-+ } while(1);
++ }
+#endif
-+
+ if (mode == 'z')
+ /* Panic! Ask PCAP to turn both processors off */
+ pxa_gpio_set_value(GPIO_WDI_AP, 0);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/index.html b/packages/linux/linux-ezx-2.6.21/patches/index.html
index 4d57380e0c..bbbb40d590 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/index.html
+++ b/packages/linux/linux-ezx-2.6.21/patches/index.html
@@ -1,9 +1,10 @@
-<html><head><title>Revision 2047: /trunk/src/kernel-2.6/patches</title></head>
+<html><head><title>Revision 2059: /trunk/src/kernel-2.6/patches</title></head>
<body>
- <h2>Revision 2047: /trunk/src/kernel-2.6/patches</h2>
+ <h2>Revision 2059: /trunk/src/kernel-2.6/patches</h2>
<ul>
<li><a href="../">..</a></li>
<li><a href="Makefile.OpenEZX">Makefile.OpenEZX</a></li>
+ <li><a href="a1200-eoc.patch">a1200-eoc.patch</a></li>
<li><a href="a1200-mci.patch">a1200-mci.patch</a></li>
<li><a href="a1200-pcap.patch">a1200-pcap.patch</a></li>
<li><a href="a1200-ts.patch">a1200-ts.patch</a></li>
@@ -15,6 +16,7 @@
<li><a href="a780-pcap.patch">a780-pcap.patch</a></li>
<li><a href="a780-ts.patch">a780-ts.patch</a></li>
<li><a href="a780-vibrator.patch">a780-vibrator.patch</a></li>
+ <li><a href="asoc-fix-loopback.patch">asoc-fix-loopback.patch</a></li>
<li><a href="asoc-pxa-ssp.patch">asoc-pxa-ssp.patch</a></li>
<li><a href="defconfig-a1200">defconfig-a1200</a></li>
<li><a href="defconfig-a780">defconfig-a780</a></li>
@@ -22,6 +24,10 @@
<li><a href="defconfig-e6">defconfig-e6</a></li>
<li><a href="defconfig-e680">defconfig-e680</a></li>
<li><a href="dmesg-a780.log">dmesg-a780.log</a></li>
+ <li><a href="e6-eoc.patch">e6-eoc.patch</a></li>
+ <li><a href="e6-mci.patch">e6-mci.patch</a></li>
+ <li><a href="e6-pcap.patch">e6-pcap.patch</a></li>
+ <li><a href="e6-ts.patch">e6-ts.patch</a></li>
<li><a href="e680-emu.patch">e680-emu.patch</a></li>
<li><a href="e680-kbd.patch">e680-kbd.patch</a></li>
<li><a href="e680-leds.patch">e680-leds.patch</a></li>
@@ -35,10 +41,13 @@
<li><a href="ezx-core.patch">ezx-core.patch</a></li>
<li><a href="ezx-emu.patch">ezx-emu.patch</a></li>
<li><a href="ezx-enable-stuart.patch">ezx-enable-stuart.patch</a></li>
+ <li><a href="ezx-eoc.patch">ezx-eoc.patch</a></li>
<li><a href="ezx-mtd-map.patch">ezx-mtd-map.patch</a></li>
<li><a href="ezx-pcap.patch">ezx-pcap.patch</a></li>
<li><a href="ezx-pm.patch">ezx-pm.patch</a></li>
<li><a href="ezx-serial-bug-workaround.patch">ezx-serial-bug-workaround.patch</a></li>
+ <li><a href="i2c-core-fix-a1200.patch">i2c-core-fix-a1200.patch</a></li>
+ <li><a href="mtdfix.patch">mtdfix.patch</a></li>
<li><a href="mux-fix-init-errorpath.patch">mux-fix-init-errorpath.patch</a></li>
<li><a href="mux-fix-makefile.patch">mux-fix-makefile.patch</a></li>
<li><a href="mux-fix-tty-driver.patch">mux-fix-tty-driver.patch</a></li>
@@ -53,6 +62,7 @@
<li><a href="patch-2.6.21.4">patch-2.6.21.4</a></li>
<li><a href="pcap-ts.patch">pcap-ts.patch</a></li>
<li><a href="pxa-kbd.patch">pxa-kbd.patch</a></li>
+ <li><a href="pxa27x-udc-fix-a1200.patch">pxa27x-udc-fix-a1200.patch</a></li>
<li><a href="pxa27x-udc-support.2.patch">pxa27x-udc-support.2.patch</a></li>
<li><a href="series">series</a></li>
</ul>
diff --git a/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch
index 9ee87ff903..1dd6edd7c3 100644
--- a/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch
@@ -1,7 +1,8 @@
+This hack hardcodes pxa27x-udc to ether_gadget. This is just a temp workaround.
Index: linux-2.6.21/drivers/usb/gadget/ether.c
===================================================================
---- linux-2.6.21.orig/drivers/usb/gadget/ether.c 2007-08-20 22:05:12.000000000 +0800
-+++ linux-2.6.21/drivers/usb/gadget/ether.c 2007-08-20 22:06:25.000000000 +0800
+--- linux-2.6.21.orig/drivers/usb/gadget/ether.c 2007-09-23 09:32:51.000000000 -0300
++++ linux-2.6.21/drivers/usb/gadget/ether.c 2007-09-23 09:32:52.000000000 -0300
@@ -2697,10 +2697,16 @@
MODULE_LICENSE ("GPL");
@@ -22,8 +23,8 @@ Index: linux-2.6.21/drivers/usb/gadget/ether.c
static void __exit cleanup (void)
Index: linux-2.6.21/drivers/usb/gadget/pxa27x_udc.c
===================================================================
---- linux-2.6.21.orig/drivers/usb/gadget/pxa27x_udc.c 2007-08-20 22:07:31.000000000 +0800
-+++ linux-2.6.21/drivers/usb/gadget/pxa27x_udc.c 2007-08-20 22:07:47.000000000 +0800
+--- linux-2.6.21.orig/drivers/usb/gadget/pxa27x_udc.c 2007-09-23 09:32:51.000000000 -0300
++++ linux-2.6.21/drivers/usb/gadget/pxa27x_udc.c 2007-09-23 09:32:52.000000000 -0300
@@ -2227,6 +2227,8 @@
udc_init_ep(udc);
udc_reinit(udc);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/series b/packages/linux/linux-ezx-2.6.21/patches/series
index ecdc30b5fe..aa95fcbc78 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/series
+++ b/packages/linux/linux-ezx-2.6.21/patches/series
@@ -1,4 +1,5 @@
patch-2.6.21.4
+mtdfix.patch
ezx-core.patch
# ezx-core TODO: should be ezx-common
@@ -25,10 +26,12 @@ ezx-pcap.patch
a780-pcap.patch
e680-pcap.patch
a1200-pcap.patch
+e6-pcap.patch
a780-mci.patch
e680-mci.patch
a1200-mci.patch
+e6-mci.patch
pxa27x-udc-support.2.patch
@@ -36,23 +39,18 @@ ezx-emu.patch
# ezx-emu TODO:
# userspace interface for controling emu
# read adc to find which accessory is plugged
-
a780-emu.patch
e680-emu.patch
+ezx-eoc.patch
+a1200-eoc.patch
+e6-eoc.patch
+
ezx-mtd-map.patch
-# ezx-mtd-map TODO:
-# at least the original partition should go on the ezx-phone.c file
ezx-serial-bug-workaround.patch
-# ezx-serial-bug TODO:
-# does anyone have a phone with this bug?
pxa-kbd.patch
-# pxa-kbd TODO:
-# test multi-key presses
-# ask Harald about driver status/sending mainline
-
a780-kbd.patch
e680-kbd.patch
@@ -60,6 +58,7 @@ pcap-ts.patch
a780-ts.patch
e680-ts.patch
a1200-ts.patch
+e6-ts.patch
ezx-backlight.patch
@@ -83,6 +82,11 @@ mux-fix-tty-driver.patch
mux-linux-2.6.21-fix.patch
#mux-ifdef-ezx-features.patch
#mux_debug.patch
+
+asoc-pxa-ssp.patch
+asoc-fix-loopback.patch
+ezx-asoc.patch
+
# mux_cli TODO:
# merge patches
# try to understand the code and cleanup (painful)
@@ -92,6 +96,8 @@ mux-linux-2.6.21-fix.patch
# can NOT run as module (yet)
# pxa-ohci, ts0710_mux, ts0710_mux_usb, ezx-bp
+# the folowing break too much stuff on other phones.
+# i2c-core-fix-a1200.patch (see ezx-eoc.c)
+# pxa27x-udc-fix-a1200.patch (see ezx-a1200.c)
+
# incomplete
-asoc-pxa-ssp.patch
-ezx-asoc.patch
diff --git a/packages/linux/linux-ezx-2.6.21/rokre6/defconfig b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
index 6351d3a45b..7bafcf81f1 100755
--- a/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
+++ b/packages/linux/linux-ezx-2.6.21/rokre6/defconfig
@@ -1003,7 +1003,7 @@ CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
CONFIG_LCD_CLASS_DEVICE=m
-CONFIG_BACKLIGHT_EZX=y
+CONFIG_BACKLIGHT_EZX=N
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
diff --git a/packages/linux/linux-ezx_2.6.21.bb b/packages/linux/linux-ezx_2.6.21.bb
index 3bdd13b19c..2170b04c97 100644
--- a/packages/linux/linux-ezx_2.6.21.bb
+++ b/packages/linux/linux-ezx_2.6.21.bb
@@ -2,15 +2,27 @@ DESCRIPTION = "2.6 Linux Development Kernel for the Motorola GSM phones A780 and
AUTHOR = "The OpenEZX Team <openezx-devel@lists.openezx.org>"
HOMEPAGE = "http://www.openezx.org"
EZX = "ezxdev"
-PR = "${EZX}-r17"
+PR = "${EZX}-r22"
require linux.inc
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+
SRC_URI = " \
${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
file://logo_linux_clut224.ppm \
\
file://patches/patch-2.6.21.4;patch=1 \
+ ${RPSRC}/lzo_kernel-r0.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2-r0.patch;patch=1 \
+ ${RPSRC}/lzo_crypto-r1.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2_lzomode-r0.patch;patch=1 \
+ ${RPSRC}/lzo_jffs2_sysfs-r0.patch;patch=1 \
+ ${RPSRC}/pxa_timerfix-r0.patch;patch=1 \
+ ${RPSRC}/pxa27x_overlay-r5.patch;patch=1 \
+ ${RPSRC}/pxa-linking-bug.patch;patch=1;status=unmergable \
+ ${RPSRC}/mmcsd_large_cards-r0.patch;patch=1;status=hack \
+ ${RPSRC}/mmcsd_no_scr_check-r0.patch;patch=1;status=hack \
file://patches/ezx-core.patch;patch=1 \
file://patches/ezx-bp.patch;patch=1 \
file://patches/ezx-pm.patch;patch=1 \
@@ -25,6 +37,9 @@ SRC_URI = " \
file://patches/e6-mci.patch;patch=1 \
file://patches/pxa27x-udc-support.2.patch;patch=1 \
file://patches/ezx-emu.patch;patch=1 \
+ file://patches/ezx-eoc.patch;patch=1 \
+ file://patches/a1200-eoc.patch;patch=1 \
+ file://patches/e6-eoc.patch;patch=1 \
file://patches/a780-emu.patch;patch=1 \
file://patches/e680-emu.patch;patch=1 \
file://patches/ezx-mtd-map.patch;patch=1 \
@@ -32,16 +47,15 @@ SRC_URI = " \
file://patches/pxa-kbd.patch;patch=1 \
file://patches/a780-kbd.patch;patch=1 \
file://patches/e680-kbd.patch;patch=1 \
+ file://patches/a1200-kbd.patch;patch=1 \
file://patches/pcap-ts.patch;patch=1 \
file://patches/a780-ts.patch;patch=1 \
file://patches/e680-ts.patch;patch=1 \
file://patches/a1200-ts.patch;patch=1 \
file://patches/e6-ts.patch;patch=1 \
- file://patches/ezx-eoc.patch;patch=1 \
- file://patches/a1200-eoc.patch;patch=1 \
- file://patches/e6-eoc.patch;patch=1 \
file://patches/a780-flip.patch;patch=1 \
file://patches/e680-locksw.patch;patch=1 \
+ file://patches/a1200-flip.patch;patch=1 \
file://patches/a780-leds.patch;patch=1 \
file://patches/e680-leds.patch;patch=1 \
file://patches/a780-vibrator.patch;patch=1 \
@@ -58,24 +72,19 @@ SRC_URI = " \
file://patches/asoc-fix-loopback.patch;patch=1 \
file://patches/ezx-asoc.patch;patch=1 \
file://patches/mtdfix.patch;patch=1 \
- file://patches/lcd_18BPP_support.diff;patch=1 \
+ file://patches/ezx-backlight.patch;patch=1 \
+ file://patches/pxa27x-udc-fix-a1200.patch;patch=1 \
file://defconfig \
\
"
-BACKLIGHTPATCH = " file://patches/ezx-backlight.patch;patch=1 "
-BACKLIGHTPATCH_rokre6 = ""
-
-SRC_URI += "${BACKLIGHTPATCH}"
-
S = "${WORKDIR}/linux-${PV}"
##############################################################
# kernel image resides on a seperate flash partition (for now)
-#
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
+# But we can flash it from userspace (flash_unlock /dev/mtdX && flash_eraseall /dev/mtdX && flashcp /boot/zImage /dev/mtdX)
+# so lets make a package of it. What about a postinst that flashes the new kernel?
COMPATIBLE_HOST = "arm.*-linux"
COMPATIBLE_MACHINE = '(a780|e680|a1200|rorkre2|rokre6)'
@@ -84,7 +93,7 @@ COMPATIBLE_MACHINE = '(a780|e680|a1200|rorkre2|rokre6)'
#CMDLINE_CON = "console=ttyS2,115200n8 console=tty1 "
CMDLINE_CON = "console=tty1 "
-CMDLINE_ROOT = "root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5"
+CMDLINE_ROOT = "root=/dev/mmcblk0p2 rootfstype=ext2 rootdelay=5"
CMDLINE_NFSROOT = "root=/dev/nfs rootfstype=nfs nfsroot=192.168.0.200:/export/ezx-image rootdelay=5 "
# Uncomment to enable dyntick
#CMDLINE_OTHER = "dyntick=enable"
diff --git a/packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb b/packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb
index 16d5f0e2e6..efdaaaa06a 100644
--- a/packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb
+++ b/packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb
@@ -6,10 +6,11 @@ RPROVIDES_${PN} = matchbox-keyboard
#DEFAULT_PREFERENCE = "-1"
SECTION = "x11"
PV = "0.0+svnr${SRCREV}"
-PR = "r5"
+PR = "r6"
SRC_URI = "svn://svn.o-hand.com/repos/matchbox/trunk;module=matchbox-keyboard;proto=http \
- file://matchbox-keyboard-applet.patch;patch=1;pnum=0 \
+ file://smallscreen-fontsize.patch;patch=1 \
+ file://matchbox-keyboard-applet.patch;patch=1;pnum=0 \
file://80matchboxkeyboard \
file://matchbox-keyboard-hide-delay.patch;patch=1"
diff --git a/packages/meta/slugos-packages.bb b/packages/meta/slugos-packages.bb
index 26b89ff000..6b34fc187a 100644
--- a/packages/meta/slugos-packages.bb
+++ b/packages/meta/slugos-packages.bb
@@ -5,7 +5,7 @@
DESCRIPTION = "Packages that are compatible with the SlugOS firmware"
HOMEPAGE = "http://www.nslu2-linux.org"
LICENSE = "MIT"
-PR = "r35"
+PR = "r36"
CONFLICTS = "db3"
COMPATIBLE_MACHINE = "nslu2"
@@ -37,6 +37,7 @@ SLUGOS_PACKAGES = "\
binutils \
bison \
bluez-utils \
+ bluez-hcidump \
bogofilter \
boost \
bridge-utils \
diff --git a/packages/mplayer/files/makefile-nostrip-svn.patch b/packages/mplayer/files/makefile-nostrip-svn.patch
index 44087e7dca..a1b6a0b43f 100644
--- a/packages/mplayer/files/makefile-nostrip-svn.patch
+++ b/packages/mplayer/files/makefile-nostrip-svn.patch
@@ -1,8 +1,8 @@
Index: trunk/Makefile
===================================================================
---- trunk.orig/Makefile
-+++ trunk/Makefile
-@@ -264,7 +264,7 @@ install-dirs:
+--- trunk.orig/Makefile 2007-06-29 14:48:19.000000000 +0100
++++ trunk/Makefile 2007-06-29 14:48:43.000000000 +0100
+@@ -252,7 +252,7 @@
if test -f $(CONFDIR)/codecs.conf ; then mv -f $(CONFDIR)/codecs.conf $(CONFDIR)/codecs.conf.old ; fi
install-mplayer: mplayer$(EXESUF)
@@ -11,7 +11,7 @@ Index: trunk/Makefile
install-mplayer-man:
for i in $(MAN_LANG); do \
-@@ -277,7 +277,7 @@ install-mplayer-man:
+@@ -265,7 +265,7 @@
done
install-mencoder: mencoder$(EXESUF)
@@ -20,12 +20,3 @@ Index: trunk/Makefile
for i in $(MAN_LANG); do \
if test "$$i" = en ; then \
cd $(MANDIR)/man1 && ln -sf mplayer.1 mencoder.1 ; \
-@@ -299,7 +299,7 @@ install-gui:
- install-vidix:
- $(MAKE) -C libdha install
- mkdir -p $(LIBDIR)/mplayer/vidix
-- $(INSTALL) -m 755 $(INSTALLSTRIP) -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
-+ $(INSTALL) -m 755 -p vidix/drivers/*.so $(LIBDIR)/mplayer/vidix
-
- uninstall:
- -rm -f $(BINDIR)/mplayer$(EXESUF) $(BINDIR)/gmplayer$(EXESUF)
diff --git a/packages/mplayer/files/simple_idct_armv5te.S b/packages/mplayer/files/simple_idct_armv5te.S
new file mode 100644
index 0000000000..3706f3a4ea
--- /dev/null
+++ b/packages/mplayer/files/simple_idct_armv5te.S
@@ -0,0 +1,715 @@
+/*
+ * Simple IDCT
+ *
+ * Copyright (c) 2001 Michael Niedermayer <michaelni@gmx.at>
+ * Copyright (c) 2006 Mans Rullgard <mans@mansr.com>
+ * Copyright (c) 2007 Siarhei Siamashka <ssvb@users.sourceforge.net>
+ *
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+.arch armv5te
+
+/* IMPORTANT: this value should be the same as defined in dsputil.h */
+#define MAX_NEG_CROP 1024
+
+/*
+ * ARM EABI guarantees 8 byte stack alignment, so we can use LDRD instructions
+ * for accessing stack and load two registers per cycle to improve performance
+ * on ARM11 and XScale
+ */
+#ifdef __ARM_EABI__
+#define DWORD_ALIGNED_STACK 1
+#endif
+
+#define W1 22725 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W2 21407 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W3 19266 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W4 16383 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W5 12873 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W6 8867 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define W7 4520 /* cos(i*M_PI/16)*sqrt(2)*(1<<14) + 0.5 */
+#define ROW_SHIFT 11
+#define COL_SHIFT 20
+
+#define W13 (W1 | (W3 << 16))
+#define W26 (W2 | (W6 << 16))
+#define W57 (W5 | (W7 << 16))
+
+#define W22 ((-W2 & 0xFFFF) | (W2 << 16))
+#define W44 ((-W4 & 0xFFFF) | (W4 << 16))
+#define W66 ((-W6 & 0xFFFF) | (W6 << 16))
+
+#define M51 ((-W5 & 0xFFFF) | ((-W1 & 0xFFFF) << 16))
+
+ .text
+
+/*
+ * a local pool with 64-bit constants for 'idct_rows_armv5te' function,
+ * we align it at 16 byte boundary in order to ensure that it does not cross
+ * cache line boundary (occupies only a single cache line)
+ */
+ .balign 16
+w2266idct_rows_armv5te:
+ .long W22
+ .long W66
+w1357idct_rows_armv5te:
+ .long W13
+ .long W57
+
+/*
+ * A rows processing function. Benchmarks on a few video files show that
+ * about 80-90% of uses of this function have all rows empty except for
+ * the row[0].
+ *
+ * On entry:
+ * a1 - row address
+ * lr - return address
+ *
+ * On exit:
+ * a1 - row address
+ *
+ * Registers usage within this function:
+ * a1 - row address
+ * a2 - temporary register
+ * v5, v6, v7, v8 - row data
+ * v1, v2, v3, v4 - A0, A1, A2 and A3 variables
+ * a3, a4 - used for loading constants
+ * ip - temporary register
+ * lr - temporary register, also holds initial row address value
+ * to check end of loop condition
+ */
+ .balign 32
+ .type idct_rows_armv5te, %function
+ .func idct_rows_armv5te
+idct_rows_armv5te:
+ str a1, [sp, #-4]!
+ str lr, [sp, #-4]!
+ mov lr, a1
+ ldrd v7, [a1, #(8 * 16 - 8)]! /* v7 = row[5:4], v8 = row[7:6] */
+1:
+ ldrd v5, [a1, #-8]! /* v5 = row[1:0], v6 = row[3:2] */
+ orrs v1, v7, v8
+ cmpeq v1, v6
+ cmpeq v1, v5, lsr #16
+ bne 2f /* jump to process full row */
+ /* only row[0] is not empty here */
+ mov v5, v5, lsl #19
+ cmp a1, lr
+ orr v5, v5, v5, lsr #16
+ str v5, [a1]
+ str v5, [a1, #4]
+ str v5, [a1, #8]
+ str v5, [a1, #12]
+ ldrned v7, [a1, #-8]! /* v7 = row[5:4], v8 = row[7:6] */
+ bne 1b
+ ldr pc, [sp], #8
+
+2: /* process full row */
+ /* the next code fragment calculates A variables */
+
+ ldr a2, w44 /* a2 = -W4 | (W4 << 16) */
+ ldrd a3, w2266idct_rows_armv5te /* a3 = -W2 | (W2 << 16) */
+ /* a4 = -W6 | (W6 << 16) */
+ mov v1, #(1<<(ROW_SHIFT-1))
+ smlatb v1, a2, v5, v1 /* v1 = W4*row[0]+(1<<(ROW_SHIFT-1)) */
+
+ cmp a1, lr
+
+ smlabb v2, a2, v7, v1 /* v2 = v1 - W4*row[4] */
+ smlatb v1, a2, v7, v1 /* v1 = v1 - W4*row[4] */
+
+ smlabb v3, a4, v6, v2 /* v3 = v2 - W6*row[2] */
+ smlabb v4, a3, v6, v1 /* v4 = v1 - W2*row[2] */
+
+ smlatb v3, a3, v8, v3 /* v3 += W2*row[6] */
+ smlabb v4, a4, v8, v4 /* v4 -= W6*row[6] */
+
+ ldrd a3, w1357idct_rows_armv5te /* a3 = W1 | (W3 << 16) */
+ /* a4 = W5 | (W7 << 16) */
+
+ rsb v2, v3, v2, lsl #1 /* v2 = 2*v2 - v3 */
+ rsb v1, v4, v1, lsl #1 /* v1 = 2*v1 - v4 */
+
+ /* all A variables are now calculated (and stored in v1, v2, v3, v4 registers) */
+
+ smulbt a2, a3, v5 /* b0 = W1*row[1] */
+ smultt ip, a3, v5 /* tmp = W3*row[1] */
+ smultt lr, a4, v6 /* -b1 = W7*row[3] */
+ smlatt a2, a3, v6, a2 /* b0 += W3*row[3] */
+ smlabt lr, a3, v7, lr /* -b1 += W1*row[5] */
+ smlabt a2, a4, v7, a2 /* b0 += W5*row[5] */
+ smlabt lr, a4, v8, lr /* -b1 += W5*row[7] */
+ smlatt a2, a4, v8, a2 /* b0 += W7*row[7] */
+ sub lr, ip, lr /* b1 = -b1 - tmp */
+
+ /* B0 is now calculated (a2), B1 is now calculated (lr) */
+
+ add ip, v1, a2 /* ip = (A0 + B0) */
+ sub a2, v1, a2 /* a2 = (A0 - B0) */
+ mov ip, ip, asr #ROW_SHIFT
+ mov a2, a2, asr #ROW_SHIFT
+ strh ip, [a1, #0] /* row[0] = (A0 + B0) >> ROW_SHIFT */
+ strh a2, [a1, #14] /* row[7] = (A0 - B0) >> ROW_SHIFT */
+
+ ldr v1, m51 /* v1 = ((-W5 & 0xFFFF) | ((-W1 & 0xFFFF) << 16)) */
+
+ add ip, v2, lr /* ip = (A1 + B1) */
+ sub a2, v2, lr /* ip = (A1 - B1) */
+ mov ip, ip, asr #ROW_SHIFT
+ mov a2, a2, asr #ROW_SHIFT
+ strh ip, [a1, #2] /* row[1] = (A1 + B1) >> ROW_SHIFT */
+ strh a2, [a1, #12] /* row[6] = (A1 - B1) >> ROW_SHIFT */
+
+ smulbt a2, a4, v5 /* b2 = W5*row[1] */
+ smultt v2, a4, v5 /* b3 = W7*row[1] */
+ smlatt a2, v1, v6, a2 /* b2 -= W1*row[3] */
+ smlatt v2, a3, v7, v2 /* b3 += W3*row[5] */
+ smlatt a2, a4, v7, a2 /* b2 += W7*row[5] */
+ smlatt v2, v1, v8, v2 /* b3 -= W1*row[7] */
+ smlatt a2, a3, v8, a2 /* b2 += W3*row[7] */
+ smlabt v2, v1, v6, v2 /* b3 -= W5*row[3] */
+
+ /* B2 is now calculated (a2), B3 is now calculated (v2) */
+
+ ldr lr, [sp, #4]
+
+ add ip, v3, a2 /* ip = (A2 + B2) */
+ sub a2, v3, a2 /* a2 = (A2 - B2) */
+ mov ip, ip, asr #ROW_SHIFT
+ mov a2, a2, asr #ROW_SHIFT
+ strh ip, [a1, #4] /* row[2] = (A2 + B2) >> ROW_SHIFT */
+ strh a2, [a1, #10] /* row[5] = (A2 - B2) >> ROW_SHIFT */
+
+ add ip, v4, v2 /* ip = (A3 + B3) */
+ sub a2, v4, v2 /* a2 = (A3 - B3) */
+ mov ip, ip, asr #ROW_SHIFT
+ mov a2, a2, asr #ROW_SHIFT
+ strh ip, [a1, #6] /* row[3] = (A3 + B3) >> ROW_SHIFT */
+ strh a2, [a1, #8] /* row[4] = (A3 - B3) >> ROW_SHIFT */
+
+ ldrned v7, [a1, #-8]! /* v7 = row[5:4], v8 = row[7:6] */
+ bne 1b
+ ldr pc, [sp], #8
+ .endfunc
+
+/******************************************************************************/
+
+/*
+ * a global pool with 32-bit constants (used from all the functions in this module),
+ * we align it at 32 byte boundary in order to ensure that it does not cross cache
+ * line boundary (occupies only a single cache line)
+ */
+ .balign 32
+simple_idct_croptbl_armv5te:
+ .long (ff_cropTbl + MAX_NEG_CROP)
+m51: .long M51
+w44: .long W44
+xxx: .long (((1<<(COL_SHIFT-1))/W4)*W4)
+m7: .long (-W7)
+
+/*
+ * Enforce 8 byte stack alignment if it is not provided by ABI. Used at the beginning
+ * of global functions. If stack is not properly aligned, real return address is
+ * pushed to stack (thus fixing stack alignment) and lr register is set to a thunk
+ * function 'unaligned_return_thunk_armv5te' which is responsible for providing
+ * correct return from the function in this case.
+ */
+ .macro idct_stackalign_armv5te
+#ifndef DWORD_ALIGNED_STACK
+ tst sp, #4
+ strne lr, [sp, #-4]!
+ adrne lr, unaligned_return_thunk_armv5te
+#endif
+ .endm
+
+/*
+ * Process two columns at once.
+ *
+ * Registers usage within this macro:
+ * a1 - column address
+ * a2 - temporary register
+ * A0b (v1), A0t (v2), A1b (v3), A1t (v4), A2b (v5), A2t (v6), A3b (v7), A3t (v8)
+ * B0b (v1), B0t (v2), B1b (v3), B1t (v4), B2b (v5), B2t (v6), B3b (v7), B3t (v8)
+ * a3, a4 - used for loading constants
+ * ip - temporary register
+ * lr - temporary register
+ *
+ * Data on exit ('b' suffix - first column (also bottom 16-bits of a register),
+ * 't' suffix - second column (also top 16-bits of a register)):
+ * A0b, A0t, A1b, A1t, A2b, A2t, A3b, A3t - are returned in stack
+ * B0b, B0t, B1b, B1t, B2b, B2t, B3b, B3t - are returned in v1, v2, v3, v4, v5, v6, v7, v8 registers
+ * a1 - address of the next pair of columns
+ */
+ .macro idct_two_col_armv5te DWORD_CONST_SUFFIX
+ ldr v4, [a1], #4 /* v4 = col_t[0]:col_b[0] */
+ ldr a2, w44 /* a2 = -W4 | (W4 << 16) */
+ ldr v1, xxx /* v1 = (((1<<(COL_SHIFT-1))/W4)*W4) */
+ ldr ip, [a1, #(16*4 - 4)] /* ip = col_t[4]:col_b[4] */
+ ldrd a3, w2266\DWORD_CONST_SUFFIX /* a3 = -W2 | (W2 << 16) */
+ /* a4 = -W6 | (W6 << 16) */
+ smlatt v2, a2, v4, v1 /* A0t = W4 * (col_t[0] + ((1<<(COL_SHIFT-1))/W4)) */
+ smlatb v1, a2, v4, v1 /* A0b = W4 * (col_b[0] + ((1<<(COL_SHIFT-1))/W4)) */
+
+ ldr lr, [a1, #(16*2 - 4)] /* lr = col_t[2]:col_b[2] */
+
+ smlabb v3, a2, ip, v1 /* A1b = A0b - W4*col_b[4] */
+ smlatb v1, a2, ip, v1 /* A0b = A0b + W4*col_b[4] */
+ smlabt v4, a2, ip, v2 /* A1t = A0t - W4*col_t[4] */
+ smlatt v2, a2, ip, v2 /* A0t = A0t + W4*col_t[4] */
+
+ ldr ip, [a1, #(16*6 - 4)] /* ip = col_t[6]:col_b[6] */
+
+ smlabb v5, a4, lr, v3 /* A2b = A1b - W6*col_b[2] */
+ smlabb v7, a3, lr, v1 /* A3b = A0b - W2*col_b[2] */
+ smlabt v6, a4, lr, v4 /* A2t = A1t - W6*col_t[2] */
+ smlabt v8, a3, lr, v2 /* A3t = A0t - W2*col_t[2] */
+
+ ldr lr, [a1, #(16*1 - 4)] /* lr = col_t[1]:col_b[1] */
+
+ smlatb v5, a3, ip, v5 /* A2b += W2*col_b[6] */
+ smlabb v7, a4, ip, v7 /* A3b -= W6*col_b[6] */
+ smlatt v6, a3, ip, v6 /* A2t += W2*col_t[6] */
+ smlabt v8, a4, ip, v8 /* A3t -= W6*col_t[6] */
+
+ ldrd a3, w1357\DWORD_CONST_SUFFIX /* a3 = W1 | (W3 << 16) */
+ /* a4 = W5 | (W7 << 16) */
+
+ rsb v3, v5, v3, lsl #1 /* A1b = 2*A1b - A2b */
+ rsb v1, v7, v1, lsl #1 /* A0b = 2*A0b - A3b */
+ rsb v4, v6, v4, lsl #1 /* A1t = 2*A1t - A2t */
+ rsb v2, v8, v2, lsl #1 /* A0t = 2*A0t - A3t */
+
+ ldr ip, [a1, #(16*5 - 4)] /* ip = col_t[5]:col_b[5] */
+ ldr a2, m51 /* a2 = ((-W5 & 0xFFFF) | ((-W1 & 0xFFFF) << 16)) */
+
+ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8}
+
+ smulbb v1, a3, lr /* B0b = W1*col_b[1] */
+ smulbt v2, a3, lr /* B0t = W1*col_t[1] */
+ smultb v3, a3, lr /* B1b = W3*col_b[1] */
+ smultt v4, a3, lr /* B1t = W3*col_t[1] */
+ smulbb v5, a4, lr /* B2b = W5*col_b[1] */
+ smulbt v6, a4, lr /* B2t = W5*col_t[1] */
+ smultb v7, a4, lr /* B3b = W7*col_b[1] */
+ smultt v8, a4, lr /* B3t = W7*col_t[1] */
+
+ ldr lr, [a1, #(16*7 - 4)] /* lr = col_t[7]:col_b[7] */
+
+ cmp ip, #0
+ beq 2f /* jump probability is typically more than 75% */
+
+ smlabt v2, a4, ip, v2 /* B0t += W5*col_t[5] */
+ smlatt v4, a2, ip, v4 /* B1t -= W1*col_t[5] */
+ smlatt v6, a4, ip, v6 /* B2t += W7*col_t[5] */
+ smlatt v8, a3, ip, v8 /* B3t += W3*col_t[5] */
+ smlabb v1, a4, ip, v1 /* B0b += W5*col_b[5] */
+ smlatb v3, a2, ip, v3 /* B1b -= W1*col_b[5] */
+ smlatb v5, a4, ip, v5 /* B2b += W7*col_b[5] */
+ smlatb v7, a3, ip, v7 /* B3b += W3*col_b[5] */
+2:
+ ldr ip, [a1, #(16*3 - 4)] /* ip = col_t[3]:col_b[3] */
+
+ cmp lr, #0
+ beq 3f /* jump probability is typically more than 90% */
+
+ smlatt v2, a4, lr, v2 /* B0t += W7*col_t[7] */
+ smlabt v4, a2, lr, v4 /* B1t -= W5*col_t[7] */
+ smlatt v6, a3, lr, v6 /* B2t += W3*col_t[7] */
+ smlatt v8, a2, lr, v8 /* B3t -= W1*col_t[7] */
+
+ smlatb v1, a4, lr, v1 /* B0b += W7*col_b[7] */
+ smlabb v3, a2, lr, v3 /* B1b -= W5*col_b[7] */
+ smlatb v5, a3, lr, v5 /* B2b += W3*col_b[7] */
+ smlatb v7, a2, lr, v7 /* B3b -= W1*col_b[7] */
+3:
+ cmp ip, #0
+ beq 4f /* jump probability is typically more than 65% */
+
+ ldr a4, m7
+
+ smlatt v2, a3, ip, v2 /* B0t += W3*col_t[3] */
+ smlatt v6, a2, ip, v6 /* B2t -= W1*col_t[3] */
+ smlabt v8, a2, ip, v8 /* B3t -= W5*col_t[3] */
+ smlabt v4, a4, ip, v4 /* B1t -= W7*col_t[3] */
+
+ smlatb v1, a3, ip, v1 /* B0b += W3*col_b[3] */
+ smlatb v5, a2, ip, v5 /* B2b -= W1*col_b[3] */
+ smlabb v7, a2, ip, v7 /* B3b -= W5*col_b[3] */
+ smlabb v3, a4, ip, v3 /* B1b -= W7*col_b[3] */
+4:
+ .endm
+
+/******************************************************************************/
+
+/*
+ * a local pool with 64-bit constants for 'simple_idct_put_armv5te' function,
+ * we align it at 16 byte boundary in order to ensure that it does not cross
+ * cache line boundary (occupies only a single cache line)
+ */
+ .balign 16
+w2266simple_idct_put_armv5te:
+ .long W22
+ .long W66
+w1357simple_idct_put_armv5te:
+ .long W13
+ .long W57
+
+ .balign 32
+ .global simple_idct_put_armv5te
+ .type simple_idct_put_armv5te, %function
+ .func simple_idct_put_armv5te
+simple_idct_put_armv5te:
+
+ idct_stackalign_armv5te
+
+ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, lr}
+ strd a1, [sp, #-12]!
+
+ mov a1, a3
+ bl idct_rows_armv5te
+
+ add a2, a1, #16
+ strd a1, [sp, #-8]!
+1:
+ idct_two_col_armv5te simple_idct_put_armv5te
+ str a1, [sp, #(0 + 32)]
+ ldrd a3, [sp, #(8 + 32)]
+ ldr lr, simple_idct_croptbl_armv5te
+
+ ldrd a1, [sp], #8
+ add ip, a3, #2
+ str ip, [sp, #(8 + 32 - 8)]
+
+ add ip, a1, v1
+ sub v1, a1, v1
+ add a1, a2, v2
+ sub v2, a2, v2
+ ldrb a1, [lr, a1, asr #COL_SHIFT]
+ ldrb ip, [lr, ip, asr #COL_SHIFT]
+ ldrb v2, [lr, v2, asr #COL_SHIFT]
+ ldrb v1, [lr, v1, asr #COL_SHIFT]
+ orr ip, ip, a1, asl #8
+ ldrd a1, [sp], #8
+ orr v1, v1, v2, asl #8
+ strh ip, [a3], a4
+
+ add ip, a1, v3
+ sub v3, a1, v3
+ add a1, a2, v4
+ sub v4, a2, v4
+ ldrb a1, [lr, a1, asr #COL_SHIFT]
+ ldrb ip, [lr, ip, asr #COL_SHIFT]
+ ldrb v4, [lr, v4, asr #COL_SHIFT]
+ ldrb v3, [lr, v3, asr #COL_SHIFT]
+ orr ip, ip, a1, asl #8
+ ldrd a1, [sp], #8
+ orr v3, v3, v4, asl #8
+ strh ip, [a3], a4
+
+ add ip, a1, v5
+ sub v5, a1, v5
+ add a1, a2, v6
+ sub v6, a2, v6
+ ldrb a1, [lr, a1, asr #COL_SHIFT]
+ ldrb ip, [lr, ip, asr #COL_SHIFT]
+ ldrb v6, [lr, v6, asr #COL_SHIFT]
+ ldrb v5, [lr, v5, asr #COL_SHIFT]
+ orr ip, ip, a1, asl #8
+ ldrd a1, [sp], #8
+ orr v5, v5, v6, asl #8
+ strh ip, [a3], a4
+
+ add ip, a1, v7
+ sub v7, a1, v7
+ add a1, a2, v8
+ sub v8, a2, v8
+ ldrb a1, [lr, a1, asr #COL_SHIFT]
+ ldrb ip, [lr, ip, asr #COL_SHIFT]
+ ldrb v8, [lr, v8, asr #COL_SHIFT]
+ ldrb v7, [lr, v7, asr #COL_SHIFT]
+ orr ip, ip, a1, asl #8
+ strh ip, [a3], a4
+
+ ldrd a1, [sp, #0]
+ orr v7, v7, v8, asl #8
+
+ strh v7, [a3], a4
+ strh v5, [a3], a4
+ cmp a1, a2
+ strh v3, [a3], a4
+ strh v1, [a3], a4
+
+ bne 1b
+
+ add sp, sp, #20
+ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, pc}
+ .endfunc
+
+/******************************************************************************/
+
+/*
+ * a local pool with 64-bit constants for 'simple_idct_add_armv5te' function, we
+ * align it at 16 byte boundary in order to ensure that it does not cross
+ * cache line boundary (occupies only a single cache line)
+ */
+ .balign 16
+w2266simple_idct_add_armv5te:
+ .long W22
+ .long W66
+w1357simple_idct_add_armv5te:
+ .long W13
+ .long W57
+
+ .balign 32
+ .global simple_idct_add_armv5te
+ .type simple_idct_add_armv5te, %function
+ .func simple_idct_add_armv5te
+simple_idct_add_armv5te:
+
+ idct_stackalign_armv5te
+
+ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, lr}
+ strd a1, [sp, #-12]!
+
+ mov a1, a3
+ bl idct_rows_armv5te
+
+ add a2, a1, #16
+ strd a1, [sp, #-8]!
+
+ sub sp, sp, #8
+1:
+ idct_two_col_armv5te simple_idct_add_armv5te
+ ldrd a3, [sp, #(8 + 40)]
+ str a1, [sp, #(0 + 40)]
+
+ ldrd a1, [sp], #8
+ add ip, a3, #2
+ str ip, [sp, #(8 + 40 - 8)]
+
+ add ip, a1, v1
+ sub v1, a1, v1
+ add a1, a2, v2
+ sub v2, a2, v2
+ strd v1, [sp, #(32 - 8)] /* save v1 and v2 to stack in order to use them as temporary registers */
+ ldrb v1, [a3, #1]
+ ldrb v2, [a3]
+ ldr lr, simple_idct_croptbl_armv5te
+ add v1, v1, a1, asr #COL_SHIFT
+ ldrd a1, [sp], #8
+ add ip, v2, ip, asr #COL_SHIFT
+ ldrb v2, [lr, v1]
+ ldrb ip, [lr, ip]
+
+ add v1, a1, v3
+ sub v3, a1, v3
+
+ ldrb a1, [a3, a4]
+ orr ip, ip, v2, asl #8
+ strh ip, [a3], a4
+
+ ldrb v2, [a3, #1]
+
+ add ip, a2, v4
+ sub v4, a2, v4
+ add ip, v2, ip, asr #COL_SHIFT
+ add v1, a1, v1, asr #COL_SHIFT
+ ldrb v2, [lr, ip]
+ ldrb ip, [lr, v1]
+ ldrb v1, [a3, a4]
+ ldrd a1, [sp], #8
+ orr ip, ip, v2, asl #8
+ strh ip, [a3], a4
+
+ ldrb v2, [a3, #1]
+ add ip, a1, v5
+ sub v5, a1, v5
+ add a1, a2, v6
+ sub v6, a2, v6
+ add a1, v2, a1, asr #COL_SHIFT
+ add ip, v1, ip, asr #COL_SHIFT
+ ldrb v2, [lr, a1]
+ ldrb ip, [lr, ip]
+ ldrb v1, [a3, a4]
+ ldrd a1, [sp], #8
+ orr ip, ip, v2, asl #8
+ strh ip, [a3], a4
+
+ ldrb v2, [a3, #1]
+ add ip, a1, v7
+ sub v7, a1, v7
+ add a1, a2, v8
+ sub v8, a2, v8
+ add a1, v2, a1, asr #COL_SHIFT
+ add ip, v1, ip, asr #COL_SHIFT
+ ldrb v2, [lr, a1]
+ ldrb ip, [lr, ip]
+ ldrb v1, [a3, a4]
+ add a2, lr, v7, asr #COL_SHIFT
+ orr ip, ip, v2, asl #8
+ strh ip, [a3], a4
+
+ ldrb v2, [a3, #1]
+ add v8, lr, v8, asr #COL_SHIFT
+ mov v7, a3 /* a good news, now we have two more spare registers v7 and v8 */
+ ldrb ip, [a2, v1]
+ ldrb v8, [v8, v2]
+ ldrb v1, [v7, a4]!
+ ldrb v2, [v7, #1]
+ orr ip, ip, v8, asl #8
+ strh ip, [a3], a4
+
+ ldrb a1, [v7, a4]!
+ ldrb a2, [v7, #1]
+
+ add v6, v2, v6, asr #COL_SHIFT
+ add v5, v1, v5, asr #COL_SHIFT
+ ldrb v6, [lr, v6]
+ ldrb v5, [lr, v5]
+ ldrd v1, [sp, #0] /* restore v1 and v2 that were saved earlier */
+ orr v5, v5, v6, asl #8
+ strh v5, [a3], a4
+ ldrb v5, [v7, a4]!
+ ldrb v6, [v7, #1]
+
+ add v4, a2, v4, asr #COL_SHIFT
+ add v3, a1, v3, asr #COL_SHIFT
+ ldrb v4, [lr, v4]
+ ldrb v3, [lr, v3]
+
+ ldrd a1, [sp, #8]
+ add v2, v6, v2, asr #COL_SHIFT
+ add v1, v5, v1, asr #COL_SHIFT
+ ldrb v2, [lr, v2]
+ ldrb v1, [lr, v1]
+ cmp a1, a2
+ orr v3, v3, v4, asl #8
+ strh v3, [a3], a4
+ orr v1, v1, v2, asl #8
+ strh v1, [a3], a4
+
+ bne 1b
+
+ add sp, sp, #28
+ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, pc}
+ .endfunc
+
+/******************************************************************************/
+
+/*
+ * a local pool with 64-bit constants for 'simple_idct_armv5te' function, we
+ * align it at 16 byte boundary in order to ensure that it does not cross
+ * cache line boundary (occupies only a single cache line)
+ */
+ .balign 16
+w2266simple_idct_armv5te:
+ .long W22
+ .long W66
+w1357simple_idct_armv5te:
+ .long W13
+ .long W57
+
+ .balign 32
+ .global simple_idct_armv5te
+ .type simple_idct_armv5te, %function
+ .func simple_idct_armv5te
+simple_idct_armv5te:
+
+ idct_stackalign_armv5te
+
+ stmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, lr}
+ strd a1, [sp, #-12]!
+
+ bl idct_rows_armv5te
+
+ add a2, a1, #16
+ str a2, [sp, #-8]!
+1:
+ idct_two_col_armv5te simple_idct_armv5te
+
+ ldr lr, [sp, #32]
+
+ ldrd a3, [sp], #8
+
+ cmp lr, a1
+
+ add a2, a3, v1
+ add ip, a4, v2
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*0 - 4)]
+ strh ip, [a1, #(16*0 + 2 - 4)]
+ sub a2, a3, v1
+ sub ip, a4, v2
+ ldrd a3, [sp], #8
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*7 - 4)]
+ strh ip, [a1, #(16*7 + 2 - 4)]
+
+ add a2, a3, v3
+ add ip, a4, v4
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*1 - 4)]
+ strh ip, [a1, #(16*1 + 2 - 4)]
+ sub a2, a3, v3
+ sub ip, a4, v4
+ ldrd a3, [sp], #8
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*6 - 4)]
+ strh ip, [a1, #(16*6 + 2 - 4)]
+
+ add a2, a3, v5
+ add ip, a4, v6
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*2 - 4)]
+ strh ip, [a1, #(16*2 + 2 - 4)]
+ sub a2, a3, v5
+ sub ip, a4, v6
+ ldrd a3, [sp], #8
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*5 - 4)]
+ strh ip, [a1, #(16*5 + 2 - 4)]
+
+ add a2, a3, v7
+ add ip, a4, v8
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*3 - 4)]
+ strh ip, [a1, #(16*3 + 2 - 4)]
+ sub a2, a3, v7
+ sub ip, a4, v8
+ mov a2, a2, asr #COL_SHIFT
+ mov ip, ip, asr #COL_SHIFT
+ strh a2, [a1, #(16*4 - 4)]
+ strh ip, [a1, #(16*4 + 2 - 4)]
+
+ bne 1b
+
+ add sp, sp, #20
+ ldmfd sp!, {v1, v2, v3, v4, v5, v6, v7, v8, pc}
+ .endfunc
+
+/******************************************************************************/
+
+unaligned_return_thunk_armv5te:
+ ldr pc, [sp], #4
diff --git a/packages/mplayer/mplayer_svn.bb b/packages/mplayer/mplayer_svn.bb
index 4a47d744ca..995ed763ff 100644
--- a/packages/mplayer/mplayer_svn.bb
+++ b/packages/mplayer/mplayer_svn.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Open Source multimedia player."
SECTION = "multimedia"
PRIORITY = "optional"
HOMEPAGE = "http://www.mplayerhq.hu/"
-DEPENDS = "virtual/libsdl libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame"
+DEPENDS = "virtual/libsdl libmad zlib libpng jpeg liba52 freetype fontconfig alsa-lib lzo ncurses lame libxv virtual/libx11"
RDEPENDS = "mplayer-common"
LICENSE = "GPL"
SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \
@@ -11,6 +11,7 @@ SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \
file://vo_w100_fb.h \
file://vo_pxa.c \
file://vo_pxa.h \
+ file://simple_idct_armv5te.S \
file://Makefile-codec-cfg.patch;patch=1 \
file://w100-configure-svn.patch;patch=1 \
file://w100-video_out.patch;patch=1 \
@@ -22,52 +23,61 @@ SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \
file://pxa_configure.patch;patch=1 \
file://pxa-video_out.patch;patch=1 "
+# This is required for the collie machine only as all stacks in that
+# machine seem to be set to executable by the toolchain. If someone
+# discovers this is more general than please make this more general
+# ie. for all armv4 machines.
+SRC_URI_append_collie = "file://disable-executable-stack-test.patch;patch=1"
+PACKAGE_ARCH_mplayer_collie = "collie"
+PACKAGE_ARCH_mencoder_collie = "collie"
+
RCONFLICTS_${PN} = "mplayer-atty"
RREPLACES_${PN} = "mplayer-atty"
-PV = "0.0+1.0rc1+svn${SRCDATE}"
-PR = "r1"
+PV = "0.0+1.0rc1+svnr${SRCREV}"
+PR = "r3"
DEFAULT_PREFERENCE = "-1"
PARALLEL_MAKE = ""
-DEPENDS_append_c7x0 = " sharp-aticore-oss"
+DEPENDS_append_c7x0 = " sharp-aticore-oss libw100 "
+DEPENDS_append_hx4700 = " libw100 "
-S = "${WORKDIR}/trunk/"
+S = "${WORKDIR}/trunk"
PACKAGES =+ "mencoder"
-FILES_${PN} = "${bindir}/mplayer"
+FILES_${PN} = "${bindir}/mplayer ${libdir}"
FILES_mencoder = "${bindir}/mencoder"
inherit autotools pkgconfig
EXTRA_OECONF = " \
--prefix=/usr \
- --mandir=${mandir} \
+ --mandir=${mandir} \
--target=${TARGET_SYS} \
- \
- --enable-mencoder \
- --disable-gui \
- --enable-largefiles \
- --disable-linux-devfs \
- --disable-lirc \
- --disable-lircc \
+ \
+ --enable-mencoder \
+ --disable-gui \
+ --enable-largefiles \
+ --disable-linux-devfs \
+ --disable-lirc \
+ --disable-lircc \
--disable-joystick \
--disable-vm \
--disable-xf86keysym \
- --disable-tv \
+ --disable-tv \
--disable-tv-v4l2 \
--disable-tv-bsdbt848 \
- --enable-rtc \
+ --enable-rtc \
--enable-network \
--disable-winsock2 \
- --disable-smb \
+ --disable-smb \
--disable-live \
- --disable-dvdnav \
+ --disable-dvdnav \
--disable-dvdread \
- --disable-dvdread-internal \
- --disable-libdvdcss-internal \
+ --disable-libdvdcss-internal \
+ --disable-dvdread-internal \
--disable-cdparanoia \
--enable-freetype \
--disable-unrarlib \
@@ -86,7 +96,6 @@ EXTRA_OECONF = " \
--enable-jpeg \
--disable-libcdio \
--disable-liblzo \
- --disable-win32 \
--disable-qtx \
--disable-xanim \
--disable-real \
@@ -98,7 +107,7 @@ EXTRA_OECONF = " \
--disable-libavformat_so \
--disable-libpostproc_so \
\
- --enable-tremor-low \
+ --enable-tremor-low \
\
--disable-speex \
--disable-theora \
@@ -109,19 +118,14 @@ EXTRA_OECONF = " \
--disable-toolame \
--disable-twolame \
--disable-xmms \
- --disable-mp3lib \
- --disable-libdts \
+ --disable-mp3lib \
--enable-libmpeg2 \
--disable-musepack \
- --disable-amr_nb \
- --disable-amr_nb-fixed \
- --disable-amr_wb \
- \
+ \
--disable-gl \
- --disable-dga \
--disable-vesa \
--disable-svga \
- --enable-sdl \
+ --enable-sdl \
--disable-aa \
--disable-caca \
--disable-ggi \
@@ -133,12 +137,12 @@ EXTRA_OECONF = " \
--disable-dvbhead \
--disable-mga \
--disable-xmga \
- --disable-xv \
+ --enable-xv \
--disable-xvmc \
--disable-vm \
--disable-xinerama \
- --disable-x11 \
- --enable-fbdev \
+ --enable-x11 \
+ --enable-fbdev \
--disable-mlib \
--disable-3dfx \
--disable-tdfxfb \
@@ -173,18 +177,22 @@ EXTRA_OECONF_append_arm = " --disable-decoder=vorbis_decoder \
EXTRA_OECONF_append_progear = " --disable-sse --disable-3dnow --disable-mmxext --disable-sse2"
#enable support for the ati imageon series (w100 and w3220)
-EXTRA_OECONF_append_c7x0 = " --enable-w100 "
+EXTRA_OECONF_append_c7x0 = " --enable-w100 --enable-imageon "
EXTRA_OECONF_append_hx4700 = " --enable-imageon "
#enable pxa270 overlay support
-EXTRA_OECONF_append_spitz = " --enable-pxa "
-EXTRA_OECONF_append_a780 = " --enable-pxa "
-EXTRA_OECONF_append_magician = " --enable-pxa "
-EXTRA_OECONF_append_htcuniversal = " --enable-pxa "
+EXTRA_OECONF_append_spitz = " --enable-pxa --enable-iwmmxt "
+EXTRA_OECONF_append_akita = " --enable-pxa --enable-iwmmxt "
+EXTRA_OECONF_append_a780 = " --enable-pxa --enable-iwmmxt"
+EXTRA_OECONF_append_magician = " --enable-pxa --enable-iwmmxt"
+EXTRA_OECONF_append_htcuniversal = " --enable-pxa --enable-iwmmxt"
+EXTRA_OECONF_append_palmld = " --enable-pxa --enable-iwmmxt"
#build with support for the iwmmxt instruction support (pxa270 and up)
TARGET_CC_ARCH_spitz = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_spitz = "iwmmxt"
+TARGET_CC_ARCH_akita = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_akita = "iwmmxt"
TARGET_CC_ARCH_a780 = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_a780 = "iwmmxt"
TARGET_CC_ARCH_hx4700 = "-march=iwmmxt -mtune=iwmmxt"
@@ -193,15 +201,23 @@ TARGET_CC_ARCH_magician = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_magician = "iwmmxt"
TARGET_CC_ARCH_htcuniversal = "-march=iwmmxt -mtune=iwmmxt"
PACKAGE_ARCH_htcuniversal = "iwmmxt"
+TARGET_CC_ARCH_palmld = "-march=iwmmxt -mtune=iwmmxt"
+PACKAGE_ARCH_palmld = "iwmmxt"
do_configure() {
cp ${WORKDIR}/vo_w100.c ${S}/libvo
cp ${WORKDIR}/vo_w100_api.h ${S}/libvo
cp ${WORKDIR}/vo_w100_fb.h ${S}/libvo
- cp ${WORKDIR}/vo_pxa.c ${S}/libvo
- cp ${WORKDIR}/vo_pxa.h ${S}/libvo
+ cp ${WORKDIR}/vo_pxa.c ${S}/libvo
+ cp ${WORKDIR}/vo_pxa.h ${S}/libvo
+ cp ${WORKDIR}/simple_idct_armv5te.S ${S}/libavcodec/armv4l/
+
+ sed -i 's|/usr/include|${STAGING_INCDIR}|g' ${S}/configure
+ sed -i 's|/usr/lib|${STAGING_LIBDIR}|g' ${S}/configure
+ sed -i 's|/usr/\S*include[\w/]*||g' ${S}/configure
+ sed -i 's|/usr/\S*lib[\w/]*||g' ${S}/configure
- ./configure ${EXTRA_OECONF}
+ ./configure ${EXTRA_OECONF}
}
do_compile () {
diff --git a/packages/navit/navit_0.0.1.bb b/packages/navit/navit_0.0.1.bb
index 947d2b3ba8..74ce41b78f 100644
--- a/packages/navit/navit_0.0.1.bb
+++ b/packages/navit/navit_0.0.1.bb
@@ -2,13 +2,13 @@ DESCRIPTION = "Navit is a car navigation system with routing engine."
LICENSE = "GPL"
DEPENDS = "glib-2.0 gtk+"
PV = "0.0.1"
-PR = "r1"
+PR = "r2"
inherit autotools
SRC_URI = "${SOURCEFORGE_MIRROR}/navit/navit-${PV}.tar.gz \
file://compile-fix.patch;patch=1"
-EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python"
+EXTRA_OECONF = "--disable-gui-sdl --disable-binding-python --enable-avoid-unaligned --enable-avoid-float"
FILES_${PN}-dbg += "${libdir}/${PN}/*/.debug"
diff --git a/packages/networkmanager/networkmanager.inc b/packages/networkmanager/networkmanager.inc
index e11a52391d..ce819d64ac 100644
--- a/packages/networkmanager/networkmanager.inc
+++ b/packages/networkmanager/networkmanager.inc
@@ -54,13 +54,7 @@ FILES_libnmutil += "${libdir}/libnm-util.so.*"
FILES_libnmglib += "${libdir}/libnm_glib.so.*"
FILES_${PN} += "${datadir} \
- ${sbindir}/* \
- ${bindir}/* \
- ${sysconfdir} \
${libexecdir}"
-FILES_${PN}-dev += "${incdir} \
- ${libdir}/*.a \
- ${libdir}/*.la \
- ${libdir}/pkgconfig"
+FILES_${PN}-dev += " ${datadir}/NetworkManager/gdb-cmd "
diff --git a/packages/openal/.mtn2git_empty b/packages/openal/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openal/.mtn2git_empty
diff --git a/packages/openal/files/.mtn2git_empty b/packages/openal/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/openal/files/.mtn2git_empty
diff --git a/packages/openal/files/void-workaround.patch b/packages/openal/files/void-workaround.patch
new file mode 100644
index 0000000000..c2698a95bb
--- /dev/null
+++ b/packages/openal/files/void-workaround.patch
@@ -0,0 +1,13 @@
+Index: openal-0.0.8/common/include/AL/alc.h
+===================================================================
+--- openal-0.0.8.orig/common/include/AL/alc.h 2007-09-22 19:40:47.000000000 +0200
++++ openal-0.0.8/common/include/AL/alc.h 2007-09-22 19:41:04.000000000 +0200
+@@ -82,7 +82,7 @@
+ typedef double ALCdouble;
+
+ /** void type (for opaque pointers only) */
+-typedef void ALCvoid;
++#define ALCvoid void
+
+
+ /* Enumerant values begin at column 50. No tabs. */
diff --git a/packages/openal/openal_0.0.8.bb b/packages/openal/openal_0.0.8.bb
new file mode 100644
index 0000000000..280c5d75e8
--- /dev/null
+++ b/packages/openal/openal_0.0.8.bb
@@ -0,0 +1,24 @@
+DESCRIPTION = "OpenAL is a cross-platform 3D audio API."
+DEPENDS = "alsa-lib virtual/libsdl libvorbis"
+
+SRC_URI = "http://www.openal.org/openal_webstf/downloads/${PN}-${PV}.tar.gz \
+ file://void-workaround.patch"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = "--enable-alsa --enable-sdl --enable-vorbis --disable-mp3 \
+ --disable-smpeg --disable-arts"
+
+do_configure_append () {
+ sed -i "s/@requirements@/alsa vorbis/" admin/pkgconfig/openal.pc
+}
+
+do_stage () {
+ autotools_stage_all
+}
+
+PACKAGES =+ "libopenal"
+
+FILES_libopenal += "${libdir}/libopenal.so.*"
+FILES_openal-dev += "${bindir}/openal-config"
+FILES_openal = ""
diff --git a/packages/openmoko2/libmokoui2_svn.bb b/packages/openmoko2/libmokoui2_svn.bb
index 86372ae274..50c3928670 100644
--- a/packages/openmoko2/libmokoui2_svn.bb
+++ b/packages/openmoko2/libmokoui2_svn.bb
@@ -1,14 +1,15 @@
SECTION = "openmoko/libs"
DEPENDS = "gtk+"
PV = "0.1.0+svn${SVNREV}"
-PR = "r1"
+PR = "r2"
inherit openmoko2
+do_configure_prepend() {
+ touch gtk-doc.make
+}
+
do_stage() {
autotools_stage_all
}
-
-
-
diff --git a/packages/openmoko2/moko-gtk-engine_svn.bb b/packages/openmoko2/moko-gtk-engine_svn.bb
new file mode 100644
index 0000000000..38bc691c8e
--- /dev/null
+++ b/packages/openmoko2/moko-gtk-engine_svn.bb
@@ -0,0 +1,14 @@
+DESCRIPTION = "Moko GTK+ theme engine"
+SECTION = "openmoko/libs"
+PV = "0.1.0+svn${SVNREV}"
+PR = "r0"
+
+inherit openmoko2
+
+PACKAGES += "moko-gtk-theme"
+FILES_${PN} = "${libdir}/gtk-2.0/*/engines/*.so "
+FILES_${PN}-dev = "${libdir}/gtk-2.0/*/engines/*"
+FILES_${PN}-dbg = "${libdir}/gtk-2.0/*/engines/.debug"
+FILES_moko-gtk-theme = "${datadir}/themes"
+RDEPENDS_${PN} = "moko-gtk-theme"
+
diff --git a/packages/openmoko2/openmoko-session2.bb b/packages/openmoko2/openmoko-session2.bb
index 235ca6ad97..b1f9dae38d 100644
--- a/packages/openmoko2/openmoko-session2.bb
+++ b/packages/openmoko2/openmoko-session2.bb
@@ -4,16 +4,17 @@ SECTION = "x11"
RDEPENDS = "matchbox-common matchbox-applet-startup-monitor matchbox-panel-2"
RDEPENDS += "openmoko-common2 openmoko-today2 openmoko-dialer2"
RCONFLICTS = "openmoko-session"
-PR = "r32"
+PR = "r33"
SRC_URI = "file://etc"
S = ${WORKDIR}
do_install() {
- cp -R ${S}/etc ${D}/etc
- rm -fR ${D}/etc/.svn
- rm -fR ${D}/etc/matchbox/.svn
- chmod -R 755 ${D}/etc
+ install -d ${D}${sysconfdir}
+ cp -R ${S}/etc/* ${D}${sysconfdir}
+ rm -fR ${D}${sysconfdir}/.svn
+ rm -fR ${D}${sysconfdir}/matchbox/.svn
+ chmod -R 755 ${D}${sysconfdir}/
}
pkg_postinst_openmoko-session2 () {
@@ -31,3 +32,6 @@ gconftool-2 --config-source=xml::$D${sysconfdir}/gconf/gconf.xml.defaults --dire
}
PACKAGE_ARCH = "all"
+
+CONFFILES_${PN} = "${sysconfdir}/matchbox/session"
+
diff --git a/packages/opie-taskbar/opie-taskbar-images.inc b/packages/opie-taskbar/opie-taskbar-images.inc
index 769b5ff2c0..2eac502751 100644
--- a/packages/opie-taskbar/opie-taskbar-images.inc
+++ b/packages/opie-taskbar/opie-taskbar-images.inc
@@ -18,7 +18,7 @@ PIXMAP_SIZE_asus730 = "-480x640"
PIXMAP_SIZE_htcuniversal= "-480x640"
PIXMAP_SIZE_hx4700 = "-480x640"
-PACKAGES = "${PN}-480x640 ${PN}-640x480 ${PN}-800x600 ${PN}-600x800 ${PN}-320x240 ${PN}-240x320 ${PN}-320x320"
+PACKAGES = "${PN}-320x480 ${PN}-480x320 ${PN}-480x640 ${PN}-640x480 ${PN}-800x600 ${PN}-600x800 ${PN}-320x240 ${PN}-240x320 ${PN}-320x320"
do_install() {
install -d ${D}${palmtopdir}/pics/launcher
@@ -31,7 +31,7 @@ do_install() {
install -m 0644 ${WORKDIR}/pics/launcher/firstuse.jpg ${D}${palmtopdir}/pics/launcher/firstuse-320x240.jpg
install -m 0644 ${WORKDIR}/pics/launcher/opie-background.jpg ${D}${palmtopdir}/pics/launcher/opie-background-320x240.jpg
- for res in 480x640 640x480 800x600; do
+ for res in 320x480 480x320 480x640 640x480 800x600; do
install -m 0644 ${WORKDIR}/pics/launcher/firstuse-${res}.jpg ${D}${palmtopdir}/pics/launcher/firstuse-${res}.jpg
install -m 0644 ${WORKDIR}/pics/launcher/opie-background-${res}.jpg ${D}${palmtopdir}/pics/launcher/opie-background-${res}.jpg
done
@@ -41,7 +41,7 @@ do_install() {
}
python do_package_prepend () {
- reslist = ['240x320','320x240', '320x320', '480x640','640x480', '800x600','600x800']
+ reslist = ['240x320','320x240', '320x320', '320x480', '480x320', '480x640','640x480', '800x600','600x800']
dir = bb.data.expand('${palmtopdir}/pics/launcher/', d)
ft = bb.data.expand('${palmtopdir}/pics/*/*-%s.*', d)
pn = bb.data.getVar('PN', d, 1)
diff --git a/packages/opie-taskbar/opie-taskbar-images_1.2.3+cvs20070922.bb b/packages/opie-taskbar/opie-taskbar-images_1.2.3+cvs20070922.bb
new file mode 100644
index 0000000000..0905cd5fe3
--- /dev/null
+++ b/packages/opie-taskbar/opie-taskbar-images_1.2.3+cvs20070922.bb
@@ -0,0 +1,5 @@
+require ${PN}.inc
+PR = "r0"
+SRCDATE = "20070922"
+
+SRC_URI = "${HANDHELDS_CVS};module=opie/pics"
diff --git a/packages/pimlico/tasks-0.12/.mtn2git_empty b/packages/pimlico/tasks-0.12/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/pimlico/tasks-0.12/.mtn2git_empty
diff --git a/packages/pimlico/tasks-0.12/tasks-owl.diff b/packages/pimlico/tasks-0.12/tasks-owl.diff
new file mode 100644
index 0000000000..ce1ed9db7e
--- /dev/null
+++ b/packages/pimlico/tasks-0.12/tasks-owl.diff
@@ -0,0 +1,62 @@
+Index: src/gtk/tasks-ui.xml
+===================================================================
+--- src/gtk/tasks-ui.xml (revision 338)
++++ src/gtk/tasks-ui.xml (working copy)
+@@ -7,17 +7,14 @@
+ <menuitem action="EditTask"/>
+ <menuitem action="CompleteTask"/>
+ <separator/>
++ <menuitem action="Undo"/>
++ <menuitem action="Redo"/>
++ <separator/>
+ <menuitem action="DeleteTask"/>
+ <menuitem action="PurgeTasks"/>
+ <separator/>
++ <menuitem action="About"/>
+ <menuitem action="Quit"/>
+ </menu>
+- <menu action="EditMenu">
+- <menuitem action="Undo"/>
+- <menuitem action="Redo"/>
+- </menu>
+- <menu action="HelpMenu">
+- <menuitem action="About"/>
+- </menu>
+ </menubar>
+ </ui>
+Index: src/gtk/main.c
+===================================================================
+--- src/gtk/main.c (revision 338)
++++ src/gtk/main.c (working copy)
+@@ -21,6 +21,7 @@
+ #include <libecal/e-cal.h>
+ #include <glib/gi18n.h>
+ #include <gtk/gtk.h>
++#include <owlwindowmenu.h>
+
+ #include <libkoto/ical-util.h>
+ #include <libkoto/koto-actions.h>
+@@ -564,8 +565,8 @@
+ gtk_window_add_accel_group (GTK_WINDOW (window), gtk_ui_manager_get_accel_group (ui_manager));
+ gtk_ui_manager_ensure_update (ui_manager);
+
+- menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar");
+- gtk_box_pack_start (GTK_BOX (top_box), menu, FALSE, FALSE, 0);
++ menu = gtk_ui_manager_get_widget (ui_manager, "/MenuBar/TasksMenu");
++ owl_set_window_menu_item (GTK_WINDOW (window), GTK_MENU_ITEM (menu));
+
+ box = gtk_vbox_new (FALSE, 4);
+ gtk_container_set_border_width (GTK_CONTAINER (box), 4);
+Index: src/gtk/Makefile.am
+===================================================================
+--- src/gtk/Makefile.am (revision 338)
++++ src/gtk/Makefile.am (working copy)
+@@ -4,7 +4,7 @@
+ bin_PROGRAMS = tasks
+ tasks_CPPFLAGS = -I$(top_srcdir)/
+ tasks_CFLAGS = $(WARN_CFLAGS) $(GTK_CFLAGS) $(ECAL_CFLAGS) $(SEXY_CFLAGS)
+-tasks_LDADD = $(top_builddir)/libkoto/libkoto.a $(GTK_LIBS) $(ECAL_LIBS) $(SEXY_LIBS)
++tasks_LDADD = $(top_builddir)/libkoto/libkoto.a $(GTK_LIBS) $(ECAL_LIBS) $(SEXY_LIBS) -lowl
+
+ tasks_SOURCES = \
+ main.c \
diff --git a/packages/pimlico/tasks_svn.bb b/packages/pimlico/tasks_svn.bb
index b3da6ebe20..5ad983ad97 100644
--- a/packages/pimlico/tasks_svn.bb
+++ b/packages/pimlico/tasks_svn.bb
@@ -2,7 +2,7 @@ require tasks.inc
DEFAULT_PREFERENCE = "-1"
-PV = "0.10+svnr${SRCREV}"
+PV = "0.12+svnr${SRCREV}"
S = "${WORKDIR}/trunk"
SRC_URI = "svn://svn.o-hand.com/repos/${PN};module=trunk;proto=http \
diff --git a/packages/pointercal/files/nokia800/pointercal b/packages/pointercal/files/nokia800/pointercal.broken
index da96ce5a88..da96ce5a88 100644
--- a/packages/pointercal/files/nokia800/pointercal
+++ b/packages/pointercal/files/nokia800/pointercal.broken
diff --git a/packages/pointercal/pointercal_0.0.bb b/packages/pointercal/pointercal_0.0.bb
index a50281b682..4fa8c1cc0e 100644
--- a/packages/pointercal/pointercal_0.0.bb
+++ b/packages/pointercal/pointercal_0.0.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Touchscreen calibration data"
SECTION = "base"
-PR = "r3"
+PR = "r4"
SRC_URI = "file://pointercal"
S = "${WORKDIR}"
diff --git a/packages/ppp/ppp_2.4.3.bb b/packages/ppp/ppp_2.4.3.bb
index 98a7251a7e..71c68c2fb8 100644
--- a/packages/ppp/ppp_2.4.3.bb
+++ b/packages/ppp/ppp_2.4.3.bb
@@ -3,7 +3,7 @@ DESCRIPTION = "Point-to-Point Protocol (PPP) daemon"
HOMEPAGE = "http://samba.org/ppp/"
DEPENDS = "libpcap"
LICENSE = "BSD GPLv2"
-PR = "r2"
+PR = "r3"
SRC_URI = "http://ppp.samba.org/ftp/ppp/ppp-${PV}.tar.gz \
file://makefile.patch;patch=1 \
@@ -28,6 +28,10 @@ inherit autotools
EXTRA_OEMAKE = "STRIPPROG=${STRIP} MANDIR=${D}${datadir}/man/man8 INCDIR=${D}/usr/include LIBDIR=${D}/usr/lib/pppd/${PV} BINDIR=${D}/usr/sbin"
EXTRA_OECONF = "--disable-strip"
+do_stage () {
+ make INCDIR=${STAGING_INCDIR} install-devel
+}
+
do_install_append () {
make install-etcppp ETCDIR=${D}/${sysconfdir}/ppp
mkdir -p ${D}${bindir}/ ${D}${sysconfdir}/init.d
diff --git a/packages/redboot-utils/fis_1.0.bb b/packages/redboot-utils/fis_1.0.bb
index 87246f2717..e1ac56448b 100644
--- a/packages/redboot-utils/fis_1.0.bb
+++ b/packages/redboot-utils/fis_1.0.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Tool to edit the Redboot FIS partition layout from userspace"
-PR = "r4"
+PR = "r5"
-SRC_URI = "svn://svn.nslu2-linux.org/svnroot/fis;module=trunk;proto=http"
+SRC_URI = "svn://svn.nslu2-linux.org/svnroot/fis;module=trunk;proto=http;rev=6"
S="${WORKDIR}/trunk"
export CFLAGS += "--std=c99"