aboutsummaryrefslogtreecommitdiffstats
path: root/packages
diff options
context:
space:
mode:
authorFlorian Boor <florian.boor@kernelconcepts.de>2008-08-14 23:48:23 +0000
committerFlorian Boor <florian.boor@kernelconcepts.de>2008-08-14 23:48:23 +0000
commite9570b88fa18c49a68b5f44bffd7e2abb101f499 (patch)
tree083d8795a6ff13b6950f8da4ba4c507791b39fa2 /packages
parent8e9a327b9c3924807b7c2093d6cc910213720440 (diff)
parent2792ce30ea1b3eb6a32bad578a956557e3040e89 (diff)
downloadopenembedded-e9570b88fa18c49a68b5f44bffd7e2abb101f499.tar.gz
merge of '77de2c054faaf8169bea5553ae2311a39a581403'
and 'fd59ca4a2d1cdb56a15d6a3323721ce78836fe52'
Diffstat (limited to 'packages')
-rw-r--r--packages/angstrom/angstrom-led-config.bb2
-rw-r--r--packages/angstrom/angstrom-led-config/beagleboard/leds4
-rw-r--r--packages/binutils/binutils-avr32.inc8
-rw-r--r--packages/bluez/bluez-utils/hcid.conf4
-rw-r--r--packages/bluez/bluez-utils_3.33.bb2
-rw-r--r--packages/busybox/busybox.inc2
-rw-r--r--packages/busybox/busybox_1.9.2.bb2
-rw-r--r--packages/cdk/.mtn2git_empty0
-rw-r--r--packages/cdk/cdk_5.0-20060507.bb21
-rw-r--r--packages/classpath/classpath.inc8
-rw-r--r--packages/curl/curl-native_7.18.2.bb (renamed from packages/curl/curl-native_7.18.0.bb)0
-rw-r--r--packages/curl/curl-sdk_7.18.2.bb (renamed from packages/curl/curl-sdk_7.18.0.bb)0
-rw-r--r--packages/curl/curl_7.18.2.bb (renamed from packages/curl/curl_7.18.0.bb)0
-rw-r--r--packages/dsplink/codec-engine_2.10.bb8
-rw-r--r--packages/dsplink/dsplink.inc7
-rw-r--r--packages/dsplink/ti-paths.inc8
-rw-r--r--packages/ffmpeg/ffmpeg_git.bb7
-rw-r--r--packages/ffmpeg/omapfbplay_git.bb2
-rw-r--r--packages/freedoom/freedoom_0.6.2.bb27
-rw-r--r--packages/freesmartphone/illume-theme-freesmartphone_git.bb11
-rw-r--r--packages/gcc/gcc-configure-common.inc1
-rw-r--r--packages/ggz/.mtn2git_empty0
-rw-r--r--packages/ggz/ggz-client-libs_0.0.14.1.bb25
-rw-r--r--packages/ggz/libggz_0.0.14.1.bb15
-rw-r--r--packages/gnome/gconf-editor_2.22.0.bb7
-rw-r--r--packages/gnome/gnome-games_2.23.6.bb38
-rw-r--r--packages/gnome/gnome-panel_2.18.1.bb2
-rw-r--r--packages/gnome/gnome-python-desktop/.mtn2git_empty0
-rw-r--r--packages/gnome/gnome-python-desktop_2.23.0.bb21
-rw-r--r--packages/gnome/gnome-system-monitor_2.23.6.bb24
-rw-r--r--packages/gnome/libgtop_2.23.4.bb10
-rw-r--r--packages/gpsbabel/gpsbabel_1.3.5.bb (renamed from packages/gpsbabel/gpsbabel_1.3.3.bb)2
-rw-r--r--packages/gstreamer/gst-ffmpeg_0.10.4.bb3
-rw-r--r--packages/gstreamer/gst-plugins-good_0.10.7.bb7
-rw-r--r--packages/gstreamer/gst-plugins.inc4
-rw-r--r--packages/gtk-webcore/midori_0.0.19.bb5
-rw-r--r--packages/gtkmm/gtkmm_2.12.7.bb5
-rw-r--r--packages/guile/files/configure-lossage.patch28
-rw-r--r--packages/guile/files/gcc4.patch16
-rw-r--r--packages/guile/guile_1.6.4.bb132
-rw-r--r--packages/guile/guile_1.8.5.bb34
-rw-r--r--packages/images/beagleboard-demo-image.bb9
-rw-r--r--packages/images/fso-image.bb1
-rw-r--r--packages/libopie/libopie2/spitz_rotate_fix.patch23
-rw-r--r--packages/libopie/libopie2_1.2.3.bb5
-rw-r--r--packages/libsdl/files/sdl-cdfix.patch11
-rw-r--r--packages/libsdl/libsdl-x11_1.2.11.bb7
-rw-r--r--packages/libsigc++-2.0/libsigc++-2.0_2.2.2.bb21
-rw-r--r--packages/linux/linux-davinci/8250_davinci.patch28
-rw-r--r--packages/linux/linux-davinci_2.6.x+git-davinci.bb1
-rw-r--r--packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig8
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff178
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-gptimer_clear_isrs_on_init25
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable58
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml319
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml513
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml392
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer1238
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-gptimer_use_match_for_tick97
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml245
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml186
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/03-gptimer_match_plus_ovf94
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml167
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug_to_sysrq_q110
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml497
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml456
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml228
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml173
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml96
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml102
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml35
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/defconfig23
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch275
-rw-r--r--packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml894
-rw-r--r--packages/linux/linux-omap2_git.bb27
-rw-r--r--packages/linux/linux-openmoko.inc10
-rw-r--r--packages/linux/linux-openmoko/defconfig-oe48
-rw-r--r--packages/linux/linux-openmoko_2.6.24+git.bb4
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-akita2
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-bootcdx862
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-c7x02
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-hx20002
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-poodle2
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-qemuarm2
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-qemux862
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-spitz2
-rw-r--r--packages/linux/linux-rp-2.6.26/defconfig-zylonite2
-rw-r--r--packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc2
-rw-r--r--packages/lzma/lzma-native_4.17.bb5
-rw-r--r--packages/mysql/mysql_4.1.18.bb4
-rw-r--r--packages/mythtv/gmyth-upnp_0.7.0.bb27
-rw-r--r--packages/mythtv/gmyth_0.7.1.bb23
-rw-r--r--packages/nandlogical/nandlogical_1.0.0.bb4
-rw-r--r--packages/netbase/netbase/om-gta01/interfaces1
-rw-r--r--packages/netbase/netbase/om-gta02/interfaces1
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rw-r--r--packages/numptyphysics/numptyphysics/.mtn2git_empty0
-rw-r--r--packages/numptyphysics/numptyphysics/gcc43.diff50
-rw-r--r--packages/numptyphysics/numptyphysics_svn.bb3
-rw-r--r--packages/openmax/libomxil-bellagio_0.9.0.bb2
-rw-r--r--packages/openmoko2/openmoko-appmanager2_svn.bb5
-rw-r--r--packages/oprofile/oprofile/0.9.4-armv7a.diff451
-rw-r--r--packages/oprofile/oprofile/armv7a.diff81
-rw-r--r--packages/oprofile/oprofile/opjitconv-execvp-fix.diff23
-rw-r--r--packages/oprofile/oprofile_0.9.3.bb2
-rw-r--r--packages/oprofile/oprofile_0.9.4.bb40
-rw-r--r--packages/phoneme/.mtn2git_empty0
-rw-r--r--packages/phoneme/files/.mtn2git_empty0
-rw-r--r--packages/phoneme/files/phoneme-makefile-fix.patch144
-rw-r--r--packages/phoneme/phoneme-advanced-foundation_0.0.b73.bb26
-rw-r--r--packages/phoneme/phoneme-advanced.inc160
-rw-r--r--packages/portaudio/portaudio-v19_20071207.bb27
-rw-r--r--packages/portaudio/portaudio-v19_svn.bb29
-rw-r--r--packages/portaudio/portaudio_0.0.19.bb87
-rw-r--r--packages/povray/povray-3.6.1+3.7.0-beta25b/.mtn2git_empty0
-rw-r--r--packages/povray/povray-3.6.1+3.7.0-beta25b/configure-cross-hack.patch42
-rw-r--r--packages/povray/povray-3.6.1+3.7.0-beta25b/gcc43.diff70
-rw-r--r--packages/povray/povray_3.6.1+3.7.0-beta25b.bb42
-rw-r--r--packages/prboom/prboom_2.4.7.bb25
-rw-r--r--packages/python/python-2.5-manifest.inc5
-rw-r--r--packages/python/python-edje/.mtn2git_empty0
-rw-r--r--packages/python/python-edje/0001-fix-unicode-conversion.patch41
-rw-r--r--packages/python/python-edje_cvs.bb6
-rw-r--r--packages/python/python-ptrace_0.3.2.bb10
-rw-r--r--packages/python/python-pycurl/.mtn2git_empty0
-rw-r--r--packages/python/python-pycurl/no-static-link.patch14
-rw-r--r--packages/python/python-pycurl_7.18.2.bb (renamed from packages/python/python-pycurl_7.16.4.bb)13
-rw-r--r--packages/python/python_2.5.2.bb6
-rw-r--r--packages/qt4/qt_staging.inc4
-rw-r--r--packages/quake/sdlquake/.mtn2git_empty0
-rw-r--r--packages/quake/sdlquake/sdlquake-no-x86-asm.diff35
-rw-r--r--packages/quake/sdlquake_1.0.9.bb21
-rw-r--r--packages/rdesktop/rdesktop_1.6.0.bb13
-rw-r--r--packages/resolvconf/resolvconf_1.41.bb29
-rw-r--r--packages/tasks/task-python-everything.bb3
-rw-r--r--packages/totem/totem-pl-parser_2.23.3.bb15
-rw-r--r--packages/totem/totem/.mtn2git_empty0
-rw-r--r--packages/totem/totem/gst-detect.diff37
-rw-r--r--packages/totem/totem_2.23.4.bb72
-rw-r--r--packages/u-boot/u-boot_git.bb4
-rw-r--r--packages/uclibc/uclibc-0.9.29/uClibc.distro2
-rw-r--r--packages/uclibc/uclibc_0.9.29.bb2
-rw-r--r--packages/udev/udev-124/.mtn2git_empty0
-rw-r--r--packages/udev/udev-124/flags.patch56
-rw-r--r--packages/udev/udev-124/init60
-rw-r--r--packages/udev/udev-124/local.rules31
-rw-r--r--packages/udev/udev-124/noasmlinkage.patch45
-rw-r--r--packages/udev/udev-124/permissions.rules131
-rw-r--r--packages/udev/udev-124/run.rules14
-rw-r--r--packages/udev/udev-124/udev.rules116
-rw-r--r--packages/udev/udev-124/udevtrigger_add_devname_filtering.patch99
-rw-r--r--packages/udev/udev-124/vol_id_ld.patch17
-rw-r--r--packages/udev/udev_124.bb60
-rw-r--r--packages/upnp/libupnp_1.6.5.bb6
-rw-r--r--packages/vala/vala-native_0.3.4.bb5
-rw-r--r--packages/vala/vala_0.3.4.bb15
-rw-r--r--packages/x-load/x-load_git.bb4
-rw-r--r--packages/xorg-font/xorg-minimal-fonts.bb7
-rw-r--r--packages/xorg-lib/pixman/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/pixman/pixman-arm.patch310
-rw-r--r--packages/xorg-lib/pixman_0.11.8.bb18
-rw-r--r--packages/xorg-xserver/xorg-xserver-common.inc4
-rw-r--r--packages/xserver-common/files/fixes-fix-fix.patch20
-rw-r--r--packages/xserver-common/xserver-common_1.22.bb3
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common/Xserver6
-rw-r--r--packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb2
166 files changed, 7867 insertions, 796 deletions
diff --git a/packages/angstrom/angstrom-led-config.bb b/packages/angstrom/angstrom-led-config.bb
index 83f5a1211b..36585f0b00 100644
--- a/packages/angstrom/angstrom-led-config.bb
+++ b/packages/angstrom/angstrom-led-config.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Configuration files for runtime LED configuration"
#PV = "${DISTRO_VERSION}"
-PR = "r1"
+PR = "r2"
PACKAGE_ARCH = "${MACHINE_ARCH}"
inherit update-rc.d
diff --git a/packages/angstrom/angstrom-led-config/beagleboard/leds b/packages/angstrom/angstrom-led-config/beagleboard/leds
index 19c73ebcf3..4a567996ee 100644
--- a/packages/angstrom/angstrom-led-config/beagleboard/leds
+++ b/packages/angstrom/angstrom-led-config/beagleboard/leds
@@ -1,3 +1,3 @@
#file format: name trigger
-beagleboard::led0 mmc0
-beagleboard::led1 nand-disk
+beagleboard::usr0 mmc0
+beagleboard::usr1 nand-disk
diff --git a/packages/binutils/binutils-avr32.inc b/packages/binutils/binutils-avr32.inc
index 2767494940..bbae784011 100644
--- a/packages/binutils/binutils-avr32.inc
+++ b/packages/binutils/binutils-avr32.inc
@@ -18,6 +18,14 @@ do_avr32_reconf () {
do_avr32_configure_bfd () {
if test ${TARGET_ARCH} == avr32; then
+ # fix Makefile brokenness due to unmatched single quotes
+ (cd ${B} && sed -i -e "s,'CC=ccache,'CC=${CC}'," Makefile)
+ # *_alias options are not supported in binutils 2.17 and need
+ # to be removed
+ (cd ${B} && sed -i -e "s,'host_alias=.*',," Makefile)
+ (cd ${B} && sed -i -e "s,'build_alias=.*',," Makefile)
+ (cd ${B} && sed -i -e "s,'target_alias=*.',," Makefile)
+
(cd ${B} && make configure-bfd) || die "Error running 'make configure-bfd'"
(cd ${B}/bfd && make headers) || die "Error running 'make headers'"
fi
diff --git a/packages/bluez/bluez-utils/hcid.conf b/packages/bluez/bluez-utils/hcid.conf
index bb935aa23d..a7164f6eb0 100644
--- a/packages/bluez/bluez-utils/hcid.conf
+++ b/packages/bluez/bluez-utils/hcid.conf
@@ -21,7 +21,7 @@ options {
pairing multi;
# Default PIN code for incoming connections
- passkey "BlueZ";
+ passkey "1234";
}
# Default settings for HCI devices
@@ -29,7 +29,7 @@ device {
# Local device name
# %d - device id
# %h - host name
- name "BlueZ (%d)";
+ name "%h (%d)";
# Local device class
class 0x120112;
diff --git a/packages/bluez/bluez-utils_3.33.bb b/packages/bluez/bluez-utils_3.33.bb
index e4b5f21a84..dc0ee8e739 100644
--- a/packages/bluez/bluez-utils_3.33.bb
+++ b/packages/bluez/bluez-utils_3.33.bb
@@ -1,5 +1,7 @@
require bluez-utils3.inc
+PR = "r1"
+
# see bluez-utils3.inc for the explanation of these option
EXTRA_OECONF = " \
--enable-bccmd \
diff --git a/packages/busybox/busybox.inc b/packages/busybox/busybox.inc
index 04decf61b2..cc196ad767 100644
--- a/packages/busybox/busybox.inc
+++ b/packages/busybox/busybox.inc
@@ -35,7 +35,7 @@ PACKAGES =+ "${PN}-httpd ${PN}-udhcpd"
# We need this RRECOMMENDS because libc dlopens libgcc
# and shlib mechanism can not detect it because its not
# listed in the NEEDED field.
-RDEPENDS += "libgcc"
+RRECOMMENDS += "libgcc"
FILES_${PN}-httpd = "${sysconfdir}/init.d/busybox-httpd /srv/www"
FILES_${PN}-udhcpd = "${sysconfdir}/init.d/busybox-udhcpd"
diff --git a/packages/busybox/busybox_1.9.2.bb b/packages/busybox/busybox_1.9.2.bb
index c9440e7b4f..37cd2a86be 100644
--- a/packages/busybox/busybox_1.9.2.bb
+++ b/packages/busybox/busybox_1.9.2.bb
@@ -1,5 +1,5 @@
require busybox.inc
-PR = "r1"
+PR = "r2"
SRC_URI = "http://www.busybox.net/downloads/busybox-${PV}.tar.gz \
file://udhcpscript.patch;patch=1 \
diff --git a/packages/cdk/.mtn2git_empty b/packages/cdk/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/cdk/.mtn2git_empty
diff --git a/packages/cdk/cdk_5.0-20060507.bb b/packages/cdk/cdk_5.0-20060507.bb
new file mode 100644
index 0000000000..f3287c7b25
--- /dev/null
+++ b/packages/cdk/cdk_5.0-20060507.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Curses Development Kit"
+HOMEPAGE = "http://invisible-island.net/cdk/"
+SECTION = "devel/libs"
+LICENSE = "MIT"
+
+SRC_URI = "ftp://invisible-island.net/cdk/cdk-${PV}.tgz"
+
+inherit autotools
+
+EXTRA_OEMAKE += 'DOCUMENT_DIR="${D}${datadir}/doc/cdk"'
+
+# FIXME
+do_configure() {
+ gnu-configize
+ oe_runconf
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/classpath/classpath.inc b/packages/classpath/classpath.inc
index cfb9f1c089..cee09857e4 100644
--- a/packages/classpath/classpath.inc
+++ b/packages/classpath/classpath.inc
@@ -30,6 +30,14 @@ EXTRA_OECONF = "\
inherit autotools
+# hack to get config.rpath in, it comes from gettext
+do_configure_prepend () {
+
+ ${@['','cp ${STAGING_DATADIR_NATIVE}/automake-1.10/config.rpath ${S}'][bb.data.getVar('PREFERRED_VERSION_automake-native',d,1) == '1.10']}
+
+}
+
+
do_stage() {
install -d ${STAGING_INCDIR}/classpath
install -m 0644 include/jni* ${STAGING_INCDIR}/classpath
diff --git a/packages/curl/curl-native_7.18.0.bb b/packages/curl/curl-native_7.18.2.bb
index e056ec10c3..e056ec10c3 100644
--- a/packages/curl/curl-native_7.18.0.bb
+++ b/packages/curl/curl-native_7.18.2.bb
diff --git a/packages/curl/curl-sdk_7.18.0.bb b/packages/curl/curl-sdk_7.18.2.bb
index 816fe645bc..816fe645bc 100644
--- a/packages/curl/curl-sdk_7.18.0.bb
+++ b/packages/curl/curl-sdk_7.18.2.bb
diff --git a/packages/curl/curl_7.18.0.bb b/packages/curl/curl_7.18.2.bb
index ae2cff6e10..ae2cff6e10 100644
--- a/packages/curl/curl_7.18.0.bb
+++ b/packages/curl/curl_7.18.2.bb
diff --git a/packages/dsplink/codec-engine_2.10.bb b/packages/dsplink/codec-engine_2.10.bb
index 0e85d38a82..098d0054cd 100644
--- a/packages/dsplink/codec-engine_2.10.bb
+++ b/packages/dsplink/codec-engine_2.10.bb
@@ -18,13 +18,7 @@ SRC_URI = "http://install.tarball.in.source.dir/codec_engine_2_10_01.tar.gz \
S = "${WORKDIR}/codec_engine_2_10_01"
-# Path to the dir where the TI tools are unpacked
-TITOOLSDIR ?= "/OE/TI"
-# Path under TITOOLSDIR where dspbios is unpacked
-TIBIOSDIR ?= "bios_5_32_03"
-TIXDCTOOLSDIR ?= "${TIBIOSDIR}/xdctools"
-# Path under TITOOLSDIR where the dsp toolchain is unpacked
-TICGTOOLSDIR ?= "cg6x_6_1_2"
+require ti-paths.inc
PARALLEL_MAKE = ""
diff --git a/packages/dsplink/dsplink.inc b/packages/dsplink/dsplink.inc
index 2347068379..f303b6e53f 100644
--- a/packages/dsplink/dsplink.inc
+++ b/packages/dsplink/dsplink.inc
@@ -11,12 +11,7 @@ S = "${WORKDIR}/dsplink_1_50/dsplink"
# Needed for buildscripts
export DSPLINK = "${S}"
-# Path to the dir where the TI tools are unpacked
-TITOOLSDIR ?= "/OE/TI"
-# Path under TITOOLSDIR where dspbios is unpacked
-TIBIOSDIR ?= "bios_5_32_03"
-# Path under TITOOLSDIR where the dsp toolchain is unpacked
-TICGTOOLSDIR ?= "cg6x_6_1_2"
+require ti-paths.inc
DSPLINKPLATFORM ?= "Davinci"
diff --git a/packages/dsplink/ti-paths.inc b/packages/dsplink/ti-paths.inc
new file mode 100644
index 0000000000..83cbe683c0
--- /dev/null
+++ b/packages/dsplink/ti-paths.inc
@@ -0,0 +1,8 @@
+# Path to the dir where the TI tools are unpacked
+TITOOLSDIR ?= "/OE/TI"
+# Path under TITOOLSDIR where dspbios is unpacked
+TIBIOSDIR ?= "bios_5_32_03"
+TIXDCTOOLSDIR ?= "${TIBIOSDIR}/xdctools"
+# Path under TITOOLSDIR where the dsp toolchain is unpacked
+TICGTOOLSDIR ?= "cg6x_6_1_2"
+
diff --git a/packages/ffmpeg/ffmpeg_git.bb b/packages/ffmpeg/ffmpeg_git.bb
index 0cbfce233c..1eb3b20ed7 100644
--- a/packages/ffmpeg/ffmpeg_git.bb
+++ b/packages/ffmpeg/ffmpeg_git.bb
@@ -3,18 +3,19 @@ require ffmpeg.inc
DEPENDS += "libgsm"
PV = "0.4.9+${PR}+gitr${SRCREV}"
-PR = "r23"
+PR = "r25"
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_armv5te = "1"
DEFAULT_PREFERENCE_armv6 = "1"
DEFAULT_PREFERENCE_armv7a = "1"
-FFBRANCH_arm = "arm-neon"
+FFBRANCH_arm = "arm"
FFBRANCH ?= "master"
+# When bumping SRCREV make sure you bump PR here and in dependant recipes (gst-ffmpeg, gnash, omxil, etc) to account for SOVERSION changes
SRCREV = "3692b8de9fae73860be636606cb6344f26e28b1a"
-SRCREV_arm = "3c4b8ba71b922be6559fcfea3cb990ea3ded234d"
+SRCREV_arm = "36c4918f7bc8ff6296d38ed0c9a5f1a8785fcd32"
SRC_URI = "git://git.mansr.com/ffmpeg.mru;protocol=git;branch=${FFBRANCH} \
"
diff --git a/packages/ffmpeg/omapfbplay_git.bb b/packages/ffmpeg/omapfbplay_git.bb
index 890ed31e20..25057072c2 100644
--- a/packages/ffmpeg/omapfbplay_git.bb
+++ b/packages/ffmpeg/omapfbplay_git.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Simple ffmpeg-based player that uses the omapfb overlays"
DEPENDS = "bzip2 lame ffmpeg virtual/kernel"
LICENSE = "MIT"
-PR = "r9"
+PR = "r10"
inherit module-base
diff --git a/packages/freedoom/freedoom_0.6.2.bb b/packages/freedoom/freedoom_0.6.2.bb
new file mode 100644
index 0000000000..0a3be04410
--- /dev/null
+++ b/packages/freedoom/freedoom_0.6.2.bb
@@ -0,0 +1,27 @@
+SECTION = "games"
+DESCRIPTION = "The Freedoom project aims at collaboratively creating a Free IWAD file.\
+ Combined with the Free source code, this results in a complete game \
+ based on the Doom engine which is Free Software."
+HOMEPAGE = "http://freedoom.sourceforge.net/"
+PRIORITY = "optional"
+LICENSE = "GPL"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/freedoom/freedoom-iwad-${PV}.zip"
+
+PACKAGE_ARCH = "all"
+FILES_${PN} = "${datadir}/games/doom/*"
+FILES_${PN}-doc = "${datadir}/doc/freedoom/*"
+
+do_install() {
+ install -d ${D}/${datadir}/games/doom
+ install -d ${D}/${datadir}/doc/freedoom
+
+ install -m 0644 ${WORKDIR}/freedoom-iwad-${PV}/doom2.wad ${D}/${datadir}/games/doom/
+ install -m 0644 ${WORKDIR}/freedoom-iwad-${PV}/* ${D}/${datadir}/doc/freedoom
+ rm ${D}/${datadir}/doc/freedoom/*.wad
+
+
+
+
+}
+
diff --git a/packages/freesmartphone/illume-theme-freesmartphone_git.bb b/packages/freesmartphone/illume-theme-freesmartphone_git.bb
index 2d881214a0..3beffce09e 100644
--- a/packages/freesmartphone/illume-theme-freesmartphone_git.bb
+++ b/packages/freesmartphone/illume-theme-freesmartphone_git.bb
@@ -2,11 +2,16 @@ DESCRIPTION = "Illume theme for the freesmartphone.org project"
HOMEPAGE = "http://illume.projects.openmoko.org/"
LICENSE = "MIT/BSD"
PV = "0.0+gitr${SRCREV}"
-PR = "r0"
+PR = "r1"
SRC_URI = "${FREESMARTPHONE_GIT}/artwork.git;protocol=git;branch=master"
S = "${WORKDIR}/git/illume"
+do_compile() {
+ cd illume && ./build.sh && cd ..
+ cd illume_init && ./build.sh && cd ..
+}
+
do_install() {
install -d ${D}${sysconfdir}/enlightenment
install -d ${D}${datadir}/enlightenment/data/themes/
@@ -15,8 +20,8 @@ do_install() {
# Make illume the default profile
echo 'E_PROFILE="-profile illume"' > ${D}${sysconfdir}/enlightenment/default_profile
- install -m 0644 ${S}/illume.edj ${D}${datadir}/enlightenment/data/themes/
- install -m 0644 ${S}/illume_init.edj ${D}${datadir}/enlightenment/data/init/
+ install -m 0644 ${S}/illume/illume.edj ${D}${datadir}/enlightenment/data/themes/
+ install -m 0644 ${S}/illume_init/illume_init.edj ${D}${datadir}/enlightenment/data/init/
}
RPROVIDES_${PN} = "illume-theme"
diff --git a/packages/gcc/gcc-configure-common.inc b/packages/gcc/gcc-configure-common.inc
index 878e2ba1ef..1b3f398789 100644
--- a/packages/gcc/gcc-configure-common.inc
+++ b/packages/gcc/gcc-configure-common.inc
@@ -12,6 +12,7 @@ JAVA_sh3 ?= ""
# gcc 3.x expects 'f77', 4.0 expects 'f95', 4.1 and 4.2 expect 'fortran'
FORTRAN ?= ",f77"
LANGUAGES ?= "c,objc,c++${FORTRAN}${JAVA}"
+LANGUAGES_avr32 = "c,c++${FORTRAN}${JAVA}"
EXTRA_OECONF_BASE ?= ""
EXTRA_OECONF_PATHS ?= ""
diff --git a/packages/ggz/.mtn2git_empty b/packages/ggz/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/ggz/.mtn2git_empty
diff --git a/packages/ggz/ggz-client-libs_0.0.14.1.bb b/packages/ggz/ggz-client-libs_0.0.14.1.bb
new file mode 100644
index 0000000000..df691dc7de
--- /dev/null
+++ b/packages/ggz/ggz-client-libs_0.0.14.1.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = " Client libraries for GamingZone"
+LICENSE = "LGPLv2"
+DEPENDS = "libggz"
+
+SRC_URI = "http://ftp.belnet.be/packages/ggzgamingzone/ggz/${PV}/${PN}-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-libggz-includes=${STAGING_INCDIR} \
+ --with-libggz-libraries=${STAGING_LIBDIR} \
+ "
+
+do_configure_append() {
+ for i in $(find ${S} -name "Makefile") ; do
+ sed -i -e s:'-I /usr/include -I /usr/local/include'::g $i
+ done
+}
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/ggz/libggz_0.0.14.1.bb b/packages/ggz/libggz_0.0.14.1.bb
new file mode 100644
index 0000000000..ff96bd09af
--- /dev/null
+++ b/packages/ggz/libggz_0.0.14.1.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "GGZ Gaming Zone lib"
+LICENSE = "LGPLv2"
+DEPENDS = "gnutls libgcrypt"
+
+SRC_URI = "http://ftp.belnet.be/packages/ggzgamingzone/ggz/${PV}/${PN}-${PV}.tar.gz"
+
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/gnome/gconf-editor_2.22.0.bb b/packages/gnome/gconf-editor_2.22.0.bb
new file mode 100644
index 0000000000..00f7b02544
--- /dev/null
+++ b/packages/gnome/gconf-editor_2.22.0.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "Editor for the gnome registry"
+LICENSE = "GPLv2"
+DEPENDS = "gnome-doc-utils gconf-dbus"
+
+inherit gnome gconf
+
+
diff --git a/packages/gnome/gnome-games_2.23.6.bb b/packages/gnome/gnome-games_2.23.6.bb
new file mode 100644
index 0000000000..61e145a549
--- /dev/null
+++ b/packages/gnome/gnome-games_2.23.6.bb
@@ -0,0 +1,38 @@
+LICENSE = "GPL"
+DEPENDS = "libggz ggz-client-libs python-pygtk gtk+ libgnome libgnomeui librsvg gnome-vfs gconf libglade gnome-common"
+
+PR = "r1"
+
+inherit gnome distutils-base gconf
+
+EXTRA_OECONF = "--with-libggz-includes=${STAGING_INCDIR} \
+ --with-libggz-libraries=${STAGING_LIBDIR} \
+ --with-ggzmod-includes=${STAGING_INCDIR} \
+ --with-ggzmod-libraries=${STAGING_LIBDIR} \
+ --enable-scalable \
+ "
+
+do_configure_prepend() {
+ for i in $(find ${S} -name "Makefile.am") ; do
+ sed -i -e s:help::g $i
+ done
+}
+
+
+FILES_${PN}-doc += " ${datadir}/gnome/help"
+FILES_${PN}-dbg += " ${bindir}/.debug ${libdir}/gnome-games/.debug"
+
+FILES_${PN} += "/var/games \
+ ${datadir}/applications \
+ ${datadir}/g* \
+ ${datadir}/ggz \
+ ${datadir}/icons \
+ ${datadir}/pixmaps \
+ ${sysconfdir}"
+
+PACKAGES =+ "gnome-games-gnometris "
+FILES_gnome-games-gnometris = "${bindir}/gnometris ${datadir}/pixmaps/gnometris ${datadir}/pixmaps/gnome-gtetris.png ${datadir}/applications/gnometris.desktop ${sysconfdir}/gconf/schemas/gnometris.schemas"
+
+PACKAGES =+ "gnome-games-gnomine"
+FILES_gnome-games-gnomine = "${bindir}/gnomine ${datadir}/pixmaps/gnomine ${datadir}/pixmaps/gnome-gnomine.png ${datadir}/applications/gnomine.desktop ${sysconfdir}/gconf/schemas/gnomine.schemas"
+
diff --git a/packages/gnome/gnome-panel_2.18.1.bb b/packages/gnome/gnome-panel_2.18.1.bb
index 59c6f3e6e0..933be7f811 100644
--- a/packages/gnome/gnome-panel_2.18.1.bb
+++ b/packages/gnome/gnome-panel_2.18.1.bb
@@ -1,5 +1,5 @@
LICENSE = "GPL"
-DEPENDS = "libwnck orbit2 gtk+ libgnome libgnomeui gnome-desktop libglade gnome-menus"
+DEPENDS = "startup-notification libwnck orbit2 gtk+ libgnome libgnomeui gnome-desktop libglade gnome-menus"
PR = "r1"
diff --git a/packages/gnome/gnome-python-desktop/.mtn2git_empty b/packages/gnome/gnome-python-desktop/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gnome/gnome-python-desktop/.mtn2git_empty
diff --git a/packages/gnome/gnome-python-desktop_2.23.0.bb b/packages/gnome/gnome-python-desktop_2.23.0.bb
new file mode 100644
index 0000000000..931e1be342
--- /dev/null
+++ b/packages/gnome/gnome-python-desktop_2.23.0.bb
@@ -0,0 +1,21 @@
+LICENSE = "GPL/LGPL"
+DEPENDS = "totem-pl-parser libgtop gnome-panel gnome-desktop eds-dbus python-pygtk"
+
+inherit gnome distutils-base
+
+SRC_URI += "file://acinclude.m4"
+
+do_configure_prepend() {
+ install -m 0644 ${WORKDIR}/acinclude.m4 ${S}/
+}
+
+do_configure_prepend() {
+ sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g ${S}/configure.ac
+}
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN}-dev += "${datadir}/pygtk"
diff --git a/packages/gnome/gnome-system-monitor_2.23.6.bb b/packages/gnome/gnome-system-monitor_2.23.6.bb
new file mode 100644
index 0000000000..0e27be5ffe
--- /dev/null
+++ b/packages/gnome/gnome-system-monitor_2.23.6.bb
@@ -0,0 +1,24 @@
+LICENSE = "GPLv2"
+DEPENDS = "libgtop gtkmm glibmm libnotify libgnomeui gnome-panel gnome-doc-utils libwnck gtk+ gnome-keyring libglade hal dbus-glib "
+
+inherit gnome
+
+do_configure_prepend() {
+ sed -i -e s:help::g ${S}/Makefile.am
+}
+
+
+PACKAGES =+ "${PN}-applets"
+
+FILES_${PN}-applets = "${bindir}/*applet* \
+ ${libdir}/bonobo/servers \
+ ${datadir}/gnome-2.0/ui"
+
+FILES_${PN} += "${datadir}/icons \
+ ${datadir}/dbus-1 \
+ ${datadir}/gnome/autostart \
+ "
+
+FILE_{PN}-doc += "${datadir}/omf \
+ ${datadir}/gnome/help "
+
diff --git a/packages/gnome/libgtop_2.23.4.bb b/packages/gnome/libgtop_2.23.4.bb
new file mode 100644
index 0000000000..02d1d9405c
--- /dev/null
+++ b/packages/gnome/libgtop_2.23.4.bb
@@ -0,0 +1,10 @@
+LICENSE = "LGPL"
+DEPENDS = "glib-2.0"
+
+inherit gnome lib_package
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_stage() {
+ autotools_stage_all
+}
diff --git a/packages/gpsbabel/gpsbabel_1.3.3.bb b/packages/gpsbabel/gpsbabel_1.3.5.bb
index b5ff6a8510..c46b9df81d 100644
--- a/packages/gpsbabel/gpsbabel_1.3.3.bb
+++ b/packages/gpsbabel/gpsbabel_1.3.5.bb
@@ -6,7 +6,7 @@ LICENSE = "GPL"
PR = "r1"
-SRC_URI = "${SOURCEFORGE_MIRROR}/gpsbabel/gpsbabel-${PV}.tar.gz"
+SRC_URI = "http://www.gpsbabel.org/plan9.php?dl=gpsbabel-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/gstreamer/gst-ffmpeg_0.10.4.bb b/packages/gstreamer/gst-ffmpeg_0.10.4.bb
index 5bd5f987b6..aa96026891 100644
--- a/packages/gstreamer/gst-ffmpeg_0.10.4.bb
+++ b/packages/gstreamer/gst-ffmpeg_0.10.4.bb
@@ -4,10 +4,11 @@ PRIORITY = "optional"
LICENSE = "LGPL"
HOMEPAGE = "http://www.gstreamer.net/"
DEPENDS = "ffmpeg gstreamer zlib"
-PR = "r2"
+PR = "r3"
# This uses the systems ffmpeg, which is unsupported, but we can't build the internal one with the current autotools (ab)usage
DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_armv6 = "1"
DEFAULT_PREFERENCE_armv7a = "1"
inherit autotools pkgconfig
diff --git a/packages/gstreamer/gst-plugins-good_0.10.7.bb b/packages/gstreamer/gst-plugins-good_0.10.7.bb
index fb551f5176..ac3a5e73c5 100644
--- a/packages/gstreamer/gst-plugins-good_0.10.7.bb
+++ b/packages/gstreamer/gst-plugins-good_0.10.7.bb
@@ -1,5 +1,10 @@
require gst-plugins.inc
-PR = "r1"
+PR = "r2"
+
+inherit gconf
EXTRA_OECONF += "--with-check=no"
DEPENDS += "gst-plugins-base esound"
+
+PACKAGES =+ "gst-plugin-gconfelements"
+FILES_gst-plugin-gconfelements += "${sysconfdir}/gconf"
diff --git a/packages/gstreamer/gst-plugins.inc b/packages/gstreamer/gst-plugins.inc
index eaba8343f3..177585340d 100644
--- a/packages/gstreamer/gst-plugins.inc
+++ b/packages/gstreamer/gst-plugins.inc
@@ -19,8 +19,8 @@ python populate_packages_prepend () {
gst_libdir = bb.data.expand('${libdir}/gstreamer-${LIBV}', d)
postinst = bb.data.getVar('plugin_postinst', d, 1)
- do_split_packages(d, gst_libdir, '^libgst(.*)\.so$', 'gst-plugin-%s', 'GStreamer plugin for %s', postinst=postinst)
- do_split_packages(d, gst_libdir, '^libgst(.*)\.l?a$', 'gst-plugin-%s-dev', 'GStreamer plugin for %s (development files)')
+ do_split_packages(d, gst_libdir, '^libgst(.*)\.so$', 'gst-plugin-%s', 'GStreamer plugin for %s', postinst=postinst, extra_depends='')
+ do_split_packages(d, gst_libdir, '^libgst(.*)\.l?a$', 'gst-plugin-%s-dev', 'GStreamer plugin for %s (development files)', extra_depends='')
}
ALLOW_EMPTY = "1"
diff --git a/packages/gtk-webcore/midori_0.0.19.bb b/packages/gtk-webcore/midori_0.0.19.bb
new file mode 100644
index 0000000000..ec81d7fd23
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.19.bb
@@ -0,0 +1,5 @@
+require midori.inc
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.bz2"
+
+
diff --git a/packages/gtkmm/gtkmm_2.12.7.bb b/packages/gtkmm/gtkmm_2.12.7.bb
index b8ba69f50e..9ef908db63 100644
--- a/packages/gtkmm/gtkmm_2.12.7.bb
+++ b/packages/gtkmm/gtkmm_2.12.7.bb
@@ -2,3 +2,8 @@ require gtkmm.inc
PR = "r0"
+# Hack! Remove once gtkmm likes libtool 2x
+do_configure() {
+ gnu-configize
+ oe_runconf
+}
diff --git a/packages/guile/files/configure-lossage.patch b/packages/guile/files/configure-lossage.patch
deleted file mode 100644
index da1d0de6e7..0000000000
--- a/packages/guile/files/configure-lossage.patch
+++ /dev/null
@@ -1,28 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- guile-1.6.4/configure.in~configure-lossage
-+++ guile-1.6.4/configure.in
-@@ -462,7 +462,9 @@
- # explicitly to LIBOBJS to make sure that it is translated to
- # `alloca.lo' for libtool later on. This can and should be done more cleanly.
- AC_FUNC_ALLOCA
--if test "$ALLOCA" = "alloca.o"; then AC_LIBOBJ([alloca]); fi
-+if test "$ALLOCA" = "alloca.o"; then
-+ AC_LIBOBJ([alloca])
-+fi
-
- AC_CHECK_MEMBERS([struct stat.st_rdev])
- AC_CHECK_MEMBERS([struct stat.st_blksize])
---- guile-1.6.4/guile-readline/configure.in~configure-lossage
-+++ guile-1.6.4/guile-readline/configure.in
-@@ -2,6 +2,7 @@
-
- AC_INIT
- AC_CONFIG_SRCDIR([readline.c])
-+AC_CONFIG_AUX_DIR([..])
- . $srcdir/../GUILE-VERSION
- PACKAGE=guile-readline
- AM_INIT_AUTOMAKE($PACKAGE, $VERSION, no-define)
diff --git a/packages/guile/files/gcc4.patch b/packages/guile/files/gcc4.patch
deleted file mode 100644
index 2168683ad5..0000000000
--- a/packages/guile/files/gcc4.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Signed off by Michael 'Mickey' Lauer <mickey@Vanille.de>
-#
-
---- guile-1.6.4/libguile/guile.c~gcc4
-+++ guile-1.6.4/libguile/guile.c
-@@ -88,7 +88,7 @@
- {
- #ifdef DYNAMIC_LINKING
- /* libtool automagically inserts this variable into your executable... */
-- extern const scm_lt_dlsymlist lt_preloaded_symbols[];
-+ extern const scm_lt_dlsymlist *lt_preloaded_symbols;
- scm_lt_dlpreload_default (lt_preloaded_symbols);
- #endif
- scm_boot_guile (argc, argv, inner_main, 0);
diff --git a/packages/guile/guile_1.6.4.bb b/packages/guile/guile_1.6.4.bb
deleted file mode 100644
index 092a44c27d..0000000000
--- a/packages/guile/guile_1.6.4.bb
+++ /dev/null
@@ -1,132 +0,0 @@
-DESCRIPTION = "Guile is an interpreter for the Scheme programming language, \
-packaged as a library which can be incorporated into your programs."
-HOMEPAGE = "http://www.gnu.org/software/guile/guile.html"
-SECTION = "devel/scheme"
-DEPENDS = "guile-native"
-LICENSE = "GPL"
-PR = "r1"
-
-SRC_URI = "http://ftp.gnu.org/pub/gnu/guile/guile-${PV}.tar.gz \
- file://configure-lossage.patch;patch=1 \
- file://gcc4.patch;patch=1"
-
-inherit autotools
-
-acpaths = "-I ${S}/guile-config"
-
-do_compile() {
- (cd libguile; oe_runmake CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" LDFLAGS="${BUILD_LDFLAGS}" guile_filter_doc_snarfage)
- oe_runmake preinstguile="`which guile`"
-}
-
-LIBGUILE_HEADERS = "\
-__scm.h \
-alist.h \
-arbiters.h \
-async.h \
-backtrace.h \
-boolean.h \
-chars.h \
-continuations.h \
-coop-defs.h \
-debug-malloc.h \
-debug.h \
-deprecation.h \
-dynl.h \
-dynwind.h \
-environments.h \
-eq.h \
-error.h \
-eval.h \
-evalext.h \
-extensions.h \
-feature.h \
-filesys.h \
-fluids.h \
-fports.h \
-gc.h \
-gdb_interface.h \
-gdbint.h \
-goops.h \
-gsubr.h \
-guardians.h \
-hash.h \
-hashtab.h \
-hooks.h \
-init.h \
-ioext.h \
-iselect.h \
-keywords.h \
-lang.h \
-list.h \
-load.h \
-macros.h \
-mallocs.h \
-modules.h \
-net_db.h \
-numbers.h \
-objects.h \
-objprop.h \
-options.h \
-pairs.h \
-ports.h \
-posix.h \
-print.h \
-procprop.h \
-procs.h \
-properties.h \
-ramap.h \
-random.h \
-rdelim.h \
-read.h \
-regex-posix.h \
-root.h \
-rw.h \
-scmconfig.h \
-scmsigs.h \
-script.h \
-simpos.h \
-smob.h \
-snarf.h \
-socket.h \
-sort.h \
-srcprop.h \
-stackchk.h \
-stacks.h \
-stime.h \
-strings.h \
-strop.h \
-strorder.h \
-strports.h \
-struct.h \
-symbols.h \
-tags.h \
-threads.h \
-throw.h \
-unif.h \
-validate.h \
-values.h \
-variable.h \
-vectors.h \
-version.h \
-vports.h \
-weaks.h \
-"
-
-do_stage() {
- install -d ${STAGING_INCDIR}/libguile
- for i in ${LIBGUILE_HEADERS}; do
- install -m 0644 libguile/$i ${STAGING_INCDIR}/libguile/$i
- done
- install -m 0644 libguile.h ${STAGING_INCDIR}/libguile.h
- install -d ${STAGING_INCDIR}/guile
- install -m 0644 libguile/gh.h ${STAGING_INCDIR}/guile/
- install -d ${STAGING_INCDIR}/guile/srfi
- install -d ${STAGING_INCDIR}/guile-readline
- install -m 0644 guile-readline/readline.h ${STAGING_INCDIR}/guile-readline/
- install -d ${STAGING_DATADIR}/aclocal
- install -m 0644 guile-config/guile.m4 ${STAGING_DATADIR}/aclocal
- oe_libinstall -C libguile -so -a libguile ${STAGING_LIBDIR}
- oe_libinstall -C guile-readline -so -a libguilereadline-v-12 ${STAGING_LIBDIR}
- oe_libinstall -C libguile-ltdl -so -a libguile-ltdl ${STAGING_LIBDIR}
-}
diff --git a/packages/guile/guile_1.8.5.bb b/packages/guile/guile_1.8.5.bb
new file mode 100644
index 0000000000..fa6e696896
--- /dev/null
+++ b/packages/guile/guile_1.8.5.bb
@@ -0,0 +1,34 @@
+DESCRIPTION = "Guile is an interpreter for the Scheme programming language, \
+packaged as a library which can be incorporated into your programs."
+HOMEPAGE = "http://www.gnu.org/software/guile/guile.html"
+SECTION = "devel/scheme"
+DEPENDS = "guile-native"
+LICENSE = "GPL"
+
+PR = "r1"
+
+SRC_URI = "http://ftp.gnu.org/pub/gnu/guile/guile-${PV}.tar.gz \
+ file://configure-fix.patch;patch=1 "
+
+inherit autotools binconfig
+
+acpaths = "-I ${S}/guile-config"
+
+EXTRA_OECONF = " \
+ --without-threads \
+ --without-included-ltdl \
+ "
+
+do_compile() {
+ (cd libguile; oe_runmake CC="${BUILD_CC}" CFLAGS="${BUILD_CFLAGS}" LDFLAGS="${BUILD_LDFLAGS}" guile_filter_doc_snarfage)
+ oe_runmake preinstguile="`which guile`"
+
+ sed -i -e s:${STAGING_DIR_TARGET}::g \
+ -e s:/${TARGET_SYS}::g \
+ guile-1.8.pc
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/images/beagleboard-demo-image.bb b/packages/images/beagleboard-demo-image.bb
index f8000ccdd5..f741e20d45 100644
--- a/packages/images/beagleboard-demo-image.bb
+++ b/packages/images/beagleboard-demo-image.bb
@@ -1,6 +1,6 @@
# Demo image for beagleboard
-XSERVER = "xserver-xorg \
+XSERVER ?= "xserver-xorg \
xf86-input-evdev \
xf86-input-mouse \
xf86-video-fbdev \
@@ -20,13 +20,13 @@ IMAGE_INSTALL = "\
angstrom-gpe-task-settings \
${ANGSTROM_EXTRA_INSTALL} \
angstrom-zeroconf-audio \
- angstrom-led-config \
- gpe-scap \
+ angstrom-led-config \
+ gpe-scap \
psplash \
e-wm exhibit \
xterm xmms epiphany-firefox-replacement \
swfdec-mozilla \
- hicolor-icon-theme gnome-icon-theme \
+ hicolor-icon-theme gnome-icon-theme \
jaaa nmap iperf gnuplot \
abiword \
# gnumeric \
@@ -35,6 +35,7 @@ IMAGE_INSTALL = "\
pidgin \
# irssi \
mplayer omapfbplay \
+ gnome-games \
"
IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
diff --git a/packages/images/fso-image.bb b/packages/images/fso-image.bb
index fb5026db2a..5495af9e1c 100644
--- a/packages/images/fso-image.bb
+++ b/packages/images/fso-image.bb
@@ -57,6 +57,7 @@ AUDIO_INSTALL = "\
alsa-oss \
alsa-state \
alsa-utils-aplay \
+ alsa-utils-amixer \
gst-meta-audio \
gst-plugin-mad \
gst-plugin-modplug \
diff --git a/packages/libopie/libopie2/spitz_rotate_fix.patch b/packages/libopie/libopie2/spitz_rotate_fix.patch
new file mode 100644
index 0000000000..428ec0d4cf
--- /dev/null
+++ b/packages/libopie/libopie2/spitz_rotate_fix.patch
@@ -0,0 +1,23 @@
+--- libopie2/opiecore/device/odevice_zaurus.cpp 30 Jul 2007 19:10:52 -0000 1.53
++++ libopie2/opiecore/device/odevice_zaurus.cpp 8 Aug 2008 23:15:15 -0000
+@@ -760,9 +760,18 @@
+ case Key_Up :
+ case Key_Down :
+ {
+- if (rotation()==Rot90) {
+- newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
++ if (d->m_model == Model_Zaurus_SLC3000) {
++ // This ensures that the cursor keys work correctly and that the
++ // side wheel works as expected when the screen is flipped over
++ if (rotation() == Rot270)
++ newkeycode = Key_Left + ( keycode - Key_Left + 1 ) % 4;
+ }
++ else {
++ if (rotation()==Rot90)
++ newkeycode = Key_Left + ( keycode - Key_Left + 3 ) % 4;
++ }
++ break;
++
+ }
+ break;
+
diff --git a/packages/libopie/libopie2_1.2.3.bb b/packages/libopie/libopie2_1.2.3.bb
index 288b689d52..522fe55f7c 100644
--- a/packages/libopie/libopie2_1.2.3.bb
+++ b/packages/libopie/libopie2_1.2.3.bb
@@ -1,11 +1,12 @@
require ${PN}.inc
-PR = "r4"
+PR = "r5"
SRC_URI = "${HANDHELDS_CVS};tag=${TAG};module=opie/libopie2 \
file://include.pro \
file://gcc-syntax-fix.patch;patch=1 \
file://h4000_and_default_rot.patch;patch=1 \
- file://ipaq_rotate_fix.patch;patch=1"
+ file://ipaq_rotate_fix.patch;patch=1 \
+ file://spitz_rotate_fix.patch;patch=1"
SRC_URI_append_poodle = " file://poodle-2.6-hotkeys.patch;patch=1"
diff --git a/packages/libsdl/files/sdl-cdfix.patch b/packages/libsdl/files/sdl-cdfix.patch
new file mode 100644
index 0000000000..a6a36483d4
--- /dev/null
+++ b/packages/libsdl/files/sdl-cdfix.patch
@@ -0,0 +1,11 @@
+--- /tmp/SDL_syscdrom.c 2008-08-11 21:56:58.000000000 +0200
++++ SDL-1.2.11/src/cdrom/linux/SDL_syscdrom.c 2008-08-11 21:57:07.813198000 +0200
+@@ -51,6 +51,8 @@
+ #ifdef __SVR4
+ #include <sys/cdio.h>
+ #endif
++#include <linux/cdrom.h>
++
+
+ /* Define this to use the alternative getmntent() code */
+ #ifndef __SVR4
diff --git a/packages/libsdl/libsdl-x11_1.2.11.bb b/packages/libsdl/libsdl-x11_1.2.11.bb
index 5b49898c01..5a309c57a8 100644
--- a/packages/libsdl/libsdl-x11_1.2.11.bb
+++ b/packages/libsdl/libsdl-x11_1.2.11.bb
@@ -3,15 +3,16 @@ require libsdl.inc
# extra-keys.patch is missing
DEFAULT_PREFERENCE = "-1"
-PR = "r0"
+PR = "r1"
SRC_URI = "http://www.libsdl.org/release/SDL-${PV}.tar.gz \
file://acinclude.m4 \
file://configure_tweak.patch;patch=1 \
file://pagesize.patch;patch=1 \
- file://kernel-asm-page.patch;patch=1 "
+ file://kernel-asm-page.patch;patch=1 \
+ file://sdl-cdfix.patch;patch=1 "
-EXTRA_OECONF = "--disable-static --disable-debug --disable-cdrom --enable-threads --enable-timers --enable-endian \
+EXTRA_OECONF = "--disable-static --disable-debug --enable-cdrom --enable-threads --enable-timers --enable-endian \
--enable-file --enable-oss --enable-alsa --disable-esd --disable-arts \
--disable-diskaudio --disable-nas --disable-esd-shared --disable-esdtest \
--disable-mintaudio --disable-nasm --enable-video-x11 --disable-video-dga \
diff --git a/packages/libsigc++-2.0/libsigc++-2.0_2.2.2.bb b/packages/libsigc++-2.0/libsigc++-2.0_2.2.2.bb
new file mode 100644
index 0000000000..61d34840c9
--- /dev/null
+++ b/packages/libsigc++-2.0/libsigc++-2.0_2.2.2.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "A library for loose coupling of C++ method calls"
+SECTION = "libs"
+PRIORITY = "optional"
+LICENSE = "GPL LGPL"
+SRC_URI = "ftp://ftp.gnome.org/pub/GNOME/sources/libsigc++/2.2/libsigc++-${PV}.tar.gz \
+ "
+
+S = "${WORKDIR}/libsigc++-${PV}"
+
+inherit autotools
+
+EXTRA_AUTORECONF = "--exclude=autoheader"
+
+FILES_${PN}-dev += "${libdir}/sigc++-*/"
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/linux/linux-davinci/8250_davinci.patch b/packages/linux/linux-davinci/8250_davinci.patch
new file mode 100644
index 0000000000..3625ded357
--- /dev/null
+++ b/packages/linux/linux-davinci/8250_davinci.patch
@@ -0,0 +1,28 @@
+--- linux-2.6/drivers/serial/8250.c 2008-08-06 15:56:53.000000000 -0500
++++ linux-2.6-vanilla/drivers/serial/8250.c 2008-08-07 12:24:29.000000000 -0500
+@@ -1867,7 +1867,6 @@
+ }
+
+ if (is_real_interrupt(up->port.irq)) {
+- unsigned char iir1;
+ /*
+ * Test for UARTs that do not reassert THRE when the
+ * transmitter is idle and the interrupt has already
+@@ -1881,7 +1880,7 @@
+ wait_for_xmitr(up, UART_LSR_THRE);
+ serial_out_sync(up, UART_IER, UART_IER_THRI);
+ udelay(1); /* allow THRE to set */
+- iir1 = serial_in(up, UART_IIR);
++ serial_in(up, UART_IIR);
+ serial_out(up, UART_IER, 0);
+ serial_out_sync(up, UART_IER, UART_IER_THRI);
+ udelay(1); /* allow a working UART time to re-assert THRE */
+@@ -1894,7 +1893,7 @@
+ * If the interrupt is not reasserted, setup a timer to
+ * kick the UART on a regular basis.
+ */
+- if (!(iir1 & UART_IIR_NO_INT) && (iir & UART_IIR_NO_INT)) {
++ if (iir & UART_IIR_NO_INT) {
+ pr_debug("ttyS%d - using backup timer\n", port->line);
+ up->timer.function = serial8250_backup_timeout;
+ up->timer.data = (unsigned long)up;
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 5b5a55aaf3..6560fc9fbb 100644
--- a/packages/linux/linux-davinci_2.6.x+git-davinci.bb
+++ b/packages/linux/linux-davinci_2.6.x+git-davinci.bb
@@ -13,6 +13,7 @@ PR = "r2"
COMPATIBLE_MACHINE = "(davinci-dvevm|davinci-sffsdr)"
SRC_URI = "git://source.mvista.com/git/linux-davinci-2.6.git;protocol=git \
+ file://8250_davinci.patch;patch=1 \
file://defconfig"
SRC_URI_append_davinci-sffsdr = " file://sffsdr.patch;patch=1"
diff --git a/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
index 7c8e756060..e5d3cd1a07 100644
--- a/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
+++ b/packages/linux/linux-handhelds-2.6-2.6.21/h2200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21-hh20
-# Fri Feb 15 01:08:07 2008
+# Thu Aug 7 19:32:15 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -938,7 +938,11 @@ CONFIG_HW_CONSOLE=y
#
# Serial drivers
#
-# CONFIG_SERIAL_8250 is not set
+CONFIG_SERIAL_8250=m
+CONFIG_SERIAL_8250_CS=m
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
#
# Non-8250 serial port support
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff b/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff
new file mode 100644
index 0000000000..5343f3276b
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/01-beagle-cpufreq.diff
@@ -0,0 +1,178 @@
+--- /tmp/board-omap3beagle.h 2008-08-11 15:40:17.000000000 +0200
++++ git/include/asm-arm/arch-omap/board-omap3beagle.h 2008-08-11 15:41:32.433198000 +0200
+@@ -29,5 +29,41 @@
+ #ifndef __ASM_ARCH_OMAP3_BEAGLE_H
+ #define __ASM_ARCH_OMAP3_BEAGLE_H
+
++/* MPU speeds */
++#define S600M 600000000
++#define S550M 550000000
++#define S500M 500000000
++#define S250M 250000000
++#define S125M 125000000
++
++/* IVA speeds */
++#define S430M 430000000
++#define S400M 400000000
++#define S360M 360000000
++#define S180M 180000000
++#define S90M 90000000
++
++/* L3 speeds */
++#define S83M 83000000
++#define S166M 166000000
++
++/* VDD1 OPPS */
++#define VDD1_OPP1 0x1
++#define VDD1_OPP2 0x2
++#define VDD1_OPP3 0x3
++#define VDD1_OPP4 0x4
++#define VDD1_OPP5 0x5
++
++/* VDD2 OPPS */
++#define VDD2_OPP1 0x1
++#define VDD2_OPP2 0x2
++#define VDD2_OPP3 0x3
++
++#define MIN_VDD1_OPP VDD1_OPP1
++#define MAX_VDD1_OPP VDD1_OPP5
++#define MIN_VDD2_OPP VDD2_OPP1
++#define MAX_VDD2_OPP VDD2_OPP3
++
++
+ #endif /* __ASM_ARCH_OMAP3_BEAGLE_H */
+
+--- /tmp/resource34xx.c 2008-08-11 16:11:28.000000000 +0200
++++ git/arch/arm/mach-omap2/resource34xx.c 2008-08-11 16:20:18.803198000 +0200
+@@ -173,7 +173,7 @@
+
+ int set_opp(struct shared_resource *resp, u32 target_level)
+ {
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ unsigned long mpu_freq, l3_freq, tput;
+ int ind;
+ struct bus_throughput_db *tput_db;
+@@ -248,7 +248,7 @@
+ */
+ void init_freq(struct shared_resource *resp)
+ {
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ char *linked_res_name;
+ resp->no_of_users = 0;
+
+@@ -269,7 +269,7 @@
+
+ int set_freq(struct shared_resource *resp, u32 target_level)
+ {
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ unsigned int vdd1_opp;
+
+ if (strcmp(resp->name, "mpu_freq") == 0)
+--- /tmp/clock34xx.c 2008-08-11 15:57:48.000000000 +0200
++++ git/arch/arm/mach-omap2/clock34xx.c 2008-08-11 16:22:43.093198000 +0200
+@@ -773,7 +773,7 @@
+ dpll2_clk = clk_get(NULL, "dpll2_ck");
+ dpll3_clk = clk_get(NULL, "dpll3_ck");
+
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ mpu_speed = dpll1_clk->rate;
+ prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
+ for (; prcm_vdd->speed; prcm_vdd--) {
+@@ -836,7 +836,7 @@
+ return (prcm_config+1)->opp;
+ }
+
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ static void omap3_table_recalc(struct clk *clk)
+ {
+ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
+--- /tmp/board-omap3beagle.c 2008-08-11 15:54:04.000000000 +0200
++++ git/arch/arm/mach-omap2/board-omap3beagle.c 2008-08-11 16:25:11.333198000 +0200
+@@ -39,9 +39,62 @@
+ #include <asm/arch/gpmc.h>
+ #include <asm/arch/nand.h>
+
++#include <asm/arch/clock.h>
++
+ #define GPMC_CS0_BASE 0x60
+ #define GPMC_CS_SIZE 0x30
+
++struct vdd_prcm_config vdd1_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {S125M, VDD1_OPP1, 0},
++ /*OPP2*/
++ {S250M, VDD1_OPP2, 0},
++ /*OPP3*/
++ {S500M, VDD1_OPP3, 0},
++ /*OPP4*/
++ {S550M, VDD1_OPP4, 0},
++ /*OPP5*/
++ {S600M, VDD1_OPP5, 0},
++};
++
++struct vdd_prcm_config vdd2_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {0, VDD2_OPP1, 0},
++ /*OPP2*/
++ {S83M, VDD2_OPP2, 0},
++ /*OPP3*/
++ {S166M, VDD2_OPP3, 0},
++};
++
++struct vdd_prcm_config iva2_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {S90M, VDD1_OPP1, 0},
++ /*OPP2*/
++ {S180M, VDD1_OPP2, 0},
++ /*OPP3*/
++ {S360M, VDD1_OPP3, 0},
++ /*OPP4*/
++ {S400M, VDD1_OPP4, 0},
++ /*OPP5*/
++ {S430M, VDD1_OPP5, 0},
++};
++
++u8 vdd1_volts[MAX_VDD1_OPP] = {
++ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2),
++ * 1.20V (OPP3), 1.27V (OPP4), 1.35 (OPP5)
++ */
++ 0x18, 0x20, 0x30, 0x36, 0x3C
++};
++
++u8 vdd2_volts[MAX_VDD2_OPP] = {
++ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2), 1.15 (OPP3) */
++ 0x18, 0x20, 0x2C
++};
++
++
+ static struct mtd_partition omap3beagle_nand_partitions[] = {
+ /* All the partition sizes are listed in terms of NAND block size */
+ {
+--- /tmp/cpu-omap.c 2008-08-11 15:43:01.000000000 +0200
++++ git/arch/arm/plat-omap/cpu-omap.c 2008-08-11 16:31:24.943198000 +0200
+@@ -47,7 +47,7 @@
+
+ static struct clk *mpu_clk;
+
+-#ifdef CONFIG_MACH_OMAP_3430SDP
++#if defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE)
+ extern struct vdd_prcm_config vdd1_rate_table[];
+ extern struct vdd_prcm_config vdd2_rate_table[];
+ extern struct vdd_prcm_config iva2_rate_table[];
+@@ -127,7 +127,7 @@
+ ret = clk_set_rate(mpu_clk, freqs.new * 1000);
+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
+ #elif defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)\
+- && defined(CONFIG_MACH_OMAP_3430SDP)
++ && (defined(CONFIG_MACH_OMAP_3430SDP) || defined(CONFIG_MACH_OMAP3_BEAGLE))
+ {
+ int ind;
+ for (ind = 1; ind <= MAX_VDD1_OPP; ind++) {
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-gptimer_clear_isrs_on_init b/packages/linux/linux-omap2-git/beagleboard/01-gptimer_clear_isrs_on_init
deleted file mode 100644
index 5123bafe54..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/01-gptimer_clear_isrs_on_init
+++ /dev/null
@@ -1,25 +0,0 @@
-clear
-
-From: Paul Walmsley <paul@pwsan.com>
-
-
----
-
- arch/arm/plat-omap/dmtimer.c | 4 ++++
- 1 files changed, 4 insertions(+), 0 deletions(-)
-
-diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
-index f22506a..e38a11e 100644
---- a/arch/arm/plat-omap/dmtimer.c
-+++ b/arch/arm/plat-omap/dmtimer.c
-@@ -703,6 +703,10 @@ int __init omap_dm_timer_init(void)
- timer->fclk = clk_get(NULL, clk_name);
- }
- #endif
-+ omap_dm_timer_write_status(timer, OMAP_TIMER_INT_OVERFLOW |
-+ OMAP_TIMER_INT_MATCH |
-+ OMAP_TIMER_INT_CAPTURE);
-+
- }
-
- return 0;
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable b/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable
new file mode 100644
index 0000000000..bcf0fa79f8
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/01-make_tick_gptimer_configurable
@@ -0,0 +1,58 @@
+OMAP2/3 GPTIMER: allow system tick GPTIMER to be configurable at build
+
+From: Paul Walmsley <paul@pwsan.com>
+
+Add Kbuild code to allow the builder to select which GPTIMER block to use
+for the Linux clockevents timer. Practical choices at this point are
+GPTIMER1 or GPTIMER12. Both of these timers are in the WKUP powerdomain,
+and so are unaffected by chip power management. GPTIMER1 can use sys_clk
+as a source, for applications where a high-resolution timer is more important
+than power management. GPTIMER12 has the special property that it has
+the secure 32kHz oscillator as its source clock, which may be less prone
+to glitches than the off-chip 32kHz oscillator.
+
+At this point, it appears that most boards are fine with GPTIMER1,
+but Beagle should use GPTIMER12.
+---
+
+ arch/arm/mach-omap2/Kconfig | 16 ++++++++++++++++
+ arch/arm/mach-omap2/timer-gp.c | 2 +-
+ 2 files changed, 17 insertions(+), 1 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/Kconfig b/arch/arm/mach-omap2/Kconfig
+index bb6d695..0002cb6 100644
+--- a/arch/arm/mach-omap2/Kconfig
++++ b/arch/arm/mach-omap2/Kconfig
+@@ -122,3 +122,19 @@ config MACH_OMAP3EVM
+ config MACH_OMAP3_BEAGLE
+ bool "OMAP3 BEAGLE board"
+ depends on ARCH_OMAP3 && ARCH_OMAP34XX
++
++config OMAP_TICK_GPTIMER
++ int "GPTIMER used for system tick timer"
++ depends on ARCH_OMAP2 || ARCH_OMAP3
++ range 1 12
++ default 1
++ help
++ Linux uses one of the twelve on-board OMAP GPTIMER blocks to generate
++ system tick interrupts. The twelve GPTIMERs have slightly
++ different powerdomain, source clock, and security properties
++ (mostly documented in the OMAP3 TRMs) that can affect the selection
++ of which GPTIMER to use. The historical default is GPTIMER1.
++ If CONFIG_OMAP_32K_TIMER is selected, Beagle may require GPTIMER12
++ due to hardware sensitivity to glitches on the OMAP 32kHz clock
++ input.
++
+diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
+index 557603f..ec80af5 100644
+--- a/arch/arm/mach-omap2/timer-gp.c
++++ b/arch/arm/mach-omap2/timer-gp.c
+@@ -99,7 +99,7 @@ static void __init omap2_gp_clockevent_init(void)
+ {
+ u32 tick_rate;
+
+- gptimer = omap_dm_timer_request_specific(1);
++ gptimer = omap_dm_timer_request_specific(CONFIG_OMAP_TICK_GPTIMER);
+ BUG_ON(gptimer == NULL);
+
+ #if defined(CONFIG_OMAP_32K_TIMER)
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml b/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml
new file mode 100644
index 0000000000..b45a81edce
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/01-omap3-cpufreq.eml
@@ -0,0 +1,319 @@
+CPUFreq driver for OMAP3
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/configs/omap_3430sdp_defconfig | 19 +++++++
+ arch/arm/mach-omap2/clock34xx.c | 42 ++++++++++++++++-
+ arch/arm/mach-omap2/resource34xx.c | 6 --
+ arch/arm/plat-omap/cpu-omap.c | 78 ++++++++++++++++++++++++++++++--
+ drivers/cpufreq/cpufreq.c | 2
+ 5 files changed, 136 insertions(+), 11 deletions(-)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.c 2008-08-11
+17:21:57.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c 2008-08-11
+17:36:53.000000000 +0530
+@@ -31,6 +31,7 @@
+ #include <asm/arch/sram.h>
+ #include <asm/div64.h>
+ #include <asm/bitops.h>
++#include <linux/cpufreq.h>
+
+ #include <asm/arch/sdrc.h>
+ #include "clock.h"
+@@ -637,6 +638,35 @@ static void omap3_clkoutx2_recalc(struct
+ */
+ #if defined(CONFIG_ARCH_OMAP3)
+
++#ifdef CONFIG_CPU_FREQ
++static struct cpufreq_frequency_table freq_table[MAX_VDD1_OPP+1];
++
++void omap2_clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
++{
++ struct vdd_prcm_config *prcm;
++ int i = 0;
++
++ prcm = vdd1_rate_table + MAX_VDD1_OPP;
++ for (; prcm->speed; prcm--) {
++ freq_table[i].index = i;
++ freq_table[i].frequency = prcm->speed / 1000;
++ i++;
++ }
++
++ if (i == 0) {
++ printk(KERN_WARNING "%s: failed to initialize frequency \
++ table\n",
++ __func__);
++ return;
++ }
++
++ freq_table[i].index = i;
++ freq_table[i].frequency = CPUFREQ_TABLE_END;
++
++ *table = &freq_table[0];
++}
++#endif
++
+ static struct clk_functions omap2_clk_functions = {
+ .clk_enable = omap2_clk_enable,
+ .clk_disable = omap2_clk_disable,
+@@ -644,6 +674,9 @@ static struct clk_functions omap2_clk_fu
+ .clk_set_rate = omap2_clk_set_rate,
+ .clk_set_parent = omap2_clk_set_parent,
+ .clk_disable_unused = omap2_clk_disable_unused,
++#ifdef CONFIG_CPU_FREQ
++ .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
++#endif
+ };
+
+ /*
+@@ -793,12 +826,11 @@ inline unsigned int get_opp(struct vdd_p
+
+ if (prcm_config->speed <= freq)
+ return prcm_config->opp; /* Return the Highest OPP */
+- for (; prcm_config->speed; prcm_config--) {
++ for (; prcm_config->speed; prcm_config--)
+ if (prcm_config->speed < freq)
+ return (prcm_config+1)->opp;
+ else if (prcm_config->speed == freq)
+ return prcm_config->opp;
+- }
+ /* Return the least OPP */
+ return (prcm_config+1)->opp;
+ }
+@@ -878,6 +910,10 @@ static int omap3_select_table_rate(struc
+ clk_set_rate(dpll1_clk, prcm_vdd->speed);
+ clk_set_rate(dpll2_clk, iva2_rate_table[index].speed);
+ curr_vdd1_prcm_set = prcm_vdd;
++ omap2_clksel_recalc(&mpu_ck);
++ propagate_rate(&mpu_ck);
++ omap2_clksel_recalc(&iva2_ck);
++ propagate_rate(&iva2_ck);
+ #ifndef CONFIG_CPU_FREQ
+ /*Update loops_per_jiffy if processor speed is being changed*/
+ loops_per_jiffy = compute_lpj(loops_per_jiffy,
+@@ -886,6 +922,8 @@ static int omap3_select_table_rate(struc
+ } else {
+ clk_set_rate(dpll3_clk, prcm_vdd->speed);
+ curr_vdd2_prcm_set = prcm_vdd;
++ omap2_clksel_recalc(&core_ck);
++ propagate_rate(&core_ck);
+ }
+ return 0;
+ }
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:36:52.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:36:53.000000000 +0530
+@@ -278,11 +278,7 @@ int set_freq(struct shared_resource *res
+ else if (strcmp(resp->name, "dsp_freq") == 0)
+ vdd1_opp = get_opp(iva2_rate_table + MAX_VDD1_OPP,
+ target_level);
+-
+- if (vdd1_opp == MIN_VDD1_OPP)
+- resource_release("vdd1_opp", &dummy_srf_dev);
+- else
+- resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
++ resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
+
+ resp->curr_level = target_level;
+ #endif
+Index: linux-omap-2.6/arch/arm/plat-omap/cpu-omap.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/plat-omap/cpu-omap.c 2008-08-11
+17:21:57.000000000 +0530
++++ linux-omap-2.6/arch/arm/plat-omap/cpu-omap.c 2008-08-11 17:36:53.000000000
++0530
+@@ -8,6 +8,10 @@
+ *
+ * Based on cpu-sa1110.c, Copyright (C) 2001 Russell King
+ *
++ * Copyright (C) 2007-2008 Texas Instruments, Inc.
++ * Updated to support OMAP3
++ * Rajendra Nayak <rnayak@ti.com>
++ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+@@ -25,6 +29,9 @@
+ #include <asm/io.h>
+ #include <asm/system.h>
+ #include <asm/arch/clock.h>
++#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
++#include <asm/arch/omap-pm.h>
++#endif
+
+ #define VERY_HI_RATE 900000000
+
+@@ -32,12 +39,34 @@ static struct cpufreq_frequency_table *f
+
+ #ifdef CONFIG_ARCH_OMAP1
+ #define MPU_CLK "mpu"
++#elif CONFIG_ARCH_OMAP3
++#define MPU_CLK "virt_vdd1_prcm_set"
+ #else
+ #define MPU_CLK "virt_prcm_set"
+ #endif
+
+ static struct clk *mpu_clk;
+
++#ifdef CONFIG_MACH_OMAP_3430SDP
++extern struct vdd_prcm_config vdd1_rate_table[];
++extern struct vdd_prcm_config vdd2_rate_table[];
++extern struct vdd_prcm_config iva2_rate_table[];
++#endif
++
++#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
++int cpufreq_pre_func(struct notifier_block *n, unsigned long event, void *ptr);
++int cpufreq_post_func(struct notifier_block *n, unsigned long event, void *ptr);
++static struct notifier_block cpufreq_pre = {
++ cpufreq_pre_func,
++ NULL,
++};
++
++static struct notifier_block cpufreq_post = {
++ cpufreq_post_func,
++ NULL,
++};
++#endif
++
+ /* TODO: Add support for SDRAM timing changes */
+
+ int omap_verify_speed(struct cpufreq_policy *policy)
+@@ -89,7 +118,7 @@ static int omap_target(struct cpufreq_po
+
+ if (freqs.old == freqs.new)
+ return ret;
+-
++#ifdef CONFIG_ARCH_OMAP1
+ cpufreq_notify_transition(&freqs, CPUFREQ_PRECHANGE);
+ #ifdef CONFIG_CPU_FREQ_DEBUG
+ printk(KERN_DEBUG "cpufreq-omap: transition: %u --> %u\n",
+@@ -97,10 +126,50 @@ static int omap_target(struct cpufreq_po
+ #endif
+ ret = clk_set_rate(mpu_clk, freqs.new * 1000);
+ cpufreq_notify_transition(&freqs, CPUFREQ_POSTCHANGE);
+-
++#elif defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)\
++ && defined(CONFIG_MACH_OMAP_3430SDP)
++ {
++ int ind;
++ for (ind = 1; ind <= MAX_VDD1_OPP; ind++) {
++ if (vdd1_rate_table[ind].speed/1000 >= freqs.new) {
++ omap_pm_cpu_set_freq
++ (vdd1_rate_table[ind].speed);
++ break;
++ }
++ }
++ }
++#endif
+ return ret;
+ }
+
++#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
++static struct cpufreq_freqs freqs_notify;
++int cpufreq_pre_func(struct notifier_block *n, unsigned long event, void *ptr)
++{
++ struct clk_notifier_data *cnd;
++
++ cnd = (struct clk_notifier_data *)ptr;
++ freqs_notify.old = cnd->old_rate/1000;
++ freqs_notify.new = cnd->new_rate/1000;
++ /* HACK: The clk_notify_post_rate_chg currently
++ * returns a zero for old_rate at bootup
++ */
++ if (freqs_notify.old == 0)
++ freqs_notify.old = 500000;
++ cpufreq_notify_transition(&freqs_notify, CPUFREQ_PRECHANGE);
++ return 0;
++}
++
++int cpufreq_post_func(struct notifier_block *n, unsigned long event, void *ptr)
++{
++ struct clk_notifier_data *cnd;
++
++ cnd = (struct clk_notifier_data *)ptr;
++ cpufreq_notify_transition(&freqs_notify, CPUFREQ_POSTCHANGE);
++ return 0;
++}
++#endif
++
+ static int __init omap_cpu_init(struct cpufreq_policy *policy)
+ {
+ int result = 0;
+@@ -128,7 +197,10 @@ static int __init omap_cpu_init(struct c
+
+ /* FIXME: what's the actual transition time? */
+ policy->cpuinfo.transition_latency = 10 * 1000 * 1000;
+-
++#if defined(CONFIG_ARCH_OMAP3) && !defined(CONFIG_OMAP_PM_NONE)
++ clk_notifier_register(mpu_clk, &cpufreq_pre);
++ clk_notifier_register(mpu_clk, &cpufreq_post);
++#endif
+ return 0;
+ }
+
+Index: linux-omap-2.6/drivers/cpufreq/cpufreq.c
+===================================================================
+--- linux-omap-2.6.orig/drivers/cpufreq/cpufreq.c 2008-08-11 17:21:57.000000000
++0530
++++ linux-omap-2.6/drivers/cpufreq/cpufreq.c 2008-08-11 17:36:53.000000000 +0530
+@@ -321,7 +321,9 @@ void cpufreq_notify_transition(struct cp
+ {
+ struct cpufreq_policy *policy;
+
++#if 0 /*This causes an issue if clk_notify_post_rate_chg is used*/
+ BUG_ON(irqs_disabled());
++#endif
+
+ freqs->flags = cpufreq_driver->flags;
+ dprintk("notification %u of frequency transition to %u kHz\n",
+Index: linux-omap-2.6/arch/arm/configs/omap_3430sdp_defconfig
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/configs/omap_3430sdp_defconfig 2008-08-11
+17:36:43.000000000 +0530
++++ linux-omap-2.6/arch/arm/configs/omap_3430sdp_defconfig 2008-08-11
+17:37:33.000000000 +0530
+@@ -193,6 +193,9 @@ CONFIG_OMAP_LL_DEBUG_UART1=y
+ # CONFIG_OMAP_LL_DEBUG_UART2 is not set
+ # CONFIG_OMAP_LL_DEBUG_UART3 is not set
+ CONFIG_OMAP_SERIAL_WAKE=y
++# CONFIG_OMAP_PM_NONE is not set
++# CONFIG_OMAP_PM_NOOP is not set
++CONFIG_OMAP_PM_SRF=y
+ CONFIG_ARCH_OMAP34XX=y
+ CONFIG_ARCH_OMAP3430=y
+
+@@ -288,7 +291,21 @@ CONFIG_CMDLINE="root=/dev/nfs nfsroot=19
+ #
+ # CPU Frequency scaling
+ #
+-# CONFIG_CPU_FREQ is not set
++CONFIG_CPU_FREQ=y
++CONFIG_CPU_FREQ_TABLE=y
++# CONFIG_CPU_FREQ_DEBUG is not set
++CONFIG_CPU_FREQ_STAT=y
++CONFIG_CPU_FREQ_STAT_DETAILS=y
++CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
++# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
++# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
++# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
++# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
++CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
++# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
++# CONFIG_CPU_FREQ_GOV_USERSPACE is not set
++CONFIG_CPU_FREQ_GOV_ONDEMAND=y
++# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+
+ #
+ # Floating point emulation
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml b/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml
new file mode 100644
index 0000000000..8b8b183808
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/01-omappm-srf.eml
@@ -0,0 +1,513 @@
+Adds Generic Shared Resource Framework structures and API's
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/plat-omap/resource.c | 389 +++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-omap/resource.h | 97 ++++++++
+ 2 files changed, 486 insertions(+)
+
+Index: linux-omap-2.6/arch/arm/plat-omap/resource.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-omap-2.6/arch/arm/plat-omap/resource.c 2008-08-07 15:06:58.000000000
++0530
+@@ -0,0 +1,389 @@
++/*
++ * linux/arch/arm/plat-omap/resource.c
++ * Shared Resource Framework API implementation
++ *
++ * Copyright (C) 2007-2008 Texas Instruments, Inc.
++ * Written by Rajendra Nayak <rnayak@ti.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++ * History:
++ *
++ */
++
++#include <linux/errno.h>
++#include <linux/err.h>
++#include <asm/arch/resource.h>
++#include <linux/slab.h>
++
++/* res_list contains all registered struct shared_resource */
++static LIST_HEAD(res_list);
++
++/* res_mutex protects res_list add and del ops */
++static DEFINE_MUTEX(res_mutex);
++
++/* Static Pool of users for a resource */
++/* used till kmalloc becomes availabel */
++struct users_list usr_list[MAX_USERS];
++
++/* Private/Internal functions */
++
++/**
++ * resource_lookup - loop up a resource by its name, return a pointer
++ * @name: The name of the resource to lookup
++ *
++ * Looks for a registered resource by its name. Returns a pointer to
++ * the struct shared_resource if found, else returns NULL.
++ */
++static struct shared_resource *resource_lookup(const char *name)
++{
++ struct shared_resource *res, *tmp_res;
++
++ if (!name)
++ return NULL;
++
++ res = NULL;
++
++ srf_mutex_lock(&res_mutex);
++ list_for_each_entry(tmp_res, &res_list, node) {
++ if (!strcmp(name, tmp_res->name)) {
++ res = tmp_res;
++ break;
++ }
++ }
++ srf_mutex_unlock(&res_mutex);
++ return res;
++}
++
++/**
++ * update_resource_level - Regenerates and updates the curr_level of the res
++ * @resp: Pointer to the resource
++ *
++ * This function looks at all the users of the given resource and the levels
++ * requested by each of them, and recomputes a target level for the resource
++ * acceptable to all its current usres. It then calls platform specific
++ * change_level to change the level of the resource.
++ * Returns 0 on success, else a non-zero value returned by the platform
++ * specific change_level function.
++ **/
++static int update_resource_level(struct shared_resource *resp)
++{
++ struct users_list *user;
++ unsigned long target_level;
++ int ret;
++
++ /* Regenerate the target_value for the resource */
++ target_level = RES_DEFAULTLEVEL;
++ list_for_each_entry(user, &resp->users_list, node)
++ if (user->level > target_level)
++ target_level = user->level;
++
++ pr_debug("SRF: Changing Level for resource %s to %ld\n",
++ resp->name, target_level);
++ ret = resp->ops->change_level(resp, target_level);
++ if (ret) {
++ printk(KERN_ERR "Unable to Change"
++ "level for resource %s to %ld\n",
++ resp->name, target_level);
++ return ret;
++ }
++ return ret;
++}
++
++/**
++ * get_user - gets a new users_list struct from static pool or dynamically
++ *
++ * This function initally looks for availability in the static pool and
++ * tries to dynamcially allocate only once the static pool is empty.
++ * We hope that during bootup by the time we hit a case of dynamic allocation
++ * slab initialization would have happened.
++ * Returns a pointer users_list struct on success. On dynamic allocation failure
++ * returns a ERR_PTR(-ENOMEM).
++ */
++static struct users_list *get_user(void)
++{
++ int ind = 0;
++ struct users_list *user;
++
++ /* See if something available in the static pool */
++ while (ind < MAX_USERS) {
++ if (usr_list[ind].usage == UNUSED)
++ break;
++ else
++ ind++;
++ }
++ if (ind < MAX_USERS) {
++ /* Pick from the static pool */
++ user = &usr_list[ind];
++ user->usage = STATIC_ALLOC;
++ } else {
++ /* By this time we hope slab is initialized */
++ if (slab_is_available()) {
++ user = kmalloc(sizeof(struct users_list), GFP_KERNEL);
++ if (!user) {
++ printk(KERN_ERR "SRF:FATAL ERROR: kmalloc"
++ "failed\n");
++ return ERR_PTR(-ENOMEM);
++ }
++ user->usage = DYNAMIC_ALLOC;
++ } else {
++ /* Dynamic alloc not available yet */
++ printk(KERN_ERR "SRF: FATAL ERROR: users_list"
++ "initial POOL EMPTY before slab init\n");
++ return ERR_PTR(-ENOMEM);
++ }
++ }
++ return user;
++}
++
++/**
++ * free_user - frees the dynamic users_list and marks the static one unused
++ * @user: The struct users_list to be freed
++ *
++ * Looks at the usage flag and either frees the users_list if it was
++ * dynamically allocated, and if its from the static pool, marks it unused.
++ * No return value.
++ */
++void free_user(struct users_list *user)
++{
++ if (user->usage == DYNAMIC_ALLOC)
++ kfree(user);
++ else {
++ user->usage = UNUSED;
++ user->level = RES_DEFAULTLEVEL;
++ user->dev = NULL;
++ }
++}
++
++/**
++ * resource_init - Initializes the Shared resource framework.
++ * @resources: List of all the resources modelled
++ *
++ * Loops through the list of resources and registers all that
++ * are available for the current CPU.
++ * No return value
++ */
++void resource_init(struct shared_resource **resources)
++{
++ struct shared_resource **resp;
++ int ind;
++
++ pr_debug("Initializing Shared Resource Framework\n");
++
++ if (!cpu_is_omap343x()) {
++ /* This CPU is not supported */
++ printk(KERN_WARNING "Shared Resource Framework does not"
++ "support this CPU type.\n");
++ WARN_ON(1);
++ }
++
++ /* Init the users_list POOL */
++ for (ind = 0; ind < MAX_USERS; ind++) {
++ usr_list[ind].usage = UNUSED;
++ usr_list[ind].dev = NULL;
++ usr_list[ind].level = RES_DEFAULTLEVEL;
++ }
++
++ if (resources)
++ for (resp = resources; *resp; resp++)
++ resource_register(*resp);
++}
++
++/**
++ * resource_register - registers and initializes a resource
++ * @res: struct shared_resource * to register
++ *
++ * Initializes the given resource and adds it to the resource list
++ * for the current CPU.
++ * Returns 0 on success, -EINVAL if given a NULL pointer, -EEXIST if the
++ * resource is already registered.
++ */
++int resource_register(struct shared_resource *resp)
++{
++ if (!resp)
++ return -EINVAL;
++
++ if (!omap_chip_is(resp->omap_chip))
++ return -EINVAL;
++
++ /* Verify that the resource is not already registered */
++ if (resource_lookup(resp->name))
++ return -EEXIST;
++
++ INIT_LIST_HEAD(&resp->users_list);
++ mutex_init(&resp->res_mutex);
++
++ srf_mutex_lock(&res_mutex);
++ /* Add the resource to the resource list */
++ list_add(&resp->node, &res_list);
++ srf_mutex_unlock(&res_mutex);
++
++ /* Call the resource specific init*/
++ if (resp->ops->init)
++ resp->ops->init(resp);
++
++ pr_debug("resource: registered %s\n", resp->name);
++
++ return 0;
++}
++EXPORT_SYMBOL(resource_register);
++
++/**
++ * resource_unregister - unregister a resource
++ * @res: struct shared_resource * to unregister
++ *
++ * Removes a resource from the resource list.
++ * Returns 0 on success, -EINVAL if passed a NULL pointer.
++ */
++int resource_unregister(struct shared_resource *resp)
++{
++ if (!resp)
++ return -EINVAL;
++
++ srf_mutex_lock(&res_mutex);
++ /* delete the resource from the resource list */
++ list_del(&resp->node);
++ srf_mutex_unlock(&res_mutex);
++
++ pr_debug("resource: unregistered %s\n", resp->name);
++
++ return 0;
++}
++EXPORT_SYMBOL(resource_unregister);
++
++/**
++ * resource_request - Request for a required level of a resource
++ * @name: The name of the resource requested
++ * @dev: Uniquely identifes the caller
++ * @level: The requested level for the resource
++ *
++ * This function recomputes the target level of the resource based on
++ * the level requested by the user. The level of the resource is
++ * changed to the target level, if it is not the same as the existing level
++ * of the resource. Multiple calls to this function by the same device will
++ * replace the previous level requested
++ * Returns 0 on success, -EINVAL if the resource name passed in invalid.
++ * -ENOMEM if no static pool available or dynamic allocations fails.
++ * Else returns a non-zero error value returned by one of the failing
++ * shared_resource_ops.
++ */
++int resource_request(const char *name, struct device *dev,
++ unsigned long level)
++{
++ struct shared_resource *resp;
++ struct users_list *user;
++ int found = 0, ret = 0;
++
++ resp = resource_lookup(name);
++ if (!resp) {
++ printk(KERN_ERR "resource_request: Invalid resource name\n");
++ return -EINVAL;
++ }
++
++ /* Call the resource specific validate function */
++ if (resp->ops->validate_level)
++ ret = resp->ops->validate_level(resp, level);
++ if (ret)
++ return ret;
++
++ srf_mutex_lock(&resp->res_mutex);
++ list_for_each_entry(user, &(resp->users_list), node)
++ if (user->dev == dev) {
++ found = 1;
++ break;
++ }
++ if (!found) {
++ /* First time user */
++ user = get_user();
++ if (IS_ERR(user)) {
++ srf_mutex_unlock(&resp->res_mutex);
++ return -ENOMEM;
++ }
++ user->dev = dev;
++ list_add(&user->node, &resp->users_list);
++ resp->no_of_users++;
++ }
++ user->level = level;
++ srf_mutex_unlock(&resp->res_mutex);
++
++ /* Recompute and set the current level for the resource */
++ return update_resource_level(resp);
++}
++EXPORT_SYMBOL(resource_request);
++
++/**
++ * resource_release - Release a previously requested level of a resource
++ * @name: The name of the resource to be released
++ * @dev: Uniquely identifes the caller
++ *
++ * This function recomputes the target level of the resource after removing
++ * the level requested by the user. The level of the resource is
++ * changed to the target level, if it is not the same as the existing level
++ * of the resource.
++ * Returns 0 on success, -EINVAL if the resource name or dev structure
++ * is invalid.
++ */
++int resource_release(const char *name, struct device *dev)
++{
++ struct shared_resource *resp;
++ struct users_list *user;
++ int found = 0;
++
++ resp = resource_lookup(name);
++ if (!resp) {
++ printk(KERN_ERR "resource_release: Invalid resource name\n");
++ return -EINVAL;
++ }
++
++ srf_mutex_lock(&resp->res_mutex);
++ list_for_each_entry(user, &(resp->users_list), node)
++ if (user->dev == dev) {
++ found = 1;
++ break;
++ }
++
++ if (!found) {
++ srf_mutex_unlock(&resp->res_mutex);
++ /* No such user exists */
++ return -EINVAL;
++ }
++
++ resp->no_of_users--;
++ list_del(&user->node);
++ free_user(user);
++ srf_mutex_unlock(&resp->res_mutex);
++
++ /* Recompute and set the current level for the resource */
++ return update_resource_level(resp);
++}
++EXPORT_SYMBOL(resource_release);
++
++/**
++ * resource_get_level - Returns the current level of the resource
++ * @name: Name of the resource
++ *
++ * Returns the current level of the resource if found, else returns
++ * -EINVAL if the resource name is invalid.
++ */
++int resource_get_level(const char *name)
++{
++ struct shared_resource *resp;
++ u32 ret;
++
++ resp = resource_lookup(name);
++ if (!resp) {
++ printk(KERN_ERR "resource_release: Invalid resource name\n");
++ return -EINVAL;
++ }
++
++ srf_mutex_lock(&resp->res_mutex);
++ ret = resp->curr_level;
++ srf_mutex_unlock(&resp->res_mutex);
++ return ret;
++}
++EXPORT_SYMBOL(resource_get_level);
+Index: linux-omap-2.6/include/asm-arm/arch-omap/resource.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-omap-2.6/include/asm-arm/arch-omap/resource.h 2008-08-07
+15:06:58.000000000 +0530
+@@ -0,0 +1,97 @@
++/*
++ * linux/include/asm-arm/arch-omap/resource.h
++ * Structure definitions for Shared resource Framework
++ *
++ * Copyright (C) 2007-2008 Texas Instruments, Inc.
++ * Written by Rajendra Nayak <rnayak@ti.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++ *
++ * History:
++ *
++ */
++
++#ifndef __ARCH_ARM_OMAP_RESOURCE_H
++#define __ARCH_ARM_OMAP_RESOURCE_H
++
++#include <linux/list.h>
++#include <linux/mutex.h>
++#include <linux/device.h>
++#include <asm/arch/cpu.h>
++
++#define srf_mutex_lock(x) { \
++ if (!(in_atomic() || irqs_disabled())) \
++ mutex_lock(x); \
++ }
++#define srf_mutex_unlock(x) { \
++ if (!(in_atomic() || irqs_disabled())) \
++ mutex_unlock(x); \
++ }
++
++#define RES_DEFAULTLEVEL 0x0
++
++struct shared_resource_ops; /* forward declaration */
++
++/* Used to model a Shared Multilevel Resource */
++struct shared_resource {
++ /* Resource name */
++ const char *name;
++ /* Used to represent the OMAP chip types containing this res */
++ const struct omap_chip_id omap_chip;
++ /* Total no of users at any point of this resource */
++ u8 no_of_users;
++ /* Current level of this resource */
++ u32 curr_level;
++ /* Used to store any resource specific data */
++ void *resource_data;
++ /* List of all the current users for this resource */
++ struct list_head users_list;
++ /* Used to guard the resource */
++ struct mutex res_mutex;
++ /* Shared resource operations */
++ struct shared_resource_ops *ops;
++ struct list_head node;
++};
++
++struct shared_resource_ops {
++ /* Init function for the resource */
++ void (*init)(struct shared_resource *res);
++ /* Function to change the level of the resource */
++ int (*change_level)(struct shared_resource *res, u32 target_level);
++ /* Function to validate the requested level of the resource */
++ int (*validate_level)(struct shared_resource *res, u32 target_level);
++};
++
++/* This is to statically defining the users pool */
++/* This static pool is used till kmalloc becomes available */
++#define MAX_USERS 10
++#define UNUSED 0x0
++#define DYNAMIC_ALLOC 0x1
++#define STATIC_ALLOC 0x2
++
++/* Used to represent a user of a shared resource */
++struct users_list {
++ /* Device pointer used to uniquely identify the user */
++ struct device *dev;
++ /* Current level as requested for the resource by the user */
++ u32 level;
++ struct list_head node;
++ u8 usage;
++};
++
++/* Shared resource Framework API's */
++void resource_init(struct shared_resource **resources);
++int resource_register(struct shared_resource *res);
++int resource_unregister(struct shared_resource *res);
++int resource_request(const char *name, struct device *dev,
++ unsigned long level);
++int resource_release(const char *name, struct device *dev);
++int resource_get_level(const char *name);
++
++#endif /* __ARCH_ARM_OMAP_RESOURCE_H */
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml b/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml
new file mode 100644
index 0000000000..8e72afeb3f
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/01-postrate-notifier.eml
@@ -0,0 +1,392 @@
+Add the infrastructure necessary to support clock post-rate-change notifiers
+in the OMAP clock framework. This includes:
+
+- adding the clk_notify_post_rate_chg() function, which will trigger a
+ notifier call chain when a clock rate is changed (but which currently
+ does nothing); and
+
+- adding calls to clk_notify_post_rate_chg() everywhere clk->rate is
+ assigned (mostly *_recalc() functions).
+
+This patch has no functional effect by itself; the actual notifier
+implementation follows in a separate patch.
+
+One item to note is that the post-rate-change notifier is called even
+if the new clock rate is identical to the old rate. This is because
+the process of changing the rate may have temporarily disabled or
+glitched the clock or one of its parents, and some devices may be
+sensitive to such changes.
+
+Signed-off-by: Paul Walmsley <paul@pwsan.com>
+---
+
+ arch/arm/mach-omap2/clock.c | 37 +++++++++++++++++++++++++++------
+ arch/arm/mach-omap2/clock24xx.c | 42 +++++++++++++++++++++++++++++++++++--
+ arch/arm/mach-omap2/clock34xx.c | 10 +++++++++
+ arch/arm/plat-omap/clock.c | 32 ++++++++++++++++++++++++++++
+ include/asm-arm/arch-omap/clock.h | 21 +++++++++++++++++++
+ 5 files changed, 134 insertions(+), 8 deletions(-)
+
+diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
+index ed15868..bd3c1f8 100644
+--- a/arch/arm/mach-omap2/clock.c
++++ b/arch/arm/mach-omap2/clock.c
+@@ -165,10 +165,15 @@ u32 omap2_get_dpll_rate(struct clk *clk)
+ */
+ void omap2_fixed_divisor_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
+ WARN_ON(!clk->fixed_div);
+
++ orig_rate = clk->rate;
+ clk->rate = clk->parent->rate / clk->fixed_div;
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ if (clk->flags & RATE_PROPAGATES)
+ propagate_rate(clk);
+ }
+@@ -376,6 +381,7 @@ int omap2_clk_enable(struct clk *clk)
+ void omap2_clksel_recalc(struct clk *clk)
+ {
+ u32 div = 0;
++ unsigned long orig_rate;
+
+ pr_debug("clock: recalc'ing clksel clk %s\n", clk->name);
+
+@@ -385,10 +391,13 @@ void omap2_clksel_recalc(struct clk *clk)
+
+ if (clk->rate == (clk->parent->rate / div))
+ return;
++ orig_rate = clk->rate;
+ clk->rate = clk->parent->rate / div;
+
+ pr_debug("clock: new clock rate is %ld (div %d)\n", clk->rate, div);
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ if (clk->flags & RATE_PROPAGATES)
+ propagate_rate(clk);
+ }
+@@ -662,6 +671,8 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
+ wmb();
+ }
+
++ /* post-rate-change notifier will be called by omap2_clk_set_rate() */
++
+ return 0;
+ }
+
+@@ -670,20 +681,30 @@ int omap2_clksel_set_rate(struct clk *clk, unsigned long rate)
+ int omap2_clk_set_rate(struct clk *clk, unsigned long rate)
+ {
+ int ret = -EINVAL;
+-
+- pr_debug("clock: set_rate for clock %s to rate %ld\n", clk->name, rate);
++ unsigned long orig_rate;
+
+ /* CONFIG_PARTICIPANT clocks are changed only in sets via the
+ rate table mechanism, driven by mpu_speed */
+ if (clk->flags & CONFIG_PARTICIPANT)
+ return -EINVAL;
+
++ if (!clk->set_rate)
++ return -EINVAL;
++
++ orig_rate = clk->rate;
++
++ pr_debug("clock: set_rate for clock %s from %ld Hz to %ld Hz\n",
++ clk->name, orig_rate, rate);
++
+ /* dpll_ck, core_ck, virt_prcm_set; plus all clksel clocks */
+- if (clk->set_rate)
+- ret = clk->set_rate(clk, rate);
++ ret = clk->set_rate(clk, rate);
+
+- if (ret == 0 && (clk->flags & RATE_PROPAGATES))
+- propagate_rate(clk);
++ if (ret == 0) {
++ clk_notify_post_rate_chg(clk, orig_rate, rate);
++
++ if (clk->flags & RATE_PROPAGATES)
++ propagate_rate(clk);
++ }
+
+ return ret;
+ }
+@@ -732,6 +753,7 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
+ {
+ void __iomem *src_addr;
+ u32 field_val, field_mask, reg_val, parent_div;
++ unsigned long orig_rate;
+
+ if (clk->flags & CONFIG_PARTICIPANT)
+ return -EINVAL;
+@@ -765,11 +787,14 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
+ clk->parent = new_parent;
+
+ /* CLKSEL clocks follow their parents' rates, divided by a divisor */
++ orig_rate = clk->rate;
+ clk->rate = new_parent->rate;
+
+ if (parent_div > 0)
+ clk->rate /= parent_div;
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ pr_debug("clock: set parent of %s to %s (new rate %ld)\n",
+ clk->name, clk->parent->name, clk->rate);
+
+diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
+index 54cc6e1..e001549 100644
+--- a/arch/arm/mach-omap2/clock24xx.c
++++ b/arch/arm/mach-omap2/clock24xx.c
+@@ -172,11 +172,22 @@ static long omap2_dpllcore_round_rate(unsigned long target_rate)
+
+ static void omap2_dpllcore_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
++ orig_rate = clk->rate;
+ clk->rate = omap2_get_dpll_rate_24xx(clk);
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ propagate_rate(clk);
+ }
+
++/*
++ * XXX REVISIT: This code needs to keep track of the underlying struct
++ * clocks that it is changing, so it can call post-rate-change notifiers
++ * on them. This function probably should be rewritten to use the clock
++ * fw.
++ */
+ static int omap2_reprogram_dpllcore(struct clk *clk, unsigned long rate)
+ {
+ u32 cur_rate, low, mult, div, valid_rate, done_rate;
+@@ -259,7 +270,14 @@ dpll_exit:
+ */
+ static void omap2_table_mpu_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
++ orig_rate = clk->rate;
+ clk->rate = curr_prcm_set->mpu_speed;
++
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
++ /* No rate propagation since table clocks have no children */
+ }
+
+ /*
+@@ -294,7 +312,14 @@ static long omap2_round_to_table_rate(struct clk *clk, unsigned long rate)
+ return highest_rate;
+ }
+
+-/* Sets basic clocks based on the specified rate */
++/*
++ * Sets basic clocks based on the specified rate
++ *
++ * XXX REVISIT: This code needs to keep track of the underlying struct
++ * clocks that it is changing, so it can call post-rate-change notifiers
++ * on them. This function probably should be rewritten to use the clock
++ * fw.
++ */
+ static int omap2_select_table_rate(struct clk *clk, unsigned long rate)
+ {
+ u32 cur_rate, done_rate, bypass = 0, tmp;
+@@ -353,7 +378,8 @@ static int omap2_select_table_rate(struct clk *clk, unsigned long rate)
+ cm_write_mod_reg(prcm->cm_clksel_gfx, GFX_MOD, CM_CLKSEL);
+
+ /* Major subsystem dividers */
+- tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) & OMAP24XX_CLKSEL_DSS2_MASK;
++ tmp = cm_read_mod_reg(CORE_MOD, CM_CLKSEL1) &
++ OMAP24XX_CLKSEL_DSS2_MASK;
+ cm_write_mod_reg(prcm->cm_clksel1_core | tmp, CORE_MOD,
+ CM_CLKSEL1);
+
+@@ -460,13 +486,25 @@ static u32 omap2_get_sysclkdiv(void)
+
+ static void omap2_osc_clk_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
++ orig_rate = clk->rate;
+ clk->rate = omap2_get_apll_clkin() * omap2_get_sysclkdiv();
++
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ propagate_rate(clk);
+ }
+
+ static void omap2_sys_clk_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
++ orig_rate = clk->rate;
+ clk->rate = clk->parent->rate / omap2_get_sysclkdiv();
++
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ propagate_rate(clk);
+ }
+
+diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
+index 408b51a..7b89b61 100644
+--- a/arch/arm/mach-omap2/clock34xx.c
++++ b/arch/arm/mach-omap2/clock34xx.c
+@@ -53,8 +53,13 @@
+ */
+ static void omap3_dpll_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
++ orig_rate = clk->rate;
+ clk->rate = omap2_get_dpll_rate(clk);
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ propagate_rate(clk);
+ }
+
+@@ -500,6 +505,7 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
+ const struct dpll_data *dd;
+ u32 v;
+ struct clk *pclk;
++ unsigned long orig_rate;
+
+ /* Walk up the parents of clk, looking for a DPLL */
+ pclk = clk->parent;
+@@ -513,6 +519,8 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
+
+ WARN_ON(!dd->control_reg || !dd->enable_mask);
+
++ orig_rate = clk->rate;
++
+ v = __raw_readl(dd->control_reg) & dd->enable_mask;
+ v >>= __ffs(dd->enable_mask);
+ if (v != DPLL_LOCKED)
+@@ -520,6 +528,8 @@ static void omap3_clkoutx2_recalc(struct clk *clk)
+ else
+ clk->rate = clk->parent->rate * 2;
+
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ if (clk->flags & RATE_PROPAGATES)
+ propagate_rate(clk);
+ }
+diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
+index c2e741d..421d076 100644
+--- a/arch/arm/plat-omap/clock.c
++++ b/arch/arm/plat-omap/clock.c
+@@ -254,10 +254,16 @@ __setup("mpurate=", omap_clk_setup);
+ /* Used for clocks that always have same value as the parent clock */
+ void followparent_recalc(struct clk *clk)
+ {
++ unsigned long orig_rate;
++
+ if (clk == NULL || IS_ERR(clk))
+ return;
+
++ orig_rate = clk->rate;
+ clk->rate = clk->parent->rate;
++
++ clk_notify_post_rate_chg(clk, orig_rate, clk->rate);
++
+ if (unlikely(clk->flags & RATE_PROPAGATES))
+ propagate_rate(clk);
+ }
+@@ -373,6 +379,32 @@ void clk_init_cpufreq_table(struct cpufreq_frequency_table **table)
+ EXPORT_SYMBOL(clk_init_cpufreq_table);
+ #endif
+
++/**
++ * clk_notify_post_rate_chg - call post-clk-rate-change notifier chain
++ * @clk: struct clk * that is changing rate
++ * @old_rate: old rate
++ * @new_rate: new rate
++ *
++ * Triggers a notifier call chain on the post-clk-rate-change notifier
++ * for clock 'clk'. Passes a pointer to the struct clk and the
++ * previous and current rates to the notifier callback. Intended to be
++ * called by internal clock code only. No return value.
++ */
++void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
++ unsigned long new_rate)
++{
++ struct clk_notifier *cn;
++ struct clk_notifier_data cnd;
++
++ cnd.clk = clk;
++ cnd.old_rate = old_rate;
++ cnd.new_rate = new_rate;
++
++ /* XXX Call notifier here */
++
++}
++
++
+ /*-------------------------------------------------------------------------*/
+
+ #ifdef CONFIG_OMAP_RESET_CLOCKS
+diff --git a/include/asm-arm/arch-omap/clock.h b/include/asm-arm/arch-omap/clock.h
+index bfaf7b6..e3c9aeb 100644
+--- a/include/asm-arm/arch-omap/clock.h
++++ b/include/asm-arm/arch-omap/clock.h
+@@ -10,6 +10,8 @@
+ * published by the Free Software Foundation.
+ */
+
++#include <linux/notifier.h>
++
+ #ifndef __ARCH_ARM_OMAP_CLOCK_H
+ #define __ARCH_ARM_OMAP_CLOCK_H
+
+@@ -58,6 +60,19 @@ struct dpll_data {
+
+ #endif
+
++struct clk_notifier {
++ struct clk *clk;
++ struct atomic_notifier_head notifier_head;
++ struct list_head node;
++};
++
++struct clk_notifier_data {
++ struct clk *clk;
++ unsigned long old_rate;
++ unsigned long new_rate;
++};
++
++
+ struct clk {
+ struct list_head node;
+ struct module *owner;
+@@ -121,6 +136,10 @@ extern void clk_allow_idle(struct clk *clk);
+ extern void clk_deny_idle(struct clk *clk);
+ extern int clk_get_usecount(struct clk *clk);
+ extern void clk_enable_init_clocks(void);
++extern int clk_notifier_register(struct clk *clk, struct notifier_block *nb);
++extern int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb);
++extern void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
++ unsigned long new_rate);
+ #ifdef CONFIG_CPU_FREQ
+ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
+ #endif
+@@ -161,6 +180,8 @@ extern void clk_init_cpufreq_table(struct cpufreq_frequency_table **table);
+
+ #define RATE_IN_24XX (RATE_IN_242X | RATE_IN_243X)
+
++/* Clk rate change notifier callback type */
++#define CLK_POST_RATE_CHANGE 1
+
+ /* CM_CLKSEL2_PLL.CORE_CLK_SRC options (24XX) */
+ #define CORE_CLK_SRC_32K 0
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12 b/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12
new file mode 100644
index 0000000000..51d2c8cff0
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/02-beagle_use_gptimer12
@@ -0,0 +1,38 @@
+BeagleBoard: make Beagle use GPTIMER12 for system ticks
+
+From: Paul Walmsley <paul@pwsan.com>
+
+There is suspicion that the 32kHz input clock to the OMAP may be noisy
+on BeagleBoards. On OMAP2/3 GPTIMER1, this can cause the timer
+counter register to warp to unknown values or miss interrupt
+conditions. So, use GPTIMER12 instead, which apparently has its own
+secure 32kHz oscillator and will hopefully not be prone to the 32kHz
+glitches.
+---
+
+ arch/arm/configs/omap3_beagle_defconfig | 5 +++--
+ 1 files changed, 3 insertions(+), 2 deletions(-)
+
+diff --git a/arch/arm/configs/omap3_beagle_defconfig b/arch/arm/configs/omap3_beagle_defconfig
+index e1b16d0..7805995 100644
+--- a/arch/arm/configs/omap3_beagle_defconfig
++++ defconfig
+@@ -182,8 +182,8 @@ CONFIG_OMAP_BOOT_REASON=y
+ # CONFIG_OMAP_MCBSP is not set
+ # CONFIG_OMAP_MMU_FWK is not set
+ # CONFIG_OMAP_MBOX_FWK is not set
+-CONFIG_OMAP_MPU_TIMER=y
+-# CONFIG_OMAP_32K_TIMER is not set
++# CONFIG_OMAP_MPU_TIMER is not set
++CONFIG_OMAP_32K_TIMER=y
+ CONFIG_OMAP_DM_TIMER=y
+ # CONFIG_OMAP_LL_DEBUG_UART1 is not set
+ # CONFIG_OMAP_LL_DEBUG_UART2 is not set
+@@ -198,6 +198,7 @@ CONFIG_ARCH_OMAP3430=y
+ # CONFIG_MACH_OMAP_3430SDP is not set
+ # CONFIG_MACH_OMAP3EVM is not set
+ CONFIG_MACH_OMAP3_BEAGLE=y
++CONFIG_OMAP_TICK_GPTIMER=12
+
+ #
+ # Boot options
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-gptimer_use_match_for_tick b/packages/linux/linux-omap2-git/beagleboard/02-gptimer_use_match_for_tick
deleted file mode 100644
index 6eb6c9b477..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/02-gptimer_use_match_for_tick
+++ /dev/null
@@ -1,97 +0,0 @@
-OMAP2/3 system tick GPTIMER: use match interrupts rather than overflow interrupts
-
-From: Paul Walmsley <paul@pwsan.com>
-
-On some OMAP3 chips, GPTIMER1 will occasionally decline to interrupt
-the MPU when a timer overflow event occurs. The timer stops running;
-and TOCR is sometimes incremented; but the MPU apparently never receives
-the interrupt. This patch was an experiment in using the GPTIMER
-match interrupt to determine if it resolves the problem.
-Unfortunately, it does not; the same problem occurs with match
-interrupts; but this patch is preserved as the base for a
-match+overflow interrupt workaround used in a following patch.
----
-
- arch/arm/mach-omap2/timer-gp.c | 32 ++++++++++----------------------
- 1 files changed, 10 insertions(+), 22 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
-index 557603f..51996ba 100644
---- a/arch/arm/mach-omap2/timer-gp.c
-+++ b/arch/arm/mach-omap2/timer-gp.c
-@@ -36,6 +36,8 @@
- #include <asm/mach/time.h>
- #include <asm/arch/dmtimer.h>
-
-+#define GPTIMER_MATCH_VAL 0xffff0000
-+
- static struct omap_dm_timer *gptimer;
- static struct clock_event_device clockevent_gpt;
-
-@@ -44,7 +46,7 @@ static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
- struct omap_dm_timer *gpt = (struct omap_dm_timer *)dev_id;
- struct clock_event_device *evt = &clockevent_gpt;
-
-- omap_dm_timer_write_status(gpt, OMAP_TIMER_INT_OVERFLOW);
-+ omap_dm_timer_write_status(gpt, OMAP_TIMER_INT_MATCH);
-
- evt->event_handler(evt);
- return IRQ_HANDLED;
-@@ -59,7 +61,7 @@ static struct irqaction omap2_gp_timer_irq = {
- static int omap2_gp_timer_set_next_event(unsigned long cycles,
- struct clock_event_device *evt)
- {
-- omap_dm_timer_set_load_start(gptimer, 0, 0xffffffff - cycles);
-+ omap_dm_timer_set_load_start(gptimer, 0, GPTIMER_MATCH_VAL - cycles);
-
- return 0;
- }
-@@ -67,29 +69,12 @@ static int omap2_gp_timer_set_next_event(unsigned long cycles,
- static void omap2_gp_timer_set_mode(enum clock_event_mode mode,
- struct clock_event_device *evt)
- {
-- u32 period;
--
- omap_dm_timer_stop(gptimer);
--
-- switch (mode) {
-- case CLOCK_EVT_MODE_PERIODIC:
-- period = clk_get_rate(omap_dm_timer_get_fclk(gptimer)) / HZ;
-- period -= 1;
--
-- omap_dm_timer_set_load_start(gptimer, 1, 0xffffffff - period);
-- break;
-- case CLOCK_EVT_MODE_ONESHOT:
-- break;
-- case CLOCK_EVT_MODE_UNUSED:
-- case CLOCK_EVT_MODE_SHUTDOWN:
-- case CLOCK_EVT_MODE_RESUME:
-- break;
-- }
- }
-
- static struct clock_event_device clockevent_gpt = {
- .name = "gp timer",
-- .features = CLOCK_EVT_FEAT_PERIODIC | CLOCK_EVT_FEAT_ONESHOT,
-+ .features = CLOCK_EVT_FEAT_ONESHOT,
- .shift = 32,
- .set_next_event = omap2_gp_timer_set_next_event,
- .set_mode = omap2_gp_timer_set_mode,
-@@ -111,12 +96,15 @@ static void __init omap2_gp_clockevent_init(void)
-
- omap2_gp_timer_irq.dev_id = (void *)gptimer;
- setup_irq(omap_dm_timer_get_irq(gptimer), &omap2_gp_timer_irq);
-- omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_OVERFLOW);
-+ omap_dm_timer_stop(gptimer);
-+ /* omap_dm_timer_set_load(gptimer, 0, 0);*/
-+ omap_dm_timer_set_match(gptimer, 1, GPTIMER_MATCH_VAL);
-+ omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_MATCH);
-
- clockevent_gpt.mult = div_sc(tick_rate, NSEC_PER_SEC,
- clockevent_gpt.shift);
- clockevent_gpt.max_delta_ns =
-- clockevent_delta2ns(0xffffffff, &clockevent_gpt);
-+ clockevent_delta2ns(GPTIMER_MATCH_VAL, &clockevent_gpt);
- clockevent_gpt.min_delta_ns =
- clockevent_delta2ns(1, &clockevent_gpt);
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml b/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml
new file mode 100644
index 0000000000..35ef87bdf0
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/02-omappm-mpu-latency-modeling.eml
@@ -0,0 +1,245 @@
+Adds resource def's for mpu/core/powerdomain latencies for OMAP3
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/resource34xx.h | 226 +++++++++++++++++++++++++++++++++++++
+ 1 files changed, 226 insertions(+)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-07
+15:07:02.000000000 +0530
+@@ -0,0 +1,226 @@
++/*
++ * linux/arch/arm/mach-omap2/resource34xx.h
++ *
++ * OMAP3 resource definitions
++ *
++ * Copyright (C) 2007-2008 Texas Instruments, Inc.
++ * Written by Rajendra Nayak <rnayak@ti.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++ *
++ * History:
++ *
++ */
++
++#ifndef __ARCH_ARM_MACH_OMAP2_RESOURCE_H
++#define __ARCH_ARM_MACH_OMAP2_RESOURCE_H
++
++#include <asm/arch/resource.h>
++#include <asm/arch/powerdomain.h>
++
++/**
++ * mpu_latency/core_latency are used to control the cpuidle C state.
++ */
++void init_latency(struct shared_resource *resp);
++int set_latency(struct shared_resource *resp, u32 target_level);
++
++static u8 mpu_qos_req_added;
++static u8 core_qos_req_added;
++
++static struct shared_resource_ops lat_res_ops = {
++ .init = init_latency,
++ .change_level = set_latency,
++};
++
++static struct shared_resource mpu_latency = {
++ .name = "mpu_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &mpu_qos_req_added,
++ .ops = &lat_res_ops,
++};
++
++static struct shared_resource core_latency = {
++ .name = "core_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &core_qos_req_added,
++ .ops = &lat_res_ops,
++};
++
++/**
++ * Power domain Latencies are used to control the target Power
++ * domain state once all clocks for the power domain
++ * are released.
++ */
++void init_pd_latency(struct shared_resource *resp);
++int set_pd_latency(struct shared_resource *resp, u32 target_level);
++
++/* Power Domain Latency levels */
++#define PD_LATENCY_OFF 0x0
++#define PD_LATENCY_RET 0x1
++#define PD_LATENCY_INACT 0x2
++#define PD_LATENCY_ON 0x3
++
++#define PD_LATENCY_MAXLEVEL 0x4
++
++struct pd_latency_db {
++ char *pwrdm_name;
++ struct powerdomain *pd;
++ /* Latencies for each state transition, stored in us */
++ unsigned long latency[PD_LATENCY_MAXLEVEL];
++};
++
++static struct shared_resource_ops pd_lat_res_ops = {
++ .init = init_pd_latency,
++ .change_level = set_pd_latency,
++};
++
++static struct pd_latency_db iva2_pwrdm_lat_db = {
++ .pwrdm_name = "iva2_pwrdm",
++ .latency[PD_LATENCY_OFF] = 1000,
++ .latency[PD_LATENCY_RET] = 100,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource iva2_pwrdm_latency = {
++ .name = "iva2_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &iva2_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db gfx_pwrdm_lat_db = {
++ .pwrdm_name = "gfx_pwrdm",
++ .latency[PD_LATENCY_OFF] = 1000,
++ .latency[PD_LATENCY_RET] = 100,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource gfx_pwrdm_latency = {
++ .name = "gfx_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES1),
++ .resource_data = &gfx_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct shared_resource sgx_pwrdm_latency = {
++ .name = "sgx_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2),
++ .resource_data = &gfx_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db dss_pwrdm_lat_db = {
++ .pwrdm_name = "dss_pwrdm",
++ .latency[PD_LATENCY_OFF] = 70,
++ .latency[PD_LATENCY_RET] = 20,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource dss_pwrdm_latency = {
++ .name = "dss_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &dss_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db cam_pwrdm_lat_db = {
++ .pwrdm_name = "cam_pwrdm",
++ .latency[PD_LATENCY_OFF] = 850,
++ .latency[PD_LATENCY_RET] = 35,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource cam_pwrdm_latency = {
++ .name = "cam_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &cam_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db per_pwrdm_lat_db = {
++ .pwrdm_name = "per_pwrdm",
++ .latency[PD_LATENCY_OFF] = 200,
++ .latency[PD_LATENCY_RET] = 110,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource per_pwrdm_latency = {
++ .name = "per_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &per_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db neon_pwrdm_lat_db = {
++ .pwrdm_name = "neon_pwrdm",
++ .latency[PD_LATENCY_OFF] = 1000,
++ .latency[PD_LATENCY_RET] = 100,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource neon_pwrdm_latency = {
++ .name = "neon_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &neon_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db usbhost_pwrdm_lat_db = {
++ .pwrdm_name = "usbhost_pwrdm",
++ .latency[PD_LATENCY_OFF] = 1000,
++ .latency[PD_LATENCY_RET] = 100,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource usbhost_pwrdm_latency = {
++ .name = "usbhost_pwrdm_latency",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430ES2),
++ .resource_data = &usbhost_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++static struct pd_latency_db emu_pwrdm_lat_db = {
++ .pwrdm_name = "emu_pwrdm",
++ .latency[PD_LATENCY_OFF] = 1000,
++ .latency[PD_LATENCY_RET] = 100,
++ .latency[PD_LATENCY_INACT] = 0,
++ .latency[PD_LATENCY_ON] = 0
++};
++
++static struct shared_resource emu_pwrdm_latency = {
++ .name = "emu_pwrdm",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &emu_pwrdm_lat_db,
++ .ops = &pd_lat_res_ops,
++};
++
++struct shared_resource *resources_omap[] __initdata = {
++ &mpu_latency,
++ &core_latency,
++ /* Power Domain Latency resources */
++ &iva2_pwrdm_latency,
++ &gfx_pwrdm_latency,
++ &sgx_pwrdm_latency,
++ &dss_pwrdm_latency,
++ &cam_pwrdm_latency,
++ &per_pwrdm_latency,
++ &neon_pwrdm_latency,
++ &usbhost_pwrdm_latency,
++ &emu_pwrdm_latency,
++ NULL
++};
++
++#endif /* __ARCH_ARM_MACH_OMAP2_RESOURCE_H */
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml b/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml
new file mode 100644
index 0000000000..97058f99e1
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/02-postrate-notifier.eml
@@ -0,0 +1,186 @@
+This patch implements the remaining code for notification of clock
+rate changes via the clock framework:
+
+- a notifier registration function, clk_notifier_register()
+
+- a notifier unregistration function, clk_notifier_unregister()
+
+- the clk_notify_post_rate_chg() call-chain function, has been fleshed out
+
+The implementation is via an atomic notifier, called with the clockfw
+spinlock held. Callback functions must not sleep and must not re-enter
+the clock framework, and should execute quickly.
+
+In the medium-term future, there are likely to be few users of these
+notifiers. So, rather than storing one notifier per struct clk,
+notifiers are stored in a separate, dynamically allocated list,
+effectively trading execution speed (in terms of a sequential scan of
+the notifier list) for memory savings. The implementation is
+completely hidden from the callbacks and is easily changed if
+necessary.
+
+Signed-off-by: Paul Walmsley <paul@pwsan.com>
+---
+
+ arch/arm/plat-omap/clock.c | 118 +++++++++++++++++++++++++++++++++++++++++++-
+ 1 files changed, 115 insertions(+), 3 deletions(-)
+
+diff --git a/arch/arm/plat-omap/clock.c b/arch/arm/plat-omap/clock.c
+index 421d076..354f45f 100644
+--- a/arch/arm/plat-omap/clock.c
++++ b/arch/arm/plat-omap/clock.c
+@@ -22,6 +22,7 @@
+ #include <linux/mutex.h>
+ #include <linux/platform_device.h>
+ #include <linux/cpufreq.h>
++#include <linux/notifier.h>
+ #include <linux/debugfs.h>
+
+ #include <asm/io.h>
+@@ -34,6 +35,8 @@ static DEFINE_SPINLOCK(clockfw_lock);
+
+ static struct clk_functions *arch_clock;
+
++static LIST_HEAD(clk_notifier_list);
++
+ /*-------------------------------------------------------------------------
+ * Standard clock functions defined in include/linux/clk.h
+ *-------------------------------------------------------------------------*/
+@@ -380,6 +383,110 @@ EXPORT_SYMBOL(clk_init_cpufreq_table);
+ #endif
+
+ /**
++<<<<<<< current:arch/arm/plat-omap/clock.c
++=======
++ * clk_notifier_register - add a clock rate change notifier
++ * @clk: struct clk * to watch for rate echanges
++ * @nb: struct notifier_block * with callback info
++ *
++ * Request notification after a frequency change on clock 'clk'. This
++ * uses an atomic notifier. The callback will be called with
++ * interrupts disabled; therefore callback code should be very
++ * lightweight. Callback code must not call back into the clock
++ * framework. Callback code will be passed the previous and new rate
++ * of the clock.
++ *
++ * clk_notifier_register() must be called from process
++ * context. Returns -EINVAL if called with null arguments, -ENOMEM
++ * upon allocation failure; otherwise, passes along the return value
++ * of atomic_notifier_chain_register().
++ */
++int clk_notifier_register(struct clk *clk, struct notifier_block *nb)
++{
++ struct clk_notifier *cn = NULL, *cn_new = NULL;
++ int r;
++ unsigned long flags;
++
++ if (!clk || !nb)
++ return -EINVAL;
++
++ /* Allocate this here speculatively so we can avoid GFP_ATOMIC */
++ cn_new = kzalloc(sizeof(struct clk_notifier), GFP_KERNEL);
++ if (!cn_new)
++ return -ENOMEM;
++
++ spin_lock_irqsave(&clockfw_lock, flags);
++
++ list_for_each_entry(cn, &clk_notifier_list, node) {
++ if (cn->clk == clk)
++ break;
++ }
++
++ if (cn->clk != clk) {
++ cn_new->clk = clk;
++ ATOMIC_INIT_NOTIFIER_HEAD(&cn_new->notifier_head);
++
++ list_add(&cn_new->node, &clk_notifier_list);
++ cn = cn_new;
++ } else {
++ kfree(cn_new); /* didn't need it after all */
++ }
++
++ r = atomic_notifier_chain_register(&cn->notifier_head, nb);
++
++ spin_unlock_irqrestore(&clockfw_lock, flags);
++
++ return r;
++}
++
++/**
++ * clk_notifier_unregister - remove a clock rate change notifier
++ * @clk: struct clk *
++ * @nb: struct notifier_block * with callback info
++ *
++ * Request no further notification for frequency changes on clock
++ * 'clk'. This function presently does not release memory allocated
++ * by its corresponding _register function; see inline comments for
++ * more informations. Returns -EINVAL if called with null arguments;
++ * otherwise, passes along the return value of
++ * atomic_notifier_chain_unregister().
++ */
++int clk_notifier_unregister(struct clk *clk, struct notifier_block *nb)
++{
++ struct clk_notifier *cn = NULL;
++ int r = -EINVAL;
++ unsigned long flags;
++
++ if (!clk || !nb)
++ return -EINVAL;
++
++ spin_lock_irqsave(&clockfw_lock, flags);
++
++ list_for_each_entry(cn, &clk_notifier_list, node) {
++ if (cn->clk == clk)
++ break;
++ }
++
++ if (cn->clk == clk) {
++ r = atomic_notifier_chain_unregister(&cn->notifier_head, nb);
++
++ /*
++ * XXX unfortunately it seems that there is no polite
++ * way to test if a notifier has zero users. So once
++ * a post-notifier has been registered on a clock,
++ * that struct clk_notifier will not be freed, even if
++ * all of its users unregister.
++ */
++ } else {
++ r = -ENOENT;
++ }
++
++ spin_unlock_irqrestore(&clockfw_lock, flags);
++
++ return r;
++}
++
++/**
+ * clk_notify_post_rate_chg - call post-clk-rate-change notifier chain
+ * @clk: struct clk * that is changing rate
+ * @old_rate: old rate
+@@ -400,11 +507,16 @@ void clk_notify_post_rate_chg(struct clk *clk, unsigned long old_rate,
+ cnd.old_rate = old_rate;
+ cnd.new_rate = new_rate;
+
+- /* XXX Call notifier here */
+-
++ list_for_each_entry(cn, &clk_notifier_list, node) {
++ if (cn->clk == clk) {
++ atomic_notifier_call_chain(&cn->notifier_head,
++ CLK_POST_RATE_CHANGE,
++ &cnd);
++ break;
++ }
++ }
+ }
+
+-
+ /*-------------------------------------------------------------------------*/
+
+ #ifdef CONFIG_OMAP_RESET_CLOCKS
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/linux-omap2-git/beagleboard/03-gptimer_match_plus_ovf b/packages/linux/linux-omap2-git/beagleboard/03-gptimer_match_plus_ovf
deleted file mode 100644
index 3de6e05042..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/03-gptimer_match_plus_ovf
+++ /dev/null
@@ -1,94 +0,0 @@
-OMAP2/3 system tick GPTIMER: use overflow interrupts to detect missing match interrupts
-
-From: Paul Walmsley <paul@pwsan.com>
-
-GPTIMER1 on some OMAP3 chips occasionally misses match conditions
-between the timer counter and the target register value, and does not
-interrupt to the MPU. This patch adds another line of defense by
-setting the timer to generate an overflow interrupt 0.5 seconds after the
-timer passes the original comparison value.
-
-If interrupts are masked for a long period of time, one would expect
-both a match and an overflow interrupt to be logged. This is considered
-a normal condition. However, if only an overflow interrupt is logged,
-this is considered evidence of a hardware bug and the kernel will issue
-a warning.
-
-This workaround is unlikely to be 100% effective, since GPTIMER1 has
-also been observed to lose overflow interrupts occasionally. It is
-hoped that the probability of losing both will be significantly lower
-than the probability of losing either one.
----
-
- arch/arm/mach-omap2/timer-gp.c | 36 ++++++++++++++++++++++++++++++++----
- 1 files changed, 32 insertions(+), 4 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
-index 51996ba..ce5c2b4 100644
---- a/arch/arm/mach-omap2/timer-gp.c
-+++ b/arch/arm/mach-omap2/timer-gp.c
-@@ -36,17 +36,43 @@
- #include <asm/mach/time.h>
- #include <asm/arch/dmtimer.h>
-
--#define GPTIMER_MATCH_VAL 0xffff0000
-+/*
-+ * The number of timer ticks to delay will be subtracted from
-+ * GPTIMER_MATCH_VAL before loading into the timer. So GPTIMER_MATCH_VAL
-+ * constrains the longest delay that can be generated with the timer.
-+ * Since the current code uses overflow interrupts as protection against
-+ * missed comparison interrupts, this value should also be sufficiently
-+ * large such that there is not an excessively long delay between ticks
-+ * if the comparison interrupt fails to arrive. The 0xfffff800 value
-+ * below results in a half-second delay in such a case when using
-+ * the 32kHz timer as source.
-+ */
-+#define GPTIMER_MATCH_VAL (0xffffffff - (32768/2))
-
- static struct omap_dm_timer *gptimer;
- static struct clock_event_device clockevent_gpt;
-
-+static u32 last_load;
-+
- static irqreturn_t omap2_gp_timer_interrupt(int irq, void *dev_id)
- {
- struct omap_dm_timer *gpt = (struct omap_dm_timer *)dev_id;
- struct clock_event_device *evt = &clockevent_gpt;
--
-- omap_dm_timer_write_status(gpt, OMAP_TIMER_INT_MATCH);
-+ u32 v;
-+
-+ v = omap_dm_timer_read_status(gpt);
-+ if ((v & OMAP_TIMER_INT_OVERFLOW) && !(v & OMAP_TIMER_INT_MATCH)) {
-+ /*
-+ * Should never happen. Current belief is that this is
-+ * due to a hardware bug in the GPTIMER block on some
-+ * OMAP3 revisions.
-+ */
-+ pr_err("*** GPTIMER missed match interrupt! last load: %08x\n",
-+ last_load);
-+ WARN_ON(1);
-+ }
-+
-+ omap_dm_timer_write_status(gpt, v);
-
- evt->event_handler(evt);
- return IRQ_HANDLED;
-@@ -61,6 +87,7 @@ static struct irqaction omap2_gp_timer_irq = {
- static int omap2_gp_timer_set_next_event(unsigned long cycles,
- struct clock_event_device *evt)
- {
-+ last_load = GPTIMER_MATCH_VAL - cycles;
- omap_dm_timer_set_load_start(gptimer, 0, GPTIMER_MATCH_VAL - cycles);
-
- return 0;
-@@ -99,7 +126,8 @@ static void __init omap2_gp_clockevent_init(void)
- omap_dm_timer_stop(gptimer);
- /* omap_dm_timer_set_load(gptimer, 0, 0);*/
- omap_dm_timer_set_match(gptimer, 1, GPTIMER_MATCH_VAL);
-- omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_MATCH);
-+ omap_dm_timer_set_int_enable(gptimer, OMAP_TIMER_INT_MATCH |
-+ OMAP_TIMER_INT_OVERFLOW);
-
- clockevent_gpt.mult = div_sc(tick_rate, NSEC_PER_SEC,
- clockevent_gpt.shift);
diff --git a/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml b/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml
new file mode 100644
index 0000000000..d052023f12
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/03-omappm-omap3srf.eml
@@ -0,0 +1,167 @@
+Adds init/change_level/validate_level calls for OMAP3 resources
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/resource34xx.c | 148 +++++++++++++++++++++++++++++++++++++
+ 1 files changed, 148 insertions(+)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-07
+15:07:04.000000000 +0530
+@@ -0,0 +1,148 @@
++/*
++ * linux/arch/arm/mach-omap2/resource34xx.c
++ * OMAP3 resource init/change_level/validate_level functions
++ *
++ * Copyright (C) 2007-2008 Texas Instruments, Inc.
++ * Written by Rajendra Nayak <rnayak@ti.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ *
++ * THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
++ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
++ * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
++ * History:
++ *
++ */
++
++#include <linux/pm_qos_params.h>
++#include <asm/arch/powerdomain.h>
++#include <asm/arch/clockdomain.h>
++#include "resource34xx.h"
++
++/**
++ * init_latency - Initializes the mpu/core latency resource.
++ * @resp: Latency resource to be initalized
++ *
++ * No return value.
++ */
++void init_latency(struct shared_resource *resp)
++{
++ resp->no_of_users = 0;
++ resp->curr_level = RES_DEFAULTLEVEL;
++ *((u8 *)resp->resource_data) = 0;
++ return;
++}
++
++/**
++ * set_latency - Adds/Updates and removes the CPU_DMA_LATENCY in *pm_qos_params.
++ * @resp: resource pointer
++ * @latency: target latency to be set
++ *
++ * Returns 0 on success, or error values as returned by
++ * pm_qos_update_requirement/pm_qos_add_requirement.
++ */
++int set_latency(struct shared_resource *resp, u32 latency)
++{
++ u8 *pm_qos_req_added;
++
++ if (resp->curr_level == latency)
++ return 0;
++ else
++ /* Update the resources current level */
++ resp->curr_level = latency;
++
++ pm_qos_req_added = resp->resource_data;
++ if (latency == RES_DEFAULTLEVEL)
++ /* No more users left, remove the pm_qos_req if present */
++ if (*pm_qos_req_added) {
++ pm_qos_remove_requirement(PM_QOS_CPU_DMA_LATENCY,
++ resp->name);
++ *pm_qos_req_added = 0;
++ return 0;
++ }
++
++ if (*pm_qos_req_added) {
++ return pm_qos_update_requirement(PM_QOS_CPU_DMA_LATENCY,
++ resp->name, latency);
++ } else {
++ *pm_qos_req_added = 1;
++ return pm_qos_add_requirement(PM_QOS_CPU_DMA_LATENCY,
++ resp->name, latency);
++ }
++}
++
++/**
++ * init_pd_latency - Initializes the power domain latency resource.
++ * @resp: Power Domain Latency resource to be initialized.
++ *
++ * No return value.
++ */
++void init_pd_latency(struct shared_resource *resp)
++{
++ struct pd_latency_db *pd_lat_db;
++
++ resp->no_of_users = 0;
++ resp->curr_level = PD_LATENCY_OFF;
++ pd_lat_db = resp->resource_data;
++ /* Populate the power domain associated with the latency resource */
++ pd_lat_db->pd = pwrdm_lookup(pd_lat_db->pwrdm_name);
++ return;
++}
++
++/**
++ * set_pd_latency - Updates the curr_level of the power domain resource.
++ * @resp: Power domain latency resource.
++ * @latency: New latency value acceptable.
++ *
++ * This function maps the latency in microsecs to the acceptable
++ * Power domain state using the latency DB.
++ * It then programs the power domain to enter the target state.
++ * Always returns 0.
++ */
++int set_pd_latency(struct shared_resource *resp, u32 latency)
++{
++ u32 pd_lat_level, ind, i;
++ struct pd_latency_db *pd_lat_db;
++ struct powerdomain *pwrdm;
++
++ pd_lat_db = resp->resource_data;
++ pwrdm = pd_lat_db->pd;
++ pd_lat_level = PD_LATENCY_OFF;
++ /* using the latency db map to the appropriate PD state */
++ for (ind = 0; ind < PD_LATENCY_MAXLEVEL; ind++)
++ if (pd_lat_db->latency[ind] < latency)
++ pd_lat_level = ind;
++
++ resp->curr_level = pd_lat_level;
++ switch (pd_lat_level) {
++ case PWRDM_POWER_OFF:
++ case PWRDM_POWER_RET:
++ /* Errata 1.29: No transitions from INACTIVE to RET/OFF
++ * possible.
++ * Need to be taken care of here.
++ */
++ if (pwrdm_read_pwrst(pwrdm) != PWRDM_POWER_ON) {
++ /* Force the clock domains to ON */
++ for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
++ omap2_clkdm_deny_idle(pwrdm->pwrdm_clkdms[i]);
++ omap2_clkdm_wakeup(pwrdm->pwrdm_clkdms[i]);
++ }
++ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
++ pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
++ for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
++ omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[i]);
++ omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[i]);
++ }
++ } else
++ pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
++ break;
++ case PWRDM_POWER_ON:
++ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
++ break;
++ default:
++ break;
++ }
++ return 0;
++}
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug_to_sysrq_q b/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug_to_sysrq_q
deleted file mode 100644
index aa9f09811a..0000000000
--- a/packages/linux/linux-omap2-git/beagleboard/04-gptimer_add_debug_to_sysrq_q
+++ /dev/null
@@ -1,110 +0,0 @@
-Add extra debug for the q_d_w_o() when work fn is already active.
-
-From: Paul Walmsley <paul@pwsan.com>
-
-
----
-
- arch/arm/mach-omap2/timer-gp.c | 3 ++-
- arch/arm/plat-omap/dmtimer.c | 20 ++++++++++++++++++++
- include/asm-arm/arch-omap/dmtimer.h | 1 +
- kernel/time/timer_list.c | 8 ++++++++
- 4 files changed, 31 insertions(+), 1 deletions(-)
-
-diff --git a/arch/arm/mach-omap2/timer-gp.c b/arch/arm/mach-omap2/timer-gp.c
-index ce5c2b4..e3ed368 100644
---- a/arch/arm/mach-omap2/timer-gp.c
-+++ b/arch/arm/mach-omap2/timer-gp.c
-@@ -50,6 +50,7 @@
- #define GPTIMER_MATCH_VAL (0xffffffff - (32768/2))
-
- static struct omap_dm_timer *gptimer;
-+struct omap_dm_timer *gptimer_pub;
- static struct clock_event_device clockevent_gpt;
-
- static u32 last_load;
-@@ -111,7 +112,7 @@ static void __init omap2_gp_clockevent_init(void)
- {
- u32 tick_rate;
-
-- gptimer = omap_dm_timer_request_specific(1);
-+ gptimer = gptimer_pub = omap_dm_timer_request_specific(1);
- BUG_ON(gptimer == NULL);
-
- #if defined(CONFIG_OMAP_32K_TIMER)
-diff --git a/arch/arm/plat-omap/dmtimer.c b/arch/arm/plat-omap/dmtimer.c
-index e38a11e..b10f8ac 100644
---- a/arch/arm/plat-omap/dmtimer.c
-+++ b/arch/arm/plat-omap/dmtimer.c
-@@ -614,6 +614,26 @@ void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer,
- omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG, value);
- }
-
-+void omap_dm_timer_dump_int_enable(struct omap_dm_timer *timer)
-+{
-+ u32 l;
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_COUNTER_REG);
-+ pr_err("GPT TCRR: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_MATCH_REG);
-+ pr_err("GPT TMAT: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_STAT_REG);
-+ pr_err("GPT TISR: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_INT_EN_REG);
-+ pr_err("GPT TIER: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
-+ pr_err("GPT TCLR: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_INT_MASK_SET_REG);
-+ pr_err("GPT TOCR: %08x\n", l);
-+ l = omap_dm_timer_read_reg(timer, OMAP_TIMER_TICK_INT_MASK_COUNT_REG);
-+ pr_err("GPT TOWR: %08x\n", l);
-+}
-+
-+
- unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer)
- {
- unsigned int l;
-diff --git a/include/asm-arm/arch-omap/dmtimer.h b/include/asm-arm/arch-omap/dmtimer.h
-index 02b29e8..a8123e9 100644
---- a/include/asm-arm/arch-omap/dmtimer.h
-+++ b/include/asm-arm/arch-omap/dmtimer.h
-@@ -73,6 +73,7 @@ void omap_dm_timer_set_prescaler(struct omap_dm_timer *timer, int prescaler);
-
- void omap_dm_timer_set_int_enable(struct omap_dm_timer *timer, unsigned int value);
-
-+void omap_dm_timer_dump_int_enable(struct omap_dm_timer *timer);
- unsigned int omap_dm_timer_read_status(struct omap_dm_timer *timer);
- void omap_dm_timer_write_status(struct omap_dm_timer *timer, unsigned int value);
- unsigned int omap_dm_timer_read_counter(struct omap_dm_timer *timer);
-diff --git a/kernel/time/timer_list.c b/kernel/time/timer_list.c
-index a40e20f..452eab7 100644
---- a/kernel/time/timer_list.c
-+++ b/kernel/time/timer_list.c
-@@ -18,6 +18,8 @@
- #include <linux/kallsyms.h>
- #include <linux/tick.h>
-
-+#include <asm/arch/dmtimer.h>
-+
- #include <asm/uaccess.h>
-
- typedef void (*print_fn_t)(struct seq_file *m, unsigned int *classes);
-@@ -239,6 +241,8 @@ static void timer_list_show_tickdevices(struct seq_file *m)
- static void timer_list_show_tickdevices(struct seq_file *m) { }
- #endif
-
-+extern struct omap_dm_timer *gptimer_pub;
-+
- static int timer_list_show(struct seq_file *m, void *v)
- {
- u64 now = ktime_to_ns(ktime_get());
-@@ -254,6 +258,10 @@ static int timer_list_show(struct seq_file *m, void *v)
- SEQ_printf(m, "\n");
- timer_list_show_tickdevices(m);
-
-+ SEQ_printf(m, "\n");
-+
-+ omap_dm_timer_dump_int_enable(gptimer_pub);
-+
- return 0;
- }
-
diff --git a/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml b/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml
new file mode 100644
index 0000000000..32d767a342
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/04-omappm-srf-noop.eml
@@ -0,0 +1,497 @@
+Adds SRF calls into OMAP PM skeleton layer developed by Paul W.
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/Makefile | 1
+ arch/arm/mach-omap2/clockdomain.c | 7
+ arch/arm/plat-omap/Kconfig | 3
+ arch/arm/plat-omap/Makefile | 4
+ arch/arm/plat-omap/omap-pm-srf.c | 367 ++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-omap/powerdomain.h | 1
+ include/asm-arm/arch-omap/resource.h | 1
+ 7 files changed, 383 insertions(+), 1 deletion(-)
+
+Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-08-11
+17:38:37.000000000 +0530
+@@ -0,0 +1,367 @@
++/*
++ * omap-pm-srf.c - OMAP power management interface implemented
++ * using Shared resource framework
++ *
++ * This code implements the OMAP power management interface to
++ * drivers, CPUIdle, CPUFreq, and DSP Bridge. It is strictly for
++ * debug/demonstration use, as it does nothing but printk() whenever a
++ * function is called (when DEBUG is defined, below)
++ *
++ * Copyright (C) 2008 Texas Instruments, Inc.
++ * Copyright (C) 2008 Nokia Corporation
++ * Paul Walmsley
++ *
++ * Interface developed by (in alphabetical order):
++ * Karthik Dasu, Amish Lakhani, Tony Lindgren, Rajendra Nayak, Sakari
++ * Poussa, Veeramanikandan Raju, Igor Stoppa, Paul Walmsley, Richard
++ * Woodruff
++ *
++ * Interfaces defined by Paul Walmsley
++ * Updated with SRF calls by Rajendra Nayak
++ */
++
++#undef DEBUG
++
++#include <linux/init.h>
++#include <linux/cpufreq.h>
++#include <linux/device.h>
++
++/* Interface documentation is in asm/arch/omap-pm.h */
++#include <asm/arch/omap-pm.h>
++
++#include <asm/arch/powerdomain.h>
++#include <asm/arch/resource.h>
++/*
++#include <asm/arch/tiocp.h>
++*/
++
++#define LAT_RES_POSTAMBLE "_latency"
++char latency_res_name[30];
++/* lat_name_mutex protects latency_res_name*/
++static DEFINE_MUTEX(lat_name_mutex);
++
++
++/**
++ * get_lat_res_name - gets the latency resource name given a power domain name
++ * @pwrdm_name: Name of the power domain.
++ *
++ * Returns a pointer to the latency resource name.
++ */
++static char *get_lat_res_name(const char *pwrdm_name)
++{
++ strcpy(latency_res_name, "");
++ if (!(in_atomic() || irqs_disabled()))
++ mutex_lock(&lat_name_mutex);
++ WARN_ON(strlen(pwrdm_name) + strlen(LAT_RES_POSTAMBLE) >
++ sizeof(latency_res_name));
++ strcpy(latency_res_name, pwrdm_name);
++ strcat(latency_res_name, LAT_RES_POSTAMBLE);
++ if (!(in_atomic() || irqs_disabled()))
++ mutex_unlock(&lat_name_mutex);
++ return latency_res_name;
++}
++
++static struct omap_opp *dsp_opps;
++static struct omap_opp *mpu_opps;
++
++/*
++ * Device-driver-originated constraints (via board-*.c files)
++ */
++
++void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
++{
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (t == -1) {
++ pr_debug("OMAP PM: remove max MPU wakeup latency constraint: "
++ "dev %s\n", dev_name(dev));
++ resource_release("mpu_latency", dev);
++ } else {
++ pr_debug("OMAP PM: add max MPU wakeup latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++ resource_request("mpu_latency", dev, t);
++ }
++}
++
++void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
++{
++ if (!dev || agent_id != OCP_INITIATOR_AGENT ||
++ agent_id != OCP_TARGET_AGENT) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (r == 0)
++ pr_debug("OMAP PM: remove min bus tput constraint: "
++ "dev %s for agent_id %d\n", dev_name(dev), agent_id);
++ else
++ pr_debug("OMAP PM: add min bus tput constraint: "
++ "dev %s for agent_id %d: rate %ld KiB\n",
++ dev_name(dev), agent_id, r);
++
++ /*
++ * This code should model the interconnect and compute the
++ * required clock frequency, convert that to a VDD2 OPP ID, then
++ * set the VDD2 OPP appropriately.
++ *
++ * TI CDP code can call constraint_set here on the VDD2 OPP.
++ */
++}
++
++void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
++{
++ /* struct tiocp *tiocp_dev; */
++ struct powerdomain *pwrdm_dev;
++ char *res_name;
++
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++ /* Look for the devices Power Domain */
++ /* TODO: Put this back in once tiocp layer is available
++ tiocp_dev = container_of(dev, struct tiocp, dev);
++ pwrdm_dev = tiocp_dev->pwrdm;
++ */
++
++ if (t == -1) {
++ pr_debug("OMAP PM: remove max device latency constraint: "
++ "dev %s\n", dev_name(dev));
++ res_name = get_lat_res_name(pwrdm_dev->name);
++ resource_release(res_name, dev);
++ } else {
++ pr_debug("OMAP PM: add max device latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++ res_name = get_lat_res_name(pwrdm_dev->name);
++ resource_request(res_name, dev, t);
++ }
++
++ /*
++ * For current Linux, this needs to map the device to a
++ * powerdomain, then go through the list of current max lat
++ * constraints on that powerdomain and find the smallest. If
++ * the latency constraint has changed, the code should
++ * recompute the state to enter for the next powerdomain
++ * state. Conceivably, this code should also determine
++ * whether to actually disable the device clocks or not,
++ * depending on how long it takes to re-enable the clocks.
++ *
++ * TI CDP code can call constraint_set here.
++ */
++}
++
++void omap_pm_set_max_sdma_lat(struct device *dev, long t)
++{
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (t == -1) {
++ pr_debug("OMAP PM: remove max DMA latency constraint: "
++ "dev %s\n", dev_name(dev));
++ resource_release("core_latency", dev);
++ } else {
++ pr_debug("OMAP PM: add max DMA latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++ resource_request("core_latency", dev, t);
++ }
++
++ /*
++ * For current Linux PM QOS params, this code should scan the
++ * list of maximum CPU and DMA latencies and select the
++ * smallest, then set cpu_dma_latency pm_qos_param
++ * accordingly.
++ *
++ * For future Linux PM QOS params, with separate CPU and DMA
++ * latency params, this code should just set the dma_latency param.
++ *
++ * TI CDP code can call constraint_set here.
++ */
++
++}
++
++
++/*
++ * DSP Bridge-specific constraints
++ */
++
++const struct omap_opp *omap_pm_dsp_get_opp_table(void)
++{
++ pr_debug("OMAP PM: DSP request for OPP table\n");
++
++ /*
++ * Return DSP frequency table here: The final item in the
++ * array should have .rate = .opp_id = 0.
++ */
++
++ return NULL;
++}
++
++void omap_pm_dsp_set_min_opp(u8 opp_id)
++{
++ if (opp_id == 0) {
++ WARN_ON(1);
++ return;
++ }
++
++ pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
++
++ /*
++ *
++ * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
++ * can just test to see which is higher, the CPU's desired OPP
++ * ID or the DSP's desired OPP ID, and use whichever is
++ * highest.
++ *
++ * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
++ * rate is keyed on MPU speed, not the OPP ID. So we need to
++ * map the OPP ID to the MPU speed for use with clk_set_rate()
++ * if it is higher than the current OPP clock rate.
++ *
++ */
++}
++
++
++u8 omap_pm_dsp_get_opp(void)
++{
++ pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
++
++ /*
++ * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
++ *
++ * CDP12.14+:
++ * Call clk_get_rate() on the OPP custom clock, map that to an
++ * OPP ID using the tables defined in board-*.c/chip-*.c files.
++ */
++
++ return 0;
++}
++
++/*
++ * CPUFreq-originated constraint
++ *
++ * In the future, this should be handled by custom OPP clocktype
++ * functions.
++ */
++
++struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void)
++{
++ pr_debug("OMAP PM: CPUFreq request for frequency table\n");
++
++ /*
++ * Return CPUFreq frequency table here: loop over
++ * all VDD1 clkrates, pull out the mpu_ck frequencies, build
++ * table
++ */
++
++ return NULL;
++}
++
++void omap_pm_cpu_set_freq(unsigned long f)
++{
++ if (f == 0) {
++ WARN_ON(1);
++ return;
++ }
++
++ pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
++ f);
++
++ /*
++ * For l-o dev tree, determine whether MPU freq or DSP OPP id
++ * freq is higher. Find the OPP ID corresponding to the
++ * higher frequency. Call clk_round_rate() and clk_set_rate()
++ * on the OPP custom clock.
++ *
++ * CDP should just be able to set the VDD1 OPP clock rate here.
++ */
++}
++
++unsigned long omap_pm_cpu_get_freq(void)
++{
++ pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
++
++ /*
++ * Call clk_get_rate() on the mpu_ck.
++ */
++
++ return 0;
++}
++
++struct device omap_pm_dev;
++
++/*
++ * Powerdomain usecounting hooks
++ */
++
++void omap_pm_pwrdm_active(struct powerdomain *pwrdm)
++{
++ char *res_name;
++
++ if (!pwrdm) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (!strcmp(pwrdm->name, "wkup_pwrdm") ||
++ !strcmp(pwrdm->name, "core_pwrdm"))
++ return;
++
++ pr_debug("OMAP PM: powerdomain %s is becoming active\n", pwrdm->name);
++
++ res_name = get_lat_res_name(pwrdm->name);
++ /* Request for a zero latency which puts the Power Domain in ON state*/
++ resource_request(res_name, &omap_pm_dev, 0);
++ return;
++}
++
++void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm)
++{
++ char *res_name;
++
++ if (!pwrdm) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (!strcmp(pwrdm->name, "wkup_pwrdm") ||
++ !strcmp(pwrdm->name, "core_pwrdm"))
++ return;
++
++ pr_debug("OMAP PM: powerdomain %s is becoming inactive\n",
++ pwrdm->name);
++
++ res_name = get_lat_res_name(pwrdm->name);
++ /* Release the latency requested */
++ resource_release(res_name, &omap_pm_dev);
++ return;
++}
++
++/*
++ * Should be called before clk framework since clk fw will call
++ * omap_pm_pwrdm_{in,}active()
++ */
++int __init omap_pm_if_early_init(void)
++{
++ return 0;
++}
++
++/* Must be called after clock framework is initialized */
++int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
++ struct omap_opp *dsp_opp_table)
++{
++ mpu_opps = mpu_opp_table;
++ dsp_opps = dsp_opp_table;
++ resource_init(resources_omap);
++ return 0;
++}
++
++void omap_pm_if_exit(void)
++{
++ /* Deallocate CPUFreq frequency table here */
++}
++
+Index: linux-omap-2.6/arch/arm/mach-omap2/clockdomain.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/clockdomain.c 2008-08-11
+17:12:19.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/clockdomain.c 2008-08-11
+17:14:31.000000000 +0530
+@@ -35,6 +35,7 @@
+
+ #include <asm/arch/powerdomain.h>
+ #include <asm/arch/clockdomain.h>
++#include <asm/arch/omap-pm.h>
+
+ /* clkdm_list contains all registered struct clockdomains */
+ static LIST_HEAD(clkdm_list);
+@@ -561,6 +562,9 @@ int omap2_clkdm_clk_enable(struct clockd
+ else
+ omap2_clkdm_wakeup(clkdm);
+
++ /*Hook to inform the OMAP PM layer that the pwrdm has become active */
++ omap_pm_pwrdm_active(clkdm->pwrdm.ptr);
++
+ return 0;
+ }
+
+@@ -612,6 +616,9 @@ int omap2_clkdm_clk_disable(struct clock
+ else
+ omap2_clkdm_sleep(clkdm);
+
++ /*Hook to inform the OMAP PM layer that the pwrdm has become inactive */
++ omap_pm_pwrdm_inactive(clkdm->pwrdm.ptr);
++
+ return 0;
+ }
+
+Index: linux-omap-2.6/include/asm-arm/arch-omap/powerdomain.h
+===================================================================
+--- linux-omap-2.6.orig/include/asm-arm/arch-omap/powerdomain.h 2008-08-11
+17:12:19.000000000 +0530
++++ linux-omap-2.6/include/asm-arm/arch-omap/powerdomain.h 2008-08-11
+17:14:31.000000000 +0530
+@@ -148,6 +148,7 @@ int pwrdm_read_next_pwrst(struct powerdo
+ int pwrdm_read_pwrst(struct powerdomain *pwrdm);
+ int pwrdm_read_prev_pwrst(struct powerdomain *pwrdm);
+ int pwrdm_clear_all_prev_pwrst(struct powerdomain *pwrdm);
++int pwrdm_read_pwrst(struct powerdomain *pwrdm);
+
+ int pwrdm_set_logic_retst(struct powerdomain *pwrdm, u8 pwrst);
+ int pwrdm_set_mem_onst(struct powerdomain *pwrdm, u8 bank, u8 pwrst);
+Index: linux-omap-2.6/arch/arm/mach-omap2/Makefile
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/Makefile 2008-08-11
+17:12:19.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/Makefile 2008-08-11 17:14:31.000000000
++0530
+@@ -34,6 +34,7 @@ obj-$(CONFIG_OMAP_SMARTREFLEX) += smart
+ # Clock framework
+ obj-$(CONFIG_ARCH_OMAP2) += clock24xx.o
+ obj-$(CONFIG_ARCH_OMAP3) += clock34xx.o
++obj-$(CONFIG_OMAP_PM_SRF) += resource34xx.o
+
+ # DSP
+ obj-$(CONFIG_OMAP_MMU_FWK) += mmu_mach.o
+Index: linux-omap-2.6/arch/arm/plat-omap/Kconfig
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/plat-omap/Kconfig 2008-08-11
+17:12:25.000000000 +0530
++++ linux-omap-2.6/arch/arm/plat-omap/Kconfig 2008-08-11 17:14:31.000000000 +0530
+@@ -258,6 +258,9 @@ config OMAP_PM_NONE
+ config OMAP_PM_NOOP
+ bool "No-op/debug PM layer"
+
++config OMAP_PM_SRF
++ bool "PM layer implemented using SRF"
++
+ endchoice
+
+ endif
+Index: linux-omap-2.6/arch/arm/plat-omap/Makefile
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/plat-omap/Makefile 2008-08-11
+17:12:25.000000000 +0530
++++ linux-omap-2.6/arch/arm/plat-omap/Makefile 2008-08-11 17:14:31.000000000 +0530
+@@ -29,4 +29,6 @@ obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o
+ # OMAP mailbox framework
+ obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
+
+-obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
+\ No newline at end of file
++obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
++obj-$(CONFIG_OMAP_PM_SRF) += omap-pm-srf.o \
++ resource.o
+Index: linux-omap-2.6/include/asm-arm/arch-omap/resource.h
+===================================================================
+--- linux-omap-2.6.orig/include/asm-arm/arch-omap/resource.h 2008-08-11
+17:12:30.000000000 +0530
++++ linux-omap-2.6/include/asm-arm/arch-omap/resource.h 2008-08-11
+17:14:31.000000000 +0530
+@@ -85,6 +85,7 @@ struct users_list {
+ u8 usage;
+ };
+
++extern struct shared_resource *resources_omap[];
+ /* Shared resource Framework API's */
+ void resource_init(struct shared_resource **resources);
+ int resource_register(struct shared_resource *res);
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml b/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml
new file mode 100644
index 0000000000..0aaed7b91c
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/05-omappm-virtualclocks.eml
@@ -0,0 +1,456 @@
+The patch defines virtual nodes for VDD1 and VDD2
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/board-3430sdp.c | 38 +++++
+ arch/arm/mach-omap2/clock34xx.c | 206 +++++++++++++++++++++++++-----
+ arch/arm/mach-omap2/clock34xx.h | 29 ++++
+ include/asm-arm/arch-omap/board-3430sdp.h | 35 +++++
+ include/asm-arm/arch-omap/clock.h | 8 +
+ 5 files changed, 287 insertions(+), 29 deletions(-)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.h
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.h 2008-08-06
+14:55:12.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.h 2008-08-07
+15:07:19.000000000 +0530
+@@ -36,6 +36,14 @@ static int omap3_noncore_dpll_enable(str
+ static void omap3_noncore_dpll_disable(struct clk *clk);
+ static int omap3_noncore_dpll_set_rate(struct clk *clk, unsigned long rate);
+ static int omap3_core_dpll_m2_set_rate(struct clk *clk, unsigned long rate);
++static void omap3_table_recalc(struct clk *clk);
++static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate);
++static int omap3_select_table_rate(struct clk *clk, unsigned long rate);
++
++extern struct vdd_prcm_config vdd1_rate_table[];
++extern struct vdd_prcm_config vdd2_rate_table[];
++extern struct vdd_prcm_config iva2_rate_table[];
++
+
+ /* Maximum DPLL multiplier, divider values for OMAP3 */
+ #define OMAP3_MAX_DPLL_MULT 2048
+@@ -3064,6 +3072,24 @@ static struct clk wdt1_fck = {
+ .recalc = &followparent_recalc,
+ };
+
++static struct clk virt_vdd1_prcm_set = {
++ .name = "virt_vdd1_prcm_set",
++ .flags = CLOCK_IN_OMAP343X | VIRTUAL_CLOCK | ALWAYS_ENABLED,
++ .parent = &mpu_ck, /* Indexed by mpu speed, no parent */
++ .recalc = &omap3_table_recalc, /*sets are keyed on mpu rate */
++ .set_rate = &omap3_select_table_rate,
++ .round_rate = &omap3_round_to_table_rate,
++};
++
++static struct clk virt_vdd2_prcm_set = {
++ .name = "virt_vdd2_prcm_set",
++ .flags = CLOCK_IN_OMAP343X | VIRTUAL_CLOCK | ALWAYS_ENABLED,
++ .parent = &core_ck,
++ .recalc = &omap3_table_recalc,
++ .set_rate = &omap3_select_table_rate,
++ .round_rate = &omap3_round_to_table_rate,
++};
++
+ static struct clk *onchip_34xx_clks[] __initdata = {
+ &omap_32k_fck,
+ &virt_12m_ck,
+@@ -3276,6 +3302,9 @@ static struct clk *onchip_34xx_clks[] __
+ &secure_32k_fck,
+ &gpt12_fck,
+ &wdt1_fck,
++ /* virtual group clock */
++ &virt_vdd1_prcm_set,
++ &virt_vdd2_prcm_set,
+ };
+
+ #endif
+Index: linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/clock34xx.c 2008-08-07
+14:34:23.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/clock34xx.c 2008-08-07
+15:07:19.000000000 +0530
+@@ -25,6 +25,7 @@
+ #include <linux/clk.h>
+ #include <linux/io.h>
+ #include <linux/limits.h>
++#include <linux/err.h>
+
+ #include <asm/arch/clock.h>
+ #include <asm/arch/sram.h>
+@@ -45,6 +46,32 @@
+
+ #define MAX_DPLL_WAIT_TRIES 1000000
+
++struct vdd_prcm_config *curr_vdd1_prcm_set;
++struct vdd_prcm_config *curr_vdd2_prcm_set;
++static struct clk *dpll1_clk, *dpll2_clk, *dpll3_clk;
++
++#ifndef CONFIG_CPU_FREQ
++static unsigned long compute_lpj(unsigned long ref, u_int div, u_int mult)
++{
++ unsigned long new_jiffy_l, new_jiffy_h;
++
++ /*
++ * Recalculate loops_per_jiffy. We do it this way to
++ * avoid math overflow on 32-bit machines. Maybe we
++ * should make this architecture dependent? If you have
++ * a better way of doing this, please replace!
++ *
++ * new = old * mult / div
++ */
++ new_jiffy_h = ref / div;
++ new_jiffy_l = (ref % div) / 100;
++ new_jiffy_h *= mult;
++ new_jiffy_l = new_jiffy_l * mult / div;
++
++ return new_jiffy_h + new_jiffy_l * 100;
++}
++#endif
++
+ /**
+ * omap3_dpll_recalc - recalculate DPLL rate
+ * @clk: DPLL struct clk
+@@ -644,15 +671,6 @@ void omap2_clk_prepare_for_reboot(void)
+ */
+ static int __init omap2_clk_arch_init(void)
+ {
+- if (!mpurate)
+- return -EINVAL;
+-
+- /* REVISIT: not yet ready for 343x */
+-#if 0
+- if (omap2_select_table_rate(&virt_prcm_set, mpurate))
+- printk(KERN_ERR "Could not find matching MPU rate\n");
+-#endif
+-
+ recalculate_root_clocks();
+
+ printk(KERN_INFO "Switched to new clocking rate (Crystal/DPLL3/MPU): "
+@@ -670,6 +688,9 @@ int __init omap2_clk_init(void)
+ struct clk **clkp;
+ /* u32 clkrate; */
+ u32 cpu_clkflg;
++ unsigned long mpu_speed, core_speed;
++ struct vdd_prcm_config *prcm_vdd;
++
+
+ /* REVISIT: Ultimately this will be used for multiboot */
+ #if 0
+@@ -712,22 +733,31 @@ int __init omap2_clk_init(void)
+ }
+ }
+
+- /* REVISIT: Not yet ready for OMAP3 */
+-#if 0
+- /* Check the MPU rate set by bootloader */
+- clkrate = omap2_get_dpll_rate_24xx(&dpll_ck);
+- for (prcm = rate_table; prcm->mpu_speed; prcm++) {
+- if (!(prcm->flags & cpu_mask))
+- continue;
+- if (prcm->xtal_speed != sys_ck.rate)
+- continue;
+- if (prcm->dpll_speed <= clkrate)
+- break;
++ recalculate_root_clocks();
++
++ dpll1_clk = clk_get(NULL, "dpll1_ck");
++ dpll2_clk = clk_get(NULL, "dpll2_ck");
++ dpll3_clk = clk_get(NULL, "dpll3_ck");
++
++#ifdef CONFIG_MACH_OMAP_3430SDP
++ mpu_speed = dpll1_clk->rate;
++ prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
++ for (; prcm_vdd->speed; prcm_vdd--) {
++ if (prcm_vdd->speed <= mpu_speed) {
++ curr_vdd1_prcm_set = prcm_vdd;
++ break;
++ }
+ }
+- curr_prcm_set = prcm;
+-#endif
+
+- recalculate_root_clocks();
++ core_speed = dpll3_clk->rate;
++ prcm_vdd = vdd2_rate_table + MAX_VDD2_OPP;
++ for (; prcm_vdd->speed; prcm_vdd--) {
++ if (prcm_vdd->speed <= core_speed) {
++ curr_vdd2_prcm_set = prcm_vdd;
++ break;
++ }
++ }
++#endif
+
+ printk(KERN_INFO "Clocking rate (Crystal/DPLL/ARM core): "
+ "%ld.%01ld/%ld/%ld MHz\n",
+@@ -740,13 +770,131 @@ int __init omap2_clk_init(void)
+ */
+ clk_enable_init_clocks();
+
+- /* Avoid sleeping during omap2_clk_prepare_for_reboot() */
+- /* REVISIT: not yet ready for 343x */
+-#if 0
+- vclk = clk_get(NULL, "virt_prcm_set");
+- sclk = clk_get(NULL, "sys_ck");
+-#endif
+ return 0;
+ }
+
++inline unsigned int get_freq(struct vdd_prcm_config *opp_freq_table,
++ unsigned long opp)
++{
++ struct vdd_prcm_config *prcm_config;
++ prcm_config = opp_freq_table;
++
++ for (; prcm_config->opp; prcm_config--)
++ if (prcm_config->opp == opp)
++ return prcm_config->speed;
++ return 0;
++}
++
++inline unsigned int get_opp(struct vdd_prcm_config *opp_freq_table,
++ unsigned long freq)
++{
++ struct vdd_prcm_config *prcm_config;
++ prcm_config = opp_freq_table;
++
++ if (prcm_config->speed <= freq)
++ return prcm_config->opp; /* Return the Highest OPP */
++ for (; prcm_config->speed; prcm_config--) {
++ if (prcm_config->speed < freq)
++ return (prcm_config+1)->opp;
++ else if (prcm_config->speed == freq)
++ return prcm_config->opp;
++ }
++ /* Return the least OPP */
++ return (prcm_config+1)->opp;
++}
++
++#ifdef CONFIG_MACH_OMAP_3430SDP
++static void omap3_table_recalc(struct clk *clk)
++{
++ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
++ return;
++
++ if ((curr_vdd1_prcm_set) && (clk == &virt_vdd1_prcm_set))
++ clk->rate = curr_vdd1_prcm_set->speed;
++ else if ((curr_vdd2_prcm_set) && (clk == &virt_vdd2_prcm_set))
++ clk->rate = curr_vdd2_prcm_set->speed;
++ pr_debug("CLK RATE:%lu\n", clk->rate);
++}
++
++static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate)
++{
++ struct vdd_prcm_config *ptr;
++ long highest_rate;
++
++ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
++ return -EINVAL;
++
++ highest_rate = -EINVAL;
++
++ if (clk == &virt_vdd1_prcm_set)
++ ptr = vdd1_rate_table + MAX_VDD1_OPP;
++ else
++ ptr = vdd2_rate_table + MAX_VDD2_OPP;
++
++ for (; ptr->speed; ptr--) {
++ highest_rate = ptr->speed;
++ pr_debug("Highest speed : %lu, rate: %lu\n", highest_rate,
++ rate);
++ if (ptr->speed <= rate)
++ break;
++ }
++ return highest_rate;
++}
++
++static int omap3_select_table_rate(struct clk *clk, unsigned long rate)
++{
++ struct vdd_prcm_config *prcm_vdd;
++ unsigned long found_speed = 0, curr_mpu_speed;
++ int index;
++
++ if ((clk != &virt_vdd1_prcm_set) && (clk != &virt_vdd2_prcm_set))
++ return -EINVAL;
++
++ if (clk == &virt_vdd1_prcm_set) {
++ prcm_vdd = vdd1_rate_table + MAX_VDD1_OPP;
++ index = MAX_VDD1_OPP;
++ } else if (clk == &virt_vdd2_prcm_set) {
++ prcm_vdd = vdd2_rate_table + MAX_VDD2_OPP;
++ index = MAX_VDD2_OPP;
++ }
++
++ for (; prcm_vdd->speed; prcm_vdd--, index--) {
++ if (prcm_vdd->speed <= rate) {
++ found_speed = prcm_vdd->speed;
++ pr_debug("Found speed = %lu\n", found_speed);
++ break;
++ }
++ }
++
++ if (!found_speed) {
++ printk(KERN_INFO "Could not set table rate to %luMHz\n",
++ rate / 1000000);
++ return -EINVAL;
++ }
++
++
++ if (clk == &virt_vdd1_prcm_set) {
++ curr_mpu_speed = curr_vdd1_prcm_set->speed;
++ clk_set_rate(dpll1_clk, prcm_vdd->speed);
++ clk_set_rate(dpll2_clk, iva2_rate_table[index].speed);
++ curr_vdd1_prcm_set = prcm_vdd;
++#ifndef CONFIG_CPU_FREQ
++ /*Update loops_per_jiffy if processor speed is being changed*/
++ loops_per_jiffy = compute_lpj(loops_per_jiffy,
++ curr_mpu_speed/1000, found_speed/1000);
+ #endif
++ } else {
++ clk_set_rate(dpll3_clk, prcm_vdd->speed);
++ curr_vdd2_prcm_set = prcm_vdd;
++ }
++ return 0;
++}
++#else /* CONFIG_MACH_OMAP_3430SDP */
++static void omap3_table_recalc(struct clk *clk) {}
++static long omap3_round_to_table_rate(struct clk *clk, unsigned long rate)
++{ return 0; }
++static int omap3_select_table_rate(struct clk *clk, unsigned long rate)
++{ return 0; }
++#endif /* CONFIG_MACH_OMAP_3430SDP */
++
++#endif /* CONFIG_ARCH_OMAP3 */
+Index: linux-omap-2.6/include/asm-arm/arch-omap/clock.h
+===================================================================
+--- linux-omap-2.6.orig/include/asm-arm/arch-omap/clock.h 2008-08-07
+14:34:23.000000000 +0530
++++ linux-omap-2.6/include/asm-arm/arch-omap/clock.h 2008-08-07
+15:07:19.000000000 +0530
+@@ -126,6 +126,14 @@ struct clk_functions {
+ #endif
+ };
+
++#ifdef CONFIG_ARCH_OMAP3
++struct vdd_prcm_config {
++ unsigned long speed;
++ unsigned long opp;
++ unsigned long flags;
++};
++#endif
++
+ extern unsigned int mpurate;
+
+ extern int clk_init(struct clk_functions *custom_clocks);
+Index: linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/board-3430sdp.c 2008-08-06
+14:55:12.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c 2008-08-07
+15:07:50.000000000 +0530
+@@ -40,6 +40,7 @@
+ #include <asm/arch/keypad.h>
+ #include <asm/arch/dma.h>
+ #include <asm/arch/gpmc.h>
++#include <asm/arch/clock.h>
+ #include <linux/i2c/twl4030-rtc.h>
+
+ #include <asm/io.h>
+@@ -53,6 +54,43 @@
+ #define ENABLE_VAUX3_DEDICATED 0x03
+ #define ENABLE_VAUX3_DEV_GRP 0x20
+
++struct vdd_prcm_config vdd1_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {S125M, VDD1_OPP1, 0},
++ /*OPP2*/
++ {S250M, VDD1_OPP2, 0},
++ /*OPP3*/
++ {S500M, VDD1_OPP3, 0},
++ /*OPP4*/
++ {S550M, VDD1_OPP4, 0},
++ /*OPP5*/
++ {S600M, VDD1_OPP5, 0},
++};
++
++struct vdd_prcm_config vdd2_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {0, VDD2_OPP1, 0},
++ /*OPP2*/
++ {S83M, VDD2_OPP2, 0},
++ /*OPP3*/
++ {S166M, VDD2_OPP3, 0},
++};
++
++struct vdd_prcm_config iva2_rate_table[] = {
++ {0, 0, 0},
++ /*OPP1*/
++ {S90M, VDD1_OPP1, 0},
++ /*OPP2*/
++ {S180M, VDD1_OPP2, 0},
++ /*OPP3*/
++ {S360M, VDD1_OPP3, 0},
++ /*OPP4*/
++ {S400M, VDD1_OPP4, 0},
++ /*OPP5*/
++ {S430M, VDD1_OPP5, 0},
++};
+
+ #define TWL4030_MSECURE_GPIO 22
+
+Index: linux-omap-2.6/include/asm-arm/arch-omap/board-3430sdp.h
+===================================================================
+--- linux-omap-2.6.orig/include/asm-arm/arch-omap/board-3430sdp.h 2008-08-06
+14:55:22.000000000 +0530
++++ linux-omap-2.6/include/asm-arm/arch-omap/board-3430sdp.h 2008-08-07
+15:07:19.000000000 +0530
+@@ -68,5 +68,40 @@ extern void twl4030_bci_battery_init(voi
+ #define FLASH_SIZE_SDPV1 SZ_64M
+ #define FLASH_SIZE_SDPV2 SZ_128M
+
++/* MPU speeds */
++#define S600M 600000000
++#define S550M 550000000
++#define S500M 500000000
++#define S250M 250000000
++#define S125M 125000000
++
++/* IVA speeds */
++#define S430M 430000000
++#define S400M 400000000
++#define S360M 360000000
++#define S180M 180000000
++#define S90M 90000000
++
++/* L3 speeds */
++#define S83M 83000000
++#define S166M 166000000
++
++/* VDD1 OPPS */
++#define VDD1_OPP1 0x1
++#define VDD1_OPP2 0x2
++#define VDD1_OPP3 0x3
++#define VDD1_OPP4 0x4
++#define VDD1_OPP5 0x5
++
++/* VDD2 OPPS */
++#define VDD2_OPP1 0x1
++#define VDD2_OPP2 0x2
++#define VDD2_OPP3 0x3
++
++#define MIN_VDD1_OPP VDD1_OPP1
++#define MAX_VDD1_OPP VDD1_OPP5
++#define MIN_VDD2_OPP VDD2_OPP1
++#define MAX_VDD2_OPP VDD2_OPP3
++
+ #endif /* __ASM_ARCH_OMAP_3430SDP_H */
+
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml b/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml
new file mode 100644
index 0000000000..69ed0f748c
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/06-omappm-opp-resource-modeling.eml
@@ -0,0 +1,228 @@
+Adds OPP/Frequency resources to SRF
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/resource34xx.c | 101 +++++++++++++++++++++++++++++++++++++
+ arch/arm/mach-omap2/resource34xx.h | 74 +++++++++++++++++++++++++++
+ 2 files changed, 175 insertions(+)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-07
+15:07:08.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-07
+15:09:01.000000000 +0530
+@@ -146,3 +146,104 @@ int set_pd_latency(struct shared_resourc
+ }
+ return 0;
+ }
++
++static struct clk *vdd1_clk;
++static struct clk *vdd2_clk;
++static struct device dummy_srf_dev;
++
++/**
++ * init_opp - Initialize the OPP resource
++ */
++void init_opp(struct shared_resource *resp)
++{
++ resp->no_of_users = 0;
++ /* Initialize the current level of the OPP resource
++ * to the opp set by u-boot.
++ */
++ if (strcmp(resp->name, "vdd1_opp") == 0) {
++ resp->curr_level = curr_vdd1_prcm_set->opp;
++ vdd1_clk = clk_get(NULL, "virt_vdd1_prcm_set");
++ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
++ resp->curr_level = curr_vdd2_prcm_set->opp;
++ vdd2_clk = clk_get(NULL, "virt_vdd2_prcm_set");
++ }
++ return;
++}
++
++int set_opp(struct shared_resource *resp, u32 target_level)
++{
++#ifdef CONFIG_MACH_OMAP_3430SDP
++ unsigned long mpu_freq;
++ if (strcmp(resp->name, "vdd1_opp") == 0) {
++ mpu_freq = get_freq(vdd1_rate_table + MAX_VDD1_OPP,
++ target_level);
++ clk_set_rate(vdd1_clk, mpu_freq);
++ resp->curr_level = curr_vdd1_prcm_set->opp;
++ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
++ /* Not supported yet */
++ }
++#endif
++ return 0;
++}
++
++/**
++ * validate_opp - Validates if valid VDD1 OPP's are passed as the
++ * target_level.
++ * VDD2 OPP levels are passed as L3 throughput, which are then mapped
++ * to an appropriate OPP.
++ */
++int validate_opp(struct shared_resource *resp, u32 target_level)
++{
++ return 0;
++}
++
++/**
++ * init_freq - Initialize the frequency resource.
++ */
++void init_freq(struct shared_resource *resp)
++{
++#ifdef CONFIG_MACH_OMAP_3430SDP
++ char *linked_res_name;
++ resp->no_of_users = 0;
++
++ linked_res_name = (char *)resp->resource_data;
++ /* Initialize the current level of the Freq resource
++ * to the frequency set by u-boot.
++ */
++ if (strcmp(resp->name, "mpu_freq") == 0)
++ /* MPU freq in Mhz */
++ resp->curr_level = curr_vdd1_prcm_set->speed;
++ else if (strcmp(resp->name, "dsp_freq") == 0)
++ /* DSP freq in Mhz */
++ resp->curr_level = get_freq(iva2_rate_table + MAX_VDD2_OPP,
++ curr_vdd1_prcm_set->opp);
++#endif
++ return;
++}
++
++int set_freq(struct shared_resource *resp, u32 target_level)
++{
++#ifdef CONFIG_MACH_OMAP_3430SDP
++ unsigned int vdd1_opp;
++
++ if (strcmp(resp->name, "mpu_freq") == 0)
++ vdd1_opp = get_opp(vdd1_rate_table + MAX_VDD1_OPP,
++ target_level);
++ else if (strcmp(resp->name, "dsp_freq") == 0)
++ vdd1_opp = get_opp(iva2_rate_table + MAX_VDD1_OPP,
++ target_level);
++
++ if (vdd1_opp == MIN_VDD1_OPP)
++ resource_release("vdd1_opp", &dummy_srf_dev);
++ else
++ resource_request("vdd1_opp", &dummy_srf_dev, vdd1_opp);
++
++ resp->curr_level = target_level;
++#endif
++ return 0;
++}
++
++int validate_freq(struct shared_resource *resp, u32 target_level)
++{
++ return 0;
++}
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.h 2008-08-07
+15:07:02.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-07
+15:31:42.000000000 +0530
+@@ -22,8 +22,17 @@
+ #define __ARCH_ARM_MACH_OMAP2_RESOURCE_H
+
+ #include <asm/arch/resource.h>
++#include <linux/clk.h>
++#include <asm/arch/clock.h>
+ #include <asm/arch/powerdomain.h>
+
++extern struct vdd_prcm_config *curr_vdd1_prcm_set;
++extern struct vdd_prcm_config *curr_vdd2_prcm_set;
++extern unsigned int get_freq(struct vdd_prcm_config *, unsigned long);
++extern unsigned int get_opp(struct vdd_prcm_config *, unsigned long);
++extern struct vdd_prcm_config vdd1_rate_table[];
++extern struct vdd_prcm_config vdd2_rate_table[];
++extern struct vdd_prcm_config iva2_rate_table[];
+ /**
+ * mpu_latency/core_latency are used to control the cpuidle C state.
+ */
+@@ -207,6 +216,66 @@ static struct shared_resource emu_pwrdm_
+ .ops = &pd_lat_res_ops,
+ };
+
++void init_opp(struct shared_resource *resp);
++int set_opp(struct shared_resource *resp, u32 target_level);
++int validate_opp(struct shared_resource *resp, u32 target_level);
++void init_freq(struct shared_resource *resp);
++int set_freq(struct shared_resource *resp, u32 target_level);
++int validate_freq(struct shared_resource *resp, u32 target_level);
++
++struct bus_throughput_db {
++ /* Throughput for each OPP/Freq of the bus */
++ unsigned long throughput[3];
++};
++
++static struct shared_resource_ops opp_res_ops = {
++ .init = init_opp,
++ .change_level = set_opp,
++ .validate_level = validate_opp,
++};
++
++static struct shared_resource vdd1_opp = {
++ .name = "vdd1_opp",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .ops = &opp_res_ops,
++};
++
++/* Throughput in KiB/s */
++static struct bus_throughput_db l3_throughput_db = {
++ .throughput[0] = 0,
++ .throughput[1] = 100,
++ .throughput[2] = 250,
++};
++
++static struct shared_resource vdd2_opp = {
++ .name = "vdd2_opp",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &l3_throughput_db,
++ .ops = &opp_res_ops,
++};
++
++static char linked_res[] = "vdd1_opp";
++
++static struct shared_resource_ops freq_res_ops = {
++ .init = init_freq,
++ .change_level = set_freq,
++ .validate_level = validate_freq,
++};
++
++static struct shared_resource mpu_freq = {
++ .name = "mpu_freq",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &linked_res,
++ .ops = &freq_res_ops,
++};
++
++static struct shared_resource dsp_freq = {
++ .name = "dsp_freq",
++ .omap_chip = OMAP_CHIP_INIT(CHIP_IS_OMAP3430),
++ .resource_data = &linked_res,
++ .ops = &freq_res_ops,
++};
++
+ struct shared_resource *resources_omap[] __initdata = {
+ &mpu_latency,
+ &core_latency,
+@@ -220,6 +289,11 @@ struct shared_resource *resources_omap[]
+ &neon_pwrdm_latency,
+ &usbhost_pwrdm_latency,
+ &emu_pwrdm_latency,
++ /* OPP/frequency resources */
++ &vdd1_opp,
++ &vdd2_opp,
++ &mpu_freq,
++ &dsp_freq,
+ NULL
+ };
+
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml b/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml
new file mode 100644
index 0000000000..735e991298
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/07-omappm-srf-updates.eml
@@ -0,0 +1,173 @@
+Updates the omap-pm apis with calls to SRF implementation
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/plat-omap/omap-pm-srf.c | 84 +++++++++------------------------------
+ 1 files changed, 20 insertions(+), 64 deletions(-)
+
+Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
+12:10:19.824596984 +0530
++++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
+12:10:21.626540178 +0530
+@@ -25,6 +25,7 @@
+ #include <linux/init.h>
+ #include <linux/cpufreq.h>
+ #include <linux/device.h>
++#include <linux/module.h>
+
+ /* Interface documentation is in asm/arch/omap-pm.h */
+ #include <asm/arch/omap-pm.h>
+@@ -121,6 +122,7 @@ void omap_pm_set_max_dev_wakeup_lat(stru
+ WARN_ON(1);
+ return;
+ };
++
+ /* Look for the devices Power Domain */
+ /* TODO: Put this back in once tiocp layer is available
+ tiocp_dev = container_of(dev, struct tiocp, dev);
+@@ -138,19 +140,6 @@ void omap_pm_set_max_dev_wakeup_lat(stru
+ res_name = get_lat_res_name(pwrdm_dev->name);
+ resource_request(res_name, dev, t);
+ }
+-
+- /*
+- * For current Linux, this needs to map the device to a
+- * powerdomain, then go through the list of current max lat
+- * constraints on that powerdomain and find the smallest. If
+- * the latency constraint has changed, the code should
+- * recompute the state to enter for the next powerdomain
+- * state. Conceivably, this code should also determine
+- * whether to actually disable the device clocks or not,
+- * depending on how long it takes to re-enable the clocks.
+- *
+- * TI CDP code can call constraint_set here.
+- */
+ }
+
+ void omap_pm_set_max_sdma_lat(struct device *dev, long t)
+@@ -169,21 +158,9 @@ void omap_pm_set_max_sdma_lat(struct dev
+ "dev %s, t = %ld usec\n", dev_name(dev), t);
+ resource_request("core_latency", dev, t);
+ }
+-
+- /*
+- * For current Linux PM QOS params, this code should scan the
+- * list of maximum CPU and DMA latencies and select the
+- * smallest, then set cpu_dma_latency pm_qos_param
+- * accordingly.
+- *
+- * For future Linux PM QOS params, with separate CPU and DMA
+- * latency params, this code should just set the dma_latency param.
+- *
+- * TI CDP code can call constraint_set here.
+- */
+-
+ }
+
++static struct device dummy_dsp_dev;
+
+ /*
+ * DSP Bridge-specific constraints
+@@ -200,6 +177,7 @@ const struct omap_opp *omap_pm_dsp_get_o
+
+ return NULL;
+ }
++EXPORT_SYMBOL(omap_pm_dsp_get_opp_table);
+
+ void omap_pm_dsp_set_min_opp(u8 opp_id)
+ {
+@@ -210,36 +188,21 @@ void omap_pm_dsp_set_min_opp(u8 opp_id)
+
+ pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
+
+- /*
+- *
+- * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
+- * can just test to see which is higher, the CPU's desired OPP
+- * ID or the DSP's desired OPP ID, and use whichever is
+- * highest.
+- *
+- * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
+- * rate is keyed on MPU speed, not the OPP ID. So we need to
+- * map the OPP ID to the MPU speed for use with clk_set_rate()
+- * if it is higher than the current OPP clock rate.
+- *
+- */
+-}
++ /* For now pass a dummy_dev struct for SRF to identify the caller.
++ * Maybe its good to have DSP pass this as an argument
++ */
++ resource_request("vdd1_opp", &dummy_dsp_dev, opp_id);
++ return;
+
++}
++EXPORT_SYMBOL(omap_pm_dsp_set_min_opp);
+
+ u8 omap_pm_dsp_get_opp(void)
+ {
+ pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
+-
+- /*
+- * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
+- *
+- * CDP12.14+:
+- * Call clk_get_rate() on the OPP custom clock, map that to an
+- * OPP ID using the tables defined in board-*.c/chip-*.c files.
+- */
+-
+- return 0;
++ return resource_get_level("vdd1_opp");
+ }
++EXPORT_SYMBOL(omap_pm_dsp_get_opp);
+
+ /*
+ * CPUFreq-originated constraint
+@@ -261,6 +224,8 @@ struct cpufreq_frequency_table **omap_pm
+ return NULL;
+ }
+
++static struct device dummy_cpufreq_dev;
++
+ void omap_pm_cpu_set_freq(unsigned long f)
+ {
+ if (f == 0) {
+@@ -271,26 +236,17 @@ void omap_pm_cpu_set_freq(unsigned long
+ pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
+ f);
+
+- /*
+- * For l-o dev tree, determine whether MPU freq or DSP OPP id
+- * freq is higher. Find the OPP ID corresponding to the
+- * higher frequency. Call clk_round_rate() and clk_set_rate()
+- * on the OPP custom clock.
+- *
+- * CDP should just be able to set the VDD1 OPP clock rate here.
+- */
++ resource_request("mpu_freq", &dummy_cpufreq_dev, f);
++ return;
+ }
++EXPORT_SYMBOL(omap_pm_cpu_set_freq);
+
+ unsigned long omap_pm_cpu_get_freq(void)
+ {
+ pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
+-
+- /*
+- * Call clk_get_rate() on the mpu_ck.
+- */
+-
+- return 0;
++ return resource_get_level("mpu_freq");
+ }
++EXPORT_SYMBOL(omap_pm_cpu_get_freq);
+
+ struct device omap_pm_dev;
+
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml b/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml
new file mode 100644
index 0000000000..a7885774f4
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/08-omappm-voltagescaling.eml
@@ -0,0 +1,96 @@
+Adds Voltage scaling support
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/board-3430sdp.c | 12 ++++++++++++
+ arch/arm/mach-omap2/resource34xx.c | 17 ++++++++++++++++-
+ arch/arm/mach-omap2/resource34xx.h | 3 +++
+ 3 files changed, 31 insertions(+), 1 deletion(-)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/board-3430sdp.c 2008-08-11
+17:16:07.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/board-3430sdp.c 2008-08-11
+17:17:58.000000000 +0530
+@@ -94,6 +94,18 @@ struct vdd_prcm_config iva2_rate_table[]
+
+ #define TWL4030_MSECURE_GPIO 22
+
++u8 vdd1_volts[MAX_VDD1_OPP] = {
++ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2),
++ * 1.20V (OPP3), 1.27V (OPP4), 1.35 (OPP5)
++ */
++ 0x18, 0x20, 0x30, 0x36, 0x3C
++};
++
++u8 vdd2_volts[MAX_VDD2_OPP] = {
++ /* Vsel corresponding to 0.9V (OPP1), 1.00V (OPP2), 1.15 (OPP3) */
++ 0x18, 0x20, 0x2C
++};
++
+ static struct resource sdp3430_smc91x_resources[] = {
+ [0] = {
+ .start = OMAP34XX_ETHR_START,
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:17:23.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:22:02.000000000 +0530
+@@ -19,6 +19,7 @@
+ #include <linux/pm_qos_params.h>
+ #include <asm/arch/powerdomain.h>
+ #include <asm/arch/clockdomain.h>
++#include "smartreflex.h"
+ #include "resource34xx.h"
+
+ /**
+@@ -174,10 +175,24 @@ int set_opp(struct shared_resource *resp
+ {
+ #ifdef CONFIG_MACH_OMAP_3430SDP
+ unsigned long mpu_freq;
++
++ if (resp->curr_level == target_level)
++ return 0;
++
+ if (strcmp(resp->name, "vdd1_opp") == 0) {
+ mpu_freq = get_freq(vdd1_rate_table + MAX_VDD1_OPP,
+ target_level);
+- clk_set_rate(vdd1_clk, mpu_freq);
++ if (resp->curr_level > target_level) {
++ /* Scale Frequency and then voltage */
++ clk_set_rate(vdd1_clk, mpu_freq);
++ sr_voltagescale_vcbypass(PRCM_VDD1,
++ vdd1_volts[target_level-1]);
++ } else {
++ /* Scale Voltage and then frequency */
++ sr_voltagescale_vcbypass(PRCM_VDD1,
++ vdd1_volts[target_level-1]);
++ clk_set_rate(vdd1_clk, mpu_freq);
++ }
+ resp->curr_level = curr_vdd1_prcm_set->opp;
+ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
+ /* Not supported yet */
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.h 2008-08-11
+17:17:23.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.h 2008-08-11
+17:17:58.000000000 +0530
+@@ -33,6 +33,9 @@ extern unsigned int get_opp(struct vdd_p
+ extern struct vdd_prcm_config vdd1_rate_table[];
+ extern struct vdd_prcm_config vdd2_rate_table[];
+ extern struct vdd_prcm_config iva2_rate_table[];
++extern u8 vdd1_volts[];
++extern u8 vdd2_volts[];
++extern int sr_voltagescale_vcbypass(u32 target_opp, u8 vsel);
+ /**
+ * mpu_latency/core_latency are used to control the cpuidle C state.
+ */
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml b/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml
new file mode 100644
index 0000000000..532a9f7975
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/09-omappm-vdd2-scaling.eml
@@ -0,0 +1,102 @@
+Adds VDD2 scaling support
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/resource34xx.c | 35 +++++++++++++++++++++++++++++++++--
+ arch/arm/plat-omap/omap-pm-srf.c | 15 +++++----------
+ 2 files changed, 38 insertions(+), 12 deletions(-)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-07-21
+12:10:22.032527379 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-07-21
+12:10:22.479513287 +0530
+@@ -174,7 +174,9 @@ void init_opp(struct shared_resource *re
+ int set_opp(struct shared_resource *resp, u32 target_level)
+ {
+ #ifdef CONFIG_MACH_OMAP_3430SDP
+- unsigned long mpu_freq;
++ unsigned long mpu_freq, l3_freq, tput;
++ int ind;
++ struct bus_throughput_db *tput_db;
+
+ if (resp->curr_level == target_level)
+ return 0;
+@@ -195,7 +197,36 @@ int set_opp(struct shared_resource *resp
+ }
+ resp->curr_level = curr_vdd1_prcm_set->opp;
+ } else if (strcmp(resp->name, "vdd2_opp") == 0) {
+- /* Not supported yet */
++ tput_db = resp->resource_data;
++ tput = target_level;
++ /* using the throughput db map to the appropriate L3 Freq */
++ for (ind = 1; ind < MAX_VDD2_OPP; ind++)
++ if (tput_db->throughput[ind] > tput)
++ target_level = ind;
++
++ /* Set the highest OPP possible */
++ if (ind == MAX_VDD2_OPP)
++ target_level = ind-1;
++
++ if (resp->curr_level == target_level)
++ return 0;
++
++ resp->curr_level = target_level;
++
++ l3_freq = get_freq(vdd2_rate_table + MAX_VDD2_OPP,
++ target_level);
++ if (resp->curr_level > target_level) {
++ /* Scale Frequency and then voltage */
++ clk_set_rate(vdd2_clk, l3_freq);
++ sr_voltagescale_vcbypass(PRCM_VDD2,
++ vdd2_volts[target_level-1]);
++ } else {
++ /* Scale Voltage and then frequency */
++ sr_voltagescale_vcbypass(PRCM_VDD2,
++ vdd2_volts[target_level-1]);
++ clk_set_rate(vdd1_clk, l3_freq);
++ }
++ resp->curr_level = curr_vdd2_prcm_set->opp;
+ }
+ #endif
+ return 0;
+Index: linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
+12:10:21.626540178 +0530
++++ linux-omap-2.6/arch/arm/plat-omap/omap-pm-srf.c 2008-07-21
+12:10:22.479513287 +0530
+@@ -95,21 +95,16 @@ void omap_pm_set_min_bus_tput(struct dev
+ return;
+ };
+
+- if (r == 0)
++ if (r == 0) {
+ pr_debug("OMAP PM: remove min bus tput constraint: "
+ "dev %s for agent_id %d\n", dev_name(dev), agent_id);
+- else
++ resource_release("vdd2_opp", r);
++ } else {
+ pr_debug("OMAP PM: add min bus tput constraint: "
+ "dev %s for agent_id %d: rate %ld KiB\n",
+ dev_name(dev), agent_id, r);
+-
+- /*
+- * This code should model the interconnect and compute the
+- * required clock frequency, convert that to a VDD2 OPP ID, then
+- * set the VDD2 OPP appropriately.
+- *
+- * TI CDP code can call constraint_set here on the VDD2 OPP.
+- */
++ resource_request("vdd2_opp", dev, r);
++ }
+ }
+
+ void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml b/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml
new file mode 100644
index 0000000000..3728440159
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/10-omappm-off-mode.eml
@@ -0,0 +1,35 @@
+A Temp patch needed only till OFF mode is implemented.
+
+Signed-off-by: Rajendra Nayak <rnayak@ti.com>
+---
+ arch/arm/mach-omap2/resource34xx.c | 4 ++--
+ 1 files changed, 2 insertions(+), 2 deletions(-)
+
+Index: linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c
+===================================================================
+--- linux-omap-2.6.orig/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:39:00.000000000 +0530
++++ linux-omap-2.6/arch/arm/mach-omap2/resource34xx.c 2008-08-11
+17:39:00.000000000 +0530
+@@ -131,13 +131,13 @@ int set_pd_latency(struct shared_resourc
+ omap2_clkdm_wakeup(pwrdm->pwrdm_clkdms[i]);
+ }
+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
+- pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
++ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_RET);
+ for (i = 0; pwrdm->pwrdm_clkdms[i]; i++) {
+ omap2_clkdm_sleep(pwrdm->pwrdm_clkdms[i]);
+ omap2_clkdm_allow_idle(pwrdm->pwrdm_clkdms[i]);
+ }
+ } else
+- pwrdm_set_next_pwrst(pwrdm, pd_lat_level);
++ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_RET);
+ break;
+ case PWRDM_POWER_ON:
+ pwrdm_set_next_pwrst(pwrdm, PWRDM_POWER_ON);
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/linux-omap2-git/beagleboard/defconfig b/packages/linux/linux-omap2-git/beagleboard/defconfig
index d01d473ed5..b3ea5f9557 100644
--- a/packages/linux/linux-omap2-git/beagleboard/defconfig
+++ b/packages/linux/linux-omap2-git/beagleboard/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.26-omap1
-# Tue Aug 5 20:34:54 2008
+# Mon Aug 11 16:37:34 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -187,12 +187,16 @@ CONFIG_OMAP_BOOT_REASON=y
CONFIG_OMAP_MCBSP=y
# CONFIG_OMAP_MMU_FWK is not set
# CONFIG_OMAP_MBOX_FWK is not set
-CONFIG_OMAP_MPU_TIMER=y
-# CONFIG_OMAP_32K_TIMER is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
CONFIG_OMAP_DM_TIMER=y
# CONFIG_OMAP_LL_DEBUG_UART1 is not set
# CONFIG_OMAP_LL_DEBUG_UART2 is not set
CONFIG_OMAP_LL_DEBUG_UART3=y
+# CONFIG_OMAP_PM_NONE is not set
+# CONFIG_OMAP_PM_NOOP is not set
+CONFIG_OMAP_PM_SRF=y
CONFIG_ARCH_OMAP34XX=y
CONFIG_ARCH_OMAP3430=y
@@ -203,6 +207,7 @@ CONFIG_ARCH_OMAP3430=y
# CONFIG_MACH_OMAP_3430SDP is not set
# CONFIG_MACH_OMAP3EVM is not set
CONFIG_MACH_OMAP3_BEAGLE=y
+CONFIG_OMAP_TICK_GPTIMER=12
#
# Boot options
@@ -255,7 +260,7 @@ CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
# CONFIG_PREEMPT is not set
-CONFIG_HZ=100
+CONFIG_HZ=128
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
@@ -306,19 +311,19 @@ CONFIG_CPU_IDLE_GOV_MENU=y
#
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
-# CONFIG_CPU_FREQ_DEBUG is not set
+CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
-CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
-# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
-# CONFIG_CPU_FREQ_GOV_POWERSAVE is not set
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
-# CONFIG_CPU_FREQ_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
#
# Floating point emulation
diff --git a/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch b/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch
new file mode 100644
index 0000000000..968cc6cf73
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/musb-dmafix.patch
@@ -0,0 +1,275 @@
+From: Gadiyar, Anand <gadiyar@ti.com>
+Date: Wed, 13 Aug 2008 07:05:29 +0000 (+0530)
+Subject: MUSB: Workaround for simultaneous TX and RX usage
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2e6aa4efb0e14c51ff0427927b1b38136911fa93
+
+MUSB: Workaround for simultaneous TX and RX usage
+
+MUSB: Workaround for simultaneous TX and RX usage
+
+MUSB RTL V1.4 has a hardware issue which results in a DMA controller
+hang when TX and RX DMA channels are simultaneously enabled. This
+affects at least OMAP2430 and OMAP34XX.
+
+Since RX transfers are in Mode 0 and anyway result in one DMA interrupt
+per packet, we can use System DMA to unload the RX fifos. MUSB DMA can
+be used for all TX channels as before.
+
+Tested with full-duplex TX and RX transfers using g_ether. Runs for 24
+hours without a hang. Without this patch, the hang occurs within minutes.
+
+This issue was first reported by Jon Hunter on [1]
+
+[1] http://marc.info/?l=linux-omap&m=119634480534453&w=2
+
+Signed-off-by: Anand Gadiyar <gadiyar@ti.com>
+---
+
+diff --git a/drivers/usb/musb/Kconfig b/drivers/usb/musb/Kconfig
+index a485a86..8583e54 100644
+--- a/drivers/usb/musb/Kconfig
++++ b/drivers/usb/musb/Kconfig
+@@ -150,6 +150,14 @@ config USB_INVENTRA_DMA
+ help
+ Enable DMA transfers using Mentor's engine.
+
++config MUSB_USE_SYSTEM_DMA_RX
++ bool 'Use System DMA for RX endpoints'
++ depends on USB_MUSB_HDRC && USB_INVENTRA_DMA
++ help
++ MUSB RTL version 1.4 has a hardware issue when TX and RX DMA
++ channels are simultaneously enabled. To work around this issue,
++ you can choose to use System DMA for RX channels.
++
+ config USB_TI_CPPI_DMA
+ bool
+ depends on USB_MUSB_HDRC && !MUSB_PIO_ONLY
+diff --git a/drivers/usb/musb/musbhsdma.c b/drivers/usb/musb/musbhsdma.c
+index 32bb1e2..d1c1ea0 100644
+--- a/drivers/usb/musb/musbhsdma.c
++++ b/drivers/usb/musb/musbhsdma.c
+@@ -34,6 +34,7 @@
+ #include <linux/interrupt.h>
+ #include <linux/platform_device.h>
+ #include "musb_core.h"
++#include <asm/arch/dma.h>
+
+ #if defined(CONFIG_ARCH_OMAP2430) || defined(CONFIG_ARCH_OMAP3430)
+ #include "omap2430.h"
+@@ -64,6 +65,9 @@
+
+ #define MUSB_HSDMA_CHANNELS 8
+
++#define MUSB_FIFO_ADDRESS(epnum) \
++ ((unsigned long) (OMAP_HSOTG_BASE + MUSB_FIFO_OFFSET(epnum)))
++
+ struct musb_dma_controller;
+
+ struct musb_dma_channel {
+@@ -75,6 +79,8 @@ struct musb_dma_channel {
+ u8 bIndex;
+ u8 epnum;
+ u8 transmit;
++
++ int sysdma_channel;
+ };
+
+ struct musb_dma_controller {
+@@ -93,6 +99,42 @@ static int dma_controller_start(struct dma_controller *c)
+ return 0;
+ }
+
++#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
++static void musb_sysdma_completion(int lch, u16 ch_status, void *data)
++{
++ u32 dwAddress;
++ unsigned long flags;
++
++ struct dma_channel *pChannel;
++
++ struct musb_dma_channel *pImplChannel =
++ (struct musb_dma_channel *) data;
++ struct musb_dma_controller *controller = pImplChannel->controller;
++ struct musb *musb = controller->pDmaPrivate;
++ pChannel = &pImplChannel->Channel;
++
++ DBG(2, "lch = 0x%d, ch_status = 0x%x\n", lch, ch_status);
++ spin_lock_irqsave(&musb->lock, flags);
++
++ dwAddress = (u32) omap_get_dma_dst_pos(pImplChannel->sysdma_channel);
++ pChannel->actual_len = dwAddress - pImplChannel->dwStartAddress;
++
++ DBG(2, "ch %p, 0x%x -> 0x%x (%d / %d) %s\n",
++ pChannel, pImplChannel->dwStartAddress, dwAddress,
++ pChannel->actual_len, pImplChannel->len,
++ (pChannel->actual_len < pImplChannel->len) ?
++ "=> reconfig 0": "=> complete");
++
++ pChannel->status = MUSB_DMA_STATUS_FREE;
++ musb_dma_completion(musb, pImplChannel->epnum, pImplChannel->transmit);
++
++ spin_unlock_irqrestore(&musb->lock, flags);
++ return;
++}
++#else
++#define musb_sysdma_completion NULL
++#endif
++
+ static void dma_channel_release(struct dma_channel *pChannel);
+
+ static int dma_controller_stop(struct dma_controller *c)
+@@ -144,6 +186,29 @@ static struct dma_channel *dma_channel_allocate(struct dma_controller *c,
+ /* Tx => mode 1; Rx => mode 0 */
+ pChannel->desired_mode = transmit;
+ pChannel->actual_len = 0;
++ pImplChannel->sysdma_channel = -1;
++
++#ifdef CONFIG_MUSB_USE_SYSTEM_DMA_RX
++ if (!transmit) {
++ int ret;
++ ret = omap_request_dma(OMAP24XX_DMA_NO_DEVICE,
++ "MUSB SysDMA", musb_sysdma_completion,
++ (void *) pImplChannel,
++ &(pImplChannel->sysdma_channel));
++
++ if (ret) {
++ printk(KERN_ERR "request_dma failed:"
++ " %d\n", ret);
++ controller->bmUsedChannels &=
++ ~(1 << bBit);
++ pChannel->status =
++ MUSB_DMA_STATUS_UNKNOWN;
++ pImplChannel->sysdma_channel = -1;
++ pChannel = NULL;
++ }
++ }
++#endif
++
+ break;
+ }
+ }
+@@ -163,6 +228,12 @@ static void dma_channel_release(struct dma_channel *pChannel)
+ ~(1 << pImplChannel->bIndex);
+
+ pChannel->status = MUSB_DMA_STATUS_UNKNOWN;
++
++ if (pImplChannel->sysdma_channel != -1) {
++ omap_stop_dma(pImplChannel->sysdma_channel);
++ omap_free_dma(pImplChannel->sysdma_channel);
++ pImplChannel->sysdma_channel = -1;
++ }
+ }
+
+ static void configure_channel(struct dma_channel *pChannel,
+@@ -179,41 +250,69 @@ static void configure_channel(struct dma_channel *pChannel,
+ DBG(4, "%p, pkt_sz %d, addr 0x%x, len %d, mode %d\n",
+ pChannel, packet_sz, dma_addr, len, mode);
+
+- if (mode) {
+- csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
+- BUG_ON(len < packet_sz);
++ if (pImplChannel->sysdma_channel != -1) {
++ /* System DMA */
++ /* RX: set src = FIFO */
++
++ omap_set_dma_transfer_params(pImplChannel->sysdma_channel,
++ OMAP_DMA_DATA_TYPE_S8,
++ len, 1, /* One frame */
++ OMAP_DMA_SYNC_ELEMENT,
++ OMAP24XX_DMA_NO_DEVICE,
++ 0); /* Src Sync */
++
++ omap_set_dma_src_params(pImplChannel->sysdma_channel, 0,
++ OMAP_DMA_AMODE_CONSTANT,
++ MUSB_FIFO_ADDRESS(pImplChannel->epnum),
++ 0, 0);
+
+- if (packet_sz >= 64) {
+- csr |= MUSB_HSDMA_BURSTMODE_INCR16
++ omap_set_dma_dest_params(pImplChannel->sysdma_channel, 0,
++ OMAP_DMA_AMODE_POST_INC, dma_addr,
++ 0, 0);
++
++ omap_set_dma_dest_data_pack(pImplChannel->sysdma_channel, 1);
++ omap_set_dma_dest_burst_mode(pImplChannel->sysdma_channel,
++ OMAP_DMA_DATA_BURST_16);
++
++ omap_start_dma(pImplChannel->sysdma_channel);
++
++ } else { /* Mentor DMA */
++ if (mode) {
++ csr |= 1 << MUSB_HSDMA_MODE1_SHIFT;
++ BUG_ON(len < packet_sz);
++
++ if (packet_sz >= 64) {
++ csr |= MUSB_HSDMA_BURSTMODE_INCR16
+ << MUSB_HSDMA_BURSTMODE_SHIFT;
+- } else if (packet_sz >= 32) {
+- csr |= MUSB_HSDMA_BURSTMODE_INCR8
++ } else if (packet_sz >= 32) {
++ csr |= MUSB_HSDMA_BURSTMODE_INCR8
+ << MUSB_HSDMA_BURSTMODE_SHIFT;
+- } else if (packet_sz >= 16) {
+- csr |= MUSB_HSDMA_BURSTMODE_INCR4
++ } else if (packet_sz >= 16) {
++ csr |= MUSB_HSDMA_BURSTMODE_INCR4
+ << MUSB_HSDMA_BURSTMODE_SHIFT;
++ }
+ }
+- }
+
+- csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
+- | (1 << MUSB_HSDMA_ENABLE_SHIFT)
+- | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
+- | (pImplChannel->transmit
+- ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
+- : 0);
+-
+- /* address/count */
+- musb_writel(mbase,
+- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
+- dma_addr);
+- musb_writel(mbase,
+- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
+- len);
+-
+- /* control (this should start things) */
+- musb_writew(mbase,
+- MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
+- csr);
++ csr |= (pImplChannel->epnum << MUSB_HSDMA_ENDPOINT_SHIFT)
++ | (1 << MUSB_HSDMA_ENABLE_SHIFT)
++ | (1 << MUSB_HSDMA_IRQENABLE_SHIFT)
++ | (pImplChannel->transmit
++ ? (1 << MUSB_HSDMA_TRANSMIT_SHIFT)
++ : 0);
++
++ /* address/count */
++ musb_writel(mbase,
++ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_ADDRESS),
++ dma_addr);
++ musb_writel(mbase,
++ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_COUNT),
++ len);
++
++ /* control (this should start things) */
++ musb_writew(mbase,
++ MUSB_HSDMA_CHANNEL_OFFSET(bChannel, MUSB_HSDMA_CONTROL),
++ csr);
++ } /* Mentor DMA */
+ }
+
+ static int dma_channel_program(struct dma_channel *pChannel,
+@@ -265,6 +364,12 @@ static int dma_channel_abort(struct dma_channel *pChannel)
+ MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_TXCSR),
+ csr);
+ } else {
++ if (pImplChannel->sysdma_channel != -1) {
++ omap_stop_dma(pImplChannel->sysdma_channel);
++ omap_free_dma(pImplChannel->sysdma_channel);
++ pImplChannel->sysdma_channel = -1;
++ }
++
+ csr = musb_readw(mbase,
+ MUSB_EP_OFFSET(pImplChannel->epnum, MUSB_RXCSR));
+ csr &= ~(MUSB_RXCSR_AUTOCLEAR |
diff --git a/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml b/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml
new file mode 100644
index 0000000000..48ff5da822
--- /dev/null
+++ b/packages/linux/linux-omap2-git/beagleboard/omap23-pm-noop.eml
@@ -0,0 +1,894 @@
+The interface provides device drivers, CPUFreq, and DSP Bridge with a
+means of controlling OMAP power management parameters that are not yet
+supported by the Linux PM PMQOS interface. Copious documentation and
+rationale is in the patch in Documentation/arm/OMAP/omap_pm and the
+interface header file, include/asm-arm/arch-omap/omap-pm.h.
+
+Signed-off-by: Paul Walmsley <paul@pwsan.com>
+---
+
+ Documentation/arm/OMAP/omap_pm | 185 +++++++++++++++++++++
+ arch/arm/mach-omap2/io.c | 4
+ arch/arm/plat-omap/Kconfig | 13 +
+ arch/arm/plat-omap/Makefile | 1
+ arch/arm/plat-omap/omap-pm-noop.c | 309 +++++++++++++++++++++++++++++++++++
+ include/asm-arm/arch-omap/omap-pm.h | 300 ++++++++++++++++++++++++++++++++++
+ 6 files changed, 812 insertions(+), 0 deletions(-)
+ create mode 100644 Documentation/arm/OMAP/omap_pm
+ create mode 100644 arch/arm/plat-omap/omap-pm-noop.c
+ create mode 100644 include/asm-arm/arch-omap/omap-pm.h
+
+diff --git a/Documentation/arm/OMAP/omap_pm b/Documentation/arm/OMAP/omap_pm
+new file mode 100644
+index 0000000..2ec2034
+--- /dev/null
++++ b/Documentation/arm/OMAP/omap_pm
+@@ -0,0 +1,185 @@
++
++Rationale: the OMAP PM interface
++================================
++
++
++Existing PM interfaces are currently not ideal for OMAP
++-------------------------------------------------------
++
++There are two PM interfaces in use with publicly-distributed OMAP
++Linux code: the TI Shared Resource Framework (SRF) and the Linux PM
++QoS parameters code. Neither interface is ideal for Linux OMAP code.
++
++TI Shared Resource Framework:
++
++The TI CDP 12.14 tree drivers currently use the TI Shared Resource
++Framework (SRF) to control chip power management. Use of the SRF
++allowed TI to get the drivers up and running quickly with considerable
++power savings; and the SRF provided debugging support. However, many
++of the SRF parameters are specified in OMAP-specific terms, such as
++target OPPs, rather than in terms of actual latency or throughput
++requirements. OPPs change depending on OMAP silicon revisions or OMAP
++types, and are meaningless for other architectures, so drivers shared
++between OMAP and other architectures would also have to #ifdef out the
++SRF constraints.
++
++Linux PM QoS parameters:
++
++In February 2008, the mainline Linux kernel added code that is
++somewhat similar to the SRF: the Linux PM QoS parameters code, located
++in kernel/pm_qos_params.c. (This code replaced the latency management
++code that was present in earlier kernels.) Ideally, OMAP drivers
++would be able to use this Linux PM QoS code directly, but the PM QoS
++code has some drawbacks:
++
++- It combines some power management parameters that should be kept
++ separate for maximum power savings on OMAP3. For example, in the PM
++ QoS code, CPU and system DMA wakeup latency are combined into one
++ parameter; but on OMAP3, these are distinct parameters. The Linux
++ PM QoS code also combines all network power management knobs into
++ two non-device-specific parameters. OMAP2/3 systems can have
++ different network devices with different power management
++ requirements - for example, a wired Ethernet interface may have
++ different latency and throughput constraints than a WiFi interface.
++
++- It does not yet cover all of the power management capabilities of
++ the OMAP3 architecture. It does not express latency constraints on
++ a per-device or per-powerdomain basis; it only covers
++ cpu_dma_latency and network throughput and latency, which would not
++ cover most of the OMAP3 devices.
++
++The result is that drivers using the current Linux PM QoS layer
++directly are unlikely to reach the same level of power efficiency as
++driver code using the Shared Resource Framework.
++
++To summarize, the SRF provides significant power savings, but
++expresses power constraints in an OMAP- and silicon-revision-specific
++way; and the PM QoS layer expresses PM constraints in a cross-platform
++manner (in terms of fundamental physical units), but does not support
++per-powerdomain constraints and does not cover many of the OMAP power
++management features.
++
++
++A medium-term alternative: the OMAP PM interface
++------------------------------------------------
++
++We need a way for driver code to express PM parameters which:
++
++- supports the range of power management parameters present in the TI SRF;
++
++- separates the drivers from the underlying PM parameter
++ implementation, whether it is the TI SRF or Linux PM QoS or Linux
++ latency framework or something else;
++
++- specifies PM parameters in terms of fundamental units, such as
++ latency and throughput, rather than units which are specific to OMAP
++ or to particular OMAP variants;
++
++- allows drivers which are shared with other architectures (e.g.,
++ DaVinci) to add these constraints in a way which won't affect non-OMAP
++ systems,
++
++- can be implemented immediately with minimal disruption of other
++ architectures.
++
++
++We therefore propose the OMAP PM interface, including the following
++four power management functions for driver code:
++
++1. Set the maximum MPU wakeup latency:
++ (*pdata->set_max_mpu_wakeup_lat)(struct device *dev, unsigned long t)
++
++2. Set the maximum device wakeup latency:
++ (*pdata->set_max_dev_wakeup_lat)(struct device *dev, unsigned long t)
++
++3. Set the maximum system DMA transfer start latency (CORE pwrdm):
++ (*pdata->set_max_sdma_lat)(struct device *dev, long t)
++
++4. Set the minimum bus throughput needed by a device:
++ (*pdata->set_min_bus_tput)(struct device *dev, u8 agent_id, unsigned long r)
++
++
++These functions are extensively documented in the OMAP PM interface header
++file, included in the patch.
++
++
++The OMAP PM layer is intended to be temporary
++---------------------------------------------
++
++The intention is that, in time, the Linux PM QoS layer should support
++the range of power management features present in OMAP3. As this
++happens, existing drivers using the OMAP PM interface can be modified
++to use the Linux PM QoS code; and the OMAP PM interface can disappear.
++
++
++Driver usage of the OMAP PM functions
++-------------------------------------
++
++As the 'pdata' in the above examples indicates, these functions are
++exposed to drivers through function pointers in driver .platform_data
++structures. The function pointers are initialized by the board-*.c
++files to point to the corresponding OMAP PM functions:
++.set_max_dev_wakeup_lat will point to
++omap_pm_set_max_dev_wakeup_lat(), etc. Other architectures which do
++not support these functions should leave these function pointers set
++to NULL. Drivers should use the following idiom:
++
++ if (pdata->set_max_dev_wakeup_lat)
++ (*pdata->set_max_dev_wakeup_lat)(dev, t);
++
++The most common usage of these functions will probably be to specify
++the maximum time from when an interrupt occurs, to when the device
++becomes accessible. To accomplish this, driver writers should use the
++set_max_mpu_wakeup_lat() function to to constrain the MPU wakeup
++latency, and the set_max_dev_wakeup_lat() function to constrain the
++device wakeup latency (from clk_enable() to accessibility). For
++example,
++
++ /* Limit MPU wakeup latency */
++ if (pdata->set_max_mpu_wakeup_lat)
++ (*pdata->set_max_mpu_wakeup_lat)(dev, tc);
++
++ /* Limit device powerdomain wakeup latency */
++ if (pdata->set_max_dev_wakeup_lat)
++ (*pdata->set_max_dev_wakeup_lat)(dev, td);
++
++ /* total wakeup latency in this example: (tc + td) */
++
++
++The PM parameters can be overwritten by calling the function again
++with the new value. The settings can be removed by calling the
++function with a t argument of -1 (except in the case of
++set_max_bus_tput(), which should be called with an r argument of 0).
++
++
++Other specialized interface functions
++-------------------------------------
++
++The four functions listed above are intended to be usable by any
++device driver. However, DSPBridge and CPUFreq have special
++requirements. DSPBridge expresses target DSP performance levels in
++terms of OPP IDs. CPUFreq expresses target MPU performance levels in
++terms of MPU frequency. The OMAP PM interface contains functions for
++these specialized cases to convert that input information (OPPs/MPU
++frequency) into the form that the underlying power management
++implementation needs:
++
++5. (*pdata->omap_pm_dsp_get_opp_table)(void)
++
++6. (*pdata->omap_pm_dsp_set_min_opp)(u8 opp_id)
++
++7. (*pdata->omap_pm_dsp_get_opp)(void)
++
++8. (*pdata->omap_pm_cpu_get_freq_table)(void)
++
++9. (*pdata->omap_pm_cpu_set_freq)(unsigned long f)
++
++10. (*pdata->omap_pm_cpu_get_freq)(void)
++
++
++There are also functions for use by the clockdomain layer to indicate
++that a powerdomain should wake up or be put to sleep:
++
++11. (*pdata->omap_pm_pwrdm_active)(struct powerdomain *pwrdm)
++
++12. (*pdata->omap_pm_pwrdm_inactive)(struct powerdomain *pwrdm)
+diff --git a/arch/arm/plat-omap/Kconfig b/arch/arm/plat-omap/Kconfig
+index 960c13f..ca790ac 100644
+--- a/arch/arm/plat-omap/Kconfig
++++ b/arch/arm/plat-omap/Kconfig
+@@ -247,4 +247,17 @@ config OMAP_SERIAL_WAKE
+
+ endmenu
+
++choice
++ prompt "OMAP PM layer selection"
++ depends on ARCH_OMAP
++ default OMAP_PM_NOOP
++
++config OMAP_PM_NONE
++ bool "No PM layer"
++
++config OMAP_PM_NOOP
++ bool "No-op/debug PM layer"
++
++endchoice
++
+ endif
+diff --git a/arch/arm/plat-omap/Makefile b/arch/arm/plat-omap/Makefile
+index 93bbb64..d5453d5 100644
+--- a/arch/arm/plat-omap/Makefile
++++ b/arch/arm/plat-omap/Makefile
+@@ -29,3 +29,4 @@ obj-$(CONFIG_OMAP_MMU_FWK) += mmu.o
+ # OMAP mailbox framework
+ obj-$(CONFIG_OMAP_MBOX_FWK) += mailbox.o
+
++obj-$(CONFIG_OMAP_PM_NOOP) += omap-pm-noop.o
+\ No newline at end of file
+diff --git a/arch/arm/plat-omap/omap-pm-noop.c b/arch/arm/plat-omap/omap-pm-noop.c
+new file mode 100644
+index 0000000..5ff7962
+--- /dev/null
++++ b/arch/arm/plat-omap/omap-pm-noop.c
+@@ -0,0 +1,309 @@
++/*
++ * omap-pm-noop.c - OMAP power management interface - dummy version
++ *
++ * This code implements the OMAP power management interface to
++ * drivers, CPUIdle, CPUFreq, and DSP Bridge. It is strictly for
++ * debug/demonstration use, as it does nothing but printk() whenever a
++ * function is called (when DEBUG is defined, below)
++ *
++ * Copyright (C) 2008 Texas Instruments, Inc.
++ * Copyright (C) 2008 Nokia Corporation
++ * Paul Walmsley
++ *
++ * Interface developed by (in alphabetical order):
++ * Karthik Dasu, Amish Lakhani, Tony Lindgren, Rajendra Nayak, Sakari
++ * Poussa, Veeramanikandan Raju, Igor Stoppa, Paul Walmsley, Richard
++ * Woodruff
++ */
++
++#undef DEBUG
++
++#include <linux/init.h>
++#include <linux/cpufreq.h>
++#include <linux/device.h>
++
++/* Interface documentation is in asm/arch/omap-pm.h */
++#include <asm/arch/omap-pm.h>
++
++#include <asm/arch/powerdomain.h>
++
++static struct omap_opp *dsp_opps;
++static struct omap_opp *mpu_opps;
++
++/*
++ * Device-driver-originated constraints (via board-*.c files)
++ */
++
++void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t)
++{
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (t == -1)
++ pr_debug("OMAP PM: remove max MPU wakeup latency constraint: "
++ "dev %s\n", dev_name(dev));
++ else
++ pr_debug("OMAP PM: add max MPU wakeup latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++
++ /*
++ * For current Linux, this needs to map the MPU to a
++ * powerdomain, then go through the list of current max lat
++ * constraints on the MPU and find the smallest. If
++ * the latency constraint has changed, the code should
++ * recompute the state to enter for the next powerdomain
++ * state.
++ *
++ * TI CDP code can call constraint_set here.
++ */
++}
++
++void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r)
++{
++ if (!dev || agent_id != OCP_INITIATOR_AGENT ||
++ agent_id != OCP_TARGET_AGENT) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (r == 0)
++ pr_debug("OMAP PM: remove min bus tput constraint: "
++ "dev %s for agent_id %d\n", dev_name(dev), agent_id);
++ else
++ pr_debug("OMAP PM: add min bus tput constraint: "
++ "dev %s for agent_id %d: rate %ld KiB\n",
++ dev_name(dev), agent_id, r);
++
++ /*
++ * This code should model the interconnect and compute the
++ * required clock frequency, convert that to a VDD2 OPP ID, then
++ * set the VDD2 OPP appropriately.
++ *
++ * TI CDP code can call constraint_set here on the VDD2 OPP.
++ */
++}
++
++void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t)
++{
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (t == -1)
++ pr_debug("OMAP PM: remove max device latency constraint: "
++ "dev %s\n", dev_name(dev));
++ else
++ pr_debug("OMAP PM: add max device latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++
++ /*
++ * For current Linux, this needs to map the device to a
++ * powerdomain, then go through the list of current max lat
++ * constraints on that powerdomain and find the smallest. If
++ * the latency constraint has changed, the code should
++ * recompute the state to enter for the next powerdomain
++ * state. Conceivably, this code should also determine
++ * whether to actually disable the device clocks or not,
++ * depending on how long it takes to re-enable the clocks.
++ *
++ * TI CDP code can call constraint_set here.
++ */
++}
++
++void omap_pm_set_max_sdma_lat(struct device *dev, long t)
++{
++ if (!dev || t < -1) {
++ WARN_ON(1);
++ return;
++ };
++
++ if (t == -1)
++ pr_debug("OMAP PM: remove max DMA latency constraint: "
++ "dev %s\n", dev_name(dev));
++ else
++ pr_debug("OMAP PM: add max DMA latency constraint: "
++ "dev %s, t = %ld usec\n", dev_name(dev), t);
++
++ /*
++ * For current Linux PM QOS params, this code should scan the
++ * list of maximum CPU and DMA latencies and select the
++ * smallest, then set cpu_dma_latency pm_qos_param
++ * accordingly.
++ *
++ * For future Linux PM QOS params, with separate CPU and DMA
++ * latency params, this code should just set the dma_latency param.
++ *
++ * TI CDP code can call constraint_set here.
++ */
++
++}
++
++
++/*
++ * DSP Bridge-specific constraints
++ */
++
++const struct omap_opp *omap_pm_dsp_get_opp_table(void)
++{
++ pr_debug("OMAP PM: DSP request for OPP table\n");
++
++ /*
++ * Return DSP frequency table here: The final item in the
++ * array should have .rate = .opp_id = 0.
++ */
++
++ return NULL;
++}
++
++void omap_pm_dsp_set_min_opp(u8 opp_id)
++{
++ if (opp_id == 0) {
++ WARN_ON(1);
++ return;
++ }
++
++ pr_debug("OMAP PM: DSP requests minimum VDD1 OPP to be %d\n", opp_id);
++
++ /*
++ *
++ * For l-o dev tree, our VDD1 clk is keyed on OPP ID, so we
++ * can just test to see which is higher, the CPU's desired OPP
++ * ID or the DSP's desired OPP ID, and use whichever is
++ * highest.
++ *
++ * In CDP12.14+, the VDD1 OPP custom clock that controls the DSP
++ * rate is keyed on MPU speed, not the OPP ID. So we need to
++ * map the OPP ID to the MPU speed for use with clk_set_rate()
++ * if it is higher than the current OPP clock rate.
++ *
++ */
++}
++
++
++u8 omap_pm_dsp_get_opp(void)
++{
++ pr_debug("OMAP PM: DSP requests current DSP OPP ID\n");
++
++ /*
++ * For l-o dev tree, call clk_get_rate() on VDD1 OPP clock
++ *
++ * CDP12.14+:
++ * Call clk_get_rate() on the OPP custom clock, map that to an
++ * OPP ID using the tables defined in board-*.c/chip-*.c files.
++ */
++
++ return 0;
++}
++
++/*
++ * CPUFreq-originated constraint
++ *
++ * In the future, this should be handled by custom OPP clocktype
++ * functions.
++ */
++
++struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void)
++{
++ pr_debug("OMAP PM: CPUFreq request for frequency table\n");
++
++ /*
++ * Return CPUFreq frequency table here: loop over
++ * all VDD1 clkrates, pull out the mpu_ck frequencies, build
++ * table
++ */
++
++ return NULL;
++}
++
++void omap_pm_cpu_set_freq(unsigned long f)
++{
++ if (f == 0) {
++ WARN_ON(1);
++ return;
++ }
++
++ pr_debug("OMAP PM: CPUFreq requests CPU frequency to be set to %lu\n",
++ f);
++
++ /*
++ * For l-o dev tree, determine whether MPU freq or DSP OPP id
++ * freq is higher. Find the OPP ID corresponding to the
++ * higher frequency. Call clk_round_rate() and clk_set_rate()
++ * on the OPP custom clock.
++ *
++ * CDP should just be able to set the VDD1 OPP clock rate here.
++ */
++}
++
++unsigned long omap_pm_cpu_get_freq(void)
++{
++ pr_debug("OMAP PM: CPUFreq requests current CPU frequency\n");
++
++ /*
++ * Call clk_get_rate() on the mpu_ck.
++ */
++
++ return 0;
++}
++
++/*
++ * Powerdomain usecounting hooks
++ */
++
++void omap_pm_pwrdm_active(struct powerdomain *pwrdm)
++{
++ if (!pwrdm) {
++ WARN_ON(1);
++ return;
++ };
++
++ pr_debug("OMAP PM: powerdomain %s is becoming active\n", pwrdm->name);
++
++ /*
++ * CDP code apparently will need these for the enable_power_domain()
++ * and disable_power_domain() functions.
++ */
++}
++
++void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm)
++{
++ if (!pwrdm) {
++ WARN_ON(1);
++ return;
++ };
++
++ pr_debug("OMAP PM: powerdomain %s is becoming inactive\n",
++ pwrdm->name);
++
++ /*
++ * CDP code apparently will need these for the enable_power_domain()
++ * and disable_power_domain() functions.
++ */
++}
++
++/*
++ * Should be called before clk framework since clk fw will call
++ * omap_pm_pwrdm_{in,}active()
++ */
++int __init omap_pm_if_early_init(void)
++{
++ return 0;
++}
++
++/* Must be called after clock framework is initialized */
++int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
++ struct omap_opp *dsp_opp_table)
++{
++ mpu_opps = mpu_opp_table;
++ dsp_opps = dsp_opp_table;
++ return 0;
++}
++
++void omap_pm_if_exit(void)
++{
++ /* Deallocate CPUFreq frequency table here */
++}
++
+diff --git a/include/asm-arm/arch-omap/omap-pm.h b/include/asm-arm/arch-omap/omap-pm.h
+new file mode 100644
+index 0000000..d272dba
+--- /dev/null
++++ b/include/asm-arm/arch-omap/omap-pm.h
+@@ -0,0 +1,300 @@
++/*
++ * omap-pm.h - OMAP power management interface
++ *
++ * Copyright (C) 2008 Texas Instruments, Inc.
++ * Copyright (C) 2008 Nokia Corporation
++ * Paul Walmsley
++ *
++ * Interface developed by (in alphabetical order): Karthik Dasu, Jouni
++ * Högander, Tony Lindgren, Rajendra Nayak, Sakari Poussa,
++ * Veeramanikandan Raju, Anand Sawant, Igor Stoppa, Paul Walmsley,
++ * Richard Woodruff
++ */
++
++#ifndef ASM_ARM_ARCH_OMAP_OMAP_PM_H
++#define ASM_ARM_ARCH_OMAP_OMAP_PM_H
++
++#include <linux/device.h>
++#include <linux/cpufreq.h>
++
++#include "powerdomain.h"
++
++/**
++ * struct omap_opp - clock frequency-to-OPP ID table for DSP, MPU
++ * @rate: target clock rate
++ * @opp_id: OPP ID
++ * @min_vdd: minimum VDD1 voltage (in millivolts) for this OPP
++ *
++ * Operating performance point data. Can vary by OMAP chip and board.
++ */
++struct omap_opp {
++ unsigned long rate;
++ u8 opp_id;
++ u16 min_vdd;
++};
++
++/*
++ * agent_id values for use with omap_pm_set_min_bus_tput():
++ *
++ * OCP_INITIATOR_AGENT is only valid for devices that can act as
++ * initiators -- it represents the device's L3 interconnect
++ * connection. OCP_TARGET_AGENT represents the device's L4
++ * interconnect connection.
++ */
++#define OCP_TARGET_AGENT 1
++#define OCP_INITIATOR_AGENT 2
++
++/**
++ * omap_pm_if_early_init - OMAP PM init code called before clock fw init
++ *
++ * Initialize anything that must be configured before the clock
++ * framework starts. The "_if_" is to avoid name collisions with the
++ * PM idle-loop code.
++ */
++int __init omap_pm_if_early_init(void);
++
++/**
++ * omap_pm_if_init - OMAP PM init code called after clock fw init
++ * @mpu_opp_table: array ptr to struct omap_opp for MPU
++ * @dsp_opp_table: array ptr to struct omap_opp for DSP
++ *
++ * The main initialization code. OPP tables are passed in here. The
++ * "_if_" is to avoid name collisions with the PM idle-loop code.
++ */
++int __init omap_pm_if_init(struct omap_opp *mpu_opp_table,
++ struct omap_opp *dsp_opp_table);
++
++/**
++ * omap_pm_if_exit - OMAP PM exit code
++ *
++ * Exit code; currently unused. The "_if_" is to avoid name
++ * collisions with the PM idle-loop code.
++ */
++void omap_pm_if_exit(void);
++
++/*
++ * Device-driver-originated constraints (via board-*.c files, platform_data)
++ */
++
++
++/**
++ * omap_pm_set_max_mpu_wakeup_lat - set the maximum MPU wakeup latency
++ * @dev: struct device * requesting the constraint
++ * @t: maximum MPU wakeup latency in microseconds
++ *
++ * Request that the maximum interrupt latency for the MPU to be no
++ * greater than 't' microseconds. "Interrupt latency" in this case is
++ * defined as the elapsed time from the occurrence of a hardware or
++ * timer interrupt to the time when the device driver's interrupt
++ * service routine has been entered by the MPU.
++ *
++ * It is intended that underlying PM code will use this information to
++ * determine what power state to put the MPU powerdomain into, and
++ * possibly the CORE powerdomain as well, since interrupt handling
++ * code currently runs from SDRAM. Advanced PM or board*.c code may
++ * also configure interrupt controller priorities, OCP bus priorities,
++ * CPU speed(s), etc.
++ *
++ * This function will not affect device wakeup latency, e.g., time
++ * elapsed from when a device driver enables a hardware device with
++ * clk_enable(), to when the device is ready for register access or
++ * other use. To control this device wakeup latency, use
++ * set_max_dev_wakeup_lat()
++ *
++ * Multiple calls to set_max_mpu_wakeup_lat() will replace the
++ * previous t value. To remove the latency target for the MPU, call
++ * with t = -1.
++ *
++ * No return value.
++ */
++void omap_pm_set_max_mpu_wakeup_lat(struct device *dev, long t);
++
++
++/**
++ * omap_pm_set_min_bus_tput - set minimum bus throughput needed by device
++ * @dev: struct device * requesting the constraint
++ * @tbus_id: interconnect to operate on (OCP_{INITIATOR,TARGET}_AGENT)
++ * @r: minimum throughput (in KiB/s)
++ *
++ * Request that the minimum data throughput on the OCP interconnect
++ * attached to device 'dev' interconnect agent 'tbus_id' be no less
++ * than 'r' KiB/s.
++ *
++ * It is expected that the OMAP PM or bus code will use this
++ * information to set the interconnect clock to run at the lowest
++ * possible speed that satisfies all current system users. The PM or
++ * bus code will adjust the estimate based on its model of the bus, so
++ * device driver authors should attempt to specify an accurate
++ * quantity for their device use case, and let the PM or bus code
++ * overestimate the numbers as necessary to handle request/response
++ * latency, other competing users on the system, etc. On OMAP2/3, if
++ * a driver requests a minimum L4 interconnect speed constraint, the
++ * code will also need to add an minimum L3 interconnect speed
++ * constraint,
++ *
++ * Multiple calls to set_min_bus_tput() will replace the previous rate
++ * value for this device. To remove the interconnect throughput
++ * restriction for this device, call with r = 0.
++ *
++ * No return value.
++ */
++void omap_pm_set_min_bus_tput(struct device *dev, u8 agent_id, unsigned long r);
++
++
++/**
++ * omap_pm_set_max_dev_wakeup_lat - set the maximum device enable latency
++ * @dev: struct device *
++ * @t: maximum device wakeup latency in microseconds
++ *
++ * Request that the maximum amount of time necessary for a device to
++ * become accessible after its clocks are enabled should be no greater
++ * than 't' microseconds. Specifically, this represents the time from
++ * when a device driver enables device clocks with clk_enable(), to
++ * when the register reads and writes on the device will succeed.
++ * This function should be called before clk_disable() is called,
++ * since the power state transition decision may be made during
++ * clk_disable().
++ *
++ * It is intended that underlying PM code will use this information to
++ * determine what power state to put the powerdomain enclosing this
++ * device into.
++ *
++ * Multiple calls to set_max_dev_wakeup_lat() will replace the
++ * previous wakeup latency values for this device. To remove the wakeup
++ * latency restriction for this device, call with t = -1.
++ *
++ * No return value.
++ */
++void omap_pm_set_max_dev_wakeup_lat(struct device *dev, long t);
++
++
++/**
++ * omap_pm_set_max_sdma_lat - set the maximum system DMA transfer start latency
++ * @dev: struct device *
++ * @t: maximum DMA transfer start latency in microseconds
++ *
++ * Request that the maximum system DMA transfer start latency for this
++ * device 'dev' should be no greater than 't' microseconds. "DMA
++ * transfer start latency" here is defined as the elapsed time from
++ * when a device (e.g., McBSP) requests that a system DMA transfer
++ * start or continue, to the time at which data starts to flow into
++ * that device from the system DMA controller.
++ *
++ * It is intended that underlying PM code will use this information to
++ * determine what power state to put the CORE powerdomain into.
++ *
++ * Since system DMA transfers may not involve the MPU, this function
++ * will not affect MPU wakeup latency. Use set_max_cpu_lat() to do
++ * so. Similarly, this function will not affect device wakeup latency
++ * -- use set_max_dev_wakeup_lat() to affect that.
++ *
++ * Multiple calls to set_max_sdma_lat() will replace the previous t
++ * value for this device. To remove the maximum DMA latency for this
++ * device, call with t = -1.
++ *
++ * No return value.
++ */
++void omap_pm_set_max_sdma_lat(struct device *dev, long t);
++
++
++/*
++ * DSP Bridge-specific constraints
++ */
++
++/**
++ * omap_pm_dsp_get_opp_table - get OPP->DSP clock frequency table
++ *
++ * Intended for use by DSPBridge. Returns an array of OPP->DSP clock
++ * frequency entries. The final item in the array should have .rate =
++ * .opp_id = 0.
++ */
++const struct omap_opp *omap_pm_dsp_get_opp_table(void);
++
++/**
++ * omap_pm_dsp_set_min_opp - receive desired OPP target ID from DSP Bridge
++ * @opp_id: target DSP OPP ID
++ *
++ * Set a minimum OPP ID for the DSP. This is intended to be called
++ * only from the DSP Bridge MPU-side driver. Unfortunately, the only
++ * information that code receives from the DSP/BIOS load estimator is the
++ * target OPP ID; hence, this interface. No return value.
++ */
++void omap_pm_dsp_set_min_opp(u8 opp_id);
++
++/**
++ * omap_pm_dsp_get_opp - report the current DSP OPP ID
++ *
++ * Report the current OPP for the DSP. Since on OMAP3, the DSP and
++ * MPU share a single voltage domain, the OPP ID returned back may
++ * represent a higher DSP speed than the OPP requested via
++ * omap_pm_dsp_set_min_opp().
++ *
++ * Returns the current VDD1 OPP ID, or 0 upon error.
++ */
++u8 omap_pm_dsp_get_opp(void);
++
++
++/*
++ * CPUFreq-originated constraint
++ *
++ * In the future, this should be handled by custom OPP clocktype
++ * functions.
++ */
++
++/**
++ * omap_pm_cpu_get_freq_table - return a cpufreq_frequency_table array ptr
++ *
++ * Provide a frequency table usable by CPUFreq for the current chip/board.
++ * Returns a pointer to a struct cpufreq_frequency_table array or NULL
++ * upon error.
++ */
++struct cpufreq_frequency_table **omap_pm_cpu_get_freq_table(void);
++
++/**
++ * omap_pm_cpu_set_freq - set the current minimum MPU frequency
++ * @f: MPU frequency in Hz
++ *
++ * Set the current minimum CPU frequency. The actual CPU frequency
++ * used could end up higher if the DSP requested a higher OPP.
++ * Intended to be called by plat-omap/cpu_omap.c:omap_target(). No
++ * return value.
++ */
++void omap_pm_cpu_set_freq(unsigned long f);
++
++/**
++ * omap_pm_cpu_get_freq - report the current CPU frequency
++ *
++ * Returns the current MPU frequency, or 0 upon error.
++ */
++unsigned long omap_pm_cpu_get_freq(void);
++
++
++/*
++ * Powerdomain usecounting hooks
++ */
++
++/**
++ * omap_pm_pwrdm_active - indicate that a power domain has become active
++ * @pwrdm: struct powerdomain *
++ *
++ * Notify the OMAP PM layer that the power domain 'pwrdm' has become active,
++ * presumably due to a device driver enabling an underlying clock. This
++ * function is intended to be called by a clockdomain node in the clock
++ * framework. No return value.
++ */
++void omap_pm_pwrdm_active(struct powerdomain *pwrdm);
++
++
++/**
++ * omap_pm_pwrdm_inactive - indicate that a power domain has become inactive
++ * @pwrdm: struct powerdomain *
++ *
++ * Notify the OMAP PM layer that the power domain 'pwrdm' has become
++ * inactive, presumably due to a device driver disabling an underlying
++ * clock. This function is intended to be called by a clockdomain
++ * node in the clock framework. No return value.
++ */
++void omap_pm_pwrdm_inactive(struct powerdomain *pwrdm);
++
++
++#endif
+
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at http://vger.kernel.org/majordomo-info.html
+
+--- /tmp/io.c 2008-08-11 15:29:32.000000000 +0200
++++ git/arch/arm/mach-omap2/io.c 2008-08-11 15:30:20.083198000 +0200
+@@ -38,6 +38,8 @@
+ #include <asm/arch/clockdomain.h>
+ #include "clockdomains.h"
+
++#include <asm/arch/omap-pm.h>
++
+ /*
+ * The machine specific code may provide the extra mapping besides the
+ * default mapping provided here.
+@@ -197,9 +199,11 @@
+ void __init omap2_init_common_hw(struct omap_sdrc_params *sp)
+ {
+ omap2_mux_init();
++ omap_pm_if_early_init();
+ pwrdm_init(powerdomains_omap);
+ clkdm_init(clockdomains_omap, clkdm_pwrdm_autodeps);
+ omap2_clk_init();
++ omap_pm_if_init(NULL, NULL);
+ omap2_sdrc_init(sp);
+ gpmc_init();
+ }
diff --git a/packages/linux/linux-omap2_git.bb b/packages/linux/linux-omap2_git.bb
index 1c47bd95b4..f032f076e8 100644
--- a/packages/linux/linux-omap2_git.bb
+++ b/packages/linux/linux-omap2_git.bb
@@ -2,13 +2,13 @@ require linux-omap.inc
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/linux-omap2-git/${MACHINE}"
-SRCREV = "040378c1b24ace3b8945318a8c24ef218200912c"
+SRCREV = "d6daf8d8cc5ccf90247def5551ee9c3e8555e848"
PV = "2.6.26"
#PV = "2.6.26+2.6.27-rc1+${PR}+git${SRCREV}"
-PR = "r57"
+PR = "r61"
-SRC_URI = "git://source.mvista.com/git/linux-omap-2.6.git;protocol=git \
+SRC_URI = "git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git;protocol=git \
file://defconfig"
SRC_URI_append_beagleboard = " file://no-harry-potter.diff;patch=1 \
@@ -35,11 +35,24 @@ SRC_URI_append_beagleboard = " file://no-harry-potter.diff;patch=1 \
file://mru-clocks3.diff;patch=1 \
file://4bitmmc.diff;patch=1 \
file://no-cortex-deadlock.patch;patch=1 \
- file://01-gptimer_clear_isrs_on_init;patch=1 \
- file://02-gptimer_use_match_for_tick;patch=1 \
- file://03-gptimer_match_plus_ovf;patch=1 \
- file://04-gptimer_add_debug_to_sysrq_q;patch=1 \
+ file://01-make_tick_gptimer_configurable;patch=1 \
file://read_die_ids.patch;patch=1 \
+ file://omap23-pm-noop.eml;patch=1 \
+ file://01-omappm-srf.eml;patch=1 \
+ file://02-omappm-mpu-latency-modeling.eml;patch=1 \
+ file://03-omappm-omap3srf.eml;patch=1 \
+ file://04-omappm-srf-noop.eml;patch=1 \
+ file://05-omappm-virtualclocks.eml;patch=1 \
+ file://06-omappm-opp-resource-modeling.eml;patch=1 \
+ file://07-omappm-srf-updates.eml;patch=1 \
+ file://08-omappm-voltagescaling.eml;patch=1 \
+ file://09-omappm-vdd2-scaling.eml;patch=1 \
+ file://10-omappm-off-mode.eml;patch=1 \
+ file://01-postrate-notifier.eml;patch=1 \
+ file://02-postrate-notifier.eml;patch=1 \
+ file://01-omap3-cpufreq.eml;patch=1 \
+ file://01-beagle-cpufreq.diff;patch=1 \
+ file://musb-dmafix.patch;patch=1 \
"
SRC_URI_append_omap3evm = " file://no-harry-potter.diff;patch=1 \
diff --git a/packages/linux/linux-openmoko.inc b/packages/linux/linux-openmoko.inc
index b4863ca0c8..3a6589791e 100644
--- a/packages/linux/linux-openmoko.inc
+++ b/packages/linux/linux-openmoko.inc
@@ -4,12 +4,12 @@
KERNEL_IMAGETYPE = "uImage"
UBOOT_ENTRYPOINT = "30008000"
-FILES_kernel-image = ""
-ALLOW_EMPTY = "1"
-
COMPATIBLE_HOST = "arm.*-linux"
COMPATIBLE_MACHINE = 'om-gta01|om-gta02'
+CONFIG_NAME_om-gta01 = "gta01"
+CONFIG_NAME_om-gta02 = "gta02"
+
CMDLINE = "unused -- bootloader passes ATAG list"
###############################################################
@@ -66,6 +66,10 @@ else
exit 1
fi
+ if [ ! -f /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION} ] ; then
+ exit 1
+ fi
+
${bindir}/flash_eraseall $MTD_KERNEL_PARTITION
${bindir}/nandwrite -p $MTD_KERNEL_PARTITION /${KERNEL_IMAGEDEST}/${KERNEL_IMAGETYPE}-${KERNEL_VERSION}
else
diff --git a/packages/linux/linux-openmoko/defconfig-oe b/packages/linux/linux-openmoko/defconfig-oe
index 4154639d3e..174f0a544d 100644
--- a/packages/linux/linux-openmoko/defconfig-oe
+++ b/packages/linux/linux-openmoko/defconfig-oe
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24
-# Mon Feb 25 07:03:56 2008
+# Sat Aug 9 09:51:30 2008
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -569,20 +569,20 @@ CONFIG_NET_SCH_FIFO=y
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=m
-CONFIG_BT_L2CAP=m
-CONFIG_BT_SCO=m
-CONFIG_BT_RFCOMM=m
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP=y
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=m
+CONFIG_BT_HIDP=y
#
# Bluetooth device drivers
#
-CONFIG_BT_HCIUSB=m
+CONFIG_BT_HCIUSB=y
CONFIG_BT_HCIUSB_SCO=y
# CONFIG_BT_HCIBTSDIO is not set
# CONFIG_BT_HCIUART is not set
@@ -891,9 +891,6 @@ CONFIG_INPUT_MOUSE=y
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
CONFIG_INPUT_TOUCHSCREEN=y
-CONFIG_TOUCHSCREEN_FILTER=y
-CONFIG_TOUCHSCREEN_FILTER_MEDIAN=y
-CONFIG_TOUCHSCREEN_FILTER_MEAN=y
# CONFIG_TOUCHSCREEN_ADS7846 is not set
# CONFIG_TOUCHSCREEN_FUJITSU is not set
CONFIG_TOUCHSCREEN_S3C2410=y
@@ -1137,13 +1134,13 @@ CONFIG_SOUND=y
#
# Advanced Linux Sound Architecture
#
-CONFIG_SND=m
-CONFIG_SND_TIMER=m
-CONFIG_SND_PCM=m
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
# CONFIG_SND_SEQUENCER is not set
CONFIG_SND_OSSEMUL=y
-CONFIG_SND_MIXER_OSS=m
-CONFIG_SND_PCM_OSS=m
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
CONFIG_SND_PCM_OSS_PLUGINS=y
# CONFIG_SND_DYNAMIC_MINORS is not set
CONFIG_SND_SUPPORT_OLD_API=y
@@ -1176,16 +1173,17 @@ CONFIG_SND_VERBOSE_PROCFS=y
#
# System on Chip audio support
#
-CONFIG_SND_SOC=m
-CONFIG_SND_S3C24XX_SOC=m
-CONFIG_SND_S3C24XX_SOC_I2S=m
-CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=m
-CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753=m
+CONFIG_SND_SOC=y
+CONFIG_SND_S3C24XX_SOC=y
+CONFIG_SND_S3C24XX_SOC_I2S=y
+CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753=y
+# CONFIG_SND_S3C24XX_SOC_NEO1973_WM8753_DEBUG is not set
+CONFIG_SND_S3C24XX_SOC_NEO1973_GTA02_WM8753=y
#
# SoC Audio support for SuperH
#
-CONFIG_SND_SOC_WM8753=m
+CONFIG_SND_SOC_WM8753=y
#
# Open Sound System
@@ -1230,7 +1228,7 @@ CONFIG_USB_SUSPEND=y
# USB Host Controller Drivers
#
# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=m
+CONFIG_USB_OHCI_HCD=y
# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
CONFIG_USB_OHCI_LITTLE_ENDIAN=y
@@ -1568,6 +1566,9 @@ CONFIG_JFFS2_ZLIB=y
CONFIG_JFFS2_RTIME=y
# CONFIG_JFFS2_RUBIN is not set
CONFIG_CRAMFS=y
+CONFIG_SQUASHFS=m
+# CONFIG_SQUASHFS_EMBEDDED is not set
+CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
@@ -1604,7 +1605,6 @@ CONFIG_CIFS_WEAK_PW_HASH=y
# CONFIG_NCP_FS is not set
# CONFIG_CODA_FS is not set
# CONFIG_AFS_FS is not set
-CONFIG_SQUASHFS=m
#
# Partition Types
diff --git a/packages/linux/linux-openmoko_2.6.24+git.bb b/packages/linux/linux-openmoko_2.6.24+git.bb
index 79e2cde8dc..8520adc3e1 100644
--- a/packages/linux/linux-openmoko_2.6.24+git.bb
+++ b/packages/linux/linux-openmoko_2.6.24+git.bb
@@ -6,8 +6,8 @@ DESCRIPTION = "Linux 2.6.x (development) kernel for FIC SmartPhones shipping w/
KERNEL_RELEASE = "2.6.24"
KERNEL_VERSION = "${KERNEL_RELEASE}"
-PV = "${KERNEL_RELEASE}+gitr${SRCREV}"
-PR = "r4"
+PV = "${KERNEL_RELEASE}+${PR}+gitr${SRCREV}"
+PR = "r5"
SRC_URI = "\
git://git.openmoko.org/git/kernel.git;protocol=git;branch=stable \
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-akita b/packages/linux/linux-rp-2.6.26/defconfig-akita
index e630a9abff..27f5dcb781 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-akita
+++ b/packages/linux/linux-rp-2.6.26/defconfig-akita
@@ -1255,7 +1255,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-bootcdx86 b/packages/linux/linux-rp-2.6.26/defconfig-bootcdx86
index 35e9b5cd22..397468a366 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-bootcdx86
+++ b/packages/linux/linux-rp-2.6.26/defconfig-bootcdx86
@@ -1612,7 +1612,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-c7x0 b/packages/linux/linux-rp-2.6.26/defconfig-c7x0
index 6c188e7b57..4c3cbf499c 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-c7x0
+++ b/packages/linux/linux-rp-2.6.26/defconfig-c7x0
@@ -1260,7 +1260,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-hx2000 b/packages/linux/linux-rp-2.6.26/defconfig-hx2000
index 0f2557c0f7..d023ffecac 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-hx2000
+++ b/packages/linux/linux-rp-2.6.26/defconfig-hx2000
@@ -1249,7 +1249,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-poodle b/packages/linux/linux-rp-2.6.26/defconfig-poodle
index 7d41252b15..4d7acb382f 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-poodle
+++ b/packages/linux/linux-rp-2.6.26/defconfig-poodle
@@ -1270,7 +1270,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-qemuarm b/packages/linux/linux-rp-2.6.26/defconfig-qemuarm
index e636b6c671..ae7ef52d31 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-qemuarm
+++ b/packages/linux/linux-rp-2.6.26/defconfig-qemuarm
@@ -1155,7 +1155,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-qemux86 b/packages/linux/linux-rp-2.6.26/defconfig-qemux86
index 42f6740201..975dbdd85b 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-qemux86
+++ b/packages/linux/linux-rp-2.6.26/defconfig-qemux86
@@ -1611,7 +1611,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-spitz b/packages/linux/linux-rp-2.6.26/defconfig-spitz
index 9c8f0ae8a1..5b5db16979 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-spitz
+++ b/packages/linux/linux-rp-2.6.26/defconfig-spitz
@@ -1318,7 +1318,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/linux-rp-2.6.26/defconfig-zylonite b/packages/linux/linux-rp-2.6.26/defconfig-zylonite
index cc2fc482ae..bdf6a3be8a 100644
--- a/packages/linux/linux-rp-2.6.26/defconfig-zylonite
+++ b/packages/linux/linux-rp-2.6.26/defconfig-zylonite
@@ -1257,7 +1257,7 @@ CONFIG_USB_SERIAL_BELKIN=m
# CONFIG_USB_SERIAL_CH341 is not set
# CONFIG_USB_SERIAL_WHITEHEAT is not set
CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
-# CONFIG_USB_SERIAL_CP2101 is not set
+CONFIG_USB_SERIAL_CP2101=m
CONFIG_USB_SERIAL_CYPRESS_M8=m
CONFIG_USB_SERIAL_EMPEG=m
CONFIG_USB_SERIAL_FTDI_SIO=m
diff --git a/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc b/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
index b56746880f..7e7548491f 100644
--- a/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
+++ b/packages/linux/openzaurus-pxa_2.4.18-rmk7-pxa3-embedix20031107.inc
@@ -14,7 +14,7 @@ FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/openzaurus-pxa-${KV}
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.4/linux-${KV}.tar.bz2 \
ftp://ftp.linux.org.uk/pub/armlinux/source/kernel-patches/v2.4/patch-${KV}-rmk${RMKV}.gz;patch=1 \
ftp://source.mvista.com/pub/xscale/pxa/diff-${KV}-rmk${RMKV}-pxa${PXAV}.gz;patch=1 \
- http://developer.ezaurus.com/sl_j/source/c860/${SHARPV}/linux-${PV}-slc860-${SHARPV}-rom1_10.bz2;patch=1 \
+ http://openzaurus.org/mirror/linux-${PV}-slc860-${SHARPV}-rom1_10.bz2;patch=1 \
file://piro.patch;patch=1 \
file://swap-performance.patch;patch=1 \
file://bluetooth-2.4.18-mh15.patch;patch=1 \
diff --git a/packages/lzma/lzma-native_4.17.bb b/packages/lzma/lzma-native_4.17.bb
index 1ccf005182..24664b32e4 100644
--- a/packages/lzma/lzma-native_4.17.bb
+++ b/packages/lzma/lzma-native_4.17.bb
@@ -2,9 +2,10 @@ DESCRIPTION = "LZMA is a general compression method. LZMA provides high compress
HOMEPAGE = "http://www.7-zip.org/"
LICENSE = "LGPL"
DEPENDS = "zlib-native"
-PR = "r2"
+PR = "r3"
-SRC_URI = "http://www.7-zip.org/dl/lzma417.tar.bz2 \
+PVNODOT = "${@bb.data.getVar('PV',d,1).split('.')[0]}${@bb.data.getVar('PV',d,1).split('.')[1]}"
+SRC_URI = "${SOURCEFORGE_MIRROR}/sevenzip/lzma${PVNODOT}.tar.bz2 \
file://lzma-406-zlib-stream.patch;patch=1;pnum=2"
S = "${WORKDIR}/SRC"
diff --git a/packages/mysql/mysql_4.1.18.bb b/packages/mysql/mysql_4.1.18.bb
index cd32f929e3..2017463c36 100644
--- a/packages/mysql/mysql_4.1.18.bb
+++ b/packages/mysql/mysql_4.1.18.bb
@@ -3,7 +3,7 @@ HOMEPAGE = "http://www.mysql.com/"
SECTION = "libs"
LICENSE = "GPL"
DEPENDS += "ncurses mysql-native"
-PR = "r3"
+PR = "r4"
SRC_URI = "http://downloads.mysql.com/archives/mysql-4.1/mysql-${PV}.tar.gz \
file://autofoo.patch;patch=1 \
@@ -28,7 +28,7 @@ EXTRA_OEMAKE = "'GEN_LEX_HASH=${STAGING_BINDIR_NATIVE}/gen_lex_hash'"
EXTRA_OECONF = " --with-embedded-server --prefix=/usr --sysconfdir=/etc/mysql --localstatedir=/var/mysql --datadir=/var/mysql --disable-dependency-tracking --without-raid --without-debug --with-low-memory --without-query-cache --without-man --without-docs --without-innodb "
do_stage() {
- autotools_stage_includes
+ autotools_stage_all
oe_libinstall -a -so -C libmysql libmysqlclient ${STAGING_LIBDIR}
oe_libinstall -a -C libmysqld libmysqld ${STAGING_LIBDIR}
}
diff --git a/packages/mythtv/gmyth-upnp_0.7.0.bb b/packages/mythtv/gmyth-upnp_0.7.0.bb
new file mode 100644
index 0000000000..3f20b3dd83
--- /dev/null
+++ b/packages/mythtv/gmyth-upnp_0.7.0.bb
@@ -0,0 +1,27 @@
+DESCRIPTION = "GMyth is a library to access MythTV backend services."
+LICENSE = "LGPLv2""
+HOMEPAGE = "http://gmyth.sourceforge.net/wiki/index.php/Main_Page"
+
+PR = "r2"
+
+DEPENDS = "glib-2.0 mysql gmyth libupnp"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gmyth/${PN}_0.7-indt1.tar.gz"
+S = "${WORKDIR}/${PN}"
+
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_compile_append() {
+ sed -i -e s:${STAGING_DIR_TARGET}::g \
+ -e s,Version:,Version:\ 0\.7\.0,g \
+ -e s:/${TARGET_SYS}::g \
+ -e s:clinkc::g \
+ gmyth-upnp.pc
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/mythtv/gmyth_0.7.1.bb b/packages/mythtv/gmyth_0.7.1.bb
new file mode 100644
index 0000000000..71c5ddb143
--- /dev/null
+++ b/packages/mythtv/gmyth_0.7.1.bb
@@ -0,0 +1,23 @@
+DESCRIPTION = "GMyth is a library to access MythTV backend services."
+LICENSE = "LGPLv2""
+HOMEPAGE = "http://gmyth.sourceforge.net/wiki/index.php/Main_Page"
+DEPENDS = "mythtv curl libxml2 glib-2.0"
+
+PR = "r2"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/gmyth/${PN}-${PV}.tar.gz"
+
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_compile_append() {
+ sed -i -e s:${STAGING_DIR_TARGET}::g \
+ -e s:/${TARGET_SYS}::g \
+ gmyth.pc
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/nandlogical/nandlogical_1.0.0.bb b/packages/nandlogical/nandlogical_1.0.0.bb
index 7d8fc04b4e..a868576add 100644
--- a/packages/nandlogical/nandlogical_1.0.0.bb
+++ b/packages/nandlogical/nandlogical_1.0.0.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Nandlogical for Sharp mtd1"
LICENSE = "GPL"
DEPENDS = "mtd-utils"
-COMPATIBLE_MACHINE = "(c7x0)"
-PR = "r0"
+COMPATIBLE_MACHINE = "(poodle|c7x0|akita|spitz|tosa)"
+PR = "r1"
SRC_URI = "file://nandlogical.c"
diff --git a/packages/netbase/netbase/om-gta01/interfaces b/packages/netbase/netbase/om-gta01/interfaces
index 39f45af734..090c18aa07 100644
--- a/packages/netbase/netbase/om-gta01/interfaces
+++ b/packages/netbase/netbase/om-gta01/interfaces
@@ -22,7 +22,6 @@ iface usb0 inet static
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.200
- up echo nameserver 192.168.0.200 >/etc/resolv.conf
# Bluetooth networking
iface bnep0 inet dhcp
diff --git a/packages/netbase/netbase/om-gta02/interfaces b/packages/netbase/netbase/om-gta02/interfaces
index 39f45af734..090c18aa07 100644
--- a/packages/netbase/netbase/om-gta02/interfaces
+++ b/packages/netbase/netbase/om-gta02/interfaces
@@ -22,7 +22,6 @@ iface usb0 inet static
netmask 255.255.255.0
network 192.168.0.0
gateway 192.168.0.200
- up echo nameserver 192.168.0.200 >/etc/resolv.conf
# Bluetooth networking
iface bnep0 inet dhcp
diff --git a/packages/netbase/netbase_4.21.bb b/packages/netbase/netbase_4.21.bb
index 73e765376c..2fc352f547 100644
--- a/packages/netbase/netbase_4.21.bb
+++ b/packages/netbase/netbase_4.21.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "This package provides the necessary \
infrastructure for basic TCP/IP based networking."
SECTION = "base"
LICENSE = "GPL"
-PR = "r27"
+PR = "r28"
inherit update-rc.d
diff --git a/packages/numptyphysics/numptyphysics/.mtn2git_empty b/packages/numptyphysics/numptyphysics/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/numptyphysics/numptyphysics/.mtn2git_empty
diff --git a/packages/numptyphysics/numptyphysics/gcc43.diff b/packages/numptyphysics/numptyphysics/gcc43.diff
new file mode 100644
index 0000000000..2658771555
--- /dev/null
+++ b/packages/numptyphysics/numptyphysics/gcc43.diff
@@ -0,0 +1,50 @@
+--- /tmp/Common.h 2008-08-08 15:47:57.000000000 +0200
++++ trunk/Common.h 2008-08-08 15:48:08.403198000 +0200
+@@ -14,6 +14,7 @@
+ *
+ */
+
++#include <cstring>
+ #ifndef COMMON_H
+ #define COMMON_H
+
+--- /tmp/b2Body.h 2008-08-08 15:51:13.000000000 +0200
++++ trunk/Box2D/Source/Dynamics/b2Body.h 2008-08-08 15:52:26.583198000 +0200
+@@ -24,6 +24,7 @@
+ #include "../Collision/b2Shape.h"
+
+ #include <memory>
++#include <cstring>
+
+ class b2Joint;
+ class b2Contact;
+--- /tmp/b2BroadPhase.cpp 2008-08-08 15:53:43.000000000 +0200
++++ trunk/Box2D/Source/Collision/b2BroadPhase.cpp 2008-08-08 15:54:04.913198000 +0200
+@@ -18,6 +18,7 @@
+
+ #include "b2BroadPhase.h"
+ #include <algorithm>
++#include <cstring>
+
+ // Notes:
+ // - we use bound arrays instead of linked lists for cache coherence.
+--- /tmp/b2PolyContact.cpp 2008-08-08 15:55:01.000000000 +0200
++++ trunk/Box2D/Source/Dynamics/Contacts/b2PolyContact.cpp 2008-08-08 15:56:15.553198000 +0200
+@@ -21,6 +21,7 @@
+
+ #include <memory>
+ #include <new>
++#include <cstring>
+
+ b2Contact* b2PolyContact::Create(b2Shape* shape1, b2Shape* shape2, b2BlockAllocator* allocator)
+ {
+--- /tmp/b2BlockAllocator.cpp 2008-08-08 15:57:02.000000000 +0200
++++ trunk/Box2D/Source/Common/b2BlockAllocator.cpp 2008-08-08 15:57:35.833198000 +0200
+@@ -20,6 +20,7 @@
+ #include <cstdlib>
+ #include <memory>
+ #include <climits>
++#include <cstring>
+
+ int32 b2BlockAllocator::s_blockSizes[b2_blockSizes] =
+ {
diff --git a/packages/numptyphysics/numptyphysics_svn.bb b/packages/numptyphysics/numptyphysics_svn.bb
index 976028befe..6c833c2f01 100644
--- a/packages/numptyphysics/numptyphysics_svn.bb
+++ b/packages/numptyphysics/numptyphysics_svn.bb
@@ -9,6 +9,7 @@ PV = "0.2+svnr${SRCREV}"
SRC_URI = "\
svn://garage.maemo.org/svn/${PN};module=trunk;proto=https \
http://wwwpub.zih.tu-dresden.de/~mkluge/numptyphysics_setup.tgz \
+ file://gcc43.diff;patch=1 \
"
S = "${WORKDIR}/trunk"
@@ -16,7 +17,7 @@ EXTRA_S = "${WORKDIR}/local/packages/numptyphysics"
# what an ugly buildsystem... handcrafted Makefiles... back to the stoneage
export CCOPTS = "${CFLAGS} -I Box2D/Include"
-export LDOPTS = "${LDFLAGS} -lSDL -lSDL_image"
+export LDOPTS = "${LDFLAGS} -lSDL -lSDL_image -lX11"
do_configure() {
for i in Config.h Makefile Game.cpp; do
diff --git a/packages/openmax/libomxil-bellagio_0.9.0.bb b/packages/openmax/libomxil-bellagio_0.9.0.bb
index af14ef14e9..6656ed3e27 100644
--- a/packages/openmax/libomxil-bellagio_0.9.0.bb
+++ b/packages/openmax/libomxil-bellagio_0.9.0.bb
@@ -2,6 +2,8 @@ DESCRIPTION = "OpenMAX Integration Layer (IL) is a standard API to access Multim
LICENSE = "LGPLv2"
DEPENDS = "libmad alsa-lib ffmpeg"
+PR = "r1"
+
SRC_URI = "${SOURCEFORGE_MIRROR}/omxil/${PN}-${PV}.tar.gz"
inherit autotools
diff --git a/packages/openmoko2/openmoko-appmanager2_svn.bb b/packages/openmoko2/openmoko-appmanager2_svn.bb
index c299564205..fe5e227d8f 100644
--- a/packages/openmoko2/openmoko-appmanager2_svn.bb
+++ b/packages/openmoko2/openmoko-appmanager2_svn.bb
@@ -1,10 +1,9 @@
DESCRIPTION = "The Openmoko Application Manager"
SECTION = "openmoko/applications"
-DEPENDS = "libmokoui2 libmokojournal2 startup-notification dbus-glib libice libsm ipkg"
+DEPENDS = "libmokoui2 libmokojournal2 startup-notification dbus-glib libice libsm opkg"
PV = "0.1.0+svnr${SRCREV}"
-PR = "r1"
+PR = "r2"
inherit openmoko2
FILES_${PN} += "/usr/share/openmoko-appmanager"
-
diff --git a/packages/oprofile/oprofile/0.9.4-armv7a.diff b/packages/oprofile/oprofile/0.9.4-armv7a.diff
new file mode 100644
index 0000000000..dd95ec732b
--- /dev/null
+++ b/packages/oprofile/oprofile/0.9.4-armv7a.diff
@@ -0,0 +1,451 @@
+Index: oprofile-0.9.4/ChangeLog
+===================================================================
+--- oprofile-0.9.4.orig/ChangeLog 2008-07-18 01:04:22.000000000 +0200
++++ oprofile-0.9.4/ChangeLog 2008-08-08 15:32:15.226950589 +0200
+@@ -1,3 +1,14 @@
++2008-08-08 Jean Pihet <jpihet@mvista.com>
++
++ * events/arm/armv7/events:
++ * events/arm/armv7/unit_masks:
++ * libop/op_cpu_type.c:
++ * libop/op_cpu_type.h:
++ * libop/op_events.c:
++ * utils/ophelp.c: Added ARMv7 support to be consistent with the
++ kernel, remove some duplicate code and add some extra events
++ * event/Makefile.am: Install armv7 stuff.
++
+ 2008-07-17 Maynard Johnson <maynardj@us.ibm.com>
+
+ * configure.in: bump version in AM_INIT_AUTOMAKE to 0.9.4
+Index: oprofile-0.9.4/events/arm/armv7/events
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ oprofile-0.9.4/events/arm/armv7/events 2008-08-08 15:32:15.226950589 +0200
+@@ -0,0 +1,53 @@
++# ARM V7 events
++# From Cortex A8 DDI (ARM DDI 0344B, revision r1p1)
++#
++event:0x00 counters:1,2,3,4 um:zero minimum:500 name:PMNC_SW_INCR : Software increment of PMNC registers
++event:0x01 counters:1,2,3,4 um:zero minimum:500 name:IFETCH_MISS : Instruction fetch misses from cache or normal cacheable memory
++event:0x02 counters:1,2,3,4 um:zero minimum:500 name:ITLB_MISS : Instruction fetch misses from TLB
++event:0x03 counters:1,2,3,4 um:zero minimum:500 name:DCACHE_REFILL : Data R/W operation that causes a refill from cache or normal cacheable memory
++event:0x04 counters:1,2,3,4 um:zero minimum:500 name:DCACHE_ACCESS : Data R/W from cache
++event:0x05 counters:1,2,3,4 um:zero minimum:500 name:DTLB_REFILL : Data R/W that causes a TLB refill
++event:0x06 counters:1,2,3,4 um:zero minimum:500 name:DREAD : Data read architecturally executed (note: architecturally executed = for instructions that are unconditional or that pass the condition code)
++event:0x07 counters:1,2,3,4 um:zero minimum:500 name:DWRITE : Data write architecturally executed
++event:0x08 counters:1,2,3,4 um:zero minimum:500 name:INSTR_EXECUTED : All executed instructions
++event:0x09 counters:1,2,3,4 um:zero minimum:500 name:EXC_TAKEN : Exception taken
++event:0x0A counters:1,2,3,4 um:zero minimum:500 name:EXC_EXECUTED : Exception return architecturally executed
++event:0x0B counters:1,2,3,4 um:zero minimum:500 name:CID_WRITE : Instruction that writes to the Context ID Register architecturally executed
++event:0x0C counters:1,2,3,4 um:zero minimum:500 name:PC_WRITE : SW change of PC, architecturally executed (not by exceptions)
++event:0x0D counters:1,2,3,4 um:zero minimum:500 name:PC_IMM_BRANCH : Immediate branch instruction executed (taken or not)
++event:0x0E counters:1,2,3,4 um:zero minimum:500 name:PC_PROC_RETURN : Procedure return architecturally executed (not by exceptions)
++event:0x0F counters:1,2,3,4 um:zero minimum:500 name:UNALIGNED_ACCESS : Unaligned access architecturally executed
++event:0x10 counters:1,2,3,4 um:zero minimum:500 name:PC_BRANCH_MIS_PRED : Branch mispredicted or not predicted. Counts pipeline flushes because of misprediction
++event:0x12 counters:1,2,3,4 um:zero minimum:500 name:PC_BRANCH_MIS_USED : Branch or change in program flow that could have been predicted
++event:0x40 counters:1,2,3,4 um:zero minimum:500 name:WRITE_BUFFER_FULL : Any write buffer full cycle
++event:0x41 counters:1,2,3,4 um:zero minimum:500 name:L2_STORE_MERGED : Any store that is merged in L2 cache
++event:0x42 counters:1,2,3,4 um:zero minimum:500 name:L2_STORE_BUFF : Any bufferable store from load/store to L2 cache
++event:0x43 counters:1,2,3,4 um:zero minimum:500 name:L2_ACCESS : Any access to L2 cache
++event:0x44 counters:1,2,3,4 um:zero minimum:500 name:L2_CACH_MISS : Any cacheable miss in L2 cache
++event:0x45 counters:1,2,3,4 um:zero minimum:500 name:AXI_READ_CYCLES : Number of cycles for an active AXI read
++event:0x46 counters:1,2,3,4 um:zero minimum:500 name:AXI_WRITE_CYCLES : Number of cycles for an active AXI write
++event:0x47 counters:1,2,3,4 um:zero minimum:500 name:MEMORY_REPLAY : Any replay event in the memory subsystem
++event:0x48 counters:1,2,3,4 um:zero minimum:500 name:UNALIGNED_ACCESS_REPLAY : Unaligned access that causes a replay
++event:0x49 counters:1,2,3,4 um:zero minimum:500 name:L1_DATA_MISS : L1 data cache miss as a result of the hashing algorithm
++event:0x4A counters:1,2,3,4 um:zero minimum:500 name:L1_INST_MISS : L1 instruction cache miss as a result of the hashing algorithm
++event:0x4B counters:1,2,3,4 um:zero minimum:500 name:L1_DATA_COLORING : L1 data access in which a page coloring alias occurs
++event:0x4C counters:1,2,3,4 um:zero minimum:500 name:L1_NEON_DATA : NEON data access that hits L1 cache
++event:0x4D counters:1,2,3,4 um:zero minimum:500 name:L1_NEON_CACH_DATA : NEON cacheable data access that hits L1 cache
++event:0x4E counters:1,2,3,4 um:zero minimum:500 name:L2_NEON : L2 access as a result of NEON memory access
++event:0x4F counters:1,2,3,4 um:zero minimum:500 name:L2_NEON_HIT : Any NEON hit in L2 cache
++event:0x50 counters:1,2,3,4 um:zero minimum:500 name:L1_INST : Any L1 instruction cache access, excluding CP15 cache accesses
++event:0x51 counters:1,2,3,4 um:zero minimum:500 name:PC_RETURN_MIS_PRED : Return stack misprediction at return stack pop (incorrect target address)
++event:0x52 counters:1,2,3,4 um:zero minimum:500 name:PC_BRANCH_FAILED : Branch prediction misprediction
++event:0x53 counters:1,2,3,4 um:zero minimum:500 name:PC_BRANCH_TAKEN : Any predicted branch that is taken
++event:0x54 counters:1,2,3,4 um:zero minimum:500 name:PC_BRANCH_EXECUTED : Any taken branch that is executed
++event:0x55 counters:1,2,3,4 um:zero minimum:500 name:OP_EXECUTED : Number of operations executed (in instruction or mutli-cycle instruction)
++event:0x56 counters:1,2,3,4 um:zero minimum:500 name:CYCLES_INST_STALL : Cycles where no instruction available
++event:0x57 counters:1,2,3,4 um:zero minimum:500 name:CYCLES_INST : Number of instructions issued in a cycle
++event:0x58 counters:1,2,3,4 um:zero minimum:500 name:CYCLES_NEON_DATA_STALL : Number of cycles the processor waits on MRC data from NEON
++event:0x59 counters:1,2,3,4 um:zero minimum:500 name:CYCLES_NEON_INST_STALL : Number of cycles the processor waits on NEON instruction queue or NEON load queue
++event:0x5A counters:1,2,3,4 um:zero minimum:500 name:NEON_CYCLES : Number of cycles NEON and integer processors are not idle
++event:0x70 counters:1,2,3,4 um:zero minimum:500 name:PMU0_EVENTS : Number of events from external input source PMUEXTIN[0]
++event:0x71 counters:1,2,3,4 um:zero minimum:500 name:PMU1_EVENTS : Number of events from external input source PMUEXTIN[1]
++event:0x72 counters:1,2,3,4 um:zero minimum:500 name:PMU_EVENTS : Number of events from both external input sources PMUEXTIN[0] and PMUEXTIN[1]
++event:0xFF counters:0 um:zero minimum:500 name:CPU_CYCLES : Number of CPU cycles
++
+Index: oprofile-0.9.4/events/arm/armv7/unit_masks
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ oprofile-0.9.4/events/arm/armv7/unit_masks 2008-08-08 15:32:15.273760932 +0200
+@@ -0,0 +1,4 @@
++# ARM V7 PMNC possible unit masks
++#
++name:zero type:mandatory default:0x00
++ 0x00 No unit mask
+Index: oprofile-0.9.4/events/Makefile.in
+===================================================================
+--- oprofile-0.9.4.orig/events/Makefile.in 2008-07-18 01:14:45.000000000 +0200
++++ oprofile-0.9.4/events/Makefile.in 2008-08-08 15:32:34.971961074 +0200
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This Makefile.in is free software; the Free Software Foundation
+ # gives unlimited permission to copy and/or distribute it,
+ # with or without modifications, as long as this notice is preserved.
+@@ -13,15 +13,11 @@
+ # PARTICULAR PURPOSE.
+
+ @SET_MAKE@
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = ..
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -38,20 +34,8 @@
+ subdir = events
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+-am__aclocal_m4_deps = $(top_srcdir)/m4/binutils.m4 \
+- $(top_srcdir)/m4/builtinexpect.m4 \
+- $(top_srcdir)/m4/cellspubfdsupport.m4 \
+- $(top_srcdir)/m4/compileroption.m4 \
+- $(top_srcdir)/m4/configmodule.m4 \
+- $(top_srcdir)/m4/copyifchange.m4 $(top_srcdir)/m4/docbook.m4 \
+- $(top_srcdir)/m4/extradirs.m4 $(top_srcdir)/m4/findkernel.m4 \
+- $(top_srcdir)/m4/kerneloption.m4 \
+- $(top_srcdir)/m4/kernelversion.m4 \
+- $(top_srcdir)/m4/mallocattribute.m4 \
+- $(top_srcdir)/m4/poptconst.m4 \
+- $(top_srcdir)/m4/precompiledheader.m4 $(top_srcdir)/m4/qt.m4 \
+- $(top_srcdir)/m4/resultyn.m4 $(top_srcdir)/m4/sstream.m4 \
+- $(top_srcdir)/m4/typedef.m4 $(top_srcdir)/configure.in
++am__aclocal_m4_deps = $(top_srcdir)/acinclude.m4 \
++ $(top_srcdir)/configure.in
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ mkinstalldirs = $(install_sh) -d
+@@ -61,8 +45,6 @@
+ DIST_SOURCES =
+ DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ ACLOCAL = @ACLOCAL@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ AR = @AR@
+ AUTOCONF = @AUTOCONF@
+@@ -70,10 +52,7 @@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+ BFD_LIBS = @BFD_LIBS@
+-BUILD_JVMPI_AGENT_FALSE = @BUILD_JVMPI_AGENT_FALSE@
+-BUILD_JVMPI_AGENT_TRUE = @BUILD_JVMPI_AGENT_TRUE@
+-BUILD_JVMTI_AGENT_FALSE = @BUILD_JVMTI_AGENT_FALSE@
+-BUILD_JVMTI_AGENT_TRUE = @BUILD_JVMTI_AGENT_TRUE@
++BUILD_HAMMER = @BUILD_HAMMER@
+ CAT_ENTRY_END = @CAT_ENTRY_END@
+ CAT_ENTRY_START = @CAT_ENTRY_START@
+ CC = @CC@
+@@ -90,16 +69,17 @@
+ DEFS = @DEFS@
+ DEPDIR = @DEPDIR@
+ DOCBOOK_ROOT = @DOCBOOK_ROOT@
+-ECHO = @ECHO@
++DSYMUTIL = @DSYMUTIL@
++DUMPBIN = @DUMPBIN@
+ ECHO_C = @ECHO_C@
+ ECHO_N = @ECHO_N@
+ ECHO_T = @ECHO_T@
+ EGREP = @EGREP@
+ EXEEXT = @EXEEXT@
+ EXTRA_CFLAGS_MODULE = @EXTRA_CFLAGS_MODULE@
+-F77 = @F77@
+-FFLAGS = @FFLAGS@
++FGREP = @FGREP@
+ GREP = @GREP@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -114,17 +94,23 @@
+ LIBOBJS = @LIBOBJS@
+ LIBS = @LIBS@
+ LIBTOOL = @LIBTOOL@
++LIPO = @LIPO@
+ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAKEINFO = @MAKEINFO@
++MKDIR_P = @MKDIR_P@
+ MOC = @MOC@
+ MODINSTALLDIR = @MODINSTALLDIR@
++NM = @NM@
++NMEDIT = @NMEDIT@
+ OBJEXT = @OBJEXT@
+ OPROFILE_DIR = @OPROFILE_DIR@
+ OPROFILE_MODULE_ARCH = @OPROFILE_MODULE_ARCH@
+ OP_CFLAGS = @OP_CFLAGS@
+ OP_CXXFLAGS = @OP_CXXFLAGS@
+ OP_DOCDIR = @OP_DOCDIR@
++OTOOL = @OTOOL@
++OTOOL64 = @OTOOL64@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+ PACKAGE_NAME = @PACKAGE_NAME@
+@@ -139,13 +125,13 @@
+ QT_LIB = @QT_LIB@
+ QT_VERSION = @QT_VERSION@
+ RANLIB = @RANLIB@
++SED = @SED@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+ SIZE_T_TYPE = @SIZE_T_TYPE@
+ STRIP = @STRIP@
+ UIC = @UIC@
+ VERSION = @VERSION@
+-XMKMF = @XMKMF@
+ XML_CATALOG = @XML_CATALOG@
+ XSLTPROC = @XSLTPROC@
+ XSLTPROC_FLAGS = @XSLTPROC_FLAGS@
+@@ -153,13 +139,13 @@
+ X_EXTRA_LIBS = @X_EXTRA_LIBS@
+ X_LIBS = @X_LIBS@
+ X_PRE_LIBS = @X_PRE_LIBS@
++abs_builddir = @abs_builddir@
++abs_srcdir = @abs_srcdir@
++abs_top_builddir = @abs_top_builddir@
++abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+-ac_ct_F77 = @ac_ct_F77@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -171,15 +157,12 @@
+ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
++builddir = @builddir@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+ dvidir = @dvidir@
+ exec_prefix = @exec_prefix@
+-have_qt_FALSE = @have_qt_FALSE@
+-have_qt_TRUE = @have_qt_TRUE@
+-have_xsltproc_FALSE = @have_xsltproc_FALSE@
+-have_xsltproc_TRUE = @have_xsltproc_TRUE@
+ host = @host@
+ host_alias = @host_alias@
+ host_cpu = @host_cpu@
+@@ -189,12 +172,11 @@
+ includedir = @includedir@
+ infodir = @infodir@
+ install_sh = @install_sh@
+-kernel_support_FALSE = @kernel_support_FALSE@
+-kernel_support_TRUE = @kernel_support_TRUE@
+ libdir = @libdir@
+ libexecdir = @libexecdir@
+ localedir = @localedir@
+ localstatedir = @localstatedir@
++lt_ECHO = @lt_ECHO@
+ mandir = @mandir@
+ mkdir_p = @mkdir_p@
+ oldincludedir = @oldincludedir@
+@@ -204,8 +186,11 @@
+ psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
++srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
++top_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ topdir = @topdir@
+ event_files = \
+ alpha/ev4/events alpha/ev4/unit_masks \
+@@ -298,10 +283,6 @@
+
+ clean-libtool:
+ -rm -rf .libs _libs
+-
+-distclean-libtool:
+- -rm -f libtool
+-uninstall-info-am:
+ tags: TAGS
+ TAGS:
+
+@@ -310,23 +291,21 @@
+
+
+ distdir: $(DISTFILES)
+- $(mkdir_p) $(distdir)/alpha/ev4 $(distdir)/alpha/ev5 $(distdir)/alpha/ev6 $(distdir)/alpha/ev67 $(distdir)/alpha/pca56 $(distdir)/arm/armv6 $(distdir)/arm/mpcore $(distdir)/arm/xscale1 $(distdir)/arm/xscale2 $(distdir)/avr32 $(distdir)/i386/athlon $(distdir)/i386/core $(distdir)/i386/core_2 $(distdir)/i386/p4 $(distdir)/i386/p4-ht $(distdir)/i386/p6_mobile $(distdir)/i386/pii $(distdir)/i386/piii $(distdir)/i386/ppro $(distdir)/ia64/ia64 $(distdir)/ia64/itanium $(distdir)/ia64/itanium2 $(distdir)/mips/20K $(distdir)/mips/24K $(distdir)/mips/25K $(distdir)/mips/34K $(distdir)/mips/5K $(distdir)/mips/r10000 $(distdir)/mips/r12000 $(distdir)/mips/rm7000 $(distdir)/mips/rm9000 $(distdir)/mips/sb1 $(distdir)/mips/vr5432 $(distdir)/mips/vr5500 $(distdir)/ppc/7450 $(distdir)/ppc/e300 $(distdir)/ppc/e500 $(distdir)/ppc/e500v2 $(distdir)/ppc64/970 $(distdir)/ppc64/970MP $(distdir)/ppc64/cell-be $(distdir)/ppc64/pa6t $(distdir)/ppc64/power4 $(distdir)/ppc64/power5 $(distdir)/ppc64/power5+ $(distdir)/ppc64/power5++ $(distdir)/ppc64/power6 $(distdir)/rtc $(distdir)/x86-64/family10 $(distdir)/x86-64/hammer
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ list='$(DISTFILES)'; \
++ dist_files=`for file in $$list; do echo $$file; done | \
++ sed -e "s|^$$srcdirstrip/||;t" \
++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
++ case $$dist_files in \
++ */*) $(MKDIR_P) `echo "$$dist_files" | \
++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
++ sort -u` ;; \
++ esac; \
++ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -371,7 +350,7 @@
+
+ distclean: distclean-am
+ -rm -f Makefile
+-distclean-am: clean-am distclean-generic distclean-libtool
++distclean-am: clean-am distclean-generic
+
+ dvi: dvi-am
+
+@@ -385,12 +364,20 @@
+
+ install-data-am: install-data-local
+
++install-dvi: install-dvi-am
++
+ install-exec-am:
+
++install-html: install-html-am
++
+ install-info: install-info-am
+
+ install-man:
+
++install-pdf: install-pdf-am
++
++install-ps: install-ps-am
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+@@ -409,17 +396,21 @@
+
+ ps-am:
+
+-uninstall-am: uninstall-info-am uninstall-local
++uninstall-am: uninstall-local
++
++.MAKE: install-am install-strip
+
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+- install-data install-data-am install-data-local install-exec \
+- install-exec-am install-info install-info-am install-man \
++ install-data install-data-am install-data-local install-dvi \
++ install-dvi-am install-exec install-exec-am install-html \
++ install-html-am install-info install-info-am install-man \
++ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
+- uninstall uninstall-am uninstall-info-am uninstall-local
++ uninstall uninstall-am uninstall-local
+
+
+ install-data-local:
+Index: oprofile-0.9.4/libop/op_cpu_type.c
+===================================================================
+--- oprofile-0.9.4.orig/libop/op_cpu_type.c 2008-02-22 17:17:48.000000000 +0100
++++ oprofile-0.9.4/libop/op_cpu_type.c 2008-08-08 15:32:15.307120161 +0200
+@@ -71,6 +71,7 @@
+ { "ppc64 PA6T", "ppc64/pa6t", CPU_PPC64_PA6T, 6 },
+ { "ARM MPCore", "arm/mpcore", CPU_ARM_MPCORE, 2 },
+ { "ARM V6 PMU", "arm/armv6", CPU_ARM_V6, 3 },
++ { "ARM V7 PMNC", "arm/armv7", CPU_ARM_V7, 5 },
+ { "ppc64 POWER5++", "ppc64/power5++", CPU_PPC64_POWER5pp, 6 },
+ { "e300", "ppc/e300", CPU_PPC_E300, 4 },
+ { "AVR32", "avr32", CPU_AVR32, 3 },
+Index: oprofile-0.9.4/libop/op_cpu_type.h
+===================================================================
+--- oprofile-0.9.4.orig/libop/op_cpu_type.h 2008-02-22 17:17:48.000000000 +0100
++++ oprofile-0.9.4/libop/op_cpu_type.h 2008-08-08 15:32:15.322934386 +0200
+@@ -69,6 +69,7 @@
+ CPU_PPC64_PA6T, /**< ppc64 PA6T */
+ CPU_ARM_MPCORE, /**< ARM MPCore */
+ CPU_ARM_V6, /**< ARM V6 */
++ CPU_ARM_V7, /**< ARM V7 */
+ CPU_PPC64_POWER5pp, /**< ppc64 Power5++ family */
+ CPU_PPC_E300, /**< e300 */
+ CPU_AVR32, /**< AVR32 */
+Index: oprofile-0.9.4/libop/op_events.c
+===================================================================
+--- oprofile-0.9.4.orig/libop/op_events.c 2008-02-22 17:17:48.000000000 +0100
++++ oprofile-0.9.4/libop/op_events.c 2008-08-08 15:32:15.347934528 +0200
+@@ -793,6 +793,7 @@
+ case CPU_ARM_XSCALE2:
+ case CPU_ARM_MPCORE:
+ case CPU_ARM_V6:
++ case CPU_ARM_V7:
+ case CPU_AVR32:
+ descr->name = "CPU_CYCLES";
+ break;
+Index: oprofile-0.9.4/utils/ophelp.c
+===================================================================
+--- oprofile-0.9.4.orig/utils/ophelp.c 2008-02-22 17:17:49.000000000 +0100
++++ oprofile-0.9.4/utils/ophelp.c 2008-08-08 15:32:15.362934395 +0200
+@@ -433,6 +433,11 @@
+ printf("See ARM11 Technical Reference Manual\n");
+ break;
+
++ case CPU_ARM_V7:
++ printf("See ARM11 Technical Reference Manual\n"
++ "Cortex A8 DDI (ARM DDI 0344B, revision r1p1)\n");
++ break;
++
+ case CPU_PPC64_PA6T:
+ printf("See PA6T Power Implementation Features Book IV\n"
+ "Chapter 7 Performance Counters\n");
+Index: oprofile-0.9.4/events/Makefile.am
+===================================================================
+--- oprofile-0.9.4.orig/events/Makefile.am 2008-08-08 15:35:37.318966302 +0200
++++ oprofile-0.9.4/events/Makefile.am 2008-08-08 15:35:57.259878132 +0200
+@@ -31,6 +31,7 @@
+ arm/xscale1/events arm/xscale1/unit_masks \
+ arm/xscale2/events arm/xscale2/unit_masks \
+ arm/armv6/events arm/armv6/unit_masks \
++ arm/armv7/events arm/armv7/unit_masks \
+ arm/mpcore/events arm/mpcore/unit_masks \
+ avr32/events avr32/unit_masks \
+ mips/20K/events mips/20K/unit_masks \
diff --git a/packages/oprofile/oprofile/armv7a.diff b/packages/oprofile/oprofile/armv7a.diff
index cb53e5e791..d6dccc16c6 100644
--- a/packages/oprofile/oprofile/armv7a.diff
+++ b/packages/oprofile/oprofile/armv7a.diff
@@ -1,6 +1,7 @@
-diff -urN oprofile-0.9.3/ChangeLog oprofile-0.9.3.armv7/ChangeLog
---- oprofile-0.9.3/ChangeLog 2007-07-16 20:22:17.000000000 +0200
-+++ oprofile-0.9.3.armv7/ChangeLog 2008-04-23 18:38:40.000000000 +0200
+Index: oprofile-0.9.3/ChangeLog
+===================================================================
+--- oprofile-0.9.3.orig/ChangeLog 2007-07-16 20:22:17.000000000 +0200
++++ oprofile-0.9.3/ChangeLog 2008-08-08 15:41:09.194935711 +0200
@@ -1,3 +1,14 @@
+
+2008-04-23 Jean Pihet <jpihet@mvista.com>
@@ -16,9 +17,10 @@ diff -urN oprofile-0.9.3/ChangeLog oprofile-0.9.3.armv7/ChangeLog
2007-07-09 Maynard Johnson <maynardj@us.ibm.com>
* doc/opreport.xsd:
-diff -urN oprofile-0.9.3/events/arm/armv7/events oprofile-0.9.3.armv7/events/arm/armv7/events
---- oprofile-0.9.3/events/arm/armv7/events 1970-01-01 01:00:00.000000000 +0100
-+++ oprofile-0.9.3.armv7/events/arm/armv7/events 2008-04-24 15:06:48.000000000 +0200
+Index: oprofile-0.9.3/events/arm/armv7/events
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ oprofile-0.9.3/events/arm/armv7/events 2008-08-08 15:41:09.198936463 +0200
@@ -0,0 +1,53 @@
+# ARM V7 events
+# From Cortex A8 DDI (ARM DDI 0344B, revision r1p1)
@@ -73,37 +75,19 @@ diff -urN oprofile-0.9.3/events/arm/armv7/events oprofile-0.9.3.armv7/events/arm
+event:0x72 counters:1,2,3,4 um:zero minimum:500 name:PMU_EVENTS : Number of events from both external input sources PMUEXTIN[0] and PMUEXTIN[1]
+event:0xFF counters:0 um:zero minimum:500 name:CPU_CYCLES : Number of CPU cycles
+
-diff -urN oprofile-0.9.3/events/arm/armv7/unit_masks oprofile-0.9.3.armv7/events/arm/armv7/unit_masks
---- oprofile-0.9.3/events/arm/armv7/unit_masks 1970-01-01 01:00:00.000000000 +0100
-+++ oprofile-0.9.3.armv7/events/arm/armv7/unit_masks 2008-04-01 10:52:00.000000000 +0200
+Index: oprofile-0.9.3/events/arm/armv7/unit_masks
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ oprofile-0.9.3/events/arm/armv7/unit_masks 2008-08-08 15:41:09.210955689 +0200
@@ -0,0 +1,4 @@
+# ARM V7 PMNC possible unit masks
+#
+name:zero type:mandatory default:0x00
+ 0x00 No unit mask
-diff -urN oprofile-0.9.3/events/Makefile.in oprofile-0.9.3.armv7/events/Makefile.in
---- oprofile-0.9.3/events/Makefile.in 2007-07-16 20:23:28.000000000 +0200
-+++ oprofile-0.9.3.armv7/events/Makefile.in 2008-04-24 15:11:52.000000000 +0200
-@@ -211,6 +211,7 @@
- arm/xscale1/events arm/xscale1/unit_masks \
- arm/xscale2/events arm/xscale2/unit_masks \
- arm/armv6/events arm/armv6/unit_masks \
-+ arm/armv7/events arm/armv7/unit_masks \
- arm/mpcore/events arm/mpcore/unit_masks \
- mips/20K/events mips/20K/unit_masks \
- mips/24K/events mips/24K/unit_masks \
-@@ -270,7 +271,7 @@
-
-
- distdir: $(DISTFILES)
-- $(mkdir_p) $(distdir)/alpha/ev4 $(distdir)/alpha/ev5 $(distdir)/alpha/ev6 $(distdir)/alpha/ev67 $(distdir)/alpha/pca56 $(distdir)/arm/armv6 $(distdir)/arm/mpcore $(distdir)/arm/xscale1 $(distdir)/arm/xscale2 $(distdir)/i386/athlon $(distdir)/i386/core $(distdir)/i386/core_2 $(distdir)/i386/p4 $(distdir)/i386/p4-ht $(distdir)/i386/p6_mobile $(distdir)/i386/pii $(distdir)/i386/piii $(distdir)/i386/ppro $(distdir)/ia64/ia64 $(distdir)/ia64/itanium $(distdir)/ia64/itanium2 $(distdir)/mips/20K $(distdir)/mips/24K $(distdir)/mips/25K $(distdir)/mips/34K $(distdir)/mips/5K $(distdir)/mips/r10000 $(distdir)/mips/r12000 $(distdir)/mips/rm7000 $(distdir)/mips/rm9000 $(distdir)/mips/sb1 $(distdir)/mips/vr5432 $(distdir)/mips/vr5500 $(distdir)/ppc/7450 $(distdir)/ppc/e500 $(distdir)/ppc/e500v2 $(distdir)/ppc64/970 $(distdir)/ppc64/970MP $(distdir)/ppc64/cell-be $(distdir)/ppc64/pa6t $(distdir)/ppc64/power4 $(distdir)/ppc64/power5 $(distdir)/ppc64/power5+ $(distdir)/ppc64/power5++ $(distdir)/ppc64/power6 $(distdir)/rtc $(distdir)/x86-64/family10 $(distdir)/x86-64/hammer
-+ $(mkdir_p) $(distdir)/alpha/ev4 $(distdir)/alpha/ev5 $(distdir)/alpha/ev6 $(distdir)/alpha/ev67 $(distdir)/alpha/pca56 $(distdir)/arm/armv6 $(distdir)/arm/armv7 $(distdir)/arm/mpcore $(distdir)/arm/xscale1 $(distdir)/arm/xscale2 $(distdir)/i386/athlon $(distdir)/i386/core $(distdir)/i386/core_2 $(distdir)/i386/p4 $(distdir)/i386/p4-ht $(distdir)/i386/p6_mobile $(distdir)/i386/pii $(distdir)/i386/piii $(distdir)/i386/ppro $(distdir)/ia64/ia64 $(distdir)/ia64/itanium $(distdir)/ia64/itanium2 $(distdir)/mips/20K $(distdir)/mips/24K $(distdir)/mips/25K $(distdir)/mips/34K $(distdir)/mips/5K $(distdir)/mips/r10000 $(distdir)/mips/r12000 $(distdir)/mips/rm7000 $(distdir)/mips/rm9000 $(distdir)/mips/sb1 $(distdir)/mips/vr5432 $(distdir)/mips/vr5500 $(distdir)/ppc/7450 $(distdir)/ppc/e500 $(distdir)/ppc/e500v2 $(distdir)/ppc64/970 $(distdir)/ppc64/970MP $(distdir)/ppc64/cell-be $(distdir)/ppc64/pa6t $(distdir)/ppc64/power4 $(distdir)/ppc64/power5 $(distdir)/ppc64/power5+ $(distdir)/ppc64/power5++ $(distdir)/ppc64/power6 $(distdir)/rtc $(distdir)/x86-64/family10 $(distdir)/x86-64/hammer
- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
- list='$(DISTFILES)'; for file in $$list; do \
-diff -urN oprofile-0.9.3/libop/op_cpu_type.c oprofile-0.9.3.armv7/libop/op_cpu_type.c
---- oprofile-0.9.3/libop/op_cpu_type.c 2007-07-16 20:22:17.000000000 +0200
-+++ oprofile-0.9.3.armv7/libop/op_cpu_type.c 2008-04-23 18:31:56.000000000 +0200
+Index: oprofile-0.9.3/libop/op_cpu_type.c
+===================================================================
+--- oprofile-0.9.3.orig/libop/op_cpu_type.c 2007-07-16 20:22:17.000000000 +0200
++++ oprofile-0.9.3/libop/op_cpu_type.c 2008-08-08 15:41:09.242955608 +0200
@@ -71,6 +71,7 @@
{ "ppc64 PA6T", "ppc64/pa6t", CPU_PPC64_PA6T, 6 },
{ "ARM MPCore", "arm/mpcore", CPU_ARM_MPCORE, 2 },
@@ -112,9 +96,10 @@ diff -urN oprofile-0.9.3/libop/op_cpu_type.c oprofile-0.9.3.armv7/libop/op_cpu_t
{ "ppc64 POWER5++", "ppc64/power5++", CPU_PPC64_POWER5pp, 6 },
};
-diff -urN oprofile-0.9.3/libop/op_cpu_type.h oprofile-0.9.3.armv7/libop/op_cpu_type.h
---- oprofile-0.9.3/libop/op_cpu_type.h 2007-07-16 20:22:17.000000000 +0200
-+++ oprofile-0.9.3.armv7/libop/op_cpu_type.h 2008-04-23 18:34:37.000000000 +0200
+Index: oprofile-0.9.3/libop/op_cpu_type.h
+===================================================================
+--- oprofile-0.9.3.orig/libop/op_cpu_type.h 2007-07-16 20:22:17.000000000 +0200
++++ oprofile-0.9.3/libop/op_cpu_type.h 2008-08-08 15:41:09.262956072 +0200
@@ -69,6 +69,7 @@
CPU_PPC64_PA6T, /**< ppc64 PA6T */
CPU_ARM_MPCORE, /**< ARM MPCore */
@@ -123,9 +108,10 @@ diff -urN oprofile-0.9.3/libop/op_cpu_type.h oprofile-0.9.3.armv7/libop/op_cpu_t
CPU_PPC64_POWER5pp, /**< ppc64 Power5++ family */
MAX_CPU_TYPE
} op_cpu;
-diff -urN oprofile-0.9.3/libop/op_events.c oprofile-0.9.3.armv7/libop/op_events.c
---- oprofile-0.9.3/libop/op_events.c 2007-07-16 20:22:17.000000000 +0200
-+++ oprofile-0.9.3.armv7/libop/op_events.c 2008-04-23 18:39:30.000000000 +0200
+Index: oprofile-0.9.3/libop/op_events.c
+===================================================================
+--- oprofile-0.9.3.orig/libop/op_events.c 2007-07-16 20:22:17.000000000 +0200
++++ oprofile-0.9.3/libop/op_events.c 2008-08-08 15:41:09.278955619 +0200
@@ -788,6 +788,7 @@
case CPU_ARM_XSCALE2:
case CPU_ARM_MPCORE:
@@ -134,9 +120,10 @@ diff -urN oprofile-0.9.3/libop/op_events.c oprofile-0.9.3.armv7/libop/op_events.
descr->name = "CPU_CYCLES";
break;
-diff -urN oprofile-0.9.3/utils/ophelp.c oprofile-0.9.3.armv7/utils/ophelp.c
---- oprofile-0.9.3/utils/ophelp.c 2007-07-16 20:22:17.000000000 +0200
-+++ oprofile-0.9.3.armv7/utils/ophelp.c 2008-04-23 19:17:51.000000000 +0200
+Index: oprofile-0.9.3/utils/ophelp.c
+===================================================================
+--- oprofile-0.9.3.orig/utils/ophelp.c 2007-07-16 20:22:17.000000000 +0200
++++ oprofile-0.9.3/utils/ophelp.c 2008-08-08 15:41:09.294934552 +0200
@@ -433,6 +433,11 @@
printf("See ARM11 Technical Reference Manual\n");
break;
@@ -149,3 +136,15 @@ diff -urN oprofile-0.9.3/utils/ophelp.c oprofile-0.9.3.armv7/utils/ophelp.c
case CPU_PPC64_PA6T:
printf("See PA6T Power Implementation Features Book IV\n"
"Chapter 7 Performance Counters\n");
+Index: oprofile-0.9.3/events/Makefile.am
+===================================================================
+--- oprofile-0.9.3.orig/events/Makefile.am 2008-08-08 15:41:24.746955563 +0200
++++ oprofile-0.9.3/events/Makefile.am 2008-08-08 15:41:43.465544495 +0200
+@@ -31,6 +31,7 @@
+ arm/xscale1/events arm/xscale1/unit_masks \
+ arm/xscale2/events arm/xscale2/unit_masks \
+ arm/armv6/events arm/armv6/unit_masks \
++ arm/armv7/events arm/armv7/unit_masks \
+ arm/mpcore/events arm/mpcore/unit_masks \
+ mips/20K/events mips/20K/unit_masks \
+ mips/24K/events mips/24K/unit_masks \
diff --git a/packages/oprofile/oprofile/opjitconv-execvp-fix.diff b/packages/oprofile/oprofile/opjitconv-execvp-fix.diff
new file mode 100644
index 0000000000..5e6d271cc5
--- /dev/null
+++ b/packages/oprofile/oprofile/opjitconv-execvp-fix.diff
@@ -0,0 +1,23 @@
+status: applied upstream http://sourceforge.net/tracker/index.php?func=detail&aid=2040417&group_id=16191&atid=116191
+applied in: >0.9.4
+Index: oprofile-0.9.4/daemon/init.c
+===================================================================
+--- oprofile-0.9.4.orig/daemon/init.c 2008-08-06 17:59:43.126578165 +0200
++++ oprofile-0.9.4/daemon/init.c 2008-08-06 18:00:10.694789667 +0200
+@@ -170,14 +170,14 @@
+ sprintf(end_time_str, "%llu", end_time);
+ sprintf(opjitconv_path, "%s/%s", OP_BINDIR, "opjitconv");
+ arg_num = 0;
+- exec_args[arg_num++] = opjitconv_path;
++ exec_args[arg_num++] = "opjitconv";
+ if (vmisc)
+ exec_args[arg_num++] = "-d";
+ exec_args[arg_num++] = session_dir;
+ exec_args[arg_num++] = start_time_str;
+ exec_args[arg_num++] = end_time_str;
+ exec_args[arg_num] = (char *) NULL;
+- execvp("opjitconv", exec_args);
++ execvp(opjitconv_path, exec_args);
+ fprintf(stderr, "Failed to exec %s: %s\n",
+ exec_args[0], strerror(errno));
+ /* We don't want any cleanup in the child */
diff --git a/packages/oprofile/oprofile_0.9.3.bb b/packages/oprofile/oprofile_0.9.3.bb
index 4d6af997af..7ffcec3b99 100644
--- a/packages/oprofile/oprofile_0.9.3.bb
+++ b/packages/oprofile/oprofile_0.9.3.bb
@@ -5,7 +5,7 @@ LICENSE = "GPL"
DEPENDS = "popt binutils"
RDEPENDS = "binutils-symlinks"
RRECOMMENDS = "kernel-vmlinux"
-PR = "r7"
+PR = "r8"
SRC_URI = "${SOURCEFORGE_MIRROR}/oprofile/oprofile-${PV}.tar.gz \
file://armv6_fix.patch;patch=1 \
diff --git a/packages/oprofile/oprofile_0.9.4.bb b/packages/oprofile/oprofile_0.9.4.bb
new file mode 100644
index 0000000000..f8fb744fcc
--- /dev/null
+++ b/packages/oprofile/oprofile_0.9.4.bb
@@ -0,0 +1,40 @@
+SECTION = "devel"
+DESCRIPTION = "OProfile is a system-wide profiler for Linux systems, capable \
+of profiling all running code at low overhead."
+LICENSE = "GPL"
+DEPENDS = "popt binutils"
+RDEPENDS = "binutils-symlinks"
+RRECOMMENDS = "kernel-vmlinux"
+PR = "r0"
+
+SRC_URI = "\
+ ${SOURCEFORGE_MIRROR}/oprofile/oprofile-${PV}.tar.gz \
+ file://opjitconv-execvp-fix.diff;patch=1 \
+ file://0.9.4-armv7a.diff;patch=1 \
+ file://acinclude.m4 \
+ "
+
+inherit autotools
+
+EXTRA_OECONF = " \
+ --with-kernel-support \
+ --without-x \
+ "
+
+do_configure () {
+ cp ${WORKDIR}/acinclude.m4 ${S}/
+ autotools_do_configure
+}
+
+do_stage () {
+ # As of 0.9.4 there is a libopagent library to compile and link against.
+ autotools_stage_all
+}
+
+PACKAGES = "${PN}-dev ${PN}-doc ${PN}-dbg ${PN}"
+
+FILES_${PN}-dev += "\
+ ${libdir}/oprofile/lib*.so \
+ ${libdir}/oprofile/lib*.a \
+ ${libdir}/oprofile/lib*.la \
+"
diff --git a/packages/phoneme/.mtn2git_empty b/packages/phoneme/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/phoneme/.mtn2git_empty
diff --git a/packages/phoneme/files/.mtn2git_empty b/packages/phoneme/files/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/phoneme/files/.mtn2git_empty
diff --git a/packages/phoneme/files/phoneme-makefile-fix.patch b/packages/phoneme/files/phoneme-makefile-fix.patch
new file mode 100644
index 0000000000..9dc80428f1
--- /dev/null
+++ b/packages/phoneme/files/phoneme-makefile-fix.patch
@@ -0,0 +1,144 @@
+Index: cdc/build/share/rules_zoneinfo.mk
+===================================================================
+--- cdc/build/share/rules_zoneinfo.mk.orig
++++ cdc/build/share/rules_zoneinfo.mk
+@@ -45,7 +45,7 @@ $(ZONEINFO_CLASSES_DIR):
+ .compile.classlist:
+ $(AT)if [ -s $(ZONEINFO_CLASSES_DIR)/.classes.list ] ; then \
+ echo "Compiling zic classes... "; \
+- $(JAVAC_CMD) \
++ $(JAVAC_CMD) -sourcepath $(CVM_SHAREROOT)/classes \
+ -d $(ZONEINFO_CLASSES_DIR) \
+ @$(ZONEINFO_CLASSES_DIR)/.classes.list ; \
+ fi
+Index: cdc/build/share/jcc.mk
+===================================================================
+--- cdc/build/share/jcc.mk.orig
++++ cdc/build/share/jcc.mk
+@@ -93,7 +93,7 @@ $(CVM_GENOPCODE_DEPEND) :: $(CVM_JCC_SRC
+ $(CVM_JCC_SRCPATH)/JCCMessage.properties
+ @echo "... $@"
+ $(AT)CLASSPATH=$(CVM_JCC_SRCPATH); export CLASSPATH; \
+- $(CVM_JAVAC) $(JAVAC_OPTIONS) -d $(CVM_JCC_CLASSPATH) \
++ $(CVM_JAVAC) $(JAVAC_OPTIONS) -sourcepath $(CVM_JCC_SRCPATH) -d $(CVM_JCC_CLASSPATH) \
+ $(subst /,$(CVM_FILESEP),$(CVM_JCC_SRCPATH)/GenOpcodes.java)
+ $(AT)rm -f $(CVM_JCC_CLASSPATH)/JCCMessage.properties; \
+ cp $(CVM_JCC_SRCPATH)/JCCMessage.properties $(CVM_JCC_CLASSPATH)/JCCMessage.properties
+@@ -253,7 +253,7 @@ $(CVM_JCC_DEPEND) :: $(CVM_JCC_SRCPATH)/
+ $(CVM_JCC_SRCPATH)/JCCMessage.properties
+ @echo "... $@"
+ @CLASSPATH=$(CVM_JCC_CLASSPATH)$(PS)$(CVM_JCC_SRCPATH)$(PS)$(CVM_DERIVEDROOT)/javavm/runtime; export CLASSPATH; \
+- $(CVM_JAVAC) $(JAVAC_OPTIONS) -d $(CVM_JCC_CLASSPATH) \
++ $(CVM_JAVAC) $(JAVAC_OPTIONS) -classpath $(CVM_JCC_CLASSPATH)$(PS)$(CVM_JCC_SRCPATH)$(PS)$(CVM_DERIVEDROOT)/javavm/runtime -d $(CVM_JCC_CLASSPATH) \
+ $(CVM_JCC_CLASSES)
+ @rm -f $(CVM_JCC_CLASSPATH)/JCCMessage.properties; \
+ cp $(CVM_JCC_SRCPATH)/JCCMessage.properties $(CVM_JCC_CLASSPATH)/JCCMessage.properties
+Index: cdc/build/share/defs.mk
+===================================================================
+--- cdc/build/share/defs.mk.orig
++++ cdc/build/share/defs.mk
+@@ -1187,7 +1187,7 @@ BUNDLE_PRODUCT_NAME = $(subst $(TM),$(e
+ BUNDLE_VERSION = $(subst -,_,$(J2ME_BUILD_VERSION_STRING))
+ BUNDLE_TARGET = $(subst -,_,$(CVM_TARGET))
+
+-BINARY_BUNDLE_NAME = \
++BINARY_BUNDLE_NAME ?= \
+ $(BUNDLE_PRODUCT_NAME)-$(BUNDLE_VERSION)-$(BUNDLE_TARGET)-bin
+ BINARY_BUNDLE_DIRNAME = $(BINARY_BUNDLE_NAME)
+
+@@ -2153,11 +2153,11 @@ endif
+
+ # Note, ALL_INCLUDE_FLAGS flags is setup in rules.mk so
+ # abs2rel only needs to be called on it once.
+-CPPFLAGS += $(CVM_DEFINES) $(ALL_INCLUDE_FLAGS)
+-CFLAGS_SPEED = $(CFLAGS) $(CCFLAGS_SPEED) $(CPPFLAGS)
+-CFLAGS_SPACE = $(CFLAGS) $(CCFLAGS_SPACE) $(CPPFLAGS)
+-CFLAGS_LOOP = $(CFLAGS) $(CCFLAGS_LOOP) $(CPPFLAGS)
+-CFLAGS_FDLIB = $(CFLAGS) $(CCFLAGS_FDLIB) $(CPPFLAGS)
++CVM_CPPFLAGS += $(CVM_DEFINES) $(ALL_INCLUDE_FLAGS)
++CFLAGS_SPEED = $(CFLAGS) $(CCFLAGS_SPEED) $(CVM_CPPFLAGS)
++CFLAGS_SPACE = $(CFLAGS) $(CCFLAGS_SPACE) $(CVM_CPPFLAGS)
++CFLAGS_LOOP = $(CFLAGS) $(CCFLAGS_LOOP) $(CVM_CPPFLAGS)
++CFLAGS_FDLIB = $(CFLAGS) $(CCFLAGS_FDLIB) $(CVM_CPPFLAGS)
+ CFLAGS_JCS =
+
+ LINKFLAGS += -g -Wl,-export-dynamic $(LINK_ARCH_FLAGS)
+@@ -2165,13 +2165,13 @@ LINKLIBS += -lpthread -ldl $(LINK_A
+ LINKLIBS_JCS +=
+
+ SO_CCFLAGS = $(CCFLAGS_SPEED)
+-SO_CFLAGS = $(CFLAGS) $(SO_CCFLAGS) $(CPPFLAGS)
++SO_CFLAGS = $(CFLAGS) $(SO_CCFLAGS) $(CVM_CPPFLAGS)
+ SO_LINKFLAGS = $(LINKFLAGS) -shared
+
+ #
+ # commands for running the tools
+ #
+-ASM_CMD = $(AT)$(TARGET_AS) $(ASM_FLAGS) -D_ASM $(CPPFLAGS) \
++ASM_CMD = $(AT)$(TARGET_AS) $(ASM_FLAGS) -D_ASM $(CVM_CPPFLAGS) \
+ -o $@ $(call abs2rel,$<)
+
+ # compileCCC(flags, objfile, srcfiles)
+Index: cdc/build/share/rules.mk
+===================================================================
+--- cdc/build/share/rules.mk.orig
++++ cdc/build/share/rules.mk
+@@ -521,7 +521,7 @@ endif
+ # As a performance improvement, evaluate some flags in case
+ # they contain shell commands.
+ # FIXME: Disabled because this causes GCI build failures
+-#$(J2ME_CLASSLIB):: CPPFLAGS := $(CPPFLAGS)
++#$(J2ME_CLASSLIB):: CVM_CPPFLAGS := $(CVM_CPPFLAGS)
+
+ $(J2ME_CLASSLIB):: initbuild
+ $(J2ME_CLASSLIB):: btclasses $(CVM_BUILDTIME_CLASSESZIP)
+@@ -708,14 +708,14 @@ $(CVM_OBJDIR)/executejava.o: $(CVM_DERIV
+ # command to use to generate dependency makefiles if requested
+ ifeq ($(GENERATEMAKEFILES), true)
+ GENERATEMAKEFILES_CMD = \
+- @$(TARGET_CC) $(CCDEPEND) $(CC_ARCH_FLAGS) $(CPPFLAGS) $< \
++ @$(TARGET_CC) $(CCDEPEND) $(CC_ARCH_FLAGS) $(CVM_CPPFLAGS) $< \
+ 2> /dev/null | sed 's!$*\.o!$(dir $@)&!g' > $(@:.o=.d)
+ endif
+
+ # command to use to generate stack map analysis files if requested
+ ifeq ($(CVM_CSTACKANALYSIS), true)
+ CSTACKANALYSIS_CMD = \
+- $(AT)$(TARGET_CC) -S $(CCFLAGS) $(CPPFLAGS) -o $(@:.o=.asm) $<
++ $(AT)$(TARGET_CC) -S $(CCFLAGS) $(CVM_CPPFLAGS) -o $(@:.o=.asm) $<
+ endif
+
+ #
+@@ -751,7 +753,7 @@ $(CVM_OBJDIR)/%.o: %.S
+ @echo "as $<"
+ $(ASM_CMD)
+ ifeq ($(GENERATEMAKEFILES), true)
+- @$(TARGET_CC) $(ASM_ARCH_FLAGS) $(CCDEPEND) $(CPPFLAGS) $< \
++ @$(TARGET_CC) $(ASM_ARCH_FLAGS) $(CCDEPEND) $(CVM_CPPFLAGS) $< \
+ 2> /dev/null | sed 's!$*\.o!$(dir $@)&!g' > $(@:.o=.d)
+ endif
+ ifeq ($(CVM_CSTACKANALYSIS), true)
+@@ -772,7 +774,7 @@ $(CVM_FDLIB_FILES): $(CVM_OBJDIR)/%.o: $
+ @echo "cc $<"
+ $(CC_CMD_FDLIB)
+ ifeq ($(GENERATEMAKEFILES), true)
+- @$(TARGET_CC) $(CC_ARCH_FLAGS) $(CCDEPEND) $(CPPFLAGS) $< \
++ @$(TARGET_CC) $(CC_ARCH_FLAGS) $(CCDEPEND) $(CVM_CPPFLAGS) $< \
+ 2> /dev/null | sed 's!$*\.o!$(dir $@)&!g' > $(@:.o=.d)
+ endif
+
+Index: cdc/src/linux-arm/javavm/runtime/segvhandler_arch.c
+===================================================================
+--- cdc/src/linux-arm/javavm/runtime/segvhandler_arch.c.orig
++++ cdc/src/linux-arm/javavm/runtime/segvhandler_arch.c
+@@ -41,8 +41,8 @@
+ #include <dlfcn.h>
+ #include <stddef.h>
+ /* avoid conflicting ucontext definitions */
+-#define ucontext asm_ucontext
+-#include <asm/ucontext.h>
++/*#define ucontext asm_ucontext*/
++#include <ucontext.h>
+ #include <unistd.h>
+
+ #define MAXSIGNUM 32
diff --git a/packages/phoneme/phoneme-advanced-foundation_0.0.b73.bb b/packages/phoneme/phoneme-advanced-foundation_0.0.b73.bb
new file mode 100644
index 0000000000..59dbfb7a3b
--- /dev/null
+++ b/packages/phoneme/phoneme-advanced-foundation_0.0.b73.bb
@@ -0,0 +1,26 @@
+require phoneme-advanced.inc
+
+BUILDREV = "b73"
+SRCREV = "11560"
+
+SRC_URI += "file://phoneme-makefile-fix.patch;patch=1;pnum=0"
+
+FILES_${PN} += "\
+ ${COMMON_DIR}/bin/cvm \
+ ${COMMON_DIR}/lib/btclasses.zip \
+ ${COMMON_DIR}/lib/content-types.properties \
+ ${COMMON_DIR}/lib/foundation.jar \
+ ${COMMON_DIR}/lib/security/java.security \
+ ${COMMON_DIR}/lib/security/java.policy \
+ ${COMMON_DIR}/lib/zi/Asia/Novosibirsk \
+ ${COMMON_DIR}/lib/zi/Asia/Calcutta \
+ ${COMMON_DIR}/lib/zi/ZoneInfoMappings \
+ ${COMMON_DIR}/lib/zi/GMT \
+ ${COMMON_DIR}/lib/zi/America/Los_Angeles \
+ ${COMMON_DIR}/democlasses.jar \
+ ${COMMON_DIR}/testclasses.zip \
+ ${COMMON_DIR}/legal/license.txt \
+ ${COMMON_DIR}/legal/thirdpartylicensereadme.txt \
+ ${COMMON_DIR}/legal/copyright.txt \
+"
+
diff --git a/packages/phoneme/phoneme-advanced.inc b/packages/phoneme/phoneme-advanced.inc
new file mode 100644
index 0000000000..aad82cfe42
--- /dev/null
+++ b/packages/phoneme/phoneme-advanced.inc
@@ -0,0 +1,160 @@
+DESCRIPTION = "A free CDC JavaVM and class library from Sun Microsystems."
+LICENSE = "GPLv2"
+HOMEPAGE = "https://phoneme.dev.java.net"
+AUTHOR = "Sun Microsystems, Inc."
+
+DEPENDS = "classpath-native virtual/javac-native linux-libc-headers"
+
+inherit java update-alternatives
+
+# The PhoneME Advanced build system is documented here: http://java.sun.com/javame/reference/docs/cdc_build_system.pdf
+# NOTE: We need to provide an empty password. pswd='' seems not to be the correct way.
+SRC_URI = "\
+ svn://phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=cdc;proto=https;localdir=cdc;user=guest;pswd='' \
+ svn://phoneme.dev.java.net/svn/phoneme/builds/phoneme_advanced-mr2-dev-${BUILDREV};module=tools;proto=https;localdir=tools;user=guest;pswd='' \
+ svn://phoneme.dev.java.net/svn/phoneme;module=legal;localdir=legal;proto=https;user=guest;pswd='' \
+ "
+
+PROVIDES = "virtual/java-cdc java-cdc-runtime"
+PRIORITY = "optional"
+SECTION = "interpreters"
+
+# PhoneME builds currently cannot be parallel
+PARALLEL_MAKE = ""
+
+S = "${WORKDIR}"
+
+BUILDREV = ${@bb.fatal('BUILDREV is not defined in this phoneme-advanced recipe!')}
+SRCREV = ${@bb.fatal('SRCREV is not defined in this phoneme-advanced recipe!')}
+
+COMMON_DIR = "${libdir_jvm}/${PN}"
+
+do_compile() {
+ set_arch
+ oe_runmake -C cdc/build/linux-$ARCH-generic bin
+}
+
+do_install() {
+ install -d ${D}/${libdir_jvm}
+
+ unzip cdc/install/${PN}.zip -d ${D}/${libdir_jvm}
+
+ # Additional link named cvm
+ install -d ${D}/${bindir}
+ ln -sf ${libdir_jvm}/${PN}/bin/cvm ${D}${bindir}/cvm
+}
+
+do_configure() {
+ set_arch
+ test ! -d cdc/build/linux-$ARCH-generic && mkdir -p cdc/build/linux-$ARCH-generic
+ cd cdc/build/linux-$ARCH-generic
+
+ echo "Configuring PhoneME Advanced build"
+ # At the moment we do not support anything else than the foundation
+ #profiles.
+ pmo_start J2ME_CLASSLIB foundation
+
+ # Dispatch to arch-specific functions.
+ oe_phoneme_config$ARCH
+
+ oe_phoneme_configbase
+
+ pmo "# Misc locations and file names."
+ pmo BINARY_BUNDLE_NAME ${PN}
+ pmo BINARY_BUNDLE_APPEND_REVISION false
+ pmo JAVAME_LEGAL_DIR ${WORKDIR}/legal
+
+ pmo "# Java toolchain binaries"
+ pmo JDK_HOME $JAVA_HOME
+ pmo CVM_TARGET_TOOLS_PREFIX ${CROSS_DIR}/bin/
+ pmo CVM_JAVA java
+ pmo CVM_JAVAC javac
+ pmo CVM_JAVADOC true
+ pmo CVM_JAVAH gjavah
+ pmo CVM_JAR gjar
+ pmo CVM_INCLUDE_DIR ${STAGING_INCDIR}/classpath
+
+ pmo JAVAC_OPTIONS -nowarn
+
+ pmo "# Host C/C++ toolchain binaries"
+ pmo HOST_CC "${BUILD_CC}"
+ pmo HOST_CC_PATH "${BUILD_CC}"
+ pmo HOST_CCC "${BUILD_CXX}"
+ pmo HOST_PATH "${BUILD_CXX}"
+ pmo HOST_LD "${BUILD_LD}"
+ pmo HOST_RANLIB "${BUILD_RANLIB}"
+
+ pmo "# C/C++ toolchain binaries"
+ pmo TARGET_CC "${CC}"
+ pmo TARGET_CC_PATH "${CC}"
+ pmo CCFLAGS "${CFLAGS}"
+ pmo TARGET_CCC "${CXX}"
+ pmo TARGET_PATH "${CXX}"
+ pmo CCCFLAGS "${CXXFLAGS}"
+ pmo TARGET_AR "${AR}"
+ pmo TARGET_LD "${CC}"
+ pmo TARGET_RANLIB "${RANLIB}"
+
+ pmo USE_GCC2 false
+
+ pmo "include ../share/top.mk"
+}
+
+pmo_start() {
+ echo "$1 = $2" > GNUmakefile
+ echo "$1 = $2"
+}
+
+pmo() {
+ if [ "$2" ]
+ then
+ echo "$1 = $2" >> GNUmakefile
+ echo "$1 = $2"
+ else
+ echo "$1" >> GNUmakefile
+ echo "$1"
+ fi
+}
+
+set_arch() {
+ case ${TARGET_ARCH} in
+ arm*) ARCH=arm ;;
+ i*86*) ARCH=x86 ;;
+ mips*) ARCH=mips ;;
+ powerpc*) ARCH=powerpc ;;
+ sparc*) ARCH=sparc ;;
+ x86_64*) ARCH=x86 ;;
+ *) die "Sorry, your target architecture is not supported!" ;;
+ esac
+}
+
+# Default non-arch specific configuration
+oe_phoneme_configbase() {
+ pmo CVM_DEBUG false
+ pmo CVM_JIT true
+}
+
+# Default arch specific configurations
+oe_phoneme_configarm() {
+ tf=true
+ if [ Xoabi = X${ARM_ABI} ]
+ then
+ tf=false
+ fi
+
+ pmo USE_AAPCS $tf
+}
+
+oe_phoneme_configx86() {
+ # Taken from linux-x86-generic/GNUmakefile
+ pmo CVM_JIT_REGISTER_LOCALS false
+}
+
+ALTERNATIVE_NAME = "java-cdc"
+ALTERNATIVE_LINK = "${bindir}/${ALTERNATIVE_NAME}"
+ALTERNATIVE_PATH = "${libdir}/jvm/${PN}/bin/cvm"
+ALTERNATIVE_PRIORITY = "10"
+
+FILES_${PN} = "${bindir}"
+FILES_${PN}-dbg += "${COMMON_DIR}/bin/.debug/cvm"
+
diff --git a/packages/portaudio/portaudio-v19_20071207.bb b/packages/portaudio/portaudio-v19_20071207.bb
deleted file mode 100644
index f8de2d741d..0000000000
--- a/packages/portaudio/portaudio-v19_20071207.bb
+++ /dev/null
@@ -1,27 +0,0 @@
-#! /bin/sh
-#
-# Copyright Matthias Hentges <devel@hentges.net> (c) 2008
-# License: MIT (see http://www.opensource.org/licenses/mit-license.php
-# for a copy of the license)
-#
-# Filename: portaudio-v19_20071207.bb
-# Date: 20080104 (YMD)
-
-DESCRIPTION = "portaudio is a portable cross-platform Audio API"
-SECTION = "base"
-LICENSE = "GPL"
-
-PR = "r0"
-
-######################################################################################
-
-SRC_URI = "http://www.portaudio.com/archives/pa_stable_v19_${PV}.tar.gz"
-
-S = "${WORKDIR}/portaudio"
-
-inherit autotools
-
-do_stage() {
- install -m 0644 ${S}/include/portaudio.h ${STAGING_INCDIR}/
- oe_libinstall -C lib -so libportaudio ${STAGING_LIBDIR}/
-}
diff --git a/packages/portaudio/portaudio-v19_svn.bb b/packages/portaudio/portaudio-v19_svn.bb
new file mode 100644
index 0000000000..8fe48f8efe
--- /dev/null
+++ b/packages/portaudio/portaudio-v19_svn.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "A portable audio library"
+SECTION = "libs/multimedia"
+PRIORITY = "optional"
+LICENSE = "GPL"
+PV = "v19+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "svn://www.portaudio.com/repos/portaudio;module=trunk;proto=https"
+S = "${WORKDIR}/trunk"
+
+inherit autotools
+
+TESTS = " pa_devs patest1 patest_hang patest_many patest_prime patest_sine patest_stop patest_write_sine \
+pa_fuzz patest_buffer patest_in_overflow patest_maxsines patest_read_record patest_sine8 patest_sync \
+pa_minlat patest_callbackstop patest_latency patest_multi_sine patest_record patest_sine_formats patest_toomanysines \
+paqa_devs patest_clip patest_leftright patest_out_underflow patest_ringmix patest_sine_time patest_underflow \
+paqa_errs patest_dither patest_longsine patest_pink patest_saw patest_start_stop patest_wire"
+
+# DEFINES = PA_USE_OSS=1 HAVE_LIBPTHREAD=1
+# DEFINES += PA_LITTLE_ENDIAN
+
+# INCLUDEPATH = ../pa_common
+
+do_stage() {
+ autotools_stage_all
+}
+
+PACKAGES += "portaudio-examples"
+FILES_portaudio-examples = "${bindir}"
diff --git a/packages/portaudio/portaudio_0.0.19.bb b/packages/portaudio/portaudio_0.0.19.bb
deleted file mode 100644
index 748519f5b1..0000000000
--- a/packages/portaudio/portaudio_0.0.19.bb
+++ /dev/null
@@ -1,87 +0,0 @@
-DESCRIPTION = "A portable audio library"
-SECTION = "libs"
-PRIORITY = "optional"
-LICENSE = "GPL"
-PV = "1:0.0.19+cvs${SRCDATE}"
-PR = "r1"
-
-SRC_URI = "http://www.portaudio.com/archives/pa_snapshot_v19.tar.gz"
-S = "${WORKDIR}/portaudio"
-
-inherit qmake
-
-TESTS = " pa_devs patest1 patest_hang patest_many patest_prime patest_sine patest_stop patest_write_sine \
-pa_fuzz patest_buffer patest_in_overflow patest_maxsines patest_read_record patest_sine8 patest_sync \
-pa_minlat patest_callbackstop patest_latency patest_multi_sine patest_record patest_sine_formats patest_toomanysines \
-paqa_devs patest_clip patest_leftright patest_out_underflow patest_ringmix patest_sine_time patest_underflow \
-paqa_errs patest_dither patest_longsine patest_pink patest_saw patest_start_stop patest_wire"
-
-do_configure_prepend() {
- echo "TEMPLATE = subdirs" >portaudio.pro
- echo "SUBDIRS = lib tests" >>portaudio.pro
-
- mkdir -p lib
- cat <<EOF >lib/lib.pro
-TEMPLATE = lib
-CONFIG = console debug warn_on
-TARGET = portaudio
-VERSION = 0.0.19
-DESTDIR = .
-DEFINES = PA_USE_OSS=1 HAVE_LIBPTHREAD=1
-DEFINES += PA_LITTLE_ENDIAN
-
-INCLUDEPATH = ../pa_common
-
-SOURCES = \
- ../pa_common/pa_allocation.c \
- ../pa_common/pa_converters.c \
- ../pa_common/pa_cpuload.c \
- ../pa_common/pa_dither.c \
- ../pa_common/pa_front.c \
- ../pa_common/pa_process.c \
- ../pa_common/pa_skeleton.c \
- ../pa_common/pa_stream.c \
- ../pa_common/pa_trace.c \
-\
- ../pa_unix_oss/pa_unix_oss.c \
- ../pa_unix/pa_unix_hostapis.c \
- ../pa_unix/pa_unix_util.c
-EOF
-
- mkdir -p tests
- echo "TEMPLATE = subdirs" >tests/tests.pro
- echo "SUBDIRS = \\" >>tests/tests.pro
-
- for test in ${TESTS}
- do
- mkdir -p tests/$test
- cat <<EOF >tests/$test/$test.pro
-TEMPLATE = app
-CONFIG = console debug warn_on thread
-DESTDIR = ../../bin
-INCLUDEPATH = ../../pa_common/
-LIBS = -L../../lib -lportaudio -lm
-SOURCES = ../../pa_tests/$test.c
-EOF
- echo "$test \\" >>tests/tests.pro
- done
- echo >>tests/tests.pro
-}
-
-do_stage() {
- oe_libinstall -so -C lib libportaudio ${STAGING_LIBDIR}
- install -m 0644 pa_common/portaudio.h ${STAGING_INCDIR}/portaudio.h
-}
-
-do_install() {
- install -d ${D}${libdir}
- install -d ${D}${bindir}
- install -d ${D}${includedir}
- oe_libinstall -so -C lib libportaudio ${D}${libdir}
- install -m 0644 pa_common/portaudio.h ${D}${includedir}
- install -m 0755 bin/* ${D}${bindir}/
-}
-
-PACKAGES = "${PN}-dbg libportaudio0 portaudio-dev portaudio-examples"
-FILES_libportaudio0 = "${libdir}"
-FILES_portaudio-examples = "${bindir}"
diff --git a/packages/povray/povray-3.6.1+3.7.0-beta25b/.mtn2git_empty b/packages/povray/povray-3.6.1+3.7.0-beta25b/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/povray/povray-3.6.1+3.7.0-beta25b/.mtn2git_empty
diff --git a/packages/povray/povray-3.6.1+3.7.0-beta25b/configure-cross-hack.patch b/packages/povray/povray-3.6.1+3.7.0-beta25b/configure-cross-hack.patch
new file mode 100644
index 0000000000..e0803bafac
--- /dev/null
+++ b/packages/povray/povray-3.6.1+3.7.0-beta25b/configure-cross-hack.patch
@@ -0,0 +1,42 @@
+--- /tmp/configure.ac 2008-08-14 01:13:37.000000000 +0200
++++ povray-3.7.0.beta.25b/configure.ac 2008-08-14 01:17:56.253198000 +0200
+@@ -357,8 +357,6 @@
+ AC_MSG_RESULT([yes])
+ AX_CHECK_LIB([z], [$required_libz_version], [z], [zlibVersion], [zlib.h], [zlibVersion()], [$with_zlib])
+ if test x"$ax_check_lib" != x"ok"; then
+- AC_MSG_ERROR([cannot find a suitable ZLIB library])
+- else
+ pov_libz=ok
+ fi
+ fi
+@@ -373,8 +371,6 @@
+ AC_MSG_RESULT([yes])
+ AX_CHECK_LIB([png], [$required_libpng_version], [png12 png], [png_get_libpng_ver], [png.h], [png_get_libpng_ver(NULL)], [$with_libpng])
+ if test x"$ax_check_lib" != x"ok"; then
+- AC_MSG_ERROR([cannot find a suitable PNG library])
+- else
+ pov_libpng=ok
+ fi
+ fi
+@@ -390,11 +386,9 @@
+ AC_MSG_RESULT([yes])
+ AX_CHECK_LIBJPEG([$required_libjpeg_version], [$with_libjpeg])
+ if test x"$ax_check_libjpeg" != x"ok"; then
+- AC_MSG_ERROR([cannot find a suitable JPEG library])
+- else
+ # create jversion.h in builddir
+ test -d "./source" || mkdir ./source
+- echo "#define JVERSION \"${ax_check_libjpeg_version}\"" > ./source/jversion.h
++ echo "#define JVERSION \"62\"" > ./source/jversion.h
+ pov_libjpeg=ok
+ fi
+ fi
+@@ -409,8 +403,6 @@
+ AC_MSG_RESULT([yes])
+ AX_CHECK_LIBTIFF([$required_libtiff_version], [$with_libtiff])
+ if test x"$ax_check_libtiff" != x"ok"; then
+- AC_MSG_ERROR([cannot find a suitable TIFF library])
+- else
+ pov_libtiff=ok
+ fi
+ fi
diff --git a/packages/povray/povray-3.6.1+3.7.0-beta25b/gcc43.diff b/packages/povray/povray-3.6.1+3.7.0-beta25b/gcc43.diff
new file mode 100644
index 0000000000..696dfb471f
--- /dev/null
+++ b/packages/povray/povray-3.6.1+3.7.0-beta25b/gcc43.diff
@@ -0,0 +1,70 @@
+--- /tmp/processoptions.cpp 2008-08-14 01:47:37.000000000 +0200
++++ povray-3.7.0.beta.25b/source/base/processoptions.cpp 2008-08-14 01:48:23.853198000 +0200
+@@ -90,6 +90,7 @@
+ *
+ *********************************************************************************/
+
++#include <cstring>
+ #include <cstdarg>
+ #include <cctype>
+
+--- /tmp/fileinputoutput.cpp 2008-08-14 01:49:16.000000000 +0200
++++ povray-3.7.0.beta.25b/source/base/fileinputoutput.cpp 2008-08-14 01:49:33.043198000 +0200
+@@ -90,6 +90,7 @@
+ *
+ *********************************************************************************/
+
++#include <cstring>
+ #include <cstdlib>
+ #include <cstdarg>
+
+--- /tmp/textstreambuffer.cpp 2008-08-14 01:52:07.000000000 +0200
++++ povray-3.7.0.beta.25b/source/base/textstreambuffer.cpp 2008-08-14 01:52:21.693198000 +0200
+@@ -90,6 +90,7 @@
+ *
+ *********************************************************************************/
+
++#include <cstring>
+ #include <algorithm>
+
+ #include "configbase.h"
+--- /tmp/fileinputoutput.h 2008-08-14 01:53:49.000000000 +0200
++++ povray-3.7.0.beta.25b/source/base/fileinputoutput.h 2008-08-14 01:54:07.213198000 +0200
+@@ -96,6 +96,7 @@
+ #include "base/types.h"
+ #include "base/path.h"
+
++#include <cstring>
+ #include <string>
+
+ namespace pov_base
+--- /tmp/configbase.h 2008-08-14 01:57:58.000000000 +0200
++++ povray-3.7.0.beta.25b/source/base/configbase.h 2008-08-14 01:58:12.373198000 +0200
+@@ -95,6 +95,7 @@
+ #ifndef CONFIGBASE_H
+ #define CONFIGBASE_H
+
++#include <climits>
+ #include "syspovconfigbase.h"
+
+ #ifndef DBL
+--- /tmp/unixoptions.cpp 2008-08-14 02:02:52.000000000 +0200
++++ povray-3.7.0.beta.25b/vfe/unix/unixoptions.cpp 2008-08-14 10:22:09.073198000 +0200
+@@ -454,13 +454,16 @@
+ char *errormsg =
+ "Cannot determine the current working directory.\n"
+ "Check that the PWD environment variable does exist and is valid.\n";
++ int no_error_call = 1;
+ if(no_error_call)
+ {
+ fprintf(stderr, "%s: %s\n", PACKAGE, errormsg);
+ exit(EXIT_FAILURE);
+ }
++#ifdef USE_ERROR
+ else
+- Error("%s", errormsg);
++ std::Error("%s", errormsg);
++#endif
+ }
+ #endif
+
diff --git a/packages/povray/povray_3.6.1+3.7.0-beta25b.bb b/packages/povray/povray_3.6.1+3.7.0-beta25b.bb
new file mode 100644
index 0000000000..eee01e13ed
--- /dev/null
+++ b/packages/povray/povray_3.6.1+3.7.0-beta25b.bb
@@ -0,0 +1,42 @@
+DESCRIPTION = "The Persistence of Vision Raytracer is a high-quality, totally free tool for creating stunning three-dimensional graphics. "
+HOMEPAGE = "http://www.povray.org"
+SECTION = "console/graphics"
+LICENSE = "povray"
+DEPENDS = "virtual/libx11 boost zlib jpeg libpng tiff"
+
+PR = "r1"
+
+#We apply a patch that subverts the checks for jpeg, zlib, png and tiff because we know OE has the required versions, but it is still a hack.
+SRC_URI = "http://www.povray.org/redirect/www.povray.org/beta/source/povray-src-3.7.0.beta.25b.tar.bz2 \
+ file://configure-cross-hack.patch;patch=1 \
+ file://gcc43.diff;patch=1 \
+ "
+
+S = "${WORKDIR}/povray-3.7.0.beta.25b"
+
+inherit autotools pkgconfig
+
+EXTRA_OECONF = " --with-boost-thread=boost_thread-mt \
+ COMPILED_BY=${MAINTAINER} "
+
+FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -frename-registers -fomit-frame-pointer -O3 -ftree-vectorize -ffast-math -fno-math-errno "
+
+PACKAGES += "${PN}-scenes ${PN}-ini ${PN}-icons ${PN}-scripts ${PN}-includes"
+
+PACKAGE_ARCH_${PN}-doc = "all"
+
+PACKAGE_ARCH_${PN}-scenes = "all"
+FILES_${PN}-scenes = "${datadir}/povray-3.7/scenes"
+
+PACKAGE_ARCH_${PN}-ini = "all"
+FILES_${PN}-ini = "${datadir}/povray-3.7/ini"
+
+PACKAGE_ARCH_${PN}-icons = "all"
+FILES_${PN}-icons = "${datadir}/povray-3.7/icons"
+
+PACKAGE_ARCH_${PN}-scripts = "all"
+FILES_${PN}-scripts = "${datadir}/povray-3.7/scripts"
+
+PACKAGE_ARCH_${PN}-includes = "all"
+FILES_${PN}-includes = "${datadir}/povray-3.7/include"
+
diff --git a/packages/prboom/prboom_2.4.7.bb b/packages/prboom/prboom_2.4.7.bb
new file mode 100644
index 0000000000..f775855d93
--- /dev/null
+++ b/packages/prboom/prboom_2.4.7.bb
@@ -0,0 +1,25 @@
+DESCRIPTION = "A Doom Clone based on SDL"
+SECTION = "games"
+PRIORITY = "optional"
+DEPENDS = "virtual/libsdl libsdl-mixer libsdl-net"
+LICENSE = "GPL"
+
+PR = "r1"
+RRECOMMENDS = "freedoom"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/prboom/prboom-${PV}.tar.gz \
+ "
+
+inherit autotools
+
+EXTRA_OECONF = " --disable-gl --disable-cpu-opt --without-x --disable-sdltest"
+
+do_install() {
+ install -d ${D}${bindir} \
+ ${D}${datadir}/games/doom
+
+ install -m 0755 src/prboom ${D}${bindir}/prboom
+ install -m 0644 data/prboom.wad ${D}${datadir}/games/doom/
+}
+
+FILES_${PN} += "${datadir}/games/doom/prboom.wad"
diff --git a/packages/python/python-2.5-manifest.inc b/packages/python/python-2.5-manifest.inc
index a0ec692095..9ae307e7a4 100644
--- a/packages/python/python-2.5-manifest.inc
+++ b/packages/python/python-2.5-manifest.inc
@@ -1,6 +1,7 @@
# WARNING: This file is AUTO GENERATED: Manual edits will be lost next time I regenerate the file.
# Generator: './generate-manifest-2.5.py' Version 20080722 (C) 2002-2008 Michael 'Mickey' Lauer <mlauer@vanille-media.de>
# Visit the Python for Embedded Systems Site => http://www.Vanille.de/projects/python.spy
+
PROVIDES+="python-profile python-threading python-distutils python-doctest python-codecs python-ctypes python-pickle python-datetime python-core python-io python-compiler python-compression python-re python-xmlrpc python-terminal python-email python-image python-tests python-core-dbg python-resource python-devel python-difflib python-math python-syslog python-hotshot python-unixadmin python-textutils python-tkinter python-gdbm python-fcntl python-netclient python-pprint python-netserver python-curses python-smtpd python-html python-readline python-subprocess python-pydoc python-logging python-mailbox python-xml python-mime python-sqlite3 python-sqlite3-tests python-unittest python-stringold python-robotparser python-lib-old-and-deprecated python-compile python-debugger python-shell python-bsddb python-mmap python-zlib python-db python-crypt python-idle python-lang python-audio "
@@ -268,9 +269,9 @@ RDEPENDS_python-shell="python-core python-re"
FILES_python-shell="${libdir}/python2.5/cmd.* ${libdir}/python2.5/commands.* ${libdir}/python2.5/dircache.* ${libdir}/python2.5/fnmatch.* ${libdir}/python2.5/glob.* ${libdir}/python2.5/popen2.* ${libdir}/python2.5/shutil.* "
DESCRIPTION_python-bsddb="Python Berkeley Database Bindings"
-PR_python-bsddb="ml0"
+PR_python-bsddb="ml1"
RDEPENDS_python-bsddb="python-core"
-FILES_python-bsddb="${libdir}/python2.5/bsddb "
+FILES_python-bsddb="${libdir}/python2.5/bsddb ${libdir}/python2.5/lib-dynload/_bsddb.so "
DESCRIPTION_python-mmap="Python Memory-Mapped-File Support"
PR_python-mmap="ml0"
diff --git a/packages/python/python-edje/.mtn2git_empty b/packages/python/python-edje/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-edje/.mtn2git_empty
diff --git a/packages/python/python-edje/0001-fix-unicode-conversion.patch b/packages/python/python-edje/0001-fix-unicode-conversion.patch
new file mode 100644
index 0000000000..7964e097d1
--- /dev/null
+++ b/packages/python/python-edje/0001-fix-unicode-conversion.patch
@@ -0,0 +1,41 @@
+From fa12a33b5a3c0e86231ca84967d9eff456e5f314 Mon Sep 17 00:00:00 2001
+From: Jan Luebbe <jluebbe@debian.org>
+Date: Sat, 9 Aug 2008 18:30:04 +0200
+Subject: [PATCH] fix unicode conversion
+
+---
+ edje/edje.c_edje_object.pxi | 11 +++++++----
+ 1 files changed, 7 insertions(+), 4 deletions(-)
+
+diff --git a/edje/edje.c_edje_object.pxi b/edje/edje.c_edje_object.pxi
+index 0f4da68..21c237e 100644
+--- a/edje/edje.c_edje_object.pxi
++++ b/edje/edje.c_edje_object.pxi
+@@ -391,17 +391,20 @@ cdef public class Edje(evas.c_evas.Object) [object PyEdje, type PyEdje_Type]:
+ else:
+ raise TypeError("func must be callable or None")
+
+- def part_text_set(self, char *part, char *text):
+- edje_object_part_text_set(self.obj, part, text)
++ def part_text_set(self, char *part, text):
++ cdef char *s
++ u = text.encode("utf8")
++ s = u
++ edje_object_part_text_set(self.obj, part, s)
+
+ def part_text_get(self, char *part):
+- "@rtype: str"
++ "@rtype: unicode"
+ cdef char *s
+ s = edje_object_part_text_get(self.obj, part)
+ if s == NULL:
+ return None
+ else:
+- return s
++ return s.decode("utf8")
+
+ def part_swallow(self, char *part, c_evas.Object obj):
+ """Swallows an object into the edje
+--
+1.5.6.3
+
diff --git a/packages/python/python-edje_cvs.bb b/packages/python/python-edje_cvs.bb
index 144fcfddde..a0665e8b09 100644
--- a/packages/python/python-edje_cvs.bb
+++ b/packages/python/python-edje_cvs.bb
@@ -1,5 +1,9 @@
require python-efl.inc
+
DEPENDS += "edje python-evas"
RDEPENDS += "python-evas"
+
+SRC_URI += "file://0001-fix-unicode-conversion.patch;patch=1"
+
PV = "0.2.1+cvs${SRCDATE}"
-PR = "r2"
+PR = "r3"
diff --git a/packages/python/python-ptrace_0.3.2.bb b/packages/python/python-ptrace_0.3.2.bb
new file mode 100644
index 0000000000..a039476c39
--- /dev/null
+++ b/packages/python/python-ptrace_0.3.2.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "python-ptrace is a debugger using ptrace."
+HOMEPAGE = "http://fusil.hachoir.org/trac/wiki/python-ptrace"
+SECTION = "devel/python"
+LICENSE = "GPLv2"
+PR = "ml0"
+
+SRC_URI = "http://pypi.python.org/packages/source/p/ptrace/ptrace-${PV}.tar.gz"
+S = "${WORKDIR}/ptrace-${PV}"
+
+inherit distutils
diff --git a/packages/python/python-pycurl/.mtn2git_empty b/packages/python/python-pycurl/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/python/python-pycurl/.mtn2git_empty
diff --git a/packages/python/python-pycurl/no-static-link.patch b/packages/python/python-pycurl/no-static-link.patch
new file mode 100644
index 0000000000..b7c5ab9c9c
--- /dev/null
+++ b/packages/python/python-pycurl/no-static-link.patch
@@ -0,0 +1,14 @@
+Index: pycurl-7.18.2/setup.py
+===================================================================
+--- pycurl-7.18.2.orig/setup.py
++++ pycurl-7.18.2/setup.py
+@@ -97,8 +97,7 @@ else:
+ else:
+ extra_compile_args.append(e)
+ libs = split_quoted(
+- os.popen("'%s' --libs" % CURL_CONFIG).read()+\
+- os.popen("'%s' --static-libs" % CURL_CONFIG).read())
++ os.popen("'%s' --libs" % CURL_CONFIG).read())
+ for e in libs:
+ if e[:2] == "-l":
+ libraries.append(e[2:])
diff --git a/packages/python/python-pycurl_7.16.4.bb b/packages/python/python-pycurl_7.18.2.bb
index a9480ad949..406add10c8 100644
--- a/packages/python/python-pycurl_7.16.4.bb
+++ b/packages/python/python-pycurl_7.18.2.bb
@@ -2,11 +2,20 @@ DESCRIPTION = "libcurl Python Bindings"
SECTION = "devel/python"
PRIORITY = "optional"
LICENSE = "LGPL"
-RDEPENDS = "python-core curl (>=${PV})"
DEPENDS = "curl-${PV}"
SRCNAME = "pycurl"
+PR = "ml0"
-SRC_URI = "http://${SRCNAME}.sourceforge.net/download/${SRCNAME}-${PV}.tar.gz"
+SRC_URI = "\
+ http://${SRCNAME}.sourceforge.net/download/${SRCNAME}-${PV}.tar.gz \
+ file://no-static-link.patch;patch=1 \
+"
S = "${WORKDIR}/${SRCNAME}-${PV}"
inherit distutils
+
+do_install_append() {
+ mv -f ${D}${datadir}/share/* ${D}${datadir}/
+}
+
+RDEPENDS = "python-core curl (>=${PV})"
diff --git a/packages/python/python_2.5.2.bb b/packages/python/python_2.5.2.bb
index 707c0f562e..c68f7d5e3b 100644
--- a/packages/python/python_2.5.2.bb
+++ b/packages/python/python_2.5.2.bb
@@ -3,10 +3,10 @@ HOMEPAGE = "http://www.python.org"
LICENSE = "PSF"
SECTION = "devel/python"
PRIORITY = "optional"
-DEPENDS = "python-native readline zlib gdbm openssl sqlite3 tcl tk"
-DEPENDS_sharprom = "python-native readline zlib gdbm openssl"
+DEPENDS = "python-native db gdbm openssl readline sqlite3 tcl tk zlib"
+DEPENDS_sharprom = "python-native db readline zlib gdbm openssl"
# bump this on every change in contrib/python/generate-manifest-2.5.py
-PR = "ml8"
+PR = "ml9"
PYTHON_MAJMIN = "2.5"
diff --git a/packages/qt4/qt_staging.inc b/packages/qt4/qt_staging.inc
index de941df1df..75b5b5735d 100644
--- a/packages/qt4/qt_staging.inc
+++ b/packages/qt4/qt_staging.inc
@@ -17,9 +17,9 @@ do_stage_append() {
sed -i s#'$(OE_QMAKE_LIBS_X11)'#"${OE_QMAKE_LIBS_X11}"#g libQt*.la
install -d ${STAGING_DIR_TARGET}/qt4/bin
- cp ${STAGING_DIR_NATIVE}/qt4/bin/* ${STAGING_DIR_TARGET}/qt4/bin/
+ cp ${STAGING_DIR_NATIVE}/qt4/bin/* ${STAGING_DIR_TARGET}/qt4/bin/ || true
for qttool in ${STAGING_DIR_TARGET}/qt4/bin/*4 ; do
- ln -sf $qttool ${STAGING_DIR_TARGET}/qt4/bin/$(basename $qttool |sed s:4::g)
+ ln -sf $qttool ${STAGING_DIR_TARGET}/qt4/bin/$(basename $qttool |sed s:4::g)
done
}
diff --git a/packages/quake/sdlquake/.mtn2git_empty b/packages/quake/sdlquake/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/quake/sdlquake/.mtn2git_empty
diff --git a/packages/quake/sdlquake/sdlquake-no-x86-asm.diff b/packages/quake/sdlquake/sdlquake-no-x86-asm.diff
new file mode 100644
index 0000000000..e87094b1da
--- /dev/null
+++ b/packages/quake/sdlquake/sdlquake-no-x86-asm.diff
@@ -0,0 +1,35 @@
+--- /tmp/Makefile.am 2008-08-11 20:31:09.000000000 +0200
++++ sdlquake-1.0.9/Makefile.am 2008-08-11 20:55:00.263198000 +0200
+@@ -33,7 +33,6 @@
+ crc.h \
+ cvar.c \
+ cvar.h \
+- d_copy.S \
+ d_edge.c \
+ d_fill.c \
+ d_iface.h \
+@@ -48,7 +47,6 @@
+ d_sprite.c \
+ d_surf.c \
+ d_zpoint.c \
+- dosasm.S \
+ dosisms.h \
+ draw.c \
+ draw.h \
+@@ -103,7 +101,6 @@
+ r_sprite.c \
+ r_surf.c \
+ r_vars.c \
+- r_varsa.S \
+ render.h \
+ resource.h \
+ sbar.c \
+@@ -136,7 +133,7 @@
+ world.h \
+ zone.c \
+ zone.h \
+- $(X86_SRCS) $(NONX86_SRCS)
++ $(NONX86_SRCS)
+
+ X86_SRCS = \
+ snd_mixa.S \
diff --git a/packages/quake/sdlquake_1.0.9.bb b/packages/quake/sdlquake_1.0.9.bb
new file mode 100644
index 0000000000..2fe26993f0
--- /dev/null
+++ b/packages/quake/sdlquake_1.0.9.bb
@@ -0,0 +1,21 @@
+DESCRIPTION = "Quake 1"
+SECTION = "x11/games"
+PRIORITY = "optional"
+DEPENDS = "libsdl-x11 libsdl-mixer libsdl-net zlib libxau"
+LICENSE = "GPL"
+
+SRC_URI = "http://www.libsdl.org/projects/quake/src/sdlquake-${PV}.tar.gz \
+ file://sdlquake-no-x86-asm.diff;patch=1 \
+ "
+
+inherit autotools
+
+# Fix up broken autofoo
+do_configure_prepend() {
+ touch INSTALL NEWS README AUTHORS ChangeLog
+ echo "AM_PROG_AS" >> configure.in
+}
+
+
+
+
diff --git a/packages/rdesktop/rdesktop_1.6.0.bb b/packages/rdesktop/rdesktop_1.6.0.bb
new file mode 100644
index 0000000000..b5337f9e83
--- /dev/null
+++ b/packages/rdesktop/rdesktop_1.6.0.bb
@@ -0,0 +1,13 @@
+DESCRIPTION = "Rdesktop rdp client for X"
+DEPENDS = "virtual/libx11 openssl"
+HOMEPAGE = "http://www.rdesktop.org"
+SECTION = "x11/network"
+LICENSE = "GPL"
+PV = "1.6.0"
+PR = "r0"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/rdesktop/rdesktop-${PV}.tar.gz"
+
+inherit autotools
+
+EXTRA_OECONF = "--with-openssl=${STAGING_EXECPREFIXDIR} "
diff --git a/packages/resolvconf/resolvconf_1.41.bb b/packages/resolvconf/resolvconf_1.41.bb
new file mode 100644
index 0000000000..2c210ef1ec
--- /dev/null
+++ b/packages/resolvconf/resolvconf_1.41.bb
@@ -0,0 +1,29 @@
+DESCRIPTION = "Resolvconf is a framework for keeping track of the system's \
+information about currently available nameservers. It sets \
+itself up as the intermediary between programs that supply \
+nameserver information and programs that need nameserver \
+information."
+SECTION = "console/network"
+LICENSE = "GPL"
+AUTHOR = "Thomas Hood"
+HOMEPAGE = "http://packages.debian.org/resolvconf"
+DEPENDS = "bash"
+RDEPENDS = "bash"
+
+SRC_URI = "${DEBIAN_MIRROR}/main/r/resolvconf/resolvconf_${PV}.tar.gz"
+
+do_compile () {
+ :
+}
+
+do_install () {
+ install -d ${D}${sysconfdir} ${D}${sbindir} ${D}${base_sbindir} ${D}${localstatedir}/run/resolvconf/interface
+ install -d ${D}${mandir}/man8 ${D}${docdir}/${P}
+ cp -pPR etc/* ${D}${sysconfdir}/
+ install -m 0755 bin/resolvconf ${D}${base_sbindir}/
+ install -m 0644 README ${D}${docdir}/${P}/
+ install -m 0644 man/resolvconf.8 ${D}${mandir}/man8/
+}
+
+PACKAGE_ARCH = "all"
+
diff --git a/packages/tasks/task-python-everything.bb b/packages/tasks/task-python-everything.bb
index f6aec948bd..08915c033f 100644
--- a/packages/tasks/task-python-everything.bb
+++ b/packages/tasks/task-python-everything.bb
@@ -1,7 +1,7 @@
DESCRIPTION= "Everything Python"
HOMEPAGE = "http://www.vanille.de/projects/python.spy"
LICENSE = "MIT"
-PR = "ml32"
+PR = "ml33"
RDEPENDS = "\
python-ao \
@@ -39,6 +39,7 @@ RDEPENDS = "\
python-ogg \
python-opendir \
python-pexpect \
+ python-ptrace \
python-pyalsa \
python-pyalsaaudio \
python-pybluez \
diff --git a/packages/totem/totem-pl-parser_2.23.3.bb b/packages/totem/totem-pl-parser_2.23.3.bb
new file mode 100644
index 0000000000..7f3cd861e9
--- /dev/null
+++ b/packages/totem/totem-pl-parser_2.23.3.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Playlist parser for Totem, a GTK2 based media player"
+HOMEPAGE = "http://www.gnome.org/projects/totem/"
+LICENSE = "GPL"
+
+DEPENDS = "eds-dbus"
+
+inherit gnome
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
+do_stage() {
+ autotools_stage_all
+}
+
+
diff --git a/packages/totem/totem/.mtn2git_empty b/packages/totem/totem/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/totem/totem/.mtn2git_empty
diff --git a/packages/totem/totem/gst-detect.diff b/packages/totem/totem/gst-detect.diff
new file mode 100644
index 0000000000..6d37515995
--- /dev/null
+++ b/packages/totem/totem/gst-detect.diff
@@ -0,0 +1,37 @@
+--- /tmp/configure.in 2008-08-10 15:27:06.000000000 +0200
++++ totem-2.23.4/configure.in 2008-08-10 20:37:08.743198000 +0200
+@@ -142,11 +142,7 @@
+ if $gst010_inspect $base_element >/dev/null 2>/dev/null; then
+ AC_MSG_RESULT([yes])
+ else
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([
+- Cannot find required GStreamer-0.10 plugin '$base_element'.
+- It should be part of gst-plugins-base. Please install it.
+- ])
++ AC_MSG_RESULT([yes, we assume OE has already built them])
+ fi
+ done
+
+@@ -157,11 +153,7 @@
+ if $gst010_inspect $good_element >/dev/null 2>/dev/null; then
+ AC_MSG_RESULT([yes])
+ else
+- AC_MSG_RESULT([no])
+- AC_MSG_ERROR([
+- Cannot find required GStreamer-0.10 plugin '$good_element'.
+- It should be part of gst-plugins-good. Please install it.
+- ])
++ AC_MSG_RESULT([yes, we assume OE has already built them])
+ fi
+ done
+
+@@ -565,7 +557,7 @@
+ fi
+ ;;
+ mythtv)
+- PKG_CHECK_MODULES(GMYTH, gmyth >= 0.7 gmyth-upnp >= 0.7.1,
++ PKG_CHECK_MODULES(GMYTH, gmyth >= 0.7.0 gmyth-upnp,
+ [HAVE_GMYTH=yes], [HAVE_GMYTH=no])
+ if test "${HAVE_GMYTH}" != "yes"; then
+ plugin_error_or_ignore "you need GMyth >= 0.7 installed for the MythTV plugin"
diff --git a/packages/totem/totem_2.23.4.bb b/packages/totem/totem_2.23.4.bb
new file mode 100644
index 0000000000..f2e945fd87
--- /dev/null
+++ b/packages/totem/totem_2.23.4.bb
@@ -0,0 +1,72 @@
+# totem OE build file
+# Copyright (C) 2004, Advanced Micro Devices, Inc. All Rights Reserved
+# Released under the MIT license (see packages/COPYING)
+
+DESCRIPTION = "A GTK2 based media player"
+HOMEPAGE = "http://www.gnome.org/projects/totem/"
+LICENSE = "GPL"
+
+PR = "r3"
+
+DEPENDS = " totem-pl-parser gtk+ dbus bluez-libs libglade gconf libxml2 gst-ffmpeg gst-plugins-bad gst-plugins-base"
+RDEPENDS_${PN} += "iso-codes"
+RRECOMMENDS_${PN} += "gst-plugin-playbin \
+ gst-plugin-gconfelements \
+ gst-plugin-decodebin \
+ gst-plugin-decodebin2 \
+ gst-ffmpeg \
+ gst-plugin-audioresample \
+ gst-plugin-ximagesink \
+ gst-plugin-xvimagesink \
+ gst-plugin-alsa \
+ gst-plugin-avi \
+ gst-plugin-ffmpegcolorspace \
+ gst-plugin-flvdemux \
+ gst-plugin-nuvdemux \
+ gst-plugin-videoscale \
+ gst-plugin-a52dec \
+ gst-plugin-mpegaudioparse \
+ gst-plugin-ossaudio \
+ gst-plugin-pulse \
+ gst-plugin-autodetect \
+ "
+
+inherit gnome
+
+SRC_URI += "file://gst-detect.diff;patch=1"
+
+EXTRA_OECONF=" --disable-schemas-install \
+ --enable-gtk \
+ --disable-iso-codes \
+ --disable-debug \
+ --enable-gstreamer \
+ --enable-browser-plugins \
+ --disable-run-in-source-tree \
+ --disable-python \
+ --disable-vala \
+ --with-dbus \
+ "
+
+do_configure_prepend() {
+ sed -i -e s:help::g ${S}/Makefile.am
+}
+
+PACKAGES += "totem-plugin-bemused totem-plugin-gromit totem-plugin-lirc totem-plugin-media-player-keys totem-plugin-mythtv totem-plugin-ontop totem-plugin-properties totem-plugin-screensaver totem-plugin-skipto totem-plugin-thumbnail totem-plugin-youtube totem-browser-plugin-dbg totem-browser-plugin"
+
+FILES_totem-plugin-bemused += "${libdir}/totem/plugins/bemused/*"
+FILES_totem-plugin-gromit += "${libdir}/totem/plugins/gromit/*"
+FILES_totem-plugin-lirc += "${libdir}/totem/plugins/lirc/*"
+FILES_totem-plugin-media-player-keys += "${libdir}/totem/plugins/media-player-keys/*"
+FILES_totem-plugin-mythtv += "${libdir}/totem/plugins/mythtv/*"
+FILES_totem-plugin-ontop += "${libdir}/totem/plugins/ontop/*"
+FILES_totem-plugin-properties += "${libdir}/totem/plugins/properties/*"
+FILES_totem-plugin-screensaver += "${libdir}/totem/plugins/screensaver/*"
+FILES_totem-plugin-skipto += "${libdir}/totem/plugins/skipto/*"
+FILES_totem-plugin-thumbnail += "${libdir}/totem/plugins/thumbnail/*"
+FILES_totem-plugin-youtube += "${libdir}/totem/plugins/youtube/*"
+
+FILES_${PN} = "${bindir}/* ${sysconfdir} ${libdir}/lib*.so.* ${libexecdir} ${datadir}/icons ${datadir}/totem ${datadir}/applications"
+FILES_${PN}-dbg += "${libdir}/totem/plugins/*/.debug"
+FILES_${PN}-dev += "${libdir}/totem/plugins/*/*a"
+FILES_totem-browser-plugin-dbg += "${libdir}/mozilla/plugins/.debug"
+FILES_totem-browser-plugin += "${libdir}/mozilla/plugins/"
diff --git a/packages/u-boot/u-boot_git.bb b/packages/u-boot/u-boot_git.bb
index 201b814c9d..04eb7eb2e8 100644
--- a/packages/u-boot/u-boot_git.bb
+++ b/packages/u-boot/u-boot_git.bb
@@ -1,10 +1,10 @@
require u-boot.inc
-PR="r15"
+PR="r16"
SRCREV_davinci-sffsdr = "4b50cd12a3b3c644153c4cf393f4a4c12289e5aa"
SRCREV_davinci-dvevm = "4b50cd12a3b3c644153c4cf393f4a4c12289e5aa"
SRCREV_beagleboard = "9c1c36409b2cb4e81aab0bd9d0a69c68f4475aae"
-SRCREV_neuros-osd2 = "528a4ab736758ff0c889456d46673041eb52f756"
+SRCREV_neuros-osd2 = "bc66414cd99154a40949db1bd2f45a62b8febca9"
SRC_URI = "git://www.denx.de/git/u-boot.git;protocol=git "
SRC_URI_sequoia = "git://www.denx.de/git/u-boot.git;protocol=git;tag=cf3b41e0c1111dbb865b6e34e9f3c3d3145a6093 "
diff --git a/packages/uclibc/uclibc-0.9.29/uClibc.distro b/packages/uclibc/uclibc-0.9.29/uClibc.distro
index 1bd3bece28..022d2474d1 100644
--- a/packages/uclibc/uclibc-0.9.29/uClibc.distro
+++ b/packages/uclibc/uclibc-0.9.29/uClibc.distro
@@ -28,7 +28,7 @@ COMPAT_ATEXIT=y
UCLIBC_SUSV3_LEGACY=y
UCLIBC_SUSV3_LEGACY_MACROS=y
UCLIBC_HAS_SHADOW=y
-# UCLIBC_HAS_PROGRAM_INVOCATION_NAME is not set
+UCLIBC_HAS_PROGRAM_INVOCATION_NAME=y
UCLIBC_HAS___PROGNAME=y
UNIX98PTY_ONLY=y
ASSUME_DEVPTS=y
diff --git a/packages/uclibc/uclibc_0.9.29.bb b/packages/uclibc/uclibc_0.9.29.bb
index ad62481800..fc06c28f67 100644
--- a/packages/uclibc/uclibc_0.9.29.bb
+++ b/packages/uclibc/uclibc_0.9.29.bb
@@ -7,7 +7,7 @@
# on whether the base patches apply to the selected (SRCDATE) svn release.
#
UCLIBC_BASE ?= "0.9.29"
-PR = "r21"
+PR = "r22"
DEFAULT_PREFERENCE = "1"
require uclibc.inc
diff --git a/packages/udev/udev-124/.mtn2git_empty b/packages/udev/udev-124/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/udev/udev-124/.mtn2git_empty
diff --git a/packages/udev/udev-124/flags.patch b/packages/udev/udev-124/flags.patch
new file mode 100644
index 0000000000..13f20eb6a8
--- /dev/null
+++ b/packages/udev/udev-124/flags.patch
@@ -0,0 +1,56 @@
+---
+ Makefile | 16 ++++++++--------
+ 1 file changed, 8 insertions(+), 8 deletions(-)
+
+Index: udev-115/Makefile
+===================================================================
+--- udev-115.orig/Makefile 2007-08-24 01:29:54.000000000 +0200
++++ udev-115/Makefile 2007-09-20 17:21:45.000000000 +0200
+@@ -112,39 +112,39 @@
+ AR = $(CROSS_COMPILE)ar
+ RANLIB = $(CROSS_COMPILE)ranlib
+
+-CFLAGS += -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
++override CFLAGS = -g -Wall -pipe -D_GNU_SOURCE -D_FILE_OFFSET_BITS=64
+ WARNINGS = -Wstrict-prototypes -Wsign-compare -Wshadow \
+ -Wchar-subscripts -Wmissing-declarations -Wnested-externs \
+ -Wpointer-arith -Wcast-align -Wsign-compare -Wmissing-prototypes
+-CFLAGS += $(WARNINGS)
++override CFLAGS += $(WARNINGS)
+
+ LDFLAGS += -Wl,-warn-common,--as-needed
+
+ OPTFLAGS = -Os
+-CFLAGS += $(OPTFLAGS)
++override CFLAGS += $(OPTFLAGS)
+
+ ifeq ($(strip $(USE_LOG)),true)
+- CFLAGS += -DUSE_LOG
++ override CFLAGS += -DUSE_LOG
+ endif
+
+ # if DEBUG is enabled, then we do not strip
+ ifeq ($(strip $(DEBUG)),true)
+- CFLAGS += -DDEBUG
++ override CFLAGS += -DDEBUG
+ endif
+
+ ifeq ($(strip $(USE_GCOV)),true)
+- CFLAGS += -fprofile-arcs -ftest-coverage
++ override CFLAGS += -fprofile-arcs -ftest-coverage
+ LDFLAGS += -fprofile-arcs
+ endif
+
+ ifeq ($(strip $(USE_SELINUX)),true)
+ UDEV_OBJS += udev_selinux.o
+ LIB_OBJS += -lselinux -lsepol
+- CFLAGS += -DUSE_SELINUX
++ override CFLAGS += -DUSE_SELINUX
+ endif
+
+ ifeq ($(strip $(USE_STATIC)),true)
+- CFLAGS += -DUSE_STATIC
++ override CFLAGS += -DUSE_STATIC
+ LDFLAGS += -static
+ endif
+
diff --git a/packages/udev/udev-124/init b/packages/udev/udev-124/init
new file mode 100644
index 0000000000..b78a07b20f
--- /dev/null
+++ b/packages/udev/udev-124/init
@@ -0,0 +1,60 @@
+#!/bin/sh -e
+
+### BEGIN INIT INFO
+# Provides: udev
+# Required-Start: mountvirtfs
+# Required-Stop:
+# Default-Start: S
+# Default-Stop:
+# Short-Description: Start udevd, populate /dev and load drivers.
+### END INIT INFO
+
+export TZ=/etc/localtime
+
+[ -d /sys/class ] || exit 1
+[ -r /proc/mounts ] || exit 1
+[ -x /sbin/udevd ] || exit 1
+[ -f /etc/udev/udev.conf ] && . /etc/udev/udev.conf
+
+kill_udevd() {
+ if [ -x /sbin/pidof ]; then
+ pid=`/sbin/pidof -x udevd`
+ [ -n "$pid" ] && kill $pid
+ fi
+}
+
+export ACTION=add
+# propagate /dev from /sys
+echo -n "Starting udev"
+
+# mount the tmpfs on /dev, if not already done
+LANG=C awk "\$2 == \"/dev\" && \$4 == \"tmpfs\" { exit 1 }" /proc/mounts && {
+ mount -n -o mode=0755 -t tmpfs none "/dev"
+ mkdir -m 0755 /dev/pts
+ mkdir -m 0755 /dev/shm
+}
+
+if [ -e /etc/dev.tar ]; then
+ (cd /; tar xf /etc/dev.tar)
+ not_first_boot=1
+fi
+
+# make_extra_nodes
+kill_udevd > "/dev/null" 2>&1
+
+ # trigger the sorted events
+ echo -e '\000\000\000\000' > /proc/sys/kernel/hotplug
+ /sbin/udevd -d
+
+ /sbin/udevadm control env STARTUP=1
+ if [ "$not_first_boot" != "" ];then
+ /sbin/udevadm trigger --subsystem-nomatch=tty --subsystem-nomatch=mem --subsystem-nomatch=vc --subsystem-nomatch=vtconsole --subsystem-nomatch=misc --subsystem-nomatch=dcon --subsystem-nomatch=pci_bus --subsystem-nomatch=graphics --subsystem-nomatch=backlight --subsystem-nomatch=video4linux --subsystem-nomatch=platform
+ (/sbin/udevadm settle --timeout=3; /sbin/udevadm control env STARTUP=)&
+ else
+ /sbin/udevadm trigger
+ /sbin/udevadm settle
+ (cd /; tar cf /etc/dev.tar /dev)
+ fi
+
+echo
+exit 0
diff --git a/packages/udev/udev-124/local.rules b/packages/udev/udev-124/local.rules
new file mode 100644
index 0000000000..5b926018f5
--- /dev/null
+++ b/packages/udev/udev-124/local.rules
@@ -0,0 +1,31 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# Media automounting
+SUBSYSTEM=="block", ACTION=="add" RUN+="/etc/udev/scripts/mount.sh"
+SUBSYSTEM=="block", ACTION=="remove" RUN+="/etc/udev/scripts/mount.sh"
+
+# Handle network interface setup
+SUBSYSTEM=="net", ACTION=="add" RUN+="/etc/udev/scripts/network.sh"
+SUBSYSTEM=="net", ACTION=="remove" RUN+="/etc/udev/scripts/network.sh"
+
+# The first rtc device is symlinked to /dev/rtc
+KERNEL=="rtc0", SYMLINK+="rtc"
+
+# Try and modprobe for drivers for new hardware
+ACTION=="add", DEVPATH=="/devices/*", ENV{MODALIAS}=="?*", RUN+="/sbin/modprobe $env{MODALIAS}"
+
+# Create a symlink to any touchscreen input device
+SUBSYSTEM=="input", KERNEL=="event[0-9]*", SYSFS{modalias}=="input:*-e0*,3,*a0,1,*18,*", SYMLINK+="input/touchscreen0"
diff --git a/packages/udev/udev-124/noasmlinkage.patch b/packages/udev/udev-124/noasmlinkage.patch
new file mode 100644
index 0000000000..d58a7ea4de
--- /dev/null
+++ b/packages/udev/udev-124/noasmlinkage.patch
@@ -0,0 +1,45 @@
+diff -pru udev-124.orig/test-udev.c udev-124/test-udev.c
+--- udev-124.orig/test-udev.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/test-udev.c 2008-07-07 14:43:37.000000000 +0100
+@@ -46,7 +46,7 @@ void log_message(int priority, const cha
+ }
+ #endif
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGALRM:
+diff -pru udev-124.orig/udevd.c udev-124/udevd.c
+--- udev-124.orig/udevd.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevd.c 2008-07-07 14:43:58.000000000 +0100
+@@ -87,7 +87,7 @@ void log_message(int priority, const cha
+
+ #endif
+
+-static void asmlinkage udev_event_sig_handler(int signum)
++static void udev_event_sig_handler(int signum)
+ {
+ if (signum == SIGALRM)
+ exit(1);
+@@ -798,7 +798,7 @@ static struct udevd_uevent_msg *get_netl
+ return msg;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ switch (signum) {
+ case SIGINT:
+diff -pru udev-124.orig/udevmonitor.c udev-124/udevmonitor.c
+--- udev-124.orig/udevmonitor.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevmonitor.c 2008-07-07 14:44:24.000000000 +0100
+@@ -97,7 +97,7 @@ static int init_uevent_netlink_sock(void
+ return 0;
+ }
+
+-static void asmlinkage sig_handler(int signum)
++static void sig_handler(int signum)
+ {
+ if (signum == SIGINT || signum == SIGTERM)
+ udev_exit = 1;
diff --git a/packages/udev/udev-124/permissions.rules b/packages/udev/udev-124/permissions.rules
new file mode 100644
index 0000000000..205b733292
--- /dev/null
+++ b/packages/udev/udev-124/permissions.rules
@@ -0,0 +1,131 @@
+ACTION!="add", GOTO="permissions_end"
+
+# workarounds needed to synchronize with sysfs
+# only needed for kernels < v2.6.18-rc1
+ENV{PHYSDEVPATH}!="?*", ENV{PHYSDEVBUS}=="?*", WAIT_FOR_SYSFS="bus"
+SUBSYSTEM=="scsi", KERNEL=="[0-9]*:[0-9]*", WAIT_FOR_SYSFS="ioerr_cnt"
+# only needed for kernels < 2.6.16
+SUBSYSTEM=="net", WAIT_FOR_SYSFS="address"
+# only needed for kernels < 2.6.17
+SUBSYSTEM=="net", ENV{DRIVER}=="?*", WAIT_FOR_SYSFS="device/driver"
+
+# devices needed to load the drivers providing them
+KERNEL=="tun", OPTIONS+="ignore_remove"
+KERNEL=="ppp", OPTIONS+="ignore_remove"
+KERNEL=="loop[0-9]*", OPTIONS+="ignore_remove"
+
+# default permissions for block devices
+SUBSYSTEM=="block", GROUP="disk"
+# the aacraid driver is broken and reports that disks removable (see #404927)
+SUBSYSTEM=="block", ATTRS{removable}=="1", \
+ DRIVERS!="aacraid", GROUP="floppy"
+# all block devices on these buses are "removable"
+SUBSYSTEM=="block", SUBSYSTEMS=="usb|ieee1394|mmc|pcmcia", GROUP="floppy"
+
+# IDE devices
+KERNEL=="hd[a-z]|pcd[0-9]*", DRIVERS=="ide-cdrom|pcd", \
+ IMPORT{program}="cdrom_id --export $tempnode"
+ENV{ID_CDROM}=="?*", GROUP="cdrom"
+KERNEL=="ht[0-9]*", GROUP="tape"
+KERNEL=="nht[0-9]*", GROUP="tape"
+
+# SCSI devices
+KERNEL=="sr[0-9]*", IMPORT{program}="cdrom_id --export $tempnode"
+SUBSYSTEMS=="scsi", ATTRS{type}=="1", GROUP="tape"
+SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="HP", GROUP="scanner"
+SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="Epson", GROUP="scanner"
+SUBSYSTEMS=="scsi", ATTRS{type}=="3", ATTRS{vendor}=="EPSON", GROUP="scanner"
+SUBSYSTEMS=="scsi", ATTRS{type}=="4", GROUP="cdrom"
+SUBSYSTEMS=="scsi", ATTRS{type}=="5", GROUP="cdrom"
+SUBSYSTEMS=="scsi", ATTRS{type}=="6", GROUP="scanner"
+SUBSYSTEMS=="scsi", ATTRS{type}=="8", GROUP="tape"
+
+# USB devices
+KERNEL=="legousbtower*", MODE="0666"
+KERNEL=="lp[0-9]*", SUBSYSTEMS=="usb", GROUP="lp"
+
+# usbfs-like devices
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", \
+ MODE="0664"
+
+# iRiver music players
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", GROUP="plugdev", \
+ ATTRS{idVendor}=="4102", ATTRS{idProduct}=="10[01][135789]"
+
+# serial devices
+SUBSYSTEM=="tty", GROUP="dialout"
+SUBSYSTEM=="capi", GROUP="dialout"
+SUBSYSTEM=="slamr", GROUP="dialout"
+SUBSYSTEM=="zaptel", GROUP="dialout"
+
+# vc devices (all members of the tty subsystem)
+KERNEL=="ptmx", MODE="0666", GROUP="root"
+KERNEL=="console", MODE="0600", GROUP="root"
+KERNEL=="tty", MODE="0666", GROUP="root"
+KERNEL=="tty[0-9]*", GROUP="root"
+KERNEL=="pty*", MODE="0666", GROUP="tty"
+
+# video devices
+SUBSYSTEM=="video4linux", GROUP="video"
+SUBSYSTEM=="drm", GROUP="video"
+SUBSYSTEM=="dvb", GROUP="video"
+SUBSYSTEM=="em8300", GROUP="video"
+SUBSYSTEM=="graphics", GROUP="video"
+SUBSYSTEM=="nvidia", GROUP="video"
+
+# misc devices
+KERNEL=="random", MODE="0666"
+KERNEL=="urandom", MODE="0666"
+KERNEL=="mem", MODE="0640", GROUP="kmem"
+KERNEL=="kmem", MODE="0640", GROUP="kmem"
+KERNEL=="port", MODE="0640", GROUP="kmem"
+KERNEL=="full", MODE="0666"
+KERNEL=="null", MODE="0666"
+KERNEL=="zero", MODE="0666"
+KERNEL=="inotify", MODE="0666"
+KERNEL=="sgi_fetchop", MODE="0666"
+KERNEL=="sonypi", MODE="0666"
+KERNEL=="agpgart", GROUP="video"
+KERNEL=="nvram", GROUP="nvram"
+KERNEL=="rtc|rtc[0-9]*", GROUP="audio"
+KERNEL=="tpm*", MODE="0600", OWNER="tss", GROUP="tss"
+KERNEL=="fuse", GROUP="fuse"
+KERNEL=="kqemu", MODE="0666"
+KERNEL=="kvm", GROUP="kvm"
+KERNEL=="tun", MODE="0666",
+
+KERNEL=="cdemu[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd[0-9]*", GROUP="cdrom"
+KERNEL=="pktcdvd", MODE="0644"
+
+KERNEL=="uverbs*", GROUP="rdma"
+KERNEL=="ucm*", GROUP="rdma"
+KERNEL=="rdma_ucm", GROUP="rdma"
+
+# printers and parallel devices
+SUBSYSTEM=="printer", GROUP="lp"
+SUBSYSTEM=="ppdev", GROUP="lp"
+KERNEL=="irlpt*", GROUP="lp"
+KERNEL=="pt[0-9]*", GROUP="tape"
+KERNEL=="pht[0-9]*", GROUP="tape"
+
+# sound devices
+SUBSYSTEM=="sound", GROUP="audio"
+
+# ieee1394 devices
+KERNEL=="raw1394", GROUP="disk"
+KERNEL=="dv1394*", GROUP="video"
+KERNEL=="video1394*", GROUP="video"
+
+# input devices
+KERNEL=="event[0-9]*", ATTRS{name}=="*dvb*|*DVB*|* IR *" \
+ MODE="0664", GROUP="video"
+KERNEL=="js[0-9]*", MODE="0664"
+KERNEL=="lirc[0-9]*", GROUP="video"
+
+# AOE character devices
+SUBSYSTEM=="aoe", MODE="0220", GROUP="disk"
+SUBSYSTEM=="aoe", KERNEL=="err", MODE="0440"
+
+LABEL="permissions_end"
+
diff --git a/packages/udev/udev-124/run.rules b/packages/udev/udev-124/run.rules
new file mode 100644
index 0000000000..75d71375bb
--- /dev/null
+++ b/packages/udev/udev-124/run.rules
@@ -0,0 +1,14 @@
+# debugging monitor
+RUN+="socket:/org/kernel/udev/monitor"
+
+# run a command on remove events
+ACTION=="remove", ENV{REMOVE_CMD}!="", RUN+="$env{REMOVE_CMD}"
+
+# ignore the events generated by virtual consoles
+KERNEL=="ptmx", OPTIONS+="last_rule"
+KERNEL=="console", OPTIONS+="last_rule"
+KERNEL=="tty" , OPTIONS+="last_rule"
+KERNEL=="tty[0-9]*", OPTIONS+="last_rule"
+KERNEL=="pty*", OPTIONS+="last_rule"
+SUBSYSTEM=="vc", OPTIONS+="last_rule"
+
diff --git a/packages/udev/udev-124/udev.rules b/packages/udev/udev-124/udev.rules
new file mode 100644
index 0000000000..443315ea53
--- /dev/null
+++ b/packages/udev/udev-124/udev.rules
@@ -0,0 +1,116 @@
+# There are a number of modifiers that are allowed to be used in some
+# of the different fields. They provide the following subsitutions:
+#
+# %n the "kernel number" of the device.
+# For example, 'sda3' has a "kernel number" of '3'
+# %e the smallest number for that name which does not matches an existing node
+# %k the kernel name for the device
+# %M the kernel major number for the device
+# %m the kernel minor number for the device
+# %b the bus id for the device
+# %c the string returned by the PROGRAM
+# %s{filename} the content of a sysfs attribute
+# %% the '%' char itself
+#
+
+# workaround for devices which do not report media changes
+SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTR{removable}=="1", \
+ ENV{ID_MODEL}=="IOMEGA_ZIP*", NAME="%k", OPTIONS+="all_partitions"
+SUBSYSTEMS=="ide", KERNEL=="hd[a-z]", ATTRS{media}=="floppy", \
+ OPTIONS+="all_partitions"
+
+# SCSI devices
+SUBSYSTEMS=="scsi", KERNEL=="sr[0-9]*", NAME="scd%n", SYMLINK+="sr%n"
+
+# USB devices
+SUBSYSTEMS=="usb", KERNEL=="auer[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="cpad[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="dabusb*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="hiddev*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="legousbtower*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="lp[0-9]*", NAME="usb/%k"
+SUBSYSTEMS=="usb", KERNEL=="ttyUSB*", \
+ ATTRS{product}=="Palm Handheld*|Handspring Visor|palmOne Handheld", \
+ SYMLINK+="pilot"
+
+# usbfs-like devices
+SUBSYSTEM=="usb_device", PROGRAM="/bin/sh -c 'K=%k; K=$${K#usbdev}; printf bus/usb/%%03i/%%03i $${K%%%%.*} $${K#*.}'", ACTION=="add", \
+ NAME="%c"
+SUBSYSTEM=="usb", ENV{DEVTYPE}=="usb_device", NAME="bus/usb/$env{BUSNUM}/$env{DEVNUM}"
+
+# serial devices
+KERNEL=="capi", NAME="capi20", SYMLINK+="isdn/capi20"
+KERNEL=="capi[0-9]*", NAME="capi/%n"
+
+# video devices
+KERNEL=="dvb*", PROGRAM="/bin/sh -c 'K=%k; K=$${K#dvb}; printf dvb/adapter%%i/%%s $${K%%%%.*} $${K#*.}", ACTION=="add", \
+ NAME="%c"
+KERNEL=="card[0-9]*", NAME="dri/%k"
+
+# misc devices
+KERNEL=="hw_random", NAME="hwrng"
+KERNEL=="tun", NAME="net/%k"
+KERNEL=="evtchn", NAME="xen/%k"
+
+KERNEL=="cdemu[0-9]*", NAME="cdemu/%n"
+KERNEL=="pktcdvd[0-9]*", NAME="pktcdvd/%n"
+KERNEL=="pktcdvd", NAME="pktcdvd/control"
+
+KERNEL=="cpu[0-9]*", NAME="cpu/%n/cpuid"
+KERNEL=="msr[0-9]*", NAME="cpu/%n/msr"
+KERNEL=="microcode", NAME="cpu/microcode"
+
+KERNEL=="umad*", NAME="infiniband/%k"
+KERNEL=="issm*", NAME="infiniband/%k"
+KERNEL=="uverbs*", NAME="infiniband/%k"
+KERNEL=="ucm*", NAME="infiniband/%k"
+KERNEL=="rdma_ucm", NAME="infiniband/%k"
+
+# ALSA devices
+KERNEL=="controlC[0-9]*", NAME="snd/%k"
+KERNEL=="hwC[D0-9]*", NAME="snd/%k"
+KERNEL=="pcmC[D0-9cp]*", NAME="snd/%k"
+KERNEL=="midiC[D0-9]*", NAME="snd/%k"
+KERNEL=="timer", NAME="snd/%k"
+KERNEL=="seq", NAME="snd/%k"
+
+# ieee1394 devices
+KERNEL=="dv1394*", NAME="dv1394/%n"
+KERNEL=="video1394*", NAME="video1394/%n"
+
+# input devices
+KERNEL=="mice", NAME="input/%k"
+KERNEL=="mouse[0-9]*", NAME="input/%k"
+KERNEL=="event[0-9]*", NAME="input/%k"
+KERNEL=="js[0-9]*", NAME="input/%k"
+KERNEL=="ts[0-9]*", NAME="input/%k"
+KERNEL=="uinput", NAME="input/%k"
+
+# Zaptel
+KERNEL=="zapctl", NAME="zap/ctl"
+KERNEL=="zaptimer", NAME="zap/timer"
+KERNEL=="zapchannel", NAME="zap/channel"
+KERNEL=="zappseudo", NAME="zap/pseudo"
+KERNEL=="zap[0-9]*", NAME="zap/%n"
+
+# AOE character devices
+SUBSYSTEM=="aoe", KERNEL=="discover", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="err", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="interfaces", NAME="etherd/%k"
+SUBSYSTEM=="aoe", KERNEL=="revalidate", NAME="etherd/%k"
+
+# device mapper creates its own device nodes, so ignore these
+KERNEL=="dm-[0-9]*", OPTIONS+="ignore_device"
+KERNEL=="device-mapper", NAME="mapper/control"
+
+KERNEL=="rfcomm[0-9]*", NAME="%k", GROUP="users", MODE="0660"
+
+# Firmware Helper
+ACTION=="add", SUBSYSTEM=="firmware", RUN+="/lib/udev/firmware_helper"
+
+# Samsung UARTS
+KERNEL=="s3c2410_serial[0-9]", NAME="ttySAC%n"
+
+# MXC UARTs
+KERNEL=="ttymxc[0-4]", NAME="ttymxc%n"
+
diff --git a/packages/udev/udev-124/udevtrigger_add_devname_filtering.patch b/packages/udev/udev-124/udevtrigger_add_devname_filtering.patch
new file mode 100644
index 0000000000..5182542461
--- /dev/null
+++ b/packages/udev/udev-124/udevtrigger_add_devname_filtering.patch
@@ -0,0 +1,99 @@
+diff -pru udev-124.orig/udevtrigger.c udev-124/udevtrigger.c
+--- udev-124.orig/udevtrigger.c 2008-06-12 06:24:30.000000000 +0100
++++ udev-124/udevtrigger.c 2008-07-07 15:10:09.000000000 +0100
+@@ -42,6 +42,8 @@ static int dry_run;
+ LIST_HEAD(device_list);
+ LIST_HEAD(filter_subsystem_match_list);
+ LIST_HEAD(filter_subsystem_nomatch_list);
++LIST_HEAD(filter_kernel_match_list);
++LIST_HEAD(filter_kernel_nomatch_list);
+ LIST_HEAD(filter_attr_match_list);
+ LIST_HEAD(filter_attr_nomatch_list);
+ static int sock = -1;
+@@ -331,6 +333,26 @@ static int attr_match(const char *path,
+ return 0;
+ }
+
++static int kernel_filtered(const char *kernel)
++{
++ struct name_entry *loop_name;
++
++ /* skip devices matching the prohibited kernel device names */
++ list_for_each_entry(loop_name, &filter_kernel_nomatch_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 1;
++
++ /* skip devices not matching the listed kernel device names */
++ if (!list_empty(&filter_kernel_match_list)) {
++ list_for_each_entry(loop_name, &filter_kernel_match_list, node)
++ if (fnmatch(loop_name->name, kernel, 0) == 0)
++ return 0;
++ return 1;
++ }
++
++ return 0;
++}
++
+ static int attr_filtered(const char *path)
+ {
+ struct name_entry *loop_name;
+@@ -409,6 +431,9 @@ static void scan_subsystem(const char *s
+ if (dent2->d_name[0] == '.')
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -465,6 +490,9 @@ static void scan_block(void)
+ if (!strcmp(dent2->d_name,"device"))
+ continue;
+
++ if (kernel_filtered(dent2->d_name))
++ continue;
++
+ strlcpy(dirname2, dirname, sizeof(dirname2));
+ strlcat(dirname2, "/", sizeof(dirname2));
+ strlcat(dirname2, dent2->d_name, sizeof(dirname2));
+@@ -576,6 +604,8 @@ int udevtrigger(int argc, char *argv[],
+ { "subsystem-nomatch", 1, NULL, 'S' },
+ { "attr-match", 1, NULL, 'a' },
+ { "attr-nomatch", 1, NULL, 'A' },
++ { "kernel-match", 1, NULL, 'k' },
++ { "kernel-nomatch", 1, NULL, 'K' },
+ { "env", 1, NULL, 'e' },
+ {}
+ };
+@@ -622,6 +652,12 @@ int udevtrigger(int argc, char *argv[],
+ case 'A':
+ name_list_add(&filter_attr_nomatch_list, optarg, 0);
+ break;
++ case 'k':
++ name_list_add(&filter_kernel_match_list, optarg, 0);
++ break;
++ case 'K':
++ name_list_add(&filter_kernel_nomatch_list, optarg, 0);
++ break;
+ case 'h':
+ printf("Usage: udevadm trigger OPTIONS\n"
+ " --verbose print the list of devices while running\n"
+@@ -632,6 +668,8 @@ int udevtrigger(int argc, char *argv[],
+ " --env=<KEY>=<value> pass an additional key (works only with --socket=)\n"
+ " --subsystem-match=<subsystem> trigger devices from a matching subystem\n"
+ " --subsystem-nomatch=<subsystem> exclude devices from a matching subystem\n"
++ " --kernel-match=<subsystem> trigger devices from a matching kernel device name\n"
++ " --kernel-nomatch=<subsystem> exclude devices from a matching kernel device name\n"
+ " --attr-match=<file[=<value>]> trigger devices with a matching sysfs\n"
+ " attribute\n"
+ " --attr-nomatch=<file[=<value>]> exclude devices with a matching sysfs\n"
+@@ -701,6 +739,8 @@ int udevtrigger(int argc, char *argv[],
+ exit:
+ name_list_cleanup(&filter_subsystem_match_list);
+ name_list_cleanup(&filter_subsystem_nomatch_list);
++ name_list_cleanup(&filter_kernel_match_list);
++ name_list_cleanup(&filter_kernel_nomatch_list);
+ name_list_cleanup(&filter_attr_match_list);
+ name_list_cleanup(&filter_attr_nomatch_list);
+
diff --git a/packages/udev/udev-124/vol_id_ld.patch b/packages/udev/udev-124/vol_id_ld.patch
new file mode 100644
index 0000000000..11126eef8d
--- /dev/null
+++ b/packages/udev/udev-124/vol_id_ld.patch
@@ -0,0 +1,17 @@
+---
+ extras/volume_id/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+Index: udev-115/extras/volume_id/Makefile
+===================================================================
+--- udev-115.orig/extras/volume_id/Makefile 2007-09-20 18:17:59.000000000 +0200
++++ udev-115/extras/volume_id/Makefile 2007-09-20 18:18:08.000000000 +0200
+@@ -44,7 +44,7 @@
+ ifeq ($(strip $(VOLUME_ID_STATIC)),true)
+ $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) lib/libvolume_id.a $(LIB_OBJS)
+ else
+- $(Q) $(LD) $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -Llib -lvolume_id $(LIB_OBJS)
++ $(Q) $(LD) -Llib $(LDFLAGS) -o $@ $@.o $(LIBUDEV) -lvolume_id $(LIB_OBJS)
+ endif
+
+ # man pages
diff --git a/packages/udev/udev_124.bb b/packages/udev/udev_124.bb
new file mode 100644
index 0000000000..338d7f1528
--- /dev/null
+++ b/packages/udev/udev_124.bb
@@ -0,0 +1,60 @@
+DESCRIPTION = "udev is a daemon which dynamically creates and removes device nodes from \
+/dev/, handles hotplug events and loads drivers at boot time. It replaces \
+the hotplug package and requires a kernel not older than 2.6.12."
+RPROVIDES_${PN} = "hotplug"
+
+PR = "r6"
+
+SRC_URI = "http://kernel.org/pub/linux/utils/kernel/hotplug/udev-${PV}.tar.gz \
+ file://noasmlinkage.patch;patch=1 \
+ file://flags.patch;patch=1 \
+ file://vol_id_ld.patch;patch=1 \
+ file://udevtrigger_add_devname_filtering.patch;patch=1 \
+ file://mount.blacklist \
+ file://run.rules \
+ "
+
+SRC_URI_append_h2200 = " file://50-hostap_cs.rules "
+PACKAGE_ARCH_h2200 = "h2200"
+
+require udev.inc
+
+DEFAULT_PREFERENCE = "-999"
+
+INITSCRIPT_PARAMS = "start 03 S ."
+
+FILES_${PN} += "${base_libdir}/udev/*"
+FILES_${PN}-dbg += "${base_libdir}/udev/.debug"
+UDEV_EXTRAS = "extras/firmware/ extras/scsi_id/ extras/volume_id/"
+EXTRA_OEMAKE += "libudevdir=/lib/udev libdir=${base_libdir} prefix="
+
+do_install () {
+ install -d ${D}${usrsbindir} \
+ ${D}${sbindir}
+ oe_runmake 'DESTDIR=${D}' INSTALL=install install
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0755 ${WORKDIR}/init ${D}${sysconfdir}/init.d/udev
+
+ install -d ${D}${sysconfdir}/udev/rules.d/
+
+ install -m 0644 ${WORKDIR}/mount.blacklist ${D}${sysconfdir}/udev/
+ install -m 0644 ${WORKDIR}/local.rules ${D}${sysconfdir}/udev/rules.d/local.rules
+ install -m 0644 ${WORKDIR}/permissions.rules ${D}${sysconfdir}/udev/rules.d/permissions.rules
+ install -m 0644 ${WORKDIR}/run.rules ${D}${sysconfdir}/udev/rules.d/run.rules
+ install -m 0644 ${WORKDIR}/udev.rules ${D}${sysconfdir}/udev/rules.d/udev.rules
+ install -m 0644 ${WORKDIR}/links.conf ${D}${sysconfdir}/udev/links.conf
+ if [ "${UDEV_DEVFS_RULES}" = "1" ]; then
+ install -m 0644 ${WORKDIR}/devfs-udev.rules ${D}${sysconfdir}/udev/rules.d/devfs-udev.rules
+ fi
+
+ install -d ${D}${sysconfdir}/udev/scripts/
+
+ install -m 0755 ${WORKDIR}/mount.sh ${D}${sysconfdir}/udev/scripts/mount.sh
+ install -m 0755 ${WORKDIR}/network.sh ${D}${sysconfdir}/udev/scripts
+
+ install -d ${D}${base_libdir}/udev/
+}
+
+do_install_append_h2200() {
+ install -m 0644 ${WORKDIR}/50-hostap_cs.rules ${D}${sysconfdir}/udev/rules.d/50-hostap_cs.rules
+}
diff --git a/packages/upnp/libupnp_1.6.5.bb b/packages/upnp/libupnp_1.6.5.bb
index a7a01597ac..245575ed28 100644
--- a/packages/upnp/libupnp_1.6.5.bb
+++ b/packages/upnp/libupnp_1.6.5.bb
@@ -2,10 +2,14 @@ DESCRIPTION = "The portable SDK for UPnP* Devices (libupnp) provides developers
HOMEPAGE = "http://pupnp.sourceforge.net/"
LICENSE = "BSD"
+PR = "r1"
+
LEAD_SONAME = "libupnp"
SRC_URI = "${SOURCEFORGE_MIRROR}/pupnp/${P}.tar.bz2"
-inherit autotools pkgconfig
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
do_stage() {
autotools_stage_all
diff --git a/packages/vala/vala-native_0.3.4.bb b/packages/vala/vala-native_0.3.4.bb
new file mode 100644
index 0000000000..f097e7db74
--- /dev/null
+++ b/packages/vala/vala-native_0.3.4.bb
@@ -0,0 +1,5 @@
+require vala_${PV}.bb
+
+inherit native
+DEPENDS = "glib-2.0-native"
+
diff --git a/packages/vala/vala_0.3.4.bb b/packages/vala/vala_0.3.4.bb
new file mode 100644
index 0000000000..37ad4b4cfe
--- /dev/null
+++ b/packages/vala/vala_0.3.4.bb
@@ -0,0 +1,15 @@
+DESCRIPTION = "Vala is a C#-like language dedicated to ease GObject programming. Vala compiles to C"
+SECTION = "devel"
+DEPENDS = "glib-2.0"
+HOMEPAGE = "http://live.gnome.org/Vala"
+LICENSE = "LGPL"
+
+SRC_URI = "http://download.gnome.org/sources/vala/0.3/vala-${PV}.tar.bz2"
+S = "${WORKDIR}/vala-${PV}"
+
+inherit autotools lib_package
+
+do_stage() {
+ autotools_stage_all
+}
+
diff --git a/packages/x-load/x-load_git.bb b/packages/x-load/x-load_git.bb
index 82c39da5dd..b6ab851460 100644
--- a/packages/x-load/x-load_git.bb
+++ b/packages/x-load/x-load_git.bb
@@ -2,9 +2,9 @@ require x-load.inc
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/x-load-git/${MACHINE}"
-SRCREV = "0c9ba2fb18aaad9f92faad2351e59721ae71bec4"
+SRCREV = "73eb0caf065b3b3f407d8af5c4836624e5cc7b69"
-PV = "1.41+${PR}+git${SRCREV}"
+PV = "1.42+${PR}+git${SRCREV}"
PR="r7"
SRC_URI = "git://www.sakoman.net/git/x-load-omap3.git;branch=master;protocol=git"
diff --git a/packages/xorg-font/xorg-minimal-fonts.bb b/packages/xorg-font/xorg-minimal-fonts.bb
index cef0ed53b8..d91c6d772d 100644
--- a/packages/xorg-font/xorg-minimal-fonts.bb
+++ b/packages/xorg-font/xorg-minimal-fonts.bb
@@ -2,12 +2,17 @@ HOMEPAGE = "http://www.x.org"
SECTION = "x11/fonts"
LICENSE = "MIT-X"
+PR = "r1"
+
SRC_URI = "file://misc"
do_install() {
install -d ${D}/${datadir}/fonts/X11/misc
install -m 0644 ${WORKDIR}/misc/* ${D}/${datadir}/fonts/X11/misc/
+ install -d ${D}/${libdir}/X11
+ ln -sf ${datadir}/fonts/X11/ ${D}/${libdir}/X11/fonts -s
+
}
PACKAGE_ARCH = "all"
-FILES_${PN} = "${datadir}/fonts/X11/"
+FILES_${PN} = "${libdir}/X11/ ${datadir}/fonts/X11/"
diff --git a/packages/xorg-lib/pixman/.mtn2git_empty b/packages/xorg-lib/pixman/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/xorg-lib/pixman/.mtn2git_empty
diff --git a/packages/xorg-lib/pixman/pixman-arm.patch b/packages/xorg-lib/pixman/pixman-arm.patch
new file mode 100644
index 0000000000..224b612548
--- /dev/null
+++ b/packages/xorg-lib/pixman/pixman-arm.patch
@@ -0,0 +1,310 @@
+commit 23a7d5dea599efec1f459bac64cf9edc4bd5ae11
+Author: Ilpo Ruotsalainen <ilpo.ruotsalainen@movial.fi>
+Date: Thu Nov 29 12:29:59 2007 +0000
+
+ Implement ARM optimized version of fill routines.
+
+diff --git a/configure.ac b/configure.ac
+index 22a91ef..3ac2a40 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -148,6 +148,32 @@ fi
+ AM_CONDITIONAL(USE_SSE, test $have_sse_intrinsics = yes)
+
+ dnl ========================================================
++
++dnl Test for architechture specific optimizations for this platform
++
++AC_MSG_CHECKING(for architechture specific optimizations)
++
++use_arch_opts=no
++
++case "$host_cpu" in
++arm)
++ if test "$GCC" = "yes" ; then
++ use_arch_opts=yes
++ ARCH_OPT_SOURCES='pixman-arch-arm.lo'
++ fi
++ ;;
++esac
++
++AC_MSG_RESULT($use_arch_opts)
++
++if test $use_arch_opts = yes ; then
++ AC_DEFINE(USE_ARCH_OPTS, 1, [use architechture specific optimizations])
++fi
++
++AC_SUBST([ARCH_OPT_SOURCES])
++AM_CONDITIONAL(USE_ARCH_OPTS, test $use_arch_opts = yes)
++
++dnl ========================================================
+ AC_SUBST(MMX_CFLAGS)
+
+ PKG_CHECK_MODULES(GTK, [gtk+-2.0], [HAVE_GTK=yes], [HAVE_GTK=no])
+diff --git a/pixman/Makefile.am b/pixman/Makefile.am
+index 66283a2..dab6363 100644
+--- a/pixman/Makefile.am
++++ b/pixman/Makefile.am
+@@ -20,6 +20,11 @@ libpixman_1_la_SOURCES = \
+ libpixmanincludedir = $(includedir)/pixman-1/
+ libpixmaninclude_HEADERS = pixman.h
+
++if USE_ARCH_OPTS
++libpixman_1_la_LIBADD += $(ARCH_OPT_SOURCES)
++libpixman_1_la_DEPENDENCIES = $(ARCH_OPT_SOURCES)
++endif
++
+ # mmx code
+ if USE_MMX
+ noinst_LTLIBRARIES = libpixman-mmx.la
+diff --git a/pixman/pixman-arch-arm.c b/pixman/pixman-arch-arm.c
+new file mode 100644
+index 0000000..655092c
+--- /dev/null
++++ b/pixman/pixman-arch-arm.c
+@@ -0,0 +1,205 @@
++/*
++ * Copyright © 2007 Movial Creative Technologies Inc
++ *
++ * Permission to use, copy, modify, distribute, and sell this software and its
++ * documentation for any purpose is hereby granted without fee, provided that
++ * the above copyright notice appear in all copies and that both that
++ * copyright notice and this permission notice appear in supporting
++ * documentation.
++ *
++ * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
++ * FITNESS, IN NO EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY
++ * SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
++ * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
++ * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
++ * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
++ * SOFTWARE.
++ *
++ * Author: Ilpo Ruotsalainen <ilpo.ruotsalainen@movial.fi>
++ */
++
++#ifdef HAVE_CONFIG_H
++#include <config.h>
++#endif
++
++#include "pixman.h"
++#include "pixman-private.h"
++
++static void
++pixman_fill8 (uint32_t *bits,
++ int stride,
++ int x,
++ int y,
++ int width,
++ int height,
++ uint32_t xor)
++{
++ int byte_stride = stride * sizeof (uint32_t);
++ uint8_t *dst = (uint8_t *) bits;
++ uint8_t v = xor & 0xff;
++
++ xor = v | (v << 8);
++ xor |= xor << 16;
++
++ dst = dst + y * byte_stride + x;
++
++ while (height--)
++ {
++ uint32_t dummy1, dummy2;
++
++ asm volatile(
++ /* Check if the fill width is very small */
++ " cmp %0, #8\n"
++ " bcc 2f\n"
++ /* Output single pixels until aligned to word boundary */
++ "1: tst %1, #3\n"
++ " strneb %4, [%1], #1\n"
++ " subne %0, %0, #1\n"
++ " bne 1b\n"
++ /* Output up to 16 pixels per iteration */
++ "1: subs %0, %0, #8\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " subcss %0, %0, #8\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " bcs 1b\n"
++ /* Finish up any remaining pixels */
++ " and %0, %0, #7\n"
++ "2: subs %0, %0, #1\n"
++ " strcsb %4, [%1], #1\n"
++ " subcss %0, %0, #1\n"
++ " strcsb %4, [%1], #1\n"
++ " bcs 2b\n"
++ : "=r" (dummy1), "=r" (dummy2)
++ : "0" (width), "1" (dst), "r" (xor)
++ : "cc", "memory"
++ );
++
++ dst += byte_stride;
++ }
++}
++
++static void
++pixman_fill16 (uint32_t *bits,
++ int stride,
++ int x,
++ int y,
++ int width,
++ int height,
++ uint32_t xor)
++{
++ int short_stride = (stride * sizeof (uint32_t)) / sizeof (uint16_t);
++ uint16_t *dst = (uint16_t *)bits;
++ uint16_t v = xor & 0xffff;
++
++ xor = v | v << 16;
++
++ dst = dst + y * short_stride + x;
++
++ while (height--)
++ {
++ uint32_t dummy1, dummy2;
++
++ asm volatile(
++ /* Check if the fill width is very small */
++ " cmp %0, #4\n"
++ " bcc 2f\n"
++ /* Output single pixels until aligned to word boundary */
++ "1: tst %1, #2\n"
++ " strneh %4, [%1], #2\n"
++ " subne %0, %0, #1\n"
++ " bne 1b\n"
++ /* Output up to 8 pixels per iteration */
++ "1: subs %0, %0, #4\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " subcss %0, %0, #4\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " bcs 1b\n"
++ /* Finish up any remaining pixels */
++ " and %0, %0, #3\n"
++ "2: subs %0, %0, #1\n"
++ " strcsh %4, [%1], #2\n"
++ " bcs 2b\n"
++ : "=r" (dummy1), "=r" (dummy2)
++ : "0" (width), "1" (dst), "r" (xor)
++ : "cc", "memory"
++ );
++
++ dst += short_stride;
++ }
++}
++
++static void
++pixman_fill32 (uint32_t *bits,
++ int stride,
++ int x,
++ int y,
++ int width,
++ int height,
++ uint32_t xor)
++{
++ bits = bits + y * stride + x;
++
++ while (height--)
++ {
++ uint32_t dummy1, dummy2;
++
++ asm volatile(
++ /* Check if the fill width is very small */
++ " cmp %0, #2\n"
++ " bcc 2f\n"
++ /* Output up to 4 pixels per iteration */
++ "1: subs %0, %0, #2\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " subcss %0, %0, #2\n"
++ " strcs %4, [%1], #4\n"
++ " strcs %4, [%1], #4\n"
++ " bcs 1b\n"
++ /* Output last pixel if necessary */
++ "2: tst %0, #1\n"
++ " strne %4, [%1], #4\n"
++ : "=r" (dummy1), "=r" (dummy2)
++ : "0" (width), "1" (bits), "r" (xor)
++ : "cc", "memory"
++ );
++
++ bits += stride;
++ }
++}
++
++pixman_bool_t
++pixman_fill (uint32_t *bits,
++ int stride,
++ int bpp,
++ int x,
++ int y,
++ int width,
++ int height,
++ uint32_t xor)
++{
++ switch (bpp)
++ {
++ case 8:
++ pixman_fill8 (bits, stride, x, y, width, height, xor);
++ break;
++
++ case 16:
++ pixman_fill16 (bits, stride, x, y, width, height, xor);
++ break;
++
++ case 32:
++ pixman_fill32 (bits, stride, x, y, width, height, xor);
++ break;
++
++ default:
++ return FALSE;
++ break;
++ }
++
++ return TRUE;
++}
+diff --git a/pixman/pixman-arch.h b/pixman/pixman-arch.h
+new file mode 100644
+index 0000000..1eee9d3
+--- /dev/null
++++ b/pixman/pixman-arch.h
+@@ -0,0 +1,7 @@
++#ifdef USE_ARCH_OPTS
++
++#ifdef __arm__
++#define USE_ARCH_FILL
++#endif
++
++#endif
+--- /tmp/pixman-utils.c 2008-08-14 12:38:44.000000000 +0200
++++ pixman-0.11.8/pixman/pixman-utils.c 2008-08-14 12:40:03.503198000 +0200
+@@ -28,6 +28,7 @@
+ #include <stdlib.h>
+
+ #include "pixman-private.h"
++#include "pixman-arch.h"
+ #include "pixman-mmx.h"
+
+ PIXMAN_EXPORT pixman_bool_t
+@@ -84,6 +85,7 @@
+ return FALSE;
+ }
+
++#ifndef USE_ARCH_FILL
+ static void
+ pixman_fill8 (uint32_t *bits,
+ int stride,
+@@ -197,7 +199,7 @@
+
+ return TRUE;
+ }
+-
++#endif
+
+ /*
+ * Compute the smallest value no less than y which is on a
diff --git a/packages/xorg-lib/pixman_0.11.8.bb b/packages/xorg-lib/pixman_0.11.8.bb
new file mode 100644
index 0000000000..8e4bd8cff3
--- /dev/null
+++ b/packages/xorg-lib/pixman_0.11.8.bb
@@ -0,0 +1,18 @@
+SECTION = "libs"
+PRIORITY = "optional"
+DESCRIPTION = "Low-level pixel manipulation library."
+LICENSE = "X11"
+
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI = "http://cairographics.org/releases/pixman-${PV}.tar.gz \
+ file://pixman-arm.patch;patch=1 \
+ "
+
+inherit autotools
+
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+do_stage () {
+ autotools_stage_all
+}
+
diff --git a/packages/xorg-xserver/xorg-xserver-common.inc b/packages/xorg-xserver/xorg-xserver-common.inc
index bd191eadfe..8e7c5d7798 100644
--- a/packages/xorg-xserver/xorg-xserver-common.inc
+++ b/packages/xorg-xserver/xorg-xserver-common.inc
@@ -4,7 +4,7 @@ LICENSE = "MIT-X"
PROVIDES = "virtual/xserver"
-DEPENDS = "fontconfig freetype flex-native lbxutil kbproto \
+DEPENDS = "hal fontconfig freetype flex-native lbxutil kbproto \
xf86driproto drm glproto randrproto renderproto fixesproto damageproto \
xcmiscproto xextproto xproto xf86miscproto xf86vidmodeproto xf86bigfontproto \
scrnsaverproto bigreqsproto resourceproto fontsproto inputproto \
@@ -13,7 +13,7 @@ resourceproto xineramaproto xtrans evieext libxkbfile libxfont libxau \
libfontenc libxdmcp libxxf86vm libxaw libxmu libxt libxpm libxext libx11 \
libxkbui libxxf86misc libxi libdmx libxtst libxres mesa"
-RDEPENDS_${PN} = "rgb xorg-minimal-fonts"
+RDEPENDS_${PN} = "hal rgb xorg-minimal-fonts"
XORG_PN = "xorg-server"
SRC_URI = "${XORG_MIRROR}/individual/xserver/${XORG_PN}-${PV}.tar.bz2 \
diff --git a/packages/xserver-common/files/fixes-fix-fix.patch b/packages/xserver-common/files/fixes-fix-fix.patch
new file mode 100644
index 0000000000..c44e0277b5
--- /dev/null
+++ b/packages/xserver-common/files/fixes-fix-fix.patch
@@ -0,0 +1,20 @@
+--- /tmp/default.xmodmap 2008-08-10 20:06:35.000000000 +0200
++++ xserver-common-1.22/X11/default.xmodmap 2008-08-10 20:07:04.000000000 +0200
+@@ -188,13 +188,13 @@
+ keycode 195 =
+ keycode 196 =
+ keycode 197 =
+-keycode 198 =
++keycode 198 = Up
+ keycode 199 =
+-keycode 200 =
+-keycode 201 =
++keycode 200 = Left
++keycode 201 = Right
+ keycode 202 =
+ keycode 203 =
+-keycode 204 =
++keycode 204 = Down
+ keycode 205 =
+ keycode 206 =
+ keycode 207 =
diff --git a/packages/xserver-common/xserver-common_1.22.bb b/packages/xserver-common/xserver-common_1.22.bb
index 425e64c627..9ef4e457d2 100644
--- a/packages/xserver-common/xserver-common_1.22.bb
+++ b/packages/xserver-common/xserver-common_1.22.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts and support files"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap xrandr xdpyinfo"
-PR = "r5"
+PR = "r6"
PACKAGE_ARCH = "all"
@@ -12,6 +12,7 @@ inherit gpe
SRC_URI_append = " file://setDPI.sh "
SRC_URI_append_angstrom = " file://kdrive-1.4-fixes.patch;patch=1 \
file://kdrive-1.4-fixes-fix.patch;patch=1 \
+ file://fixes-fix-fix.patch;patch=1 \
"
do_install_append() {
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver b/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
index 417b29ca2a..b856a75cd0 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common/Xserver
@@ -106,14 +106,14 @@ case `module_id` in
else
DPI=140
fi
- ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE}" ;;
+ ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE} -mouse tslib" ;;
"GTA02")
if [ `screen_width` -gt 330 ] ; then
DPI=285
else
DPI=140
fi
- ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE}"
+ ARGS="$ARGS -dpi ${DPI} -screen ${SCREEN_SIZE} -mouse tslib"
XSERVER=/usr/bin/Xglamo
;;
"Nokia N770")
@@ -143,4 +143,4 @@ fi
DISPLAY=':0'
-exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $*
+exec xinit /etc/X11/Xsession -- $XSERVER $DISPLAY $ARGS $* >/tmp/x.log 2>&1
diff --git a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
index e07a83ed3c..738bb3f6fc 100644
--- a/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
+++ b/packages/xserver-kdrive-common/xserver-kdrive-common_0.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Common X11 scripts"
LICENSE = "GPL"
SECTION = "x11"
RDEPENDS_${PN} = "xmodmap libxrandr xdpyinfo xtscal xinit"
-PR = "r29"
+PR = "r30"
SRC_URI = "\
file://Xdefaults \