summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Schmidt <stefan@datenfreihafen.org>2009-10-22 19:16:57 +0200
committerStefan Schmidt <stefan@datenfreihafen.org>2009-10-22 19:16:57 +0200
commit328eab49db19349da207a964a276f602c246ed1c (patch)
treef6e11b51e3914bd1493a7612ef6e574b12475a88
parent8bd6b6a8d125b2b256038b0be0fb06660657d379 (diff)
parent5f88338d6abc562f6e034186e7c6897f22ec7ba1 (diff)
Merge branch 'org.openembedded.dev' of git.openembedded.org:openembedded into org.openembedded.dev
-rw-r--r--conf/checksums.ini144
-rw-r--r--conf/distro/include/angstrom-2008-preferred-versions.inc2
-rw-r--r--conf/distro/include/angstrom-eglibc.inc2
-rw-r--r--conf/distro/include/angstrom-glibc.inc2
-rw-r--r--conf/distro/include/fso-autorev.inc2
-rw-r--r--conf/distro/include/kaeilos-2009-preferred-versions.inc33
-rw-r--r--conf/distro/include/sane-srcrevs-fso.inc4
-rw-r--r--conf/distro/include/sane-srcrevs.inc8
-rw-r--r--conf/distro/kaeilos.conf75
-rw-r--r--conf/machine/igep0020.conf43
-rw-r--r--conf/machine/include/omap3.inc2
-rwxr-xr-xcontrib/angstrom/sort.sh2
-rw-r--r--files/device_table-jlime.txt2
-rw-r--r--files/device_table-minimal-add-md.txt2
-rw-r--r--files/device_table-minimal.txt6
-rw-r--r--files/device_table-slugos.txt14
-rw-r--r--files/device_table-unslung.txt12
-rw-r--r--files/device_table_add-scsi.txt2
-rw-r--r--recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch18
-rw-r--r--recipes/binutils/binutils-cross-sdk.inc3
-rw-r--r--recipes/binutils/binutils_2.20.bb4
-rw-r--r--recipes/cairo/cairo_1.8.8.bb6
-rw-r--r--recipes/fastjar/fastjar-native.inc12
-rw-r--r--recipes/ffmpeg/ffmpeg_svn.bb4
-rw-r--r--recipes/ffmpeg/omapfbplay_git.bb2
-rw-r--r--recipes/fftw/fftw_3.2.2.bb (renamed from recipes/fftw/fftw_3.2.bb)0
-rw-r--r--recipes/fftw/fftwf_3.2.2.bb (renamed from recipes/fftw/fftwf_3.2.bb)0
-rw-r--r--recipes/fftw/fftwl_3.2.2.bb (renamed from recipes/fftw/fftwl_3.2.bb)0
-rw-r--r--recipes/freesmartphone/fsodeviced_git.bb2
-rw-r--r--recipes/freesmartphone/fsogpsd_git.bb6
-rw-r--r--recipes/freesmartphone/fsogsmd_git.bb2
-rw-r--r--recipes/freesmartphone/libfso-glib_git.bb5
-rw-r--r--recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb2
-rw-r--r--recipes/geoclue/geoclue_git.bb3
-rw-r--r--recipes/gkdial/gkdial_1.8.1.bb6
-rw-r--r--recipes/gnash/gnash-fb_0.8.5.bb2
-rw-r--r--recipes/gnome/gdm_2.28.0.bb4
-rw-r--r--recipes/gnome/gedit_2.28.0.bb4
-rw-r--r--recipes/gnome/gnome-bluetooth_git.bb6
-rw-r--r--recipes/gnome/gnome-python-extras_2.25.3.bb7
-rw-r--r--recipes/gnome/gnome-screensaver_2.28.0.bb5
-rw-r--r--recipes/gnome/libgdata_0.4.0.bb18
-rw-r--r--recipes/gpephone/firewall_svn.bb4
-rw-r--r--recipes/gpephone/libsettings_0.3.bb3
-rw-r--r--recipes/gpephone/libsettings_svn.bb3
-rw-r--r--recipes/gtksourceview/files/acinclude.m490
-rw-r--r--recipes/gtksourceview/files/gtk-doc.m453
-rw-r--r--recipes/gtksourceview/files/gtk-doc.make173
-rw-r--r--recipes/gtksourceview/gtksourceview2_2.7.3.bb6
-rw-r--r--recipes/gtksourceview/gtksourceview2_2.9.1.bb30
-rw-r--r--recipes/kexecboot/device_table-oldmmc.txt4
-rw-r--r--recipes/libgee/libgee-native_git.bb2
-rw-r--r--recipes/libgee/libgee_git.bb2
-rw-r--r--recipes/libgmime/gmime_2.4.10.bb20
-rw-r--r--recipes/linux/linux-2.6.24/hipox/defconfig4
-rw-r--r--recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch16
-rw-r--r--recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch512
-rw-r--r--recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch242
-rw-r--r--recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch227
-rw-r--r--recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch440
-rw-r--r--recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch858
-rw-r--r--recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch1070
-rw-r--r--recipes/linux/linux-2.6.31/boc01/boc01.dts348
-rw-r--r--recipes/linux/linux-2.6.31/boc01/boc01.dts.v1348
-rw-r--r--recipes/linux/linux-2.6.31/boc01/defconfig2126
-rw-r--r--recipes/linux/linux-bug_2.6.27.2.bb13
-rw-r--r--recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig2082
-rw-r--r--recipes/linux/linux-igep2_2.6.28.10-0.bb13
-rw-r--r--recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c739
-rw-r--r--recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig485
-rw-r--r--recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch54
-rw-r--r--recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch244
-rw-r--r--recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch60
-rw-r--r--recipes/linux/linux-omap-2.6.31/beagleboard/defconfig10
-rw-r--r--recipes/linux/linux-omap_2.6.29.bb14
-rw-r--r--recipes/linux/linux_2.6.31.bb26
-rw-r--r--recipes/lm_sensors/lmsensors-apps_2.10.8.bb5
-rw-r--r--recipes/maemo4/libgpsbt_0.1.bb4
-rw-r--r--recipes/maemo4/libhildon.inc2
-rw-r--r--recipes/makedevs/makedevs-1.0.0/makedevs.c2
-rw-r--r--recipes/makedevs/makedevs_1.0.0.bb2
-rw-r--r--recipes/moblin/mojito_git.bb4
-rw-r--r--recipes/mplayer/files/pld-onlyarm5-svn.patch405
-rw-r--r--recipes/mplayer/mplayer_svn.bb2
-rw-r--r--recipes/networkmanager/network-manager-applet_0.7.1.997.bb26
-rw-r--r--recipes/networkmanager/networkmanager.inc2
-rw-r--r--recipes/networkmanager/networkmanager_0.6.4.bb4
-rw-r--r--recipes/networkmanager/networkmanager_0.7.1.997.bb26
-rw-r--r--recipes/openscada/files/rcc-moc.patch15
-rw-r--r--recipes/openscada/openscada_svn.bb51
-rw-r--r--recipes/packagekit/gnome-packagekit_2.27.1.bb4
-rw-r--r--recipes/pam/libpam_1.0.2.bb26
-rw-r--r--recipes/php/php-5.2.6/string.c.patch21
-rw-r--r--recipes/php/php.inc2
-rw-r--r--recipes/php/php_5.2.6.bb5
-rw-r--r--recipes/poppler/poppler_0.12.1.bb7
-rw-r--r--recipes/pulseaudio/libcanberra_0.17.bb4
-rw-r--r--recipes/ralink/rt3070_2.1.1.0.bb12
-rw-r--r--recipes/samba/samba_3.3.9.bb35
-rw-r--r--recipes/serial-utils/pty-forward-native.bb6
-rw-r--r--recipes/serial-utils/serial-forward.bb6
-rw-r--r--recipes/tasks/task-cli-tools.bb5
-rw-r--r--recipes/tasks/task-fso2-compliance.bb4
-rw-r--r--recipes/tasks/task-gmae.bb4
-rw-r--r--recipes/tasks/task-perl-module-all.bb4
-rw-r--r--recipes/tasks/task-sdk-extra.bb6
-rw-r--r--recipes/ti/ti-dmai/touchbook-support.patch3
-rw-r--r--recipes/ti/ti-dmai_svn.bb2
-rw-r--r--recipes/tinymail/libtinymail.inc2
-rw-r--r--recipes/tinymail/libtinymail_0.0.1.bb3
-rw-r--r--recipes/tinymail/libtinymail_svn.bb4
-rw-r--r--recipes/tinymail/tmut_1.1.0.bb4
-rw-r--r--recipes/tinymail/tmut_svn.bb4
-rw-r--r--recipes/totem/files/cflags.patch33
-rw-r--r--recipes/totem/files/gtkonly.patch38
-rw-r--r--recipes/totem/files/include.patch11
-rw-r--r--recipes/totem/files/intl.patch33
-rw-r--r--recipes/totem/files/nonautilus.patch16
-rw-r--r--recipes/totem/files/omf.patch13
-rw-r--r--recipes/totem/totem-2.24.2/gst-detect.diff28
-rw-r--r--recipes/totem/totem-2.28.1/gst-detect.diff46
-rw-r--r--recipes/totem/totem-pl-parser_2.23.3.bb15
-rw-r--r--recipes/totem/totem-pl-parser_2.24.1.bb15
-rw-r--r--recipes/totem/totem-pl-parser_2.28.1.bb (renamed from recipes/totem/totem-pl-parser_2.26.2.bb)2
-rw-r--r--recipes/totem/totem/gst-detect.diff37
-rw-r--r--recipes/totem/totem_0.99.15.bb30
-rw-r--r--recipes/totem/totem_1.0.4.bb33
-rw-r--r--recipes/totem/totem_2.23.4.bb72
-rw-r--r--recipes/totem/totem_2.28.1.bb (renamed from recipes/totem/totem_2.24.2.bb)37
-rw-r--r--recipes/u-boot/files/beagleboard/fw_env.config8
-rw-r--r--recipes/u-boot/files/fw_env.config7
-rw-r--r--recipes/u-boot/files/omap3-touchbook/fw_env.config6
-rw-r--r--recipes/u-boot/files/rootfs.patch62
-rw-r--r--recipes/u-boot/u-boot-git/600mhz.patch11
-rw-r--r--recipes/u-boot/u-boot-git/ai-logo.patch1336
-rw-r--r--recipes/u-boot/u-boot-git/mmcinit.patch20
-rw-r--r--recipes/u-boot/u-boot-git/new-pinmux.patch130
-rw-r--r--recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch73
-rw-r--r--recipes/u-boot/u-boot-git/power.patch13
-rw-r--r--recipes/u-boot/u-boot-git/spi3.patch29
-rw-r--r--recipes/u-boot/u-boot-git/spi4.patch14
-rw-r--r--recipes/u-boot/u-boot-git/touchbook-config.patch11
-rw-r--r--recipes/u-boot/u-boot.inc8
-rw-r--r--recipes/u-boot/u-boot_git.bb18
-rw-r--r--recipes/vala/vala-native_0.7.6-fso2.bb6
-rw-r--r--recipes/vala/vala-native_0.7.7+fso5.bb8
-rw-r--r--recipes/vala/vala.inc4
-rw-r--r--recipes/vala/vala_0.7.7+fso5.bb4
-rw-r--r--recipes/xdg-utils/xdg-utils_1.0.2.bb7
-rw-r--r--recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch830
-rw-r--r--recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch1061
-rw-r--r--recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch63
-rw-r--r--recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch60
-rw-r--r--recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch87
-rw-r--r--recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch540
-rw-r--r--recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch592
-rw-r--r--recipes/xorg-lib/pixman_0.15.18.bb13
-rw-r--r--recipes/xorg-lib/pixman_0.16.2.bb13
-rw-r--r--recipes/xorg-lib/pixman_git.bb9
-rw-r--r--recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf11
-rw-r--r--recipes/xorg-xserver/xserver-xorg-conf_0.1.bb2
161 files changed, 15581 insertions, 1456 deletions
diff --git a/conf/checksums.ini b/conf/checksums.ini
index 427688d6b4..80d227e3c9 100644
--- a/conf/checksums.ini
+++ b/conf/checksums.ini
@@ -54,6 +54,10 @@ sha256=f09d4ae3365b876da9f40f49178ab7241bb7e4c1d67db9e2f310f9c76d5834a6
md5=333b0e9328194f28af83c26d3717e4ac
sha256=8930ebfdc8a606d8cb26f073d4700460c3289fb79e943e12948329e17336ca47
+[http://maxim.org.za/AT91RM9200/2.6/2.6.21-at91.patch.gz]
+md5=779472ae02c2a99937879a8d1d4b9b25
+sha256=cfb98e7635c985733dba0fb9c3cadee22ab70fb3b0db7eac8eacaebc65c92a59
+
[http://maxim.org.za/AT91RM9200/2.6/2.6.25-at91.patch.gz]
md5=4469d6336f9659f1725fedd4a52261ad
sha256=7a960180e7873b1bdb522e76b0423b5c2c1b8efe1d30d7ca80c41eb97d822b2d
@@ -682,6 +686,10 @@ sha256=36d48a11957e1c4f53a685b0fcc7d060e8972b435501c92b10737bb844dd95e2
md5=64f780e7f95c252eaaed0201c3d9a4ca
sha256=281234116b99b4c4b45fde038a435a0d26b7ee55beac0c351186b3f12c301659
+[http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.7/NetworkManager-0.7.1.997.tar.bz2]
+md5=12f12b2586043c21c3508b05e7994ba2
+sha256=a62a0f45d156cb190dd2ee3176aa3af4bf7b35c23a09ac65a309c9dc5af87826
+
[http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.7/NetworkManager-0.7.1.tar.bz2]
md5=954742cfd47191204d62d8d57f2bc6dd
sha256=7526a31de615a662cb09e915f26e5b151eda364240d983df6232aac8b9333f3a
@@ -3270,6 +3278,10 @@ sha256=4e329b19c810d2a8dd5b9e98e56cfc5d6389798947e400e5fe541dbc1307278f
md5=d7c7cdab692fb2edc5cf5ebb554f20a1
sha256=9b20c37f2ae2247354b580e080bf0c3b650d3e63bf39c3d5573ef3b9c75fe0f0
+[http://www.boundarydevices.com/boundary-2.6.22-2007-07-22.patch.bz2]
+md5=7dac7a5cf401070ecccf42666a30fc0a
+sha256=da8a360035464defd133a4ba604aa7ae9ee077747511b98384862b4cbdde5906
+
[http://dl.boxee.tv/boxee-0.9.7.4826-sources.tar.bz2]
md5=f49cb4f9769c0a8fe2965724aa8f285b
sha256=4103be6f8ca38a90c48b55172c7bdaab2205a1dad2bfcee877adb23bbdc6cfc1
@@ -3578,6 +3590,14 @@ sha256=5268faa116a48a68dd74abb245b26b20f1729d3bd56a8414e429904eb1bae124
md5=4ea70ea87b47e92d318d4e7f5b940f47
sha256=827acee89ba3e8e762fbb23165cf8d455e7d95e1e50984e6882b2070a7f3abae
+[http://cairographics.org/releases/cairo-1.8.8.tar.gz]
+md5=d3e1a1035ae563812d4dd44a74fb0dd0
+sha256=3c51d3de5dc4596e01a6675acd3c86c2c99c00f02e8fad5493758a29fe451c90
+
+[http://cairographics.org/snapshots/cairo-1.9.4.tar.gz]
+md5=872f460cda044c36c2b55e6307a8cc29
+sha256=5093fe09889ab2505b91ea4b73ddee06f8dbc998f354a6fba1f9417f7d7a15f7
+
[http://cairographics.org/releases/cairomm-1.2.4.tar.gz]
md5=5d862facfbd0098c9bae618b61f7c8e6
sha256=a137ccd4a6cde6c9e9553966534702d2e7f6f44c755dfe128d9fb26ed2697fe7
@@ -6498,6 +6518,10 @@ sha256=61ba89c0deaaf324485b2bf480fdb90941b74e2c47b4810e34f530b77005bb8c
md5=08f2e21c9fd02f4be2bd53a62592afa4
sha256=e1b92e97fe27efcbd150212d0d287ac907bd2fef0af32e16284fef5d1c1c26bf
+[http://www.fftw.org/fftw-3.2.2.tar.gz]
+md5=b616e5c91218cc778b5aa735fefb61ae
+sha256=6aa7ae65ee49eb99004f15899f9bb77f54759122f1a350041e81e096157d768f
+
[http://www.fftw.org/fftw-3.2.tar.gz]
md5=280960ddbad368ebb96c073a2b642f5d
sha256=205a021a87cae27146741d15bff260353497d219332a97718c0c649ab81483d0
@@ -8610,6 +8634,10 @@ sha256=39ef812217a76982947a7ac3b4a97e8303466a3dd93709366d1559e0a7ec8a46
md5=9f254eb989e0506243da6fde7f164998
sha256=d5420eef50372d24eaecde93ea4c8ec55f5bf24c9e0f6abbded76e5dbd6a2d76
+[http://ftp.gnome.org/pub/GNOME/sources/gmime/2.4/gmime-2.4.10.tar.bz2]
+md5=f0700515d5d715ae6b34289fdca90451
+sha256=59c71aa8d0f06c66f863bc0462868237a770ce30d1402af2515235fa41db51ca
+
[http://ftp.acc.umu.se/pub/GNOME/sources/gmime/2.4/gmime-2.4.7.tar.bz2]
md5=0fb23dbb1ed6934ab577e90269cd901f
sha256=bf75214018bb1ae82c797e79d52db2c37a8d3d9f002a737f12960fa2b1022dbd
@@ -10894,6 +10922,10 @@ sha256=92ddd976721e26377eaa59fea07707a0caa85eb874500868c1e6fdd9a21fe0dd
md5=ea30aecfbd55ebf40c6cf5a0f254f9ba
sha256=bf4c6285683a70addedd3ae6b9d4b450d928be497834272c4cd705471333f1ec
+[http://ftp.gnome.org/pub/GNOME/sources/gtksourceview/2.9/gtksourceview-2.9.1.tar.bz2]
+md5=1e3a378af5f6319d53413394620c4e4a
+sha256=b5ebdc5e7d33b99790c6dda14a717711963039f8ea6242c889f540b24ed6678f
+
[http://downloads.sourceforge.net/gtkterm/gtkterm2-0.2.3.tar.gz]
md5=a49f93d15909dbd2e7011428ae01f0f0
sha256=fb68b18d752ae2379f144186b94743be991af1a42c88bc1e6f0685e45cb1d573
@@ -12498,6 +12530,10 @@ sha256=f3bc6747dba7d1a35cd125ca0bd4649f88704be211cf7e47d36b43c7f44ce803
md5=6092cdb0a1225f95356ddbe6c2abaad5
sha256=7000005ebbd07a28a71477d72bcb76c47064e043a4ead26fcf4d5af394ce19df
+[http://xorg.freedesktop.org/releases/individual/proto/kbproto-1.0.4.tar.bz2]
+md5=7f439166a9b2bf81471a33951883019f
+sha256=1baa29931313d0c3eb81dffd42662768cc76ce49ce94024d5fe32ef5a4e8603c
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/kbproto-X11R7.0-1.0.2.tar.bz2]
md5=403f56d717b3fefe465ddd03d9c7bc81
sha256=abfea195d72a6355dddacaf1ca37187ba9e8ca271af4bf6c38efaba4023b36a4
@@ -13238,6 +13274,10 @@ sha256=6171e6bca4bd6333611bd9c63cccc8e8e412d876c72097f0dddc490a9df51d5a
md5=3a8e06b25912ef339d70a8ba003da9b5
sha256=eafff0157f2c7172214449d4b6b0c72328cad7026ecace226189b511791c5f75
+[http://xorg.freedesktop.org/releases/individual/lib/libXfont-1.4.1.tar.bz2]
+md5=4f2bed2a2be82e90a51a24bb3a22cdf0
+sha256=112bfc30820b98deec4c9914536c5aa2f8b5162bd2b0bdb342343168e06f7679
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXfont-X11R7.0-1.0.0.tar.bz2]
md5=955c41694772c9fd214e3e206f5d2178
sha256=47d4de6986f6ca85bc48ecd76188d7f3f009e1aeb640008cab12ac5ca5896622
@@ -13270,6 +13310,10 @@ sha256=68b46f85caaf0b30c876bd983abe144c25755bee7532e8738ab7ebe29a428986
md5=bc8881851f3bd8dcc625fac37350a1c6
sha256=ce7688258af34c14af421bcfb306d4310245b727d2417ac968b7f6b2facfde8c
+[http://xorg.freedesktop.org/releases/individual/lib/libXft-2.1.14.tar.bz2]
+md5=254e62a233491e0e1251636536163e20
+sha256=700e9d594b81cad3dfd5fac4a5cfd0c4cf7780c812507ef04eb40139ebf5175e
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXft-X11R7.0-2.1.8.2.tar.bz2]
md5=c42292b35325a9eeb24eb0f8d3a6ec52
sha256=0473d1db21968f05b39ff9832b18545ba6b93be76d2e61b04a14208c515680f3
@@ -13362,6 +13406,10 @@ sha256=2d5c5242b8417db6aa758e5be387de33385d9960ff21c801af7d6a4730b4fd0d
md5=cd15ee542d9f515538b4462a6f79d977
sha256=64701ae67ce5b0797307b75d8255bec3a0d371d0c50715ea618f5a68bcc92baa
+[http://xorg.freedesktop.org/releases/individual/lib/libXpm-3.5.8.tar.bz2]
+md5=38e58e72d476a74298a59052fde185a3
+sha256=02a77aaa32e6e335e1ee04aeb9ad1008045d98274d64ed33bc5fc6c3a3542c4c
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXpm-X11R7.0-3.5.4.2.tar.bz2]
md5=f3b3b6e687f567bbff7688d60edc81ba
sha256=58bb490a8c97e8b7e57525f105378a65dc5f7571765aea6a8f473d93e8713807
@@ -13438,6 +13486,10 @@ sha256=0ddcb6f9dcffd4c4c896012bf82da350ff6f1550fb53a99327f21e483c39c8a2
md5=de66ffb657aba64c9d6dbdeabb757f3e
sha256=a6d5ba7573f5ec0f091095f01b51d1e671dd0f14acb5b8559cdf366e398a0230
+[http://xorg.freedesktop.org/releases/individual/lib/libXres-1.0.4.tar.bz2]
+md5=4daf91f93d924e693f6f6ed276791be2
+sha256=457f567a70ef8798cfb32f897ffa52c3f010923b07414b3a42277f56877572df
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/lib/libXres-X11R7.0-1.0.0.tar.bz2]
md5=cc5c4f130c9305e5bd973fbb7c56a254
sha256=b8f68d40797e1baadb77053f7834428894696cb345591f732c8c8c7e1ff1f3b8
@@ -14198,6 +14250,10 @@ sha256=14d457c3ed1d4751664f7196cbcd20e7db82532025f35634812f0cb7470fc43e
md5=555488ddfc81a6e0df1fb5112e7eee13
sha256=7562042a6210947363bd6a9bbcdd03f8d02470c0347970b507f689d25a907844
+[http://ftp.gnome.org/pub/GNOME/sources/libgdata/0.4/libgdata-0.4.0.tar.bz2]
+md5=06b14f1cd96432b0717ed03fe013ca4d
+sha256=55c616b0761faaa9fb028434de97b02d5145dfc52b1db632671ebc6cc6905575
+
[http://geda.seul.org/release/v1.4/1.4.1/libgeda-1.4.1.tar.gz]
md5=16f2e3176eb489838bad57c8728c7388
sha256=c0598428fc25e79b7ac1da35d44133e3fc50763b32fcdfffd5e6654f2f94682d
@@ -16570,6 +16626,10 @@ sha256=455f352e2ec707e4abf02091c4c49ffa5611294eb75959c25d77967a02636577
md5=a75c264f90b07b4f3ba05febc7386f4b
sha256=384c0e97100170b4566a0b335a18246c42c76df682377cae6ed1c72be8aadc0e
+[http://downloads.myigep.com/sources/kernel/linux-omap-2.6.28.10-igep0020b-0.tar.gz]
+md5=c50ae11485ca9b2ee1612d531c5321d9
+sha256=f7a944bab388ed87d5535e21af52054917eb55999a654e1b2c160cbf0c1a8d5a
+
[ftp://ftp.linux-wlan.org/pub/linux-wlan-ng/linux-wlan-ng-0.2.1-pre26.tar.bz2]
md5=fff64e543e094b2007d614697f505344
sha256=0dd50d400ab39619b20e50183ec7d357ad4b96bdebd64eca916e764542616e1a
@@ -16870,6 +16930,10 @@ sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739
md5=89c0ebdd0a27bc7f68726100f4bb079b
sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739
+[ftp://ftp.us.debian.org/debian/pool/main/l/ltrace/ltrace_0.4-1.diff.gz]
+md5=89c0ebdd0a27bc7f68726100f4bb079b
+sha256=27c0b2051949b88514d4a32300377d531db314d7c93750b0abff049c2b93d739
+
[ftp://ftp.debian.org/debian/pool/main/l/ltrace/ltrace_0.4.orig.tar.gz]
md5=8dbadad76ee360c2ed2caa915f5b1c8e
sha256=28bbab4a69a3c78539b2588d2219327009d93cafc74fb59b9a4ea5f5b794f8db
@@ -18730,6 +18794,10 @@ sha256=9cca3e34e23f00c82bc5e7237aa81639874e90d43a689e26fbfd938279ca31c9
md5=856fc7c4cf43c8614445d9fcf78177d1
sha256=7c9fcb0b18c72071ad42316ff5e0369a418f92d05ef419874a67826fd9d8406a
+[http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.7/network-manager-applet-0.7.1.997.tar.bz2]
+md5=3183f5ae3553da0ce9c381dadbcc19e0
+sha256=34316707a323b883f347b2566fd2dc7a3134b2bf432fb3a8b31d88829b0947e3
+
[http://ftp.gnome.org/pub/GNOME/sources/network-manager-applet/0.7/network-manager-applet-0.7.1.tar.bz2]
md5=d90a997e3e2051ce8866fe24f765141f
sha256=b22a90e6252d798b3889843910a016d185f9e87dd23e203003b1072013f670a6
@@ -19986,6 +20054,10 @@ sha256=f85096df0acc179f676497e75b9ba8d9b8685b92b0b2b8b1d6871619ed879fbd
md5=08b2c1e9759ca409a0d2ca49db1bbedb
sha256=0417fc3609f5746bce6016862e7f83e83e98e17e5ae77887bf66b37748ab261c
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.21.bz2]
+md5=10319d634fa66ae8a758e03a227ff79f
+sha256=1e0b8c7c5c923b396dcd0a0a1aa3108676f6ad67b35132d0c068ee59fd48408f
+
[http://www.kernel.org/pub/linux/kernel/v2.6/patch-2.6.20.6.bz2]
md5=a42300de8720552d70470dd3e4afc75f
sha256=808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c
@@ -19994,6 +20066,10 @@ sha256=808ca62a66d7cfe40123301c2f51fc0dcd817ee3bb0df96d1e9e97cc3bad6a9c
md5=b9c8734471a454806c77f040fcf9869b
sha256=5ee24e1c5636bcffed155b1c01d7d09fedb135fa2458c190a0da03a82c8c2f60
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.22.19.bz2]
+md5=066cc3bdd2783dcd01f6ff466e449ec0
+sha256=829c48b49c71d89468f2a5a05587714811197545eeba31e9643cabacf344d33a
+
[http://kernel.org//pub/linux/kernel/v2.6/patch-2.6.22.5.bz2]
md5=27544a58763bbd4ce497a77658af744a
sha256=0f96188e8d1c6e0934f8e8dc2455e1f94a47c10cb17268364bcd77df68c83c2a
@@ -20026,6 +20102,10 @@ sha256=55e811b4d4b0cbfde500bdd5455b7180d3def3dbdc52314520b7327d32b23f42
md5=5932b5043abe8ca1ac7ee1ed73fa5e91
sha256=bd83c501ff86103f054421496de31e6bc86d40d6bec6eafd2712bb0fb9da9d07
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.23.17.bz2]
+md5=7d2dbdf18868b496548d4375d8c67d3a
+sha256=04dfd3f22dc3abce7d7509c0836350540b60cadd19292be70a2a2900c5fbe7b8
+
[http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.24-rc1.bz2]
md5=4f5daa28c871d9edd6d61f712f4b358d
sha256=2512a51923318bde6175e073b3eec0e58ae07123bcdc49afa11f286b0d4bd06d
@@ -20086,6 +20166,10 @@ sha256=45994ebcdd4ed30b37c6fc0569ee69aee4f2ef9ed75857d0a3784ce3bfe92ffc
md5=2bceb4747e65394d34066f3db778fd0f
sha256=ea4a8fcab04cdb08e5bba9589c3ecc1370d4a68d32bb83bd54032c03cb450d6b
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.26.8.bz2]
+md5=e27c07bb82e02532e874758980141281
+sha256=611f7e118b5b09898493eab4c3071771742f2f3826b5733fa2f47284a38fbcf3
+
[http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.27-rc1.bz2]
md5=948b25bab0082d1db5bd8c9fac824891
sha256=2b35a35a0ab3b82b77bb2996782ef70ec15a13b9331b15bac814b891ae8f4867
@@ -20094,6 +20178,10 @@ sha256=2b35a35a0ab3b82b77bb2996782ef70ec15a13b9331b15bac814b891ae8f4867
md5=b87c962be07875486a6b57f81f35ca82
sha256=7fc735b85225850dae3c3acfe4bf0fe59f4c884d7c37f89395867dc73bf8f8af
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.37.bz2]
+md5=e75d87c11065955871b2e005d0242c99
+sha256=0e5e633e81f1dcc0dcd2372494fbd2d6a72b28bb177a3285c4766a9659b454bd
+
[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.27.8.bz2]
md5=ec23e3dce22b23ca681199fe515f10fb
sha256=31c35db09289c6e0436a258745d7180e0cd8f567949f27b3dab5a57a3664ed2f
@@ -20102,6 +20190,10 @@ sha256=31c35db09289c6e0436a258745d7180e0cd8f567949f27b3dab5a57a3664ed2f
md5=4550a418f0480b39e839735a7e0e8d82
sha256=fbb5ee21210a4e4e1fe25941c6e16ec0fe8634817e6c96145128f376ba0c640b
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.28.10.bz2]
+md5=64e6b226f1dc469755d82d0d8b677feb
+sha256=f4a2f97f59d272571a4977916392628642a8e4388f94417a723dc4bdb0e47dc2
+
[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.28.4.gz]
md5=464f663266e2c18371e213adab3c0077
sha256=4862e7bf53553f645d9d730d3657bbec79f7c03482a984259b38e10e25b54382
@@ -20114,6 +20206,10 @@ sha256=e5ad0ec9b0facaab5982a0d48534292e6d3a6a3e6dca60e798e8b8eeda2f8a8e
md5=26f67d99666834cc579094619821d3c8
sha256=035bbd4c1ac9c5b3a42e58777446e0370ca66d9258dc30a9f4c5ad48ebfacd65
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.29.6.bz2]
+md5=0317760b52c9ac7a11de997da19a366e
+sha256=0294d475cbbc6cf43db25e64b92616309086cad6be4ee463f7f4b1d16d285c27
+
[http://kernel.org/pub/linux/kernel/v2.6/testing/patch-2.6.30-rc1.bz2]
md5=05daeda25430fd13bbdb47b3481f7320
sha256=5ed217591fefb043f4deb7b66a9b6351195dfb9405c0d2f5ec0f4d43a30aa9b2
@@ -20150,6 +20246,10 @@ sha256=34586de4c7d1517842dfe32a8621f945cd6b8ee55096f8f053a66accd3d17a41
md5=24d60ad6645211e2c08dc1c1c578b249
sha256=ed167dcbdf52c2563a30e7c81a0f2b3d79eb04acc5728e6d484166a4fe8a39e4
+[http://kernel.org/pub/linux/kernel/v2.6/patch-2.6.31.4.bz2]
+md5=02078f4231baee4f0004212f2875df2b
+sha256=bc670682ed9b81d5d3859130c600601bd72053fd738b51b2daf8ddf3f4614a66
+
[http://www.muru.com/linux/omap/patches/patch-2.6.9-omap1.bz2]
md5=d6249654087f0bcafaa860ac573316a4
sha256=91806347cb386002a8bfd20ee66e536e4a7dfb01f207dd751341f2971090d9ac
@@ -20494,6 +20594,10 @@ sha256=45d491879791140dc1f20287e6489f32dc59ae37628038d991d9511abede3fc2
md5=fe922698df46b21d7e19f28ded4ca100
sha256=3438437c131c9847b34106225a728c11e522776ac454bb8740a9bc7aea409f22
+[http://cairographics.org/releases/pixman-0.16.2.tar.gz]
+md5=02bd3669f53c404c19980d5efb6f86fb
+sha256=05f78c2fd3a5f054c0d716e8ba1b67a0c04a7a7e642d6946828ec383b389d185
+
[http://xorg.freedesktop.org/releases/individual/lib/pixman-0.9.4.tar.bz2]
md5=c354ab5b0da10227226d3ef604254875
sha256=261d239e9e3070a0a81e5b3eab92e6236c6295979bdae0a1ded05cbef93f67aa
@@ -20650,6 +20754,10 @@ sha256=3238cc3553f721c110822bdc7fbfe7c57f33f59a05e406a19e956e71a1712aa8
md5=28f9dbdc74e9aadbf27aff16d06f4990
sha256=2ec40a8d9d9b80ebebea594c407c31962845376287c19e37345371236ed180d5
+[http://poppler.freedesktop.org/poppler-0.12.1.tar.gz]
+md5=3432046ee111efa5b85e5f2cdde8af5c
+sha256=6316a3618efd411e34a48a102a1949b1fdcc562f6e69c4d28f0669913451bbb6
+
[http://poppler.freedesktop.org/poppler-0.5.4.tar.gz]
md5=053fdfd70533ecce1a06353fa945f061
sha256=ca0f880a4ff07391e99b443f0e7c9860241df6a6aaa327b9d811b358d94a29c9
@@ -22750,6 +22858,10 @@ sha256=7e7fb53d6ff05993dcb8b871e3c3016bd4d161d72ded8f8760a4439e9d76aa3b
md5=adb048dc3988055533e1ea5d91d81f99
sha256=b00ca360e9b414744eff33ca4567f3eb1a28d32914e20f00b6672fbc141c9beb
+[http://samba.org/samba/ftp/stable/samba-3.3.9.tar.gz]
+md5=d99c3ccc3066d1c6a0dba4de02aad24b
+sha256=41a8919e3a32cf7523c49473edb478f3a7ec7d4ae4d125297a18d48f79e17f91
+
[ftp://ftp.sane-project.org/pub/sane/old-versions/sane-backends-1.0.15/sane-backends-1.0.15.tar.gz]
md5=3b804f35cdfbc5ad2d201ffe078bbac9
sha256=89106b5bc5a66ca0eaf4553371c89ac8542a757964d7a91c07b8fb77e040eebe
@@ -24814,6 +24926,10 @@ sha256=b0bc44f22ac05d490d607282f40986027a1cda2996adad56203dfed8faa815d9
md5=e85064c48fe28e8e87c1da04a06173df
sha256=776ddf74b657da5709d8f3d1c800b8203aa82a5f06f1c6d2d0f23a0a5f6685f7
+[http://ftp.gnome.org/pub/GNOME/sources/totem/2.28/totem-2.28.1.tar.bz2]
+md5=42f071fcf8ffc471beb3e1689297d647
+sha256=18121f17c37faaa9cc245d46293a24f58f2bba9dc9b84af5e1ffe0ac6e697b04
+
[http://ftp.gnome.org/pub/GNOME/sources/totem-pl-parser/2.23/totem-pl-parser-2.23.3.tar.bz2]
md5=c163dfd840c6a522e6cd852b379e89cd
sha256=5730611c42f8a8540343faa9512d9161073d2f882668c80dd0cf6a34c72daa75
@@ -24826,6 +24942,10 @@ sha256=3193c3446d211db2bd3c169c86f6d433666669336bd589a20c87f1483295cf2a
md5=daffda80cfead2a1473ca3ff71e1057b
sha256=3a6dd0382fe074f23a747b08423fccb23fb38c25b1feddacbd4875d8b8c83743
+[http://ftp.gnome.org/pub/GNOME/sources/totem-pl-parser/2.28/totem-pl-parser-2.28.1.tar.bz2]
+md5=bd4ef8ce1cd3c467cd6adc2835f027bc
+sha256=5f71c946cce245d53e8a13281c8dc1884fb6928f0a65d47a6aba7fb18a39acc2
+
[http://www.gnome.org/~jamiemcc/tracker/tracker-0.5.4.tar.gz]
md5=724208e1b2d235148499672b44181298
sha256=ad214a2692041f423d2150777c233b21cab2d108f849edc513192587ac63c9c2
@@ -25654,6 +25774,18 @@ sha256=4dfd1ff2793f71ab11d842ff4379a676a30af4287b7b6892ba9733bf7b691c10
md5=ca44d7e733e4f2058a1e5e8a0aa5d2e0
sha256=59295d46010c19f7b23f46e60522e6161ffc44685ef20fc04aca8b54d3fd7ef0
+[http://www.freesmartphone.org/sources/vala-0.7.7+fso1.tar.bz2]
+md5=870e79fceb3d8c2d9fa139df097ec66d
+sha256=147613e4c794b45d4c75d78d7aba7b688ad6c90ff6778475c836412ee7f4cbed
+
+[http://www.freesmartphone.org/sources/vala-0.7.7+fso5.tar.bz2]
+md5=e4c09df42b2c475dae15a791d867e26e
+sha256=16971189b3cb95648b9574eb7c4c7cc0dff9978458aff7f3f7c54ab823ada721
+
+[http://ftp.gnome.org/pub/GNOME/sources/vala/0.7/vala-0.7.7.tar.bz2]
+md5=7d11fcddb2bd30b9ecbdacfaa20f2769
+sha256=ebb1afbb0a61dd8f5f8ef13512e789697e98d5ad5f98739120f3b3cc02d46d8f
+
[http://www.valgrind.org/downloads/valgrind-3.2.1.tar.bz2]
md5=9407d33961186814cef0e6ecedfd6318
sha256=7f9a15d7be16ca03a0912191e8d55a486bf69690e11bb76ccece3eaff3730a33
@@ -26562,6 +26694,10 @@ sha256=75378ad3eacbe32c625de3b4af3e1f6fc9772ab45c1cd1393483d95ac4da3b22
md5=6873f49ea7f568743621ed1e05e52dab
sha256=169978c677db5c498f485e9896cd0ababae6b3a9d0bf640ffa719d5af2abca46
+[http://portland.freedesktop.org/download/xdg-utils-1.0.2.tgz]
+md5=348a5b91dc66426505022c74a64b2940
+sha256=21aeb7d16b2529b8d3975118f59eec09953e09f9a68d718159e98c90474b01ac
+
[http://xdiskusage.sourceforge.net/xdiskusage-1.48.tgz]
md5=a902aa9d73761ade98256c3cd5c1f533
sha256=7842aa42510bf52c367164d44a977915ad9f070864d5175157738f8d6894274b
@@ -28090,6 +28226,10 @@ sha256=256fd04cbd97b2b96e7ef808b6752561da855ded3835a1bb0d7acbe07758e924
md5=acae8edeb05a406f7f60bcbb218a8f1d
sha256=aaab4cbf19c73ded4785ba69cdd7ae23aaf103c7040559283f85fc1237dad6e6
+[http://xorg.freedesktop.org/releases/individual/proto/xf86miscproto-0.9.3.tar.bz2]
+md5=ca63bbb31cf5b7f37b2237e923ff257a
+sha256=45b8ec6a4a8ca21066dce117e09dcc88539862e616e60fb391de05b36f63b095
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/proto/xf86miscproto-X11R7.0-0.9.2.tar.bz2]
md5=1cc082d8a6da5177ede354bedbacd4ed
sha256=ed0190e3db4c07fe042cfc9d726e3806af83a2e6dfdbd832a7f8c225805bde5b
@@ -29022,6 +29162,10 @@ sha256=3f8cde77e8cbeb6d0a5f232b7a2ee51dd49b677916d52ab0986d320a5f9e8000
md5=9c30b8e1709d5367beb7706146640c07
sha256=c24d08939250f10238fd1b984707bfa0901ba9c55fa36b67d91eb12b500500aa
+[http://xorg.freedesktop.org/releases/individual/app/xrdb-1.0.6.tar.bz2]
+md5=8dd881cd5a7dcb6e456549817f0fb475
+sha256=8d062a3764665fcf22b14df4a5aca6af1e6d7d613296875b31b68e74ef66fc99
+
[http://xorg.freedesktop.org/releases/X11R7.0/src/app/xrdb-X11R7.0-1.0.1.tar.bz2]
md5=a3c1fd6f5391de7f810239a912d39fa5
sha256=adf3f97fcb0d768e19058e94dd4aaec70ea61afa8077f6c6e99aa70bc8564e14
diff --git a/conf/distro/include/angstrom-2008-preferred-versions.inc b/conf/distro/include/angstrom-2008-preferred-versions.inc
index bba14f85e7..36c556a679 100644
--- a/conf/distro/include/angstrom-2008-preferred-versions.inc
+++ b/conf/distro/include/angstrom-2008-preferred-versions.inc
@@ -2,7 +2,7 @@ PREFERRED_VERSION_autoconf = "2.63"
PREFERRED_VERSION_autoconf-native = "2.63"
PREFERRED_VERSION_automake-native = "1.10.2"
PREFERRED_VERSION_busybox = "1.13.2"
-PREFERRED_VERSION_cairo = "1.8.0"
+PREFERRED_VERSION_cairo = "1.8.8"
PREFERRED_VERSION_dbus = "1.2.3"
PREFERRED_VERSION_dropbear = "0.51"
PREFERRED_VERSION_fontconfig = "2.6.0"
diff --git a/conf/distro/include/angstrom-eglibc.inc b/conf/distro/include/angstrom-eglibc.inc
index 2a1b7b059c..e85b0b8132 100644
--- a/conf/distro/include/angstrom-eglibc.inc
+++ b/conf/distro/include/angstrom-eglibc.inc
@@ -1,6 +1,8 @@
# eglibc:
require conf/distro/include/eglibc.inc
+ANGSTROM_BLACKLIST_pn-libiconv = "the glibc builtin iconv replacement is used"
+
TARGET_OS = "linux"
TARGET_OS .= "${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
diff --git a/conf/distro/include/angstrom-glibc.inc b/conf/distro/include/angstrom-glibc.inc
index 4488becd92..183f0c1d18 100644
--- a/conf/distro/include/angstrom-glibc.inc
+++ b/conf/distro/include/angstrom-glibc.inc
@@ -1,6 +1,8 @@
# glibc:
require conf/distro/include/glibc-${TOOLCHAIN_TYPE}.inc
+ANGSTROM_BLACKLIST_pn-libiconv = "the glibc builtin iconv replacement is used"
+
TARGET_OS = "linux"
TARGET_OS .= "${@['','-gnueabi'][bb.data.getVar('TARGET_ARCH',d,1) in ['arm', 'armeb'] and bb.data.getVar('MACHINE',d) not in ['collie','h3600', 'h3800', 'simpad', 'htcwallaby']]}"
diff --git a/conf/distro/include/fso-autorev.inc b/conf/distro/include/fso-autorev.inc
index 607f3cd06d..ba8cdac1f5 100644
--- a/conf/distro/include/fso-autorev.inc
+++ b/conf/distro/include/fso-autorev.inc
@@ -23,9 +23,11 @@ SRCREV_pn-libascenario = "${AUTOREV}"
SRCREV_pn-libeflvala = "${AUTOREV}"
SRCREV_pn-libfsobasics = "${AUTOREV}"
SRCREV_pn-libfsoframework = "${AUTOREV}"
+SRCREV_pn-libfsoresource = "${AUTOREV}"
SRCREV_pn-libfsotransport = "${AUTOREV}"
SRCREV_pn-libframeworkd-glib = "${AUTOREV}"
SRCREV_pn-libfso-glib = "${AUTOREV}"
+SRCREV_pn-libgee-native = "${AUTOREV}"
SRCREV_pn-libgee = "${AUTOREV}"
SRCREV_pn-libgsm0710 = "${AUTOREV}"
SRCREV_pn-libgsm0710mux = "${AUTOREV}"
diff --git a/conf/distro/include/kaeilos-2009-preferred-versions.inc b/conf/distro/include/kaeilos-2009-preferred-versions.inc
index ba8d587241..34f0386772 100644
--- a/conf/distro/include/kaeilos-2009-preferred-versions.inc
+++ b/conf/distro/include/kaeilos-2009-preferred-versions.inc
@@ -4,7 +4,7 @@
#@NAME: KaeilOS(R) - http://www.kaeilos.com
#@DESCRIPTION: KaeilOS Linux Distribution preferred version
#@MAINTAINER: Marco Cavallini <m.cavallini@koansoftware.com>
-#@VERSION: 01-07-2009
+#@VERSION: 21-10-2009
#
# KaeilOS is a registered trade mark of KOAN - Bergamo - Italia
# Product website : http://www.KaeilOS.com
@@ -15,31 +15,32 @@ PREFERRED_VERSION_autoconf-native = "2.63"
PREFERRED_VERSION_automake-native = "1.10.2"
PREFERRED_VERSION_busybox = "1.13.2"
PREFERRED_VERSION_cairo = "1.8.0"
-PREFERRED_VERSION_dbus = "1.2.1"
+PREFERRED_VERSION_dbus = "1.2.3"
PREFERRED_VERSION_dropbear = "0.51"
PREFERRED_VERSION_fontconfig = "2.6.0"
-PREFERRED_VERSION_glib-2.0 = "2.20.0"
-PREFERRED_VERSION_glib-2.0-native = "2.18.0"
-PREFERRED_VERSION_glibmm = "2.18.0"
-PREFERRED_VERSION_glproto = "1.4.9"
+PREFERRED_VERSION_glib-2.0 = "2.22.1"
+PREFERRED_VERSION_glib-2.0-native = "2.22.1"
+PREFERRED_VERSION_glibmm = "2.22.1"
+PREFERRED_VERSION_glproto = "1.4.9"
PREFERRED_VERSION_gst-pulse = "0.9.7"
-PREFERRED_VERSION_gtk+ = "2.16.0"
-PREFERRED_VERSION_gtkmm = "2.14.1"
-PREFERRED_VERSION_hal = "0.5.12"
+PREFERRED_VERSION_gtk+ = "2.18.0"
+PREFERRED_VERSION_gtkmm = "2.18.1"
+PREFERRED_VERSION_hal = "0.5.13"
PREFERRED_VERSION_libgemwidget = "1.0"
PREFERRED_VERSION_libgpephone = "0.4"
PREFERRED_VERSION_libsdl-x11 = "1.2.11"
-PREFERRED_VERSION_libtool = "2.2.4"
-PREFERRED_VERSION_libtool-native = "2.2.4"
-PREFERRED_VERSION_libtool-cross = "2.2.4"
-PREFERRED_VERSION_libtool-sdk = "2.2.4"
+PREFERRED_VERSION_libtool = "2.2.6a"
+PREFERRED_VERSION_libtool-native = "2.2.6a"
+PREFERRED_VERSION_libtool-cross = "2.2.6a"
+PREFERRED_VERSION_libtool-sdk = "2.2.6a"
PREFERRED_VERSION_libx11 = "1.2"
-PREFERRED_VERSION_mesa = "7.2"
-PREFERRED_VERSION_pango = "1.24.2"
+PREFERRED_VERSION_mesa = "7.4"
+PREFERRED_VERSION_pango = "1.24.4"
PREFERRED_VERSION_pixman = "0.13.2"
PREFERRED_VERSION_pkgconfig = "0.23"
PREFERRED_VERSION_pkgconfig-native = "0.23"
PREFERRED_VERSION_pulseaudio = "0.9.15"
+PREFERRED_VERSION_python = "2.6.1"
PREFERRED_VERSION_samba = "3.3.0"
PREFERRED_VERSION_tiff = "3.8.2+4.0.0beta2"
@@ -49,7 +50,7 @@ UDEV_GE_141 = "1"
PREFERRED_VERSION_usbutils = "0.82"
PREFERRED_VERSION_util-macros-native = "1.2.1"
PREFERRED_VERSION_util-macros = "1.2.1"
-PREFERRED_VERSION_wpa-supplicant = "0.6.7"
+PREFERRED_VERSION_wpa-supplicant = "0.6.9"
PREFERRED_VERSION_xserver-kdrive = "1.4.0.90"
PREFERRED_VERSION_xserver-xorg = "1.6.1"
diff --git a/conf/distro/include/sane-srcrevs-fso.inc b/conf/distro/include/sane-srcrevs-fso.inc
index aef87a62a5..b86963ff29 100644
--- a/conf/distro/include/sane-srcrevs-fso.inc
+++ b/conf/distro/include/sane-srcrevs-fso.inc
@@ -1,7 +1,7 @@
# To be included from sane-srcrevs.inc
# FSO Projects -- Cornucopia
-FSO_CORNUCOPIA_SRCREV ?= "3c3e1b862cdde806cef8f502dfe79f1d48f1c5d7"
+FSO_CORNUCOPIA_SRCREV ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba"
SRCREV_pn-fsodeviced ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-fsogsmd ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-fsogpsd ?= "${FSO_CORNUCOPIA_SRCREV}"
@@ -10,7 +10,9 @@ SRCREV_pn-fsotimed ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-fsousaged ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-libfsoframework ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-libfsotransport ?= "${FSO_CORNUCOPIA_SRCREV}"
+SRCREV_pn-libfsoresource ?= "${FSO_CORNUCOPIA_SRCREV}"
SRCREV_pn-misc-vapi ?= "${FSO_CORNUCOPIA_SRCREV}"
+
# FSO Projects -- Misc
SRCREV_pn-dbus-hlid ?= "39e804f28808247df2573788cb99897d4d765e69"
SRCREV_pn-frameworkd ?= "a2dfde0fb46a745f5c07e6a1ab44e4b95b7dde80"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
index 941d265287..1d84e96ce4 100644
--- a/conf/distro/include/sane-srcrevs.inc
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -84,8 +84,9 @@ SRCREV_pn-libexalt ?= "78"
SRCREV_pn-libexalt-dbus ?= "76"
SRCREV_pn-libfakekey ?= "1455"
SRCREV_pn-libgdbus ?= "aeab6e3c0185b271ca343b439470491b99cc587f"
+SRCREV_pn-libgee ?= "0bddeeefb3bd5b003d77301705dbad181cddcaf6"
+SRCREV_pn-libgee-native ?= "0bddeeefb3bd5b003d77301705dbad181cddcaf6"
SRCREV_pn-libgsmd ?= "4505"
-SRCREV_pn-libgee ?= "ea130c0837eefe404b53240f8c2ed642ae98a677"
SRCREV_pn-libiac ?= "1590"
SRCREV_pn-libjana = "749"
SRCREV_pn-libmokogsmd2 ?= "4334"
@@ -125,7 +126,6 @@ SRCREV_pn-moblin-proto ?= "8f2cb524fe06555182c25b4ba3202d7b368ac0ce"
SRCREV_pn-moko-gtk-engine ?= "4734"
SRCREV_pn-mokoko ?= "127"
SRCREV_pn-mpd-alsa ?= "6952"
-SRCREV_pn-mplayer ?= "29716"
SRCREV_pn-mplayer-maemo ?= "342"
SRCREV_pn-multicat ?= "f894801916cc4d0e912e4553490dc215276c52a9"
SRCREV_pn-multitap-pad ?= "373"
@@ -197,7 +197,7 @@ SRCREV_pn-packagekit ?= "96823118e98515dd41748e8c7bdb9cf7b1d4a95f"
SRCREV_pn-paroli ?= "9279b50ed72a94100d7f0f49090043134302f2eb"
SRCREV_pn-portaudio-v19 ?= "1387"
SRCREV_pn-psplash ?= "249"
-SRCREV_pn-pty-forward-native ?= "4907"
+SRCREV_pn-pty-forward-native ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba"
SRCREV_pn-pyefl-sudoku ?= "49"
SRCREV_pn-pygsm ?= "976477f6b403f422b4ea730f71ebf409f6671141"
SRCREV_pn-python-coherence ?= "1161"
@@ -216,7 +216,7 @@ SRCREV_pn-remoko ?= "121"
SRCREV_pn-remoko-server ?= "121"
SRCREV_pn-s3c24xx-gpio ?= "4949"
SRCREV_pn-s3c64xx-gpio ?= "4949"
-SRCREV_pn-serial-forward ?= "4907"
+SRCREV_pn-serial-forward ?= "a41cae9df1af4fc710c701ac01016d3668dd5fba"
SRCREV_pn-settings-daemon ?= "2006"
SRCREV_pn-sjf2410-linux-native ?= "4268"
SRCREV_pn-socketcan-modules ?= "917"
diff --git a/conf/distro/kaeilos.conf b/conf/distro/kaeilos.conf
index 5bec2d4d48..421483ff6f 100644
--- a/conf/distro/kaeilos.conf
+++ b/conf/distro/kaeilos.conf
@@ -3,7 +3,7 @@
#@NAME: KaeilOS(R) - http://www.kaeilos.com
#@DESCRIPTION: KaeilOS Linux Distribution for Kernel 2.6 based devices
#@MAINTAINER: Marco Cavallini <m.cavallini@koansoftware.com>
-#@VERSION: 01-07-2009
+#@VERSION: 21-10-2009
#
# KaeilOS is a registered trade mark of KOAN - Bergamo - Italia
# Product website : http://www.KaeilOS.com
@@ -15,7 +15,9 @@
#DISTRO_VERSION = "2009.1"
DISTRO_VERSION = "2009.1-test-${DATE}"
DISTRO_REVISION = "1"
-DISTRO_PR = ".3"
+DISTRO_PR = ".4"
+
+OLDEST_KERNEL ?= "2.6.28"
#build staging from packages
INHERIT += "packaged-staging"
@@ -25,16 +27,16 @@ require conf/distro/include/sane-srcrevs.inc
require conf/distro/include/kaeilos-2009-preferred-versions.inc
require conf/distro/include/preferred-opie-versions-1.2.4.inc
-PREFERRED_VERSION_xserver-kdrive = "1.3.0.0"
-PREFERRED_VERSION_busybox = "1.13.2"
-IMAGE_DEV_MANAGER = "busybox-mdev"
-
#Images built can have to modes:
# 'debug': empty rootpassword, strace included
# 'release' no root password, no strace and gdb by default
DISTRO_TYPE ?= "debug"
#DISTRO_TYPE = "release"
+# Set the toolchain type (internal, external) and brand (generic, csl etc.)
+TOOLCHAIN_TYPE ?= "internal"
+TOOLCHAIN_BRAND ?= ""
+
# Ship just basic locale by default. Locales are big (~1Mb uncompr.), so
# shipping some adhoc subset will be still useless and size burden for
# users of all other languages/countries. Instead, worth to make it easy
@@ -49,7 +51,7 @@ IMAGE_LINGUAS = '${@base_less_or_equal("ROOT_FLASH_SIZE", "16", "", "en-us", d)}
EXTRA_IMAGECMD_ext2 = "-i 4096"
# set feed path variables
-FEED_BASEPATH = "feeds/2008/${ANGSTROM_PKG_FORMAT}/${LIBC}/"
+FEED_BASEPATH = "feeds/unstable/${ANGSTROM_PKG_FORMAT}/${LIBC}/"
#The angstrom-mirrors.bbclass should have everything, but we can use this as a fallback
@@ -75,6 +77,10 @@ PREFERRED_VERSION_linux-libc-headers = "2.6.23"
#Prefer glibc 2.6 and uclibc 0.9.30, these have had the most testing.
PREFERRED_VERSION_glibc ?= "2.6.1"
PREFERRED_VERSION_glibc-initial ?= "2.6.1"
+# Maybe one day I'll upgrade this too
+#PREFERRED_VERSION_glibc ?= "2.9"
+#PREFERRED_VERSION_glibc-initial ?= "2.9"
+
PREFERRED_VERSION_uclibc ?= "0.9.30"
PREFERRED_VERSION_uclibc-initial ?= "0.9.30"
@@ -88,10 +94,10 @@ PREFERRED_VERSION_uclibc-initial ?= "0.9.30"
#PREFERRED_PROVIDER_virtual/psplash ?= "psplash-kaeilos"
PREFERRED_PROVIDER_avahi = "avahi"
+PREFERRED_PROVIDER_virtual/libusb0 ?= "libusb-compat"
+PREFERRED_PROVIDER_virtual/gail ?= "gtk+"
-#Small machines prefer kdrive, but we might ship full Xorg in other images
-PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
-PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
+PREFERRED_PROVIDER_libfribidi = "fribidi"
#powerpc needs additional patches to gcc
ANGSTROM_GCC_VERSION_ppc405 ?= "4.1.1"
@@ -112,10 +118,14 @@ ANGSTROM_GCC_VERSION_486sx = "4.3.2"
ANGSTROM_GCC_VERSION_avr32 ?= "4.2.2"
#Everybody else can just use this:
-ANGSTROM_GCC_VERSION ?= "4.2.4"
-PREFERRED_VERSION_binutils ?= "2.18.50.0.7"
-PREFERRED_VERSION_binutils-cross ?= "2.18.50.0.7"
-PREFERRED_VERSION_binutils-cross-sdk ?= "2.18.50.0.7"
+ANGSTROM_GCC_VERSION ?= "4.3.3"
+
+ANGSTROM_BINUTILS_VERSION ?= "2.18"
+ANGSTROM_BINUTILS_VERSION_armv7a ?= "2.18.50.0.7"
+
+PREFERRED_VERSION_binutils ?= "${ANGSTROM_BINUTILS_VERSION}"
+PREFERRED_VERSION_binutils-cross ?= "${ANGSTROM_BINUTILS_VERSION}"
+PREFERRED_VERSION_binutils-cross-sdk ?= "${ANGSTROM_BINUTILS_VERSION}"
PREFERRED_VERSION_gcc ?= "${ANGSTROM_GCC_VERSION}"
PREFERRED_VERSION_gcc-cross ?= "${ANGSTROM_GCC_VERSION}"
@@ -124,24 +134,17 @@ PREFERRED_VERSION_gcc-cross-initial ?= "${ANGSTROM_GCC_VERSION}"
PREFERRED_VERSION_gcc-cross-intermediate ?= "${ANGSTROM_GCC_VERSION}"
#Loads preferred versions from files, these have weak assigments (?=), so put them at the bottom
-require conf/distro/include/preferred-e-versions.inc
-require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc
-require conf/distro/include/preferred-xorg-versions-X11R7.4.inc
+#require conf/distro/include/preferred-e-versions.inc
+#require conf/distro/include/preferred-xorg-versions-X11R7.4-updates.inc
+#require conf/distro/include/preferred-xorg-versions-X11R7.4.inc
#avr32 only has patches for binutils 2.17 in OE
PREFERRED_VERSION_binutils_avr32 = "2.17"
PREFERRED_VERSION_binutils-cross_avr32 = "2.17"
PREFERRED_VERSION_binutils-cross-sdk_avr32 = "2.17"
-#Other packages version
-PREFERRED_VERSION_classpath ?= "0.97.2"
-
-# Virtuals:
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}binutils = "binutils-cross"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-initial = "gcc-cross-initial"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc-intermediate = "gcc-cross-intermediate"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc = "gcc-cross"
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}g++ = "gcc-cross"
+# Toolchain virtuals:
+require conf/distro/include/toolchain-${TOOLCHAIN_TYPE}.inc
# hostap stuff, we prefer the in-kernel modules, but those don't work for all machines
PREFERRED_PROVIDER_hostap-conf ?= "hostap-conf"
@@ -152,13 +155,12 @@ PREFERRED_PROVIDER_virtual/db ?= "db"
PREFERRED_PROVIDER_virtual/db-native ?= "db-native"
PREFERRED_PROVIDER_virtual/libsdl ?= "libsdl-x11"
PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
-PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
# Others:
-PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
+#PREFERRED_PROVIDER_linux-libc-headers = "linux-libc-headers"
PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
PREFERRED_PROVIDER_esound ?= "pulseaudio"
-PREFERRED_PROVIDER_gconf ?= "gconf-dbus"
+PREFERRED_PROVIDER_gconf ?= "gconf"
PREFERRED_PROVIDER_gnome-vfs ?= "gnome-vfs"
PREFERRED_PROVIDER_gnome-vfs-plugin-file ?= "gnome-vfs"
PREFERRED_PROVIDER_tslib ?= "tslib"
@@ -166,9 +168,15 @@ PREFERRED_PROVIDER_tslib-conf ?= "tslib"
PREFERRED_PROVIDER_libgpewidget ?= "libgpewidget"
PREFERRED_PROVIDER_ntp ?= "ntp"
PREFERRED_PROVIDER_hotplug = "udev"
+PREFERRED_PROVIDER_opkg ?= "opkg-nogpg"
PREFERRED_PROVIDER_libxss = "libxss"
PREFERRED_PROVIDER_bluez-utils-dbus = "bluez-utils"
PREFERRED_PROVIDER_bluez-libs = "bluez4"
+PREFERRED_PROVIDER_bluez-utils = "bluez4"
+PREFERRED_PROVIDER_util-linux = "util-linux-ng"
+
+ANGSTROM_BLACKLIST_pn-bluez-libs = "bluez-libs 3.x has been replaced by bluez4"
+ANGSTROM_BLACKLIST_pn-bluez-utils = "bluez-utils 3.x has been replaced by bluez4"
# we don't ship gtk-directfb by default
PREFERRED_PROVIDER_gtk+ ?= "gtk+"
@@ -186,6 +194,9 @@ PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm ?= "gtk+"
PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+"
+# QT stuff:
+# There are several flavours of qt4x11 in OE, so lets pick one that is buildable for everyone
+PREFERRED_PROVIDER_qt4x11 ?= "qt4-x11-free"
#Silence a warning during parsing
PREFERRED_PROVIDER_task-bootstrap = "task-bootstrap"
@@ -200,6 +211,11 @@ require conf/distro/include/kaeilos.inc
# We also take this opportunity to inject angstrom-version and the feed configs into the rootfs
IPKG_VARIANT = "opkg-nogpg angstrom-version ${ANGSTROM_FEED_CONFIGS}"
+# Select xserver-xorg as default, since kdrive has been EOL'ed
+XSERVER ?= "xserver-xorg xf86-input-evdev xf86-input-keyboard xf86-input-mouse xf86-video-fbdev"
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_xserver ?= "xserver-xorg"
+
# do some task-base stuff here
# Prefer bluez4, it's needed for things like connman. Bluez4 is also largely backward compatible with
@@ -239,6 +255,7 @@ DISTRO_EXTRA_RRECOMMENDS += " \
kernel-module-ext3 \
kernel-module-af-packet \
openssh-sftp-server \
+ ${DEBUG_APPS} \
"
SPLASH ?= "psplash"
diff --git a/conf/machine/igep0020.conf b/conf/machine/igep0020.conf
new file mode 100644
index 0000000000..512a977748
--- /dev/null
+++ b/conf/machine/igep0020.conf
@@ -0,0 +1,43 @@
+#@TYPE: Machine
+#@NAME: IGEP0020 machine
+#@DESCRIPTION: Machine configuration for the http://www.myigep.com/ IGEP v2.x boards
+TARGET_ARCH = "arm"
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
+XSERVER = "xserver-xorg \
+ xf86-input-evdev \
+ xf86-input-mouse \
+ xf86-video-omapfb \
+ xf86-input-keyboard"
+
+# Only has DVI connector for external screen
+GUI_MACHINE_CLASS = "bigscreen"
+
+require conf/machine/include/omap3.inc
+
+PREFERRED_PROVIDER_virtual/kernel = "linux-igep2"
+
+KERNEL_IMAGETYPE = "uImage"
+
+IMAGE_FSTYPES += "tar.bz2 ubi"
+
+# Guesswork
+SERIAL_CONSOLE = "115200 ttyS2"
+
+# do ubiattach /dev/ubi_ctrl -m 4
+# From dmesg:
+# UBI: smallest flash I/O unit: 2048
+# UBI: logical eraseblock size: 129024 bytes
+# from ubiattach stdout:
+# UBI device number 0, total 1996 LEBs
+MKUBIFS_ARGS = "-m 2048 -e 129024 -c 1996"
+
+# do ubiattach /dev/ubi_ctrl -m 4
+# from dmesg:
+# UBI: smallest flash I/O unit: 2048
+# UBI: physical eraseblock size: 131072 bytes (128 KiB)
+# UBI: sub-page size: 512
+UBINIZE_ARGS = "-m 2048 -p 128KiB -s 512"
+
+# MACHINE_EXTRA_RRECOMMENDS = " omap3-sgx-modules "
+MACHINE_FEATURES = "kernel26 screen apm usbgadget usbhost vfat alsa"
diff --git a/conf/machine/include/omap3.inc b/conf/machine/include/omap3.inc
index d52bc99a7d..675249a064 100644
--- a/conf/machine/include/omap3.inc
+++ b/conf/machine/include/omap3.inc
@@ -1,7 +1,7 @@
require conf/machine/include/tune-cortexa8.inc
PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
# Increase this everytime you change something in the kernel
-MACHINE_KERNEL_PR = "r46"
+MACHINE_KERNEL_PR = "r47"
KERNEL_IMAGETYPE = "uImage"
diff --git a/contrib/angstrom/sort.sh b/contrib/angstrom/sort.sh
index 9f674ec6cf..c8b1d764aa 100755
--- a/contrib/angstrom/sort.sh
+++ b/contrib/angstrom/sort.sh
@@ -58,7 +58,7 @@ case "$arch" in
"armv7")
machines="" ;;
"armv7a")
- machines="omap3-touchbook beagleboard omap3evm omap3517-evm omap3-pandora omapzoom omapzoom2 overo" ;;
+ machines="igep0020 omap3-touchbook beagleboard omap3evm omap3517-evm omap3-pandora omapzoom omapzoom2 overo" ;;
"avr32")
machines="atngw100 at32stk1000" ;;
"bfin")
diff --git a/files/device_table-jlime.txt b/files/device_table-jlime.txt
index d8fbc8e26a..314ad62612 100644
--- a/files/device_table-jlime.txt
+++ b/files/device_table-jlime.txt
@@ -4,7 +4,7 @@
/dev/apm_bios c 660 0 46 10 134 - - -
/dev/fb0 c 600 0 0 29 0 - - -
/dev/hda b 660 0 6 3 0 - - -
-/dev/hda b 660 0 6 3 1 1 1 20
+/dev/hda b 660 0 6 3 1 1 1 19
/dev/kmem c 640 0 15 1 2 - - -
/dev/mem c 640 0 15 1 1 - - -
/dev/null c 666 0 0 1 3 - - -
diff --git a/files/device_table-minimal-add-md.txt b/files/device_table-minimal-add-md.txt
index a78ca76605..b30fdc3f5e 100644
--- a/files/device_table-minimal-add-md.txt
+++ b/files/device_table-minimal-add-md.txt
@@ -13,7 +13,7 @@
/dev/apm_bios c 660 0 46 10 134 - - -
/dev/fb0 c 600 0 0 29 0 - - -
/dev/hda b 660 0 6 3 0 - - -
-/dev/hda b 660 0 6 3 1 1 1 5
+/dev/hda b 660 0 6 3 1 1 1 4
/dev/kmem c 640 0 15 1 2 - - -
/dev/mem c 640 0 15 1 1 - - -
/dev/null c 666 0 0 1 3 - - -
diff --git a/files/device_table-minimal.txt b/files/device_table-minimal.txt
index 891feb0ff2..a474377e99 100644
--- a/files/device_table-minimal.txt
+++ b/files/device_table-minimal.txt
@@ -13,7 +13,7 @@
/dev/apm_bios c 660 0 46 10 134 - - -
/dev/fb0 c 600 0 0 29 0 - - -
/dev/hda b 660 0 6 3 0 - - -
-/dev/hda b 660 0 6 3 1 1 1 20
+/dev/hda b 660 0 6 3 1 1 1 19
/dev/kmem c 640 0 15 1 2 - - -
/dev/mem c 640 0 15 1 1 - - -
/dev/null c 666 0 0 1 3 - - -
@@ -33,10 +33,10 @@
/dev/event c 660 0 0 13 64 0 1 8
/dev/mmcblk0 b 660 0 6 179 0 - - -
-/dev/mmcblk0p b 660 0 6 179 1 1 1 8
+/dev/mmcblk0p b 660 0 6 179 1 1 1 7
# for older kernels before 2.6.22
# mmc numbers are assigned dynamicly so if you have other dynamic assigned block devices it may be wrong
#
#/dev/mmcblk0 b 660 0 6 254 0 - - -
-#/dev/mmcblk0p b 660 0 6 254 1 1 1 8
+#/dev/mmcblk0p b 660 0 6 254 1 1 1 7
diff --git a/files/device_table-slugos.txt b/files/device_table-slugos.txt
index 17e8064b97..94b3c499f7 100644
--- a/files/device_table-slugos.txt
+++ b/files/device_table-slugos.txt
@@ -20,19 +20,19 @@
/dev/ram b 644 0 0 1 0 0 1 4
/dev/random c 644 0 0 1 8 - - -
/dev/sda b 664 0 0 8 0 - - -
-/dev/sda b 664 0 0 8 1 1 1 10
+/dev/sda b 664 0 0 8 1 1 1 9
/dev/sdb b 664 0 0 8 16 - - -
-/dev/sdb b 664 0 0 8 17 1 1 5
+/dev/sdb b 664 0 0 8 17 1 1 4
/dev/sdc b 664 0 0 8 32 - - -
-/dev/sdc b 664 0 0 8 33 1 1 5
+/dev/sdc b 664 0 0 8 33 1 1 4
/dev/sdd b 664 0 0 8 48 - - -
-/dev/sdd b 664 0 0 8 49 1 1 5
+/dev/sdd b 664 0 0 8 49 1 1 4
/dev/sde b 664 0 0 8 64 - - -
-/dev/sde b 664 0 0 8 65 1 1 5
+/dev/sde b 664 0 0 8 65 1 1 4
/dev/sdf b 664 0 0 8 80 - - -
-/dev/sdf b 664 0 0 8 81 1 1 5
+/dev/sdf b 664 0 0 8 81 1 1 4
/dev/sdg b 664 0 0 8 96 - - -
-/dev/sdg b 664 0 0 8 97 1 1 5
+/dev/sdg b 664 0 0 8 97 1 1 4
/dev/tty c 666 0 0 5 0 - - -
/dev/tty c 644 0 0 4 0 0 1 10
/dev/ttyS c 644 0 0 4 64 0 1 2
diff --git a/files/device_table-unslung.txt b/files/device_table-unslung.txt
index cd5d5f7bc5..64a1dc1054 100644
--- a/files/device_table-unslung.txt
+++ b/files/device_table-unslung.txt
@@ -20,7 +20,7 @@
/dev/mem c 640 0 0 1 1 - - -
/dev/mtd c 664 0 0 90 0 0 2 8
/dev/mtdblock b 644 0 0 31 0 0 1 8
-/dev/mtdr c 664 0 0 90 0 1 2 8
+/dev/mtdr c 664 0 0 90 0 1 2 7
/dev/null c 666 0 0 1 3 - - -
/dev/pbuttons c 664 0 0 60 0 - - -
/dev/ppp c 644 0 0 108 0 - - -
@@ -31,15 +31,15 @@
/dev/rtc c 644 0 0 10 135 - - -
/dev/scd b 664 0 0 11 0 0 1 4
/dev/sda b 664 0 0 8 0 - - -
-/dev/sda b 664 0 0 8 1 1 1 16
+/dev/sda b 664 0 0 8 1 1 1 15
/dev/sdb b 664 0 0 8 16 - - -
-/dev/sdb b 664 0 0 8 17 1 1 16
+/dev/sdb b 664 0 0 8 17 1 1 15
/dev/sdc b 664 0 0 8 32 - - -
-/dev/sdc b 664 0 0 8 33 1 1 16
+/dev/sdc b 664 0 0 8 33 1 1 15
/dev/sdd b 664 0 0 8 48 - - -
-/dev/sdd b 664 0 0 8 49 1 1 16
+/dev/sdd b 664 0 0 8 49 1 1 15
/dev/sde b 664 0 0 8 64 - - -
-/dev/sde b 664 0 0 8 65 1 1 16
+/dev/sde b 664 0 0 8 65 1 1 15
/dev/st c 664 0 0 9 0 0 1 4
/dev/tty c 666 0 0 5 0 - - -
/dev/tty c 644 0 0 4 0 0 1 10
diff --git a/files/device_table_add-scsi.txt b/files/device_table_add-scsi.txt
index 74d7725185..b672cbb015 100644
--- a/files/device_table_add-scsi.txt
+++ b/files/device_table_add-scsi.txt
@@ -1,2 +1,2 @@
/dev/sda b 660 0 6 8 0 - - -
-/dev/sda b 660 0 6 8 1 1 1 16
+/dev/sda b 660 0 6 8 1 1 1 15
diff --git a/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch b/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch
new file mode 100644
index 0000000000..f0f54b2bf8
--- /dev/null
+++ b/recipes/binutils/binutils-2.20/binutils-arm-non-empty-know.patch
@@ -0,0 +1,18 @@
+This is backported partially from 2.20 branch
+
+http://sourceware.org/ml/binutils-cvs/2009-10/msg00173.html
+
+-Khem
+Index: binutils-2.20/gas/as.h
+===================================================================
+--- binutils-2.20.orig/gas/as.h 2009-10-22 00:27:08.700469349 -0700
++++ binutils-2.20/gas/as.h 2009-10-22 00:28:04.068416318 -0700
+@@ -238,7 +238,7 @@ typedef addressT valueT;
+ #define know(p) gas_assert(p) /* Verify our assumptions! */
+ #endif /* not yet defined */
+ #else
+-#define know(p) /* know() checks are no-op.ed */
++#define know(p) do {} while (0) /* know() checks are no-op.ed */
+ #endif
+
+ /* input_scrub.c */
diff --git a/recipes/binutils/binutils-cross-sdk.inc b/recipes/binutils/binutils-cross-sdk.inc
index 4d5a6df493..da00965241 100644
--- a/recipes/binutils/binutils-cross-sdk.inc
+++ b/recipes/binutils/binutils-cross-sdk.inc
@@ -6,6 +6,9 @@ EXTRA_OECONF = "--with-sysroot=${prefix}/${TARGET_SYS} \
--enable-install-libbfd \
--disable-werror"
+# In case we end up with a .debug dir
+FILES_${PN}-dbg += "${prefix}/${HOST_PREFIX}${BUILD_SYS}/${TARGET_SYS}/lib/.debug/*"
+
do_stage() {
:
}
diff --git a/recipes/binutils/binutils_2.20.bb b/recipes/binutils/binutils_2.20.bb
index fd539fe59e..62f40f231a 100644
--- a/recipes/binutils/binutils_2.20.bb
+++ b/recipes/binutils/binutils_2.20.bb
@@ -1,6 +1,9 @@
require binutils.inc
LICENSE = "GPLv3"
+INC_PR = "r1"
+PR = "${INC_PR}.1"
+
SRC_URI = "\
${GNU_MIRROR}/binutils/binutils-${PV}.tar.bz2 \
file://binutils-uclibc-100-uclibc-conf.patch;patch=1 \
@@ -11,6 +14,7 @@ SRC_URI = "\
file://binutils-uclibc-gas-needs-libm.patch;patch=1 \
file://binutils-arm-pr7093.patch;patch=1 \
file://ld-stub-crash.patch;patch=1;pnum=0 \
+ file://binutils-arm-non-empty-know.patch;patch=1 \
"
# powerpc patches
diff --git a/recipes/cairo/cairo_1.8.8.bb b/recipes/cairo/cairo_1.8.8.bb
new file mode 100644
index 0000000000..b2d8e655f3
--- /dev/null
+++ b/recipes/cairo/cairo_1.8.8.bb
@@ -0,0 +1,6 @@
+require cairo.inc
+
+SRC_URI = "http://cairographics.org/releases/cairo-${PV}.tar.gz \
+ "
+
+
diff --git a/recipes/fastjar/fastjar-native.inc b/recipes/fastjar/fastjar-native.inc
index fa7c7ca646..df4d260713 100644
--- a/recipes/fastjar/fastjar-native.inc
+++ b/recipes/fastjar/fastjar-native.inc
@@ -4,7 +4,7 @@ SECTION = "devel"
PRIORITY = "optional"
LICENSE = "GPL"
-INC_PR = "r1"
+INC_PR = "r2"
DEPENDS = "zlib-native"
@@ -14,15 +14,15 @@ S = "${WORKDIR}/fastjar-${PV}"
inherit autotools native
-EXTRA_OECONF = "--with-system-zlib --with-fastjar"
-
do_configure () {
gnu-configize || die "failure running gnu-configize"
oe_runconf
}
+do_make() {
+ oe_runmake bin_PROGRAMS
+}
+
do_stage() {
- install -d ${STAGING_BINDIR}
- install -m 755 .libs/fastjar ${STAGING_BINDIR}/fastjar
- install -m 755 .libs/grepjar ${STAGING_BINDIR}
+ oe_runmake install-binPROGRAMS
}
diff --git a/recipes/ffmpeg/ffmpeg_svn.bb b/recipes/ffmpeg/ffmpeg_svn.bb
index 2832d37716..c797710f70 100644
--- a/recipes/ffmpeg/ffmpeg_svn.bb
+++ b/recipes/ffmpeg/ffmpeg_svn.bb
@@ -2,7 +2,7 @@ require ffmpeg.inc
DEPENDS += "schroedinger libgsm"
-SRCREV = "20024"
+SRCREV = "20231"
PE = "1"
PV = "0.5.0+${PR}+svnr${SRCREV}"
@@ -16,7 +16,7 @@ SRC_URI = "svn://svn.ffmpeg.org/ffmpeg/;module=trunk"
S = "${WORKDIR}/trunk"
B = "${S}/build.${HOST_SYS}.${TARGET_SYS}"
-FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -ftree-vectorize -fomit-frame-pointer -O4 -ffast-math"
+FULL_OPTIMIZATION_armv7a = "-fexpensive-optimizations -fno-tree-vectorize -fomit-frame-pointer -O4 -ffast-math"
BUILD_OPTIMIZATION = "${FULL_OPTIMIZATION}"
EXTRA_FFCONF_armv7a = "--cpu=cortex-a8"
diff --git a/recipes/ffmpeg/omapfbplay_git.bb b/recipes/ffmpeg/omapfbplay_git.bb
index 89c845030a..afc3b2aa36 100644
--- a/recipes/ffmpeg/omapfbplay_git.bb
+++ b/recipes/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 = "r17"
+PR = "r18"
PV = "0.0+${PR}+gitr${SRCREV}"
diff --git a/recipes/fftw/fftw_3.2.bb b/recipes/fftw/fftw_3.2.2.bb
index 3dac339151..3dac339151 100644
--- a/recipes/fftw/fftw_3.2.bb
+++ b/recipes/fftw/fftw_3.2.2.bb
diff --git a/recipes/fftw/fftwf_3.2.bb b/recipes/fftw/fftwf_3.2.2.bb
index 5bc3134593..5bc3134593 100644
--- a/recipes/fftw/fftwf_3.2.bb
+++ b/recipes/fftw/fftwf_3.2.2.bb
diff --git a/recipes/fftw/fftwl_3.2.bb b/recipes/fftw/fftwl_3.2.2.bb
index 31d0ed0b53..31d0ed0b53 100644
--- a/recipes/fftw/fftwl_3.2.bb
+++ b/recipes/fftw/fftwl_3.2.2.bb
diff --git a/recipes/freesmartphone/fsodeviced_git.bb b/recipes/freesmartphone/fsodeviced_git.bb
index 06aecf7415..1b01241e4c 100644
--- a/recipes/freesmartphone/fsodeviced_git.bb
+++ b/recipes/freesmartphone/fsodeviced_git.bb
@@ -1,7 +1,7 @@
require cornucopia.inc
inherit fso-plugin
-DEPENDS += "alsa-lib libcanberra"
+DEPENDS += "alsa-lib libcanberra libfsoresource"
RDEPENDS += "libcanberra-alsa"
RRECOMMENDS += "fso-alsa-data"
PV = "0.9.0+gitr${SRCREV}"
diff --git a/recipes/freesmartphone/fsogpsd_git.bb b/recipes/freesmartphone/fsogpsd_git.bb
new file mode 100644
index 0000000000..1e3f5718ed
--- /dev/null
+++ b/recipes/freesmartphone/fsogpsd_git.bb
@@ -0,0 +1,6 @@
+require cornucopia.inc
+inherit fso-plugin
+PR = "${INC_PR}.0"
+PV = "0.0.0+gitr${SRCREV}"
+
+DEPENDS += "libfsoresource"
diff --git a/recipes/freesmartphone/fsogsmd_git.bb b/recipes/freesmartphone/fsogsmd_git.bb
index f7e12e9d63..d5067145d2 100644
--- a/recipes/freesmartphone/fsogsmd_git.bb
+++ b/recipes/freesmartphone/fsogsmd_git.bb
@@ -1,4 +1,6 @@
require cornucopia.inc
inherit fso-plugin
PR = "${INC_PR}.0"
+PV = "0.1.0+gitr${SRCREV}"
+DEPENDS += "libfsoresource libgsm0710mux"
diff --git a/recipes/freesmartphone/libfso-glib_git.bb b/recipes/freesmartphone/libfso-glib_git.bb
index 3bf1b39b69..f7e49cb89d 100644
--- a/recipes/freesmartphone/libfso-glib_git.bb
+++ b/recipes/freesmartphone/libfso-glib_git.bb
@@ -3,13 +3,12 @@ AUTHOR = "Didier 'Ptitjes"
LICENSE = "LGPL"
SECTION = "devel"
DEPENDS = "vala-native vala-dbus-binding-tool-native dbus-glib glib-2.0 fso-specs"
-# remove the x on next version bump
-PV = "0.2.1+gitr${SRCREV}"
+PV = "0.2.2+gitr${SRCREV}"
PR = "r0"
inherit autotools_stage pkgconfig vala
-SRC_URI = "git://git.freesmartphone.org/libfso-glib.git;protocol=git;branch=master"
+SRC_URI = "${FREESMARTPHONE_GIT}/libfso-glib.git;protocol=git;branch=master"
S = "${WORKDIR}/git"
EXTRA_OECONF = "\
diff --git a/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb b/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb
index 72f835e6a5..b2a471dd00 100644
--- a/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb
+++ b/recipes/freesmartphone/vala-dbus-binding-tool-native_git.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Vala DBus Binding Tool"
SECTION = "console"
LICENSE = "GPLv2"
-DEPENDS = "vala-native intltool-native libxml2-native"
+DEPENDS = "vala-native libgee-native intltool-native libxml2-native"
PV = "0.1.0+gitr${SRCREV}"
SRC_URI = "${FREESMARTPHONE_GIT}/vala-dbus-binding-tool.git;protocol=git;branch=master"
diff --git a/recipes/geoclue/geoclue_git.bb b/recipes/geoclue/geoclue_git.bb
index bb5ce10163..b7950a9c12 100644
--- a/recipes/geoclue/geoclue_git.bb
+++ b/recipes/geoclue/geoclue_git.bb
@@ -1,10 +1,11 @@
DESCRIPTION = "GeoClue is a project that provide all kinds of geography information to an application"
HOMEPAGE = "http://www.freedesktop.org/wiki/Software/GeoClue"
-DEPENDS = "libgpsmgr libgpsbt gtk+ gypsy libxml2 gconf-dbus libsoup dbus-glib"
+DEPENDS = "libgpsmgr libgpsbt gtk+ gypsy libxml2 gconf libsoup dbus-glib"
SRCREV = "3a31d260074397a968afaf1065856ab763befb01"
PV = "0.11.1"
+PR = "r1"
PR_append = "+gitr${SRCREV}"
PE = "1"
diff --git a/recipes/gkdial/gkdial_1.8.1.bb b/recipes/gkdial/gkdial_1.8.1.bb
index 3208a06f00..53caca388e 100644
--- a/recipes/gkdial/gkdial_1.8.1.bb
+++ b/recipes/gkdial/gkdial_1.8.1.bb
@@ -1,12 +1,12 @@
inherit autotools pkgconfig gconf
DESCRIPTION = "GTK PPP dialing tool"
-DEPENDS = "gconf-dbus gtk+ libglade gettext ppp gpe-su"
-RDEPENDS = "ppp gconf-dbus gpe-su"
+DEPENDS = "gconf gtk+ libglade gettext ppp gpe-su"
+RDEPENDS = "ppp gconf gpe-su"
SECTION = "gpe"
PRIORITY = "optional"
-PR = "r3gpe1"
+PR = "r4"
SRC_URI = "http://familiar.handhelds.org/source/v0.8.2/${PN}-${PV}.tar.gz \
file://gkdial-pgpe.patch;patch=1 \
diff --git a/recipes/gnash/gnash-fb_0.8.5.bb b/recipes/gnash/gnash-fb_0.8.5.bb
index 455d2d3c42..79e90a8d4e 100644
--- a/recipes/gnash/gnash-fb_0.8.5.bb
+++ b/recipes/gnash/gnash-fb_0.8.5.bb
@@ -1,6 +1,6 @@
require gnash.inc
-DEPENDS += "gst-plugins-base cairo libmad"
+DEPENDS += "gst-plugins-base agg libmad"
acpaths = " -Imacros"
diff --git a/recipes/gnome/gdm_2.28.0.bb b/recipes/gnome/gdm_2.28.0.bb
index 3f5c69ec24..683773a3ab 100644
--- a/recipes/gnome/gdm_2.28.0.bb
+++ b/recipes/gnome/gdm_2.28.0.bb
@@ -1,7 +1,9 @@
DESCRIPTION = "Graphical login manager"
LICENSE = "GPL"
-DEPENDS = "libxklavier grep consolekit libpam gnome-doc-utils gtk+ libglade libgnomecanvas librsvg libxml2 libart-lgpl xrdb"
+DEPENDS = "libcanberra libxklavier grep consolekit libpam gnome-doc-utils gtk+ libglade libgnomecanvas librsvg libxml2 libart-lgpl xrdb"
+
+PR = "r1"
inherit gnome update-rc.d
diff --git a/recipes/gnome/gedit_2.28.0.bb b/recipes/gnome/gedit_2.28.0.bb
index 10e5b54f97..0c4e7b480d 100644
--- a/recipes/gnome/gedit_2.28.0.bb
+++ b/recipes/gnome/gedit_2.28.0.bb
@@ -5,6 +5,8 @@ LICENSE = "GPL"
DEPENDS = "iso-codes gnome-common glib-2.0 gtk+ gconf gtksourceview2"
RDEPENDS += " gtksourceview2"
+PR = "r1"
+
inherit gnome pkgconfig
EXTRA_OECONF = "--disable-scrollkeeper"
@@ -17,5 +19,5 @@ do_stage () {
autotools_stage_all
}
-FILES_${PN} += "${libdir} ${datadir}/gedit-2"
+FILES_${PN} += "${libdir}/gedit-2/plugin* ${datadir}/gedit-2"
FILES_${PN}-dbg += "${libdir}/gedit-2/plugin-loaders/.debug ${libdir}/gedit-2/plugins/.debug"
diff --git a/recipes/gnome/gnome-bluetooth_git.bb b/recipes/gnome/gnome-bluetooth_git.bb
index b6690f4bb6..8d33cf51cb 100644
--- a/recipes/gnome/gnome-bluetooth_git.bb
+++ b/recipes/gnome/gnome-bluetooth_git.bb
@@ -5,14 +5,14 @@ DEFAULT_PREFERENCE = "-1"
inherit autotools gnome pkgconfig
-SRC_URI = "git://git.gnome.org/gnome-bluetooth;protocol=git \
+SRC_URI = "git://git.gnome.org/gnome-bluetooth;branch=gnome-2-28;protocol=git \
file://gtk-doc.make \
"
S = "${WORKDIR}/git"
-SRCREV = "59efa1c06153cd5bdaff64f7efca791c11c77f2f"
-PV = "2.27.8"
+SRCREV = "0622ea93f4e42d1599f2467e6bef5dca49cd99fd"
+PV = "2.28.1"
PR = "r0"
PR_append = "+gitr${SRCREV}"
diff --git a/recipes/gnome/gnome-python-extras_2.25.3.bb b/recipes/gnome/gnome-python-extras_2.25.3.bb
index 9d8e786241..cf3d84e9af 100644
--- a/recipes/gnome/gnome-python-extras_2.25.3.bb
+++ b/recipes/gnome/gnome-python-extras_2.25.3.bb
@@ -5,12 +5,17 @@ inherit gnome distutils-base
SRC_URI += "file://acinclude.m4"
+EXTRA_OECONF = "--with-python-includes=${STAGING_INCDIR}/../"
+
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
+ sed -i -e s:'`$PKG_CONFIG --variable=defsdir pygtk-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \
+ -e s:'`$PKG_CONFIG --variable=defsdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/defs\":g \
+ -e s:'`$PKG_CONFIG --variable=argtypesdir gnome-python-2.0`':\"${STAGING_DATADIR}/pygtk/2.0/argtypes/\":g \
+ ${S}/configure.ac
}
AUTOTOOLS_STAGE_PKGCONFIG = "1"
diff --git a/recipes/gnome/gnome-screensaver_2.28.0.bb b/recipes/gnome/gnome-screensaver_2.28.0.bb
index c5b6635179..06a4ffe48e 100644
--- a/recipes/gnome/gnome-screensaver_2.28.0.bb
+++ b/recipes/gnome/gnome-screensaver_2.28.0.bb
@@ -2,8 +2,11 @@ DESCRIPTION = "GNOME utilities"
SECTION = "x11/gnome"
LICENSE = "GPL"
DEPENDS = "gnome-common glib-2.0 gtk+ gconf"
+
inherit gnome pkgconfig
+PR = "r1"
+
EXTRA_OECONF = " \
--with-shadow=${STAGING_INCDIR}/.. \
"
@@ -17,6 +20,8 @@ do_stage () {
autotools_stage_all
}
+FILES_${PN} += "${datadir}/*background* ${datadir}/desktop-directories"
+
FILES_${PN}-dbg += "${libexecdir}/gnome-screensaver/.debug "
diff --git a/recipes/gnome/libgdata_0.4.0.bb b/recipes/gnome/libgdata_0.4.0.bb
new file mode 100644
index 0000000000..7c510d0b5f
--- /dev/null
+++ b/recipes/gnome/libgdata_0.4.0.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "libgdata is a GLib-based library for accessing online service APIs"
+LICENSE = "LGPL"
+DEPENDS = "libxml2 glib-2.0 libsoup-2.4"
+
+inherit gnome lib_package autotools_stage
+
+SRC_URI += " \
+ file://gtk-doc.make \
+"
+
+do_configure_prepend() {
+ cp ${WORKDIR}/gtk-doc.make ${S}/
+ sed -i -e s:docs::g ${S}/Makefile.am
+ echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make
+}
+
+
+
diff --git a/recipes/gpephone/firewall_svn.bb b/recipes/gpephone/firewall_svn.bb
index b3d7aee848..6c3ed64b26 100644
--- a/recipes/gpephone/firewall_svn.bb
+++ b/recipes/gpephone/firewall_svn.bb
@@ -2,12 +2,12 @@ LICENSE = "LiPS"
DESCRIPTION = "Cellphone firewall tool"
SECTION = "gpe"
PRIORITY = "optional"
-PR = "r0"
+PR = "r1"
PV = "0.0+svnr-${SRCREV}"
DEFAULT_PREFERENCE = "-1"
-DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf-dbus"
+DEPENDS = "gtk+ libmsgenabler libabenabler libiac libgpewidget libgpephone gconf"
inherit gpephone autotools pkgconfig
diff --git a/recipes/gpephone/libsettings_0.3.bb b/recipes/gpephone/libsettings_0.3.bb
index 22f8c4f3e0..3c9794edc2 100644
--- a/recipes/gpephone/libsettings_0.3.bb
+++ b/recipes/gpephone/libsettings_0.3.bb
@@ -2,7 +2,8 @@ DESCRIPTION = "G(PE)^2 settings API library"
SECTION = "gpe/libs"
PRIORITY = "required"
LICENSE = "LiPS"
-DEPENDS = "glib-2.0 gconf-dbus"
+DEPENDS = "glib-2.0 gconf"
+PR = "r1"
inherit gpephone pkgconfig autotools
diff --git a/recipes/gpephone/libsettings_svn.bb b/recipes/gpephone/libsettings_svn.bb
index 74e1190c5a..770fe8cce6 100644
--- a/recipes/gpephone/libsettings_svn.bb
+++ b/recipes/gpephone/libsettings_svn.bb
@@ -2,8 +2,9 @@ DESCRIPTION = "G(PE)^2 settings API library"
SECTION = "gpe/libs"
PRIORITY = "required"
LICENSE = "LiPS"
-DEPENDS = "glib-2.0 gconf-dbus"
+DEPENDS = "glib-2.0 gconf"
PV = "0.0+svnr-${SRCREV}"
+PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/gtksourceview/files/acinclude.m4 b/recipes/gtksourceview/files/acinclude.m4
new file mode 100644
index 0000000000..53518fb2eb
--- /dev/null
+++ b/recipes/gtksourceview/files/acinclude.m4
@@ -0,0 +1,90 @@
+## this one is commonly used with AM_PATH_PYTHONDIR ...
+dnl AM_CHECK_PYMOD(MODNAME [,SYMBOL [,ACTION-IF-FOUND [,ACTION-IF-NOT-FOUND]]])
+dnl Check if a module containing a given symbol is visible to python.
+AC_DEFUN(AM_CHECK_PYMOD,
+[AC_REQUIRE([AM_PATH_PYTHON])
+py_mod_var=`echo $1['_']$2 | sed 'y%./+-%__p_%'`
+AC_MSG_CHECKING(for ifelse([$2],[],,[$2 in ])python module $1)
+AC_CACHE_VAL(py_cv_mod_$py_mod_var, [
+ifelse([$2],[], [prog="
+import sys
+try:
+ import $1
+except ImportError:
+ sys.exit(1)
+except:
+ sys.exit(0)
+sys.exit(0)"], [prog="
+import $1
+$1.$2"])
+if $PYTHON -c "$prog" 1>&AC_FD_CC 2>&AC_FD_CC
+ then
+ eval "py_cv_mod_$py_mod_var=yes"
+ else
+ eval "py_cv_mod_$py_mod_var=no"
+ fi
+])
+py_val=`eval "echo \`echo '$py_cv_mod_'$py_mod_var\`"`
+if test "x$py_val" != xno; then
+ AC_MSG_RESULT(yes)
+ ifelse([$3], [],, [$3
+])dnl
+else
+ AC_MSG_RESULT(no)
+ ifelse([$4], [],, [$4
+])dnl
+fi
+])
+
+dnl a macro to check for ability to create python extensions
+dnl AM_CHECK_PYTHON_HEADERS([ACTION-IF-POSSIBLE], [ACTION-IF-NOT-POSSIBLE])
+dnl function also defines PYTHON_INCLUDES
+AC_DEFUN([AM_CHECK_PYTHON_HEADERS],
+[AC_REQUIRE([AM_PATH_PYTHON])
+AC_MSG_CHECKING(for headers required to compile python extensions)
+dnl deduce PYTHON_INCLUDES
+AC_ARG_WITH(python-includes,
+ [ --with-python-includes=DIR path to Python includes], py_exec_prefix=$withval)
+if test x$py_exec_prefix != x; then
+PYTHON_INCLUDES="-I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+else
+py_prefix=`$PYTHON -c "import sys; print sys.prefix"`
+py_exec_prefix=`$PYTHON -c "import sys; print sys.exec_prefix"`
+PYTHON_INCLUDES="-I${py_prefix}/include/python${PYTHON_VERSION}"
+if test "$py_prefix" != "$py_exec_prefix"; then
+ PYTHON_INCLUDES="$PYTHON_INCLUDES -I${py_exec_prefix}/include/python${PYTHON_VERSION}"
+fi
+fi
+AC_SUBST(PYTHON_INCLUDES)
+dnl check if the headers exist:
+save_CPPFLAGS="$CPPFLAGS"
+CPPFLAGS="$CPPFLAGS $PYTHON_INCLUDES"
+AC_TRY_CPP([#include <Python.h>],dnl
+[AC_MSG_RESULT(found)
+$1],dnl
+[AC_MSG_RESULT(not found)
+$2])
+CPPFLAGS="$save_CPPFLAGS"
+])
+
+dnl
+dnl JH_ADD_CFLAG(FLAG)
+dnl checks whether the C compiler supports the given flag, and if so, adds
+dnl it to $CFLAGS. If the flag is already present in the list, then the
+dnl check is not performed.
+AC_DEFUN([JH_ADD_CFLAG],
+[
+case " $CFLAGS " in
+*@<:@\ \ @:>@$1@<:@\ \ @:>@*)
+ ;;
+*)
+ save_CFLAGS="$CFLAGS"
+ CFLAGS="$CFLAGS $1"
+ AC_MSG_CHECKING([whether [$]CC understands $1])
+ AC_TRY_COMPILE([], [], [jh_has_option=yes], [jh_has_option=no])
+ AC_MSG_RESULT($jh_has_option)
+ if test $jh_has_option = no; then
+ CFLAGS="$save_CFLAGS"
+ fi
+ ;;
+esac])
diff --git a/recipes/gtksourceview/files/gtk-doc.m4 b/recipes/gtksourceview/files/gtk-doc.m4
new file mode 100644
index 0000000000..3ec41666b2
--- /dev/null
+++ b/recipes/gtksourceview/files/gtk-doc.m4
@@ -0,0 +1,53 @@
+dnl -*- mode: autoconf -*-
+
+# serial 1
+
+dnl Usage:
+dnl GTK_DOC_CHECK([minimum-gtk-doc-version])
+AC_DEFUN([GTK_DOC_CHECK],
+[
+ AC_BEFORE([AC_PROG_LIBTOOL],[$0])dnl setup libtool first
+ AC_BEFORE([AM_PROG_LIBTOOL],[$0])dnl setup libtool first
+ dnl for overriding the documentation installation directory
+ AC_ARG_WITH(html-dir,
+ AC_HELP_STRING([--with-html-dir=PATH], [path to installed docs]),,
+ [with_html_dir='${datadir}/gtk-doc/html'])
+ HTML_DIR="$with_html_dir"
+ AC_SUBST(HTML_DIR)
+
+ dnl enable/disable documentation building
+ AC_ARG_ENABLE(gtk-doc,
+ AC_HELP_STRING([--enable-gtk-doc],
+ [use gtk-doc to build documentation [default=no]]),,
+ enable_gtk_doc=no)
+
+ have_gtk_doc=no
+ if test -z "$PKG_CONFIG"; then
+ AC_PATH_PROG(PKG_CONFIG, pkg-config, no)
+ fi
+ if test "$PKG_CONFIG" != "no" && $PKG_CONFIG --exists gtk-doc; then
+ have_gtk_doc=yes
+ fi
+
+ dnl do we want to do a version check?
+ifelse([$1],[],,
+ [gtk_doc_min_version=$1
+ if test "$have_gtk_doc" = yes; then
+ AC_MSG_CHECKING([gtk-doc version >= $gtk_doc_min_version])
+ if $PKG_CONFIG --atleast-version $gtk_doc_min_version gtk-doc; then
+ AC_MSG_RESULT(yes)
+ else
+ AC_MSG_RESULT(no)
+ have_gtk_doc=no
+ fi
+ fi
+])
+ if test x$enable_gtk_doc = xyes; then
+ if test "$have_gtk_doc" != yes; then
+ enable_gtk_doc=no
+ fi
+ fi
+
+ AM_CONDITIONAL(ENABLE_GTK_DOC, test x$enable_gtk_doc = xyes)
+ AM_CONDITIONAL(GTK_DOC_USE_LIBTOOL, test -n "$LIBTOOL")
+])
diff --git a/recipes/gtksourceview/files/gtk-doc.make b/recipes/gtksourceview/files/gtk-doc.make
new file mode 100644
index 0000000000..354ffb7c66
--- /dev/null
+++ b/recipes/gtksourceview/files/gtk-doc.make
@@ -0,0 +1,173 @@
+# -*- mode: makefile -*-
+
+####################################
+# Everything below here is generic #
+####################################
+
+if GTK_DOC_USE_LIBTOOL
+GTKDOC_CC = $(LIBTOOL) --mode=compile $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(LIBTOOL) --mode=link $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+else
+GTKDOC_CC = $(CC) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+GTKDOC_LD = $(CC) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS)
+endif
+
+# We set GPATH here; this gives us semantics for GNU make
+# which are more like other make's VPATH, when it comes to
+# whether a source that is a target of one rule is then
+# searched for in VPATH/GPATH.
+#
+GPATH = $(srcdir)
+
+TARGET_DIR=$(HTML_DIR)/$(DOC_MODULE)
+
+EXTRA_DIST = \
+ $(content_files) \
+ $(HTML_IMAGES) \
+ $(DOC_MAIN_SGML_FILE) \
+ $(DOC_MODULE)-sections.txt \
+ $(DOC_MODULE)-overrides.txt
+
+DOC_STAMPS=scan-build.stamp tmpl-build.stamp sgml-build.stamp html-build.stamp \
+ $(srcdir)/tmpl.stamp $(srcdir)/sgml.stamp $(srcdir)/html.stamp
+
+SCANOBJ_FILES = \
+ $(DOC_MODULE).args \
+ $(DOC_MODULE).hierarchy \
+ $(DOC_MODULE).interfaces \
+ $(DOC_MODULE).prerequisites \
+ $(DOC_MODULE).signals
+
+REPORT_FILES = \
+ $(DOC_MODULE)-undocumented.txt \
+ $(DOC_MODULE)-undeclared.txt \
+ $(DOC_MODULE)-unused.txt
+
+CLEANFILES = $(SCANOBJ_FILES) $(REPORT_FILES) $(DOC_STAMPS)
+
+if ENABLE_GTK_DOC
+all-local: html-build.stamp
+else
+all-local:
+endif
+
+docs: html-build.stamp
+
+#### scan ####
+
+scan-build.stamp: $(HFILE_GLOB) $(CFILE_GLOB)
+ @echo 'gtk-doc: Scanning header files'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-scan --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --ignore-headers="$(IGNORE_HFILES)" $(SCAN_OPTIONS) $(EXTRA_HFILES)
+ if grep -l '^..*$$' $(srcdir)/$(DOC_MODULE).types > /dev/null 2>&1 ; then \
+ CC="$(GTKDOC_CC)" LD="$(GTKDOC_LD)" CFLAGS="$(GTKDOC_CFLAGS)" LDFLAGS="$(GTKDOC_LIBS)" gtkdoc-scangobj $(SCANGOBJ_OPTIONS) --module=$(DOC_MODULE) --output-dir=$(srcdir) ; \
+ else \
+ cd $(srcdir) ; \
+ for i in $(SCANOBJ_FILES) ; do \
+ test -f $$i || touch $$i ; \
+ done \
+ fi
+ touch scan-build.stamp
+
+$(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt: scan-build.stamp
+ @true
+
+#### templates ####
+
+tmpl-build.stamp: $(DOC_MODULE)-decl.txt $(SCANOBJ_FILES) $(DOC_MODULE)-sections.txt $(DOC_MODULE)-overrides.txt
+ @echo 'gtk-doc: Rebuilding template files'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && gtkdoc-mktmpl --module=$(DOC_MODULE) $(MKTMPL_OPTIONS)
+ touch tmpl-build.stamp
+
+tmpl.stamp: tmpl-build.stamp
+ @true
+
+tmpl/*.sgml:
+ @true
+
+
+#### xml ####
+
+sgml-build.stamp: tmpl.stamp $(HFILE_GLOB) $(CFILE_GLOB) $(DOC_MODULE)-sections.txt $(srcdir)/tmpl/*.sgml $(expand_content_files)
+ @echo 'gtk-doc: Building XML'
+ @-chmod -R u+w $(srcdir)
+ cd $(srcdir) && \
+ gtkdoc-mkdb --module=$(DOC_MODULE) --source-dir=$(DOC_SOURCE_DIR) --output-format=xml --expand-content-files="$(expand_content_files)" --main-sgml-file=$(DOC_MAIN_SGML_FILE) $(MKDB_OPTIONS)
+ touch sgml-build.stamp
+
+sgml.stamp: sgml-build.stamp
+ @true
+
+#### html ####
+
+html-build.stamp: sgml.stamp $(DOC_MAIN_SGML_FILE) $(content_files)
+ @echo 'gtk-doc: Building HTML'
+ @-chmod -R u+w $(srcdir)
+ rm -rf $(srcdir)/html
+ mkdir $(srcdir)/html
+ cd $(srcdir)/html && gtkdoc-mkhtml $(DOC_MODULE) ../$(DOC_MAIN_SGML_FILE)
+ test "x$(HTML_IMAGES)" = "x" || ( cd $(srcdir) && cp $(HTML_IMAGES) html )
+ @echo 'gtk-doc: Fixing cross-references'
+ cd $(srcdir) && gtkdoc-fixxref --module-dir=html --html-dir=$(HTML_DIR) $(FIXXREF_OPTIONS)
+ touch html-build.stamp
+
+##############
+
+clean-local:
+ rm -f *~ *.bak
+ rm -rf .libs
+
+distclean-local:
+ cd $(srcdir) && \
+ rm -rf xml $(REPORT_FILES) \
+ $(DOC_MODULE)-decl-list.txt $(DOC_MODULE)-decl.txt
+
+maintainer-clean-local: clean
+ cd $(srcdir) && rm -rf xml html
+
+install-data-local:
+ -installfiles=`echo $(srcdir)/html/*`; \
+ if test "$$installfiles" = '$(srcdir)/html/*'; \
+ then echo '-- Nothing to install' ; \
+ else \
+ $(mkinstalldirs) $(DESTDIR)$(TARGET_DIR); \
+ for i in $$installfiles; do \
+ echo '-- Installing '$$i ; \
+ $(INSTALL_DATA) $$i $(DESTDIR)$(TARGET_DIR); \
+ done; \
+ echo '-- Installing $(srcdir)/html/index.sgml' ; \
+ $(INSTALL_DATA) $(srcdir)/html/index.sgml $(DESTDIR)$(TARGET_DIR) || :; \
+ which gtkdoc-rebase >/dev/null && \
+ gtkdoc-rebase --relative --dest-dir=$(DESTDIR) --html-dir=$(DESTDIR)$(TARGET_DIR) ; \
+ fi
+
+
+uninstall-local:
+ rm -f $(DESTDIR)$(TARGET_DIR)/*
+
+#
+# Require gtk-doc when making dist
+#
+if ENABLE_GTK_DOC
+dist-check-gtkdoc:
+else
+dist-check-gtkdoc:
+ @echo "*** gtk-doc must be installed and enabled in order to make dist"
+ @false
+endif
+
+dist-hook: dist-check-gtkdoc dist-hook-local
+ mkdir $(distdir)/tmpl
+ mkdir $(distdir)/xml
+ mkdir $(distdir)/html
+ -cp $(srcdir)/tmpl/*.sgml $(distdir)/tmpl
+ -cp $(srcdir)/xml/*.xml $(distdir)/xml
+ cp $(srcdir)/html/* $(distdir)/html
+ -cp $(srcdir)/$(DOC_MODULE).types $(distdir)/
+ -cp $(srcdir)/$(DOC_MODULE)-sections.txt $(distdir)/
+ cd $(distdir) && rm -f $(DISTCLEANFILES)
+ -gtkdoc-rebase --online --relative --html-dir=$(distdir)/html
+
+.PHONY : dist-hook-local docs
diff --git a/recipes/gtksourceview/gtksourceview2_2.7.3.bb b/recipes/gtksourceview/gtksourceview2_2.7.3.bb
index 474b317678..20a2a5b440 100644
--- a/recipes/gtksourceview/gtksourceview2_2.7.3.bb
+++ b/recipes/gtksourceview/gtksourceview2_2.7.3.bb
@@ -2,12 +2,14 @@ DESCRIPTION = "Portable C library for multiline text editing"
HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
LICENSE = "LGPL"
DEPENDS = "gtk+ libgnomeprint"
-PR = "r0"
+
+PR = "r1"
+
PNAME = "gtksourceview"
S = "${WORKDIR}/${PNAME}-${PV}"
-inherit gnome pkgconfig
+inherit gnome pkgconfig lib_package
# overrule SRC_URI from gnome.conf
SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2"
diff --git a/recipes/gtksourceview/gtksourceview2_2.9.1.bb b/recipes/gtksourceview/gtksourceview2_2.9.1.bb
new file mode 100644
index 0000000000..f6695ecacd
--- /dev/null
+++ b/recipes/gtksourceview/gtksourceview2_2.9.1.bb
@@ -0,0 +1,30 @@
+DESCRIPTION = "Portable C library for multiline text editing"
+HOMEPAGE = "http://projects.gnome.org/gtksourceview/"
+LICENSE = "LGPL"
+DEPENDS = "gtk+ libgnomeprint"
+
+PNAME = "gtksourceview"
+
+S = "${WORKDIR}/${PNAME}-${PV}"
+
+inherit gnome pkgconfig lib_package
+
+# overrule SRC_URI from gnome.conf
+SRC_URI = "${GNOME_MIRROR}/${PNAME}/${@gnome_verdir("${PV}")}/${PNAME}-${PV}.tar.bz2"
+
+SRC_URI += " \
+ file://gtk-doc.make \
+"
+
+do_configure_prepend() {
+ cp ${WORKDIR}/gtk-doc.make ${S}/
+ sed -i -e s:docs::g ${S}/Makefile.am
+ echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make
+}
+
+do_stage() {
+ autotools_stage_all
+}
+
+FILES_${PN} += " ${datadir}/gtksourceview-2.0"
+
diff --git a/recipes/kexecboot/device_table-oldmmc.txt b/recipes/kexecboot/device_table-oldmmc.txt
index 4decc8dfb4..2b61c01849 100644
--- a/recipes/kexecboot/device_table-oldmmc.txt
+++ b/recipes/kexecboot/device_table-oldmmc.txt
@@ -13,7 +13,7 @@
/dev/apm_bios c 660 0 46 10 134 - - -
/dev/fb0 c 600 0 0 29 0 - - -
/dev/hda b 660 0 6 3 0 - - -
-/dev/hda b 660 0 6 3 1 1 1 20
+/dev/hda b 660 0 6 3 1 1 1 19
/dev/kmem c 640 0 15 1 2 - - -
/dev/mem c 640 0 15 1 1 - - -
/dev/null c 666 0 0 1 3 - - -
@@ -32,5 +32,5 @@
# mmc numbers are assigned dynamicly so if you have other dynamic assigned block devices it may be wrong
/dev/mmcblk0 b 660 0 6 254 0 - - -
-/dev/mmcblk0p b 660 0 6 254 1 1 1 8
+/dev/mmcblk0p b 660 0 6 254 1 1 1 7
/dev/event0 c 660 0 0 13 64 - - -
diff --git a/recipes/libgee/libgee-native_git.bb b/recipes/libgee/libgee-native_git.bb
new file mode 100644
index 0000000000..e90f99e2f0
--- /dev/null
+++ b/recipes/libgee/libgee-native_git.bb
@@ -0,0 +1,2 @@
+require libgee_git.bb
+inherit native
diff --git a/recipes/libgee/libgee_git.bb b/recipes/libgee/libgee_git.bb
index 74e0eca488..ead93741ce 100644
--- a/recipes/libgee/libgee_git.bb
+++ b/recipes/libgee/libgee_git.bb
@@ -4,7 +4,7 @@ HOMEPAGE = "http://live.gnome.org/Libgee"
SECTION = "libs"
DEPENDS = "glib-2.0"
LICENSE = "LGPL"
-PV = "0.3.0+gitr${SRCREV}"
+PV = "0.5.0+gitr${SRCREV}"
SRC_URI = "\
git://git.gnome.org/libgee;protocol=git;branch=master \
diff --git a/recipes/libgmime/gmime_2.4.10.bb b/recipes/libgmime/gmime_2.4.10.bb
new file mode 100644
index 0000000000..d455f3339e
--- /dev/null
+++ b/recipes/libgmime/gmime_2.4.10.bb
@@ -0,0 +1,20 @@
+LICENSE = "LGPL"
+DESCRIPTION = "Runtime libraries for parsing and creating MIME mail"
+SECTION = "libs"
+PRIORITY = "optional"
+DEPENDS = "glib-2.0 zlib"
+
+inherit gnome autotools_stage lib_package binconfig
+
+SRC_URI += " \
+ file://iconv-detect.h"
+
+EXTRA_OECONF += "--disable-mono"
+
+export ac_cv_have_iconv_detect_h=yes
+do_configure_append = "cp ${WORKDIR}/iconv-detect.h ${S}"
+
+# we do not need GNOME 1 gnome-config support
+do_install_append () {
+ rm -f ${D}${libdir}/gmimeConf.sh
+}
diff --git a/recipes/linux/linux-2.6.24/hipox/defconfig b/recipes/linux/linux-2.6.24/hipox/defconfig
index d2867f13d4..e5d033846e 100644
--- a/recipes/linux/linux-2.6.24/hipox/defconfig
+++ b/recipes/linux/linux-2.6.24/hipox/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24.4
-# Wed Oct 14 11:55:54 2009
+# Tue Oct 20 14:36:38 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_LOCALVERSION=""
CONFIG_SWAP=y
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
+CONFIG_POSIX_MQUEUE=y
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
diff --git a/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch b/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch
new file mode 100644
index 0000000000..dc7eba64d0
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/004-081205-usb.patch
@@ -0,0 +1,16 @@
+--- linux-2.6.27.orig/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:50:43.000000000 +0100
++++ linux-2.6.27.modif/arch/powerpc/platforms/83xx/usb.c 2008-12-05 14:51:17.000000000 +0100
+@@ -172,10 +172,10 @@
+ !strcmp(prop, "utmi"))) {
+ u32 refsel;
+
+- if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr"))
++// if (of_device_is_compatible(immr_node, "fsl,mpc8315-immr"))
+ refsel = CONTROL_REFSEL_24MHZ;
+- else
+- refsel = CONTROL_REFSEL_48MHZ;
++// else
++// refsel = CONTROL_REFSEL_48MHZ;
+ /* Set UTMI_PHY_EN and REFSEL */
+ out_be32(usb_regs + FSL_USB2_CONTROL_OFFS,
+ CONTROL_UTMI_PHY_EN | refsel);
diff --git a/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch b/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch
new file mode 100644
index 0000000000..401ce4d9c8
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/005-091008-isl12024.patch
@@ -0,0 +1,512 @@
+Index: linux-2.6.31/drivers/misc/eeprom/at24.c
+===================================================================
+--- linux-2.6.31.orig/drivers/misc/eeprom/at24.c 2009-10-19 16:55:01.000000000 +0200
++++ linux-2.6.31/drivers/misc/eeprom/at24.c 2009-10-19 16:55:05.000000000 +0200
+@@ -115,6 +115,8 @@
+ { "spd", AT24_DEVICE_MAGIC(2048 / 8,
+ AT24_FLAG_READONLY | AT24_FLAG_IRUGO) },
+ { "24c04", AT24_DEVICE_MAGIC(4096 / 8, 0) },
++ /* Intersil RTC/Unique-ID isl12024 eeprom handled here */
++ { "isl12024-eeprom", AT24_DEVICE_MAGIC(4096 / 8, AT24_FLAG_ADDR16) },
+ /* 24rf08 quirk is handled at i2c-core */
+ { "24c08", AT24_DEVICE_MAGIC(8192 / 8, 0) },
+ { "24c16", AT24_DEVICE_MAGIC(16384 / 8, 0) },
+Index: linux-2.6.31/drivers/rtc/Kconfig
+===================================================================
+--- linux-2.6.31.orig/drivers/rtc/Kconfig 2009-10-19 16:55:01.000000000 +0200
++++ linux-2.6.31/drivers/rtc/Kconfig 2009-10-19 16:55:05.000000000 +0200
+@@ -128,6 +128,12 @@
+
+ if I2C
+
++config RTC_DRV_ISL12024
++ tristate "Intersil 12024 RTC/Unique-ID"
++ help
++ If you say yes ....
++ This driver can also be built as a module.
++
+ config RTC_DRV_DS1307
+ tristate "Dallas/Maxim DS1307/37/38/39/40, ST M41T00, EPSON RX-8025"
+ help
+Index: linux-2.6.31/drivers/rtc/Makefile
+===================================================================
+--- linux-2.6.31.orig/drivers/rtc/Makefile 2009-10-19 16:55:01.000000000 +0200
++++ linux-2.6.31/drivers/rtc/Makefile 2009-10-19 16:55:05.000000000 +0200
+@@ -40,6 +40,7 @@
+ obj-$(CONFIG_RTC_DRV_EP93XX) += rtc-ep93xx.o
+ obj-$(CONFIG_RTC_DRV_FM3130) += rtc-fm3130.o
+ obj-$(CONFIG_RTC_DRV_ISL1208) += rtc-isl1208.o
++obj-$(CONFIG_RTC_DRV_ISL12024) += rtc-isl12024.o
+ obj-$(CONFIG_RTC_DRV_M41T80) += rtc-m41t80.o
+ obj-$(CONFIG_RTC_DRV_M41T94) += rtc-m41t94.o
+ obj-$(CONFIG_RTC_DRV_M48T35) += rtc-m48t35.o
+Index: linux-2.6.31/drivers/rtc/rtc-isl12024.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.31/drivers/rtc/rtc-isl12024.c 2009-10-19 16:57:37.000000000 +0200
+@@ -0,0 +1,465 @@
++/*
++ * Intersil ISL12024 class driver
++ *
++ *
++ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
++ *
++ * Guillaume Ligneul <guillaume.ligneul@gmail.com>
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++ */
++
++#include <linux/module.h>
++#include <linux/i2c.h>
++#include <linux/bcd.h>
++#include <linux/rtc.h>
++#include <linux/delay.h>
++
++#define DRV_VERSION "0.3"
++
++#define ISL12024_CCR_BASE 0x30 /* Base address of CCR */
++#define ISL12024_ALM0_BASE 0x00 /* Base address of ALARM0 */
++#define ISL12024_INT_AL0E 0x20 /* Alarm 0 enable */
++
++/* Register map */
++
++/* device id section */
++#define ISL12024_REG_ID 0x20
++
++/* rtc section */
++#define ISL12024_REG_HR_MIL (1<<7) /* 24h/12h mode */
++#define ISL12024_REG_HR_PM (1<<5) /* PM/AM bit in 12h mode */
++#define ISL12024_REG_SC 0x30
++#define ISL12024_REG_DT 0x33 /* Date */
++#define ISL12024_REG_MO 0x34 /* Month */
++#define ISL12024_REG_YR 0x35 /* Year */
++#define ISL12024_REG_DW 0x36
++#define ISL12024_REG_Y2K 0x37
++#define ISL12024_RTC_SECTION_LEN 8
++
++/* control/status section */
++#define ISL12024_REG_SR 0x3F
++#define ISL12024_REG_SR_BAT (1<<7) /* battery */
++#define ISL12024_REG_SR_AL1 (1<<6) /* alarm 0 */
++#define ISL12024_REG_SR_AL0 (1<<5) /* alarm 1 */
++#define ISL12024_REG_SR_OSCF (1<<4) /* oscillator fail */
++#define ISL12024_REG_SR_RWEL (1<<2) /* register write enable latch */
++#define ISL12024_REG_SR_WEL (1<<1) /* write enable latch */
++#define ISL12024_REG_SR_RTCF (1<<0) /* rtc fail */
++#define ISL12024_REG_INT 0x11
++
++#define CCR_SEC 0
++#define CCR_MIN 1
++#define CCR_HOUR 2
++#define CCR_MDAY 3
++#define CCR_MONTH 4
++#define CCR_YEAR 5
++#define CCR_WDAY 6
++#define CCR_Y2K 7
++
++static int isl12024_get_status(struct i2c_client *client, unsigned char *sr);
++static int isl12024_fix_osc(struct i2c_client *client);
++
++static struct i2c_driver isl12024_driver;
++
++static int
++isl12024_i2c_read_regs(struct i2c_client *client, u8 reg, u8 buf[],
++ unsigned len)
++{
++ int ret;
++ u8 dt_addr[2];
++
++ struct i2c_msg msgs[2] = {
++ {
++ .addr = client->addr,
++ .flags = 0,
++ .len = 2,
++ .buf = dt_addr,
++ },
++ {
++ .addr = client->addr,
++ .flags = I2C_M_RD,
++ .len = len ,
++ .buf = buf,
++ },
++ };
++
++ dt_addr[0] = 0;
++ dt_addr[1] = reg;
++
++ ret = i2c_transfer(client->adapter, msgs, 2);
++ if ( ret < 0) {
++ dev_err(&client->dev, "read error\n");
++ return -EIO;
++ }
++ return ret;
++}
++
++static int isl12024_i2c_validate_client(struct i2c_client *client)
++{
++ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
++ u8 zero_mask[ISL12024_RTC_SECTION_LEN] = {
++ 0x80, 0x80, 0x40, 0xc0, 0xe0, 0x00, 0xf8, 0xc6
++ };
++
++ int i;
++ int ret;
++
++ ret = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN);
++
++ if (ret < 0)
++ return ret;
++
++ for (i = 0; i < ISL12024_RTC_SECTION_LEN; ++i) {
++ if (regs[i] & zero_mask[i]) /* check if bits are cleared */
++ return -ENODEV;
++ }
++
++ return 0;
++}
++
++static int isl12024_read_time(struct i2c_client *client,
++ struct rtc_time *tm)
++{
++ unsigned char sr;
++ int err;
++ u8 regs[ISL12024_RTC_SECTION_LEN] = { 0, };
++
++ if (isl12024_get_status(client, &sr) < 0) {
++ dev_err(&client->dev, "reading SR failed\n");
++ return -EIO;
++ }
++
++ err = isl12024_i2c_read_regs(client, ISL12024_REG_SC, regs, ISL12024_RTC_SECTION_LEN);
++
++ if (err < 0) {
++ dev_err(&client->dev, "reading RTC section failed\n");
++ return err;
++ }
++
++ tm->tm_sec = bcd2bin(regs[0]);
++ tm->tm_min = bcd2bin(regs[1]);
++
++ { /* HR field has a more complex interpretation */
++ const u8 _hr = regs[2];
++ if (_hr & ISL12024_REG_HR_MIL) /* 24h format */
++ tm->tm_hour = bcd2bin(_hr & 0x3f);
++ else { // 12h format
++ tm->tm_hour = bcd2bin(_hr & 0x1f);
++ if (_hr & ISL12024_REG_HR_PM) /* PM flag set */
++ tm->tm_hour += 12;
++ }
++ }
++
++ tm->tm_mday = bcd2bin(regs[3]);
++ tm->tm_mon = bcd2bin(regs[4]);
++ tm->tm_year = bcd2bin(regs[5]) + 100;
++ tm->tm_wday = bcd2bin(regs[6]);
++
++ return rtc_valid_tm(tm);
++}
++
++static int isl12024_get_status(struct i2c_client *client, unsigned char *sr)
++{
++ static unsigned char sr_addr[2] = { 0, ISL12024_REG_SR };
++
++ struct i2c_msg msgs[] = {
++ { client->addr, 0, 2, sr_addr }, /* setup read ptr */
++ { client->addr, I2C_M_RD, 1, sr }, /* read status */
++ };
++
++ /* read status register */
++ if (i2c_transfer(client->adapter, &msgs[0], 2) != 2) {
++ dev_err(&client->dev, "%s: read error\n", __func__);
++ return -EIO;
++ }
++
++ return 0;
++}
++
++static int isl12024_set_datetime(struct i2c_client *client, struct rtc_time *tm,
++ int datetoo, u8 reg_base, unsigned char alm_enable)
++{
++ int i, xfer, nbytes;
++ unsigned char buf[8];
++ unsigned char rdata[10] = { 0, reg_base };
++
++ static const unsigned char wel[3] = { 0, ISL12024_REG_SR,
++ ISL12024_REG_SR_WEL };
++
++ static const unsigned char rwel[3] = { 0, ISL12024_REG_SR,
++ ISL12024_REG_SR_WEL | ISL12024_REG_SR_RWEL };
++
++ static const unsigned char diswe[3] = { 0, ISL12024_REG_SR, 0 };
++
++ dev_dbg(&client->dev,
++ "%s: secs=%d, mins=%d, hours=%d\n",
++ __func__,
++ tm->tm_sec, tm->tm_min, tm->tm_hour);
++
++ buf[CCR_SEC] = bin2bcd(tm->tm_sec);
++ buf[CCR_MIN] = bin2bcd(tm->tm_min);
++
++ /* set hour and 24hr bit */
++ buf[CCR_HOUR] = bin2bcd(tm->tm_hour) | ISL12024_REG_HR_MIL;
++
++ /* should we also set the date? */
++ if (datetoo) {
++ dev_dbg(&client->dev,
++ "%s: mday=%d, mon=%d, year=%d, wday=%d\n",
++ __func__,
++ tm->tm_mday, tm->tm_mon, tm->tm_year, tm->tm_wday);
++
++ buf[CCR_MDAY] = bin2bcd(tm->tm_mday);
++
++ /* month, 1 - 12 */
++ buf[CCR_MONTH] = bin2bcd(tm->tm_mon);
++
++ /* year, since the rtc epoch*/
++ buf[CCR_YEAR] = bin2bcd(tm->tm_year % 100);
++ buf[CCR_WDAY] = tm->tm_wday & 0x07;
++ buf[CCR_Y2K] = bin2bcd(tm->tm_year / 100);
++ }
++
++ /* If writing alarm registers, set compare bits on registers 0-4 */
++ if (reg_base < ISL12024_CCR_BASE)
++ for (i = 0; i <= 4; i++)
++ buf[i] |= 0x80;
++
++ /* this sequence is required to unlock the chip */
++ if ((xfer = i2c_master_send(client, wel, 3)) != 3) {
++ dev_err(&client->dev, "%s: wel - %d\n", __func__, xfer);
++ return -EIO;
++ }
++
++ if ((xfer = i2c_master_send(client, rwel, 3)) != 3) {
++ dev_err(&client->dev, "%s: rwel - %d\n", __func__, xfer);
++ return -EIO;
++ }
++
++ /* write register's data */
++ if (datetoo)
++ nbytes = 8;
++ else
++ nbytes = 3;
++ for (i = 0; i < nbytes; i++)
++ rdata[2+i] = buf[i];
++
++ xfer = i2c_master_send(client, rdata, nbytes+2);
++ if (xfer != nbytes+2) {
++ dev_err(&client->dev,
++ "%s: result=%d addr=%02x, data=%02x\n",
++ __func__,
++ xfer, rdata[1], rdata[2]);
++ return -EIO;
++ }
++
++ /* If we wrote to the nonvolatile region, wait 10msec for write cycle*/
++ if (reg_base < ISL12024_CCR_BASE) {
++ unsigned char al0e[3] = { 0, ISL12024_REG_INT, 0 };
++
++ msleep(10);
++
++ /* ...and set or clear the AL0E bit in the INT register */
++
++ /* Need to set RWEL again as the write has cleared it */
++ xfer = i2c_master_send(client, rwel, 3);
++ if (xfer != 3) {
++ dev_err(&client->dev,
++ "%s: aloe rwel - %d\n",
++ __func__,
++ xfer);
++ return -EIO;
++ }
++
++ if (alm_enable)
++ al0e[2] = ISL12024_INT_AL0E;
++
++ xfer = i2c_master_send(client, al0e, 3);
++ if (xfer != 3) {
++ dev_err(&client->dev,
++ "%s: al0e - %d\n",
++ __func__,
++ xfer);
++ return -EIO;
++ }
++
++ /* and wait 10msec again for this write to complete */
++ msleep(10);
++ }
++
++ /* disable further writes */
++ if ((xfer = i2c_master_send(client, diswe, 3)) != 3) {
++ dev_err(&client->dev, "%s: diswe - %d\n", __func__, xfer);
++ return -EIO;
++ }
++
++ return 0;
++}
++
++static int isl12024_fix_osc(struct i2c_client *client)
++{
++ int err;
++ struct rtc_time tm;
++
++ tm.tm_hour = tm.tm_min = tm.tm_sec = 0;
++
++ err = isl12024_set_datetime(client, &tm, 0, ISL12024_CCR_BASE, 0);
++ if ( err < 0 )
++ dev_err(&client->dev, "unable to restart the oscillator (%d)\n", err);
++
++ return err;
++}
++
++static int isl12024_rtc_read_time(struct device *dev, struct rtc_time *tm)
++{
++ return isl12024_read_time(to_i2c_client(dev), tm);
++
++}
++
++static int isl12024_rtc_set_time(struct device *dev, struct rtc_time *tm)
++{
++ return isl12024_set_datetime(to_i2c_client(dev),
++ tm, 1, ISL12024_CCR_BASE, 0);
++}
++
++static int
++isl12024_rtc_proc(struct device *dev, struct seq_file *seq)
++{
++
++ /* Nothing to do */
++
++ return 0;
++}
++
++static const struct rtc_class_ops isl12024_rtc_ops = {
++ .proc = isl12024_rtc_proc,
++ .read_time = isl12024_rtc_read_time,
++ .set_time = isl12024_rtc_set_time,
++};
++
++static ssize_t isl12024_show_id(struct device *dev, struct device_attribute *attr,
++ char *buf)
++{
++ struct i2c_client *client = to_i2c_client(dev);
++ int err;
++ int len = 0;
++ int i;
++ u8 id_buffer[ISL12024_RTC_SECTION_LEN];
++
++ /* Read unique id from eeprom */
++ err = isl12024_i2c_read_regs(client, ISL12024_REG_ID, id_buffer, sizeof(id_buffer));
++ if (err < 0) {
++ dev_err(&client->dev, "reading RTC section failed\n");
++ return err;
++ }
++
++ /* Print hexadecimal */
++ for (i = 0; i < sizeof(id_buffer); i++)
++ len += sprintf(buf + len, "%02X", id_buffer[i]);
++ len += sprintf(buf + len, "\n");
++ return len;
++}
++
++static DEVICE_ATTR(id, S_IRUGO, isl12024_show_id, NULL);
++
++static int
++isl12024_probe(struct i2c_client *client, const struct i2c_device_id *id)
++{
++ int rc = 0;
++ unsigned char sr;
++ struct rtc_device *rtc = NULL;
++
++ if (!i2c_check_functionality(client->adapter, I2C_FUNC_I2C))
++ return -ENODEV;
++
++ if (isl12024_i2c_validate_client(client) < 0)
++ return -ENODEV;
++
++ dev_info(&client->dev,
++ "chip found, driver version " DRV_VERSION "\n");
++
++ rtc = rtc_device_register(isl12024_driver.driver.name,
++ &client->dev, &isl12024_rtc_ops,
++ THIS_MODULE);
++
++ if (IS_ERR(rtc))
++ return PTR_ERR(rtc);
++
++ i2c_set_clientdata(client, rtc);
++
++ rc = isl12024_get_status(client, &sr);
++ if (rc < 0) {
++ dev_err(&client->dev, "reading status failed\n");
++ goto exit_unregister;
++ }
++
++ /* Check for power failures and enable the osc */
++ if (sr & ISL12024_REG_SR_RTCF) {
++ dev_warn(&client->dev, "rtc power failure detected, "
++ "please set clock.\n");
++ udelay(50);
++ isl12024_fix_osc(client);
++ }
++
++ /* Register sysfs hooks */
++ rc = device_create_file(&client->dev, &dev_attr_id);
++ if (rc < 0)
++ goto exit_unregister;
++
++ return 0;
++
++exit_unregister:
++ rtc_device_unregister(rtc);
++
++ return rc;
++}
++
++static int
++isl12024_remove(struct i2c_client *client)
++{
++ struct rtc_device *rtc = i2c_get_clientdata(client);
++
++ rtc_device_unregister(rtc);
++ device_remove_file(&client->dev, &dev_attr_id);
++
++ return 0;
++}
++
++static const struct i2c_device_id isl12024_id[] = {
++ { "isl12024", 0 },
++ { }
++};
++MODULE_DEVICE_TABLE(i2c, isl12024_id);
++
++static struct i2c_driver isl12024_driver = {
++ .driver = {
++ .name = "rtc-isl12024",
++ },
++ .probe = isl12024_probe,
++ .remove = isl12024_remove,
++ .id_table = isl12024_id,
++};
++
++/* module init/exit */
++
++static int __init isl12024_init(void)
++{
++ return i2c_add_driver(&isl12024_driver);
++}
++
++static void __exit isl12024_exit(void)
++{
++ i2c_del_driver(&isl12024_driver);
++}
++
++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>");
++MODULE_DESCRIPTION("Intersil ISL12024 driver");
++MODULE_LICENSE("GPL");
++MODULE_VERSION(DRV_VERSION);
++
++module_init(isl12024_init);
++module_exit(isl12024_exit);
diff --git a/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch b/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch
new file mode 100644
index 0000000000..bc43a0a70a
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/007-091005-lm73.patch
@@ -0,0 +1,242 @@
+Index: linux-2.6.29/drivers/hwmon/Kconfig
+===================================================================
+--- linux-2.6.29.orig/drivers/hwmon/Kconfig 2009-10-05 18:27:57.000000000 +0200
++++ linux-2.6.29/drivers/hwmon/Kconfig 2009-10-05 18:28:35.000000000 +0200
+@@ -448,6 +448,15 @@
+ This driver can also be built as a module. If so, the module
+ will be called lm70.
+
++config SENSORS_LM73
++ tristate "National Semiconductor LM73"
++ depends on I2C
++ help
++ If you say yes here you get support for National Semiconductor LM73
++ sensor chips.
++ This driver can also be built as a module. If so, the module
++ will be called lm73.
++
+ config SENSORS_LM75
+ tristate "National Semiconductor LM75 and compatibles"
+ depends on I2C
+Index: linux-2.6.29/drivers/hwmon/lm73.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29/drivers/hwmon/lm73.c 2009-10-05 18:28:49.000000000 +0200
+@@ -0,0 +1,205 @@
++/*
++ * LM73 Sensor driver
++ * Based on LM75
++ *
++ * Copyright (C) 2007, CenoSYS (www.cenosys.com).
++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu).
++ *
++ * Guillaume Ligneul <guillaume.ligneul@cenosys.com>
++ * Adrien Demarez <adrien.demarez@bolloretelecom.eu>
++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at
++ * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
++ */
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/slab.h>
++#include <linux/i2c.h>
++#include <linux/hwmon.h>
++#include <linux/hwmon-sysfs.h>
++#include <linux/err.h>
++
++
++/* Addresses scanned */
++static const unsigned short normal_i2c[] = { 0x48, 0x49, 0x4a, 0x4c,
++ 0x4d, 0x4e, I2C_CLIENT_END };
++
++/* Insmod parameters */
++I2C_CLIENT_INSMOD_1(lm73);
++
++/* LM73 registers */
++#define LM73_REG_INPUT 0x00
++#define LM73_REG_CONF 0x01
++#define LM73_REG_MAX 0x02
++#define LM73_REG_MIN 0x03
++#define LM73_REG_CTRL 0x04
++#define LM73_REG_ID 0x07
++
++#define LM73_ID 0x9001 /* or 0x190 after a swab16() */
++#define DRVNAME "lm73"
++#define LM73_TEMP_MIN (-40)
++#define LM73_TEMP_MAX 150
++
++/*-----------------------------------------------------------------------*/
++
++
++static ssize_t set_temp(struct device *dev, struct device_attribute *da,
++ const char *buf, size_t count)
++{
++ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
++ struct i2c_client *client = to_i2c_client(dev);
++ long temp;
++ short value;
++
++ int status = strict_strtol(buf, 10, &temp);
++ if(status < 0)
++ return status;
++
++ /* Write value */
++ value = (short) SENSORS_LIMIT(temp/250, (LM73_TEMP_MIN*4),
++ (LM73_TEMP_MAX*4)) << 5;
++ i2c_smbus_write_word_data(client, attr->index, swab16(value));
++ return count;
++}
++
++static ssize_t show_temp(struct device *dev, struct device_attribute *da,
++ char *buf)
++{
++ struct sensor_device_attribute *attr = to_sensor_dev_attr(da);
++ struct i2c_client *client = to_i2c_client(dev);
++ /* use integer division instead of equivalent right shift to
++ guarantee arithmetic shift and preserve the sign */
++ int temp = ((s16) (swab16(i2c_smbus_read_word_data(client,
++ attr->index)))*250) / 32;
++ return sprintf(buf, "%d\n", temp);
++}
++
++
++/*-----------------------------------------------------------------------*/
++
++/* sysfs attributes for hwmon */
++
++static SENSOR_DEVICE_ATTR(temp1_max, S_IWUSR | S_IRUGO,
++ show_temp, set_temp, LM73_REG_MAX);
++static SENSOR_DEVICE_ATTR(temp1_min, S_IWUSR | S_IRUGO,
++ show_temp, set_temp, LM73_REG_MIN);
++static SENSOR_DEVICE_ATTR(temp1_input, S_IRUGO,
++ show_temp, NULL, LM73_REG_INPUT);
++
++
++static struct attribute *lm73_attributes[] = {
++ &sensor_dev_attr_temp1_input.dev_attr.attr,
++ &sensor_dev_attr_temp1_max.dev_attr.attr,
++ &sensor_dev_attr_temp1_min.dev_attr.attr,
++
++ NULL
++};
++
++static const struct attribute_group lm73_group = {
++ .attrs = lm73_attributes,
++};
++
++/*-----------------------------------------------------------------------*/
++
++/* device probe and removal */
++
++static int
++lm73_probe(struct i2c_client *client, const struct i2c_device_id *id)
++{
++ struct device *hwmon_dev;
++ int status;
++
++ /* Register sysfs hooks */
++ status = sysfs_create_group(&client->dev.kobj, &lm73_group);
++ if (status)
++ return status;
++
++ hwmon_dev = hwmon_device_register(&client->dev);
++ if (IS_ERR(hwmon_dev)) {
++ status = PTR_ERR(hwmon_dev);
++ goto exit_remove;
++ }
++ i2c_set_clientdata(client, hwmon_dev);
++
++ dev_info(&client->dev, "%s: sensor '%s'\n",
++ dev_name(hwmon_dev), client->name);
++
++ return 0;
++
++exit_remove:
++ sysfs_remove_group(&client->dev.kobj, &lm73_group);
++ return status;
++}
++
++static int lm73_remove(struct i2c_client *client)
++{
++ struct device *hwmon_dev = i2c_get_clientdata(client);
++
++ hwmon_device_unregister(hwmon_dev);
++ sysfs_remove_group(&client->dev.kobj, &lm73_group);
++ i2c_set_clientdata(client, NULL);
++ return 0;
++}
++
++static const struct i2c_device_id lm73_ids[] = {
++ { "lm73", lm73 },
++ { /* LIST END */ }
++};
++MODULE_DEVICE_TABLE(i2c, lm73_ids);
++
++/* Return 0 if detection is successful, -ENODEV otherwise */
++static int lm73_detect(struct i2c_client *new_client, int kind,
++ struct i2c_board_info *info)
++{
++ struct i2c_adapter *adapter = new_client->adapter;
++ u16 id;
++ u8 ctrl;
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA |
++ I2C_FUNC_SMBUS_WORD_DATA))
++ return -ENODEV;
++
++ /* Check device ID */
++ id = i2c_smbus_read_word_data(new_client, LM73_REG_ID);
++ ctrl = i2c_smbus_read_byte_data(new_client, LM73_REG_CTRL);
++ if ((id != LM73_ID) || (ctrl & 0x10))
++ return -ENODEV;
++
++ strlcpy(info->type, "lm73", I2C_NAME_SIZE);
++
++ return 0;
++}
++
++static struct i2c_driver lm73_driver = {
++ .class = I2C_CLASS_HWMON,
++ .driver = {
++ .name = "lm73",
++ },
++ .probe = lm73_probe,
++ .remove = lm73_remove,
++ .id_table = lm73_ids,
++ .detect = lm73_detect,
++ .address_data = &addr_data,
++};
++
++/* module glue */
++
++static int __init sensors_lm73_init(void)
++{
++ return i2c_add_driver(&lm73_driver);
++}
++
++static void __exit sensors_lm73_exit(void)
++{
++ i2c_del_driver(&lm73_driver);
++}
++
++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>");
++MODULE_DESCRIPTION("LM73 driver");
++MODULE_LICENSE("GPL");
++
++module_init(sensors_lm73_init);
++module_exit(sensors_lm73_exit);
+Index: linux-2.6.29/drivers/hwmon/Makefile
+===================================================================
+--- linux-2.6.29.orig/drivers/hwmon/Makefile 2009-10-05 18:27:57.000000000 +0200
++++ linux-2.6.29/drivers/hwmon/Makefile 2009-10-05 18:28:35.000000000 +0200
+@@ -54,6 +54,7 @@
+ obj-$(CONFIG_SENSORS_LIS3LV02D) += lis3lv02d.o hp_accel.o
+ obj-$(CONFIG_SENSORS_LM63) += lm63.o
+ obj-$(CONFIG_SENSORS_LM70) += lm70.o
++obj-$(CONFIG_SENSORS_LM73) += lm73.o
+ obj-$(CONFIG_SENSORS_LM75) += lm75.o
+ obj-$(CONFIG_SENSORS_LM77) += lm77.o
+ obj-$(CONFIG_SENSORS_LM78) += lm78.o
diff --git a/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch b/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch
new file mode 100644
index 0000000000..2c5239d13a
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/008-091005-spi.patch
@@ -0,0 +1,227 @@
+Index: linux-2.6.31/arch/powerpc/platforms/83xx/mpc831x_rdb.c
+===================================================================
+--- linux-2.6.31.orig/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-09-10 00:13:59.000000000 +0200
++++ linux-2.6.31/arch/powerpc/platforms/83xx/mpc831x_rdb.c 2009-10-20 15:32:51.000000000 +0200
+@@ -14,18 +14,176 @@
+ */
+
+ #include <linux/pci.h>
++#include <linux/interrupt.h>
+ #include <linux/of_platform.h>
++#include <linux/spi/spi.h>
++#include <linux/fsl_devices.h>
+
+ #include <asm/time.h>
+ #include <asm/ipic.h>
+ #include <asm/udbg.h>
+ #include <sysdev/fsl_pci.h>
++#include <sysdev/fsl_soc.h>
+
+ #include "mpc83xx.h"
+
+ /*
+ * Setup the architecture
+ */
++struct gpio {
++ __be32 gpdir;
++ __be32 gpodr;
++ __be32 gpdat;
++ __be32 gpier;
++ __be32 gpimr;
++ __be32 gpicr;
++} __attribute__ ((packed));
++static struct gpio *gpio_regs;
++
++static int __init of_fsl_spi_probe(char *type, char *compatible, u32 sysclk,
++ struct spi_board_info *board_infos,
++ unsigned int num_board_infos,
++ void (*cs_control)(struct spi_device *dev,
++ bool on))
++{
++ struct device_node *np;
++ unsigned int i = 0;
++
++ for_each_compatible_node(np, type, compatible) {
++ int ret;
++ unsigned int j;
++ const void *prop;
++ struct resource res[2];
++ struct platform_device *pdev;
++ struct fsl_spi_platform_data pdata = {
++ .cs_control = cs_control,
++ };
++
++ memset(res, 0, sizeof(res));
++
++ pdata.sysclk = sysclk;
++
++ prop = of_get_property(np, "reg", NULL);
++ if (!prop)
++ goto err;
++ pdata.bus_num = *(u32 *)prop;
++
++ prop = of_get_property(np, "cell-index", NULL);
++ if (prop)
++ i = *(u32 *)prop;
++
++ prop = of_get_property(np, "mode", NULL);
++ if (prop && !strcmp(prop, "cpu-qe"))
++ pdata.qe_mode = 1;
++
++ for (j = 0; j < num_board_infos; j++) {
++ if (board_infos[j].bus_num == pdata.bus_num)
++ pdata.max_chipselect++;
++ }
++
++ if (!pdata.max_chipselect)
++ continue;
++
++ ret = of_address_to_resource(np, 0, &res[0]);
++ if (ret)
++ goto err;
++
++ ret = of_irq_to_resource(np, 0, &res[1]);
++ if (ret == NO_IRQ)
++ goto err;
++
++ pdev = platform_device_alloc("mpc83xx_spi", i);
++ if (!pdev)
++ goto err;
++
++ ret = platform_device_add_data(pdev, &pdata, sizeof(pdata));
++ if (ret)
++ goto unreg;
++
++ ret = platform_device_add_resources(pdev, res,
++ ARRAY_SIZE(res));
++ if (ret)
++ goto unreg;
++
++ ret = platform_device_add(pdev);
++ if (ret)
++ goto unreg;
++
++ goto next;
++unreg:
++ platform_device_del(pdev);
++err:
++ pr_err("%s: registration failed\n", np->full_name);
++next:
++ i++;
++ }
++
++ return i;
++}
++
++static int __init fsl_spi_init(struct spi_board_info *board_infos,
++ unsigned int num_board_infos,
++ void (*cs_control)(struct spi_device *spi,
++ bool on))
++{
++ u32 sysclk = -1;
++ int ret;
++
++ /* SPI controller is either clocked from QE or SoC clock */
++ sysclk = get_brgfreq();
++ if (sysclk == -1) {
++ sysclk = fsl_get_sys_freq();
++ if (sysclk == -1)
++ return -ENODEV;
++ }
++
++ ret = of_fsl_spi_probe(NULL, "fsl,spi", sysclk, board_infos,
++ num_board_infos, cs_control);
++ if (!ret)
++ of_fsl_spi_probe("spi", "fsl_spi", sysclk, board_infos,
++ num_board_infos, cs_control);
++
++ return spi_register_board_info(board_infos, num_board_infos);
++}
++
++static void mpc83xx_spi_cs_control(struct spi_device *spi, bool on)
++{
++ if (on)
++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14));
++ else
++ clrbits32(&gpio_regs->gpdat, 1 << (31 - 14));
++}
++
++static struct spi_board_info mpc8313_spi_boardinfo = {
++ .bus_num = 0x7000,
++ .chip_select = 0,
++ .max_speed_hz = 50000000,
++ .modalias = "spidev",
++};
++
++static int __init mpc8313_spi_init(void)
++{
++ __be32 __iomem *psicrl;
++
++ /* System I/O Configuration Register Low */
++ psicrl = ioremap(get_immrbase() + MPC83XX_SICRL_OFFS, 0x4);
++ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20);
++ if (!psicrl || !gpio_regs)
++ return -ENOMEM;
++
++ clrbits32(psicrl, 0x03F00000);
++ setbits32(psicrl, 0x30000000);
++ iounmap(psicrl);
++
++ /* set GPIO13 as output */
++ setbits32(&gpio_regs->gpdir, 1 << (31 - 14));
++ clrbits32(&gpio_regs->gpodr, 1 << (31 - 14));
++ setbits32(&gpio_regs->gpdat, 1 << (31 - 14));
++
++ return fsl_spi_init(&mpc8313_spi_boardinfo, 1, mpc83xx_spi_cs_control);
++}
++machine_device_initcall(mpc831x_rdb, mpc8313_spi_init);
++
+ static void __init mpc831x_rdb_setup_arch(void)
+ {
+ #ifdef CONFIG_PCI
+Index: linux-2.6.31/drivers/spi/spi_mpc8xxx.c
+===================================================================
+--- linux-2.6.31.orig/drivers/spi/spi_mpc8xxx.c 2009-09-10 00:13:59.000000000 +0200
++++ linux-2.6.31/drivers/spi/spi_mpc8xxx.c 2009-10-20 15:32:55.000000000 +0200
+@@ -285,7 +285,9 @@
+ if (pm)
+ pm--;
+
+- cs->hw_mode |= SPMODE_PM(pm);
++ cs->hw_mode = 0x0F700000;
++ mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, cs->hw_mode);
++
+ regval = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
+ if (cs->hw_mode != regval) {
+ unsigned long flags;
+@@ -445,7 +447,7 @@
+ cs->hw_mode = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
+ /* mask out bits we are going to set */
+ cs->hw_mode &= ~(SPMODE_CP_BEGIN_EDGECLK | SPMODE_CI_INACTIVEHIGH
+- | SPMODE_REV | SPMODE_LOOP);
++ | SPMODE_REV );
+
+ if (spi->mode & SPI_CPHA)
+ cs->hw_mode |= SPMODE_CP_BEGIN_EDGECLK;
+@@ -453,8 +455,10 @@
+ cs->hw_mode |= SPMODE_CI_INACTIVEHIGH;
+ if (!(spi->mode & SPI_LSB_FIRST))
+ cs->hw_mode |= SPMODE_REV;
+- if (spi->mode & SPI_LOOP)
+- cs->hw_mode |= SPMODE_LOOP;
++
++ cs->hw_mode = 0x0F700000;
++ mpc8xxx_spi_write_reg(&mpc8xxx_spi->base->mode, cs->hw_mode);
++ cs->hw_mode = mpc8xxx_spi_read_reg(&mpc8xxx_spi->base->mode);
+
+ retval = mpc8xxx_spi_setup_transfer(spi, NULL);
+ if (retval < 0) {
+@@ -602,7 +606,7 @@
+ INIT_LIST_HEAD(&mpc8xxx_spi->queue);
+
+ mpc8xxx_spi->workqueue = create_singlethread_workqueue(
+- dev_name(master->dev.parent));
++ dev_name(dev));
+ if (mpc8xxx_spi->workqueue == NULL) {
+ ret = -EBUSY;
+ goto free_irq;
diff --git a/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch b/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch
new file mode 100644
index 0000000000..fd20dccea3
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/011-090115-gpio.patch
@@ -0,0 +1,440 @@
+Index: linux-2.6.29/drivers/char/Kconfig
+===================================================================
+--- linux-2.6.29.orig/drivers/char/Kconfig 2009-03-24 00:12:14.000000000 +0100
++++ linux-2.6.29/drivers/char/Kconfig 2009-04-01 17:37:55.000000000 +0200
+@@ -1020,6 +1020,24 @@
+ tristate "NEC VR4100 series General-purpose I/O Unit support"
+ depends on CPU_VR41XX
+
++config GPIO_MPC8313
++ tristate "mpc8313e gpio"
++ depends on PPC_MPC831x
++ select INPUT
++ default y
++ help
++ Give userspace access to the GPIO pins on the MPC8313E devices.
++
++config EXIO_MPC8313
++ tristate "mpc8313e exio"
++ depends on PPC_MPC831x
++ select INPUT
++ select LEDS_CLASS
++ default y
++ help
++ Give userspace access to the Extenrder IO pins on the CPE board.
++
++
+ config RAW_DRIVER
+ tristate "RAW driver (/dev/raw/rawN)"
+ depends on BLOCK
+Index: linux-2.6.29/drivers/char/Makefile
+===================================================================
+--- linux-2.6.29.orig/drivers/char/Makefile 2009-03-24 00:12:14.000000000 +0100
++++ linux-2.6.29/drivers/char/Makefile 2009-04-01 17:37:55.000000000 +0200
+@@ -109,6 +109,8 @@
+ obj-$(CONFIG_PS3_FLASH) += ps3flash.o
+
+ obj-$(CONFIG_JS_RTC) += js-rtc.o
++obj-$(CONFIG_GPIO_MPC8313) += mpc8313e_gpio.o
++obj-$(CONFIG_EXIO_MPC8313) += mpc8313e_exio.o
+ js-rtc-y = rtc.o
+
+ # Files generated that shall be removed upon make clean
+Index: linux-2.6.29/drivers/char/mpc8313e_exio.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29/drivers/char/mpc8313e_exio.c 2009-04-01 17:37:55.000000000 +0200
+@@ -0,0 +1,240 @@
++/*
++* CPE Extender io driver
++*
++* Copyright (C) 2007, CenoSYS (www.cenosys.com).
++*
++* Alexandre Coffignal <alexandre.coffignal@cenosys.com>
++* Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++*
++* This software program is licensed subject to the GNU General Public License
++* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++*
++* Allows a user space process to control the EXIO pins.
++*
++*/
++
++#include <linux/fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <asm/uaccess.h>
++#include <asm/io.h>
++#include <linux/of_platform.h>
++#include <sysdev/fsl_soc.h>
++#include <linux/cdev.h>
++#include <linux/leds.h>
++
++static char module_name[] = "exio";
++
++
++#define NB_EXIO 8
++#define DEFAULT_STATE 0x58
++#define EXIO_BASE 0xfa000000
++#define EXIO_SIZE 0x2
++#define EXIO_LED_MASK 0x01
++
++static int major = 0;
++static u8 exio_state = DEFAULT_STATE;
++static void *exio_io = NULL;
++static struct resource *exio_mem = NULL;
++static struct class * exio_class = NULL;
++
++
++static void
++exio_led_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
++{
++ if ( value )
++ exio_state &= ~EXIO_LED_MASK;
++ else
++ exio_state |= EXIO_LED_MASK;
++
++ iowrite8(exio_state, exio_io);
++}
++
++static struct led_classdev exio_led = {
++ .name = "boc:blue:status",
++ .brightness_set = exio_led_set,
++};
++
++static inline int
++exio_led_init(void)
++{
++ return led_classdev_register(NULL, &exio_led);
++}
++
++
++static inline void
++exio_led_exit(void)
++{
++ led_classdev_unregister(&exio_led);
++}
++
++
++static inline void
++exio_led_suspend(void)
++{
++ led_classdev_suspend(&exio_led);
++}
++
++
++static inline void
++exio_led_resume(void)
++{
++ led_classdev_resume(&exio_led);
++}
++
++
++static ssize_t exio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
++{
++ unsigned m = iminor(file->f_path.dentry->d_inode);
++ size_t i;
++ char mask;
++ int err = 0;
++
++ for (i = 0; i < len; ++i) {
++ char c;
++ if (get_user(c, data + i))
++ return -EFAULT;
++
++ mask=(1<<(7-m));
++ switch (c) {
++ case '0':
++ /*Clear exio level */
++ exio_state&=~mask;
++ iowrite8(exio_state, exio_io);
++ break;
++ case '1':
++ /*Set exio level */
++ exio_state|=mask;
++ iowrite8(exio_state, exio_io);
++ break;
++ default:
++ printk(KERN_DEBUG "exio%2d bad setting: chr<0x%2x>\n",
++ m, (int)c);
++ err++;
++ }
++ }
++ if (err)
++ return -EINVAL;
++
++ return len;
++}
++
++
++static ssize_t exio_read(struct file *file, char __user * buf,
++ size_t len, loff_t * ppos)
++{
++ unsigned m = iminor(file->f_path.dentry->d_inode);
++ int value;
++ char mask;
++ char state=ioread8(exio_io);
++
++ mask=(1<<(7-m));
++ value=state&mask;
++ if (put_user(value ? '1' : '0', buf))
++ return -EFAULT;
++ return 1;
++
++}
++
++static int exio_open(struct inode *inode, struct file *file)
++{
++ return 0;
++}
++
++static int exio_close(struct inode *inode, struct file *file)
++{
++ printk(KERN_DEBUG "close()\n");
++ return 0;
++}
++
++struct file_operations exio_fops =
++{
++ .owner = THIS_MODULE,
++ .read = exio_read,
++ .write = exio_write,
++ .open = exio_open,
++ .release = exio_close /* correspond a close */
++};
++
++
++static void exio_cleanup(void)
++{
++ if ( exio_mem )
++ release_mem_region(EXIO_BASE, EXIO_SIZE);
++ exio_mem = NULL;
++ exio_io = NULL;
++
++ if ( exio_class )
++ class_destroy(exio_class);
++ exio_class = NULL;
++
++ unregister_chrdev(major, module_name);
++}
++
++
++static int __init exio_init(void)
++{
++ int rc, i;
++
++ rc = register_chrdev(major, module_name, &exio_fops);
++ if ( rc < 0 )
++ return rc;
++
++ if ( major == 0 ) {
++ major = rc; /* accept dynamic major number */
++ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major);
++ }
++
++ exio_class = class_create(THIS_MODULE, "exio");
++ if ( exio_class == NULL )
++ goto out_cleanup;
++
++ for (i = 0; i < NB_EXIO; i++) {
++ device_create(exio_class, NULL, MKDEV(major, i) ,NULL, "exio%i", i);
++ }
++
++ /* System I/O Configuration Register Low */
++ exio_mem = request_mem_region(EXIO_BASE, EXIO_SIZE, "exio");
++ if ( exio_mem == NULL )
++ goto out_cleanup;
++
++ exio_io = ioremap(EXIO_BASE, EXIO_SIZE);
++ if ( exio_io == NULL )
++ goto out_cleanup;
++
++ /* Output default exio state */
++ iowrite8(exio_state, exio_io);
++
++ /* Register led class entry for driving the Status led */
++ exio_led_init();
++
++ return 0;
++
++out_cleanup:
++ exio_cleanup();
++ return -ENOMEM;
++}
++
++static void __exit exio_exit(void)
++{
++ /* Unregister Status led */
++ exio_led_exit();
++
++ /* Cleanup all other gears */
++ exio_cleanup();
++}
++
++
++module_param(major, int, 0644);
++MODULE_PARM_DESC(major, "Static major number (none = dynamic)");
++MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>");
++MODULE_DESCRIPTION("boc01 exio management");
++MODULE_LICENSE("GPL");
++
++module_init(exio_init);
++module_exit(exio_exit);
++
++
+Index: linux-2.6.29/drivers/char/mpc8313e_gpio.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.29/drivers/char/mpc8313e_gpio.c 2009-04-01 17:37:55.000000000 +0200
+@@ -0,0 +1,148 @@
++/*
++* mpc8313e gpio driver
++*
++*
++* Copyright (C) 2007, CenoSYS (www.cenosys.com).
++* Alexandre Coffignal
++* alexandre.coffignal@cenosys.com
++*
++* This software program is licensed subject to the GNU General Public License
++* (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++*
++* Allows a user space process to control the GPIO pins.
++*
++*/
++
++#include <linux/fs.h>
++#include <linux/module.h>
++#include <linux/errno.h>
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <asm/uaccess.h>
++#include <asm/io.h>
++#include <linux/of_platform.h>
++#include <sysdev/fsl_soc.h>
++
++static char module_name[] = "gpio";
++#define NB_GPIO 8
++static int major = 0;
++struct gpio {
++ __be32 gpdir;
++ __be32 gpodr;
++ __be32 gpdat;
++ __be32 gpier;
++ __be32 gpimr;
++ __be32 gpicr;
++} __attribute__ ((packed));
++static struct gpio *gpio_regs;
++
++static ssize_t mpc8313e_gpio_write(struct file *file, const char __user *data, size_t len, loff_t *ppos)
++{
++ unsigned m = iminor(file->f_path.dentry->d_inode);
++ size_t i;
++ int err = 0;
++
++ for (i = 0; i < len; ++i) {
++ char c;
++ if (get_user(c, data + i))
++ return -EFAULT;
++ /* set GPIO as output */
++ setbits32(&gpio_regs->gpdir, 1 << (31 - m));
++ clrbits32(&gpio_regs->gpodr, 1 << (31 - m));
++ switch (c) {
++ case '0':
++ /*Set GPIO level */
++ clrbits32(&gpio_regs->gpdat, 1 << (31 - m));
++ break;
++ case '1':
++ /*Set GPIO level */
++ setbits32(&gpio_regs->gpdat, 1 << (31 - m));
++ break;
++ default:
++ printk(KERN_DEBUG "io%2d bad setting: chr<0x%2x>\n",
++ m, (int)c);
++ err++;
++ }
++ }
++ if (err)
++ return -EINVAL;
++
++ return len;
++}
++
++static ssize_t mpc8313e_gpio_read(struct file *file, char __user * buf, size_t len, loff_t * ppos)
++{
++ unsigned m = iminor(file->f_path.dentry->d_inode);
++ int value;
++ value=in_be32(&gpio_regs->gpdat)&(1 << (31 - m));
++ if (put_user(value ? '1' : '0', buf))
++ return -EFAULT;
++ return 1;
++
++
++}
++
++
++
++static int mpc8313e_gpio_open(struct inode *inode, struct file *file)
++{
++ return 0;
++}
++
++static int mpc8313e_gpio_close(struct inode *inode, struct file *file)
++{
++ return 0;
++}
++
++struct file_operations mpc8313e_gpio_fops =
++{
++ .owner = THIS_MODULE,
++ .read = mpc8313e_gpio_read,
++ .write = mpc8313e_gpio_write,
++ .open = mpc8313e_gpio_open,
++ .release = mpc8313e_gpio_close
++};
++static struct class * gpio_class;
++static int __init mpc8313e_gpio_init(void)
++{
++ int rc,i;
++
++ rc = register_chrdev(major, module_name, &mpc8313e_gpio_fops);
++ if (rc < 0) {
++ return rc;
++ }
++
++ if (major == 0) {
++ major = rc; /* accept dynamic major number */
++ printk(KERN_INFO "%s: successfully loaded with major %d\n",module_name, major);
++
++ }
++ gpio_class = class_create(THIS_MODULE, "gpio");
++
++ for (i = 0; i < NB_GPIO; i++)
++ {
++ device_create(gpio_class, NULL, MKDEV(major, i) ,NULL, "gpio%d",i);
++
++ }
++
++ /* System I/O Configuration Register Low */
++ gpio_regs = ioremap(get_immrbase() + 0xc00, 0x20);
++ if (!gpio_regs)
++ return -ENOMEM;
++ return 0;
++}
++
++static void __exit mpc8313e_gpio_cleanup(void)
++{
++ unregister_chrdev(major, module_name);
++}
++module_param(major, int, 0644);
++MODULE_PARM_DESC(major, "Static major number (none = dynamic)");
++MODULE_AUTHOR("Alexandre Coffignal <alexandre.coffignal@cenosys.com>");
++MODULE_DESCRIPTION("mpc8313e GPIO");
++MODULE_LICENSE("GPL");
++
++module_init(mpc8313e_gpio_init);
++module_exit(mpc8313e_gpio_cleanup);
++
++
diff --git a/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch b/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch
new file mode 100644
index 0000000000..d82f8b1e54
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/012-091019-capsense.patch
@@ -0,0 +1,858 @@
+Index: linux-2.6.31/drivers/input/misc/Kconfig
+===================================================================
+--- linux-2.6.31.orig/drivers/input/misc/Kconfig 2009-10-19 16:32:13.000000000 +0200
++++ linux-2.6.31/drivers/input/misc/Kconfig 2009-10-19 16:49:22.000000000 +0200
+@@ -269,4 +269,14 @@
+
+ To compile this driver as a module, choose M here: the
+ module will be called dm355evm_keys.
++
++config INPUT_CAPSENSE_BTNS
++ tristate "CAPSENSE CY8C201xx buttons interface"
++ select INPUT_POLLDEV
++ select LEDS_CLASS
++ help
++ To compile this driver as a module, choose M here:
++ the module will be called capsense-btns.
++ To change poll interval, invoque poll parameter in msecs.
++
+ endif
+Index: linux-2.6.31/drivers/input/misc/Makefile
+===================================================================
+--- linux-2.6.31.orig/drivers/input/misc/Makefile 2009-10-19 16:32:13.000000000 +0200
++++ linux-2.6.31/drivers/input/misc/Makefile 2009-10-19 16:49:22.000000000 +0200
+@@ -26,3 +26,4 @@
+ obj-$(CONFIG_INPUT_UINPUT) += uinput.o
+ obj-$(CONFIG_INPUT_WISTRON_BTNS) += wistron_btns.o
+ obj-$(CONFIG_INPUT_YEALINK) += yealink.o
++obj-$(CONFIG_INPUT_CAPSENSE_BTNS) += capsense-btns.o
+Index: linux-2.6.31/drivers/input/misc/capsense-btns.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.31/drivers/input/misc/capsense-btns.c 2009-10-19 16:49:22.000000000 +0200
+@@ -0,0 +1,440 @@
++/*
++ * CAPSENSE Interface driver
++ *
++ *
++ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu).
++ *
++ * Guillaume Ligneul <guillaume.ligneul@gmail.com>
++ * Adrien Demarez <jeremy.laine@bolloretelecom.eu>
++ * Jeremy Lainé <jeremy.laine@bolloretelecom.eu>
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++ */
++
++#include <linux/init.h>
++#include <linux/input-polldev.h>
++#include <linux/ioport.h>
++#include <linux/module.h>
++#include <linux/i2c.h>
++#include <linux/leds.h>
++
++#define DRIVER_NAME "capsense"
++
++#define BUTTONS_POLL_INTERVAL 30 /* msec */
++
++#define CAP_INPUT_PORT(port) (0x00+(port))
++#define CAP_STATUS_PORT(port) (0x02+(port))
++#define CAP_OUTPUT_PORT(port) (0x04+(port))
++#define CAP_CS_ENABLE(port) (0x06+(port))
++#define CAP_GPIO_ENABLE(port) (0x08+(port))
++#define CAP_INVERSION_MASK(port) (0x0A+(port))
++#define CAP_INT_MASK(port) (0x0C+(port))
++#define CAP_STATUS_HOLD_MSK(port) (0x0E+(port))
++#define CAP_DM_PULL_UP(port) (0x10+(4*(port)))
++#define CAP_DM_STRONG(port) (0x11+(4*(port)))
++#define CAP_DM_HIGHZ(port) (0x12+(4*(port)))
++#define CAP_OD_LOW(port) (0x13+(4*(port)))
++#define CAP_PWM_ENABLE(port) (0x18+(port))
++#define CAP_PWM_MODE_DC 0x1A
++#define CAP_PWM_DELAY 0x1B
++#define CAP_OP_SEL(port,bit) (0x1C+(25*(port))+(5*(bit)))
++#define CAP_READ_STATUS(port) (0x88+(port))
++
++#define CAP_CS(command,port,bit) ((command)+(5*(port))+(bit))
++#define CAP_CS_FINGER_TH(port,bit) CAP_CS(0x61,port,bit)
++#define CAP_CS_IDAC(port,bit) CAP_CS(0x6B,port,bit)
++
++#define CAP_DEVICE_ID 0x7A
++#define CAP_DEVICE_STATUS 0x7B
++#define CAP_I2C_ADDR_DM 0x7C
++
++#define CAP_COMMAND_REG 0xA0
++#define CAP_COMMAND_STORE_NVM 0x01
++#define CAP_COMMAND_RESTORE_FACTORY 0x02
++#define CAP_COMMAND_RECONFIGURE 0x06
++#define CAP_COMMAND_NORMAL_MODE 0x07
++#define CAP_COMMAND_SETUP_MODE 0x08
++
++#define CAP_NLEDS 5
++
++static int poll_interval = BUTTONS_POLL_INTERVAL;
++module_param_named(poll, poll_interval, uint, 0);
++MODULE_PARM_DESC(poll, "poll interval in msec (30=default)");
++
++struct capsense_led {
++ struct led_classdev cdev;
++ struct capsense_ctx *capsense;
++ int port;
++ int bit;
++};
++
++struct capsense_ctx {
++ struct input_polled_dev *ipdev;
++ struct i2c_client *client;
++ unsigned char key_state;
++ struct capsense_led leds[CAP_NLEDS];
++ unsigned char led_state[2];
++ struct mutex mutex;
++};
++
++static unsigned short input_keymap[] = {
++ // GP0
++ KEY_F1,
++ KEY_ENTER,
++ KEY_DOWN,
++ KEY_BACKSPACE,
++ // GP1
++ KEY_UP,
++};
++
++struct capsense_keymap {
++ char *name;
++ int port, bit;
++};
++
++static struct capsense_keymap phys_keymap[] = {
++ { "info", 0, 4 },
++ { "ok", 0, 2 },
++ { "down", 0, 3 },
++ { "back", 0, 0 },
++ { "up", 1, 4 },
++};
++
++
++struct capsense_ledmap {
++ char *name;
++ int port, bit;
++};
++
++static struct capsense_ledmap ledmap[CAP_NLEDS] = {
++ { "capsense:blue:back", 0, 1 },
++ { "capsense:blue:info", 1, 0 },
++ { "capsense:blue:down", 1, 1 },
++ { "capsense:blue:ok", 1, 2 },
++ { "capsense:blue:up", 1, 3 },
++};
++
++
++/*
++ * Buttons events handling
++ */
++
++static void handle_buttons(struct input_polled_dev *dev)
++{
++ struct capsense_ctx *capsense = dev->private;
++ u8 port_value;
++ u8 new_state = 0;
++ int port;
++ u8 changed;
++ int i;
++
++ mutex_lock(&capsense->mutex);
++
++ // read status
++ port = -1;
++ port_value = 0;
++ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) {
++ if ( phys_keymap[i].port != port ) {
++ port = phys_keymap[i].port;
++ port_value = i2c_smbus_read_byte_data(capsense->client, CAP_READ_STATUS(port));
++ }
++
++ if ( port_value & (1 << phys_keymap[i].bit) )
++ new_state |= (1 << i);
++ }
++
++ mutex_unlock(&capsense->mutex);
++
++ // update keyboard state
++ changed = capsense->key_state ^ new_state;
++ for (i = 0; i < ARRAY_SIZE(input_keymap); i++)
++ if (changed & (1 << i))
++ input_report_key(dev->input, input_keymap[i], (new_state & (1 << i)));
++ capsense->key_state = new_state;
++ input_sync(dev->input);
++}
++
++
++/*
++ * LEDs management
++ */
++
++static void
++capsense_led_set(struct led_classdev *led_cdev,
++ enum led_brightness value)
++{
++ struct capsense_led *led = (struct capsense_led *) led_cdev;
++ struct capsense_ctx *capsense = led->capsense;
++ int port = led->port;
++ unsigned char mask = (1 << led->bit);
++
++ if ( value )
++ capsense->led_state[port] |= mask;
++ else
++ capsense->led_state[port] &= ~mask;
++
++ mutex_lock(&capsense->mutex);
++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(port), capsense->led_state[port]);
++ mutex_unlock(&capsense->mutex);
++}
++
++static void
++capsense_led_enable(struct capsense_led *led, int state)
++{
++ struct capsense_ctx *capsense = led->capsense;
++
++ mutex_lock(&capsense->mutex);
++ i2c_smbus_write_byte_data(capsense->client, CAP_OP_SEL(led->port, led->bit), state ? 0x00 : 0x80);
++ mutex_unlock(&capsense->mutex);
++}
++
++static int
++capsense_led_init(struct capsense_ctx *capsense)
++{
++ int i;
++ int ret;
++
++ for (i = 0; i < CAP_NLEDS; i++) {
++ struct capsense_led *led = &(capsense->leds[i]);
++
++ led->cdev.name = ledmap[i].name;
++ led->cdev.brightness_set = capsense_led_set;
++ led->capsense = capsense;
++ led->port = ledmap[i].port;
++ led->bit = ledmap[i].bit;
++
++ ret = led_classdev_register(&capsense->ipdev->input->dev, &led->cdev);
++ if ( ret < 0 )
++ return -1;
++
++ capsense_led_enable(led, 1);
++ }
++
++ /* Switch all leds off */
++ mutex_lock(&capsense->mutex);
++
++ capsense->led_state[0] = 0x00;
++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(0), 0x00);
++
++ capsense->led_state[1] = 0x00;
++ i2c_smbus_write_byte_data(capsense->client, CAP_OUTPUT_PORT(1), 0x00);
++
++ mutex_unlock(&capsense->mutex);
++
++ return 0;
++}
++
++static void
++capsense_led_exit(struct capsense_ctx *capsense)
++{
++ int i;
++
++ for (i = 0; i < CAP_NLEDS; i++) {
++ led_classdev_unregister(&capsense->leds[i].cdev);
++ }
++}
++
++static inline void
++capsense_led_suspend(struct capsense_ctx *capsense)
++{
++ int i;
++
++ for (i = 0; i < CAP_NLEDS; i++) {
++ struct capsense_led *led = &(capsense->leds[i]);
++
++ led_classdev_suspend(&led->cdev);
++ capsense_led_enable(led, 0);
++ }
++}
++
++static inline void
++capsense_led_resume(struct capsense_ctx *capsense)
++{
++ int i;
++
++ for (i = 0; i < CAP_NLEDS; i++) {
++ struct capsense_led *led = &(capsense->leds[i]);
++
++ capsense_led_enable(led, 1);
++ led_classdev_resume(&led->cdev);
++ }
++}
++
++
++/*
++ * Device configuration through procfs entries
++ */
++
++#ifdef CONFIG_PROC_FS
++#include "capsense-procfs.c"
++#endif
++
++
++/*
++ * Device initialisation
++ */
++
++static int
++capsense_detect(struct i2c_client *client, int kind, struct i2c_board_info *info)
++{
++ struct i2c_adapter *adapter = client->adapter;
++
++ if (!i2c_check_functionality(adapter, I2C_FUNC_I2C))
++ return -ENODEV;
++
++ // FIXME: how do we identify the device?
++
++ return 0;
++}
++
++static int
++capsense_probe(struct i2c_client *client, const struct i2c_device_id *id)
++{
++ struct capsense_ctx *capsense;
++ struct input_polled_dev *ipdev;
++ struct input_dev *input;
++ int rc=0, i=0;
++
++ capsense = kzalloc(sizeof(*capsense), GFP_KERNEL);
++ if (!capsense)
++ return -ENOMEM;
++
++ mutex_init(&capsense->mutex);
++
++ ipdev = input_allocate_polled_device();
++ if (!ipdev) {
++ rc = -ENOMEM;
++ goto out_allocated;
++ }
++
++ capsense->key_state = 0;
++ capsense->ipdev = ipdev;
++ capsense->client = client;
++ i2c_set_clientdata(client, capsense);
++
++ ipdev->poll = handle_buttons;
++ ipdev->private = capsense;
++ ipdev->poll_interval = poll_interval;
++
++ input = ipdev->input;
++ input->name = "Capsense buttons";
++ input->phys = "capsense/input0";
++ input->id.bustype = BUS_I2C;
++ input->dev.parent = &client->dev;
++ input->keycode = input_keymap;
++ input->keycodemax = ARRAY_SIZE(input_keymap);
++ input->keycodesize = sizeof(unsigned short);
++
++ input_set_capability(input, EV_MSC, MSC_SCAN);
++ set_bit(EV_KEY, ipdev->input->evbit);
++
++ for (i = 0; i < ARRAY_SIZE(input_keymap); i++)
++ set_bit(input_keymap[i], ipdev->input->keybit);
++
++ rc = input_register_polled_device(ipdev);
++ if (rc)
++ goto out_polled;
++
++ rc = capsense_led_init(capsense);
++ if (rc)
++ goto out_registered;
++
++#ifdef CONFIG_PROC_FS
++ /* Create /proc entries for hardware device configuration */
++ capsense_proc_init(capsense);
++#endif
++
++ return 0;
++
++out_registered:
++ input_unregister_polled_device(ipdev);
++out_polled:
++ input_free_polled_device(ipdev);
++out_allocated:
++ kfree(capsense);
++ return rc;
++}
++
++static int
++capsense_remove(struct i2c_client *client)
++{
++ struct capsense_ctx *capsense = i2c_get_clientdata(client);
++
++ capsense_led_exit(capsense);
++ input_unregister_polled_device(capsense->ipdev);
++ input_free_polled_device(capsense->ipdev);
++ kfree(capsense);
++ return 0;
++}
++
++/*
++ * Power management
++ */
++
++#ifdef CONFIG_PM
++static int capsense_suspend(struct i2c_client *client, pm_message_t mesg)
++{
++ struct capsense_ctx *capsense = i2c_get_clientdata(client);
++
++ dev_info(&client->dev, "suspend\n");
++
++ capsense_led_suspend(capsense);
++
++ return 0;
++}
++
++static int capsense_resume(struct i2c_client *client)
++{
++ struct capsense_ctx *capsense = i2c_get_clientdata(client);
++
++ dev_info(&client->dev, "resume\n");
++
++ capsense_led_resume(capsense);
++
++ return 0;
++}
++#endif
++
++
++/*
++ * Driver initialisation
++ */
++
++struct i2c_device_id capsense_idtable[] = {
++ { "capsense", 0 },
++ { }
++};
++MODULE_DEVICE_TABLE(i2c, capsense_idtable);
++
++static struct i2c_driver capsense_driver = {
++ .driver = {
++ .name = DRIVER_NAME,
++ },
++ .detect = capsense_detect,
++ .probe = capsense_probe,
++ .remove = capsense_remove,
++ .id_table = capsense_idtable,
++#ifdef CONFIG_PM
++ .suspend = capsense_suspend,
++ .resume = capsense_resume,
++#endif
++};
++
++static int __init capsense_buttons_init(void)
++{
++ return i2c_add_driver(&capsense_driver);
++}
++
++static void __exit capsense_buttons_exit(void)
++{
++ i2c_del_driver(&capsense_driver);
++}
++
++MODULE_AUTHOR("Guillaume Ligneul <guillaume.ligneul@cenosys.com>");
++MODULE_DESCRIPTION("Capsense CY8C201xx Input driver");
++MODULE_LICENSE("GPL");
++module_init(capsense_buttons_init);
++module_exit(capsense_buttons_exit);
+Index: linux-2.6.31/drivers/input/misc/capsense-procfs.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.31/drivers/input/misc/capsense-procfs.c 2009-10-19 16:50:35.000000000 +0200
+@@ -0,0 +1,380 @@
++/*
++ * CAPSENSE Interface driver
++ * Device setup using procfs
++ *
++ * Copyright (C) 2008, Goobie (www.goobie.fr).
++ *
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++ */
++
++#include <linux/proc_fs.h>
++#include <linux/uaccess.h>
++
++
++struct capsense_proc_data {
++ struct capsense_ctx *capsense;
++ struct capsense_keymap *phys;
++ char *name;
++ unsigned char command;
++ unsigned char hex;
++};
++
++struct capsense_proc_entry {
++ char *name;
++ unsigned char command;
++ struct capsense_proc_data data[ARRAY_SIZE(phys_keymap)];
++};
++
++static struct capsense_proc_entry capsense_proc_key_entries[] = {
++ { "CS_FINGER_TH", CAP_CS_FINGER_TH(0,0) },
++ { "CS_IDAC", CAP_CS_IDAC(0,0) },
++};
++
++static struct capsense_proc_entry capsense_proc_device_entries[] = {
++ { "DEVICE_ID", CAP_DEVICE_ID },
++ { "DEVICE_STATUS", CAP_DEVICE_STATUS },
++};
++
++struct capsense_proc_command {
++ char *name;
++ unsigned char command;
++ struct capsense_ctx *capsense;
++};
++
++static struct capsense_proc_command capsense_proc_commands[] = {
++ { "store", CAP_COMMAND_STORE_NVM },
++ //{ "factory", CAP_COMMAND_RESTORE_FACTORY },
++ //{ "reconfigure", CAP_COMMAND_RECONFIGURE },
++};
++
++
++static int capsense_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *_data)
++{
++ struct capsense_proc_data *data = _data;
++ struct capsense_ctx *capsense = data->capsense;
++ u8 value;
++ int len;
++
++ mutex_lock(&capsense->mutex);
++ value = i2c_smbus_read_byte_data(capsense->client, data->command);
++ mutex_unlock(&capsense->mutex);
++
++ if ( data->hex )
++ len = sprintf(page, "%02X\n", value);
++ else
++ len = sprintf(page, "%u\n", value);
++
++ len -= off;
++ if ( len < count ) {
++ *eof = 1;
++ if ( len <= 0 )
++ return 0;
++ } else {
++ len = count;
++ }
++
++ *start = page + off;
++
++ return len;
++}
++
++
++static int capsense_proc_write(struct file *file, const char *buf,
++ unsigned long count, void *_data)
++{
++ struct capsense_proc_data *data = _data;
++ struct capsense_ctx *capsense = data->capsense;
++ char lbuf[count+1];
++ u8 value;
++
++ /* Only root can do this */
++ if ( !capable(CAP_SYS_ADMIN) )
++ return -EACCES;
++
++ memset(lbuf, 0, sizeof(lbuf));
++
++ if (copy_from_user(lbuf, buf, count))
++ return -EFAULT;
++
++ if ( sscanf(lbuf, "%hhi", &value) == 1 ) {
++ mutex_lock(&capsense->mutex);
++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE);
++ i2c_smbus_write_byte_data(capsense->client, data->command, value);
++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE);
++ mutex_unlock(&capsense->mutex);
++ }
++ else {
++ printk(KERN_INFO DRIVER_NAME ": [%s/%s] Syntax error in expression\n", data->phys->name, data->name);
++ return -EINVAL;
++ }
++
++ return count;
++}
++
++
++static inline char *str_skip_blanks(char *s)
++{
++ while ( (*s != '\0') && (*s <= ' ') )
++ s++;
++ return s;
++}
++
++
++static inline char *str_skip_chars(char *s)
++{
++ while ( *s > ' ' )
++ s++;
++ return s;
++}
++
++
++static int capsense_proc_write_iic(struct file *file, const char *buf,
++ unsigned long count, void *data)
++{
++ struct capsense_ctx *capsense = data;
++ char lbuf[count+1];
++ int lnum;
++ char *s;
++
++ /* Only root can do this */
++ if ( !capable(CAP_SYS_ADMIN) )
++ return -EACCES;
++
++ printk(KERN_INFO DRIVER_NAME ": Reading configuration script from /proc/" DRIVER_NAME "/iic (%lu bytes)\n", count);
++
++ memset(lbuf, 0, sizeof(lbuf));
++
++ if (copy_from_user(lbuf, buf, count))
++ return -EFAULT;
++
++ s = lbuf;
++ lnum = 0;
++
++ while ( *s != '\0' ) {
++ char *line;
++ char operation;
++ unsigned char data[255];
++ int size;
++ struct i2c_msg msg;
++ int ret;
++
++ lnum++;
++
++ /* Spot the end of the line */
++ line = s;
++ while ( (*s != '\0') && (*s != '\n') )
++ s++;
++ if ( *s != '\0' )
++ *(s++) = '\0';
++
++ //printk(KERN_INFO DRIVER_NAME ": iic:%d: '%s'\n", lnum, line);
++
++ /* Strip leading blank characters */
++ line = str_skip_blanks(line);
++
++ /* Empty or commented line: skip! */
++ if ( (*line == '\0') || (*line == '#') )
++ continue;
++
++ /* Only accept write operations 'w' */
++ operation = *(line++);
++ if ( operation != 'w' ) {
++ printk(KERN_ERR DRIVER_NAME ": iic:%d: Unknown operation '%c ...' -- skipped\n", lnum, operation);
++ continue;
++ }
++
++ /* Extract data values */
++ size = 0;
++ while ( (*line != '\0') && (size < sizeof(data)) ) {
++ line = str_skip_blanks(line);
++ if ( *line != '\0' )
++ sscanf(line, "%hhx", &data[size++]);
++ line = str_skip_chars(line);
++ }
++
++ {
++ int i;
++
++ printk(KERN_DEBUG DRIVER_NAME ": iic:%d: %c", lnum, operation);
++ for (i = 0; i < size; i++)
++ printk(" %02X", data[i]);
++ printk("\n");
++ }
++
++ /* Do nothing if there are less than 2 data bytes (address, command) */
++ if ( size < 3 ) {
++ printk(KERN_ERR DRIVER_NAME ": iic:%d: Too few data for operation '%c ...' -- skipped\n", lnum, operation);
++ continue;
++ }
++
++ /* First data byte is the i2c device address:
++ Warn if it does not match the current i2c address */
++ if ( data[0] != capsense->client->addr ) {
++ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Specified i2c address (%02X) differs from current i2c address (%02X)\n", lnum, data[0], capsense->client->addr);
++ }
++
++ /* Second data byte is the capsense register:
++ Warn if changing the device I2C address */
++ if ( data[1] == CAP_I2C_ADDR_DM ) {
++ printk(KERN_WARNING DRIVER_NAME ": iic:%d: WARNING - Changing i2c address to %02X (I2C_ADDR_DM=%02X)\n", lnum, data[2] & 0x7F, data[2]);
++ }
++
++ /* Send command to i2c device */
++ mutex_lock(&capsense->mutex);
++
++ msg.addr = data[0];
++ msg.flags = capsense->client->flags;
++ msg.len = size - 1;
++ msg.buf = data + 1;
++ //printk(KERN_INFO DRIVER_NAME ": iic:%d: i2c transfer: addr=0x%02X flags=0x%04X len=%d\n", lnum, msg.addr, msg.flags, msg.len);
++
++ ret = i2c_transfer(capsense->client->adapter, &msg, 1);
++ if ( ret < 0 )
++ printk(KERN_ERR DRIVER_NAME ": iic:%d: i2c transfer failed (%d), command rejected\n", lnum, ret);
++
++ mutex_unlock(&capsense->mutex);
++ }
++
++ return count;
++}
++
++
++static int capsense_proc_write_command(struct file *file, const char *buf,
++ unsigned long count, void *data)
++{
++ struct capsense_proc_command *command = data;
++ struct capsense_ctx *capsense = command->capsense;
++
++ /* Only root can do this */
++ if ( !capable(CAP_SYS_ADMIN) )
++ return -EACCES;
++
++ printk(KERN_INFO DRIVER_NAME ": %s (%02X)\n", command->name, command->command);
++
++ mutex_lock(&capsense->mutex);
++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_SETUP_MODE);
++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, command->command);
++ i2c_smbus_write_byte_data(capsense->client, CAP_COMMAND_REG, CAP_COMMAND_NORMAL_MODE);
++ mutex_unlock(&capsense->mutex);
++
++ return count;
++}
++
++
++static int capsense_proc_init(struct capsense_ctx *capsense)
++{
++ struct proc_dir_entry *root;
++ struct proc_dir_entry *dir;
++ struct proc_dir_entry *ent;
++ int i;
++
++ /* Create capsense proc directory */
++ printk(KERN_INFO DRIVER_NAME ": Creating setup entries in /proc/" DRIVER_NAME "/\n");
++
++ root = proc_mkdir(DRIVER_NAME, NULL);
++ if ( root == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "\n");
++ return -1;
++ }
++
++ /* Create iic config file dump entry */
++ ent = create_proc_entry("iic", S_IFREG|S_IWUSR, root);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/iic\n");
++ return -1;
++ }
++
++ ent->data = capsense;
++ ent->write_proc = capsense_proc_write_iic;
++
++ /* Create commands directory */
++ dir = proc_mkdir("commands", root);
++ if ( dir == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/commands\n");
++ return -1;
++ }
++
++ /* Create command entries */
++ for (i = 0; i < ARRAY_SIZE(capsense_proc_commands); i++) {
++ struct capsense_proc_command *command = &capsense_proc_commands[i];
++
++ command->capsense = capsense;
++
++ ent = create_proc_entry(command->name, S_IFREG|S_IWUSR, dir);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/commands/%s\n", command->name);
++ return -1;
++ }
++
++ ent->data = command;
++ ent->write_proc = capsense_proc_write_command;
++ }
++
++ /* Create device status read entries */
++ for (i = 0; i < ARRAY_SIZE(capsense_proc_device_entries); i++) {
++ struct capsense_proc_entry *entry = &(capsense_proc_device_entries[i]);
++ struct capsense_proc_data *data = &(entry->data[i]);
++
++ data->capsense = capsense;
++ data->phys = NULL;
++ data->name = entry->name;
++ data->command = entry->command;
++ data->hex = 1;
++
++ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR, root);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name);
++ continue;
++ }
++
++ ent->data = data;
++ ent->read_proc = capsense_proc_read;
++ }
++
++ /* Create keys management directory */
++ dir = proc_mkdir("keys", root);
++ if ( dir == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys\n");
++ return -1;
++ }
++
++ /* Create keys sensitivity adjustment entries */
++ for (i = 0; i < ARRAY_SIZE(phys_keymap); i++) {
++ struct capsense_keymap *phys = &phys_keymap[i];
++ struct proc_dir_entry *subdir;
++ int ientry;
++
++ subdir = proc_mkdir(phys->name, dir);
++ if ( subdir == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "/keys/%s\n", phys->name);
++ continue;
++ }
++
++ for (ientry = 0; ientry < ARRAY_SIZE(capsense_proc_key_entries); ientry++) {
++ struct capsense_proc_entry *entry = &(capsense_proc_key_entries[ientry]);
++ struct capsense_proc_data *data = &(entry->data[i]);
++
++ data->capsense = capsense;
++ data->phys = phys;
++ data->name = entry->name;
++ data->command = CAP_CS(entry->command, phys->port, phys->bit);
++ data->hex = 0;
++
++ ent = create_proc_entry(entry->name, S_IFREG|S_IRUSR|S_IWUSR, subdir);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/keys/%s/%s\n", phys->name, entry->name);
++ continue;
++ }
++
++ ent->data = data;
++ ent->read_proc = capsense_proc_read;
++ ent->write_proc = capsense_proc_write;
++ }
++ }
++
++ return 0;
++}
diff --git a/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch b/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch
new file mode 100644
index 0000000000..2bb2cfc4b0
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/013-091015-lcd.patch
@@ -0,0 +1,1070 @@
+Index: linux-2.6.31/drivers/video/Kconfig
+===================================================================
+--- linux-2.6.31.orig/drivers/video/Kconfig 2009-10-19 16:31:51.000000000 +0200
++++ linux-2.6.31/drivers/video/Kconfig 2009-10-19 16:53:39.000000000 +0200
+@@ -491,6 +491,28 @@
+ this driver, say Y or M; otherwise say N. You must specify the
+ GPIO IO address to be used for setting control and data.
+
++config FB_NT7506
++ tristate "Novatek 7506 LCD board support"
++ depends on FB
++ select FB_SYS_FILLRECT
++ select FB_SYS_COPYAREA
++ select FB_SYS_IMAGEBLIT
++ select FB_SYS_FOPS
++ select FB_BACKLIGHT
++ select LCD_CLASS_DEVICE
++ help
++ This is the frame buffer device driver for the Novatek 7506 Monochrome/Grayscale LCD board.
++ The board is based on the NT7506 LCD controller.
++
++config FB_NT7506_GRAYSCALE
++ bool "Novatek 7506 Grayscale mode"
++ depends on FB_NT7506
++ default y
++ help
++ This option switches the Monochrome/Grayscale mode for the Novatek 7506 LCD board.
++ Say Y to enable 4-levels Grayscale mode (2 bpp).
++ Say N to enable Monochrome mode (1 bpp).
++
+ config FB_ATARI
+ bool "Atari native chipset support"
+ depends on (FB = y) && ATARI
+Index: linux-2.6.31/drivers/video/Makefile
+===================================================================
+--- linux-2.6.31.orig/drivers/video/Makefile 2009-10-19 16:31:51.000000000 +0200
++++ linux-2.6.31/drivers/video/Makefile 2009-10-19 16:53:39.000000000 +0200
+@@ -30,6 +30,7 @@
+ # Hardware specific drivers go first
+ obj-$(CONFIG_FB_AMIGA) += amifb.o c2p_planar.o
+ obj-$(CONFIG_FB_ARC) += arcfb.o
++obj-$(CONFIG_FB_NT7506) += nt7506fb.o
+ obj-$(CONFIG_FB_CLPS711X) += clps711xfb.o
+ obj-$(CONFIG_FB_CYBER2000) += cyber2000fb.o
+ obj-$(CONFIG_FB_PM2) += pm2fb.o
+Index: linux-2.6.31/drivers/video/nt7506fb.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.31/drivers/video/nt7506fb.c 2009-10-19 16:53:39.000000000 +0200
+@@ -0,0 +1,899 @@
++/*
++ * linux/drivers/video/nt7506fb.c -- FB driver for NT7506 monochrome LCD board
++ *
++ * Copyright (C) 2008, CenoSYS (www.cenosys.com).
++ * Copyright (C) 2009, Bollore telecom (www.bolloretelecom.eu).
++ *
++ * Alexandre Coffignal <alexandre.coffignal@cenosys.com>
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ * Jeremy Laine <jeremy.laine@bolloretelecom.eu>
++ *
++ * This file is subject to the terms and conditions of the GNU General Public
++ * License. See the file COPYING in the main directory of this archive for
++ * more details.
++ *
++ * Layout is based on arcfb.c by Jaya Kumar
++ *
++ * This driver was written to be used with the Novatek NT7506 LCD board.
++ *
++ * Novatek uses a set of NT7506 chips that control individual 128x128 LCD
++ * matrices. The interface between the board and the host is TTL based GPIO.
++ *
++ * General notes:
++ * - User must set tuhold. It's in microseconds. According to the 108 spec,
++ * the hold time is supposed to be at least 1 microsecond.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/errno.h>
++#include <linux/string.h>
++#include <linux/mm.h>
++#include <linux/vmalloc.h>
++#include <linux/delay.h>
++#include <linux/timer.h>
++#include <linux/fb.h>
++#include <linux/init.h>
++#include <linux/platform_device.h>
++#include <linux/backlight.h>
++#include <linux/lcd.h>
++
++#include <linux/uaccess.h>
++
++#define DRIVER_NAME "nt7506fb"
++
++//NT7506 Hardware
++#define LCD_RST 0x08
++#define LCD_RSTN 0x00
++#define LCD_BCKLIGH 0x04
++#define LCD_BCKLIGHN 0x00
++#define LCD_RS 0x02
++#define LCD_RSN 0x00
++#define LCD_ERD 0x01
++#define LCD_ERDN 0x00
++
++//Base address
++#define LCD_BASE 0xf0000000
++#define LCD_SIZE 0x2
++
++//NT7506 Instructions
++#define NT_ICON 0xA2
++#define NT_PAGE_ADDR 0xB0
++#define NT_COL_MSB 0x10
++#define NT_COL_LSB 0x00
++#define NT_DISP 0xAE
++#define NT_START_LINE 0x40
++#define NT_COM0 0x44
++#define NT_DUTY 0x48
++#define DUTY_1_128 0x80
++#define NT_REV_DISP 0xA6
++#define NT_POWER 0x28
++#define VC 0x04
++#define VR 0x02
++#define VF 0x01
++#define NT_DCDC 0x64
++#define TIME6 0x03
++#define NT_REG_RES 0x20
++#define RES_7_2 0x07
++#define NT_ELEC_VOL 0x81
++#define NT_BIAS 0x50
++#define BIAS_1_11 0x06
++#define NT_ADC_NOR 0xA0
++#define NT_ADC_REV 0xA1
++#define NT_SHL_NOR 0xC0
++#define NT_SHL_REV 0xC8
++#define NT_SET_PWRSAVE 0xA8
++#define NT_OSC 0xAB
++#define NT_RLS_PWRSAVE 0xE1
++#define NT_RESET 0xE2
++#define NT_DATA_DIR 0xe8
++#define NT_FRC_PWM 0x90
++#define PWM15 0x03
++
++#define ON 0x01
++#define OFF 0x00
++
++#define NT_GRAY_SCALE 0x88
++#define GRAY_WHITE_AB 0
++#define GRAY_WHITE_CD 1
++#define GRAY_LIGHT_AB 2
++#define GRAY_LIGHT_CD 3
++#define GRAY_DARK_AB 4
++#define GRAY_DARK_CD 5
++#define GRAY_BLACK_AB 6
++#define GRAY_BLACK_CD 7
++
++#define GRAY_INDEX_WHITE GRAY_WHITE_AB
++#define GRAY_INDEX_LIGHT GRAY_LIGHT_AB
++#define GRAY_INDEX_DARK GRAY_DARK_AB
++#define GRAY_INDEX_BLACK GRAY_BLACK_AB
++
++#define GRAY_LEVEL_WHITE 0
++#define GRAY_LEVEL_LIGHT 5
++#define GRAY_LEVEL_DARK 10
++#define GRAY_LEVEL_BLACK 15
++#define GRAY_LEVEL_MAX 15
++
++#define GRAY_VALUE(level) (((level)<<4)+(level))
++
++// Geometric settings
++#define LCD_WIDTH 128
++#define LCD_HEIGHT 128
++#define LCD_NPAGES (LCD_HEIGHT/8) /* LCD pages of 8 vertical pixels */
++
++#define DEFAULT_CONTRAST 20
++#define DEFAULT_FPS 10
++
++static struct resource *lcd_mem = NULL;
++static void * _lcd_io = NULL;
++static unsigned long tuhold;
++static char _backlight = 1;
++
++struct nt7506fb_par {
++ atomic_t ref_count;
++ struct fb_info *info;
++ struct lcd_device *lcd_dev;
++ int power;
++ int contrast;
++
++ /* refresh rate and timer */
++ unsigned int framerate;
++ struct timer_list timer;
++};
++
++static struct fb_fix_screeninfo nt7506fb_fix __initdata = {
++ .id = DRIVER_NAME,
++ .type = FB_TYPE_PACKED_PIXELS,
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ .visual = FB_VISUAL_STATIC_PSEUDOCOLOR,
++ .line_length = LCD_WIDTH / 4,
++#else
++ .visual = FB_VISUAL_MONO01,
++ .line_length = LCD_WIDTH / 8,
++#endif
++ .xpanstep = 1,
++ .ypanstep = 1,
++ .ywrapstep = 0,
++ .accel = FB_ACCEL_NONE,
++};
++
++static struct fb_var_screeninfo nt7506fb_var __initdata = {
++ .xres = LCD_WIDTH,
++ .yres = LCD_HEIGHT,
++ .xres_virtual = LCD_WIDTH,
++ .yres_virtual = LCD_HEIGHT,
++ .nonstd = 1,
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ .bits_per_pixel = 2,
++ .grayscale = 1,
++ .red = { 0, 2, 0 },
++ .green = { 0, 2, 0 },
++ .blue = { 0, 2, 0 },
++ .transp = { 0, 0, 0 },
++#else
++ .bits_per_pixel = 1,
++#endif
++};
++
++
++/*
++ * Low-level i/o primitives
++ */
++
++static void NT7506_init_lcd(char ael);
++
++static void NT7506_writeb_ctl(unsigned char value)
++{
++ unsigned short svalue;
++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
++
++ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERDN | bl;
++ iowrite16(svalue, _lcd_io);
++ udelay(tuhold);
++ //The data on DB0/7 are latched at the falling edge of the E_RD signal
++ svalue=value<<8 | LCD_RSN | LCD_RST | LCD_ERD | bl;
++ iowrite16(svalue, _lcd_io);
++ udelay(tuhold);
++}
++
++static void NT7506_writeb_data(unsigned char value)
++{
++ unsigned short svalue;
++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
++
++ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERD | bl ;
++ iowrite16(svalue, _lcd_io);
++ udelay(tuhold);
++ //The data on DB0/7 are latched at the falling edge of the E_RD signal
++ svalue=value<<8|LCD_RS |LCD_RST | LCD_ERDN | bl;
++ iowrite16(svalue, _lcd_io);
++ udelay(tuhold);
++}
++
++static void NT7506_set_start_line(unsigned char y)
++{
++ NT7506_writeb_ctl(NT_START_LINE);
++ NT7506_writeb_ctl(y);
++}
++
++static void NT7506_set_yaddr(unsigned char y)
++{
++ NT7506_writeb_ctl(NT_PAGE_ADDR+y);
++}
++
++static void NT7506_set_xaddr(unsigned char x)
++{
++ NT7506_writeb_ctl(NT_COL_MSB | (x >> 0x04)); //Send high nibble
++ NT7506_writeb_ctl(NT_COL_LSB | (x & 0x0F) ); //Send low nibble
++}
++
++
++/*
++ * LCD device management
++ */
++
++static int
++nt7506fb_lcd_get_contrast(struct lcd_device *lcd_dev)
++{
++ struct nt7506fb_par *par = lcd_get_data(lcd_dev);
++ return par->contrast;
++}
++
++static int
++nt7506fb_lcd_set_contrast(struct lcd_device *lcd_dev, int contrast)
++{
++ struct nt7506fb_par *par = lcd_get_data(lcd_dev);
++
++ par->contrast = contrast;
++ NT7506_writeb_ctl(NT_ELEC_VOL);
++ NT7506_writeb_ctl(par->contrast);
++
++ return 0;
++}
++
++static struct lcd_ops nt7506fb_lcd_ops = {
++ .get_contrast = nt7506fb_lcd_get_contrast,
++ .set_contrast = nt7506fb_lcd_set_contrast,
++};
++
++static void
++nt7506fb_lcd_init(struct nt7506fb_par *par)
++{
++ struct fb_info *info = par->info;
++ struct lcd_device *lcd_dev;
++
++ lcd_dev = lcd_device_register("nt7506fb-lcd", info->dev, par, &nt7506fb_lcd_ops);
++ if (IS_ERR(lcd_dev)) {
++ par->lcd_dev = NULL;
++ dev_warn(info->device, "LCD device registration failed\n");
++ return;
++ }
++
++ par->lcd_dev = lcd_dev;
++ lcd_dev->props.max_contrast = 255;
++ par->contrast = DEFAULT_CONTRAST;
++ dev_info(info->device, "LCD contrast management initialized\n");
++}
++
++static void
++nt7506fb_lcd_exit(struct nt7506fb_par *par)
++{
++ if ( par->lcd_dev ) {
++ lcd_device_unregister(par->lcd_dev);
++ par->lcd_dev = NULL;
++ }
++}
++
++
++/*
++ * Backlight device management
++ */
++static void nt7506fb_start_timer(struct nt7506fb_par *par);
++
++static int
++nt7506fb_bl_update_status(struct backlight_device *bd)
++{
++ struct nt7506fb_par *par = bl_get_data(bd);
++ struct fb_info *info = par->info;
++ int power_on = (bd->props.power != FB_BLANK_POWERDOWN);
++
++ _backlight = bd->props.brightness & power_on;
++
++ dev_info(info->device, "backlight=%d power_on=%d\n", _backlight, power_on);
++
++ if ( bd->props.power != par->power ) {
++ par->power = bd->props.power;
++
++ if ( power_on ) {
++ /* Power LCD device on */
++ NT7506_writeb_ctl(NT_SET_PWRSAVE|OFF);
++ NT7506_writeb_ctl(NT_RLS_PWRSAVE);
++
++ /* Restart refresh timer */
++ if ( ! timer_pending(&par->timer) )
++ nt7506fb_start_timer(par);
++ }
++ else {
++ /* Throttle refresh timer */
++ del_timer(&par->timer);
++
++ /* Put LCD device in power save mode */
++ NT7506_writeb_ctl(NT_SET_PWRSAVE|ON);
++ NT7506_writeb_ctl(NT_RLS_PWRSAVE);
++ }
++ }
++
++ return 0;
++}
++
++static int
++nt7506fb_bl_get_brightness(struct backlight_device *bd)
++{
++ return bd->props.brightness;
++}
++
++static struct backlight_ops nt7506fb_bl_ops = {
++ .get_brightness = nt7506fb_bl_get_brightness,
++ .update_status = nt7506fb_bl_update_status,
++};
++
++static void
++nt7506fb_bl_init(struct nt7506fb_par *par)
++{
++ struct fb_info *info = par->info;
++ struct backlight_device *bd;
++
++ bd = backlight_device_register("nt7506fb-bl", info->dev, par, &nt7506fb_bl_ops);
++ if (IS_ERR(bd)) {
++ info->bl_dev = NULL;
++ dev_warn(info->device, "Backlight device registration failed\n");
++ return;
++ }
++
++ info->bl_dev = bd;
++ bd->props.max_brightness = 1;
++ bd->props.power = FB_BLANK_UNBLANK;
++ bd->props.brightness = 1;
++ par->power = bd->props.power;
++
++ nt7506fb_bl_update_status(bd);
++
++ dev_info(info->device, "Backlight control initialized\n");
++}
++
++static void
++nt7506fb_bl_exit(struct fb_info *info)
++{
++ if ( info->bl_dev ) {
++ backlight_device_unregister(info->bl_dev);
++ info->bl_dev = NULL;
++ }
++}
++
++
++/*
++ * Main frame buffer operations
++ */
++
++static int nt7506fb_open(struct fb_info *info, int user)
++{
++ struct nt7506fb_par *par = info->par;
++ atomic_inc(&par->ref_count);
++ return 0;
++}
++
++static int nt7506fb_release(struct fb_info *info, int user)
++{
++ struct nt7506fb_par *par = info->par;
++ int count = atomic_read(&par->ref_count);
++ if (!count)
++ return -EINVAL;
++ atomic_dec(&par->ref_count);
++ return 0;
++}
++
++static int nt7506fb_pan_display(struct fb_var_screeninfo *var,
++ struct fb_info *info)
++{
++ if ( (var->vmode & FB_VMODE_YWRAP) &&
++ (var->yoffset < LCD_HEIGHT) &&
++ (info->var.yres <= LCD_HEIGHT) ) {
++ NT7506_set_start_line(var->yoffset);
++ info->var.yoffset = var->yoffset;
++ return 0;
++ }
++
++ return -EINVAL;
++}
++
++static void nt7506fb_lcd_update(struct nt7506fb_par *par)
++{
++ unsigned char *src = (unsigned char __force *) par->info->screen_base;
++ int line_length = par->info->fix.line_length;
++ int page, x, bit;
++ unsigned char plane1, plane2;
++ unsigned char *ptr;
++ unsigned char xshift;
++
++ if ( par->info->var.bits_per_pixel == 1 ) {
++
++ for (page = 0; page < LCD_NPAGES; page++) {
++ NT7506_set_yaddr(page);
++ NT7506_set_xaddr(0);
++ for (x = 0; x < LCD_WIDTH; x++) {
++ xshift = 7 - (x % 8);
++ plane1 = plane2 = 0;
++ ptr = src + (page * 8 * line_length + x / 8);
++ for (bit = 0; bit < 8; ptr += line_length, bit++) {
++ plane1 |= (((*ptr) >> xshift) & 1) << bit;
++ }
++ NT7506_writeb_data(plane1);
++ NT7506_writeb_data(plane2);
++ }
++ }
++
++ } else {
++
++ for (page = 0; page < LCD_NPAGES; page++) {
++ NT7506_set_yaddr(page);
++ NT7506_set_xaddr(0);
++ for (x = 0; x < LCD_WIDTH; x++) {
++ xshift = (3 - (x % 4)) << 1;
++ plane1 = plane2 = 0;
++ ptr = src + (page * 8 * line_length + x / 4);
++ for (bit = 0; bit < 8; ptr += line_length, bit++) {
++ plane1 |= (((*ptr) >> (xshift + 1)) & 1) << bit;
++ plane2 |= (((*ptr) >> xshift) & 1) << bit;
++ }
++ NT7506_writeb_data(plane1);
++ NT7506_writeb_data(plane2);
++ }
++ }
++
++ }
++}
++
++static void nt7506fb_fillrect(struct fb_info *info, const struct fb_fillrect *rect)
++{
++ sys_fillrect(info, rect);
++}
++
++static void nt7506fb_copyarea(struct fb_info *info,
++ const struct fb_copyarea *area)
++{
++ sys_copyarea(info, area);
++}
++
++
++static void nt7506fb_imageblit(struct fb_info *info, const struct fb_image *image)
++{
++ sys_imageblit(info, image);
++}
++
++
++/*
++ * this is the access path from userspace. they can seek and write to
++ * the fb. it's inefficient for them to do anything less than 128*8
++ * writes since we update the lcd in each write() anyway.
++ */
++static ssize_t nt7506fb_write(struct fb_info *info, const char __user *buf,
++ size_t count, loff_t *ppos)
++{
++ unsigned long p = *ppos;
++ unsigned int fbmemlength;
++ int err = 0;
++
++ fbmemlength = (info->var.xres * info->var.yres) / (8 / info->var.bits_per_pixel);
++
++ if ( p > fbmemlength ) {
++ return -EFBIG;
++ }
++
++ if ( (count + p) > fbmemlength ) {
++ count = fbmemlength - p;
++ err = -ENOSPC;
++ }
++
++ if ( count ) {
++ char *base_addr = (char __force *) info->screen_base;
++ if ( copy_from_user(base_addr + p, buf, count) )
++ err = -EFAULT;
++ }
++
++ if ( !err )
++ *ppos += count;
++
++ return err ? err : count;
++}
++
++
++static int nt7506fb_mmap(struct fb_info *info, struct vm_area_struct *vma)
++{
++ unsigned long off;
++ unsigned long start;
++ u32 len;
++
++ if (vma->vm_end - vma->vm_start == 0)
++ return 0;
++ if (vma->vm_pgoff > (~0UL >> PAGE_SHIFT))
++ return -EINVAL;
++ off = vma->vm_pgoff << PAGE_SHIFT;
++ start = info->fix.smem_start;
++ len = info->fix.smem_len;
++ if (off >= len)
++ {
++ return -EINVAL;
++
++ }
++ if ((vma->vm_end - vma->vm_start + off) > len)
++ {
++ return -EINVAL;
++ }
++ off += start;
++ vma->vm_pgoff = off >> PAGE_SHIFT;
++ if (remap_pfn_range(vma, vma->vm_start, virt_to_phys((void *)info->fix.smem_start) >> PAGE_SHIFT,
++ info->fix.smem_len, vma->vm_page_prot))
++
++ {
++ return -EAGAIN;
++ }
++ return 0;
++
++}
++
++static struct fb_ops nt7506fb_ops = {
++ .owner = THIS_MODULE,
++ .fb_open = nt7506fb_open,
++ .fb_read = fb_sys_read,
++ .fb_write = nt7506fb_write,
++ .fb_release = nt7506fb_release,
++ .fb_pan_display = nt7506fb_pan_display,
++ .fb_fillrect = nt7506fb_fillrect,
++ .fb_copyarea = nt7506fb_copyarea,
++ .fb_imageblit = nt7506fb_imageblit,
++ .fb_mmap = nt7506fb_mmap,
++};
++
++static void
++nt7506fb_start_timer(struct nt7506fb_par *par)
++{
++ par->timer.expires = jiffies + (HZ/par->framerate);
++ add_timer(&par->timer);
++}
++
++static void
++nt7506fb_refresh(unsigned long data)
++{
++ struct nt7506fb_par *par = (struct nt7506fb_par *)data;
++ nt7506fb_lcd_update(par);
++ nt7506fb_start_timer(par);
++}
++
++/*
++ * Grayscale levels adjustment
++ */
++
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++
++static void nt7506fb_set_gray_level(unsigned char index, unsigned char level)
++{
++ NT7506_writeb_ctl(NT_GRAY_SCALE | index);
++ NT7506_writeb_ctl(GRAY_VALUE(level));
++ NT7506_writeb_ctl(NT_GRAY_SCALE | (index+1));
++ NT7506_writeb_ctl(GRAY_VALUE(level));
++}
++
++#ifdef CONFIG_PROC_FS
++#include "nt7506fb-procfs.c"
++#endif
++
++#endif
++
++/*
++ * sysfs attributes
++ */
++
++static ssize_t show_framerate(struct device *dev,
++ struct device_attribute *attr, char *buf)
++{
++ struct fb_info *info = platform_get_drvdata(to_platform_device(dev));
++ struct nt7506fb_par *par = info->par;
++ return snprintf(buf, PAGE_SIZE, "%u\n", par->framerate);
++}
++
++static ssize_t store_framerate(struct device *dev,
++ struct device_attribute *attr, const char *buf, size_t count)
++{
++ struct fb_info *info = platform_get_drvdata(to_platform_device(dev));
++ struct nt7506fb_par *par = info->par;
++ unsigned int framerate;
++ if (sscanf(buf, "%u", &framerate) == 1 && framerate > 0)
++ {
++ par->framerate = framerate;
++ return count;
++ }
++ return -EINVAL;
++}
++
++static DEVICE_ATTR(framerate, S_IRUGO | S_IWUSR, show_framerate, store_framerate);
++
++static struct attribute *nt7506fb_attributes[] = {
++ &dev_attr_framerate.attr,
++ NULL,
++};
++
++static struct attribute_group nt7506fb_group = {
++ .name = NULL,
++ .attrs = nt7506fb_attributes,
++};
++
++
++/*
++ * Device driver intialisation
++ */
++
++static int __init
++nt7506fb_probe(struct platform_device *pdev)
++{
++ int retval = -ENOMEM;
++ struct device *dev = &pdev->dev;
++ struct fb_info *info;
++ struct nt7506fb_par *par;
++ static unsigned char *videomemory;
++ static int videomemorysize;
++ int i;
++
++ NT7506_init_lcd(DEFAULT_CONTRAST);
++
++ videomemorysize = LCD_WIDTH * LCD_HEIGHT / 4;
++
++ if (!(videomemory = kmalloc(videomemorysize, GFP_ATOMIC)))
++ goto failout;
++ memset(videomemory, 0, videomemorysize);
++
++ info = framebuffer_alloc(sizeof(struct nt7506fb_par), dev);
++
++ if (!info)
++ goto out_alloc;
++ info->screen_base = (char __iomem *)videomemory;
++ info->fbops = &nt7506fb_ops;
++
++ info->var = nt7506fb_var;
++ info->fix = nt7506fb_fix;
++ info->fix.smem_start = (unsigned long)videomemory;
++ info->fix.smem_len = videomemorysize;
++
++ par = info->par;
++ par->info = info;
++ par->framerate = DEFAULT_FPS;
++
++ info->flags = FBINFO_FLAG_DEFAULT;
++ platform_set_drvdata(pdev, info);
++
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ /* Allocate cmap */
++ retval = fb_alloc_cmap(&info->cmap, 4, 0);
++ if (retval < 0) {
++ dev_err(dev, "Failed to allocate colormap\n");
++ goto out_register;
++ }
++
++ /* Set cmap */
++ for (i = 0; i < 4; i++)
++ info->cmap.red[i] = (((4*i)+1)*(0xFFFF))/16;
++ memcpy(info->cmap.green, info->cmap.red, sizeof(u16)*4);
++ memcpy(info->cmap.blue, info->cmap.red, sizeof(u16)*4);
++#endif
++
++ /* Register framebuffer */
++ retval = register_framebuffer(info);
++ if (retval < 0)
++ goto out_register;
++
++ setup_timer(&par->timer, nt7506fb_refresh, (unsigned long) par);
++
++ dev_info(dev,
++ "nt7506 frame buffer device, using %dK of video memory\n",
++ videomemorysize >> 10);
++
++ /* Create procfs entries for grayscale levels adjustment */
++#ifdef CONFIG_PROC_FS
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ nt7506fb_proc_init(par);
++#endif
++#endif
++
++ /* Initialize backlight and contrast control (do not abort driver if it fails) */
++ nt7506fb_bl_init(par);
++ nt7506fb_lcd_init(par);
++
++ /* Register sysfs hooks */
++ retval = sysfs_create_group(&dev->kobj, &nt7506fb_group);
++ if (retval != 0)
++ dev_warn(dev, "Failed to register attributes\n");
++
++ nt7506fb_start_timer(par);
++
++ return 0;
++
++out_register:
++ framebuffer_release(info);
++out_alloc:
++ vfree(videomemory);
++failout:
++ return retval;
++}
++
++static int nt7506fb_remove(struct platform_device *pdev)
++{
++ struct fb_info *info = platform_get_drvdata(pdev);
++ struct nt7506fb_par *par = info->par;
++
++ del_timer(&par->timer);
++
++ if (info) {
++ sysfs_remove_group(&pdev->dev.kobj, &nt7506fb_group);
++ nt7506fb_lcd_exit(info->par);
++ nt7506fb_bl_exit(info);
++ unregister_framebuffer(info);
++ vfree((void __force *)info->screen_base);
++ framebuffer_release(info);
++ }
++ return 0;
++}
++
++#ifdef CONFIG_PM
++static int nt7506fb_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct fb_info *info = platform_get_drvdata(pdev);
++
++ dev_info(info->device, "suspend\n");
++
++ info->bl_dev->props.power = FB_BLANK_POWERDOWN;
++ nt7506fb_bl_update_status(info->bl_dev);
++
++ return 0;
++}
++
++static int nt7506fb_resume(struct platform_device *pdev)
++{
++ struct fb_info *info = platform_get_drvdata(pdev);
++
++ dev_info(info->device, "resume\n");
++
++ info->bl_dev->props.power = FB_BLANK_UNBLANK;
++ nt7506fb_bl_update_status(info->bl_dev);
++
++ return 0;
++}
++#else
++#define nt7506fb_suspend NULL
++#define nt7506fb_resume NULL
++#endif
++
++
++static struct platform_driver nt7506fb_driver = {
++ .probe = nt7506fb_probe,
++ .remove = nt7506fb_remove,
++ .suspend = nt7506fb_suspend,
++ .resume = nt7506fb_resume,
++ .driver = {
++ .name = DRIVER_NAME,
++ },
++};
++
++static struct platform_device *nt7506fb_device;
++
++static int __init nt7506fb_init(void)
++{
++ int ret;
++
++ if (!(lcd_mem = request_mem_region(LCD_BASE, LCD_SIZE, DRIVER_NAME)))
++ return -ENOMEM;
++
++ if (!(_lcd_io = ioremap(LCD_BASE, LCD_SIZE)))
++ {
++ release_mem_region(LCD_BASE, LCD_SIZE);
++ lcd_mem = NULL;
++ return -ENOMEM;
++ }
++ ret = platform_driver_register(&nt7506fb_driver);
++
++ if (!ret) {
++ nt7506fb_device = platform_device_alloc(DRIVER_NAME, 0);
++ if (nt7506fb_device)
++ {
++ ret = platform_device_add(nt7506fb_device);
++ }
++ else
++ {
++ ret = -ENOMEM;
++ }
++ if (ret)
++ {
++ platform_device_put(nt7506fb_device);
++ platform_driver_unregister(&nt7506fb_driver);
++ }
++
++ }
++
++ return ret;
++}
++
++static void NT7506_init_lcd(char ael)
++{
++ /* this resets the lcd*/
++ char bl = _backlight ? LCD_BCKLIGH : LCD_BCKLIGHN;
++
++ iowrite16(LCD_RSTN | LCD_ERD | bl, _lcd_io);
++ udelay(100);
++ iowrite16(LCD_RST| LCD_ERD | bl, _lcd_io);
++ udelay(200);
++ /* Soft reset*/
++ NT7506_writeb_ctl(NT_RESET);
++ /* Disable ICON display*/
++ NT7506_writeb_ctl(NT_ICON|OFF);
++ /* Sets the duty ratio 1/128*/
++ NT7506_writeb_ctl(NT_DUTY); NT7506_writeb_ctl(DUTY_1_128);
++ /* Sets reverse direction between RAM column address and segment driver*/
++ NT7506_writeb_ctl(NT_ADC_REV);
++ NT7506_writeb_ctl(NT_SHL_NOR);
++ /* Enales the built in Oscillator circuit.*/
++ NT7506_writeb_ctl(NT_OSC);
++ /* Set Initial row to 0*/
++ NT7506_writeb_ctl(NT_COM0); NT7506_writeb_ctl(0);
++ /* Sets DC-DC*/
++ NT7506_writeb_ctl(NT_DCDC|TIME6);
++ /* Selects resistance ratio of the internal resistor*/
++ NT7506_writeb_ctl(NT_REG_RES|RES_7_2);
++ /* set Reference Voltage mode*/
++ NT7506_writeb_ctl(NT_ELEC_VOL); NT7506_writeb_ctl(ael);
++ /* Selects LCD bias ratio*/
++ NT7506_writeb_ctl(NT_BIAS|BIAS_1_11);
++
++ NT7506_writeb_ctl(NT_DATA_DIR); NT7506_writeb_ctl(0);
++ NT7506_writeb_ctl(NT_FRC_PWM|PWM15);
++
++#ifdef CONFIG_FB_NT7506_GRAYSCALE
++ /* Feed grayscale palette */
++ nt7506fb_set_gray_level(GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE);
++ nt7506fb_set_gray_level(GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT);
++ nt7506fb_set_gray_level(GRAY_INDEX_DARK, GRAY_LEVEL_DARK);
++ nt7506fb_set_gray_level(GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK);
++#endif
++
++ /* Select power circuit functions */
++ NT7506_writeb_ctl(NT_POWER|VC);
++ udelay(5000);
++ NT7506_writeb_ctl(NT_POWER|VC|VR);
++ udelay(5000);
++ NT7506_writeb_ctl(NT_POWER|VC|VR|VF);
++ udelay(5000);
++ /* Reverses the display status on LCD panel */
++ NT7506_writeb_ctl(NT_REV_DISP|OFF);
++ /* Forces the whole LCD points to be turned on regardless of the contents of the display data RAM*/
++ NT7506_writeb_ctl(NT_DISP|ON);
++ /* Set Initial Start Line Address */
++ NT7506_writeb_ctl(NT_START_LINE); NT7506_writeb_ctl(0x00);
++}
++
++static void __exit nt7506fb_exit(void)
++{
++ if (lcd_mem)
++ release_mem_region(LCD_BASE, LCD_SIZE);
++ lcd_mem = NULL;
++ platform_device_unregister(nt7506fb_device);
++ platform_driver_unregister(&nt7506fb_driver);
++}
++
++module_param(tuhold, ulong, 0);
++MODULE_PARM_DESC(tuhold, "Time to hold between strobing data to NT7506 board");
++
++module_init(nt7506fb_init);
++module_exit(nt7506fb_exit);
++
++MODULE_DESCRIPTION("fbdev driver for Novatek NT7506 monochrome LCD board");
++MODULE_AUTHOR("Alexandre Coffignal");
++MODULE_LICENSE("GPL");
++
+Index: linux-2.6.31/drivers/video/nt7506fb-procfs.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.31/drivers/video/nt7506fb-procfs.c 2009-10-19 16:53:53.000000000 +0200
+@@ -0,0 +1,116 @@
++/*
++ * FB driver for NT7506 monochrome/grayscale LCD board
++ * Device setup using procfs
++ *
++ * Copyright (C) 2009, Goobie (www.goobie.fr).
++ *
++ * Sylvain Giroudon <sylvain.giroudon@goobie.fr>
++ *
++ * This software program is licensed subject to the GNU General Public License
++ * (GPL).Version 2,June 1991, available at http://www.fsf.org/copyleft/gpl.html
++ */
++
++#include <linux/proc_fs.h>
++#include <linux/uaccess.h>
++
++struct nt7506fb_proc_entry {
++ char *name;
++ unsigned char index;
++ unsigned char level;
++ struct nt7506fb_par *par;
++};
++
++static struct nt7506fb_proc_entry nt7506fb_proc_entries[] = {
++ { "white", GRAY_INDEX_WHITE, GRAY_LEVEL_WHITE },
++ { "light", GRAY_INDEX_LIGHT, GRAY_LEVEL_LIGHT },
++ { "dark", GRAY_INDEX_DARK, GRAY_LEVEL_DARK },
++ { "black", GRAY_INDEX_BLACK, GRAY_LEVEL_BLACK },
++};
++
++static int nt7506fb_proc_read(char *page, char **start, off_t off, int count,
++ int *eof, void *data)
++{
++ struct nt7506fb_proc_entry *entry = data;
++ int len;
++
++ len = sprintf(page, "%d\n", entry->level);
++
++ len -= off;
++ if ( len < count ) {
++ *eof = 1;
++ if ( len <= 0 )
++ return 0;
++ } else {
++ len = count;
++ }
++
++ *start = page + off;
++
++ return len;
++}
++
++
++static int nt7506fb_proc_write(struct file *file, const char *buf,
++ unsigned long count, void *data)
++{
++ struct nt7506fb_proc_entry *entry = data;
++ char lbuf[count+1];
++
++ /* Only root can do this */
++ if ( !capable(CAP_SYS_ADMIN) )
++ return -EACCES;
++
++ memset(lbuf, 0, sizeof(lbuf));
++
++ if (copy_from_user(lbuf, buf, count))
++ return -EFAULT;
++
++ if ( sscanf(lbuf, "%hhi", &entry->level) == 1 ) {
++ if ( entry->level > GRAY_LEVEL_MAX )
++ entry->level = GRAY_LEVEL_MAX;
++
++ /* Set grayscale palette entry */
++ nt7506fb_set_gray_level(entry->index, entry->level);
++ }
++ else {
++ printk(KERN_INFO DRIVER_NAME ": [%s] Syntax error in expression\n", entry->name);
++ return -EINVAL;
++ }
++
++ return count;
++}
++
++
++static int nt7506fb_proc_init(struct nt7506fb_par *par)
++{
++ struct proc_dir_entry *root;
++ struct proc_dir_entry *ent;
++ int i;
++
++ /* Create nt7506fb proc directory */
++ printk(KERN_INFO DRIVER_NAME ": Creating setup entries in /proc/" DRIVER_NAME "/\n");
++
++ root = proc_mkdir(DRIVER_NAME, NULL);
++ if ( root == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create directory /proc/" DRIVER_NAME "\n");
++ return -1;
++ }
++
++ /* Create gray level entries */
++ for (i = 0; i < ARRAY_SIZE(nt7506fb_proc_entries); i++) {
++ struct nt7506fb_proc_entry *entry = &nt7506fb_proc_entries[i];
++
++ entry->par = par;
++
++ ent = create_proc_entry(entry->name, S_IFREG|S_IWUSR, root);
++ if ( ent == NULL ) {
++ printk(KERN_WARNING DRIVER_NAME ": Cannot create entry /proc/" DRIVER_NAME "/%s\n", entry->name);
++ return -1;
++ }
++
++ ent->data = entry;
++ ent->write_proc = nt7506fb_proc_write;
++ ent->read_proc = nt7506fb_proc_read;
++ }
++ return 0;
++}
diff --git a/recipes/linux/linux-2.6.31/boc01/boc01.dts b/recipes/linux/linux-2.6.31/boc01/boc01.dts
new file mode 100644
index 0000000000..d18fd7fd71
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/boc01.dts
@@ -0,0 +1,348 @@
+/*
+ * Bolloré telecom CPE v01 Device Tree Source
+ *
+ * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc.
+ * Copyright 2008, 2009 Bolloré telecom.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+/dts-v1/;
+
+/ {
+ model = "MPC8313ERDB";
+ compatible = "MPC8313ERDB", "MPC831xRDB", "MPC83xxRDB";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ aliases {
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ pci0 = &pci0;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ PowerPC,8313@0 {
+ device_type = "cpu";
+ reg = <0x0>;
+ d-cache-line-size = <32>;
+ i-cache-line-size = <32>;
+ d-cache-size = <16384>;
+ i-cache-size = <16384>;
+ timebase-frequency = <0>; // from bootloader
+ bus-frequency = <0>; // from bootloader
+ clock-frequency = <0>; // from bootloader
+ };
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x08000000>; // 128MB at 0
+ };
+
+ localbus@e0005000 {
+ #address-cells = <2>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
+ reg = <0xe0005000 0x1000>;
+ interrupts = <77 0x8>;
+ interrupt-parent = <&ipic>;
+
+ // CS0 and CS1 are swapped when
+ // booting from nand, but the
+ // addresses are the same.
+ ranges = <0x0 0x0 0xfe000000 0x00800000
+ 0x1 0x0 0xe2800000 0x00008000
+ 0x2 0x0 0xf0000000 0x00020000
+ 0x3 0x0 0xfa000000 0x00008000>;
+
+ flash@0,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ reg = <0x0 0x0 0x800000>;
+ bank-width = <2>;
+ device-width = <1>;
+ };
+
+ nand@1,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-fcm-nand",
+ "fsl,elbc-fcm-nand";
+ reg = <0x1 0x0 0x2000>;
+
+ kernel@0 {
+ reg = <0x0 0x400000>;
+ read-only;
+ };
+
+ fs@400000 {
+ reg = <0x400000 0x4000000>;
+ };
+
+ appli@4400000 {
+ reg = <0x4400000 0x3c00000>;
+ };
+ };
+ };
+
+ soc8313@e0000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ device_type = "soc";
+ compatible = "simple-bus";
+ ranges = <0x0 0xe0000000 0x00100000>;
+ reg = <0xe0000000 0x00000200>;
+ bus-frequency = <0>;
+
+ wdt@200 {
+ device_type = "watchdog";
+ compatible = "mpc83xx_wdt";
+ reg = <0x200 0x100>;
+ };
+
+ sleep-nexus {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ sleep = <&pmc 0x03000000>;
+ ranges;
+
+ i2c@3000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <0>;
+ compatible = "fsl-i2c";
+ reg = <0x3000 0x100>;
+ interrupts = <14 0x8>;
+ interrupt-parent = <&ipic>;
+ dfsrr;
+ rtc@6f {
+ compatible = "intersil,isl12024";
+ reg = <0x6f>;
+ };
+ dtt@49 {
+ compatible = "national,lm73";
+ reg = <0x49>;
+ };
+ at24@50 {
+ compatible = "at24,24c32";
+ reg = <0x50>;
+ };
+ at24@57 {
+ compatible = "at24,isl12024-eeprom";
+ reg = <0x57>;
+ };
+ };
+
+ crypto@30000 {
+ compatible = "fsl,sec2.2", "fsl,sec2.1",
+ "fsl,sec2.0";
+ reg = <0x30000 0x10000>;
+ interrupts = <11 0x8>;
+ interrupt-parent = <&ipic>;
+ fsl,num-channels = <1>;
+ fsl,channel-fifo-len = <24>;
+ fsl,exec-units-mask = <0x4c>;
+ fsl,descriptor-types-mask = <0x0122003f>;
+ };
+ };
+
+ i2c@3100 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <1>;
+ compatible = "fsl-i2c";
+ reg = <0x3100 0x100>;
+ interrupts = <15 0x8>;
+ interrupt-parent = <&ipic>;
+ dfsrr;
+ capsense@25 {
+ compatible = "cypress,capsense";
+ reg = <0x25>;
+ };
+ };
+
+ spi@7000 {
+ cell-index = <0>;
+ compatible = "fsl,spi";
+ reg = <0x7000 0x1000>;
+ interrupts = <16 0x8>;
+ interrupt-parent = <&ipic>;
+ mode = "cpu";
+ };
+
+ /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+ usb@23000 {
+ compatible = "fsl-usb2-dr";
+ reg = <0x23000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupt-parent = <&ipic>;
+ interrupts = <38 0x8>;
+ phy_type = "utmi_wide";
+ sleep = <&pmc 0x00300000>;
+ };
+
+ enet1: ethernet@25000 {
+ cell-index = <1>;
+ device_type = "network";
+ model = "eTSEC";
+ compatible = "gianfar";
+ reg = <0x25000 0x1000>;
+ local-mac-address = [ 00 00 00 00 00 00 ];
+ interrupts = <35 0x8 36 0x8 37 0x8>;
+ interrupt-parent = <&ipic>;
+ fixed-link = <1 1 100 0 0>;
+ sleep = <&pmc 0x10000000>;
+ fsl,magic-packet;
+ };
+
+ serial0: serial@4600 {
+ cell-index = <0>;
+ device_type = "serial";
+ compatible = "ns16550";
+ reg = <0x4600 0x100>;
+ clock-frequency = <0>;
+ interrupts = <10 0x8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ /* IPIC
+ * interrupts cell = <intr #, sense>
+ * sense values match linux IORESOURCE_IRQ_* defines:
+ * sense == 8: Level, low assertion
+ * sense == 2: Edge, high-to-low change
+ */
+ ipic: pic@700 {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <2>;
+ reg = <0x700 0x100>;
+ device_type = "ipic";
+ };
+
+ pmc: power@b00 {
+ compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
+ reg = <0xb00 0x100 0xa00 0x100>;
+ interrupts = <80 8>;
+ interrupt-parent = <&ipic>;
+ fsl,mpc8313-wakeup-timer = <&gtm1>;
+
+ /* Remove this (or change to "okay") if you have
+ * a REVA3 or later board, if you apply one of the
+ * workarounds listed in section 8.5 of the board
+ * manual, or if you are adapting this device tree
+ * to a different board.
+ */
+ status = "okay";
+ };
+
+ gtm1: timer@500 {
+ compatible = "fsl,mpc8313-gtm", "fsl,gtm";
+ reg = <0x500 0x100>;
+ interrupts = <72 8 78 8 84 8 90 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ timer@600 {
+ compatible = "fsl,mpc8313-gtm", "fsl,gtm";
+ reg = <0x600 0x100>;
+ interrupts = <91 8 79 8 85 8 73 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ wakeup@27000 {
+ compatible = "fsl,wakeup-it", "fsl,gtm";
+ reg = <0x27000 0x100>;
+ interrupts = <17 8 19 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ };
+
+ sleep-nexus {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ sleep = <&pmc 0x00010000>;
+ ranges;
+
+ pci0: pci@e0008500 {
+ cell-index = <1>;
+ interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
+ interrupt-map = <
+ /* IDSEL 0x0F - PCI slot */
+ 0x7800 0x0 0x0 0x1 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x2 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x3 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x4 &ipic 48 0x8>;
+ interrupt-parent = <&ipic>;
+ interrupts = <66 0x8>;
+ bus-range = <0x0 0x0>;
+ ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
+ 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
+ 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
+ clock-frequency = <66666666>;
+ #interrupt-cells = <1>;
+ #size-cells = <2>;
+ #address-cells = <3>;
+ reg = <0xe0008500 0x100>;
+ compatible = "fsl,mpc8349-pci";
+ device_type = "pci";
+ };
+
+ dma@82a8 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-dma", "fsl,elo-dma";
+ reg = <0xe00082a8 4>;
+ ranges = <0 0xe0008100 0x1a8>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+
+ dma-channel@0 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <0>;
+ };
+
+ dma-channel@80 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x80 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <1>;
+ };
+
+ dma-channel@100 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x100 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <2>;
+ };
+
+ dma-channel@180 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x180 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <3>;
+ };
+ };
+ };
+};
diff --git a/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1 b/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1
new file mode 100644
index 0000000000..b2e2456438
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/boc01.dts.v1
@@ -0,0 +1,348 @@
+/*
+ * Bolloré telecom CPE v01 Device Tree Source
+ *
+ * Copyright 2005, 2006, 2007 Freescale Semiconductor Inc.
+ * Copyright 2008, 2009 Bolloré telecom.
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+
+/dts-v1/;
+
+/ {
+ model = "MPC8313ERDB";
+ compatible = "MPC8313ERDB", "MPC831xRDB", "MPC83xxRDB";
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ aliases {
+ ethernet1 = &enet1;
+ serial0 = &serial0;
+ pci0 = &pci0;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ PowerPC,8313@0 {
+ device_type = "cpu";
+ reg = <0x0>;
+ d-cache-line-size = <32>;
+ i-cache-line-size = <32>;
+ d-cache-size = <16384>;
+ i-cache-size = <16384>;
+ timebase-frequency = <0>; // from bootloader
+ bus-frequency = <0>; // from bootloader
+ clock-frequency = <0>; // from bootloader
+ };
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x08000000>; // 128MB at 0
+ };
+
+ localbus@e0005000 {
+ #address-cells = <2>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-elbc", "fsl,elbc", "simple-bus";
+ reg = <0xe0005000 0x1000>;
+ interrupts = <77 0x8>;
+ interrupt-parent = <&ipic>;
+
+ // CS0 and CS1 are swapped when
+ // booting from nand, but the
+ // addresses are the same.
+ ranges = <0x0 0x0 0xfe000000 0x00800000
+ 0x1 0x0 0xe2800000 0x00008000
+ 0x2 0x0 0xf0000000 0x00020000
+ 0x3 0x0 0xfa000000 0x00008000>;
+
+ flash@0,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "cfi-flash";
+ reg = <0x0 0x0 0x800000>;
+ bank-width = <2>;
+ device-width = <1>;
+ };
+
+ nand@1,0 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-fcm-nand",
+ "fsl,elbc-fcm-nand";
+ reg = <0x1 0x0 0x2000>;
+
+ kernel@0 {
+ reg = <0x0 0x400000>;
+ read-only;
+ };
+
+ fs@400000 {
+ reg = <0x400000 0x4000000>;
+ };
+
+ appli@4400000 {
+ reg = <0x4400000 0x3c00000>;
+ };
+ };
+ };
+
+ soc8313@e0000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ device_type = "soc";
+ compatible = "simple-bus";
+ ranges = <0x0 0xe0000000 0x00100000>;
+ reg = <0xe0000000 0x00000200>;
+ bus-frequency = <0>;
+
+ wdt@200 {
+ device_type = "watchdog";
+ compatible = "mpc83xx_wdt";
+ reg = <0x200 0x100>;
+ };
+
+ sleep-nexus {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ sleep = <&pmc 0x03000000>;
+ ranges;
+
+ i2c@3000 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <0>;
+ compatible = "fsl-i2c";
+ reg = <0x3000 0x100>;
+ interrupts = <14 0x8>;
+ interrupt-parent = <&ipic>;
+ dfsrr;
+ rtc@6f {
+ compatible = "intersil,isl12024";
+ reg = <0x6f>;
+ };
+ dtt@49 {
+ compatible = "national,lm73";
+ reg = <0x49>;
+ };
+ at24@50 {
+ compatible = "at24,24c32";
+ reg = <0x50>;
+ };
+ at24@57 {
+ compatible = "at24,isl12024-eeprom";
+ reg = <0x57>;
+ };
+ };
+
+ crypto@30000 {
+ compatible = "fsl,sec2.2", "fsl,sec2.1",
+ "fsl,sec2.0";
+ reg = <0x30000 0x10000>;
+ interrupts = <11 0x8>;
+ interrupt-parent = <&ipic>;
+ fsl,num-channels = <1>;
+ fsl,channel-fifo-len = <24>;
+ fsl,exec-units-mask = <0x4c>;
+ fsl,descriptor-types-mask = <0x0122003f>;
+ };
+ };
+
+ i2c@3100 {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ cell-index = <1>;
+ compatible = "fsl-i2c";
+ reg = <0x3100 0x100>;
+ interrupts = <15 0x8>;
+ interrupt-parent = <&ipic>;
+ dfsrr;
+ capsense@25 {
+ compatible = "cypress,capsense";
+ reg = <0x25>;
+ };
+ };
+
+ spi@7000 {
+ cell-index = <0>;
+ compatible = "fsl,spi";
+ reg = <0x7000 0x1000>;
+ interrupts = <16 0x8>;
+ interrupt-parent = <&ipic>;
+ mode = "cpu";
+ };
+
+ /* phy type (ULPI, UTMI, UTMI_WIDE, SERIAL) */
+ usb@23000 {
+ compatible = "fsl-usb2-dr";
+ reg = <0x23000 0x1000>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ interrupt-parent = <&ipic>;
+ interrupts = <38 0x8>;
+ phy_type = "utmi_wide";
+ sleep = <&pmc 0x00300000>;
+ };
+
+ enet1: ethernet@25000 {
+ cell-index = <1>;
+ device_type = "network";
+ model = "eTSEC";
+ compatible = "gianfar";
+ reg = <0x25000 0x1000>;
+ local-mac-address = [ 00 00 00 00 00 00 ];
+ interrupts = <34 0x8 33 0x8 32 0x8>;
+ interrupt-parent = <&ipic>;
+ fixed-link = <1 1 100 0 0>;
+ sleep = <&pmc 0x10000000>;
+ fsl,magic-packet;
+ };
+
+ serial0: serial@4600 {
+ cell-index = <0>;
+ device_type = "serial";
+ compatible = "ns16550";
+ reg = <0x4600 0x100>;
+ clock-frequency = <0>;
+ interrupts = <10 0x8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ /* IPIC
+ * interrupts cell = <intr #, sense>
+ * sense values match linux IORESOURCE_IRQ_* defines:
+ * sense == 8: Level, low assertion
+ * sense == 2: Edge, high-to-low change
+ */
+ ipic: pic@700 {
+ interrupt-controller;
+ #address-cells = <0>;
+ #interrupt-cells = <2>;
+ reg = <0x700 0x100>;
+ device_type = "ipic";
+ };
+
+ pmc: power@b00 {
+ compatible = "fsl,mpc8313-pmc", "fsl,mpc8349-pmc";
+ reg = <0xb00 0x100 0xa00 0x100>;
+ interrupts = <80 8>;
+ interrupt-parent = <&ipic>;
+ fsl,mpc8313-wakeup-timer = <&gtm1>;
+
+ /* Remove this (or change to "okay") if you have
+ * a REVA3 or later board, if you apply one of the
+ * workarounds listed in section 8.5 of the board
+ * manual, or if you are adapting this device tree
+ * to a different board.
+ */
+ status = "okay";
+ };
+
+ gtm1: timer@500 {
+ compatible = "fsl,mpc8313-gtm", "fsl,gtm";
+ reg = <0x500 0x100>;
+ interrupts = <72 8 78 8 84 8 90 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ timer@600 {
+ compatible = "fsl,mpc8313-gtm", "fsl,gtm";
+ reg = <0x600 0x100>;
+ interrupts = <91 8 79 8 85 8 73 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ wakeup@27000 {
+ compatible = "fsl,wakeup-it", "fsl,gtm";
+ reg = <0x27000 0x100>;
+ interrupts = <17 8 19 8>;
+ interrupt-parent = <&ipic>;
+ };
+
+ };
+
+ sleep-nexus {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "simple-bus";
+ sleep = <&pmc 0x00010000>;
+ ranges;
+
+ pci0: pci@e0008500 {
+ cell-index = <1>;
+ interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
+ interrupt-map = <
+ /* IDSEL 0x0F - PCI slot */
+ 0x7800 0x0 0x0 0x1 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x2 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x3 &ipic 48 0x8
+ 0x7800 0x0 0x0 0x4 &ipic 48 0x8>;
+ interrupt-parent = <&ipic>;
+ interrupts = <66 0x8>;
+ bus-range = <0x0 0x0>;
+ ranges = <0x02000000 0x0 0x90000000 0x90000000 0x0 0x10000000
+ 0x42000000 0x0 0x80000000 0x80000000 0x0 0x10000000
+ 0x01000000 0x0 0x00000000 0xe2000000 0x0 0x00100000>;
+ clock-frequency = <66666666>;
+ #interrupt-cells = <1>;
+ #size-cells = <2>;
+ #address-cells = <3>;
+ reg = <0xe0008500 0x100>;
+ compatible = "fsl,mpc8349-pci";
+ device_type = "pci";
+ };
+
+ dma@82a8 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ compatible = "fsl,mpc8313-dma", "fsl,elo-dma";
+ reg = <0xe00082a8 4>;
+ ranges = <0 0xe0008100 0x1a8>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+
+ dma-channel@0 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <0>;
+ };
+
+ dma-channel@80 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x80 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <1>;
+ };
+
+ dma-channel@100 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x100 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <2>;
+ };
+
+ dma-channel@180 {
+ compatible = "fsl,mpc8313-dma-channel",
+ "fsl,elo-dma-channel";
+ reg = <0x180 0x28>;
+ interrupt-parent = <&ipic>;
+ interrupts = <71 8>;
+ cell-index = <3>;
+ };
+ };
+ };
+};
diff --git a/recipes/linux/linux-2.6.31/boc01/defconfig b/recipes/linux/linux-2.6.31/boc01/defconfig
new file mode 100644
index 0000000000..3b84e431f0
--- /dev/null
+++ b/recipes/linux/linux-2.6.31/boc01/defconfig
@@ -0,0 +1,2126 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.31.3
+# Tue Oct 20 14:52:00 2009
+#
+# CONFIG_PPC64 is not set
+
+#
+# Processor support
+#
+CONFIG_PPC_BOOK3S_32=y
+# CONFIG_PPC_85xx is not set
+# CONFIG_PPC_8xx is not set
+# CONFIG_40x is not set
+# CONFIG_44x is not set
+# CONFIG_E200 is not set
+CONFIG_PPC_BOOK3S=y
+CONFIG_6xx=y
+CONFIG_PPC_FPU=y
+# CONFIG_FSL_EMB_PERFMON is not set
+# CONFIG_ALTIVEC is not set
+CONFIG_PPC_STD_MMU=y
+CONFIG_PPC_STD_MMU_32=y
+# CONFIG_PPC_MM_SLICES is not set
+CONFIG_PPC_HAVE_PMU_SUPPORT=y
+CONFIG_PPC_PERF_CTRS=y
+# CONFIG_SMP is not set
+CONFIG_PPC32=y
+CONFIG_WORD_SIZE=32
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_MMU=y
+CONFIG_GENERIC_CMOS_UPDATE=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_TIME_VSYSCALL=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+# CONFIG_HAVE_SETUP_PER_CPU_AREA is not set
+CONFIG_IRQ_PER_CPU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_RWSEM_XCHGADD_ALGORITHM=y
+CONFIG_ARCH_HAS_ILOG2_U32=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_FIND_NEXT_BIT=y
+CONFIG_GENERIC_GPIO=y
+# CONFIG_ARCH_NO_VIRT_TO_BUS is not set
+CONFIG_PPC=y
+CONFIG_EARLY_PRINTK=y
+CONFIG_GENERIC_NVRAM=y
+CONFIG_SCHED_OMIT_FRAME_POINTER=y
+CONFIG_ARCH_MAY_HAVE_PC_FDC=y
+CONFIG_PPC_OF=y
+CONFIG_OF=y
+CONFIG_PPC_UDBG_16550=y
+# CONFIG_GENERIC_TBSYNC is not set
+CONFIG_AUDIT_ARCH=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DTC=y
+CONFIG_DEFAULT_UIMAGE=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+# CONFIG_PPC_DCR_NATIVE is not set
+# CONFIG_PPC_DCR_MMIO is not set
+CONFIG_ARCH_SUPPORTS_DEBUG_PAGEALLOC=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_CONSTRUCTORS=y
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_CLASSIC_RCU=y
+# CONFIG_TREE_RCU is not set
+# CONFIG_PREEMPT_RCU is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_PREEMPT_RCU_TRACE is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+# CONFIG_CGROUPS is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+CONFIG_RD_LZMA=y
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_SYSCTL_SYSCALL=y
+# CONFIG_KALLSYMS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+# CONFIG_EPOLL is not set
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+# CONFIG_AIO is not set
+CONFIG_HAVE_PERF_COUNTERS=y
+
+#
+# Performance Counters
+#
+CONFIG_PERF_COUNTERS=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_PCI_QUIRKS=y
+# CONFIG_STRIP_ASM_SYMS is not set
+CONFIG_COMPAT_BRK=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS=y
+CONFIG_HAVE_IOREMAP_PROT=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_SLOW_WORK is not set
+# CONFIG_HAVE_GENERIC_DMA_COHERENT is not set
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+CONFIG_DEFAULT_AS=y
+# CONFIG_DEFAULT_DEADLINE is not set
+# CONFIG_DEFAULT_CFQ is not set
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="anticipatory"
+CONFIG_FREEZER=y
+
+#
+# Platform support
+#
+# CONFIG_PPC_CHRP is not set
+# CONFIG_MPC5121_ADS is not set
+# CONFIG_MPC5121_GENERIC is not set
+# CONFIG_PPC_MPC52xx is not set
+# CONFIG_PPC_PMAC is not set
+# CONFIG_PPC_CELL is not set
+# CONFIG_PPC_CELL_NATIVE is not set
+# CONFIG_PPC_82xx is not set
+# CONFIG_PQ2ADS is not set
+CONFIG_PPC_83xx=y
+CONFIG_MPC831x_RDB=y
+# CONFIG_MPC832x_MDS is not set
+# CONFIG_MPC832x_RDB is not set
+# CONFIG_MPC834x_MDS is not set
+# CONFIG_MPC834x_ITX is not set
+# CONFIG_MPC836x_MDS is not set
+# CONFIG_MPC836x_RDK is not set
+# CONFIG_MPC837x_MDS is not set
+# CONFIG_MPC837x_RDB is not set
+# CONFIG_SBC834x is not set
+# CONFIG_ASP834x is not set
+# CONFIG_KMETER1 is not set
+CONFIG_PPC_MPC831x=y
+# CONFIG_PPC_86xx is not set
+# CONFIG_EMBEDDED6xx is not set
+# CONFIG_AMIGAONE is not set
+CONFIG_PPC_OF_BOOT_TRAMPOLINE=y
+CONFIG_IPIC=y
+# CONFIG_MPIC is not set
+# CONFIG_MPIC_WEIRD is not set
+# CONFIG_PPC_I8259 is not set
+# CONFIG_PPC_RTAS is not set
+# CONFIG_MMIO_NVRAM is not set
+# CONFIG_PPC_MPC106 is not set
+# CONFIG_PPC_970_NAP is not set
+# CONFIG_PPC_INDIRECT_IO is not set
+# CONFIG_GENERIC_IOMAP is not set
+# CONFIG_CPU_FREQ is not set
+# CONFIG_TAU is not set
+# CONFIG_QUICC_ENGINE is not set
+# CONFIG_FSL_ULI1575 is not set
+CONFIG_MPC8xxx_GPIO=y
+# CONFIG_SIMPLE_GPIO is not set
+# CONFIG_MCU_MPC8349EMITX is not set
+
+#
+# Kernel options
+#
+# CONFIG_HIGHMEM is not set
+# CONFIG_NO_HZ is not set
+# CONFIG_HIGH_RES_TIMERS is not set
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_HZ_100 is not set
+CONFIG_HZ_250=y
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=250
+# CONFIG_SCHED_HRTICK is not set
+CONFIG_PREEMPT_NONE=y
+# CONFIG_PREEMPT_VOLUNTARY is not set
+# CONFIG_PREEMPT is not set
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+# CONFIG_HAVE_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_IOMMU_HELPER is not set
+# CONFIG_SWIOTLB is not set
+CONFIG_ARCH_ENABLE_MEMORY_HOTPLUG=y
+CONFIG_ARCH_HAS_WALK_MEMORY=y
+CONFIG_ARCH_ENABLE_MEMORY_HOTREMOVE=y
+# CONFIG_KEXEC is not set
+# CONFIG_CRASH_DUMP is not set
+CONFIG_ARCH_FLATMEM_ENABLE=y
+CONFIG_ARCH_POPULATES_NODE_MAP=y
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_HAVE_MLOCK=y
+CONFIG_HAVE_MLOCKED_PAGE_BIT=y
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_PPC_4K_PAGES=y
+# CONFIG_PPC_16K_PAGES is not set
+# CONFIG_PPC_64K_PAGES is not set
+# CONFIG_PPC_256K_PAGES is not set
+CONFIG_FORCE_MAX_ZONEORDER=11
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_CMDLINE_BOOL is not set
+CONFIG_EXTRA_TARGETS=""
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+CONFIG_PM_VERBOSE=y
+CONFIG_CAN_PM_TRACE=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_SECCOMP=y
+CONFIG_ISA_DMA_API=y
+
+#
+# Bus options
+#
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_ISA_DMA=y
+CONFIG_PPC_INDIRECT_PCI=y
+CONFIG_FSL_SOC=y
+CONFIG_FSL_PCI=y
+CONFIG_FSL_LBC=y
+CONFIG_PPC_PCI_CHOICE=y
+CONFIG_PCI=y
+CONFIG_PCI_DOMAINS=y
+CONFIG_PCI_SYSCALL=y
+# CONFIG_PCIEPORTBUS is not set
+CONFIG_ARCH_SUPPORTS_MSI=y
+# CONFIG_PCI_MSI is not set
+CONFIG_PCI_LEGACY=y
+# CONFIG_PCI_STUB is not set
+# CONFIG_PCI_IOV is not set
+# CONFIG_PCCARD is not set
+# CONFIG_HOTPLUG_PCI is not set
+# CONFIG_HAS_RAPIDIO is not set
+
+#
+# Advanced setup
+#
+# CONFIG_ADVANCED_OPTIONS is not set
+
+#
+# Default settings for advanced configuration options are used
+#
+CONFIG_LOWMEM_SIZE=0x30000000
+CONFIG_PAGE_OFFSET=0xc0000000
+CONFIG_KERNEL_START=0xc0000000
+CONFIG_PHYSICAL_START=0x00000000
+CONFIG_TASK_SIZE=0xc0000000
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_MMAP is not set
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_XFRM_IPCOMP=m
+# CONFIG_NET_KEY is not set
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+CONFIG_IP_ADVANCED_ROUTER=y
+CONFIG_ASK_IP_FIB_HASH=y
+# CONFIG_IP_FIB_TRIE is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_MULTIPLE_TABLES=y
+CONFIG_IP_ROUTE_MULTIPATH=y
+CONFIG_IP_ROUTE_VERBOSE=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
+# CONFIG_NET_IPGRE_BROADCAST is not set
+# CONFIG_IP_MROUTE is not set
+# CONFIG_ARPD is not set
+CONFIG_SYN_COOKIES=y
+CONFIG_INET_AH=m
+CONFIG_INET_ESP=m
+CONFIG_INET_IPCOMP=m
+CONFIG_INET_XFRM_TUNNEL=m
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=m
+CONFIG_INET_XFRM_MODE_TUNNEL=m
+CONFIG_INET_XFRM_MODE_BEET=m
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+CONFIG_IPV6_MIP6=m
+CONFIG_INET6_XFRM_TUNNEL=m
+CONFIG_INET6_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION=m
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+CONFIG_IPV6_TUNNEL=m
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+CONFIG_BRIDGE_NETFILTER=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+# CONFIG_NF_CONNTRACK_EVENTS is not set
+# CONFIG_NF_CT_PROTO_DCCP is not set
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NETFILTER_TPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+CONFIG_NETFILTER_XT_TARGET_DSCP=m
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NOTRACK=m
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_TPROXY=m
+CONFIG_NETFILTER_XT_TARGET_TRACE=m
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PHYSDEV=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+# CONFIG_NETFILTER_XT_MATCH_RECENT_PROC_COMPAT is not set
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_QUEUE=m
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_LOG=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+
+#
+# IPv6: Netfilter Configuration
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_RAW=m
+CONFIG_BRIDGE_NF_EBTABLES=m
+CONFIG_BRIDGE_EBT_BROUTE=m
+CONFIG_BRIDGE_EBT_T_FILTER=m
+CONFIG_BRIDGE_EBT_T_NAT=m
+CONFIG_BRIDGE_EBT_802_3=m
+CONFIG_BRIDGE_EBT_AMONG=m
+CONFIG_BRIDGE_EBT_ARP=m
+CONFIG_BRIDGE_EBT_IP=m
+CONFIG_BRIDGE_EBT_IP6=m
+CONFIG_BRIDGE_EBT_LIMIT=m
+CONFIG_BRIDGE_EBT_MARK=m
+CONFIG_BRIDGE_EBT_PKTTYPE=m
+CONFIG_BRIDGE_EBT_STP=m
+CONFIG_BRIDGE_EBT_VLAN=m
+CONFIG_BRIDGE_EBT_ARPREPLY=m
+CONFIG_BRIDGE_EBT_DNAT=m
+CONFIG_BRIDGE_EBT_MARK_T=m
+CONFIG_BRIDGE_EBT_REDIRECT=m
+CONFIG_BRIDGE_EBT_SNAT=m
+CONFIG_BRIDGE_EBT_LOG=m
+# CONFIG_BRIDGE_EBT_ULOG is not set
+# CONFIG_BRIDGE_EBT_NFLOG is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+CONFIG_ATM=m
+CONFIG_ATM_CLIP=m
+# CONFIG_ATM_CLIP_NO_ICMP is not set
+CONFIG_ATM_LANE=m
+CONFIG_ATM_MPOA=m
+CONFIG_ATM_BR2684=m
+# CONFIG_ATM_BR2684_IPFILTER is not set
+CONFIG_STP=m
+CONFIG_BRIDGE=m
+# CONFIG_NET_DSA is not set
+CONFIG_VLAN_8021Q=m
+# CONFIG_VLAN_8021Q_GVRP is not set
+# CONFIG_DECNET is not set
+CONFIG_LLC=m
+CONFIG_LLC2=m
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+CONFIG_WAN_ROUTER=m
+# CONFIG_PHONET is not set
+# CONFIG_IEEE802154 is not set
+CONFIG_NET_SCHED=y
+
+#
+# Queueing/Scheduling
+#
+CONFIG_NET_SCH_CBQ=m
+CONFIG_NET_SCH_HTB=m
+CONFIG_NET_SCH_HFSC=m
+CONFIG_NET_SCH_ATM=m
+CONFIG_NET_SCH_PRIO=m
+CONFIG_NET_SCH_MULTIQ=m
+CONFIG_NET_SCH_RED=m
+CONFIG_NET_SCH_SFQ=m
+CONFIG_NET_SCH_TEQL=m
+CONFIG_NET_SCH_TBF=m
+CONFIG_NET_SCH_GRED=m
+CONFIG_NET_SCH_DSMARK=m
+CONFIG_NET_SCH_NETEM=m
+CONFIG_NET_SCH_DRR=m
+CONFIG_NET_SCH_INGRESS=m
+
+#
+# Classification
+#
+CONFIG_NET_CLS=y
+CONFIG_NET_CLS_BASIC=m
+CONFIG_NET_CLS_TCINDEX=m
+CONFIG_NET_CLS_ROUTE4=m
+CONFIG_NET_CLS_ROUTE=y
+CONFIG_NET_CLS_FW=m
+CONFIG_NET_CLS_U32=m
+CONFIG_CLS_U32_PERF=y
+CONFIG_CLS_U32_MARK=y
+CONFIG_NET_CLS_RSVP=m
+CONFIG_NET_CLS_RSVP6=m
+CONFIG_NET_CLS_FLOW=m
+CONFIG_NET_EMATCH=y
+CONFIG_NET_EMATCH_STACK=32
+CONFIG_NET_EMATCH_CMP=m
+CONFIG_NET_EMATCH_NBYTE=m
+CONFIG_NET_EMATCH_U32=m
+CONFIG_NET_EMATCH_META=m
+CONFIG_NET_EMATCH_TEXT=m
+CONFIG_NET_CLS_ACT=y
+CONFIG_NET_ACT_POLICE=m
+CONFIG_NET_ACT_GACT=m
+CONFIG_GACT_PROB=y
+CONFIG_NET_ACT_MIRRED=m
+CONFIG_NET_ACT_IPT=m
+CONFIG_NET_ACT_NAT=m
+CONFIG_NET_ACT_PEDIT=m
+CONFIG_NET_ACT_SIMP=m
+CONFIG_NET_ACT_SKBEDIT=m
+CONFIG_NET_CLS_IND=y
+CONFIG_NET_SCH_FIFO=y
+# CONFIG_DCB is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_FIB_RULES=y
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=m
+# CONFIG_CFG80211_REG_DEBUG is not set
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+# CONFIG_WIRELESS_EXT_SYSFS is not set
+CONFIG_LIB80211=m
+CONFIG_LIB80211_CRYPT_WEP=m
+CONFIG_LIB80211_CRYPT_CCMP=m
+CONFIG_LIB80211_CRYPT_TKIP=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_DEFAULT_PS=y
+CONFIG_MAC80211_DEFAULT_PS_VALUE=1
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
+CONFIG_MAC80211_RC_DEFAULT="pid"
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=m
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+CONFIG_MTD_TESTS=m
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_OF_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+CONFIG_MTD_CFI=y
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_GEN_PROBE=y
+# CONFIG_MTD_CFI_ADV_OPTIONS is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_CFI_INTELEXT is not set
+CONFIG_MTD_CFI_AMDSTD=y
+# CONFIG_MTD_CFI_STAA is not set
+CONFIG_MTD_CFI_UTIL=y
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_COMPAT=y
+CONFIG_MTD_PHYSMAP_START=0xfe000000
+CONFIG_MTD_PHYSMAP_LEN=0x0800000
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_PHYSMAP_OF is not set
+# CONFIG_MTD_INTEL_VR_NOR is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_PMC551 is not set
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_CAFE is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+# CONFIG_MTD_NAND_PLATFORM is not set
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_NAND_FSL_ELBC=y
+CONFIG_MTD_NAND_FSL_UPM=y
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+CONFIG_OF_DEVICE=y
+CONFIG_OF_GPIO=y
+CONFIG_OF_I2C=y
+CONFIG_OF_SPI=y
+CONFIG_OF_MDIO=y
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_FD is not set
+# CONFIG_BLK_CPQ_DA is not set
+# CONFIG_BLK_CPQ_CISS_DA is not set
+# CONFIG_BLK_DEV_DAC960 is not set
+# CONFIG_BLK_DEV_UMEM is not set
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=m
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_SX8 is not set
+# CONFIG_BLK_DEV_UB is not set
+# CONFIG_BLK_DEV_RAM is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_BLK_DEV_HD is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_PHANTOM is not set
+# CONFIG_SGI_IOC4 is not set
+# CONFIG_TIFM_CORE is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_HP_ILO is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+CONFIG_EEPROM_AT24=y
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_CB710_CORE is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+CONFIG_SCSI_SPI_ATTRS=m
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+# CONFIG_SCSI_LOWLEVEL is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# You can enable one or both FireWire driver stacks.
+#
+
+#
+# See the help texts for more information.
+#
+# CONFIG_FIREWIRE is not set
+# CONFIG_IEEE1394 is not set
+# CONFIG_I2O is not set
+# CONFIG_MACINTOSH_DRIVERS is not set
+CONFIG_NETDEVICES=y
+# CONFIG_IFB is not set
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_ARCNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+CONFIG_FIXED_PHY=y
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_NET_ETHERNET is not set
+CONFIG_MII=y
+CONFIG_NETDEV_1000=y
+# CONFIG_ACENIC is not set
+# CONFIG_DL2K is not set
+# CONFIG_E1000 is not set
+# CONFIG_E1000E is not set
+# CONFIG_IP1000 is not set
+# CONFIG_IGB is not set
+# CONFIG_IGBVF is not set
+# CONFIG_NS83820 is not set
+# CONFIG_HAMACHI is not set
+# CONFIG_YELLOWFIN is not set
+# CONFIG_R8169 is not set
+# CONFIG_SIS190 is not set
+# CONFIG_SKGE is not set
+# CONFIG_SKY2 is not set
+# CONFIG_VIA_VELOCITY is not set
+# CONFIG_TIGON3 is not set
+# CONFIG_BNX2 is not set
+# CONFIG_CNIC is not set
+CONFIG_FSL_PQ_MDIO=y
+CONFIG_GIANFAR=y
+# CONFIG_MV643XX_ETH is not set
+# CONFIG_QLA3XXX is not set
+# CONFIG_ATL1 is not set
+# CONFIG_ATL1E is not set
+# CONFIG_ATL1C is not set
+# CONFIG_JME is not set
+# CONFIG_NETDEV_10000 is not set
+# CONFIG_TR is not set
+
+#
+# Wireless LAN
+#
+CONFIG_WLAN_PRE80211=y
+# CONFIG_STRIP is not set
+CONFIG_WLAN_80211=y
+# CONFIG_LIBERTAS is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_AIRO is not set
+# CONFIG_ATMEL is not set
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_PRISM54 is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8180 is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_ADM8211 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_MWL8K is not set
+# CONFIG_P54_COMMON is not set
+CONFIG_ATH_COMMON=m
+CONFIG_ATH5K=m
+# CONFIG_ATH5K_DEBUG is not set
+CONFIG_ATH9K=m
+# CONFIG_ATH9K_DEBUG is not set
+CONFIG_AR9170_USB=m
+CONFIG_AR9170_LEDS=y
+# CONFIG_IPW2100 is not set
+# CONFIG_IPW2200 is not set
+# CONFIG_IWLWIFI is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+CONFIG_HOSTAP_PLX=m
+CONFIG_HOSTAP_PCI=m
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+# CONFIG_HERMES is not set
+# CONFIG_WL12XX is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+CONFIG_USB_USBNET=y
+# CONFIG_USB_NET_AX8817X is not set
+CONFIG_USB_NET_CDCETHER=y
+# CONFIG_USB_NET_CDC_EEM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SMSC95XX is not set
+# CONFIG_USB_NET_GL620A is not set
+# CONFIG_USB_NET_NET1080 is not set
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+# CONFIG_USB_NET_RNDIS_HOST is not set
+CONFIG_USB_NET_CDC_SUBSET=y
+# CONFIG_USB_ALI_M5632 is not set
+# CONFIG_USB_AN2720 is not set
+CONFIG_USB_BELKIN=y
+# CONFIG_USB_ARMLINUX is not set
+# CONFIG_USB_EPSON2888 is not set
+# CONFIG_USB_KC2190 is not set
+# CONFIG_USB_NET_ZAURUS is not set
+# CONFIG_USB_NET_INT51X1 is not set
+# CONFIG_WAN is not set
+# CONFIG_ATM_DRIVERS is not set
+# CONFIG_FDDI is not set
+# CONFIG_HIPPI is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_NET_FC is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+# CONFIG_PHONE is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=y
+
+#
+# Userland interfaces
+#
+# CONFIG_INPUT_MOUSEDEV is not set
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+CONFIG_INPUT_EVBUG=y
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
+# CONFIG_INPUT_UINPUT is not set
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+CONFIG_INPUT_CAPSENSE_BTNS=y
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_NOZOMI is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+# CONFIG_SERIAL_8250_PCI is not set
+CONFIG_SERIAL_8250_NR_UARTS=4
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+# CONFIG_SERIAL_8250_EXTENDED is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_UARTLITE is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_JSM is not set
+# CONFIG_SERIAL_OF_PLATFORM is not set
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_HVC_UDBG is not set
+# CONFIG_IPMI_HANDLER is not set
+# CONFIG_HW_RANDOM is not set
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_APPLICOM is not set
+CONFIG_GPIO_MPC8313=y
+CONFIG_EXIO_MPC8313=y
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_DEVPORT=y
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# PC SMBus host controller drivers
+#
+# CONFIG_I2C_ALI1535 is not set
+# CONFIG_I2C_ALI1563 is not set
+# CONFIG_I2C_ALI15X3 is not set
+# CONFIG_I2C_AMD756 is not set
+# CONFIG_I2C_AMD8111 is not set
+# CONFIG_I2C_I801 is not set
+# CONFIG_I2C_ISCH is not set
+# CONFIG_I2C_PIIX4 is not set
+# CONFIG_I2C_NFORCE2 is not set
+# CONFIG_I2C_SIS5595 is not set
+# CONFIG_I2C_SIS630 is not set
+# CONFIG_I2C_SIS96X is not set
+# CONFIG_I2C_VIA is not set
+# CONFIG_I2C_VIAPRO is not set
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+CONFIG_I2C_MPC=y
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Graphics adapter I2C/DDC channel drivers
+#
+# CONFIG_I2C_VOODOO3 is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+CONFIG_SPI_MPC8xxx=y
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_TLE62X0 is not set
+
+#
+# PPS support
+#
+# CONFIG_PPS is not set
+CONFIG_ARCH_WANT_OPTIONAL_GPIOLIB=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_GPIO_SYSFS is not set
+
+#
+# Memory mapped GPIO expanders:
+#
+# CONFIG_GPIO_XILINX is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+
+#
+# PCI GPIO expanders:
+#
+# CONFIG_GPIO_BT8XX is not set
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+CONFIG_POWER_SUPPLY=y
+CONFIG_POWER_SUPPLY_DEBUG=y
+# CONFIG_PDA_POWER is not set
+# CONFIG_BATTERY_DS2760 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_I5K_AMB is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+CONFIG_SENSORS_LM73=y
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SIS5595 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_VIA686A is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_VT8231 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+# CONFIG_THERMAL_HWMON is not set
+CONFIG_WATCHDOG=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_ALIM7101_WDT is not set
+CONFIG_8xxx_WDT=y
+
+#
+# PCI-based Watchdog Cards
+#
+# CONFIG_PCIPCWATCHDOG is not set
+# CONFIG_WDTPCI is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_AB3100_CORE is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_REGULATOR is not set
+# CONFIG_MEDIA_SUPPORT is not set
+
+#
+# Graphics support
+#
+# CONFIG_AGP is not set
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT is not set
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+CONFIG_FB_SYS_FILLRECT=y
+CONFIG_FB_SYS_COPYAREA=y
+CONFIG_FB_SYS_IMAGEBLIT=y
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+CONFIG_FB_SYS_FOPS=y
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+CONFIG_FB_BACKLIGHT=y
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_CIRRUS is not set
+# CONFIG_FB_PM2 is not set
+# CONFIG_FB_CYBER2000 is not set
+CONFIG_FB_NT7506=y
+CONFIG_FB_NT7506_GRAYSCALE=y
+# CONFIG_FB_OF is not set
+# CONFIG_FB_CT65550 is not set
+# CONFIG_FB_ASILIANT is not set
+# CONFIG_FB_IMSTT is not set
+# CONFIG_FB_VGA16 is not set
+# CONFIG_FB_S1D15605 is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_NVIDIA is not set
+# CONFIG_FB_RIVA is not set
+# CONFIG_FB_MATROX is not set
+# CONFIG_FB_RADEON is not set
+# CONFIG_FB_ATY128 is not set
+# CONFIG_FB_ATY is not set
+# CONFIG_FB_S3 is not set
+# CONFIG_FB_SAVAGE is not set
+# CONFIG_FB_SIS is not set
+# CONFIG_FB_VIA is not set
+# CONFIG_FB_NEOMAGIC is not set
+# CONFIG_FB_KYRO is not set
+# CONFIG_FB_3DFX is not set
+# CONFIG_FB_VOODOO1 is not set
+# CONFIG_FB_VT8623 is not set
+# CONFIG_FB_TRIDENT is not set
+# CONFIG_FB_ARK is not set
+# CONFIG_FB_PM3 is not set
+# CONFIG_FB_CARMINE is not set
+# CONFIG_FB_FSL_DIU is not set
+# CONFIG_FB_IBM_GXT4500 is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_BROADSHEET is not set
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+CONFIG_LCD_CLASS_DEVICE=y
+# CONFIG_LCD_LTV350QV is not set
+# CONFIG_LCD_ILI9320 is not set
+# CONFIG_LCD_TDO24M is not set
+# CONFIG_LCD_VGG2432A4 is not set
+# CONFIG_LCD_PLATFORM is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_GENERIC is not set
+
+#
+# Display device support
+#
+# CONFIG_DISPLAY_SUPPORT is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+# CONFIG_LOGO is not set
+CONFIG_SOUND=m
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SND=m
+CONFIG_SND_TIMER=m
+CONFIG_SND_PCM=m
+CONFIG_SND_HWDEP=m
+CONFIG_SND_RAWMIDI=m
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+# CONFIG_SND_RAWMIDI_SEQ is not set
+# CONFIG_SND_OPL3_LIB_SEQ is not set
+# CONFIG_SND_OPL4_LIB_SEQ is not set
+# CONFIG_SND_SBAWE_SEQ is not set
+# CONFIG_SND_EMU10K1_SEQ is not set
+# CONFIG_SND_DRIVERS is not set
+# CONFIG_SND_PCI is not set
+# CONFIG_SND_PPC is not set
+# CONFIG_SND_SPI is not set
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=m
+CONFIG_SND_USB_USX2Y=m
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+# CONFIG_SND_SOC is not set
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=m
+# CONFIG_HID_DEBUG is not set
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=m
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+CONFIG_HID_APPLE=m
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_KENSINGTON is not set
+CONFIG_HID_LOGITECH=m
+# CONFIG_LOGITECH_FF is not set
+# CONFIG_LOGIRUMBLEPAD2_FF is not set
+CONFIG_HID_MICROSOFT=m
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_ZEROPLUS is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_SUSPEND is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=m
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+CONFIG_USB_EHCI_FSL=y
+CONFIG_USB_EHCI_HCD_PPC_OF=y
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+CONFIG_USB_OHCI_HCD_PPC_OF_BE=y
+# CONFIG_USB_OHCI_HCD_PPC_OF_LE is not set
+CONFIG_USB_OHCI_HCD_PPC_OF=y
+CONFIG_USB_OHCI_HCD_PCI=y
+CONFIG_USB_OHCI_BIG_ENDIAN_DESC=y
+CONFIG_USB_OHCI_BIG_ENDIAN_MMIO=y
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_UHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_WHCI_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+# CONFIG_USB_ATM is not set
+# CONFIG_USB_GADGET is not set
+
+#
+# OTG and related infrastructure
+#
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_NOP_USB_XCEIV is not set
+# CONFIG_UWB is not set
+# CONFIG_MMC is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_PCA9532 is not set
+# CONFIG_LEDS_GPIO is not set
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_BD2802 is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_GPIO is not set
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_INFINIBAND is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+CONFIG_RTC_DRV_ISL12024=y
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_RTC_DRV_GENERIC is not set
+# CONFIG_DMADEVICES is not set
+# CONFIG_AUXDISPLAY is not set
+# CONFIG_UIO is not set
+
+#
+# TI VLYNQ
+#
+# CONFIG_STAGING is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=m
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=m
+# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
+CONFIG_EXT3_FS_XATTR=y
+# CONFIG_EXT3_FS_POSIX_ACL is not set
+# CONFIG_EXT3_FS_SECURITY is not set
+# CONFIG_EXT4_FS is not set
+CONFIG_JBD=m
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=m
+CONFIG_MSDOS_FS=m
+CONFIG_VFAT_FS=m
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+CONFIG_NTFS_FS=m
+# CONFIG_NTFS_DEBUG is not set
+CONFIG_NTFS_RW=y
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_KCORE=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+# CONFIG_JFFS2_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+# CONFIG_JFFS2_LZO is not set
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=m
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+CONFIG_NFSD=m
+CONFIG_NFSD_V3=y
+# CONFIG_NFSD_V3_ACL is not set
+CONFIG_NFSD_V4=y
+CONFIG_LOCKD=m
+CONFIG_LOCKD_V4=y
+CONFIG_EXPORTFS=m
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=m
+CONFIG_SUNRPC_GSS=m
+CONFIG_RPCSEC_GSS_KRB5=m
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=m
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+CONFIG_LDM_PARTITION=y
+# CONFIG_LDM_DEBUG is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-15"
+CONFIG_NLS_CODEPAGE_437=m
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+CONFIG_NLS_CODEPAGE_850=m
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+CONFIG_NLS_ASCII=m
+CONFIG_NLS_ISO8859_1=m
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=m
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=m
+# CONFIG_DLM is not set
+# CONFIG_BINARY_PRINTF is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_FIND_LAST_BIT=y
+CONFIG_CRC_CCITT=m
+CONFIG_CRC16=m
+# CONFIG_CRC_T10DIF is not set
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=m
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_DECOMPRESS_LZMA=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_HAVE_LMB=y
+CONFIG_NLATTR=y
+CONFIG_GENERIC_ATOMIC64=y
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_MAGIC_SYSRQ is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_KERNEL is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_SYSCTL_SYSCALL_CHECK=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_TRACING_SUPPORT=y
+# CONFIG_FTRACE is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_PPC_DISABLE_WERROR is not set
+CONFIG_PPC_WERROR=y
+CONFIG_PRINT_STACK_DEPTH=64
+# CONFIG_IRQSTACKS is not set
+# CONFIG_BOOTX_TEXT is not set
+# CONFIG_PPC_EARLY_DEBUG is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=m
+CONFIG_CRYPTO_ALGAPI2=m
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_AEAD2=m
+CONFIG_CRYPTO_BLKCIPHER=m
+CONFIG_CRYPTO_BLKCIPHER2=m
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=m
+CONFIG_CRYPTO_RNG2=m
+CONFIG_CRYPTO_PCOMP=m
+CONFIG_CRYPTO_MANAGER=m
+CONFIG_CRYPTO_MANAGER2=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_WORKQUEUE=m
+CONFIG_CRYPTO_CRYPTD=m
+CONFIG_CRYPTO_AUTHENC=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=m
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=m
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_ZLIB is not set
+# CONFIG_CRYPTO_LZO is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+# CONFIG_CRYPTO_DEV_HIFN_795X is not set
+# CONFIG_CRYPTO_DEV_TALITOS is not set
+# CONFIG_PPC_CLOCK is not set
+# CONFIG_VIRTUALIZATION is not set
diff --git a/recipes/linux/linux-bug_2.6.27.2.bb b/recipes/linux/linux-bug_2.6.27.2.bb
index b5899a7235..8c83f9ab7f 100644
--- a/recipes/linux/linux-bug_2.6.27.2.bb
+++ b/recipes/linux/linux-bug_2.6.27.2.bb
@@ -2,12 +2,12 @@ DESCRIPTION = "Linux kernel for bug"
PV_append = "+svnr${SRCREV}"
KV = "2.6.27.2"
-PR = "r28"
+PR = "r29"
COMPATIBLE_MACHINE = "bug"
SVN_PRJ = "bug-linux-${KV}"
-SRCREV = "10017"
+SRCREV = "10199"
SRC_URI = "svn://svn.buglabs.net/bug/branches/R1.4/qa;module=${SVN_PRJ};proto=svn \
file://defconfig \
@@ -21,10 +21,17 @@ UBOOT_ENTRYPOINT = "0x80008000"
require linux.inc
do_install_append() {
-# install -m 0644 arch/${ARCH}/boot/uImage ${D}/${KERNEL_IMAGEDEST}/uImage-${KERNEL_VERSION}
cd ${D}/${KERNEL_IMAGEDEST} && ln -sf uImage-${KERNEL_VERSION} uImage
}
+do_stage_append() {
+ cp -fR arch/arm/include/asm/* ${STAGING_KERNEL_DIR}/include/asm/
+ if [ ! -e ${STAGING_KERNEL_DIR}/include/mach ]; then
+ mkdir ${STAGING_KERNEL_DIR}/include/mach
+ fi
+ cp -fR arch/arm/plat-mxc/include/mach/* ${STAGING_KERNEL_DIR}/include/mach/
+}
+
FILESDIR = "${WORKDIR}"
FILES_kernel-image += "${KERNEL_IMAGEDEST}/uImage*"
diff --git a/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig b/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig
new file mode 100644
index 0000000000..8815d0c984
--- /dev/null
+++ b/recipes/linux/linux-igep2-2.6.28.10-0/igep0020/defconfig
@@ -0,0 +1,2082 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.28.10
+# Fri Aug 7 09:04:21 2009
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_OPROFILE_ARMV7=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=17
+# CONFIG_CGROUPS is not set
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+# CONFIG_SYSFS_DEPRECATED_V2 is not set
+# CONFIG_RELAY is not set
+# CONFIG_NAMESPACES is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_EMBEDDED=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+# CONFIG_KALLSYMS_ALL is not set
+# CONFIG_KALLSYMS_EXTRA_PASS is not set
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+CONFIG_VM_EVENT_COUNTERS=y
+# CONFIG_COMPAT_BRK is not set
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+# CONFIG_MARKERS is not set
+CONFIG_OPROFILE=y
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+# CONFIG_MODULE_FORCE_LOAD is not set
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_CLASSIC_RCU=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM is not set
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
+# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
+CONFIG_OMAP_SMARTREFLEX=y
+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_BOOT_TAG=y
+CONFIG_OMAP_BOOT_REASON=y
+# CONFIG_OMAP_COMPONENT_VERSION is not set
+# CONFIG_OMAP_GPIO_SWITCH is not set
+# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_TICK_GPTIMER=12
+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_ARCH_OMAP34XX=y
+CONFIG_ARCH_OMAP3430=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_OMAP3EVM is not set
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_OVERO is not set
+# CONFIG_MACH_OMAP3_PANDORA is not set
+CONFIG_MACH_IGEP0020=y
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_IFAR=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xB0000000
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_SELECT_MEMORY_MODEL=y
+CONFIG_FLATMEM_MANUAL=y
+# CONFIG_DISCONTIGMEM_MANUAL is not set
+# CONFIG_SPARSEMEM_MANUAL is not set
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_VIRT_TO_BUS=y
+CONFIG_UNEVICTABLE_LRU=y
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" debug "
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Power Management
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_DEBUG=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=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=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+# CONFIG_CPU_IDLE is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_VFP=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
+CONFIG_HAVE_AOUT=y
+# CONFIG_BINFMT_AOUT is not set
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_VERBOSE is not set
+CONFIG_CAN_PM_TRACE=y
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_NET_DSA is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN 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_RFCOMM_TTY=y
+CONFIG_BT_BNEP=m
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=m
+
+#
+# Bluetooth device drivers
+#
+# CONFIG_BT_HCIUSB is not set
+# CONFIG_BT_HCIBTUSB is not set
+# CONFIG_BT_HCIBTSDIO is not set
+CONFIG_BT_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+CONFIG_BT_HCIUART_BCSP=y
+CONFIG_BT_HCIUART_LL=y
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBRF6150 is not set
+# CONFIG_BT_HCIH4P is not set
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+# CONFIG_PHONET is not set
+CONFIG_WIRELESS=y
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_OLD_REGULATORY=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_MAC80211=y
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_PID=y
+# CONFIG_MAC80211_RC_MINSTREL is not set
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
+CONFIG_MAC80211_RC_DEFAULT="pid"
+CONFIG_MAC80211_MESH=y
+# CONFIG_MAC80211_LEDS is not set
+# CONFIG_MAC80211_DEBUGFS is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+CONFIG_MTD_CMDLINE_PARTS=y
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+# CONFIG_MTD_NAND_GPIO is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+CONFIG_MTD_ONENAND=y
+CONFIG_MTD_ONENAND_VERIFY_WRITE=y
+# CONFIG_MTD_ONENAND_GENERIC is not set
+CONFIG_MTD_ONENAND_OMAP2=y
+# CONFIG_MTD_ONENAND_OTP is not set
+CONFIG_MTD_ONENAND_2X_PROGRAM=y
+# CONFIG_MTD_ONENAND_SIM is not set
+
+#
+# UBI - Unsorted block images
+#
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_RESERVE=1
+# CONFIG_MTD_UBI_GLUEBI is not set
+
+#
+# UBI debugging options
+#
+# CONFIG_MTD_UBI_DEBUG is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+# CONFIG_EEPROM_93CX6 is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_OMAP_STI is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_C2PORT is not set
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+CONFIG_CHR_DEV_ST=y
+CONFIG_CHR_DEV_OSST=y
+CONFIG_BLK_DEV_SR=y
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=y
+CONFIG_CHR_DEV_SCH=y
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+# CONFIG_SCSI_MULTI_LUN is not set
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+CONFIG_SCSI_DH=y
+# CONFIG_SCSI_DH_RDAC is not set
+# CONFIG_SCSI_DH_HP_SW is not set
+# CONFIG_SCSI_DH_EMC is not set
+# CONFIG_SCSI_DH_ALUA is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+# CONFIG_SMSC_PHY is not set
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_AX88796 is not set
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+# CONFIG_ENC28J60 is not set
+# CONFIG_SMC911X is not set
+CONFIG_SMSC911X=y
+# CONFIG_IBM_NEW_EMAC_ZMII is not set
+# CONFIG_IBM_NEW_EMAC_RGMII is not set
+# CONFIG_IBM_NEW_EMAC_TAH is not set
+# CONFIG_IBM_NEW_EMAC_EMAC4 is not set
+# CONFIG_IBM_NEW_EMAC_NO_FLOW_CTRL is not set
+# CONFIG_IBM_NEW_EMAC_MAL_CLR_ICINTSTAT is not set
+# CONFIG_IBM_NEW_EMAC_MAL_COMMON_ERR is not set
+# CONFIG_B44 is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+# CONFIG_LIBERTAS_USB is not set
+CONFIG_LIBERTAS_SDIO=m
+# CONFIG_LIBERTAS_SPI is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_THINFIRM is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8187 is not set
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_P54_COMMON is not set
+# CONFIG_IWLWIFI_LEDS is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
+
+#
+# USB Network Adapters
+#
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+# CONFIG_INPUT_JOYDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_TWL4030 is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_GPIO is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_LIFEBOOK=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+# CONFIG_INPUT_TOUCHSCREEN is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+# CONFIG_SERIO_SERPORT is not set
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
+CONFIG_SENSORS_EEPROM=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_TPS65010 is not set
+CONFIG_TWL4030_MADC=m
+CONFIG_TWL4030_PWRBUTTON=y
+CONFIG_TWL4030_POWEROFF=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_TSL2563 is not set
+# CONFIG_LP5521 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_OMAP24XX is not set
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_TSC210X is not set
+# CONFIG_SPI_TSC2301 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# Memory mapped GPIO expanders:
+#
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7473 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+# CONFIG_SENSORS_TSC210X is not set
+CONFIG_SENSORS_OMAP34XX=y
+# CONFIG_HWMON_DEBUG_CHIP is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_TWL4030_CORE=y
+# CONFIG_TWL4030_POWER is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM8350_I2C is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_VIDEO_AU0828 is not set
+# CONFIG_SOC_CAMERA is not set
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+CONFIG_USB_M5602=m
+CONFIG_USB_GSPCA_CONEX=m
+CONFIG_USB_GSPCA_ETOMS=m
+CONFIG_USB_GSPCA_FINEPIX=m
+CONFIG_USB_GSPCA_MARS=m
+CONFIG_USB_GSPCA_OV519=m
+CONFIG_USB_GSPCA_PAC207=m
+CONFIG_USB_GSPCA_PAC7311=m
+CONFIG_USB_GSPCA_SONIXB=m
+CONFIG_USB_GSPCA_SONIXJ=m
+CONFIG_USB_GSPCA_SPCA500=m
+CONFIG_USB_GSPCA_SPCA501=m
+CONFIG_USB_GSPCA_SPCA505=m
+CONFIG_USB_GSPCA_SPCA506=m
+CONFIG_USB_GSPCA_SPCA508=m
+CONFIG_USB_GSPCA_SPCA561=m
+CONFIG_USB_GSPCA_STK014=m
+CONFIG_USB_GSPCA_SUNPLUS=m
+CONFIG_USB_GSPCA_T613=m
+CONFIG_USB_GSPCA_TV8532=m
+CONFIG_USB_GSPCA_VC032X=m
+CONFIG_USB_GSPCA_ZC3XX=m
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_SI470X is not set
+# CONFIG_USB_MR800 is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+CONFIG_DVB_USB_DW2102=m
+CONFIG_DVB_USB_CINERGY_T2=m
+CONFIG_DVB_USB_ANYSEE=m
+CONFIG_DVB_USB_DTV5100=m
+CONFIG_DVB_USB_AF9015=m
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_SIANO_SMS1XXX=m
+CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0288=m
+CONFIG_DVB_STB6000=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+CONFIG_DVB_CX24116=m
+CONFIG_DVB_SI21XX=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+# CONFIG_DVB_DRX397XD is not set
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6405 is not set
+CONFIG_DVB_ISL6421=m
+# CONFIG_DVB_LGS8GL5 is not set
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+CONFIG_DVB_AF9013=m
+# CONFIG_DAB is not set
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_MB862XX is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_OMAP2_DSS=y
+CONFIG_OMAP2_DSS_VRAM_SIZE=4
+CONFIG_OMAP2_DSS_DEBUG_SUPPORT=y
+# CONFIG_OMAP2_DSS_RFBI is not set
+# CONFIG_OMAP2_DSS_VENC is not set
+# CONFIG_OMAP2_DSS_SDI is not set
+CONFIG_OMAP2_DSS_DSI=y
+CONFIG_OMAP2_DSS_USE_DSI_PLL=y
+# CONFIG_OMAP2_DSS_FAKE_VSYNC is not set
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=1
+
+#
+# OMAP2/3 Display Device Drivers
+#
+CONFIG_PANEL_GENERIC=y
+# CONFIG_PANEL_SAMSUNG_LTE430WQ_F0C is not set
+# CONFIG_PANEL_SHARP_LS037V7DW01 is not set
+CONFIG_FB_OMAP2=y
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+# CONFIG_FB_OMAP2_FORCE_AUTO_UPDATE is not set
+CONFIG_FB_OMAP2_NUM_FBS=3
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_LOGO is not set
+CONFIG_SOUND=y
+CONFIG_SOUND_OSS_CORE=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+CONFIG_SND_SEQUENCER_OSS=y
+# CONFIG_SND_DYNAMIC_MINORS is not set
+CONFIG_SND_SUPPORT_OLD_API=y
+CONFIG_SND_VERBOSE_PROCFS=y
+# CONFIG_SND_VERBOSE_PRINTK is not set
+# CONFIG_SND_DEBUG is not set
+CONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_ARM=y
+# CONFIG_SND_SPI is not set
+# CONFIG_SND_USB is not set
+CONFIG_SND_SOC=y
+CONFIG_SND_OMAP_SOC=y
+CONFIG_SND_OMAP_SOC_MCBSP=y
+CONFIG_SND_OMAP_SOC_IGEP0020=y
+# CONFIG_SND_SOC_ALL_CODECS is not set
+CONFIG_SND_SOC_TWL4030=y
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+# CONFIG_USB_HIDDEV is not set
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_COMPAT is not set
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_BRIGHT is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DELL is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_THRUSTMASTER_FF is not set
+# CONFIG_ZEROPLUS_FF is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+# CONFIG_USB_ANNOUNCE_NEW_DEVICES is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB is not set
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_OMAP_EHCI_PHY_MODE=y
+# CONFIG_OMAP_EHCI_TLL_MODE is not set
+CONFIG_USB_EHCI_ROOT_HUB_TT=y
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+# CONFIG_USB_HWA_HCD is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_SOC=y
+
+#
+# OMAP 343x high speed USB support
+#
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_PERIPHERAL is not set
+CONFIG_USB_MUSB_OTG=y
+CONFIG_USB_GADGET_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_USB_INVENTRA_DMA=y
+# CONFIG_USB_TI_CPPI_DMA is not set
+# CONFIG_USB_MUSB_DEBUG is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+# CONFIG_USB_WDM is not set
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may also be needed;
+#
+
+#
+# see USB_STORAGE Help for more information
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+CONFIG_USB_LIBUSUAL=y
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+# CONFIG_USB_SERIAL is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_VST is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_FSL_QE is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=y
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+
+#
+# OTG and related infrastructure
+#
+CONFIG_USB_OTG_UTILS=y
+CONFIG_USB_GPIO_VBUS=y
+# CONFIG_ISP1301_OMAP is not set
+CONFIG_TWL4030_USB=y
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+# CONFIG_SDIO_UART is not set
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_SPI is not set
+# CONFIG_MEMSTICK is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_NEW_LEDS is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+CONFIG_RTC_DRV_TWL4030=y
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_DMADEVICES is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+CONFIG_REGULATOR_TWL4030=y
+# CONFIG_UIO is not set
+
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=m
+# CONFIG_EXT4DEV_COMPAT is not set
+CONFIG_EXT4_FS_XATTR=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=m
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=m
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_FILE_LOCKING=y
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+# CONFIG_JFFS2_CMODE_PRIORITY is not set
+# CONFIG_JFFS2_CMODE_SIZE is not set
+CONFIG_JFFS2_CMODE_FAVOURLZO=y
+CONFIG_UBIFS_FS=y
+# CONFIG_UBIFS_FS_XATTR is not set
+# CONFIG_UBIFS_FS_ADVANCED_COMPR is not set
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_UBIFS_FS_DEBUG is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_REGISTER_V4 is not set
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_RCU_CPU_STALL_DETECTOR is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FUNCTION_TRACER=y
+
+#
+# Tracers
+#
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_BOOT_TRACER is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_DYNAMIC_PRINTK_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+CONFIG_DEBUG_USER=y
+CONFIG_DEBUG_ERRORS=y
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+# CONFIG_CRYPTO_FIPS is not set
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+CONFIG_CRYPTO_LZO=y
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/recipes/linux/linux-igep2_2.6.28.10-0.bb b/recipes/linux/linux-igep2_2.6.28.10-0.bb
new file mode 100644
index 0000000000..ebe291807a
--- /dev/null
+++ b/recipes/linux/linux-igep2_2.6.28.10-0.bb
@@ -0,0 +1,13 @@
+require linux.inc
+
+DESCRIPTION = "Linux kernel for OMAP processors"
+KERNEL_IMAGETYPE = "uImage"
+
+COMPATIBLE_MACHINE = "igep0020"
+
+DEFAULT_PREFERENCE_igep0020 = "1"
+
+SRC_URI = "http://downloads.myigep.com/sources/kernel/linux-omap-2.6.28.10-igep0020b-0.tar.gz \
+ file://defconfig"
+
+S = "${WORKDIR}/linux-omap-2.6.28.10-igep0020b-0"
diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c
new file mode 100644
index 0000000000..0296944f83
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/board-omap3touchbook.c
@@ -0,0 +1,739 @@
+/*
+ * linux/arch/arm/mach-omap2/board-omap3touchbook.c
+ *
+ * Copyright (C) 2009 Always Innovating
+ *
+ * Modified from mach-omap2/board-omap3beagleboard.c
+ *
+ * Initial code: Grégoire Gentil, Tim Yamin
+ *
+ * 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.
+ */
+
+#include <linux/kernel.h>
+#include <linux/init.h>
+#include <linux/platform_device.h>
+#include <linux/delay.h>
+#include <linux/err.h>
+#include <linux/clk.h>
+#include <linux/io.h>
+#include <linux/leds.h>
+#include <linux/gpio.h>
+#include <linux/input.h>
+#include <linux/gpio_keys.h>
+
+#include <linux/mtd/mtd.h>
+#include <linux/mtd/partitions.h>
+#include <linux/mtd/nand.h>
+
+#include <mach/mcspi.h>
+#include <linux/spi/spi.h>
+#include <linux/spi/ads7846.h>
+#include <linux/mma7455l.h>
+
+#include <mach/dmtimer.h>
+#include <linux/backlight.h>
+
+#include <linux/regulator/machine.h>
+#include <linux/i2c/twl4030.h>
+#include <linux/omapfb.h>
+
+#include <mach/hardware.h>
+#include <asm/mach-types.h>
+#include <asm/mach/arch.h>
+#include <asm/mach/map.h>
+#include <asm/mach/flash.h>
+
+#include <mach/board.h>
+#include <mach/usb.h>
+#include <mach/common.h>
+#include <mach/gpmc.h>
+#include <mach/nand.h>
+#include <mach/mux.h>
+#include <mach/display.h>
+
+#include "twl4030-generic-scripts.h"
+#include "mmc-twl4030.h"
+
+
+#define GPMC_CS0_BASE 0x60
+#define GPMC_CS_SIZE 0x30
+
+#define NAND_BLOCK_SIZE SZ_128K
+
+#define OMAP3_AC_GPIO 136 //Int1 DRDY
+#define OMAP3_TS_GPIO 162
+#define TB_BL_PWM_TIMER 9
+#define TB_KILL_POWER_GPIO 168
+
+static struct mtd_partition omap3touchbook_nand_partitions[] = {
+ /* All the partition sizes are listed in terms of NAND block size */
+ {
+ .name = "X-Loader",
+ .offset = 0,
+ .size = 4 * NAND_BLOCK_SIZE,
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
+ },
+ {
+ .name = "U-Boot",
+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x80000 */
+ .size = 15 * NAND_BLOCK_SIZE,
+ .mask_flags = MTD_WRITEABLE, /* force read-only */
+ },
+ {
+ .name = "U-Boot Env",
+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x260000 */
+ .size = 1 * NAND_BLOCK_SIZE,
+ },
+ {
+ .name = "Kernel",
+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x280000 */
+ .size = 32 * NAND_BLOCK_SIZE,
+ },
+ {
+ .name = "File System",
+ .offset = MTDPART_OFS_APPEND, /* Offset = 0x680000 */
+ .size = MTDPART_SIZ_FULL,
+ },
+};
+
+static struct omap_nand_platform_data omap3touchbook_nand_data = {
+ .options = NAND_BUSWIDTH_16,
+ .parts = omap3touchbook_nand_partitions,
+ .nr_parts = ARRAY_SIZE(omap3touchbook_nand_partitions),
+ .dma_channel = -1, /* disable DMA in OMAP NAND driver */
+ .nand_setup = NULL,
+ .dev_ready = NULL,
+};
+
+static struct resource omap3touchbook_nand_resource = {
+ .flags = IORESOURCE_MEM,
+};
+
+static struct platform_device omap3touchbook_nand_device = {
+ .name = "omap2-nand",
+ .id = -1,
+ .dev = {
+ .platform_data = &omap3touchbook_nand_data,
+ },
+ .num_resources = 1,
+ .resource = &omap3touchbook_nand_resource,
+};
+
+#include "sdram-micron-mt46h32m32lf-6.h"
+
+static struct omap_uart_config omap3_touchbook_uart_config __initdata = {
+ .enabled_uarts = ((1 << 0) | (1 << 1) | (1 << 2)),
+};
+
+static struct twl4030_usb_data touchbook_usb_data = {
+ .usb_mode = T2_USB_MODE_ULPI,
+};
+
+static struct twl4030_hsmmc_info mmc[] = {
+ {
+ .mmc = 1,
+ .wires = 8,
+ .gpio_wp = 29,
+ },
+ {} /* Terminator */
+};
+
+static struct regulator_consumer_supply touchbook_vmmc1_supply = {
+ .supply = "vmmc",
+};
+
+static struct regulator_consumer_supply touchbook_vsim_supply = {
+ .supply = "vmmc_aux",
+};
+
+static struct gpio_led gpio_leds[];
+
+static int touchbook_twl_gpio_setup(struct device *dev,
+ unsigned gpio, unsigned ngpio)
+{
+ /* gpio + 0 is "mmc0_cd" (input/IRQ) */
+ omap_cfg_reg(AH8_34XX_GPIO29);
+ mmc[0].gpio_cd = gpio + 0;
+ twl4030_mmc_init(mmc);
+
+ /* link regulators to MMC adapters */
+ touchbook_vmmc1_supply.dev = mmc[0].dev;
+ touchbook_vsim_supply.dev = mmc[0].dev;
+
+ /* REVISIT: need ehci-omap hooks for external VBUS
+ * power switch and overcurrent detect
+ */
+
+#if 0 /* TODO: This needs to be modified to not rely on u-boot */
+ gpio_request(gpio + 1, "EHCI_nOC");
+ gpio_direction_input(gpio + 1);
+
+ /* TWL4030_GPIO_MAX + 0 == ledA, EHCI nEN_USB_PWR (out, active low) */
+ gpio_request(gpio + TWL4030_GPIO_MAX, "nEN_USB_PWR");
+ gpio_direction_output(gpio + TWL4030_GPIO_MAX, 1);
+
+ /* TWL4030_GPIO_MAX + 1 == ledB, PMU_STAT (out, active low LED) */
+ gpio_leds[2].gpio = gpio + TWL4030_GPIO_MAX + 1;
+#endif
+ return 0;
+}
+
+static struct twl4030_gpio_platform_data touchbook_gpio_data = {
+ .gpio_base = OMAP_MAX_GPIO_LINES,
+ .irq_base = TWL4030_GPIO_IRQ_BASE,
+ .irq_end = TWL4030_GPIO_IRQ_END,
+ .use_leds = true,
+ .pullups = BIT(1),
+ .pulldowns = BIT(2) | BIT(6) | BIT(7) | BIT(8) | BIT(13)
+ | BIT(15) | BIT(16) | BIT(17),
+ .setup = touchbook_twl_gpio_setup,
+};
+
+static struct platform_device omap3_touchbook_lcd_device = {
+ .name = "omap3touchbook_lcd",
+ .id = -1,
+};
+
+static struct regulator_consumer_supply touchbook_vdac_supply = {
+ .supply = "vdac",
+ .dev = &omap3_touchbook_lcd_device.dev,
+};
+
+static struct regulator_consumer_supply touchbook_vdvi_supply = {
+ .supply = "vdvi",
+ .dev = &omap3_touchbook_lcd_device.dev,
+};
+
+/* VMMC1 for MMC1 pins CMD, CLK, DAT0..DAT3 (20 mA, plus card == max 220 mA) */
+static struct regulator_init_data touchbook_vmmc1 = {
+ .constraints = {
+ .min_uV = 1850000,
+ .max_uV = 3150000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
+ | REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &touchbook_vmmc1_supply,
+};
+
+/* VSIM for MMC1 pins DAT4..DAT7 (2 mA, plus card == max 50 mA) */
+static struct regulator_init_data touchbook_vsim = {
+ .constraints = {
+ .min_uV = 1800000,
+ .max_uV = 3000000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE
+ | REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &touchbook_vsim_supply,
+};
+
+/* VDAC for DSS driving S-Video (8 mA unloaded, max 65 mA) */
+static struct regulator_init_data touchbook_vdac = {
+ .constraints = {
+ .min_uV = 1800000,
+ .max_uV = 1800000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &touchbook_vdac_supply,
+};
+
+/* VPLL2 for digital video outputs */
+static struct regulator_init_data touchbook_vpll2 = {
+ .constraints = {
+ .name = "VDVI",
+ .min_uV = 1800000,
+ .max_uV = 1800000,
+ .valid_modes_mask = REGULATOR_MODE_NORMAL
+ | REGULATOR_MODE_STANDBY,
+ .valid_ops_mask = REGULATOR_CHANGE_MODE
+ | REGULATOR_CHANGE_STATUS,
+ },
+ .num_consumer_supplies = 1,
+ .consumer_supplies = &touchbook_vdvi_supply,
+};
+
+static const struct twl4030_resconfig touchbook_resconfig[] = {
+ /* disable regulators that u-boot left enabled; the
+ * devices' drivers should be managing these.
+ */
+ { .resource = RES_VAUX3, }, /* not even connected! */
+ { .resource = RES_VMMC1, },
+ { .resource = RES_VSIM, },
+ { .resource = RES_VPLL2, },
+ { .resource = RES_VDAC, },
+ { .resource = RES_VUSB_1V5, },
+ { .resource = RES_VUSB_1V8, },
+ { .resource = RES_VUSB_3V1, },
+ { 0, },
+};
+
+static struct twl4030_power_data touchbook_power_data = {
+ .resource_config = touchbook_resconfig,
+ /* REVISIT can't use GENERIC3430_T2SCRIPTS_DATA;
+ * among other things, it makes reboot fail.
+ */
+};
+
+static struct twl4030_bci_platform_data touchbook_bci_data = {
+ .tblsize = 0,
+ .no_backup_battery = 1,
+};
+
+static struct twl4030_platform_data touchbook_twldata = {
+ .irq_base = TWL4030_IRQ_BASE,
+ .irq_end = TWL4030_IRQ_END,
+
+ /* platform_data for children goes here */
+ .usb = &touchbook_usb_data,
+ .gpio = &touchbook_gpio_data,
+ .power = &touchbook_power_data,
+ .vmmc1 = &touchbook_vmmc1,
+ .vsim = &touchbook_vsim,
+ .vdac = &touchbook_vdac,
+ .vpll2 = &touchbook_vpll2,
+
+ /* TouchBook BCI */
+ .bci = &touchbook_bci_data,
+};
+
+static struct i2c_board_info __initdata touchbook_i2c_boardinfo[] = {
+ {
+ I2C_BOARD_INFO("twl4030", 0x48),
+ .flags = I2C_CLIENT_WAKE,
+ .irq = INT_34XX_SYS_NIRQ,
+ .platform_data = &touchbook_twldata,
+ },
+};
+
+static struct i2c_board_info __initdata touchBook_i2c_boardinfo[] = {
+ {
+ I2C_BOARD_INFO("bq27200", 0x55),
+ },
+};
+
+static int __init omap3_touchbook_i2c_init(void)
+{
+ /* Standard TouchBook bus */
+ omap_register_i2c_bus(1, 2600, touchbook_i2c_boardinfo,
+ ARRAY_SIZE(touchbook_i2c_boardinfo));
+
+ /* Additional TouchBook bus */
+ omap_register_i2c_bus(3, 100, touchBook_i2c_boardinfo,
+ ARRAY_SIZE(touchBook_i2c_boardinfo));
+
+ return 0;
+}
+
+static void __init omap3_ads7846_init(void)
+{
+ if (gpio_request(OMAP3_TS_GPIO, "ads7846_pen_down")) {
+ printk(KERN_ERR "Failed to request GPIO %d for "
+ "ads7846 pen down IRQ\n", OMAP3_TS_GPIO);
+ return;
+ }
+
+ gpio_direction_input(OMAP3_TS_GPIO);
+ omap_set_gpio_debounce(OMAP3_TS_GPIO, 1);
+ omap_set_gpio_debounce_time(OMAP3_TS_GPIO, 0xa);
+}
+
+static struct ads7846_platform_data ads7846_config = {
+ .x_min = 100,
+ .y_min = 265,
+ .x_max = 3950,
+ .y_max = 3750,
+ .x_plate_ohms = 40,
+ .pressure_max = 255,
+ .debounce_max = 10,
+ .debounce_tol = 5,
+ .debounce_rep = 1,
+ .gpio_pendown = OMAP3_TS_GPIO,
+ .keep_vref_on = 1,
+};
+
+static struct omap2_mcspi_device_config ads7846_mcspi_config = {
+ .turbo_mode = 0,
+ .single_channel = 1, /* 0: slave, 1: master */
+};
+
+static struct spi_board_info omap3_ads7846_spi_board_info[] __initdata = {
+ {
+ .modalias = "ads7846",
+ .bus_num = 4,
+ .chip_select = 0,
+ .max_speed_hz = 1500000,
+ .controller_data = &ads7846_mcspi_config, //(void *) 161,
+ .irq = OMAP_GPIO_IRQ(OMAP3_TS_GPIO),
+ .platform_data = &ads7846_config,
+ }
+};
+
+static void __init omap3_touchbook_init_irq(void)
+{
+ omap2_init_common_hw(mt46h32m32lf6_sdrc_params);
+ omap_init_irq();
+ omap_gpio_init();
+}
+
+static struct gpio_led gpio_leds[] = {
+ {
+ .name = "touchbook::usr0",
+ .default_trigger = "heartbeat",
+ .gpio = 150,
+ },
+ {
+ .name = "touchbook::usr1",
+ .default_trigger = "mmc0",
+ .gpio = 149,
+ },
+ {
+ .name = "touchbook::pmu_stat",
+ .gpio = -EINVAL, /* gets replaced */
+ .active_low = true,
+ },
+};
+
+static struct gpio_led_platform_data gpio_led_info = {
+ .leds = gpio_leds,
+ .num_leds = ARRAY_SIZE(gpio_leds),
+};
+
+static struct platform_device leds_gpio = {
+ .name = "leds-gpio",
+ .id = -1,
+ .dev = {
+ .platform_data = &gpio_led_info,
+ },
+};
+
+static struct gpio_keys_button gpio_buttons[] = {
+ {
+ .code = BTN_EXTRA,
+ .gpio = 7,
+ .desc = "user",
+ .wakeup = 1,
+ },
+ {
+ .code = KEY_POWER,
+ .gpio = 183,
+ .desc = "power",
+ .wakeup = 1,
+ },
+};
+
+static struct gpio_keys_platform_data gpio_key_info = {
+ .buttons = gpio_buttons,
+ .nbuttons = ARRAY_SIZE(gpio_buttons),
+};
+
+static struct platform_device keys_gpio = {
+ .name = "gpio-keys",
+ .id = -1,
+ .dev = {
+ .platform_data = &gpio_key_info,
+ },
+};
+
+/* DSS */
+
+static int touchbook_enable_dvi(struct omap_display *display)
+{
+ if (display->hw_config.panel_reset_gpio != -1)
+ gpio_set_value(display->hw_config.panel_reset_gpio, 1);
+
+ return 0;
+}
+
+static void touchbook_disable_dvi(struct omap_display *display)
+{
+ if (display->hw_config.panel_reset_gpio != -1)
+ gpio_set_value(display->hw_config.panel_reset_gpio, 0);
+}
+
+static struct omap_dss_display_config touchbook_display_data_dvi = {
+ .type = OMAP_DISPLAY_TYPE_DPI,
+ .name = "dvi",
+ .panel_name = "panel-generic",
+ .u.dpi.data_lines = 24,
+ .panel_reset_gpio = 176,
+ .panel_enable = touchbook_enable_dvi,
+ .panel_disable = touchbook_disable_dvi,
+};
+
+
+static int touchbook_panel_enable_tv(struct omap_display *display)
+{
+#define ENABLE_VDAC_DEDICATED 0x03
+#define ENABLE_VDAC_DEV_GRP 0x20
+
+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
+ ENABLE_VDAC_DEDICATED,
+ TWL4030_VDAC_DEDICATED);
+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER,
+ ENABLE_VDAC_DEV_GRP, TWL4030_VDAC_DEV_GRP);
+
+ return 0;
+}
+
+static void touchbook_panel_disable_tv(struct omap_display *display)
+{
+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00,
+ TWL4030_VDAC_DEDICATED);
+ twl4030_i2c_write_u8(TWL4030_MODULE_PM_RECEIVER, 0x00,
+ TWL4030_VDAC_DEV_GRP);
+}
+
+static struct omap_dss_display_config touchbook_display_data_tv = {
+ .type = OMAP_DISPLAY_TYPE_VENC,
+ .name = "tv",
+ .u.venc.type = OMAP_DSS_VENC_TYPE_SVIDEO,
+ .panel_enable = touchbook_panel_enable_tv,
+ .panel_disable = touchbook_panel_disable_tv,
+};
+
+static struct omap_dss_board_info touchbook_dss_data = {
+ .num_displays = 2,
+ .displays = {
+ &touchbook_display_data_dvi,
+ &touchbook_display_data_tv,
+ }
+};
+
+static struct platform_device touchbook_dss_device = {
+ .name = "omapdss",
+ .id = -1,
+ .dev = {
+ .platform_data = &touchbook_dss_data,
+ },
+};
+
+static void __init touchbook_display_init(void)
+{
+ int r;
+
+ r = gpio_request(touchbook_display_data_dvi.panel_reset_gpio, "DVI reset");
+ if (r < 0) {
+ printk(KERN_ERR "Unable to get DVI reset GPIO\n");
+ return;
+ }
+
+ gpio_direction_output(touchbook_display_data_dvi.panel_reset_gpio, 0);
+}
+
+static struct omap_board_config_kernel omap3_touchbook_config[] __initdata = {
+ { OMAP_TAG_UART, &omap3_touchbook_uart_config },
+};
+
+static struct platform_device *omap3_touchbook_devices[] __initdata = {
+ &touchbook_dss_device,
+ &leds_gpio,
+ &keys_gpio,
+};
+
+static void __init omap3touchbook_flash_init(void)
+{
+ u8 cs = 0;
+ u8 nandcs = GPMC_CS_NUM + 1;
+
+ u32 gpmc_base_add = OMAP34XX_GPMC_VIRT;
+
+ /* find out the chip-select on which NAND exists */
+ while (cs < GPMC_CS_NUM) {
+ u32 ret = 0;
+ ret = gpmc_cs_read_reg(cs, GPMC_CS_CONFIG1);
+
+ if ((ret & 0xC00) == 0x800) {
+ printk(KERN_INFO "Found NAND on CS%d\n", cs);
+ if (nandcs > GPMC_CS_NUM)
+ nandcs = cs;
+ }
+ cs++;
+ }
+
+ if (nandcs > GPMC_CS_NUM) {
+ printk(KERN_INFO "NAND: Unable to find configuration "
+ "in GPMC\n ");
+ return;
+ }
+
+ if (nandcs < GPMC_CS_NUM) {
+ omap3touchbook_nand_data.cs = nandcs;
+ omap3touchbook_nand_data.gpmc_cs_baseaddr = (void *)
+ (gpmc_base_add + GPMC_CS0_BASE + nandcs * GPMC_CS_SIZE);
+ omap3touchbook_nand_data.gpmc_baseaddr = (void *) (gpmc_base_add);
+
+ printk(KERN_INFO "Registering NAND on CS%d\n", nandcs);
+ if (platform_device_register(&omap3touchbook_nand_device) < 0)
+ printk(KERN_ERR "Unable to register NAND device\n");
+ }
+}
+
+static void __init omap3_mma7455l_init(void)
+{
+ int ret;
+
+ ret = gpio_request(OMAP3_AC_GPIO, "mma7455l");
+ if (ret < 0) {
+ printk(KERN_ERR "Failed to request GPIO %d for mma7455l IRQ\n", OMAP3_AC_GPIO);
+ return;
+ }
+
+ gpio_direction_input(OMAP3_AC_GPIO);
+}
+
+static struct mma7455l_platform_data mma7455l_config = {
+ .calibration_x = -4, //26 for Beagleboard
+ .calibration_y = 28, //44 for Beagleboard
+ .calibration_z = -28, //26 for Beagleboard
+};
+
+static struct omap2_mcspi_device_config mma7455l_mcspi_config = {
+ .turbo_mode = 0,
+ .single_channel = 1, /* 0: slave, 1: master */
+};
+
+static struct spi_board_info omap3_mma7455l_spi_board_info[] __initdata = {
+ {
+ .modalias = "mma7455l",
+ .bus_num = 3,
+ .chip_select = 0,
+ .max_speed_hz = 200000,
+ .irq = OMAP_GPIO_IRQ(OMAP3_AC_GPIO),
+ .controller_data = &mma7455l_mcspi_config, //(void *) 135,
+ .platform_data = &mma7455l_config,
+ }
+};
+
+static int touchbook_backlight_brightness = 50;
+static struct omap_dm_timer *touchbook_backlight_pwm;
+
+static int touchbook_backlight_read(struct backlight_device *bd)
+{
+ return touchbook_backlight_brightness;
+}
+
+static int touchbook_backlight_update(struct backlight_device *bd)
+{
+ int value = bd->props.brightness;
+ touchbook_backlight_brightness = value;
+
+ /* Frequency calculation:
+ - For 200Hz PWM, you want to load -164 (=> -32768Hz / 200Hz).
+ - Minimum duty cycle for the backlight is 15%.
+ - You have (164*0.85) => ~140 levels of brightness.
+ */
+
+ /* Convert from 0-100 range to 0-140 range */
+ value = (value * 14) / 10 / 2;
+
+ /* For maximum brightness, just stop the timer... */
+ if(value != bd->props.max_brightness)
+ {
+ omap_dm_timer_set_load(touchbook_backlight_pwm, 1, -164);
+ omap_dm_timer_set_match(touchbook_backlight_pwm, 1, -24 - value);
+ omap_dm_timer_write_counter(touchbook_backlight_pwm, -1);
+ //omap_dm_timer_stop(touchbook_backlight_pwm);
+ omap_dm_timer_start(touchbook_backlight_pwm);
+ }
+ else
+ omap_dm_timer_stop(touchbook_backlight_pwm);
+
+
+ return 0;
+}
+
+static struct backlight_ops touchbook_backlight_properties = {
+ .get_brightness = touchbook_backlight_read,
+ .update_status = touchbook_backlight_update,
+};
+
+static void __init omap3_touchbook_backlight_init(void)
+{
+ static struct backlight_device *bd;
+ bd = backlight_device_register("touchbook", NULL, NULL, &touchbook_backlight_properties);
+
+ if(bd)
+ {
+ touchbook_backlight_pwm = omap_dm_timer_request_specific(TB_BL_PWM_TIMER);
+ omap_dm_timer_enable(touchbook_backlight_pwm);
+ omap_dm_timer_set_source(touchbook_backlight_pwm, OMAP_TIMER_SRC_32_KHZ);
+ omap_dm_timer_set_pwm(touchbook_backlight_pwm, 1, 1, OMAP_TIMER_TRIGGER_OVERFLOW_AND_COMPARE);
+
+ bd->props.max_brightness = 100;
+ bd->props.brightness = touchbook_backlight_brightness;
+ }
+
+ touchbook_backlight_update(bd);
+}
+
+static void omap3_touchbook_poweroff(void)
+{
+ int r;
+
+ r = gpio_request(TB_KILL_POWER_GPIO, "DVI reset");
+ if (r < 0) {
+ printk(KERN_ERR "Unable to get kill power GPIO\n");
+ return;
+ }
+
+ gpio_direction_output(TB_KILL_POWER_GPIO, 0);
+}
+
+static void __init omap3_touchbook_init(void)
+{
+ pm_power_off = omap3_touchbook_poweroff;
+
+ omap3_touchbook_i2c_init();
+ platform_add_devices(omap3_touchbook_devices,
+ ARRAY_SIZE(omap3_touchbook_devices));
+ omap_board_config = omap3_touchbook_config;
+ omap_board_config_size = ARRAY_SIZE(omap3_touchbook_config);
+ omap_serial_init();
+
+ omap_cfg_reg(J25_34XX_GPIO170);
+
+ omap3touchbook_flash_init();
+ touchbook_display_init();
+ omap3_touchbook_backlight_init();
+
+ /* Touch Book */
+ spi_register_board_info(omap3_ads7846_spi_board_info, ARRAY_SIZE(omap3_ads7846_spi_board_info));
+ spi_register_board_info(omap3_mma7455l_spi_board_info, ARRAY_SIZE(omap3_mma7455l_spi_board_info));
+
+ omap3_ads7846_init();
+ omap3_mma7455l_init();
+
+ usb_musb_init();
+ usb_ehci_init();
+}
+
+static void __init omap3_touchbook_map_io(void)
+{
+ omap2_set_globals_343x();
+ omap2_map_common_io();
+}
+
+MACHINE_START(OMAP3_TOUCHBOOK, "OMAP3 Touch Book")
+ /* Maintainer: Gregoire Gentil - http://www.alwaysinnovating.com */
+ .phys_io = 0x48000000,
+ .io_pg_offst = ((0xd8000000) >> 18) & 0xfffc,
+ .boot_params = 0x80000100,
+ .map_io = omap3_touchbook_map_io,
+ .init_irq = omap3_touchbook_init_irq,
+ .init_machine = omap3_touchbook_init,
+ .timer = &omap_timer,
+MACHINE_END
diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig
index 2ff46a4832..c6fdd4a0a4 100644
--- a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig
+++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.29-omap1
-# Fri May 29 14:47:52 2009
+# Thu Aug 13 12:58:49 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -32,6 +32,7 @@ CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
+CONFIG_LOCK_KERNEL=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION=""
# CONFIG_LOCALVERSION_AUTO is not set
@@ -57,7 +58,7 @@ CONFIG_CLASSIC_RCU=y
# CONFIG_PREEMPT_RCU_TRACE is not set
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
-CONFIG_LOG_BUF_SHIFT=14
+CONFIG_LOG_BUF_SHIFT=15
CONFIG_GROUP_SCHED=y
CONFIG_FAIR_GROUP_SCHED=y
# CONFIG_RT_GROUP_SCHED is not set
@@ -189,8 +190,7 @@ CONFIG_ARCH_OMAP3=y
#
# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
-CONFIG_OMAP_SMARTREFLEX=y
-# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+# CONFIG_OMAP_SMARTREFLEX is not set
CONFIG_OMAP_RESET_CLOCKS=y
CONFIG_OMAP_BOOT_TAG=y
CONFIG_OMAP_BOOT_REASON=y
@@ -199,7 +199,7 @@ CONFIG_OMAP_BOOT_REASON=y
# CONFIG_OMAP_MUX is not set
CONFIG_OMAP_MCBSP=y
# CONFIG_OMAP_MBOX_FWK is not set
-# CONFIG_OMAP_IOMMU is not set
+CONFIG_OMAP_IOMMU=m
# CONFIG_OMAP_MPU_TIMER is not set
CONFIG_OMAP_32K_TIMER=y
CONFIG_OMAP_32K_TIMER_HZ=128
@@ -218,9 +218,10 @@ CONFIG_ARCH_OMAP3430=y
# CONFIG_MACH_OMAP_LDP is not set
# CONFIG_MACH_OMAP_3430SDP is not set
# CONFIG_MACH_OMAP3EVM is not set
-CONFIG_MACH_OMAP3_BEAGLE=y
+# CONFIG_MACH_OMAP3_BEAGLE is not set
# CONFIG_MACH_OVERO is not set
# CONFIG_MACH_OMAP3_PANDORA is not set
+CONFIG_MACH_OMAP3_TOUCHBOOK=y
#
# Processor Type
@@ -264,15 +265,15 @@ CONFIG_TICK_ONESHOT=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
-# CONFIG_VMSPLIT_3G is not set
-CONFIG_VMSPLIT_2G=y
+CONFIG_VMSPLIT_3G=y
+CONFIG_VMSPLIT_2G is not set
# CONFIG_VMSPLIT_1G is not set
-CONFIG_PAGE_OFFSET=0x80000000
-# CONFIG_PREEMPT is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+CONFIG_PREEMPT=y
CONFIG_HZ=128
CONFIG_AEABI=y
# CONFIG_OABI_COMPAT is not set
-CONFIG_ARCH_FLATMEM_HAS_HOLES=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
CONFIG_SELECT_MEMORY_MODEL=y
@@ -686,66 +687,8 @@ CONFIG_NET_SCH_FIFO=y
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
-CONFIG_CAN=m
-CONFIG_CAN_RAW=m
-CONFIG_CAN_BCM=m
-
-#
-# CAN Device Drivers
-#
-CONFIG_CAN_VCAN=m
-# CONFIG_CAN_DEBUG_DEVICES is not set
-CONFIG_IRDA=m
-
-#
-# IrDA protocols
-#
-CONFIG_IRLAN=m
-CONFIG_IRNET=m
-CONFIG_IRCOMM=m
-CONFIG_IRDA_ULTRA=y
-
-#
-# IrDA options
-#
-CONFIG_IRDA_CACHE_LAST_LSAP=y
-CONFIG_IRDA_FAST_RR=y
-CONFIG_IRDA_DEBUG=y
-
-#
-# Infrared-port device drivers
-#
-
-#
-# SIR device drivers
-#
-CONFIG_IRTTY_SIR=m
-
-#
-# Dongle support
-#
-CONFIG_DONGLE=y
-CONFIG_ESI_DONGLE=m
-CONFIG_ACTISYS_DONGLE=m
-CONFIG_TEKRAM_DONGLE=m
-CONFIG_TOIM3232_DONGLE=m
-CONFIG_LITELINK_DONGLE=m
-CONFIG_MA600_DONGLE=m
-CONFIG_GIRBIL_DONGLE=m
-CONFIG_MCP2120_DONGLE=m
-CONFIG_OLD_BELKIN_DONGLE=m
-# CONFIG_ACT200L_DONGLE is not set
-CONFIG_KINGSUN_DONGLE=m
-CONFIG_KSDAZZLE_DONGLE=m
-CONFIG_KS959_DONGLE=m
-
-#
-# FIR device drivers
-#
-CONFIG_USB_IRDA=m
-CONFIG_SIGMATEL_FIR=m
-CONFIG_MCS_FIR=m
-# CONFIG_OMAP_IR is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
CONFIG_BT=y
CONFIG_BT_L2CAP=y
CONFIG_BT_SCO=y
@@ -777,18 +720,15 @@ CONFIG_AF_RXRPC=m
# CONFIG_PHONET is not set
CONFIG_FIB_RULES=y
CONFIG_WIRELESS=y
-CONFIG_CFG80211=y
+CONFIG_CFG80211=m
# CONFIG_CFG80211_REG_DEBUG is not set
CONFIG_NL80211=y
-CONFIG_WIRELESS_OLD_REGULATORY=y
+# CONFIG_WIRELESS_OLD_REGULATORY is not set
CONFIG_WIRELESS_EXT=y
CONFIG_WIRELESS_EXT_SYSFS=y
CONFIG_LIB80211=y
-CONFIG_LIB80211_CRYPT_WEP=y
-CONFIG_LIB80211_CRYPT_CCMP=y
-CONFIG_LIB80211_CRYPT_TKIP=y
# CONFIG_LIB80211_DEBUG is not set
-CONFIG_MAC80211=y
+CONFIG_MAC80211=m
#
# Rate control algorithm selection
@@ -799,14 +739,13 @@ CONFIG_MAC80211_RC_DEFAULT_PID=y
# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
CONFIG_MAC80211_RC_DEFAULT="pid"
# CONFIG_MAC80211_MESH is not set
-CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_LEDS is not set
# CONFIG_MAC80211_DEBUGFS is not set
# CONFIG_MAC80211_DEBUG_MENU is not set
CONFIG_WIMAX=m
CONFIG_WIMAX_DEBUG_LEVEL=8
# CONFIG_RFKILL is not set
-CONFIG_NET_9P=m
-# CONFIG_NET_9P_DEBUG is not set
+# CONFIG_NET_9P is not set
#
# Device Drivers
@@ -1021,7 +960,6 @@ CONFIG_EQUALIZER=m
CONFIG_TUN=m
CONFIG_VETH=m
# CONFIG_NET_ETHERNET is not set
-CONFIG_MII=y
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set
@@ -1030,36 +968,19 @@ CONFIG_MII=y
#
# CONFIG_WLAN_PRE80211 is not set
CONFIG_WLAN_80211=y
-CONFIG_LIBERTAS=y
-CONFIG_LIBERTAS_USB=y
-# CONFIG_LIBERTAS_SDIO is not set
-# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS is not set
# CONFIG_LIBERTAS_THINFIRM is not set
-CONFIG_USB_ZD1201=y
-CONFIG_USB_NET_RNDIS_WLAN=y
-CONFIG_RTL8187=y
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_USB_NET_RNDIS_WLAN is not set
+# CONFIG_RTL8187 is not set
# CONFIG_MAC80211_HWSIM is not set
-CONFIG_P54_COMMON=y
-CONFIG_P54_USB=y
+# CONFIG_P54_COMMON is not set
# CONFIG_IWLWIFI_LEDS is not set
-CONFIG_HOSTAP=y
-CONFIG_HOSTAP_FIRMWARE=y
-CONFIG_HOSTAP_FIRMWARE_NVRAM=y
-CONFIG_B43=y
-CONFIG_B43_LEDS=y
-# CONFIG_B43_DEBUG is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_B43 is not set
# CONFIG_B43LEGACY is not set
-CONFIG_ZD1211RW=y
-# CONFIG_ZD1211RW_DEBUG is not set
-CONFIG_RT2X00=y
-CONFIG_RT2500USB=y
-CONFIG_RT73USB=y
-CONFIG_RT2X00_LIB_USB=y
-CONFIG_RT2X00_LIB=y
-CONFIG_RT2X00_LIB_FIRMWARE=y
-CONFIG_RT2X00_LIB_CRYPTO=y
-CONFIG_RT2X00_LIB_LEDS=y
-# CONFIG_RT2X00_DEBUG is not set
+# CONFIG_ZD1211RW is not set
+# CONFIG_RT2X00 is not set
#
# WiMAX Wireless Broadband devices
@@ -1070,32 +991,13 @@ CONFIG_RT2X00_LIB_LEDS=y
#
# USB Network Adapters
#
-CONFIG_USB_CATC=y
-CONFIG_USB_KAWETH=y
-CONFIG_USB_PEGASUS=y
-CONFIG_USB_RTL8150=y
-CONFIG_USB_USBNET=y
-CONFIG_USB_NET_AX8817X=y
-CONFIG_USB_NET_CDCETHER=y
-CONFIG_USB_NET_DM9601=y
-CONFIG_USB_NET_SMSC95XX=y
-CONFIG_USB_NET_GL620A=y
-CONFIG_USB_NET_NET1080=y
-CONFIG_USB_NET_PLUSB=y
-CONFIG_USB_NET_MCS7830=y
-CONFIG_USB_NET_RNDIS_HOST=y
-CONFIG_USB_NET_CDC_SUBSET=y
-CONFIG_USB_ALI_M5632=y
-CONFIG_USB_AN2720=y
-CONFIG_USB_BELKIN=y
-CONFIG_USB_ARMLINUX=y
-CONFIG_USB_EPSON2888=y
-CONFIG_USB_KC2190=y
-CONFIG_USB_NET_ZAURUS=y
+# CONFIG_USB_CATC is not set
+# CONFIG_USB_KAWETH is not set
+# CONFIG_USB_PEGASUS is not set
+# CONFIG_USB_RTL8150 is not set
+# CONFIG_USB_USBNET is not set
# CONFIG_WAN is not set
-CONFIG_ATM_DRIVERS=y
-# CONFIG_ATM_DUMMY is not set
-# CONFIG_ATM_TCP is not set
+# CONFIG_ATM_DRIVERS is not set
CONFIG_PPP=m
CONFIG_PPP_MULTILINK=y
CONFIG_PPP_FILTER=y
@@ -1299,7 +1201,7 @@ CONFIG_SPI_OMAP24XX=y
#
# CONFIG_SPI_TSC210X is not set
# CONFIG_SPI_TSC2301 is not set
-# CONFIG_SPI_SPIDEV is not set
+CONFIG_SPI_SPIDEV=y
# CONFIG_SPI_TLE62X0 is not set
CONFIG_ARCH_REQUIRE_GPIOLIB=y
CONFIG_GPIOLIB=y
@@ -1413,9 +1315,7 @@ CONFIG_SSB_POSSIBLE=y
#
# Sonics Silicon Backplane
#
-CONFIG_SSB=y
-# CONFIG_SSB_SILENT is not set
-# CONFIG_SSB_DEBUG is not set
+# CONFIG_SSB is not set
#
# Multifunction device drivers
@@ -1459,21 +1359,17 @@ CONFIG_MEDIA_TUNER=m
# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
CONFIG_MEDIA_TUNER_SIMPLE=m
CONFIG_MEDIA_TUNER_TDA8290=m
-CONFIG_MEDIA_TUNER_TDA827X=m
CONFIG_MEDIA_TUNER_TDA18271=m
CONFIG_MEDIA_TUNER_TDA9887=m
CONFIG_MEDIA_TUNER_TEA5761=m
CONFIG_MEDIA_TUNER_TEA5767=m
CONFIG_MEDIA_TUNER_MT20XX=m
-CONFIG_MEDIA_TUNER_MT2060=m
-CONFIG_MEDIA_TUNER_MT2266=m
-CONFIG_MEDIA_TUNER_QT1010=m
CONFIG_MEDIA_TUNER_XC2028=m
CONFIG_MEDIA_TUNER_XC5000=m
-CONFIG_MEDIA_TUNER_MXL5005S=m
CONFIG_VIDEO_V4L2=m
CONFIG_VIDEO_V4L1=m
CONFIG_VIDEOBUF_GEN=m
+CONFIG_VIDEOBUF_DMA_SG=m
CONFIG_VIDEOBUF_VMALLOC=m
CONFIG_VIDEOBUF_DVB=m
CONFIG_VIDEO_IR=m
@@ -1497,7 +1393,8 @@ CONFIG_VIDEO_VIVI=m
# CONFIG_VIDEO_SAA5246A is not set
# CONFIG_VIDEO_SAA5249 is not set
# CONFIG_VIDEO_AU0828 is not set
-# CONFIG_VIDEO_OMAP3 is not set
+CONFIG_VIDEO_OMAP3=m
+CONFIG_VIDEO_OMAP34XX_ISP_RESIZER=m
# CONFIG_SOC_CAMERA is not set
CONFIG_V4L_USB_DRIVERS=y
CONFIG_USB_VIDEO_CLASS=m
@@ -1559,149 +1456,12 @@ CONFIG_RADIO_ADAPTERS=y
# CONFIG_USB_MR800 is not set
# CONFIG_RADIO_TEA5764 is not set
CONFIG_DVB_DYNAMIC_MINORS=y
-CONFIG_DVB_CAPTURE_DRIVERS=y
-# CONFIG_TTPCI_EEPROM is not set
-
-#
-# Supported USB Adapters
-#
-CONFIG_DVB_USB=m
-# CONFIG_DVB_USB_DEBUG is not set
-CONFIG_DVB_USB_A800=m
-CONFIG_DVB_USB_DIBUSB_MB=m
-# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
-CONFIG_DVB_USB_DIBUSB_MC=m
-CONFIG_DVB_USB_DIB0700=m
-CONFIG_DVB_USB_UMT_010=m
-CONFIG_DVB_USB_CXUSB=m
-CONFIG_DVB_USB_M920X=m
-CONFIG_DVB_USB_GL861=m
-CONFIG_DVB_USB_AU6610=m
-CONFIG_DVB_USB_DIGITV=m
-CONFIG_DVB_USB_VP7045=m
-CONFIG_DVB_USB_VP702X=m
-CONFIG_DVB_USB_GP8PSK=m
-CONFIG_DVB_USB_NOVA_T_USB2=m
-CONFIG_DVB_USB_TTUSB2=m
-CONFIG_DVB_USB_DTT200U=m
-CONFIG_DVB_USB_OPERA1=m
-CONFIG_DVB_USB_AF9005=m
-CONFIG_DVB_USB_AF9005_REMOTE=m
-CONFIG_DVB_USB_DW2102=m
-CONFIG_DVB_USB_CINERGY_T2=m
-CONFIG_DVB_USB_ANYSEE=m
-CONFIG_DVB_USB_DTV5100=m
-CONFIG_DVB_USB_AF9015=m
-CONFIG_DVB_SIANO_SMS1XXX=m
-CONFIG_DVB_SIANO_SMS1XXX_SMS_IDS=y
-
-#
-# Supported FlexCopII (B2C2) Adapters
-#
-CONFIG_DVB_B2C2_FLEXCOP=m
-CONFIG_DVB_B2C2_FLEXCOP_USB=m
-# CONFIG_DVB_B2C2_FLEXCOP_DEBUG is not set
-
-#
-# Supported DVB Frontends
-#
-
-#
-# Customise DVB Frontends
-#
-# CONFIG_DVB_FE_CUSTOMISE is not set
-
-#
-# Multistandard (satellite) frontends
-#
-CONFIG_DVB_STB0899=m
-CONFIG_DVB_STB6100=m
-
-#
-# DVB-S (satellite) frontends
-#
-CONFIG_DVB_CX24110=m
-CONFIG_DVB_CX24123=m
-CONFIG_DVB_MT312=m
-CONFIG_DVB_S5H1420=m
-CONFIG_DVB_STV0288=m
-CONFIG_DVB_STB6000=m
-CONFIG_DVB_STV0299=m
-CONFIG_DVB_TDA8083=m
-CONFIG_DVB_TDA10086=m
-CONFIG_DVB_TDA8261=m
-CONFIG_DVB_VES1X93=m
-CONFIG_DVB_TUNER_ITD1000=m
-CONFIG_DVB_TUNER_CX24113=m
-CONFIG_DVB_TDA826X=m
-CONFIG_DVB_TUA6100=m
-CONFIG_DVB_CX24116=m
-CONFIG_DVB_SI21XX=m
-
-#
-# DVB-T (terrestrial) frontends
-#
-CONFIG_DVB_SP8870=m
-CONFIG_DVB_SP887X=m
-CONFIG_DVB_CX22700=m
-CONFIG_DVB_CX22702=m
-CONFIG_DVB_DRX397XD=m
-CONFIG_DVB_L64781=m
-CONFIG_DVB_TDA1004X=m
-CONFIG_DVB_NXT6000=m
-CONFIG_DVB_MT352=m
+# CONFIG_DVB_CAPTURE_DRIVERS is not set
CONFIG_DVB_ZL10353=m
-CONFIG_DVB_DIB3000MB=m
-CONFIG_DVB_DIB3000MC=m
-CONFIG_DVB_DIB7000M=m
-CONFIG_DVB_DIB7000P=m
CONFIG_DVB_TDA10048=m
-
-#
-# DVB-C (cable) frontends
-#
-CONFIG_DVB_VES1820=m
-CONFIG_DVB_TDA10021=m
-CONFIG_DVB_TDA10023=m
-CONFIG_DVB_STV0297=m
-
-#
-# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
-#
-CONFIG_DVB_NXT200X=m
-CONFIG_DVB_OR51211=m
-CONFIG_DVB_OR51132=m
-CONFIG_DVB_BCM3510=m
CONFIG_DVB_LGDT330X=m
-CONFIG_DVB_LGDT3304=m
CONFIG_DVB_S5H1409=m
-CONFIG_DVB_AU8522=m
CONFIG_DVB_S5H1411=m
-
-#
-# ISDB-T (terrestrial) frontends
-#
-CONFIG_DVB_S921=m
-
-#
-# Digital terrestrial only tuners/PLL
-#
-CONFIG_DVB_PLL=m
-CONFIG_DVB_TUNER_DIB0070=m
-
-#
-# SEC control devices for DVB-S
-#
-CONFIG_DVB_LNBP21=m
-# CONFIG_DVB_ISL6405 is not set
-CONFIG_DVB_ISL6421=m
-CONFIG_DVB_LGS8GL5=m
-
-#
-# Tools to develop new frontends
-#
-# CONFIG_DVB_DUMMY_FE is not set
-CONFIG_DVB_AF9013=m
# CONFIG_DAB is not set
#
@@ -1823,7 +1583,7 @@ CONFIG_SND_USB_CAIAQ_INPUT=y
CONFIG_SND_SOC=y
CONFIG_SND_OMAP_SOC=y
CONFIG_SND_OMAP_SOC_MCBSP=y
-CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE=y
+CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK=y
CONFIG_SND_SOC_I2C_AND_SPI=y
# CONFIG_SND_SOC_ALL_CODECS is not set
CONFIG_SND_SOC_TWL4030=y
@@ -1844,28 +1604,26 @@ CONFIG_USB_HID=y
# Special HID drivers
#
CONFIG_HID_COMPAT=y
-CONFIG_HID_A4TECH=y
-CONFIG_HID_APPLE=y
-CONFIG_HID_BELKIN=y
-CONFIG_HID_CHERRY=y
-CONFIG_HID_CHICONY=y
-CONFIG_HID_CYPRESS=y
-CONFIG_HID_EZKEY=y
-CONFIG_HID_GYRATION=y
-CONFIG_HID_LOGITECH=y
-# CONFIG_LOGITECH_FF is not set
-# CONFIG_LOGIRUMBLEPAD2_FF is not set
-CONFIG_HID_MICROSOFT=y
-CONFIG_HID_MONTEREY=y
-CONFIG_HID_NTRIG=y
-CONFIG_HID_PANTHERLORD=y
-# CONFIG_PANTHERLORD_FF is not set
-CONFIG_HID_PETALYNX=y
-CONFIG_HID_SAMSUNG=y
-CONFIG_HID_SONY=y
-CONFIG_HID_SUNPLUS=y
-CONFIG_GREENASIA_FF=y
-CONFIG_HID_TOPSEED=y
+# CONFIG_HID_A4TECH is not set
+CONFIG_HID_AI=y
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_GREENASIA_FF is not set
+# CONFIG_HID_TOPSEED is not set
# CONFIG_THRUSTMASTER_FF is not set
# CONFIG_ZEROPLUS_FF is not set
CONFIG_USB_SUPPORT=y
@@ -1902,7 +1660,6 @@ CONFIG_USB_EHCI_TT_NEWSCHED=y
CONFIG_USB_OXU210HP_HCD=y
# CONFIG_USB_ISP116X_HCD is not set
# CONFIG_USB_OHCI_HCD is not set
-# CONFIG_USB_U132_HCD is not set
# CONFIG_USB_SL811_HCD is not set
# CONFIG_USB_R8A66597_HCD is not set
# CONFIG_USB_HWA_HCD is not set
@@ -2028,32 +1785,25 @@ CONFIG_USB_EMI26=m
# CONFIG_USB_ADUTUX is not set
# CONFIG_USB_SEVSEG is not set
# CONFIG_USB_RIO500 is not set
-CONFIG_USB_LEGOTOWER=m
-CONFIG_USB_LCD=m
-CONFIG_USB_BERRY_CHARGE=m
-CONFIG_USB_LED=m
-CONFIG_USB_CYPRESS_CY7C63=m
-CONFIG_USB_CYTHERM=m
-CONFIG_USB_PHIDGET=m
-CONFIG_USB_PHIDGETKIT=m
-CONFIG_USB_PHIDGETMOTORCONTROL=m
-CONFIG_USB_PHIDGETSERVO=m
-CONFIG_USB_IDMOUSE=m
-CONFIG_USB_FTDI_ELAN=m
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_BERRY_CHARGE is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
# CONFIG_USB_APPLEDISPLAY is not set
CONFIG_USB_SISUSBVGA=m
CONFIG_USB_SISUSBVGA_CON=y
-CONFIG_USB_LD=m
-CONFIG_USB_TRANCEVIBRATOR=m
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
# CONFIG_USB_IOWARRIOR is not set
CONFIG_USB_TEST=m
# CONFIG_USB_ISIGHTFW is not set
-CONFIG_USB_VST=m
-CONFIG_USB_ATM=m
-CONFIG_USB_SPEEDTOUCH=m
-CONFIG_USB_CXACRU=m
-CONFIG_USB_UEAGLEATM=m
-CONFIG_USB_XUSBATM=m
+# CONFIG_USB_VST is not set
+# CONFIG_USB_ATM is not set
CONFIG_USB_GADGET=m
# CONFIG_USB_GADGET_DEBUG is not set
# CONFIG_USB_GADGET_DEBUG_FILES is not set
@@ -2217,12 +1967,12 @@ CONFIG_STAGING=y
# CONFIG_STAGING_EXCLUDE_BUILD is not set
# CONFIG_MEILHAUS is not set
# CONFIG_USB_IP_COMMON is not set
-CONFIG_W35UND=m
-CONFIG_PRISM2_USB=m
+# CONFIG_W35UND is not set
+# CONFIG_PRISM2_USB is not set
# CONFIG_ECHO is not set
-CONFIG_USB_ATMEL=m
+# CONFIG_USB_ATMEL is not set
# CONFIG_AGNX is not set
-CONFIG_OTUS=m
+# CONFIG_OTUS is not set
# CONFIG_COMEDI is not set
# CONFIG_ASUS_OLED is not set
# CONFIG_INPUT_MIMIO is not set
@@ -2285,17 +2035,9 @@ CONFIG_XFS_FS=m
# CONFIG_XFS_POSIX_ACL is not set
# CONFIG_XFS_RT is not set
# CONFIG_XFS_DEBUG is not set
-CONFIG_GFS2_FS=m
-CONFIG_GFS2_FS_LOCKING_DLM=m
-CONFIG_OCFS2_FS=m
-CONFIG_OCFS2_FS_O2CB=m
-CONFIG_OCFS2_FS_USERSPACE_CLUSTER=m
-CONFIG_OCFS2_FS_STATS=y
-CONFIG_OCFS2_DEBUG_MASKLOG=y
-# CONFIG_OCFS2_DEBUG_FS is not set
-# CONFIG_OCFS2_FS_POSIX_ACL is not set
-CONFIG_BTRFS_FS=m
-# CONFIG_BTRFS_FS_POSIX_ACL is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
CONFIG_DNOTIFY=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
@@ -2343,16 +2085,14 @@ CONFIG_TMPFS=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_CONFIGFS_FS=m
CONFIG_MISC_FILESYSTEMS=y
-CONFIG_ADFS_FS=m
-# CONFIG_ADFS_FS_RW is not set
-CONFIG_AFFS_FS=m
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
# CONFIG_ECRYPT_FS is not set
-CONFIG_HFS_FS=m
-CONFIG_HFSPLUS_FS=m
-CONFIG_BEFS_FS=m
-# CONFIG_BEFS_DEBUG is not set
-CONFIG_BFS_FS=m
-CONFIG_EFS_FS=m
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
CONFIG_JFFS2_FS=y
CONFIG_JFFS2_FS_DEBUG=0
CONFIG_JFFS2_FS_WRITEBUFFER=y
@@ -2376,20 +2116,18 @@ CONFIG_UBIFS_FS_ADVANCED_COMPR=y
CONFIG_UBIFS_FS_LZO=y
CONFIG_UBIFS_FS_ZLIB=y
# CONFIG_UBIFS_FS_DEBUG is not set
-CONFIG_CRAMFS=m
+# CONFIG_CRAMFS is not set
CONFIG_SQUASHFS=y
# CONFIG_SQUASHFS_EMBEDDED is not set
CONFIG_SQUASHFS_FRAGMENT_CACHE_SIZE=3
-CONFIG_VXFS_FS=m
-CONFIG_MINIX_FS=m
-CONFIG_OMFS_FS=m
-CONFIG_HPFS_FS=m
-CONFIG_QNX4FS_FS=m
-CONFIG_ROMFS_FS=m
-CONFIG_SYSV_FS=m
-CONFIG_UFS_FS=m
-# CONFIG_UFS_FS_WRITE is not set
-# CONFIG_UFS_DEBUG is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
CONFIG_AUFS_FS=y
CONFIG_AUFS_BRANCH_MAX_127=y
# CONFIG_AUFS_BRANCH_MAX_511 is not set
@@ -2422,8 +2160,7 @@ CONFIG_SUNRPC_GSS=y
# CONFIG_SUNRPC_REGISTER_V4 is not set
CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
+# CONFIG_SMB_FS is not set
CONFIG_CIFS=m
CONFIG_CIFS_STATS=y
CONFIG_CIFS_STATS2=y
@@ -2433,19 +2170,9 @@ CONFIG_CIFS_STATS2=y
# CONFIG_CIFS_DEBUG2 is not set
CONFIG_CIFS_EXPERIMENTAL=y
# CONFIG_CIFS_DFS_UPCALL is not set
-CONFIG_NCP_FS=m
-# CONFIG_NCPFS_PACKET_SIGNING is not set
-# CONFIG_NCPFS_IOCTL_LOCKING is not set
-# CONFIG_NCPFS_STRONG is not set
-# CONFIG_NCPFS_NFS_NS is not set
-# CONFIG_NCPFS_OS2_NS is not set
-# CONFIG_NCPFS_SMALLDOS is not set
-# CONFIG_NCPFS_NLS is not set
-# CONFIG_NCPFS_EXTRAS is not set
-CONFIG_CODA_FS=m
-CONFIG_AFS_FS=m
-# CONFIG_AFS_DEBUG is not set
-CONFIG_9P_FS=m
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
#
# Partition Types
@@ -2455,14 +2182,13 @@ CONFIG_PARTITION_ADVANCED=y
# CONFIG_OSF_PARTITION is not set
# CONFIG_AMIGA_PARTITION is not set
# CONFIG_ATARI_PARTITION is not set
-CONFIG_MAC_PARTITION=y
+# CONFIG_MAC_PARTITION is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_BSD_DISKLABEL=y
CONFIG_MINIX_SUBPARTITION=y
CONFIG_SOLARIS_X86_PARTITION=y
CONFIG_UNIXWARE_DISKLABEL=y
-CONFIG_LDM_PARTITION=y
-CONFIG_LDM_DEBUG=y
+# CONFIG_LDM_PARTITION is not set
# CONFIG_SGI_PARTITION is not set
# CONFIG_ULTRIX_PARTITION is not set
# CONFIG_SUN_PARTITION is not set
@@ -2509,8 +2235,7 @@ CONFIG_NLS_ISO8859_15=m
CONFIG_NLS_KOI8_R=m
CONFIG_NLS_KOI8_U=m
CONFIG_NLS_UTF8=y
-CONFIG_DLM=m
-# CONFIG_DLM_DEBUG is not set
+# CONFIG_DLM is not set
#
# Kernel hacking
@@ -2533,6 +2258,7 @@ CONFIG_SCHEDSTATS=y
CONFIG_TIMER_STATS=y
# CONFIG_DEBUG_OBJECTS is not set
# CONFIG_DEBUG_SLAB is not set
+CONFIG_DEBUG_PREEMPT=y
# CONFIG_DEBUG_RT_MUTEXES is not set
# CONFIG_RT_MUTEX_TESTER is not set
# CONFIG_DEBUG_SPINLOCK is not set
@@ -2570,6 +2296,7 @@ CONFIG_TRACING=y
#
# CONFIG_FUNCTION_TRACER is not set
# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
# CONFIG_SCHED_TRACER is not set
# CONFIG_CONTEXT_SWITCH_TRACER is not set
# CONFIG_BOOT_TRACER is not set
diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch
new file mode 100644
index 0000000000..959110bc1d
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/dss2-fix-rotation-offsets.patch
@@ -0,0 +1,54 @@
+--- a/drivers/video/omap2/omapfb/omapfb-main.c
++++ b/drivers/video/omap2/omapfb/omapfb-main.c
+@@ -661,13 +661,15 @@
+ u32 data_start_p;
+ void __iomem *data_start_v;
+ struct omap_overlay_info info;
+- int xres, yres;
++ int xres, yres, xoff, yoff;
+ int screen_width;
+ int mirror;
+
+ DBG("setup_overlay %d, posx %d, posy %d, outw %d, outh %d\n", ofbi->id,
+ posx, posy, outw, outh);
+
++ xoff = var->xoffset;
++ yoff = var->yoffset;
+ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) {
+ xres = var->yres;
+ yres = var->xres;
+@@ -676,8 +678,32 @@
+ yres = var->yres;
+ }
+
+- offset = ((var->yoffset * var->xres_virtual +
+- var->xoffset) * var->bits_per_pixel) >> 3;
++ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_UD) {
++ if (var->yres < var->yres_virtual) {
++ if (var->yoffset)
++ yoff = 0;
++ else
++ yoff = var->yres_virtual - var->yres;
++ }
++ }
++
++ if (ofbi->rotation == FB_ROTATE_CCW || ofbi->rotation == FB_ROTATE_UD) {
++ if (var->xres < var->xres_virtual) {
++ if (var->xoffset)
++ xoff = 0;
++ else
++ xoff = var->xres_virtual - var->xres;
++ }
++ }
++
++ if (ofbi->rotation == FB_ROTATE_CW || ofbi->rotation == FB_ROTATE_CCW) {
++ offset = ((xoff * fix->line_length) >> 1) +
++ ((yoff * var->bits_per_pixel) >> 2);
++ } else
++ {
++ offset = yoff * fix->line_length +
++ ((xoff * var->bits_per_pixel) >> 3);
++ }
+
+ if (ofbi->rotation_type == OMAP_DSS_ROT_VRFB) {
+ data_start_p = omapfb_get_region_rot_paddr(ofbi);
diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch
new file mode 100644
index 0000000000..030de12261
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/keyboard-special-keys.patch
@@ -0,0 +1,244 @@
+--- a/drivers/hid/Kconfig
++++ b/drivers/hid/Kconfig
+@@ -89,6 +89,13 @@ config HID_A4TECH
+ ---help---
+ Support for A4 tech X5 and WOP-35 / Trust 450L mice.
+
++config HID_AI
++ tristate "Always Innovating" if EMBEDDED
++ depends on USB_HID
++ default !EMBEDDED
++ ---help---
++ Support for Always Innovating Touch Book.
++
+ config HID_APPLE
+ tristate "Apple" if EMBEDDED
+ depends on (USB_HID || BT_HIDP)
+diff --git a/drivers/hid/Makefile b/drivers/hid/Makefile
+index fbd021f..88c0ead 100644
+--- a/drivers/hid/Makefile
++++ b/drivers/hid/Makefile
+@@ -21,6 +21,7 @@ ifdef CONFIG_LOGIRUMBLEPAD2_FF
+ endif
+
+ obj-$(CONFIG_HID_A4TECH) += hid-a4tech.o
++obj-$(CONFIG_HID_AI) += hid-ai.o
+ obj-$(CONFIG_HID_APPLE) += hid-apple.o
+ obj-$(CONFIG_HID_BELKIN) += hid-belkin.o
+ obj-$(CONFIG_HID_CHERRY) += hid-cherry.o
+diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
+index 1cc9674..84b580e 100644
+--- a/drivers/hid/hid-core.c
++++ b/drivers/hid/hid-core.c
+@@ -1222,6 +1222,7 @@ EXPORT_SYMBOL_GPL(hid_connect);
+ static const struct hid_device_id hid_blacklist[] = {
+ { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_WCP32PU) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_A4TECH, USB_DEVICE_ID_A4TECH_X5_005D) },
++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_ATV_IRCONTROL) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_IRCONTROL4) },
+ { HID_USB_DEVICE(USB_VENDOR_ID_APPLE, USB_DEVICE_ID_APPLE_MIGHTYMOUSE) },
+diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
+index 8851197..3d6fe8e 100644
+--- a/drivers/hid/hid-ids.h
++++ b/drivers/hid/hid-ids.h
+@@ -54,6 +54,9 @@
+ #define USB_VENDOR_ID_ALPS 0x0433
+ #define USB_DEVICE_ID_IBM_GAMEPAD 0x1101
+
++#define USB_VENDOR_ID_AI 0xa110
++#define USB_DEVICE_ID_AI_TOUCH_BOOK 0x0002
++
+ #define USB_VENDOR_ID_APPLE 0x05ac
+ #define USB_DEVICE_ID_APPLE_MIGHTYMOUSE 0x0304
+ #define USB_DEVICE_ID_APPLE_FOUNTAIN_ANSI 0x020e
+--- a/drivers/hid/hid-ai.c 2009-07-15 08:30:35.000000000 -0700
++++ b/drivers/hid/hid-ai.c 2009-09-04 21:58:06.000000000 -0700
+@@ -0,0 +1,187 @@
++/*
++ * USB HID quirks support for the Always Innovating Touch Book
++ * Code borrowed from hid-apple.c
++ *
++ * Copyright (c) 2009 Tim Yamin <plasm@roo.me.uk>
++ */
++
++/*
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the Free
++ * Software Foundation; either version 2 of the License, or (at your option)
++ * any later version.
++ */
++
++#include <linux/device.h>
++#include <linux/hid.h>
++#include <linux/module.h>
++#include <linux/usb.h>
++
++#include "hid-ids.h"
++
++struct ai_sc {
++ unsigned long quirks;
++ unsigned int fn_on;
++ DECLARE_BITMAP(pressed_fn, KEY_CNT);
++};
++
++struct ai_key_translation {
++ u16 from;
++ u16 to;
++ u8 flags;
++};
++
++static struct ai_key_translation ai_fn_keys[] = {
++ { KEY_F6, KEY_BRIGHTNESSDOWN },
++ { KEY_F7, KEY_BRIGHTNESSUP },
++
++ { KEY_F8, KEY_MUTE },
++ { KEY_F9, KEY_VOLUMEDOWN },
++ { KEY_F10, KEY_VOLUMEUP },
++
++ { KEY_UP, KEY_PAGEUP },
++ { KEY_DOWN, KEY_PAGEDOWN },
++ { }
++};
++
++static struct ai_key_translation *ai_find_translation(
++ struct ai_key_translation *table, u16 from)
++{
++ struct ai_key_translation *trans;
++
++ /* Look for the translation */
++ for (trans = table; trans->from; trans++)
++ if (trans->from == from)
++ return trans;
++
++ return NULL;
++}
++
++static int ai_event(struct hid_device *hid, struct hid_field *field,
++ struct hid_usage *usage, __s32 value)
++{
++ int do_translate;
++
++ struct input_dev *input = field->hidinput->input;
++ struct ai_sc *asc = hid_get_drvdata(hid);
++ struct ai_key_translation *trans;
++
++ if (usage->code == KEY_POWER) {
++ asc->fn_on = !!value;
++ input_event(input, usage->type, usage->code, value);
++ return 1;
++ }
++
++ trans = ai_find_translation(ai_fn_keys, usage->code);
++ if (trans) {
++ if (test_bit(usage->code, asc->pressed_fn))
++ do_translate = 1;
++ else
++ do_translate = asc->fn_on;
++
++ if (do_translate) {
++ if (value)
++ set_bit(usage->code, asc->pressed_fn);
++ else
++ clear_bit(usage->code, asc->pressed_fn);
++
++ input_event(input, usage->type, trans->to,
++ value);
++
++ return 1;
++ }
++ }
++
++ return 0;
++}
++
++static int ai_input_mapping(struct hid_device *hdev, struct hid_input *hi,
++ struct hid_field *field, struct hid_usage *usage,
++ unsigned long **bit, int *max)
++{
++ struct ai_key_translation *trans;
++
++ /* Enable all other keys */
++ for (trans = ai_fn_keys; trans->from; trans++)
++ set_bit(trans->to, hi->input->keybit);
++
++ return 0;
++}
++
++static int ai_probe(struct hid_device *hdev,
++ const struct hid_device_id *id)
++{
++ unsigned long quirks = id->driver_data;
++ struct ai_sc *asc;
++ unsigned int connect_mask = HID_CONNECT_DEFAULT;
++ int ret;
++
++ asc = kzalloc(sizeof(*asc), GFP_KERNEL);
++ if (asc == NULL) {
++ dev_err(&hdev->dev, "can't alloc ai descriptor\n");
++ return -ENOMEM;
++ }
++
++ asc->quirks = quirks;
++ hid_set_drvdata(hdev, asc);
++
++ ret = hid_parse(hdev);
++ if (ret) {
++ dev_err(&hdev->dev, "parse failed\n");
++ goto err_free;
++ }
++
++ ret = hid_hw_start(hdev, connect_mask);
++ if (ret) {
++ dev_err(&hdev->dev, "hw start failed\n");
++ goto err_free;
++ }
++
++ return 0;
++err_free:
++ kfree(asc);
++ return ret;
++}
++
++static void ai_remove(struct hid_device *hdev)
++{
++ hid_hw_stop(hdev);
++ kfree(hid_get_drvdata(hdev));
++}
++
++static const struct hid_device_id ai_devices[] = {
++ { HID_USB_DEVICE(USB_VENDOR_ID_AI, USB_DEVICE_ID_AI_TOUCH_BOOK) },
++ { }
++};
++
++MODULE_DEVICE_TABLE(hid, ai_devices);
++
++static struct hid_driver ai_driver = {
++ .name = "ai",
++ .id_table = ai_devices,
++ .probe = ai_probe,
++ .remove = ai_remove,
++ .event = ai_event,
++ .input_mapping = ai_input_mapping,
++};
++
++static int ai_init(void)
++{
++ int ret;
++
++ ret = hid_register_driver(&ai_driver);
++ if (ret)
++ printk(KERN_ERR "can't register ai driver\n");
++
++ return ret;
++}
++
++static void ai_exit(void)
++{
++ hid_unregister_driver(&ai_driver);
++}
++
++module_init(ai_init);
++module_exit(ai_exit);
++MODULE_LICENSE("GPL");
++HID_COMPAT_LOAD_DRIVER(ai);
diff --git a/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch
new file mode 100644
index 0000000000..1482bf666d
--- /dev/null
+++ b/recipes/linux/linux-omap-2.6.29/omap3-touchbook/touchbook-config.patch
@@ -0,0 +1,60 @@
+--- a/arch/arm/mach-omap2/Kconfig 2009-10-13 15:19:17.000000000 -0700
++++ b/arch/arm/mach-omap2/Kconfig 2009-10-13 15:19:51.000000000 -0700
+@@ -137,3 +137,9 @@
+ config MACH_OMAP3_PANDORA
+ bool "OMAP3 Pandora"
+ depends on ARCH_OMAP3 && ARCH_OMAP34XX
++
++config MACH_OMAP3_TOUCHBOOK
++ bool "OMAP3 Touch Book"
++ depends on ARCH_OMAP3 && ARCH_OMAP34XX
++ select BACKLIGHT_CLASS_DEVICE
++
+--- a/arch/arm/mach-omap2/Makefile 2009-10-13 15:22:26.000000000 -0700
++++ b/arch/arm/mach-omap2/Makefile 2009-10-13 15:21:10.000000000 -0700
+@@ -87,6 +87,9 @@
+ twl4030-generic-scripts.o
+ obj-$(CONFIG_MACH_OMAP3_PANDORA) += board-omap3pandora.o \
+ mmc-twl4030.o
++obj-$(CONFIG_MACH_OMAP3_TOUCHBOOK) += board-omap3touchbook.o \
++ mmc-twl4030.o \
++ twl4030-generic-scripts.o
+
+ # Platform specific device init code
+ obj-$(CONFIG_USB_MUSB_SOC) += usb-musb.o
+--- a/sound/soc/omap/Makefile 2009-10-15 21:07:27.000000000 +0200
++++ b/sound/soc/omap/Makefile 2009-10-15 21:09:18.000000000 +0200
+@@ -13,6 +13,7 @@
+ snd-soc-sdp3430-objs := sdp3430.o
+ snd-soc-omap3pandora-objs := omap3pandora.o
+ snd-soc-omap3beagle-objs := omap3beagle.o
++snd-soc-omap3touchbook-objs := omap3beagle.o
+
+ obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
+ obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
+@@ -21,3 +22,4 @@
+ obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
+ obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o
+ obj-$(CONFIG_SND_OMAP_SOC_OMAP3_BEAGLE) += snd-soc-omap3beagle.o
++obj-$(CONFIG_SND_OMAP_SOC_OMAP3_TOUCHBOOK) += snd-soc-omap3beagle.o
+--- a/sound/soc/omap/Kconfig 2009-10-15 21:07:35.000000000 +0200
++++ b/sound/soc/omap/Kconfig 2009-10-15 21:08:24.000000000 +0200
+@@ -64,4 +64,11 @@
+ help
+ Say Y if you want to add support for SoC audio on the Beagleboard.
+
++config SND_OMAP_SOC_OMAP3_TOUCHBOOK
++ tristate "SoC Audio support for OMAP3 Touch Book"
++ depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_TOUCHBOOK
++ select SND_OMAP_SOC_MCBSP
++ select SND_SOC_TWL4030
++ help
++ Say Y if you want to add support for SoC audio on the Touch Book.
+
+--- a/arch/arm/tools/mach-types 2009-10-16 08:22:36.000000000 +0800
++++ b/arch/arm/tools/mach-types 2009-10-16 08:23:13.000000000 +0800
+@@ -2124,3 +2124,4 @@
+ fmzwebmodul MACH_FMZWEBMODUL FMZWEBMODUL 2134
+ rd78x00_masa MACH_RD78X00_MASA RD78X00_MASA 2135
+ smallogger MACH_SMALLOGGER SMALLOGGER 2136
++omap3_touchbook MACH_OMAP3_TOUCHBOOK OMAP3_TOUCHBOOK 2393
diff --git a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
index efe8e6d8dd..558d43b309 100644
--- a/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
+++ b/recipes/linux/linux-omap-2.6.31/beagleboard/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.31-omap1
-# Thu Sep 17 17:27:43 2009
+# Wed Oct 21 10:08:46 2009
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -367,7 +367,6 @@ CONFIG_PM_DEBUG=y
CONFIG_CAN_PM_TRACE=y
CONFIG_PM_SLEEP=y
CONFIG_SUSPEND=y
-# CONFIG_PM_TEST_SUSPEND is not set
CONFIG_SUSPEND_FREEZER=y
# CONFIG_APM_EMULATION is not set
CONFIG_ARCH_SUSPEND_POSSIBLE=y
@@ -2196,10 +2195,7 @@ CONFIG_LEDS_TRIGGER_DEFAULT_ON=m
# iptables trigger is under Netfilter config (LED target)
#
CONFIG_RTC_LIB=y
-CONFIG_RTC_CLASS=y
-CONFIG_RTC_HCTOSYS=y
-CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
-# CONFIG_RTC_DEBUG is not set
+CONFIG_RTC_CLASS=m
#
# RTC interfaces
@@ -2213,7 +2209,7 @@ CONFIG_RTC_INTF_DEV=y
#
# I2C RTC drivers
#
-CONFIG_RTC_DRV_DS1307=y
+CONFIG_RTC_DRV_DS1307=m
# CONFIG_RTC_DRV_DS1374 is not set
# CONFIG_RTC_DRV_DS1672 is not set
# CONFIG_RTC_DRV_MAX6900 is not set
diff --git a/recipes/linux/linux-omap_2.6.29.bb b/recipes/linux/linux-omap_2.6.29.bb
index 48f94b06c3..8ded1a31f8 100644
--- a/recipes/linux/linux-omap_2.6.29.bb
+++ b/recipes/linux/linux-omap_2.6.29.bb
@@ -8,6 +8,7 @@ COMPATIBLE_MACHINE = "omap5912osk|omap1710h3|omap2430sdp|omap2420h4|beagleboard|
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_overo = "1"
DEFAULT_PREFERENCE_beagleboard = "1"
+DEFAULT_PREFERENCE_omap3-touchbook = "1"
DEFAULT_PREFERENCE_omap3evm = "1"
SRCREV = "58cf2f1425abfd3a449f9fe985e48be2d2555022"
@@ -175,8 +176,8 @@ SRC_URI_append_beagleboard = " file://logo_linux_clut224.ppm \
file://beaglebug/beaglebug-full.patch;patch=1 \
"
-SRC_URI_append_omap3-touchbook = " \
- file://beagle-asoc.patch;patch=1 \
+SRC_URI_append_omap3-touchbook = " file://logo_linux_clut224.ppm \
+ file://../beagleboard/beagle-asoc.patch;patch=1 \
file://accelerometer-mma7455l.patch;patch=1 \
file://accelerometer-touchscreen-mux-spi.patch;patch=1 \
file://touchscreen-ads7846-export-settings.patch;patch=1 \
@@ -185,7 +186,6 @@ SRC_URI_append_omap3-touchbook = " \
file://battery2-bq27200-no-error-message.patch;patch=1 \
file://sound-headphone-detection.patch;patch=1 \
file://dss2-fix-XY-coordinates-when-rotating.patch;patch=1 \
- file://screen-backlight.patch;patch=1 \
file://battery1-tps65950-charging-management-1.patch;patch=1 \
file://dss2-fix-scaling-when-rotating.patch;patch=1 \
file://dss2-export-status.patch;patch=1 \
@@ -201,7 +201,11 @@ SRC_URI_append_omap3-touchbook = " \
file://boot-no-power-message.patch;patch=1 \
file://usb-lower-current-consumption-upon-insertion.patch;patch=1 \
file://battery2-bq27200-gpio-charged.patch;patch=1 \
- file://board-omap3beagle.c \
+ file://keyboard-special-keys.patch;patch=1 \
+ file://dss2-fix-rotation-offsets.patch;patch=1 \
+ file://touchbook-config.patch;patch=1 \
+ file://board-omap3touchbook.c \
+# file://boot-trace-for-optimization.patch;patch=1 \
"
SRC_URI_append_omap3evm = " \
@@ -213,7 +217,7 @@ SRC_URI_append_omap3evm = " \
S = "${WORKDIR}/git"
do_configure_prepend_omap3-touchbook() {
- cp ${WORKDIR}/board-omap3beagle.c ${S}/arch/arm/mach-omap2
+ cp ${WORKDIR}/board-*.c ${S}/arch/arm/mach-omap2
}
do_install_append() {
diff --git a/recipes/linux/linux_2.6.31.bb b/recipes/linux/linux_2.6.31.bb
index 455ff19adc..30b152c8fd 100644
--- a/recipes/linux/linux_2.6.31.bb
+++ b/recipes/linux/linux_2.6.31.bb
@@ -13,6 +13,32 @@ SRC_URI = "${KERNELORG_MIRROR}/pub/linux/kernel/v2.6/linux-${PV}.tar.bz2 \
http://maxim.org.za/AT91RM9200/2.6/2.6.31-at91.patch.gz;patch=1 \
file://defconfig"
+SRC_URI_append_boc01 = "\
+ file://boc01.dts \
+ file://boc01.dts.v1 \
+ file://004-081205-usb.patch;patch=1 \
+ file://005-091008-isl12024.patch;patch=1 \
+ file://007-091005-lm73.patch;patch=1 \
+ file://008-091005-spi.patch;patch=1 \
+ file://011-090115-gpio.patch;patch=1 \
+ file://012-091019-capsense.patch;patch=1 \
+ file://013-091015-lcd.patch;patch=1 \
+ "
+
SRC_URI_append_ep93xx = " \
file://edb9301-fix-machine-id.patch;patch=1 \
"
+
+do_devicetree_image_append_boc01() {
+ dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree.v1 ${KERNEL_DEVICETREE}.v1
+ install -m 0644 devicetree.v1 ${D}/boot/devicetree-${KERNEL_VERSION}.v1
+}
+
+pkg_postinst_kernel-devicetree_append_boc01 () {
+ cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/devicetree.v1 devicetree.v1 devicetree-${KERNEL_VERSION}.v1 ${KERNEL_PRIORITY} || true
+}
+
+pkg_postrm_kernel-devicetree_append_boc01 () {
+ cd /${KERNEL_IMAGEDEST}; update-alternatives --remove devicetree.v1 devicetree-${KERNEL_VERSION}.v1 || true
+}
+
diff --git a/recipes/lm_sensors/lmsensors-apps_2.10.8.bb b/recipes/lm_sensors/lmsensors-apps_2.10.8.bb
index 8947ffb5b3..af58136f2a 100644
--- a/recipes/lm_sensors/lmsensors-apps_2.10.8.bb
+++ b/recipes/lm_sensors/lmsensors-apps_2.10.8.bb
@@ -2,6 +2,7 @@ DESCRIPTION = "Hardware health monitoring applications"
HOMEPAGE = "http://www.lm-sensors.org/"
DEPENDS = "sysfsutils virtual/libiconv"
LICENSE = "GPL"
+PR = "r1"
SRC_URI = "http://dl.lm-sensors.org/lm-sensors/releases/lm_sensors-${PV}.tar.gz \
file://prefix-fix.patch;patch=1 \
@@ -16,7 +17,7 @@ do_compile() {
}
do_install() {
- oe_runmake user_install DESTDIR=${D}
+ oe_runmake user_install EXLDFLAGS="${LDFLAGS}" DESTDIR=${D}
install -d ${D}/.usr
mv ${D}/* ${D}/.usr
@@ -31,7 +32,7 @@ do_install() {
}
do_stage() {
- oe_runmake user_install DESTDIR=${STAGING_DIR_TARGET}/${layout_prefix}
+ oe_runmake user_install EXLDFLAGS="${LDFLAGS}" DESTDIR=${STAGING_DIR_TARGET}/${layout_prefix}
}
PACKAGES =+ "libsensors libsensors-dev libsensors-dbg libsensors-doc"
diff --git a/recipes/maemo4/libgpsbt_0.1.bb b/recipes/maemo4/libgpsbt_0.1.bb
index beca783a0b..2b2c0a1ee4 100644
--- a/recipes/maemo4/libgpsbt_0.1.bb
+++ b/recipes/maemo4/libgpsbt_0.1.bb
@@ -1,5 +1,7 @@
LICENSE = "nokia"
+PR = "r1"
+
DEPENDS = "libgpsmgr dbus"
# This is proprietary software in Chinook, so we have to stay with the last released
@@ -8,6 +10,8 @@ SRC_URI = "http://repository.maemo.org/pool/bora/free/source/${PN}_${PV}-18.tar.
inherit autotools pkgconfig
+TARGET_CC_ARCH += "${LDFLAGS}"
+
do_stage() {
autotools_stage_all
}
diff --git a/recipes/maemo4/libhildon.inc b/recipes/maemo4/libhildon.inc
index bab16cf062..534603d640 100644
--- a/recipes/maemo4/libhildon.inc
+++ b/recipes/maemo4/libhildon.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "Hildon widget library"
LICENSE = "LGPL"
-DEPENDS = "gconf-dbus esound gtk+"
+DEPENDS = "gconf esound gtk+"
inherit autotools pkgconfig lib_package
diff --git a/recipes/makedevs/makedevs-1.0.0/makedevs.c b/recipes/makedevs/makedevs-1.0.0/makedevs.c
index c7ad722f2e..80f21f0841 100644
--- a/recipes/makedevs/makedevs-1.0.0/makedevs.c
+++ b/recipes/makedevs/makedevs-1.0.0/makedevs.c
@@ -221,7 +221,7 @@ static int interpret_table_entry(char *line)
dev_t rdev;
char buf[80];
- for (i = start; i < count; i++) {
+ for (i = start; i < start+count; i++) {
sprintf(buf, "%s%d", name, i);
/* FIXME: MKDEV uses illicit insider knowledge of kernel
* major/minor representation... */
diff --git a/recipes/makedevs/makedevs_1.0.0.bb b/recipes/makedevs/makedevs_1.0.0.bb
index 5579e61bdd..cab1a4c1e5 100644
--- a/recipes/makedevs/makedevs_1.0.0.bb
+++ b/recipes/makedevs/makedevs_1.0.0.bb
@@ -6,7 +6,7 @@ PRIORITY = "required"
SRC_URI = "file://makedevs.c"
S = "${WORKDIR}/makedevs-${PV}"
-PR = "r7"
+PR = "r8"
inherit update-alternatives
diff --git a/recipes/moblin/mojito_git.bb b/recipes/moblin/mojito_git.bb
index b29aaed33d..f9104a9371 100644
--- a/recipes/moblin/mojito_git.bb
+++ b/recipes/moblin/mojito_git.bb
@@ -1,9 +1,9 @@
SRC_URI = "git://git.moblin.org/${PN}.git;protocol=git"
PV = "0.0+git${SRCREV}"
-PR = "r2"
+PR = "r3"
-DEPENDS = "libsoup-2.4 gconf-dbus librest glib-2.0 twitter-glib sqlite3 gnome-keyring"
+DEPENDS = "libsoup-2.4 gconf librest glib-2.0 twitter-glib sqlite3 gnome-keyring"
S = "${WORKDIR}/git"
diff --git a/recipes/mplayer/files/pld-onlyarm5-svn.patch b/recipes/mplayer/files/pld-onlyarm5-svn.patch
deleted file mode 100644
index 349fb9df90..0000000000
--- a/recipes/mplayer/files/pld-onlyarm5-svn.patch
+++ /dev/null
@@ -1,405 +0,0 @@
-Index: trunk/libavcodec/arm/dsputil_arm_s.S
-===================================================================
---- trunk.orig/libavcodec/arm/dsputil_arm_s.S
-+++ trunk/libavcodec/arm/dsputil_arm_s.S
-@@ -18,6 +18,13 @@
- @ License along with FFmpeg; if not, write to the Free Software
- @ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- @
-+#if defined(__ARM_ARCH_5__) || \
-+ defined(__ARM_ARCH_5T__) || \
-+ defined(__ARM_ARCH_5TE__)
-+#define PLD(code...) code
-+#else
-+#define PLD(code...)
-+#endif
-
- #include "config.h"
- #include "asm.S"
-@@ -106,14 +113,14 @@ function ff_prefetch_arm, export=1
- function put_pixels16_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r11, lr} @ R14 is also called LR
- JMP_ALIGN r5, r1
- 1:
- ldmia r1, {r4-r7}
- add r1, r1, r2
- stmia r0, {r4-r7}
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- add r0, r0, r2
- bne 1b
-@@ -123,7 +130,7 @@ function put_pixels16_arm, export=1
- ldmia r1, {r4-r8}
- add r1, r1, r2
- ADJ_ALIGN_QUADWORD_D 1, r9, r10, r11, r12, r4, r5, r6, r7, r8
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r9-r12}
- add r0, r0, r2
-@@ -134,7 +141,7 @@ function put_pixels16_arm, export=1
- ldmia r1, {r4-r8}
- add r1, r1, r2
- ADJ_ALIGN_QUADWORD_D 2, r9, r10, r11, r12, r4, r5, r6, r7, r8
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r9-r12}
- add r0, r0, r2
-@@ -145,7 +152,7 @@ function put_pixels16_arm, export=1
- ldmia r1, {r4-r8}
- add r1, r1, r2
- ADJ_ALIGN_QUADWORD_D 3, r9, r10, r11, r12, r4, r5, r6, r7, r8
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r9-r12}
- add r0, r0, r2
-@@ -158,14 +165,14 @@ function put_pixels16_arm, export=1
- function put_pixels8_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r5,lr} @ R14 is also called LR
- JMP_ALIGN r5, r1
- 1:
- ldmia r1, {r4-r5}
- add r1, r1, r2
- subs r3, r3, #1
-- pld [r1]
-+ PLD ( pld [r1] )
- stmia r0, {r4-r5}
- add r0, r0, r2
- bne 1b
-@@ -175,7 +182,7 @@ function put_pixels8_arm, export=1
- ldmia r1, {r4-r5, r12}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r12
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r4-r5}
- add r0, r0, r2
-@@ -186,7 +193,7 @@ function put_pixels8_arm, export=1
- ldmia r1, {r4-r5, r12}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r12
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r4-r5}
- add r0, r0, r2
-@@ -197,7 +204,7 @@ function put_pixels8_arm, export=1
- ldmia r1, {r4-r5, r12}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r12
-- pld [r1]
-+ PLD ( pld [r1] )
- subs r3, r3, #1
- stmia r0, {r4-r5}
- add r0, r0, r2
-@@ -210,7 +217,7 @@ function put_pixels8_arm, export=1
- function put_pixels8_x2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r10,lr} @ R14 is also called LR
- ldr r12, =0xfefefefe
- JMP_ALIGN r5, r1
-@@ -218,7 +225,7 @@ function put_pixels8_x2_arm, export=1
- ldmia r1, {r4-r5, r10}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r8, r9, r4, r5, r6, r7, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -231,7 +238,7 @@ function put_pixels8_x2_arm, export=1
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
- ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r4, r5, r6, r7, r8, r9, r12
- subs r3, r3, #1
- stmia r0, {r4-r5}
-@@ -244,7 +251,7 @@ function put_pixels8_x2_arm, export=1
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
- ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r4, r5, r6, r7, r8, r9, r12
- subs r3, r3, #1
- stmia r0, {r4-r5}
-@@ -256,7 +263,7 @@ function put_pixels8_x2_arm, export=1
- ldmia r1, {r4-r5, r10}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r8, r9, r6, r7, r5, r10, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -269,7 +276,7 @@ function put_pixels8_x2_arm, export=1
- function put_no_rnd_pixels8_x2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r10,lr} @ R14 is also called LR
- ldr r12, =0xfefefefe
- JMP_ALIGN r5, r1
-@@ -277,7 +284,7 @@ function put_no_rnd_pixels8_x2_arm, expo
- ldmia r1, {r4-r5, r10}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -290,7 +297,7 @@ function put_no_rnd_pixels8_x2_arm, expo
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 1, r6, r7, r4, r5, r10
- ADJ_ALIGN_DOUBLEWORD_D 2, r8, r9, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
- subs r3, r3, #1
- stmia r0, {r4-r5}
-@@ -303,7 +310,7 @@ function put_no_rnd_pixels8_x2_arm, expo
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 2, r6, r7, r4, r5, r10
- ADJ_ALIGN_DOUBLEWORD_D 3, r8, r9, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r4, r5, r6, r7, r8, r9, r12
- subs r3, r3, #1
- stmia r0, {r4-r5}
-@@ -315,7 +322,7 @@ function put_no_rnd_pixels8_x2_arm, expo
- ldmia r1, {r4-r5, r10}
- add r1, r1, r2
- ADJ_ALIGN_DOUBLEWORD_D 3, r6, r7, r4, r5, r10
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r8, r9, r6, r7, r5, r10, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -330,7 +337,7 @@ function put_no_rnd_pixels8_x2_arm, expo
- function put_pixels8_y2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r11,lr} @ R14 is also called LR
- mov r3, r3, lsr #1
- ldr r12, =0xfefefefe
-@@ -340,13 +347,13 @@ function put_pixels8_y2_arm, export=1
- add r1, r1, r2
- 6: ldmia r1, {r6-r7}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r8, r9, r4, r5, r6, r7, r12
- ldmia r1, {r4-r5}
- add r1, r1, r2
- stmia r0, {r8-r9}
- add r0, r0, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- RND_AVG32 r8, r9, r6, r7, r4, r5, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -357,18 +364,18 @@ function put_pixels8_y2_arm, export=1
- 2:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
- RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
- subs r3, r3, #1
- RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -380,18 +387,18 @@ function put_pixels8_y2_arm, export=1
- 3:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
- RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
- subs r3, r3, #1
- RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -403,18 +410,18 @@ function put_pixels8_y2_arm, export=1
- 4:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
- RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
- subs r3, r3, #1
- RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -428,7 +435,7 @@ function put_pixels8_y2_arm, export=1
- function put_no_rnd_pixels8_y2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r11,lr} @ R14 is also called LR
- mov r3, r3, lsr #1
- ldr r12, =0xfefefefe
-@@ -438,13 +445,13 @@ function put_no_rnd_pixels8_y2_arm, expo
- add r1, r1, r2
- 6: ldmia r1, {r6-r7}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r8, r9, r4, r5, r6, r7, r12
- ldmia r1, {r4-r5}
- add r1, r1, r2
- stmia r0, {r8-r9}
- add r0, r0, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- NO_RND_AVG32 r8, r9, r6, r7, r4, r5, r12
- subs r3, r3, #1
- stmia r0, {r8-r9}
-@@ -455,18 +462,18 @@ function put_no_rnd_pixels8_y2_arm, expo
- 2:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r7, r8, r9
- NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 1, r4, r5, r6
- subs r3, r3, #1
- NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -478,18 +485,18 @@ function put_no_rnd_pixels8_y2_arm, expo
- 3:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r7, r8, r9
- NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 2, r4, r5, r6
- subs r3, r3, #1
- NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -501,18 +508,18 @@ function put_no_rnd_pixels8_y2_arm, expo
- 4:
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
- 6: ldmia r1, {r7-r9}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r7, r8, r9
- NO_RND_AVG32 r10, r11, r4, r5, r7, r8, r12
- stmia r0, {r10-r11}
- add r0, r0, r2
- ldmia r1, {r4-r6}
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- ADJ_ALIGN_DOUBLEWORD 3, r4, r5, r6
- subs r3, r3, #1
- NO_RND_AVG32 r10, r11, r7, r8, r4, r5, r12
-@@ -536,7 +543,7 @@ function put_no_rnd_pixels8_y2_arm, expo
- ldmia r1, {r8-r10}
- .endif
- add r1, r1, r2
-- pld [r1]
-+ PLD ( pld [r1] )
- .if \align == 0
- ADJ_ALIGN_DOUBLEWORD_D 1, r4, r5, r6, r7, r8
- .elseif \align == 1
-@@ -593,7 +600,7 @@ function put_no_rnd_pixels8_y2_arm, expo
- function put_pixels8_xy2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r11,lr} @ R14 is also called LR
- JMP_ALIGN r5, r1
- 1:
-@@ -616,7 +623,7 @@ function put_pixels8_xy2_arm, export=1
- function put_no_rnd_pixels8_xy2_arm, export=1
- @ void func(uint8_t *block, const uint8_t *pixels, int line_size, int h)
- @ block = word aligned, pixles = unaligned
-- pld [r1]
-+ PLD ( pld [r1] )
- stmfd sp!, {r4-r11,lr} @ R14 is also called LR
- JMP_ALIGN r5, r1
- 1:
diff --git a/recipes/mplayer/mplayer_svn.bb b/recipes/mplayer/mplayer_svn.bb
index 7c61cd00fe..1a434a5829 100644
--- a/recipes/mplayer/mplayer_svn.bb
+++ b/recipes/mplayer/mplayer_svn.bb
@@ -8,10 +8,10 @@ DEPENDS = "live555 libdvdread libtheora virtual/libsdl ffmpeg xsp zlib libpng jp
RDEPENDS = "mplayer-common"
LICENSE = "GPL"
SRC_URI = "svn://svn.mplayerhq.hu/mplayer;module=trunk \
- file://pld-onlyarm5-svn.patch;patch=1 \
file://makefile-nostrip-svn.patch;patch=1 \
"
+SRCREV = "29789"
SRC_URI_append_armv7a = " \
file://omapfb.patch;patch=1 \
file://vo_omapfb.c \
diff --git a/recipes/networkmanager/network-manager-applet_0.7.1.997.bb b/recipes/networkmanager/network-manager-applet_0.7.1.997.bb
new file mode 100644
index 0000000000..d1be602ef3
--- /dev/null
+++ b/recipes/networkmanager/network-manager-applet_0.7.1.997.bb
@@ -0,0 +1,26 @@
+DESCRIPTION = "GTK+ applet for NetworkManager"
+LICENSE = "GPL"
+DEPENDS = "policykit-gnome libnotify networkmanager dbus-glib libglade gconf gnome-keyring"
+RDEPENDS = "networkmanager"
+
+inherit gnome
+
+SRC_URI += "file://nm-applet.conf"
+
+do_configure_append() {
+ rm config.log
+ # Sigh... --enable-compile-warnings=no doesn't actually turn off -Werror
+ for i in $(find ${S} -name "Makefile") ; do
+ sed -i -e s:-Werror::g $i
+ done
+}
+
+# Hack around dbus a_console problems
+do_install_append() {
+ install -m 0644 ${WORKDIR}/nm-applet.conf ${D}${sysconfdir}/dbus-1/system.d/
+}
+
+FILES_${PN} += "${datadir}/nm-applet/ \
+ ${datadir}/gnome-vpn-properties/ \
+ ${datadir}/gnome/autostart/ \
+ "
diff --git a/recipes/networkmanager/networkmanager.inc b/recipes/networkmanager/networkmanager.inc
index ead854ca58..c159883bfd 100644
--- a/recipes/networkmanager/networkmanager.inc
+++ b/recipes/networkmanager/networkmanager.inc
@@ -3,7 +3,7 @@ SECTION = "net/misc"
LICENSE = "GPL"
HOMEPAGE = "http://www.gnome.org"
PRIORITY = "optional"
-DEPENDS = "libnl dbus dbus-glib hal gconf-dbus wireless-tools ppp"
+DEPENDS = "libnl dbus dbus-glib hal gconf wireless-tools ppp"
RDEPENDS = "hal wpa-supplicant iproute2 dhcp-client dhcdbd"
SRC_URI = "http://ftp.gnome.org/pub/GNOME/sources/NetworkManager/0.6/NetworkManager-${PV}.tar.bz2 \
diff --git a/recipes/networkmanager/networkmanager_0.6.4.bb b/recipes/networkmanager/networkmanager_0.6.4.bb
index 737d9544d0..f41449c610 100644
--- a/recipes/networkmanager/networkmanager_0.6.4.bb
+++ b/recipes/networkmanager/networkmanager_0.6.4.bb
@@ -3,10 +3,10 @@ SECTION = "network/misc"
LICENSE = "GPL"
HOMEPAGE = "http://www.gnome.org"
PRIORITY = "optional"
-DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf-dbus wireless-tools libglade"
+DEPENDS = "libnl dbus dbus-glib libhal-nm libgpewidget gnome-keyring gconf wireless-tools libglade"
RDEPENDS = "wpa-supplicant iproute2 dhcdbd gnome-keyring hicolor-icon-theme"
-PR = "r5"
+PR = "r6"
SRC_URI="http://www.handhelds.org/~mmp/files/NetworkManager-${PV}-gpe.tar.gz \
file://dbus-api-fix.patch;patch=1 \
diff --git a/recipes/networkmanager/networkmanager_0.7.1.997.bb b/recipes/networkmanager/networkmanager_0.7.1.997.bb
new file mode 100644
index 0000000000..fe90d7ed71
--- /dev/null
+++ b/recipes/networkmanager/networkmanager_0.7.1.997.bb
@@ -0,0 +1,26 @@
+require networkmanager-0.7.inc
+
+SRC_URI += " \
+ file://remove-gtk-doc-make.patch;patch=1 \
+ file://nm-system-settings.conf \
+ file://NetworkManager \
+ file://gtk-doc.make \
+"
+
+
+do_configure_prepend() {
+ cp ${WORKDIR}/gtk-doc.make ${S}/
+ echo "EXTRA_DIST = version.xml" > gnome-doc-utils.make
+ sed -i -e 's:man \\:man:' -e s:docs::g ${S}/Makefile.am
+ sed -i -e /^docs/d ${S}/configure.ac
+}
+
+
+S = "${WORKDIR}/NetworkManager-${PV}"
+
+do_install_append () {
+ install -d ${D}/etc/NetworkManager/
+ install -m 0644 ${WORKDIR}/nm-system-settings.conf ${D}/etc/NetworkManager/
+ install -m 0755 ${WORKDIR}/NetworkManager ${D}/etc/init.d
+}
+
diff --git a/recipes/openscada/files/rcc-moc.patch b/recipes/openscada/files/rcc-moc.patch
new file mode 100644
index 0000000000..36d0236b77
--- /dev/null
+++ b/recipes/openscada/files/rcc-moc.patch
@@ -0,0 +1,15 @@
+Index: OpenSCADA/configure.in
+===================================================================
+--- OpenSCADA.orig/configure.in 2009-10-21 01:41:21.813245199 -0700
++++ OpenSCADA/configure.in 2009-10-21 01:42:25.163222573 -0700
+@@ -446,8 +446,8 @@ AC_MSG_RESULT(==========================
+ #QT4 check
+ if test ${QT4use} = true; then
+ AC_ARG_WITH(qt4-dir,[ --with-qt4-dir=DIR Path to directory where QT4 instaled (/usr/lib/qt4 - default) ], [QT4_DIR="$withval"], [QT4_DIR="/usr/lib/qt4"])
+- AC_CHECK_PROGS(QT4_MOC, moc-qt4 moc, false)
+- AC_CHECK_PROGS(QT4_RCC, rcc-qt4 rcc, false)
++ AC_CHECK_PROGS(QT4_MOC, moc-qt4 moc4 moc, false)
++ AC_CHECK_PROGS(QT4_RCC, rcc-qt4 rcc4 rcc, false)
+ if test ${QT4_MOC} = false || test ${QT4_RCC} = false;
+ then if test -d ${QT4_DIR};
+ then
diff --git a/recipes/openscada/openscada_svn.bb b/recipes/openscada/openscada_svn.bb
new file mode 100644
index 0000000000..acb700c0d1
--- /dev/null
+++ b/recipes/openscada/openscada_svn.bb
@@ -0,0 +1,51 @@
+# Copyright (C) 2009 Khem Raj <raj.khem@gmail.com>
+# Released under the MIT license (see COPYING.MIT for the terms)
+
+DESCRIPTION = "OpenSCADA system is open implementation SCADA (Supervisory controll and data acquisition) systems"
+HOMEPAGE = "http://oscada.org.ua/"
+LICENSE = "GPL"
+SECTION = "Applications"
+DEPENDS = "gd mysql expat sqlite3 lmsensors-apps fftw qt4-x11-free"
+#SRC_URI = "ftp://ftp.oscada.org/OpenSCADA/0.6.4/openscada-0.6.4.tar.gz"
+SRC_URI = "svn://oscada.org.ua/trunk;module=OpenSCADA;rev=;proto=svn \
+ file://rcc-moc.patch;patch=1 \
+ "
+
+PV = "0.6.4"
+PR = "svn"
+
+S = "${WORKDIR}/OpenSCADA"
+
+inherit autotools_stage
+
+EXTRA_OECONF = " \
+ --includedir=${STAGING_INCDIR} \
+ --oldincludedir=${STAGING_INCDIR} \
+ --disable-SQLite \
+ --disable-MySQL \
+ --disable-FireBird \
+ --without-sqlite3 \
+ --without-firebird \
+ --disable-SoundCard \
+ --disable-Vision \
+ --disable-WebVision \
+ --disable-shared \
+"
+
+#do_configure_prepend() {
+# autoconf
+#}
+
+#do_configure() {
+# oe_runconf
+#}
+
+
+do_install_prepend () {
+ mkdir -p -m 755 ${D}/etc
+ cp ${S}/data/oscada.xml ${D}/etc
+ mkdir -p -m 755 ${D}/var/spool/openscada/icons
+ cp ${S}/data/icons/* ${D}/var/spool/openscada/icons
+ install -p -m 777 -d ${D}/var/spool/openscada/ARCHIVES/{MESS,VAL}
+}
+
diff --git a/recipes/packagekit/gnome-packagekit_2.27.1.bb b/recipes/packagekit/gnome-packagekit_2.27.1.bb
index 2bb6f95e87..1949d3d3a2 100644
--- a/recipes/packagekit/gnome-packagekit_2.27.1.bb
+++ b/recipes/packagekit/gnome-packagekit_2.27.1.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "GNOME frontend for packagekit"
LICENSE = "GPL"
-DEPENDS = "packagekit libsexy gconf-dbus policykit policykit-gnome libunique gnome-menus"
+DEPENDS = "packagekit libsexy gconf policykit policykit-gnome libunique gnome-menus"
-PR = "r1"
+PR = "r2"
inherit gnome
diff --git a/recipes/pam/libpam_1.0.2.bb b/recipes/pam/libpam_1.0.2.bb
index 17d8f3028f..0151a4691d 100644
--- a/recipes/pam/libpam_1.0.2.bb
+++ b/recipes/pam/libpam_1.0.2.bb
@@ -12,7 +12,7 @@ LICENSE = "GPLv2"
DEPENDS = "flex flex-native"
-PR = "r3"
+PR = "r4"
# The project is actually called Linux-PAM but that gives
# a bad OE package name because of the upper case characters
@@ -23,9 +23,7 @@ S = "${WORKDIR}/${p}"
SRC_URI = "${KERNELORG_MIRROR}/pub/linux/libs/pam/library/${p}.tar.bz2 \
file://pam-nodocs.patch;patch=1 "
-SRC_URI_append_linux-uclibc = "file://pam-disable-nis-on-uclibc.patch;patch=1"
-SRC_URI_append_linux-uclibceabi = "file://pam-disable-nis-on-uclibc.patch;patch=1"
-SRC_URI_append_linux-uclibcspe = "file://pam-disable-nis-on-uclibc.patch;patch=1"
+SRC_URI_append_libc-uclibc = "file://pam-disable-nis-on-uclibc.patch;patch=1"
inherit autotools
@@ -34,11 +32,12 @@ LEAD_SONAME = "libpam.so.*"
# maintain the pam default layout
EXTRA_OECONF += " --includedir=${includedir}/security"
-PACKAGES_DYNAMIC += " pam-plugin-*"
+PACKAGES_DYNAMIC += " libpam-meta pam-plugin-*"
+
python populate_packages_prepend () {
import os.path
- pam_libdir = bb.data.expand('${libdir}/security', d)
+ pam_libdir = bb.data.expand('${libdir}/security', d)
pam_libdirdebug = bb.data.expand('${libdir}/security/.debug', d)
pam_filterdir = bb.data.expand('${libdir}/security/pam_filter', d)
do_split_packages(d, pam_libdir, '^pam(.*)\.so$', 'pam-plugin%s', 'PAM plugin for %s', extra_depends='')
@@ -46,6 +45,21 @@ python populate_packages_prepend () {
if os.path.exists(pam_libdirdebug):
do_split_packages(d, pam_libdirdebug, '^pam(.*)\.so$', 'pam-plugin%s-dbg', 'PAM plugin for %s debugging symbols', extra_depends='')
do_split_packages(d, pam_filterdir, '^(.*)$', 'pam-filter-%s', 'PAM filter for %s', extra_depends='')
+
+ pn = bb.data.getVar('PN', d, 1)
+ metapkg = pn + '-meta'
+ bb.data.setVar('ALLOW_EMPTY_' + metapkg, "1", d)
+ bb.data.setVar('FILES_' + metapkg, "", d)
+ blacklist = [ pn + '-locale', pn + '-dev', pn + '-dbg', pn + '-doc' ]
+ metapkg_rdepends = []
+ packages = bb.data.getVar('PACKAGES', d, 1).split()
+ for pkg in packages[1:]:
+ if not pkg in blacklist and not pkg in metapkg_rdepends and not pkg.endswith('-dev') and not pkg.count('locale') and pkg.count('plugin'):
+ metapkg_rdepends.append(pkg)
+ bb.data.setVar('RDEPENDS_' + metapkg, ' '.join(metapkg_rdepends), d)
+ bb.data.setVar('DESCRIPTION_' + metapkg, pn + ' meta package', d)
+ packages.append(metapkg)
+ bb.data.setVar('PACKAGES', ' '.join(packages), d)
}
diff --git a/recipes/php/php-5.2.6/string.c.patch b/recipes/php/php-5.2.6/string.c.patch
new file mode 100644
index 0000000000..a24b887ac2
--- /dev/null
+++ b/recipes/php/php-5.2.6/string.c.patch
@@ -0,0 +1,21 @@
+Index: php-5.2.6/ext/standard/string.c
+===================================================================
+--- php-5.2.6.orig/ext/standard/string.c
++++ php-5.2.6/ext/standard/string.c
+@@ -592,14 +592,12 @@ PHP_FUNCTION(nl_langinfo)
+ #endif
+ #ifdef DECIMAL_POINT
+ case DECIMAL_POINT:
+-#endif
+-#ifdef RADIXCHAR
++#elif RADIXCHAR
+ case RADIXCHAR:
+ #endif
+ #ifdef THOUSANDS_SEP
+ case THOUSANDS_SEP:
+-#endif
+-#ifdef THOUSEP
++#elif THOUSEP
+ case THOUSEP:
+ #endif
+ #ifdef GROUPING
diff --git a/recipes/php/php.inc b/recipes/php/php.inc
index e9d49a3269..0f9a42077a 100644
--- a/recipes/php/php.inc
+++ b/recipes/php/php.inc
@@ -10,7 +10,7 @@ S = "${WORKDIR}/php-${PV}"
inherit autotools
-CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED"
+CFLAGS += " -DPTYS_ARE_GETPT -DPTYS_ARE_SEARCHED -D_GNU_SOURCE"
acpaths = ""
diff --git a/recipes/php/php_5.2.6.bb b/recipes/php/php_5.2.6.bb
index c6cb00fa0f..38e86568d8 100644
--- a/recipes/php/php_5.2.6.bb
+++ b/recipes/php/php_5.2.6.bb
@@ -2,9 +2,10 @@ require php.inc
DEPENDS = "zlib libxml2 virtual/libiconv php-native lemon-native"
-PR = "r5"
+PR = "r6"
-SRC_URI += "file://pear-makefile.patch;patch=1 "
+SRC_URI += "file://pear-makefile.patch;patch=1 \
+ file://string.c.patch;patch=1 "
export THREADS="pthread"
export LIBS=" -lpthread "
diff --git a/recipes/poppler/poppler_0.12.1.bb b/recipes/poppler/poppler_0.12.1.bb
new file mode 100644
index 0000000000..b94b1cc6e0
--- /dev/null
+++ b/recipes/poppler/poppler_0.12.1.bb
@@ -0,0 +1,7 @@
+require poppler.inc
+
+DEFAULT_PREFERENCE = "-1"
+DEFAULT_PREFERENCE_angstrom = "1"
+
+EXTRA_OECONF_append = " --disable-abiword-output "
+
diff --git a/recipes/pulseaudio/libcanberra_0.17.bb b/recipes/pulseaudio/libcanberra_0.17.bb
index 30b645ddd9..a0b63069f1 100644
--- a/recipes/pulseaudio/libcanberra_0.17.bb
+++ b/recipes/pulseaudio/libcanberra_0.17.bb
@@ -1,11 +1,11 @@
DESCRIPTION = "Libcanberra is an implementation of the XDG Sound Theme and Name \
Specifications, for generating event sounds on free desktops."
LICENSE = "LGPL"
-DEPENDS = "alsa-lib gstreamer gtk+ libvorbis pulseaudio"
+DEPENDS = "alsa-lib gstreamer gtk+ libtool libvorbis"
SECTION = "libs/multimedia"
AUTHOR = "Lennart Poettering"
HOMEPAGE = "http://0pointer.de/lennart/projects/libcanberra"
-PR = "r1"
+PR = "r2"
inherit autotools_stage vala
AUTOTOOLS_STAGE_PKGCONFIG = "1"
diff --git a/recipes/ralink/rt3070_2.1.1.0.bb b/recipes/ralink/rt3070_2.1.1.0.bb
index d7709fa91d..23b0de7d32 100644
--- a/recipes/ralink/rt3070_2.1.1.0.bb
+++ b/recipes/ralink/rt3070_2.1.1.0.bb
@@ -1,18 +1,22 @@
DESCRIPTION = "Ralink 3070"
+SECTION = "kernel/modules"
LICENSE = "GPLv2"
+PR = "r1"
inherit module
SRC_URI = "http://www.ralinktech.com.tw/data/drivers/2009_0525_RT3070_Linux_STA_v${PV}.tar.bz2 \
file://makefile.patch;patch=1 \
- file://config.patch;patch=1 \
-"
+ file://config.patch;patch=1 \
+ "
EXTRA_OEMAKE = "LINUX_SRC=${STAGING_KERNEL_DIR}"
S = "${WORKDIR}/2009_0525_RT3070_Linux_STA_v${PV}"
do_install() {
- mkdir -p ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless
- cp ${S}/os/linux/rt3070sta.ko ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless
+ install -d ${D}/lib/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless
+ install -m 0644 ${S}/os/linux/rt3070sta.ko ${D}${base_libdir}/modules/${KERNEL_VERSION}/kernel/drivers/net/wireless
+ install -d ${D}/etc/Wireless/RT2870STA
+ install -m 0644 ${S}/RT2870STA.dat ${D}/etc/Wireless/RT2870STA
}
diff --git a/recipes/samba/samba_3.3.9.bb b/recipes/samba/samba_3.3.9.bb
new file mode 100644
index 0000000000..87a7c5e7f7
--- /dev/null
+++ b/recipes/samba/samba_3.3.9.bb
@@ -0,0 +1,35 @@
+require samba.inc
+require samba-basic.inc
+LICENSE = "GPLv3"
+
+# 3.3.0 and newer will upgrade your tdb database to a
+# new version that you can not downgrade to use with older
+# releases. More testing will happen before this is removed
+# should there be further issues. Appears to work though :)
+DEFAULT_PREFERENCE = "-1"
+
+SRC_URI += "file://configure-3.3.0.patch;patch=1 \
+ file://config-h.patch;patch=1 \
+ file://mtab.patch;patch=1 \
+ file://tdbheaderfix.patch;patch=1 "
+
+PR = "r3"
+
+EXTRA_OECONF += "\
+ SMB_BUILD_CC_NEGATIVE_ENUM_VALUES=yes \
+ samba_cv_CC_NEGATIVE_ENUM_VALUES=yes \
+ linux_getgrouplist_ok=no \
+ samba_cv_HAVE_BROKEN_GETGROUPS=no \
+ samba_cv_HAVE_FTRUNCATE_EXTEND=yes \
+ samba_cv_have_setresuid=yes \
+ samba_cv_have_setresgid=yes \
+ samba_cv_HAVE_WRFILE_KEYTAB=yes \
+ "
+
+do_configure() {
+ oe_runconf
+}
+
+do_compile () {
+ base_do_compile
+}
diff --git a/recipes/serial-utils/pty-forward-native.bb b/recipes/serial-utils/pty-forward-native.bb
index 54ff591928..c613276645 100644
--- a/recipes/serial-utils/pty-forward-native.bb
+++ b/recipes/serial-utils/pty-forward-native.bb
@@ -2,11 +2,11 @@ DESCRIPTION = "Receive a forwarded serial from serial-forward and provide a PTY"
AUTHOR = "Holger 'Zecke' Freyther"
LICENSE = "GPL"
SECTION = "console/network"
-PV = "1.0.0+svnr${SRCREV}""
+PV = "1.0.1+gitr${SRCREV}"
PR = "r0"
-SRC_URI = "svn://svn.openmoko.org/developers/zecke/;module=serial_forward;proto=http"
-S = "${WORKDIR}/serial_forward"
+SRC_URI = "${FREESMARTPHONE_GIT}/cornucopia.git;protocol=git"
+S = "${WORKDIR}/git/tools/serial_forward"
inherit native
diff --git a/recipes/serial-utils/serial-forward.bb b/recipes/serial-utils/serial-forward.bb
index c3b879a0ee..f5c1b1721d 100644
--- a/recipes/serial-utils/serial-forward.bb
+++ b/recipes/serial-utils/serial-forward.bb
@@ -2,11 +2,11 @@ DESCRIPTION = "Forward a serial using TCP/IP"
AUTHOR = "Holger 'Zecke' Freyther'"
LICENSE = "GPL"
SECTION = "console/devel"
-PV = "1.0.0+svnr${SRCREV}"
+PV = "1.0.1+gitr${SRCREV}"
PR = "r0"
-SRC_URI = "svn://svn.openmoko.org/developers/zecke/;module=serial_forward;proto=http"
-S = "${WORKDIR}/serial_forward"
+SRC_URI = "${FREESMARTPHONE_GIT}/cornucopia.git/;protocol=git"
+S = "${WORKDIR}/git/tools/serial_forward"
do_compile() {
cd ${S}
diff --git a/recipes/tasks/task-cli-tools.bb b/recipes/tasks/task-cli-tools.bb
index 0110a8d9b0..9c5e8615e0 100644
--- a/recipes/tasks/task-cli-tools.bb
+++ b/recipes/tasks/task-cli-tools.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "A set of command line tools useful for debugging"
SECTION = "console"
LICENSE = "MIT"
PV = "1.0"
-PR = "r8"
+PR = "r9"
inherit task
@@ -18,6 +18,7 @@ RDEPENDS_${PN} = "\
nfs-utils-client \
powertop \
screen \
+ serial-forward \
socat \
sysstat \
tcpdump \
@@ -27,7 +28,7 @@ RDEPENDS_${PN}-debug = "\
evtest \
devmem2 \
i2c-tools \
-# ltrace \
+ ltrace \
procps \
pxaregs \
s3c24xx-gpio \
diff --git a/recipes/tasks/task-fso2-compliance.bb b/recipes/tasks/task-fso2-compliance.bb
index dbc298d670..0ab234dc5d 100644
--- a/recipes/tasks/task-fso2-compliance.bb
+++ b/recipes/tasks/task-fso2-compliance.bb
@@ -13,8 +13,10 @@ RDEPENDS_${PN} = "\
libfsobasics \
libfsotransport \
libfsoframework \
+ libfsoresource \
\
fsodeviced \
+ fsogsmd \
fsonetworkd \
fsotimed \
fsousaged \
@@ -24,7 +26,7 @@ RDEPENDS_${PN} = "\
fso-gpsd \
# fso-monitord \
connman \
- connman-scripts \
+# connman-scripts \
connman-plugin-bluetooth \
# connman-plugin-dhclient \
# connman-plugin-dnsproxy \
diff --git a/recipes/tasks/task-gmae.bb b/recipes/tasks/task-gmae.bb
index 73710f8ffa..1638c98e33 100644
--- a/recipes/tasks/task-gmae.bb
+++ b/recipes/tasks/task-gmae.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "GNOME Mobile & Embedded Initiative"
-PR = "r1"
+PR = "r2"
inherit task
@@ -28,7 +28,7 @@ RDEPENDS_gmae-user = " \
avahi-utils \
gstreamer \
matchbox-wm matchbox-panel \
- gconf-dbus \
+ gconf \
gnome-vfs \
"
diff --git a/recipes/tasks/task-perl-module-all.bb b/recipes/tasks/task-perl-module-all.bb
index 0b39941348..432eb2dfcc 100644
--- a/recipes/tasks/task-perl-module-all.bb
+++ b/recipes/tasks/task-perl-module-all.bb
@@ -2,9 +2,9 @@ DESCRIPTION= "All perl modules"
inherit task
-PR = "r2"
+PR = "r3"
-RDEPENDS_${PN} = " \
+RRECOMMENDS_${PN} = " \
perl-module-abbrev \
perl-module-anydbm-file \
perl-module-assert \
diff --git a/recipes/tasks/task-sdk-extra.bb b/recipes/tasks/task-sdk-extra.bb
index 98234cea1c..db6a2fb3f8 100644
--- a/recipes/tasks/task-sdk-extra.bb
+++ b/recipes/tasks/task-sdk-extra.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "SDK packages"
-PR = "r10"
+PR = "r11"
LICENSE = "MIT"
ALLOW_EMPTY = "1"
@@ -11,7 +11,7 @@ PACKAGES = "\
RDEPENDS_task-sdk-x11 = "\
atk-dev \
cairo-dev \
- gconf-dbus-dev \
+ gconf-dev \
gtk+-dev \
gtk-engines-dev \
libsvg-cairo-dev \
@@ -50,4 +50,4 @@ RDEPENDS_task-sdk-gpe = "\
libgpewidget-dev \
libhandoff-dev \
libxi-dev \
- gconf-dbus-dev"
+ gconf-dev"
diff --git a/recipes/ti/ti-dmai/touchbook-support.patch b/recipes/ti/ti-dmai/touchbook-support.patch
index a63bb17e7a..da64c5b0d1 100644
--- a/recipes/ti/ti-dmai/touchbook-support.patch
+++ b/recipes/ti/ti-dmai/touchbook-support.patch
@@ -1,10 +1,11 @@
--- /tmp/Cpu.c 2009-09-25 12:41:08.000000000 +0200
+++ davinci_multimedia_application_interface/dmai/packages/ti/sdo/dmai/linux/Cpu.c 2009-09-25 12:41:36.000000000 +0200
-@@ -107,6 +107,7 @@
+@@ -107,6 +107,8 @@
}
else if ((strcmp(valBuf,"OMAP3EVM Board") == 0) ||
(strcmp(valBuf, "OMAP3 EVM") == 0) ||
+ (strcmp(valBuf, "OMAP3 Touch Book") == 0) ||
++ (strcmp(valBuf, "IGEP v2.x board") == 0) ||
(strcmp(valBuf, "OMAP3 Beagle Board") == 0)) {
*device = Cpu_Device_OMAP3530;
}
diff --git a/recipes/ti/ti-dmai_svn.bb b/recipes/ti/ti-dmai_svn.bb
index b050034d5d..a204120fc2 100644
--- a/recipes/ti/ti-dmai_svn.bb
+++ b/recipes/ti/ti-dmai_svn.bb
@@ -4,7 +4,7 @@ require ti-paths.inc
inherit module-base
#This is a kernel module, don't set PR directly
-MACHINE_KERNEL_PR_append = "b"
+MACHINE_KERNEL_PR_append = "c"
# compile time dependencies
DEPENDS_omap3evm += "alsa-lib ti-codec-engine ti-xdctools-native ti-dspbios-native ti-cgt6x-native ti-cs1-omap3530 virtual/kernel ti-dsplink-module"
diff --git a/recipes/tinymail/libtinymail.inc b/recipes/tinymail/libtinymail.inc
index 29c3f4d1d1..7abb8a6df7 100644
--- a/recipes/tinymail/libtinymail.inc
+++ b/recipes/tinymail/libtinymail.inc
@@ -1,7 +1,7 @@
DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices"
SECTION = "x11/utils"
LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui"
EXTRA_OECONF=" --disable-gnome --with-platform=gpe --with-html-component=none"
diff --git a/recipes/tinymail/libtinymail_0.0.1.bb b/recipes/tinymail/libtinymail_0.0.1.bb
index 06f53d3799..77c20097f8 100644
--- a/recipes/tinymail/libtinymail_0.0.1.bb
+++ b/recipes/tinymail/libtinymail_0.0.1.bb
@@ -1,7 +1,8 @@
DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices"
SECTION = "x11/utils"
LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui"
+PR = "r1"
EXTRA_OECONF=" --disable-gnome --with-platform=gpe --with-html-component=none"
diff --git a/recipes/tinymail/libtinymail_svn.bb b/recipes/tinymail/libtinymail_svn.bb
index 7d396fe968..06cc447af5 100644
--- a/recipes/tinymail/libtinymail_svn.bb
+++ b/recipes/tinymail/libtinymail_svn.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "TinyMail is an attempt to create an E-mail framework for mobile devices"
SECTION = "x11/utils"
LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libgnomeui"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libgnomeui"
PV = "0.0.5+svnr${SRCREV}"
-PR = "r3"
+PR = "r4"
DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/tinymail/tmut_1.1.0.bb b/recipes/tinymail/tmut_1.1.0.bb
index d3f84f057a..69f69a401f 100644
--- a/recipes/tinymail/tmut_1.1.0.bb
+++ b/recipes/tinymail/tmut_1.1.0.bb
@@ -1,8 +1,8 @@
DESCRIPTION = "Tmut is a really small E-Mail client based on Tinymail"
SECTION = "x11/utils"
LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail"
-PR = "r0"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libtinymail"
+PR = "r1"
SRC_URI = "http://tinymail.org/files/tmut/releases/v1.1/v${PV}/${PN}-${PV}.tar.bz2"
diff --git a/recipes/tinymail/tmut_svn.bb b/recipes/tinymail/tmut_svn.bb
index abe7417898..11fcb0a1f0 100644
--- a/recipes/tinymail/tmut_svn.bb
+++ b/recipes/tinymail/tmut_svn.bb
@@ -1,9 +1,9 @@
DESCRIPTION = "Tmut is a really small E-Mail client based on Tinymail"
SECTION = "x11/utils"
LICENSE = "LGPL"
-DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf-dbus libtinymail"
+DEPENDS = "gtk+ glib-2.0 gnome-vfs gconf libtinymail"
PV = "0.0.0+svnr${SRCREV}"
-PR = "r2"
+PR = "r3"
DEFAULT_PREFERENCE = "-1"
diff --git a/recipes/totem/files/cflags.patch b/recipes/totem/files/cflags.patch
deleted file mode 100644
index a03247332f..0000000000
--- a/recipes/totem/files/cflags.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- totem-1.0.4/src/Makefile.am~cflags
-+++ totem-1.0.4/src/Makefile.am
-@@ -1,4 +1,4 @@
--noinst_PROGRAMS = bvw-test list_v4l test-parser disc-test metadata-test
-+#noinst_PROGRAMS = bvw-test list_v4l test-parser disc-test metadata-test
-
- if TOTEM_VANITY
- VANITY=vanity
-@@ -179,8 +179,10 @@
- list_v4l_SOURCES = list_v4l.c $(BACON_V4L_SELECTION)
- list_v4l_LDADD = $(GTK_LIBS)
-
-+test_parser_CFLAGS = $(TOTEM_PLPARSER_CFLAGS)
- test_parser_SOURCES = test-parser.c
- test_parser_LDADD = \
-+ $(TOTEM_PLPARSER_LIBS)
- $(EXTRA_GNOME_LIBS) \
- libtotem-plparser.la
-
-@@ -224,6 +226,8 @@
- totem-disc.h \
- totem-pl-parser.h
-
-+libtotem_plparser_la_CFLAGS = $(TOTEM_PLPARSER_CFLAGS)
-+
- libtotem_plparser_la_LDFLAGS = \
- -version-info $(PLPARSER_LT_VERSION) \
- -no-undefined \
diff --git a/recipes/totem/files/gtkonly.patch b/recipes/totem/files/gtkonly.patch
deleted file mode 100644
index 8a7fbd2a0b..0000000000
--- a/recipes/totem/files/gtkonly.patch
+++ /dev/null
@@ -1,38 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- totem-1.0.4/src/totem.c~gtkonly
-+++ totem-1.0.4/src/totem.c
-@@ -1667,8 +1667,10 @@
- totem_action_set_mrl_and_play (totem, mrl);
- g_free (mrl);
-
-+#ifndef HAVE_GTK_ONLY
- gnome_entry_append_history (GNOME_ENTRY (gentry),
- TRUE, uri);
-+#endif
- }
- }
-
-@@ -3593,7 +3595,9 @@
- /* Properties */
- totem->properties = bacon_video_widget_properties_new ();
-
-+#ifndef HAVE_GTK_ONLY
- totem_session_setup (totem, argv);
-+#endif
- totem_setup_recent (totem);
- totem_callback_connect (totem);
- totem_setup_window (totem);
-@@ -3617,7 +3621,9 @@
- /* Command-line handling */
- if (totem_options_process_late (totem, &argc, &argv) != FALSE)
- {
-+#ifndef HAVE_GTK_ONLY
- totem_session_restore (totem, argv);
-+#endif
- } else if (argc >= 1 && totem_action_open_files (totem, argv)) {
- totem_action_play_pause (totem);
- } else {
diff --git a/recipes/totem/files/include.patch b/recipes/totem/files/include.patch
deleted file mode 100644
index 6e99c4e21e..0000000000
--- a/recipes/totem/files/include.patch
+++ /dev/null
@@ -1,11 +0,0 @@
---- totem-0.99.15/src/video-utils.c 2004-07-03 16:54:31.000000000 -0700
-+++ totem-0.99.15.new/src/video-utils.c 2004-08-04 11:03:30.822669856 -0700
-@@ -4,7 +4,7 @@
- #include "video-utils.h"
-
- #include <glib/gi18n.h>
--#include <libintl.h>
-+/* #include <libintl.h> */
-
- #include <gdk/gdk.h>
- #include <gdk/gdkx.h>
diff --git a/recipes/totem/files/intl.patch b/recipes/totem/files/intl.patch
deleted file mode 100644
index 2a1a32cc2d..0000000000
--- a/recipes/totem/files/intl.patch
+++ /dev/null
@@ -1,33 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- totem-1.0.4/src/totem.c~intl
-+++ totem-1.0.4/src/totem.c
-@@ -35,6 +35,25 @@
- #include <gtk/gtk.h>
- #include <gdk/gdkkeysyms.h>
- #include <stdlib.h>
-+#ifdef ENABLE_NLS
-+# include <libintl.h>
-+# define _(String) dgettext (GETTEXT_PACKAGE, String)
-+# ifdef gettext_noop
-+# define N_(String) gettext_noop (String)
-+# else
-+# define N_(String) (String)
-+# endif
-+#else
-+/* Stubs that do something close enough. */
-+# define textdomain(String) (String)
-+# define gettext(String) (String)
-+# define dgettext(Domain,Message) (Message)
-+# define dcgettext(Domain,Message,Type) (Message)
-+# define ngettext(Singular, Plural, IsPlural) (Singular)
-+# define bindtextdomain(Domain,Directory) (Domain)
-+# define _(String) (String)
-+# define N_(String) (String)
-+#endif
- #endif /* !HAVE_GTK_ONLY */
-
- #include <string.h>
diff --git a/recipes/totem/files/nonautilus.patch b/recipes/totem/files/nonautilus.patch
deleted file mode 100644
index 3cfce7c9aa..0000000000
--- a/recipes/totem/files/nonautilus.patch
+++ /dev/null
@@ -1,16 +0,0 @@
-
-#
-# Patch managed by http://www.holgerschurig.de/patcher.html
-#
-
---- totem-1.0.4/configure.in~nonautilus
-+++ totem-1.0.4/configure.in
-@@ -144,7 +144,7 @@
- PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libgnomeui-2.0 >= 2.3.3 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 gnome-desktop-2.0 >= 2.1.5 $MM)
- HAVE_GNOME=yes
- else
-- PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 libnautilus-burn >= 2.9.0 $MM)
-+ PKG_CHECK_MODULES(EXTRA_GNOME, glib-2.0 >= 2.6.3 gtk+-2.0 >= 2.5.6 libglade-2.0 gnome-vfs-2.0 >= 2.1.6 gnome-vfs-module-2.0 >= 2.1.6 $MM)
- AC_DEFINE(USE_STABLE_LIBGNOMEUI, 1, [defined if we don't have GNOME])
- AC_DEFINE(HAVE_GTK_ONLY, 1, [defined if GNOME isn't used])
- HAVE_GNOME=no
diff --git a/recipes/totem/files/omf.patch b/recipes/totem/files/omf.patch
deleted file mode 100644
index a889db10ba..0000000000
--- a/recipes/totem/files/omf.patch
+++ /dev/null
@@ -1,13 +0,0 @@
---- totem-0.99.12/omf.make 2003-11-08 18:04:41.000000000 -0700
-+++ totem-0.99.12.new/omf.make 2004-06-30 09:39:58.765495480 -0700
-@@ -41,7 +41,9 @@
- install-data-hook-omf:
- $(mkinstalldirs) $(DESTDIR)$(omf_dest_dir)
- for file in $(omffile); do \
-- $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \
-+ if [ -f $$file.out ]; then \
-+ $(INSTALL_DATA) $$file.out $(DESTDIR)$(omf_dest_dir)/$$file; \
-+ fi; \
- done
- -scrollkeeper-update -o $(DESTDIR)$(omf_dest_dir)
-
diff --git a/recipes/totem/totem-2.24.2/gst-detect.diff b/recipes/totem/totem-2.24.2/gst-detect.diff
deleted file mode 100644
index 57c2a3cedf..0000000000
--- a/recipes/totem/totem-2.24.2/gst-detect.diff
+++ /dev/null
@@ -1,28 +0,0 @@
---- /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
-
diff --git a/recipes/totem/totem-2.28.1/gst-detect.diff b/recipes/totem/totem-2.28.1/gst-detect.diff
new file mode 100644
index 0000000000..6ac4455ad0
--- /dev/null
+++ b/recipes/totem/totem-2.28.1/gst-detect.diff
@@ -0,0 +1,46 @@
+--- /tmp/configure.in 2009-10-21 11:43:19.000000000 +0200
++++ totem-2.28.1/configure.in 2009-10-21 11:47:21.000000000 +0200
+@@ -110,10 +110,6 @@
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+- AC_MSG_ERROR([
+- Cannot find required GStreamer-0.10 tool 'gst-inspect-0.10'.
+- It should be part of gstreamer-0_10-utils. Please install it.
+- ])
+ fi
+
+ dnl Check for elements from gst-plugins-base
+@@ -124,10 +120,6 @@
+ 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.
+- ])
+ fi
+ done
+
+@@ -139,10 +131,6 @@
+ 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.
+- ])
+ fi
+ done
+
+@@ -570,10 +558,6 @@
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+- AC_MSG_ERROR([
+- Cannot find required GStreamer-0.10 plugin 'souphttpsrc'.
+- It should be part of gst-plugins-good. Please install it.
+- ])
+ fi
+ ;;
+ esac
diff --git a/recipes/totem/totem-pl-parser_2.23.3.bb b/recipes/totem/totem-pl-parser_2.23.3.bb
deleted file mode 100644
index 7f3cd861e9..0000000000
--- a/recipes/totem/totem-pl-parser_2.23.3.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-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/recipes/totem/totem-pl-parser_2.24.1.bb b/recipes/totem/totem-pl-parser_2.24.1.bb
deleted file mode 100644
index 7f3cd861e9..0000000000
--- a/recipes/totem/totem-pl-parser_2.24.1.bb
+++ /dev/null
@@ -1,15 +0,0 @@
-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/recipes/totem/totem-pl-parser_2.26.2.bb b/recipes/totem/totem-pl-parser_2.28.1.bb
index f9694b05d8..c59a2ed051 100644
--- a/recipes/totem/totem-pl-parser_2.26.2.bb
+++ b/recipes/totem/totem-pl-parser_2.28.1.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "Playlist parser for Totem, a GTK2 based media player"
HOMEPAGE = "http://www.gnome.org/projects/totem/"
LICENSE = "GPL"
-DEPENDS = "eds-dbus"
+DEPENDS = "gmime eds-dbus"
inherit gnome
diff --git a/recipes/totem/totem/gst-detect.diff b/recipes/totem/totem/gst-detect.diff
deleted file mode 100644
index 6d37515995..0000000000
--- a/recipes/totem/totem/gst-detect.diff
+++ /dev/null
@@ -1,37 +0,0 @@
---- /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/recipes/totem/totem_0.99.15.bb b/recipes/totem/totem_0.99.15.bb
deleted file mode 100644
index ed182b7d5a..0000000000
--- a/recipes/totem/totem_0.99.15.bb
+++ /dev/null
@@ -1,30 +0,0 @@
-SECTION = "x11/multimedia"
-# 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.hadess.net/totem.php3"
-LICENSE="GPL"
-
-SRC_URI="http://ftp.acc.umu.se/pub/GNOME/sources/totem/0.99/totem-${PV}.tar.gz \
- file://include.patch;patch=1 \
- file://omf.patch;patch=1"
-
-DEPENDS="gtk+ libglade gnome-vfs gconf libxine libgnomeui"
-RDEPENDS += " libgnomeui"
-
-inherit autotools
-
-EXTRA_OECONF="--disable-schemas-install --disable-nvtv --enable-gtk --disable-debug --disable-gstreamer --disable-mozilla"
-
-#SELECTED_OPTIMIZATION="-O0 -g"
-LDFLAGS_append = " -Wl,--export-dynamic"
-
-pkg_postinst_totem() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi;
-SOURCE=`gconftool-2 --get-default-source`
-GCONF_CONFIG_SOURCE=$SOURCE gconftool-2 --makefile-install-rule \
-/etc/gconf/schemas/totem.schemas > /dev/null
-}
diff --git a/recipes/totem/totem_1.0.4.bb b/recipes/totem/totem_1.0.4.bb
deleted file mode 100644
index 8694bcb8d3..0000000000
--- a/recipes/totem/totem_1.0.4.bb
+++ /dev/null
@@ -1,33 +0,0 @@
-SECTION = "x11/multimedia"
-# 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"
-
-SRC_URI="http://ftp.gnome.org/pub/GNOME/sources/totem/1.0/totem-${PV}.tar.gz \
- file://include.patch;patch=1 \
- file://omf.patch;patch=1 \
- file://nonautilus.patch;patch=1 \
- file://intl.patch;patch=1 \
- file://cflags.patch;patch=1 \
- file://gtkonly.patch;patch=1"
-
-DEPENDS="gtk+ libglade gnome-vfs gconf libxine libxml2"
-
-inherit autotools
-
-EXTRA_OECONF="--disable-schemas-install --disable-nvtv --enable-gtk --disable-debug --disable-gstreamer --disable-mozilla"
-
-#SELECTED_OPTIMIZATION="-O0 -g"
-LDFLAGS_append = " -Wl,--export-dynamic"
-
-pkg_postinst_totem() {
-#!/bin/sh
-if [ -n "$D" ]; then exit 1; fi;
-SOURCE=`gconftool-2 --get-default-source`
-GCONF_CONFIG_SOURCE=$SOURCE gconftool-2 --makefile-install-rule \
-/etc/gconf/schemas/totem.schemas > /dev/null
-}
diff --git a/recipes/totem/totem_2.23.4.bb b/recipes/totem/totem_2.23.4.bb
deleted file mode 100644
index f2e945fd87..0000000000
--- a/recipes/totem/totem_2.23.4.bb
+++ /dev/null
@@ -1,72 +0,0 @@
-# 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/recipes/totem/totem_2.24.2.bb b/recipes/totem/totem_2.28.1.bb
index a0de5705cf..35b077c025 100644
--- a/recipes/totem/totem_2.24.2.bb
+++ b/recipes/totem/totem_2.28.1.bb
@@ -6,7 +6,7 @@ DESCRIPTION = "A GTK2 based media player"
HOMEPAGE = "http://www.gnome.org/projects/totem/"
LICENSE = "GPL"
-DEPENDS = " totem-pl-parser gtk+ dbus bluez-libs libglade gconf libxml2 gst-ffmpeg gst-plugins-bad gst-plugins-base"
+DEPENDS = " libgdata 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 \
@@ -27,7 +27,7 @@ RRECOMMENDS_${PN} += "gst-plugin-playbin \
gst-plugin-ossaudio \
gst-plugin-pulse \
gst-plugin-autodetect \
- "
+ totem-plugin-youtube totem-plugin-thumbnail totem-plugin-dbus totem-plugin-screensaver"
inherit gnome
@@ -49,22 +49,25 @@ 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"
+PACKAGES_DYNAMIC += " totem-plugin-* "
+
+python populate_packages_prepend () {
+ totem_libdir = bb.data.expand('${libdir}/totem/plugins/', d)
+
+ do_split_packages(d, totem_libdir, '^(.*)', 'totem-plugin-%s', 'totem plugin for %s', allow_dirs=True, extra_depends='')
+}
+
+FILES_${PN} = "${bindir}/* ${sysconfdir} ${libdir}/lib*.so.* ${libexecdir} ${datadir}/icons ${datadir}/totem ${datadir}/applications \
+"
+
+PACKAGES =+ "totem-nautilus-extension totem-browser-plugin-dbg totem-browser-plugin"
+
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/"
+
+FILES_totem-nautilus-extension += "${libdir}/nautilus/extensions-2.0/*.so"
+
+
+
diff --git a/recipes/u-boot/files/beagleboard/fw_env.config b/recipes/u-boot/files/beagleboard/fw_env.config
new file mode 100644
index 0000000000..8fc96f7572
--- /dev/null
+++ b/recipes/u-boot/files/beagleboard/fw_env.config
@@ -0,0 +1,8 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundant
+# environment sector is assumed present.
+# Notice, that the "Number of sectors" is ignored on NOR.
+
+# MTD device name Device offset Env. size Flash sector size Number of sectors
+/dev/mtd2 0x0000 0x20000 0x40000
+
diff --git a/recipes/u-boot/files/fw_env.config b/recipes/u-boot/files/fw_env.config
new file mode 100644
index 0000000000..940308f28b
--- /dev/null
+++ b/recipes/u-boot/files/fw_env.config
@@ -0,0 +1,7 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name Device offset Env. size Flash sector size
+#/dev/mtd1 0x0000 0x4000 0x4000
+#/dev/mtd2 0x0000 0x4000 0x4000
diff --git a/recipes/u-boot/files/omap3-touchbook/fw_env.config b/recipes/u-boot/files/omap3-touchbook/fw_env.config
new file mode 100644
index 0000000000..a7bfec1ebb
--- /dev/null
+++ b/recipes/u-boot/files/omap3-touchbook/fw_env.config
@@ -0,0 +1,6 @@
+# Configuration file for fw_(printenv/saveenv) utility.
+# Up to two entries are valid, in this case the redundand
+# environment sector is assumed present.
+
+# MTD device name Device offset Env. size Flash sector size
+/dev/mtd2 0x0000 0x20000 0x20000
diff --git a/recipes/u-boot/files/rootfs.patch b/recipes/u-boot/files/rootfs.patch
new file mode 100644
index 0000000000..655c040500
--- /dev/null
+++ b/recipes/u-boot/files/rootfs.patch
@@ -0,0 +1,62 @@
+--- git/include/configs/omap3_overo.h-orig 2009-09-17 13:06:08.000000000 -0700
++++ git/include/configs/omap3_overo.h 2009-09-17 13:06:49.000000000 -0700
+@@ -158,20 +158,24 @@
+ "vram=12M\0" \
+ "dvimode=1024x768MR-16@60\0" \
+ "defaultdisplay=dvi\0" \
++ "mmcroot=/dev/mmcblk0p2 rw\0" \
++ "mmcrootfstype=ext3 rootwait\0" \
++ "nandroot=/dev/mtdblock4 rw\0" \
++ "nandrootfstype=jffs2\0" \
+ "mmcargs=setenv bootargs console=${console} " \
+ "vram=${vram} " \
+ "omapfb.mode=dvi:${dvimode} " \
+ "omapfb.debug=y " \
+ "omapdss.def_disp=${defaultdisplay} " \
+- "root=/dev/mmcblk0p2 rw " \
+- "rootfstype=ext3 rootwait\0" \
++ "root=${mmcroot} " \
++ "rootfstype=${mmcrootfstype}\0" \
+ "nandargs=setenv bootargs console=${console} " \
+ "vram=${vram} " \
+ "omapfb.mode=dvi:${dvimode} " \
+ "omapfb.debug=y " \
+ "omapdss.def_disp=${defaultdisplay} " \
+- "root=/dev/mtdblock4 rw " \
+- "rootfstype=jffs2\0" \
++ "root=${nandroot} " \
++ "rootfstype=${nandrootfstype}\0" \
+ "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source ${loadaddr}\0" \
+--- git/include/configs/omap3_beagle.h-orig 2009-09-17 14:48:55.000000000 -0700
++++ git/include/configs/omap3_beagle.h 2009-09-19 22:15:01.000000000 -0700
+@@ -167,20 +167,24 @@
+ "vram=12M\0" \
+ "dvimode=1024x768MR-16@60\0" \
+ "defaultdisplay=dvi\0" \
++ "mmcroot=/dev/mmcblk0p2 rw\0" \
++ "mmcrootfstype=ext3 rootwait\0" \
++ "nandroot=/dev/mtdblock4 rw\0" \
++ "nandrootfstype=jffs2\0" \
+ "mmcargs=setenv bootargs console=${console} " \
+ "vram=${vram} " \
+ "omapfb.mode=dvi:${dvimode} " \
+ "omapfb.debug=y " \
+ "omapdss.def_disp=${defaultdisplay} " \
+- "root=/dev/mmcblk0p2 rw " \
+- "rootfstype=ext3 rootwait\0" \
++ "root=${mmcroot} " \
++ "rootfstype=${mmcrootfstype}\0" \
+ "nandargs=setenv bootargs console=${console} " \
+ "vram=${vram} " \
+ "omapfb.mode=dvi:${dvimode} " \
+ "omapfb.debug=y " \
+ "omapdss.def_disp=${defaultdisplay} " \
+- "root=/dev/mtdblock4 rw " \
+- "rootfstype=jffs2\0" \
++ "root=${nandroot} " \
++ "rootfstype=${nandrootfstype}\0" \
+ "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
+ "bootscript=echo Running bootscript from mmc ...; " \
+ "source ${loadaddr}\0" \
diff --git a/recipes/u-boot/u-boot-git/600mhz.patch b/recipes/u-boot/u-boot-git/600mhz.patch
new file mode 100644
index 0000000000..65b1a439a6
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/600mhz.patch
@@ -0,0 +1,11 @@
+--- a/include/asm-arm/arch-omap3/clocks_omap3.h
++++ b/include/asm-arm/arch-omap3/clocks_omap3.h
+@@ -71,7 +71,7 @@
+ #define MPU_FSEL_13_ES1 0x03
+ #define MPU_M2_13_ES1 0x01
+
+-#define MPU_M_13_ES2 0x1F4
++#define MPU_M_13_ES2 0x258
+ #define MPU_N_13_ES2 0x0C
+ #define MPU_FSEL_13_ES2 0x03
+ #define MPU_M2_13_ES2 0x01
diff --git a/recipes/u-boot/u-boot-git/ai-logo.patch b/recipes/u-boot/u-boot-git/ai-logo.patch
new file mode 100644
index 0000000000..0a8087fc9c
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/ai-logo.patch
@@ -0,0 +1,1336 @@
+diff -Nur a/board/omap3/beagle/beagle.c b/board/omap3/beagle/beagle.c
+--- a/board/omap3/beagle/beagle.c 2009-04-09 02:05:04.000000000 -0700
++++ b/board/omap3/beagle/beagle.c 2009-04-14 14:40:45.000000000 -0700
+@@ -35,9 +35,147 @@
+ #include <asm/arch/sys_proto.h>
+ #include <asm/mach-types.h>
+ #include "beagle.h"
++#include "logo.h"
++
++#define LOGO_SCREEN_WIDTH 1024
++#define LOGO_SCREEN_HEIGHT 600
++#define LOGO_FILL_COLOUR 0x0
+
+ static int beagle_revision_c;
+
++void dss_init(void)
++{
++ unsigned int i, k=0;
++ unsigned char pixel[3];
++ int offset = 0;
++
++ /* Fill up to the logo */
++ for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) {
++ *((unsigned short *)(0x80500000 + i)) = LOGO_FILL_COLOUR;
++ }
++ offset += i;
++
++ /* Paint the image data */
++ for (i = 0; i < height; i++) {
++ for (k = 0; k < LOGO_SCREEN_WIDTH; k++) {
++ if(k < (LOGO_SCREEN_WIDTH / 2 - width / 2) || k >= (LOGO_SCREEN_WIDTH / 2 + width / 2))
++ *((unsigned short *)(0x80500000 + offset + 2*k)) = LOGO_FILL_COLOUR;
++ else {
++ HEADER_PIXEL(header_data, pixel);
++ *((unsigned short *)(0x80500000 + offset + 2*k)) =
++ ((((pixel[0])&0xf8) << 8) |
++ (((pixel[1])&0xfc) << 3) |
++ (((pixel[2])&0xf8) >> 3));
++ }
++ }
++
++ offset += 2 * LOGO_SCREEN_WIDTH;
++ }
++
++ /* Fill the rest */
++ for (i = 0; i < 2 * (LOGO_SCREEN_WIDTH * ((LOGO_SCREEN_HEIGHT/2) - (height/2))); i += 2) {
++ *((unsigned short *)(0x80500000 + offset + i)) = LOGO_FILL_COLOUR;
++ }
++
++ *((uint *) 0x48310034) = 0xfefffedf;
++ *((uint *) 0x48310094) = 0x01000120;
++ *((uint *) 0x48004D44) = 0x0001b00c;
++ *((uint *) 0x48004E40) = 0x00001002;
++ *((uint *) 0x48004D00) = 0x00370037;
++
++ *((uint *) 0x48050C00) = 0x00000002;
++ *((uint *) 0x48050C04) = 0x0000001B;
++ *((uint *) 0x48050C08) = 0x00000040;
++ *((uint *) 0x48050C0C) = 0x00000000;
++ *((uint *) 0x48050C10) = 0x00000000;
++ *((uint *) 0x48050C14) = 0x00008000;
++ *((uint *) 0x48050C18) = 0x00000000;
++ *((uint *) 0x48050C1C) = 0x00008359;
++ *((uint *) 0x48050C20) = 0x0000020C;
++ *((uint *) 0x48050C24) = 0x00000000;
++ *((uint *) 0x48050C28) = 0x043F2631;
++ *((uint *) 0x48050C2C) = 0x00000024;
++ *((uint *) 0x48050C30) = 0x00000130;
++ *((uint *) 0x48050C34) = 0x00000198;
++ *((uint *) 0x48050C38) = 0x000001C0;
++ *((uint *) 0x48050C3C) = 0x0000006A;
++ *((uint *) 0x48050C40) = 0x0000005C;
++ *((uint *) 0x48050C44) = 0x00000000;
++ *((uint *) 0x48050C48) = 0x00000001;
++ *((uint *) 0x48050C4C) = 0x0000003F;
++ *((uint *) 0x48050C50) = 0x21F07C1F;
++ *((uint *) 0x48050C54) = 0x00000000;
++ *((uint *) 0x48050C58) = 0x00000015;
++ *((uint *) 0x48050C5C) = 0x00001400;
++ *((uint *) 0x48050C60) = 0x00000000;
++ *((uint *) 0x48050C64) = 0x069300F4;
++ *((uint *) 0x48050C68) = 0x0016020C;
++ *((uint *) 0x48050C6C) = 0x00060107;
++ *((uint *) 0x48050C70) = 0x008D034E;
++ *((uint *) 0x48050C74) = 0x000F0359;
++ *((uint *) 0x48050C78) = 0x01A00000;
++ *((uint *) 0x48050C7C) = 0x020501A0;
++ *((uint *) 0x48050C80) = 0x01AC0024;
++ *((uint *) 0x48050C84) = 0x020D01AC;
++ *((uint *) 0x48050C88) = 0x00000006;
++ *((uint *) 0x48050C8C) = 0x00000000;
++ *((uint *) 0x48050C90) = 0x03480079;
++ *((uint *) 0x48050C94) = 0x02040024;
++ *((uint *) 0x48050C98) = 0x00000000;
++ *((uint *) 0x48050C9C) = 0x00000000;
++ *((uint *) 0x48050CA0) = 0x0001008A;
++ *((uint *) 0x48050CA4) = 0x01AC0106;
++ *((uint *) 0x48050CA8) = 0x01060006;
++ *((uint *) 0x48050CAC) = 0x00000000;
++ *((uint *) 0x48050CB0) = 0x00140001;
++ *((uint *) 0x48050CB4) = 0x00010001;
++ *((uint *) 0x48050CB8) = 0x00FF0000;
++ *((uint *) 0x48050CBC) = 0x00000000;
++ *((uint *) 0x48050CC0) = 0x00000000;
++ *((uint *) 0x48050CC4) = 0x0000000D;
++ *((uint *) 0x48050CC8) = 0x00000000;
++ *((uint *) 0x48050010) = 0x00000001;
++ *((uint *) 0x48050040) = 0x00000078;
++ *((uint *) 0x48050044) = 0x00000000;
++ *((uint *) 0x48050048) = 0x00000000;
++ *((uint *) 0x48050050) = 0x00000000;
++ *((uint *) 0x48050058) = 0x00000000;
++ *((uint *) 0x48050410) = 0x00002015;
++ *((uint *) 0x48050414) = 0x00000001;
++ *((uint *) 0x48050444) = 0x00000004;
++ *((uint *) 0x4805044c) = 0xFFFFFFFF;
++ *((uint *) 0x48050450) = 0x00000000;
++ *((uint *) 0x48050454) = 0x00000000;
++ *((uint *) 0x48050458) = 0x00000000;
++ *((uint *) 0x48050464) = 0x02600202;
++ *((uint *) 0x48050468) = 0x00700200;
++ *((uint *) 0x4805046c) = 0x00000000;
++ *((uint *) 0x48050470) = 0x00010007;
++ *((uint *) 0x48050478) = 0x00ef027f;
++ *((uint *) 0x4805047c) = 0x02ff03ff;
++ *((uint *) 0x48050480) = 0x80500000;
++ *((uint *) 0x48050484) = 0x80500000;
++ *((uint *) 0x48050488) = 0x00000000;
++ *((uint *) 0x4805048c) = 0x02ff03ff;
++ *((uint *) 0x480504a0) = 0x0000008d;
++ *((uint *) 0x480504a4) = 0x03fc03bc;
++ *((uint *) 0x480504a8) = 0x00000400;
++ *((uint *) 0x480504ac) = 0x00000001;
++ *((uint *) 0x480504b0) = 0x00000001;
++ *((uint *) 0x480504b4) = 0x00000000;
++ *((uint *) 0x480504b8) = 0x807ff000;
++ udelay(1000);
++ *((uint *) 0x48050440) = 0x0001836b;
++ udelay(1000);
++ *((uint *) 0x48050440) = 0x0001836b;
++ udelay(1000);
++ *((uint *) 0x48050440) = 0x0001836b;
++ udelay(1000);
++
++ /* Turn on GPT9 PWM */
++ *((uint *) 0x49040024) = 0x80;
++}
++
+ /*
+ * Routine: board_init
+ * Description: Early hardware init.
+@@ -118,6 +252,9 @@
+
+ dieid_num_r();
+
++ /* Touch Book logo */
++ dss_init();
++
+ return 0;
+ }
+
+diff -Nur a/board/omap3/beagle/logo.h b/board/omap3/beagle/logo.h
+--- a/board/omap3/beagle/logo.h 1969-12-31 16:00:00.000000000 -0800
++++ b/board/omap3/beagle/logo.h 2009-04-14 14:10:52.000000000 -0700
+@@ -0,0 +1,1171 @@
++/* GIMP header image file format (RGB): /Documents/Desktop/u-boot-black.h */
++
++static unsigned int width = 136;
++static unsigned int height = 136;
++
++/* Call this macro repeatedly. After each use, the pixel data can be extracted */
++
++#define HEADER_PIXEL(data,pixel) {\
++ pixel[0] = (((data[0] - 33) << 2) | ((data[1] - 33) >> 4)); \
++ pixel[1] = ((((data[1] - 33) & 0xF) << 4) | ((data[2] - 33) >> 2)); \
++ pixel[2] = ((((data[2] - 33) & 0x3) << 6) | ((data[3] - 33))); \
++ data += 4; \
++}
++static char *header_data =
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?7VB9F:+3YO$A````````````"
++ "````````O,;WB)'#1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?"
++ "B)'\"````````````````````````````````````````````````Y?$@:W2E%2%2"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!%2%2>H.S````````````````````````````````````"
++ "````````````````````````````YO(A1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKO,;W````````"
++ "````````````````````````````````````````````````````````````````"
++ "````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!+SEJY?$@````````````````````````````````````````````"
++ "````````````````````````````````````````JK3D%B)3!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?YO$@````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````B9+#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!O<;W````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````;'6E!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "(RY?YO$A````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````JK3E!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "YO$@````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````B9+#!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````YO$A!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````+SIK"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````:W2E"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````:W2E"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1U.T5U.T5V.T5U"
++ ".T5V.T5V.T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````7F>8"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5U:W6E"
++ "F:+3JK3D````````````````````````````````````````````````T-L+JK/D"
++ ":W2E1E!`(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!(R]?7FB8JK3E````````````````````````````````````````````"
++ "````````````````````````````````````````````O<;W>H*S+SIK!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)24ER,O<;W````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````T-L,>H*S)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@B)'\"YO(A"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````J[3E.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "B)'\"````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````1E\"!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!)\"]@B)'\"````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````J[3E.T5V!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2EYO$A````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````FJ/3(RY?!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!B)'\"````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````1D]`!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ ".T5VT-L+````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````YO$A7VB9"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2YO$A````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````F:+3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````J[3E(RY?!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!+SIJ````````````````````````````````````````````````````"
++ "````````````````````````````````````````````O<;W%2%2!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2O<;W````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````YO$A.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````O<;W%B%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!+SEJYO$A````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````4ER,!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!1E!`YO$A````````````````````````````````````````"
++ "````````````````````````````````````O<;W%B)2!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````"
++ "````````````````````````````````````````````````````````````````"
++ ">H*S%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!1D]`YO$A````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````B)'\"!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,T=L,````````````````````````````"
++ "````````````````````````JK/D.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIKYO$@````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!1D]`B)'\"YO$@````````````````````````````T-L,>8*S+SIK!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ ",#IKYO$A````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````4UR,"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@.T5V.D5U.T5V"
++ ".T5U.T5U%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!%2%2T-L+````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````1D]`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "Y?$@)\"]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!7F>8````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?YO$A````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````7F>8!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````YO$A(R]?!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1D]`````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!T-L+````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````+SEJ!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!O<;W````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````(R]?!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!(R]@7F>8F:+3T=L,````````````O<;WB9+#4ER,%B)3!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````YO$AJ[3E:W2E:W2E"
++ ";'6F:W2EFJ+3T-L+````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(RY?B9+#````````````````````````"
++ "````````````````YO$@;'6E%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!B)'\"````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````F:+31E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!,#IK>H*SYO$@````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````Y?$@!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E"
++ "````````````````````````````````````````````````````````YO$A.T5V"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO(A````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````O<;W.T5V!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!%2%2>8*S````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````1E\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````````````````````````````````"
++ "````````````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!.T5U````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````B)'\""
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "1E!`Y?$@````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````>8*S!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````"
++ "````````````````````````````````````````````````````````````````"
++ "````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````4ER,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJYO$A````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````````"
++ "````````````````````````````````````````+SIK!!!!!!!!!!!!!!!!!!!!"
++ "!!!!JK3D````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````B9+#!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!.T5V````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````%2%2"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````T-H+!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!B)'\"````````````````````````````````````````````````"
++ "````````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!"
++ "+SIK````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````.D1U!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!%2%2YO(A````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````:W2E"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````T=L,!!!!!!!!!!!!!!!!.T5U````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!7F>8````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````+SIK!!!!!!!!!!!!"
++ "7F>8````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````;'6F!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!+SIJ````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````J[3E"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````7F>8!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````.T5V!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!O<;W````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````>8*S!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````+SIJ!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````O<;W"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3E!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````J[3E!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3D!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````J[3E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK/D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!JK/D````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK/D!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!JK/D````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````JK3D!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J[3E````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````JK3E!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!J[3E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````:W2E!!!!!!!!!!!!;'6E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````1E!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!7F>8````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````;'6F!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "B)'\"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;X````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````7FB8!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!1E!`````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````(RY?!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ ".T5U````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````.D1U!!!!!!!!!!!!"
++ ";'6F````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!+SIK````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````%2%2!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!YO$A````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````7F>8!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!>8*S"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````T=L,!!!!!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````B)'\"!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!7F>8````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````;'6F!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!B)'\"````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````1E\"!!!!!!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!(RY?````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````JK3E.D1U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!.T5UO<;W````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````%2%2!!!!!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!O<;W"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````JK3E"
++ "1E!`%2%2!!!!!!!!!!!!!!!!!!!!!!!!%2%24UR,JK3D````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````F:+3!!!!!!!!!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````O<?XF:+3;'6E:W2EJ[3EO<;W"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````1D]`!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)2"
++ "YO$A````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````T-L+!!!!!!!!!!!!!!!!!!!!!!!!"
++ ";'6E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6F````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````4UR,!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "%B%2YO(A````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````T=L,!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!;'6E````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "4EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!:W2E````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!T-H+````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ ":W2E````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.T5V````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````+SIJ"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D5U````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!>8*S````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "%B)2````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%B)3O,;W````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````JK3E!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+2````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!(RY?YO$@````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````T-L+%B)3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!.D1U````````````````````````````````````````````````````````"
++ "````````````````````````````````````JK/D!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````YO$A+SIK!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F:+3````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````.T5U!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!4EN,````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!%2%2YO$@````````````````````````````````````````````````"
++ "````````````````````````````````>8*S!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4EN,"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````4EN,!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK````````````````"
++ "````````````````````````````````````````````````````````````JK3E"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!4UR,````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "YO$@+SIJ!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!.T5UYO$A````````````````````````````````````````"
++ "````````````````````````F:+2%2%2!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!+SIKYO(A````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````YO$@+SIK!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJO<;W````"
++ "````````````````````````````````````````````````````;'6E!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)\"]@O<;W````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````JK/D%B)3"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!4ER,T=L,````````````````````````````"
++ "````````````B9+#(R]@!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!%2%2>8*S````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````;'6F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!1E!`>H*SJK/DT-L+````````JK3EF:+37F>8(R]?!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.D1UT-L+````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````O<;W+SIJ!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!%B)2:W2EYO$A````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````Y?$@:W2E!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "(R]?B)'\"````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````YO$@:W2E%B)2!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?>8*SYO$@````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````````````````````````````````````````````YO$@;'6E%2%2"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!%2%24UR,JK/D````````````````````````````````````"
++ "````````````````````````````````````````````````````````````````"
++ "````````````F:+34EN,!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!(R]?"
++ "4EN,F:+3YO(A````````````````````````````````````````````````````"
++ "````````````````````````````YO(AF:+34ER,%B)2!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIJ4ER,>8*SJK/DT=L,"
++ "````````````````````````````````````````T-L+JK/D>8*S4ER,+SEJ!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!+SIK.T5U.D1U.T5V.T5U(R]?"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"
++ "";
diff --git a/recipes/u-boot/u-boot-git/mmcinit.patch b/recipes/u-boot/u-boot-git/mmcinit.patch
new file mode 100644
index 0000000000..8aee768e54
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/mmcinit.patch
@@ -0,0 +1,20 @@
+--- a/common/cmd_mmc.c 2009-09-02 23:02:48.000000000 -0700
++++ b/common/cmd_mmc.c 2009-09-02 23:01:09.000000000 -0700
+@@ -92,6 +92,17 @@
+ "init [dev] - init MMC sub system\n"
+ "mmc device [dev] - show or set current device\n"
+ );
++int do_mmcinit (cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
++{
++ char *argv2[] = {"mmc", "init"};
++ return do_mmc (cmdtp, flag, 2, argv2);
++}
++
++U_BOOT_CMD(
++ mmcinit, 1, 0, do_mmcinit,
++ "mmcinit - init mmc card\n",
++ NULL
++);
+ #else /* !CONFIG_GENERIC_MMC */
+
+ static void print_mmcinfo(struct mmc *mmc)
diff --git a/recipes/u-boot/u-boot-git/new-pinmux.patch b/recipes/u-boot/u-boot-git/new-pinmux.patch
index 1c8fa16598..4e2be64d98 100644
--- a/recipes/u-boot/u-boot-git/new-pinmux.patch
+++ b/recipes/u-boot/u-boot-git/new-pinmux.patch
@@ -1,75 +1,73 @@
-diff --git a/board/omap3/beagle/beagle.h b/board/omap3/beagle/beagle.h
-index 00b15cb..36eae5c 100644
---- a/board/omap3/beagle/beagle.h
-+++ b/board/omap3/beagle/beagle.h
+--- git/board/ti/beagle/beagle.h-orig 2009-09-29 16:39:34.000000000 -0700
++++ git/board/ti/beagle/beagle.h 2009-09-29 16:40:03.000000000 -0700
@@ -201,16 +201,16 @@ const omap3_sysinfo sysinfo = {
- MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\
- MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\
+ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\
+ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\
/*Wireless LAN */\
-- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
-- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\
-- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\
-- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
-- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\
-- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\
-- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
-- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
-- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
-- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
-+ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
-+ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
-+ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
-+ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
-+ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
-+ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
-+ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
-+ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
-+ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
-+ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
+- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
+- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\
+- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\
+- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
+- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\
+- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\
+- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
+- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
+- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
+- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
/*Bluetooth*/\
- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\
- MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\
+ MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
@@ -229,13 +229,13 @@ const omap3_sysinfo sysinfo = {
- MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
- MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
- MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\
-- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
-- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\
-- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
-- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
-+ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\
-+ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
-+ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\
-+ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
- MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\
-- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
-- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
-+ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\
-+ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\
+ MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
+ MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
+ MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\
+- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
+- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
+- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\
++ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
++ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\
++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
+ MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\
+- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
+- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
++ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\
++ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\
/*Serial Interface*/\
- MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\
- MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\
+ MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\
+ MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\
@@ -255,8 +255,8 @@ const omap3_sysinfo sysinfo = {
- MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
- MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
- MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
-- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\
-- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\
-+ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\
-+ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\
- MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
- MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
- MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
+ MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
+ MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
+ MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
+- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\
+- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\
++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\
++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\
+ MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
+ MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
+ MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
@@ -374,9 +374,9 @@ const omap3_sysinfo sysinfo = {
- MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/
+ MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/
#define MUX_BEAGLE_C() \
-- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
-- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
-- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
-+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
-+ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
-+ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
- MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\
- MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\
- MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/
+- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
+- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
+- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
+ MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\
+ MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\
+ MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/
diff --git a/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch b/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch
new file mode 100644
index 0000000000..4e2be64d98
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/omap3-touchbook/new-pinmux.patch
@@ -0,0 +1,73 @@
+--- git/board/ti/beagle/beagle.h-orig 2009-09-29 16:39:34.000000000 -0700
++++ git/board/ti/beagle/beagle.h 2009-09-29 16:40:03.000000000 -0700
+@@ -201,16 +201,16 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\
+ MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\
+ /*Wireless LAN */\
+- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
+- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\
+- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\
+- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
+- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\
+- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\
+- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
+- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
+- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
+- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
++ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
++ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
++ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
++ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
+ /*Bluetooth*/\
+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\
+ MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
+@@ -229,13 +229,13 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
+ MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
+ MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\
+- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
+- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
+- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
++ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\
++ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
++ MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\
++ MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
+ MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\
+- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
+- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
++ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\
++ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\
+ /*Serial Interface*/\
+ MUX_VAL(CP(UART3_CTS_RCTX), (IEN | PTD | EN | M0)) /*UART3_CTS_RCTX*/\
+ MUX_VAL(CP(UART3_RTS_SD), (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\
+@@ -255,8 +255,8 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
+ MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
+ MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
+- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\
+- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\
++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\
++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\
+ MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
+ MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
+ MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
+@@ -374,9 +374,9 @@ const omap3_sysinfo sysinfo = {
+ MUX_VAL(CP(SDRC_CKE1), (IDIS | PTU | EN | M0)) /*sdrc_cke1*/
+
+ #define MUX_BEAGLE_C() \
+- MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
+- MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
+- MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
++ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M4)) /*GPIO_140*/\
++ MUX_VAL(CP(MCBSP3_DR), (IEN | PTD | DIS | M4)) /*GPIO_142*/\
++ MUX_VAL(CP(MCBSP3_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_141*/\
+ MUX_VAL(CP(UART2_CTS), (IEN | PTU | EN | M0)) /*UART2_CTS*/\
+ MUX_VAL(CP(UART2_RTS), (IDIS | PTD | DIS | M0)) /*UART2_RTS*/\
+ MUX_VAL(CP(UART2_TX), (IDIS | PTD | DIS | M0)) /*UART2_TX*/
diff --git a/recipes/u-boot/u-boot-git/power.patch b/recipes/u-boot/u-boot-git/power.patch
new file mode 100644
index 0000000000..f73d74e5f7
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/power.patch
@@ -0,0 +1,13 @@
+--- a/board/omap3/beagle/beagle.h 2009-09-06 10:28:33.000000000 -0700
++++ b/board/omap3/beagle/beagle.h 2009-09-06 10:29:16.000000000 -0700
+@@ -255,8 +255,8 @@
+ MUX_VAL(CP(HSUSB0_DATA7), (IEN | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
+ MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0)) /*I2C1_SCL*/\
+ MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0)) /*I2C1_SDA*/\
+- MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0)) /*I2C2_SCL*/\
+- MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0)) /*I2C2_SDA*/\
++ MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M4)) /*GPIO_168*/\
++ MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M4)) /*GPIO_183*/\
+ MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0)) /*I2C3_SCL*/\
+ MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0)) /*I2C3_SDA*/\
+ MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0)) /*I2C4_SCL*/\
diff --git a/recipes/u-boot/u-boot-git/spi3.patch b/recipes/u-boot/u-boot-git/spi3.patch
index 57f60b5daf..0b8bae9d11 100644
--- a/recipes/u-boot/u-boot-git/spi3.patch
+++ b/recipes/u-boot/u-boot-git/spi3.patch
@@ -1,20 +1,29 @@
--- a/board/omap3/beagle/beagle.h 2009-02-19 13:30:50.000000000 -0800
+++ b/board/omap3/beagle/beagle.h 2009-02-19 13:12:16.000000000 -0800
-@@ -205,12 +205,12 @@
+@@ -201,16 +201,16 @@
MUX_VAL(CP(MMC1_DAT6), (IEN | PTU | EN | M0)) /*MMC1_DAT6*/\
MUX_VAL(CP(MMC1_DAT7), (IEN | PTU | EN | M0)) /*MMC1_DAT7*/\
/*Wireless LAN */\
-- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M4)) /*GPIO_130*/\
-- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M4)) /*GPIO_131*/\
-- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M4)) /*GPIO_132*/\
+- MUX_VAL(CP(MMC2_CLK), (IEN | PTU | EN | M0)) /*MMC2_CLK*/\
+- MUX_VAL(CP(MMC2_CMD), (IEN | PTU | EN | M0)) /*MMC2_CMD*/\
+- MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M0)) /*MMC2_DAT0*/\
+- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M0)) /*MMC2_DAT1*/\
+- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M0)) /*MMC2_DAT2*/\
+- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M0)) /*MMC2_DAT3*/\
+- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT0*/\
+- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M1)) /*MMC2_DIR_DAT1*/\
+- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M1)) /*MMC2_DIR_CMD*/\
+- MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M1)) /*MMC2_CLKIN*/\
+ MUX_VAL(CP(MMC2_CLK), (IEN | PTU | DIS | M1)) /*MCSPI3_CLK*/\
+ MUX_VAL(CP(MMC2_CMD), (IEN | PTU | DIS | M1)) /*MCSPI3_SIMO*/\
+ MUX_VAL(CP(MMC2_DAT0), (IEN | PTU | EN | M1)) /*MCSPI3_SOMI*/\
- MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
-- MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M4)) /*GPIO_134*/\
-- MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M4)) /*GPIO_135*/\
++ MUX_VAL(CP(MMC2_DAT1), (IEN | PTU | EN | M4)) /*GPIO_133*/\
+ MUX_VAL(CP(MMC2_DAT2), (IEN | PTU | EN | M1)) /*MCSPI3_CS1*/\
+ MUX_VAL(CP(MMC2_DAT3), (IEN | PTU | EN | M1)) /*MCSPI3_CS0*/\
- MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
- MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
- MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
++ MUX_VAL(CP(MMC2_DAT4), (IEN | PTU | EN | M4)) /*GPIO_136*/\
++ MUX_VAL(CP(MMC2_DAT5), (IEN | PTU | EN | M4)) /*GPIO_137*/\
++ MUX_VAL(CP(MMC2_DAT6), (IEN | PTU | EN | M4)) /*GPIO_138*/\
++ MUX_VAL(CP(MMC2_DAT7), (IEN | PTU | EN | M4)) /*GPIO_139*/\
+ /*Bluetooth*/\
+ MUX_VAL(CP(MCBSP3_DX), (IEN | PTD | DIS | M1)) /*UART2_CTS*/\
+ MUX_VAL(CP(MCBSP3_DR), (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
diff --git a/recipes/u-boot/u-boot-git/spi4.patch b/recipes/u-boot/u-boot-git/spi4.patch
index 3b0781f999..bf35964a99 100644
--- a/recipes/u-boot/u-boot-git/spi4.patch
+++ b/recipes/u-boot/u-boot-git/spi4.patch
@@ -1,20 +1,20 @@
--- a/board/omap3/beagle/beagle.h 2009-02-19 13:30:50.000000000 -0800
+++ b/board/omap3/beagle/beagle.h 2009-02-19 13:12:16.000000000 -0800
-@@ -233,13 +233,13 @@
+@@ -229,13 +229,13 @@
MUX_VAL(CP(MCBSP4_DR), (IEN | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
MUX_VAL(CP(MCBSP4_DX), (IEN | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
MUX_VAL(CP(MCBSP4_FSX), (IEN | PTD | DIS | M1)) /*SSI1_WAKE*/\
-- MUX_VAL(CP(MCBSP1_CLKR), (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
-- MUX_VAL(CP(MCBSP1_FSR), (IDIS | PTU | EN | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | EN | M1)) /*MCSPI4_CLK*/\
+- MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
+- MUX_VAL(CP(MCBSP1_DX), (IEN | PTD | EN | M1)) /*MCSPI4_SIMO*/\
+- MUX_VAL(CP(MCBSP1_DR), (IEN | PTD | DIS | M1)) /*MCSPI4_SOMI*/\
+ MUX_VAL(CP(MCBSP1_CLKR), (IEN | PTU | DIS | M1)) /*MCSPI4_CLK*/\
+ MUX_VAL(CP(MCBSP1_FSR), (IEN | PTU | EN | M4)) /*GPIO_157*/\
-- MUX_VAL(CP(MCBSP1_DX), (IDIS | PTD | DIS | M4)) /*GPIO_158*/\
-- MUX_VAL(CP(MCBSP1_DR), (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
+ MUX_VAL(CP(MCBSP1_DX), (IEN | PTU | DIS | M1)) /*MCSPI4_SIMO*/\
+ MUX_VAL(CP(MCBSP1_DR), (IEN | PTU | EN | M1)) /*MCSPI4_SOMI*/\
MUX_VAL(CP(MCBSP_CLKS), (IEN | PTU | DIS | M0)) /*McBSP_CLKS*/\
-- MUX_VAL(CP(MCBSP1_FSX), (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
-- MUX_VAL(CP(MCBSP1_CLKX), (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
+- MUX_VAL(CP(MCBSP1_FSX), (IEN | PTD | EN | M1)) /*MCSPI4_CS0*/\
+- MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTD | DIS | M4)) /*GPIO_162*/\
+ MUX_VAL(CP(MCBSP1_FSX), (IEN | PTU | EN | M1)) /*MCSPI4_CS0*/\
+ MUX_VAL(CP(MCBSP1_CLKX), (IEN | PTU | EN | M4)) /*GPIO_162*/\
/*Serial Interface*/\
diff --git a/recipes/u-boot/u-boot-git/touchbook-config.patch b/recipes/u-boot/u-boot-git/touchbook-config.patch
new file mode 100644
index 0000000000..712a313251
--- /dev/null
+++ b/recipes/u-boot/u-boot-git/touchbook-config.patch
@@ -0,0 +1,11 @@
+--- a/board/omap3/beagle/beagle.c 2009-10-18 05:31:23.000000000 +0800
++++ b/board/omap3/beagle/beagle.c 2009-10-18 05:31:34.000000000 +0800
+@@ -186,7 +186,7 @@
+
+ gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
+ /* board id for Linux */
+- gd->bd->bi_arch_number = MACH_TYPE_OMAP3_BEAGLE;
++ gd->bd->bi_arch_number = 2393;
+ /* boot param addr */
+ gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
+
diff --git a/recipes/u-boot/u-boot.inc b/recipes/u-boot/u-boot.inc
index 6c8566fb28..8ab0282743 100644
--- a/recipes/u-boot/u-boot.inc
+++ b/recipes/u-boot/u-boot.inc
@@ -5,6 +5,8 @@ PRIORITY = "optional"
LICENSE = "GPL"
PROVIDES = "virtual/bootloader"
+DEPENDS = "mtd-utils"
+
PACKAGE_ARCH = "${MACHINE_ARCH}"
PARALLEL_MAKE=""
@@ -14,18 +16,20 @@ UBOOT_MACHINE ?= "${MACHINE}_config"
UBOOT_IMAGE ?= "u-boot-${MACHINE}-${PV}-${PR}.bin"
UBOOT_SYMLINK ?= "u-boot-${MACHINE}.bin"
+INSANE_SKIP_${PN} = True
+
do_compile () {
unset LDFLAGS
unset CFLAGS
unset CPPFLAGS
oe_runmake ${UBOOT_MACHINE}
oe_runmake all
- oe_runmake tools
+ oe_runmake tools env
}
do_install () {
if [ -e ${WORKDIR}/fw_env.config ] ; then
- install -d ${D}$base_sbindir}
+ install -d ${D}${base_sbindir}
install -d ${D}${sysconfdir}
install -m 644 ${WORKDIR}/fw_env.config ${D}${sysconfdir}/fw_env.config
install -m 755 ${S}/tools/env/fw_printenv ${D}${base_sbindir}/fw_printenv
diff --git a/recipes/u-boot/u-boot_git.bb b/recipes/u-boot/u-boot_git.bb
index 1a5a4e2ed8..9958475130 100644
--- a/recipes/u-boot/u-boot_git.bb
+++ b/recipes/u-boot/u-boot_git.bb
@@ -1,5 +1,5 @@
require u-boot.inc
-PR ="r30"
+PR ="r32"
FILESPATHPKG =. "u-boot-git:"
@@ -14,20 +14,24 @@ SRCREV_palmpre = "6b8edfde22acc574b5532e9f086e6a7287a9bc78"
SRC_URI_append_afeb9260 = " file://AFEB9260-network-fix.patch;patch=1"
SRC_URI_append_afeb9260-180 = " file://AFEB9260-network-fix.patch;patch=1"
-SRC_URI_beagleboard = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \
- file://fw-env.patch;patch=1 \
- file://dss2.patch;patch=1 \
+SRC_URI_beagleboard = "git://git.denx.de/u-boot-ti.git;protocol=git \
+ file://fw_env.config \
file://new-pinmux.patch;patch=1 \
"
-SRCREV_beagleboard = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274"
-PV_beagleboard = "2009.05+${PR}+gitr${SRCREV}"
+SRCREV_beagleboard = "1590f84007e2b50ad346a482fff89195cb04ff4e"
+PV_beagleboard = "2009.08+${PR}+gitr${SRCREV}"
SRC_URI_omap3-touchbook = "git://gitorious.org/u-boot-omap3/mainline.git;branch=omap3-dev;protocol=git \
- file://fw-env.patch;patch=1 \
+ file://fw_env.config \
file://dss2.patch;patch=1 \
+ file://600mhz.patch;patch=1 \
file://spi3.patch;patch=1 \
file://spi4.patch;patch=1 \
file://headphone.patch;patch=1 \
+ file://power.patch;patch=1 \
+ file://ai-logo.patch;patch=1 \
+ file://mmcinit.patch;patch=1 \
+ file://touchbook-config.patch;patch=1 \
"
SRCREV_omap3-touchbook = "d363f9cb0918a1b6b92e2e20d01543d0c4f53274"
PV_omap3-touchbook = "2009.05+${PR}+gitr${SRCREV}"
diff --git a/recipes/vala/vala-native_0.7.6-fso2.bb b/recipes/vala/vala-native_0.7.6-fso2.bb
deleted file mode 100644
index b7ff8a7dad..0000000000
--- a/recipes/vala/vala-native_0.7.6-fso2.bb
+++ /dev/null
@@ -1,6 +0,0 @@
-require vala.inc
-inherit native
-DEPENDS = "glib-2.0-native"
-
-PR = "${INC_PR}.0"
-
diff --git a/recipes/vala/vala-native_0.7.7+fso5.bb b/recipes/vala/vala-native_0.7.7+fso5.bb
new file mode 100644
index 0000000000..b3d147dd69
--- /dev/null
+++ b/recipes/vala/vala-native_0.7.7+fso5.bb
@@ -0,0 +1,8 @@
+require vala.inc
+inherit native
+
+PR = "r0"
+
+DEPENDS = "glib-2.0-native"
+
+SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.bz2"
diff --git a/recipes/vala/vala.inc b/recipes/vala/vala.inc
index 7c1e70a456..f45d557c88 100644
--- a/recipes/vala/vala.inc
+++ b/recipes/vala/vala.inc
@@ -4,12 +4,12 @@ SECTION = "devel"
DEPENDS = "glib-2.0 dbus"
HOMEPAGE = "http://vala-project.org"
LICENSE = "LGPL"
-INC_PR = "r0"
+INC_PR = "r1"
SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.gz"
inherit autotools_stage
-EXTRA_OECONF = "--enable-vapigen"
+EXTRA_OECONF = "--disable-vapigen"
FILES_${PN}-doc += ${datadir}/devhelp
diff --git a/recipes/vala/vala_0.7.7+fso5.bb b/recipes/vala/vala_0.7.7+fso5.bb
new file mode 100644
index 0000000000..df0b593ec3
--- /dev/null
+++ b/recipes/vala/vala_0.7.7+fso5.bb
@@ -0,0 +1,4 @@
+require vala.inc
+PR = "r0"
+
+SRC_URI = "http://www.freesmartphone.org/sources/vala-${PV}.tar.bz2"
diff --git a/recipes/xdg-utils/xdg-utils_1.0.2.bb b/recipes/xdg-utils/xdg-utils_1.0.2.bb
new file mode 100644
index 0000000000..d14208bbcf
--- /dev/null
+++ b/recipes/xdg-utils/xdg-utils_1.0.2.bb
@@ -0,0 +1,7 @@
+DESCRIPTION = "xdg-utils: command line tools for desktop integration tasks"
+LICENSE = "MIT"
+
+SRC_URI = "http://portland.freedesktop.org/download/${PN}-${PV}.tgz"
+
+inherit autotools
+
diff --git a/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch b/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch
new file mode 100644
index 0000000000..227b95e87d
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0001-ARM-Removal-of-unused-broken-NEON-code.patch
@@ -0,0 +1,830 @@
+From 2761591638f8c56732398b1fc6cf4bc7ca5005fd Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 27 Jul 2009 01:21:26 +0300
+Subject: [PATCH 1/7] ARM: Removal of unused/broken NEON code
+
+---
+ pixman/pixman-arm-neon.c | 786 ----------------------------------------------
+ 1 files changed, 0 insertions(+), 786 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 0a29e50..9caef61 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -1901,710 +1901,6 @@ pixman_fill_neon (uint32_t *bits,
+ #endif
+ }
+
+-/* TODO: is there a more generic way of doing this being introduced? */
+-#define NEON_SCANLINE_BUFFER_PIXELS (1024)
+-
+-static inline void
+-neon_quadword_copy (void * dst,
+- void * src,
+- uint32_t count, /* of quadwords */
+- uint32_t trailer_count /* of bytes */)
+-{
+- uint8_t *t_dst = dst, *t_src = src;
+-
+- /* Uses aligned multi-register loads to maximise read bandwidth
+- * on uncached memory such as framebuffers
+- * The accesses do not have the aligned qualifiers, so that the copy
+- * may convert between aligned-uncached and unaligned-cached memory.
+- * It is assumed that the CPU can infer alignedness from the address.
+- */
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+- asm volatile (
+- " cmp %[count], #8 \n"
+- " blt 1f @ skip oversized fragments \n"
+- "0: @ start with eight quadwords at a time \n"
+- " sub %[count], %[count], #8 \n"
+- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n"
+- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n"
+- " vld1.8 {d24, d25, d26, d27}, [%[src]]! \n"
+- " vld1.8 {d28, d29, d30, d31}, [%[src]]! \n"
+- " cmp %[count], #8 \n"
+- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n"
+- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n"
+- " vst1.8 {d24, d25, d26, d27}, [%[dst]]! \n"
+- " vst1.8 {d28, d29, d30, d31}, [%[dst]]! \n"
+- " bge 0b \n"
+- "1: @ four quadwords \n"
+- " tst %[count], #4 \n"
+- " beq 2f @ skip oversized fragment \n"
+- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n"
+- " vld1.8 {d20, d21, d22, d23}, [%[src]]! \n"
+- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n"
+- " vst1.8 {d20, d21, d22, d23}, [%[dst]]! \n"
+- "2: @ two quadwords \n"
+- " tst %[count], #2 \n"
+- " beq 3f @ skip oversized fragment \n"
+- " vld1.8 {d16, d17, d18, d19}, [%[src]]! \n"
+- " vst1.8 {d16, d17, d18, d19}, [%[dst]]! \n"
+- "3: @ one quadword \n"
+- " tst %[count], #1 \n"
+- " beq 4f @ skip oversized fragment \n"
+- " vld1.8 {d16, d17}, [%[src]]! \n"
+- " vst1.8 {d16, d17}, [%[dst]]! \n"
+- "4: @ end \n"
+-
+- /* Clobbered input registers marked as input/outputs */
+- : [dst] "+r" (t_dst), [src] "+r" (t_src), [count] "+r" (count)
+-
+- /* No unclobbered inputs */
+- :
+-
+- /* Clobbered vector registers */
+- : "d16", "d17", "d18", "d19", "d20", "d21", "d22", "d23", "d24", "d25",
+- "d26", "d27", "d28", "d29", "d30", "d31", "cc", "memory");
+-
+-#else
+-
+- while (count >= 8)
+- {
+- uint8x16x4_t t1 = vld4q_u8 (t_src);
+- uint8x16x4_t t2 = vld4q_u8 (t_src + sizeof(uint8x16x4_t));
+-
+- t_src += sizeof(uint8x16x4_t) * 2;
+- vst4q_u8 (t_dst, t1);
+- vst4q_u8 (t_dst + sizeof(uint8x16x4_t), t2);
+- t_dst += sizeof(uint8x16x4_t) * 2;
+- count -= 8;
+- }
+-
+- if (count & 4)
+- {
+- uint8x16x4_t t1 = vld4q_u8 (t_src);
+-
+- t_src += sizeof(uint8x16x4_t);
+- vst4q_u8 (t_dst, t1);
+- t_dst += sizeof(uint8x16x4_t);
+- }
+-
+- if (count & 2)
+- {
+- uint8x8x4_t t1 = vld4_u8 (t_src);
+-
+- t_src += sizeof(uint8x8x4_t);
+- vst4_u8 (t_dst, t1);
+- t_dst += sizeof(uint8x8x4_t);
+- }
+-
+- if (count & 1)
+- {
+- uint8x16_t t1 = vld1q_u8 (t_src);
+-
+- t_src += sizeof(uint8x16_t);
+- vst1q_u8 (t_dst, t1);
+- t_dst += sizeof(uint8x16_t);
+- }
+-
+-#endif /* !USE_GCC_INLINE_ASM */
+-
+- if (trailer_count)
+- {
+- if (trailer_count & 8)
+- {
+- uint8x8_t t1 = vld1_u8 (t_src);
+-
+- t_src += sizeof(uint8x8_t);
+- vst1_u8 (t_dst, t1);
+- t_dst += sizeof(uint8x8_t);
+- }
+-
+- if (trailer_count & 4)
+- {
+- *((uint32_t*) t_dst) = *((uint32_t*) t_src);
+-
+- t_dst += 4;
+- t_src += 4;
+- }
+-
+- if (trailer_count & 2)
+- {
+- *((uint16_t*) t_dst) = *((uint16_t*) t_src);
+-
+- t_dst += 2;
+- t_src += 2;
+- }
+-
+- if (trailer_count & 1)
+- {
+- *t_dst++ = *t_src++;
+- }
+- }
+-}
+-
+-static inline void
+-solid_over_565_8_pix_neon (uint32_t glyph_colour,
+- uint16_t *dest,
+- uint8_t * in_mask,
+- uint32_t dest_stride, /* bytes, not elements */
+- uint32_t mask_stride,
+- uint32_t count /* 8-pixel groups */)
+-{
+- /* Inner loop of glyph blitter (solid colour, alpha mask) */
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+- asm volatile (
+- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[glyph_colour]] @ splat solid colour components \n"
+- "0: @ loop \n"
+- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n"
+- " vld1.8 {d17}, [%[in_mask]] @ load alpha mask of glyph \n"
+- " vmull.u8 q9, d17, d23 @ apply glyph colour alpha to mask \n"
+- " vshrn.u16 d17, q9, #8 @ reformat it to match original mask \n"
+- " vmvn d18, d17 @ we need the inverse mask for the background \n"
+- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n"
+- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n"
+- " vshrn.u16 d4, q0, #3 @ unpack green \n"
+- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n"
+- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n"
+- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n"
+- " vmull.u8 q1, d2, d18 @ apply inverse mask to background red... \n"
+- " vmull.u8 q2, d4, d18 @ ...green... \n"
+- " vmull.u8 q3, d6, d18 @ ...blue \n"
+- " subs %[count], %[count], #1 @ decrement/test loop counter \n"
+- " vmlal.u8 q1, d17, d22 @ add masked foreground red... \n"
+- " vmlal.u8 q2, d17, d21 @ ...green... \n"
+- " vmlal.u8 q3, d17, d20 @ ...blue \n"
+- " add %[in_mask], %[in_mask], %[mask_stride] @ advance mask pointer, while we wait \n"
+- " vsri.16 q1, q2, #5 @ pack green behind red \n"
+- " vsri.16 q1, q3, #11 @ pack blue into pixels \n"
+- " vst1.16 {d2, d3}, [%[dest]] @ store composited pixels \n"
+- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n"
+- " bne 0b @ next please \n"
+-
+- /* Clobbered registers marked as input/outputs */
+- : [dest] "+r" (dest), [in_mask] "+r" (in_mask), [count] "+r" (count)
+-
+- /* Inputs */
+- : [dest_stride] "r" (dest_stride), [mask_stride] "r" (mask_stride), [glyph_colour] "r" (&glyph_colour)
+-
+- /* Clobbers, including the inputs we modify, and potentially lots of memory */
+- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d19",
+- "d20", "d21", "d22", "d23", "d24", "d25", "cc", "memory"
+- );
+-
+-#else
+-
+- uint8x8x4_t solid_colour = vld4_dup_u8 ((uint8_t*) &glyph_colour);
+-
+- while (count--)
+- {
+- uint16x8_t pixels = vld1q_u16 (dest);
+- uint8x8_t mask = vshrn_n_u16 (vmull_u8 (solid_colour.val[3], vld1_u8 (in_mask)), 8);
+- uint8x8_t mask_image = vmvn_u8 (mask);
+-
+- uint8x8_t t_red = vshrn_n_u16 (pixels, 8);
+- uint8x8_t t_green = vshrn_n_u16 (pixels, 3);
+- uint8x8_t t_blue = vshrn_n_u16 (vsli_n_u8 (pixels, pixels, 5), 2);
+-
+- uint16x8_t s_red = vmull_u8 (vsri_n_u8 (t_red, t_red, 5), mask_image);
+- uint16x8_t s_green = vmull_u8 (vsri_n_u8 (t_green, t_green, 6), mask_image);
+- uint16x8_t s_blue = vmull_u8 (t_blue, mask_image);
+-
+- s_red = vmlal (s_red, mask, solid_colour.val[2]);
+- s_green = vmlal (s_green, mask, solid_colour.val[1]);
+- s_blue = vmlal (s_blue, mask, solid_colour.val[0]);
+-
+- pixels = vsri_n_u16 (s_red, s_green, 5);
+- pixels = vsri_n_u16 (pixels, s_blue, 11);
+- vst1q_u16 (dest, pixels);
+-
+- dest += dest_stride;
+- mask += mask_stride;
+- }
+-
+-#endif
+-}
+-
+-#if 0 /* this is broken currently */
+-static void
+-neon_composite_over_n_8_0565 (pixman_implementation_t * impl,
+- pixman_op_t op,
+- pixman_image_t * src_image,
+- pixman_image_t * mask_image,
+- pixman_image_t * dst_image,
+- int32_t src_x,
+- int32_t src_y,
+- int32_t mask_x,
+- int32_t mask_y,
+- int32_t dest_x,
+- int32_t dest_y,
+- int32_t width,
+- int32_t height)
+-{
+- uint32_t src, srca;
+- uint16_t *dst_line, *aligned_line;
+- uint8_t *mask_line;
+- uint32_t dst_stride, mask_stride;
+- uint32_t kernel_count, copy_count, copy_tail;
+- uint8_t kernel_offset, copy_offset;
+-
+- src = _pixman_image_get_solid (src_image, dst_image->bits.format);
+-
+- /* bail out if fully transparent or degenerate */
+- srca = src >> 24;
+- if (src == 0)
+- return;
+-
+- if (width == 0 || height == 0)
+- return;
+-
+- if (width > NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- /* split the blit, so we can use a fixed-size scanline buffer
+- * TODO: there must be a more elegant way of doing this.
+- */
+- int x;
+- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- neon_composite_over_n_8_0565 (
+- impl, op,
+- src_image, mask_image, dst_image,
+- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+- }
+-
+- return;
+- }
+-
+- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+- PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t, mask_stride, mask_line, 1);
+-
+- /* keep within minimum number of aligned quadwords on width
+- * while also keeping the minimum number of columns to process
+- */
+- {
+- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+- /* the fast copy should be quadword aligned */
+- copy_offset = dst_line - ((uint16_t*) aligned_left);
+- aligned_line = dst_line - copy_offset;
+- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+- copy_tail = 0;
+-
+- if (aligned_right - aligned_left > ceiling_length)
+- {
+- /* unaligned routine is tightest */
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- kernel_offset = copy_offset;
+- }
+- else
+- {
+- /* aligned routine is equally tight, so it is safer to align */
+- kernel_count = copy_count;
+- kernel_offset = 0;
+- }
+-
+- /* We should avoid reading beyond scanline ends for safety */
+- if (aligned_line < (dst_line - dest_x) ||
+- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+- {
+- /* switch to precise read */
+- copy_offset = kernel_offset = 0;
+- aligned_line = dst_line;
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- copy_count = (width * sizeof(*dst_line)) >> 4;
+- copy_tail = (width * sizeof(*dst_line)) & 0xF;
+- }
+- }
+-
+- {
+- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */
+- uint8_t glyph_line[NEON_SCANLINE_BUFFER_PIXELS + 8];
+- int y = height;
+-
+- /* row-major order */
+- /* left edge, middle block, right edge */
+- for ( ; y--; mask_line += mask_stride, aligned_line += dst_stride, dst_line += dst_stride)
+- {
+- /* We don't want to overrun the edges of the glyph,
+- * so realign the edge data into known buffers
+- */
+- neon_quadword_copy (glyph_line + copy_offset, mask_line, width >> 4, width & 0xF);
+-
+- /* Uncached framebuffer access is really, really slow
+- * if we do it piecemeal. It should be much faster if we
+- * grab it all at once. One scanline should easily fit in
+- * L1 cache, so this should not waste RAM bandwidth.
+- */
+- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+- /* Apply the actual filter */
+- solid_over_565_8_pix_neon (
+- src, scan_line + kernel_offset,
+- glyph_line + kernel_offset, 8 * sizeof(*dst_line),
+- 8, kernel_count);
+-
+- /* Copy the modified scanline back */
+- neon_quadword_copy (dst_line, scan_line + copy_offset,
+- width >> 3, (width & 7) * 2);
+- }
+- }
+-}
+-#endif
+-
+-#ifdef USE_GCC_INLINE_ASM
+-
+-static inline void
+-plain_over_565_8_pix_neon (uint32_t colour,
+- uint16_t *dest,
+- uint32_t dest_stride, /* bytes, not elements */
+- uint32_t count /* 8-pixel groups */)
+-{
+- /* Inner loop for plain translucent rects
+- * (solid colour without alpha mask)
+- */
+- asm volatile (
+- " vld4.8 {d20[], d21[], d22[], d23[]}, [%[colour]] @ solid colour load/splat \n"
+- " vmull.u8 q12, d23, d22 @ premultiply alpha red \n"
+- " vmull.u8 q13, d23, d21 @ premultiply alpha green \n"
+- " vmull.u8 q14, d23, d20 @ premultiply alpha blue \n"
+- " vmvn d18, d23 @ inverse alpha for background \n"
+- "0: @ loop\n"
+- " vld1.16 {d0, d1}, [%[dest]] @ load first pixels from framebuffer \n"
+- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n"
+- " vshrn.u16 d4, q0, #3 @ unpack green \n"
+- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n"
+- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n"
+- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n"
+- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n"
+- " vmov q0, q12 @ retrieve foreground red \n"
+- " vmlal.u8 q0, d2, d18 @ blend red - my kingdom for a four-operand MLA \n"
+- " vmov q1, q13 @ retrieve foreground green \n"
+- " vmlal.u8 q1, d4, d18 @ blend green \n"
+- " vmov q2, q14 @ retrieve foreground blue \n"
+- " vmlal.u8 q2, d6, d18 @ blend blue \n"
+- " subs %[count], %[count], #1 @ decrement/test loop counter \n"
+- " vsri.16 q0, q1, #5 @ pack green behind red \n"
+- " vsri.16 q0, q2, #11 @ pack blue into pixels \n"
+- " vst1.16 {d0, d1}, [%[dest]] @ store composited pixels \n"
+- " add %[dest], %[dest], %[dest_stride] @ advance framebuffer pointer \n"
+- " bne 0b @ next please \n"
+-
+- /* Clobbered registers marked as input/outputs */
+- : [dest] "+r" (dest), [count] "+r" (count)
+-
+- /* Inputs */
+- : [dest_stride] "r" (dest_stride), [colour] "r" (&colour)
+-
+- /* Clobbers, including the inputs we modify, and
+- * potentially lots of memory
+- */
+- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d18", "d19",
+- "d20", "d21", "d22", "d23", "d24", "d25", "d26", "d27", "d28", "d29",
+- "cc", "memory"
+- );
+-}
+-
+-static void
+-neon_composite_over_n_0565 (pixman_implementation_t * impl,
+- pixman_op_t op,
+- pixman_image_t * src_image,
+- pixman_image_t * mask_image,
+- pixman_image_t * dst_image,
+- int32_t src_x,
+- int32_t src_y,
+- int32_t mask_x,
+- int32_t mask_y,
+- int32_t dest_x,
+- int32_t dest_y,
+- int32_t width,
+- int32_t height)
+-{
+- uint32_t src, srca;
+- uint16_t *dst_line, *aligned_line;
+- uint32_t dst_stride;
+- uint32_t kernel_count, copy_count, copy_tail;
+- uint8_t kernel_offset, copy_offset;
+-
+- src = _pixman_image_get_solid (src_image, dst_image->bits.format);
+-
+- /* bail out if fully transparent */
+- srca = src >> 24;
+- if (src == 0)
+- return;
+-
+- if (width == 0 || height == 0)
+- return;
+-
+- if (width > NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- /* split the blit, so we can use a fixed-size scanline buffer *
+- * TODO: there must be a more elegant way of doing this.
+- */
+- int x;
+-
+- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- neon_composite_over_n_0565 (
+- impl, op,
+- src_image, mask_image, dst_image,
+- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+- }
+- return;
+- }
+-
+- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+-
+- /* keep within minimum number of aligned quadwords on width
+- * while also keeping the minimum number of columns to process
+- */
+- {
+- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+- /* the fast copy should be quadword aligned */
+- copy_offset = dst_line - ((uint16_t*) aligned_left);
+- aligned_line = dst_line - copy_offset;
+- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+- copy_tail = 0;
+-
+- if (aligned_right - aligned_left > ceiling_length)
+- {
+- /* unaligned routine is tightest */
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- kernel_offset = copy_offset;
+- }
+- else
+- {
+- /* aligned routine is equally tight, so it is safer to align */
+- kernel_count = copy_count;
+- kernel_offset = 0;
+- }
+-
+- /* We should avoid reading beyond scanline ends for safety */
+- if (aligned_line < (dst_line - dest_x) ||
+- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+- {
+- /* switch to precise read */
+- copy_offset = kernel_offset = 0;
+- aligned_line = dst_line;
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- copy_count = (width * sizeof(*dst_line)) >> 4;
+- copy_tail = (width * sizeof(*dst_line)) & 0xF;
+- }
+- }
+-
+- {
+- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */
+-
+- /* row-major order */
+- /* left edge, middle block, right edge */
+- for ( ; height--; aligned_line += dst_stride, dst_line += dst_stride)
+- {
+- /* Uncached framebuffer access is really, really slow if we do it piecemeal.
+- * It should be much faster if we grab it all at once.
+- * One scanline should easily fit in L1 cache, so this should
+- * not waste RAM bandwidth.
+- */
+- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+- /* Apply the actual filter */
+- plain_over_565_8_pix_neon (
+- src, scan_line + kernel_offset, 8 * sizeof(*dst_line), kernel_count);
+-
+- /* Copy the modified scanline back */
+- neon_quadword_copy (
+- dst_line, scan_line + copy_offset, width >> 3, (width & 7) * 2);
+- }
+- }
+-}
+-
+-static inline void
+-ARGB8_over_565_8_pix_neon (uint32_t *src,
+- uint16_t *dest,
+- uint32_t src_stride, /* bytes, not elements */
+- uint32_t count /* 8-pixel groups */)
+-{
+- asm volatile (
+- "0: @ loop\n"
+- " pld [%[src], %[src_stride]] @ preload from next scanline \n"
+- " vld1.16 {d0, d1}, [%[dest]] @ load pixels from framebuffer \n"
+- " vld4.8 {d20, d21, d22, d23},[%[src]]! @ load source image pixels \n"
+- " vsli.u16 q3, q0, #5 @ duplicate framebuffer blue bits \n"
+- " vshrn.u16 d2, q0, #8 @ unpack red from framebuffer pixels \n"
+- " vshrn.u16 d4, q0, #3 @ unpack green \n"
+- " vmvn d18, d23 @ we need the inverse alpha for the background \n"
+- " vsri.u8 d2, d2, #5 @ duplicate red bits (extend 5 to 8) \n"
+- " vshrn.u16 d6, q3, #2 @ unpack extended blue (truncate 10 to 8) \n"
+- " vsri.u8 d4, d4, #6 @ duplicate green bits (extend 6 to 8) \n"
+- " vmull.u8 q1, d2, d18 @ apply inverse alpha to background red... \n"
+- " vmull.u8 q2, d4, d18 @ ...green... \n"
+- " vmull.u8 q3, d6, d18 @ ...blue \n"
+- " subs %[count], %[count], #1 @ decrement/test loop counter \n"
+- " vmlal.u8 q1, d23, d22 @ add blended foreground red... \n"
+- " vmlal.u8 q2, d23, d21 @ ...green... \n"
+- " vmlal.u8 q3, d23, d20 @ ...blue \n"
+- " vsri.16 q1, q2, #5 @ pack green behind red \n"
+- " vsri.16 q1, q3, #11 @ pack blue into pixels \n"
+- " vst1.16 {d2, d3}, [%[dest]]! @ store composited pixels \n"
+- " bne 0b @ next please \n"
+-
+- /* Clobbered registers marked as input/outputs */
+- : [dest] "+r" (dest), [src] "+r" (src), [count] "+r" (count)
+-
+- /* Inputs */
+- : [src_stride] "r" (src_stride)
+-
+- /* Clobbers, including the inputs we modify, and potentially lots of memory */
+- : "d0", "d1", "d2", "d3", "d4", "d5", "d6", "d7", "d17", "d18", "d20",
+- "d21", "d22", "d23", "cc", "memory"
+- );
+-}
+-
+-static void
+-neon_composite_over_8888_0565 (pixman_implementation_t * impl,
+- pixman_op_t op,
+- pixman_image_t * src_image,
+- pixman_image_t * mask_image,
+- pixman_image_t * dst_image,
+- int32_t src_x,
+- int32_t src_y,
+- int32_t mask_x,
+- int32_t mask_y,
+- int32_t dest_x,
+- int32_t dest_y,
+- int32_t width,
+- int32_t height)
+-{
+- uint32_t *src_line;
+- uint16_t *dst_line, *aligned_line;
+- uint32_t dst_stride, src_stride;
+- uint32_t kernel_count, copy_count, copy_tail;
+- uint8_t kernel_offset, copy_offset;
+-
+- /* we assume mask is opaque
+- * so the only alpha to deal with is embedded in src
+- */
+- if (width > NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- /* split the blit, so we can use a fixed-size scanline buffer */
+- int x;
+- for (x = 0; x < width; x += NEON_SCANLINE_BUFFER_PIXELS)
+- {
+- neon_composite_over_8888_0565 (
+- impl, op,
+- src_image, mask_image, dst_image,
+- src_x + x, src_y, mask_x + x, mask_y, dest_x + x, dest_y,
+- (x + NEON_SCANLINE_BUFFER_PIXELS > width) ? width - x : NEON_SCANLINE_BUFFER_PIXELS, height);
+- }
+- return;
+- }
+-
+- PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t, dst_stride, dst_line, 1);
+- PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t, src_stride, src_line, 1);
+-
+- /* keep within minimum number of aligned quadwords on width
+- * while also keeping the minimum number of columns to process
+- */
+- {
+- unsigned long aligned_left = (unsigned long)(dst_line) & ~0xF;
+- unsigned long aligned_right = (((unsigned long)(dst_line + width)) + 0xF) & ~0xF;
+- unsigned long ceiling_length = (((unsigned long) width) * sizeof(*dst_line) + 0xF) & ~0xF;
+-
+- /* the fast copy should be quadword aligned */
+- copy_offset = dst_line - ((uint16_t*) aligned_left);
+- aligned_line = dst_line - copy_offset;
+- copy_count = (uint32_t) ((aligned_right - aligned_left) >> 4);
+- copy_tail = 0;
+-
+- if (aligned_right - aligned_left > ceiling_length)
+- {
+- /* unaligned routine is tightest */
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- kernel_offset = copy_offset;
+- }
+- else
+- {
+- /* aligned routine is equally tight, so it is safer to align */
+- kernel_count = copy_count;
+- kernel_offset = 0;
+- }
+-
+- /* We should avoid reading beyond scanline ends for safety */
+- if (aligned_line < (dst_line - dest_x) ||
+- (aligned_line + (copy_count * 16 / sizeof(*dst_line))) > ((dst_line - dest_x) + dst_image->bits.width))
+- {
+- /* switch to precise read */
+- copy_offset = kernel_offset = 0;
+- aligned_line = dst_line;
+- kernel_count = (uint32_t) (ceiling_length >> 4);
+- copy_count = (width * sizeof(*dst_line)) >> 4;
+- copy_tail = (width * sizeof(*dst_line)) & 0xF;
+- }
+- }
+-
+- /* Preload the first input scanline */
+- {
+- uint8_t *src_ptr = (uint8_t*) src_line;
+- uint32_t count = (width + 15) / 16;
+-
+-#ifdef USE_GCC_INLINE_ASM
+- asm volatile (
+- "0: @ loop \n"
+- " subs %[count], %[count], #1 \n"
+- " pld [%[src]] \n"
+- " add %[src], %[src], #64 \n"
+- " bgt 0b \n"
+-
+- /* Clobbered input registers marked as input/outputs */
+- : [src] "+r" (src_ptr), [count] "+r" (count)
+- : /* no unclobbered inputs */
+- : "cc"
+- );
+-#else
+- do
+- {
+- __pld (src_ptr);
+- src_ptr += 64;
+- }
+- while (--count);
+-#endif
+- }
+-
+- {
+- uint16_t scan_line[NEON_SCANLINE_BUFFER_PIXELS + 8]; /* deliberately not initialised */
+-
+- /* row-major order */
+- /* left edge, middle block, right edge */
+- for ( ; height--; src_line += src_stride, aligned_line += dst_stride)
+- {
+- /* Uncached framebuffer access is really, really slow if we do
+- * it piecemeal. It should be much faster if we grab it all at
+- * once. One scanline should easily fit in L1 cache, so this
+- * should not waste RAM bandwidth.
+- */
+- neon_quadword_copy (scan_line, aligned_line, copy_count, copy_tail);
+-
+- /* Apply the actual filter */
+- ARGB8_over_565_8_pix_neon (
+- src_line, scan_line + kernel_offset,
+- src_stride * sizeof(*src_line), kernel_count);
+-
+- /* Copy the modified scanline back */
+- neon_quadword_copy (dst_line,
+- scan_line + copy_offset,
+- width >> 3, (width & 7) * 2);
+- }
+- }
+-}
+-
+-#endif /* USE_GCC_INLINE_ASM */
+-
+ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ {
+ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 },
+@@ -2618,12 +1914,6 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ #ifdef USE_GCC_INLINE_ASM
+ { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_16_16, 0 },
+ { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_16_16, 0 },
+-#if 0 /* this code has some bugs */
+- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_n_0565, 0 },
+- { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_n_0565, 0 },
+- { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 },
+- { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 },
+-#endif
+ #endif
+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 },
+@@ -2674,79 +1964,6 @@ arm_neon_composite (pixman_implementation_t *imp,
+ }
+
+ static pixman_bool_t
+-pixman_blt_neon (void *src_bits,
+- void *dst_bits,
+- int src_stride,
+- int dst_stride,
+- int src_bpp,
+- int dst_bpp,
+- int src_x,
+- int src_y,
+- int dst_x,
+- int dst_y,
+- int width,
+- int height)
+-{
+- if (!width || !height)
+- return TRUE;
+-
+- /* accelerate only straight copies involving complete bytes */
+- if (src_bpp != dst_bpp || (src_bpp & 7))
+- return FALSE;
+-
+- {
+- uint32_t bytes_per_pixel = src_bpp >> 3;
+- uint32_t byte_width = width * bytes_per_pixel;
+- /* parameter is in words for some reason */
+- int32_t src_stride_bytes = src_stride * 4;
+- int32_t dst_stride_bytes = dst_stride * 4;
+- uint8_t *src_bytes = ((uint8_t*) src_bits) +
+- src_y * src_stride_bytes + src_x * bytes_per_pixel;
+- uint8_t *dst_bytes = ((uint8_t*) dst_bits) +
+- dst_y * dst_stride_bytes + dst_x * bytes_per_pixel;
+- uint32_t quadword_count = byte_width / 16;
+- uint32_t offset = byte_width % 16;
+-
+- while (height--)
+- {
+- neon_quadword_copy (dst_bytes, src_bytes, quadword_count, offset);
+- src_bytes += src_stride_bytes;
+- dst_bytes += dst_stride_bytes;
+- }
+- }
+-
+- return TRUE;
+-}
+-
+-static pixman_bool_t
+-arm_neon_blt (pixman_implementation_t *imp,
+- uint32_t * src_bits,
+- uint32_t * dst_bits,
+- int src_stride,
+- int dst_stride,
+- int src_bpp,
+- int dst_bpp,
+- int src_x,
+- int src_y,
+- int dst_x,
+- int dst_y,
+- int width,
+- int height)
+-{
+- if (pixman_blt_neon (
+- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+- src_x, src_y, dst_x, dst_y, width, height))
+- {
+- return TRUE;
+- }
+-
+- return _pixman_implementation_blt (
+- imp->delegate,
+- src_bits, dst_bits, src_stride, dst_stride, src_bpp, dst_bpp,
+- src_x, src_y, dst_x, dst_y, width, height);
+-}
+-
+-static pixman_bool_t
+ arm_neon_fill (pixman_implementation_t *imp,
+ uint32_t * bits,
+ int stride,
+@@ -2771,9 +1988,6 @@ _pixman_implementation_create_arm_neon (void)
+ pixman_implementation_t *imp = _pixman_implementation_create (general);
+
+ imp->composite = arm_neon_composite;
+-#if 0 /* this code has some bugs */
+- imp->blt = arm_neon_blt;
+-#endif
+ imp->fill = arm_neon_fill;
+
+ return imp;
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch b/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch
new file mode 100644
index 0000000000..af0a8aa7a0
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch
@@ -0,0 +1,1061 @@
+From d9d9173581331a3bf7e5d123db32025588b7f044 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Sat, 10 Oct 2009 00:20:51 +0300
+Subject: [PATCH 2/7] ARM: Introduction of the new framework for NEON fast path optimizations
+
+GNU assembler and its macro preprocessor is now used to generate
+NEON optimized functions from a common template. This automatically
+takes care of nuisances like ensuring optimal alignment, dealing with
+leading/trailing pixels, doing prefetch, etc.
+
+As the first use for this framework, this commit also includes an
+implementation of pixman_composite_over_8888_0565_asm_neon function.
+---
+ configure.ac | 1 +
+ pixman/Makefile.am | 4 +-
+ pixman/pixman-arm-neon-asm.S | 309 +++++++++++++++++++++
+ pixman/pixman-arm-neon-asm.h | 620 ++++++++++++++++++++++++++++++++++++++++++
+ pixman/pixman-arm-neon.c | 55 ++++
+ 5 files changed, 988 insertions(+), 1 deletions(-)
+ create mode 100644 pixman/pixman-arm-neon-asm.S
+ create mode 100644 pixman/pixman-arm-neon-asm.h
+
+diff --git a/configure.ac b/configure.ac
+index c548174..522af15 100644
+--- a/configure.ac
++++ b/configure.ac
+@@ -71,6 +71,7 @@ AC_CANONICAL_HOST
+ test_CFLAGS=${CFLAGS+set} # We may override autoconf default CFLAGS.
+
+ AC_PROG_CC
++AM_PROG_AS
+ AC_PROG_LIBTOOL
+ AC_CHECK_FUNCS([getisax])
+ AC_C_BIGENDIAN
+diff --git a/pixman/Makefile.am b/pixman/Makefile.am
+index 6020623..2543c6a 100644
+--- a/pixman/Makefile.am
++++ b/pixman/Makefile.am
+@@ -109,7 +109,9 @@ endif
+ if USE_ARM_NEON
+ noinst_LTLIBRARIES += libpixman-arm-neon.la
+ libpixman_arm_neon_la_SOURCES = \
+- pixman-arm-neon.c
++ pixman-arm-neon.c \
++ pixman-arm-neon-asm.S \
++ pixman-arm-neon-asm.h
+ libpixman_arm_neon_la_CFLAGS = $(DEP_CFLAGS) $(ARM_NEON_CFLAGS)
+ libpixman_arm_neon_la_LIBADD = $(DEP_LIBS)
+ libpixman_1_la_LIBADD += libpixman-arm-neon.la
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+new file mode 100644
+index 0000000..843899f
+--- /dev/null
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -0,0 +1,309 @@
++/*
++ * Copyright © 2009 Nokia Corporation
++ *
++ * 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, and that the name of Nokia Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Nokia Corporation makes no
++ * representations about the suitability of this software for any purpose.
++ * It is provided "as is" without express or implied warranty.
++ *
++ * 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: Siarhei Siamashka (siarhei.siamashka@nokia.com)
++ */
++
++/* Prevent the stack from becoming executable for no reason... */
++#if defined(__linux__) && defined(__ELF__)
++.section .note.GNU-stack,"",%progbits
++#endif
++
++ .text
++ .fpu neon
++ .altmacro
++
++#include "pixman-arm-neon-asm.h"
++
++/*
++ * This file contains implementations of NEON optimized pixel processing
++ * functions functions. There is no full and detailed tutorial, but some
++ * functions (those which are exposing some new or interesting features)
++ * are extensively commented and can be used as examples.
++ *
++ * You may want to have a look at the following functions:
++ * - pixman_composite_over_8888_0565_asm_neon
++ */
++
++/*
++ * Implementation of pixman_composite_over_8888_0565_asm_neon
++ *
++ * This function takes a8r8g8b8 source buffer, r5g6b5 destination buffer and
++ * performs OVER compositing operation. Function fast_composite_over_8888_0565
++ * from pixman-fast-path.c does the same in C and can be used as a reference.
++ *
++ * First we need to have some NEON assembly code which can do the actual
++ * operation on the pixels and provide it to the template macro
++ *
++ * Template macro quite conveniently takes care of all the necessary code for
++ * memory reading and writing (including quite tricky cases of handling
++ * unaligned leading/trailing pixels), so we only need to deal with the data
++ * in NEON registers.
++ *
++ * NEON registers allocation in general is recommented to be the following:
++ * d0, d1, d2, d3 - contain loaded source pixel data
++ * d4, d5, d6, d7 - contain loaded destination pixels (if they are needed)
++ * d24, d25, d26, d27 - contain loading mask pixel data (if mask is used)
++ * d28, d29, d30, d31 - place for storing the result (destination pixels)
++ *
++ * As can be seen above, four 64-bit NEON registers are used for keeping
++ * intermediate pixel data and up to 8 pixels can be processed in one step
++ * for 32bpp formats (16 pixels for 16bpp, 32 pixels for 8bpp).
++ *
++ * This particular function uses the following allocation:
++ * d0, d1, d2, d3 - contain loaded source pixel data
++ * d4, d5 - contain loaded destination pixels (they are needed)
++ * d28, d29 - place for storing the result (destination pixels)
++ */
++
++/*
++ * Step one. We need to have some code to do some arithmetics on pixel data.
++ * This is implemented as a pair of macros: '*_head' and '*_tail'. When used
++ * back-to-back, they take pixel data from {d0, d1, d2, d3} and {d4, d5},
++ * perform all the needed calculations and write the result to {d28, d29}.
++ * The rationale for having two macros and not just one will be explained
++ * later. In practice, any single monolitic function which does the work can
++ * be split into two parts in any arbitrary way without affecting correctness.
++ *
++ * There is one special trick here too. Common template macro already makes
++ * our life a bit easier by doing R, G, B, A color components deinterleaving
++ * for 32bpp pixel formats. So it means that instead of having 8 packed
++ * pixels in {d0, d1, d2, d3} registers, we actually use d0 register for
++ * blue channel (a vector of eight 8-bit values), d1 register for green,
++ * d2 for red and d3 for alpha. There is no magic and simple conversion
++ * can be done with a few NEON instructions.
++ *
++ * Packed to planar conversion:
++ * vuzp.8 d0, d1
++ * vuzp.8 d2, d3
++ * vuzp.8 d1, d3
++ * vuzp.8 d0, d2
++ *
++ * Planar to packed conversion:
++ * vzip.8 d0, d2
++ * vzip.8 d1, d3
++ * vzip.8 d2, d3
++ * vzip.8 d0, d1
++ *
++ * Pixel can be loaded directly in planar format using VLD4.8 NEON
++ * instruction. But it is 1 cycle slower than VLD1.32 and sometimes
++ * code can be scheduled so that four extra VUZP.8 after VLD1.32 may
++ * be dual-issued with the other instructions resulting in overal
++ * 1 cycle improvement.
++ *
++ * But anyway, here is the code:
++ */
++.macro pixman_composite_over_8888_0565_process_pixblock_head
++ /* convert 8 r5g6b5 pixel data from {d4, d5} to planar 8-bit format
++ and put data into d6 - red, d7 - green, d30 - blue */
++ vshrn.u16 d6, q2, #8
++ vshrn.u16 d7, q2, #3
++ vsli.u16 q2, q2, #5
++ vsri.u8 d6, d6, #5
++ vmvn.8 d3, d3 /* invert source alpha */
++ vsri.u8 d7, d7, #6
++ vshrn.u16 d30, q2, #2
++ /* now do alpha blending, storing results in 8-bit planar format
++ into d16 - red, d19 - green, d18 - blue */
++ vmull.u8 q10, d3, d6
++ vmull.u8 q11, d3, d7
++ vmull.u8 q12, d3, d30
++ vrshr.u16 q13, q10, #8
++ vrshr.u16 q3, q11, #8
++ vrshr.u16 q15, q12, #8
++ vraddhn.u16 d20, q10, q13
++ vraddhn.u16 d23, q11, q3
++ vraddhn.u16 d22, q12, q15
++.endm
++
++.macro pixman_composite_over_8888_0565_process_pixblock_tail
++ /* ... continue alpha blending */
++ vqadd.u8 d16, d2, d20
++ vqadd.u8 q9, q0, q11
++ /* convert the result to r5g6b5 and store it into {d28, d29} */
++ vshll.u8 q14, d16, #8
++ vshll.u8 q8, d19, #8
++ vshll.u8 q9, d18, #8
++ vsri.u16 q14, q8, #5
++ vsri.u16 q14, q9, #11
++.endm
++
++/*
++ * OK, now we got almost everything that we need. Using the above two
++ * macros, the work can be done right. But now we want to optimize
++ * it a bit. ARM Cortex-A8 is an in-order core, and benefits really
++ * a lot from good code scheduling and software pipelining.
++ *
++ * Let's construct some code, which will run in the core main loop.
++ * Some pseudo-code of the main loop will look like this:
++ * head
++ * while (...) {
++ * tail
++ * head
++ * }
++ * tail
++ *
++ * It may look a bit weird, but this setup allows to hide instruction
++ * latencies better and also utilize dual-issue capability more efficiently.
++ *
++ * So what we need now is a '*_tail_head' macro, which will be used
++ * in the core main loop. A trivial straightforward implementation
++ * of this macro would look like this:
++ *
++ * pixman_composite_over_8888_0565_process_pixblock_tail
++ * vst1.16 {d28, d29}, [DST_W, :128]!
++ * vld1.16 {d4, d5}, [DST_R, :128]!
++ * vld4.32 {d0, d1, d2, d3}, [SRC]!
++ * pixman_composite_over_8888_0565_process_pixblock_head
++ * cache_preload 8, 8
++ *
++ * Now it also got some VLD/VST instructions. We simply can't move from
++ * processing one block of pixels to the other one with just arithmetics.
++ * The previously processed data needs to be written to memory and new
++ * data needs to be fetched. Fortunately, this main loop does not deal
++ * with partial leading/trailing pixels and can load/store a full block
++ * of pixels in a bulk. Additionally, destination buffer is 16 bytes
++ * aligned here (which is good for performance).
++ *
++ * New things here are DST_R, DST_W, SRC and MASK identifiers. These
++ * are the aliases for ARM registers which are used as pointers for
++ * accessing data. We maintain separate pointers for reading and writing
++ * destination buffer.
++ *
++ * Another new thing is 'cache_preload' macro. It is used for prefetching
++ * data into CPU cache and improve performance when dealing with large
++ * images which are far larger than cache size. It uses one argument
++ * (actually two, but they need to be the same here) - number of pixels
++ * in a block. Looking into 'pixman-arm-neon-asm.h' can provide some
++ * details about this macro. Moreover, if good performance is needed
++ * the code from this macro needs to be copied into '*_tail_head' macro
++ * and mixed with the rest of code for optimal instructions scheduling.
++ * We are actually doing it below.
++ *
++ * Now after all the explanations, here is the optimized code.
++ * Different instruction streams (originaling from '*_head', '*_tail'
++ * and 'cache_preload' macro) use different indentation levels for
++ * better readability. Actually taking the code from one of these
++ * indentation levels and ignoring a few VLD/VST instructions would
++ * result in exactly the code from '*_head', '*_tail' or 'cache_preload'
++ * macro!
++ */
++
++#if 1
++
++.macro pixman_composite_over_8888_0565_process_pixblock_tail_head
++ vqadd.u8 d16, d2, d20
++ vld1.16 {d4, d5}, [DST_R, :128]!
++ vqadd.u8 q9, q0, q11
++ vshrn.u16 d6, q2, #8
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ vshrn.u16 d7, q2, #3
++ vsli.u16 q2, q2, #5
++ vshll.u8 q14, d16, #8
++ add PF_X, PF_X, #8
++ vshll.u8 q8, d19, #8
++ tst PF_CTL, #0xF
++ vsri.u8 d6, d6, #5
++ addne PF_X, PF_X, #8
++ vmvn.8 d3, d3
++ subne PF_CTL, PF_CTL, #1
++ vsri.u8 d7, d7, #6
++ vshrn.u16 d30, q2, #2
++ vmull.u8 q10, d3, d6
++ pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++ vmull.u8 q11, d3, d7
++ vmull.u8 q12, d3, d30
++ pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++ vsri.u16 q14, q8, #5
++ cmp PF_X, ORIG_W
++ vshll.u8 q9, d18, #8
++ vrshr.u16 q13, q10, #8
++ subge PF_X, PF_X, ORIG_W
++ vrshr.u16 q3, q11, #8
++ vrshr.u16 q15, q12, #8
++ subges PF_CTL, PF_CTL, #0x10
++ vsri.u16 q14, q9, #11
++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++ vraddhn.u16 d20, q10, q13
++ vraddhn.u16 d23, q11, q3
++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++ vraddhn.u16 d22, q12, q15
++ vst1.16 {d28, d29}, [DST_W, :128]!
++.endm
++
++#else
++
++/* If we did not care much about the performance, we would just use this... */
++.macro pixman_composite_over_8888_0565_process_pixblock_tail_head
++ pixman_composite_over_8888_0565_process_pixblock_tail
++ vst1.16 {d28, d29}, [DST_W, :128]!
++ vld1.16 {d4, d5}, [DST_R, :128]!
++ vld4.32 {d0, d1, d2, d3}, [SRC]!
++ pixman_composite_over_8888_0565_process_pixblock_head
++ cache_preload 8, 8
++.endm
++
++#endif
++
++/*
++ * And now the final part. We are using 'generate_composite_function' macro
++ * to put all the stuff together. We are specifying the name of the function
++ * which we want to get, number of bits per pixel for the source, mask and
++ * destination (0 if unused, like mask in this case). Next come some bit
++ * flags:
++ * FLAG_DST_READWRITE - tells that the destination buffer is both read
++ * and written, for write-only buffer we would use
++ * FLAG_DST_WRITEONLY flag instead
++ * FLAG_DEINTERLEAVE_32BPP - tells that we prefer to work with planar data
++ * and separate color channels for 32bpp format.
++ * The next things are:
++ * - the number of pixels processed per iteration (8 in this case, because
++ * that' the maximum what can fit into four 64-bit NEON registers).
++ * - prefetch distance, measured in pixel blocks. In this case it is 5 times
++ * by 8 pixels. That would be 40 pixels, or up to 160 bytes. Optimal
++ * prefetch distance can be selected by running some benchmarks.
++ *
++ * After that we specify some macros, these are 'default_init',
++ * 'default_cleanup' (it is possible to have custom init/cleanup to be
++ * able to save/restore some extra NEON registers like d8-d15 or do
++ * anything else) followed by
++ * 'pixman_composite_over_8888_0565_process_pixblock_head',
++ * 'pixman_composite_over_8888_0565_process_pixblock_tail' and
++ * 'pixman_composite_over_8888_0565_process_pixblock_tail_head'
++ * which we got implemented above.
++ *
++ * The last part is the NEON registers allocation scheme.
++ */
++generate_composite_function \
++ pixman_composite_over_8888_0565_asm_neon, 32, 0, 16, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_over_8888_0565_process_pixblock_head, \
++ pixman_composite_over_8888_0565_process_pixblock_tail, \
++ pixman_composite_over_8888_0565_process_pixblock_tail_head, \
++ 28, /* dst_w_basereg */ \
++ 4, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 24 /* mask_basereg */
+diff --git a/pixman/pixman-arm-neon-asm.h b/pixman/pixman-arm-neon-asm.h
+new file mode 100644
+index 0000000..d276ab9
+--- /dev/null
++++ b/pixman/pixman-arm-neon-asm.h
+@@ -0,0 +1,620 @@
++/*
++ * Copyright © 2009 Nokia Corporation
++ *
++ * 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, and that the name of Nokia Corporation not be used in
++ * advertising or publicity pertaining to distribution of the software without
++ * specific, written prior permission. Nokia Corporation makes no
++ * representations about the suitability of this software for any purpose.
++ * It is provided "as is" without express or implied warranty.
++ *
++ * 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: Siarhei Siamashka (siarhei.siamashka@nokia.com)
++ */
++
++/*
++ * This file contains a macro ('generate_composite_function') which can
++ * construct 2D image processing functions, based on a common template.
++ * Any combinations of source, destination and mask images with 8bpp,
++ * 16bpp, 32bpp color formats are supported.
++ *
++ * This macro takes care of:
++ * - handling of leading and trailing unaligned pixels
++ * - doing most of the work related to L2 cache preload
++ * - encourages the use of software pipelining for better instructions
++ * scheduling
++ *
++ * The user of this macro has to provide some configuration parameters
++ * (bit depths for the images, prefetch distance, etc.) and a set of
++ * macros, which should implement basic code chunks responsible for
++ * pixels processing. See 'pixman-arm-neon-asm.S' file for the usage
++ * examples.
++ *
++ * TODO:
++ * - support for 24bpp formats
++ * - try overlapped pixel method (from Ian Rickards) when processing
++ * exactly two blocks of pixels
++ */
++
++.set FLAG_DST_WRITEONLY, 0
++.set FLAG_DST_READWRITE, 1
++.set FLAG_DEINTERLEAVE_32BPP, 2
++
++/*
++ * It is possible to set this to 0 and improve performance a bit if unaligned
++ * memory accesses are supported
++ */
++#define RESPECT_STRICT_ALIGNMENT 1
++
++/*
++ * Definitions of supplementary pixld/pixst macros (for partial load/store of
++ * pixel data)
++ */
++
++.macro pixldst1 op, elem_size, reg1, mem_operand, abits
++.if abits > 0
++ op&.&elem_size {d&reg1}, [&mem_operand&, :&abits&]!
++.else
++ op&.&elem_size {d&reg1}, [&mem_operand&]!
++.endif
++.endm
++
++.macro pixldst2 op, elem_size, reg1, reg2, mem_operand, abits
++.if abits > 0
++ op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&, :&abits&]!
++.else
++ op&.&elem_size {d&reg1, d&reg2}, [&mem_operand&]!
++.endif
++.endm
++
++.macro pixldst4 op, elem_size, reg1, reg2, reg3, reg4, mem_operand, abits
++.if abits > 0
++ op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&, :&abits&]!
++.else
++ op&.&elem_size {d&reg1, d&reg2, d&reg3, d&reg4}, [&mem_operand&]!
++.endif
++.endm
++
++.macro pixldst0 op, elem_size, reg1, idx, mem_operand, abits
++ op&.&elem_size {d&reg1[idx]}, [&mem_operand&]!
++.endm
++
++.macro pixldst numbytes, op, elem_size, basereg, mem_operand, abits
++.if numbytes == 32
++ pixldst4 op, elem_size, %(basereg+4), %(basereg+5), \
++ %(basereg+6), %(basereg+7), mem_operand, abits
++.elseif numbytes == 16
++ pixldst2 op, elem_size, %(basereg+2), %(basereg+3), mem_operand, abits
++.elseif numbytes == 8
++ pixldst1 op, elem_size, %(basereg+1), mem_operand, abits
++.elseif numbytes == 4
++ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 32)
++ pixldst0 op, 32, %(basereg+0), 1, mem_operand, abits
++ .elseif elem_size == 16
++ pixldst0 op, 16, %(basereg+0), 2, mem_operand, abits
++ pixldst0 op, 16, %(basereg+0), 3, mem_operand, abits
++ .else
++ pixldst0 op, 8, %(basereg+0), 4, mem_operand, abits
++ pixldst0 op, 8, %(basereg+0), 5, mem_operand, abits
++ pixldst0 op, 8, %(basereg+0), 6, mem_operand, abits
++ pixldst0 op, 8, %(basereg+0), 7, mem_operand, abits
++ .endif
++.elseif numbytes == 2
++ .if !RESPECT_STRICT_ALIGNMENT || (elem_size == 16)
++ pixldst0 op, 16, %(basereg+0), 1, mem_operand, abits
++ .else
++ pixldst0 op, 8, %(basereg+0), 2, mem_operand, abits
++ pixldst0 op, 8, %(basereg+0), 3, mem_operand, abits
++ .endif
++.elseif numbytes == 1
++ pixldst0 op, 8, %(basereg+0), 1, mem_operand, abits
++.else
++ .error "unsupported size: numbytes"
++.endif
++.endm
++
++.macro pixld numpix, bpp, basereg, mem_operand, abits=0
++.if bpp > 0
++.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
++ pixldst4 vld4, 8, %(basereg+4), %(basereg+5), \
++ %(basereg+6), %(basereg+7), mem_operand, abits
++.else
++ pixldst %(numpix * bpp / 8), vld1, %(bpp), basereg, mem_operand, abits
++.endif
++.endif
++.endm
++
++.macro pixst numpix, bpp, basereg, mem_operand, abits=0
++.if bpp > 0
++.if (bpp == 32) && (numpix == 8) && (DEINTERLEAVE_32BPP_ENABLED != 0)
++ pixldst4 vst4, 8, %(basereg+4), %(basereg+5), \
++ %(basereg+6), %(basereg+7), mem_operand, abits
++.else
++ pixldst %(numpix * bpp / 8), vst1, %(bpp), basereg, mem_operand, abits
++.endif
++.endif
++.endm
++
++.macro pixld_a numpix, bpp, basereg, mem_operand
++.if (bpp * numpix) <= 128
++ pixld numpix, bpp, basereg, mem_operand, %(bpp * numpix)
++.else
++ pixld numpix, bpp, basereg, mem_operand, 128
++.endif
++.endm
++
++.macro pixst_a numpix, bpp, basereg, mem_operand
++.if (bpp * numpix) <= 128
++ pixst numpix, bpp, basereg, mem_operand, %(bpp * numpix)
++.else
++ pixst numpix, bpp, basereg, mem_operand, 128
++.endif
++.endm
++
++.macro vuzp8 reg1, reg2
++ vuzp.8 d&reg1, d&reg2
++.endm
++
++.macro vzip8 reg1, reg2
++ vzip.8 d&reg1, d&reg2
++.endm
++
++/* deinterleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
++.macro pixdeinterleave bpp, basereg
++.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
++ vuzp8 %(basereg+0), %(basereg+1)
++ vuzp8 %(basereg+2), %(basereg+3)
++ vuzp8 %(basereg+1), %(basereg+3)
++ vuzp8 %(basereg+0), %(basereg+2)
++.endif
++.endm
++
++/* interleave B, G, R, A channels for eight 32bpp pixels in 4 registers */
++.macro pixinterleave bpp, basereg
++.if (bpp == 32) && (DEINTERLEAVE_32BPP_ENABLED != 0)
++ vzip8 %(basereg+0), %(basereg+2)
++ vzip8 %(basereg+1), %(basereg+3)
++ vzip8 %(basereg+2), %(basereg+3)
++ vzip8 %(basereg+0), %(basereg+1)
++.endif
++.endm
++
++/*
++ * This is a macro for implementing cache preload. The main idea is that
++ * cache preload logic is mostly independent from the rest of pixels
++ * processing code. It starts at the top left pixel and moves forward
++ * across pixels and can jump across lines. Prefetch distance is handled
++ * in an 'incremental' way: it starts from 0 and advances to the optimal
++ * distance over time. After reaching optimal prefetch distance, it is
++ * kept constant. There are some checks which prevent prefetching
++ * unneeded pixel lines below the image (but it still prefetch a bit
++ * more data on the right side of the image - not a big issue and may
++ * be actually helpful when rendering text glyphs). Additional trick is
++ * the use of LDR instruction for prefetch instead of PLD when moving to
++ * the next line, the point is that we have a high chance of getting TLB
++ * miss in this case, and PLD would be useless.
++ *
++ * This sounds like it may introduce a noticeable overhead (when working with
++ * fully cached data). But in reality, due to having a separate pipeline and
++ * instruction queue for NEON unit in ARM Cortex-A8, normal ARM code can
++ * execute simultaneously with NEON and be completely shadowed by it. Thus
++ * we get no performance overhead at all (*). This looks like a very nice
++ * feature of Cortex-A8, if used wisely. We don't have a hardware hardware
++ * prefetcher, but still can implement some rather advanced prefetch logic
++ * in sofware for almost zero cost!
++ *
++ * (*) The overhead of the prefetcher is visible when running some trivial
++ * pixels processing like simple copy. Anyway, having prefetch is a must
++ * when working with graphics data.
++ */
++.macro cache_preload std_increment, boost_increment
++.if (src_bpp_shift >= 0) || (dst_r_bpp != 0) || (mask_bpp_shift >= 0)
++.if regs_shortage
++ ldr ORIG_W, [sp] /* If we are short on regs, ORIG_W is kept on stack */
++.endif
++.if std_increment != 0
++ add PF_X, PF_X, #std_increment
++.endif
++ tst PF_CTL, #0xF
++ addne PF_X, PF_X, #boost_increment
++ subne PF_CTL, PF_CTL, #1
++ cmp PF_X, ORIG_W
++.if src_bpp_shift >= 0
++ pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++.endif
++.if dst_r_bpp != 0
++ pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++.endif
++.if mask_bpp_shift >= 0
++ pld [PF_MASK, PF_X, lsl #mask_bpp_shift]
++.endif
++ subge PF_X, PF_X, ORIG_W
++ subges PF_CTL, PF_CTL, #0x10
++.if src_bpp_shift >= 0
++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++.endif
++.if dst_r_bpp != 0
++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++.endif
++.if mask_bpp_shift >= 0
++ ldrgeb DUMMY, [PF_MASK, MASK_STRIDE, lsl #mask_bpp_shift]!
++.endif
++.endif
++.endm
++
++/*
++ * Registers are allocated in the following way by default:
++ * d0, d1, d2, d3 - reserved for loading source pixel data
++ * d4, d5, d6, d7 - reserved for loading destination pixel data
++ * d24, d25, d26, d27 - reserved for loading mask pixel data
++ * d28, d29, d30, d31 - final destination pixel data for writeback to memory
++ */
++.macro generate_composite_function fname, \
++ src_bpp, \
++ mask_bpp, \
++ dst_w_bpp, \
++ flags, \
++ pixblock_size, \
++ prefetch_distance, \
++ init, \
++ cleanup, \
++ process_pixblock_head, \
++ process_pixblock_tail, \
++ process_pixblock_tail_head, \
++ dst_w_basereg = 28, \
++ dst_r_basereg = 4, \
++ src_basereg = 0, \
++ mask_basereg = 24
++
++ .global fname
++fname:
++
++ W .req r0 /* width (is updated during processing) */
++ H .req r1 /* height (is updated during processing) */
++ DST_W .req r2 /* destination buffer pointer for writes */
++ DST_STRIDE .req r3 /* destination image stride */
++ SRC .req r4 /* source buffer pointer */
++ SRC_STRIDE .req r5 /* source image stride */
++ DST_R .req r6 /* destination buffer pointer for reads */
++
++ MASK .req r7 /* mask pointer */
++ MASK_STRIDE .req r8 /* mask stride */
++
++ PF_CTL .req r9
++ PF_X .req r10
++ PF_SRC .req r11
++ PF_DST .req r12
++ PF_MASK .req r14
++
++.if mask_bpp == 0
++ ORIG_W .req r7 /* saved original width */
++ DUMMY .req r8 /* temporary register */
++ .set regs_shortage, 0
++.elseif src_bpp == 0
++ ORIG_W .req r4 /* saved original width */
++ DUMMY .req r5 /* temporary register */
++ .set regs_shortage, 0
++.else
++ ORIG_W .req r1 /* saved original width */
++ DUMMY .req r1 /* temporary register */
++ .set regs_shortage, 1
++.endif
++
++ push {r4-r12, lr}
++
++ .set mask_bpp_shift, -1
++
++.if src_bpp == 32
++ .set src_bpp_shift, 2
++.elseif src_bpp == 16
++ .set src_bpp_shift, 1
++.elseif src_bpp == 8
++ .set src_bpp_shift, 0
++.elseif src_bpp == 0
++ .set src_bpp_shift, -1
++.else
++ .error "requested src bpp (src_bpp) is not supported"
++.endif
++.if mask_bpp == 32
++ .set mask_bpp_shift, 2
++.elseif mask_bpp == 8
++ .set mask_bpp_shift, 0
++.elseif mask_bpp == 0
++ .set mask_bpp_shift, -1
++.else
++ .error "requested mask bpp (mask_bpp) is not supported"
++.endif
++.if dst_w_bpp == 32
++ .set dst_bpp_shift, 2
++.elseif dst_w_bpp == 16
++ .set dst_bpp_shift, 1
++.elseif dst_w_bpp == 8
++ .set dst_bpp_shift, 0
++.else
++ .error "requested dst bpp (dst_w_bpp) is not supported"
++.endif
++
++.if (((flags) & FLAG_DST_READWRITE) != 0)
++ .set dst_r_bpp, dst_w_bpp
++.else
++ .set dst_r_bpp, 0
++.endif
++.if (((flags) & FLAG_DEINTERLEAVE_32BPP) != 0)
++ .set DEINTERLEAVE_32BPP_ENABLED, 1
++.else
++ .set DEINTERLEAVE_32BPP_ENABLED, 0
++.endif
++
++.if prefetch_distance < 0 || prefetch_distance > 15
++ .error "invalid prefetch distance (prefetch_distance)"
++.endif
++
++.if src_bpp > 0
++ ldr SRC, [sp, #40]
++.endif
++.if mask_bpp > 0
++ ldr MASK, [sp, #48]
++.endif
++ mov PF_X, #0
++.if src_bpp > 0
++ ldr SRC_STRIDE, [sp, #44]
++.endif
++.if mask_bpp > 0
++ ldr MASK_STRIDE, [sp, #52]
++.endif
++ mov DST_R, DST_W
++ mov PF_SRC, SRC
++ mov PF_DST, DST_R
++ mov PF_MASK, MASK
++ mov PF_CTL, H, lsl #4
++ /* pf_ctl = 10 | ((h - 1) << 4) */
++ add PF_CTL, #(prefetch_distance - 0x10)
++
++ init
++.if regs_shortage
++ push {r0, r1}
++.endif
++ subs H, H, #1
++.if regs_shortage
++ str H, [sp, #4] /* save updated height to stack */
++.else
++ mov ORIG_W, W
++.endif
++ blt 9f
++ cmp W, #(pixblock_size * 2)
++ blt 8f
++0:
++ /* ensure 16 byte alignment of the destination buffer */
++ tst DST_R, #0xF
++ beq 2f
++
++.irp lowbit, 1, 2, 4, 8, 16
++.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
++.if lowbit < 16 /* we don't need more than 16-byte alignment */
++ tst DST_R, #lowbit
++ beq 1f
++.endif
++ pixld (lowbit * 8 / dst_w_bpp), src_bpp, src_basereg, SRC
++ pixld (lowbit * 8 / dst_w_bpp), mask_bpp, mask_basereg, MASK
++.if dst_r_bpp > 0
++ pixld_a (lowbit * 8 / dst_r_bpp), dst_r_bpp, dst_r_basereg, DST_R
++.else
++ add DST_R, DST_R, #lowbit
++.endif
++ add PF_X, PF_X, #(lowbit * 8 / dst_w_bpp)
++ sub W, W, #(lowbit * 8 / dst_w_bpp)
++1:
++.endif
++.endr
++ pixdeinterleave src_bpp, src_basereg
++ pixdeinterleave mask_bpp, mask_basereg
++ pixdeinterleave dst_r_bpp, dst_r_basereg
++
++ process_pixblock_head
++ cache_preload 0, pixblock_size
++ process_pixblock_tail
++
++ pixinterleave dst_w_bpp, dst_w_basereg
++.irp lowbit, 1, 2, 4, 8, 16
++.if (dst_w_bpp <= (lowbit * 8)) && ((lowbit * 8) < (pixblock_size * dst_w_bpp))
++.if lowbit < 16 /* we don't need more than 16-byte alignment */
++ tst DST_W, #lowbit
++ beq 1f
++.endif
++ pixst_a (lowbit * 8 / dst_w_bpp), dst_w_bpp, dst_w_basereg, DST_W
++1:
++.endif
++.endr
++2:
++
++ pixld_a pixblock_size, dst_r_bpp, \
++ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
++ pixld pixblock_size, src_bpp, \
++ (src_basereg - pixblock_size * src_bpp / 64), SRC
++ pixld pixblock_size, mask_bpp, \
++ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
++ add PF_X, PF_X, #pixblock_size
++ process_pixblock_head
++ cache_preload 0, pixblock_size
++ subs W, W, #(pixblock_size * 2)
++ blt 2f
++1: /* innermost pipelined loop */
++ process_pixblock_tail_head
++ subs W, W, #pixblock_size
++ bge 1b
++2:
++ process_pixblock_tail
++ pixst_a pixblock_size, dst_w_bpp, \
++ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
++
++ /* process up to (pixblock_size - 1) remaining pixels */
++ tst W, #(pixblock_size - 1)
++ beq 2f
++.irp chunk_size, 16, 8, 4, 2, 1
++.if pixblock_size > chunk_size
++ tst W, #chunk_size
++ beq 1f
++ pixld chunk_size, src_bpp, src_basereg, SRC
++ pixld chunk_size, mask_bpp, mask_basereg, MASK
++ pixld_a chunk_size, dst_r_bpp, dst_r_basereg, DST_R
++ add PF_X, PF_X, #chunk_size
++1:
++.endif
++.endr
++ pixdeinterleave src_bpp, src_basereg
++ pixdeinterleave mask_bpp, mask_basereg
++ pixdeinterleave dst_r_bpp, dst_r_basereg
++
++ process_pixblock_head
++ cache_preload 0, pixblock_size
++ process_pixblock_tail
++
++ pixinterleave dst_w_bpp, dst_w_basereg
++.irp chunk_size, 16, 8, 4, 2, 1
++.if pixblock_size > chunk_size
++ tst W, #chunk_size
++ beq 1f
++ pixst_a chunk_size, dst_w_bpp, dst_w_basereg, DST_W
++1:
++.endif
++.endr
++2:
++
++.if regs_shortage
++ ldrd W, [sp] /* load W and H (width and height) from stack */
++.else
++ mov W, ORIG_W
++.endif
++ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift
++.if src_bpp != 0
++ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift
++.endif
++.if mask_bpp != 0
++ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift
++.endif
++ sub DST_W, DST_W, W, lsl #dst_bpp_shift
++.if src_bpp != 0
++ sub SRC, SRC, W, lsl #src_bpp_shift
++.endif
++.if mask_bpp != 0
++ sub MASK, MASK, W, lsl #mask_bpp_shift
++.endif
++ subs H, H, #1
++ mov DST_R, DST_W
++.if regs_shortage
++ str H, [sp, #4] /* save updated height to stack */
++.endif
++ bge 0b
++.if regs_shortage
++ pop {r0, r1}
++.endif
++ cleanup
++ pop {r4-r12, pc} /* exit */
++
++8: /* handle small rectangle, width up to 15 pixels */
++ tst W, #pixblock_size
++ beq 1f
++ pixld pixblock_size, dst_r_bpp, \
++ (dst_r_basereg - pixblock_size * dst_r_bpp / 64), DST_R
++ pixld pixblock_size, src_bpp, \
++ (src_basereg - pixblock_size * src_bpp / 64), SRC
++ pixld pixblock_size, mask_bpp, \
++ (mask_basereg - pixblock_size * mask_bpp / 64), MASK
++ process_pixblock_head
++ process_pixblock_tail
++ pixst pixblock_size, dst_w_bpp, \
++ (dst_w_basereg - pixblock_size * dst_w_bpp / 64), DST_W
++1: /* process the remaining pixels, which do not fully fill one block */
++ tst W, #(pixblock_size - 1)
++ beq 2f
++.irp chunk_size, 16, 8, 4, 2, 1
++.if pixblock_size > chunk_size
++ tst W, #chunk_size
++ beq 1f
++ pixld chunk_size, src_bpp, src_basereg, SRC
++ pixld chunk_size, mask_bpp, mask_basereg, MASK
++ pixld chunk_size, dst_r_bpp, dst_r_basereg, DST_R
++1:
++.endif
++.endr
++ pixdeinterleave src_bpp, src_basereg
++ pixdeinterleave mask_bpp, mask_basereg
++ pixdeinterleave dst_r_bpp, dst_r_basereg
++ process_pixblock_head
++ process_pixblock_tail
++ pixinterleave dst_w_bpp, dst_w_basereg
++.irp chunk_size, 16, 8, 4, 2, 1
++.if pixblock_size > chunk_size
++ tst W, #chunk_size
++ beq 1f
++ pixst chunk_size, dst_w_bpp, dst_w_basereg, DST_W
++1:
++.endif
++.endr
++2:
++.if regs_shortage
++ ldrd W, [sp] /* load W and H (width and height) from stack */
++.else
++ mov W, ORIG_W
++.endif
++ add DST_W, DST_W, DST_STRIDE, lsl #dst_bpp_shift
++.if src_bpp != 0
++ add SRC, SRC, SRC_STRIDE, lsl #src_bpp_shift
++.endif
++.if mask_bpp != 0
++ add MASK, MASK, MASK_STRIDE, lsl #mask_bpp_shift
++.endif
++ sub DST_W, DST_W, W, lsl #dst_bpp_shift
++.if src_bpp != 0
++ sub SRC, SRC, W, lsl #src_bpp_shift
++.endif
++.if mask_bpp != 0
++ sub MASK, MASK, W, lsl #mask_bpp_shift
++.endif
++ subs H, H, #1
++ mov DST_R, DST_W
++.if regs_shortage
++ str H, [sp, #4] /* save updated height to stack */
++.endif
++ bge 8b
++9:
++.if regs_shortage
++ pop {r0, r1}
++.endif
++ cleanup
++ pop {r4-r12, pc} /* exit */
++
++ .unreq SRC
++ .unreq MASK
++ .unreq DST_R
++ .unreq DST_W
++ .unreq ORIG_W
++ .unreq W
++ .unreq H
++ .unreq SRC_STRIDE
++ .unreq DST_STRIDE
++ .unreq MASK_STRIDE
++ .unreq PF_CTL
++ .unreq PF_X
++ .unreq PF_SRC
++ .unreq PF_DST
++ .unreq PF_MASK
++ .unreq DUMMY
++.endm
++
++.macro default_init
++.endm
++
++.macro default_cleanup
++.endm
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index 9caef61..fe57daa 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -1901,8 +1901,63 @@ pixman_fill_neon (uint32_t *bits,
+ #endif
+ }
+
++/*
++ * Use GNU assembler optimizations only if we are completely sure that
++ * the target system has compatible ABI and calling conventions. This
++ * check can be updated/extended if more systems turn out to be actually
++ * compatible.
++ */
++#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM)
++#define USE_GNU_ASSEMBLER_ASM
++#endif
++
++#ifdef USE_GNU_ASSEMBLER_ASM
++
++void
++pixman_composite_over_8888_0565_asm_neon (int32_t w,
++ int32_t h,
++ uint16_t *dst,
++ int32_t dst_stride,
++ uint32_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_over_8888_0565 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint16_t *dst_line;
++ uint32_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_over_8888_0565_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++#endif
++
+ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ {
++#ifdef USE_GNU_ASSEMBLER_ASM
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 },
++#endif
+ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 },
+ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 },
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch b/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch
new file mode 100644
index 0000000000..00b682e34d
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch
@@ -0,0 +1,63 @@
+From b17297cf15122e5b38c082c9fe6f1ff708b7efa4 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 12 Oct 2009 21:50:37 +0300
+Subject: [PATCH 3/7] ARM: Added pixman_composite_src_8888_0565_asm_neon function
+
+---
+ pixman/pixman-arm-neon-asm.S | 43 ++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 43 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 843899f..20d2587 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -307,3 +307,46 @@ generate_composite_function \
+ 4, /* dst_r_basereg */ \
+ 0, /* src_basereg */ \
+ 24 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_8888_0565_process_pixblock_head
++ vshll.u8 q8, d1, #8
++ vshll.u8 q14, d2, #8
++ vshll.u8 q9, d0, #8
++.endm
++
++.macro pixman_composite_src_8888_0565_process_pixblock_tail
++ vsri.u16 q14, q8, #5
++ vsri.u16 q14, q9, #11
++.endm
++
++.macro pixman_composite_src_8888_0565_process_pixblock_tail_head
++ vsri.u16 q14, q8, #5
++ add PF_X, PF_X, #8
++ tst PF_CTL, #0xF
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ addne PF_X, PF_X, #8
++ subne PF_CTL, PF_CTL, #1
++ vsri.u16 q14, q9, #11
++ cmp PF_X, ORIG_W
++ pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++ vshll.u8 q8, d1, #8
++ vst1.16 {d28, d29}, [DST_W, :128]!
++ subge PF_X, PF_X, ORIG_W
++ subges PF_CTL, PF_CTL, #0x10
++ vshll.u8 q14, d2, #8
++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++ vshll.u8 q9, d0, #8
++.endm
++
++generate_composite_function \
++ pixman_composite_src_8888_0565_asm_neon, 32, 0, 16, \
++ FLAG_DST_WRITEONLY | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ 10, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_0565_process_pixblock_head, \
++ pixman_composite_src_8888_0565_process_pixblock_tail, \
++ pixman_composite_src_8888_0565_process_pixblock_tail_head
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch b/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch
new file mode 100644
index 0000000000..445697a84f
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch
@@ -0,0 +1,60 @@
+From 9cfedd684bdeabe9e97303e6f432c3ffb440426c Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 12 Oct 2009 21:51:54 +0300
+Subject: [PATCH 4/7] ARM: Added pixman_composite_add_8000_8000_asm_neon function
+
+---
+ pixman/pixman-arm-neon-asm.S | 40 ++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 40 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 20d2587..373cbd0 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -350,3 +350,43 @@ generate_composite_function \
+ pixman_composite_src_8888_0565_process_pixblock_head, \
+ pixman_composite_src_8888_0565_process_pixblock_tail, \
+ pixman_composite_src_8888_0565_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_add_8000_8000_process_pixblock_head
++ vqadd.u8 q14, q0, q2
++ vqadd.u8 q15, q1, q3
++.endm
++
++.macro pixman_composite_add_8000_8000_process_pixblock_tail
++.endm
++
++.macro pixman_composite_add_8000_8000_process_pixblock_tail_head
++ vld1.8 {d0, d1, d2, d3}, [SRC]!
++ add PF_X, PF_X, #32
++ tst PF_CTL, #0xF
++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ addne PF_X, PF_X, #32
++ subne PF_CTL, PF_CTL, #1
++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ cmp PF_X, ORIG_W
++ pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++ pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++ subge PF_X, PF_X, ORIG_W
++ subges PF_CTL, PF_CTL, #0x10
++ vqadd.u8 q14, q0, q2
++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++ vqadd.u8 q15, q1, q3
++.endm
++
++generate_composite_function \
++ pixman_composite_add_8000_8000_asm_neon, 8, 0, 8, \
++ FLAG_DST_READWRITE, \
++ 32, /* number of pixels, processed in a single block */ \
++ 10, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_add_8000_8000_process_pixblock_head, \
++ pixman_composite_add_8000_8000_process_pixblock_tail, \
++ pixman_composite_add_8000_8000_process_pixblock_tail_head
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch b/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch
new file mode 100644
index 0000000000..e4c8936c84
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch
@@ -0,0 +1,87 @@
+From 9eb4ecf68cf5609240222d10f1a4c9dfebdb3498 Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 12 Oct 2009 21:52:49 +0300
+Subject: [PATCH 5/7] ARM: Added pixman_composite_over_8888_8888_asm_neon function
+
+---
+ pixman/pixman-arm-neon-asm.S | 67 ++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 67 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index 373cbd0..b11a9a7 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -390,3 +390,70 @@ generate_composite_function \
+ pixman_composite_add_8000_8000_process_pixblock_head, \
+ pixman_composite_add_8000_8000_process_pixblock_tail, \
+ pixman_composite_add_8000_8000_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_over_8888_8888_process_pixblock_head
++ vmvn.8 d24, d3 /* get inverted alpha */
++ /* do alpha blending */
++ vmull.u8 q8, d24, d4
++ vmull.u8 q9, d24, d5
++ vmull.u8 q10, d24, d6
++ vmull.u8 q11, d24, d7
++.endm
++
++.macro pixman_composite_over_8888_8888_process_pixblock_tail
++ vrshr.u16 q14, q8, #8
++ vrshr.u16 q15, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ vraddhn.u16 d28, q14, q8
++ vraddhn.u16 d29, q15, q9
++ vraddhn.u16 d30, q12, q10
++ vraddhn.u16 d31, q13, q11
++ vqadd.u8 q14, q0, q14
++ vqadd.u8 q15, q1, q15
++.endm
++
++.macro pixman_composite_over_8888_8888_process_pixblock_tail_head
++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ vrshr.u16 q14, q8, #8
++ add PF_X, PF_X, #8
++ tst PF_CTL, #0xF
++ vrshr.u16 q15, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ addne PF_X, PF_X, #8
++ subne PF_CTL, PF_CTL, #1
++ vraddhn.u16 d28, q14, q8
++ vraddhn.u16 d29, q15, q9
++ cmp PF_X, ORIG_W
++ vraddhn.u16 d30, q12, q10
++ vraddhn.u16 d31, q13, q11
++ vqadd.u8 q14, q0, q14
++ vqadd.u8 q15, q1, q15
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ pld [PF_SRC, PF_X, lsl #src_bpp_shift]
++ vmvn.8 d22, d3
++ pld [PF_DST, PF_X, lsl #dst_bpp_shift]
++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ subge PF_X, PF_X, ORIG_W
++ vmull.u8 q8, d22, d4
++ subges PF_CTL, PF_CTL, #0x10
++ vmull.u8 q9, d22, d5
++ ldrgeb DUMMY, [PF_SRC, SRC_STRIDE, lsl #src_bpp_shift]!
++ vmull.u8 q10, d22, d6
++ ldrgeb DUMMY, [PF_DST, DST_STRIDE, lsl #dst_bpp_shift]!
++ vmull.u8 q11, d22, d7
++.endm
++
++generate_composite_function \
++ pixman_composite_over_8888_8888_asm_neon, 32, 0, 32, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_over_8888_8888_process_pixblock_head, \
++ pixman_composite_over_8888_8888_process_pixblock_tail, \
++ pixman_composite_over_8888_8888_process_pixblock_tail_head
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch b/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch
new file mode 100644
index 0000000000..0f89c88fef
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch
@@ -0,0 +1,540 @@
+From 606a73203318e44af4362684368bc24d2aed841d Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 12 Oct 2009 21:57:17 +0300
+Subject: [PATCH 6/7] ARM: Added a set of NEON functions (not fully optimized)
+
+---
+ pixman/pixman-arm-neon-asm.S | 520 ++++++++++++++++++++++++++++++++++++++++++
+ 1 files changed, 520 insertions(+), 0 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon-asm.S b/pixman/pixman-arm-neon-asm.S
+index b11a9a7..bca499a 100644
+--- a/pixman/pixman-arm-neon-asm.S
++++ b/pixman/pixman-arm-neon-asm.S
+@@ -457,3 +457,523 @@ generate_composite_function \
+ pixman_composite_over_8888_8888_process_pixblock_head, \
+ pixman_composite_over_8888_8888_process_pixblock_tail, \
+ pixman_composite_over_8888_8888_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_over_n_8_0565_process_pixblock_head
++ /* in */
++ vmull.u8 q0, d24, d8
++ vmull.u8 q1, d24, d9
++ vmull.u8 q6, d24, d10
++ vmull.u8 q7, d24, d11
++ vrshr.u16 q10, q0, #8
++ vrshr.u16 q11, q1, #8
++ vrshr.u16 q12, q6, #8
++ vrshr.u16 q13, q7, #8
++ vraddhn.u16 d0, q0, q10
++ vraddhn.u16 d1, q1, q11
++ vraddhn.u16 d2, q6, q12
++ vraddhn.u16 d3, q7, q13
++
++ vshrn.u16 d6, q2, #8
++ vshrn.u16 d7, q2, #3
++ vsli.u16 q2, q2, #5
++ vsri.u8 d6, d6, #5
++ vmvn.8 d3, d3
++ vsri.u8 d7, d7, #6
++ vshrn.u16 d30, q2, #2
++ /* now do alpha blending */
++ vmull.u8 q10, d3, d6
++ vmull.u8 q11, d3, d7
++ vmull.u8 q12, d3, d30
++ vrshr.u16 q13, q10, #8
++ vrshr.u16 q3, q11, #8
++ vrshr.u16 q15, q12, #8
++ vraddhn.u16 d20, q10, q13
++ vraddhn.u16 d23, q11, q3
++ vraddhn.u16 d22, q12, q15
++.endm
++
++.macro pixman_composite_over_n_8_0565_process_pixblock_tail
++ vqadd.u8 d16, d2, d20
++ vqadd.u8 q9, q0, q11
++ /* convert to r5g6b5 */
++ vshll.u8 q14, d16, #8
++ vshll.u8 q8, d19, #8
++ vshll.u8 q9, d18, #8
++ vsri.u16 q14, q8, #5
++ vsri.u16 q14, q9, #11
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_over_n_8_0565_process_pixblock_tail_head
++ pixman_composite_over_n_8_0565_process_pixblock_tail
++ vst1.16 {d28, d29}, [DST_W, :128]!
++ vld1.16 {d4, d5}, [DST_R, :128]!
++ vld1.8 {d24}, [MASK]!
++ cache_preload 8, 8
++ pixman_composite_over_n_8_0565_process_pixblock_head
++.endm
++
++.macro pixman_composite_over_n_8_0565_init
++ add DUMMY, sp, #40
++ vpush {d8-d15}
++ vld1.32 {d11[0]}, [DUMMY]
++ vdup.8 d8, d11[0]
++ vdup.8 d9, d11[1]
++ vdup.8 d10, d11[2]
++ vdup.8 d11, d11[3]
++.endm
++
++.macro pixman_composite_over_n_8_0565_cleanup
++ vpop {d8-d15}
++.endm
++
++generate_composite_function \
++ pixman_composite_over_n_8_0565_asm_neon, 0, 8, 16, \
++ FLAG_DST_READWRITE, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_over_n_8_0565_init, \
++ pixman_composite_over_n_8_0565_cleanup, \
++ pixman_composite_over_n_8_0565_process_pixblock_head, \
++ pixman_composite_over_n_8_0565_process_pixblock_tail, \
++ pixman_composite_over_n_8_0565_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_src_0565_0565_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_0565_0565_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_0565_0565_process_pixblock_tail_head
++ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]!
++ vld1.16 {d0, d1, d2, d3}, [SRC]!
++ cache_preload 16, 16
++.endm
++
++generate_composite_function \
++ pixman_composite_src_0565_0565_asm_neon, 16, 0, 16, \
++ FLAG_DST_WRITEONLY, \
++ 16, /* number of pixels, processed in a single block */ \
++ 10, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_0565_0565_process_pixblock_head, \
++ pixman_composite_src_0565_0565_process_pixblock_tail, \
++ pixman_composite_src_0565_0565_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_n_8_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_n_8_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_n_8_process_pixblock_tail_head
++ vst1.8 {d0, d1, d2, d3}, [DST_W, :128]!
++.endm
++
++.macro pixman_composite_src_n_8_init
++ add DUMMY, sp, #40
++ vld1.32 {d0[0]}, [DUMMY]
++ vsli.u64 d0, d0, #8
++ vsli.u64 d0, d0, #16
++ vsli.u64 d0, d0, #32
++ vmov d1, d0
++ vmov q1, q0
++.endm
++
++.macro pixman_composite_src_n_8_cleanup
++.endm
++
++generate_composite_function \
++ pixman_composite_src_n_8_asm_neon, 0, 0, 8, \
++ FLAG_DST_WRITEONLY, \
++ 32, /* number of pixels, processed in a single block */ \
++ 0, /* prefetch distance */ \
++ pixman_composite_src_n_8_init, \
++ pixman_composite_src_n_8_cleanup, \
++ pixman_composite_src_n_8_process_pixblock_head, \
++ pixman_composite_src_n_8_process_pixblock_tail, \
++ pixman_composite_src_n_8_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_n_0565_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_n_0565_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_n_0565_process_pixblock_tail_head
++ vst1.16 {d0, d1, d2, d3}, [DST_W, :128]!
++.endm
++
++.macro pixman_composite_src_n_0565_init
++ add DUMMY, sp, #40
++ vld1.32 {d0[0]}, [DUMMY]
++ vsli.u64 d0, d0, #16
++ vsli.u64 d0, d0, #32
++ vmov d1, d0
++ vmov q1, q0
++.endm
++
++.macro pixman_composite_src_n_0565_cleanup
++.endm
++
++generate_composite_function \
++ pixman_composite_src_n_0565_asm_neon, 0, 0, 16, \
++ FLAG_DST_WRITEONLY, \
++ 16, /* number of pixels, processed in a single block */ \
++ 0, /* prefetch distance */ \
++ pixman_composite_src_n_0565_init, \
++ pixman_composite_src_n_0565_cleanup, \
++ pixman_composite_src_n_0565_process_pixblock_head, \
++ pixman_composite_src_n_0565_process_pixblock_tail, \
++ pixman_composite_src_n_0565_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_n_8888_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_n_8888_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_n_8888_process_pixblock_tail_head
++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
++.endm
++
++.macro pixman_composite_src_n_8888_init
++ add DUMMY, sp, #40
++ vld1.32 {d0[0]}, [DUMMY]
++ vsli.u64 d0, d0, #32
++ vmov d1, d0
++ vmov q1, q0
++.endm
++
++.macro pixman_composite_src_n_8888_cleanup
++.endm
++
++generate_composite_function \
++ pixman_composite_src_n_8888_asm_neon, 0, 0, 32, \
++ FLAG_DST_WRITEONLY, \
++ 8, /* number of pixels, processed in a single block */ \
++ 0, /* prefetch distance */ \
++ pixman_composite_src_n_8888_init, \
++ pixman_composite_src_n_8888_cleanup, \
++ pixman_composite_src_n_8888_process_pixblock_head, \
++ pixman_composite_src_n_8888_process_pixblock_tail, \
++ pixman_composite_src_n_8888_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_src_8888_8888_process_pixblock_head
++.endm
++
++.macro pixman_composite_src_8888_8888_process_pixblock_tail
++.endm
++
++.macro pixman_composite_src_8888_8888_process_pixblock_tail_head
++ vst1.32 {d0, d1, d2, d3}, [DST_W, :128]!
++ vld1.32 {d0, d1, d2, d3}, [SRC]!
++ cache_preload 8, 8
++.endm
++
++generate_composite_function \
++ pixman_composite_src_8888_8888_asm_neon, 32, 0, 32, \
++ FLAG_DST_WRITEONLY, \
++ 8, /* number of pixels, processed in a single block */ \
++ 10, /* prefetch distance */ \
++ default_init, \
++ default_cleanup, \
++ pixman_composite_src_8888_8888_process_pixblock_head, \
++ pixman_composite_src_8888_8888_process_pixblock_tail, \
++ pixman_composite_src_8888_8888_process_pixblock_tail_head, \
++ 0, /* dst_w_basereg */ \
++ 0, /* dst_r_basereg */ \
++ 0, /* src_basereg */ \
++ 0 /* mask_basereg */
++
++/******************************************************************************/
++
++.macro pixman_composite_over_n_8_8888_process_pixblock_head
++ /* expecting deinterleaved source data in {d8, d9, d10, d11} */
++ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
++ /* and destination data in {d4, d5, d6, d7} */
++ /* mask is in d24 (d25, d26, d27 are unused) */
++
++ /* in */
++ vmull.u8 q0, d24, d8
++ vmull.u8 q1, d24, d9
++ vmull.u8 q6, d24, d10
++ vmull.u8 q7, d24, d11
++ vrshr.u16 q10, q0, #8
++ vrshr.u16 q11, q1, #8
++ vrshr.u16 q12, q6, #8
++ vrshr.u16 q13, q7, #8
++ vraddhn.u16 d0, q0, q10
++ vraddhn.u16 d1, q1, q11
++ vraddhn.u16 d2, q6, q12
++ vraddhn.u16 d3, q7, q13
++ vmvn.8 d24, d3 /* get inverted alpha */
++ /* source: d0 - blue, d1 - green, d2 - red, d3 - alpha */
++ /* destination: d4 - blue, d5 - green, d6 - red, d7 - alpha */
++ /* now do alpha blending */
++ vmull.u8 q8, d24, d4
++ vmull.u8 q9, d24, d5
++ vmull.u8 q10, d24, d6
++ vmull.u8 q11, d24, d7
++.endm
++
++.macro pixman_composite_over_n_8_8888_process_pixblock_tail
++ vrshr.u16 q14, q8, #8
++ vrshr.u16 q15, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ vraddhn.u16 d28, q14, q8
++ vraddhn.u16 d29, q15, q9
++ vraddhn.u16 d30, q12, q10
++ vraddhn.u16 d31, q13, q11
++ vqadd.u8 q14, q0, q14
++ vqadd.u8 q15, q1, q15
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_over_n_8_8888_process_pixblock_tail_head
++ pixman_composite_over_n_8_8888_process_pixblock_tail
++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ vld1.8 {d24}, [MASK]!
++ cache_preload 8, 8
++ pixman_composite_over_n_8_8888_process_pixblock_head
++.endm
++
++.macro pixman_composite_over_n_8_8888_init
++ add DUMMY, sp, #40
++ vpush {d8-d15}
++ vld1.32 {d11[0]}, [DUMMY]
++ vdup.8 d8, d11[0]
++ vdup.8 d9, d11[1]
++ vdup.8 d10, d11[2]
++ vdup.8 d11, d11[3]
++.endm
++
++.macro pixman_composite_over_n_8_8888_cleanup
++ vpop {d8-d15}
++.endm
++
++generate_composite_function \
++ pixman_composite_over_n_8_8888_asm_neon, 0, 8, 32, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_over_n_8_8888_init, \
++ pixman_composite_over_n_8_8888_cleanup, \
++ pixman_composite_over_n_8_8888_process_pixblock_head, \
++ pixman_composite_over_n_8_8888_process_pixblock_tail, \
++ pixman_composite_over_n_8_8888_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_add_n_8_8_process_pixblock_head
++ /* expecting source data in {d8, d9, d10, d11} */
++ /* d8 - blue, d9 - green, d10 - red, d11 - alpha */
++ /* and destination data in {d4, d5, d6, d7} */
++ /* mask is in d24, d25, d26, d27 */
++ vmull.u8 q0, d24, d11
++ vmull.u8 q1, d25, d11
++ vmull.u8 q6, d26, d11
++ vmull.u8 q7, d27, d11
++ vrshr.u16 q10, q0, #8
++ vrshr.u16 q11, q1, #8
++ vrshr.u16 q12, q6, #8
++ vrshr.u16 q13, q7, #8
++ vraddhn.u16 d0, q0, q10
++ vraddhn.u16 d1, q1, q11
++ vraddhn.u16 d2, q6, q12
++ vraddhn.u16 d3, q7, q13
++ vqadd.u8 q14, q0, q2
++ vqadd.u8 q15, q1, q3
++.endm
++
++.macro pixman_composite_add_n_8_8_process_pixblock_tail
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_add_n_8_8_process_pixblock_tail_head
++ pixman_composite_add_n_8_8_process_pixblock_tail
++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ vld1.8 {d24, d25, d26, d27}, [MASK]!
++ cache_preload 32, 32
++ pixman_composite_add_n_8_8_process_pixblock_head
++.endm
++
++.macro pixman_composite_add_n_8_8_init
++ add DUMMY, sp, #40
++ vpush {d8-d15}
++ vld1.32 {d11[0]}, [DUMMY]
++ vdup.8 d11, d11[3]
++.endm
++
++.macro pixman_composite_add_n_8_8_cleanup
++ vpop {d8-d15}
++.endm
++
++generate_composite_function \
++ pixman_composite_add_n_8_8_asm_neon, 0, 8, 8, \
++ FLAG_DST_READWRITE, \
++ 32, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_add_n_8_8_init, \
++ pixman_composite_add_n_8_8_cleanup, \
++ pixman_composite_add_n_8_8_process_pixblock_head, \
++ pixman_composite_add_n_8_8_process_pixblock_tail, \
++ pixman_composite_add_n_8_8_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_add_8_8_8_process_pixblock_head
++ /* expecting source data in {d0, d1, d2, d3} */
++ /* destination data in {d4, d5, d6, d7} */
++ /* mask in {d24, d25, d26, d27} */
++ vmull.u8 q8, d24, d0
++ vmull.u8 q9, d25, d1
++ vmull.u8 q10, d26, d2
++ vmull.u8 q11, d27, d3
++ vrshr.u16 q0, q8, #8
++ vrshr.u16 q1, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ vraddhn.u16 d0, q0, q8
++ vraddhn.u16 d1, q1, q9
++ vraddhn.u16 d2, q12, q10
++ vraddhn.u16 d3, q13, q11
++ vqadd.u8 q14, q0, q2
++ vqadd.u8 q15, q1, q3
++.endm
++
++.macro pixman_composite_add_8_8_8_process_pixblock_tail
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_add_8_8_8_process_pixblock_tail_head
++ pixman_composite_add_8_8_8_process_pixblock_tail
++ vst1.8 {d28, d29, d30, d31}, [DST_W, :128]!
++ vld1.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ vld1.8 {d24, d25, d26, d27}, [MASK]!
++ vld1.8 {d0, d1, d2, d3}, [SRC]!
++ cache_preload 32, 32
++ pixman_composite_add_8_8_8_process_pixblock_head
++.endm
++
++.macro pixman_composite_add_8_8_8_init
++.endm
++
++.macro pixman_composite_add_8_8_8_cleanup
++.endm
++
++generate_composite_function \
++ pixman_composite_add_8_8_8_asm_neon, 8, 8, 8, \
++ FLAG_DST_READWRITE, \
++ 32, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_add_8_8_8_init, \
++ pixman_composite_add_8_8_8_cleanup, \
++ pixman_composite_add_8_8_8_process_pixblock_head, \
++ pixman_composite_add_8_8_8_process_pixblock_tail, \
++ pixman_composite_add_8_8_8_process_pixblock_tail_head
++
++/******************************************************************************/
++
++.macro pixman_composite_over_8888_n_8888_process_pixblock_head
++ /* expecting source data in {d0, d1, d2, d3} */
++ /* destination data in {d4, d5, d6, d7} */
++ /* solid mask is in d15 */
++
++ /* 'in' */
++ vmull.u8 q8, d15, d3
++ vmull.u8 q6, d15, d2
++ vmull.u8 q5, d15, d1
++ vmull.u8 q4, d15, d0
++ vrshr.u16 q13, q8, #8
++ vrshr.u16 q12, q6, #8
++ vrshr.u16 q11, q5, #8
++ vrshr.u16 q10, q4, #8
++ vraddhn.u16 d3, q8, q13
++ vraddhn.u16 d2, q6, q12
++ vraddhn.u16 d1, q5, q11
++ vraddhn.u16 d0, q4, q10
++ vmvn.8 d24, d3 /* get inverted alpha */
++ /* now do alpha blending */
++ vmull.u8 q8, d24, d4
++ vmull.u8 q9, d24, d5
++ vmull.u8 q10, d24, d6
++ vmull.u8 q11, d24, d7
++.endm
++
++.macro pixman_composite_over_8888_n_8888_process_pixblock_tail
++ vrshr.u16 q14, q8, #8
++ vrshr.u16 q15, q9, #8
++ vrshr.u16 q12, q10, #8
++ vrshr.u16 q13, q11, #8
++ vraddhn.u16 d28, q14, q8
++ vraddhn.u16 d29, q15, q9
++ vraddhn.u16 d30, q12, q10
++ vraddhn.u16 d31, q13, q11
++ vqadd.u8 q14, q0, q14
++ vqadd.u8 q15, q1, q15
++.endm
++
++/* TODO: expand macros and do better instructions scheduling */
++.macro pixman_composite_over_8888_n_8888_process_pixblock_tail_head
++ vld4.8 {d4, d5, d6, d7}, [DST_R, :128]!
++ pixman_composite_over_8888_n_8888_process_pixblock_tail
++ vld4.8 {d0, d1, d2, d3}, [SRC]!
++ cache_preload 8, 8
++ pixman_composite_over_8888_n_8888_process_pixblock_head
++ vst4.8 {d28, d29, d30, d31}, [DST_W, :128]!
++.endm
++
++.macro pixman_composite_over_8888_n_8888_init
++ add DUMMY, sp, #48
++ vpush {d8-d15}
++ vld1.32 {d15[0]}, [DUMMY]
++ vdup.8 d15, d15[3]
++.endm
++
++.macro pixman_composite_over_8888_n_8888_cleanup
++ vpop {d8-d15}
++.endm
++
++generate_composite_function \
++ pixman_composite_over_8888_n_8888_asm_neon, 32, 0, 32, \
++ FLAG_DST_READWRITE | FLAG_DEINTERLEAVE_32BPP, \
++ 8, /* number of pixels, processed in a single block */ \
++ 5, /* prefetch distance */ \
++ pixman_composite_over_8888_n_8888_init, \
++ pixman_composite_over_8888_n_8888_cleanup, \
++ pixman_composite_over_8888_n_8888_process_pixblock_head, \
++ pixman_composite_over_8888_n_8888_process_pixblock_tail, \
++ pixman_composite_over_8888_n_8888_process_pixblock_tail_head
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch b/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch
new file mode 100644
index 0000000000..c14bac153c
--- /dev/null
+++ b/recipes/xorg-lib/pixman/0007-ARM-Enabled-new-NEON-optimizations.patch
@@ -0,0 +1,592 @@
+From 98d458dea913d7d76c48c48de9ef3aee85cced3a Mon Sep 17 00:00:00 2001
+From: Siarhei Siamashka <siarhei.siamashka@nokia.com>
+Date: Mon, 12 Oct 2009 22:25:38 +0300
+Subject: [PATCH 7/7] ARM: Enabled new NEON optimizations
+
+---
+ pixman/pixman-arm-neon.c | 535 ++++++++++++++++++++++++++++++++++++++++++++--
+ 1 files changed, 520 insertions(+), 15 deletions(-)
+
+diff --git a/pixman/pixman-arm-neon.c b/pixman/pixman-arm-neon.c
+index fe57daa..2811099 100644
+--- a/pixman/pixman-arm-neon.c
++++ b/pixman/pixman-arm-neon.c
+@@ -34,6 +34,18 @@
+ #include <string.h>
+ #include "pixman-private.h"
+
++/*
++ * Use GNU assembler optimizations only if we are completely sure that
++ * the target system has compatible ABI and calling conventions. This
++ * check can be updated/extended if more systems turn out to be actually
++ * compatible.
++ */
++#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM)
++#define USE_GNU_ASSEMBLER_ARM_NEON
++#endif
++
++#ifndef USE_GNU_ASSEMBLER_ARM_NEON
++
+ /* Deal with an intrinsic that is defined differently in GCC */
+ #if !defined(__ARMCC_VERSION) && !defined(__pld)
+ #define __pld(_x) __builtin_prefetch (_x)
+@@ -1901,17 +1913,7 @@ pixman_fill_neon (uint32_t *bits,
+ #endif
+ }
+
+-/*
+- * Use GNU assembler optimizations only if we are completely sure that
+- * the target system has compatible ABI and calling conventions. This
+- * check can be updated/extended if more systems turn out to be actually
+- * compatible.
+- */
+-#if defined(__linux__) && defined(__ARM_EABI__) && defined(USE_GCC_INLINE_ASM)
+-#define USE_GNU_ASSEMBLER_ASM
+-#endif
+-
+-#ifdef USE_GNU_ASSEMBLER_ASM
++#else /* USE_GNU_ASSEMBLER_ARM_NEON */
+
+ void
+ pixman_composite_over_8888_0565_asm_neon (int32_t w,
+@@ -1941,23 +1943,525 @@ neon_composite_over_8888_0565 (pixman_implementation_t *imp,
+ int32_t dst_stride, src_stride;
+
+ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
+- src_stride, src_line, 1);
++ src_stride, src_line, 1);
+ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
+- dst_stride, dst_line, 1);
++ dst_stride, dst_line, 1);
+
+ pixman_composite_over_8888_0565_asm_neon (width, height,
+ dst_line, dst_stride,
+ src_line, src_stride);
+ }
+
++void
++pixman_composite_src_8888_0565_asm_neon (int32_t w,
++ int32_t h,
++ uint16_t *dst,
++ int32_t dst_stride,
++ uint32_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_src_8888_0565 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint16_t *dst_line;
++ uint32_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_src_8888_0565_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++void
++pixman_composite_src_0565_0565_asm_neon (int32_t w,
++ int32_t h,
++ uint16_t *dst,
++ int32_t dst_stride,
++ uint16_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_src_0565_0565 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint16_t *dst_line;
++ uint16_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint16_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_src_0565_0565_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++
++void
++pixman_composite_src_8888_8888_asm_neon (int32_t w,
++ int32_t h,
++ uint32_t *dst,
++ int32_t dst_stride,
++ uint32_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_src_8888_8888 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint32_t *dst_line;
++ uint32_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_src_8888_8888_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++void
++pixman_composite_over_8888_8888_asm_neon (int32_t w,
++ int32_t h,
++ uint32_t *dst,
++ int32_t dst_stride,
++ uint32_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_over_8888_8888 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint32_t *dst_line;
++ uint32_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_over_8888_8888_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++void
++pixman_composite_add_8000_8000_asm_neon (int32_t w,
++ int32_t h,
++ uint8_t *dst,
++ int32_t dst_stride,
++ uint8_t *src,
++ int32_t src_stride);
++
++static void
++neon_composite_add_8000_8000 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint8_t *dst_line;
++ uint8_t *src_line;
++ int32_t dst_stride, src_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_add_8000_8000_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride);
++}
++
++void
++pixman_composite_over_n_8_0565_asm_neon (int32_t w,
++ int32_t h,
++ uint16_t *dst,
++ int32_t dst_stride,
++ uint32_t src,
++ int32_t unused,
++ uint8_t *mask,
++ int32_t mask_stride);
++
++static void
++neon_composite_over_n_8_0565 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint16_t *dst_line;
++ uint8_t *mask_line;
++ int32_t dst_stride, mask_stride;
++ uint32_t src;
++
++ src = _pixman_image_get_solid (src_image, dst_image->bits.format);
++
++ if (src == 0)
++ return;
++
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint16_t,
++ dst_stride, dst_line, 1);
++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
++ mask_stride, mask_line, 1);
++
++ pixman_composite_over_n_8_0565_asm_neon (width, height,
++ dst_line, dst_stride,
++ src, 0,
++ mask_line, mask_stride);
++}
++
++void
++pixman_composite_over_n_8_8888_asm_neon (int32_t w,
++ int32_t h,
++ uint32_t *dst,
++ int32_t dst_stride,
++ uint32_t src,
++ int32_t unused,
++ uint8_t *mask,
++ int32_t mask_stride);
++
++static void
++neon_composite_over_n_8_8888 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint32_t *dst_line;
++ uint8_t *mask_line;
++ int32_t dst_stride, mask_stride;
++ uint32_t src;
++
++ src = _pixman_image_get_solid (src_image, dst_image->bits.format);
++
++ if (src == 0)
++ return;
++
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t,
++ dst_stride, dst_line, 1);
++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
++ mask_stride, mask_line, 1);
++
++ pixman_composite_over_n_8_8888_asm_neon (width, height,
++ dst_line, dst_stride,
++ src, 0,
++ mask_line, mask_stride);
++}
++
++void
++pixman_composite_add_8_8_8_asm_neon (int32_t w,
++ int32_t h,
++ uint8_t *dst,
++ int32_t dst_stride,
++ uint8_t *src,
++ int32_t src_stride,
++ uint8_t *mask,
++ int32_t mask_stride);
++
++static void
++neon_composite_add_8_8_8 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint8_t *src_line;
++ uint8_t *dst_line;
++ uint8_t *mask_line;
++ int32_t src_stride, dst_stride, mask_stride;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint8_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t,
++ dst_stride, dst_line, 1);
++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
++ mask_stride, mask_line, 1);
++
++ pixman_composite_add_8_8_8_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride,
++ mask_line, mask_stride);
++}
++
++void
++pixman_composite_add_n_8_8_asm_neon (int32_t w,
++ int32_t h,
++ uint8_t *dst,
++ int32_t dst_stride,
++ uint32_t src,
++ int32_t unused,
++ uint8_t *mask,
++ int32_t mask_stride);
++
++static void
++neon_composite_add_n_8_8 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint8_t *dst_line;
++ uint8_t *mask_line;
++ int32_t dst_stride, mask_stride;
++ uint32_t src;
++
++ src = _pixman_image_get_solid (src_image, dst_image->bits.format);
++
++ if (src == 0)
++ return;
++
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint8_t,
++ dst_stride, dst_line, 1);
++ PIXMAN_IMAGE_GET_LINE (mask_image, mask_x, mask_y, uint8_t,
++ mask_stride, mask_line, 1);
++
++ pixman_composite_add_n_8_8_asm_neon (width, height,
++ dst_line, dst_stride,
++ src, 0,
++ mask_line, mask_stride);
++}
++
++void
++pixman_composite_over_8888_n_8888_asm_neon (int32_t w,
++ int32_t h,
++ uint32_t *dst,
++ int32_t dst_stride,
++ uint32_t *src,
++ int32_t src_stride,
++ uint32_t mask);
++
++static void
++neon_composite_over_8888_n_8888 (pixman_implementation_t *imp,
++ pixman_op_t op,
++ pixman_image_t * src_image,
++ pixman_image_t * mask_image,
++ pixman_image_t * dst_image,
++ int32_t src_x,
++ int32_t src_y,
++ int32_t mask_x,
++ int32_t mask_y,
++ int32_t dest_x,
++ int32_t dest_y,
++ int32_t width,
++ int32_t height)
++{
++ uint32_t *dst_line;
++ uint32_t *src_line;
++ int32_t dst_stride, src_stride;
++ uint32_t mask;
++
++ mask = _pixman_image_get_solid (mask_image, dst_image->bits.format);
++
++ if (mask == 0)
++ return;
++
++ PIXMAN_IMAGE_GET_LINE (src_image, src_x, src_y, uint32_t,
++ src_stride, src_line, 1);
++ PIXMAN_IMAGE_GET_LINE (dst_image, dest_x, dest_y, uint32_t,
++ dst_stride, dst_line, 1);
++
++ pixman_composite_over_8888_n_8888_asm_neon (width, height,
++ dst_line, dst_stride,
++ src_line, src_stride,
++ mask);
++}
++
++void
++pixman_composite_src_n_8_asm_neon (int32_t w,
++ int32_t h,
++ uint8_t *dst,
++ int32_t dst_stride,
++ uint8_t src);
++
++void
++pixman_composite_src_n_0565_asm_neon (int32_t w,
++ int32_t h,
++ uint16_t *dst,
++ int32_t dst_stride,
++ uint16_t src);
++
++void
++pixman_composite_src_n_8888_asm_neon (int32_t w,
++ int32_t h,
++ uint32_t *dst,
++ int32_t dst_stride,
++ uint32_t src);
++
++static pixman_bool_t
++pixman_fill_neon (uint32_t *bits,
++ int stride,
++ int bpp,
++ int x,
++ int y,
++ int width,
++ int height,
++ uint32_t _xor)
++{
++ /* stride is always multiple of 32bit units in pixman */
++ uint32_t byte_stride = stride * sizeof(uint32_t);
++
++ switch (bpp)
++ {
++ case 8:
++ pixman_composite_src_n_8_asm_neon (
++ width,
++ height,
++ (uint8_t *)(((char *) bits) + y * byte_stride + x),
++ byte_stride,
++ _xor & 0xff);
++ return TRUE;
++ case 16:
++ pixman_composite_src_n_0565_asm_neon (
++ width,
++ height,
++ (uint16_t *)(((char *) bits) + y * byte_stride + x * 2),
++ byte_stride / 2,
++ _xor & 0xffff);
++ return TRUE;
++ case 32:
++ pixman_composite_src_n_8888_asm_neon (
++ width,
++ height,
++ (uint32_t *)(((char *) bits) + y * byte_stride + x * 4),
++ byte_stride / 4,
++ _xor);
++ return TRUE;
++ default:
++ return FALSE;
++ }
++}
++
+ #endif
+
+ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ {
+-#ifdef USE_GNU_ASSEMBLER_ASM
++#ifdef USE_GNU_ASSEMBLER_ARM_NEON
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_r5g6b5, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_0565_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_src_8888_0565, 0 },
++ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_a8, PIXMAN_a8, neon_composite_add_8_8_8, 0 },
++ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 },
++ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_b5g6r5, neon_composite_over_n_8_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_8888_0565, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_src_8888_8888, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_x8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_src_8888_8888, 0 },
++ { PIXMAN_OP_SRC, PIXMAN_b5g6r5, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_src_0565_0565, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_r5g6b5, neon_composite_over_8888_0565, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_b5g6r5, neon_composite_over_8888_0565, 0 },
+-#endif
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_a8r8g8b8, neon_composite_over_8888_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_null, PIXMAN_x8r8g8b8, neon_composite_over_8888_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_a8b8g8r8, neon_composite_over_8888_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8b8g8r8, PIXMAN_null, PIXMAN_x8b8g8r8, neon_composite_over_8888_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK },
++ { PIXMAN_OP_OVER, PIXMAN_a8r8g8b8, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_8888_n_8888, NEED_SOLID_MASK },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8r8g8b8, neon_composite_over_n_8_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 },
++ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 },
++#else
+ { PIXMAN_OP_ADD, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8, neon_composite_add_n_8_8, 0 },
+ { PIXMAN_OP_ADD, PIXMAN_a8, PIXMAN_null, PIXMAN_a8, neon_composite_add_8000_8000, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_r5g6b5, neon_composite_over_n_8_0565, 0 },
+@@ -1980,6 +2484,7 @@ static const pixman_fast_path_t arm_neon_fast_path_array[] =
+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8r8g8b8, neon_composite_over_n_8_8888, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_a8b8g8r8, neon_composite_over_n_8_8888, 0 },
+ { PIXMAN_OP_OVER, PIXMAN_solid, PIXMAN_a8, PIXMAN_x8b8g8r8, neon_composite_over_n_8_8888, 0 },
++#endif
+ { PIXMAN_OP_NONE },
+ };
+
+--
+1.6.2.4
+
diff --git a/recipes/xorg-lib/pixman_0.15.18.bb b/recipes/xorg-lib/pixman_0.15.18.bb
new file mode 100644
index 0000000000..2517f8f354
--- /dev/null
+++ b/recipes/xorg-lib/pixman_0.15.18.bb
@@ -0,0 +1,13 @@
+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 \
+ "
+
+inherit autotools_stage
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
diff --git a/recipes/xorg-lib/pixman_0.16.2.bb b/recipes/xorg-lib/pixman_0.16.2.bb
new file mode 100644
index 0000000000..2517f8f354
--- /dev/null
+++ b/recipes/xorg-lib/pixman_0.16.2.bb
@@ -0,0 +1,13 @@
+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 \
+ "
+
+inherit autotools_stage
+AUTOTOOLS_STAGE_PKGCONFIG = "1"
+
diff --git a/recipes/xorg-lib/pixman_git.bb b/recipes/xorg-lib/pixman_git.bb
index b8aa2a43c6..8a0ee265fd 100644
--- a/recipes/xorg-lib/pixman_git.bb
+++ b/recipes/xorg-lib/pixman_git.bb
@@ -7,15 +7,20 @@ PV = "0.17.1"
PR = "r2"
PR_append = "+gitr${SRCREV}"
-SRCREV = "7af985a69a9147e54dd5946a8062dbc2e534b735"
+SRCREV = "dc46ad274a47d351bacf3c2167c359d23dbaf8b3"
DEFAULT_PREFERENCE = "-1"
DEFAULT_PREFERENCE_angstrom = "1"
SRC_URI = "git://anongit.freedesktop.org/pixman;protocol=git \
+file://0002-ARM-Introduction-of-the-new-framework-for-NEON-fast.patch;patch=1 \
+file://0003-ARM-Added-pixman_composite_src_8888_0565_asm_neon-f.patch;patch=1 \
+file://0004-ARM-Added-pixman_composite_add_8000_8000_asm_neon-f.patch;patch=1 \
+file://0005-ARM-Added-pixman_composite_over_8888_8888_asm_neon.patch;patch=1 \
+file://0006-ARM-Added-a-set-of-NEON-functions-not-fully-optimi.patch;patch=1 \
+file://0007-ARM-Enabled-new-NEON-optimizations.patch;patch=1 \
file://pixman-28986.patch;patch=1 \
file://nearest-neighbour.patch;patch=1 \
- file://remove-broken.patch;patch=1 \
file://over-8888-0565.patch;patch=1 \
"
diff --git a/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf b/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf
new file mode 100644
index 0000000000..7f3eb7797f
--- /dev/null
+++ b/recipes/xorg-xserver/xserver-xorg-conf/at91sam9263ek/xorg.conf
@@ -0,0 +1,11 @@
+Section "ServerLayout"
+ Identifier "default"
+ InputDevice "atmel-ts" "CorePointer"
+EndSection
+
+Section "InputDevice"
+ Identifier "atmel-ts"
+ Driver "evdev"
+ Option "SwapAxes" "1"
+ Option "Device" "/dev/input/touchscreen0"
+EndSection
diff --git a/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb b/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb
index 995cd8b20f..ba52376ab2 100644
--- a/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb
+++ b/recipes/xorg-xserver/xserver-xorg-conf_0.1.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Machine specific xorg.conf files"
-PR = "r10"
+PR = "r11"
SRC_URI = "file://xorg.conf"