aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--MAINTAINERS4
-rw-r--r--classes/base.bbclass9
-rw-r--r--classes/image.bbclass2
-rw-r--r--classes/package_ipk.bbclass8
-rw-r--r--classes/qmake.bbclass2
-rw-r--r--classes/qmake2.bbclass2
-rw-r--r--classes/qmake_base.bbclass (renamed from classes/qmake-base.bbclass)2
-rw-r--r--classes/qt3e.bbclass2
-rw-r--r--classes/qt3x11.bbclass2
-rw-r--r--classes/siteinfo.bbclass2
-rw-r--r--conf/bitbake.conf16
-rw-r--r--conf/distro/angstrom-2007.1.conf10
-rw-r--r--conf/distro/angstrom-2008.1.conf12
-rw-r--r--conf/distro/include/angstrom.inc5
-rw-r--r--conf/distro/include/insane-srcrevs.inc77
-rw-r--r--conf/distro/include/moko-autorev.inc43
-rw-r--r--conf/distro/include/openmoko.inc142
-rw-r--r--conf/distro/include/preferred-openmoko-versions.inc54
-rw-r--r--conf/distro/include/preferred-xorg-versions-X11R7.3.inc282
-rw-r--r--conf/distro/include/preferred-xorg-versions.inc222
-rw-r--r--conf/distro/include/sane-srcrevs.inc84
-rw-r--r--conf/distro/openmoko.conf10
-rw-r--r--conf/machine/at91sam9260ek.conf20
-rw-r--r--conf/machine/at91sam9261ek.conf20
-rw-r--r--conf/machine/i586-generic.conf3
-rw-r--r--conf/machine/i686-generic.conf3
-rw-r--r--conf/machine/include/motorola-ezx-base.inc13
-rw-r--r--conf/machine/include/motorola-ezx.inc41
-rw-r--r--conf/machine/include/tune-pentium.inc3
-rw-r--r--conf/machine/include/tune-pentiumpro.inc3
-rw-r--r--conf/machine/nokia770.conf2
-rw-r--r--conf/machine/rokre6.conf8
-rw-r--r--conf/machine/ts72xx.conf19
-rw-r--r--packages/alsa/alsa-state.bb16
-rw-r--r--packages/alsa/alsa-state/asoundrc12
-rw-r--r--packages/angstrom/angstrom-feed-configs.bb11
-rw-r--r--packages/angstrom/angstrom-version.bb3
-rw-r--r--packages/base-files/base-files_3.0.14.bb6
-rw-r--r--packages/dbus/dbus-1.0.2/dbus-1.init2
-rw-r--r--packages/dbus/dbus_1.0.2.bb2
-rw-r--r--packages/e17/e-wm_0.16.999.041.bb48
-rw-r--r--packages/e17/exhibit_cvs.bb2
-rw-r--r--packages/ezx/ezxd/.mtn2git_empty (renamed from packages/ezx/opentapi/.mtn2git_empty)0
-rw-r--r--packages/ezx/ezxd/ezxd.init (renamed from packages/ezx/opentapi/opentapi.init)14
-rw-r--r--packages/ezx/ezxd_svn.bb35
-rw-r--r--packages/ezx/opentapi_svn.bb28
-rw-r--r--packages/fakeroot/fakeroot-native_1.7.1.bb3
-rw-r--r--packages/fakeroot/fakeroot_1.7.1.bb5
-rw-r--r--packages/ffmpeg/ffmpeg_svn.bb2
-rw-r--r--packages/fxload/.mtn2git_empty (renamed from packages/netbase/netbase/a780/.mtn2git_empty)0
-rw-r--r--packages/fxload/files/.mtn2git_empty (renamed from packages/netbase/netbase/e680/.mtn2git_empty)0
-rw-r--r--packages/fxload/files/usbheader.patch15
-rw-r--r--packages/fxload/fxload_0.0.20020411.bb19
-rw-r--r--packages/gcc/gcc-4.2.1/204-uclibc-locale-wchar_fix.patch48
-rw-r--r--packages/gcc/gcc-4.2.1/205-uclibc-locale-update.patch347
-rw-r--r--packages/gcc/gcc-cross_4.2.1.bb2
-rw-r--r--packages/gcc/gcc_4.2.1.bb4
-rw-r--r--packages/glibc/eglibc-initial_svn.bb1
-rw-r--r--packages/glibc/eglibc-intermediate_svn.bb1
-rw-r--r--packages/glibc/eglibc_svn.bb2
-rw-r--r--packages/gnome/gnome-desktop_2.18.3.bb2
-rw-r--r--packages/gnome/gnome-panel_2.18.1.bb6
-rw-r--r--packages/gnome/libwnck_2.13.5.bb1
-rw-r--r--packages/gpephone/gpe-applauncher_0.10.bb12
-rw-r--r--packages/gpephone/libidn_0.5.19.bb1
-rw-r--r--packages/gpicview/.mtn2git_empty0
-rw-r--r--packages/gpicview/gpicview_0.1.5.bb10
-rw-r--r--packages/gsm/files/default8
-rw-r--r--packages/gsm/files/gsmd10
-rw-r--r--packages/gsm/libgsmd_svn.bb2
-rw-r--r--packages/gtk+/gdk-pixbuf-csource-native_2.10.14.bb25
-rw-r--r--packages/gtk+/gdk-pixbuf-csource/.mtn2git_empty0
-rw-r--r--packages/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch149
-rw-r--r--packages/gtk-webcore/midori/.mtn2git_empty0
-rw-r--r--packages/gtk-webcore/midori/midori.desktop8
-rw-r--r--packages/gtk-webcore/midori_0.0.2.bb11
-rw-r--r--packages/gtk-webcore/midori_0.0.3.bb11
-rw-r--r--packages/gtk-webcore/midori_0.0.4.bb11
-rw-r--r--packages/gtk-webcore/midori_0.0.5.bb11
-rw-r--r--packages/gtk-webcore/midori_0.0.6.bb18
-rw-r--r--packages/images/angstrom-minimal-image-with-mtd-utils.bb2
-rw-r--r--packages/images/liveramdisk-image.bb28
-rw-r--r--packages/initrdscripts/initramfs-jffs2/jffs2boot.sh2
-rw-r--r--packages/initrdscripts/initramfs-jffs2_0.1.bb2
-rw-r--r--packages/libnotify/libnotify_0.4.2.bb13
-rw-r--r--packages/libnotify/libnotify_0.4.3.bb13
-rw-r--r--packages/libnotify/libnotify_0.4.4.bb13
-rw-r--r--packages/libowl/libowl_svn.bb2
-rw-r--r--packages/libxosd/libxosd_svn.bb2
-rw-r--r--packages/linux/linux-2.6.20/at91sam9260ek/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.20/at91sam9260ek/defconfig1209
-rw-r--r--packages/linux/linux-2.6.20/at91sam9261ek/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.20/at91sam9261ek/defconfig1242
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-gpio-interrupt-debounce.diff87
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c-bus.diff220
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c.diff110
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-leds.diff181
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-maverick-uniqid.patch38
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-clocks.diff42
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-uartbaud.diff66
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-timer-accuracy.diff59
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/series12
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-machine-id-fix.patch17
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-nfbit-fix.patch18
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-use-cpld-reset.patch41
-rw-r--r--packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-watchdog.patch430
-rw-r--r--packages/linux/linux-2.6.22.6/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/.mtn2git_empty0
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-gpio-interrupt-debounce.diff87
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c-bus.diff220
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c.diff110
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-leds.diff181
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-maverick-uniqid.patch38
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-clocks.diff42
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-uartbaud.diff66
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff59
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/series12
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ts72xx-machine-id-fix.patch17
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ts72xx-nfbit-fix.patch15
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ts72xx-use-cpld-reset.patch41
-rw-r--r--packages/linux/linux-2.6.22.6/ts72xx/ts72xx-watchdog.patch430
-rw-r--r--packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a1200/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200)584
-rw-r--r--packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/a780/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-a780)471
-rw-r--r--packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/e680/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-e680)473
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch82
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch83
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch38
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-flip.patch10
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch22
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-leds.patch41
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch90
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-ts.patch19
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch83
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch14
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch14
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/defconfig-e21092
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch38
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch22
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-leds.patch287
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch10
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-mci.patch27
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch90
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/e680-ts.patch19
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch1302
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch28
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch36
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-core.patch220
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch132
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch342
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch24
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch1398
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/ezx-pm.patch22
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/i2c-core-fix-a1200.patch15
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/index.html60
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/mtdfix.patch41
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/pcap-ts.patch143
-rw-r--r--packages/linux/linux-ezx-2.6.21/patches/pxa27x-udc-fix-a1200.patch35
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/patches/series12
-rw-r--r--packages/linux/linux-ezx-2.6.21/rokre2/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre2/defconfig1582
-rw-r--r--packages/linux/linux-ezx-2.6.21/rokre6/.mtn2git_empty0
-rwxr-xr-xpackages/linux/linux-ezx-2.6.21/rokre6/defconfig (renamed from packages/linux/linux-ezx-2.6.21/patches/defconfig-e6)582
-rw-r--r--packages/linux/linux-ezx_2.6.21.bb89
-rw-r--r--packages/linux/linux-handhelds-2.6/asus620/defconfig124
-rw-r--r--packages/linux/linux-handhelds-2.6/asus730/defconfig183
-rw-r--r--packages/linux/linux-handhelds-2.6/aximx50/defconfig136
-rw-r--r--packages/linux/linux-handhelds-2.6/eteng500/defconfig136
-rw-r--r--packages/linux/linux-handhelds-2.6/h1910/defconfig134
-rw-r--r--packages/linux/linux-handhelds-2.6/h3600/defconfig112
-rw-r--r--packages/linux/linux-handhelds-2.6/h3800/defconfig112
-rw-r--r--packages/linux/linux-handhelds-2.6/h3900/defconfig97
-rw-r--r--packages/linux/linux-handhelds-2.6/h4000/defconfig83
-rw-r--r--packages/linux/linux-handhelds-2.6/h5000/defconfig67
-rw-r--r--packages/linux/linux-handhelds-2.6/htcalpine/defconfig117
-rw-r--r--packages/linux/linux-handhelds-2.6/htcapache/defconfig115
-rw-r--r--packages/linux/linux-handhelds-2.6/htcbeetles/.mtn2git_empty0
-rw-r--r--packages/linux/linux-handhelds-2.6/htcbeetles/defconfig1257
-rw-r--r--packages/linux/linux-handhelds-2.6/htcblueangel/defconfig103
-rw-r--r--packages/linux/linux-handhelds-2.6/htchimalaya/defconfig124
-rw-r--r--packages/linux/linux-handhelds-2.6/htcsable/defconfig126
-rw-r--r--packages/linux/linux-handhelds-2.6/htcuniversal/defconfig117
-rw-r--r--packages/linux/linux-handhelds-2.6/htcwallaby/defconfig137
-rw-r--r--packages/linux/linux-handhelds-2.6/hx4700/defconfig66
-rw-r--r--packages/linux/linux-handhelds-2.6/looxc550/defconfig117
-rw-r--r--packages/linux/linux-handhelds-2.6/magician/defconfig108
-rw-r--r--packages/linux/linux-handhelds-2.6/rx1950/defconfig117
-rw-r--r--packages/linux/linux-handhelds-2.6/rx3000/defconfig96
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh15.bb11
-rw-r--r--packages/linux/linux-handhelds-2.6_2.6.21-hh16.bb11
-rw-r--r--packages/linux/linux-openmoko-devel_svn.bb11
-rw-r--r--packages/linux/linux-openmoko.inc3
-rw-r--r--packages/linux/linux-openmoko_2.6.21.6.bb10
-rw-r--r--packages/linux/linux-openmoko_2.6.22.5.bb8
-rw-r--r--packages/linux/linux-rp-2.6.22/defconfig-akita1
-rw-r--r--packages/linux/linux-rp-2.6.22/defconfig-c7x02
-rw-r--r--packages/linux/linux-rp_2.6.22.bb2
-rw-r--r--packages/linux/linux.inc50
-rw-r--r--packages/linux/linux/ts72xx/.mtn2git_empty0
-rw-r--r--packages/linux/linux/ts72xx/defconfig1184
-rw-r--r--packages/linux/linux_2.6.14.bb4
-rw-r--r--packages/linux/linux_2.6.20.bb12
-rw-r--r--packages/linux/linux_2.6.21+2.6.22-rc1.bb2
-rw-r--r--packages/linux/linux_2.6.21.bb3
-rw-r--r--packages/linux/linux_2.6.22+2.6.23-rc3.bb2
-rw-r--r--packages/linux/linux_2.6.22+2.6.23-rc5.bb32
-rw-r--r--packages/linux/linux_2.6.22.6.bb28
-rw-r--r--packages/linux/linux_2.6.22.bb2
-rw-r--r--packages/madwifi/madwifi-ng_r2702-20070903.bb1
-rw-r--r--packages/matchbox-keyboard/files/matchbox-keyboard-applet.patch92
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard-inputmethod_svn.bb7
-rw-r--r--packages/matchbox-keyboard/matchbox-keyboard_svn.bb10
-rw-r--r--packages/matchbox-keyboard/mboxkbd-layouts-gui_git.bb2
-rw-r--r--packages/matchbox-panel/matchbox-panel_svn.bb2
-rw-r--r--packages/matchbox-themes-extra/matchbox-theme-sato_svn.bb4
-rw-r--r--packages/matchbox2/matchbox-desktop-2_svn.bb2
-rw-r--r--packages/matchbox2/matchbox-panel-2_svn.bb2
-rw-r--r--packages/meta/meta-sdk-gpe.bb13
-rw-r--r--packages/meta/meta-sdk-sbox-gpe.bb7
-rw-r--r--packages/meta/meta-sdk-sbox.bb7
-rw-r--r--packages/meta/meta-sdk.bb12
-rw-r--r--packages/netbase/netbase/a780/interfaces44
-rw-r--r--packages/netbase/netbase/e680/interfaces44
-rw-r--r--packages/netbase/netbase_4.21.bb2
-rw-r--r--packages/nonworking/gnuboy/qtopiagnuboy_1.0.3.bb2
-rw-r--r--packages/nonworking/zethereal/zethereal_1.0.0.bb2
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.6.bb23
-rw-r--r--packages/notification-daemon/notification-daemon_0.3.7.bb (renamed from packages/notification-daemon/notification-daemon_0.3.5.bb)18
-rw-r--r--packages/openmoko2/neod_svn.bb11
-rw-r--r--packages/openmoko2/openmoko-common2_svn.bb2
-rw-r--r--packages/openmoko2/openmoko-dates2_svn.bb12
-rw-r--r--packages/openmoko2/openmoko-session2.bb2
-rwxr-xr-xpackages/openmoko2/openmoko-session2/etc/matchbox/session2
-rw-r--r--packages/openmoko2/openmoko-terminal2_svn.bb4
-rw-r--r--packages/opie-reader/uqtreader_cvs.bb2
-rw-r--r--packages/pango/pango.inc2
-rw-r--r--packages/pimlico/contacts-0.7/.mtn2git_empty0
-rw-r--r--packages/pimlico/contacts-0.7/contacts-owl-window-menu.patch52
-rw-r--r--packages/pimlico/contacts_0.7.bb9
-rw-r--r--packages/pimlico/contacts_svn.bb8
-rw-r--r--packages/pimlico/dates.inc4
-rw-r--r--packages/pimlico/dates_0.4.4.bb7
-rw-r--r--packages/pimlico/dates_svn.bb6
-rw-r--r--packages/pimlico/files/contacts-owl-window-menu.patch52
-rw-r--r--packages/pimlico/files/dates-owl-window-menu.patch72
-rw-r--r--packages/pimlico/files/tasks-owl.diff74
-rw-r--r--packages/pimlico/tasks-0.10/.mtn2git_empty0
-rw-r--r--packages/pimlico/tasks-0.10/delete-crash.diff71
-rw-r--r--packages/pimlico/tasks.inc2
-rw-r--r--packages/pimlico/tasks_0.10.bb8
-rw-r--r--packages/pimlico/tasks_svn.bb6
-rw-r--r--packages/psplash/files/openmoko/psplash-hand-img.h8657
-rw-r--r--packages/psplash/psplash_svn.bb5
-rw-r--r--packages/putty/putty_svn.bb2
-rw-r--r--packages/puzzles/oh-puzzles_svn.bb2
-rw-r--r--packages/qt/qt-x11-free-common.inc2
-rw-r--r--packages/qt/qt-x11-free-native_3.3.5.bb2
-rw-r--r--packages/qt/qt4-x11-free_4.1.2.bb2
-rw-r--r--packages/qt/qt4-x11-free_4.3.0.bb2
-rw-r--r--packages/qte/qte-mt-static_2.3.10.bb2
-rw-r--r--packages/settings-daemon/settings-daemon_svn.bb3
-rw-r--r--packages/snes9x/snes9x-sdl-qpe_1.39.bb2
-rw-r--r--packages/sphyrna/sphyrna_svn.bb2
-rw-r--r--packages/starling/starling_0.2.bb2
-rw-r--r--packages/taglib/taglib_1.4.bb2
-rw-r--r--packages/taglib/taglibc_1.4.bb2
-rw-r--r--packages/tasks/task-boot.bb2
-rw-r--r--packages/tasks/task-openmoko-debug.bb31
-rw-r--r--packages/tasks/task-openmoko-feed.bb16
-rw-r--r--packages/tasks/task-openmoko.bb5
-rw-r--r--packages/tcpdump/tcpdump_3.9.7.bb (renamed from packages/tcpdump/tcpdump_3.9.3.bb)3
-rw-r--r--packages/tinymail/libtinymail_svn.bb2
-rw-r--r--packages/uboot/uboot-openmoko_1.2.0+gitf34024d4a328e6edd906456da98d2c537155c4f7+svn2943.bb (renamed from packages/uboot/uboot-openmoko_1.2.0+git8993e54b6f397973794f3d6f47d3b3c0c98dd4f6+svn20070819.bb)12
-rw-r--r--packages/uboot/uboot-openmoko_svn.bb8
-rw-r--r--packages/uclibc/bfin-uclibc_svn.bb34
-rw-r--r--packages/uclibc/elf2flt_svn.bb15
-rw-r--r--packages/uicmoc/uicmoc-native_2.3.10.bb2
-rw-r--r--packages/uicmoc/uicmoc3-native_3.3.5.bb2
-rw-r--r--packages/webkit/webkit-gtk_svn.bb4
-rw-r--r--packages/xchat/xchat_2.6.1.bb13
-rw-r--r--packages/xchat/xchat_2.8.4.bb18
-rw-r--r--packages/xoo/xoo_svn.bb2
-rw-r--r--packages/xorg-app/bdftopcf_1.0.1.bb7
-rw-r--r--packages/xorg-app/iceauth_1.0.2.bb7
-rw-r--r--packages/xorg-app/ico_1.0.2.bb6
-rw-r--r--packages/xorg-app/xbacklight_1.1.bb6
-rw-r--r--packages/xorg-app/xdm_1.1.6.bb2
-rw-r--r--packages/xorg-app/xinit_1.0.5.bb6
-rw-r--r--packages/xorg-app/xprop_1.0.3.bb7
-rw-r--r--packages/xorg-app/xset_1.0.3.bb11
-rw-r--r--packages/xorg-driver/xf86-input-keyboard_1.2.2.bb7
-rw-r--r--packages/xorg-lib/libxcursor_1.1.9.bb8
-rw-r--r--packages/xorg-lib/libxfont_1.3.1.bb11
-rw-r--r--packages/xorg-lib/libxi_1.1.3.bb7
-rw-r--r--packages/xorg-lib/libxrandr_1.2.2.bb8
-rw-r--r--packages/xorg-lib/libxrender_0.9.4.bb8
-rw-r--r--packages/xorg-lib/libxxf86dga_1.0.2.bb7
-rw-r--r--packages/xorg-lib/pixman-0.9.5/.mtn2git_empty0
-rw-r--r--packages/xorg-lib/pixman-0.9.5/dont-copy-unused-bits-to-alpha-channel.patch29
-rw-r--r--packages/xorg-lib/pixman_0.9.5.bb6
-rw-r--r--packages/xorg-proto/inputproto_1.4.2.1.bb3
-rw-r--r--packages/xorg-proto/renderproto_0.9.3.bb4
-rw-r--r--packages/xorg-proto/xf86dgaproto_2.0.3.bb5
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.1.0/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.1.0/enable-epson.patch11
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.1.0/enable-tslib.patch (renamed from packages/xorg-xserver/xserver-kdrive/enable-tslib.patch)0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.1.0/optional-xkb.patch54
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.3.0.0/hide-cursor-and-ppm-root.patch307
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/disable-xf86-dga-xorgcfg.patch39
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/enable-tslib.patch24
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/enable-xcalibrate.patch77
-rw-r--r--packages/xorg-xserver/xserver-kdrive-1.4/w100-autofoo.patch54
-rw-r--r--packages/xorg-xserver/xserver-kdrive-common.inc7
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/.mtn2git_empty0
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/enable-epson.patch17
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/enable-tslib.patch26
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/enable-xcalibrate.patch68
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/w100-autofoo.patch54
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/w100-post-1.4-buildfix.patch12
-rw-r--r--packages/xorg-xserver/xserver-kdrive-git/xephyr-post-1.4-buildfix.patch11
-rw-r--r--packages/xorg-xserver/xserver-kdrive-imageon_1.2.0.bb8
-rw-r--r--packages/xorg-xserver/xserver-kdrive/build-fix-panoramix.patch18
-rw-r--r--packages/xorg-xserver/xserver-kdrive/devfs.patch47
-rw-r--r--packages/xorg-xserver/xserver-kdrive/enable-epson.patch16
-rw-r--r--packages/xorg-xserver/xserver-kdrive/faster-rotated.patch241
-rw-r--r--packages/xorg-xserver/xserver-kdrive/fbdev-evdev.patch19
-rw-r--r--packages/xorg-xserver/xserver-kdrive/fix_default_mode.patch (renamed from packages/xorg-xserver/xserver-kdrive-1.3.0.0/fix_default_mode.patch)0
-rw-r--r--packages/xorg-xserver/xserver-kdrive/optional-xkb.patch32
-rw-r--r--packages/xorg-xserver/xserver-kdrive/tslib-default-device.patch15
-rw-r--r--packages/xorg-xserver/xserver-kdrive/w100-autofoo.patch54
-rw-r--r--packages/xorg-xserver/xserver-kdrive/w100-new-input-world-order.patch28
-rw-r--r--packages/xorg-xserver/xserver-kdrive/w100.patch55
-rw-r--r--packages/xorg-xserver/xserver-kdrive/xcalibrate-new-input-world-order.patch159
-rw-r--r--packages/xorg-xserver/xserver-kdrive/xcalibrate_coords.patch122
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.2.0.bb6
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.3.0.0.bb8
-rw-r--r--packages/xorg-xserver/xserver-kdrive_1.4.bb28
-rw-r--r--packages/xorg-xserver/xserver-kdrive_git.bb61
-rw-r--r--packages/xournal/xournal_0.4.0.1.bb17
-rw-r--r--packages/yaffs2/.mtn2git_empty0
-rw-r--r--packages/yaffs2/files/.mtn2git_empty0
-rw-r--r--packages/yaffs2/files/mkyaffs2image.patch345
-rw-r--r--packages/yaffs2/files/yaffs2-unioob.patch216
-rw-r--r--packages/yaffs2/yaffs2-utils-native_cvs.bb15
-rw-r--r--packages/yaffs2/yaffs2-utils_cvs.bb27
-rw-r--r--site/ix86-common3
-rw-r--r--site/mips-linux122
355 files changed, 22748 insertions, 11520 deletions
diff --git a/MAINTAINERS b/MAINTAINERS
index f9532a36ab..7533c3f8fc 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -205,6 +205,10 @@ Machines: Dht-walnut, Efika, Magicbox,Sequoia,Xilinx-ML403,RB5XX
Interest: Cross-machine development
Recipes: icecc.bbclass, ppc toolchain, asterisk,perl,php
+Person: Tim Sander
+Mail: oe@iss.tu-darmstadt.de
+Receipes: fxload
+
Person: √ėyvind Repvik
Mail: nail@nslu2-linux.org
Machines: nslu2, fsg3, ixp4xx, n2100, turbostation
diff --git a/classes/base.bbclass b/classes/base.bbclass
index 9bcf212e95..999d409914 100644
--- a/classes/base.bbclass
+++ b/classes/base.bbclass
@@ -375,10 +375,7 @@ oe_machinstall() {
}
# Remove and re-create ${D} so that is it guaranteed to be empty
-do_install_prepend() {
- rm -rf ${D}
- mkdir -p ${D}
-}
+do_install[cleandirs] = "${D}"
addtask listtasks
do_listtasks[nostamp] = "1"
@@ -490,9 +487,9 @@ python base_do_fetch() {
try:
if not base_chk_file(parser, pn, pv,uri, localpath, d):
if type != "file":
- bb.note("%s-%s-%s has no section, not checking URI" % (pn,pv,uri))
+ bb.note("%s-%s: %s has no entry in conf/checksums.ini, not checking URI" % (pn,pv,uri))
else:
- bb.debug("%s-%s-%s has no section, not checking URI" % (pn,pv,uri))
+ bb.debug("%s-%s: %s has no entry in conf/checksums.ini, not checking URI" % (pn,pv,uri))
except Exception:
raise bb.build.FuncFailed("Checksum of '%s' failed" % uri)
}
diff --git a/classes/image.bbclass b/classes/image.bbclass
index 04e26e4b35..3420e3f53a 100644
--- a/classes/image.bbclass
+++ b/classes/image.bbclass
@@ -4,7 +4,7 @@ LICENSE = "MIT"
PACKAGES = ""
RDEPENDS += "${IMAGE_INSTALL}"
-export IMAGE_BASENAME ?= "${PN}"
+IMAGE_BASENAME[export] = "1"
export PACKAGE_INSTALL ?= "${IMAGE_INSTALL}"
# We need to recursively follow RDEPENDS and RRECOMMENDS for images
diff --git a/classes/package_ipk.bbclass b/classes/package_ipk.bbclass
index e9e21456dd..0b7f274a96 100644
--- a/classes/package_ipk.bbclass
+++ b/classes/package_ipk.bbclass
@@ -82,6 +82,10 @@ package_update_index_ipk () {
touch ${DEPLOY_DIR_IPK}/$arch/Packages
ipkg-make-index -r ${DEPLOY_DIR_IPK}/$arch/Packages -p ${DEPLOY_DIR_IPK}/$arch/Packages -l ${DEPLOY_DIR_IPK}/$arch/Packages.filelist -m ${DEPLOY_DIR_IPK}/$arch/
fi
+ if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/ ] ; then
+ touch ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages
+ ipkg-make-index -r ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages -p ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages -l ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages.filelist -m ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/
+ fi
done
}
@@ -102,7 +106,9 @@ package_generate_ipkg_conf () {
priority=$(expr $priority + 5)
if [ -e ${DEPLOY_DIR_IPK}/$arch/Packages ] ; then
echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_TARGET}
- echo "src oe-$arch file:${DEPLOY_DIR_IPK}/$arch" >> ${IPKGCONF_SDK}
+ fi
+ if [ -e ${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk/Packages ] ; then
+ echo "src oe-${BUILD_ARCH}-$arch-sdk file:${DEPLOY_DIR_IPK}/${BUILD_ARCH}-$arch-sdk" >> ${IPKGCONF_SDK}
fi
done
}
diff --git a/classes/qmake.bbclass b/classes/qmake.bbclass
index b45e54ca6a..34f59ef9f7 100644
--- a/classes/qmake.bbclass
+++ b/classes/qmake.bbclass
@@ -1,4 +1,4 @@
-inherit qmake-base
+inherit qmake_base
DEPENDS_prepend = "qmake-native "
diff --git a/classes/qmake2.bbclass b/classes/qmake2.bbclass
index 86f1439b30..d0f59d2cd4 100644
--- a/classes/qmake2.bbclass
+++ b/classes/qmake2.bbclass
@@ -1,7 +1,7 @@
#
# QMake variables for Qt4
#
-inherit qmake-base
+inherit qmake_base
DEPENDS_prepend = "qmake2-native uicmoc4-native "
diff --git a/classes/qmake-base.bbclass b/classes/qmake_base.bbclass
index 52f6d830a0..ea8903c278 100644
--- a/classes/qmake-base.bbclass
+++ b/classes/qmake_base.bbclass
@@ -31,7 +31,7 @@ oe_qmake_mkspecs () {
done
}
-qmake-base_do_configure() {
+qmake_base_do_configure() {
case ${QMAKESPEC} in
*linux-oe-g++|*linux-uclibc-oe-g++|*linux-gnueabi-oe-g++)
;;
diff --git a/classes/qt3e.bbclass b/classes/qt3e.bbclass
index 58a6779af6..98c47adb90 100644
--- a/classes/qt3e.bbclass
+++ b/classes/qt3e.bbclass
@@ -1,5 +1,5 @@
#
-# override variables set by qmake-base to compile Qt/X11 apps
+# override variables set by qmake_base to compile Qt/X11 apps
#
export QTDIR="${STAGING_DIR}/${HOST_SYS}/qte3"
export QTEDIR="${STAGING_DIR}/${HOST_SYS}/qte3"
diff --git a/classes/qt3x11.bbclass b/classes/qt3x11.bbclass
index 95ed4f538a..67f2cf7348 100644
--- a/classes/qt3x11.bbclass
+++ b/classes/qt3x11.bbclass
@@ -1,7 +1,7 @@
DEPENDS_prepend = "${@["qt3x11 ", ""][(bb.data.getVar('PN', d, 1) == 'qt-x11-free')]}"
EXTRA_QMAKEVARS_POST += "CONFIG+=thread"
#
-# override variables set by qmake-base to compile Qt/X11 apps
+# override variables set by qmake_base to compile Qt/X11 apps
#
export QTDIR = "${STAGING_DIR}/${HOST_SYS}/qt3"
export OE_QMAKE_UIC = "${STAGING_BINDIR_NATIVE}/uic3"
diff --git a/classes/siteinfo.bbclass b/classes/siteinfo.bbclass
index 4191f4edc1..c41a3ff369 100644
--- a/classes/siteinfo.bbclass
+++ b/classes/siteinfo.bbclass
@@ -42,6 +42,8 @@ def get_siteinfo_list(d):
"i686-linux-uclibc": "endian-little bit-32 common-uclibc ix86-common",\
"mipsel-linux": "endian-little bit-32 common-glibc",\
"mipsel-linux-uclibc": "endian-little bit-32 common-uclibc",\
+ "mips-linux": "endian-big bit-32 common-glibc",\
+ "mips-linux-uclibc": "endian-big bit-32 common-uclibc",\
"powerpc-darwin": "endian-big bit-32 common-darwin",\
"ppc-linux": "endian-big bit-32 common-glibc powerpc-common",\
"powerpc-linux": "endian-big bit-32 common-glibc powerpc-common",\
diff --git a/conf/bitbake.conf b/conf/bitbake.conf
index a72dd75fdc..5d06cff32b 100644
--- a/conf/bitbake.conf
+++ b/conf/bitbake.conf
@@ -157,6 +157,7 @@ CACHE = "${TMPDIR}/cache${@['', '/' + str(bb.data.getVar('MACHINE', d, 1))][bool
CVSDIR = "${DL_DIR}/cvs"
SVNDIR = "${DL_DIR}/svn"
GITDIR = "${DL_DIR}/git"
+BZRDIR = "${DL_DIR}/bzr"
STAMP = "${TMPDIR}/stamps/${PF}"
WORKDIR = "${TMPDIR}/work/${PF}"
@@ -203,13 +204,13 @@ STAGING_KERNEL_DIR = "${STAGING_DIR}/${HOST_SYS}/kernel"
##################################################################
IMAGE_ROOTFS = "${TMPDIR}/rootfs"
-IMAGE_BASENAME = "rootfs"
+IMAGE_BASENAME = "${PN}"
IMAGE_NAME = "${IMAGE_BASENAME}-${MACHINE}-${DATETIME}"
IMAGE_LINK_NAME = "${IMAGE_BASENAME}-${MACHINE}"
+
IMAGE_CMD = ""
-IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --faketime \
- --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 \
- ${EXTRA_IMAGECMD}"
+IMAGE_CMD_jffs2 = "mkfs.jffs2 -x lzo --root=${IMAGE_ROOTFS} --faketime --output=${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.jffs2 ${EXTRA_IMAGECMD}"
+IMAGE_CMD_yaffs2 = "mkyaffs2image ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.yaffs2 ${EXTRA_IMAGECMD}"
IMAGE_CMD_cramfs = "mkcramfs ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cramfs ${EXTRA_IMAGECMD}"
IMAGE_CMD_ext2 = "genext2fs -b ${IMAGE_ROOTFS_SIZE} -d ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2 ${EXTRA_IMAGECMD}"
IMAGE_CMD_ext2.gz = "rm -rf ${DEPLOY_DIR_IMAGE}/tmp.gz && mkdir ${DEPLOY_DIR_IMAGE}/tmp.gz; genext2fs -b ${IMAGE_ROOTFS_SIZE} -d ${IMAGE_ROOTFS} ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2 ${EXTRA_IMAGECMD}; gzip -f -9 ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2; mv ${DEPLOY_DIR_IMAGE}/tmp.gz/${IMAGE_NAME}.rootfs.ext2.gz ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.ext2.gz; rmdir ${DEPLOY_DIR_IMAGE}/tmp.gz"
@@ -222,13 +223,16 @@ IMAGE_CMD_tar.gz = "cd ${IMAGE_ROOTFS} && tar -zcvf ${DEPLOY_DIR_IMAGE}/${IMAGE_
IMAGE_CMD_tar.bz2 = "cd ${IMAGE_ROOTFS} && tar -jcvf ${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.tar.bz2 ."
IMAGE_CMD_cpio = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio)"
IMAGE_CMD_cpio.gz = "cd ${IMAGE_ROOTFS} && (find . | cpio -o -H newc | gzip -c -9 >${DEPLOY_DIR_IMAGE}/${IMAGE_NAME}.rootfs.cpio.gz)"
+
EXTRA_IMAGECMD = ""
EXTRA_IMAGECMD_jffs2 = ""
+EXTRA_IMAGECMD_yaffs2 = ""
EXTRA_IMAGECMD_squashfs = ""
EXTRA_IMAGECMD_squashfs-lzma = ""
IMAGE_DEPENDS = ""
IMAGE_DEPENDS_jffs2 = "mtd-utils-native"
+IMAGE_DEPENDS_yaffs2 = "yaffs2-utils-native"
IMAGE_DEPENDS_cramfs = "cramfs-native"
IMAGE_DEPENDS_ext2 = "genext2fs-native"
IMAGE_DEPENDS_ext2.gz = "genext2fs-native"
@@ -236,6 +240,7 @@ IMAGE_DEPENDS_ext3 = "genext2fs-native e2fsprogs-native"
IMAGE_DEPENDS_ext3.gz = "genext2fs-native e2fsprogs-native"
IMAGE_DEPENDS_squashfs = "squashfs-tools-native"
IMAGE_DEPENDS_squashfs-lzma = "squashfs-lzma-tools-native"
+
EXTRA_IMAGEDEPENDS = ""
##################################################################
@@ -372,6 +377,7 @@ KERNELORG_MIRROR = "http://kernel.org/"
FETCHCMD_svn = "/usr/bin/env svn"
FETCHCMD_cvs = "/usr/bin/env cvs"
FETCHCMD_wget = "/usr/bin/env wget -t 5"
+FETCHCMD_bzr = "/usr/bin/env bzr"
FETCHCOMMAND = "ERROR, this must be a BitBake bug"
FETCHCOMMAND_wget = "/usr/bin/env wget -t 5 --passive-ftp -P ${DL_DIR} ${URI}"
@@ -383,7 +389,7 @@ UPDATECOMMAND = "ERROR, this must be a BitBake bug"
UPDATECOMMAND_cvs = "/usr/bin/env cvs -d${CVSROOT} update -d -P ${CVSCOOPTS}"
UPDATECOMMAND_svn = "/usr/bin/env svn update ${SVNCOOPTS}"
SRCDATE = "${DATE}"
-SRCREV = "${@bb.fetch.get_srcrev(d)}"
+SRCREV = "1"
AUTOREV = "${@bb.fetch.get_srcrev(d)}"
SRC_URI = "file://${FILE}"
diff --git a/conf/distro/angstrom-2007.1.conf b/conf/distro/angstrom-2007.1.conf
index 909e66dcd9..9b3c3fed11 100644
--- a/conf/distro/angstrom-2007.1.conf
+++ b/conf/distro/angstrom-2007.1.conf
@@ -11,6 +11,7 @@ DISTRO_VERSION = "2007.9-test-${DATE}"
DISTRO_REVISION = "46"
require conf/distro/include/sane-srcdates.inc
+require conf/distro/include/sane-srcrevs.inc
#Images built can have to modes:
# 'debug': empty rootpassword, strace and gdb included
@@ -216,7 +217,7 @@ MACHINE_KERNEL_VERSION = "2.6"
PCMCIA_MANAGER = "pcmciautils"
#Preferred version for the kernel on various machines
-PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh12"
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh16"
RDEPENDS_kernel-base_hx4700 = ""
RDEPENDS_kernel-base_htcuniversal = ""
@@ -267,9 +268,9 @@ PREFERRED_VERSION_gcc-cross ?= "4.1.2"
PREFERRED_VERSION_gcc-cross-sdk ?= "4.1.2"
PREFERRED_VERSION_gcc-cross-initial ?= "4.1.2"
-PREFERRED_VERSION_binutils ?= "2.17.50.0.5"
-PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.5"
-PREFERRED_VERSION_binutils-cross-sdk ?= "2.17.50.0.5"
+PREFERRED_VERSION_binutils ?= "2.18"
+PREFERRED_VERSION_binutils-cross ?= "2.18"
+PREFERRED_VERSION_binutils-cross-sdk ?= "2.18"
#avr32 only has patches for binutils 2.17 and gcc 4.1.2 in OE
PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}gcc_avr32 = "avr32-gcc-cross"
@@ -320,6 +321,7 @@ PREFERRED_VERSION_wpa-supplicant = "0.5.5"
require conf/distro/include/preferred-gpe-versions-2.8.inc
require conf/distro/include/preferred-e-versions.inc
require conf/distro/include/preferred-xorg-versions.inc
+require conf/distro/include/preferred-openmoko-versions.inc
# Virtuals:
diff --git a/conf/distro/angstrom-2008.1.conf b/conf/distro/angstrom-2008.1.conf
index 655d435994..9d2223ccd9 100644
--- a/conf/distro/angstrom-2008.1.conf
+++ b/conf/distro/angstrom-2008.1.conf
@@ -6,12 +6,20 @@
#@MAINTAINER: Michael 'Mickey' Lauer <mickey@Vanille-media.de>
#@--------------------------------------------------------------------
+
+# Use Xorg R7.3 release
+require conf/distro/include/preferred-xorg-versions-X11R7.3.inc
+
+
# This is a testbed for unstable and/or untested things, while angstrom-2007.1
# is aiming for stability and a release.
# Use this at your own risk, we welcome bugreports filed at
# http://bugs.openembedded.org
# In doubt, use DISTRO="angstrom-2007.1"
+#Preferred version for the kernel on various machines
+PREFERRED_VERSION_linux-handhelds-2.6 ?= "2.6.21-hh16"
+
require conf/distro/angstrom-2007.1.conf
#DISTRO_VERSION = "2008.1"
@@ -21,10 +29,6 @@ DISTRO_REVISION = "0"
PREFERRED_VERSION_gcc = "4.2.1"
PREFERRED_VERSION_gcc-cross = "4.2.1"
-PREFERRED_VERSION_binutils = "2.17.50.0.12"
-PREFERRED_VERSION_binutils-cross = "2.17.50.0.12"
-PREFERRED_VERSION_binutils-cross-sdk = "2.17.50.0.12"
-
#This is unrelated to the kernel version, but userspace apps (e.g. HAL) require a recent version to build against
PREFERRED_VERSION_linux-libc-headers = "2.6.22"
diff --git a/conf/distro/include/angstrom.inc b/conf/distro/include/angstrom.inc
index 865f0bc5a6..0c3ac35672 100644
--- a/conf/distro/include/angstrom.inc
+++ b/conf/distro/include/angstrom.inc
@@ -16,6 +16,11 @@ require conf/distro/include/angstrom-${ANGSTROM_MODE}.inc
#Use this variable in feeds and other parts that need a URI
ANGSTROM_URI ?= "http://www.angstrom-distribution.org"
+#Use this variable to select which recipe you want to use to get feed configs (/etc/ipkg/*, /etc/apt/sources.list)
+# usefull for derivative distros and local testing
+# As this is runtime we can't and won't use virtual/feed-configs
+ANGSTROM_FEED_CONFIGS ?= "angstrom-feed-configs"
+
#Set the default maintainer to angstrom-dev
MAINTAINER = "Angstrom Developers <angstrom-distro-devel@linuxtogo.org>"
diff --git a/conf/distro/include/insane-srcrevs.inc b/conf/distro/include/insane-srcrevs.inc
new file mode 100644
index 0000000000..82540840b1
--- /dev/null
+++ b/conf/distro/include/insane-srcrevs.inc
@@ -0,0 +1,77 @@
+SRCREV_pn-dfu-util ?= "${AUTOREV}"
+SRCREV_pn-dfu-util-native ?= "${AUTOREV}"
+SRCREV_pn-eglibc ?= "${AUTOREV}"
+SRCREV_pn-eglibc-initial ?= "${AUTOREV}"
+SRCREV_pn-eglibc-intermediate ?= "${AUTOREV}"
+SRCREV_pn-ezxd ?= "${AUTOREV}"
+SRCREV_pn-fbgrab-viewer-native ?= "${AUTOREV}"
+SRCREV_pn-fstests ?= "${AUTOREV}"
+SRCREV_pn-gnuradio ?= "${AUTOREV}"
+SRCREV_pn-hildon-1 ?= "${AUTOREV}"
+SRCREV_pn-libgsmd ?= "${AUTOREV}"
+SRCREV_pn-libmokogsmd2 ?= "${AUTOREV}"
+SRCREV_pn-libmokojournal2 ?= "${AUTOREV}"
+SRCREV_pn-libmokopanelui2 ?= "${AUTOREV}"
+SRCREV_pn-libmokoui2 ?= "${AUTOREV}"
+SRCREV_pn-libowl ?= "${AUTOREV}"
+SRCREV_pn-libxosd ?= "${AUTOREV}"
+SRCREV_pn-llvm-gcc4 ?= "${AUTOREV}"
+SRCREV_pn-llvm-gcc4-cross ?= "${AUTOREV}"
+SRCREV_pn-maemo-mapper ?= "${AUTOREV}"
+SRCREV_pn-matchbox-desktop-2 ?= "${AUTOREV}"
+SRCREV_pn-matchbox-keyboard ?= "${AUTOREV}"
+SRCREV_pn-matchbox-keyboard-inputmethod ?= "${AUTOREV}"
+SRCREV_pn-matchbox-panel-2 ?= "${AUTOREV}"
+SRCREV_pn-neod ?= "${AUTOREV}"
+SRCREV_pn-oh-puzzles ?= "${AUTOREV}"
+SRCREV_pn-openmoko-appmanager ?= "${AUTOREV}"
+SRCREV_pn-openmoko-calculator ?= "${AUTOREV}"
+SRCREV_pn-openmoko-calculator2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-common ?= "${AUTOREV}"
+SRCREV_pn-openmoko-common2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-contacts ?= "${AUTOREV}"
+SRCREV_pn-openmoko-contacts2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dates ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dates2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dialer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dialer2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-feedreader2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-finger-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-firststart2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-footer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-icon-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-icon-theme-standard2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-keyboard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-libs ?= "${AUTOREV}"
+SRCREV_pn-openmoko-mediaplayer2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-messages ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-battery ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-bt ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-clock ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-demo-simple ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-gps ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-gsm ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-mainmenu ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-usb ?= "${AUTOREV}"
+SRCREV_pn-openmoko-session ?= "${AUTOREV}"
+SRCREV_pn-openmoko-simplemediaplayer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-sound-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-stylus-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-stylus-demo-simple ?= "${AUTOREV}"
+SRCREV_pn-openmoko-taskmanager ?= "${AUTOREV}"
+SRCREV_pn-openmoko-tasks ?= "${AUTOREV}"
+SRCREV_pn-openmoko-tasks2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-theme-standard-qvga ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today2-folders ?= "${AUTOREV}"
+SRCREV_pn-psplash ?= "${AUTOREV}"
+SRCREV_pn-settings-daemon ?= "${AUTOREV}"
+SRCREV_pn-sjf2410-linux-native ?= "${AUTOREV}"
+SRCREV_pn-sphyrna ?= "${AUTOREV}"
+SRCREV_pn-webkit-gtk ?= "${AUTOREV}"
+SRCREV_pn-xoo ?= "${AUTOREV}"
+
+SRCREV ?= "${AUTOREV}"
diff --git a/conf/distro/include/moko-autorev.inc b/conf/distro/include/moko-autorev.inc
new file mode 100644
index 0000000000..5a1dc34784
--- /dev/null
+++ b/conf/distro/include/moko-autorev.inc
@@ -0,0 +1,43 @@
+SRCREV_pn-openmoko-appmanager ?= "${AUTOREV}"
+SRCREV_pn-openmoko-calculator ?= "${AUTOREV}"
+SRCREV_pn-openmoko-calculator2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-common ?= "${AUTOREV}"
+SRCREV_pn-openmoko-common2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-contacts ?= "${AUTOREV}"
+SRCREV_pn-openmoko-contacts2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dates ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dates2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dialer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-dialer2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-feedreader2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-finger-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-firststart2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-footer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-icon-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-icon-theme-standard2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-keyboard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-libs ?= "${AUTOREV}"
+SRCREV_pn-openmoko-mediaplayer2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-messages ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-battery ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-bt ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-clock ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-demo-simple ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-gps ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-gsm ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-mainmenu ?= "${AUTOREV}"
+SRCREV_pn-openmoko-panel-usb ?= "${AUTOREV}"
+SRCREV_pn-openmoko-session ?= "${AUTOREV}"
+SRCREV_pn-openmoko-simplemediaplayer ?= "${AUTOREV}"
+SRCREV_pn-openmoko-sound-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-stylus-demo ?= "${AUTOREV}"
+SRCREV_pn-openmoko-stylus-demo-simple ?= "${AUTOREV}"
+SRCREV_pn-openmoko-taskmanager ?= "${AUTOREV}"
+SRCREV_pn-openmoko-tasks ?= "${AUTOREV}"
+SRCREV_pn-openmoko-tasks2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-theme-standard ?= "${AUTOREV}"
+SRCREV_pn-openmoko-theme-standard-qvga ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today2 ?= "${AUTOREV}"
+SRCREV_pn-openmoko-today2-folders ?= "${AUTOREV}"
diff --git a/conf/distro/include/openmoko.inc b/conf/distro/include/openmoko.inc
deleted file mode 100644
index 80c861b95c..0000000000
--- a/conf/distro/include/openmoko.inc
+++ /dev/null
@@ -1,142 +0,0 @@
-#
-# Header
-#
-DISTRO_NAME = "OpenMoko"
-
-#
-# Naming schemes
-#
-INHERIT += "debian multimachine"
-
-#
-# Packaging and output format
-#
-INHERIT += "package_ipk"
-IMAGE_FSTYPES = "tar.gz ext2.gz jffs2"
-IMAGE_FSTYPES_x86 = "tar.gz"
-IMAGE_ROOTFS_SIZE_ext2 = "131072"
-
-#
-# Binutils & Compiler
-#
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc-initial:gcc-cross-initial"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}gcc:gcc-cross"
-PREFERRED_PROVIDERS += " virtual/${TARGET_PREFIX}g++:gcc-cross"
-
-# EABI stuff
-PREFERRED_PROVIDER_virtual/${TARGET_PREFIX}-libc-for-gcc = "glibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-angstrom-linux-gnueabi-libc-for-gcc = "glibc-intermediate"
-PREFERRED_PROVIDER_virtual/arm-linux-libc-for-gcc = "glibc-intermediate"
-
-#
-# Target OS & FPU system
-#
-TARGET_OS = "linux"
-TARGET_FPU_arm = "soft"
-TARGET_FPU_armeb = "soft"
-PREFERRED_PROVIDER_virtual/libiconv = "glibc"
-PREFERRED_PROVIDER_virtual/libintl = "glibc"
-PREFERRED_VERSION_linux-libc-headers_x86 = "2.6.15.99"
-PREFERRED_VERSION_linux-libc_headers = "2.6.18"
-#
-# Features
-#
-DISTRO_FEATURES = "alsa bluetooth ext2 ipsec nfs ppp smbfs usbgadget usbhost"
-
-#
-# Bootstrap & Init
-#
-require conf/distro/include/sane-srcdates.inc
-
-#
-# Framebuffer & X
-#
-PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
-PREFERRED_PROVIDER_virtual/ecore ?= "ecore-x11"
-PREFERRED_PROVIDER_virtual/evas ?= "evas-x11"
-PREFERRED_PROVIDER_virtual/esmart ?= "esmart-x11"
-PREFERRED_PROVIDER_virtual/libsdl = "libsdl-x11"
-PREFERRED_PROVIDER_virtual/xserver ?= "xserver-kdrive"
-PREFERRED_PROVIDER_tslib ?= "tslib"
-PREFERRED_PROVIDER_xserver ?= "xserver-kdrive"
-require conf/distro/include/preferred-xorg-versions-X11R7.1.inc
-
-#
-# Gnome
-#
-PREFERRED_PROVIDER_dbus-glib = "dbus-glib"
-PREFERRED_PROVIDER_gconf = "gconf-dbus"
-#new
-#PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs"
-#old
-PREFERRED_PROVIDER_gnome-vfs = "gnome-vfs"
-PREFERRED_PROVIDER_gnome-vfs-plugin-file = "gnome-vfs"
-
-PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive"
-PREFERRED_PROVIDER_bluez-utils = "bluez-utils-dbus"
-
-PREFERRED_VERSION_dbus-native = "1.0.2"
-PREFERRED_VERSION_dbus = "1.0.2"
-PREFERRED_VERSION_dbus-glib-native = "0.71"
-PREFERRED_VERSION_dbus-glib = "0.71"
-PREFERRED_VERSION_atk = "1.9.0"
-PREFERRED_VERSION_pango = "1.8.2"
-PREFERRED_VERSION_glib-2.0 = "2.12.3"
-PREFERRED_VERSION_gtk+ = "2.6.10"
-PREFERRED_VERSION_gtk-engines = "2.6.5"
-#PREFERRED_VERSION_gnome-vfs = "2.16.3"
-
-PREFERRED_VERSION_fontconfig = "2.4.1"
-
-# we don't ship gtk-directfb by default
-PREFERRED_PROVIDER_gtk+ ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-ani ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-bmpg ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-gif ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-ico ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-jpeg ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-pcx ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-png ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-pnm ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-ras ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-tga ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-wbmp ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-xbm ?= "gtk+"
-PREFERRED_PROVIDER_gdk-pixbuf-loader-xpm ?= "gtk+"
-#
-# GPE
-#
-PREFERRED_PROVIDER_libgpewidget = "libgpewidget"
-
-#
-# O-Hand
-#
-PREFERRED_VERSION_contacts = "0.1"
-PREFERRED_VERSION_dates = "0.1"
-# PREFERRED_VERSION_web = "???"
-
-#
-# Development
-#
-PREFERRED_PROVIDER_qemu-native = "qemu-native"
-PREFERRED_VERSION_qemu-native = "0.9.0+cvs${SRCDATE}"
-
-#
-# Opie
-#
-QTE_VERSION = "2.3.10"
-PALMTOP_USE_MULTITHREADED_QTE = "yes"
-require conf/distro/include/preferred-opie-versions.inc
-
-#
-# Enlightenment
-#
-require conf/distro/include/preferred-e-versions.inc
-
-#
-# OpenMoko
-#
-
-#We comment this out since external developers don't needs to use SRCDATE="now" as that generated unneed traffic
-#require conf/distro/include/preferred-openmoko-versions.inc
-
diff --git a/conf/distro/include/preferred-openmoko-versions.inc b/conf/distro/include/preferred-openmoko-versions.inc
index 263406c90b..ea24db3708 100644
--- a/conf/distro/include/preferred-openmoko-versions.inc
+++ b/conf/distro/include/preferred-openmoko-versions.inc
@@ -3,58 +3,8 @@
#
#
-# Base
+# Bootloader and Kernel
#
-SRCDATE_uboot = "now"
-SRCDATE_uboot-gta01 = "now"
-SRCDATE_kernel = "now"
-SRCDATE_linux-gta01 = "now"
-SRCDATE_linux-gta01-nobbt = "now"
-SRCDATE_libgsmd = "now"
-SRCDATE_openmoko-session = "now"
-SRCDATE_openmoko-common = "now"
-SRCDATE_openmoko-theme-standard = "now"
-SRCDATE_openmoko-libs = "now"
+SRCREV_pn-linux-openmoko = "2937"
-#
-# Examples
-#
-SRCDATE_openmoko-stylus-demo = "now"
-SRCDATE_openmoko-stylus-demo-simple = "now"
-SRCDATE_openmoko-finger-demo = "now"
-SRCDATE_openmoko-panel-demo = "now"
-SRCDATE_openmoko-panel-demo-simple = "now"
-
-#
-# PIM
-#
-SRCDATE_openmoko-contacts = "now"
-SRCDATE_openmoko-dates = "now"
-
-#
-# Applications
-#
-SRCDATE_openmoko-appmanager = "now"
-SRCDATE_openmoko-chordmaster = "now"
-SRCDATE_openmoko-dialer = "now"
-SRCDATE_openmoko-footer = "now"
-SRCDATE_openmoko-phone = "now"
-SRCDATE_openmoko-mainmenu = "now"
-SRCDATE_openmoko-taskmanager = "now"
-
-#
-# Multimedia
-#
-SRCDATE_openmoko-simplemediaplayer = "now"
-
-#
-# Panel Plugins
-#
-SRCDATE_openmoko-panel-clock = "now"
-SRCDATE_openmoko-panel-battery = "now"
-SRCDATE_openmoko-panel-mainmenu = "now"
-SRCDATE_openmoko-panel-gsm = "now"
-SRCDATE_openmoko-panel-gps = "now"
-SRCDATE_openmoko-panel-bt = "now"
-SRCDATE_openmoko-panel-usb = "now"
diff --git a/conf/distro/include/preferred-xorg-versions-X11R7.3.inc b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
new file mode 100644
index 0000000000..7ffa788c91
--- /dev/null
+++ b/conf/distro/include/preferred-xorg-versions-X11R7.3.inc
@@ -0,0 +1,282 @@
+PREFERRED_PROVIDER_virtual/xserver ?= "xserver-xorg"
+
+PREFERRED_PROVIDER_libxext ?= "libxext"
+PREFERRED_PROVIDER_xext ?= "libxext"
+PREFERRED_PROVIDER_libxi ?= "libxi"
+PREFERRED_PROVIDER_libxft ?= "libxft"
+PREFERRED_PROVIDER_virtual/libx11 ?= "libx11"
+PREFERRED_PROVIDER_libxpm ?= "libxpm"
+PREFERRED_PROVIDER_xpm ?= "libxpm"
+PREFERRED_PROVIDER_libxt ?= "libxt"
+PREFERRED_PROVIDER_libxaw ?= "libxaw"
+PREFERRED_PROVIDER_libice ?= "libice"
+PREFERRED_PROVIDER_libxrender ?= "libxrender"
+PREFERRED_PROVIDER_libxcursor ?= "libxcursor"
+PREFERRED_PROVIDER_xextensions ?= "xextensions"
+PREFERRED_PROVIDER_xproto ?= "xproto"
+PREFERRED_PROVIDER_x11 ?= "libx11"
+PREFERRED_PROVIDER_libxv ?= "libxv"
+PREFERRED_PROVIDER_xft ?= "libxft"
+PREFERRED_PROVIDER_libxrandr ?= "libxrandr"
+PREFERRED_PROVIDER_libxdamage ?= "libxdamage"
+PREFERRED_PROVIDER_libxcomposite ?= "libxcomposite"
+PREFERRED_PROVIDER_libxfixes ?= "libxfixes"
+PREFERRED_PROVIDER_libxinerama ?= "libxinerama"
+PREFERRED_PROVIDER_libxxf86vm ?= "libxxf86vm"
+PREFERRED_PROVIDER_libxmu ?= "libxmu"
+PREFERRED_PROVIDER_libsm ?= "libsm"
+PREFERRED_PROVIDER_xrandr ?= "xrandr"
+PREFERRED_PROVIDER_xserver ?= "xserver-xorg"
+PREFERRED_PROVIDER_virtual/xorg ?= "xserver-xorg"
+
+PREFERRED_VERSION_task-xorg ?= "X11R7.3"
+
+# app
+PREFERRED_VERSION_appres ?= "1.0.1"
+PREFERRED_VERSION_bdftopcf ?= "1.0.1"
+PREFERRED_VERSION_beforelight ?= "1.0.2"
+PREFERRED_VERSION_bitmap ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_editres ?= "1.0.2"
+PREFERRED_VERSION_fontosfnt ?= "1.0.3"
+PREFERRED_VERSION_fslsfonts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_fstobdf ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_iceauth ?= "1.0.2"
+PREFERRED_VERSION_ico ?= "1.0.2"
+PREFERRED_VERSION_lbxproxy ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_listres ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_luit ?= "1.0.2"
+PREFERRED_VERSION_mkfontdir-native ?= "1.0.3"
+PREFERRED_VERSION_mkfontdir ?= "1.0.3"
+PREFERRED_VERSION_mkfontscale ?= "1.0.3"
+PREFERRED_VERSION_oclock ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_proxymngr ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_rgb ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_rstart ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_scripts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_sessreg ?= "1.0.3"
+PREFERRED_VERSION_setxkbmap ?= "1.0.4"
+PREFERRED_VERSION_smproxy ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_twm ?= "1.0.3"
+PREFERRED_VERSION_viewres ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_x11perf ?= "X11R7.1-1.4.1"
+PREFERRED_VERSION_xauth ?= "1.0.2"
+PREFERRED_VERSION_xbacklight ?= "1.1"
+PREFERRED_VERSION_xbiff ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xcalc ?= "1.0.2"
+PREFERRED_VERSION_xclipboard ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xclock ?= "1.0.3"
+PREFERRED_VERSION_xcmsdb ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xconsole ?= "1.0.3"
+PREFERRED_VERSION_xcursorgen ?= "1.0.2"
+PREFERRED_VERSION_xdbedizzy ?= "1.0.2"
+PREFERRED_VERSION_xditview ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xdm ?= "1.1.6"
+PREFERRED_VERSION_xdpyinfo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xdriinfo ?= "1.0.2"
+PREFERRED_VERSION_xedit ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xev ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xeyes ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xxf86dga ?= "1.0.2"
+PREFERRED_VERSION_xfd ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfindproxy ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfontsel ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfs ?= "1.0.4"
+PREFERRED_VERSION_xfsinfo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xfwp ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xgamma ?= "1.0.2"
+PREFERRED_VERSION_xgc ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xhost ?= "1.0.2"
+PREFERRED_VERSION_xinit ?= "1.0.5"
+PREFERRED_VERSION_xkbcomp ?= "1.0.3"
+PREFERRED_VERSION_xkbevd ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xkbprint ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xkbutils ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xkill ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xload ?= "1.0.2"
+PREFERRED_VERSION_xlogo ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsatoms ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsclients ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xlsfonts ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xmag ?= "1.0.2"
+PREFERRED_VERSION_xman ?= "1.0.3"
+PREFERRED_VERSION_xmessage ?= "1.0.2"
+PREFERRED_VERSION_xmh ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xmodmap ?= "1.0.3"
+PREFERRED_VERSION_xmore ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xphelloworld ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xplsprinters ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xpr ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xprehashprinterlist ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xprop ?= "1.0.3"
+PREFERRED_VERSION_xrandr ?= "1.2.2"
+PREFERRED_VERSION_xrdb ?= "1.0.4"
+PREFERRED_VERSION_xrefresh ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xrx ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xset ?= "1.0.3"
+PREFERRED_VERSION_xsetmode ?= "X11R7.0-1.0.0"
+PREFERRED_VERSION_xsetpointer ?= "X11R7.0-1.0.0"
+PREFERRED_VERSION_xsetroot ?= "1.0.2"
+PREFERRED_VERSION_xsm ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xstdcmap ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xtrap ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_xvidtune ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xvinfo ?= "1.0.2"
+PREFERRED_VERSION_xwd ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xwininfo ?= "1.0.3"
+PREFERRED_VERSION_xwud ?= "X11R7.0-1.0.1"
+
+#data
+PREFERRED_VERSION_xbitmaps ?= "X11R7.0-1.0.1"
+PREFERRED_VERSION_xcursor-themes ?= "X11R7.0-1.0.1"
+
+# doc
+PREFERRED_VERSION_xorg-docs ?= "1.4"
+PREFERRED_VERSION_xorg-sgml-doctools ?= "1.2"
+
+# driver
+PREFERRED_VERSION_xf86-input-acecad ?= "1.2.0"
+PREFERRED_VERSION_xf86-input-aiptek ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xf86-input-calcomp ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-citron ?= "X11R7.1-2.2.0"
+PREFERRED_VERSION_xf86-input-digitaledge ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-dmc ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-dynapro ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-elo2300 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-elographics ?= "X11R7.0-1.0.0.5"
+PREFERRED_VERSION_xf86-input-evdev ?= "X11R7.1-1.1.2"
+PREFERRED_VERSION_xf86-input-fpit ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-hyperpen ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-jamstudio ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-joystick ?= "1.2.3"
+PREFERRED_VERSION_xf86-input-keyboard ?= "1.2.2"
+PREFERRED_VERSION_xf86-input-magellan ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-magictouch ?= "X11R7.1-1.0.0.5"
+PREFERRED_VERSION_xf86-input-microtouch ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-mouse ?= "1.2.2"
+PREFERRED_VERSION_xf86-input-mutouch ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-palmax ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-penmount ?= "1.2.0"
+PREFERRED_VERSION_xf86-input-spaceorb ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-summa ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-tek4957 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-ur98 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-input-vmmouse ?= "12.4.1"
+PREFERRED_VERSION_xf86-input-void ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-apm ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-ark ?= "X11R7.1-0.6.0"
+PREFERRED_VERSION_xf86-video-ast ?= "X11R7.1-0.81.0"
+PREFERRED_VERSION_xf86-video-ati ?= "6.6.193"
+PREFERRED_VERSION_xf86-video-chips ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-cirrus ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-cyrix ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-dummy ?= "X11R7.1-0.2.0"
+PREFERRED_VERSION_xf86-video-fbdev ?= "0.3.1"
+PREFERRED_VERSION_xf86-video-glide ?= "1.0.0"
+PREFERRED_VERSION_xf86-video-glint ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-i128 ?= "1.1.0.6"
+PREFERRED_VERSION_xf86-video-i740 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-i810 ?= "1.6.5"
+PREFERRED_VERSION_xf86-video-imstt ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-intel ?= "2.1.1"
+PREFERRED_VERSION_xf86-video-mga ?= "1.4.6.1"
+PREFERRED_VERSION_xf86-video-neomagic ?= "X11R7.1-1.1.1"
+PREFERRED_VERSION_xf86-video-newport ?= "0.2.1"
+PREFERRED_VERSION_xf86-video-nsc ?= "2.8.3"
+PREFERRED_VERSION_xf86-video-nv ?= "2.1.3"
+PREFERRED_VERSION_xf86-video-rendition ?= "4.1.3"
+PREFERRED_VERSION_xf86-video-s3 ?= "0.5.0"
+PREFERRED_VERSION_xf86-video-s3virge ?= "X11R7.1-1.9.1"
+PREFERRED_VERSION_xf86-video-savage ?= "2.1.3"
+PREFERRED_VERSION_xf86-video-siliconmotion ?= "1.4.2"
+PREFERRED_VERSION_xf86-video-sis ?= "0.9.3"
+PREFERRED_VERSION_xf86-video-sisusb ?= "X11R7.1-0.8.1"
+PREFERRED_VERSION_xf86-video-sunbw2 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg14 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg3 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suncg6 ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-sunffb ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-sunleo ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-suntcx ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-tdfx ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-tga ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86-video-trident ?= "1.2.3"
+PREFERRED_VERSION_xf86-video-tseng ?= "1.1.1"
+PREFERRED_VERSION_xf86-video-v4l ?= "X11R7.1-0.1.1"
+PREFERRED_VERSION_xf86-video-vermilion ?= "1.0.0"
+PREFERRED_VERSION_xf86-video-vesa ?= "1.3.0"
+PREFERRED_VERSION_xf86-video-vga ?= "X11R7.1-4.1.0"
+PREFERRED_VERSION_xf86-video-via ?= "0.2.2"
+PREFERRED_VERSION_xf86-video-vmware ?= "10.14.1"
+PREFERRED_VERSION_xf86-video-voodoo ?= "1.1.1"
+
+# font
+PREFERRED_VERSION_encodings ?= "1.0.2"
+PREFERRED_VERSION_font-screen-cyrillic ?= "1.0.1"
+PREFERRED_VERSION_font-util-native ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_font-util ?= "X11R7.1-1.0.1"
+
+# lib
+PREFERRED_VERSION_diet-x11 ?= "1.1.3"
+PREFERRED_VERSION_libdmx ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_libfontenc ?= "1.0.4"
+PREFERRED_VERSION_libice ?= "1.0.4"
+PREFERRED_VERSION_liblbxutil ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_libsm ?= "1.0.3"
+PREFERRED_VERSION_libx11 ?= "1.1.3"
+PREFERRED_VERSION_libx11-native ?= "1.1.1"
+PREFERRED_VERSION_libxau ?= "1.0.3"
+PREFERRED_VERSION_libxaw ?= "1.0.4"
+PREFERRED_VERSION_libxcomposite ?= "0.4.0"
+PREFERRED_VERSION_libxcursor ?= "1.1.9"
+PREFERRED_VERSION_libxdamage ?= "1.0.4"
+PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
+PREFERRED_VERSION_libxdmcp ?= "1.0.2"
+PREFERRED_VERSION_libxevie ?= "1.0.2"
+PREFERRED_VERSION_libxext ?= "1.0.2"
+PREFERRED_VERSION_libxfixes ?= "4.0.3"
+PREFERRED_VERSION_libxfont ?= "1.3.1"
+PREFERRED_VERSION_libxfontcache ?= "1.0.4"
+PREFERRED_VERSION_libxi ?= "1.1.3"
+PREFERRED_VERSION_libxinerama ?= "1.0.2"
+PREFERRED_VERSION_libxkbfile ?= "1.0.4"
+PREFERRED_VERSION_libxkbui ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_libxmu ?= "1.0.3"
+PREFERRED_VERSION_libxpm ?= "3.5.7"
+PREFERRED_VERSION_libxrandr ?= "1.2.2"
+PREFERRED_VERSION_libxrender ?= "0.9.4"
+PREFERRED_VERSION_libxres ?= "1.0.3"
+PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
+PREFERRED_VERSION_libxt ?= "1.0.4"
+PREFERRED_VERSION_libxtst ?= "1.0.3"
+PREFERRED_VERSION_libxvmc ?= "1.0.4"
+PREFERRED_VERSION_libxxf86dga ?= "1.0.2"
+PREFERRED_VERSION_libxxf86misc ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_libxxf86vm ?= "X11R7.1-1.0.1"
+PREFERRED_VERSION_xtrans ?= "1.0.4"
+
+# proto
+PREFERRED_VERSION_compositeproto ?= "0.4"
+PREFERRED_VERSION_damageproto ?= "1.1.0"
+PREFERRED_VERSION_fixesproto ?= "4.0"
+PREFERRED_VERSION_glproto ?= "1.4.8"
+PREFERRED_VERSION_inputproto ?= "1.4.2.1"
+PREFERRED_VERSION_kbproto ?= "1.0.3"
+PREFERRED_VERSION_randrproto ?= "1.2.1"
+PREFERRED_VERSION_renderproto ?= "0.9.3"
+PREFERRED_VERSION_scrnsaverproto ?= "X11R7.1-1.1.0"
+PREFERRED_VERSION_xf86dgaproto ?= "2.0.3"
+PREFERRED_VERSION_xproto-native ?= "7.0.10"
+PREFERRED_VERSION_xproto ?= "7.0.10"
+
+# util
+PREFERRED_VERSION_gccmakedep ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_imake ?= "X11R7.1-1.0.2"
+PREFERRED_VERSION_makedepend ?= "1.0.1"
+PREFERRED_VERSION_util-macros-native ?= "1.1.5"
+PREFERRED_VERSION_util-macros ?= "1.1.5"
+PREFERRED_VERSION_xorg-cf-files ?= "X11R7.1-1.0.2"
+
+# xserver
+PREFERRED_VERSION_xserver-kdrive ?= "1.4.0"
+PREFERRED_VERSION_xserver-xorg ?= "1.4.0"
+
diff --git a/conf/distro/include/preferred-xorg-versions.inc b/conf/distro/include/preferred-xorg-versions.inc
index fa66d61a0a..f34b29f147 100644
--- a/conf/distro/include/preferred-xorg-versions.inc
+++ b/conf/distro/include/preferred-xorg-versions.inc
@@ -1,111 +1,111 @@
-PREFERRED_VERSION_applewmproto = "1.0.3"
-PREFERRED_VERSION_bigreqsproto = "1.0.2"
-PREFERRED_VERSION_bigreqsproto-native = "1.0.2"
-PREFERRED_VERSION_compositeproto = "0.4"
-PREFERRED_VERSION_damageproto = "1.1.0"
-PREFERRED_VERSION_diet-x11 = "1.1.2"
-PREFERRED_VERSION_dmxproto = "2.2.2"
-PREFERRED_VERSION_evieext = "1.0.2"
-PREFERRED_VERSION_fixesproto = "4.0"
-PREFERRED_VERSION_fontcacheproto = "0.1.2"
-PREFERRED_VERSION_fontcacheproto-native = "0.1.2"
-PREFERRED_VERSION_fontsproto = "2.0.2"
-PREFERRED_VERSION_fontsproto-native = "2.0.2"
-PREFERRED_VERSION_gccmakedep = "1.0.2"
-PREFERRED_VERSION_glproto = "1.4.8"
-PREFERRED_VERSION_imake = "1.0.2"
-PREFERRED_VERSION_inputproto = "1.4.2"
-PREFERRED_VERSION_inputproto-native = "1.4.1"
-PREFERRED_VERSION_kbproto = "1.0.3"
-PREFERRED_VERSION_kbproto-native = "1.0.2"
-PREFERRED_VERSION_libapplewm = "1.0.0"
-PREFERRED_VERSION_libdmx = "1.0.2"
-PREFERRED_VERSION_libfontenc = "1.0.4"
-PREFERRED_VERSION_libfontenc-native = "1.0.4"
-PREFERRED_VERSION_libfs = "1.0.0"
-PREFERRED_VERSION_libice = "1.0.3"
-PREFERRED_VERSION_liblbxutil = "1.0.1"
-PREFERRED_VERSION_liboldx = "1.0.1"
-PREFERRED_VERSION_libsm = "1.0.3"
-PREFERRED_VERSION_libwindowswm = "1.0.0"
-PREFERRED_VERSION_libx11 = "1.1.2"
-PREFERRED_VERSION_libx11-native = "1.0.1"
-PREFERRED_VERSION_libxau = "1.0.3"
-PREFERRED_VERSION_libxau-native = "1.0.3"
-PREFERRED_VERSION_libxaw = "1.0.3"
-PREFERRED_VERSION_libxcomposite = "0.4.0"
-PREFERRED_VERSION_libxcursor = "1.1.8"
-PREFERRED_VERSION_libxdamage = "1.1.1"
-PREFERRED_VERSION_libxdmcp = "1.0.2"
-PREFERRED_VERSION_libxdmcp-native = "1.0.2"
-PREFERRED_VERSION_libxevie = "1.0.2"
-PREFERRED_VERSION_libxext = "1.0.3"
-PREFERRED_VERSION_libxfixes = "4.0.3"
-PREFERRED_VERSION_libxfont = "1.3.0"
-PREFERRED_VERSION_libxfont-native = "1.3.0"
-PREFERRED_VERSION_libxfontcache = "1.0.4"
-PREFERRED_VERSION_libxft = "2.1.12"
-PREFERRED_VERSION_libxi = "1.1.2"
-PREFERRED_VERSION_libxinerama = "1.0.2"
-PREFERRED_VERSION_libxkbfile = "1.0.4"
-PREFERRED_VERSION_libxkbui = "1.0.2"
-PREFERRED_VERSION_libxmu = "1.0.3"
-PREFERRED_VERSION_libxp = "1.0.0"
-PREFERRED_VERSION_libxpm = "3.5.6"
-PREFERRED_VERSION_libxprintapputil = "1.0.1"
-PREFERRED_VERSION_libxprintutil = "1.0.1"
-PREFERRED_VERSION_libxrandr = "1.2.1"
-PREFERRED_VERSION_libxrender = "0.9.2"
-PREFERRED_VERSION_libxres = "1.0.3"
-PREFERRED_VERSION_libxscrnsaver = "1.1.2"
-PREFERRED_VERSION_libxt = "1.0.5"
-PREFERRED_VERSION_libxtrap = "1.0.0"
-PREFERRED_VERSION_libxtst = "1.0.2"
-PREFERRED_VERSION_libxv = "1.0.3"
-PREFERRED_VERSION_libxvmc = "1.0.4"
-PREFERRED_VERSION_libxxf86dga = "1.0.1"
-PREFERRED_VERSION_libxxf86misc = "1.0.1"
-PREFERRED_VERSION_libxxf86vm = "1.0.1"
-PREFERRED_VERSION_lndir = "1.0.1"
-PREFERRED_VERSION_makedepend = "1.0.1"
-PREFERRED_VERSION_makedepend-native = "1.0.1"
-PREFERRED_VERSION_printproto = "1.0.3"
-PREFERRED_VERSION_randrproto = "1.2.1"
-PREFERRED_VERSION_recordproto = "1.13.2"
-PREFERRED_VERSION_renderproto = "0.9.2"
-PREFERRED_VERSION_resourceproto = "1.0.2"
-PREFERRED_VERSION_scrnsaverproto = "1.1.0"
-PREFERRED_VERSION_trapproto = "3.4.3"
-PREFERRED_VERSION_util-macros = "1.1.5"
-PREFERRED_VERSION_util-macros-native = "1.1.5"
-PREFERRED_VERSION_videoproto = "2.2.2"
-PREFERRED_VERSION_windowswmproto = "1.0.3"
-PREFERRED_VERSION_xauth = "1.0.2"
-PREFERRED_VERSION_xcmiscproto = "1.1.2"
-PREFERRED_VERSION_xcmiscproto-native = "1.1.2"
-PREFERRED_VERSION_xdpyinfo = "1.0.2"
-PREFERRED_VERSION_xextproto = "7.0.2"
-PREFERRED_VERSION_xextproto-native = "7.0.2"
-PREFERRED_VERSION_xf86bigfontproto = "1.1.2"
-PREFERRED_VERSION_xf86bigfontproto-native = "1.1.2"
-PREFERRED_VERSION_xf86dgaproto = "2.0.2"
-PREFERRED_VERSION_xf86driproto = "2.0.3"
-PREFERRED_VERSION_xf86miscproto = "0.9.2"
-PREFERRED_VERSION_xf86rushproto = "1.1.2"
-PREFERRED_VERSION_xf86vidmodeproto = "2.2.2"
-PREFERRED_VERSION_xhost = "1.0.2"
-PREFERRED_VERSION_xineramaproto = "1.1.2"
-PREFERRED_VERSION_xmodmap = "1.0.2"
-PREFERRED_VERSION_xorg-cf-files = "1.0.2"
-PREFERRED_VERSION_xproto = "7.0.10"
-PREFERRED_VERSION_xproto-native = "7.0.10"
-PREFERRED_VERSION_xproxymanagementprotocol = "1.0.2"
-PREFERRED_VERSION_xrandr = "1.2.2"
-PREFERRED_VERSION_xrdb = "1.0.3"
-PREFERRED_VERSION_xserver-kdrive = "1.3.0.0"
-PREFERRED_VERSION_xserver-xorg = "1.3.0.0"
-PREFERRED_VERSION_xset = "1.0.2"
-PREFERRED_VERSION_xtrans = "1.0.3"
-PREFERRED_VERSION_xtrans-native = "1.0.3"
-PREFERRED_VERSION_xinit = "1.0.4"
-PREFERRED_VERSION_xev = "1.0.2"
+PREFERRED_VERSION_applewmproto ?= "1.0.3"
+PREFERRED_VERSION_bigreqsproto ?= "1.0.2"
+PREFERRED_VERSION_bigreqsproto-native ?= "1.0.2"
+PREFERRED_VERSION_compositeproto ?= "0.4"
+PREFERRED_VERSION_damageproto ?= "1.1.0"
+PREFERRED_VERSION_diet-x11 ?= "1.1.2"
+PREFERRED_VERSION_dmxproto ?= "2.2.2"
+PREFERRED_VERSION_evieext ?= "1.0.2"
+PREFERRED_VERSION_fixesproto ?= "4.0"
+PREFERRED_VERSION_fontcacheproto ?= "0.1.2"
+PREFERRED_VERSION_fontcacheproto-native ?= "0.1.2"
+PREFERRED_VERSION_fontsproto ?= "2.0.2"
+PREFERRED_VERSION_fontsproto-native ?= "2.0.2"
+PREFERRED_VERSION_gccmakedep ?= "1.0.2"
+PREFERRED_VERSION_glproto ?= "1.4.8"
+PREFERRED_VERSION_imake ?= "1.0.2"
+PREFERRED_VERSION_inputproto ?= "1.4.2"
+PREFERRED_VERSION_inputproto-native ?= "1.4.1"
+PREFERRED_VERSION_kbproto ?= "1.0.3"
+PREFERRED_VERSION_kbproto-native ?= "1.0.2"
+PREFERRED_VERSION_libapplewm ?= "1.0.0"
+PREFERRED_VERSION_libdmx ?= "1.0.2"
+PREFERRED_VERSION_libfontenc ?= "1.0.4"
+PREFERRED_VERSION_libfontenc-native ?= "1.0.4"
+PREFERRED_VERSION_libfs ?= "1.0.0"
+PREFERRED_VERSION_libice ?= "1.0.3"
+PREFERRED_VERSION_liblbxutil ?= "1.0.1"
+PREFERRED_VERSION_liboldx ?= "1.0.1"
+PREFERRED_VERSION_libsm ?= "1.0.3"
+PREFERRED_VERSION_libwindowswm ?= "1.0.0"
+PREFERRED_VERSION_libx11 ?= "1.1.2"
+PREFERRED_VERSION_libx11-native ?= "1.0.1"
+PREFERRED_VERSION_libxau ?= "1.0.3"
+PREFERRED_VERSION_libxau-native ?= "1.0.3"
+PREFERRED_VERSION_libxaw ?= "1.0.3"
+PREFERRED_VERSION_libxcomposite ?= "0.4.0"
+PREFERRED_VERSION_libxcursor ?= "1.1.8"
+PREFERRED_VERSION_libxdamage ?= "1.1.1"
+PREFERRED_VERSION_libxdmcp ?= "1.0.2"
+PREFERRED_VERSION_libxdmcp-native ?= "1.0.2"
+PREFERRED_VERSION_libxevie ?= "1.0.2"
+PREFERRED_VERSION_libxext ?= "1.0.3"
+PREFERRED_VERSION_libxfixes ?= "4.0.3"
+PREFERRED_VERSION_libxfont ?= "1.3.0"
+PREFERRED_VERSION_libxfont-native ?= "1.3.0"
+PREFERRED_VERSION_libxfontcache ?= "1.0.4"
+PREFERRED_VERSION_libxft ?= "2.1.12"
+PREFERRED_VERSION_libxi ?= "1.1.2"
+PREFERRED_VERSION_libxinerama ?= "1.0.2"
+PREFERRED_VERSION_libxkbfile ?= "1.0.4"
+PREFERRED_VERSION_libxkbui ?= "1.0.2"
+PREFERRED_VERSION_libxmu ?= "1.0.3"
+PREFERRED_VERSION_libxp ?= "1.0.0"
+PREFERRED_VERSION_libxpm ?= "3.5.6"
+PREFERRED_VERSION_libxprintapputil ?= "1.0.1"
+PREFERRED_VERSION_libxprintutil ?= "1.0.1"
+PREFERRED_VERSION_libxrandr ?= "1.2.1"
+PREFERRED_VERSION_libxrender ?= "0.9.2"
+PREFERRED_VERSION_libxres ?= "1.0.3"
+PREFERRED_VERSION_libxscrnsaver ?= "1.1.2"
+PREFERRED_VERSION_libxt ?= "1.0.5"
+PREFERRED_VERSION_libxtrap ?= "1.0.0"
+PREFERRED_VERSION_libxtst ?= "1.0.2"
+PREFERRED_VERSION_libxv ?= "1.0.3"
+PREFERRED_VERSION_libxvmc ?= "1.0.4"
+PREFERRED_VERSION_libxxf86dga ?= "1.0.1"
+PREFERRED_VERSION_libxxf86misc ?= "1.0.1"
+PREFERRED_VERSION_libxxf86vm ?= "1.0.1"
+PREFERRED_VERSION_lndir ?= "1.0.1"
+PREFERRED_VERSION_makedepend ?= "1.0.1"
+PREFERRED_VERSION_makedepend-native ?= "1.0.1"
+PREFERRED_VERSION_printproto ?= "1.0.3"
+PREFERRED_VERSION_randrproto ?= "1.2.1"
+PREFERRED_VERSION_recordproto ?= "1.13.2"
+PREFERRED_VERSION_renderproto ?= "0.9.2"
+PREFERRED_VERSION_resourceproto ?= "1.0.2"
+PREFERRED_VERSION_scrnsaverproto ?= "1.1.0"
+PREFERRED_VERSION_trapproto ?= "3.4.3"
+PREFERRED_VERSION_util-macros ?= "1.1.5"
+PREFERRED_VERSION_util-macros-native ?= "1.1.5"
+PREFERRED_VERSION_videoproto ?= "2.2.2"
+PREFERRED_VERSION_windowswmproto ?= "1.0.3"
+PREFERRED_VERSION_xauth ?= "1.0.2"
+PREFERRED_VERSION_xcmiscproto ?= "1.1.2"
+PREFERRED_VERSION_xcmiscproto-native ?= "1.1.2"
+PREFERRED_VERSION_xdpyinfo ?= "1.0.2"
+PREFERRED_VERSION_xextproto ?= "7.0.2"
+PREFERRED_VERSION_xextproto-native ?= "7.0.2"
+PREFERRED_VERSION_xf86bigfontproto ?= "1.1.2"
+PREFERRED_VERSION_xf86bigfontproto-native ?= "1.1.2"
+PREFERRED_VERSION_xf86dgaproto ?= "2.0.2"
+PREFERRED_VERSION_xf86driproto ?= "2.0.3"
+PREFERRED_VERSION_xf86miscproto ?= "0.9.2"
+PREFERRED_VERSION_xf86rushproto ?= "1.1.2"
+PREFERRED_VERSION_xf86vidmodeproto ?= "2.2.2"
+PREFERRED_VERSION_xhost ?= "1.0.2"
+PREFERRED_VERSION_xineramaproto ?= "1.1.2"
+PREFERRED_VERSION_xmodmap ?= "1.0.2"
+PREFERRED_VERSION_xorg-cf-files ?= "1.0.2"
+PREFERRED_VERSION_xproto ?= "7.0.10"
+PREFERRED_VERSION_xproto-native ?= "7.0.10"
+PREFERRED_VERSION_xproxymanagementprotocol ?= "1.0.2"
+PREFERRED_VERSION_xrandr ?= "1.2.2"
+PREFERRED_VERSION_xrdb ?= "1.0.3"
+PREFERRED_VERSION_xserver-kdrive ?= "1.3.0.0"
+PREFERRED_VERSION_xserver-xorg ?= "1.3.0.0"
+PREFERRED_VERSION_xset ?= "1.0.2"
+PREFERRED_VERSION_xtrans ?= "1.0.3"
+PREFERRED_VERSION_xtrans-native ?= "1.0.3"
+PREFERRED_VERSION_xinit ?= "1.0.4"
+PREFERRED_VERSION_xev ?= "1.0.2"
diff --git a/conf/distro/include/sane-srcrevs.inc b/conf/distro/include/sane-srcrevs.inc
new file mode 100644
index 0000000000..d53217b82b
--- /dev/null
+++ b/conf/distro/include/sane-srcrevs.inc
@@ -0,0 +1,84 @@
+#Ggenerated with
+# bitbake -s | grep svnr | awk '{print "SRCREV_pn-" $1 "=" $2}' | \
+# sed -e s:\+:\=:g -e s:svnr::g| awk -F "=" '{print $1 " ?=\" " $3}' | \
+# awk -F "-r" '{print $1"\""}'
+
+# This will miss recipes that have skippackage set (e.g. uclibc)
+
+SRCREV_pn-bfin-uclibc ?= "1806"
+SRCREV_pn-dfu-util ?= "2866"
+SRCREV_pn-dfu-util-native ?= "2866"
+SRCREV_pn-eglibc ?= "3468"
+SRCREV_pn-eglibc-initial ?= "3468"
+SRCREV_pn-eglibc-intermediate ?= "3468"
+SRCREV_pn-ezxd ?= "2052"
+SRCREV_pn-elf2flt="1786"
+SRCREV_pn-fbgrab-viewer-native ?= "1943"
+SRCREV_pn-fstests ?= "204"
+SRCREV_pn-gnuradio ?= "6377"
+SRCREV_pn-hildon-1 ?= "13708"
+SRCREV_pn-libgsmd ?= "2806"
+SRCREV_pn-libmokogsmd2 ?= "2950"
+SRCREV_pn-libmokojournal2 ?= "2780"
+SRCREV_pn-libmokopanelui2 ?= "2958"
+SRCREV_pn-libmokoui2 ?= "2868"
+SRCREV_pn-libowl ?= "277"
+SRCREV_pn-libxosd ?= "627"
+SRCREV_pn-llvm-gcc4 ?= "374"
+SRCREV_pn-llvm-gcc4-cross ?= "374"
+SRCREV_pn-maemo-mapper ?= "108"
+SRCREV_pn-matchbox-desktop-2 ?= "1649"
+SRCREV_pn-matchbox-keyboard ?= "1583"
+SRCREV_pn-matchbox-keyboard-inputmethod ?= "1583"
+SRCREV_pn-matchbox-panel-2 ?= "1626"
+SRCREV_pn-neod ?= "2956"
+SRCREV_pn-oh-puzzles ?= "22"
+SRCREV_pn-openmoko-appmanager ?= "1851"
+SRCREV_pn-openmoko-calculator ?= "2404"
+SRCREV_pn-openmoko-calculator2 ?= "2789"
+SRCREV_pn-openmoko-common ?= "397"
+SRCREV_pn-openmoko-common2 ?= "2679"
+SRCREV_pn-openmoko-contacts ?= "2298"
+SRCREV_pn-openmoko-contacts2 ?= "335"
+SRCREV_pn-openmoko-dates ?= "467"
+SRCREV_pn-openmoko-dates2 ?= "563"
+SRCREV_pn-openmoko-dialer ?= "2811"
+SRCREV_pn-openmoko-dialer2 ?= "2946"
+SRCREV_pn-openmoko-feedreader2 ?= "2944"
+SRCREV_pn-openmoko-finger-demo ?= "1671"
+SRCREV_pn-openmoko-firststart2 ?= "2873"
+SRCREV_pn-openmoko-footer ?= "2354"
+SRCREV_pn-openmoko-icon-theme-standard ?= "2232"
+SRCREV_pn-openmoko-icon-theme-standard2 ?= "2840"
+SRCREV_pn-openmoko-keyboard ?= "1631"
+SRCREV_pn-openmoko-libs ?= "2367"
+SRCREV_pn-openmoko-mediaplayer2 ?= "2952"
+SRCREV_pn-openmoko-messages ?= "2276"
+SRCREV_pn-openmoko-panel-battery ?= "2897"
+SRCREV_pn-openmoko-panel-bt ?= "2896"
+SRCREV_pn-openmoko-panel-clock ?= "2567"
+SRCREV_pn-openmoko-panel-demo ?= "1622"
+SRCREV_pn-openmoko-panel-demo-simple ?= "1328"
+SRCREV_pn-openmoko-panel-gps ?= "2900"
+SRCREV_pn-openmoko-panel-gsm ?= "2936"
+SRCREV_pn-openmoko-panel-mainmenu ?= "2567"
+SRCREV_pn-openmoko-panel-usb ?= "2893"
+SRCREV_pn-openmoko-session ?= "152"
+SRCREV_pn-openmoko-simplemediaplayer ?= "1688"
+SRCREV_pn-openmoko-sound-theme-standard ?= "2827"
+SRCREV_pn-openmoko-stylus-demo ?= "2324"
+SRCREV_pn-openmoko-stylus-demo-simple ?= "1818"
+SRCREV_pn-openmoko-taskmanager ?= "1663"
+SRCREV_pn-openmoko-tasks ?= "320"
+SRCREV_pn-openmoko-tasks2 ?= "320"
+SRCREV_pn-openmoko-theme-standard ?= "2370"
+SRCREV_pn-openmoko-theme-standard-qvga ?= "2370"
+SRCREV_pn-openmoko-today ?= "2556"
+SRCREV_pn-openmoko-today2 ?= "2955"
+SRCREV_pn-openmoko-today2-folders ?= "2680"
+SRCREV_pn-psplash ?= "249"
+SRCREV_pn-settings-daemon ?= "1615"
+SRCREV_pn-sjf2410-linux-native ?= "933"
+SRCREV_pn-sphyrna ?= "44"
+SRCREV_pn-webkit-gtk ?= "25507"
+SRCREV_pn-xoo ?= "1623"
diff --git a/conf/distro/openmoko.conf b/conf/distro/openmoko.conf
index 7061ef2c63..26bcc2472c 100644
--- a/conf/distro/openmoko.conf
+++ b/conf/distro/openmoko.conf
@@ -11,7 +11,7 @@ require conf/distro/angstrom-2007.1.conf
#
DISTRO = "openmoko"
DISTRO_NAME = "OpenMoko"
-DISTRO_VERSION = "P1-August-Snapshot-${DATE}"
+DISTRO_VERSION = "P1-September-Snapshot-${DATE}"
#DISTRO_TYPE = "release"
DISTRO_TYPE = "debug"
@@ -29,3 +29,11 @@ FEED_URIS = "\
updates-all##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/all \
updates-armv4t##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/armv4t \
updates-fic-gta01##http://buildhost.openmoko.org/OM2007.2/tmp/deploy/glibc/ipk/fic-gta01 "
+
+# 2.18 seems to break badly on 64-bit systems
+PREFERRED_VERSION_binutils ?= "2.17.50.0.12"
+PREFERRED_VERSION_binutils-cross ?= "2.17.50.0.12"
+
+require conf/distro/include/preferred-openmoko-versions.inc
+require conf/distro/include/moko-autorev.inc
+
diff --git a/conf/machine/at91sam9260ek.conf b/conf/machine/at91sam9260ek.conf
new file mode 100644
index 0000000000..e8903a960a
--- /dev/null
+++ b/conf/machine/at91sam9260ek.conf
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@Name: Atmel AT91SAM9260EK Development Platform
+#@DESCRIPTION: Machine configuration for the at91sam9260ek development board with a at91sam9260 processor
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+#don't try to access tty1
+USE_VT = "0"
+
+MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "115200 ttyS0"
+EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
+
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/at91sam9261ek.conf b/conf/machine/at91sam9261ek.conf
new file mode 100644
index 0000000000..489575cd2b
--- /dev/null
+++ b/conf/machine/at91sam9261ek.conf
@@ -0,0 +1,20 @@
+#@TYPE: Machine
+#@Name: Atmel AT91SAM9261EK Development Platform
+#@DESCRIPTION: Machine configuration for the at91sam9261ek development board with a at91sam9261 processor
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t armv5te"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+PREFERRED_PROVIDER_xserver = "xserver-kdrive"
+
+#don't try to access tty1
+USE_VT = "0"
+
+MACHINE_FEATURES = "kernel26 alsa ext2 usbhost usbgadget screen touchscreen"
+
+# used by sysvinit_2
+SERIAL_CONSOLE = "115200 ttyS0"
+EXTRA_IMAGECMD_jffs2 = "--pad --little-endian --eraseblock=0x20000 -n"
+
+require conf/machine/include/tune-arm926ejs.conf
diff --git a/conf/machine/i586-generic.conf b/conf/machine/i586-generic.conf
index 2cae2a87dc..0ef522441b 100644
--- a/conf/machine/i586-generic.conf
+++ b/conf/machine/i586-generic.conf
@@ -24,3 +24,6 @@ MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
MACHINE_TASK_PROVIDER = "task-base"
+#tune for pentium cpu
+require conf/machine/include/tune-pentium.inc
+
diff --git a/conf/machine/i686-generic.conf b/conf/machine/i686-generic.conf
index 883d6b4dd0..8ff87553ba 100644
--- a/conf/machine/i686-generic.conf
+++ b/conf/machine/i686-generic.conf
@@ -22,3 +22,6 @@ MACHINE_FEATURES = "kernel26 screen keyboard pci ushbost acpi ext2"
MACHINE_EXTRA_RRECOMMENDS = " kernel-modules"
MACHINE_TASK_PROVIDER = "task-base"
+#tune for pentium pro cpu
+require conf/machine/include/tune-pentiumpro.inc
+
diff --git a/conf/machine/include/motorola-ezx-base.inc b/conf/machine/include/motorola-ezx-base.inc
index 6baa6a50ba..3912d8fc9b 100644
--- a/conf/machine/include/motorola-ezx-base.inc
+++ b/conf/machine/include/motorola-ezx-base.inc
@@ -4,8 +4,6 @@ PACKAGE_EXTRA_ARCHS = "armv4 armv4t armv5te iwmmxt"
PREFERRED_PROVIDER_xserver = "xserver-kdrive"
PREFERRED_PROVIDER_virtual/kernel = "linux-ezx"
-EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
-
#cat /proc/mtd
#dev: size erasesize name
#mtd0: 00020000 00008000 "Bootloader"
@@ -14,10 +12,6 @@ EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
#mtd3: 00020000 00020000 "Logo"
MACHINE_FEATURES = "kernel26 touchscreen apm alsa bluetooth usbgadget usbhost keyboard screen"
-
-# the EZX phones need a userspace daemon to stop the BP from shutting down the phone
-MACHINE_EXTRA_RDEPENDS += "opentapi"
-
MACHINE_DISPLAY_WIDTH_PIXELS = "240"
MACHINE_DISPLAY_HEIGHT_PIXELS = "320"
MACHINE_DISPLAY_ORIENTATION = "0"
@@ -25,9 +19,14 @@ MACHINE_DISPLAY_PPI = "180"
ROOT_FLASH_SIZE = "24"
+EXTRA_IMAGECMD_jffs2 = "--pad=14680064 --little-endian --eraseblock=0x20000 -n"
+
EXTRA_IMAGEDEPENDS += "ezx-boot-usb-native"
-# Opentapi needs to be started very early so we need the mux devices in static /dev
+# the EZX phones need a userspace daemon to stop the BP from shutting down the phone
+MACHINE_ESSENTIAL_EXTRA_RDEPENDS += "ezxd"
+
+# Ezxd needs to be started very early so we need the mux devices in static /dev
IMAGE_DEVICE_TABLES = "files/device_table-minimal.txt \
files/device_table-ezx.txt"
diff --git a/conf/machine/include/motorola-ezx.inc b/conf/machine/include/motorola-ezx.inc
deleted file mode 100644
index e87f6aa70f..0000000000
--- a/conf/machine/include/motorola-ezx.inc
+++ /dev/null
@@ -1,41 +0,0 @@
-# choose the proper kernel for this hardware
-PREFERRED_PROVIDER_virtual/kernel = "ezx-kernels"
-# we don't need support for kernel 2.4
-MODUTILS = "26"
-# build tar.gz for SD/MMC/Transflash and jffs2 for later when we have mtd
-IMAGE_FSTYPES = "tar.gz jffs2"
-
-BOOTSTRAP_EXTRA_RDEPENDS += "kernel udev sysfsutils apm irda-utils udev-utils ppp ppp-dialin module-init-tools"
-
-#
-# disable all modules until we have something that boots...
-#
-
-# Ethernet modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-pcnet-cs"
-# NFS Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-nfs kernel-module-lockd kernel-module-sunrpc"
-# Crypto Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-des kernel-module-md5"
-# SMB and CRAMFS
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-smbfs kernel-module-cramfs"
-# Serial Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-8250 kernel-module-serial-cs"
-# Bluetooth Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-bluetooth kernel-module-l2cap kernel-module-rfcomm kernel-module-hci-vhci \
-# kernel-module-bnep kernel-module-hidp kernel-module-hci-uart kernel-module-sco \
-# kernel-module-bt3c-cs kernel-module-bluecard-cs kernel-module-btuart-cs kernel-module-dtl1-cs"
-# Infrared Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-pxaficp-ir kernel-module-irda kernel-module-ircomm \
-# kernel-module-ircomm-tty kernel-module-irlan kernel-module-irnet kernel-module-ir-usb"
-#
-# USB Gadget Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-gadgetfs kernel-module-g-file-storage \
-# kernel-module-g-serial kernel-module-g-ether"
-#
-# Sound Modules
-#BOOTSTRAP_EXTRA_RDEPENDS += "kernel-module-snd-mixer-oss kernel-module-snd-pcm-oss"
-#BOOTSTRAP_EXTRA_SOUND = "kernel-module-soundcore kernel-module-snd kernel-module-snd-page-alloc
-# kernel-module-snd-timer kernel-module-snd-pcm \
-# kernel-module-snd-soc-core kernel-module-snd-soc-pxa2xx kernel-module-snd-soc-pxa2xx-i2s"
-#
diff --git a/conf/machine/include/tune-pentium.inc b/conf/machine/include/tune-pentium.inc
new file mode 100644
index 0000000000..7b1a517895
--- /dev/null
+++ b/conf/machine/include/tune-pentium.inc
@@ -0,0 +1,3 @@
+TARGET_CC_ARCH = "-mcpu=pentium"
+PACKAGE_ARCH = "i586"
+
diff --git a/conf/machine/include/tune-pentiumpro.inc b/conf/machine/include/tune-pentiumpro.inc
new file mode 100644
index 0000000000..aa9a8dfa1d
--- /dev/null
+++ b/conf/machine/include/tune-pentiumpro.inc
@@ -0,0 +1,3 @@
+TARGET_CC_ARCH = "-mcpu=pentiumpro"
+PACKAGE_ARCH = "i686"
+
diff --git a/conf/machine/nokia770.conf b/conf/machine/nokia770.conf
index 2727fd44d3..0e308b0a67 100644
--- a/conf/machine/nokia770.conf
+++ b/conf/machine/nokia770.conf
@@ -8,7 +8,7 @@ PREFERRED_PROVIDER_virtual/xserver = "xserver-kdrive-omap"
PREFERRED_PROVIDER_virtual/bootloader = ""
PREFERRED_PROVIDER_tslib = "tslib-maemo"
-XSERVER = "xserver-kdrive-omap"
+XSERVER = "xserver-kdrive-xomap"
# 800x480 is big enough for me
GUI_MACHINE_CLASS = "bigscreen"
diff --git a/conf/machine/rokre6.conf b/conf/machine/rokre6.conf
new file mode 100644
index 0000000000..7b20091140
--- /dev/null
+++ b/conf/machine/rokre6.conf
@@ -0,0 +1,8 @@
+#@TYPE: Machine
+#@NAME: Motorola EZX ROKR E6
+#@DESCRIPTION: Machine configuration for the Motorola GSM Phone ROKR E6
+
+require conf/machine/include/motorola-ezx-base.inc
+
+# there is no touchscreen
+MACHINE_FEATURES = "kernel26 apm alsa bluetooth usbgadget usbhost keyboard screen"
diff --git a/conf/machine/ts72xx.conf b/conf/machine/ts72xx.conf
new file mode 100644
index 0000000000..632f3044cc
--- /dev/null
+++ b/conf/machine/ts72xx.conf
@@ -0,0 +1,19 @@
+#@TYPE: Machine
+#@Name: Technologic Systems TS-72xx SBC
+#@DESCRIPTION: Machine configuration for Technologic Systems TS-72xx SBC
+
+TARGET_ARCH = "arm"
+PACKAGE_EXTRA_ARCHS = "armv4t"
+
+PREFERRED_PROVIDER_virtual/kernel = "linux"
+
+MACHINE_FEATURES = "kernel26 apm alsa ext2 pcmcia usbhost screen"
+
+# default is 2.6.22.6
+#PREFERRED_VERSION_linux = "2.6.23-rc5"
+
+SERIAL_CONSOLE = "115200 ttyAM0"
+USE_VT = "0"
+CMDLINE = "console=ttyAM0,115200 ip=192.168.1.3:192.168.1.2:192.168.1.2:255.255.255.0 root=/dev/nfs nfsroot=192.168.1.2:/media/data/devel/om2007.2/ts72xx/tmp/deploy/glibc/images/ts72xx/nfs_root"
+
+require conf/machine/include/tune-arm920t.inc
diff --git a/packages/alsa/alsa-state.bb b/packages/alsa/alsa-state.bb
index 00669e48de..55541872fa 100644
--- a/packages/alsa/alsa-state.bb
+++ b/packages/alsa/alsa-state.bb
@@ -1,20 +1,19 @@
-#! /bin/sh
-#
# Copyright Matthias Hentges <devel@hentges.net> (c) 2007
# License: MIT (see http://www.opensource.org/licenses/mit-license.php
# for a copy of the license)
#
# Filename: alsa-state.bb
-# Date: 20070308 (YMD)
DESCRIPTION = "Default ALSA configuration"
LICENSE = "GPL"
RRECOMMENDS_alsa-state = "alsa-states"
-PV = "0.0.4"
-PR = "r3"
+PV = "0.1.0"
+PR = "r0"
-SRC_URI = "file://asound.state \
- file://alsa-state "
+SRC_URI = " \
+ file://asoundrc \
+ file://asound.state \
+ file://alsa-state "
SRC_URI_append_fic-gta01 = " \
file://capturehandset.state \
@@ -33,11 +32,12 @@ do_install() {
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/alsa-state ${D}${sysconfdir}/init.d
+ install -m 0644 ${WORKDIR}/asoundrc ${D}${sysconfdir}
install -m 0644 ${WORKDIR}/*.state ${D}${sysconfdir}
}
PACKAGES += "alsa-states"
-FILES_${PN} = "${sysconfdir}/init.d"
+FILES_${PN} = "${sysconfdir}/init.d ${sysconfdir}/asoundrc"
FILES_alsa-states = "${sysconfdir}/*.state"
PACKAGE_ARCH_${PN} = "all"
PACKAGE_ARCH_alsa-states = "${MACHINE}"
diff --git a/packages/alsa/alsa-state/asoundrc b/packages/alsa/alsa-state/asoundrc
new file mode 100644
index 0000000000..bc038e3e73
--- /dev/null
+++ b/packages/alsa/alsa-state/asoundrc
@@ -0,0 +1,12 @@
+#
+# simple dmix configuration
+#
+pcm.dsp0 {
+ type plug
+ slave.pcm "dmix"
+}
+
+ctl.mixer0 {
+ type hw
+ card 0
+}
diff --git a/packages/angstrom/angstrom-feed-configs.bb b/packages/angstrom/angstrom-feed-configs.bb
index 7645ee61ec..6730b6a044 100644
--- a/packages/angstrom/angstrom-feed-configs.bb
+++ b/packages/angstrom/angstrom-feed-configs.bb
@@ -1,6 +1,6 @@
DESCRIPTION = "Configuration files for online package repositories aka feeds"
-PR = "0"
+PR = "1"
PACKAGE_ARCH = "${MACHINE_ARCH}"
FEED_BASEPATH ?= "unstable/feed/"
@@ -21,3 +21,12 @@ do_install () {
install -m 0644 ${S}/${sysconfdir}/ipkg/* ${D}${sysconfdir}/ipkg/
}
+CONFFILES_${PN} += "${sysconfdir}/ipkg/base-feed.conf \
+ ${sysconfdir}/ipkg/debug-feed.conf \
+ ${sysconfdir}/ipkg/perl-feed.conf \
+ ${sysconfdir}/ipkg/python-feed.conf \
+ ${sysconfdir}/ipkg/gstreamer-feed.conf \
+ ${sysconfdir}/ipkg/${MACHINE_ARCH}-feed.conf \
+ ${sysconfdir}/ipkg/noarch-feed.conf \
+ "
+
diff --git a/packages/angstrom/angstrom-version.bb b/packages/angstrom/angstrom-version.bb
index 2488255b53..32f3f01635 100644
--- a/packages/angstrom/angstrom-version.bb
+++ b/packages/angstrom/angstrom-version.bb
@@ -1,9 +1,10 @@
PV = "${DISTRO_VERSION}"
+PR = "r1"
PACKAGES = "${PN}"
PACKAGE_ARCH = "${MACHINE_ARCH}"
-do_compile() {
+do_install() {
mkdir -p ${D}${sysconfdir}
echo "Angstrom ${DISTRO_VERSION}" > ${D}${sysconfdir}/angstrom-version
diff --git a/packages/base-files/base-files_3.0.14.bb b/packages/base-files/base-files_3.0.14.bb
index ac12f5e08a..0d3a411095 100644
--- a/packages/base-files/base-files_3.0.14.bb
+++ b/packages/base-files/base-files_3.0.14.bb
@@ -1,7 +1,7 @@
DESCRIPTION = "Miscellaneous files for the base system."
SECTION = "base"
PRIORITY = "required"
-PR = "r71"
+PR = "r72"
LICENSE = "GPL"
SRC_URI = " \
@@ -24,8 +24,6 @@ SRC_URI = " \
file://licenses/Artistic "
S = "${WORKDIR}"
-SRC_URI_OVERRIDES_PACKAGE_ARCH = "1"
-
docdir_append = "/${P}"
dirs1777 = "/tmp ${localstatedir}/volatile/lock ${localstatedir}/volatile/tmp"
dirs2775 = "/home ${prefix}/src ${localstatedir}/local"
@@ -152,6 +150,8 @@ FILES_${PN}-doc = "${docdir} ${datadir}/common-licenses"
PACKAGE_ARCH_mnci = "mnci"
PACKAGE_ARCH_rt3000 = "rt3000"
+PACKAGE_ARCH = "${MACHINE_ARCH}"
+
# Unslung distribution specific packaging
PACKAGES_unslung = "${PN}-unslung"
diff --git a/packages/dbus/dbus-1.0.2/dbus-1.init b/packages/dbus/dbus-1.0.2/dbus-1.init
index 38e7574ad5..46e321860d 100644
--- a/packages/dbus/dbus-1.0.2/dbus-1.init
+++ b/packages/dbus/dbus-1.0.2/dbus-1.init
@@ -62,7 +62,7 @@ start_it_up()
shut_it_down()
{
if [ -d $EVENTDIR ]; then
- run-parts --reverse --arg=stop $EVENTDIR
+ run-parts --arg=stop $EVENTDIR
fi
echo -n "Stopping $DESC: "
start-stop-daemon --stop --quiet --pidfile $PIDFILE \
diff --git a/packages/dbus/dbus_1.0.2.bb b/packages/dbus/dbus_1.0.2.bb
index a660eb1586..0c97e30406 100644
--- a/packages/dbus/dbus_1.0.2.bb
+++ b/packages/dbus/dbus_1.0.2.bb
@@ -2,4 +2,4 @@ require dbus.inc
SRC_URI += " file://fix-waitpid.patch;patch=1"
-PR = "r2"
+PR = "r3"
diff --git a/packages/e17/e-wm_0.16.999.041.bb b/packages/e17/e-wm_0.16.999.041.bb
new file mode 100644
index 0000000000..4e6457cc2e
--- /dev/null
+++ b/packages/e17/e-wm_0.16.999.041.bb
@@ -0,0 +1,48 @@
+DESCRIPTION = "E17 - the Enlightenment Window Mananger"
+DEPENDS = "eet evas ecore edje efreet"
+LICENSE = "MIT"
+PR = "r0"
+
+inherit e update-alternatives
+
+SRC_URI = "http://download.enlightenment.org/snapshots/2007-08-26/enlightenment-${PV}.tar.gz \
+ file://fix-configure.patch;patch=1 \
+ file://set-autoscroll-defaults.patch;patch=1 \
+ file://Xsession.d/98enlightenment \
+ file://applications.menu \
+ "
+
+S = "${WORKDIR}/enlightenment-${PV}"
+
+PROFILE = "LOWRES_PDA"
+PROFILE_c7x0 = "HIRES_PDA"
+PROFILE_tosa = "HIRES_PDA"
+PROFILE_spitz = "HIRES_PDA"
+PROFILE_akita = "HIRES_PDA"
+
+EXTRA_OECONF = "--with-profile=${PROFILE} \
+ --with-edje-cc=${STAGING_BINDIR_NATIVE}/edje_cc \
+ --x-includes=${STAGING_INCDIR}/X11 \
+ --x-libraries=${STAGING_LIBDIR}"
+
+FILES_${PN} = "${bindir}/* ${libdir}/enlightenment/modules/*/*.edj ${libdir}/enlightenment/modules/*/*.desktop ${libdir}/enlightenment/modules/*/*/*.so ${libdir}/enlightenment/preload/*.so ${datadir} ${sysconfdir} ${libdir}/enlightenment/modules/cpufreq/*/freqset"
+FILES_${PN}-dev += "${libdir}/enlightenment/modules/*/*/*.a ${libdir}/enlightenment/modules/*/*/*.la ${libdir}/enlightenment/preload/*.a ${libdir}/enlightenment/preload/*.la"
+FILES_${PN}-dbg += "${libdir}/enlightenment/modules/*/*/.debug/ ${libdir}/enlightenment/preload/.debug/"
+
+do_compile_prepend() {
+ find ${S} -name Makefile | xargs sed -i 's:/usr/include:${STAGING_INCDIR}:'
+ find ${S} -name Makefile | xargs sed -i 's:/usr/X11R6/include:${STAGING_INCDIR}:'
+}
+
+do_install_append() {
+ install -d ${D}/${sysconfdir}/X11/Xsession.d
+ install -m 755 ${WORKDIR}/Xsession.d/98enlightenment ${D}/${sysconfdir}/X11/Xsession.d
+
+ install -d ${D}/${sysconfdir}/xdg/menus
+ install -m 644 ${WORKDIR}/applications.menu ${D}/${sysconfdir}/xdg/menus/
+}
+
+ALTERNATIVE_PATH = "${bindir}/enlightenment_start"
+ALTERNATIVE_NAME = "x-window-manager"
+ALTERNATIVE_LINK = "${bindir}/x-window-manager"
+ALTERNATIVE_PRIORITY = "16"
diff --git a/packages/e17/exhibit_cvs.bb b/packages/e17/exhibit_cvs.bb
index 4433287353..ccf93ded9f 100644
--- a/packages/e17/exhibit_cvs.bb
+++ b/packages/e17/exhibit_cvs.bb
@@ -1,5 +1,5 @@
DESCRIPTION = "Exhibit is the ETK picture viewer"
-DEPENDS = "evas ecore edje etk epsilon engrave"
+DEPENDS = "evas ecore epsilon edje eet etk efreet"
LICENSE = "MIT"
PV = "0.0.0+cvs${SRCDATE}"
PR = "r0"
diff --git a/packages/ezx/opentapi/.mtn2git_empty b/packages/ezx/ezxd/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/ezx/opentapi/.mtn2git_empty
+++ b/packages/ezx/ezxd/.mtn2git_empty
diff --git a/packages/ezx/opentapi/opentapi.init b/packages/ezx/ezxd/ezxd.init
index 0b41418e00..dccd293af1 100644
--- a/packages/ezx/opentapi/opentapi.init
+++ b/packages/ezx/ezxd/ezxd.init
@@ -1,22 +1,22 @@
#! /bin/sh
# -*- coding: utf-8 -*-
-# init.d script for opentapi
+# init.d script for ezxd
set -e
-DAEMON=/usr/bin/opentapi
-NAME=opentapi
-PIDDIR=/var/run/opentapi
+DAEMON=/usr/bin/ezxd
+NAME=ezxd
+PIDDIR=/var/run/ezxd
PIDFILE=$PIDDIR/pid
-DESC="OpenTAPI server"
+DESC="ezxd server"
test -x $DAEMON || exit 0
# Source defaults file; edit that file to configure this script.
ENABLED=1
PARAMS=""
-if [ -e /etc/default/opentapi ]; then
- . /etc/default/opentapi
+if [ -e /etc/default/ezxd ]; then
+ . /etc/default/ezxd
fi
test "$ENABLED" != "0" || exit 0
diff --git a/packages/ezx/ezxd_svn.bb b/packages/ezx/ezxd_svn.bb
new file mode 100644
index 0000000000..56bc1c05bf
--- /dev/null
+++ b/packages/ezx/ezxd_svn.bb
@@ -0,0 +1,35 @@
+DESCRIPTION = "Open implementation of motorola's tapisrv, replaces opentapi"
+LICENSE = "GPLv2"
+SECTION = "devel"
+AUTHOR = "Daniel Ribeiro"
+
+PV = "0.0+svnr${SRCREV}"
+PR = "r0"
+
+SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=ezxd;proto=http \
+ file://ezxd.init \
+ "
+
+inherit update-rc.d
+
+INITSCRIPT_NAME = "ezxd"
+INITSCRIPT_PARAMS = "start 00 S ."
+
+S = "${WORKDIR}/${PN}"
+
+do_configure() {
+ sed -i -e s:CROSS:CC:g Makefile
+}
+
+do_install() {
+ install -d ${D}${bindir}
+ install -m 755 ezxd ${D}${bindir}
+
+ install -d ${D}${libdir}/ezxd
+ install -m 755 *.so ${D}${libdir}/ezxd
+
+ install -d ${D}${sysconfdir}/init.d
+ install -m 0600 ezxd.conf ${D}${sysconfdir}/
+ install -m 0755 ${WORKDIR}/ezxd.init ${D}${sysconfdir}/init.d/ezxd
+}
+
diff --git a/packages/ezx/opentapi_svn.bb b/packages/ezx/opentapi_svn.bb
deleted file mode 100644
index 7426dfe853..0000000000
--- a/packages/ezx/opentapi_svn.bb
+++ /dev/null
@@ -1,28 +0,0 @@
-DESCRIPTION = "Open implementation of motorola's tapisrv"
-LICENSE = "GPLv2"
-SECTION = "devel"
-AUTHOR = "Daniel Willmann"
-
-PV = "0.0+svnr${SRCREV}"
-PR = "r3"
-
-SRC_URI = "svn://svn.openezx.org/trunk/src/userspace/;module=opentapi;proto=http \
- file://opentapi.init \
- "
-
-inherit update-rc.d
-
-INITSCRIPT_NAME = "opentapi"
-INITSCRIPT_PARAMS = "start 00 S ."
-
-
-S = "${WORKDIR}/${PN}"
-
-do_install() {
- install -d ${D}${bindir}
- install -m 755 opentapi ${D}${bindir}
-
- install -d ${D}${sysconfdir}/init.d
- install -m 0755 ${WORKDIR}/opentapi.init ${D}${sysconfdir}/init.d/opentapi
-}
-
diff --git a/packages/fakeroot/fakeroot-native_1.7.1.bb b/packages/fakeroot/fakeroot-native_1.7.1.bb
index 6f2969e181..8b3d2a1590 100644
--- a/packages/fakeroot/fakeroot-native_1.7.1.bb
+++ b/packages/fakeroot/fakeroot-native_1.7.1.bb
@@ -3,8 +3,7 @@ require fakeroot_${PV}.bb
inherit native
RDEPENDS="util-linux-native"
-SRC_URI += "file://fix-prefix.patch;patch=1 \
- file://work-with-older-libtool.patch;patch=1"
+SRC_URI += "file://fix-prefix.patch;patch=1 "
S = "${WORKDIR}/fakeroot-${PV}"
EXTRA_OECONF = " --program-prefix="
diff --git a/packages/fakeroot/fakeroot_1.7.1.bb b/packages/fakeroot/fakeroot_1.7.1.bb
index 486bf93a46..803b5f3ff4 100644
--- a/packages/fakeroot/fakeroot_1.7.1.bb
+++ b/packages/fakeroot/fakeroot_1.7.1.bb
@@ -3,9 +3,10 @@ SECTION = "base"
LICENSE = "GPL"
# fakeroot needs getopt which is provided by the util-linux package
RDEPENDS = "util-linux"
-PR = "r1"
+PR = "r2"
-SRC_URI = "ftp://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_${PV}.tar.gz"
+SRC_URI = "ftp://ftp.debian.org/debian/pool/main/f/fakeroot/fakeroot_${PV}.tar.gz \
+ file://work-with-older-libtool.patch;patch=1"
inherit autotools
diff --git a/packages/ffmpeg/ffmpeg_svn.bb b/packages/ffmpeg/ffmpeg_svn.bb
index 051363474e..5276a8fef6 100644
--- a/packages/ffmpeg/ffmpeg_svn.bb
+++ b/packages/ffmpeg/ffmpeg_svn.bb
@@ -3,7 +3,7 @@ SECTION = "libs"
PRIORITY = "optional"
LICENSE = "GPL"
DEPENDS = "libogg zlib libvorbis faac liba52 lame"
-PV = "0.4.9+svn${SRCDATE}"
+PV = "0.4.9+svnr${SRCREV}"
PR = "r1"
DEFAULT_PREFERENCE = "-1"
diff --git a/packages/netbase/netbase/a780/.mtn2git_empty b/packages/fxload/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/netbase/netbase/a780/.mtn2git_empty
+++ b/packages/fxload/.mtn2git_empty
diff --git a/packages/netbase/netbase/e680/.mtn2git_empty b/packages/fxload/files/.mtn2git_empty
index e69de29bb2..e69de29bb2 100644
--- a/packages/netbase/netbase/e680/.mtn2git_empty
+++ b/packages/fxload/files/.mtn2git_empty
diff --git a/packages/fxload/files/usbheader.patch b/packages/fxload/files/usbheader.patch
new file mode 100644
index 0000000000..db205e9ab5
--- /dev/null
+++ b/packages/fxload/files/usbheader.patch
@@ -0,0 +1,15 @@
+--- fxload-0.0.20020411.orig/ezusb.c
++++ fxload-0.0.20020411/ezusb.c
+@@ -29,7 +29,11 @@
+ # include <sys/ioctl.h>
+
+ # include <linux/version.h>
+-# include <linux/usb.h>
++#if (LINUX_VERSION_CODE >= 132630)
++# include <linux/usb/ch9.h>
++#else
++# include <linux/usb_ch9.h>
++#endif
+ # include <linux/usbdevice_fs.h>
+
+ # include "ezusb.h"
diff --git a/packages/fxload/fxload_0.0.20020411.bb b/packages/fxload/fxload_0.0.20020411.bb
new file mode 100644
index 0000000000..2bebded964
--- /dev/null
+++ b/packages/fxload/fxload_0.0.20020411.bb
@@ -0,0 +1,19 @@
+DESCRIPTION = "fxload loads firmware into the ezusb chips"
+AUTHOR = "Stephen Williams, David Brownell"
+HOMEPAGE = "http://linux-hotplug.sourceforge.net/"
+SECTION = "admin"
+LICENSE = "GPL"
+DEPENDS = "linux-libc-headers"
+PR = "r1"
+
+SRC_URI = "http://dfn.dl.sourceforge.net/sourceforge/linux-hotplug/fxload-2002_04_11.tar.gz \
+ file://usbheader.patch;patch=1"
+
+S = "${WORKDIR}/fxload-2002_04_11"
+
+FILES_${PN} = "${base_sbindir}/fxload"
+
+do_install() {
+ mkdir -p ${D}/sbin/
+ cp ${S}/fxload ${D}/sbin/fxload
+}
diff --git a/packages/gcc/gcc-4.2.1/204-uclibc-locale-wchar_fix.patch b/packages/gcc/gcc-4.2.1/204-uclibc-locale-wchar_fix.patch
new file mode 100644
index 0000000000..160ab35bb3
--- /dev/null
+++ b/packages/gcc/gcc-4.2.1/204-uclibc-locale-wchar_fix.patch
@@ -0,0 +1,48 @@
+--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:37:27 +0100
+@@ -401,7 +401,7 @@
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+@@ -556,7 +556,7 @@
+ # ifdef __UCLIBC_HAS_XLOCALE__
+ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
+ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
+-# else
++# elif defined __UCLIBC_HAS_LOCALE__
+ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
+ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
+ # endif
+--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_wchar~ 2006-03-10 15:32:37 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:37:27 +0100
+@@ -127,12 +127,25 @@
+ {
+ // Named locale.
+ // NB: In the GNU model wchar_t is always 32 bit wide.
++#ifdef __UCLIBC_MJN3_ONLY__
++#warning fix this... should be numeric
++#endif
++#ifdef __UCLIBC__
++# ifdef __UCLIBC_HAS_XLOCALE__
++ _M_data->_M_decimal_point = __cloc->decimal_point_wc;
++ _M_data->_M_thousands_sep = __cloc->thousands_sep_wc;
++# elif defined __UCLIBC_HAS_LOCALE__
++ _M_data->_M_decimal_point = __global_locale->decimal_point_wc;
++ _M_data->_M_thousands_sep = __global_locale->thousands_sep_wc;
++# endif
++#else
+ union { char *__s; wchar_t __w; } __u;
+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_DECIMAL_POINT_WC, __cloc);
+ _M_data->_M_decimal_point = __u.__w;
+
+ __u.__s = __nl_langinfo_l(_NL_NUMERIC_THOUSANDS_SEP_WC, __cloc);
+ _M_data->_M_thousands_sep = __u.__w;
++#endif
+
+ if (_M_data->_M_thousands_sep == L'\0')
+ _M_data->_M_grouping = "";
diff --git a/packages/gcc/gcc-4.2.1/205-uclibc-locale-update.patch b/packages/gcc/gcc-4.2.1/205-uclibc-locale-update.patch
new file mode 100644
index 0000000000..86b2844554
--- /dev/null
+++ b/packages/gcc/gcc-4.2.1/205-uclibc-locale-update.patch
@@ -0,0 +1,347 @@
+--- gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc.uclibc200_update~ 2006-03-10 15:32:37 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/c_locale.cc 2006-03-10 15:39:14 +0100
+@@ -46,16 +47,13 @@
+ __convert_to_v(const char* __s, float& __v, ios_base::iostate& __err,
+ const __c_locale& __cloc)
+ {
+- if (!(__err & ios_base::failbit))
+- {
+- char* __sanity;
+- errno = 0;
+- float __f = __strtof_l(__s, &__sanity, __cloc);
+- if (__sanity != __s && errno != ERANGE)
+- __v = __f;
+- else
+- __err |= ios_base::failbit;
+- }
++ char* __sanity;
++ errno = 0;
++ float __f = __strtof_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __f;
++ else
++ __err |= ios_base::failbit;
+ }
+
+ template<>
+@@ -63,16 +61,13 @@
+ __convert_to_v(const char* __s, double& __v, ios_base::iostate& __err,
+ const __c_locale& __cloc)
+ {
+- if (!(__err & ios_base::failbit))
+- {
+- char* __sanity;
+- errno = 0;
+- double __d = __strtod_l(__s, &__sanity, __cloc);
+- if (__sanity != __s && errno != ERANGE)
+- __v = __d;
+- else
+- __err |= ios_base::failbit;
+- }
++ char* __sanity;
++ errno = 0;
++ double __d = __strtod_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __d;
++ else
++ __err |= ios_base::failbit;
+ }
+
+ template<>
+@@ -80,16 +75,13 @@
+ __convert_to_v(const char* __s, long double& __v, ios_base::iostate& __err,
+ const __c_locale& __cloc)
+ {
+- if (!(__err & ios_base::failbit))
+- {
+- char* __sanity;
+- errno = 0;
+- long double __ld = __strtold_l(__s, &__sanity, __cloc);
+- if (__sanity != __s && errno != ERANGE)
+- __v = __ld;
+- else
+- __err |= ios_base::failbit;
+- }
++ char* __sanity;
++ errno = 0;
++ long double __ld = __strtold_l(__s, &__sanity, __cloc);
++ if (__sanity != __s && errno != ERANGE)
++ __v = __ld;
++ else
++ __err |= ios_base::failbit;
+ }
+
+ void
+@@ -110,7 +102,7 @@
+ void
+ locale::facet::_S_destroy_c_locale(__c_locale& __cloc)
+ {
+- if (_S_get_c_locale() != __cloc)
++ if (__cloc && _S_get_c_locale() != __cloc)
+ __freelocale(__cloc);
+ }
+
+--- gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc.uclibc200_update~ 2006-03-10 15:32:37 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/ctype_members.cc 2006-03-10 15:39:14 +0100
+@@ -33,9 +33,14 @@
+
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+
+ namespace std
+@@ -138,20 +143,34 @@
+ ctype<wchar_t>::
+ do_is(mask __m, wchar_t __c) const
+ {
+- // Highest bitmask in ctype_base == 10, but extra in "C"
+- // library for blank.
++ // The case of __m == ctype_base::space is particularly important,
++ // due to its use in many istream functions. Therefore we deal with
++ // it first, exploiting the knowledge that on GNU systems _M_bit[5]
++ // is the mask corresponding to ctype_base::space. NB: an encoding
++ // change would not affect correctness!
+ bool __ret = false;
+- const size_t __bitmasksize = 11;
+- for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
+- if (__m & _M_bit[__bitcur]
+- && __iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
+- {
+- __ret = true;
+- break;
+- }
++ if (__m == _M_bit[5])
++ __ret = __iswctype_l(__c, _M_wmask[5], _M_c_locale_ctype);
++ else
++ {
++ // Highest bitmask in ctype_base == 10, but extra in "C"
++ // library for blank.
++ const size_t __bitmasksize = 11;
++ for (size_t __bitcur = 0; __bitcur <= __bitmasksize; ++__bitcur)
++ if (__m & _M_bit[__bitcur])
++ {
++ if (__iswctype_l(__c, _M_wmask[__bitcur], _M_c_locale_ctype))
++ {
++ __ret = true;
++ break;
++ }
++ else if (__m == _M_bit[__bitcur])
++ break;
++ }
++ }
+ return __ret;
+ }
+-
++
+ const wchar_t*
+ ctype<wchar_t>::
+ do_is(const wchar_t* __lo, const wchar_t* __hi, mask* __vec) const
+--- gcc/libstdc++-v3/config/locale/uclibc/messages_members.h.uclibc200_update~ 2006-03-10 15:32:37 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/messages_members.h 2006-03-10 15:39:14 +0100
+@@ -47,18 +47,21 @@
+ template<typename _CharT>
+ messages<_CharT>::messages(size_t __refs)
+ : facet(__refs), _M_c_locale_messages(_S_get_c_locale()),
+- _M_name_messages(_S_get_c_name())
++ _M_name_messages(_S_get_c_name())
+ { }
+
+ template<typename _CharT>
+ messages<_CharT>::messages(__c_locale __cloc, const char* __s,
+ size_t __refs)
+- : facet(__refs), _M_c_locale_messages(_S_clone_c_locale(__cloc)),
+- _M_name_messages(__s)
++ : facet(__refs), _M_c_locale_messages(NULL), _M_name_messages(NULL)
+ {
+- char* __tmp = new char[std::strlen(__s) + 1];
+- std::strcpy(__tmp, __s);
++ const size_t __len = std::strlen(__s) + 1;
++ char* __tmp = new char[__len];
++ std::memcpy(__tmp, __s, __len);
+ _M_name_messages = __tmp;
++
++ // Last to avoid leaking memory if new throws.
++ _M_c_locale_messages = _S_clone_c_locale(__cloc);
+ }
+
+ template<typename _CharT>
+--- gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc.uclibc200_update~ 2006-03-10 15:37:27 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/monetary_members.cc 2006-03-10 15:39:14 +0100
+@@ -33,9 +33,14 @@
+
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+
+ #ifdef __UCLIBC_MJN3_ONLY__
+@@ -206,7 +211,7 @@
+ }
+ break;
+ default:
+- ;
++ __ret = pattern();
+ }
+ return __ret;
+ }
+--- gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc.uclibc200_update~ 2006-03-10 15:37:27 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/numeric_members.cc 2006-03-10 15:39:14 +0100
+@@ -33,9 +33,14 @@
+
+ // Written by Benjamin Kosnik <bkoz@redhat.com>
+
++#include <features.h>
++#ifdef __UCLIBC_HAS_LOCALE__
+ #define _LIBC
+ #include <locale>
+ #undef _LIBC
++#else
++#include <locale>
++#endif
+ #include <bits/c++locale_internal.h>
+
+ #ifdef __UCLIBC_MJN3_ONLY__
+--- gcc/libstdc++-v3/config/locale/uclibc/time_members.h.uclibc200_update~ 2006-03-10 15:06:17 +0100
++++ gcc/libstdc++-v3/config/locale/uclibc/time_members.h 2006-03-10 15:39:14 +0100
+@@ -37,25 +37,33 @@
+ template<typename _CharT>
+ __timepunct<_CharT>::__timepunct(size_t __refs)
+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
+- _M_name_timepunct(_S_get_c_name())
++ _M_name_timepunct(_S_get_c_name())
+ { _M_initialize_timepunct(); }
+
+ template<typename _CharT>
+ __timepunct<_CharT>::__timepunct(__cache_type* __cache, size_t __refs)
+ : facet(__refs), _M_data(__cache), _M_c_locale_timepunct(NULL),
+- _M_name_timepunct(_S_get_c_name())
++ _M_name_timepunct(_S_get_c_name())
+ { _M_initialize_timepunct(); }
+
+ template<typename _CharT>
+ __timepunct<_CharT>::__timepunct(__c_locale __cloc, const char* __s,
+ size_t __refs)
+ : facet(__refs), _M_data(NULL), _M_c_locale_timepunct(NULL),
+- _M_name_timepunct(__s)
++ _M_name_timepunct(NULL)
+ {
+- char* __tmp = new char[std::strlen(__s) + 1];
+- std::strcpy(__tmp, __s);
++ const size_t __len = std::strlen(__s) + 1;
++ char* __tmp = new char[__len];
++ std::memcpy(__tmp, __s, __len);
+ _M_name_timepunct = __tmp;
+- _M_initialize_timepunct(__cloc);
++
++ try
++ { _M_initialize_timepunct(__cloc); }
++ catch(...)
++ {
++ delete [] _M_name_timepunct;
++ __throw_exception_again;
++ }
+ }
+
+ template<typename _CharT>
+--- gcc-4.2/libstdc++-v3/config/locale/uclibc/c_locale.h.old 2006-09-28 11:39:00.000000000 +0200
++++ gcc-4.2/libstdc++-v3/config/locale/uclibc/c_locale.h 2006-09-28 12:10:41.000000000 +0200
+@@ -39,21 +39,23 @@
+ #pragma GCC system_header
+
+ #include <cstring> // get std::strlen
+-#include <cstdio> // get std::snprintf or std::sprintf
++#include <cstdio> // get std::vsnprintf or std::vsprintf
+ #include <clocale>
+ #include <langinfo.h> // For codecvt
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning fix this
+ #endif
+-#ifdef __UCLIBC_HAS_LOCALE__
++#ifdef _GLIBCXX_USE_ICONV
+ #include <iconv.h> // For codecvt using iconv, iconv_t
+ #endif
+-#ifdef __UCLIBC_HAS_GETTEXT_AWARENESS__
+-#include <libintl.h> // For messages
++#ifdef HAVE_LIBINTL_H
++#include <libintl.h> // For messages
+ #endif
++#include <cstdarg>
+
+ #ifdef __UCLIBC_MJN3_ONLY__
+ #warning what is _GLIBCXX_C_LOCALE_GNU for
++// psm: used in os/gnu-linux/ctype_noninline.h
+ #endif
+ #define _GLIBCXX_C_LOCALE_GNU 1
+
+@@ -62,7 +64,7 @@
+ #endif
+ // #define _GLIBCXX_NUM_CATEGORIES 6
+ #define _GLIBCXX_NUM_CATEGORIES 0
+-
++
+ #ifdef __UCLIBC_HAS_XLOCALE__
+ namespace __gnu_cxx
+ {
+@@ -79,22 +81,24 @@
+ typedef int* __c_locale;
+ #endif
+
+- // Convert numeric value of type _Tv to string and return length of
+- // string. If snprintf is available use it, otherwise fall back to
+- // the unsafe sprintf which, in general, can be dangerous and should
++ // Convert numeric value of type double to string and return length of
++ // string. If vsnprintf is available use it, otherwise fall back to
++ // the unsafe vsprintf which, in general, can be dangerous and should
+ // be avoided.
+- template<typename _Tv>
+- int
+- __convert_from_v(char* __out,
+- const int __size __attribute__ ((__unused__)),
+- const char* __fmt,
+-#ifdef __UCLIBC_HAS_XCLOCALE__
+- _Tv __v, const __c_locale& __cloc, int __prec)
++ inline int
++ __convert_from_v(const __c_locale&
++#ifndef __UCLIBC_HAS_XCLOCALE__
++ __cloc __attribute__ ((__unused__))
++#endif
++ ,
++ char* __out,
++ const int __size,
++ const char* __fmt, ...)
+ {
++ va_list __args;
++#ifdef __UCLIBC_HAS_XCLOCALE__
+ __c_locale __old = __gnu_cxx::__uselocale(__cloc);
+ #else
+- _Tv __v, const __c_locale&, int __prec)
+- {
+ # ifdef __UCLIBC_HAS_LOCALE__
+ char* __old = std::setlocale(LC_ALL, NULL);
+ char* __sav = new char[std::strlen(__old) + 1];
+@@ -103,7 +107,9 @@
+ # endif
+ #endif
+
+- const int __ret = std::snprintf(__out, __size, __fmt, __prec, __v);
++ va_start(__args, __fmt);
++ const int __ret = std::vsnprintf(__out, __size, __fmt, __args);
++ va_end(__args);
+
+ #ifdef __UCLIBC_HAS_XCLOCALE__
+ __gnu_cxx::__uselocale(__old);
diff --git a/packages/gcc/gcc-cross_4.2.1.bb b/packages/gcc/gcc-cross_4.2.1.bb
index b11259676e..a9e4a0ddc2 100644
--- a/packages/gcc/gcc-cross_4.2.1.bb
+++ b/packages/gcc/gcc-cross_4.2.1.bb
@@ -5,7 +5,7 @@ inherit cross
FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/gcc-${PV}"
# NOTE: split PR. If the main .oe changes something that affects its *build*
# remember to increment this one too.
-PR = "r3"
+PR = "r4"
DEPENDS = "virtual/${TARGET_PREFIX}binutils virtual/${TARGET_PREFIX}libc-for-gcc gmp-native mpfr-native"
PROVIDES = "virtual/${TARGET_PREFIX}gcc virtual/${TARGET_PREFIX}g++"
diff --git a/packages/gcc/gcc_4.2.1.bb b/packages/gcc/gcc_4.2.1.bb
index 11599444f8..7c50167345 100644
--- a/packages/gcc/gcc_4.2.1.bb
+++ b/packages/gcc/gcc_4.2.1.bb
@@ -1,4 +1,4 @@
-PR = "r2"
+PR = "r3"
DESCRIPTION = "The GNU cc and gcc C compilers."
HOMEPAGE = "http://www.gnu.org/software/gcc/"
SECTION = "devel"
@@ -13,6 +13,8 @@ SRC_URI = "ftp://ftp.gnu.org/pub/gnu/gcc/gcc-${PV}/gcc-${PV}.tar.bz2 \
file://103-uclibc-conf-noupstream.patch;patch=1 \
file://200-uclibc-locale.patch;patch=1 \
file://203-uclibc-locale-no__x.patch;patch=1 \
+ file://204-uclibc-locale-wchar_fix.patch;patch=1 \
+ file://205-uclibc-locale-update.patch;patch=1 \
file://300-libstdc++-pic.patch;patch=1 \
file://301-missing-execinfo_h.patch;patch=1 \
file://302-c99-snprintf.patch;patch=1 \
diff --git a/packages/glibc/eglibc-initial_svn.bb b/packages/glibc/eglibc-initial_svn.bb
index 02ba4c6273..ae3f0d2b41 100644
--- a/packages/glibc/eglibc-initial_svn.bb
+++ b/packages/glibc/eglibc-initial_svn.bb
@@ -10,6 +10,7 @@ do_configure () {
sed -ie 's,{ (exit 1); exit 1; }; },{ (exit 0); }; },g' ${S}/configure
chmod +x ${S}/configure
unset CFLAGS
+ find ${S} -name "configure" | xargs touch
CC="${BUILD_CC}" CPP="${BUILD_CPP}" LD="${BUILD_LD}" ${S}/configure --host=${TARGET_SYS} --build=${BUILD_SYS} \
--without-cvs --disable-sanity-checks \
--with-headers=${CROSS_DIR}/${TARGET_SYS}/include \
diff --git a/packages/glibc/eglibc-intermediate_svn.bb b/packages/glibc/eglibc-intermediate_svn.bb
index c26f649031..5ecbdb6ed8 100644
--- a/packages/glibc/eglibc-intermediate_svn.bb
+++ b/packages/glibc/eglibc-intermediate_svn.bb
@@ -6,6 +6,7 @@ do_install () {
# gcc uses -Werror which break on a "you have no thumb interwork" _warning_
do_configure_prepend() {
+ find ${S} -name "configure" | xargs touch
sed -i s:-Werror:: ${S}/configure
}
diff --git a/packages/glibc/eglibc_svn.bb b/packages/glibc/eglibc_svn.bb
index b47493f4e0..0b69283681 100644
--- a/packages/glibc/eglibc_svn.bb
+++ b/packages/glibc/eglibc_svn.bb
@@ -65,7 +65,7 @@ do_configure () {
exit 1
fi
(cd ${S} && gnu-configize) || die "failure in running gnu-configize"
- find ${WORKDIR} -name "configure" | xargs touch
+ find ${S} -name "configure" | xargs touch
CPPFLAGS="" oe_runconf
}
diff --git a/packages/gnome/gnome-desktop_2.18.3.bb b/packages/gnome/gnome-desktop_2.18.3.bb
index 02beafa044..e341fd31ab 100644
--- a/packages/gnome/gnome-desktop_2.18.3.bb
+++ b/packages/gnome/gnome-desktop_2.18.3.bb
@@ -11,8 +11,6 @@ SRC_URI += "file://scrollkeeper.patch;patch=1 \
EXTRA_OECONF = "--disable-scrollkeeper"
-EXTRA_AUTORECONF = "-I ${STAGING_DIR}/${HOST_SYS}/share/aclocal/gnome2-macros"
-
do_configure_prepend () {
cp ${STAGING_DIR}/${HOST_SYS}/share/gnome-common/data/omf.make ${S}
}
diff --git a/packages/gnome/gnome-panel_2.18.1.bb b/packages/gnome/gnome-panel_2.18.1.bb
index 349951143b..59c6f3e6e0 100644
--- a/packages/gnome/gnome-panel_2.18.1.bb
+++ b/packages/gnome/gnome-panel_2.18.1.bb
@@ -1,8 +1,9 @@
LICENSE = "GPL"
DEPENDS = "libwnck orbit2 gtk+ libgnome libgnomeui gnome-desktop libglade gnome-menus"
-inherit gnome pkgconfig
+PR = "r1"
+inherit gnome pkgconfig
do_configure_prepend() {
sed -i -e s:help:: ${S}/Makefile.am
@@ -12,6 +13,9 @@ do_configure_prepend() {
PACKAGES =+ "libpanel-applet"
FILES_libpanel-applet = "${libdir}/libpanel-applet-2.so.*"
+FILES_${PN} =+ "${datadir}/gnome* \
+ ${datadir}/icons"
+
do_stage() {
autotools_stage_all
}
diff --git a/packages/gnome/libwnck_2.13.5.bb b/packages/gnome/libwnck_2.13.5.bb
index 1830a7540a..5ad3e00cbf 100644
--- a/packages/gnome/libwnck_2.13.5.bb
+++ b/packages/gnome/libwnck_2.13.5.bb
@@ -1,7 +1,6 @@
LICENSE = "LGPL"
DEPENDS = "gtk+"
DESCRIPTION = "Window navigation construction toolkit"
-HOMEPAGE = ""
inherit gnome
diff --git a/packages/gpephone/gpe-applauncher_0.10.bb b/packages/gpephone/gpe-applauncher_0.10.bb
new file mode 100644
index 0000000000..fbc47bd091
--- /dev/null
+++ b/packages/gpephone/gpe-applauncher_0.10.bb
@@ -0,0 +1,12 @@
+LICENSE = "GPL"
+DESCRIPTION = "A cellphone application launcher."
+SECTION = "gpe"
+PRIORITY = "optional"
+PR = "r0"
+
+DEPENDS = "gtk+ libgpewidget libgpephone libgpelaunch dbus-glib libsettings libxsettings-client"
+
+GPE_TARBALL_SUFFIX= "bz2"
+inherit gpephone autotools
+
+FILES_${PN} += '${datadir}/themes'
diff --git a/packages/gpephone/libidn_0.5.19.bb b/packages/gpephone/libidn_0.5.19.bb
index 4254ef466d..322790b8ab 100644
--- a/packages/gpephone/libidn_0.5.19.bb
+++ b/packages/gpephone/libidn_0.5.19.bb
@@ -2,7 +2,6 @@ LICENSE = "LGPL"
DESCRIPTION = "Implementation of the Stringprep, Punycode and IDNA specifications defined by the IETF Internationalized Domain Names (IDN) working group."
SECTION = "libs"
PRIORITY = "optional"
-DEPENDS = "glibc"
PR = "r0"
inherit pkgconfig autotools
diff --git a/packages/gpicview/.mtn2git_empty b/packages/gpicview/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gpicview/.mtn2git_empty
diff --git a/packages/gpicview/gpicview_0.1.5.bb b/packages/gpicview/gpicview_0.1.5.bb
new file mode 100644
index 0000000000..14248ec14f
--- /dev/null
+++ b/packages/gpicview/gpicview_0.1.5.bb
@@ -0,0 +1,10 @@
+DESCRIPTION = "Extremely lightweight and fast with low memory usage"
+LICENSE = "GPL"
+
+DEPENDS = "gtk+"
+
+SRC_URI = "${SOURCEFORGE_MIRROR}/lxde/${PN}-${PV}.tar.gz"
+
+inherit autotools pkgconfig
+
+
diff --git a/packages/gsm/files/default b/packages/gsm/files/default
index 4b582dd5ac..14c8fc8589 100644
--- a/packages/gsm/files/default
+++ b/packages/gsm/files/default
@@ -6,6 +6,7 @@ case `cpuinfo_id` in
"GTA01"|"GTA02")
GSMD_OPTS="-s 115200 -F"
GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+ GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset"
GSM_DEV="/dev/ttySAC0"
;;
"HTC Apache"|"HTC Blueangel")
@@ -28,6 +29,10 @@ case `cpuinfo_id` in
GSMD_OPTS="-s 460800 -F -w 1"
GSM_DEV="/dev/ttyS0"
;;
+ "Motorola Ezx Platform")
+ GSMD_OPTS="-s 115200 -F"
+ GSM_DEV="/dev/mux0"
+ ;;
*)
# Unknown board
@@ -37,6 +42,9 @@ case `cpuinfo_id` in
# If your GSM device needs to be powered up, uncomment and modify the next line
#GSM_POW="/sys/bus/platform/devices/gta01-pm-gsm.0/power_on"
+ # If your GSM device then needs to be reset, uncomment and modify the next line
+ #GSM_RES="/sys/bus/platform/devices/gta01-pm-gsm.0/reset"
+
# This should be in a common /etc/default/serial, together with
# BT_DEV and IR_DEV for devices that have those on a serial port
#GSM_DEV="/dev/ttyS1"
diff --git a/packages/gsm/files/gsmd b/packages/gsm/files/gsmd
index bc7999ea77..0ac4698899 100644
--- a/packages/gsm/files/gsmd
+++ b/packages/gsm/files/gsmd
@@ -13,10 +13,10 @@ PATH=/bin:/usr/bin:/sbin:/usr/sbin
case "$1" in
start)
- [ -n $GSM_POW ] && ( echo "0" >$GSM_POW; sleep 1 )
- [ -n $GSM_POW ] && ( echo "1" >$GSM_POW; sleep 1 )
- [ -n $GSM_RES ] && ( echo "1" >$GSM_RES; sleep 1 )
- [ -n $GSM_RES ] && ( echo "0" >$GSM_RES; sleep 2 )
+ [ -n "$GSM_POW" ] && ( echo "0" >$GSM_POW; sleep 1 )
+ [ -n "$GSM_POW" ] && ( echo "1" >$GSM_POW; sleep 1 )
+ [ -n "$GSM_RES" ] && ( echo "1" >$GSM_RES; sleep 1 )
+ [ -n "$GSM_RES" ] && ( echo "0" >$GSM_RES; sleep 2 )
echo -n "Starting GSM daemon: "
start-stop-daemon -S -x /usr/sbin/gsmd -- gsmd -p $GSM_DEV $GSMD_OPTS >/tmp/gsm.log 2>&1 &
@@ -28,7 +28,7 @@ case "$1" in
fi
;;
stop)
- [ -n $GSM_POW ] && echo "0" >$GSM_POW
+ [ -n "$GSM_POW" ] && echo "0" >$GSM_POW
echo -n "Stopping GSM daemon: "
start-stop-daemon -K -x /usr/sbin/gsmd
diff --git a/packages/gsm/libgsmd_svn.bb b/packages/gsm/libgsmd_svn.bb
index 914520ad8a..b312015172 100644
--- a/packages/gsm/libgsmd_svn.bb
+++ b/packages/gsm/libgsmd_svn.bb
@@ -4,7 +4,7 @@ LICENSE = "GPL LGPL"
SECTION = "libs/gsm"
PROVIDES += "gsmd"
PV = "0.1+svnr${SRCREV}"
-PR = "r22"
+PR = "r25"
SRC_URI = "svn://svn.openmoko.org/trunk/src/target;module=gsm;proto=http \
file://gsmd \
diff --git a/packages/gtk+/gdk-pixbuf-csource-native_2.10.14.bb b/packages/gtk+/gdk-pixbuf-csource-native_2.10.14.bb
new file mode 100644
index 0000000000..f3b7b0e6c8
--- /dev/null
+++ b/packages/gtk+/gdk-pixbuf-csource-native_2.10.14.bb
@@ -0,0 +1,25 @@
+require gtk+_${PV}.bb
+inherit native
+DEPENDS = ""
+S = "${WORKDIR}/gtk+-${PV}"
+FILESPATH = "${FILE_DIRNAME}/gdk-pixbuf-csource:${FILE_DIRNAME}/gtk+-${PV}:${FILE_DIRNAME}/files"
+SRC_URI += "file://reduce-dependencies.patch;patch=1"
+
+EXTRA_OECONF = "\
+ --without-x \
+ --with-gdktarget=linux-fb \
+ --without-libtiff \
+"
+
+do_compile() {
+ cd gdk-pixbuf && oe_runmake
+}
+
+do_stage() {
+ cd gdk-pixbuf && oe_runmake install
+}
+
+do_install() {
+ :
+}
+
diff --git a/packages/gtk+/gdk-pixbuf-csource/.mtn2git_empty b/packages/gtk+/gdk-pixbuf-csource/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk+/gdk-pixbuf-csource/.mtn2git_empty
diff --git a/packages/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch b/packages/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch
new file mode 100644
index 0000000000..c31a3b137a
--- /dev/null
+++ b/packages/gtk+/gdk-pixbuf-csource/reduce-dependencies.patch
@@ -0,0 +1,149 @@
+#
+# strip unnecessary stuff out of configure, we just want
+# to build gdk-pixbuf-csource.
+# -- Michael 'Mickey' Lauer <mlauer@vanille-media.de>
+#
+Index: gtk+-2.10.14/configure.in
+===================================================================
+--- gtk+-2.10.14.orig/configure.in
++++ gtk+-2.10.14/configure.in
+@@ -32,9 +32,6 @@ m4_define([gtk_binary_version], [2.10.0]
+
+ # required versions of other packages
+ m4_define([glib_required_version], [2.12.0])
+-m4_define([pango_required_version], [1.12.0])
+-m4_define([atk_required_version], [1.9.0])
+-m4_define([cairo_required_version], [1.2.0])
+
+
+ AC_INIT([gtk+], [gtk_version],
+@@ -343,10 +340,7 @@ ACLOCAL="$ACLOCAL $ACLOCAL_FLAGS"
+ ## the version requirements since those make the module lists
+ ## annoying to construct
+ PKG_CHECK_MODULES(BASE_DEPENDENCIES,
+- [glib-2.0 >= glib_required_version dnl
+- atk >= atk_required_version dnl
+- pango >= pango_required_version dnl
+- cairo >= cairo_required_version])
++ [glib-2.0 >= glib_required_version])
+
+ if test "$os_win32" != yes; then
+ # libtool option to control which symbols are exported
+@@ -1437,48 +1431,6 @@ else
+ AM_CONDITIONAL(USE_DIRECTFB, false)
+ fi
+
+-
+-# Check for Pango flags
+-
+-if test "x$gdktarget" = "xwin32"; then
+- PANGO_PACKAGES="pangowin32 pangocairo"
+-else
+- PANGO_PACKAGES="pango pangocairo"
+-fi
+-
+-AC_MSG_CHECKING(Pango flags)
+-if $PKG_CONFIG --exists $PANGO_PACKAGES ; then
+- PANGO_CFLAGS=`$PKG_CONFIG --cflags $PANGO_PACKAGES`
+- PANGO_LIBS=`$PKG_CONFIG --libs $PANGO_PACKAGES`
+-
+- AC_MSG_RESULT($PANGO_CFLAGS $PANGO_LIBS)
+-else
+- AC_MSG_ERROR([
+-*** Pango not found. Pango built with Cairo support is required
+-*** to build GTK+. See http://www.pango.org for Pango information.
+-])
+-fi
+-
+-CFLAGS="$CFLAGS $PANGO_CFLAGS"
+-
+-if $PKG_CONFIG --uninstalled $PANGO_PACKAGES; then
+- :
+-else
+- gtk_save_LIBS="$LIBS"
+- LIBS="$PANGO_LIBS $LIBS"
+- AC_TRY_LINK_FUNC(pango_context_new, :, AC_MSG_ERROR([
+-*** Can't link to Pango. Pango is required to build
+-*** GTK+. For more information see http://www.pango.org]))
+- LIBS="$gtk_save_LIBS"
+-fi
+-
+-CFLAGS="$saved_cflags"
+-LDFLAGS="$saved_ldflags"
+-
+-GDK_PACKAGES="$PANGO_PACKAGES"
+-if test "x$gdktarget" = "xx11"; then
+- GDK_PACKAGES="$GDK_PACKAGES $X_PACKAGES"
+-fi
+ GDK_DEP_LIBS="$GDK_EXTRA_LIBS `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_LIBS"
+ GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS"
+
+@@ -1487,7 +1439,7 @@ GDK_DEP_CFLAGS="`$PKG_CONFIG --cflags g
+ # into the pkg-config files
+ #
+ if test $enable_explicit_deps != yes ; then
+- GDK_PACKAGES="$PANGO_PACKAGES"
++ GDK_PACKAGES=
+ GDK_EXTRA_LIBS=
+ fi
+
+@@ -1498,39 +1450,10 @@ AC_SUBST(GDK_DEP_LIBS)
+ AC_SUBST(GDK_DEP_CFLAGS)
+
+
+-########################################
+-# Check for Accessibility Toolkit flags
+-########################################
+-
+-ATK_PACKAGES=atk
+-AC_MSG_CHECKING(ATK flags)
+-if $PKG_CONFIG --exists $ATK_PACKAGES ; then
+- ATK_CFLAGS=`$PKG_CONFIG --cflags $ATK_PACKAGES`
+- ATK_LIBS=`$PKG_CONFIG --libs $ATK_PACKAGES`
+-
+- AC_MSG_RESULT($ATK_CFLAGS $ATK_LIBS)
+-else
+- AC_MSG_ERROR([
+-*** Accessibility Toolkit not found. Accessibility Toolkit is required
+-*** to build GTK+.
+-])
+-fi
+-
+-if $PKG_CONFIG --uninstalled $ATK_PACKAGES; then
+- :
+-else
+- gtk_save_LIBS="$LIBS"
+- LIBS="$ATK_LIBS $LIBS"
+- AC_TRY_LINK_FUNC(atk_object_get_type, : , AC_MSG_ERROR([
+- *** Cannot link to Accessibility Toolkit. Accessibility Toolkit is required
+- *** to build GTK+]))
+- LIBS="$gtk_save_LIBS"
+-fi
+-
+-GTK_PACKAGES="atk cairo"
++GTK_PACKAGES=
+ GTK_EXTRA_LIBS=
+ GTK_EXTRA_CFLAGS=
+-GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $PANGO_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
++GTK_DEP_LIBS="$GDK_EXTRA_LIBS $GTK_DEP_LIBS_FOR_X `$PKG_CONFIG --libs $GDK_PIXBUF_PACKAGES $GTK_PACKAGES_FOR_X $GTK_PACKAGES` $GTK_EXTRA_LIBS $GDK_PIXBUF_EXTRA_LIBS"
+ GTK_DEP_CFLAGS="`$PKG_CONFIG --cflags gthread-2.0 $GDK_PIXBUF_PACKAGES $GDK_PACKAGES $GTK_PACKAGES` $GDK_PIXBUF_EXTRA_CFLAGS $GDK_EXTRA_CFLAGS $GTK_EXTRA_CFLAGS"
+
+ if test x"$os_win32" = xyes; then
+@@ -1584,17 +1507,6 @@ AM_CONDITIONAL(HAVE_CUPS, test "x$CUPS_C
+
+ gtk_save_cppflags="$CPPFLAGS"
+ CPPFLAGS="$CPPFLAGS $GTK_DEP_CFLAGS"
+-
+-AC_CHECK_HEADER(cairo-pdf.h,,AC_MSG_ERROR([
+-*** Can't find cairo-pdf.h. You must build Cairo with the pdf
+-*** backend enabled.]))
+-
+-if test "$os_win32" != "yes"; then
+- AC_CHECK_HEADER(cairo-ps.h,,AC_MSG_ERROR([
+-*** Can't find cairo-ps.h. You must build Cairo with the
+-*** postscript backend enabled.]))
+-fi
+-
+ CPPFLAGS="$gtk_save_cppflags"
+
+
diff --git a/packages/gtk-webcore/midori/.mtn2git_empty b/packages/gtk-webcore/midori/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/gtk-webcore/midori/.mtn2git_empty
diff --git a/packages/gtk-webcore/midori/midori.desktop b/packages/gtk-webcore/midori/midori.desktop
new file mode 100644
index 0000000000..683b1a343e
--- /dev/null
+++ b/packages/gtk-webcore/midori/midori.desktop
@@ -0,0 +1,8 @@
+[Desktop Entry]
+Encoding=UTF-8
+Name=Midori
+Comment=Webkit based browser
+Exec=midori
+Terminal=false
+Type=Application
+Categories=Application
diff --git a/packages/gtk-webcore/midori_0.0.2.bb b/packages/gtk-webcore/midori_0.0.2.bb
deleted file mode 100644
index 7f5fb6cd74..0000000000
--- a/packages/gtk-webcore/midori_0.0.2.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Midori is a lightweight web browser."
-LICENSE = "GPLv2"
-
-DEPENDS = "osb-jscore osb-nrcit osb-nrcore libsexy"
-
-inherit autotools pkgconfig
-
-SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz"
-
-
-
diff --git a/packages/gtk-webcore/midori_0.0.3.bb b/packages/gtk-webcore/midori_0.0.3.bb
deleted file mode 100644
index 7f5fb6cd74..0000000000
--- a/packages/gtk-webcore/midori_0.0.3.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Midori is a lightweight web browser."
-LICENSE = "GPLv2"
-
-DEPENDS = "osb-jscore osb-nrcit osb-nrcore libsexy"
-
-inherit autotools pkgconfig
-
-SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz"
-
-
-
diff --git a/packages/gtk-webcore/midori_0.0.4.bb b/packages/gtk-webcore/midori_0.0.4.bb
deleted file mode 100644
index 4f39f7bab3..0000000000
--- a/packages/gtk-webcore/midori_0.0.4.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Midori is a lightweight web browser."
-LICENSE = "GPLv2"
-
-DEPENDS = "webkit-gtk libsexy"
-
-inherit autotools pkgconfig
-
-SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz"
-
-
-
diff --git a/packages/gtk-webcore/midori_0.0.5.bb b/packages/gtk-webcore/midori_0.0.5.bb
deleted file mode 100644
index 4f39f7bab3..0000000000
--- a/packages/gtk-webcore/midori_0.0.5.bb
+++ /dev/null
@@ -1,11 +0,0 @@
-DESCRIPTION = "Midori is a lightweight web browser."
-LICENSE = "GPLv2"
-
-DEPENDS = "webkit-gtk libsexy"
-
-inherit autotools pkgconfig
-
-SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz"
-
-
-
diff --git a/packages/gtk-webcore/midori_0.0.6.bb b/packages/gtk-webcore/midori_0.0.6.bb
new file mode 100644
index 0000000000..ed0213964f
--- /dev/null
+++ b/packages/gtk-webcore/midori_0.0.6.bb
@@ -0,0 +1,18 @@
+DESCRIPTION = "Midori is a lightweight web browser."
+LICENSE = "GPLv2"
+
+DEPENDS = "webkit-gtk libsexy"
+
+inherit autotools pkgconfig
+
+SRC_URI = "http://software.twotoasts.de/media/midori/midori-${PV}.tar.gz \
+ file://midori.desktop"
+
+do_install_append() {
+ if [ -f ${WORKDIR}/midori.desktop ]; then
+ install -d ${D}${datadir}/applications
+ install -m 0644 ${WORKDIR}/midori.desktop ${D}${datadir}/applications
+ fi
+
+}
+
diff --git a/packages/images/angstrom-minimal-image-with-mtd-utils.bb b/packages/images/angstrom-minimal-image-with-mtd-utils.bb
index 740c39126c..4fe33e9282 100644
--- a/packages/images/angstrom-minimal-image-with-mtd-utils.bb
+++ b/packages/images/angstrom-minimal-image-with-mtd-utils.bb
@@ -3,7 +3,7 @@
# to program the NAND flash.
require angstrom-minimal-image.bb
-RDEPENDS += "mtd-utils"
+IMAGE_INSTALL += "mtd-utils"
export IMAGE_BASENAME = "minimalist-image-mtdutils"
diff --git a/packages/images/liveramdisk-image.bb b/packages/images/liveramdisk-image.bb
new file mode 100644
index 0000000000..026ed7b81c
--- /dev/null
+++ b/packages/images/liveramdisk-image.bb
@@ -0,0 +1,28 @@
+# LiveRamdisk image
+# Hwo to build:
+# First build angstrom-x11-image with glibc
+# then switch to ANGSTROM_MODE=uclibc and build this recipe
+# LiveRamdisk concept/implementation by Paul Sokolovsky
+LICENSE = "MIT"
+IMAGE_FSTYPES = "cpio.gz"
+
+#IMAGE_INSTALL = "initramfs-boot busybox kernel-module-uinput uclibc libgcc1"
+IMAGE_INSTALL = "initramfs-jffs2 busybox-static kernel-module-mtdram"
+
+export IMAGE_BASENAME = "liveramdisk"
+export IMAGE_LINGUAS = ""
+
+# Install only ${IMAGE_INSTALL}, not even deps
+PACKAGE_INSTALL_NO_DEPS = "1"
+
+inherit image
+
+IMAGE_PREPROCESS_COMMAND += " copy_jffs2_image; "
+
+copy_jffs2_image() {
+ # We need glibc main image
+ latest_image=`ls -1 -r ${DEPLOY_DIR}/../glibc/images/${MACHINE}/Angstrom-x11-image-glibc-*.rootfs.jffs2|head -n1`
+ [ -n "$latest_image" ] || oefatal "Cannot find jffs2 image in ${DEPLOY_DIR}/../glibc/images/${MACHINE}/"
+ oenote "Using: cp $latest_image ${IMAGE_ROOTFS}/initrd.jffs2"
+ cp $latest_image ${IMAGE_ROOTFS}/initrd.jffs2
+}
diff --git a/packages/initrdscripts/initramfs-jffs2/jffs2boot.sh b/packages/initrdscripts/initramfs-jffs2/jffs2boot.sh
index 81077eeae5..18f4d93273 100644
--- a/packages/initrdscripts/initramfs-jffs2/jffs2boot.sh
+++ b/packages/initrdscripts/initramfs-jffs2/jffs2boot.sh
@@ -4,7 +4,7 @@ echo "Starting initrd boot..."
mkdir /proc
mount -t proc proc /proc
-modprobe mtdram total_size=24576 erase_size=256
+modprobe mtdram total_size=25088 erase_size=256
sleep 1
ID=`grep "mtdram test device" /proc/mtd | cut -d: -f1| cut -b4-`
diff --git a/packages/initrdscripts/initramfs-jffs2_0.1.bb b/packages/initrdscripts/initramfs-jffs2_0.1.bb
index 78034c99c9..3e11465536 100644
--- a/packages/initrdscripts/initramfs-jffs2_0.1.bb
+++ b/packages/initrdscripts/initramfs-jffs2_0.1.bb
@@ -1,5 +1,5 @@
SRC_URI = "file://jffs2boot.sh"
-PR = "r0"
+PR = "r1"
do_install() {
install -m 0755 ${WORKDIR}/jffs2boot.sh ${D}/init
diff --git a/packages/libnotify/libnotify_0.4.2.bb b/packages/libnotify/libnotify_0.4.2.bb
deleted file mode 100644
index f3f3aff334..0000000000
--- a/packages/libnotify/libnotify_0.4.2.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "sends desktop notifications to a notification daemon"
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "LGPL"
-DEPENDS = "dbus gtk+"
-PR = "r0"
-
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${PN}-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/libnotify/libnotify_0.4.3.bb b/packages/libnotify/libnotify_0.4.3.bb
deleted file mode 100644
index f3f3aff334..0000000000
--- a/packages/libnotify/libnotify_0.4.3.bb
+++ /dev/null
@@ -1,13 +0,0 @@
-DESCRIPTION = "sends desktop notifications to a notification daemon"
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "LGPL"
-DEPENDS = "dbus gtk+"
-PR = "r0"
-
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${PN}-${PV}.tar.gz"
-
-inherit autotools pkgconfig
-
-do_stage() {
- autotools_stage_all
-}
diff --git a/packages/libnotify/libnotify_0.4.4.bb b/packages/libnotify/libnotify_0.4.4.bb
index f3f3aff334..9152133b4d 100644
--- a/packages/libnotify/libnotify_0.4.4.bb
+++ b/packages/libnotify/libnotify_0.4.4.bb
@@ -1,10 +1,11 @@
-DESCRIPTION = "sends desktop notifications to a notification daemon"
-HOMEPAGE = "http://www.galago-project.org/"
-LICENSE = "LGPL"
-DEPENDS = "dbus gtk+"
-PR = "r0"
+DESCRIPTION = "Send desktop notifications to a notification daemon"
+HOMEPAGE = "http://www.galago-project.org/"
+SECTION = "libs"
+LICENSE = "LGPL"
+DEPENDS = "dbus gtk+"
+PR = "r0"
-SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${PN}-${PV}.tar.gz"
+SRC_URI = "http://www.galago-project.org/files/releases/source/${PN}/${PN}-${PV}.tar.gz"
inherit autotools pkgconfig
diff --git a/packages/libowl/libowl_svn.bb b/packages/libowl/libowl_svn.bb
index 2126e3d4d0..7abc5e409d 100644
--- a/packages/libowl/libowl_svn.bb
+++ b/packages/libowl/libowl_svn.bb
@@ -12,7 +12,7 @@ HOMEPAGE = "http://www.o-hand.com"
LICENSE = "LGPL"
SECTION = "libs"
PR = "r3"
-PV = "0.0+svn${SRCDATE}"
+PV = "0.0+svnr${SRCREV}"
DEPENDS = "gtk+ glib-2.0"
PACKAGES = ""
diff --git a/packages/libxosd/libxosd_svn.bb b/packages/libxosd/libxosd_svn.bb
index 7dfd05d5d9..bb16f7f09a 100644
--- a/packages/libxosd/libxosd_svn.bb
+++ b/packages/libxosd/libxosd_svn.bb
@@ -2,7 +2,7 @@ DESCRIPTION = "A library for displaying a TV-like on-screen display in X."
SECTION = "libs/x11"
DEPENDS = "virtual/libx11 libxext"
LICENSE = "LGPL"
-PV = "2.2.15+svn${SRCDATE}"
+PV = "2.2.15+svnr${SRCREV}"
PR = "r5"
SRC_URI = "svn://libxosd.svn.sourceforge.net/svnroot/libxosd/source;module=current;proto=https \
diff --git a/packages/linux/linux-2.6.20/at91sam9260ek/.mtn2git_empty b/packages/linux/linux-2.6.20/at91sam9260ek/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.20/at91sam9260ek/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.20/at91sam9260ek/defconfig b/packages/linux/linux-2.6.20/at91sam9260ek/defconfig
new file mode 100644
index 0000000000..9278e6e857
--- /dev/null
+++ b/packages/linux/linux-2.6.20/at91sam9260ek/defconfig
@@ -0,0 +1,1209 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Wed Apr 18 14:53:20 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=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_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+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_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+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"
+
+#
+# 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=y
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 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_OMAP is not set
+
+#
+# Atmel AT91 System-on-Chip
+#
+# CONFIG_ARCH_AT91RM9200 is not set
+CONFIG_ARCH_AT91SAM9260=y
+# CONFIG_ARCH_AT91SAM9261 is not set
+# CONFIG_ARCH_AT91SAM9263 is not set
+
+#
+# AT91SAM9260 Variants
+#
+# CONFIG_ARCH_AT91SAM9260_SAM9XE is not set
+
+#
+# AT91SAM9260 / AT91SAM9XE Board Type
+#
+CONFIG_MACH_AT91SAM9260EK=y
+
+#
+# AT91 Board Options
+#
+CONFIG_MTD_AT91_DATAFLASH_CARD=y
+# CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
+
+#
+# AT91 Feature Selections
+#
+# CONFIG_AT91_PROGRAMMABLE_CLOCKS is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+# CONFIG_AEABI is not set
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,17105363 root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+# CONFIG_ARTHUR is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_NET_KEY 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 is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# 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 is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+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
+
+#
+# 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
+
+#
+# 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
+# CONFIG_MTD_OBSOLETE_CHIPS 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=y
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_AT91=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=24576
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=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
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+CONFIG_DAVICOM_PHY=y
+# 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_FIXED_PHY is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+CONFIG_MACB=y
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+# CONFIG_I2C is not set
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB=y
+# CONFIG_FB_CFB_FILLRECT is not set
+# CONFIG_FB_CFB_COPYAREA is not set
+# CONFIG_FB_CFB_IMAGEBLIT 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
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+CONFIG_SND_SEQ_DUMMY=y
+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=y
+CONFIG_SND_DEBUG=y
+CONFIG_SND_DEBUG_DETECT=y
+# CONFIG_SND_PCM_XRUN_DEBUG is not set
+
+#
+# Generic devices
+#
+# 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
+
+#
+# ALSA ARM devices
+#
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# 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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK 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_MII is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# 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_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD 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_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_AT91=y
+CONFIG_USB_AT91=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_AT91=y
+# CONFIG_MMC_TIFM_SD is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS 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=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_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# 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 is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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 is not set
+# CONFIG_DEBUG_RWSEMS 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=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-2.6.20/at91sam9261ek/.mtn2git_empty b/packages/linux/linux-2.6.20/at91sam9261ek/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.20/at91sam9261ek/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.20/at91sam9261ek/defconfig b/packages/linux/linux-2.6.20/at91sam9261ek/defconfig
new file mode 100644
index 0000000000..595e67cd83
--- /dev/null
+++ b/packages/linux/linux-2.6.20/at91sam9261ek/defconfig
@@ -0,0 +1,1242 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.20
+# Thu Aug 30 18:18:12 2007
+#
+CONFIG_ARM=y
+# CONFIG_GENERIC_TIME is not set
+CONFIG_MMU=y
+CONFIG_GENERIC_HARDIRQS=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_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# Code maturity level options
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+
+#
+# General setup
+#
+CONFIG_LOCALVERSION=""
+# CONFIG_LOCALVERSION_AUTO is not set
+# CONFIG_SWAP is not set
+CONFIG_SYSVIPC=y
+# CONFIG_IPC_NS is not set
+# CONFIG_POSIX_MQUEUE is not set
+# CONFIG_BSD_PROCESS_ACCT is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_UTS_NS is not set
+# CONFIG_AUDIT is not set
+# CONFIG_IKCONFIG is not set
+CONFIG_SYSFS_DEPRECATED=y
+# CONFIG_RELAY is not set
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_CC_OPTIMIZE_FOR_SIZE=y
+CONFIG_SYSCTL=y
+# CONFIG_EMBEDDED is not set
+CONFIG_UID16=y
+CONFIG_SYSCTL_SYSCALL=y
+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_SHMEM=y
+CONFIG_SLAB=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+# CONFIG_SLOB is not set
+
+#
+# Loadable module support
+#
+CONFIG_MODULES=y
+CONFIG_MODULE_UNLOAD=y
+# CONFIG_MODULE_FORCE_UNLOAD is not set
+# CONFIG_MODVERSIONS is not set
+# CONFIG_MODULE_SRCVERSION_ALL is not set
+CONFIG_KMOD=y
+
+#
+# Block layer
+#
+CONFIG_BLOCK=y
+# CONFIG_LBD is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+# CONFIG_LSF is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+# CONFIG_IOSCHED_DEADLINE is not set
+# CONFIG_IOSCHED_CFQ is not set
+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"
+
+#
+# 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=y
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_CO285 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_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_L7200 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_OMAP is not set
+
+#
+# Atmel AT91 System-on-Chip
+#
+# CONFIG_ARCH_AT91RM9200 is not set
+# CONFIG_ARCH_AT91SAM9260 is not set
+CONFIG_ARCH_AT91SAM9261=y
+# CONFIG_ARCH_AT91SAM9263 is not set
+
+#
+# AT91SAM9261 Board Type
+#
+CONFIG_MACH_AT91SAM9261EK=y
+
+#
+# AT91 Board Options
+#
+CONFIG_MTD_AT91_DATAFLASH_CARD=y
+# CONFIG_MTD_NAND_AT91_BUSWIDTH_16 is not set
+
+#
+# AT91 Feature Selections
+#
+CONFIG_AT91_PROGRAMMABLE_CLOCKS=y
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_ARM926T=y
+CONFIG_CPU_32v5=y
+CONFIG_CPU_ABRT_EV5TJ=y
+CONFIG_CPU_CACHE_VIVT=y
+CONFIG_CPU_COPY_V4WB=y
+CONFIG_CPU_TLB_V4WBI=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+# CONFIG_ARM_THUMB is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_WRITETHROUGH is not set
+# CONFIG_CPU_CACHE_ROUND_ROBIN is not set
+
+#
+# Bus support
+#
+
+#
+# PCCARD (PCMCIA/CardBus) support
+#
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+# CONFIG_PREEMPT is not set
+# CONFIG_NO_IDLE_HZ is not set
+CONFIG_HZ=100
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
+CONFIG_SPLIT_PTLOCK_CPUS=4096
+# CONFIG_RESOURCES_64BIT is not set
+# CONFIG_LEDS is not set
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="mem=64M console=ttyS0,115200 initrd=0x21100000,17105363 root=/dev/ram0 rw"
+# CONFIG_XIP_KERNEL is not set
+
+#
+# Floating point emulation
+#
+
+#
+# At least one emulation must be selected
+#
+CONFIG_FPE_NWFPE=y
+# CONFIG_FPE_NWFPE_XP is not set
+# CONFIG_FPE_FASTFPE is not set
+# CONFIG_VFP is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+# CONFIG_BINFMT_AOUT is not set
+# CONFIG_BINFMT_MISC is not set
+
+#
+# Power management options
+#
+# CONFIG_PM is not set
+# CONFIG_APM is not set
+
+#
+# Networking
+#
+CONFIG_NET=y
+
+#
+# Networking options
+#
+# CONFIG_NETDEBUG is not set
+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_NET_KEY 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 is not set
+CONFIG_IP_PNP_BOOTP=y
+# CONFIG_IP_PNP_RARP is not set
+# 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 is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+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 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+
+#
+# DCCP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_DCCP is not set
+
+#
+# SCTP Configuration (EXPERIMENTAL)
+#
+# CONFIG_IP_SCTP is not set
+
+#
+# TIPC Configuration (EXPERIMENTAL)
+#
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# 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
+
+#
+# QoS and/or fair queueing
+#
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_IEEE80211 is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+# CONFIG_FW_LOADER is not set
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_SYS_HYPERVISOR is not set
+
+#
+# Connector - unified userspace <-> kernelspace linker
+#
+# CONFIG_CONNECTOR is not set
+
+#
+# Memory Technology Devices (MTD)
+#
+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
+
+#
+# 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
+
+#
+# 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
+# CONFIG_MTD_OBSOLETE_CHIPS 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=y
+# 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
+
+#
+# NAND Flash Device Drivers
+#
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+CONFIG_MTD_NAND_AT91=y
+# CONFIG_MTD_NAND_NANDSIM is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
+
+#
+# Parallel port support
+#
+# CONFIG_PARPORT is not set
+
+#
+# Plug and Play support
+#
+
+#
+# Block devices
+#
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=4
+CONFIG_BLK_DEV_RAM_SIZE=24576
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
+CONFIG_BLK_DEV_INITRD=y
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=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
+
+#
+# Some SCSI devices (e.g. CD jukebox) support multiple LUNs
+#
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+# CONFIG_SCSI_SCAN_ASYNC is not set
+
+#
+# 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_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+
+#
+# SCSI low-level drivers
+#
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+
+#
+# Serial ATA (prod) and Parallel ATA (experimental) drivers
+#
+# CONFIG_ATA is not set
+
+#
+# Multi-device support (RAID and LVM)
+#
+# CONFIG_MD is not set
+
+#
+# Fusion MPT device support
+#
+# CONFIG_FUSION is not set
+
+#
+# IEEE 1394 (FireWire) support
+#
+
+#
+# I2O device support
+#
+
+#
+# Network device support
+#
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+
+#
+# PHY device support
+#
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+# CONFIG_MARVELL_PHY is not set
+CONFIG_DAVICOM_PHY=y
+# 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_FIXED_PHY is not set
+
+#
+# Ethernet (10 or 100Mbit)
+#
+CONFIG_NET_ETHERNET=y
+CONFIG_MII=y
+# CONFIG_SMC91X is not set
+# CONFIG_DM9000 is not set
+
+#
+# Ethernet (1000 Mbit)
+#
+
+#
+# Ethernet (10000 Mbit)
+#
+
+#
+# Token Ring devices
+#
+
+#
+# Wireless LAN (non-hamradio)
+#
+# CONFIG_NET_RADIO is not set
+
+#
+# Wan interfaces
+#
+# CONFIG_WAN is not set
+# CONFIG_PPP is not set
+# CONFIG_SLIP is not set
+# CONFIG_SHAPER is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+
+#
+# ISDN subsystem
+#
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=320
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=240
+# CONFIG_INPUT_JOYDEV is not set
+# CONFIG_INPUT_TSDEV is not set
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+# CONFIG_INPUT_KEYBOARD is not set
+# CONFIG_INPUT_MOUSE is not set
+# CONFIG_INPUT_JOYSTICK is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_MK712 is not set
+# CONFIG_TOUCHSCREEN_PENMOUNT is not set
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_INPUT_MISC is not set
+
+#
+# Hardware I/O ports
+#
+# CONFIG_SERIO is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+# CONFIG_VT_HW_CONSOLE_BINDING is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+# CONFIG_SERIAL_8250 is not set
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_ATMEL=y
+CONFIG_SERIAL_ATMEL_CONSOLE=y
+# CONFIG_SERIAL_ATMEL_TTYAT is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+CONFIG_LEGACY_PTYS=y
+CONFIG_LEGACY_PTY_COUNT=256
+
+#
+# IPMI
+#
+# CONFIG_IPMI_HANDLER is not set
+
+#
+# Watchdog Cards
+#
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_NOWAYOUT=y
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_DTLK is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+
+#
+# TPM devices
+#
+# CONFIG_TCG_TPM is not set
+
+#
+# I2C support
+#
+CONFIG_I2C=y
+CONFIG_I2C_CHARDEV=y
+
+#
+# I2C Algorithms
+#
+# CONFIG_I2C_ALGOBIT is not set
+# CONFIG_I2C_ALGOPCF is not set
+# CONFIG_I2C_ALGOPCA is not set
+
+#
+# I2C Hardware Bus support
+#
+CONFIG_I2C_AT91=y
+CONFIG_I2C_AT91_CLOCKRATE=100000
+# CONFIG_I2C_OCORES is not set
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_STUB is not set
+# CONFIG_I2C_PCA_ISA is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_SENSORS_DS1337 is not set
+# CONFIG_SENSORS_DS1374 is not set
+# CONFIG_SENSORS_EEPROM is not set
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_SENSORS_MAX6875 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
+
+#
+# SPI support
+#
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+CONFIG_SPI_ATMEL=y
+# CONFIG_SPI_BITBANG is not set
+
+#
+# SPI Protocol Masters
+#
+
+#
+# Dallas's 1-wire bus
+#
+# CONFIG_W1 is not set
+
+#
+# Hardware Monitoring support
+#
+# CONFIG_HWMON is not set
+# CONFIG_HWMON_VID is not set
+
+#
+# Misc devices
+#
+# CONFIG_TIFM_CORE is not set
+
+#
+# LED devices
+#
+# CONFIG_NEW_LEDS is not set
+
+#
+# LED drivers
+#
+
+#
+# LED Triggers
+#
+
+#
+# Multimedia devices
+#
+# CONFIG_VIDEO_DEV is not set
+
+#
+# Digital Video Broadcasting Devices
+#
+# CONFIG_DVB is not set
+# CONFIG_USB_DABUSB is not set
+
+#
+# Graphics support
+#
+# CONFIG_FIRMWARE_EDID is not set
+CONFIG_FB=y
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# 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
+# CONFIG_FB_S1D13XXX is not set
+CONFIG_FB_ATMEL=y
+CONFIG_FB_INTSRAM=y
+# CONFIG_FB_VIRTUAL is not set
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE is not set
+
+#
+# Logo configuration
+#
+# CONFIG_LOGO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Sound
+#
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_SEQUENCER=y
+# 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
+
+#
+# Generic devices
+#
+# 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
+
+#
+# ALSA ARM devices
+#
+# CONFIG_SND_AT91_AC97 is not set
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+
+#
+# HID Devices
+#
+CONFIG_HID=y
+
+#
+# USB support
+#
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+# CONFIG_USB_ARCH_HAS_EHCI is not set
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+# CONFIG_USB_BANDWIDTH is not set
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_ISP116X_HCD is not set
+CONFIG_USB_OHCI_HCD=y
+# CONFIG_USB_OHCI_BIG_ENDIAN is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+# CONFIG_USB_SL811_HCD is not set
+
+#
+# USB Device Class drivers
+#
+# CONFIG_USB_ACM is not set
+# CONFIG_USB_PRINTER is not set
+
+#
+# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
+#
+
+#
+# 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_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_LIBUSUAL is not set
+
+#
+# USB Input Devices
+#
+# CONFIG_USB_HID is not set
+
+#
+# USB HID Boot Protocol drivers
+#
+# CONFIG_USB_KBD is not set
+# CONFIG_USB_MOUSE is not set
+# CONFIG_USB_AIPTEK is not set
+# CONFIG_USB_WACOM is not set
+# CONFIG_USB_ACECAD is not set
+# CONFIG_USB_KBTAB is not set
+# CONFIG_USB_POWERMATE is not set
+# CONFIG_USB_TOUCHSCREEN is not set
+# CONFIG_USB_YEALINK is not set
+# CONFIG_USB_XPAD is not set
+# CONFIG_USB_ATI_REMOTE is not set
+# CONFIG_USB_ATI_REMOTE2 is not set
+# CONFIG_USB_KEYSPAN_REMOTE is not set
+# CONFIG_USB_APPLETOUCH is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK 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_MII is not set
+# CONFIG_USB_USBNET is not set
+CONFIG_USB_MON=y
+
+#
+# USB port drivers
+#
+
+#
+# USB Serial Converter support
+#
+# 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_AUERSWALD is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD 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_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_TEST is not set
+
+#
+# USB DSL modem support
+#
+
+#
+# USB Gadget Support
+#
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA2XX is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+CONFIG_USB_GADGET_AT91=y
+CONFIG_USB_AT91=y
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+# CONFIG_USB_GADGET_DUALSPEED is not set
+# CONFIG_USB_ZERO is not set
+# CONFIG_USB_ETH is not set
+CONFIG_USB_GADGETFS=m
+CONFIG_USB_FILE_STORAGE=m
+# CONFIG_USB_FILE_STORAGE_TEST is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+
+#
+# MMC/SD Card support
+#
+# CONFIG_MMC is not set
+
+#
+# Real Time Clock
+#
+CONFIG_RTC_LIB=y
+# CONFIG_RTC_CLASS 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 is not set
+# CONFIG_EXT4DEV_FS is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_ROMFS_FS is not set
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_QUOTA is not set
+CONFIG_DNOTIFY=y
+# CONFIG_AUTOFS_FS is not set
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS 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=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_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_RAMFS=y
+# 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_SUMMARY is not set
+# CONFIG_JFFS2_FS_XATTR is not set
+# CONFIG_JFFS2_COMPRESSION_OPTIONS is not set
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_RTIME=y
+# CONFIG_JFFS2_RUBIN is not set
+CONFIG_CRAMFS=y
+# CONFIG_VXFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+
+#
+# Network File Systems
+#
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+# CONFIG_NFS_V4 is not set
+# CONFIG_NFS_DIRECTIO is not set
+# CONFIG_NFSD is not set
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+# CONFIG_RPCSEC_GSS_KRB5 is not set
+# 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
+# CONFIG_9P_FS is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+
+#
+# Native Language Support
+#
+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=y
+# 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=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+CONFIG_NLS_UTF8=y
+
+#
+# Distributed Lock Manager
+#
+# CONFIG_DLM is not set
+
+#
+# Profiling support
+#
+# CONFIG_PROFILING is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_MUST_CHECK=y
+# 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=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_SCHEDSTATS 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 is not set
+# CONFIG_DEBUG_RWSEMS 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=y
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_LIST is not set
+CONFIG_FRAME_POINTER=y
+CONFIG_FORCED_INLINING=y
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_DEBUG_USER=y
+# CONFIG_DEBUG_ERRORS is not set
+CONFIG_DEBUG_LL=y
+# CONFIG_DEBUG_ICEDCC is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+
+#
+# Cryptographic options
+#
+# CONFIG_CRYPTO is not set
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_CRC_CCITT is not set
+# CONFIG_CRC16 is not set
+CONFIG_CRC32=y
+# CONFIG_LIBCRC32C is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_PLIST=y
+CONFIG_IOMAP_COPY=y
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/.mtn2git_empty b/packages/linux/linux-2.6.22+2.6.23-rc5/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/.mtn2git_empty b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-gpio-interrupt-debounce.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-gpio-interrupt-debounce.diff
new file mode 100644
index 0000000000..dbd2856e87
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-gpio-interrupt-debounce.diff
@@ -0,0 +1,87 @@
+
+Implement GPIO interrupt debouncing on ep93xx.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mach-ep93xx/core.c 2007-09-04 02:22:19.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c 2007-09-04 02:28:19.000000000 +0200
+@@ -154,6 +154,7 @@
+ *************************************************************************/
+ static unsigned char gpio_int_unmasked[3];
+ static unsigned char gpio_int_enabled[3];
++static unsigned char gpio_int_debounce[3];
+ static unsigned char gpio_int_type1[3];
+ static unsigned char gpio_int_type2[3];
+
+@@ -161,16 +162,19 @@
+ {
+ if (abf == 0) {
+ __raw_writeb(0, EP93XX_GPIO_A_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[0], EP93XX_GPIO_A_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[0], EP93XX_GPIO_A_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[0], EP93XX_GPIO_A_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[0] & gpio_int_enabled[0], EP93XX_GPIO_A_INT_ENABLE);
+ } else if (abf == 1) {
+ __raw_writeb(0, EP93XX_GPIO_B_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[1], EP93XX_GPIO_B_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[1], EP93XX_GPIO_B_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[1], EP93XX_GPIO_B_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[1] & gpio_int_enabled[1], EP93XX_GPIO_B_INT_ENABLE);
+ } else if (abf == 2) {
+ __raw_writeb(0, EP93XX_GPIO_F_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[2], EP93XX_GPIO_F_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[2], EP93XX_GPIO_F_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[2], EP93XX_GPIO_F_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[2] & gpio_int_enabled[2], EP93XX_GPIO_F_INT_ENABLE);
+@@ -361,6 +365,13 @@
+ } else {
+ gpio_int_enabled[port] &= ~(1 << line);
+ }
++
++ if (type & IRQ_TYPE_DEBOUNCE) {
++ gpio_int_debounce[port] |= 1 << line;
++ } else {
++ gpio_int_debounce[port] &= ~(1 << line);
++ }
++
+ update_gpio_int_params(port);
+
+ return 0;
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:22:19.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:28:19.000000000 +0200
+@@ -78,16 +78,19 @@
+ #define EP93XX_GPIO_F_INT_ACK EP93XX_GPIO_REG(0x54)
+ #define EP93XX_GPIO_F_INT_ENABLE EP93XX_GPIO_REG(0x58)
+ #define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
++#define EP93XX_GPIO_F_INT_DEBOUNCE EP93XX_GPIO_REG(0x64)
+ #define EP93XX_GPIO_A_INT_TYPE1 EP93XX_GPIO_REG(0x90)
+ #define EP93XX_GPIO_A_INT_TYPE2 EP93XX_GPIO_REG(0x94)
+ #define EP93XX_GPIO_A_INT_ACK EP93XX_GPIO_REG(0x98)
+ #define EP93XX_GPIO_A_INT_ENABLE EP93XX_GPIO_REG(0x9c)
+ #define EP93XX_GPIO_A_INT_STATUS EP93XX_GPIO_REG(0xa0)
++#define EP93XX_GPIO_A_INT_DEBOUNCE EP93XX_GPIO_REG(0xa8)
+ #define EP93XX_GPIO_B_INT_TYPE1 EP93XX_GPIO_REG(0xac)
+ #define EP93XX_GPIO_B_INT_TYPE2 EP93XX_GPIO_REG(0xb0)
+ #define EP93XX_GPIO_B_INT_ACK EP93XX_GPIO_REG(0xb4)
+ #define EP93XX_GPIO_B_INT_ENABLE EP93XX_GPIO_REG(0xb8)
+ #define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
++#define EP93XX_GPIO_B_INT_DEBOUNCE EP93XX_GPIO_REG(0xc4)
+
+ #define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
+
+Index: linux-2.6.23-rc5/include/linux/irq.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/linux/irq.h 2007-09-04 02:24:58.000000000 +0200
++++ linux-2.6.23-rc5/include/linux/irq.h 2007-09-04 02:25:01.000000000 +0200
+@@ -44,6 +44,7 @@
+ #define IRQ_TYPE_LEVEL_LOW 0x00000008 /* Level low type */
+ #define IRQ_TYPE_SENSE_MASK 0x0000000f /* Mask of the above */
+ #define IRQ_TYPE_PROBE 0x00000010 /* Probing in progress */
++#define IRQ_TYPE_DEBOUNCE 0x00000020 /* Enable HW debounce */
+
+ /* Internal flags */
+ #define IRQ_INPROGRESS 0x00000100 /* IRQ handler active - do not enter! */
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c-bus.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c-bus.diff
new file mode 100644
index 0000000000..efdbf42a45
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c-bus.diff
@@ -0,0 +1,220 @@
+
+I2C bus driver using ep93xx GPIOs.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/drivers/i2c/busses/Kconfig
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/i2c/busses/Kconfig 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/drivers/i2c/busses/Kconfig 2007-09-04 02:26:20.000000000 +0200
+@@ -654,4 +654,16 @@
+ This driver can also be built as module. If so, the module
+ will be called i2c-pmcmsp.
+
++config I2C_EP93XX
++ tristate "Cirrus Logic EP93XX GPIO-based I2C interface"
++ depends on I2C && ARCH_EP93XX
++ select I2C_ALGOBIT
++ help
++ Say Y here if you have an Cirrus Logic EP93XX based
++ system and are using GPIO lines for an I2C bus.
++
++ This support is also available as a module. If so, the module
++ will be called i2c-ep93xx.
++
++
+ endmenu
+Index: linux-2.6.23-rc5/drivers/i2c/busses/Makefile
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/i2c/busses/Makefile 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/drivers/i2c/busses/Makefile 2007-09-04 02:26:20.000000000 +0200
+@@ -52,6 +52,7 @@
+ obj-$(CONFIG_I2C_VOODOO3) += i2c-voodoo3.o
+ obj-$(CONFIG_SCx200_ACB) += scx200_acb.o
+ obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o
++obj-$(CONFIG_I2C_EP93XX) += i2c-ep93xx.o
+
+ ifeq ($(CONFIG_I2C_DEBUG_BUS),y)
+ EXTRA_CFLAGS += -DDEBUG
+Index: linux-2.6.23-rc5/drivers/i2c/busses/i2c-ep93xx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23-rc5/drivers/i2c/busses/i2c-ep93xx.c 2007-09-04 02:26:20.000000000 +0200
+@@ -0,0 +1,159 @@
++/*
++ * EP93XX I2C bus driver.
++ * Copyright (C) 2007 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * An I2C bus driver for the Cirrus Logic EP93xx SoC.
++ *
++ * Based on an earlier version by Alessandro Zummo.
++ */
++
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/module.h>
++#include <linux/i2c.h>
++#include <linux/i2c-algo-bit.h>
++#include <asm/hardware.h>
++#include <asm/arch/gpio.h>
++
++struct ep93xx_i2c_priv {
++ struct ep93xx_i2c_data *data;
++ struct i2c_adapter adapter;
++ struct i2c_algo_bit_data algo_data;
++ int sda;
++ int scl;
++};
++
++
++static void ep93xx_bit_setsda(void *cookie, int val)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (val) {
++ gpio_line_config(priv->data->sda_pin, GPIO_IN);
++ if (priv->scl && !priv->sda && priv->data->stop != NULL)
++ priv->data->stop(priv->data->cookie);
++ priv->sda = 1;
++ } else {
++ if (priv->scl && priv->sda && priv->data->start != NULL)
++ priv->data->start(priv->data->cookie);
++ gpio_line_config(priv->data->sda_pin, GPIO_OUT);
++ gpio_line_set(priv->data->sda_pin, 0);
++ priv->sda = 0;
++ }
++}
++
++static void ep93xx_bit_setscl(void *cookie, int val)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (val) {
++ gpio_line_config(priv->data->scl_pin, GPIO_IN);
++ priv->scl = 1;
++ } else {
++ gpio_line_config(priv->data->scl_pin, GPIO_OUT);
++ gpio_line_set(priv->data->scl_pin, 0);
++ priv->scl = 0;
++ }
++}
++
++static int ep93xx_bit_getsda(void *cookie)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (priv->sda == 0)
++ BUG();
++
++ return gpio_line_get(priv->data->sda_pin);
++}
++
++static int ep93xx_bit_getscl(void *cookie)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (priv->scl == 0)
++ BUG();
++
++ return gpio_line_get(priv->data->scl_pin);
++}
++
++
++static int ep93xx_i2c_probe(struct platform_device *pdev)
++{
++ struct ep93xx_i2c_priv *priv;
++ int err;
++
++ priv = kzalloc(sizeof(struct ep93xx_i2c_priv), GFP_KERNEL);
++ if (priv == NULL)
++ return -ENOMEM;
++
++ priv->data = pdev->dev.platform_data;
++
++ strlcpy(priv->adapter.name, pdev->dev.driver->name, I2C_NAME_SIZE);
++ priv->adapter.algo_data = &priv->algo_data;
++ priv->adapter.class = I2C_CLASS_ALL;
++ priv->adapter.dev.parent = &pdev->dev;
++
++ priv->algo_data.data = priv;
++ priv->algo_data.setsda = ep93xx_bit_setsda;
++ priv->algo_data.setscl = ep93xx_bit_setscl;
++ priv->algo_data.getsda = ep93xx_bit_getsda;
++ priv->algo_data.getscl = ep93xx_bit_getscl;
++ priv->algo_data.udelay = 10;
++ priv->algo_data.timeout = 100;
++
++ priv->sda = 1;
++ gpio_line_config(priv->data->sda_pin, GPIO_IN);
++
++ priv->scl = 1;
++ gpio_line_config(priv->data->scl_pin, GPIO_IN);
++
++ err = i2c_bit_add_bus(&priv->adapter);
++ if (err) {
++ printk(KERN_ERR "ERROR: Could not install %s\n",
++ pdev->dev.bus_id);
++ kfree(priv);
++ return err;
++ }
++
++ platform_set_drvdata(pdev, priv);
++
++ return 0;
++}
++
++static int ep93xx_i2c_remove(struct platform_device *pdev)
++{
++ struct ep93xx_i2c_priv *priv;
++
++ priv = platform_get_drvdata(pdev);
++ i2c_del_adapter(&priv->adapter);
++ platform_set_drvdata(pdev, NULL);
++ kfree(priv);
++
++ return 0;
++}
++
++static struct platform_driver ep93xx_i2c_driver = {
++ .probe = ep93xx_i2c_probe,
++ .remove = ep93xx_i2c_remove,
++ .driver = {
++ .name = "ep93xx-i2c",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ep93xx_i2c_init(void)
++{
++ return platform_driver_register(&ep93xx_i2c_driver);
++}
++
++static void __exit ep93xx_i2c_exit(void)
++{
++ platform_driver_unregister(&ep93xx_i2c_driver);
++}
++
++module_init(ep93xx_i2c_init);
++module_exit(ep93xx_i2c_exit);
++
++MODULE_AUTHOR("Lennert Buytenhek <buytenh@wantstofly.org>");
++MODULE_DESCRIPTION("GPIO-based I2C adapter for EP93XX systems");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/platform.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/platform.h 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/platform.h 2007-09-04 02:28:19.000000000 +0200
+@@ -16,5 +16,13 @@
+ unsigned char phy_id;
+ };
+
++struct ep93xx_i2c_data {
++ int sda_pin;
++ int scl_pin;
++ void *cookie;
++ void (*start)(void *);
++ void (*stop)(void *);
++};
++
+
+ #endif
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c.diff
new file mode 100644
index 0000000000..bf4622b1db
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-i2c.diff
@@ -0,0 +1,110 @@
+
+Instantiate the ep93xx gpio i2c bus driver in the generic ep93xx
+code.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mach-ep93xx/core.c 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c 2007-09-04 02:28:12.000000000 +0200
+@@ -509,6 +509,52 @@
+ };
+
+
++static DEFINE_MUTEX(eeclk_eedat_mutex);
++static int i2c_transaction_in_progress;
++
++static void ep93xx_i2c_start_condition(void *cookie)
++{
++ if (!i2c_transaction_in_progress) {
++ mutex_lock(&eeclk_eedat_mutex);
++ i2c_transaction_in_progress = 1;
++ }
++}
++
++static void ep93xx_i2c_stop_condition(void *cookie)
++{
++ if (i2c_transaction_in_progress) {
++ mutex_unlock(&eeclk_eedat_mutex);
++ i2c_transaction_in_progress = 0;
++ } else {
++ printk(KERN_WARNING "ep93xx: i2c stop without start??\n");
++ }
++}
++
++static struct ep93xx_i2c_data ep93xx_i2c_gpio_data = {
++ .sda_pin = EP93XX_GPIO_LINE_EEDAT,
++ .scl_pin = EP93XX_GPIO_LINE_EECLK,
++ .start = ep93xx_i2c_start_condition,
++ .stop = ep93xx_i2c_stop_condition,
++};
++
++static struct platform_device ep93xx_i2c_device = {
++ .name = "ep93xx-i2c",
++ .id = 0,
++ .dev.platform_data = &ep93xx_i2c_gpio_data,
++ .num_resources = 0,
++};
++
++void eeclk_eedat_claim(void)
++{
++ mutex_lock(&eeclk_eedat_mutex);
++}
++
++void eeclk_eedat_release(void)
++{
++ mutex_unlock(&eeclk_eedat_mutex);
++}
++
++
+ void __init ep93xx_init_devices(void)
+ {
+ unsigned int v;
+@@ -521,10 +567,20 @@
+ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+ __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG);
+
++ /*
++ * When EECLK/EEDAT are in open drain mode (EEDRIVE=0b11),
++ * writing a 1 to their Data Register bits causes subsequent
++ * reads from the Data Direction Register to return 'input',
++ * which confuses gpio_line_config(). So, we use CMOS drive
++ * mode instead.
++ */
++ __raw_writel(0, EP93XX_GPIO_EEDRIVE);
++
+ amba_device_register(&uart1_device, &iomem_resource);
+ amba_device_register(&uart2_device, &iomem_resource);
+ amba_device_register(&uart3_device, &iomem_resource);
+
+ platform_device_register(&ep93xx_rtc_device);
+ platform_device_register(&ep93xx_ohci_device);
++ platform_device_register(&ep93xx_i2c_device);
+ }
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:28:10.000000000 +0200
+@@ -91,6 +91,7 @@
+ #define EP93XX_GPIO_B_INT_ENABLE EP93XX_GPIO_REG(0xb8)
+ #define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
+ #define EP93XX_GPIO_B_INT_DEBOUNCE EP93XX_GPIO_REG(0xc4)
++#define EP93XX_GPIO_EEDRIVE EP93XX_GPIO_REG(0xc8)
+
+ #define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
+
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/platform.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/platform.h 2007-09-04 02:26:20.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/platform.h 2007-09-04 02:26:38.000000000 +0200
+@@ -10,6 +10,9 @@
+ void ep93xx_init_devices(void);
+ extern struct sys_timer ep93xx_timer;
+
++void eeclk_eedat_claim(void);
++void eeclk_eedat_release(void);
++
+ struct ep93xx_eth_data
+ {
+ unsigned char dev_addr[6];
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-leds.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-leds.diff
new file mode 100644
index 0000000000..e158593f28
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-leds.diff
@@ -0,0 +1,181 @@
+
+EP93xx leds driver
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mach-ep93xx/core.c 2007-09-04 02:40:19.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c 2007-09-04 02:40:25.000000000 +0200
+@@ -568,6 +568,12 @@
+ }
+
+
++static struct platform_device ep93xx_led_device = {
++ .name = "ep93xx-led",
++ .id = -1,
++};
++
++
+ void __init ep93xx_init_devices(void)
+ {
+ unsigned int v;
+@@ -596,4 +602,5 @@
+ platform_device_register(&ep93xx_rtc_device);
+ platform_device_register(&ep93xx_ohci_device);
+ platform_device_register(&ep93xx_i2c_device);
++ platform_device_register(&ep93xx_led_device);
+ }
+Index: linux-2.6.23-rc5/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/leds/Kconfig 2007-09-04 02:40:19.000000000 +0200
++++ linux-2.6.23-rc5/drivers/leds/Kconfig 2007-09-04 02:40:25.000000000 +0200
+@@ -101,6 +101,12 @@
+ outputs. To be useful the particular board must have LEDs
+ and they must be connected to the GPIO lines.
+
++config LEDS_EP93XX
++ tristate "LED Support for Cirrus Logic EP93xx"
++ depends on LEDS_CLASS && ARCH_EP93XX
++ help
++ This option enables support for the Cirrus Logic EP93xx based boards.
++
+ comment "LED Triggers"
+
+ config LEDS_TRIGGERS
+Index: linux-2.6.23-rc5/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/leds/Makefile 2007-09-04 02:40:19.000000000 +0200
++++ linux-2.6.23-rc5/drivers/leds/Makefile 2007-09-04 02:40:25.000000000 +0200
+@@ -16,6 +16,7 @@
+ obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
+ obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
+ obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
++obj-$(CONFIG_LEDS_EP93XX) += leds-ep93xx.o
+ obj-$(CONFIG_LEDS_GPIO) += leds-gpio.o
+
+ # LED Triggers
+Index: linux-2.6.23-rc5/drivers/leds/leds-ep93xx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23-rc5/drivers/leds/leds-ep93xx.c 2007-09-04 02:40:25.000000000 +0200
+@@ -0,0 +1,119 @@
++/*
++ * LEDs driver for Cirrus Logic EP93xx
++ *
++ * Author: Petr Stetiar <ynezz@true.cz>
++ *
++ * Based on leds-corgi.c by Richard Purdie
++ *
++ * 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/leds.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/gpio.h>
++
++static void ep93xx_green_led_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_HIGH);
++ else
++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_LOW);
++}
++
++static void ep93xx_red_led_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_HIGH);
++ else
++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_LOW);
++}
++
++
++static struct led_classdev ep93xx_green_led = {
++ .name = "ep93xx:green",
++ .default_trigger = "none",
++ .brightness_set = ep93xx_green_led_set,
++};
++
++static struct led_classdev ep93xx_red_led = {
++ .name = "ep93xx:red",
++ .default_trigger = "heartbeat",
++ .brightness_set = ep93xx_red_led_set,
++};
++
++#ifdef CONFIG_PM
++static int ep93xx_led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&ep93xx_green_led);
++ led_classdev_suspend(&ep93xx_red_led);
++ return 0;
++}
++
++static int ep93xx_led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&ep93xx_red_led);
++ led_classdev_resume(&ep93xx_green_led);
++ return 0;
++}
++#endif
++
++static int ep93xx_led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ gpio_line_config(EP93XX_GPIO_LINE_GRLED, GPIO_OUT);
++ gpio_line_config(EP93XX_GPIO_LINE_RDLED, GPIO_OUT);
++
++ ret = led_classdev_register(&pdev->dev, &ep93xx_green_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &ep93xx_red_led);
++ if (ret < 0)
++ led_classdev_unregister(&ep93xx_green_led);
++
++ return ret;
++}
++
++static int ep93xx_led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&ep93xx_green_led);
++ led_classdev_unregister(&ep93xx_red_led);
++ return 0;
++}
++
++static struct platform_driver ep93xx_led_driver = {
++ .probe = ep93xx_led_probe,
++ .remove = ep93xx_led_remove,
++#ifdef CONFIG_PM
++ .suspend = ep93xx_led_suspend,
++ .resume = ep93xx_led_resume,
++#endif
++ .driver = {
++ .name = "ep93xx-led",
++ },
++};
++
++static int __init ep93xx_led_init(void)
++{
++ return platform_driver_register(&ep93xx_led_driver);
++}
++
++static void __exit ep93xx_led_exit(void)
++{
++ platform_driver_unregister(&ep93xx_led_driver);
++}
++
++module_init(ep93xx_led_init);
++module_exit(ep93xx_led_exit);
++
++MODULE_AUTHOR("Petr Stetiar <ynezz@true.cz>");
++MODULE_DESCRIPTION("Cirrus Logic EP93xx LED driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-maverick-uniqid.patch b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-maverick-uniqid.patch
new file mode 100644
index 0000000000..0bc8190464
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-maverick-uniqid.patch
@@ -0,0 +1,38 @@
+
+Adds support for SoC's unique ID (Maverick Key) in /proc/cpuinfo
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.23-rc5/arch/arm/kernel/setup.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/kernel/setup.c 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/kernel/setup.c 2007-09-04 02:26:49.000000000 +0200
+@@ -964,8 +964,15 @@
+
+ seq_printf(m, "Hardware\t: %s\n", machine_name);
+ seq_printf(m, "Revision\t: %04x\n", system_rev);
++
++#if defined(CONFIG_ARCH_EP93XX)
++#include <asm/arch/ep93xx-regs.h>
++ seq_printf(m, "Serial\t\t: %016x\n",
++ *((unsigned int *)EP93XX_SECURITY_UNIQID));
++#else
+ seq_printf(m, "Serial\t\t: %08x%08x\n",
+ system_serial_high, system_serial_low);
++#endif
+
+ return 0;
+ }
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:26:38.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-04 02:26:49.000000000 +0200
+@@ -70,6 +70,8 @@
+ #define EP93XX_I2S_BASE (EP93XX_APB_VIRT_BASE + 0x00020000)
+
+ #define EP93XX_SECURITY_BASE (EP93XX_APB_VIRT_BASE + 0x00030000)
++#define EP93XX_SECURITY_REG(x) (EP93XX_SECURITY_BASE + (x))
++#define EP93XX_SECURITY_UNIQID EP93XX_SECURITY_REG(0x2440)
+
+ #define EP93XX_GPIO_BASE (EP93XX_APB_VIRT_BASE + 0x00040000)
+ #define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x))
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-clocks.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-clocks.diff
new file mode 100644
index 0000000000..86b14894b6
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-clocks.diff
@@ -0,0 +1,42 @@
+
+Hackishly enable all UART clocks before uncompressing the kernel,
+so that using ttyAM1 or ttyAM2 as console can work.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/uncompress.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/uncompress.h 2007-09-04 02:26:42.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/uncompress.h 2007-09-04 02:26:47.000000000 +0200
+@@ -78,6 +78,23 @@
+
+
+ /*
++ * We don't have clock management for the UARTs (amba-pl010)
++ * yet, so hackily enable all UART clocks here for now.
++ */
++#define PHYS_SYSCON_DEVICE_CONFIG 0x80930080
++#define PHYS_SYSCON_SWLOCK 0x809300c0
++
++static void enable_all_uart_clocks(void)
++{
++ unsigned int v;
++
++ v = __raw_readl(PHYS_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, PHYS_SYSCON_SWLOCK);
++ __raw_writel(v | 0x01140000, PHYS_SYSCON_DEVICE_CONFIG);
++}
++
++
++/*
+ * Some bootloaders don't turn on the UARTBAUD bit, which means that
+ * the UARTs will be running off a divided 7.3728 MHz clock instead of
+ * the 14.7456 MHz peripheral clock when linux boots.
+@@ -126,6 +143,7 @@
+ static void arch_decomp_setup(void)
+ {
+ ethernet_reset();
++ enable_all_uart_clocks();
+ fix_uart_base();
+ }
+
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-uartbaud.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-uartbaud.diff
new file mode 100644
index 0000000000..9cfaacd103
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-serial-uartbaud.diff
@@ -0,0 +1,66 @@
+
+Force UARTBAUD on before uncompressing.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/uncompress.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/uncompress.h 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/uncompress.h 2007-09-04 02:28:14.000000000 +0200
+@@ -77,9 +77,56 @@
+ }
+
+
++/*
++ * Some bootloaders don't turn on the UARTBAUD bit, which means that
++ * the UARTs will be running off a divided 7.3728 MHz clock instead of
++ * the 14.7456 MHz peripheral clock when linux boots.
++ *
++ * We detect that condition here and fix it by turning on UARTBAUD, and
++ * then reprogramming the divisors on all enabled UARTs to twice what
++ * they were before we turned UARTBAUD on, to preserve the programmed
++ * baud rate.
++ */
++#define PHYS_SYSCON_CLOCK_CONTROL 0x80930004
++#define SYSCON_CLOCK_UARTBAUD 0x20000000
++#define PHYS_UART1_BASE 0x808c0000
++#define PHYS_UART2_BASE 0x808d0000
++#define PHYS_UART3_BASE 0x808e0000
++
++static void uart_divisor_times_two(unsigned int base)
++{
++ u16 divisor;
++
++ divisor = __raw_readb(base + 0x0c) << 8;
++ divisor |= __raw_readb(base + 0x10);
++ if (divisor) {
++ divisor = (2 * (divisor + 1)) - 1;
++ __raw_writeb(divisor >> 8, base + 0x0c);
++ __raw_writeb(divisor & 0xff, base + 0x10);
++ __raw_writeb(__raw_readb(base + 0x08), base + 0x08);
++ }
++}
++
++static void fix_uart_base(void)
++{
++ unsigned int v;
++
++ v = __raw_readl(PHYS_SYSCON_CLOCK_CONTROL);
++ if ((v & SYSCON_CLOCK_UARTBAUD) == 0) {
++ v |= SYSCON_CLOCK_UARTBAUD;
++ __raw_writel(v, PHYS_SYSCON_CLOCK_CONTROL);
++
++ uart_divisor_times_two(PHYS_UART1_BASE);
++ uart_divisor_times_two(PHYS_UART2_BASE);
++ uart_divisor_times_two(PHYS_UART3_BASE);
++ }
++}
++
++
+ static void arch_decomp_setup(void)
+ {
+ ethernet_reset();
++ fix_uart_base();
+ }
+
+ #define arch_decomp_wdog()
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-timer-accuracy.diff b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-timer-accuracy.diff
new file mode 100644
index 0000000000..8a6de2e7da
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ep93xx-timer-accuracy.diff
@@ -0,0 +1,59 @@
+
+The ep93xx has a weird timer tick base (983.04 kHz.) This experimental
+patch tries to increase time of day accuracy by keeping the number of
+ticks until the next jiffy in a fractional value representation.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mach-ep93xx/core.c 2007-09-04 02:26:38.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mach-ep93xx/core.c 2007-09-04 02:26:48.000000000 +0200
+@@ -94,19 +94,32 @@
+ * track of lost jiffies.
+ */
+ static unsigned int last_jiffy_time;
++static unsigned int next_jiffy_time;
++static unsigned int accumulator;
+
+-#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
++#define TIMER4_TICKS_PER_JIFFY (983040 / HZ)
++#define TIMER4_TICKS_MOD_JIFFY (983040 % HZ)
++
++static int after_eq(unsigned long a, unsigned long b)
++{
++ return ((signed long)(a - b)) >= 0;
++}
+
+ static int ep93xx_timer_interrupt(int irq, void *dev_id)
+ {
+ write_seqlock(&xtime_lock);
+
+ __raw_writel(1, EP93XX_TIMER1_CLEAR);
+- while ((signed long)
+- (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
+- >= TIMER4_TICKS_PER_JIFFY) {
+- last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
++ while (after_eq(__raw_readl(EP93XX_TIMER4_VALUE_LOW), next_jiffy_time)) {
+ timer_tick();
++
++ last_jiffy_time = next_jiffy_time;
++ next_jiffy_time += TIMER4_TICKS_PER_JIFFY;
++ accumulator += TIMER4_TICKS_MOD_JIFFY;
++ if (accumulator >= HZ) {
++ next_jiffy_time++;
++ accumulator -= HZ;
++ }
+ }
+
+ write_sequnlock(&xtime_lock);
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/timex.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/timex.h 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/timex.h 2007-09-04 02:26:48.000000000 +0200
+@@ -2,4 +2,4 @@
+ * linux/include/asm-arm/arch-ep93xx/timex.h
+ */
+
+-#define CLOCK_TICK_RATE 983040
++#define CLOCK_TICK_RATE (1000 * HZ)
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/series b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/series
new file mode 100644
index 0000000000..e5455efd3c
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/series
@@ -0,0 +1,12 @@
+ep93xx-gpio-interrupt-debounce.diff
+ep93xx-i2c-bus.diff
+ep93xx-i2c.diff
+ep93xx-leds.diff
+ep93xx-serial-uartbaud.diff
+ep93xx-serial-clocks.diff
+ep93xx-timer-accuracy.diff
+ep93xx-maverick-uniqid.patch
+ts72xx-machine-id-fix.patch
+ts72xx-nfbit-fix.patch
+ts72xx-watchdog.patch
+ts72xx-use-cpld-reset.patch
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-machine-id-fix.patch b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-machine-id-fix.patch
new file mode 100644
index 0000000000..47a07e64e1
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-machine-id-fix.patch
@@ -0,0 +1,17 @@
+
+Fix wrong machine ID passed from RedBoot
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.23-rc5/arch/arm/kernel/head.S
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/kernel/head.S 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/kernel/head.S 2007-09-04 02:26:57.000000000 +0200
+@@ -86,6 +86,7 @@
+ bl __lookup_processor_type @ r5=procinfo r9=cpuid
+ movs r10, r5 @ invalid processor (r5=0)?
+ beq __error_p @ yes, error 'p'
++ ldr r1, =0x000002a1 @ mach-type = TS-7250
+ bl __lookup_machine_type @ r5=machinfo
+ movs r8, r5 @ invalid machine (r5=0)?
+ beq __error_a @ yes, error 'a'
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-nfbit-fix.patch b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-nfbit-fix.patch
new file mode 100644
index 0000000000..bed3de37e9
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-nfbit-fix.patch
@@ -0,0 +1,18 @@
+
+Force the nF bit on. Usually this is set by the bootrom. If it is not set,
+then the CPU core will run from HCLK instead of FCLK, and performance will
+suffer. If you see BogoMIPS of about 1/4 of your CPU clock, try turning this
+on; your performance should double.
+
+Index: linux-2.6.23-rc5/arch/arm/mm/proc-arm920.S
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mm/proc-arm920.S 2007-09-04 02:25:36.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mm/proc-arm920.S 2007-09-04 02:27:02.000000000 +0200
+@@ -395,6 +395,7 @@
+ mrc p15, 0, r0, c1, c0 @ get control register v4
+ bic r0, r0, r5
+ orr r0, r0, r6
++ orr r0, r0, #0x40000000
+ mov pc, lr
+ .size __arm920_setup, . - __arm920_setup
+
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-use-cpld-reset.patch b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-use-cpld-reset.patch
new file mode 100644
index 0000000000..681622a9ae
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-use-cpld-reset.patch
@@ -0,0 +1,41 @@
+
+Use CPLD watchdog to reset the machine instead of buggy ep93xx one, which
+sometimes get stuck...
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/system.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/system.h 2007-09-04 02:29:35.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/system.h 2007-09-04 02:31:52.000000000 +0200
+@@ -3,6 +3,7 @@
+ */
+
+ #include <asm/hardware.h>
++#include <asm/mach-types.h>
+
+ static inline void arch_idle(void)
+ {
+@@ -15,11 +16,17 @@
+
+ local_irq_disable();
+
+- devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ if (machine_is_ts72xx()) {
++ __raw_writeb(0x5, TS72XX_WATCHDOG_FEED_PHYS_BASE);
++ __raw_writeb(0x1, TS72XX_WATCHDOG_CONTROL_PHYS_BASE);
++ } else {
++ devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ }
++
+
+ while (1)
+ ;
diff --git a/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-watchdog.patch b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-watchdog.patch
new file mode 100644
index 0000000000..b406d1db77
--- /dev/null
+++ b/packages/linux/linux-2.6.22+2.6.23-rc5/ts72xx/ts72xx-watchdog.patch
@@ -0,0 +1,430 @@
+
+TS-72xx watchdog driver
+
+Signed-off-by: Matthieu Crapet <mcrapet@gmail.com>
+
+Index: linux-2.6.23-rc5/arch/arm/mach-ep93xx/ts72xx.c
+===================================================================
+--- linux-2.6.23-rc5.orig/arch/arm/mach-ep93xx/ts72xx.c 2007-09-04 02:25:35.000000000 +0200
++++ linux-2.6.23-rc5/arch/arm/mach-ep93xx/ts72xx.c 2007-09-04 02:27:06.000000000 +0200
+@@ -183,6 +183,26 @@
+ .resource = ts72xx_eth_resource,
+ };
+
++static struct resource ts72xx_watchdog_resources[] = {
++ [0] = {
++ .start = TS72XX_WATCHDOG_CONTROL_PHYS_BASE,
++ .end = TS72XX_WATCHDOG_CONTROL_PHYS_BASE + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = TS72XX_WATCHDOG_FEED_PHYS_BASE,
++ .end = TS72XX_WATCHDOG_FEED_PHYS_BASE + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device ts72xx_watchdog_device = {
++ .name = "ts72xx_wdt",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(ts72xx_watchdog_resources),
++ .resource = ts72xx_watchdog_resources,
++};
++
+ static void __init ts72xx_init_machine(void)
+ {
+ ep93xx_init_devices();
+@@ -193,6 +213,7 @@
+ memcpy(ts72xx_eth_data.dev_addr,
+ (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
+ platform_device_register(&ts72xx_eth_device);
++ platform_device_register(&ts72xx_watchdog_device);
+ }
+
+ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
+Index: linux-2.6.23-rc5/drivers/char/watchdog/Kconfig
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/char/watchdog/Kconfig 2007-09-04 02:25:35.000000000 +0200
++++ linux-2.6.23-rc5/drivers/char/watchdog/Kconfig 2007-09-04 02:27:06.000000000 +0200
+@@ -247,6 +247,18 @@
+
+ # H8300 Architecture
+
++config TS72XX_WATCHDOG
++ tristate "TS-72xx Watchdog"
++ depends on WATCHDOG && ARCH_EP93XX && MACH_TS72XX
++ help
++ Say Y here if to include support for the CPLD watchdog
++ included on Technologic Systems SBC.
++
++ NOTE: timeout value is given in milliseconds, not in seconds.
++
++ To compile this driver as a module, choose M here: the
++ module will be called ts72xx_wdt.
++
+ # X86 (i386 + ia64 + x86_64) Architecture
+
+ config ACQUIRE_WDT
+Index: linux-2.6.23-rc5/drivers/char/watchdog/Makefile
+===================================================================
+--- linux-2.6.23-rc5.orig/drivers/char/watchdog/Makefile 2007-09-04 02:25:35.000000000 +0200
++++ linux-2.6.23-rc5/drivers/char/watchdog/Makefile 2007-09-04 02:27:06.000000000 +0200
+@@ -36,6 +36,7 @@
+ obj-$(CONFIG_SA1100_WATCHDOG) += sa1100_wdt.o
+ obj-$(CONFIG_MPCORE_WATCHDOG) += mpcore_wdt.o
+ obj-$(CONFIG_EP93XX_WATCHDOG) += ep93xx_wdt.o
++obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
+ obj-$(CONFIG_PNX4008_WATCHDOG) += pnx4008_wdt.o
+ obj-$(CONFIG_IOP_WATCHDOG) += iop_wdt.o
+ obj-$(CONFIG_DAVINCI_WATCHDOG) += davinci_wdt.o
+Index: linux-2.6.23-rc5/drivers/char/watchdog/ts72xx_wdt.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.23-rc5/drivers/char/watchdog/ts72xx_wdt.c 2007-09-04 02:27:06.000000000 +0200
+@@ -0,0 +1,332 @@
++/*
++ * TS-72xx Watchdog Driver for Technologic Systems boards.
++ *
++ * Based on ep93xx_wdt.c by Lehtiniemi <rayl@mail.com> &
++ * Alessandro Zummo <a.zummo@towertech.it>
++ * and ib700wdt.c by Charles Howes <chowes@vsol.net>
++ * and mpc83xx_wdt.c by Dave Updegraff <dave@cray.org> &
++ * Kumar Gala <galak@kernel.crashing.org>
++ *
++ * (c) Copyright 2006 Matthieu Crapet <mcrapet@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ *
++ * This driver only deals with native timeout provided by CPLD :
++ * 1/4s, 1/2s, 1s, 2s, 4s and 8s. No external timer is used.
++ * Notice that we must ping before modifying the control register.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/fs.h>
++#include <linux/miscdevice.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/watchdog.h>
++#include <asm/io.h>
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++
++#define WATCHDOG_VERSION "0.2"
++#define PFX "ts72xx_wdt: "
++
++#define WATCHDOG_TIMEOUT 8000 /* 8 seconds */
++#define WDT_IN_USE 0
++#define WDT_OK_TO_CLOSE 1
++
++static unsigned long ts72xx_wdt_status;
++static unsigned char ts72xx_wdt_cpld_value = 0x7;
++static int nowayout = WATCHDOG_NOWAYOUT;
++static int timeout = WATCHDOG_TIMEOUT;
++
++static int ts72xx_wdt_times[12] = {
++ 6000, 3000, 1500, 750, 275, 0,
++ 8000, 4000, 2000, 1000, 500, 250
++};
++
++static void __iomem *control_register;
++static void __iomem *feed_register;
++
++
++/*
++ * Kernel methods.
++ */
++
++static inline void ts72xx_wdt_ping(void)
++{
++ __raw_writew(0x05, feed_register);
++}
++
++static inline void ts72xx_wdt_enable(void)
++{
++ __raw_writew(0x05, feed_register);
++ __raw_writew(ts72xx_wdt_cpld_value, control_register);
++}
++
++static inline void ts72xx_wdt_disable(void)
++{
++ __raw_writew(0x05, feed_register);
++ __raw_writew(0, control_register);
++}
++
++static inline void ts72xx_parse_timeout(int value)
++{
++ unsigned char cpld_value = 0x7;
++ int i;
++
++ if ((value > 8000) || (value < 250)) {
++ timeout = WATCHDOG_TIMEOUT;
++ printk(KERN_INFO PFX "Timeout value out of range, set to %d\n", timeout);
++ } else {
++ for (i = 0; i < 6; i++) {
++ if (value >= ts72xx_wdt_times[i]) {
++ timeout = ts72xx_wdt_times[i+6];
++
++ if (value != timeout)
++ printk(KERN_INFO PFX "Timeout value rounded to %d\n", timeout);
++
++ if (i >= 3) /* cpld_value can't be 4 */
++ i++;
++
++ cpld_value = 7 - i;
++ break;
++ }
++ }
++ }
++
++ ts72xx_wdt_cpld_value = cpld_value;
++}
++
++static ssize_t ts72xx_wdt_write(struct file *file, const char __user *buf,
++ size_t count, loff_t *ppos)
++{
++ /* Can't seek (pwrite) on this device */
++ if (*ppos != file->f_pos)
++ return -ESPIPE;
++
++ if (count) {
++ if (!nowayout) {
++ size_t i;
++
++ clear_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++
++ for (i = 0; i != count; i++) {
++ char c;
++
++ if (get_user(c, buf + i))
++ return -EFAULT;
++
++ if (c == 'V')
++ set_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++ else
++ clear_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++ }
++ }
++ ts72xx_wdt_ping();
++ }
++
++ return count;
++}
++
++static int ts72xx_wdt_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ int new_margin;
++ int ret = -ENOIOCTLCMD;
++
++ static struct watchdog_info ident = {
++ .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
++ .firmware_version = 1,
++ .identity = "TS-72xx Watchdog",
++ };
++
++ switch (cmd) {
++ case WDIOC_GETSUPPORT:
++ ret = copy_to_user((struct watchdog_info __user *)arg, &ident,
++ sizeof(ident)) ? -EFAULT : 0;
++ break;
++
++ case WDIOC_GETSTATUS:
++ case WDIOC_GETBOOTSTATUS:
++ ret = put_user(0, (int __user *)arg);
++ break;
++
++ case WDIOC_KEEPALIVE:
++ ts72xx_wdt_ping();
++ ret = 0;
++ break;
++
++ case WDIOC_SETTIMEOUT:
++ if (get_user(new_margin, (int __user *)arg))
++ return -EFAULT;
++
++ ts72xx_parse_timeout(new_margin);
++ ts72xx_wdt_enable();
++ /* Fall */
++
++ case WDIOC_GETTIMEOUT:
++ ret = put_user(timeout, (int __user *)arg);
++ break;
++ }
++
++ return ret;
++}
++
++static int ts72xx_wdt_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(WDT_IN_USE, &ts72xx_wdt_status))
++ return -EBUSY;
++
++ if (nowayout) {
++ __module_get(THIS_MODULE);
++ }
++
++ ts72xx_wdt_enable();
++ ts72xx_wdt_ping();
++
++ return nonseekable_open(inode, file);
++}
++
++static int ts72xx_wdt_close(struct inode *inode, struct file *file)
++{
++ if (test_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status))
++ ts72xx_wdt_disable();
++ else
++ printk(KERN_CRIT PFX "Device file closed unexpectedly. "
++ "Will not stop the WDT!\n");
++
++ clear_bit(WDT_IN_USE, &ts72xx_wdt_status);
++
++ return 0;
++}
++
++/*
++ * Kernel Interfaces
++ */
++
++static struct file_operations ts72xx_wdt_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .write = ts72xx_wdt_write,
++ .ioctl = ts72xx_wdt_ioctl,
++ .open = ts72xx_wdt_open,
++ .release = ts72xx_wdt_close,
++};
++
++static struct miscdevice ts72xx_wdt_miscdev = {
++ .minor = WATCHDOG_MINOR,
++ .name = "watchdog",
++ .fops = &ts72xx_wdt_fops,
++};
++
++static void ts72xx_wdt_shutdown(struct platform_device *dev)
++{
++ ts72xx_wdt_disable();
++}
++
++static int __devinit ts72xx_wdt_probe(struct platform_device *dev)
++{
++ struct resource *r;
++ int ret;
++
++ if (!machine_is_ts72xx())
++ return -ENODEV;
++
++ r = platform_get_resource(dev, IORESOURCE_MEM, 0);
++
++ if (!r) {
++ ret = -ENODEV;
++ goto err_out;
++ }
++
++ control_register = ioremap(r->start, r->end - r->start + 1);
++
++ if (control_register == NULL) {
++ ret = -ENOMEM;
++ goto err_out;
++ }
++
++ r = platform_get_resource(dev, IORESOURCE_MEM, 1);
++
++ if (!r) {
++ ret = -ENODEV;
++ goto err_unmap1;
++ }
++
++ feed_register = ioremap(r->start, r->end - r->start + 1);
++
++ if (feed_register == NULL) {
++ ret = -ENOMEM;
++ goto err_unmap1;
++ }
++
++ ret = misc_register(&ts72xx_wdt_miscdev);
++ if (ret) {
++ printk(KERN_ERR PFX "cannot register miscdev on minor=%d "
++ "(err=%d), ep93xx_watchdog already loaded?!\n", WATCHDOG_MINOR, ret);
++ goto err_unmap2;
++ }
++
++ printk(KERN_INFO PFX "TS-72xx watchdog driver, v%s\n", WATCHDOG_VERSION);
++ ts72xx_parse_timeout(timeout);
++
++ return 0;
++
++err_unmap2:
++ iounmap(feed_register);
++err_unmap1:
++ iounmap(control_register);
++err_out:
++ return ret;
++}
++
++static int __devexit ts72xx_wdt_remove(struct platform_device *dev)
++{
++ misc_deregister(&ts72xx_wdt_miscdev);
++ iounmap(feed_register);
++ iounmap(control_register);
++
++ return 0;
++}
++
++static struct platform_driver ts72xx_wdt_driver = {
++ .probe = ts72xx_wdt_probe,
++ .remove = __devexit_p(ts72xx_wdt_remove),
++ .shutdown = ts72xx_wdt_shutdown,
++ .driver = {
++ .owner = THIS_MODULE,
++ .name = "ts72xx_wdt",
++ },
++};
++
++static int __init ts72xx_wdt_init(void)
++{
++ return platform_driver_register(&ts72xx_wdt_driver);
++}
++
++static void __exit ts72xx_wdt_exit(void)
++{
++ platform_driver_unregister(&ts72xx_wdt_driver);
++}
++
++module_init(ts72xx_wdt_init);
++module_exit(ts72xx_wdt_exit);
++
++#ifdef CONFIG_WATCHDOG_NOWAYOUT
++module_param(nowayout, int, 0);
++MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");
++#endif
++
++module_param(timeout, int, 0);
++MODULE_PARM_DESC(timeout,"Watchdog timeout in milliseconds (250..8000, default=" __MODULE_STRING(WATCHDOG_TIMEOUT) ")");
++
++MODULE_AUTHOR("Matthieu Crapet <mcrapet@gmail.com>");
++MODULE_DESCRIPTION("TS-72xx watchdog driver");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+Index: linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ts72xx.h
+===================================================================
+--- linux-2.6.23-rc5.orig/include/asm-arm/arch-ep93xx/ts72xx.h 2007-09-04 02:25:35.000000000 +0200
++++ linux-2.6.23-rc5/include/asm-arm/arch-ep93xx/ts72xx.h 2007-09-04 02:27:06.000000000 +0200
+@@ -69,6 +69,9 @@
+ #define TS72XX_RTC_DATA_SIZE 0x00001000
+
+
++#define TS72XX_WATCHDOG_CONTROL_PHYS_BASE 0x23800000
++#define TS72XX_WATCHDOG_FEED_PHYS_BASE 0x23c00000
++
+ #ifndef __ASSEMBLY__
+ #include <asm/io.h>
+
diff --git a/packages/linux/linux-2.6.22.6/.mtn2git_empty b/packages/linux/linux-2.6.22.6/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/.mtn2git_empty b/packages/linux/linux-2.6.22.6/ts72xx/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/.mtn2git_empty
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-gpio-interrupt-debounce.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-gpio-interrupt-debounce.diff
new file mode 100644
index 0000000000..27146c30f1
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-gpio-interrupt-debounce.diff
@@ -0,0 +1,87 @@
+
+Implement GPIO interrupt debouncing on ep93xx.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-ep93xx/core.c
++++ linux-2.6.22/arch/arm/mach-ep93xx/core.c
+@@ -154,6 +154,7 @@ struct sys_timer ep93xx_timer = {
+ *************************************************************************/
+ static unsigned char gpio_int_unmasked[3];
+ static unsigned char gpio_int_enabled[3];
++static unsigned char gpio_int_debounce[3];
+ static unsigned char gpio_int_type1[3];
+ static unsigned char gpio_int_type2[3];
+
+@@ -161,16 +162,19 @@ static void update_gpio_int_params(int a
+ {
+ if (abf == 0) {
+ __raw_writeb(0, EP93XX_GPIO_A_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[0], EP93XX_GPIO_A_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[0], EP93XX_GPIO_A_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[0], EP93XX_GPIO_A_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[0] & gpio_int_enabled[0], EP93XX_GPIO_A_INT_ENABLE);
+ } else if (abf == 1) {
+ __raw_writeb(0, EP93XX_GPIO_B_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[1], EP93XX_GPIO_B_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[1], EP93XX_GPIO_B_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[1], EP93XX_GPIO_B_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[1] & gpio_int_enabled[1], EP93XX_GPIO_B_INT_ENABLE);
+ } else if (abf == 2) {
+ __raw_writeb(0, EP93XX_GPIO_F_INT_ENABLE);
++ __raw_writeb(gpio_int_debounce[2], EP93XX_GPIO_F_INT_DEBOUNCE);
+ __raw_writeb(gpio_int_type2[2], EP93XX_GPIO_F_INT_TYPE2);
+ __raw_writeb(gpio_int_type1[2], EP93XX_GPIO_F_INT_TYPE1);
+ __raw_writeb(gpio_int_unmasked[2] & gpio_int_enabled[2], EP93XX_GPIO_F_INT_ENABLE);
+@@ -361,6 +365,13 @@ static int ep93xx_gpio_irq_type(unsigned
+ } else {
+ gpio_int_enabled[port] &= ~(1 << line);
+ }
++
++ if (type & IRQ_TYPE_DEBOUNCE) {
++ gpio_int_debounce[port] |= 1 << line;
++ } else {
++ gpio_int_debounce[port] &= ~(1 << line);
++ }
++
+ update_gpio_int_params(port);
+
+ return 0;
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+@@ -78,16 +78,19 @@
+ #define EP93XX_GPIO_F_INT_ACK EP93XX_GPIO_REG(0x54)
+ #define EP93XX_GPIO_F_INT_ENABLE EP93XX_GPIO_REG(0x58)
+ #define EP93XX_GPIO_F_INT_STATUS EP93XX_GPIO_REG(0x5c)
++#define EP93XX_GPIO_F_INT_DEBOUNCE EP93XX_GPIO_REG(0x64)
+ #define EP93XX_GPIO_A_INT_TYPE1 EP93XX_GPIO_REG(0x90)
+ #define EP93XX_GPIO_A_INT_TYPE2 EP93XX_GPIO_REG(0x94)
+ #define EP93XX_GPIO_A_INT_ACK EP93XX_GPIO_REG(0x98)
+ #define EP93XX_GPIO_A_INT_ENABLE EP93XX_GPIO_REG(0x9c)
+ #define EP93XX_GPIO_A_INT_STATUS EP93XX_GPIO_REG(0xa0)
++#define EP93XX_GPIO_A_INT_DEBOUNCE EP93XX_GPIO_REG(0xa8)
+ #define EP93XX_GPIO_B_INT_TYPE1 EP93XX_GPIO_REG(0xac)
+ #define EP93XX_GPIO_B_INT_TYPE2 EP93XX_GPIO_REG(0xb0)
+ #define EP93XX_GPIO_B_INT_ACK EP93XX_GPIO_REG(0xb4)
+ #define EP93XX_GPIO_B_INT_ENABLE EP93XX_GPIO_REG(0xb8)
+ #define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
++#define EP93XX_GPIO_B_INT_DEBOUNCE EP93XX_GPIO_REG(0xc4)
+
+ #define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
+
+Index: linux-2.6.22/include/linux/irq.h
+===================================================================
+--- linux-2.6.22.orig/include/linux/irq.h
++++ linux-2.6.22/include/linux/irq.h
+@@ -44,6 +44,7 @@ typedef void fastcall (*irq_flow_handler
+ #define IRQ_TYPE_LEVEL_LOW 0x00000008 /* Level low type */
+ #define IRQ_TYPE_SENSE_MASK 0x0000000f /* Mask of the above */
+ #define IRQ_TYPE_PROBE 0x00000010 /* Probing in progress */
++#define IRQ_TYPE_DEBOUNCE 0x00000020 /* Enable HW debounce */
+
+ /* Internal flags */
+ #define IRQ_INPROGRESS 0x00000100 /* IRQ handler active - do not enter! */
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c-bus.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c-bus.diff
new file mode 100644
index 0000000000..d3c66940de
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c-bus.diff
@@ -0,0 +1,220 @@
+
+I2C bus driver using ep93xx GPIOs.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/drivers/i2c/busses/Kconfig
+===================================================================
+--- linux-2.6.22.orig/drivers/i2c/busses/Kconfig 2007-08-30 00:42:45.000000000 +0200
++++ linux-2.6.22/drivers/i2c/busses/Kconfig 2007-08-30 00:42:52.000000000 +0200
+@@ -635,4 +635,16 @@
+ This driver can also be built as a module. If so, the module
+ will be called i2c-pnx.
+
++config I2C_EP93XX
++ tristate "Cirrus Logic EP93XX GPIO-based I2C interface"
++ depends on I2C && ARCH_EP93XX
++ select I2C_ALGOBIT
++ help
++ Say Y here if you have an Cirrus Logic EP93XX based
++ system and are using GPIO lines for an I2C bus.
++
++ This support is also available as a module. If so, the module
++ will be called i2c-ep93xx.
++
++
+ endmenu
+Index: linux-2.6.22/drivers/i2c/busses/Makefile
+===================================================================
+--- linux-2.6.22.orig/drivers/i2c/busses/Makefile 2007-08-30 00:42:45.000000000 +0200
++++ linux-2.6.22/drivers/i2c/busses/Makefile 2007-08-30 00:42:52.000000000 +0200
+@@ -52,6 +52,7 @@
+ obj-$(CONFIG_I2C_VOODOO3) += i2c-voodoo3.o
+ obj-$(CONFIG_SCx200_ACB) += scx200_acb.o
+ obj-$(CONFIG_SCx200_I2C) += scx200_i2c.o
++obj-$(CONFIG_I2C_EP93XX) += i2c-ep93xx.o
+
+ ifeq ($(CONFIG_I2C_DEBUG_BUS),y)
+ EXTRA_CFLAGS += -DDEBUG
+Index: linux-2.6.22/drivers/i2c/busses/i2c-ep93xx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.22/drivers/i2c/busses/i2c-ep93xx.c 2007-08-30 00:42:52.000000000 +0200
+@@ -0,0 +1,159 @@
++/*
++ * EP93XX I2C bus driver.
++ * Copyright (C) 2007 Lennert Buytenhek <buytenh@wantstofly.org>
++ *
++ * An I2C bus driver for the Cirrus Logic EP93xx SoC.
++ *
++ * Based on an earlier version by Alessandro Zummo.
++ */
++
++#include <linux/kernel.h>
++#include <linux/platform_device.h>
++#include <linux/module.h>
++#include <linux/i2c.h>
++#include <linux/i2c-algo-bit.h>
++#include <asm/hardware.h>
++#include <asm/arch/gpio.h>
++
++struct ep93xx_i2c_priv {
++ struct ep93xx_i2c_data *data;
++ struct i2c_adapter adapter;
++ struct i2c_algo_bit_data algo_data;
++ int sda;
++ int scl;
++};
++
++
++static void ep93xx_bit_setsda(void *cookie, int val)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (val) {
++ gpio_line_config(priv->data->sda_pin, GPIO_IN);
++ if (priv->scl && !priv->sda && priv->data->stop != NULL)
++ priv->data->stop(priv->data->cookie);
++ priv->sda = 1;
++ } else {
++ if (priv->scl && priv->sda && priv->data->start != NULL)
++ priv->data->start(priv->data->cookie);
++ gpio_line_config(priv->data->sda_pin, GPIO_OUT);
++ gpio_line_set(priv->data->sda_pin, 0);
++ priv->sda = 0;
++ }
++}
++
++static void ep93xx_bit_setscl(void *cookie, int val)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (val) {
++ gpio_line_config(priv->data->scl_pin, GPIO_IN);
++ priv->scl = 1;
++ } else {
++ gpio_line_config(priv->data->scl_pin, GPIO_OUT);
++ gpio_line_set(priv->data->scl_pin, 0);
++ priv->scl = 0;
++ }
++}
++
++static int ep93xx_bit_getsda(void *cookie)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (priv->sda == 0)
++ BUG();
++
++ return gpio_line_get(priv->data->sda_pin);
++}
++
++static int ep93xx_bit_getscl(void *cookie)
++{
++ struct ep93xx_i2c_priv *priv = cookie;
++
++ if (priv->scl == 0)
++ BUG();
++
++ return gpio_line_get(priv->data->scl_pin);
++}
++
++
++static int ep93xx_i2c_probe(struct platform_device *pdev)
++{
++ struct ep93xx_i2c_priv *priv;
++ int err;
++
++ priv = kzalloc(sizeof(struct ep93xx_i2c_priv), GFP_KERNEL);
++ if (priv == NULL)
++ return -ENOMEM;
++
++ priv->data = pdev->dev.platform_data;
++
++ strlcpy(priv->adapter.name, pdev->dev.driver->name, I2C_NAME_SIZE);
++ priv->adapter.algo_data = &priv->algo_data;
++ priv->adapter.class = I2C_CLASS_ALL;
++ priv->adapter.dev.parent = &pdev->dev;
++
++ priv->algo_data.data = priv;
++ priv->algo_data.setsda = ep93xx_bit_setsda;
++ priv->algo_data.setscl = ep93xx_bit_setscl;
++ priv->algo_data.getsda = ep93xx_bit_getsda;
++ priv->algo_data.getscl = ep93xx_bit_getscl;
++ priv->algo_data.udelay = 10;
++ priv->algo_data.timeout = 100;
++
++ priv->sda = 1;
++ gpio_line_config(priv->data->sda_pin, GPIO_IN);
++
++ priv->scl = 1;
++ gpio_line_config(priv->data->scl_pin, GPIO_IN);
++
++ err = i2c_bit_add_bus(&priv->adapter);
++ if (err) {
++ printk(KERN_ERR "ERROR: Could not install %s\n",
++ pdev->dev.bus_id);
++ kfree(priv);
++ return err;
++ }
++
++ platform_set_drvdata(pdev, priv);
++
++ return 0;
++}
++
++static int ep93xx_i2c_remove(struct platform_device *pdev)
++{
++ struct ep93xx_i2c_priv *priv;
++
++ priv = platform_get_drvdata(pdev);
++ i2c_del_adapter(&priv->adapter);
++ platform_set_drvdata(pdev, NULL);
++ kfree(priv);
++
++ return 0;
++}
++
++static struct platform_driver ep93xx_i2c_driver = {
++ .probe = ep93xx_i2c_probe,
++ .remove = ep93xx_i2c_remove,
++ .driver = {
++ .name = "ep93xx-i2c",
++ .owner = THIS_MODULE,
++ },
++};
++
++static int __init ep93xx_i2c_init(void)
++{
++ return platform_driver_register(&ep93xx_i2c_driver);
++}
++
++static void __exit ep93xx_i2c_exit(void)
++{
++ platform_driver_unregister(&ep93xx_i2c_driver);
++}
++
++module_init(ep93xx_i2c_init);
++module_exit(ep93xx_i2c_exit);
++
++MODULE_AUTHOR("Lennert Buytenhek <buytenh@wantstofly.org>");
++MODULE_DESCRIPTION("GPIO-based I2C adapter for EP93XX systems");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/platform.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/platform.h 2007-08-30 00:42:45.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/platform.h 2007-08-30 00:42:52.000000000 +0200
+@@ -16,5 +16,13 @@
+ unsigned char phy_id;
+ };
+
++struct ep93xx_i2c_data {
++ int sda_pin;
++ int scl_pin;
++ void *cookie;
++ void (*start)(void *);
++ void (*stop)(void *);
++};
++
+
+ #endif
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c.diff
new file mode 100644
index 0000000000..b68fb14e2e
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-i2c.diff
@@ -0,0 +1,110 @@
+
+Instantiate the ep93xx gpio i2c bus driver in the generic ep93xx
+code.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-ep93xx/core.c 2007-08-30 00:42:49.000000000 +0200
++++ linux-2.6.22/arch/arm/mach-ep93xx/core.c 2007-08-30 00:43:00.000000000 +0200
+@@ -509,6 +509,52 @@
+ };
+
+
++static DEFINE_MUTEX(eeclk_eedat_mutex);
++static int i2c_transaction_in_progress;
++
++static void ep93xx_i2c_start_condition(void *cookie)
++{
++ if (!i2c_transaction_in_progress) {
++ mutex_lock(&eeclk_eedat_mutex);
++ i2c_transaction_in_progress = 1;
++ }
++}
++
++static void ep93xx_i2c_stop_condition(void *cookie)
++{
++ if (i2c_transaction_in_progress) {
++ mutex_unlock(&eeclk_eedat_mutex);
++ i2c_transaction_in_progress = 0;
++ } else {
++ printk(KERN_WARNING "ep93xx: i2c stop without start??\n");
++ }
++}
++
++static struct ep93xx_i2c_data ep93xx_i2c_gpio_data = {
++ .sda_pin = EP93XX_GPIO_LINE_EEDAT,
++ .scl_pin = EP93XX_GPIO_LINE_EECLK,
++ .start = ep93xx_i2c_start_condition,
++ .stop = ep93xx_i2c_stop_condition,
++};
++
++static struct platform_device ep93xx_i2c_device = {
++ .name = "ep93xx-i2c",
++ .id = 0,
++ .dev.platform_data = &ep93xx_i2c_gpio_data,
++ .num_resources = 0,
++};
++
++void eeclk_eedat_claim(void)
++{
++ mutex_lock(&eeclk_eedat_mutex);
++}
++
++void eeclk_eedat_release(void)
++{
++ mutex_unlock(&eeclk_eedat_mutex);
++}
++
++
+ void __init ep93xx_init_devices(void)
+ {
+ unsigned int v;
+@@ -521,10 +567,20 @@
+ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+ __raw_writel(v, EP93XX_SYSCON_DEVICE_CONFIG);
+
++ /*
++ * When EECLK/EEDAT are in open drain mode (EEDRIVE=0b11),
++ * writing a 1 to their Data Register bits causes subsequent
++ * reads from the Data Direction Register to return 'input',
++ * which confuses gpio_line_config(). So, we use CMOS drive
++ * mode instead.
++ */
++ __raw_writel(0, EP93XX_GPIO_EEDRIVE);
++
+ amba_device_register(&uart1_device, &iomem_resource);
+ amba_device_register(&uart2_device, &iomem_resource);
+ amba_device_register(&uart3_device, &iomem_resource);
+
+ platform_device_register(&ep93xx_rtc_device);
+ platform_device_register(&ep93xx_ohci_device);
++ platform_device_register(&ep93xx_i2c_device);
+ }
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-08-30 00:42:49.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-08-30 00:43:00.000000000 +0200
+@@ -91,6 +91,7 @@
+ #define EP93XX_GPIO_B_INT_ENABLE EP93XX_GPIO_REG(0xb8)
+ #define EP93XX_GPIO_B_INT_STATUS EP93XX_GPIO_REG(0xbc)
+ #define EP93XX_GPIO_B_INT_DEBOUNCE EP93XX_GPIO_REG(0xc4)
++#define EP93XX_GPIO_EEDRIVE EP93XX_GPIO_REG(0xc8)
+
+ #define EP93XX_AAC_BASE (EP93XX_APB_VIRT_BASE + 0x00080000)
+
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/platform.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/platform.h 2007-08-30 00:42:52.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/platform.h 2007-08-30 00:43:00.000000000 +0200
+@@ -10,6 +10,9 @@
+ void ep93xx_init_devices(void);
+ extern struct sys_timer ep93xx_timer;
+
++void eeclk_eedat_claim(void);
++void eeclk_eedat_release(void);
++
+ struct ep93xx_eth_data
+ {
+ unsigned char dev_addr[6];
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-leds.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-leds.diff
new file mode 100644
index 0000000000..0d11311d10
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-leds.diff
@@ -0,0 +1,181 @@
+
+EP93xx leds driver
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.22/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-ep93xx/core.c
++++ linux-2.6.22/arch/arm/mach-ep93xx/core.c
+@@ -555,6 +555,12 @@ void eeclk_eedat_release(void)
+ }
+
+
++static struct platform_device ep93xx_led_device = {
++ .name = "ep93xx-led",
++ .id = -1,
++};
++
++
+ void __init ep93xx_init_devices(void)
+ {
+ unsigned int v;
+@@ -583,4 +589,5 @@ void __init ep93xx_init_devices(void)
+ platform_device_register(&ep93xx_rtc_device);
+ platform_device_register(&ep93xx_ohci_device);
+ platform_device_register(&ep93xx_i2c_device);
++ platform_device_register(&ep93xx_led_device);
+ }
+Index: linux-2.6.22/drivers/leds/Kconfig
+===================================================================
+--- linux-2.6.22.orig/drivers/leds/Kconfig
++++ linux-2.6.22/drivers/leds/Kconfig
+@@ -95,6 +95,12 @@ config LEDS_COBALT
+ help
+ This option enables support for the front LED on Cobalt Server
+
++config LEDS_EP93XX
++ tristate "LED Support for Cirrus Logic EP93xx"
++ depends on LEDS_CLASS && ARCH_EP93XX
++ help
++ This option enables support for the Cirrus Logic EP93xx based boards.
++
+ comment "LED Triggers"
+
+ config LEDS_TRIGGERS
+Index: linux-2.6.22/drivers/leds/Makefile
+===================================================================
+--- linux-2.6.22.orig/drivers/leds/Makefile
++++ linux-2.6.22/drivers/leds/Makefile
+@@ -16,6 +16,7 @@ obj-$(CONFIG_LEDS_NET48XX) += leds-net4
+ obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
+ obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
+ obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
++obj-$(CONFIG_LEDS_EP93XX) += leds-ep93xx.o
+
+ # LED Triggers
+ obj-$(CONFIG_LEDS_TRIGGER_TIMER) += ledtrig-timer.o
+Index: linux-2.6.22/drivers/leds/leds-ep93xx.c
+===================================================================
+--- /dev/null
++++ linux-2.6.22/drivers/leds/leds-ep93xx.c
+@@ -0,0 +1,119 @@
++/*
++ * LEDs driver for Cirrus Logic EP93xx
++ *
++ * Author: Petr Stetiar <ynezz@true.cz>
++ *
++ * Based on leds-corgi.c by Richard Purdie
++ *
++ * 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/leds.h>
++#include <asm/mach-types.h>
++#include <asm/arch/hardware.h>
++#include <asm/arch/gpio.h>
++
++static void ep93xx_green_led_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_HIGH);
++ else
++ gpio_line_set(EP93XX_GPIO_LINE_GRLED, EP93XX_GPIO_LOW);
++}
++
++static void ep93xx_red_led_set(struct led_classdev *led_cdev, enum led_brightness value)
++{
++ if (value)
++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_HIGH);
++ else
++ gpio_line_set(EP93XX_GPIO_LINE_RDLED, EP93XX_GPIO_LOW);
++}
++
++
++static struct led_classdev ep93xx_green_led = {
++ .name = "ep93xx:green",
++ .default_trigger = "none",
++ .brightness_set = ep93xx_green_led_set,
++};
++
++static struct led_classdev ep93xx_red_led = {
++ .name = "ep93xx:red",
++ .default_trigger = "heartbeat",
++ .brightness_set = ep93xx_red_led_set,
++};
++
++#ifdef CONFIG_PM
++static int ep93xx_led_suspend(struct platform_device *dev, pm_message_t state)
++{
++ led_classdev_suspend(&ep93xx_green_led);
++ led_classdev_suspend(&ep93xx_red_led);
++ return 0;
++}
++
++static int ep93xx_led_resume(struct platform_device *dev)
++{
++ led_classdev_resume(&ep93xx_red_led);
++ led_classdev_resume(&ep93xx_green_led);
++ return 0;
++}
++#endif
++
++static int ep93xx_led_probe(struct platform_device *pdev)
++{
++ int ret;
++
++ gpio_line_config(EP93XX_GPIO_LINE_GRLED, GPIO_OUT);
++ gpio_line_config(EP93XX_GPIO_LINE_RDLED, GPIO_OUT);
++
++ ret = led_classdev_register(&pdev->dev, &ep93xx_green_led);
++ if (ret < 0)
++ return ret;
++
++ ret = led_classdev_register(&pdev->dev, &ep93xx_red_led);
++ if (ret < 0)
++ led_classdev_unregister(&ep93xx_green_led);
++
++ return ret;
++}
++
++static int ep93xx_led_remove(struct platform_device *pdev)
++{
++ led_classdev_unregister(&ep93xx_green_led);
++ led_classdev_unregister(&ep93xx_red_led);
++ return 0;
++}
++
++static struct platform_driver ep93xx_led_driver = {
++ .probe = ep93xx_led_probe,
++ .remove = ep93xx_led_remove,
++#ifdef CONFIG_PM
++ .suspend = ep93xx_led_suspend,
++ .resume = ep93xx_led_resume,
++#endif
++ .driver = {
++ .name = "ep93xx-led",
++ },
++};
++
++static int __init ep93xx_led_init(void)
++{
++ return platform_driver_register(&ep93xx_led_driver);
++}
++
++static void __exit ep93xx_led_exit(void)
++{
++ platform_driver_unregister(&ep93xx_led_driver);
++}
++
++module_init(ep93xx_led_init);
++module_exit(ep93xx_led_exit);
++
++MODULE_AUTHOR("Petr Stetiar <ynezz@true.cz>");
++MODULE_DESCRIPTION("Cirrus Logic EP93xx LED driver");
++MODULE_LICENSE("GPL");
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-maverick-uniqid.patch b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-maverick-uniqid.patch
new file mode 100644
index 0000000000..fb6c8cfe18
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-maverick-uniqid.patch
@@ -0,0 +1,38 @@
+
+Adds support for SoC's unique ID (Maverick Key) in /proc/cpuinfo
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.22/arch/arm/kernel/setup.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/kernel/setup.c 2007-09-02 23:08:51.000000000 +0200
++++ linux-2.6.22/arch/arm/kernel/setup.c 2007-09-02 23:10:24.000000000 +0200
+@@ -959,8 +959,15 @@
+
+ seq_printf(m, "Hardware\t: %s\n", machine_name);
+ seq_printf(m, "Revision\t: %04x\n", system_rev);
++
++#if defined(CONFIG_ARCH_EP93XX)
++#include <asm/arch/ep93xx-regs.h>
++ seq_printf(m, "Serial\t\t: %016x\n",
++ *((unsigned int *)EP93XX_SECURITY_UNIQID));
++#else
+ seq_printf(m, "Serial\t\t: %08x%08x\n",
+ system_serial_high, system_serial_low);
++#endif
+
+ return 0;
+ }
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-02 23:06:45.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/ep93xx-regs.h 2007-09-02 23:08:34.000000000 +0200
+@@ -70,6 +70,8 @@
+ #define EP93XX_I2S_BASE (EP93XX_APB_VIRT_BASE + 0x00020000)
+
+ #define EP93XX_SECURITY_BASE (EP93XX_APB_VIRT_BASE + 0x00030000)
++#define EP93XX_SECURITY_REG(x) (EP93XX_SECURITY_BASE + (x))
++#define EP93XX_SECURITY_UNIQID EP93XX_SECURITY_REG(0x2440)
+
+ #define EP93XX_GPIO_BASE (EP93XX_APB_VIRT_BASE + 0x00040000)
+ #define EP93XX_GPIO_REG(x) (EP93XX_GPIO_BASE + (x))
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-clocks.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-clocks.diff
new file mode 100644
index 0000000000..9eb2d9de98
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-clocks.diff
@@ -0,0 +1,42 @@
+
+Hackishly enable all UART clocks before uncompressing the kernel,
+so that using ttyAM1 or ttyAM2 as console can work.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/uncompress.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/uncompress.h
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/uncompress.h
+@@ -78,6 +78,23 @@ static void ethernet_reset(void)
+
+
+ /*
++ * We don't have clock management for the UARTs (amba-pl010)
++ * yet, so hackily enable all UART clocks here for now.
++ */
++#define PHYS_SYSCON_DEVICE_CONFIG 0x80930080
++#define PHYS_SYSCON_SWLOCK 0x809300c0
++
++static void enable_all_uart_clocks(void)
++{
++ unsigned int v;
++
++ v = __raw_readl(PHYS_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, PHYS_SYSCON_SWLOCK);
++ __raw_writel(v | 0x01140000, PHYS_SYSCON_DEVICE_CONFIG);
++}
++
++
++/*
+ * Some bootloaders don't turn on the UARTBAUD bit, which means that
+ * the UARTs will be running off a divided 7.3728 MHz clock instead of
+ * the 14.7456 MHz peripheral clock when linux boots.
+@@ -126,6 +143,7 @@ static void fix_uart_base(void)
+ static void arch_decomp_setup(void)
+ {
+ ethernet_reset();
++ enable_all_uart_clocks();
+ fix_uart_base();
+ }
+
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-uartbaud.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-uartbaud.diff
new file mode 100644
index 0000000000..7183ab626e
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-serial-uartbaud.diff
@@ -0,0 +1,66 @@
+
+Force UARTBAUD on before uncompressing.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/uncompress.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/uncompress.h
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/uncompress.h
+@@ -77,9 +77,56 @@ static void ethernet_reset(void)
+ }
+
+
++/*
++ * Some bootloaders don't turn on the UARTBAUD bit, which means that
++ * the UARTs will be running off a divided 7.3728 MHz clock instead of
++ * the 14.7456 MHz peripheral clock when linux boots.
++ *
++ * We detect that condition here and fix it by turning on UARTBAUD, and
++ * then reprogramming the divisors on all enabled UARTs to twice what
++ * they were before we turned UARTBAUD on, to preserve the programmed
++ * baud rate.
++ */
++#define PHYS_SYSCON_CLOCK_CONTROL 0x80930004
++#define SYSCON_CLOCK_UARTBAUD 0x20000000
++#define PHYS_UART1_BASE 0x808c0000
++#define PHYS_UART2_BASE 0x808d0000
++#define PHYS_UART3_BASE 0x808e0000
++
++static void uart_divisor_times_two(unsigned int base)
++{
++ u16 divisor;
++
++ divisor = __raw_readb(base + 0x0c) << 8;
++ divisor |= __raw_readb(base + 0x10);
++ if (divisor) {
++ divisor = (2 * (divisor + 1)) - 1;
++ __raw_writeb(divisor >> 8, base + 0x0c);
++ __raw_writeb(divisor & 0xff, base + 0x10);
++ __raw_writeb(__raw_readb(base + 0x08), base + 0x08);
++ }
++}
++
++static void fix_uart_base(void)
++{
++ unsigned int v;
++
++ v = __raw_readl(PHYS_SYSCON_CLOCK_CONTROL);
++ if ((v & SYSCON_CLOCK_UARTBAUD) == 0) {
++ v |= SYSCON_CLOCK_UARTBAUD;
++ __raw_writel(v, PHYS_SYSCON_CLOCK_CONTROL);
++
++ uart_divisor_times_two(PHYS_UART1_BASE);
++ uart_divisor_times_two(PHYS_UART2_BASE);
++ uart_divisor_times_two(PHYS_UART3_BASE);
++ }
++}
++
++
+ static void arch_decomp_setup(void)
+ {
+ ethernet_reset();
++ fix_uart_base();
+ }
+
+ #define arch_decomp_wdog()
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff
new file mode 100644
index 0000000000..8254153b69
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ep93xx-timer-accuracy.diff
@@ -0,0 +1,59 @@
+
+The ep93xx has a weird timer tick base (983.04 kHz.) This experimental
+patch tries to increase time of day accuracy by keeping the number of
+ticks until the next jiffy in a fractional value representation.
+
+Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org>
+
+Index: linux-2.6.22/arch/arm/mach-ep93xx/core.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-ep93xx/core.c
++++ linux-2.6.22/arch/arm/mach-ep93xx/core.c
+@@ -94,19 +94,32 @@ void __init ep93xx_map_io(void)
+ * track of lost jiffies.
+ */
+ static unsigned int last_jiffy_time;
++static unsigned int next_jiffy_time;
++static unsigned int accumulator;
+
+-#define TIMER4_TICKS_PER_JIFFY ((CLOCK_TICK_RATE + (HZ/2)) / HZ)
++#define TIMER4_TICKS_PER_JIFFY (983040 / HZ)
++#define TIMER4_TICKS_MOD_JIFFY (983040 % HZ)
++
++static int after_eq(unsigned long a, unsigned long b)
++{
++ return ((signed long)(a - b)) >= 0;
++}
+
+ static int ep93xx_timer_interrupt(int irq, void *dev_id)
+ {
+ write_seqlock(&xtime_lock);
+
+ __raw_writel(1, EP93XX_TIMER1_CLEAR);
+- while ((signed long)
+- (__raw_readl(EP93XX_TIMER4_VALUE_LOW) - last_jiffy_time)
+- >= TIMER4_TICKS_PER_JIFFY) {
+- last_jiffy_time += TIMER4_TICKS_PER_JIFFY;
++ while (after_eq(__raw_readl(EP93XX_TIMER4_VALUE_LOW), next_jiffy_time)) {
+ timer_tick();
++
++ last_jiffy_time = next_jiffy_time;
++ next_jiffy_time += TIMER4_TICKS_PER_JIFFY;
++ accumulator += TIMER4_TICKS_MOD_JIFFY;
++ if (accumulator >= HZ) {
++ next_jiffy_time++;
++ accumulator -= HZ;
++ }
+ }
+
+ write_sequnlock(&xtime_lock);
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/timex.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/timex.h
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/timex.h
+@@ -2,4 +2,4 @@
+ * linux/include/asm-arm/arch-ep93xx/timex.h
+ */
+
+-#define CLOCK_TICK_RATE 983040
++#define CLOCK_TICK_RATE (1000 * HZ)
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/series b/packages/linux/linux-2.6.22.6/ts72xx/series
new file mode 100644
index 0000000000..e5455efd3c
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/series
@@ -0,0 +1,12 @@
+ep93xx-gpio-interrupt-debounce.diff
+ep93xx-i2c-bus.diff
+ep93xx-i2c.diff
+ep93xx-leds.diff
+ep93xx-serial-uartbaud.diff
+ep93xx-serial-clocks.diff
+ep93xx-timer-accuracy.diff
+ep93xx-maverick-uniqid.patch
+ts72xx-machine-id-fix.patch
+ts72xx-nfbit-fix.patch
+ts72xx-watchdog.patch
+ts72xx-use-cpld-reset.patch
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-machine-id-fix.patch b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-machine-id-fix.patch
new file mode 100644
index 0000000000..64c38398db
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-machine-id-fix.patch
@@ -0,0 +1,17 @@
+
+Fix wrong machine ID passed from RedBoot
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.22/arch/arm/kernel/head.S
+===================================================================
+--- linux-2.6.22.orig/arch/arm/kernel/head.S 2007-08-30 00:42:45.000000000 +0200
++++ linux-2.6.22/arch/arm/kernel/head.S 2007-08-30 00:43:13.000000000 +0200
+@@ -82,6 +82,7 @@
+ bl __lookup_processor_type @ r5=procinfo r9=cpuid
+ movs r10, r5 @ invalid processor (r5=0)?
+ beq __error_p @ yes, error 'p'
++ ldr r1, =0x000002a1 @ mach-type = TS-7250
+ bl __lookup_machine_type @ r5=machinfo
+ movs r8, r5 @ invalid machine (r5=0)?
+ beq __error_a @ yes, error 'a'
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-nfbit-fix.patch b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-nfbit-fix.patch
new file mode 100644
index 0000000000..eab73154a8
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-nfbit-fix.patch
@@ -0,0 +1,15 @@
+
+Force the nF bit on. Usually this is set by the bootrom. If it is not set,
+then the CPU core will run from HCLK instead of FCLK, and performance will
+suffer. If you see BogoMIPS of about 1/4 of your CPU clock, try turning this
+on; your performance should double.
+
+--- linux-2.6.21.4/arch/arm/mm/proc-arm920.S 2007-06-07 23:27:31.000000000 +0200
++++ linux-2.6.21.4-arm/arch/arm/mm/proc-arm920.S 2007-06-08 22:59:48.000000000 +0200
+@@ -395,6 +395,7 @@
+ mrc p15, 0, r0, c1, c0 @ get control register v4
+ bic r0, r0, r5
+ orr r0, r0, r6
++ orr r0, r0, #0x40000000
+ mov pc, lr
+ .size __arm920_setup, . - __arm920_setup
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-use-cpld-reset.patch b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-use-cpld-reset.patch
new file mode 100644
index 0000000000..9744a67653
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-use-cpld-reset.patch
@@ -0,0 +1,41 @@
+
+Use CPLD watchdog to reset the machine instead of buggy ep93xx one, which
+sometimes get stuck...
+
+Signed-off-by: Petr Stetiar <ynezz@true.cz>
+
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/system.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/system.h 2007-08-30 00:53:47.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/system.h 2007-08-30 00:54:28.000000000 +0200
+@@ -3,6 +3,7 @@
+ */
+
+ #include <asm/hardware.h>
++#include <asm/mach-types.h>
+
+ static inline void arch_idle(void)
+ {
+@@ -15,11 +16,17 @@
+
+ local_irq_disable();
+
+- devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
+- __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
+- __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ if (machine_is_ts72xx()) {
++ __raw_writeb(0x5, TS72XX_WATCHDOG_FEED_PHYS_BASE);
++ __raw_writeb(0x1, TS72XX_WATCHDOG_CONTROL_PHYS_BASE);
++ } else {
++ devicecfg = __raw_readl(EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg | 0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ __raw_writel(0xaa, EP93XX_SYSCON_SWLOCK);
++ __raw_writel(devicecfg & ~0x80000000, EP93XX_SYSCON_DEVICE_CONFIG);
++ }
++
+
+ while (1)
+ ;
diff --git a/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-watchdog.patch b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-watchdog.patch
new file mode 100644
index 0000000000..aa2cb834f9
--- /dev/null
+++ b/packages/linux/linux-2.6.22.6/ts72xx/ts72xx-watchdog.patch
@@ -0,0 +1,430 @@
+
+TS-72xx watchdog driver
+
+Signed-off-by: Matthieu Crapet <mcrapet@gmail.com>
+
+Index: linux-2.6.22/arch/arm/mach-ep93xx/ts72xx.c
+===================================================================
+--- linux-2.6.22.orig/arch/arm/mach-ep93xx/ts72xx.c 2007-08-30 01:33:00.000000000 +0200
++++ linux-2.6.22/arch/arm/mach-ep93xx/ts72xx.c 2007-08-30 01:33:10.000000000 +0200
+@@ -183,6 +183,26 @@
+ .resource = ts72xx_eth_resource,
+ };
+
++static struct resource ts72xx_watchdog_resources[] = {
++ [0] = {
++ .start = TS72XX_WATCHDOG_CONTROL_PHYS_BASE,
++ .end = TS72XX_WATCHDOG_CONTROL_PHYS_BASE + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ },
++ [1] = {
++ .start = TS72XX_WATCHDOG_FEED_PHYS_BASE,
++ .end = TS72XX_WATCHDOG_FEED_PHYS_BASE + 0x0fff,
++ .flags = IORESOURCE_MEM,
++ },
++};
++
++static struct platform_device ts72xx_watchdog_device = {
++ .name = "ts72xx_wdt",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(ts72xx_watchdog_resources),
++ .resource = ts72xx_watchdog_resources,
++};
++
+ static void __init ts72xx_init_machine(void)
+ {
+ ep93xx_init_devices();
+@@ -193,6 +213,7 @@
+ memcpy(ts72xx_eth_data.dev_addr,
+ (void *)(EP93XX_ETHERNET_BASE + 0x50), 6);
+ platform_device_register(&ts72xx_eth_device);
++ platform_device_register(&ts72xx_watchdog_device);
+ }
+
+ MACHINE_START(TS72XX, "Technologic Systems TS-72xx SBC")
+Index: linux-2.6.22/drivers/char/watchdog/Kconfig
+===================================================================
+--- linux-2.6.22.orig/drivers/char/watchdog/Kconfig 2007-08-30 01:33:00.000000000 +0200
++++ linux-2.6.22/drivers/char/watchdog/Kconfig 2007-08-30 01:33:10.000000000 +0200
+@@ -187,6 +187,18 @@
+
+ Say N if you are unsure.
+
++config TS72XX_WATCHDOG
++ tristate "TS-72xx Watchdog"
++ depends on WATCHDOG && ARCH_EP93XX && MACH_TS72XX
++ help
++ Say Y here if to include support for the CPLD watchdog
++ included on Technologic Systems SBC.
++
++ NOTE: timeout value is given in milliseconds, not in seconds.
++
++ To compile this driver as a module, choose M here: the
++ module will be called ts72xx_wdt.
++
+ # X86 (i386 + ia64 + x86_64) Architecture
+
+ config ACQUIRE_WDT
+Index: linux-2.6.22/drivers/char/watchdog/Makefile
+===================================================================
+--- linux-2.6.22.orig/drivers/char/watchdog/Makefile 2007-08-30 01:33:00.000000000 +0200
++++ linux-2.6.22/drivers/char/watchdog/Makefile 2007-08-30 01:33:10.000000000 +0200
+@@ -34,6 +34,7 @@
+ obj-$(CONFIG_SA1100_WATCHDOG) += sa1100_wdt.o
+ obj-$(CONFIG_MPCORE_WATCHDOG) += mpcore_wdt.o
+ obj-$(CONFIG_EP93XX_WATCHDOG) += ep93xx_wdt.o
++obj-$(CONFIG_TS72XX_WATCHDOG) += ts72xx_wdt.o
+ obj-$(CONFIG_PNX4008_WATCHDOG) += pnx4008_wdt.o
+
+ # X86 (i386 + ia64 + x86_64) Architecture
+Index: linux-2.6.22/drivers/char/watchdog/ts72xx_wdt.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.22/drivers/char/watchdog/ts72xx_wdt.c 2007-08-30 01:33:10.000000000 +0200
+@@ -0,0 +1,332 @@
++/*
++ * TS-72xx Watchdog Driver for Technologic Systems boards.
++ *
++ * Based on ep93xx_wdt.c by Lehtiniemi <rayl@mail.com> &
++ * Alessandro Zummo <a.zummo@towertech.it>
++ * and ib700wdt.c by Charles Howes <chowes@vsol.net>
++ * and mpc83xx_wdt.c by Dave Updegraff <dave@cray.org> &
++ * Kumar Gala <galak@kernel.crashing.org>
++ *
++ * (c) Copyright 2006 Matthieu Crapet <mcrapet@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version
++ * 2 of the License, or (at your option) any later version.
++ *
++ * This driver only deals with native timeout provided by CPLD :
++ * 1/4s, 1/2s, 1s, 2s, 4s and 8s. No external timer is used.
++ * Notice that we must ping before modifying the control register.
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/types.h>
++#include <linux/kernel.h>
++#include <linux/fs.h>
++#include <linux/miscdevice.h>
++#include <linux/platform_device.h>
++#include <linux/init.h>
++#include <linux/watchdog.h>
++#include <asm/io.h>
++#include <asm/uaccess.h>
++#include <asm/system.h>
++#include <asm/mach-types.h>
++
++#define WATCHDOG_VERSION "0.2"
++#define PFX "ts72xx_wdt: "
++
++#define WATCHDOG_TIMEOUT 8000 /* 8 seconds */
++#define WDT_IN_USE 0
++#define WDT_OK_TO_CLOSE 1
++
++static unsigned long ts72xx_wdt_status;
++static unsigned char ts72xx_wdt_cpld_value = 0x7;
++static int nowayout = WATCHDOG_NOWAYOUT;
++static int timeout = WATCHDOG_TIMEOUT;
++
++static int ts72xx_wdt_times[12] = {
++ 6000, 3000, 1500, 750, 275, 0,
++ 8000, 4000, 2000, 1000, 500, 250
++};
++
++static void __iomem *control_register;
++static void __iomem *feed_register;
++
++
++/*
++ * Kernel methods.
++ */
++
++static inline void ts72xx_wdt_ping(void)
++{
++ __raw_writew(0x05, feed_register);
++}
++
++static inline void ts72xx_wdt_enable(void)
++{
++ __raw_writew(0x05, feed_register);
++ __raw_writew(ts72xx_wdt_cpld_value, control_register);
++}
++
++static inline void ts72xx_wdt_disable(void)
++{
++ __raw_writew(0x05, feed_register);
++ __raw_writew(0, control_register);
++}
++
++static inline void ts72xx_parse_timeout(int value)
++{
++ unsigned char cpld_value = 0x7;
++ int i;
++
++ if ((value > 8000) || (value < 250)) {
++ timeout = WATCHDOG_TIMEOUT;
++ printk(KERN_INFO PFX "Timeout value out of range, set to %d\n", timeout);
++ } else {
++ for (i = 0; i < 6; i++) {
++ if (value >= ts72xx_wdt_times[i]) {
++ timeout = ts72xx_wdt_times[i+6];
++
++ if (value != timeout)
++ printk(KERN_INFO PFX "Timeout value rounded to %d\n", timeout);
++
++ if (i >= 3) /* cpld_value can't be 4 */
++ i++;
++
++ cpld_value = 7 - i;
++ break;
++ }
++ }
++ }
++
++ ts72xx_wdt_cpld_value = cpld_value;
++}
++
++static ssize_t ts72xx_wdt_write(struct file *file, const char __user *buf,
++ size_t count, loff_t *ppos)
++{
++ /* Can't seek (pwrite) on this device */
++ if (*ppos != file->f_pos)
++ return -ESPIPE;
++
++ if (count) {
++ if (!nowayout) {
++ size_t i;
++
++ clear_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++
++ for (i = 0; i != count; i++) {
++ char c;
++
++ if (get_user(c, buf + i))
++ return -EFAULT;
++
++ if (c == 'V')
++ set_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++ else
++ clear_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status);
++ }
++ }
++ ts72xx_wdt_ping();
++ }
++
++ return count;
++}
++
++static int ts72xx_wdt_ioctl(struct inode *inode, struct file *file,
++ unsigned int cmd, unsigned long arg)
++{
++ int new_margin;
++ int ret = -ENOIOCTLCMD;
++
++ static struct watchdog_info ident = {
++ .options = WDIOF_SETTIMEOUT | WDIOF_KEEPALIVEPING | WDIOF_MAGICCLOSE,
++ .firmware_version = 1,
++ .identity = "TS-72xx Watchdog",
++ };
++
++ switch (cmd) {
++ case WDIOC_GETSUPPORT:
++ ret = copy_to_user((struct watchdog_info __user *)arg, &ident,
++ sizeof(ident)) ? -EFAULT : 0;
++ break;
++
++ case WDIOC_GETSTATUS:
++ case WDIOC_GETBOOTSTATUS:
++ ret = put_user(0, (int __user *)arg);
++ break;
++
++ case WDIOC_KEEPALIVE:
++ ts72xx_wdt_ping();
++ ret = 0;
++ break;
++
++ case WDIOC_SETTIMEOUT:
++ if (get_user(new_margin, (int __user *)arg))
++ return -EFAULT;
++
++ ts72xx_parse_timeout(new_margin);
++ ts72xx_wdt_enable();
++ /* Fall */
++
++ case WDIOC_GETTIMEOUT:
++ ret = put_user(timeout, (int __user *)arg);
++ break;
++ }
++
++ return ret;
++}
++
++static int ts72xx_wdt_open(struct inode *inode, struct file *file)
++{
++ if (test_and_set_bit(WDT_IN_USE, &ts72xx_wdt_status))
++ return -EBUSY;
++
++ if (nowayout) {
++ __module_get(THIS_MODULE);
++ }
++
++ ts72xx_wdt_enable();
++ ts72xx_wdt_ping();
++
++ return nonseekable_open(inode, file);
++}
++
++static int ts72xx_wdt_close(struct inode *inode, struct file *file)
++{
++ if (test_bit(WDT_OK_TO_CLOSE, &ts72xx_wdt_status))
++ ts72xx_wdt_disable();
++ else
++ printk(KERN_CRIT PFX "Device file closed unexpectedly. "
++ "Will not stop the WDT!\n");
++
++ clear_bit(WDT_IN_USE, &ts72xx_wdt_status);
++
++ return 0;
++}
++
++/*
++ * Kernel Interfaces
++ */
++
++static struct file_operations ts72xx_wdt_fops = {
++ .owner = THIS_MODULE,
++ .llseek = no_llseek,
++ .write = ts72xx_wdt_write,
++ .ioctl = ts72xx_wdt_ioctl,
++ .open = ts72xx_wdt_open,
++ .release = ts72xx_wdt_close,
++};
++
++static struct miscdevice ts72xx_wdt_miscdev = {
++ .minor = WATCHDOG_MINOR,
++ .name = "watchdog",
++ .fops = &ts72xx_wdt_fops,
++};
++
++static void ts72xx_wdt_shutdown(struct platform_device *dev)
++{
++ ts72xx_wdt_disable();
++}
++
++static int __devinit ts72xx_wdt_probe(struct platform_device *dev)
++{
++ struct resource *r;
++ int ret;
++
++ if (!machine_is_ts72xx())
++ return -ENODEV;
++
++ r = platform_get_resource(dev, IORESOURCE_MEM, 0);
++
++ if (!r) {
++ ret = -ENODEV;
++ goto err_out;
++ }
++
++ control_register = ioremap(r->start, r->end - r->start + 1);
++
++ if (control_register == NULL) {
++ ret = -ENOMEM;
++ goto err_out;
++ }
++
++ r = platform_get_resource(dev, IORESOURCE_MEM, 1);
++
++ if (!r) {
++ ret = -ENODEV;
++ goto err_unmap1;
++ }
++
++ feed_register = ioremap(r->start, r->end - r->start + 1);
++
++ if (feed_register == NULL) {
++ ret = -ENOMEM;
++ goto err_unmap1;
++ }
++
++ ret = misc_register(&ts72xx_wdt_miscdev);
++ if (ret) {
++ printk(KERN_ERR PFX "cannot register miscdev on minor=%d "
++ "(err=%d), ep93xx_watchdog already loaded?!\n", WATCHDOG_MINOR, ret);
++ goto err_unmap2;
++ }
++
++ printk(KERN_INFO PFX "TS-72xx watchdog driver, v%s\n", WATCHDOG_VERSION);
++ ts72xx_parse_timeout(timeout);
++
++ return 0;
++
++err_unmap2:
++ iounmap(feed_register);
++err_unmap1:
++ iounmap(control_register);
++err_out:
++ return ret;
++}
++
++static int __devexit ts72xx_wdt_remove(struct platform_device *dev)
++{
++ misc_deregister(&ts72xx_wdt_miscdev);
++ iounmap(feed_register);
++ iounmap(control_register);
++
++ return 0;
++}
++
++static struct platform_driver ts72xx_wdt_driver = {
++ .probe = ts72xx_wdt_probe,
++ .remove = __devexit_p(ts72xx_wdt_remove),
++ .shutdown = ts72xx_wdt_shutdown,
++ .driver = {
++ .owner = THIS_MODULE,
++ .name = "ts72xx_wdt",
++ },
++};
++
++static int __init ts72xx_wdt_init(void)
++{
++ return platform_driver_register(&ts72xx_wdt_driver);
++}
++
++static void __exit ts72xx_wdt_exit(void)
++{
++ platform_driver_unregister(&ts72xx_wdt_driver);
++}
++
++module_init(ts72xx_wdt_init);
++module_exit(ts72xx_wdt_exit);
++
++#ifdef CONFIG_WATCHDOG_NOWAYOUT
++module_param(nowayout, int, 0);
++MODULE_PARM_DESC(nowayout, "Watchdog cannot be stopped once started (default=CONFIG_WATCHDOG_NOWAYOUT)");
++#endif
++
++module_param(timeout, int, 0);
++MODULE_PARM_DESC(timeout,"Watchdog timeout in milliseconds (250..8000, default=" __MODULE_STRING(WATCHDOG_TIMEOUT) ")");
++
++MODULE_AUTHOR("Matthieu Crapet <mcrapet@gmail.com>");
++MODULE_DESCRIPTION("TS-72xx watchdog driver");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
+Index: linux-2.6.22/include/asm-arm/arch-ep93xx/ts72xx.h
+===================================================================
+--- linux-2.6.22.orig/include/asm-arm/arch-ep93xx/ts72xx.h 2007-08-30 01:33:25.000000000 +0200
++++ linux-2.6.22/include/asm-arm/arch-ep93xx/ts72xx.h 2007-08-30 01:34:14.000000000 +0200
+@@ -68,6 +68,9 @@
+ #define TS72XX_RTC_DATA_PHYS_BASE 0x11700000
+ #define TS72XX_RTC_DATA_SIZE 0x00001000
+
++#define TS72XX_WATCHDOG_CONTROL_PHYS_BASE 0x23800000
++#define TS72XX_WATCHDOG_FEED_PHYS_BASE 0x23c00000
++
+ #ifndef __ASSEMBLY__
+ #include <asm/io.h>
+
diff --git a/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/a1200/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200 b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
index 36021906b7..ea7475ced2 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a1200
+++ b/packages/linux/linux-ezx-2.6.21/a1200/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.21.4
-# Wed Jun 13 17:26:12 2007
+# Sun Sep 9 16:54:53 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -151,10 +150,13 @@ CONFIG_PXA_EZX=y
# CONFIG_PXA_EZX_E2 is not set
CONFIG_PXA_EZX_A1200=y
# CONFIG_PXA_EZX_E6 is not set
-# CONFIG_EZX_BP is not set
+CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_TF=y
-# CONFIG_EZX_EMU is not set
+CONFIG_EZX_EOC=y
+CONFIG_EZX_EMU=y
+CONFIG_EZX_EMU_USB=y
+# CONFIG_EZX_EMU_UART is not set
+# CONFIG_EZX_EMU_NOTHING is not set
CONFIG_PXA27x=y
CONFIG_PXA_SSP=y
@@ -195,7 +197,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -212,11 +214,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -225,6 +227,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -254,6 +258,10 @@ CONFIG_NET=y
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_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -263,15 +271,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# 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 is not set
+CONFIG_INET_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -280,11 +288,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+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 is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=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_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=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_HELPER=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_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=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_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+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_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=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_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=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_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=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 (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -316,6 +468,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -323,8 +476,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 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_HCIUART=m
+CONFIG_BT_HCIUART_H4=y
+# CONFIG_BT_HCIUART_BCSP is not set
+# CONFIG_BT_HCIBCM203X is not set
+# CONFIG_BT_HCIBPA10X is not set
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIVHCI is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -346,7 +526,101 @@ CONFIG_CONNECTOR=m
#
# Memory Technology Devices (MTD)
#
-# CONFIG_MTD is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+# CONFIG_MTD_CONCAT is not set
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# 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
+
+#
+# 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=y
+CONFIG_MTD_CFI_NOSWAP=y
+# CONFIG_MTD_CFI_BE_BYTE_SWAP is not set
+# CONFIG_MTD_CFI_LE_BYTE_SWAP is not set
+CONFIG_MTD_CFI_GEOMETRY=y
+# CONFIG_MTD_MAP_BANK_WIDTH_1 is not set
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+# CONFIG_MTD_MAP_BANK_WIDTH_4 is not set
+# 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 is not set
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_OTP is not set
+CONFIG_MTD_CFI_INTELEXT=y
+# CONFIG_MTD_CFI_AMDSTD is not set
+# 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
+# CONFIG_MTD_OBSOLETE_CHIPS is not set
+CONFIG_MTD_XIP=y
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+CONFIG_MTD_PHYSMAP=y
+CONFIG_MTD_PHYSMAP_START=0x0
+CONFIG_MTD_PHYSMAP_LEN=0x0
+CONFIG_MTD_PHYSMAP_BANKWIDTH=2
+# CONFIG_MTD_ARM_INTEGRATOR is not set
+# CONFIG_MTD_SHARP_SL is not set
+CONFIG_MTD_EZX=y
+CONFIG_MTD_EZX_A780=y
+# CONFIG_MTD_EZX_A780_ALTERNATE is not set
+# CONFIG_MTD_EZX_E2 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
+
+#
+# NAND Flash Device Drivers
+#
+# CONFIG_MTD_NAND is not set
+
+#
+# OneNAND Flash Device Drivers
+#
+# CONFIG_MTD_ONENAND is not set
#
# Parallel port support
@@ -363,10 +637,13 @@ CONFIG_CONNECTOR=m
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -412,7 +689,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -438,7 +715,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -451,11 +737,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -559,6 +845,8 @@ CONFIG_HW_RANDOM=y
# TPM devices
#
# CONFIG_TCG_TPM is not set
+CONFIG_TS0710_MUX=y
+CONFIG_TS0710_MUX_USB=y
#
# I2C support
@@ -655,7 +943,50 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -668,8 +999,8 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_EZX is not set
+CONFIG_LCD_CLASS_DEVICE=m
+CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
@@ -713,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_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
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -880,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -906,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -918,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -925,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -943,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -958,6 +1390,7 @@ CONFIG_RAMFS=y
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
CONFIG_CRAMFS=m
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
@@ -968,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1086,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1098,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/a780/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780 b/packages/linux/linux-ezx-2.6.21/a780/defconfig
index bd794af856..9ea8e88266 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-a780
+++ b/packages/linux/linux-ezx-2.6.21/a780/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Sat Jun 2 19:52:36 2007
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 10:37:45 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -153,7 +152,6 @@ CONFIG_PXA_EZX_A780=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_TF=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -198,7 +196,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -215,11 +213,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -228,6 +226,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -257,6 +257,10 @@ CONFIG_NET=y
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_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -266,15 +270,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# 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 is not set
+CONFIG_INET_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -283,11 +287,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+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 is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=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_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=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_HELPER=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_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=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_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+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_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=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_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=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_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=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 (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -319,6 +467,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -326,28 +475,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -428,7 +584,7 @@ CONFIG_MTD_XIP=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x0
-CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_LEN=0x0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
@@ -480,10 +636,13 @@ CONFIG_MTD_EZX_A780=y
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -529,7 +688,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -555,7 +714,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -568,11 +736,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -775,7 +943,50 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -788,7 +999,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
@@ -833,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_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
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -1000,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1026,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -1038,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -1045,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -1063,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1089,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1207,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1219,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty b/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/e680/.mtn2git_empty
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680 b/packages/linux/linux-ezx-2.6.21/e680/defconfig
index d180351886..770df7f34c 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e680
+++ b/packages/linux/linux-ezx-2.6.21/e680/defconfig
@@ -1,7 +1,7 @@
#
# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21
-# Sat Jun 2 18:29:02 2007
+# Linux kernel version: 2.6.21.4
+# Sun Sep 9 16:51:47 2007
#
CONFIG_ARM=y
CONFIG_SYS_SUPPORTS_APM_EMULATION=y
@@ -36,7 +36,7 @@ CONFIG_INIT_ENV_ARG_LIMIT=32
#
CONFIG_LOCALVERSION="-ezxdev"
# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
+CONFIG_SWAP=y
CONFIG_SYSVIPC=y
# CONFIG_IPC_NS is not set
CONFIG_SYSVIPC_SYSCTL=y
@@ -54,21 +54,20 @@ CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_UID16=y
# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# CONFIG_KALLSYMS_EXTRA_PASS is not set
+# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
-CONFIG_ELF_CORE=y
-CONFIG_BASE_FULL=y
+# CONFIG_ELF_CORE is not set
+# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
CONFIG_EPOLL=y
-# CONFIG_SHMEM is not set
+CONFIG_SHMEM=y
CONFIG_SLAB=y
CONFIG_VM_EVENT_COUNTERS=y
CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=1
# CONFIG_SLOB is not set
#
@@ -87,7 +86,7 @@ CONFIG_KMOD=y
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
+CONFIG_LSF=y
#
# IO Schedulers
@@ -153,7 +152,6 @@ CONFIG_PXA_EZX_E680=y
# CONFIG_PXA_EZX_E6 is not set
CONFIG_EZX_BP=y
CONFIG_EZX_PCAP=y
-CONFIG_EZX_MCI_SD=y
CONFIG_EZX_EMU=y
CONFIG_EZX_EMU_USB=y
# CONFIG_EZX_EMU_UART is not set
@@ -198,7 +196,7 @@ CONFIG_PREEMPT=y
CONFIG_NO_IDLE_HZ=y
CONFIG_HZ=100
CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
+CONFIG_OABI_COMPAT=y
# CONFIG_ARCH_DISCONTIGMEM_ENABLE is not set
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
@@ -215,11 +213,11 @@ CONFIG_ALIGNMENT_TRAP=y
#
# Boot options
#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000 mem=16M@0xAC000000"
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE="console=tty1 root=/dev/mmcblk0p1 rootfstype=ext3 rootdelay=5 ip=192.168.0.202:192.168.0.200:192.168.0.200:255.255.255.0 debug mem=32M@0xA0000000 mem=16M@0xAC000000"
# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
+CONFIG_KEXEC=y
#
# Floating point emulation
@@ -228,6 +226,8 @@ CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169
#
# At least one emulation must be selected
#
+# CONFIG_FPE_NWFPE is not set
+# CONFIG_FPE_FASTFPE is not set
#
# Userspace binary formats
@@ -257,6 +257,10 @@ CONFIG_NET=y
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_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
@@ -266,15 +270,15 @@ CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
# CONFIG_IP_PNP_BOOTP is not set
# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
+CONFIG_NET_IPIP=m
+CONFIG_NET_IPGRE=m
# CONFIG_ARPD is not set
CONFIG_SYN_COOKIES=y
# 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 is not set
+CONFIG_INET_TUNNEL=m
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
@@ -283,11 +287,155 @@ CONFIG_SYN_COOKIES=y
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
-# CONFIG_IPV6 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
+
+#
+# IP: Virtual Server Configuration
+#
+# CONFIG_IP_VS is not set
+CONFIG_IPV6=m
+CONFIG_IPV6_PRIVACY=y
+CONFIG_IPV6_ROUTER_PREF=y
+# CONFIG_IPV6_ROUTE_INFO is not set
+CONFIG_INET6_AH=m
+CONFIG_INET6_ESP=m
+CONFIG_INET6_IPCOMP=m
+# CONFIG_IPV6_MIP6 is not set
+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 is not set
+CONFIG_IPV6_SIT=m
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK_ENABLED=m
+CONFIG_NF_CONNTRACK_SUPPORT=y
+# CONFIG_IP_NF_CONNTRACK_SUPPORT is not set
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CT_ACCT=y
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=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_XTABLES=m
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+# CONFIG_NETFILTER_XT_TARGET_CONNMARK is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=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_HELPER=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_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=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_HASHLIMIT=m
+
+#
+# IP: Netfilter Configuration
+#
+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_IPRANGE=m
+CONFIG_IP_NF_MATCH_TOS=m
+CONFIG_IP_NF_MATCH_RECENT=m
+CONFIG_IP_NF_MATCH_ECN=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_MATCH_OWNER=m
+CONFIG_IP_NF_MATCH_ADDRTYPE=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_REDIRECT=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_SAME=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=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_TOS=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=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 (EXPERIMENTAL)
+#
+CONFIG_NF_CONNTRACK_IPV6=m
+CONFIG_IP6_NF_QUEUE=m
+CONFIG_IP6_NF_IPTABLES=m
+CONFIG_IP6_NF_MATCH_RT=m
+CONFIG_IP6_NF_MATCH_OPTS=m
+CONFIG_IP6_NF_MATCH_FRAG=m
+CONFIG_IP6_NF_MATCH_HL=m
+CONFIG_IP6_NF_MATCH_OWNER=m
+CONFIG_IP6_NF_MATCH_IPV6HEADER=m
+CONFIG_IP6_NF_MATCH_AH=m
+CONFIG_IP6_NF_MATCH_MH=m
+CONFIG_IP6_NF_MATCH_EUI64=m
+CONFIG_IP6_NF_FILTER=m
+CONFIG_IP6_NF_TARGET_LOG=m
+CONFIG_IP6_NF_TARGET_REJECT=m
+CONFIG_IP6_NF_MANGLE=m
+CONFIG_IP6_NF_TARGET_HL=m
+CONFIG_IP6_NF_RAW=m
#
# DCCP Configuration (EXPERIMENTAL)
@@ -319,6 +467,7 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# QoS and/or fair queueing
#
# CONFIG_NET_SCHED is not set
+CONFIG_NET_CLS_ROUTE=y
#
# Network testing
@@ -326,28 +475,35 @@ CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
-CONFIG_BT=y
-CONFIG_BT_L2CAP=y
-CONFIG_BT_SCO=y
-CONFIG_BT_RFCOMM=y
+CONFIG_BT=m
+CONFIG_BT_L2CAP=m
+CONFIG_BT_SCO=m
+CONFIG_BT_RFCOMM=m
CONFIG_BT_RFCOMM_TTY=y
-CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP=m
CONFIG_BT_BNEP_MC_FILTER=y
CONFIG_BT_BNEP_PROTO_FILTER=y
-CONFIG_BT_HIDP=y
+CONFIG_BT_HIDP=m
#
# Bluetooth device drivers
#
# CONFIG_BT_HCIUSB is not set
-CONFIG_BT_HCIUART=y
+CONFIG_BT_HCIUART=m
CONFIG_BT_HCIUART_H4=y
# CONFIG_BT_HCIUART_BCSP is not set
# CONFIG_BT_HCIBCM203X is not set
# CONFIG_BT_HCIBPA10X is not set
# CONFIG_BT_HCIBFUSB is not set
# CONFIG_BT_HCIVHCI is not set
-# CONFIG_IEEE80211 is not set
+CONFIG_IEEE80211=m
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=m
+CONFIG_IEEE80211_CRYPT_CCMP=m
+# CONFIG_IEEE80211_CRYPT_TKIP is not set
+CONFIG_IEEE80211_SOFTMAC=m
+# CONFIG_IEEE80211_SOFTMAC_DEBUG is not set
+CONFIG_WIRELESS_EXT=y
#
# Device Drivers
@@ -428,7 +584,7 @@ CONFIG_MTD_XIP=y
# CONFIG_MTD_COMPLEX_MAPPINGS is not set
CONFIG_MTD_PHYSMAP=y
CONFIG_MTD_PHYSMAP_START=0x0
-CONFIG_MTD_PHYSMAP_LEN=0
+CONFIG_MTD_PHYSMAP_LEN=0x0
CONFIG_MTD_PHYSMAP_BANKWIDTH=2
# CONFIG_MTD_ARM_INTEGRATOR is not set
# CONFIG_MTD_SHARP_SL is not set
@@ -480,10 +636,13 @@ CONFIG_MTD_EZX_A780=y
#
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+CONFIG_BLK_DEV_CRYPTOLOOP=m
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_UB is not set
-# CONFIG_BLK_DEV_RAM is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=4096
+CONFIG_BLK_DEV_RAM_BLOCKSIZE=1024
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
@@ -529,7 +688,7 @@ CONFIG_NETDEVICES=y
CONFIG_DUMMY=y
# CONFIG_BONDING is not set
# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
+CONFIG_TUN=m
#
# PHY device support
@@ -555,7 +714,16 @@ CONFIG_DUMMY=y
#
# Wireless LAN (non-hamradio)
#
-# CONFIG_NET_RADIO is not set
+CONFIG_NET_RADIO=y
+CONFIG_NET_WIRELESS_RTNETLINK=y
+
+#
+# Obsolete Wireless cards support (pre-802.11)
+#
+# CONFIG_STRIP is not set
+# CONFIG_USB_ZD1201 is not set
+# CONFIG_HOSTAP is not set
+# CONFIG_ZD1211RW is not set
#
# Wan interfaces
@@ -568,11 +736,11 @@ CONFIG_PPP_ASYNC=m
CONFIG_PPP_SYNC_TTY=m
CONFIG_PPP_DEFLATE=m
CONFIG_PPP_BSDCOMP=m
-# CONFIG_PPP_MPPE is not set
-# CONFIG_PPPOE is not set
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
# CONFIG_SLIP is not set
CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
+CONFIG_SHAPER=m
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
@@ -768,14 +936,57 @@ CONFIG_LEDS_CLASS=y
# LED Triggers
#
CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_E680=y
+# CONFIG_LEDS_E680 is not set
CONFIG_LEDS_TRIGGER_TIMER=y
CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
# Multimedia devices
#
-# CONFIG_VIDEO_DEV is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_VIDEO_V4L2=y
+
+#
+# Video Capture Adapters
+#
+
+#
+# Video Capture Adapters
+#
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+
+#
+# V4L USB devices
+#
+# CONFIG_VIDEO_PVRUSB2 is not set
+# CONFIG_VIDEO_EM28XX is not set
+# CONFIG_VIDEO_USBVISION is not set
+# CONFIG_USB_VICAM is not set
+# CONFIG_USB_IBMCAM is not set
+# CONFIG_USB_KONICAWC is not set
+# CONFIG_USB_QUICKCAM_MESSENGER is not set
+# CONFIG_USB_ET61X251 is not set
+# CONFIG_VIDEO_OVCAMCHIP is not set
+# CONFIG_USB_W9968CF is not set
+# CONFIG_USB_OV511 is not set
+# CONFIG_USB_SE401 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_USB_STV680 is not set
+# CONFIG_USB_ZC0301 is not set
+# CONFIG_USB_PWC is not set
+
+#
+# Radio Adapters
+#
+# CONFIG_USB_DSBR is not set
#
# Digital Video Broadcasting Devices
@@ -788,7 +999,7 @@ CONFIG_LEDS_TRIGGER_HEARTBEAT=y
#
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_LCD_CLASS_DEVICE=m
CONFIG_BACKLIGHT_EZX=y
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
@@ -833,12 +1044,79 @@ CONFIG_FONT_MINI_4x6=y
#
# Logo configuration
#
-# CONFIG_LOGO is not set
+CONFIG_LOGO=y
+CONFIG_LOGO_LINUX_MONO=y
+CONFIG_LOGO_LINUX_VGA16=y
+CONFIG_LOGO_LINUX_CLUT224=y
#
# Sound
#
-# CONFIG_SOUND is not set
+CONFIG_SOUND=y
+
+#
+# Advanced Linux Sound Architecture
+#
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+# CONFIG_SND_SEQUENCER is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=m
+CONFIG_SND_PCM_OSS=m
+CONFIG_SND_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
+
+#
+# Generic devices
+#
+CONFIG_SND_AC97_CODEC=m
+CONFIG_SND_DUMMY=m
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+
+#
+# ALSA ARM devices
+#
+CONFIG_SND_PXA2XX_PCM=m
+CONFIG_SND_PXA2XX_AC97=m
+
+#
+# USB devices
+#
+# CONFIG_SND_USB_AUDIO is not set
+
+#
+# SoC audio support
+#
+CONFIG_SND_SOC=y
+
+#
+# SoC Platforms
+#
+
+#
+# SoC Audio for the Atmel AT91
+#
+
+#
+# SoC Audio for the Intel PXA2xx
+#
+CONFIG_SND_PXA2XX_SOC=y
+CONFIG_SND_PXA2XX_SOC_SSP=y
+CONFIG_SND_PXA2XX_SOC_EZX=y
+CONFIG_SND_SOC_PCAP2=y
+
+#
+# Open Sound System
+#
+# CONFIG_SOUND_PRIME is not set
+CONFIG_AC97_BUS=m
#
# HID Devices
@@ -1000,7 +1278,34 @@ CONFIG_MMC_PXA=y
# Real Time Clock
#
CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
+CONFIG_RTC_CLASS=m
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=m
+CONFIG_RTC_INTF_PROC=m
+CONFIG_RTC_INTF_DEV=m
+CONFIG_RTC_INTF_DEV_UIE_EMUL=y
+
+#
+# RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+CONFIG_RTC_DRV_SA1100=m
+# CONFIG_RTC_DRV_TEST is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_V3020 is not set
#
# File systems
@@ -1026,7 +1331,11 @@ CONFIG_REISERFS_FS_POSIX_ACL=y
CONFIG_REISERFS_FS_SECURITY=y
# CONFIG_JFS_FS is not set
CONFIG_FS_POSIX_ACL=y
-# CONFIG_XFS_FS is not set
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_SECURITY is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
@@ -1038,6 +1347,7 @@ CONFIG_DNOTIFY=y
CONFIG_AUTOFS_FS=y
CONFIG_AUTOFS4_FS=y
# CONFIG_FUSE_FS is not set
+CONFIG_GENERIC_ACL=y
#
# CD-ROM/DVD Filesystems
@@ -1045,7 +1355,8 @@ CONFIG_AUTOFS4_FS=y
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
-# CONFIG_UDF_FS is not set
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
#
# DOS/FAT/NT Filesystems
@@ -1063,7 +1374,8 @@ CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
CONFIG_PROC_FS=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
+CONFIG_TMPFS=y
+CONFIG_TMPFS_POSIX_ACL=y
# CONFIG_HUGETLB_PAGE is not set
CONFIG_RAMFS=y
# CONFIG_CONFIGFS_FS is not set
@@ -1089,24 +1401,26 @@ CONFIG_CRAMFS=m
#
# Network File Systems
#
-CONFIG_NFS_FS=m
+CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
+CONFIG_NFS_V4=y
CONFIG_NFS_DIRECTIO=y
CONFIG_NFSD=m
CONFIG_NFSD_V2_ACL=y
CONFIG_NFSD_V3=y
CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
+CONFIG_NFSD_V4=y
CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
+CONFIG_ROOT_NFS=y
+CONFIG_LOCKD=y
CONFIG_LOCKD_V4=y
CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
+CONFIG_NFS_ACL_SUPPORT=y
CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
# CONFIG_RPCSEC_GSS_SPKM3 is not set
CONFIG_SMB_FS=m
# CONFIG_SMB_NLS_DEFAULT is not set
@@ -1207,7 +1521,48 @@ CONFIG_FRAME_POINTER=y
#
# Cryptographic options
#
-# CONFIG_CRYPTO is not set
+CONFIG_CRYPTO=y
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_WP512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_ECB=m
+CONFIG_CRYPTO_CBC=y
+CONFIG_CRYPTO_PCBC=m
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_AES=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_ARC4=m
+CONFIG_CRYPTO_KHAZAD=m
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_DEFLATE=m
+CONFIG_CRYPTO_MICHAEL_MIC=m
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_TEST=m
+
+#
+# Hardware crypto devices
+#
#
# Library routines
@@ -1219,6 +1574,10 @@ CONFIG_CRC32=y
CONFIG_LIBCRC32C=m
CONFIG_ZLIB_INFLATE=m
CONFIG_ZLIB_DEFLATE=m
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
new file mode 100644
index 0000000000..577aa66303
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-eoc.patch
@@ -0,0 +1,82 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-09 13:29:56.000000000 -0300
+@@ -25,6 +25,7 @@
+ #include <asm/arch/mmc.h>
+
+ #include "generic.h"
++#include "ezx-eoc.h"
+
+ extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+ extern void ezx_backlight_power(int);
+@@ -227,11 +228,69 @@
+ .resource = pcap_ts_resources,
+ };
+
++
++/* EOC */
++static const unsigned int tab_init_eoc_reg[][2] =
++{
++ {POWER_IC_REG_EOC_INT_MASK, 0x00000FEF},
++ {POWER_IC_REG_EOC_POWER_CONTROL_0, 0x00000C00},
++ {POWER_IC_REG_EOC_POWER_CONTROL_1, 0x0000000C},
++ {POWER_IC_REG_EOC_CONN_CONTROL, 0x00021044},
++};
++
++static void dump_eoc_registers(void)
++{
++ int i, val = 0;
++
++ printk("========DUMP EOC=========\n");
++ for (i = 0; i < POWER_IC_REG_EOC_NUM; i++) {
++ eoc_reg_read(i, &val);
++ printk("eoc_registers[%d] = 0x%08X\n", i, val);
++ }
++ printk("========END DUMP=========\n");
++}
++
++/*
++ * FIXME: The same about the PCAP driver applies here.
++ * This is the initial state only.
++ * Which bits does the change to USB/UART/AUDIO mode?
++ * I think that this is causing the crash on pxa27x-udc
++ * you are setting the 'port connected' bit, and thats why
++ * you are getting interrupts early.
++ * --WM
++ */
++
++static int __init a1200_eoc_init(void)
++{
++ int i;
++
++ for (i = 0; i < sizeof(tab_init_eoc_reg)/sizeof(unsigned int)/2; i++)
++ {
++ eoc_reg_write(tab_init_eoc_reg[i][0], tab_init_eoc_reg[i][1]);
++ }
++ dump_eoc_registers();
++ return 0;
++}
++
++static struct ezx_eoc_platform_data a1200_eoc_platform_data = {
++ .init = a1200_eoc_init,
++};
++
++struct platform_device a1200_eoc_device = {
++ .name = "ezx-eoc",
++ .id = -1,
++ .dev = {
++ .platform_data = &a1200_eoc_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &pcap_ts_device,
++ &a1200_eoc_device,
+ };
+
++
+ static void __init a1200_init(void)
+ {
+ set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
index 0d2640a2e7..042254b115 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-mci.patch
@@ -1,20 +1,8 @@
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:31.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:44:29.000000000 -0300
-@@ -97,6 +97,7 @@
- config PXA_EZX_A1200
- bool "Motorola A1200 GSM Phone"
- select PXA27x
-+ select EZX_MCI_TF
-
- config PXA_EZX_E6
- bool "Motorola E6 GSM Phone"
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:26.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:44:56.000000000 -0300
-@@ -13,11 +13,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
+@@ -13,6 +13,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -23,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -20,12 +22,102 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -25,6 +28,95 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -125,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
static struct pxafb_mode_info mode_a1200 = {
.pixclock = 192308,
.xres = 240,
-@@ -54,6 +146,7 @@
+@@ -118,6 +210,7 @@
static void __init a1200_init(void)
{
set_pxa_fb_info(&a1200_fb_info);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
new file mode 100644
index 0000000000..8aa1e46d73
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-pcap.patch
@@ -0,0 +1,83 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:32:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:51:55.000000000 -0300
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,70 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init a1200_pcap_init(void)
++{
++ /*
++ * FIXME: this is the PCAP INITIAL STATE.
++ * most of these writes should NOT be done here
++ * * voltage regulators, voltage enablers should be set by the
++ * driver which uses the connected hardware. Otherwise you
++ * drain power unnecessarily.
++ * * interrupt related registers should be set by the irq functions
++ * only. I think that the INT_SEL register selects on which irq
++ * pin the (ap/bp) the irq goes. This should go on ezx-pcap.c, but
++ * only if it actually makes any difference.
++ * * Only power state automatic changes should be done here.
++ * (*LOWPWR, *STBY, LOWPWR*)
++ * * I removed some writes which i consider extremelly wrong. And
++ * which i think will not break anything (they were overwritten
++ * later anyway).
++ *
++ * --WM
++ */
++ ezx_pcap_write(PCAP_REG_INT_SEL, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_SWCTRL, 0x2ee6); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_VREG1, 0x15778e3); /* wrong */
++ ezx_pcap_write(PCAP_REG_VREG2, 0x810234); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG, 0x1024bec); /* wrong */
++ ezx_pcap_write(PCAP_REG_PWR, 0x94108); /* partially wrong */
++ ezx_pcap_write(PCAP_REG_AUXVREG_MASK, 0x214d48); /* wrong */
++ ezx_pcap_write(PCAP_REG_BUSCTRL, 0x2a0); /* wrong */
++ ezx_pcap_write(PCAP_REG_LOWPWR, 0x1d9610c);
++ ezx_pcap_write(PCAP_REG_PERIPH, 0x0); /* wrong */
++ ezx_pcap_write(PCAP_REG_GP, 0x107); /* probably unnecessary */
++
++ return 0;
++}
++
++static struct pcap_platform_data a1200_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_CS_AH | PCAP_MCI_TF,
++ .clk = 1,
++ .init = a1200_pcap_init,
++};
++
++static struct resource a1200_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a1200_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a1200_pcap_resources),
++ .resource = a1200_pcap_resources,
++ .dev = {
++ .platform_data = &a1200_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a1200_pcap_device,
+ };
+
+ static void __init a1200_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
index a7ca6362b0..a8c8f2ee29 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a1200-ts.patch
@@ -1,16 +1,16 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:32:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 20:33:41.000000000 -0300
-@@ -117,6 +117,27 @@
- .exit = a1200_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:54:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-09-07 11:55:10.000000000 -0300
+@@ -203,8 +203,33 @@
+ },
};
+/* PCAP_TS */
+struct resource pcap_ts_resources[] = {
+ [0] = {
-+ .start = EZX_IRQ_ADCDONE2,
-+ .end = EZX_IRQ_ADCDONE2,
++ .start = EZX_IRQ_ADCDONE,
++ .end = EZX_IRQ_ADCDONE,
+ .flags = IORESOURCE_IRQ,
+ },
+ [1] = {
@@ -23,17 +23,15 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &a1200_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_a1200 = {
- .pixclock = 192308,
- .xres = 240,
-@@ -141,6 +162,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &a1200_pcap_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
new file mode 100644
index 0000000000..f6121c6e7f
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
+@@ -211,8 +211,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource a780_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(a780_emu_resources),
++ .resource = a780_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
++ &a780_emu_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
index b93b1b14e4..88f15041db 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-flip.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:47.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:58:17.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
@@ -17,6 +17,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -214,8 +215,31 @@
- },
+@@ -311,10 +312,33 @@
+ .resource = pcap_ts_resources,
};
+static struct gpio_keys_button a780flip_buttons[] = {
@@ -37,6 +37,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+
+
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
&pcap_ts_device,
+ &a780flip_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
index 902889abe6..d7d114cfed 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-kbd.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:54:38.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:56:22.000000000 -0300
-@@ -16,18 +16,21 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:03:16.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
+@@ -16,6 +16,7 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,13 +10,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
- #include <asm/arch/pxafb.h>
+@@ -24,11 +25,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
#include <asm/arch/mmc.h>
+#include <asm/arch/kbd.h>
#include "generic.h"
- #include "ezx.h"
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -24,8 +24,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#ifdef CONFIG_EZX_PCAP
extern int ezx_pcap_mmcsd_power(int);
-@@ -141,6 +144,55 @@
- .pxafb_lcd_power = &ezx_lcd_power,
+@@ -235,6 +238,55 @@
+ .resource = a780_emu_resources,
};
+static unsigned char a780_keycode[] = {
@@ -78,9 +78,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+};
+
static struct platform_device *devices[] __initdata = {
- };
-
-@@ -159,6 +211,7 @@
+ &a780_pcap_device,
+ &a780_emu_device,
+@@ -255,6 +307,7 @@
set_pxa_fb_info(&a780_fb_info);
pxa_set_mci_info(&a780_mci_platform_data);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
index 5a9a9383f7..e8336d8855 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:33:45.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-08-31 23:59:27.000000000 -0300
@@ -104,6 +104,13 @@
These triggers allow kernel events to drive the LEDs and can
be configured via sysfs. If unsure, say Y.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:33:45.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-08-31 22:27:41.000000000 -0300
++++ linux-2.6.21/drivers/leds/Makefile 2007-08-31 23:59:27.000000000 -0300
@@ -16,6 +16,7 @@
obj-$(CONFIG_LEDS_WRAP) += leds-wrap.o
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
@@ -36,7 +36,7 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-06-08 18:39:04.000000000 +0200
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-08-31 23:59:27.000000000 -0300
@@ -0,0 +1,122 @@
+/*
+ * EZX Platform LED Driver for the Motorola A780 GSM Phone
@@ -62,22 +62,22 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+{
+ if ( value > 31 ) value = 31;
+ printk( KERN_DEBUG "a780led_main_set: %d\n", value );
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL3, value & 0x08);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL4, value & 0x10);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL_CTRL4, value & 0x10);
+}
+
+static void a780led_aux_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
+ if ( value > 31 ) value = 31;
+ printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL3, value & 0x08);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL0, value & 0x01);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL1, value & 0x02);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL2, value & 0x04);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL3, value & 0x08);
++ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+}
+
+static struct led_classdev a780_main_led = {
@@ -162,18 +162,23 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:38:50.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-08 18:39:04.000000000 +0200
-@@ -236,10 +236,15 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:59:27.000000000 -0300
+@@ -333,12 +333,20 @@
},
};
+static struct platform_device a780led_device = {
+ .name = "a780-led",
+ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
+};
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
&pcap_ts_device,
&a780flip_device,
+ &a780led_device,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
index 4877bfffa5..1238c1cf71 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-mci.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:44:14.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-05-24 00:47:01.000000000 -0300
-@@ -14,11 +14,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:54.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:02:13.000000000 -0300
+@@ -14,6 +14,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -11,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -21,12 +23,102 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -26,6 +29,95 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -113,7 +114,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
static struct pxafb_mode_info mode_a780 = {
.pixclock = 150000,
.xres = 240,
-@@ -66,6 +158,7 @@
+@@ -137,6 +229,7 @@
PSLR = 0x05800f00;
set_pxa_fb_info(&a780_fb_info);
@@ -121,15 +122,3 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
/* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:47:13.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:11.000000000 -0300
-@@ -87,6 +87,7 @@
- config PXA_EZX_A780
- bool "Motorola A780 GSM Phone"
- select PXA27x
-+ select EZX_MCI_TF
-
- config PXA_EZX_E2
- bool "Motorola E2 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
new file mode 100644
index 0000000000..afb5d9c005
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 22:33:03.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:01:17.000000000 -0300
+@@ -20,6 +20,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -49,7 +50,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init a780_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set(PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data a780_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_TF,
++ .clk = 1,
++ .init = a780_pcap_init,
++};
++
++static struct resource a780_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device a780_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(a780_pcap_resources),
++ .resource = a780_pcap_resources,
++ .dev = {
++ .platform_data = &a780_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &a780_pcap_device,
+ };
+
+ static void __init a780_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
index a4a476ac59..e7ca3c106a 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-ts.patch
@@ -1,9 +1,9 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:32:48.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 20:33:10.000000000 -0300
-@@ -121,6 +121,27 @@
- .exit = a780_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:05:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-08-31 23:06:53.000000000 -0300
+@@ -287,9 +287,34 @@
+ },
};
+/* PCAP_TS */
@@ -23,17 +23,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &a780_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_a780 = {
- .pixclock = 150000,
- .xres = 240,
-@@ -194,6 +215,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &a780_pcap_device,
+ &a780_emu_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
index 7436c40f5f..aa903feea7 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/a780-vibrator.patch
@@ -1,74 +1,26 @@
Index: linux-2.6.21/drivers/leds/leds-a780.c
===================================================================
---- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/leds-a780.c 2007-05-08 15:19:26.000000000 -0300
-@@ -18,10 +18,13 @@
- #include <linux/leds.h>
- #include <asm/arch/ezx-pcap.h>
-
-+extern void ezx_pcap_vibrator_level(u_int32_t);
-+
- static void a780led_main_set(struct led_classdev *led_cdev, enum led_brightness value)
- {
- if ( value > 31 ) value = 31;
- printk( KERN_DEBUG "a780led_main_set: %d\n", value );
-+#warning FIXME: use read/write operations
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL0, value & 0x01);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL1, value & 0x02);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL_CTRL2, value & 0x04);
-@@ -33,6 +36,7 @@
- {
- if ( value > 31 ) value = 31;
- printk( KERN_DEBUG "a780led_aux_set: %d\n", value );
-+#warning FIXME: use read/write operations
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL0, value & 0x01);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL1, value & 0x02);
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL2, value & 0x04);
-@@ -40,6 +44,43 @@
- ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_PERIPH_BL2_CTRL4, value & 0x10);
+--- linux-2.6.21.orig/drivers/leds/leds-a780.c 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/leds-a780.c 2007-09-01 00:23:39.000000000 -0300
+@@ -40,6 +40,17 @@
+ ezx_pcap_bit_set(PCAP_BIT_PERIPH_BL2_CTRL4, value & 0x10);
}
+static void a780vibrator_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
-+ if ( value > 4 ) value = 4;
++ if (value > 4) value = 4;
+ printk( KERN_DEBUG "a780vibrator_set: %d\n", value );
-+
-+ switch(value)
-+ {
-+ case 0:
-+ /* turn off vibrator */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 0);
-+ break;
-+
-+ case 1:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 2:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 3:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL2);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ case 4:
-+ ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_V_VIB_EN, 1);
-+ break;
-+
-+ default:
-+ break;
-+ }
++ ezx_pcap_vibrator_level(value-1);
++ if (value == 0)
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 0);
++ else
++ ezx_pcap_bit_set(PCAP_BIT_AUXVREG_V_VIB_EN, 1);
+}
+
static struct led_classdev a780_main_led = {
.name = "a780:main",
.default_trigger = "none",
-@@ -52,11 +93,18 @@
+@@ -52,11 +63,18 @@
.brightness_set = a780led_aux_set,
};
@@ -87,7 +39,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -64,6 +112,7 @@
+@@ -64,6 +82,7 @@
{
led_classdev_resume(&a780_main_led);
led_classdev_resume(&a780_aux_led);
@@ -95,7 +47,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
#endif
-@@ -77,8 +126,16 @@
+@@ -77,8 +96,16 @@
return ret;
ret = led_classdev_register(&pdev->dev, &a780_aux_led);
@@ -113,7 +65,7 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return ret;
}
-@@ -87,6 +144,7 @@
+@@ -87,6 +114,7 @@
{
led_classdev_unregister(&a780_main_led);
led_classdev_unregister(&a780_aux_led);
@@ -121,19 +73,18 @@ Index: linux-2.6.21/drivers/leds/leds-a780.c
return 0;
}
-@@ -111,6 +169,8 @@
+@@ -111,6 +139,7 @@
{
a780led_main_set( &a780_main_led, 0 );
a780led_aux_set( &a780_aux_led, 0 );
+ a780vibrator_set( &a780_vibrator, 0 );
-+
platform_driver_unregister(&a780led_driver);
}
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-05-08 15:09:26.000000000 -0300
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-09-01 00:15:03.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-09-01 00:15:08.000000000 -0300
@@ -105,11 +105,11 @@
be configured via sysfs. If unsure, say Y.
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
new file mode 100644
index 0000000000..feea138984
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-fix-loopback.patch
@@ -0,0 +1,14 @@
+Index: linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:30:56.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-pcm.c 2007-09-02 22:36:26.000000000 -0300
+@@ -153,7 +153,8 @@
+ static int pxa2xx_pcm_prepare(struct snd_pcm_substream *substream)
+ {
+ struct pxa2xx_runtime_data *prtd = substream->runtime->private_data;
+-
++ /* no dma if on loopback */
++ if (!prtd->params) return 0;
+ DCSR(prtd->dma_ch) &= ~DCSR_RUN;
+ DCSR(prtd->dma_ch) = 0;
+ DCMD(prtd->dma_ch) = 0;
diff --git a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
index 1fc8283ca2..dd5b71a512 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/asoc-pxa-ssp.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-05-14 21:14:38.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c 2007-09-02 22:50:31.000000000 -0300
@@ -0,0 +1,671 @@
+/*
+ * pxa2xx-ssp.c -- ALSA Soc Audio Layer
@@ -43,7 +43,7 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
+#include "pxa2xx-pcm.h"
+#include "pxa2xx-ssp.h"
+
-+#define PXA_SSP_DEBUG 1
++#define PXA_SSP_DEBUG 0
+
+/*
+ * The following should be defined in pxa-regs.h
@@ -677,7 +677,7 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.c
Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h 2007-05-14 21:14:38.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h 2007-09-02 22:48:59.000000000 -0300
@@ -0,0 +1,42 @@
+/*
+ * linux/sound/arm/pxa2xx-ssp.h
@@ -723,8 +723,8 @@ Index: linux-2.6.21/sound/soc/pxa/pxa2xx-ssp.h
+#endif
Index: linux-2.6.21/sound/soc/pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-05-14 21:16:22.000000000 -0300
-+++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-05-14 21:17:01.000000000 -0300
+--- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-09-02 22:48:51.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-09-02 22:50:18.000000000 -0300
@@ -20,6 +20,10 @@
config SND_PXA2XX_SOC_I2S
tristate
@@ -738,8 +738,8 @@ Index: linux-2.6.21/sound/soc/pxa/Kconfig
depends on SND_PXA2XX_SOC && PXA_SHARP_C7xx
Index: linux-2.6.21/sound/soc/pxa/Makefile
===================================================================
---- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-05-14 21:14:52.000000000 -0300
-+++ linux-2.6.21/sound/soc/pxa/Makefile 2007-05-14 21:16:10.000000000 -0300
+--- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-09-02 22:48:51.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Makefile 2007-09-02 22:50:18.000000000 -0300
@@ -2,10 +2,12 @@
snd-soc-pxa2xx-objs := pxa2xx-pcm.o
snd-soc-pxa2xx-ac97-objs := pxa2xx-ac97.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2 b/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
deleted file mode 100755
index be512457d9..0000000000
--- a/packages/linux/linux-ezx-2.6.21/patches/defconfig-e2
+++ /dev/null
@@ -1,1092 +0,0 @@
-#
-# Automatically generated make config: don't edit
-# Linux kernel version: 2.6.21.4
-# Wed Jun 13 17:29:50 2007
-#
-CONFIG_ARM=y
-CONFIG_SYS_SUPPORTS_APM_EMULATION=y
-CONFIG_GENERIC_GPIO=y
-CONFIG_GENERIC_TIME=y
-CONFIG_MMU=y
-# CONFIG_NO_IOPORT is not set
-CONFIG_GENERIC_HARDIRQS=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_ZONE_DMA=y
-CONFIG_ARCH_MTD_XIP=y
-CONFIG_VECTORS_BASE=0xffff0000
-CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
-
-#
-# Code maturity level options
-#
-CONFIG_EXPERIMENTAL=y
-CONFIG_BROKEN_ON_SMP=y
-CONFIG_LOCK_KERNEL=y
-CONFIG_INIT_ENV_ARG_LIMIT=32
-
-#
-# General setup
-#
-CONFIG_LOCALVERSION="-ezxdev"
-# CONFIG_LOCALVERSION_AUTO is not set
-# CONFIG_SWAP is not set
-CONFIG_SYSVIPC=y
-# CONFIG_IPC_NS is not set
-CONFIG_SYSVIPC_SYSCTL=y
-# CONFIG_POSIX_MQUEUE is not set
-# CONFIG_BSD_PROCESS_ACCT is not set
-# CONFIG_TASKSTATS is not set
-# CONFIG_UTS_NS is not set
-# CONFIG_AUDIT is not set
-# CONFIG_IKCONFIG is not set
-# CONFIG_SYSFS_DEPRECATED is not set
-# CONFIG_RELAY is not set
-# CONFIG_BLK_DEV_INITRD is not set
-CONFIG_CC_OPTIMIZE_FOR_SIZE=y
-CONFIG_SYSCTL=y
-CONFIG_EMBEDDED=y
-CONFIG_UID16=y
-# CONFIG_SYSCTL_SYSCALL is not set
-CONFIG_KALLSYMS=y
-# 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_SHMEM is not set
-CONFIG_SLAB=y
-CONFIG_VM_EVENT_COUNTERS=y
-CONFIG_RT_MUTEXES=y
-CONFIG_TINY_SHMEM=y
-CONFIG_BASE_SMALL=0
-# CONFIG_SLOB is not set
-
-#
-# Loadable module support
-#
-CONFIG_MODULES=y
-CONFIG_MODULE_UNLOAD=y
-CONFIG_MODULE_FORCE_UNLOAD=y
-CONFIG_MODVERSIONS=y
-# CONFIG_MODULE_SRCVERSION_ALL is not set
-CONFIG_KMOD=y
-
-#
-# Block layer
-#
-CONFIG_BLOCK=y
-# CONFIG_LBD is not set
-# CONFIG_BLK_DEV_IO_TRACE is not set
-# CONFIG_LSF is not set
-
-#
-# IO Schedulers
-#
-CONFIG_IOSCHED_NOOP=y
-# CONFIG_IOSCHED_AS is not set
-CONFIG_IOSCHED_DEADLINE=y
-# CONFIG_IOSCHED_CFQ is not set
-# CONFIG_DEFAULT_AS is not set
-CONFIG_DEFAULT_DEADLINE=y
-# CONFIG_DEFAULT_CFQ is not set
-# CONFIG_DEFAULT_NOOP is not set
-CONFIG_DEFAULT_IOSCHED="deadline"
-
-#
-# 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_CO285 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_IOP32X is not set
-# CONFIG_ARCH_IOP33X is not set
-# CONFIG_ARCH_IOP13XX is not set
-# CONFIG_ARCH_IXP4XX is not set
-# CONFIG_ARCH_IXP2000 is not set
-# CONFIG_ARCH_IXP23XX is not set
-# CONFIG_ARCH_L7200 is not set
-# CONFIG_ARCH_NS9XXX is not set
-# CONFIG_ARCH_PNX4008 is not set
-CONFIG_ARCH_PXA=y
-# 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_OMAP is not set
-
-#
-# Intel PXA2xx Implementations
-#
-# CONFIG_ARCH_LUBBOCK is not set
-# CONFIG_MACH_LOGICPD_PXA270 is not set
-# CONFIG_MACH_MAINSTONE is not set
-# CONFIG_ARCH_PXA_IDP is not set
-# CONFIG_PXA_SHARPSL is not set
-# CONFIG_MACH_TRIZEPS4 is not set
-CONFIG_PXA_EZX=y
-# CONFIG_PXA_EZX_E680 is not set
-# CONFIG_PXA_EZX_A780 is not set
-CONFIG_PXA_EZX_E2=y
-# CONFIG_PXA_EZX_A1200 is not set
-# CONFIG_PXA_EZX_E6 is not set
-# CONFIG_EZX_BP is not set
-CONFIG_EZX_PCAP=y
-# CONFIG_EZX_EMU is not set
-CONFIG_PXA27x=y
-CONFIG_PXA_SSP=y
-
-#
-# Processor Type
-#
-CONFIG_CPU_32=y
-CONFIG_CPU_XSCALE=y
-CONFIG_CPU_32v5=y
-CONFIG_CPU_ABRT_EV5T=y
-CONFIG_CPU_CACHE_VIVT=y
-CONFIG_CPU_TLB_V4WBI=y
-CONFIG_CPU_CP15=y
-CONFIG_CPU_CP15_MMU=y
-
-#
-# Processor Features
-#
-CONFIG_ARM_THUMB=y
-# CONFIG_CPU_DCACHE_DISABLE is not set
-# CONFIG_OUTER_CACHE is not set
-CONFIG_IWMMXT=y
-CONFIG_XSCALE_PMU=y
-
-#
-# Bus support
-#
-
-#
-# PCCARD (PCMCIA/CardBus) support
-#
-# CONFIG_PCCARD is not set
-
-#
-# Kernel Features
-#
-CONFIG_PREEMPT=y
-CONFIG_NO_IDLE_HZ=y
-CONFIG_HZ=100
-CONFIG_AEABI=y
-# CONFIG_OABI_COMPAT is not set
-# CONFIG_ARCH_DISCONTIGMEM_ENABLE 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_SPARSEMEM_STATIC is not set
-CONFIG_SPLIT_PTLOCK_CPUS=4096
-# CONFIG_RESOURCES_64BIT is not set
-CONFIG_ZONE_DMA_FLAG=1
-CONFIG_ALIGNMENT_TRAP=y
-
-#
-# Boot options
-#
-CONFIG_ZBOOT_ROM_TEXT=0
-CONFIG_ZBOOT_ROM_BSS=0
-CONFIG_CMDLINE="console=tty1 noinitrd root=/dev/mmcblk0p2 rootfstype=ext3 ip=169.254.1.11:169.254.1.10:169.254.1.10:255.255.255.254:ezx:usb0:off debug mem=32M@0xA0000000"
-# CONFIG_XIP_KERNEL is not set
-# CONFIG_KEXEC is not set
-
-#
-# Floating point emulation
-#
-
-#
-# At least one emulation must be selected
-#
-
-#
-# Userspace binary formats
-#
-CONFIG_BINFMT_ELF=y
-CONFIG_BINFMT_AOUT=m
-CONFIG_BINFMT_MISC=m
-
-#
-# Power management options
-#
-CONFIG_PM=y
-# CONFIG_PM_LEGACY is not set
-# CONFIG_PM_DEBUG is not set
-# CONFIG_PM_SYSFS_DEPRECATED is not set
-CONFIG_APM_EMULATION=y
-
-#
-# Networking
-#
-CONFIG_NET=y
-
-#
-# Networking options
-#
-# CONFIG_NETDEBUG is not set
-CONFIG_PACKET=y
-# CONFIG_PACKET_MMAP is not set
-CONFIG_UNIX=y
-# CONFIG_NET_KEY 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 is not set
-# CONFIG_IP_PNP_RARP is not set
-# CONFIG_NET_IPIP is not set
-# CONFIG_NET_IPGRE is not set
-# CONFIG_ARPD is not set
-CONFIG_SYN_COOKIES=y
-# 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 is not set
-# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
-# CONFIG_INET_XFRM_MODE_TUNNEL is not set
-# CONFIG_INET_XFRM_MODE_BEET is not set
-# CONFIG_INET_DIAG is not set
-# 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 is not set
-# CONFIG_INET6_XFRM_TUNNEL is not set
-# CONFIG_INET6_TUNNEL is not set
-# CONFIG_NETWORK_SECMARK is not set
-# CONFIG_NETFILTER is not set
-
-#
-# DCCP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_DCCP is not set
-
-#
-# SCTP Configuration (EXPERIMENTAL)
-#
-# CONFIG_IP_SCTP is not set
-
-#
-# TIPC Configuration (EXPERIMENTAL)
-#
-# CONFIG_TIPC is not set
-# CONFIG_ATM is not set
-# CONFIG_BRIDGE is not set
-# 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
-
-#
-# QoS and/or fair queueing
-#
-# CONFIG_NET_SCHED is not set
-
-#
-# Network testing
-#
-# CONFIG_NET_PKTGEN is not set
-# CONFIG_HAMRADIO is not set
-# CONFIG_IRDA is not set
-# CONFIG_BT is not set
-# CONFIG_IEEE80211 is not set
-
-#
-# Device Drivers
-#
-
-#
-# Generic Driver Options
-#
-CONFIG_STANDALONE=y
-CONFIG_PREVENT_FIRMWARE_BUILD=y
-CONFIG_FW_LOADER=m
-# CONFIG_SYS_HYPERVISOR is not set
-
-#
-# Connector - unified userspace <-> kernelspace linker
-#
-CONFIG_CONNECTOR=m
-
-#
-# Memory Technology Devices (MTD)
-#
-# CONFIG_MTD is not set
-
-#
-# Parallel port support
-#
-# CONFIG_PARPORT is not set
-
-#
-# Plug and Play support
-#
-# CONFIG_PNPACPI is not set
-
-#
-# Block devices
-#
-# CONFIG_BLK_DEV_COW_COMMON is not set
-CONFIG_BLK_DEV_LOOP=m
-# CONFIG_BLK_DEV_CRYPTOLOOP is not set
-# CONFIG_BLK_DEV_NBD 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
-
-#
-# ATA/ATAPI/MFM/RLL support
-#
-# CONFIG_IDE is not set
-
-#
-# SCSI device support
-#
-# CONFIG_RAID_ATTRS is not set
-# CONFIG_SCSI is not set
-# CONFIG_SCSI_NETLINK is not set
-
-#
-# Serial ATA (prod) and Parallel ATA (experimental) drivers
-#
-# CONFIG_ATA is not set
-
-#
-# Multi-device support (RAID and LVM)
-#
-# CONFIG_MD is not set
-
-#
-# Fusion MPT device support
-#
-# CONFIG_FUSION is not set
-
-#
-# IEEE 1394 (FireWire) support
-#
-
-#
-# I2O device support
-#
-
-#
-# Network device support
-#
-CONFIG_NETDEVICES=y
-CONFIG_DUMMY=y
-# CONFIG_BONDING is not set
-# CONFIG_EQUALIZER is not set
-# CONFIG_TUN is not set
-
-#
-# PHY device support
-#
-
-#
-# Ethernet (10 or 100Mbit)
-#
-# CONFIG_NET_ETHERNET is not set
-
-#
-# Ethernet (1000 Mbit)
-#
-
-#
-# Ethernet (10000 Mbit)
-#
-
-#
-# Token Ring devices
-#
-
-#
-# Wireless LAN (non-hamradio)
-#
-# CONFIG_NET_RADIO is not set
-
-#
-# Wan interfaces
-#
-# 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 is not set
-# CONFIG_PPPOE is not set
-# CONFIG_SLIP is not set
-CONFIG_SLHC=m
-# CONFIG_SHAPER is not set
-# CONFIG_NETCONSOLE is not set
-# CONFIG_NETPOLL is not set
-# CONFIG_NET_POLL_CONTROLLER is not set
-
-#
-# ISDN subsystem
-#
-# CONFIG_ISDN is not set
-
-#
-# Input device support
-#
-CONFIG_INPUT=y
-# CONFIG_INPUT_FF_MEMLESS is not set
-
-#
-# Userland interfaces
-#
-# CONFIG_INPUT_MOUSEDEV is not set
-# CONFIG_INPUT_JOYDEV is not set
-CONFIG_INPUT_TSDEV=y
-CONFIG_INPUT_TSDEV_SCREEN_X=240
-CONFIG_INPUT_TSDEV_SCREEN_Y=320
-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_GPIO=y
-CONFIG_KEYBOARD_PXA=y
-# CONFIG_INPUT_MOUSE is not set
-# CONFIG_INPUT_JOYSTICK is not set
-# CONFIG_INPUT_TOUCHSCREEN is not set
-# CONFIG_INPUT_MISC is not set
-
-#
-# Hardware I/O ports
-#
-# CONFIG_SERIO is not set
-# CONFIG_GAMEPORT is not set
-
-#
-# Character devices
-#
-CONFIG_VT=y
-CONFIG_VT_CONSOLE=y
-CONFIG_HW_CONSOLE=y
-# CONFIG_VT_HW_CONSOLE_BINDING is not set
-# CONFIG_SERIAL_NONSTANDARD is not set
-
-#
-# Serial drivers
-#
-# CONFIG_SERIAL_8250 is not set
-
-#
-# Non-8250 serial port support
-#
-CONFIG_SERIAL_PXA=y
-CONFIG_SERIAL_PXA_CONSOLE=y
-CONFIG_SERIAL_CORE=y
-CONFIG_SERIAL_CORE_CONSOLE=y
-CONFIG_UNIX98_PTYS=y
-CONFIG_LEGACY_PTYS=y
-CONFIG_LEGACY_PTY_COUNT=8
-
-#
-# IPMI
-#
-# CONFIG_IPMI_HANDLER is not set
-
-#
-# Watchdog Cards
-#
-# CONFIG_WATCHDOG is not set
-CONFIG_HW_RANDOM=y
-# CONFIG_NVRAM is not set
-# CONFIG_DTLK is not set
-# CONFIG_R3964 is not set
-# CONFIG_RAW_DRIVER is not set
-
-#
-# TPM devices
-#
-# CONFIG_TCG_TPM is not set
-
-#
-# I2C support
-#
-CONFIG_I2C=m
-CONFIG_I2C_CHARDEV=m
-
-#
-# I2C Algorithms
-#
-# CONFIG_I2C_ALGOBIT is not set
-# CONFIG_I2C_ALGOPCF is not set
-# CONFIG_I2C_ALGOPCA is not set
-
-#
-# I2C Hardware Bus support
-#
-CONFIG_I2C_PXA=m
-# CONFIG_I2C_PXA_SLAVE is not set
-# CONFIG_I2C_OCORES is not set
-# CONFIG_I2C_PARPORT_LIGHT is not set
-# CONFIG_I2C_STUB is not set
-# CONFIG_I2C_PCA_ISA is not set
-
-#
-# Miscellaneous I2C Chip support
-#
-# CONFIG_SENSORS_DS1337 is not set
-# CONFIG_SENSORS_DS1374 is not set
-# CONFIG_SENSORS_EEPROM is not set
-# CONFIG_SENSORS_PCF8574 is not set
-# CONFIG_SENSORS_PCA9539 is not set
-# CONFIG_SENSORS_PCF8591 is not set
-# CONFIG_SENSORS_MAX6875 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
-
-#
-# SPI support
-#
-CONFIG_SPI=y
-CONFIG_SPI_MASTER=y
-
-#
-# SPI Master Controller Drivers
-#
-# CONFIG_SPI_BITBANG is not set
-CONFIG_SPI_PXA2XX=m
-
-#
-# SPI Protocol Masters
-#
-# CONFIG_SPI_AT25 is not set
-
-#
-# Dallas's 1-wire bus
-#
-# CONFIG_W1 is not set
-
-#
-# Hardware Monitoring support
-#
-# CONFIG_HWMON is not set
-# CONFIG_HWMON_VID is not set
-
-#
-# Misc devices
-#
-
-#
-# Multifunction device drivers
-#
-# CONFIG_MFD_SM501 is not set
-
-#
-# LED devices
-#
-CONFIG_NEW_LEDS=y
-CONFIG_LEDS_CLASS=y
-
-#
-# LED drivers
-#
-
-#
-# LED Triggers
-#
-CONFIG_LEDS_TRIGGERS=y
-CONFIG_LEDS_TRIGGER_TIMER=y
-CONFIG_LEDS_TRIGGER_HEARTBEAT=y
-
-#
-# Multimedia devices
-#
-# CONFIG_VIDEO_DEV is not set
-
-#
-# Digital Video Broadcasting Devices
-#
-# CONFIG_DVB is not set
-# CONFIG_USB_DABUSB is not set
-
-#
-# Graphics support
-#
-CONFIG_BACKLIGHT_LCD_SUPPORT=y
-CONFIG_BACKLIGHT_CLASS_DEVICE=y
-# CONFIG_LCD_CLASS_DEVICE is not set
-# CONFIG_BACKLIGHT_EZX is not set
-CONFIG_FB=y
-# CONFIG_FIRMWARE_EDID is not set
-# CONFIG_FB_DDC is not set
-CONFIG_FB_CFB_FILLRECT=y
-CONFIG_FB_CFB_COPYAREA=y
-CONFIG_FB_CFB_IMAGEBLIT=y
-# 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_PXA=y
-CONFIG_FB_PXA_PARAMETERS=y
-# CONFIG_FB_MBX is not set
-# CONFIG_FB_VIRTUAL is not set
-
-#
-# Console display driver support
-#
-# CONFIG_VGA_CONSOLE is not set
-CONFIG_DUMMY_CONSOLE=y
-CONFIG_FRAMEBUFFER_CONSOLE=y
-# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
-CONFIG_FONTS=y
-# CONFIG_FONT_8x8 is not set
-# CONFIG_FONT_8x16 is not set
-# CONFIG_FONT_6x11 is not set
-# CONFIG_FONT_7x14 is not set
-# CONFIG_FONT_PEARL_8x8 is not set
-# CONFIG_FONT_ACORN_8x8 is not set
-CONFIG_FONT_MINI_4x6=y
-# CONFIG_FONT_SUN8x16 is not set
-# CONFIG_FONT_SUN12x22 is not set
-# CONFIG_FONT_10x18 is not set
-
-#
-# Logo configuration
-#
-# CONFIG_LOGO is not set
-
-#
-# Sound
-#
-# CONFIG_SOUND is not set
-
-#
-# HID Devices
-#
-CONFIG_HID=y
-# CONFIG_HID_DEBUG is not set
-
-#
-# USB support
-#
-CONFIG_USB_ARCH_HAS_HCD=y
-CONFIG_USB_ARCH_HAS_OHCI=y
-# CONFIG_USB_ARCH_HAS_EHCI is not set
-CONFIG_USB=y
-# CONFIG_USB_DEBUG is not set
-
-#
-# Miscellaneous USB options
-#
-# CONFIG_USB_DEVICEFS is not set
-# CONFIG_USB_DYNAMIC_MINORS is not set
-# CONFIG_USB_SUSPEND is not set
-# CONFIG_USB_OTG is not set
-
-#
-# USB Host Controller Drivers
-#
-# CONFIG_USB_ISP116X_HCD is not set
-CONFIG_USB_OHCI_HCD=y
-# CONFIG_USB_OHCI_BIG_ENDIAN_DESC is not set
-# CONFIG_USB_OHCI_BIG_ENDIAN_MMIO is not set
-CONFIG_USB_OHCI_LITTLE_ENDIAN=y
-# CONFIG_USB_SL811_HCD is not set
-
-#
-# USB Device Class drivers
-#
-# CONFIG_USB_ACM is not set
-# CONFIG_USB_PRINTER is not set
-
-#
-# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
-#
-
-#
-# may also be needed; see USB_STORAGE Help for more information
-#
-# CONFIG_USB_LIBUSUAL is not set
-
-#
-# USB Input Devices
-#
-# CONFIG_USB_HID is not set
-
-#
-# USB HID Boot Protocol drivers
-#
-# CONFIG_USB_KBD is not set
-# CONFIG_USB_MOUSE is not set
-# CONFIG_USB_AIPTEK is not set
-# CONFIG_USB_WACOM is not set
-# CONFIG_USB_ACECAD is not set
-# CONFIG_USB_KBTAB is not set
-# CONFIG_USB_POWERMATE is not set
-# CONFIG_USB_TOUCHSCREEN is not set
-# CONFIG_USB_YEALINK is not set
-# CONFIG_USB_XPAD is not set
-# CONFIG_USB_ATI_REMOTE is not set
-# CONFIG_USB_ATI_REMOTE2 is not set
-# CONFIG_USB_KEYSPAN_REMOTE is not set
-# CONFIG_USB_APPLETOUCH is not set
-# CONFIG_USB_GTCO is not set
-
-#
-# USB Imaging devices
-#
-# CONFIG_USB_MDC800 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_MII is not set
-# CONFIG_USB_USBNET is not set
-# CONFIG_USB_MON is not set
-
-#
-# USB port drivers
-#
-
-#
-# USB Serial Converter support
-#
-# 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_AUERSWALD 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_LD is not set
-# CONFIG_USB_TRANCEVIBRATOR is not set
-# CONFIG_USB_IOWARRIOR is not set
-
-#
-# USB DSL modem support
-#
-
-#
-# USB Gadget Support
-#
-CONFIG_USB_GADGET=y
-# CONFIG_USB_GADGET_DEBUG_FILES is not set
-CONFIG_USB_GADGET_SELECTED=y
-# CONFIG_USB_GADGET_NET2280 is not set
-# CONFIG_USB_GADGET_PXA2XX is not set
-CONFIG_USB_GADGET_PXA27X=y
-CONFIG_USB_PXA27X=y
-# CONFIG_USB_PXA2XX_SMALL is not set
-# CONFIG_USB_GADGET_GOKU is not set
-# CONFIG_USB_GADGET_LH7A40X is not set
-# CONFIG_USB_GADGET_OMAP is not set
-# CONFIG_USB_GADGET_AT91 is not set
-# CONFIG_USB_GADGET_DUMMY_HCD is not set
-# CONFIG_USB_GADGET_DUALSPEED is not set
-# CONFIG_USB_ZERO is not set
-CONFIG_USB_ETH=y
-# CONFIG_USB_ETH_RNDIS is not set
-# 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
-
-#
-# MMC/SD Card support
-#
-CONFIG_MMC=y
-# CONFIG_MMC_DEBUG is not set
-CONFIG_MMC_BLOCK=y
-CONFIG_MMC_PXA=y
-
-#
-# Real Time Clock
-#
-CONFIG_RTC_LIB=y
-# CONFIG_RTC_CLASS is not set
-
-#
-# File systems
-#
-CONFIG_EXT2_FS=m
-CONFIG_EXT2_FS_XATTR=y
-CONFIG_EXT2_FS_POSIX_ACL=y
-CONFIG_EXT2_FS_SECURITY=y
-# CONFIG_EXT2_FS_XIP is not set
-CONFIG_EXT3_FS=y
-CONFIG_EXT3_FS_XATTR=y
-CONFIG_EXT3_FS_POSIX_ACL=y
-CONFIG_EXT3_FS_SECURITY=y
-# CONFIG_EXT4DEV_FS is not set
-CONFIG_JBD=y
-# CONFIG_JBD_DEBUG is not set
-CONFIG_FS_MBCACHE=y
-CONFIG_REISERFS_FS=m
-# CONFIG_REISERFS_CHECK is not set
-# CONFIG_REISERFS_PROC_INFO is not set
-CONFIG_REISERFS_FS_XATTR=y
-CONFIG_REISERFS_FS_POSIX_ACL=y
-CONFIG_REISERFS_FS_SECURITY=y
-# 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_MINIX_FS is not set
-# CONFIG_ROMFS_FS is not set
-CONFIG_INOTIFY=y
-CONFIG_INOTIFY_USER=y
-# CONFIG_QUOTA is not set
-CONFIG_DNOTIFY=y
-CONFIG_AUTOFS_FS=y
-CONFIG_AUTOFS4_FS=y
-# CONFIG_FUSE_FS is not set
-
-#
-# CD-ROM/DVD Filesystems
-#
-CONFIG_ISO9660_FS=m
-CONFIG_JOLIET=y
-CONFIG_ZISOFS=y
-# 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 is not set
-
-#
-# Pseudo filesystems
-#
-CONFIG_PROC_FS=y
-CONFIG_PROC_SYSCTL=y
-CONFIG_SYSFS=y
-# CONFIG_TMPFS is not set
-# CONFIG_HUGETLB_PAGE is not set
-CONFIG_RAMFS=y
-# 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_CRAMFS=m
-# CONFIG_VXFS_FS is not set
-# CONFIG_HPFS_FS is not set
-# CONFIG_QNX4FS_FS is not set
-# CONFIG_SYSV_FS is not set
-# CONFIG_UFS_FS is not set
-
-#
-# Network File Systems
-#
-CONFIG_NFS_FS=m
-CONFIG_NFS_V3=y
-CONFIG_NFS_V3_ACL=y
-# CONFIG_NFS_V4 is not set
-CONFIG_NFS_DIRECTIO=y
-CONFIG_NFSD=m
-CONFIG_NFSD_V2_ACL=y
-CONFIG_NFSD_V3=y
-CONFIG_NFSD_V3_ACL=y
-# CONFIG_NFSD_V4 is not set
-CONFIG_NFSD_TCP=y
-CONFIG_LOCKD=m
-CONFIG_LOCKD_V4=y
-CONFIG_EXPORTFS=m
-CONFIG_NFS_ACL_SUPPORT=m
-CONFIG_NFS_COMMON=y
-CONFIG_SUNRPC=m
-# CONFIG_RPCSEC_GSS_KRB5 is not set
-# CONFIG_RPCSEC_GSS_SPKM3 is not set
-CONFIG_SMB_FS=m
-# CONFIG_SMB_NLS_DEFAULT is not set
-CONFIG_CIFS=m
-CONFIG_CIFS_STATS=y
-# CONFIG_CIFS_STATS2 is not set
-CONFIG_CIFS_WEAK_PW_HASH=y
-CONFIG_CIFS_XATTR=y
-CONFIG_CIFS_POSIX=y
-# 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
-# CONFIG_9P_FS is not set
-
-#
-# Partition Types
-#
-# CONFIG_PARTITION_ADVANCED is not set
-CONFIG_MSDOS_PARTITION=y
-
-#
-# Native Language Support
-#
-CONFIG_NLS=y
-CONFIG_NLS_DEFAULT="iso8859-1"
-CONFIG_NLS_CODEPAGE_437=m
-CONFIG_NLS_CODEPAGE_737=m
-CONFIG_NLS_CODEPAGE_775=m
-CONFIG_NLS_CODEPAGE_850=m
-CONFIG_NLS_CODEPAGE_852=m
-CONFIG_NLS_CODEPAGE_855=m
-CONFIG_NLS_CODEPAGE_857=m
-CONFIG_NLS_CODEPAGE_860=m
-CONFIG_NLS_CODEPAGE_861=m
-CONFIG_NLS_CODEPAGE_862=m
-CONFIG_NLS_CODEPAGE_863=m
-CONFIG_NLS_CODEPAGE_864=m
-CONFIG_NLS_CODEPAGE_865=m
-CONFIG_NLS_CODEPAGE_866=m
-CONFIG_NLS_CODEPAGE_869=m
-CONFIG_NLS_CODEPAGE_936=m
-CONFIG_NLS_CODEPAGE_950=m
-CONFIG_NLS_CODEPAGE_932=m
-CONFIG_NLS_CODEPAGE_949=m
-CONFIG_NLS_CODEPAGE_874=m
-CONFIG_NLS_ISO8859_8=m
-CONFIG_NLS_CODEPAGE_1250=m
-CONFIG_NLS_CODEPAGE_1251=m
-CONFIG_NLS_ASCII=m
-CONFIG_NLS_ISO8859_1=m
-CONFIG_NLS_ISO8859_2=m
-CONFIG_NLS_ISO8859_3=m
-CONFIG_NLS_ISO8859_4=m
-CONFIG_NLS_ISO8859_5=m
-CONFIG_NLS_ISO8859_6=m
-CONFIG_NLS_ISO8859_7=m
-CONFIG_NLS_ISO8859_9=m
-CONFIG_NLS_ISO8859_13=m
-CONFIG_NLS_ISO8859_14=m
-CONFIG_NLS_ISO8859_15=m
-CONFIG_NLS_KOI8_R=m
-CONFIG_NLS_KOI8_U=m
-CONFIG_NLS_UTF8=m
-
-#
-# Distributed Lock Manager
-#
-# CONFIG_DLM is not set
-
-#
-# Profiling support
-#
-# CONFIG_PROFILING is not set
-
-#
-# Kernel hacking
-#
-# CONFIG_PRINTK_TIME is not set
-# CONFIG_ENABLE_MUST_CHECK is not set
-# 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_LOG_BUF_SHIFT=14
-# CONFIG_DEBUG_BUGVERBOSE is not set
-CONFIG_FRAME_POINTER=y
-# CONFIG_DEBUG_USER is not set
-
-#
-# Security options
-#
-# CONFIG_KEYS is not set
-# CONFIG_SECURITY is not set
-
-#
-# Cryptographic options
-#
-# CONFIG_CRYPTO is not set
-
-#
-# Library routines
-#
-CONFIG_BITREVERSE=y
-CONFIG_CRC_CCITT=m
-CONFIG_CRC16=m
-CONFIG_CRC32=y
-CONFIG_LIBCRC32C=m
-CONFIG_ZLIB_INFLATE=m
-CONFIG_ZLIB_DEFLATE=m
-CONFIG_PLIST=y
-CONFIG_HAS_IOMEM=y
-CONFIG_HAS_IOPORT=y
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch
new file mode 100644
index 0000000000..3645aef040
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-emu.patch
@@ -0,0 +1,38 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:47:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:48:06.000000000 -0300
+@@ -214,8 +214,33 @@
+ },
+ };
+
++/* EMU */
++static struct resource e680_emu_resources[] = {
++ [0] = {
++ .start = EZX_IRQ_USB4V,
++ .end = EZX_IRQ_USB4V,
++ .flags = IORESOURCE_IRQ,
++ },
++ [1] = {
++ .start = EZX_IRQ_USB1V,
++ .end = EZX_IRQ_USB1V,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_emu_device = {
++ .name = "ezx-emu",
++ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
++ .num_resources = ARRAY_SIZE(e680_emu_resources),
++ .resource = e680_emu_resources,
++};
++
+ static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
++ &e680_emu_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
index 2a2d9c7a72..ffd8bbb754 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-kbd.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:54:39.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:56:30.000000000 -0300
-@@ -15,18 +15,21 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:07:33.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:10:47.000000000 -0300
+@@ -15,6 +15,7 @@
#include <linux/fb.h>
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,13 +10,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
- #include <asm/arch/pxafb.h>
+@@ -23,11 +24,13 @@
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
#include <asm/arch/mmc.h>
+#include <asm/arch/kbd.h>
#include "generic.h"
- #include "ezx.h"
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -24,8 +24,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#ifdef CONFIG_EZX_PCAP
extern int ezx_pcap_mmcsd_power(int);
-@@ -144,6 +147,58 @@
- .pxafb_lcd_power = &ezx_lcd_power,
+@@ -238,6 +241,58 @@
+ .resource = e680_emu_resources,
};
+static unsigned char e680_keycode[] = {
@@ -81,9 +81,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
- };
-
-@@ -162,6 +217,7 @@
+ &e680_pcap_device,
+ &e680_emu_device,
+@@ -258,6 +313,7 @@
set_pxa_fb_info(&e680_fb_info);
pxa_set_mci_info(&e680_mci_platform_data);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
index 82dc93b611..72ba219a44 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-leds.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/leds/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/leds/Kconfig 2007-06-08 18:39:04.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Kconfig 2007-06-08 18:39:12.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Kconfig 2007-09-06 00:49:29.000000000 -0300
++++ linux-2.6.21/drivers/leds/Kconfig 2007-09-06 00:51:36.000000000 -0300
@@ -111,6 +111,13 @@
This option enables support for the LEDs on the
Motorola A780 GSM Phone.
@@ -23,8 +23,8 @@ Index: linux-2.6.21/drivers/leds/Kconfig
depends on LEDS_TRIGGERS
Index: linux-2.6.21/drivers/leds/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/leds/Makefile 2007-06-08 18:39:04.000000000 +0200
-+++ linux-2.6.21/drivers/leds/Makefile 2007-06-08 18:39:12.000000000 +0200
+--- linux-2.6.21.orig/drivers/leds/Makefile 2007-09-06 00:49:29.000000000 -0300
++++ linux-2.6.21/drivers/leds/Makefile 2007-09-06 00:49:30.000000000 -0300
@@ -17,6 +17,7 @@
obj-$(CONFIG_LEDS_H1940) += leds-h1940.o
obj-$(CONFIG_LEDS_COBALT) += leds-cobalt.o
@@ -36,8 +36,8 @@ Index: linux-2.6.21/drivers/leds/Makefile
Index: linux-2.6.21/drivers/leds/leds-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/leds/leds-e680.c 2007-06-08 18:39:12.000000000 +0200
-@@ -0,0 +1,309 @@
++++ linux-2.6.21/drivers/leds/leds-e680.c 2007-09-06 00:51:22.000000000 -0300
+@@ -0,0 +1,235 @@
+/*
+ * EZX Platform LED Driver for the Motorola E680(i) GSM Phone
+ *
@@ -73,147 +73,100 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+extern int ezx_pcap_read(u_int8_t, u_int32_t *);
+extern int ezx_pcap_write(u_int8_t, u_int32_t);
+
-+static enum led_brightness old_red;
-+static enum led_brightness old_green;
-+static enum led_brightness old_blue;
-+
+typedef struct {
-+ unsigned char ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 disactive*/
-+ unsigned char ind_GPIO_green; /*Indicator Green control GPIO 47: 0 active, 1 disactive*/
-+ unsigned char pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
-+ unsigned char pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
-+ unsigned char pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
-+ unsigned char pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
-+ unsigned char pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
-+ unsigned char pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
-+ unsigned char pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
++ u_int8_t ind_GPIO_red; /*Indicator Red control GPIO 46: 0 active, 1 inactive */
++ u_int8_t ind_GPIO_green; /*Indicator Green control GPIO 47: 0 inactive, 1 active */
++ u_int8_t pcap_LEDR_en; /*pcap LEDR_EN bit value: 1 =Red LED(&Green) sink circuit enabled*/
++ u_int8_t pcap_LEDG_en; /*pcap LEDG_EN bit value:1 =Green(->Blue)LED sink circuit enabled*/
++ u_int8_t pcap_LEDR_CTRL; /* 4bits Sets the timing for the red(&Green) LED sink circuit*/
++ u_int8_t pcap_LEDG_CTRL; /* 4bits Sets the timing for the GREEN (->Blue) LED sink circuit*/
++ u_int8_t pcap_LEDR_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDR*/
++ u_int8_t pcap_LEDG_I; /* 2 bits 00 3mA,01 4mA, 10 5mA, 11 9mA, sets the pulsed current level for LEDG*/
++// u_int8_t pcap_SKIP_on; /*1=The ON timing sequence defined by LEDx_CTRL is executed on every other cycle*/
+} PCAP2_LED_REGISTER_VALUE;
+
+const PCAP2_LED_REGISTER_VALUE led_register_value[]=
+{
-+ /* on/off pulsepower timing intensity */
-+ {0x1,0x1, 0x0,0x0, 0x0,0x0, 0x0,0x0,0x0}, /* OFF */
-+ {0x0,0x1, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* RED */
-+ {0x1,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* GREEN */
-+ {0x0,0x0, 0x1,0x0, 0xc,0x0, 0x1,0x0,0x0}, /* ORANGE = RED + GREEN */
-+ {0x1,0x1, 0x0,0x1, 0x0,0xc, 0x0,0x0,0x0}, /* BLUE */
-+ {0x0,0x1, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_RED = RED + BLUE */
-+ {0x1,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* LIGHT_GREEN = GREEN + BLUE */
-+ {0x0,0x0, 0x1,0x1, 0xc,0xc, 0x1,0x0,0x0}, /* WHITE = RED + GREEN + BLUE */
++ {0x1,0x0, 0x0,0x0, 0x0,0x0, 0x1,0x0}, /* 0 OFF */
++
++ {0x0,0x0, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 1 RED */
++ {0x1,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 2 GREEN */
++ {0x0,0x1, 0x1,0x0, 0xf,0x0, 0x1,0x0}, /* 3 ORANGE */
++ {0x1,0x0, 0x0,0x1, 0x0,0xf, 0x0,0x0}, /* 4 BLUE */
++ {0x0,0x0, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 5 MAGENTA */
++ {0x1,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 6 CYAN */
++ {0x0,0x1, 0x1,0x1, 0xf,0xf, 0x1,0x0}, /* 7 WHITE */
+};
+
-+static void e680led_led_set( enum led_brightness red, enum led_brightness green, enum led_brightness blue )
++static void e680led_set(struct led_classdev *led_cdev, enum led_brightness value)
+{
-+ unsigned int tempValue = 0;
-+ unsigned int value = 0;
-+ unsigned int stateIndex = 0;
-+ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl, ledg_ctrl, ledr_i, ledg_i,skip;
-+
-+ printk( KERN_DEBUG "e680led_led_set: red=%d, green=%d, blue=%d", red, green, blue );
-+ stateIndex = ( ( blue << 2 ) | ( green << 1 ) | ( red ) ) & 0x7;
-+ printk( KERN_DEBUG "LED stateIndex is %d", stateIndex );
-+ gpio_red = led_register_value[stateIndex].ind_GPIO_red & 0x1;
-+ gpio_green = led_register_value[stateIndex].ind_GPIO_green & 0x1;
-+ ledr_en = led_register_value[stateIndex].pcap_LEDR_en & 0x1;
-+ ledg_en = led_register_value[stateIndex].pcap_LEDG_en & 0x1;
-+ ledr_ctrl = led_register_value[stateIndex].pcap_LEDR_CTRL & 0xf;
-+ ledg_ctrl = led_register_value[stateIndex].pcap_LEDG_CTRL & 0xf;
-+ ledr_i = led_register_value[stateIndex].pcap_LEDR_I & 0x3;
-+ ledg_i = led_register_value[stateIndex].pcap_LEDG_I & 0x3;
-+ skip = led_register_value[stateIndex].pcap_SKIP_on & 0x1;
-+
-+ /* disable LEDs */
-+ if( ezx_pcap_read(SSP_PCAP_ADJ_PERIPH_REGISTER,&tempValue) != SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_WARNING "LED PCAP Read Failed\n" );
-+ return;
++ unsigned int tempValue;
++ unsigned char gpio_red, gpio_green, ledr_en, ledg_en, ledr_ctrl,
++ ledg_ctrl, ledr_i, ledg_i, skip, t, color;
++ unsigned char t_mask[2] = { 0xc, 0xc };
++
++ skip = 0;
++ if (value & 128) {
++ value &= (~128);
++ skip = 1;
+ }
-+ tempValue &= (~SSP_PCAP_LED_MASK);
-+ if( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) != SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_WARNING "LED PCAP Write Failed (Clear Data)\n" );
-+ return;
++
++ /* 7 colors - simple on */
++ if (value <= 7)
++ color = value;
++ /* 4 colors - 11 timed on */
++ else if (value <= 51) {
++ value -= 7;
++ color = ((value-1)%4)+1;
++ t = ((value-1)/4)+1;
++ t_mask[0] = t;
++ t_mask[1] = t;
++ }
++ /* 3 colors - 22 change color */
++ else if (value <= 84) {
++ value -= 51;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[1] = t;
++ }
++ else if (value <= 117) {
++ value -= 84;
++ color = ((value-1)%3)+5;
++ t = ((value-1)/3)+1;
++ t_mask[0] = t;
+ }
++ /* 3 colors - alternate with blue */
++ else if (value <= 120) {
++ color = value-113;
++ t_mask[0] = 0xa;
++ t_mask[1] = 0xb;
++ }
++ /* invalid value */
++ else
++ color = 1;
+
-+ /* configure GPIOs as output */
-+ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
-+ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
++ gpio_red = led_register_value[color].ind_GPIO_red;
++ gpio_green = led_register_value[color].ind_GPIO_green;
++ ledr_en = led_register_value[color].pcap_LEDR_en;
++ ledg_en = led_register_value[color].pcap_LEDG_en;
++ ledr_ctrl = led_register_value[color].pcap_LEDR_CTRL & t_mask[0];
++ ledg_ctrl = led_register_value[color].pcap_LEDG_CTRL & t_mask[1];
++ ledr_i = led_register_value[color].pcap_LEDR_I;
++ ledg_i = led_register_value[color].pcap_LEDG_I;
+
-+ //FIXME: Simplify this logic
-+ if ( (gpio_green && gpio_red) )
-+ {
-+ /*Disable Red & Green signal*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 1); /*IND_CNTL_R_BUL Low active*/
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 0); /*IND_CNTL_G_BUL High active*/
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
-+
-+ printk( KERN_DEBUG "LED GPIO Green & Red Disable\n");
-+ } else if ( gpio_green && !gpio_red )
-+ {
-+ /*Green Disable, Red Enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 0);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 0);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) & (~GPIO_bit(IND_CNTL_G_BUL));
-+
-+ printk( KERN_DEBUG "LED GPIO Green Disable, Red Enable\n");
-+ } else if (gpio_red && !gpio_green )
-+ {
-+ /*Red Disable, Green Enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 1);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) | GPIO_bit(IND_CNTL_R_BUL);
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 1);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
-+ printk( KERN_DEBUG "LED GPIO Red Disable, Green Enable");
-+ }else
-+ {
-+ /*Red & Green enable*/
-+ pxa_gpio_set_value(IND_CNTL_R_BUL, 0);
-+ PGSR(IND_CNTL_R_BUL) = PGSR(IND_CNTL_R_BUL) & (~GPIO_bit(IND_CNTL_R_BUL));
-+
-+ pxa_gpio_set_value(IND_CNTL_G_BUL, 1);
-+ PGSR(IND_CNTL_G_BUL) = PGSR(IND_CNTL_G_BUL) | GPIO_bit(IND_CNTL_G_BUL);
-+ printk( KERN_DEBUG "LED GPIO Red & Green Enable\n");
-+ }
++ ezx_pcap_read(PCAP_REG_PERIPH,&tempValue);
+
-+ /* Write PCAP LED Peripheral Control Register*/
-+ value = ( ledr_en | (ledg_en <<1) | (ledr_ctrl <<2) | (ledg_ctrl <<6) |
-+ (ledr_i << 10) | (ledg_i <<12) | (skip <<14) ) & 0x7fff;
-+ tempValue |= (value <<SSP_PCAP_LED_SHIFT);
-+
-+ if ( ezx_pcap_write(SSP_PCAP_ADJ_PERIPH_REGISTER,tempValue) == SSP_PCAP_SUCCESS )
-+ {
-+ printk( KERN_DEBUG "LED PCAP Write Success (0x%x :0x%x)\n",tempValue,value);
-+ old_red = red;
-+ old_green = green;
-+ old_blue = blue;
-+ return;
-+ } else {
-+ printk( KERN_DEBUG "LED PCAP Write Failed (State Change)\n");
-+ return;
-+ }
-+}
++ tempValue &= (~SSP_PCAP_LED_MASK);
+
-+static void e680led_red_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_red_set: %d\n", value );
-+ e680led_led_set( 1 && value, old_green, old_blue );
-+}
++ pxa_gpio_set_value(IND_CNTL_R_BUL, gpio_red);
++ pxa_gpio_set_value(IND_CNTL_G_BUL, gpio_green);
+
-+static void e680led_green_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_green_set: %d\n", value );
-+ e680led_led_set( old_red, 1 && value, old_blue );
-+}
++ /* Write PCAP LED Peripheral Control Register*/
++ tempValue = ((ledr_en | (ledg_en << 1) | (ledr_ctrl << 2) |
++ (ledg_ctrl << 6) | (ledr_i << 10) | (ledg_i << 12) |
++ (skip << 14)) & 0x7fff) << SSP_PCAP_LED_SHIFT;
+
-+static void e680led_blue_set(struct led_classdev *led_cdev, enum led_brightness value)
-+{
-+ printk( KERN_DEBUG "e680led_blue_set: %d\n", value );
-+ e680led_led_set( old_red, old_green, 1 && value );
++ ezx_pcap_write(PCAP_REG_PERIPH,tempValue);
+}
+
+static void e680led_keypad_set(struct led_classdev *led_cdev, enum led_brightness value)
@@ -238,25 +191,13 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+#endif
+}
+
-+static struct led_classdev e680_red_led = {
-+ .name = "e680:red",
-+ .default_trigger = "none",
-+ .brightness_set = e680led_red_set,
-+};
-+
-+static struct led_classdev e680_green_led = {
-+ .name = "e680:green",
++static struct led_classdev e680_led = {
++ .name = "e680:led",
+ .default_trigger = "none",
-+ .brightness_set = e680led_green_set,
++ .brightness_set = e680led_set,
+};
+
-+static struct led_classdev e680_blue_led = {
-+ .name = "e680:blue",
-+ .default_trigger = "none",
-+ .brightness_set = e680led_blue_set,
-+};
-+
-+static struct led_classdev e680_keypad_led = {
++static struct led_classdev e680_keypad = {
+ .name = "e680:keypad",
+ .default_trigger = "none",
+ .brightness_set = e680led_keypad_set,
@@ -265,19 +206,15 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+#ifdef CONFIG_PM
+static int e680led_suspend(struct platform_device *dev, pm_message_t state)
+{
-+ led_classdev_suspend(&e680_red_led);
-+ led_classdev_suspend(&e680_green_led);
-+ led_classdev_suspend(&e680_blue_led);
-+ led_classdev_suspend(&e680_keypad_led);
++ led_classdev_suspend(&e680_led);
++ led_classdev_suspend(&e680_keypad);
+ return 0;
+}
+
+static int e680led_resume(struct platform_device *dev)
+{
-+ led_classdev_resume(&e680_red_led);
-+ led_classdev_resume(&e680_green_led);
-+ led_classdev_resume(&e680_blue_led);
-+ led_classdev_resume(&e680_keypad_led);
++ led_classdev_resume(&e680_led);
++ led_classdev_resume(&e680_keypad);
+ return 0;
+}
+#endif
@@ -286,35 +223,25 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+{
+ int ret;
+
-+ ret = led_classdev_register(&pdev->dev, &e680_red_led);
-+ if (ret < 0)
-+ return ret;
++ /* configure GPIOs as output */
++ pxa_gpio_mode(IND_CNTL_R_BUL | GPIO_OUT);
++ pxa_gpio_mode(IND_CNTL_G_BUL | GPIO_OUT);
+
-+ ret = led_classdev_register(&pdev->dev, &e680_green_led);
++ ret = led_classdev_register(&pdev->dev, &e680_led);
+ if (ret < 0)
-+ led_classdev_unregister(&e680_red_led);
-+
-+ ret = led_classdev_register(&pdev->dev, &e680_blue_led);
-+ if (ret < 0) {
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ }
++ return ret;
+
-+ ret = led_classdev_register(&pdev->dev, &e680_keypad_led);
++ ret = led_classdev_register(&pdev->dev, &e680_keypad);
+ if (ret < 0) {
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ led_classdev_unregister(&e680_blue_led);
++ led_classdev_unregister(&e680_led);
+ }
+ return ret;
+}
+
+static int e680led_remove(struct platform_device *pdev)
+{
-+ led_classdev_unregister(&e680_red_led);
-+ led_classdev_unregister(&e680_green_led);
-+ led_classdev_unregister(&e680_blue_led);
-+ led_classdev_unregister(&e680_keypad_led);
++ led_classdev_unregister(&e680_led);
++ led_classdev_unregister(&e680_keypad);
+ return 0;
+}
+
@@ -337,7 +264,6 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+
+static void __exit e680led_exit(void)
+{
-+ e680led_led_set( 0, 0, 0 );
+ platform_driver_unregister(&e680led_driver);
+}
+
@@ -349,18 +275,23 @@ Index: linux-2.6.21/drivers/leds/leds-e680.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:39:12.000000000 +0200
-@@ -242,9 +242,15 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:23.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:30.000000000 -0300
+@@ -339,11 +339,20 @@
},
};
+static struct platform_device e680led_device = {
+ .name = "e680-led",
+ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
+};
+
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
&pcap_ts_device,
&e680locksw_device,
+ &e680led_device,
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
index 36b52a916a..e669a51957 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-locksw.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:48.000000000 +0200
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-08 18:38:59.000000000 +0200
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:48:32.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:49:23.000000000 -0300
@@ -16,6 +16,7 @@
#include <linux/mmc/host.h>
#include <linux/irq.h>
@@ -10,8 +10,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
-@@ -220,8 +221,30 @@
- },
+@@ -317,10 +318,32 @@
+ .resource = pcap_ts_resources,
};
+static struct gpio_keys_button e680locksw_buttons[] = {
@@ -36,6 +36,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+};
+
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
&pcap_ts_device,
+ &e680locksw_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
index b5bb2931f1..7f0826163d 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-mci.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:43:08.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-05-24 00:48:20.000000000 -0300
-@@ -13,11 +13,14 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:32:30.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:54:44.000000000 -0300
+@@ -13,6 +13,8 @@
#include <linux/init.h>
#include <linux/platform_device.h>
#include <linux/fb.h>
@@ -11,13 +11,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
#include <asm/mach-types.h>
#include <asm/mach/arch.h>
- #include <asm/arch/pxa-regs.h>
+@@ -20,12 +22,106 @@
#include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
+ #include <asm/arch/ezx-pcap.h>
+#include <asm/arch/mmc.h>
#include "generic.h"
- #include "ezx.h"
-@@ -25,6 +28,99 @@
+
extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
extern void ezx_backlight_power(int);
@@ -117,7 +118,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
static struct pxafb_mode_info mode_e680 = {
.pixclock = 150000,
.xres = 240,
-@@ -65,6 +161,7 @@
+@@ -136,6 +232,7 @@
PSLR = 0x05800f00;
set_pxa_fb_info(&e680_fb_info);
@@ -125,15 +126,3 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
/* clear EMU MUX1/MUX2 (low) to close the audio path to EMU */
pxa_gpio_mode(GPIO_EMU_MUX1|GPIO_OUT);
-Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-05-24 00:48:55.000000000 -0300
-@@ -83,6 +83,7 @@
- config PXA_EZX_E680
- bool "Motorola E680 GSM Phone"
- select PXA27x
-+ select EZX_MCI_SD
-
- config PXA_EZX_A780
- bool "Motorola A780 GSM Phone"
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch
new file mode 100644
index 0000000000..12ce023749
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-pcap.patch
@@ -0,0 +1,90 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:41:38.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-06 00:44:56.000000000 -0300
+@@ -19,6 +19,7 @@
+ #include <asm/arch/pxa-regs.h>
+ #include <asm/arch/pxafb.h>
+ #include <asm/arch/ezx.h>
++#include <asm/arch/ezx-pcap.h>
+
+ #include "generic.h"
+
+@@ -48,7 +49,77 @@
+ .pxafb_lcd_power = &ezx_lcd_power,
+ };
+
++/* PCAP */
++static int __init e680_pcap_init(void)
++{
++ /* initialize PCAP registers */
++ /* set SW1 sleep to keep SW1 1.3v in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE10, 0);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE11, 0);
++
++ /* SW1 active in sync mode */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE00, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW1_MODE01, 0);
++
++ /* at SW1 -core voltage to 1.30V */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW10_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW11_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW12_DVS, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_SW13_DVS, 0);
++
++ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V3_LOWPWR, 0);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V8_LOWPWR, 0);
++
++ /*
++ * when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
++ * camera for e680
++ */
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V4_LOWPWR, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_VREG2_V6_LOWPWR, 0);
++
++ /* set Vc to low power mode when AP sleep */
++// SSP_PCAP_bit_set( PCAP_BIT_LOWPWR_CTRL_VC_STBY);
++
++ /* set VAUX2 to low power mode when AP sleep */
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_STBY, 1);
++ ezx_pcap_bit_set(PCAP_BIT_LOWPWR_VAUX2_LOWPWR, 1);
++
++ return 0;
++}
++
++static struct pcap_platform_data e680_pcap_platform_data = {
++ .port = 1,
++ .cs = GPIO_SPI_CE,
++ .flags = PCAP_MCI_SD,
++ .clk = 1,
++ .init = e680_pcap_init,
++};
++
++static struct resource e680_pcap_resources[] = {
++ [0] = {
++ .start = IRQ_GPIO1,
++ .end = IRQ_GPIO1,
++ .flags = IORESOURCE_IRQ,
++ },
++};
++
++struct platform_device e680_pcap_device = {
++ .name = "ezx-pcap",
++ .id = -1,
++ .num_resources = ARRAY_SIZE(e680_pcap_resources),
++ .resource = e680_pcap_resources,
++ .dev = {
++ .platform_data = &e680_pcap_platform_data,
++ },
++};
++
+ static struct platform_device *devices[] __initdata = {
++ &e680_pcap_device,
+ };
+
+ static void __init e680_init(void)
diff --git a/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
index 52f9ce34b5..109623c68c 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/e680-ts.patch
@@ -1,9 +1,9 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:32:49.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 20:33:26.000000000 -0300
-@@ -124,6 +124,27 @@
- .exit = e680_mci_exit,
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:10:47.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-09-07 11:11:01.000000000 -0300
+@@ -293,9 +293,34 @@
+ },
};
+/* PCAP_TS */
@@ -23,17 +23,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+struct platform_device pcap_ts_device = {
+ .name = "pcap-ts",
+ .id = -1,
++ .dev = {
++ .parent = &e680_pcap_device.dev,
++ },
+ .num_resources = ARRAY_SIZE(pcap_ts_resources),
+ .resource = pcap_ts_resources,
+};
+
- static struct pxafb_mode_info mode_e680 = {
- .pixclock = 150000,
- .xres = 240,
-@@ -200,6 +221,7 @@
- };
-
static struct platform_device *devices[] __initdata = {
+ &e680_pcap_device,
+ &e680_emu_device,
+ &pcap_ts_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch
new file mode 100644
index 0000000000..1dda2e544c
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-asoc.patch
@@ -0,0 +1,1302 @@
+Index: linux-2.6.21/sound/soc/codecs/pcap2.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/codecs/pcap2.c 2007-09-07 14:28:32.000000000 -0300
+@@ -0,0 +1,796 @@
++/*
++ * pcap2.c - PCAP2 ASIC Audio driver
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/module.h>
++#include <linux/delay.h>
++#include <linux/moduleparam.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/pm.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/pcm_params.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++#include <sound/initval.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx-pcap.h>
++#include <asm/arch/ezx.h>
++#include <asm/arch/hardware.h>
++
++#include "pcap2.h"
++
++#define AUDIO_NAME "pcap2-codec"
++#define PCAP2_VERSION "0.1"
++
++extern int ezx_pcap_write(u_int8_t, u_int32_t);
++extern int ezx_pcap_read(u_int8_t, u_int32_t *);
++static struct snd_soc_device *pcap2_codec_socdev;
++
++/*
++ * Debug
++ */
++
++//#define PCAP2_DEBUG
++
++#ifdef PCAP2_DEBUG
++#define dbg(format, arg...) \
++ printk(KERN_DEBUG AUDIO_NAME ": " format "\n" , ## arg)
++#else
++#define dbg(format, arg...)
++#endif
++
++#define err(format, arg...) \
++ printk(KERN_ERR AUDIO_NAME ": " format "\n" , ## arg)
++#define info(format, arg...) \
++ printk(KERN_INFO AUDIO_NAME ": " format "\n" , ## arg)
++#define warn(format, arg...) \
++ printk(KERN_WARNING AUDIO_NAME ": " format "\n" , ## arg)
++
++#define dump_registers() pcap2_codec_read(NULL, 13); \
++ pcap2_codec_read(NULL, 12); \
++ pcap2_codec_read(NULL, 11); \
++ pcap2_codec_read(NULL, 26);
++
++
++
++
++/*
++ * ASoC limits register value to 16 bits and pcap uses 32 bit registers
++ * to work around this, we get 16 bits from low, mid or high positions.
++ * ASoC limits register number to 8 bits we use 0x1f for register
++ * number and 0xe0 for register offset. -WM
++ */
++static int pcap2_codec_write(struct snd_soc_codec *codec, unsigned int reg,
++ unsigned int value)
++{
++ unsigned int tmp;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++
++ if (reg & SL) {
++ tmp &= 0xffff0000;
++ tmp |= (value & 0xffff);
++ }
++ else if (reg & SM) {
++ tmp &= 0xff0000ff;
++ tmp |= ((value << 8) & 0x00ffff00);
++ }
++ else if (reg & SH) {
++ tmp &= 0xffff;
++ tmp |= ((value << 16) & 0xffff0000);
++ }
++ else
++ tmp = value;
++
++ dbg("codec_write reg=%x, rval=%08x, fval=%08x", reg, tmp, value);
++ ezx_pcap_write((reg & 0x1f), tmp);
++ return 0;
++
++}
++
++static unsigned int pcap2_codec_read(struct snd_soc_codec *codec, unsigned int reg)
++{
++ unsigned int tmp, ret;
++
++ ezx_pcap_read((reg & 0x1f), &tmp);
++ ret = tmp;
++ if (reg & SL)
++ ret = (tmp & 0xffff);
++ else if (reg & SM)
++ ret = ((tmp >> 8) & 0xffff);
++ else if (reg & SH)
++ ret = ((tmp >> 16) & 0xffff);
++
++ dbg("codec_read reg=%x, rval=%08x, fval=%08x", reg, tmp, ret);
++ return(ret);
++
++}
++
++static const char *pcap2_output_select[] = {"2ch", "2->1ch", "2->1ch -3db", "2->1ch -6db"};
++
++static const struct soc_enum pcap2_enum[] = {
++SOC_ENUM_SINGLE((PCAP2_OUTPUT_AMP|SH), 3, 4, pcap2_output_select),
++};
++
++static const struct snd_kcontrol_new pcap2_input_mixer_controls[] = {
++SOC_DAPM_SINGLE("A3 Switch", (PCAP2_INPUT_AMP|SL), 6, 1, 0),
++SOC_DAPM_SINGLE("A5 Switch", (PCAP2_INPUT_AMP|SL), 8, 1, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_output_mixer_controls[] = {
++SOC_DAPM_SINGLE("A1 Switch", (PCAP2_OUTPUT_AMP|SL), 0, 1, 0),
++SOC_DAPM_SINGLE("A2 Switch", (PCAP2_OUTPUT_AMP|SL), 1, 1, 0),
++SOC_DAPM_SINGLE("AR Switch", (PCAP2_OUTPUT_AMP|SL), 5, 1, 0),
++SOC_DAPM_SINGLE("AL Switch", (PCAP2_OUTPUT_AMP|SL), 6, 1, 0),
++};
++
++/* pcap2 codec non DAPM controls */
++static const struct snd_kcontrol_new pcap2_codec_snd_controls[] = {
++SOC_SINGLE("Output gain", (PCAP2_OUTPUT_AMP|SM), 5, 15, 0),
++SOC_SINGLE("Input gain", (PCAP2_INPUT_AMP|SL), 0, 31, 0),
++};
++
++static const struct snd_kcontrol_new pcap2_codec_dm_mux_control[] = {
++ SOC_DAPM_ENUM("Output Mode", pcap2_enum[0]),
++};
++
++/* add non dapm controls */
++static int pcap2_codec_add_controls(struct snd_soc_codec *codec)
++{
++ int err, i;
++
++ for (i = 0; i < ARRAY_SIZE(pcap2_codec_snd_controls); i++) {
++ if ((err = snd_ctl_add(codec->card,
++ snd_soc_cnew(&pcap2_codec_snd_controls[i],codec, NULL))) < 0)
++ return err;
++ }
++
++ return 0;
++}
++
++/* pcap2 codec DAPM controls */
++static const struct snd_soc_dapm_widget pcap2_codec_dapm_widgets[] = {
++ SND_SOC_DAPM_DAC("ST_DAC", "ST_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_DAC("CDC_DAC", "CDC_DAC playback", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_ADC("CDC_ADC", "CDC_DAC capture", SND_SOC_NOPM, 0, 0),
++ SND_SOC_DAPM_PGA("PGA_ST", (PCAP2_OUTPUT_AMP|SL), 9, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_CDC", (PCAP2_OUTPUT_AMP|SL), 8, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_R", (PCAP2_OUTPUT_AMP|SL), 11, 0, NULL, 0),
++ SND_SOC_DAPM_PGA("PGA_L", (PCAP2_OUTPUT_AMP|SL), 12, 0, NULL, 0),
++ SND_SOC_DAPM_MUX("Downmixer", SND_SOC_NOPM, 0, 0, pcap2_codec_dm_mux_control),
++ SND_SOC_DAPM_PGA("PGA_A1CTRL", (PCAP2_OUTPUT_AMP|SH), 1, 1, NULL, 0),
++ SND_SOC_DAPM_MIXER("Output Mixer", SND_SOC_NOPM, 0, 0, &pcap2_output_mixer_controls[0], ARRAY_SIZE(pcap2_output_mixer_controls)),
++ SND_SOC_DAPM_OUTPUT("A1"), /* Earpiece */
++ SND_SOC_DAPM_OUTPUT("A2"), /* LoudSpeaker */
++ SND_SOC_DAPM_OUTPUT("AR"), /* headset right */
++ SND_SOC_DAPM_OUTPUT("AL"), /* headset left */
++
++ SND_SOC_DAPM_MICBIAS("BIAS1", (PCAP2_INPUT_AMP|SL), 10, 0),
++ SND_SOC_DAPM_MICBIAS("BIAS2", (PCAP2_INPUT_AMP|SL), 11, 0),
++ SND_SOC_DAPM_MIXER("Input Mixer", SND_SOC_NOPM, 0, 0, &pcap2_input_mixer_controls[0], ARRAY_SIZE(pcap2_input_mixer_controls)),
++ SND_SOC_DAPM_INPUT("A3"), /* Headset Mic */
++ SND_SOC_DAPM_INPUT("A5"), /* Builtin Mic */
++};
++
++static const char *audio_map[][3] = {
++ { "A1", NULL, "Output Mixer" },
++ { "A2", NULL, "Output Mixer" },
++ { "AR", NULL, "Output Mixer" },
++ { "AL", NULL, "Output Mixer" },
++
++ { "Output Mixer", "A1 Switch", "PGA_A1CTRL" },
++ { "Output Mixer", "A2 Switch", "Downmixer" },
++ { "Output Mixer", "AR Switch", "PGA_R" },
++ { "Output Mixer", "AL Switch", "PGA_L" },
++
++ { "PGA_A1CTRL", NULL, "Downmixer" },
++
++ { "Downmixer", "2->1ch", "PGA_L" },
++ { "Downmixer", "2->1ch", "PGA_R" },
++ { "Downmixer", "2->1ch -3db", "PGA_L" },
++ { "Downmixer", "2->1ch -3db", "PGA_R" },
++ { "Downmixer", "2->1ch -6db", "PGA_L" },
++ { "Downmixer", "2->1ch -6db", "PGA_R" },
++ { "Downmixer", "2ch", "PGA_R" },
++
++ { "PGA_R", NULL, "PGA_ST" },
++ { "PGA_L", NULL, "PGA_ST" },
++ { "PGA_R", NULL, "PGA_CDC" },
++
++ { "PGA_ST", NULL, "ST_DAC" },
++ { "PGA_CDC", NULL, "CDC_DAC" },
++
++ /* input path */
++ { "BIAS1", NULL, "A3" },
++ { "BIAS2", NULL, "A5" },
++
++ { "Input Mixer", "A3 Switch", "BIAS1" },
++ { "Input Mixer", "A5 Switch", "BIAS2" },
++
++ { "PGA_R", NULL, "Input Mixer" },
++
++ { "PGA_CDC", NULL, "PGA_R" },
++ { "CDC_ADC", NULL, "PGA_CDC" },
++
++ /* terminator */
++ {NULL, NULL, NULL},
++};
++
++static int pcap2_codec_add_widgets(struct snd_soc_codec *codec)
++{
++ int i;
++
++ for(i = 0; i < ARRAY_SIZE(pcap2_codec_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &pcap2_codec_dapm_widgets[i]);
++ }
++
++ /* set up audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0],
++ audio_map[i][1], audio_map[i][2]);
++ }
++
++ snd_soc_dapm_new_widgets(codec);
++ return 0;
++}
++
++static int pcap2_codec_dapm_event(struct snd_soc_codec *codec, int event)
++{
++ unsigned int input = pcap2_codec_read(codec, PCAP2_INPUT_AMP);
++
++ input &= ~PCAP2_INPUT_AMP_LOWPWR;
++
++ switch (event) {
++ case SNDRV_CTL_POWER_D0:
++ case SNDRV_CTL_POWER_D1:
++ case SNDRV_CTL_POWER_D2:
++ case SNDRV_CTL_POWER_D3hot: /* Off, with power */
++ dbg("dapm: ON\n");
++ break;
++ case SNDRV_CTL_POWER_D3cold: /* Off, without power */
++ input |= PCAP2_INPUT_AMP_LOWPWR;
++ dbg("dapm: OFF\n");
++ break;
++ }
++ codec->dapm_state = event;
++ pcap2_codec_write(codec, PCAP2_INPUT_AMP, input);
++ return 0;
++}
++
++static int pcap2_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 11025:
++ tmp |= PCAP2_ST_DAC_RATE_11025;
++ break;
++ case 12000:
++ tmp |= PCAP2_ST_DAC_RATE_12000;
++ break;
++ case 16000:
++ tmp |= PCAP2_ST_DAC_RATE_16000;
++ break;
++ case 22050:
++ tmp |= PCAP2_ST_DAC_RATE_22050;
++ break;
++ case 24000:
++ tmp |= PCAP2_ST_DAC_RATE_24000;
++ break;
++ case 32000:
++ tmp |= PCAP2_ST_DAC_RATE_32000;
++ break;
++ case 44100:
++ tmp |= PCAP2_ST_DAC_RATE_44100;
++ break;
++ case 48000:
++ tmp |= PCAP2_ST_DAC_RATE_48000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_ST_DAC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_RATE_MASK;
++ switch(params_rate(params)) {
++ case 8000:
++ break;
++ case 16000:
++ tmp |= PCAP2_CODEC_RATE_16000;
++ break;
++ default:
++ return -EINVAL;
++ }
++ tmp |= PCAP2_CODEC_RESET_DF;
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++
++ return 0;
++}
++
++static int pcap2_hw_free(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ struct snd_soc_dapm_widget *w;
++ unsigned int tmp;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp &= ~(PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ list_for_each_entry(w, &codec->dapm_widgets, list) {
++ if ((!strcmp(w->name, "CDC_DAC") || !strcmp(w->name, "CDC_ADC")) && w->connected)
++ goto in_use;
++ }
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp &= ~(PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++in_use:
++ snd_soc_dapm_sync_endpoints(codec);
++
++ return 0;
++}
++
++static int pcap2_set_dai_sysclk(struct snd_soc_codec_dai *codec_dai,
++ int clk_id, unsigned int freq, int dir)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++
++ unsigned int tmp;
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++
++ tmp &= ~PCAP2_ST_DAC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_ST_DAC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_ST_DAC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_ST_DAC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_ST_DAC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_ST_DAC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_ST_DAC_CLK_26M;
++ break;
++/* case EXT_MCLK:
++ tmp |= PCAP2_ST_DAC_CLK_MCLK;
++ break;
++ case FSYNC:
++ tmp |= PCAP2_ST_DAC_CLK_FSYNC;
++ break;
++ case BITCLK:
++ tmp |= PCAP2_ST_DAC_CLK_BITCLK;
++ break;
++*/ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++
++ tmp &= ~PCAP2_CODEC_CLKSEL_MASK;
++ switch (clk_id) {
++ case PCAP2_CLK_AP:
++ tmp |= PCAP2_CODEC_CLKSEL_AP;
++ break;
++ case PCAP2_CLK_BP:
++ break;
++ default:
++ return -ENODEV;
++ }
++
++ tmp &= ~PCAP2_CODEC_CLK_MASK;
++ switch (freq) {
++ case 13000000:
++ break;
++/* case 15M36:
++ tmp |= PCAP2_CODEC_CLK_15M36;
++ break;
++ case 16M8:
++ tmp |= PCAP2_CODEC_CLK_16M8;
++ break;
++ case 19M44:
++ tmp |= PCAP2_CODEC_CLK_19M44;
++ break;
++*/ case 26000000:
++ tmp |= PCAP2_CODEC_CLK_26M;
++ break;
++ default:
++ return -EINVAL;
++ }
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_set_dai_fmt(struct snd_soc_codec_dai *codec_dai,
++ unsigned int fmt)
++{
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp = 0;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* ST_DAC */
++
++ /* disable CODEC */
++ pcap2_codec_write(codec, PCAP2_CODEC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x1;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_I2S:
++ tmp |= 0x4000;
++ break;
++/* case SND_SOC_NET:
++ tmp |= 0x2000;
++ break;
++*/ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x60000;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x40000;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x20000;
++ break;
++ }
++ /* set dai to AP */
++ tmp |= 0x1000;
++
++ /* set BCLK */
++ tmp |= 0x18000;
++
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ /* MONO_DAC */
++
++ /* disable ST_DAC */
++ pcap2_codec_write(codec, PCAP2_ST_DAC, 0);
++
++ switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
++ case SND_SOC_DAIFMT_CBM_CFM:
++ break;
++ case SND_SOC_DAIFMT_CBS_CFS:
++ tmp |= 0x2;
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
++ case SND_SOC_DAIFMT_DSP_B:
++ break;
++ default:
++ return -EINVAL;
++ }
++
++ switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
++ case SND_SOC_DAIFMT_IB_IF:
++ break;
++ case SND_SOC_DAIFMT_NB_NF:
++ tmp |= 0x600;
++ break;
++ case SND_SOC_DAIFMT_IB_NF:
++ tmp |= 0x400;
++ break;
++ case SND_SOC_DAIFMT_NB_IF:
++ tmp |= 0x200;
++ break;
++ }
++ if (codec_dai->id == PCAP2_MONO_DAI)
++ /* set dai to AP */
++ tmp |= 0x8000;
++
++ tmp |= 0x5; /* IHF / OHF */
++
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ return 0;
++}
++
++static int pcap2_prepare(struct snd_pcm_substream *substream)
++{
++
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_codec *codec = codec_dai->codec;
++ unsigned int tmp;
++ /* FIXME enable clock only if codec is master */
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 1);
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 0);
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_ST_DAC);
++ tmp |= (PCAP2_ST_DAC_EN | PCAP2_ST_DAC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_ST_DAC, tmp);
++ }
++ else {
++ if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
++ snd_soc_dapm_set_endpoint(codec, "CDC_DAC", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "CDC_ADC", 1);
++ snd_soc_dapm_set_endpoint(codec, "ST_DAC", 0);
++ tmp = pcap2_codec_read(codec, PCAP2_CODEC);
++ tmp |= (PCAP2_CODEC_EN | PCAP2_CODEC_CLK_EN);
++ pcap2_codec_write(codec, PCAP2_CODEC, tmp);
++ }
++ snd_soc_dapm_sync_endpoints(codec);
++ mdelay(1);
++#ifdef PCAP2_DEBUG
++ dump_registers();
++#endif
++ return 0;
++}
++
++/*
++ * Define codec DAI.
++ */
++struct snd_soc_codec_dai pcap2_dai[] = {
++{
++ .name = "PCAP2 MONO",
++ .id = 0,
++ .playback = {
++ .stream_name = "CDC_DAC playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .stream_name = "CDC_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_16000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 STEREO",
++ .id = 1,
++ .playback = {
++ .stream_name = "ST_DAC playback",
++ .channels_min = 1,
++ .channels_max = 2,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = { /* FIXME: PCAP support this?? */
++ .stream_name = "ST_DAC capture",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = (SNDRV_PCM_RATE_8000 | SNDRV_PCM_RATE_11025 |
++ SNDRV_PCM_RATE_16000 | SNDRV_PCM_RATE_22050 |
++ SNDRV_PCM_RATE_32000 | SNDRV_PCM_RATE_44100 |
++ SNDRV_PCM_RATE_48000),
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++{
++ .name = "PCAP2 BP",
++ .id = 2,
++ .playback = {
++ .stream_name = "BP playback",
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++ .prepare = pcap2_prepare,
++ .hw_params = pcap2_hw_params,
++ .hw_free = pcap2_hw_free,
++ },
++ .dai_ops = {
++// .digital_mute = pcap2_mute,
++ .set_fmt = pcap2_set_dai_fmt,
++ .set_sysclk = pcap2_set_dai_sysclk,
++ },
++},
++};
++EXPORT_SYMBOL_GPL(pcap2_dai);
++
++static int pcap2_codec_suspend(struct platform_device *pdev, pm_message_t state)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_suspend");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ return 0;
++}
++
++static int pcap2_codec_resume(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++
++ dbg("pcap2_codec_resume");
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ pcap2_codec_dapm_event(codec, codec->suspend_dapm_state);
++ return 0;
++}
++
++/*
++ * initialise the PCAP2 driver
++ * register the mixer and dsp interfaces with the kernel
++ */
++static int pcap2_codec_init(struct snd_soc_device *socdev)
++{
++ struct snd_soc_codec *codec = socdev->codec;
++ int ret = 0;
++
++ dbg("pcap2_codec_init");
++ codec->name = "PCAP2 Audio";
++ codec->owner = THIS_MODULE;
++ codec->read = pcap2_codec_read;
++ codec->write = pcap2_codec_write;
++ codec->dapm_event = pcap2_codec_dapm_event;
++ codec->dai = pcap2_dai;
++ codec->num_dai = ARRAY_SIZE(pcap2_dai);
++
++ /* register pcms */
++ ret = snd_soc_new_pcms(socdev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1);
++ if (ret < 0) {
++ return ret;
++ }
++ /* power on device */
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3hot);
++ /* set the update bits */
++
++ pcap2_codec_add_controls(codec);
++ pcap2_codec_add_widgets(codec);
++ ret = snd_soc_register_card(socdev);
++ if (ret < 0) {
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++ }
++
++ return ret;
++}
++
++static int pcap2_codec_probe(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct pcap2_codec_setup_data *setup;
++ struct snd_soc_codec *codec;
++ int ret = 0;
++ info("PCAP2 Audio Codec %s", PCAP2_VERSION);
++
++ setup = socdev->codec_data;
++ codec = kzalloc(sizeof(struct snd_soc_codec), GFP_KERNEL);
++ if (codec == NULL)
++ return -ENOMEM;
++
++ socdev->codec = codec;
++ mutex_init(&codec->mutex);
++ INIT_LIST_HEAD(&codec->dapm_widgets);
++ INIT_LIST_HEAD(&codec->dapm_paths);
++
++ pcap2_codec_socdev = socdev;
++
++ ret = pcap2_codec_init(socdev);
++ return ret;
++}
++
++/* power down chip and remove */
++static int pcap2_codec_remove(struct platform_device *pdev)
++{
++ struct snd_soc_device *socdev = platform_get_drvdata(pdev);
++ struct snd_soc_codec *codec = socdev->codec;
++ if (codec->control_data)
++ pcap2_codec_dapm_event(codec, SNDRV_CTL_POWER_D3cold);
++ snd_soc_free_pcms(socdev);
++ snd_soc_dapm_free(socdev);
++
++ kfree(codec);
++
++ return 0;
++}
++
++/* codec device ops */
++struct snd_soc_codec_device soc_codec_dev_pcap2 = {
++ .probe = pcap2_codec_probe,
++ .remove = pcap2_codec_remove,
++ .suspend = pcap2_codec_suspend,
++ .resume = pcap2_codec_resume,
++};
++
++EXPORT_SYMBOL_GPL(soc_codec_dev_pcap2);
++
++MODULE_DESCRIPTION("ASoC PCAP2 codec");
++MODULE_AUTHOR("Daniel Ribeiro");
++MODULE_LICENSE("GPL");
+Index: linux-2.6.21/sound/soc/codecs/pcap2.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/codecs/pcap2.h 2007-09-07 12:13:49.000000000 -0300
+@@ -0,0 +1,81 @@
++/*
++ * 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.
++ */
++
++#ifndef _PCAP2_H
++#define _PCAP2_H
++
++/* 16 bit reads/writes on pcap registers (ugly workaround) */
++#define SL (1 << 5) /* lower 16 bits */
++#define SM (1 << 6) /* mid 16 bits */
++#define SH (1 << 7) /* higher 16 bits */
++
++/* PCAP2 register space */
++#define PCAP2_CODEC 0x0b
++#define PCAP2_OUTPUT_AMP 0x0c
++#define PCAP2_ST_DAC 0x0d
++#define PCAP2_INPUT_AMP 0x1a
++
++#define PCAP2_MONO_DAI 0
++#define PCAP2_STEREO_DAI 1
++#define PCAP2_BP_DAI 2
++
++#define PCAP2_CLK_BP 0
++#define PCAP2_CLK_AP 1
++
++#define PCAP2_CODEC_EN 0x2000
++#define PCAP2_CODEC_CLK_EN 0x1000
++#define PCAP2_CODEC_RESET_DF 0x800
++#define PCAP2_CODEC_RATE_MASK 0x4000
++#define PCAP2_CODEC_RATE_8000 0x0
++#define PCAP2_CODEC_RATE_16000 0x4000
++#define PCAP2_CODEC_CLKSEL_MASK 0x10000
++#define PCAP2_CODEC_CLKSEL_AP 0x10000
++#define PCAP2_CODEC_CLKSEL_BP 0x0
++#define PCAP2_CODEC_CLK_MASK 0x1c0
++#define PCAP2_CODEC_CLK_13M 0x0
++#define PCAP2_CODEC_CLK_15M36 0x40
++#define PCAP2_CODEC_CLK_16M8 0x80
++#define PCAP2_CODEC_CLK_19M44 0xc0
++#define PCAP2_CODEC_CLK_26M 0x100
++
++#define PCAP2_ST_DAC_EN 0x80
++#define PCAP2_ST_DAC_CLK_EN 0x20
++#define PCAP2_ST_DAC_RESET_DF 0x40
++#define PCAP2_ST_DAC_RATE_MASK 0xf00
++#define PCAP2_ST_DAC_RATE_8000 0x0
++#define PCAP2_ST_DAC_RATE_11025 0x100
++#define PCAP2_ST_DAC_RATE_12000 0x200
++#define PCAP2_ST_DAC_RATE_16000 0x300
++#define PCAP2_ST_DAC_RATE_22050 0x400
++#define PCAP2_ST_DAC_RATE_24000 0x500
++#define PCAP2_ST_DAC_RATE_32000 0x600
++#define PCAP2_ST_DAC_RATE_44100 0x700
++#define PCAP2_ST_DAC_RATE_48000 0x800
++#define PCAP2_ST_DAC_CLKSEL_MASK 0x80000
++#define PCAP2_ST_DAC_CLKSEL_AP 0x80000
++#define PCAP2_ST_DAC_CLKSEL_BP 0x0
++#define PCAP2_ST_DAC_CLK_MASK 0x1c
++#define PCAP2_ST_DAC_CLK_13M 0x0
++#define PCAP2_ST_DAC_CLK_15M36 0x4
++#define PCAP2_ST_DAC_CLK_16M8 0x8
++#define PCAP2_ST_DAC_CLK_19M44 0xc
++#define PCAP2_ST_DAC_CLK_26M 0x10
++#define PCAP2_ST_DAC_CLK_MCLK 0x14
++#define PCAP2_ST_DAC_CLK_FSYNC 0x18
++#define PCAP2_ST_DAC_CLK_BITCLK 0x1c
++
++#define PCAP2_INPUT_AMP_LOWPWR 0x80000
++#define PCAP2_INPUT_AMP_V2EN2 0x200000
++
++#define PCAP2_OUTPUT_AMP_PGAR_EN 0x800
++#define PCAP2_OUTPUT_AMP_PGAL_EN 0x1000
++#define PCAP2_OUTPUT_AMP_CDC_SW 0x100
++#define PCAP2_OUTPUT_AMP_ST_DAC_SW 0x200
++
++extern struct snd_soc_codec_dai pcap2_dai[];
++extern struct snd_soc_codec_device soc_codec_dev_pcap2;
++
++#endif
+Index: linux-2.6.21/sound/soc/pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/Kconfig 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Kconfig 2007-09-07 12:13:49.000000000 -0300
+@@ -60,4 +60,13 @@
+ Say Y if you want to add support for SoC audio on Sharp
+ Zaurus SL-C6000x models (Tosa).
+
++config SND_PXA2XX_SOC_EZX
++ tristate "SoC Audio support for EZX"
++ depends on SND_PXA2XX_SOC && PXA_EZX
++ select SND_PXA2XX_SOC_SSP
++ select SND_SOC_PCAP2
++ help
++ Say Y if you want to add support for SoC audio on
++ Motorola EZX Phones (a780/e680).
++
+ endmenu
+Index: linux-2.6.21/sound/soc/pxa/ezx.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/sound/soc/pxa/ezx.c 2007-09-07 13:12:24.000000000 -0300
+@@ -0,0 +1,349 @@
++/*
++ * ezx.c - Machine specific code for EZX phones
++ *
++ * Copyright (C) 2007 Daniel Ribeiro <drwyrm@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ */
++
++#include <linux/module.h>
++#include <linux/moduleparam.h>
++#include <linux/timer.h>
++#include <linux/interrupt.h>
++#include <linux/platform_device.h>
++#include <sound/driver.h>
++#include <sound/core.h>
++#include <sound/pcm.h>
++#include <sound/soc.h>
++#include <sound/soc-dapm.h>
++
++#include <asm/mach-types.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/hardware.h>
++
++#include <asm/arch/ezx-pcap.h>
++
++#include "../codecs/pcap2.h"
++#include "pxa2xx-pcm.h"
++#include "pxa2xx-ssp.h"
++
++#define GPIO_HW_ATTENUATE_A780 96
++
++static struct snd_soc_codec *control_codec;
++
++static void ezx_ext_control(struct snd_soc_codec *codec)
++{
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_A1)))
++ snd_soc_dapm_set_endpoint(codec, "Headset", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "Headset", 0);
++ if (ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_MB2)))
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 1);
++ else
++ snd_soc_dapm_set_endpoint(codec, "External Mic", 0);
++
++ snd_soc_dapm_sync_endpoints(codec);
++}
++
++static irqreturn_t jack_irq(int irq, void *data)
++{
++ ezx_ext_control(control_codec);
++ return IRQ_HANDLED;
++}
++
++
++/*
++ * Alsa operations
++ * Only implement the required operations for your platform.
++ * These operations are specific to the machine only.
++ */
++
++ /*
++ * Called by ALSA when a PCM substream is opened, private data can be allocated.
++ */
++static int ezx_machine_startup(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec *codec = rtd->socdev->codec;
++
++ /* check the jack status at stream startup */
++ ezx_ext_control(codec);
++ return 0;
++}
++
++/*
++ * Called by ALSA when the hardware params are set by application. This
++ * function can also be called multiple times and can allocate buffers
++ * (using snd_pcm_lib_* ). It's non-atomic.
++ */
++static int ezx_machine_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret;
++
++ /* set codec DAI configuration */
++ if (codec_dai->id == PCAP2_STEREO_DAI)
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_NF | SND_SOC_DAIFMT_CBM_CFM);
++ else
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* Turn on clock output on CLK_PIO */
++ OSCC |= 0x8;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_AP,
++ 13000000, SND_SOC_CLOCK_IN);
++ if(ret < 0)
++ return ret;
++
++ /* set cpu DAI configuration */
++ ret = cpu_dai->dai_ops.set_fmt(cpu_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_tristate(cpu_dai, 0);
++ if (ret < 0)
++ return ret;
++
++ ret = cpu_dai->dai_ops.set_sysclk(cpu_dai,PXA2XX_SSP_CLK_EXT,
++ 0, SND_SOC_CLOCK_IN);
++ if (ret < 0)
++ return ret;
++
++ return 0;
++}
++
++/*
++ * Free's resources allocated by hw_params, can be called multiple times
++ */
++static int ezx_machine_hw_free(struct snd_pcm_substream *substream)
++{
++ OSCC &= ~0x8; /* turn off clock output on CLK_PIO */
++
++ return 0;
++}
++
++static int ezx_machine_prepare(struct snd_pcm_substream *substream)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++ struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++
++ if (codec_dai->id == PCAP2_STEREO_DAI) {
++ /* override pxa2xx-ssp sample size for stereo/network mode */
++ SSCR0_P(cpu_dai->id+1) &= ~(SSCR0_DSS | SSCR0_EDSS);
++ SSCR0_P(cpu_dai->id+1) |= (SSCR0_EDSS | SSCR0_DataSize(16));
++ }
++ return 0;
++}
++
++/* machine Alsa PCM operations */
++static struct snd_soc_ops ezx_ops = {
++ .startup = ezx_machine_startup,
++ .prepare = ezx_machine_prepare,
++ .hw_free = ezx_machine_hw_free,
++ .hw_params = ezx_machine_hw_params,
++};
++
++static int bp_hw_params(struct snd_pcm_substream *substream,
++ struct snd_pcm_hw_params *params)
++{
++ struct snd_soc_pcm_runtime *rtd = substream->private_data;
++ struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
++// struct snd_soc_cpu_dai *cpu_dai = rtd->dai->cpu_dai;
++ int ret = 0;
++ /* set codec DAI configuration */
++ ret = codec_dai->dai_ops.set_fmt(codec_dai, SND_SOC_DAIFMT_DSP_B |
++ SND_SOC_DAIFMT_IB_IF | SND_SOC_DAIFMT_CBM_CFM);
++ if(ret < 0)
++ return ret;
++
++ /* set clock source */
++ ret = codec_dai->dai_ops.set_sysclk(codec_dai, PCAP2_CLK_BP,
++ 13000000, SND_SOC_CLOCK_IN);
++
++ return ret;
++}
++
++
++
++/* machine dapm widgets */
++static const struct snd_soc_dapm_widget ezx_dapm_widgets[] = {
++ SND_SOC_DAPM_HP("Headset", NULL),
++ SND_SOC_DAPM_SPK("Earpiece", NULL),
++ SND_SOC_DAPM_SPK("Loudspeaker", NULL),
++ SND_SOC_DAPM_MIC("Built-in Mic", NULL),
++ SND_SOC_DAPM_MIC("External Mic", NULL),
++};
++
++/* machine audio map (connections to the codec pins) */
++static const char *audio_map[][3] = {
++ { "Headset", NULL, "AR" },
++ { "Headset", NULL, "AL" },
++ { "Earpiece", NULL, "A1" },
++ { "Loudspeaker", NULL, "A2" },
++
++ { "Built-in Mic", NULL, "A5" },
++ { "External Mic", NULL, "A3" },
++
++ {NULL, NULL, NULL},
++};
++
++/*
++ * Initialise the machine audio subsystem.
++ */
++static int ezx_machine_init(struct snd_soc_codec *codec)
++{
++ int i;
++ /* mark unused codec pins as NC */
++// snd_soc_dapm_set_endpoint(codec, "FIXME", 0);
++ control_codec = codec;
++
++ /* Add ezx specific controls */
++// for (i = 0; i < ARRAY_SIZE(ezx_controls); i++) {
++// if ((err = snd_ctl_add(codec->card, snd_soc_cnew(&ezx_controls[i], codec, NULL))) < 0)
++// return err;
++// }
++
++ /* Add ezx specific widgets */
++ for(i = 0; i < ARRAY_SIZE(ezx_dapm_widgets); i++) {
++ snd_soc_dapm_new_control(codec, &ezx_dapm_widgets[i]);
++ }
++ /* Set up ezx specific audio path interconnects */
++ for(i = 0; audio_map[i][0] != NULL; i++) {
++ snd_soc_dapm_connect_input(codec, audio_map[i][0], audio_map[i][1], audio_map[i][2]);
++ }
++
++ /* synchronise subsystem */
++ snd_soc_dapm_sync_endpoints(codec);
++ return 0;
++}
++
++static struct snd_soc_cpu_dai bp_dai =
++{
++ .name = "Baseband",
++ .id = 0,
++ .type = SND_SOC_DAI_PCM,
++ .playback = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .capture = {
++ .channels_min = 1,
++ .channels_max = 1,
++ .rates = SNDRV_PCM_RATE_8000,
++ .formats = SNDRV_PCM_FMTBIT_S16_LE,
++ },
++ .ops = {
++// .startup = bp_startup,
++// .shutdown = bp_shutdown,
++ .hw_params = bp_hw_params,
++// .hw_free = bp_hw_free,
++ },
++};
++
++/* template digital audio interface glue - connects codec <--> CPU */
++static struct snd_soc_dai_link ezx_dai[] = {
++{
++ .name = "PCAP2 STEREO",
++ .stream_name = "stereo playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_STEREO_DAI],
++ .init = ezx_machine_init,
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 MONO",
++ .stream_name = "mono playback",
++ .cpu_dai = &pxa_ssp_dai[PXA2XX_DAI_SSP3],
++ .codec_dai = &pcap2_dai[PCAP2_MONO_DAI],
++// .init = ezx_machine_init, /* the stereo call already registered our controls */
++ .ops = &ezx_ops,
++},
++{
++ .name = "PCAP2 BP",
++ .stream_name = "BP Audio",
++ .cpu_dai = &bp_dai,
++ .codec_dai = &pcap2_dai[PCAP2_BP_DAI],
++},
++};
++
++/* template audio machine driver */
++static struct snd_soc_machine snd_soc_machine_ezx = {
++ .name = "Motorola EZX",
++// .probe
++// .remove
++// .suspend_pre
++// .resume_post
++ .dai_link = ezx_dai,
++ .num_links = ARRAY_SIZE(ezx_dai),
++};
++
++/* template audio subsystem */
++static struct snd_soc_device ezx_snd_devdata = {
++ .machine = &snd_soc_machine_ezx,
++ .platform = &pxa2xx_soc_platform,
++ .codec_dev = &soc_codec_dev_pcap2,
++};
++
++static struct platform_device *ezx_snd_device;
++
++static int __init ezx_init(void)
++{
++ int ret;
++ ezx_snd_device = platform_device_alloc("soc-audio", -1);
++ if (!ezx_snd_device)
++ return -ENOMEM;
++
++ platform_set_drvdata(ezx_snd_device, &ezx_snd_devdata);
++ ezx_snd_devdata.dev = &ezx_snd_device->dev;
++ ret = platform_device_add(ezx_snd_device);
++
++ if (ret)
++ platform_device_put(ezx_snd_device);
++ /* configure gpio for ssp3 */
++ pxa_gpio_mode(GPIO83_SFRM3_MD); /* SFRM */
++ pxa_gpio_mode(GPIO81_STXD3_MD); /* TXD */
++ pxa_gpio_mode(GPIO52_SCLK3_MD); /* SCLK */
++ pxa_gpio_mode(GPIO89_SRXD3_MD); /* RXD */
++
++ /* configure gpio for ssp2 */
++ pxa_gpio_mode(37 | GPIO_IN); /* SFRM */
++ pxa_gpio_mode(38 | GPIO_IN); /* TXD */
++ pxa_gpio_mode(22 | GPIO_IN); /* SCLK */
++ pxa_gpio_mode(88 | GPIO_IN); /* RXD */
++
++ pxa_gpio_mode(GPIO_HW_ATTENUATE_A780 | GPIO_OUT);
++ pxa_gpio_set_value(GPIO_HW_ATTENUATE_A780, 1);
++
++ /* request jack irq */
++ request_irq(EZX_IRQ_HEADJACK, &jack_irq, SA_INTERRUPT, "headphone jack", NULL);
++ request_irq(EZX_IRQ_MIC, &jack_irq, SA_INTERRUPT, "mic jack", NULL);
++
++ return ret;
++}
++
++static void __exit ezx_exit(void)
++{
++ free_irq(EZX_IRQ_HEADJACK, NULL);
++ free_irq(EZX_IRQ_MIC, NULL);
++ platform_device_unregister(ezx_snd_device);
++}
++
++module_init(ezx_init);
++module_exit(ezx_exit);
++
+Index: linux-2.6.21/sound/soc/codecs/Makefile
+===================================================================
+--- linux-2.6.21.orig/sound/soc/codecs/Makefile 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/codecs/Makefile 2007-09-07 12:13:49.000000000 -0300
+@@ -2,8 +2,10 @@
+ snd-soc-wm8731-objs := wm8731.o
+ snd-soc-wm8750-objs := wm8750.o
+ snd-soc-wm9712-objs := wm9712.o
++snd-soc-pcap2-objs := pcap2.o
+
+ obj-$(CONFIG_SND_SOC_AC97_CODEC) += snd-soc-ac97.o
+ obj-$(CONFIG_SND_SOC_WM8731) += snd-soc-wm8731.o
+ obj-$(CONFIG_SND_SOC_WM8750) += snd-soc-wm8750.o
+ obj-$(CONFIG_SND_SOC_WM9712) += snd-soc-wm9712.o
++obj-$(CONFIG_SND_SOC_PCAP2) += snd-soc-pcap2.o
+Index: linux-2.6.21/sound/soc/codecs/Kconfig
+===================================================================
+--- linux-2.6.21.orig/sound/soc/codecs/Kconfig 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/codecs/Kconfig 2007-09-07 12:13:49.000000000 -0300
+@@ -13,3 +13,7 @@
+ config SND_SOC_WM9712
+ tristate
+ depends on SND_SOC
++
++config SND_SOC_PCAP2
++ tristate
++ depends on SND_SOC && EZX_PCAP
+Index: linux-2.6.21/sound/soc/pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/sound/soc/pxa/Makefile 2007-09-07 12:13:43.000000000 -0300
++++ linux-2.6.21/sound/soc/pxa/Makefile 2007-09-07 12:13:49.000000000 -0300
+@@ -14,9 +14,10 @@
+ snd-soc-poodle-objs := poodle.o
+ snd-soc-tosa-objs := tosa.o
+ snd-soc-spitz-objs := spitz.o
++snd-soc-ezx-objs := ezx.o
+
+ obj-$(CONFIG_SND_PXA2XX_SOC_CORGI) += snd-soc-corgi.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_POODLE) += snd-soc-poodle.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_TOSA) += snd-soc-tosa.o
+ obj-$(CONFIG_SND_PXA2XX_SOC_SPITZ) += snd-soc-spitz.o
+-
++obj-$(CONFIG_SND_PXA2XX_SOC_EZX) += snd-soc-ezx.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
index 7054ef549b..c0284e3a1f 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-backlight.patch
@@ -5,8 +5,8 @@
Index: linux-2.6.21/drivers/video/backlight/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-06-02 20:03:06.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-06-02 20:26:49.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Kconfig 2007-08-01 19:38:48.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Kconfig 2007-08-01 20:00:56.000000000 -0300
@@ -63,3 +63,12 @@
help
If you have a Frontpath ProGear say Y to enable the
@@ -22,8 +22,8 @@ Index: linux-2.6.21/drivers/video/backlight/Kconfig
+
Index: linux-2.6.21/drivers/video/backlight/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-06-02 20:03:06.000000000 -0300
-+++ linux-2.6.21/drivers/video/backlight/Makefile 2007-06-02 20:26:49.000000000 -0300
+--- linux-2.6.21.orig/drivers/video/backlight/Makefile 2007-08-01 19:38:48.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/Makefile 2007-08-01 20:00:56.000000000 -0300
@@ -6,3 +6,4 @@
obj-$(CONFIG_BACKLIGHT_HP680) += hp680_bl.o
obj-$(CONFIG_BACKLIGHT_LOCOMO) += locomolcd.o
@@ -32,7 +32,7 @@ Index: linux-2.6.21/drivers/video/backlight/Makefile
Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-06-02 20:26:49.000000000 -0300
++++ linux-2.6.21/drivers/video/backlight/ezx_bl.c 2007-08-01 20:00:56.000000000 -0300
@@ -0,0 +1,142 @@
+/*
+ * Backlight Driver for Motorola A780 and E680(i) GSM Phones.
@@ -178,9 +178,9 @@ Index: linux-2.6.21/drivers/video/backlight/ezx_bl.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:19:44.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:26:49.000000000 -0300
-@@ -67,6 +67,12 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-08-01 19:39:02.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-08-01 20:00:56.000000000 -0300
+@@ -65,6 +65,12 @@
#endif
EXPORT_SYMBOL(ezx_backlight_power);
@@ -190,13 +190,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+ .id = -1,
+};
+
- /* SSP */
- struct platform_device ezxssp_device = {
- .name = "ezx-ssp",
-@@ -179,6 +185,7 @@
+ /* OHCI Controller */
+ static int ezx_ohci_init(struct device *dev)
+ {
+@@ -121,6 +127,7 @@
+
+ static struct platform_device *devices[] __initdata = {
&ezxbp_device,
- &ezxpcap_device,
- &ezxemu_device,
+ &ezxbacklight_device,
};
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
index a0b3b61b12..8e8abcb738 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-bp.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:03:12.000000000 -0300
-@@ -100,9 +100,41 @@
+--- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-08-16 15:52:21.000000000 -0300
+@@ -86,8 +86,40 @@
.init = ezx_ohci_init,
};
@@ -39,15 +39,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
+ &ezxbp_device,
};
static int __init ezx_init(void)
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:03:11.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-08-16 15:52:20.000000000 -0300
@@ -102,6 +102,9 @@
endchoice
@@ -61,8 +60,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-06-02 18:26:22.000000000 -0300
-@@ -0,0 +1,249 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c 2007-08-16 15:52:43.000000000 -0300
+@@ -0,0 +1,262 @@
+/*
+ * BP handshake code for Motorola EZX phones
+ *
@@ -110,7 +109,16 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+{
+ if (pxa_gpio_get_value(GPIO_BB_WDI2) == 0) {
+ DEBUGP("BP request poweroff!\n");
-+// pm_power_off();
++ /*
++ * It is correct to power off here, the following line is
++ * commented out because e680 lowers WDI2 when BP is in
++ * flash mode, otherwise WDI2 is used to detect low
++ * battery. You can safely uncomment this line if you are
++ * using this kernel with BP in normal mode.
++ */
++#ifndef CONFIG_PXA_EZX_E680
++ pm_power_off();
++#endif
+ }
+}
+
@@ -186,6 +194,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+ if (!bp_handshake_passed()) {
+ handshake();
+ if (bp_handshake_passed()) {
++ /* FIXME: (test) try to not disable irq_wdi2 and drain battery */
+ disable_irq(bp->irq_wdi2);
+
+ /* set bp_rdy handle for usb ipc */
@@ -202,7 +211,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+static irqreturn_t bp_wdi2_handler(int irq, void *dev_id)
+{
+ DEBUGP("BP request poweroff!\n");
-+// pm_power_off();
++ /* same case as check_power_off() */
++#ifndef CONFIG_PXA_EZX_E680
++ pm_power_off();
++#endif
+ return IRQ_HANDLED;
+}
+
@@ -314,8 +326,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-bp.c
+
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:03:11.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-29 01:07:18.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-08-16 15:52:20.000000000 -0300
@@ -24,6 +24,7 @@
obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
obj-$(CONFIG_PXA_EZX_A1200) += ezx-a1200.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
index c0e9435723..653e814fb4 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-core.patch
@@ -1,7 +1,7 @@
Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head-xscale.S 2007-06-28 16:51:50.000000000 -0300
@@ -53,3 +53,6 @@
str r1, [r0, #0x18]
#endif
@@ -11,8 +11,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head-xscale.S
+#endif
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 14:48:52.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-28 20:54:54.000000000 -0300
@@ -37,6 +37,10 @@
bool "Keith und Koep Trizeps4 DIMM-Module"
select PXA27x
@@ -68,13 +68,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 14:49:50.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-28 20:54:54.000000000 -0300
@@ -18,6 +18,12 @@
obj-$(CONFIG_MACH_AKITA) += akita-ioexp.o
obj-$(CONFIG_MACH_POODLE) += poodle.o corgi_ssp.o
obj-$(CONFIG_MACH_TOSA) += tosa.o
-+obj-$(CONFIG_PXA_EZX) += ezx.o ezx_ssp.o
++obj-$(CONFIG_PXA_EZX) += ezx.o
+obj-$(CONFIG_PXA_EZX_A780) += ezx-a780.o
+obj-$(CONFIG_PXA_EZX_E680) += ezx-e680.o
+obj-$(CONFIG_PXA_EZX_E2) += ezx-e2.o
@@ -86,8 +86,8 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,135 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-28 20:54:54.000000000 -0300
+@@ -0,0 +1,118 @@
+/*
+ * ezx.c - Common code for EZX platform.
+ *
@@ -108,11 +108,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+#include <asm/arch/pxafb.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/ohci.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
-+
-+extern int ezx_ssp_set_machinfo(struct ezxssp_machinfo *);
+
+/* EZX PXA Framebuffer */
+void ezx_lcd_power(int on, struct fb_var_screeninfo *var)
@@ -156,18 +154,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+#endif
+EXPORT_SYMBOL(ezx_backlight_power);
+
-+/* SSP */
-+struct platform_device ezxssp_device = {
-+ .name = "ezx-ssp",
-+ .id = -1,
-+};
-+
-+struct ezxssp_machinfo ezx_ssp_machinfo = {
-+ .port = 1,
-+ .cs_pcap = GPIO_SPI_CE,
-+ .clk_pcap = 1,
-+};
-+
+/* OHCI Controller */
+static int ezx_ohci_init(struct device *dev)
+{
@@ -192,15 +178,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
+
+
+static struct platform_device *devices[] __initdata = {
-+ &ezxssp_device,
+};
+
+static int __init ezx_init(void)
+{
+ CKEN = CKEN9_OSTIMER | CKEN22_MEMC;
+
-+ ezx_ssp_set_machinfo(&ezx_ssp_machinfo);
-+
+ pxa_gpio_mode(GPIO_ICL_FFRXD_MD);
+ pxa_gpio_mode(GPIO_ICL_FFTXD_MD);
+ pxa_gpio_mode(GPIO_ICL_FFCTS_MD);
@@ -226,7 +209,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/ezx.h 2007-06-28 16:51:50.000000000 -0300
@@ -0,0 +1,225 @@
+/*
+ * linux/include/asm-arm/arch-pxa/ezx.h
@@ -455,8 +438,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/ezx.h
+
Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h 2007-06-28 18:18:49.000000000 -0300
@@ -849,6 +849,8 @@
#define UP2OCR_HXOE (1 << 17) /* Host Port 2 Transceiver Output Enable */
#define UP2OCR_SEOS (1 << 24) /* Single-Ended Output Select */
@@ -572,8 +555,8 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/pxa-regs.h
#define PGSR2 __REG(0x40F00028) /* Power Manager GPIO Sleep State Register for GP[84-64] */
Index: linux-2.6.21/arch/arm/boot/compressed/head.S
===================================================================
---- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/boot/compressed/head.S 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/boot/compressed/head.S 2007-06-28 16:51:50.000000000 -0300
@@ -117,6 +117,9 @@
mov r0, r0
.endr
@@ -586,8 +569,8 @@ Index: linux-2.6.21/arch/arm/boot/compressed/head.S
.word start @ absolute load/run zImage address
Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
===================================================================
---- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h 2007-06-28 16:51:50.000000000 -0300
@@ -14,14 +14,14 @@
#define STUART ((volatile unsigned long *)0x40700000)
#define HWUART ((volatile unsigned long *)0x41600000)
@@ -606,155 +589,10 @@ Index: linux-2.6.21/include/asm-arm/arch-pxa/uncompress.h
}
/*
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx_ssp.c 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,126 @@
-+/*
-+ * SSP control code for Motorola EZX phones
-+ *
-+ * Copyright (c) 2007 Daniel Ribeiro <drwyrm@gmail.com>
-+ *
-+ * This program is free software; you can redistribute it and/or modify
-+ * it under the terms of the GNU General Public License version 2 as
-+ * published by the Free Software Foundation.
-+ *
-+ */
-+
-+#include <linux/module.h>
-+#include <linux/init.h>
-+#include <linux/kernel.h>
-+#include <linux/sched.h>
-+#include <linux/slab.h>
-+#include <linux/delay.h>
-+#include <linux/platform_device.h>
-+#include <asm/hardware.h>
-+#include <asm/mach-types.h>
-+
-+#include <asm/arch/ssp.h>
-+#include <asm/arch/pxa-regs.h>
-+
-+#include "ezx.h"
-+
-+static DEFINE_SPINLOCK(ezx_ssp_lock);
-+static struct ssp_dev ezx_ssp_dev;
-+static struct ssp_state ezx_ssp_state;
-+static struct ezxssp_machinfo *ssp_machinfo;
-+
-+/* PCAP */
-+unsigned long ezx_ssp_pcap_putget(ulong data)
-+{
-+ unsigned long flag;
-+ u32 ret = 0;
-+
-+ spin_lock_irqsave(&ezx_ssp_lock, flag);
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPCR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+
-+ ssp_write_word(&ezx_ssp_dev,data);
-+ ssp_read_word(&ezx_ssp_dev, &ret);
-+
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
-+
-+ return ret;
-+}
-+EXPORT_SYMBOL(ezx_ssp_pcap_putget);
-+
-+void __init ezx_ssp_set_machinfo(struct ezxssp_machinfo *machinfo)
-+{
-+ ssp_machinfo = machinfo;
-+}
-+
-+static int __init ezx_ssp_probe(struct platform_device *dev)
-+{
-+ int ret;
-+ /* PCAP init */
-+ pxa_gpio_mode(29|GPIO_ALT_FN_3_OUT);
-+ pxa_gpio_mode(GPIO24_SFRM_MD);
-+ pxa_gpio_mode(GPIO25_STXD_MD);
-+ pxa_gpio_mode(GPIO26_SRXD_MD);
-+
-+ /* Chip Select - Disable All */
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ pxa_gpio_mode(ssp_machinfo->cs_pcap | GPIO_OUT | GPIO_DFLT_HIGH);
-+
-+ ret = ssp_init(&ezx_ssp_dev, ssp_machinfo->port, 0);
-+
-+ if (ret)
-+ printk(KERN_ERR "Unable to register SSP handler!\n");
-+ else {
-+ ssp_disable(&ezx_ssp_dev);
-+ ssp_config(&ezx_ssp_dev,
-+ (SSCR0_Motorola | SSCR0_DataSize(16) | SSCR0_EDSS),
-+ (SSCR1_TxTresh(1) | SSCR1_RxTresh(1)),
-+ 0, SSCR0_SerClkDiv(ssp_machinfo->clk_pcap));
-+ ssp_enable(&ezx_ssp_dev);
-+ }
-+
-+ return ret;
-+}
-+
-+static int ezx_ssp_remove(struct platform_device *dev)
-+{
-+ ssp_exit(&ezx_ssp_dev);
-+ return 0;
-+}
-+
-+static int ezx_ssp_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ ssp_flush(&ezx_ssp_dev);
-+ ssp_save_state(&ezx_ssp_dev,&ezx_ssp_state);
-+
-+ return 0;
-+}
-+
-+static int ezx_ssp_resume(struct platform_device *dev)
-+{
-+ if (ssp_machinfo->cs_pcap >= 0)
-+ GPSR(ssp_machinfo->cs_pcap) = GPIO_bit(ssp_machinfo->cs_pcap);
-+ ssp_restore_state(&ezx_ssp_dev,&ezx_ssp_state);
-+ ssp_enable(&ezx_ssp_dev);
-+
-+ return 0;
-+}
-+
-+static struct platform_driver ezxssp_driver = {
-+ .probe = ezx_ssp_probe,
-+ .remove = ezx_ssp_remove,
-+ .suspend = ezx_ssp_suspend,
-+ .resume = ezx_ssp_resume,
-+ .driver = {
-+ .name = "ezx-ssp",
-+ },
-+};
-+
-+int __init ezx_ssp_init(void)
-+{
-+ return platform_driver_register(&ezxssp_driver);
-+}
-+
-+arch_initcall(ezx_ssp_init);
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.h 2007-06-02 14:46:25.000000000 -0300
-@@ -0,0 +1,9 @@
-+#include <asm/arch/ezx.h>
-+
-+/* SSP */
-+struct ezxssp_machinfo {
-+ int port;
-+ int cs_pcap;
-+ int clk_pcap;
-+};
-+
Index: linux-2.6.21/arch/arm/mm/init.c
===================================================================
---- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-02 14:46:22.000000000 -0300
-+++ linux-2.6.21/arch/arm/mm/init.c 2007-06-02 14:46:25.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mm/init.c 2007-06-28 16:51:44.000000000 -0300
++++ linux-2.6.21/arch/arm/mm/init.c 2007-06-28 16:51:50.000000000 -0300
@@ -241,6 +241,10 @@
*/
reserve_bootmem_node(pgdat, boot_pfn << PAGE_SHIFT,
@@ -769,7 +607,7 @@ Index: linux-2.6.21/arch/arm/mm/init.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c 2007-06-28 20:53:01.000000000 -0300
@@ -0,0 +1,88 @@
+/*
+ * ezx-a780.c - Code specific to A780 GSM Phone.
@@ -792,9 +630,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -862,7 +700,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a780.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c 2007-06-28 20:54:24.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e2.c - Code specific to E2 GSM Phone.
@@ -884,9 +722,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -937,7 +775,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e2.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c 2007-06-28 20:53:29.000000000 -0300
@@ -0,0 +1,87 @@
+/*
+ * ezx-e680.c - Code specific to E680 GSM Phone.
@@ -959,9 +797,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -1029,7 +867,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e680.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-02 14:46:25.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c 2007-06-28 20:53:48.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-a1200.c - Code specific to A1200 GSM Phone.
@@ -1051,9 +889,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
@@ -1104,7 +942,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-a1200.c
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-02 14:48:08.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c 2007-06-28 20:54:07.000000000 -0300
@@ -0,0 +1,70 @@
+/*
+ * ezx-e6.c - Code specific to E6 GSM Phone.
@@ -1126,9 +964,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-e6.c
+#include <asm/mach/arch.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/pxafb.h>
++#include <asm/arch/ezx.h>
+
+#include "generic.h"
-+#include "ezx.h"
+
+extern void ezx_lcd_power(int, struct fb_var_screeninfo *);
+extern void ezx_backlight_power(int);
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
index 94581d4531..01ab60d9ec 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-emu.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-06-02 20:32:34.000000000 -0300
-@@ -0,0 +1,215 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c 2007-09-07 15:27:23.000000000 -0300
+@@ -0,0 +1,219 @@
+/*
+ * EMU Driver for Motorola EZX phones
+ *
@@ -27,6 +27,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+static struct pxa2xx_udc_mach_info ezx_udc_info;
+extern int ezx_pcap_bit_set(u_int32_t, u_int8_t);
+extern int ezx_pcap_read_bit(u_int32_t);
++static int emu_irq_usb4v;
++static int emu_irq_usb1v;
++
+
+#if defined CONFIG_EZX_EMU_USB
+#define emu_switch_to_default() emu_switch_to_usb()
@@ -38,6 +41,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_usb(void)
+{
++ printk(KERN_NOTICE "EMU: Switching to USB\n");
+ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
+ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
+ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
@@ -45,18 +49,19 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
+ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
+ UP2OCR = 0x02000000;
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_FSENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_FSENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 1);
+ clr_GPIO(GPIO_EMU_MUX1);
+ clr_GPIO(GPIO_EMU_MUX2);
+}
+
+void emu_switch_to_uart(void)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN,0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232_DIR, 1);
++ printk(KERN_NOTICE "EMU: Switching to UART\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN,0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232_DIR, 1);
+ set_GPIO(GPIO39_FFTXD);
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
+ set_GPIO(GPIO34_TXENB);
@@ -73,6 +78,7 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_audio(int stereo)
+{
++ printk(KERN_NOTICE "EMU: Switching to audio(%s)\n", (stereo ? "stereo" : "mono"));
+ clr_GPIO(GPIO39_VPOUT);
+ if (stereo) {
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_IN);
@@ -96,8 +102,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+void emu_switch_to_nothing(void)
+{
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_VUSB_EN, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_RS232ENB, 1);
++ printk(KERN_NOTICE "EMU: Switching to disconnected\n");
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_VUSB_EN, 0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_RS232ENB, 1);
+ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
+ set_GPIO(GPIO34_TXENB);
+ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
@@ -112,11 +119,11 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+{
+ switch (irq) {
+ case EZX_IRQ_USB4V:
-+ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
+ emu_switch_to_default();
+ break;
+ case EZX_IRQ_USB1V:
-+ if(!ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_1V))
++ if(!ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB1V)))
+ emu_switch_to_nothing();
+ break;
+ }
@@ -130,12 +137,23 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ pxa_gpio_mode(GPIO_EMU_MUX1 | GPIO_OUT);
+ pxa_gpio_mode(GPIO_EMU_MUX2 | GPIO_OUT);
+
-+ request_irq(EZX_IRQ_USB4V, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
-+ request_irq(EZX_IRQ_USB1V, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
++ emu_irq_usb4v = platform_get_irq(dev, 0);
++ if(emu_irq_usb4v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB4V!\n");
++ return emu_irq_usb4v;
++ }
++ emu_irq_usb1v = platform_get_irq(dev, 1);
++ if(emu_irq_usb1v < 0) {
++ printk(KERN_ERR "Unable to get IRQ for USB1V!\n");
++ return emu_irq_usb1v;
++ }
++
++ request_irq(emu_irq_usb4v, &emu_irq, SA_INTERRUPT, "usb 4v", NULL);
++ request_irq(emu_irq_usb1v, &emu_irq, SA_INTERRUPT, "usb 1v", NULL);
+
+ pxa_set_udc_info(&ezx_udc_info);
+
-+ if(ezx_pcap_read_bit(SSP_PCAP_ADJ_BIT_PSTAT_USBDET_4V))
++ if(ezx_pcap_read_bit(pbit(PCAP_REG_PSTAT, PCAP_IRQ_USB4V)))
+ emu_switch_to_default();
+ else
+ emu_switch_to_nothing();
@@ -145,21 +163,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+
+static int ezx_emu_remove(struct platform_device *dev)
+{
-+ free_irq(EZX_IRQ_USB4V, NULL);
-+ free_irq(EZX_IRQ_USB1V, NULL);
-+
-+ return 0;
-+}
-+
-+static int ezx_emu_suspend(struct platform_device *dev, pm_message_t state)
-+{
-+ emu_switch_to_nothing();
-+ return 0;
-+}
++ free_irq(emu_irq_usb4v, NULL);
++ free_irq(emu_irq_usb1v, NULL);
+
-+static int ezx_emu_resume(struct platform_device *dev)
-+{
-+ emu_switch_to_default();
+ return 0;
+}
+
@@ -170,12 +176,12 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+ switch (cmd) {
+ case PXA2XX_UDC_CMD_DISCONNECT:
+ printk(KERN_NOTICE "USB cmd disconnect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,0);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,0);
+ udc_connected_status = 0;
+ break;
+ case PXA2XX_UDC_CMD_CONNECT:
+ printk(KERN_NOTICE "USB cmd connect\n");
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_BUSCTRL_USB_PU,1);
++ ezx_pcap_bit_set(PCAP_BIT_BUSCTRL_USB_PU,1);
+ udc_connected_status = 1;
+ break;
+ }
@@ -194,8 +200,6 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+static struct platform_driver ezxemu_driver = {
+ .probe = ezx_emu_probe,
+ .remove = ezx_emu_remove,
-+ .suspend = ezx_emu_suspend,
-+ .resume = ezx_emu_resume,
+ .driver = {
+ .name = "ezx-emu",
+ .owner = THIS_MODULE,
@@ -220,19 +224,11 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-emu.c
+MODULE_LICENSE("GPL");
Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:32.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-06-02 20:32:34.000000000 -0300
-@@ -73,6 +73,7 @@
-
- endchoice
-
-+
- endif
-
- if PXA_EZX
-@@ -117,6 +118,28 @@
- config EZX_MCI_TF
- bool
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-07 11:32:26.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-07 15:34:08.000000000 -0300
+@@ -108,6 +108,28 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
@@ -259,50 +255,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
endif
endmenu
-Index: linux-2.6.21/arch/arm/mach-pxa/ezx.c
-===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx.c 2007-06-02 20:32:34.000000000 -0300
-@@ -150,11 +150,35 @@
- .resource = ezxpcap_resources,
- };
-
-+/* EMU */
-+static struct resource ezxemu_resources[] = {
-+ [0] = {
-+ .start = EZX_IRQ_USB4V,
-+ .end = EZX_IRQ_USB4V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+ [1] = {
-+ .start = EZX_IRQ_USB1V,
-+ .end = EZX_IRQ_USB1V,
-+ .flags = IORESOURCE_IRQ,
-+ },
-+};
-+
-+struct platform_device ezxemu_device = {
-+ .name = "ezx-emu",
-+ .id = -1,
-+ .dev = {
-+ .parent = &ezxpcap_device.dev,
-+ },
-+ .num_resources = ARRAY_SIZE(ezxemu_resources),
-+ .resource = ezxemu_resources,
-+};
-
- static struct platform_device *devices[] __initdata = {
- &ezxssp_device,
- &ezxbp_device,
- &ezxpcap_device,
-+ &ezxemu_device,
- };
-
- /* PM */
Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
===================================================================
---- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:28.000000000 -0300
-+++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-06-02 20:32:34.000000000 -0300
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-07 11:32:26.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-07 15:34:08.000000000 -0300
@@ -26,6 +26,7 @@
obj-$(CONFIG_PXA_EZX_E6) += ezx-e6.o
obj-$(CONFIG_EZX_BP) += ezx-bp.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
new file mode 100644
index 0000000000..f21894e904
--- /dev/null
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-eoc.patch
@@ -0,0 +1,342 @@
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.c 2007-09-09 13:33:19.000000000 -0300
+@@ -0,0 +1,270 @@
++/*
++ * EZX EOC Driver for Motorola EZX phones
++ *
++ * Copyright (C) 2007 Alex Zhang <celeber2@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#include <linux/kernel.h>
++#include <linux/init.h>
++#include <linux/i2c.h>
++#include <linux/platform_device.h>
++
++#include <asm/arch/hardware.h>
++#include <asm/arch/pxa-regs.h>
++#include <asm/arch/ezx.h>
++
++#include "ezx-eoc.h"
++
++#if 1
++#define EOC_DBG printk
++#else
++#define EOC_DBG(x, args...)
++#endif
++
++#define EOC_REG_ADDR_SIZE 1
++#define EOC_REG_DATA_SIZE 3
++
++struct ezx_eoc_platform_data *pdata;
++static int eoc_func = EOC_FUNC_USB_NET;
++static const char eoc_i2c_driver_name[] = "ezx-eoc";
++
++/* Addresses to scan */
++static unsigned short normal_i2c[] = {
++ 0x17, /* Address for version 2.0 and above */
++ // 0x7C, /* Address for versions prior too 2.0 */
++ I2C_CLIENT_END
++};
++
++/* I2C Magic */
++I2C_CLIENT_INSMOD;
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter);
++static int ezx_eoc_detect(struct i2c_adapter *adapter, int address, int kind);
++static int ezx_eoc_detach_client(struct i2c_client *client);
++
++static struct i2c_client *eoc_i2c_client = NULL;
++
++static struct i2c_driver eoc_i2c_driver = {
++ .driver = {
++ .name = (char *)eoc_i2c_driver_name,
++ },
++ .id = I2C_DRIVERID_EEPROM,
++ .attach_adapter = ezx_eoc_attach_adapter,
++ .detach_client = ezx_eoc_detach_client,
++};
++
++int eoc_reg_read(int reg, unsigned int *reg_value)
++{
++ unsigned char reg_num = reg;
++ unsigned char value[EOC_REG_DATA_SIZE];
++ int retval;
++
++ struct i2c_msg msgs[2] =
++ {
++ { 0, 0, EOC_REG_ADDR_SIZE, &reg_num },
++ { 0, I2C_M_RD, EOC_REG_DATA_SIZE, value }
++ };
++
++ /* check if we have initialized */ /*not necessary --WM
++ if (eoc_i2c_client == NULL)
++ {
++ EOC_DBG("eoc_reg_read: not initialized\n");
++ return -EINVAL;
++ }
++*/
++ msgs[0].addr = msgs[1].addr = eoc_i2c_client->addr;
++
++ /* transfer message to client */
++ retval = i2c_transfer(eoc_i2c_client->adapter, msgs, 2);
++ if (retval >= 0)
++ {
++ *reg_value = (value[2] << 0);
++ *reg_value |= (value[1] << 8);
++ *reg_value |= (value[0] << 16);
++ }
++ return retval;
++}
++EXPORT_SYMBOL_GPL(eoc_reg_read);
++
++int eoc_reg_write(int reg, unsigned int reg_value)
++{
++ unsigned char value[EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE];
++ int retval;
++
++ /* check if we have initialized */ /*not necessary --WM
++ if (eoc_i2c_client == NULL)
++ {
++ EOC_DBG("eoc_reg_write: not initialized\n");
++ return -EINVAL;
++ }
++*/
++ /* Copy the data into a buffer into the correct format */
++ value[0] = reg;
++ value[1] = (reg_value >> 16) & 0xFF;
++ value[2] = (reg_value >> 8) & 0xFF;
++ value[3] = (reg_value >> 0) & 0xFF;
++
++ /* Write the data to the EOC */
++ retval = i2c_master_send (eoc_i2c_client, value, EOC_REG_ADDR_SIZE + EOC_REG_DATA_SIZE);
++
++ return retval;
++}
++EXPORT_SYMBOL_GPL(eoc_reg_write);
++
++static void eoc_switch_to_usb(void)
++{
++ pxa_gpio_mode(GPIO34_USB_P2_2_MD);
++ pxa_gpio_mode(GPIO35_USB_P2_1_MD);
++ pxa_gpio_mode(GPIO36_USB_P2_4_MD);
++ pxa_gpio_mode(GPIO39_USB_P2_6_MD);
++ pxa_gpio_mode(GPIO40_USB_P2_5_MD);
++ pxa_gpio_mode(GPIO53_USB_P2_3_MD);
++ EOC_DBG("ALEX;*********************************************emu_switch_to_usb;\n");
++}
++
++static void eoc_switch_to_nothing(void)
++{
++ pxa_gpio_mode(GPIO34_TXENB | GPIO_OUT);
++ set_GPIO(GPIO34_TXENB);
++ pxa_gpio_mode(GPIO35_XRXD | GPIO_IN);
++ pxa_gpio_mode(GPIO36_VMOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO39_VPOUT | GPIO_IN);
++ pxa_gpio_mode(GPIO40_VPIN | GPIO_IN);
++ pxa_gpio_mode(GPIO53_VMIN | GPIO_IN);
++}
++
++static void eoc_switch_to_default(void)
++{
++ switch (eoc_func) {
++ case EOC_FUNC_USB_NET:
++ eoc_switch_to_usb();
++ break;
++ case EOC_FUNC_NOTHING:
++ eoc_switch_to_nothing();
++ break;
++ }
++}
++
++
++static int ezx_eoc_attach_adapter(struct i2c_adapter *adapter)
++{
++ return i2c_probe(adapter, &addr_data, ezx_eoc_detect);
++}
++
++/* This function is called by i2c_probe */
++static int ezx_eoc_detect(struct i2c_adapter *adapter, int address, int kind)
++{
++ struct i2c_client *new_client;
++ int err = 0;
++
++ if (!(new_client = kmalloc(sizeof(struct i2c_client), GFP_KERNEL)))
++ return -ENOMEM;
++
++ new_client->addr = address;
++ new_client->adapter = adapter;
++ new_client->driver = &eoc_i2c_driver;
++ new_client->flags = 0;
++ strlcpy(new_client->name, eoc_i2c_driver_name, I2C_NAME_SIZE);
++
++ if ((err = i2c_attach_client(new_client))) {
++ kfree(new_client);
++ return err;
++ }
++
++ eoc_i2c_client = new_client;
++
++ if (pdata && pdata->init) {
++ pdata->init();
++ }
++ else
++ return -EINVAL;
++
++ eoc_switch_to_default();
++
++ return 0;
++}
++
++static int ezx_eoc_detach_client(struct i2c_client *client)
++{
++ int err;
++
++ err = i2c_detach_client(client);
++ if (err)
++ return err;
++
++ return 0;
++}
++
++static int __init ezx_eoc_probe(struct platform_device *dev)
++{
++ int ret;
++
++ pdata = dev->dev.platform_data;
++
++ ret = i2c_add_driver(&eoc_i2c_driver);
++ if (ret != 0)
++ return -EINVAL;
++
++ /*
++ * I think we should save platform_data and call init and eoc_switch
++ * from ezx_eoc_detect, after client is setup.
++ * And there is no need for all the "check if initialised" checks if
++ * you assure that you only call read/write after the client is set.
++ * Probably, this was causing the crash on i2c-core too.
++ * --WM
++ */
++
++ /* FIXME: should set udc_info here -WM */
++ return 0;
++}
++
++static int ezx_eoc_remove(struct platform_device *dev)
++{
++ return i2c_del_driver(&eoc_i2c_driver);
++}
++
++static int ezx_eoc_suspend(struct platform_device *dev, pm_message_t state)
++{
++ eoc_switch_to_nothing();
++ return 0;
++}
++
++static int ezx_eoc_resume(struct platform_device *dev)
++{
++ eoc_switch_to_default();
++ return 0;
++}
++
++static struct platform_driver ezx_eoc_driver = {
++ .probe = ezx_eoc_probe,
++ .remove = ezx_eoc_remove,
++ .suspend = ezx_eoc_suspend,
++ .resume = ezx_eoc_resume,
++ .driver = {
++ .name = "ezx-eoc",
++ .owner = THIS_MODULE,
++ },
++};
++
++int __init ezx_eoc_init(void)
++{
++ return platform_driver_register(&ezx_eoc_driver);
++}
++
++void ezx_eoc_exit(void)
++{
++ return platform_driver_unregister(&ezx_eoc_driver);
++}
++
++MODULE_AUTHOR("Alex Zhang <celeber2@gmail.com>");
++MODULE_DESCRIPTION("EZX EOC I2C driver");
++MODULE_LICENSE("GPL");
++
++/* doesnt module_init work?? -WM */
++/*late_initcall(ezx_eoc_init);*/
++module_init(ezx_eoc_init);
++module_exit(ezx_eoc_exit);
+Index: linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h
+===================================================================
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-eoc.h 2007-09-07 22:15:52.000000000 -0300
+@@ -0,0 +1,33 @@
++/*
++ * linux/arch/arm/mach-pxa/ezx-eoc.h
++ *
++ * Copyright (C) Alex Zhang <celeber2@gmail.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++
++#ifndef __EZX_EOC_H__
++#define __EZX_EOC_H__
++
++enum {
++ POWER_IC_REG_EOC_INT_STATUS,
++ POWER_IC_REG_EOC_INT_MASK,
++ POWER_IC_REG_EOC_INT_SENSE,
++ POWER_IC_REG_EOC_POWER_CONTROL_0,
++ POWER_IC_REG_EOC_POWER_CONTROL_1,
++ POWER_IC_REG_EOC_CONN_CONTROL,
++ POWER_IC_REG_EOC_NUM
++};
++
++enum {
++ EOC_FUNC_NOTHING,
++ EOC_FUNC_USB_NET,
++};
++
++struct ezx_eoc_platform_data {
++ int (*init)(void);
++};
++
++#endif /* __EZX_EOC_H__ */
+Index: linux-2.6.21/arch/arm/mach-pxa/Kconfig
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Kconfig 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Kconfig 2007-09-07 22:15:52.000000000 -0300
+@@ -108,6 +108,12 @@
+ config EZX_PCAP
+ bool "PCAP Support"
+
++config EZX_EOC
++ tristate "EOC i2c driver of Motorola EZX phones"
++ depends on I2C && EXPERIMENTAL && PXA_EZX_A1200
++ help
++ EOC i2c driver of Motorola EZX phones
++
+ config EZX_EMU
+ bool "Motorola Enchanced Mini Usb"
+ depends on EZX_PCAP
+Index: linux-2.6.21/arch/arm/mach-pxa/Makefile
+===================================================================
+--- linux-2.6.21.orig/arch/arm/mach-pxa/Makefile 2007-09-07 22:15:52.000000000 -0300
++++ linux-2.6.21/arch/arm/mach-pxa/Makefile 2007-09-07 22:15:52.000000000 -0300
+@@ -27,6 +27,7 @@
+ obj-$(CONFIG_EZX_BP) += ezx-bp.o
+ obj-$(CONFIG_EZX_PCAP) += ezx-pcap.o
+ obj-$(CONFIG_EZX_EMU) += ezx-emu.o
++obj-$(CONFIG_EZX_EOC) += ezx-eoc.o
+
+ # Support for blinky lights
+ led-y := leds.o
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
index 7ef42f0ffc..c291f1aadf 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-mtd-map.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/drivers/mtd/maps/Kconfig
===================================================================
---- linux-2.6.21.orig/drivers/mtd/maps/Kconfig 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/drivers/mtd/maps/Kconfig 2007-04-26 20:49:33.000000000 -0300
-@@ -595,6 +595,28 @@
+--- linux-2.6.21.orig/drivers/mtd/maps/Kconfig 2007-08-31 22:27:53.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Kconfig 2007-08-31 23:04:18.000000000 -0300
+@@ -595,6 +595,34 @@
help
This enables access to the flash chip on the Sharp SL Series of PDAs.
@@ -21,9 +21,15 @@ Index: linux-2.6.21/drivers/mtd/maps/Kconfig
+config MTD_EZX_A780_ALTERNATE
+ bool "A780/E680 Alternate Mapping for BLOB2"
+
++config MTD_EZX_A1200
++ bool "A1200 Original Mapping"
++
+config MTD_EZX_E2
+ bool "E2 Original Mapping"
+
++config MTD_EZX_E6
++ bool "E6 Original Mapping"
++
+endchoice
+
+endif
@@ -33,8 +39,8 @@ Index: linux-2.6.21/drivers/mtd/maps/Kconfig
depends on MTD
Index: linux-2.6.21/drivers/mtd/maps/Makefile
===================================================================
---- linux-2.6.21.orig/drivers/mtd/maps/Makefile 2007-04-26 00:08:32.000000000 -0300
-+++ linux-2.6.21/drivers/mtd/maps/Makefile 2007-04-26 20:30:30.000000000 -0300
+--- linux-2.6.21.orig/drivers/mtd/maps/Makefile 2007-08-31 22:27:53.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/Makefile 2007-08-31 23:04:18.000000000 -0300
@@ -72,3 +72,4 @@
obj-$(CONFIG_MTD_OMAP_NOR) += omap_nor.o
obj-$(CONFIG_MTD_MTX1) += mtx-1_flash.o
@@ -43,7 +49,7 @@ Index: linux-2.6.21/drivers/mtd/maps/Makefile
Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-04-26 20:30:30.000000000 -0300
++++ linux-2.6.21/drivers/mtd/maps/ezx-flash.c 2007-08-21 17:03:43.000000000 -0300
@@ -0,0 +1,227 @@
+/*
+ * $Id: $
@@ -122,7 +128,7 @@ Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
+ .size = 0x00020000,
+ .offset = 0x00020000,
+ } , {
-+ .name = "Kernel 1",
++ .name = "Moto Kernel",
+ .size = 0x000e0000, // 896KB
+ .offset = 0x00040000,
+ } , {
@@ -130,11 +136,11 @@ Index: linux-2.6.21/drivers/mtd/maps/ezx-flash.c
+ .size = 0x01760000,
+ .offset = 0x00120000,
+ } , {
-+ .name = "Kernel 2",
++ .name = "OpenEZX Kernel",
+ .size = 0x00180000, // 1.5MB
+ .offset = 0x01880000,
+ } , {
-+ .name = "VFM_Filesystem",
++ .name = "ezxlocal",
+ .size = 0x005a0000,
+ .offset = 0x01a00000,
+ } , {
diff --git a/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
index 6af6317a6e..604f8eb59b 100755
--- a/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
+++ b/packages/linux/linux-ezx-2.6.21/patches/ezx-pcap.patch
@@ -1,8 +1,8 @@
Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
===================================================================
--- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-06-07 21:39:37.000000000 -0300
-@@ -0,0 +1,472 @@
++++ linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c 2007-08-31 22:48:16.000000000 -0300
+@@ -0,0 +1,513 @@
+/* Driver for Motorola PCAP2 as present in EZX phones
+ *
+ * This is both a SPI device driver for PCAP itself, as well as
@@ -24,31 +24,60 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+#include <asm/hardware.h>
+#include <asm/mach-types.h>
+
++#include <asm/arch/ezx.h>
+#include <asm/arch/ssp.h>
+#include <asm/arch/pxa-regs.h>
+#include <asm/arch/ezx-pcap.h>
+#include <asm/arch/irqs.h>
+#include <asm/mach/irq.h>
+
-+#include "ezx.h"
-+
+#if 0
+#define DEBUGP(x, args...) printk(x, ## args)
+#else
+#define DEBUGP(x, args...)
+#endif
+
-+extern unsigned long ezx_ssp_pcap_putget(ulong);
++static DEFINE_SPINLOCK(ezx_ssp_lock);
++static struct ssp_dev ezx_ssp_dev;
++static struct ssp_state ezx_ssp_state;
++static struct pcap_platform_data *pcap_data;
++static int pcap_irq;
++
++static unsigned long ezx_ssp_pcap_putget(ulong data)
++{
++ unsigned long flag;
++ u32 ret = 0;
++
++ spin_lock_irqsave(&ezx_ssp_lock, flag);
++ if (pcap_data->cs >= 0) {
++ if (pcap_data->flags & PCAP_CS_AH)
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ ssp_write_word(&ezx_ssp_dev,data);
++ ssp_read_word(&ezx_ssp_dev, &ret);
++
++ if (pcap_data->cs >= 0) {
++ if(pcap_data->flags & PCAP_CS_AH)
++ GPCR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ else
++ GPSR(pcap_data->cs) = GPIO_bit(pcap_data->cs);
++ }
++
++ spin_unlock_irqrestore(&ezx_ssp_lock, flag);
++
++ return ret;
++}
+
+int ezx_pcap_write(u_int8_t reg_num, u_int32_t value)
+{
-+ value &= SSP_PCAP_REGISTER_VALUE_MASK;
-+ value |= SSP_PCAP_REGISTER_WRITE_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++ value &= PCAP_REGISTER_VALUE_MASK;
++ value |= PCAP_REGISTER_WRITE_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
+
-+ local_irq_disable();
+ ezx_ssp_pcap_putget(value);
-+ local_irq_enable();
+
+ DEBUGP("pcap write r%x: 0x%08x\n", reg_num, value);
+ return 0;
@@ -57,12 +86,10 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+
+int ezx_pcap_read(u_int8_t reg_num, u_int32_t *value)
+{
-+ u_int32_t frame = SSP_PCAP_REGISTER_READ_OP_BIT
-+ | (reg_num<<SSP_PCAP_REGISTER_ADDRESS_SHIFT);
++ u_int32_t frame = PCAP_REGISTER_READ_OP_BIT
++ | (reg_num<<PCAP_REGISTER_ADDRESS_SHIFT);
+
-+ local_irq_disable();
+ *value = ezx_ssp_pcap_putget(frame);
-+ local_irq_enable();
+
+ DEBUGP("pcap read r%x: 0x%08x\n", reg_num, *value);
+ return 0;
@@ -73,9 +100,9 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ int ret;
+ u_int32_t tmp;
-+ u_int32_t bit = (sspPcapBit & SSP_PCAP_REGISTER_VALUE_MASK);
-+ u_int8_t reg_num = (sspPcapBit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++ u_int32_t bit = (sspPcapBit & PCAP_REGISTER_VALUE_MASK);
++ u_int8_t reg_num = (sspPcapBit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
+
+ ret = ezx_pcap_read(reg_num, &tmp);
+ if (ret < 0)
@@ -94,14 +121,14 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ int ret;
+ u_int32_t tmp;
-+ u_int8_t reg_num = (bit & SSP_PCAP_REGISTER_ADDRESS_MASK)
-+ >> SSP_PCAP_REGISTER_ADDRESS_SHIFT;
++ u_int8_t reg_num = (bit & PCAP_REGISTER_ADDRESS_MASK)
++ >> PCAP_REGISTER_ADDRESS_SHIFT;
+
+ ret = ezx_pcap_read(reg_num, &tmp);
+ if (ret < 0)
+ return ret;
+
-+ return tmp & (bit & SSP_PCAP_REGISTER_VALUE_MASK);
++ return tmp & (bit & PCAP_REGISTER_VALUE_MASK);
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_read_bit);
+
@@ -111,11 +138,13 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+static struct proc_dir_entry *proc_pcap;
+
+char *pcap_registers[] = {
-+ "ISR\t", "MSR\t", "PSTAT\t", NULL, NULL, NULL, "VREG2\t", "VREG\t",
-+ "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC", "AUD_RX_AMPS",
-+ "AUD_ST_DAC", NULL, NULL, NULL, NULL, NULL, NULL, "BUSCTRL\t",
-+ "PERIPH\t", NULL, NULL, "LOWPWR\t", NULL, "AUD_TX_AMPS", "GP\t",
-+ NULL, NULL, NULL, NULL, NULL
++ "ISR\t", "MSR\t", "PSTAT\t", "INT_SEL\t", "SWCTRL\t", "VREG1\t",
++ "VREG2\t", "VREG\t", "BATT_DAC", "ADC1\t", "ADC2\t", "AUD_CODEC",
++ "RX_AUD_AMPS", "ST_DAC\t", "RTC_TOD\t", "RTC_TODA", "RTC_DAY\t",
++ "RTC_DAYA", "MTRTMR\t", "PWRCTRL\t", "BUSCTRL\t", "PERIPH\t",
++ "AUXVREG_MASK", "VENDOR_REV", "LOWPWR_CTRL", "PERIPH_MASK",
++ "TX_AUD_AMPS", "GP\t",
++ NULL, NULL, NULL, NULL
+};
+
+static int pcap_read_proc(char *page, char **start, off_t off, int count,
@@ -151,82 +180,32 @@ Index: linux-2.6.21/arch/arm/mach-pxa/ezx-pcap.c
+{
+ u_int32_t tmp;
+
-+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
+
-+ tmp &= (~SSP_PCAP_VIBRATOR_VOLTAGE_LEVEL_MASK);
-+ tmp |= value;
++ tmp &= ~PCAP_AUXVREG_V_VIB_MASK;
++ tmp |= ((value << PCAP_AUXVREG_V_VIB_SHIFT) & PCAP_AUXVREG_V_VIB_MASK);
+
-+ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
+}
+EXPORT_SYMBOL_GPL(ezx_pcap_vibrator_level);
+
-+static int __init pcap_init(void)
-+{
-+ /* initialize registers */
-+#warning FIXME: pcap_init still chip level
-+ /* implement a per board pcap init reg array? */
-+
-+ ezx_pcap_write(SSP_PCAP_ADJ_MSR_REGISTER, PCAP_MASK_ALL_INTERRUPT);
-+ ezx_pcap_write(SSP_PCAP_ADJ_ISR_REGISTER, PCAP_CLEAR_INTERRUPT_REGISTER);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUD_RX_AMPS_A1CTRL, 1);
-+// ezx_pcap_vibrator_level(PCAP_VIBRATOR_VOLTAGE_LEVEL3);
-+
-+ /* set SW1 sleep to keep SW1 1.3v in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE10, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE11, 0);
-+ /* SW1 active in sync mode */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE00, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW1_MODE01, 0);
-+ /* at SW1 -core voltage to 1.30V */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW10_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW11_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW12_DVS, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_SW13_DVS, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V3-- sram V8 -- pll off */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V3_LOWPWR, 0);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V8_LOWPWR, 0);
-+
-+ /* when STANDY2 PIN ACTIVE (high) set V4-- lcd only for e680 V6 ---
-+ * camera for e680 */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V4_LOWPWR, 1);
-+
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_VREG2_V6_LOWPWR, 0);
-+
-+ /* set Vc to low power mode when AP sleep */
-+ //SSP_PCAP_bit_set( SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VC_STBY);
-+
-+ /* set VAUX2 to voltage 2.775V and low power mode when AP sleep */
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_1, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_0, 0);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_STBY, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_LOWPWR_CTRL_VAUX2_LOWPWR, 1);
-+ ezx_pcap_bit_set(SSP_PCAP_ADJ_BIT_AUX_VREG_VAUX2_EN, 1);
-+
-+// PGSR(GPIO34_TXENB) |= GPIO_bit(GPIO34_TXENB);
-+
-+ return 0;
-+}
+/* MMC/SD specific functions */
+
+void ezx_pcap_mmcsd_voltage(u_int32_t bits)
+{
+ unsigned int tmp;
-+ ezx_pcap_read(SSP_PCAP_ADJ_AUX_VREG_REGISTER, &tmp);
-+#if defined(CONFIG_EZX_MCI_SD)
-+ tmp &= 0xffffff9f; /* zero all vaux2 bits */
-+ tmp |= (bits & 0x3) << 5;
-+#elif defined(CONFIG_EZX_MCI_TF)
-+ tmp &= 0xfffff0ff; /* zero all vaux3 bits */
-+ tmp |= (bits & 0xf) << 8;
-+#endif
-+ ezx_pcap_write(SSP_PCAP_ADJ_AUX_VREG_REGISTER, tmp);
++ ezx_pcap_read(PCAP_REG_AUXVREG, &tmp);
++ if (pcap_data->flags & PCAP_MCI_SD) {
++ tmp &= ~PCAP_AUXVREG_VAUX2_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX2_SHIFT) &
++ PCAP_AUXVREG_VAUX2_MASK);
++ }
++ else if (pcap_data->flags & PCAP_MCI_TF) {
++ tmp &= ~PCAP_AUXVREG_VAUX3_MASK;
++ tmp |= ((bits << PCAP_AUXVREG_VAUX3_SHIFT) &
++ PCAP_AUXVREG_VAUX3_MASK);
++ }
++ ezx_pcap_write(PCAP_REG_AUXVREG, tmp);
+}
+EXPORT_SYMBOL(ezx_pcap_mmcsd_volt