Initial import of my local openpandora.oe.git Open Embedded overlay to the GIT server...
authorDavid-John Willis <John.Willis@Distant-earth.com>
Tue, 27 Jan 2009 09:00:41 +0000 (09:00 +0000)
committerDavid-John Willis <John.Willis@Distant-earth.com>
Tue, 27 Jan 2009 09:00:41 +0000 (09:00 +0000)
This just contains files that are used in the current images. All in-development stuff has been unstaged for now to set a sensible baseline and will be added back in as tested.

104 files changed:
conf/machine/omap3-pandora.conf.notused [new file with mode: 0755]
packages/images/pandora-core-image.bb [new file with mode: 0755]
packages/images/pandora-desktop-image.bb [new file with mode: 0755]
packages/images/pandora-gui-image.bb [new file with mode: 0755]
packages/images/pandora-satogui-image.bb [new file with mode: 0755]
packages/images/pandora-validation-image.bb [new file with mode: 0755]
packages/linux/linux-omap.inc [new file with mode: 0755]
packages/linux/linux.inc [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/0001-Implement-downsampling-with-debugs.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/0001-Removed-resolution-check-that-prevents-scaling-when.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/cache-display-fix.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/defconfig [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/defconfig.bak [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/dvb-fix-dma.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/evm-mcspi-ts.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/fix-install.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/fix-irq33.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-256MB.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-add-clk-get-parent.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-enable-overlay-optimalization.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-fix-display-panning.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-fix-timings.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-improve-pixclock-config.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-make-dpll4-m4-ck-programmable.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/mru-make-video-timings-selectable.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-dma-iso-in.eml [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-fix-ISO-in-unlink.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-fix-dbrownell.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-fix-endpoints.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-fix-multiple-bulk-transfers.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-mru-otgfix.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/musb-support-high-bandwidth.patch.eml [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/nand.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/no-cortex-deadlock.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/no-empty-flash-warnings.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/no-harry-potter.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/omap-2430-lcd.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/oprofile-0.9.3.armv7.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/pvr/dispc.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/pvr/nokia-TI.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/pvr/pvr-add.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/read_die_ids.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/sitecomwl168-support.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/strongly-ordered-memory.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/timer-suppression.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi/touchscreen.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel-wifi_2.6.27-pandora.bb [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/0001-Implement-downsampling-with-debugs.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/0001-Removed-resolution-check-that-prevents-scaling-when.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/cache-display-fix.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/defconfig [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/defconfig.bak [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/dvb-fix-dma.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/evm-mcspi-ts.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/fix-install.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/fix-irq33.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-256MB.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-add-clk-get-parent.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-enable-overlay-optimalization.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-fix-display-panning.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-fix-timings.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-improve-pixclock-config.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-make-dpll4-m4-ck-programmable.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/mru-make-video-timings-selectable.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-dma-iso-in.eml [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-fix-ISO-in-unlink.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-fix-dbrownell.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-fix-endpoints.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-fix-multiple-bulk-transfers.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-mru-otgfix.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/musb-support-high-bandwidth.patch.eml [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/nand.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/no-cortex-deadlock.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/no-empty-flash-warnings.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/no-harry-potter.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/omap-2430-lcd.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/oprofile-0.9.3.armv7.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/pvr/dispc.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/pvr/nokia-TI.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/pvr/pvr-add.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/read_die_ids.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/sitecomwl168-support.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/strongly-ordered-memory.diff [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/timer-suppression.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel/touchscreen.patch [new file with mode: 0755]
packages/linux/omap3-pandora-kernel_2.6.27-pandora.bb [new file with mode: 0755]
packages/omap3-deviceid/files/Makefile [new file with mode: 0755]
packages/omap3-deviceid/files/mem.c [new file with mode: 0755]
packages/omap3-deviceid/files/omap3-deviceid.sh [new file with mode: 0755]
packages/omap3-deviceid/omap3-deviceid_1.0.bb [new file with mode: 0755]
packages/pandora-system/pandora-firmware.bb [new file with mode: 0755]
packages/pandora-system/pandora-firmware/Fw1251r1c.bin [new file with mode: 0755]
packages/pandora-system/pandora-firmware/README.txt [new file with mode: 0755]
packages/pandora-system/pandora-firmware/brf6300.bin [new file with mode: 0755]
packages/pandora-system/pandora-matchbox-gtk-theme.bb [new file with mode: 0755]
packages/pandora-system/pandora-set-root-password.bb [new file with mode: 0755]
packages/pandora-system/pandora-wifi-tools/wlan_cu_makefile.patch [new file with mode: 0755]
packages/pandora-system/pandora-wifi-tools_git.bb [new file with mode: 0755]
packages/pandora-system/pandora-wifi.inc [new file with mode: 0755]
packages/pandora-system/pandora-wifi_git.bb [new file with mode: 0755]
packages/tasks/task-pandora-core.bb [new file with mode: 0755]
packages/tasks/task-pandora-desktop.bb [new file with mode: 0755]
packages/tasks/task-pandora-gui.bb [new file with mode: 0755]
packages/tasks/task-pandora-satogui.bb [new file with mode: 0755]

diff --git a/conf/machine/omap3-pandora.conf.notused b/conf/machine/omap3-pandora.conf.notused
new file mode 100755 (executable)
index 0000000..f892ec2
--- /dev/null
@@ -0,0 +1,51 @@
+#@TYPE: Machine
+#@NAME: OMAP3 based Pandora Handheld Console
+#@DESCRIPTION: Machine configuration for the Pandora http://www.openpandora.org/ Handheld Console
+
+TARGET_ARCH = "arm"
+include conf/machine/include/tune-cortexa8.inc
+
+PREFERRED_PROVIDER_virtual/xserver = "xserver-xorg"
+
+XSERVER = " \
+       xserver-xorg \
+       xf86-input-evdev \
+       xf86-input-mouse \
+       xf86-input-tslib \
+       xf86-video-omapfb \
+       xf86-input-keyboard \
+"
+
+#What is the correct one, both seem in use?
+MACHINE_GUI_CLASS = "bigscreen"
+GUI_MACHINE_CLASS = "bigscreen"
+
+#800 * 480 Widescreen
+MACHINE_DISPLAY_WIDTH_PIXELS = "800"
+MACHINE_DISPLAY_HEIGHT_PIXELS = "480"
+
+# Ship all kernel modules
+MACHINE_EXTRA_RRECOMMENDS = "omap3-sgx-modules kernel-modules"
+
+# Make sure firmware is installed for BT and WiFi.
+MACHINE_EXTRA_RDEPENDS = "pandora-firmware"
+
+IMAGE_FSTYPES += "jffs2 tar.bz2"
+EXTRA_IMAGECMD_jffs2 = "-lnp "
+
+SERIAL_CONSOLE = "115200 ttyS0"
+
+#PREFERRED_PROVIDER_virtual/kernel = "linux-omap"
+PREFERRED_PROVIDER_virtual/kernel = "${MACHINE}-kernel"
+
+KERNEL_IMAGETYPE = "uImage"
+
+UBOOT_ENTRYPOINT = "0x80008000"
+UBOOT_LOADADDRESS = "0x80008000"
+UBOOT_ARCH = "arm"
+UBOOT_MACHINE = "omap3_pandora_config"
+
+PREFERRED_VERSION_u-boot = "git"
+#EXTRA_IMAGEDEPENDS += "u-boot x-load"
+
+MACHINE_FEATURES = "kernel26 apm alsa usbgadget usbhost keyboard vfat ext2 screen touchscreen bluetooth wifi"
diff --git a/packages/images/pandora-core-image.bb b/packages/images/pandora-core-image.bb
new file mode 100755 (executable)
index 0000000..56d71fb
--- /dev/null
@@ -0,0 +1,27 @@
+# Console image for Pandora handheld console
+
+inherit image
+
+IMAGE_LINGUAS = "en-gb en-us"
+
+DEPENDS = "task-base"
+
+IMAGE_INSTALL += " \
+       task-pandora-core \
+"
+#  pandora-set-root-password \ 
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+#ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+#ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+# Helper to say what image we built, include GIT tag and image name.
+PANDORA_VERSION_FILE = "${IMAGE_ROOTFS}/${sysconfdir}/op-version"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Tag Name: `git tag|tail -n 1`> ${PANDORA_VERSION_FILE};cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo VERSION: `git-log -n1 --pretty=oneline|awk '{print $1}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Branch: ` git branch |awk '/*/{print $2}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "echo Build Host: `cat /etc/hostname` >> ${PANDORA_VERSION_FILE};"
+ROOTFS_POSTPROCESS_COMMAND += "echo Time Stamp: `date -R` >> ${PANDORA_VERSION_FILE};"
diff --git a/packages/images/pandora-desktop-image.bb b/packages/images/pandora-desktop-image.bb
new file mode 100755 (executable)
index 0000000..f2d8669
--- /dev/null
@@ -0,0 +1,27 @@
+# E17 demo image for Pandora handheld console
+
+inherit image
+
+IMAGE_LINGUAS = "en-gb en-us"
+
+DEPENDS = "task-base"
+
+IMAGE_INSTALL += " \
+       task-pandora-desktop \
+"
+
+#  pandora-set-root-password \ 
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+#ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+#ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+# Helper to say what image we built, include GIT tag and image name.
+PANDORA_VERSION_FILE = "${IMAGE_ROOTFS}/${sysconfdir}/op-version"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Tag Name: `git tag|tail -n 1`> ${PANDORA_VERSION_FILE};cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo VERSION: `git-log -n1 --pretty=oneline|awk '{print $1}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Branch: ` git branch |awk '/*/{print $2}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "echo Build Host: `cat /etc/hostname` >> ${PANDORA_VERSION_FILE};"
+ROOTFS_POSTPROCESS_COMMAND += "echo Time Stamp: `date -R` >> ${PANDORA_VERSION_FILE};"
diff --git a/packages/images/pandora-gui-image.bb b/packages/images/pandora-gui-image.bb
new file mode 100755 (executable)
index 0000000..a6b1aeb
--- /dev/null
@@ -0,0 +1,27 @@
+# Default matchbox image for the Pandora
+
+inherit image
+
+IMAGE_LINGUAS = "en-gb en-us"
+
+DEPENDS = "task-base"
+
+IMAGE_INSTALL = " \
+       task-pandora-gui \
+"
+
+#  pandora-set-root-password \ 
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+#ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+#ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+# Helper to say what image we built, include GIT tag and image name.
+PANDORA_VERSION_FILE = "${IMAGE_ROOTFS}/${sysconfdir}/op-version"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Tag Name: `git tag|tail -n 1`> ${PANDORA_VERSION_FILE};cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo VERSION: `git-log -n1 --pretty=oneline|awk '{print $1}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Branch: ` git branch |awk '/*/{print $2}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "echo Build Host: `cat /etc/hostname` >> ${PANDORA_VERSION_FILE};"
+ROOTFS_POSTPROCESS_COMMAND += "echo Time Stamp: `date -R` >> ${PANDORA_VERSION_FILE};"
diff --git a/packages/images/pandora-satogui-image.bb b/packages/images/pandora-satogui-image.bb
new file mode 100755 (executable)
index 0000000..1af71a5
--- /dev/null
@@ -0,0 +1,27 @@
+# Default matchbox image for the Pandora
+
+inherit image
+
+IMAGE_LINGUAS = "en-gb en-us"
+
+DEPENDS = "task-base"
+
+IMAGE_INSTALL = " \
+       task-pandora-satogui \
+"
+
+#  pandora-set-root-password \ 
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+#ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+#ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+# Helper to say what image we built, include GIT tag and image name.
+PANDORA_VERSION_FILE = "${IMAGE_ROOTFS}/${sysconfdir}/op-version"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Tag Name: `git tag|tail -n 1`> ${PANDORA_VERSION_FILE};cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo VERSION: `git-log -n1 --pretty=oneline|awk '{print $1}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Branch: ` git branch |awk '/*/{print $2}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "echo Build Host: `cat /etc/hostname` >> ${PANDORA_VERSION_FILE};"
+ROOTFS_POSTPROCESS_COMMAND += "echo Time Stamp: `date -R` >> ${PANDORA_VERSION_FILE};"
diff --git a/packages/images/pandora-validation-image.bb b/packages/images/pandora-validation-image.bb
new file mode 100755 (executable)
index 0000000..f3b38f2
--- /dev/null
@@ -0,0 +1,30 @@
+# Validation image for Pandora handheld console
+# for hardware testing and flashing images to NAND if copied to the SD in the correct places.
+
+inherit image
+
+IMAGE_LINGUAS = "en-gb en-us"
+
+DEPENDS = "task-base"
+
+IMAGE_INSTALL += " \
+       task-pandora-core \
+       task-pandora-validation \
+"
+#  pandora-set-root-password \ 
+
+IMAGE_PREPROCESS_COMMAND = "create_etc_timestamp"
+
+#ROOTFS_POSTPROCESS_COMMAND += '${@base_conditional("DISTRO_TYPE", "release", "zap_root_password; ", "",d)}'
+#ROOTFS_POSTPROCESS_COMMAND += "set_image_autologin; "
+
+
+# Helper to say what image we built, include GIT tag and image name.
+PANDORA_VERSION_FILE = "${IMAGE_ROOTFS}/${sysconfdir}/op-version"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Tag Name: `git tag|tail -n 1`> ${PANDORA_VERSION_FILE};cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo VERSION: `git-log -n1 --pretty=oneline|awk '{print $1}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "OLD_PWD=$PWD; cd `dirname '${FILE_DIRNAME}'`; echo Branch: ` git branch |awk '/*/{print $2}'` >> ${PANDORA_VERSION_FILE}; cd $OLD_PWD;"
+ROOTFS_POSTPROCESS_COMMAND += "echo Build Host: `cat /etc/hostname` >> ${PANDORA_VERSION_FILE};"
+ROOTFS_POSTPROCESS_COMMAND += "echo Time Stamp: `date -R` >> ${PANDORA_VERSION_FILE};"
+
diff --git a/packages/linux/linux-omap.inc b/packages/linux/linux-omap.inc
new file mode 100755 (executable)
index 0000000..c706a3f
--- /dev/null
@@ -0,0 +1,7 @@
+require linux.inc
+
+DESCRIPTION = "Linux kernel for OMAP processors"
+KERNEL_IMAGETYPE = "uImage"
+
+module_autoload_ohci-hcd_omap5912osk = "ohci-hcd"
+
diff --git a/packages/linux/linux.inc b/packages/linux/linux.inc
new file mode 100755 (executable)
index 0000000..bd7c07b
--- /dev/null
@@ -0,0 +1,168 @@
+DESCRIPTION = "Linux Kernel"
+SECTION = "kernel"
+LICENSE = "GPL"
+
+inherit kernel
+
+RPSRC = "http://www.rpsys.net/openzaurus/patches/archive"
+
+# Enable OABI compat for people stuck with obsolete userspace
+ARM_KEEP_OABI ?= "1"
+
+# Specify the commandline for your device
+
+# Boot from mmc
+CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=/dev/mmcblk0p1 rootfstype=ext2 rootdelay=5"
+# Boot from nfs
+#CMDLINE_at91sam9263ek = "mem=64M console=ttyS0,115200 root=301 root=/dev/nfs nfsroot=172.20.3.1:/data/at91 ip=172.20.0.5:::255.255.0.0"
+
+# Set the verbosity of kernel messages during runtime
+# You can define CMDLINE_DEBUG in your local.conf or distro.conf to override this behaviour  
+CMDLINE_DEBUG ?= '${@base_conditional("DISTRO_TYPE", "release", "quiet", "debug",d)}'
+CMDLINE_append = " ${CMDLINE_DEBUG} "
+
+# Support for binary device tree generation
+
+FILES_kernel-devicetree = "/boot/devicetree*"
+
+KERNEL_DEVICETREE_boc01 = "${WORKDIR}/boc01.dts"
+KERNEL_DEVICETREE_mpc8313e-rdb = "arch/${ARCH}/boot/dts/mpc8313erdb.dts"
+KERNEL_DEVICETREE_mpc8315e-rdb = "arch/${ARCH}/boot/dts/mpc8315erdb.dts"
+KERNEL_DEVICETREE_mpc8323e-rdb = "arch/${ARCH}/boot/dts/mpc832x_rdb.dts"
+KERNEL_DEVICETREE_kilauea = "arch/${ARCH}/boot/dts/kilauea.dts"
+KERNEL_DEVICETREE_sequoia = "arch/${ARCH}/boot/dts/sequoia.dts"
+KERNEL_DEVICETREE_canyonlands = "arch/${ARCH}/boot/dts/canyonlands.dts"
+
+KERNEL_DEVICETREE_FLAGS = "-R 8 -S 0x3000"
+
+python __anonymous () {
+
+    import bb
+    
+    devicetree = bb.data.getVar('KERNEL_DEVICETREE', d, 1) or ''
+    if devicetree:
+       depends = bb.data.getVar("DEPENDS", d, 1)
+       bb.data.setVar("DEPENDS", "%s dtc-native" % depends, d)
+       packages = bb.data.getVar("PACKAGES", d, 1)
+       bb.data.setVar("PACKAGES", "%s kernel-devicetree" % packages, d)
+}
+
+do_configure_prepend() {
+        echo "" > ${S}/.config
+
+        #
+        # logo support, if you supply logo_linux_clut224.ppm in SRC_URI, then it's going to be used
+        #
+        if [ -e ${WORKDIR}/logo_linux_clut224.ppm ]; then
+                install -m 0644 ${WORKDIR}/logo_linux_clut224.ppm drivers/video/logo/logo_linux_clut224.ppm
+                echo "CONFIG_LOGO=y"                    >> ${S}/.config
+                echo "CONFIG_LOGO_LINUX_CLUT224=y"      >> ${S}/.config
+        fi
+
+        #
+        # oabi / eabi support
+        #
+        if [ "${TARGET_OS}" = "linux-gnueabi" -o  "${TARGET_OS}" = "linux-uclibcgnueabi" ]; then
+                echo "CONFIG_AEABI=y"                   >> ${S}/.config
+                if [ "${ARM_KEEP_OABI}" = "1" ] ; then
+                        echo "CONFIG_OABI_COMPAT=y"             >> ${S}/.config
+                else
+                        echo "# CONFIG_OABI_COMPAT is not set"  >> ${S}/.config
+                fi
+        else
+                echo "# CONFIG_AEABI is not set"        >> ${S}/.config
+                echo "# CONFIG_OABI_COMPAT is not set"  >> ${S}/.config
+        fi
+
+        # When enabling thumb for userspace we also need thumb support in the kernel
+        if [ "${ARM_INSTRUCTION_SET}" = "thumb" ] ; then
+            sed -i -e /CONFIG_ARM_THUMB/d ${WORKDIR}/defconfig 
+            echo "CONFIG_ARM_THUMB=y" >> ${S}/.config
+        fi
+
+       #
+       # endian support
+       #
+        if [ "${SITEINFO_ENDIANESS}" = "be" ]; then
+                echo "CONFIG_CPU_BIG_ENDIAN=y"          >> ${S}/.config
+        fi
+
+        echo "CONFIG_CMDLINE=\"${CMDLINE}\"" >> ${S}/.config
+
+        sed -e '/CONFIG_AEABI/d' \
+            -e '/CONFIG_OABI_COMPAT=/d' \
+            -e '/CONFIG_CMDLINE=/d' \
+            -e '/CONFIG_CPU_BIG_ENDIAN/d' \
+            -e '/CONFIG_LOGO=/d' \
+            -e '/CONFIG_LOGO_LINUX_CLUT224=/d' \
+            -e '/CONFIG_LOCALVERSION/d' \
+           < '${WORKDIR}/defconfig' >>'${S}/.config'
+
+        #
+        # root-over-nfs-over-usb-eth support. Limited, but should cover some cases.
+        # Enable this by setting a proper CMDLINE_NFSROOT_USB.
+        #
+        if [ ! -z "${CMDLINE_NFSROOT_USB}" ]; then
+                oenote "Configuring the kernel for root-over-nfs-over-usb-eth with CMDLINE ${CMDLINE_NFSROOT_USB}"
+                sed -e '/CONFIG_INET/d' \
+                    -e '/CONFIG_IP_PNP=/d' \
+                    -e '/CONFIG_USB_GADGET=/d' \
+                    -e '/CONFIG_USB_GADGET_SELECTED=/d' \
+                    -e '/CONFIG_USB_ETH=/d' \
+                    -e '/CONFIG_NFS_FS=/d' \
+                    -e '/CONFIG_ROOT_NFS=/d' \
+                    -e '/CONFIG_CMDLINE=/d' \
+                    -i ${S}/.config
+                echo "CONFIG_INET=y"                     >> ${S}/.config
+                echo "CONFIG_IP_PNP=y"                   >> ${S}/.config
+                echo "CONFIG_USB_GADGET=y"               >> ${S}/.config
+                echo "CONFIG_USB_GADGET_SELECTED=y"      >> ${S}/.config
+                echo "CONFIG_USB_ETH=y"                  >> ${S}/.config
+                echo "CONFIG_NFS_FS=y"                   >> ${S}/.config
+                echo "CONFIG_ROOT_NFS=y"                 >> ${S}/.config
+                echo "CONFIG_CMDLINE=\"${CMDLINE_NFSROOT_USB}\"" >> ${S}/.config
+        fi
+        yes '' | oe_runmake oldconfig
+}
+
+do_configure_append_avr32() {
+        sed -i -e s:-mno-pic::g arch/avr32/Makefile
+}
+
+do_compile_append() {
+    if test "x${KERNEL_IMAGETYPE}" = "xuImage" ; then 
+        if test -e arch/${ARCH}/boot/compressed/vmlinux ; then
+            ${OBJCOPY} -O binary -R .note -R .comment -S arch/${ARCH}/boot/compressed/vmlinux linux.bin
+            uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C none -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin arch/${ARCH}/boot/uImage
+            rm -f linux.bin
+        else
+            ${OBJCOPY} -O binary -R .note -R .comment -S vmlinux linux.bin
+            rm -f linux.bin.gz
+            gzip -9 linux.bin
+            uboot-mkimage -A ${UBOOT_ARCH} -O linux -T kernel -C gzip -a ${UBOOT_LOADADDRESS} -e ${UBOOT_ENTRYPOINT} -n "${DISTRO_NAME}/${PV}/${MACHINE}" -d linux.bin.gz arch/${ARCH}/boot/uImage
+            rm -f linux.bin.gz
+        fi
+    fi
+}
+
+do_devicetree_image() {
+    if test -n "${KERNEL_DEVICETREE}" ; then
+        dtc -I dts -O dtb ${KERNEL_DEVICETREE_FLAGS} -o devicetree ${KERNEL_DEVICETREE}
+        install -m 0644 devicetree ${D}/boot/devicetree-${KERNEL_VERSION}
+        install -m 0644 devicetree ${DEPLOY_DIR_IMAGE}/${KERNEL_IMAGE_BASE_NAME}.dtb
+        cd ${DEPLOY_DIR_IMAGE}
+        rm -f ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+        ln -sf ${KERNEL_IMAGE_BASE_NAME}.dtb ${KERNEL_IMAGE_SYMLINK_NAME}.dtb
+    fi
+}
+
+addtask devicetree_image after do_deploy before do_package
+
+pkg_postinst_kernel-devicetree () {
+       cd /${KERNEL_IMAGEDEST}; update-alternatives --install /${KERNEL_IMAGEDEST}/devicetree devicetree devicetree-${KERNEL_VERSION} ${KERNEL_PRIORITY} || true
+}
+
+pkg_postrm_kernel-devicetree () {
+       cd /${KERNEL_IMAGEDEST}; update-alternatives --remove devicetree devicetree-${KERNEL_VERSION} || true
+}
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/0001-Implement-downsampling-with-debugs.patch b/packages/linux/omap3-pandora-kernel-wifi/0001-Implement-downsampling-with-debugs.patch
new file mode 100755 (executable)
index 0000000..d3608df
--- /dev/null
@@ -0,0 +1,138 @@
+From 1ef94095e9399a9a387b7b457b48f6c5de7013d8 Mon Sep 17 00:00:00 2001
+From: Tuomas Kulve <tuomas.kulve@movial.com>
+Date: Fri, 31 Oct 2008 14:23:57 +0200
+Subject: [PATCH] Implement downsampling (with debugs).
+
+---
+ drivers/video/omap/dispc.c |   75 +++++++++++++++++++++++++++++++++++++-------
+ 1 files changed, 63 insertions(+), 12 deletions(-)
+
+diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
+index 68bc887..3640dbe 100644
+--- a/drivers/video/omap/dispc.c
++++ b/drivers/video/omap/dispc.c
+@@ -18,6 +18,8 @@
+  * with this program; if not, write to the Free Software Foundation, Inc.,
+  * 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
+  */
++#define DEBUG
++#define VERBOSE_DEBUG
+ #include <linux/kernel.h>
+ #include <linux/dma-mapping.h>
+ #include <linux/mm.h>
+@@ -545,6 +547,17 @@ static void write_firhv_reg(int plane, int reg, u32 value)
+       dispc_write_reg(base + reg * 8, value);
+ }
++static void write_firv_reg(int plane, int reg, u32 value)
++{
++      u32 base;
++
++      if (plane == 1)
++              base = 0x1E0;
++      else
++              base = 0x1E0 + 0x20;
++      dispc_write_reg(base + reg * 4, value);
++}
++
+ static void set_upsampling_coef_table(int plane)
+ {
+       const u32 coef[][2] = {
+@@ -565,6 +578,27 @@ static void set_upsampling_coef_table(int plane)
+       }
+ }
++static void set_downsampling_coef_table(int plane)
++{
++      const u32 coef[][3] = {
++                { 0x24382400, 0x24382400, 0x00000000 },
++                { 0x28371FFE, 0x28391F04, 0x000004FE },
++                { 0x2C361BFB, 0x2D381B08, 0x000008FB },
++                { 0x303516F9, 0x3237170C, 0x00000CF9 },
++                { 0x11343311, 0x123737F7, 0x0000F711 },
++                { 0x1635300C, 0x173732F9, 0x0000F90C },
++                { 0x1B362C08, 0x1B382DFB, 0x0000FB08 },
++                { 0x1F372804, 0x1F3928FE, 0x0000FE04 },
++      };
++      int i;
++
++      for (i = 0; i < 8; i++) {
++              write_firh_reg(plane, i, coef[i][0]);
++              write_firhv_reg(plane, i, coef[i][1]);
++              write_firv_reg(plane, i, coef[i][2]);
++      }
++}
++
+ static int omap_dispc_set_scale(int plane,
+                               int orig_width, int orig_height,
+                               int out_width, int out_height)
+@@ -592,25 +626,47 @@ static int omap_dispc_set_scale(int plane,
+               if (orig_height > out_height ||
+                   orig_width * 8 < out_width ||
+                   orig_height * 8 < out_height) {
++                        dev_dbg(dispc.fbdev->dev, 
++                                "Max upsampling is 8x, "
++                                "tried: %dx%d -> %dx%d\n",
++                                orig_width, orig_height,
++                                out_width, out_height);
+                       enable_lcd_clocks(0);
+                       return -EINVAL;
+               }
+               set_upsampling_coef_table(plane);
+       } else if (orig_width > out_width) {
+-              /* Downsampling not yet supported
+-              */
+-
+-              enable_lcd_clocks(0);
+-              return -EINVAL;
++              /*
++               * Downsampling.
++               * Currently you can only scale both dimensions in one way.
++               */
++              if (orig_height < out_height ||
++                  orig_width > out_width * 4||
++                  orig_height > out_height * 4) {
++                        dev_dbg(dispc.fbdev->dev, 
++                                "Max downsampling is 4x, "
++                                "tried: %dx%d -> %dx%d\n",
++                                orig_width, orig_height,
++                                out_width, out_height);
++                      enable_lcd_clocks(0);
++                      return -EINVAL;
++              }
++              set_downsampling_coef_table(plane);
+       }
+       if (!orig_width || orig_width == out_width)
+               fir_hinc = 0;
+       else
+-              fir_hinc = 1024 * orig_width / out_width;
++              fir_hinc = 1024 * (orig_width -1)/ (out_width -1);
+       if (!orig_height || orig_height == out_height)
+               fir_vinc = 0;
+       else
+-              fir_vinc = 1024 * orig_height / out_height;
++              fir_vinc = 1024 * (orig_height-1) / (out_height -1 );
++
++      dev_dbg(dispc.fbdev->dev, "out_width %d out_height %d orig_width %d "
++              "orig_height %d fir_hinc  %d fir_vinc %d\n",
++              out_width, out_height, orig_width, orig_height,
++              fir_hinc, fir_vinc);
++
+       dispc.fir_hinc[plane] = fir_hinc;
+       dispc.fir_vinc[plane] = fir_vinc;
+@@ -619,11 +675,6 @@ static int omap_dispc_set_scale(int plane,
+                   ((fir_vinc & 4095) << 16) |
+                   (fir_hinc & 4095));
+-      dev_dbg(dispc.fbdev->dev, "out_width %d out_height %d orig_width %d "
+-              "orig_height %d fir_hinc  %d fir_vinc %d\n",
+-              out_width, out_height, orig_width, orig_height,
+-              fir_hinc, fir_vinc);
+-
+       MOD_REG_FLD(vs_reg[plane],
+                   FLD_MASK(16, 11) | FLD_MASK(0, 11),
+                   ((out_height - 1) << 16) | (out_width - 1));
+-- 
+1.5.6.5
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/0001-Removed-resolution-check-that-prevents-scaling-when.patch b/packages/linux/omap3-pandora-kernel-wifi/0001-Removed-resolution-check-that-prevents-scaling-when.patch
new file mode 100755 (executable)
index 0000000..636203e
--- /dev/null
@@ -0,0 +1,26 @@
+From 3227bd5c412e7eb0d4370b2834e71723f6b4be48 Mon Sep 17 00:00:00 2001
+From: Tuomas Kulve <tuomas.kulve@movial.fi>
+Date: Mon, 27 Oct 2008 18:55:59 +0200
+Subject: [PATCH] Removed resolution check that prevents scaling when output resolution doesn't match the original resolution.
+
+---
+ drivers/video/omap/dispc.c |    3 ---
+ 1 files changed, 0 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
+index 0f0b2e5..1df0c1e 100644
+--- a/drivers/video/omap/dispc.c
++++ b/drivers/video/omap/dispc.c
+@@ -579,9 +579,6 @@ static int omap_dispc_set_scale(int plane,
+       if ((unsigned)plane > OMAPFB_PLANE_NUM)
+               return -ENODEV;
+-      if (out_width != orig_width || out_height != orig_height)
+-              return -EINVAL;
+-
+       enable_lcd_clocks(1);
+       if (orig_width < out_width) {
+               /*
+-- 
+1.5.6.5
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/cache-display-fix.patch b/packages/linux/omap3-pandora-kernel-wifi/cache-display-fix.patch
new file mode 100755 (executable)
index 0000000..019fd5a
--- /dev/null
@@ -0,0 +1,238 @@
+On Tue, 2008-07-01 at 06:23 +0100, Dirk Behme wrote:
+> Catalin Marinas wrote:
+> > But, anyway, if you want a patch, Harry is updating it to a recent
+> > kernel.
+> 
+> Any news on this? I think there are some people wanting a patch ;)
+
+See below for a preliminary patch updated to 2.6.26-rc8. Note that I
+don't plan to submit it in its current form but clean it up a bit first.
+
+
+Show the cache type of ARMv7 CPUs
+
+From: Catalin Marinas <catalin.marinas@arm.com>
+
+Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
+---
+
+ arch/arm/kernel/setup.c  |  137 +++++++++++++++++++++++++++++++++++++++++++++-
+ include/asm-arm/system.h |   18 ++++++
+ 2 files changed, 153 insertions(+), 2 deletions(-)
+
+
+diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
+index 5ae0eb2..0cd238d 100644
+--- a/arch/arm/kernel/setup.c
++++ b/arch/arm/kernel/setup.c
+@@ -256,6 +256,24 @@ static const char *proc_arch[] = {
+       "?(17)",
+ };
++static const char *v7_cache_policy[4] = {
++      "reserved",
++      "AVIVT",
++      "VIPT",
++      "PIPT",
++};
++
++static const char *v7_cache_type[8] = {
++      "none",
++      "instruction only",
++      "data only",
++      "separate instruction and data",
++      "unified",
++      "unknown type",
++      "unknown type",
++      "unknown type",
++};
++
+ #define CACHE_TYPE(x) (((x) >> 25) & 15)
+ #define CACHE_S(x)    ((x) & (1 << 24))
+ #define CACHE_DSIZE(x)        (((x) >> 12) & 4095)    /* only if S=1 */
+@@ -266,6 +284,22 @@ static const char *proc_arch[] = {
+ #define CACHE_M(y)    ((y) & (1 << 2))
+ #define CACHE_LINE(y) ((y) & 3)
++#define CACHE_TYPE_V7(x)      (((x) >> 14) & 3)
++#define CACHE_UNIFIED(x)      ((((x) >> 27) & 7)+1)
++#define CACHE_COHERENT(x)     ((((x) >> 24) & 7)+1)
++
++#define CACHE_ID_LEVEL_MASK   7
++#define CACHE_ID_LEVEL_BITS   3
++
++#define CACHE_LINE_V7(v)      ((1 << (((v) & 7)+4)))
++#define CACHE_ASSOC_V7(v)     ((((v) >> 3) & ((1<<10)-1))+1)
++#define CACHE_SETS_V7(v)      ((((v) >> 13) & ((1<<15)-1))+1)
++#define CACHE_SIZE_V7(v)      (CACHE_LINE_V7(v)*CACHE_ASSOC_V7(v)*CACHE_SETS_V7(v))
++#define CACHE_WA_V7(v)                (((v) & (1<<28)) != 0)
++#define CACHE_RA_V7(v)                (((v) & (1<<29)) != 0)
++#define CACHE_WB_V7(v)                (((v) & (1<<30)) != 0)
++#define CACHE_WT_V7(v)                (((v) & (1<<31)) != 0)
++
+ static inline void dump_cache(const char *prefix, int cpu, unsigned int cache)
+ {
+       unsigned int mult = 2 + (CACHE_M(cache) ? 1 : 0);
+@@ -279,11 +313,57 @@ static inline void dump_cache(const char *prefix, int cpu, unsigned int cache)
+                       CACHE_LINE(cache)));
+ }
++static void dump_v7_cache(const char *type, int cpu, unsigned int level)
++{
++      unsigned int cachesize;
++                    
++      write_extended_cpuid(2,0,0,0,level);  /* Set the cache size selection register */
++      write_extended_cpuid(0,7,5,4,0);      /* Prefetch flush to wait for above */
++      cachesize = read_extended_cpuid(1,0,0,0);
++
++      printk("CPU%u: %s cache: %d bytes, associativity %d, %d byte lines, %d sets,\n      supports%s%s%s%s\n",
++             cpu, type,
++             CACHE_SIZE_V7(cachesize),CACHE_ASSOC_V7(cachesize),
++             CACHE_LINE_V7(cachesize),CACHE_SETS_V7(cachesize),
++             CACHE_WA_V7(cachesize) ? " WA" : "",
++             CACHE_RA_V7(cachesize) ? " RA" : "",
++             CACHE_WB_V7(cachesize) ? " WB" : "",
++             CACHE_WT_V7(cachesize) ? " WT" : "");
++}
++
+ static void __init dump_cpu_info(int cpu)
+ {
+       unsigned int info = read_cpuid(CPUID_CACHETYPE);
+-      if (info != processor_id) {
++      if (info != processor_id && (info & (1 << 31))) {
++              /* ARMv7 style of cache info register */
++              unsigned int id = read_extended_cpuid(1,0,0,1);
++              unsigned int level = 0;
++              printk("CPU%u: L1 I %s cache. Caches unified at level %u, coherent at level %u\n",
++                     cpu,
++                     v7_cache_policy[CACHE_TYPE_V7(info)],
++                     CACHE_UNIFIED(id),
++                     CACHE_COHERENT(id));
++
++              while (id & CACHE_ID_LEVEL_MASK) {
++                      printk("CPU%u: Level %u cache is %s\n",
++                             cpu, (level >> 1)+1, v7_cache_type[id & CACHE_ID_LEVEL_MASK]);
++
++                      if (id & 1) {
++                              /* Dump I at this level */
++                              dump_v7_cache("I", cpu, level | 1);
++                      }
++
++                      if (id & (4 | 2)) {
++                              /* Dump D or unified at this level */
++                              dump_v7_cache((id & 4) ? "unified" : "D", cpu, level);
++                      }
++
++                      /* Next level out */
++                      level += 2;
++                      id >>= CACHE_ID_LEVEL_BITS;
++              }
++      } else if (info != processor_id) {
+               printk("CPU%u: D %s %s cache\n", cpu, cache_is_vivt() ? "VIVT" : "VIPT",
+                      cache_types[CACHE_TYPE(info)]);
+               if (CACHE_S(info)) {
+@@ -916,6 +996,30 @@ c_show_cache(struct seq_file *m, const char *type, unsigned int cache)
+                           CACHE_LINE(cache)));
+ }
++static void c_show_v7_cache(struct seq_file *m, const char *type, unsigned int levelselect)
++{
++      unsigned int cachesize;
++      unsigned int level = (levelselect >> 1) + 1;
++                    
++      write_extended_cpuid(2,0,0,0,levelselect);  /* Set the cache size selection register */
++      write_extended_cpuid(0,7,5,4,0);      /* Prefetch flush to wait for above */
++      cachesize = read_extended_cpuid(1,0,0,0);
++
++      seq_printf(m, "L%u %s size\t\t: %d bytes\n"
++                 "L%u %s assoc\t\t: %d\n"
++                 "L%u %s line length\t: %d\n"
++                 "L%u %s sets\t\t: %d\n"
++                 "L%u %s supports\t\t:%s%s%s%s\n",
++                 level, type, CACHE_SIZE_V7(cachesize),
++                 level, type, CACHE_ASSOC_V7(cachesize),
++                 level, type, CACHE_LINE_V7(cachesize),
++                 level, type, CACHE_SETS_V7(cachesize),
++                 level, type, CACHE_WA_V7(cachesize) ? " WA" : "",
++                 CACHE_RA_V7(cachesize) ? " RA" : "",
++                 CACHE_WB_V7(cachesize) ? " WB" : "",
++                 CACHE_WT_V7(cachesize) ? " WT" : "");
++}
++
+ static int c_show(struct seq_file *m, void *v)
+ {
+       int i;
+@@ -971,7 +1075,36 @@ static int c_show(struct seq_file *m, void *v)
+       {
+               unsigned int cache_info = read_cpuid(CPUID_CACHETYPE);
+-              if (cache_info != processor_id) {
++              if (cache_info != processor_id && (cache_info & (1<<31))) {
++                      /* V7 style of cache info register */
++                      unsigned int id = read_extended_cpuid(1,0,0,1);
++                      unsigned int levelselect = 0;
++                      seq_printf(m, "L1 I cache\t:%s\n"
++                                 "Cache unification level\t: %u\n"
++                                 "Cache coherency level\t: %u\n",
++                                 v7_cache_policy[CACHE_TYPE_V7(cache_info)],
++                                 CACHE_UNIFIED(id),
++                                 CACHE_COHERENT(id));
++
++                      while (id & CACHE_ID_LEVEL_MASK) {
++                              seq_printf(m, "Level %u cache\t\t: %s\n",
++                                         (levelselect >> 1)+1, v7_cache_type[id & CACHE_ID_LEVEL_MASK]);
++
++                              if (id & 1) {
++                                      /* Dump I at this level */
++                                      c_show_v7_cache(m, "I", levelselect | 1);
++                              }
++
++                              if (id & (4 | 2)) {
++                                      /* Dump D or unified at this level */
++                                      c_show_v7_cache(m, (id & 4) ? "cache" : "D", levelselect);
++                              }
++
++                              /* Next level out */
++                              levelselect += 2;
++                              id >>= CACHE_ID_LEVEL_BITS;
++                      }
++              } else if (cache_info != processor_id) {
+                       seq_printf(m, "Cache type\t: %s\n"
+                                     "Cache clean\t: %s\n"
+                                     "Cache lockdown\t: %s\n"
+diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h
+index 514af79..704738e 100644
+--- a/arch/arm/include/asm/system.h
++++ b/arch/arm/include/asm/system.h
+@@ -74,6 +74,24 @@
+                   : "cc");                                            \
+               __val;                                                  \
+       })
++#define read_extended_cpuid(op1,op2,op3,op4)          \
++      ({                                                              \
++              unsigned int __val;                                     \
++              asm("mrc p15," __stringify(op1) ",%0,c" __stringify(op2)",c" __stringify(op3)"," __stringify(op4)       \
++                  : "=r" (__val)                                      \
++                  :                                                   \
++                  : "cc");                                            \
++              __val;                                                  \
++      })
++
++#define write_extended_cpuid(op1,op2,op3,op4,v)               \
++      ({                                                              \
++              unsigned int __val = v;                                 \
++              asm("mcr p15," __stringify(op1) ",%0,c" __stringify(op2)",c" __stringify(op3)"," __stringify(op4)       \
++                  :                                                   \
++                  : "r" (__val)                                       \
++                  : "cc");                                            \
++      })
+ #else
+ extern unsigned int processor_id;
+ #define read_cpuid(reg) (processor_id)
+
+
+-- 
+Catalin
+
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/defconfig b/packages/linux/omap3-pandora-kernel-wifi/defconfig
new file mode 100755 (executable)
index 0000000..16815a9
--- /dev/null
@@ -0,0 +1,1965 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.27-omap1
+# Mon Jan 12 18:36:10 2009
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_OPROFILE_ARMV7=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+# CONFIG_CGROUP_NS is not set
+CONFIG_CGROUP_DEVICE=y
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+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_ALL is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
+# CONFIG_HAVE_IOREMAP_PROT is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+# CONFIG_HAVE_ARCH_TRACEHOOK is not set
+# CONFIG_HAVE_DMA_ATTRS is not set
+# CONFIG_USE_GENERIC_SMP_HELPERS is not set
+CONFIG_HAVE_CLK=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_CLASSIC_RCU=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM7X00A is not set
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
+# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
+CONFIG_OMAP_SMARTREFLEX=y
+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_BOOT_TAG=y
+CONFIG_OMAP_BOOT_REASON=y
+# CONFIG_OMAP_COMPONENT_VERSION is not set
+# CONFIG_OMAP_GPIO_SWITCH is not set
+# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_DM_TIMER=y
+# CONFIG_OMAP_LL_DEBUG_UART1 is not set
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+CONFIG_OMAP_LL_DEBUG_UART3=y
+CONFIG_ARCH_OMAP34XX=y
+CONFIG_ARCH_OMAP3430=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_OMAP3EVM is not set
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_OVERO is not set
+CONFIG_MACH_OMAP3_PANDORA=y
+CONFIG_OMAP_TICK_GPTIMER=12
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_IFAR=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=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_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_LEDS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" debug "
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ 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=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=y
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIBTUSB is not set
+CONFIG_BT_HCIBTSDIO=y
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_HCIBPA10X=y
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBRF6150 is not set
+CONFIG_BT_HCIH4P=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_MAC80211=y
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+CONFIG_MAC80211_RC_DEFAULT="pid"
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+CONFIG_EEPROM_93CX6=y
+# CONFIG_OMAP_STI is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_PANDORA_GAME_CONSOLE=y
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+
+#
+# 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
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_SDIO is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_USB_ZD1201=y
+CONFIG_USB_NET_RNDIS_WLAN=y
+CONFIG_RTL8187=y
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_P54_COMMON=y
+CONFIG_P54_USB=y
+# CONFIG_IWLWIFI_LEDS is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_ZD1211RW=y
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_RT2X00=y
+CONFIG_RT2X00_LIB=y
+CONFIG_RT2X00_LIB_USB=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_LEDS=y
+CONFIG_RT2500USB=y
+CONFIG_RT2500USB_LEDS=y
+CONFIG_RT73USB=y
+CONFIG_RT73USB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=y
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_TWL4030=y
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO 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_TSC2005 is not set
+# CONFIG_TOUCHSCREEN_TSC2102 is not set
+# CONFIG_TOUCHSCREEN_TSC210X is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_UINPUT is not set
+CONFIG_INPUT_VSENSE=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
+CONFIG_SENSORS_EEPROM=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_ISP1301_OMAP is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_TLV320AIC23 is not set
+CONFIG_TWL4030_MADC=m
+CONFIG_TWL4030_USB=y
+CONFIG_TWL4030_PWRBUTTON=y
+CONFIG_TWL4030_POWEROFF=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_LP5521 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_OMAP24XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_TSC2101 is not set
+# CONFIG_SPI_TSC2102 is not set
+# CONFIG_SPI_TSC210X is not set
+# CONFIG_SPI_TSC2301 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_POWER=y
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_AU0828 is not set
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+# CONFIG_USB_GSPCA is not set
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+# CONFIG_SOC_CAMERA is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_TEA5761 is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_SI470X is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+# CONFIG_DVB_USB_DW2102 is not set
+# CONFIG_DVB_USB_ANYSEE is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+# CONFIG_DVB_SIANO_SMS1XXX is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+# CONFIG_DVB_DRX397XD is not set
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6405 is not set
+CONFIG_DVB_ISL6421=m
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_GPIO=y
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# 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 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_PANDORA_CLUT224=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=y
+CONFIG_SND_RAWMIDI=y
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_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
+CCONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_ARM=y
+# CONFIG_SND_OMAP_AIC23 is not set
+# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_SX1 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
+# CONFIG_SND_OMAP24XX_EAC is not set
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_SOC=y
+CONFIG_SND_OMAP_SOC=y
+CONFIG_SND_OMAP_SOC_MCBSP=y
+CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=y
+CONFIG_SND_SOC_TWL4030=y
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_OMAP_EHCI_PHY_MODE=y
+# CONFIG_OMAP_EHCI_TLL_MODE is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_SOC=y
+
+#
+# OMAP 343x high speed USB support
+#
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_PERIPHERAL is not set
+CONFIG_USB_MUSB_OTG=y
+CONFIG_USB_GADGET_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_USB_INVENTRA_DMA=y
+# CONFIG_USB_TI_CPPI_DMA is not set
+# CONFIG_USB_MUSB_DEBUG is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+
+#
+# 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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_RIO500 is not set
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=m
+# CONFIG_USB_ISIGHTFW is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+CONFIG_MMC_EMBEDDED_SDIO=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_OMAP_DEBUG is not set
+# CONFIG_LEDS_OMAP is not set
+# CONFIG_LEDS_OMAP_PWM is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_PCA955X is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+CONFIG_RTC_DRV_TWL4030=y
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_DMADEVICES is not set
+
+#
+# Voltage and Current regulators
+#
+# CONFIG_REGULATOR is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_UIO is not set
+
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=y
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+# CONFIG_FTRACE is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_LZO is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_GENERIC_FIND_FIRST_BIT is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/omap3-pandora-kernel-wifi/defconfig.bak b/packages/linux/omap3-pandora-kernel-wifi/defconfig.bak
new file mode 100755 (executable)
index 0000000..92f3c08
--- /dev/null
@@ -0,0 +1,1970 @@
+#
+# Automatically generated make config: don't edit
+# Linux kernel version: 2.6.27-omap1
+# Mon Jan 12 18:36:10 2009
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_GENERIC_GPIO=y
+CONFIG_GENERIC_TIME=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_MMU=y
+# CONFIG_NO_IOPORT is not set
+CONFIG_GENERIC_HARDIRQS=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+# CONFIG_ARCH_HAS_ILOG2_U32 is not set
+# CONFIG_ARCH_HAS_ILOG2_U64 is not set
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_ARCH_SUPPORTS_AOUT=y
+CONFIG_ZONE_DMA=y
+CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ=y
+CONFIG_OPROFILE_ARMV7=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+
+#
+# General setup
+#
+CONFIG_EXPERIMENTAL=y
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+# CONFIG_POSIX_MQUEUE is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+# CONFIG_AUDIT is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=14
+CONFIG_CGROUPS=y
+# CONFIG_CGROUP_DEBUG is not set
+# CONFIG_CGROUP_NS is not set
+CONFIG_CGROUP_DEVICE=y
+CONFIG_GROUP_SCHED=y
+CONFIG_FAIR_GROUP_SCHED=y
+# CONFIG_RT_GROUP_SCHED is not set
+CONFIG_USER_SCHED=y
+# CONFIG_CGROUP_SCHED is not set
+CONFIG_SYSFS_DEPRECATED=y
+CONFIG_SYSFS_DEPRECATED_V2=y
+# CONFIG_RELAY is not set
+CONFIG_NAMESPACES=y
+CONFIG_UTS_NS=y
+CONFIG_IPC_NS=y
+CONFIG_USER_NS=y
+CONFIG_PID_NS=y
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+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_ALL is not set
+CONFIG_KALLSYMS_EXTRA_PASS=y
+CONFIG_HOTPLUG=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_COMPAT_BRK=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_ANON_INODES=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLAB=y
+# CONFIG_SLUB is not set
+# CONFIG_SLOB is not set
+# CONFIG_PROFILING is not set
+# CONFIG_MARKERS is not set
+CONFIG_HAVE_OPROFILE=y
+# CONFIG_KPROBES is not set
+# CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS is not set
+# CONFIG_HAVE_IOREMAP_PROT is not set
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+# CONFIG_HAVE_ARCH_TRACEHOOK is not set
+# CONFIG_HAVE_DMA_ATTRS is not set
+# CONFIG_USE_GENERIC_SMP_HELPERS is not set
+CONFIG_HAVE_CLK=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+# CONFIG_TINY_SHMEM is not set
+CONFIG_BASE_SMALL=0
+CONFIG_MODULES=y
+CONFIG_MODULE_FORCE_LOAD=y
+CONFIG_MODULE_UNLOAD=y
+CONFIG_MODULE_FORCE_UNLOAD=y
+CONFIG_MODVERSIONS=y
+CONFIG_MODULE_SRCVERSION_ALL=y
+CONFIG_KMOD=y
+CONFIG_BLOCK=y
+CONFIG_LBD=y
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_LSF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_AS=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_AS is not set
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_CLASSIC_RCU=y
+
+#
+# System Type
+#
+# CONFIG_ARCH_AAEC2000 is not set
+# CONFIG_ARCH_INTEGRATOR is not set
+# CONFIG_ARCH_REALVIEW is not set
+# CONFIG_ARCH_VERSATILE is not set
+# CONFIG_ARCH_AT91 is not set
+# CONFIG_ARCH_CLPS7500 is not set
+# CONFIG_ARCH_CLPS711X is not set
+# CONFIG_ARCH_EBSA110 is not set
+# CONFIG_ARCH_EP93XX is not set
+# CONFIG_ARCH_FOOTBRIDGE is not set
+# CONFIG_ARCH_NETX is not set
+# CONFIG_ARCH_H720X is not set
+# CONFIG_ARCH_IMX is not set
+# CONFIG_ARCH_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP23XX is not set
+# CONFIG_ARCH_IXP2000 is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_L7200 is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_NS9XXX is not set
+# CONFIG_ARCH_LOKI is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_MXC is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_PNX4008 is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C2410 is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_LH7A40X is not set
+# CONFIG_ARCH_DAVINCI is not set
+CONFIG_ARCH_OMAP=y
+# CONFIG_ARCH_MSM7X00A is not set
+
+#
+# TI OMAP Implementations
+#
+CONFIG_ARCH_OMAP_OTG=y
+# CONFIG_ARCH_OMAP1 is not set
+# CONFIG_ARCH_OMAP2 is not set
+CONFIG_ARCH_OMAP3=y
+
+#
+# OMAP Feature Selections
+#
+# CONFIG_OMAP_DEBUG_POWERDOMAIN is not set
+# CONFIG_OMAP_DEBUG_CLOCKDOMAIN is not set
+CONFIG_OMAP_SMARTREFLEX=y
+# CONFIG_OMAP_SMARTREFLEX_TESTING is not set
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_BOOT_TAG=y
+CONFIG_OMAP_BOOT_REASON=y
+# CONFIG_OMAP_COMPONENT_VERSION is not set
+# CONFIG_OMAP_GPIO_SWITCH is not set
+# CONFIG_OMAP_MUX is not set
+CONFIG_OMAP_MCBSP=y
+# CONFIG_OMAP_MMU_FWK is not set
+# CONFIG_OMAP_MBOX_FWK is not set
+# CONFIG_OMAP_MPU_TIMER is not set
+CONFIG_OMAP_32K_TIMER=y
+CONFIG_OMAP_32K_TIMER_HZ=128
+CONFIG_OMAP_DM_TIMER=y
+# CONFIG_OMAP_LL_DEBUG_UART1 is not set
+# CONFIG_OMAP_LL_DEBUG_UART2 is not set
+CONFIG_OMAP_LL_DEBUG_UART3=y
+CONFIG_ARCH_OMAP34XX=y
+CONFIG_ARCH_OMAP3430=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_OMAP3EVM is not set
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_OVERO is not set
+CONFIG_MACH_OMAP3_PANDORA=y
+CONFIG_OMAP_TICK_GPTIMER=12
+
+#
+# Boot options
+#
+
+#
+# Power management
+#
+
+#
+# Processor Type
+#
+CONFIG_CPU_32=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_IFAR=y
+CONFIG_CPU_CACHE_V7=y
+CONFIG_CPU_CACHE_VIPT=y
+CONFIG_CPU_COPY_V6=y
+CONFIG_CPU_TLB_V7=y
+CONFIG_CPU_HAS_ASID=y
+CONFIG_CPU_CP15=y
+CONFIG_CPU_CP15_MMU=y
+
+#
+# Processor Features
+#
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_HAS_TLS_REG=y
+# CONFIG_OUTER_CACHE is not set
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_ARCH_SUPPORTS_MSI is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+# CONFIG_PREEMPT is not set
+CONFIG_HZ=128
+CONFIG_AEABI=y
+# CONFIG_OABI_COMPAT is not set
+CONFIG_ARCH_FLATMEM_HAS_HOLES=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_SPARSEMEM_VMEMMAP_ENABLE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=4
+# CONFIG_RESOURCES_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=1
+CONFIG_BOUNCE=y
+CONFIG_VIRT_TO_BUS=y
+CONFIG_LEDS=y
+CONFIG_ALIGNMENT_TRAP=y
+
+#
+# Boot options
+#
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+CONFIG_CMDLINE=" debug "
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+
+#
+# CPU Frequency scaling
+#
+# CONFIG_CPU_FREQ 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=y
+CONFIG_VFPv3=y
+CONFIG_NEON=y
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_BINFMT_AOUT=m
+CONFIG_BINFMT_MISC=y
+
+#
+# Power management options
+#
+CONFIG_PM=y
+# CONFIG_PM_DEBUG is not set
+CONFIG_PM_SLEEP=y
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+CONFIG_PACKET_MMAP=y
+CONFIG_UNIX=y
+CONFIG_XFRM=y
+# CONFIG_XFRM_USER is not set
+# CONFIG_XFRM_SUB_POLICY is not set
+# CONFIG_XFRM_MIGRATE is not set
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+# CONFIG_NET_KEY_MIGRATE is not set
+CONFIG_INET=y
+# CONFIG_IP_MULTICAST is not set
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_FIB_HASH=y
+CONFIG_IP_PNP=y
+CONFIG_IP_PNP_DHCP=y
+CONFIG_IP_PNP_BOOTP=y
+CONFIG_IP_PNP_RARP=y
+# CONFIG_NET_IPIP is not set
+# CONFIG_NET_IPGRE is not set
+# CONFIG_ARPD is not set
+# CONFIG_SYN_COOKIES is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+CONFIG_INET_TUNNEL=m
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+CONFIG_IPV6=m
+# CONFIG_IPV6_PRIVACY is not set
+# CONFIG_IPV6_ROUTER_PREF is not set
+# CONFIG_IPV6_OPTIMISTIC_DAD is not set
+# CONFIG_INET6_AH is not set
+# CONFIG_INET6_ESP is not set
+# CONFIG_INET6_IPCOMP is not set
+# CONFIG_IPV6_MIP6 is not set
+# CONFIG_INET6_XFRM_TUNNEL is not set
+# CONFIG_INET6_TUNNEL is not set
+CONFIG_INET6_XFRM_MODE_TRANSPORT=m
+CONFIG_INET6_XFRM_MODE_TUNNEL=m
+CONFIG_INET6_XFRM_MODE_BEET=m
+# CONFIG_INET6_XFRM_MODE_ROUTEOPTIMIZATION is not set
+CONFIG_IPV6_SIT=m
+CONFIG_IPV6_NDISC_NODETYPE=y
+# CONFIG_IPV6_TUNNEL is not set
+# CONFIG_IPV6_MULTIPLE_TABLES is not set
+# CONFIG_IPV6_MROUTE is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETFILTER is not set
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_BRIDGE is not set
+# CONFIG_VLAN_8021Q is not set
+# CONFIG_DECNET is not set
+# CONFIG_LLC2 is not set
+# CONFIG_IPX is not set
+# CONFIG_ATALK is not set
+# CONFIG_X25 is not set
+# CONFIG_LAPB is not set
+# CONFIG_ECONET is not set
+# CONFIG_WAN_ROUTER is not set
+# CONFIG_NET_SCHED is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+CONFIG_BT=y
+CONFIG_BT_L2CAP=y
+CONFIG_BT_SCO=y
+CONFIG_BT_RFCOMM=y
+CONFIG_BT_RFCOMM_TTY=y
+CONFIG_BT_BNEP=y
+CONFIG_BT_BNEP_MC_FILTER=y
+CONFIG_BT_BNEP_PROTO_FILTER=y
+CONFIG_BT_HIDP=y
+
+#
+# Bluetooth device drivers
+#
+CONFIG_BT_HCIUSB=y
+CONFIG_BT_HCIUSB_SCO=y
+# CONFIG_BT_HCIBTUSB is not set
+CONFIG_BT_HCIBTSDIO=y
+# CONFIG_BT_HCIUART is not set
+CONFIG_BT_HCIBCM203X=y
+CONFIG_BT_HCIBPA10X=y
+# CONFIG_BT_HCIBFUSB is not set
+# CONFIG_BT_HCIBRF6150 is not set
+CONFIG_BT_HCIH4P=y
+# CONFIG_BT_HCIVHCI is not set
+# CONFIG_AF_RXRPC is not set
+
+#
+# Wireless
+#
+CONFIG_CFG80211=y
+CONFIG_NL80211=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WIRELESS_EXT_SYSFS=y
+CONFIG_MAC80211=y
+
+#
+# Rate control algorithm selection
+#
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+CONFIG_MAC80211_RC_DEFAULT="pid"
+# CONFIG_MAC80211_MESH is not set
+CONFIG_MAC80211_LEDS=y
+# CONFIG_MAC80211_DEBUG_MENU is not set
+CONFIG_IEEE80211=y
+# CONFIG_IEEE80211_DEBUG is not set
+CONFIG_IEEE80211_CRYPT_WEP=y
+CONFIG_IEEE80211_CRYPT_CCMP=y
+CONFIG_IEEE80211_CRYPT_TKIP=y
+# CONFIG_RFKILL is not set
+# CONFIG_NET_9P is not set
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+CONFIG_FIRMWARE_IN_KERNEL=y
+CONFIG_EXTRA_FIRMWARE=""
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_CONNECTOR is not set
+CONFIG_MTD=y
+# CONFIG_MTD_DEBUG is not set
+CONFIG_MTD_CONCAT=y
+CONFIG_MTD_PARTITIONS=y
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+CONFIG_MTD_CHAR=y
+CONFIG_MTD_BLKDEVS=y
+CONFIG_MTD_BLOCK=y
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_MTD_OOPS is not set
+
+#
+# RAM/ROM/Flash chip drivers
+#
+# CONFIG_MTD_CFI is not set
+# CONFIG_MTD_JEDECPROBE is not set
+CONFIG_MTD_MAP_BANK_WIDTH_1=y
+CONFIG_MTD_MAP_BANK_WIDTH_2=y
+CONFIG_MTD_MAP_BANK_WIDTH_4=y
+# CONFIG_MTD_MAP_BANK_WIDTH_8 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_16 is not set
+# CONFIG_MTD_MAP_BANK_WIDTH_32 is not set
+CONFIG_MTD_CFI_I1=y
+CONFIG_MTD_CFI_I2=y
+# CONFIG_MTD_CFI_I4 is not set
+# CONFIG_MTD_CFI_I8 is not set
+# CONFIG_MTD_RAM is not set
+# CONFIG_MTD_ROM is not set
+# CONFIG_MTD_ABSENT is not set
+
+#
+# Mapping drivers for chip access
+#
+# CONFIG_MTD_COMPLEX_MAPPINGS is not set
+# CONFIG_MTD_PLATRAM is not set
+
+#
+# Self-contained MTD device drivers
+#
+# CONFIG_MTD_DATAFLASH is not set
+# CONFIG_MTD_M25P80 is not set
+# CONFIG_MTD_SLRAM is not set
+# CONFIG_MTD_PHRAM is not set
+# CONFIG_MTD_MTDRAM is not set
+# CONFIG_MTD_BLOCK2MTD is not set
+
+#
+# Disk-On-Chip Device Drivers
+#
+# CONFIG_MTD_DOC2000 is not set
+# CONFIG_MTD_DOC2001 is not set
+# CONFIG_MTD_DOC2001PLUS is not set
+CONFIG_MTD_NAND=y
+# CONFIG_MTD_NAND_VERIFY_WRITE is not set
+# CONFIG_MTD_NAND_ECC_SMC is not set
+# CONFIG_MTD_NAND_MUSEUM_IDS is not set
+CONFIG_MTD_NAND_OMAP2=y
+CONFIG_MTD_NAND_IDS=y
+# CONFIG_MTD_NAND_DISKONCHIP is not set
+# CONFIG_MTD_NAND_NANDSIM is not set
+CONFIG_MTD_NAND_PLATFORM=y
+# CONFIG_MTD_ALAUDA is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# UBI - Unsorted block images
+#
+# CONFIG_MTD_UBI is not set
+# CONFIG_PARPORT is not set
+CONFIG_BLK_DEV=y
+# CONFIG_BLK_DEV_COW_COMMON is not set
+CONFIG_BLK_DEV_LOOP=y
+CONFIG_BLK_DEV_CRYPTOLOOP=m
+# CONFIG_BLK_DEV_NBD is not set
+# CONFIG_BLK_DEV_UB is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+CONFIG_CDROM_PKTCDVD=m
+CONFIG_CDROM_PKTCDVD_BUFFERS=8
+# CONFIG_CDROM_PKTCDVD_WCACHE is not set
+# CONFIG_ATA_OVER_ETH is not set
+CONFIG_MISC_DEVICES=y
+CONFIG_EEPROM_93CX6=y
+# CONFIG_OMAP_STI is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+CONFIG_PANDORA_GAME_CONSOLE=y
+CONFIG_HAVE_IDE=y
+# CONFIG_IDE is not set
+
+#
+# SCSI device support
+#
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+CONFIG_BLK_DEV_SR=m
+# CONFIG_BLK_DEV_SR_VENDOR is not set
+CONFIG_CHR_DEV_SG=m
+CONFIG_CHR_DEV_SCH=m
+
+#
+# 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
+CONFIG_SCSI_WAIT_SCAN=m
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_ATA is not set
+# CONFIG_MD is not set
+CONFIG_NETDEVICES=y
+# CONFIG_DUMMY is not set
+# CONFIG_BONDING is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_TUN is not set
+# CONFIG_VETH is not set
+# CONFIG_NET_ETHERNET is not set
+# CONFIG_NETDEV_1000 is not set
+# CONFIG_NETDEV_10000 is not set
+
+#
+# Wireless LAN
+#
+# CONFIG_WLAN_PRE80211 is not set
+CONFIG_WLAN_80211=y
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+# CONFIG_LIBERTAS_SDIO is not set
+# CONFIG_LIBERTAS_DEBUG is not set
+CONFIG_USB_ZD1201=y
+CONFIG_USB_NET_RNDIS_WLAN=y
+CONFIG_RTL8187=y
+# CONFIG_MAC80211_HWSIM is not set
+CONFIG_P54_COMMON=y
+CONFIG_P54_USB=y
+# CONFIG_IWLWIFI_LEDS is not set
+CONFIG_HOSTAP=m
+CONFIG_HOSTAP_FIRMWARE=y
+CONFIG_HOSTAP_FIRMWARE_NVRAM=y
+# CONFIG_B43 is not set
+# CONFIG_B43LEGACY is not set
+CONFIG_ZD1211RW=y
+# CONFIG_ZD1211RW_DEBUG is not set
+CONFIG_RT2X00=y
+CONFIG_RT2X00_LIB=y
+CONFIG_RT2X00_LIB_USB=y
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_LEDS=y
+CONFIG_RT2500USB=y
+CONFIG_RT2500USB_LEDS=y
+CONFIG_RT73USB=y
+CONFIG_RT73USB_LEDS=y
+# CONFIG_RT2X00_DEBUG is not set
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_USBNET=y
+CONFIG_USB_NET_AX8817X=y
+CONFIG_USB_NET_CDCETHER=y
+CONFIG_USB_NET_DM9601=m
+CONFIG_USB_NET_GL620A=m
+CONFIG_USB_NET_NET1080=m
+CONFIG_USB_NET_PLUSB=m
+CONFIG_USB_NET_MCS7830=m
+CONFIG_USB_NET_RNDIS_HOST=y
+CONFIG_USB_NET_CDC_SUBSET=m
+CONFIG_USB_ALI_M5632=y
+CONFIG_USB_AN2720=y
+CONFIG_USB_BELKIN=y
+CONFIG_USB_ARMLINUX=y
+CONFIG_USB_EPSON2888=y
+CONFIG_USB_KC2190=y
+CONFIG_USB_NET_ZAURUS=m
+# CONFIG_WAN is not set
+CONFIG_PPP=m
+CONFIG_PPP_MULTILINK=y
+CONFIG_PPP_FILTER=y
+CONFIG_PPP_ASYNC=m
+CONFIG_PPP_SYNC_TTY=m
+CONFIG_PPP_DEFLATE=m
+CONFIG_PPP_BSDCOMP=m
+CONFIG_PPP_MPPE=m
+CONFIG_PPPOE=m
+CONFIG_PPPOL2TP=m
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+# CONFIG_INPUT_POLLDEV is not set
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=800
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=480
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ATKBD is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+CONFIG_KEYBOARD_TWL4030=y
+# CONFIG_KEYBOARD_LM8323 is not set
+CONFIG_KEYBOARD_GPIO=y
+CONFIG_INPUT_MOUSE=y
+# CONFIG_MOUSE_PS2 is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_INPUT_JOYSTICK is not set
+# CONFIG_INPUT_TABLET is not set
+CONFIG_INPUT_TOUCHSCREEN=y
+CONFIG_TOUCHSCREEN_ADS7846=y
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_MTOUCH is not set
+# CONFIG_TOUCHSCREEN_INEXIO 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_TSC2005 is not set
+# CONFIG_TOUCHSCREEN_TSC2102 is not set
+# CONFIG_TOUCHSCREEN_TSC210X is not set
+# CONFIG_TOUCHSCREEN_UCB1400 is not set
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_ATI_REMOTE is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_UINPUT is not set
+CONFIG_INPUT_VSENSE=y
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_DEVKMEM=y
+# CONFIG_SERIAL_NONSTANDARD is not set
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_NR_UARTS=32
+CONFIG_SERIAL_8250_RUNTIME_UARTS=4
+CONFIG_SERIAL_8250_EXTENDED=y
+CONFIG_SERIAL_8250_MANY_PORTS=y
+CONFIG_SERIAL_8250_SHARE_IRQ=y
+CONFIG_SERIAL_8250_DETECT_IRQ=y
+CONFIG_SERIAL_8250_RSA=y
+
+#
+# Non-8250 serial port support
+#
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_NVRAM is not set
+# CONFIG_R3964 is not set
+# CONFIG_RAW_DRIVER is not set
+# CONFIG_TCG_TPM is not set
+CONFIG_I2C=y
+CONFIG_I2C_BOARDINFO=y
+CONFIG_I2C_CHARDEV=y
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_SIMTEC is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_PARPORT_LIGHT is not set
+# CONFIG_I2C_TAOS_EVM is not set
+# CONFIG_I2C_TINY_USB is not set
+
+#
+# Other I2C/SMBus bus drivers
+#
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_STUB is not set
+
+#
+# Miscellaneous I2C Chip support
+#
+# CONFIG_DS1682 is not set
+# CONFIG_AT24 is not set
+CONFIG_SENSORS_EEPROM=y
+# CONFIG_SENSORS_PCF8574 is not set
+# CONFIG_PCF8575 is not set
+# CONFIG_SENSORS_PCA9539 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_ISP1301_OMAP is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_SENSORS_TLV320AIC23 is not set
+CONFIG_TWL4030_MADC=m
+CONFIG_TWL4030_USB=y
+CONFIG_TWL4030_PWRBUTTON=y
+CONFIG_TWL4030_POWEROFF=y
+# CONFIG_SENSORS_MAX6875 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_LP5521 is not set
+# CONFIG_I2C_DEBUG_CORE is not set
+# CONFIG_I2C_DEBUG_ALGO is not set
+# CONFIG_I2C_DEBUG_BUS is not set
+# CONFIG_I2C_DEBUG_CHIP is not set
+CONFIG_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_BITBANG is not set
+CONFIG_SPI_OMAP24XX=y
+
+#
+# SPI Protocol Masters
+#
+# CONFIG_SPI_AT25 is not set
+# CONFIG_SPI_TSC2101 is not set
+# CONFIG_SPI_TSC2102 is not set
+# CONFIG_SPI_TSC210X is not set
+# CONFIG_SPI_TSC2301 is not set
+# CONFIG_SPI_SPIDEV is not set
+# CONFIG_SPI_TLE62X0 is not set
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIOLIB=y
+# CONFIG_DEBUG_GPIO is not set
+CONFIG_GPIO_SYSFS=y
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_GPIO_PCF857X is not set
+CONFIG_GPIO_TWL4030=y
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_W1 is not set
+# CONFIG_POWER_SUPPLY is not set
+# CONFIG_HWMON is not set
+# CONFIG_WATCHDOG is not set
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB_POSSIBLE=y
+# CONFIG_SSB is not set
+
+#
+# Multifunction device drivers
+#
+# CONFIG_MFD_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+CONFIG_TWL4030_CORE=y
+CONFIG_TWL4030_POWER=y
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+
+#
+# Multimedia devices
+#
+
+#
+# Multimedia core support
+#
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2_COMMON=m
+CONFIG_VIDEO_ALLOW_V4L1=y
+CONFIG_VIDEO_V4L1_COMPAT=y
+CONFIG_DVB_CORE=m
+CONFIG_VIDEO_MEDIA=m
+
+#
+# Multimedia drivers
+#
+CONFIG_MEDIA_ATTACH=y
+CONFIG_MEDIA_TUNER=m
+# CONFIG_MEDIA_TUNER_CUSTOMIZE is not set
+CONFIG_MEDIA_TUNER_SIMPLE=m
+CONFIG_MEDIA_TUNER_TDA8290=m
+CONFIG_MEDIA_TUNER_TDA827X=m
+CONFIG_MEDIA_TUNER_TDA18271=m
+CONFIG_MEDIA_TUNER_TDA9887=m
+CONFIG_MEDIA_TUNER_TEA5761=m
+CONFIG_MEDIA_TUNER_TEA5767=m
+CONFIG_MEDIA_TUNER_MT20XX=m
+CONFIG_MEDIA_TUNER_MT2060=m
+CONFIG_MEDIA_TUNER_MT2266=m
+CONFIG_MEDIA_TUNER_QT1010=m
+CONFIG_MEDIA_TUNER_XC2028=m
+CONFIG_MEDIA_TUNER_XC5000=m
+CONFIG_MEDIA_TUNER_MXL5005S=m
+CONFIG_VIDEO_V4L2=m
+CONFIG_VIDEO_V4L1=m
+CONFIG_VIDEO_TVEEPROM=m
+CONFIG_VIDEO_TUNER=m
+CONFIG_VIDEO_CAPTURE_DRIVERS=y
+# CONFIG_VIDEO_ADV_DEBUG is not set
+CONFIG_VIDEO_HELPER_CHIPS_AUTO=y
+CONFIG_VIDEO_MSP3400=m
+CONFIG_VIDEO_CS53L32A=m
+CONFIG_VIDEO_WM8775=m
+CONFIG_VIDEO_SAA711X=m
+CONFIG_VIDEO_CX25840=m
+CONFIG_VIDEO_CX2341X=m
+# CONFIG_VIDEO_VIVI is not set
+# CONFIG_VIDEO_CPIA is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_VIDEO_SAA5246A is not set
+# CONFIG_VIDEO_SAA5249 is not set
+# CONFIG_TUNER_3036 is not set
+# CONFIG_VIDEO_AU0828 is not set
+CONFIG_V4L_USB_DRIVERS=y
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+# CONFIG_USB_GSPCA is not set
+CONFIG_VIDEO_PVRUSB2=m
+CONFIG_VIDEO_PVRUSB2_SYSFS=y
+CONFIG_VIDEO_PVRUSB2_DVB=y
+# CONFIG_VIDEO_PVRUSB2_DEBUGIFC is not set
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_VIDEO_USBVISION=m
+CONFIG_VIDEO_USBVIDEO=m
+CONFIG_USB_VICAM=m
+CONFIG_USB_IBMCAM=m
+CONFIG_USB_KONICAWC=m
+CONFIG_USB_QUICKCAM_MESSENGER=m
+# CONFIG_USB_ET61X251 is not set
+CONFIG_VIDEO_OVCAMCHIP=m
+CONFIG_USB_W9968CF=m
+CONFIG_USB_OV511=m
+CONFIG_USB_SE401=m
+CONFIG_USB_SN9C102=m
+CONFIG_USB_STV680=m
+# CONFIG_USB_ZC0301 is not set
+CONFIG_USB_PWC=m
+# CONFIG_USB_PWC_DEBUG is not set
+CONFIG_USB_ZR364XX=m
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+# CONFIG_SOC_CAMERA is not set
+# CONFIG_VIDEO_SH_MOBILE_CEU is not set
+CONFIG_RADIO_ADAPTERS=y
+# CONFIG_RADIO_TEA5761 is not set
+# CONFIG_USB_DSBR is not set
+# CONFIG_USB_SI470X is not set
+CONFIG_DVB_CAPTURE_DRIVERS=y
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Supported USB Adapters
+#
+CONFIG_DVB_USB=m
+# CONFIG_DVB_USB_DEBUG is not set
+CONFIG_DVB_USB_A800=m
+CONFIG_DVB_USB_DIBUSB_MB=m
+# CONFIG_DVB_USB_DIBUSB_MB_FAULTY is not set
+CONFIG_DVB_USB_DIBUSB_MC=m
+CONFIG_DVB_USB_DIB0700=m
+CONFIG_DVB_USB_UMT_010=m
+CONFIG_DVB_USB_CXUSB=m
+CONFIG_DVB_USB_M920X=m
+CONFIG_DVB_USB_GL861=m
+CONFIG_DVB_USB_AU6610=m
+CONFIG_DVB_USB_DIGITV=m
+CONFIG_DVB_USB_VP7045=m
+CONFIG_DVB_USB_VP702X=m
+CONFIG_DVB_USB_GP8PSK=m
+CONFIG_DVB_USB_NOVA_T_USB2=m
+CONFIG_DVB_USB_TTUSB2=m
+CONFIG_DVB_USB_DTT200U=m
+CONFIG_DVB_USB_OPERA1=m
+CONFIG_DVB_USB_AF9005=m
+CONFIG_DVB_USB_AF9005_REMOTE=m
+# CONFIG_DVB_USB_DW2102 is not set
+# CONFIG_DVB_USB_ANYSEE is not set
+CONFIG_DVB_TTUSB_BUDGET=m
+CONFIG_DVB_TTUSB_DEC=m
+CONFIG_DVB_CINERGYT2=m
+# CONFIG_DVB_CINERGYT2_TUNING is not set
+# CONFIG_DVB_SIANO_SMS1XXX is not set
+
+#
+# Supported FlexCopII (B2C2) Adapters
+#
+# CONFIG_DVB_B2C2_FLEXCOP is not set
+
+#
+# Supported DVB Frontends
+#
+
+#
+# Customise DVB Frontends
+#
+# CONFIG_DVB_FE_CUSTOMISE is not set
+
+#
+# DVB-S (satellite) frontends
+#
+CONFIG_DVB_CX24110=m
+CONFIG_DVB_CX24123=m
+CONFIG_DVB_MT312=m
+CONFIG_DVB_S5H1420=m
+CONFIG_DVB_STV0299=m
+CONFIG_DVB_TDA8083=m
+CONFIG_DVB_TDA10086=m
+CONFIG_DVB_VES1X93=m
+CONFIG_DVB_TUNER_ITD1000=m
+CONFIG_DVB_TDA826X=m
+CONFIG_DVB_TUA6100=m
+
+#
+# DVB-T (terrestrial) frontends
+#
+CONFIG_DVB_SP8870=m
+CONFIG_DVB_SP887X=m
+CONFIG_DVB_CX22700=m
+CONFIG_DVB_CX22702=m
+# CONFIG_DVB_DRX397XD is not set
+CONFIG_DVB_L64781=m
+CONFIG_DVB_TDA1004X=m
+CONFIG_DVB_NXT6000=m
+CONFIG_DVB_MT352=m
+CONFIG_DVB_ZL10353=m
+CONFIG_DVB_DIB3000MB=m
+CONFIG_DVB_DIB3000MC=m
+CONFIG_DVB_DIB7000M=m
+CONFIG_DVB_DIB7000P=m
+CONFIG_DVB_TDA10048=m
+
+#
+# DVB-C (cable) frontends
+#
+CONFIG_DVB_VES1820=m
+CONFIG_DVB_TDA10021=m
+CONFIG_DVB_TDA10023=m
+CONFIG_DVB_STV0297=m
+
+#
+# ATSC (North American/Korean Terrestrial/Cable DTV) frontends
+#
+CONFIG_DVB_NXT200X=m
+# CONFIG_DVB_OR51211 is not set
+# CONFIG_DVB_OR51132 is not set
+CONFIG_DVB_BCM3510=m
+CONFIG_DVB_LGDT330X=m
+CONFIG_DVB_S5H1409=m
+CONFIG_DVB_AU8522=m
+CONFIG_DVB_S5H1411=m
+
+#
+# Digital terrestrial only tuners/PLL
+#
+CONFIG_DVB_PLL=m
+CONFIG_DVB_TUNER_DIB0070=m
+
+#
+# SEC control devices for DVB-S
+#
+CONFIG_DVB_LNBP21=m
+# CONFIG_DVB_ISL6405 is not set
+CONFIG_DVB_ISL6421=m
+CONFIG_DAB=y
+
+#
+# Graphics support
+#
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_FB=y
+# CONFIG_FIRMWARE_EDID is not set
+# CONFIG_FB_DDC is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
+# CONFIG_FB_SYS_FILLRECT is not set
+# CONFIG_FB_SYS_COPYAREA is not set
+# CONFIG_FB_SYS_IMAGEBLIT is not set
+# CONFIG_FB_FOREIGN_ENDIAN is not set
+# CONFIG_FB_SYS_FOPS is not set
+# CONFIG_FB_SVGALIB is not set
+# CONFIG_FB_MACMODES is not set
+# CONFIG_FB_BACKLIGHT is not set
+# CONFIG_FB_MODE_HELPERS is not set
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_VIRTUAL is not set
+CONFIG_FB_OMAP=y
+# CONFIG_FB_OMAP_LCDC_EXTERNAL is not set
+# CONFIG_FB_OMAP_BOOTLOADER_INIT is not set
+CONFIG_FB_OMAP_CONSISTENT_DMA_SIZE=4
+CONFIG_BACKLIGHT_LCD_SUPPORT=y
+# CONFIG_LCD_CLASS_DEVICE is not set
+CONFIG_BACKLIGHT_CLASS_DEVICE=y
+# CONFIG_BACKLIGHT_CORGI is not set
+CONFIG_BACKLIGHT_GPIO=y
+
+#
+# Display device support
+#
+CONFIG_DISPLAY_SUPPORT=y
+
+#
+# Display hardware drivers
+#
+
+#
+# Console display driver support
+#
+# CONFIG_VGA_CONSOLE is not set
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+CONFIG_FRAMEBUFFER_CONSOLE_ROTATION=y
+CONFIG_FONTS=y
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# 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 is not set
+# CONFIG_FONT_SUN8x16 is not set
+# CONFIG_FONT_SUN12x22 is not set
+# CONFIG_FONT_10x18 is not set
+CONFIG_LOGO=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+CONFIG_LOGO_PANDORA_CLUT224=y
+CONFIG_SOUND=y
+CONFIG_SND=y
+CONFIG_SND_TIMER=y
+CONFIG_SND_PCM=y
+CONFIG_SND_HWDEP=y
+CONFIG_SND_RAWMIDI=y
+CONFIG_SND_SEQUENCER=m
+# CONFIG_SND_SEQ_DUMMY is not set
+CONFIG_SND_OSSEMUL=y
+CONFIG_SND_MIXER_OSS=y
+CONFIG_SND_PCM_OSS=y
+CONFIG_SND_PCM_OSS_PLUGINS=y
+# CONFIG_SND_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
+CCONFIG_SND_DRIVERS=y
+# CONFIG_SND_DUMMY is not set
+# CONFIG_SND_VIRMIDI is not set
+# CONFIG_SND_MTPAV is not set
+# CONFIG_SND_SERIAL_U16550 is not set
+# CONFIG_SND_MPU401 is not set
+CONFIG_SND_ARM=y
+# CONFIG_SND_OMAP_AIC23 is not set
+# CONFIG_SND_OMAP_TSC2101 is not set
+# CONFIG_SND_SX1 is not set
+# CONFIG_SND_OMAP_TSC2102 is not set
+# CONFIG_SND_OMAP24XX_EAC is not set
+CONFIG_SND_SPI=y
+CONFIG_SND_USB=y
+CONFIG_SND_USB_AUDIO=y
+CONFIG_SND_USB_CAIAQ=m
+CONFIG_SND_USB_CAIAQ_INPUT=y
+CONFIG_SND_SOC=y
+CONFIG_SND_OMAP_SOC=y
+CONFIG_SND_OMAP_SOC_MCBSP=y
+CONFIG_SND_OMAP_SOC_OMAP3_PANDORA=y
+CONFIG_SND_SOC_TWL4030=y
+# CONFIG_SOUND_PRIME is not set
+CONFIG_HID_SUPPORT=y
+CONFIG_HID=y
+CONFIG_HID_DEBUG=y
+# CONFIG_HIDRAW is not set
+
+#
+# USB Input Devices
+#
+CONFIG_USB_HID=y
+# CONFIG_USB_HIDINPUT_POWERBOOK is not set
+# CONFIG_HID_FF is not set
+# CONFIG_USB_HIDDEV is not set
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB_ARCH_HAS_OHCI=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEVICEFS=y
+CONFIG_USB_DEVICE_CLASS=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+CONFIG_USB_SUSPEND=y
+CONFIG_USB_OTG=y
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_OMAP_EHCI_PHY_MODE=y
+# CONFIG_OMAP_EHCI_TLL_MODE is not set
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+# CONFIG_USB_EHCI_TT_NEWSCHED is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_OHCI_HCD is not set
+# CONFIG_USB_SL811_HCD is not set
+# CONFIG_USB_R8A66597_HCD is not set
+CONFIG_USB_MUSB_HDRC=y
+CONFIG_USB_MUSB_SOC=y
+
+#
+# OMAP 343x high speed USB support
+#
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_PERIPHERAL is not set
+CONFIG_USB_MUSB_OTG=y
+CONFIG_USB_GADGET_MUSB_HDRC=y
+CONFIG_USB_MUSB_HDRC_HCD=y
+# CONFIG_MUSB_PIO_ONLY is not set
+CONFIG_USB_INVENTRA_DMA=y
+# CONFIG_USB_TI_CPPI_DMA is not set
+# CONFIG_USB_MUSB_DEBUG is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+CONFIG_USB_PRINTER=m
+CONFIG_USB_WDM=m
+
+#
+# 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_ISD200 is not set
+# CONFIG_USB_STORAGE_DPCM is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_LIBUSUAL is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=m
+CONFIG_USB_EZUSB=y
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_AIRCABLE=m
+CONFIG_USB_SERIAL_ARK3116=m
+CONFIG_USB_SERIAL_BELKIN=m
+CONFIG_USB_SERIAL_CH341=m
+CONFIG_USB_SERIAL_WHITEHEAT=m
+CONFIG_USB_SERIAL_DIGI_ACCELEPORT=m
+CONFIG_USB_SERIAL_CP2101=m
+CONFIG_USB_SERIAL_CYPRESS_M8=m
+CONFIG_USB_SERIAL_EMPEG=m
+CONFIG_USB_SERIAL_FTDI_SIO=m
+CONFIG_USB_SERIAL_FUNSOFT=m
+CONFIG_USB_SERIAL_VISOR=m
+CONFIG_USB_SERIAL_IPAQ=m
+CONFIG_USB_SERIAL_IR=m
+CONFIG_USB_SERIAL_EDGEPORT=m
+CONFIG_USB_SERIAL_EDGEPORT_TI=m
+CONFIG_USB_SERIAL_GARMIN=m
+CONFIG_USB_SERIAL_IPW=m
+CONFIG_USB_SERIAL_IUU=m
+CONFIG_USB_SERIAL_KEYSPAN_PDA=m
+CONFIG_USB_SERIAL_KEYSPAN=m
+CONFIG_USB_SERIAL_KEYSPAN_MPR=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XA=y
+CONFIG_USB_SERIAL_KEYSPAN_USA28XB=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19=y
+CONFIG_USB_SERIAL_KEYSPAN_USA18X=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QW=y
+CONFIG_USB_SERIAL_KEYSPAN_USA19QI=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49W=y
+CONFIG_USB_SERIAL_KEYSPAN_USA49WLC=y
+CONFIG_USB_SERIAL_KLSI=m
+CONFIG_USB_SERIAL_KOBIL_SCT=m
+CONFIG_USB_SERIAL_MCT_U232=m
+CONFIG_USB_SERIAL_MOS7720=m
+CONFIG_USB_SERIAL_MOS7840=m
+CONFIG_USB_SERIAL_MOTOROLA=m
+CONFIG_USB_SERIAL_NAVMAN=m
+CONFIG_USB_SERIAL_PL2303=m
+CONFIG_USB_SERIAL_OTI6858=m
+CONFIG_USB_SERIAL_SPCP8X5=m
+CONFIG_USB_SERIAL_HP4X=m
+CONFIG_USB_SERIAL_SAFE=m
+# CONFIG_USB_SERIAL_SAFE_PADDED is not set
+CONFIG_USB_SERIAL_SIERRAWIRELESS=m
+CONFIG_USB_SERIAL_TI=m
+CONFIG_USB_SERIAL_CYBERJACK=m
+CONFIG_USB_SERIAL_XIRCOM=m
+CONFIG_USB_SERIAL_OPTION=m
+CONFIG_USB_SERIAL_OMNINET=m
+CONFIG_USB_SERIAL_DEBUG=m
+
+#
+# USB Miscellaneous drivers
+#
+CONFIG_USB_EMI62=m
+CONFIG_USB_EMI26=m
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_RIO500 is not set
+CONFIG_USB_LEGOTOWER=m
+CONFIG_USB_LCD=m
+# CONFIG_USB_BERRY_CHARGE is not set
+CONFIG_USB_LED=m
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_PHIDGET is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+CONFIG_USB_TEST=m
+# CONFIG_USB_ISIGHTFW is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_SELECTED=y
+# CONFIG_USB_GADGET_AMD5536UDC is not set
+# CONFIG_USB_GADGET_ATMEL_USBA is not set
+# CONFIG_USB_GADGET_FSL_USB2 is not set
+# CONFIG_USB_GADGET_NET2280 is not set
+# CONFIG_USB_GADGET_PXA25X is not set
+# CONFIG_USB_GADGET_M66592 is not set
+# CONFIG_USB_GADGET_PXA27X is not set
+# CONFIG_USB_GADGET_GOKU is not set
+# CONFIG_USB_GADGET_LH7A40X is not set
+# CONFIG_USB_GADGET_OMAP is not set
+# CONFIG_USB_GADGET_S3C2410 is not set
+# CONFIG_USB_GADGET_AT91 is not set
+# CONFIG_USB_GADGET_DUMMY_HCD is not set
+CONFIG_USB_GADGET_DUALSPEED=y
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FILE_STORAGE is not set
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_MIDI_GADGET is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+
+#
+# MMC/SD Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+CONFIG_MMC_OMAP_HS=y
+CONFIG_MMC_SPI=m
+CONFIG_OMAP_HS_MMC1=y
+CONFIG_OMAP_HS_MMC2=y
+CONFIG_OMAP_HS_MMC3=y
+CONFIG_TIWLAN_SDIO=y
+CONFIG_TIWLAN_MMC_CONTROLLER=3
+# CONFIG_MMC_SPI is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_OMAP_DEBUG is not set
+# CONFIG_LEDS_OMAP is not set
+# CONFIG_LEDS_OMAP_PWM is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_PCA955X is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_HCTOSYS_DEVICE="rtc0"
+# CONFIG_RTC_DEBUG is not set
+
+#
+# RTC interfaces
+#
+CONFIG_RTC_INTF_SYSFS=y
+CONFIG_RTC_INTF_PROC=y
+CONFIG_RTC_INTF_DEV=y
+# CONFIG_RTC_INTF_DEV_UIE_EMUL is not set
+# CONFIG_RTC_DRV_TEST is not set
+
+#
+# I2C RTC drivers
+#
+# CONFIG_RTC_DRV_DS1307 is not set
+# CONFIG_RTC_DRV_DS1374 is not set
+# CONFIG_RTC_DRV_DS1672 is not set
+# CONFIG_RTC_DRV_MAX6900 is not set
+# CONFIG_RTC_DRV_RS5C372 is not set
+# CONFIG_RTC_DRV_ISL1208 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF8563 is not set
+# CONFIG_RTC_DRV_PCF8583 is not set
+# CONFIG_RTC_DRV_M41T80 is not set
+CONFIG_RTC_DRV_TWL4030=y
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+
+#
+# on-CPU RTC drivers
+#
+# CONFIG_DMADEVICES is not set
+
+#
+# Voltage and Current regulators
+#
+# CONFIG_REGULATOR is not set
+# CONFIG_REGULATOR_FIXED_VOLTAGE is not set
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_BQ24022 is not set
+# CONFIG_UIO is not set
+
+#
+# CBUS support
+#
+# CONFIG_CBUS is not set
+
+#
+# File systems
+#
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+# CONFIG_EXT3_FS_XATTR is not set
+# CONFIG_EXT4DEV_FS is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+CONFIG_FS_POSIX_ACL=y
+CONFIG_XFS_FS=m
+# CONFIG_XFS_QUOTA is not set
+# CONFIG_XFS_POSIX_ACL is not set
+# CONFIG_XFS_RT is not set
+# CONFIG_XFS_DEBUG is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY=y
+CONFIG_INOTIFY_USER=y
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS_FS is not set
+CONFIG_AUTOFS4_FS=m
+CONFIG_FUSE_FS=m
+
+#
+# CD-ROM/DVD Filesystems
+#
+CONFIG_ISO9660_FS=m
+CONFIG_JOLIET=y
+CONFIG_ZISOFS=y
+CONFIG_UDF_FS=m
+CONFIG_UDF_NLS=y
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_HUGETLB_PAGE is not set
+# CONFIG_CONFIGFS_FS is not set
+
+#
+# Miscellaneous filesystems
+#
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+CONFIG_JFFS2_FS=y
+CONFIG_JFFS2_FS_DEBUG=0
+CONFIG_JFFS2_FS_WRITEBUFFER=y
+# CONFIG_JFFS2_FS_WBUF_VERIFY is not set
+CONFIG_JFFS2_SUMMARY=y
+CONFIG_JFFS2_FS_XATTR=y
+CONFIG_JFFS2_FS_POSIX_ACL=y
+CONFIG_JFFS2_FS_SECURITY=y
+CONFIG_JFFS2_COMPRESSION_OPTIONS=y
+CONFIG_JFFS2_ZLIB=y
+CONFIG_JFFS2_LZO=y
+CONFIG_JFFS2_RTIME=y
+CONFIG_JFFS2_RUBIN=y
+# CONFIG_JFFS2_CMODE_NONE is not set
+CONFIG_JFFS2_CMODE_PRIORITY=y
+# CONFIG_JFFS2_CMODE_SIZE is not set
+# CONFIG_JFFS2_CMODE_FAVOURLZO is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+CONFIG_ROOT_NFS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_RPCSEC_GSS_SPKM3 is not set
+# CONFIG_SMB_FS is not set
+CONFIG_CIFS=y
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_XATTR is not set
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_EXPERIMENTAL is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
+
+#
+# Partition Types
+#
+CONFIG_PARTITION_ADVANCED=y
+# CONFIG_ACORN_PARTITION is not set
+# CONFIG_OSF_PARTITION is not set
+# CONFIG_AMIGA_PARTITION is not set
+# CONFIG_ATARI_PARTITION is not set
+# CONFIG_MAC_PARTITION is not set
+CONFIG_MSDOS_PARTITION=y
+# CONFIG_BSD_DISKLABEL is not set
+# CONFIG_MINIX_SUBPARTITION is not set
+# CONFIG_SOLARIS_X86_PARTITION is not set
+# CONFIG_UNIXWARE_DISKLABEL is not set
+# CONFIG_LDM_PARTITION is not set
+# CONFIG_SGI_PARTITION is not set
+# CONFIG_ULTRIX_PARTITION is not set
+# CONFIG_SUN_PARTITION is not set
+# CONFIG_KARMA_PARTITION is not set
+# CONFIG_EFI_PARTITION is not set
+# CONFIG_SYSV68_PARTITION is not set
+CONFIG_NLS=y
+CONFIG_NLS_DEFAULT="iso8859-1"
+CONFIG_NLS_CODEPAGE_437=y
+# CONFIG_NLS_CODEPAGE_737 is not set
+# CONFIG_NLS_CODEPAGE_775 is not set
+# CONFIG_NLS_CODEPAGE_850 is not set
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+# CONFIG_NLS_ISO8859_15 is not set
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_UTF8 is not set
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+# CONFIG_PRINTK_TIME is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+CONFIG_MAGIC_SYSRQ=y
+# CONFIG_UNUSED_SYMBOLS is not set
+# CONFIG_DEBUG_FS is not set
+# CONFIG_HEADERS_CHECK is not set
+CONFIG_DEBUG_KERNEL=y
+# CONFIG_DEBUG_SHIRQ is not set
+CONFIG_DETECT_SOFTLOCKUP=y
+# CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC is not set
+CONFIG_BOOTPARAM_SOFTLOCKUP_PANIC_VALUE=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_DEBUG_SLAB is not set
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+# CONFIG_DEBUG_SPINLOCK is not set
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_SPINLOCK_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_INFO is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+CONFIG_FRAME_POINTER=y
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_HAVE_FTRACE=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+# CONFIG_FTRACE is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_CONTEXT_SWITCH_TRACER is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_ERRORS is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_LL is not set
+
+#
+# Security options
+#
+# CONFIG_KEYS is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITY_FILE_CAPABILITIES is not set
+CONFIG_XOR_BLOCKS=m
+CONFIG_ASYNC_CORE=m
+CONFIG_ASYNC_MEMCPY=m
+CONFIG_ASYNC_XOR=m
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_AEAD=m
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_HASH=m
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_GF128MUL=m
+CONFIG_CRYPTO_NULL=m
+CONFIG_CRYPTO_CRYPTD=m
+# CONFIG_CRYPTO_AUTHENC is not set
+CONFIG_CRYPTO_TEST=m
+
+#
+# Authenticated Encryption with Associated Data
+#
+# CONFIG_CRYPTO_CCM is not set
+# CONFIG_CRYPTO_GCM is not set
+# CONFIG_CRYPTO_SEQIV is not set
+
+#
+# Block modes
+#
+CONFIG_CRYPTO_CBC=y
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+CONFIG_CRYPTO_LRW=m
+CONFIG_CRYPTO_PCBC=m
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_HMAC=m
+CONFIG_CRYPTO_XCBC=m
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=m
+CONFIG_CRYPTO_MD4=m
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=y
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+CONFIG_CRYPTO_SHA1=m
+CONFIG_CRYPTO_SHA256=m
+CONFIG_CRYPTO_SHA512=m
+CONFIG_CRYPTO_TGR192=m
+CONFIG_CRYPTO_WP512=m
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+CONFIG_CRYPTO_ANUBIS=m
+CONFIG_CRYPTO_ARC4=y
+CONFIG_CRYPTO_BLOWFISH=m
+CONFIG_CRYPTO_CAMELLIA=m
+CONFIG_CRYPTO_CAST5=m
+CONFIG_CRYPTO_CAST6=m
+CONFIG_CRYPTO_DES=y
+CONFIG_CRYPTO_FCRYPT=m
+CONFIG_CRYPTO_KHAZAD=m
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+CONFIG_CRYPTO_SERPENT=m
+CONFIG_CRYPTO_TEA=m
+CONFIG_CRYPTO_TWOFISH=m
+CONFIG_CRYPTO_TWOFISH_COMMON=m
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=m
+# CONFIG_CRYPTO_LZO is not set
+CONFIG_CRYPTO_HW=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+# CONFIG_GENERIC_FIND_FIRST_BIT is not set
+# CONFIG_GENERIC_FIND_NEXT_BIT is not set
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=m
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+CONFIG_PLIST=y
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
diff --git a/packages/linux/omap3-pandora-kernel-wifi/dvb-fix-dma.diff b/packages/linux/omap3-pandora-kernel-wifi/dvb-fix-dma.diff
new file mode 100755 (executable)
index 0000000..e05473f
--- /dev/null
@@ -0,0 +1,60 @@
+Hi,
+I post this patch that fixes a kernel crash that happens when using a dvb
+usb stick on a mips platform and I think even on other platforms on which
+the dma access in not cache-coherent.
+
+The problem's origin is that, inside the method usb_bulk_urb_init of file
+drivers/media/dvb/dvb-usb/usb-urb.c, stream->urb_list[i]->transfer_buffer
+points to a memory area that has been allocated to be dma-coherent but
+stream->urb_list[i]->transfer_flags doesn't include the
+URB_NO_TRANSFER_DMA_MAP flag and stream->urb_list[i]->transfer_dma is not
+set.
+When later on the stream->urb_list[i]->transfer_buffer pointer is used
+inside function usb_hcd_submit_urb of file drivers/usb/core/hcd.c since the
+flag URB_NO_TRANSFER_DMA_MAP is not set the urb->transfer_buffer pointer is
+passed to the dma_map_single function that since the address is dma-coherent
+returns a wrong tranfer_dma address that later on leads to the kernel crash.
+
+The problem is solved by setting the URB_NO_TRANSFER_DMA_MAP flag and the
+stream->urb_list[i]->transfer_dma address.
+
+Perhaps to be more safe the URB_NO_TRANSFER_DMA_MAP flag can be set only
+if stream->urb_list[i]->transfer_dma != 0.
+
+I don't know if half of the fault can be of the dma_map_single function that
+should anyway returns a valid address both for a not dma-coherent and a
+dma-coherent address.
+
+Just to be clear:
+I've done this patch to solve my problem and I tested it only on a mips 
+platform
+but I think it should not cause any problems on other platforms.
+I posted it here to help someone else that can have my same problem and to 
+point it out
+to the mantainer of this part of code.
+You can use it at your own risk and I'm not resposible in any way for any 
+problem or
+damage that it can cause.
+I'm available to discuss about it
+
+Bye
+
+Michele Scorcia
+
+--------------------
+
+
+
+
+--- /tmp/usb-urb.c     2008-10-08 09:53:23.000000000 +0200
++++ git/drivers/media/dvb/dvb-usb/usb-urb.c    2008-10-08 09:54:16.000000000 +0200
+@@ -152,7 +152,8 @@
+                               stream->props.u.bulk.buffersize,
+                               usb_urb_complete, stream);
+-              stream->urb_list[i]->transfer_flags = 0;
++              stream->urb_list[i]->transfer_flags = URB_NO_TRANSFER_DMA_MAP;
++              stream->urb_list[i]->transfer_dma = stream->dma_addr[i];        
+               stream->urbs_initialized++;
+       }
+       return 0;
diff --git a/packages/linux/omap3-pandora-kernel-wifi/evm-mcspi-ts.diff b/packages/linux/omap3-pandora-kernel-wifi/evm-mcspi-ts.diff
new file mode 100755 (executable)
index 0000000..64d797c
--- /dev/null
@@ -0,0 +1,132 @@
+From linux-omap-owner@vger.kernel.org Sun Nov 02 21:08:25 2008
+Received: from localhost
+       ([127.0.0.1] helo=dominion ident=koen)
+       by dominion.dominion.void with esmtp (Exim 4.69)
+       (envelope-from <linux-omap-owner@vger.kernel.org>)
+       id 1KwjFJ-0008Hg-0T
+       for koen@localhost; Sun, 02 Nov 2008 21:08:25 +0100
+Received: from xs.service.utwente.nl [130.89.5.250]
+       by dominion with POP3 (fetchmail-6.3.9-rc2)
+       for <koen@localhost> (single-drop); Sun, 02 Nov 2008 21:08:25 +0100 (CET)
+Received: from mail.service.utwente.nl ([130.89.5.253]) by exchange.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);
+        Sun, 2 Nov 2008 20:57:16 +0100
+Received: from mx.utwente.nl ([130.89.2.13]) by mail.service.utwente.nl with Microsoft SMTPSVC(6.0.3790.3959);
+        Sun, 2 Nov 2008 20:57:16 +0100
+Received: from vger.kernel.org (vger.kernel.org [209.132.176.167])
+          by mx.utwente.nl (8.12.10/SuSE Linux 0.7) with ESMTP id mA2JudEK010968
+          for <k.kooi@student.utwente.nl>; Sun, 2 Nov 2008 20:56:40 +0100
+Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand
+       id S1752819AbYKBT4i (ORCPT <rfc822;k.kooi@student.utwente.nl>);
+       Sun, 2 Nov 2008 14:56:38 -0500
+Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1752829AbYKBT4i
+       (ORCPT <rfc822;linux-omap-outgoing>); Sun, 2 Nov 2008 14:56:38 -0500
+Received: from fg-out-1718.google.com ([72.14.220.153]:32481 "EHLO
+       fg-out-1718.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org
+       with ESMTP id S1752819AbYKBT4h (ORCPT
+       <rfc822;linux-omap@vger.kernel.org>); Sun, 2 Nov 2008 14:56:37 -0500
+Received: by fg-out-1718.google.com with SMTP id 19so1869080fgg.17
+        for <linux-omap@vger.kernel.org>; Sun, 02 Nov 2008 11:56:33 -0800 (PST)
+DKIM-Signature:        v=1; a=rsa-sha256; c=relaxed/relaxed;
+        d=gmail.com; s=gamma;
+        h=domainkey-signature:received:received:from:to:cc:subject:date
+         :message-id:x-mailer:in-reply-to:references;
+        bh=Ftvoq8kE3ciPRy7pNy5VLkNnZD8o0HYWIrO1LMS/lAY=;
+        b=HpEcngDUbAObGNJuQmBIG3SoNHesUL57GluZGlYO7kxFxfH6N8zeHjKuRSk86+mT5s
+         gMhyCC07wjVp75HnqCtKbOJzNw/8F4ZGbL2lY1LC99+zxHW1JBQv5c3ZaoCVqTw6TuH0
+         bQ8Ew2BwHknT3wGA+QcGoMJJs5aw62AhPiyHY=
+DomainKey-Signature: a=rsa-sha1; c=nofws;
+        d=gmail.com; s=gamma;
+        h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references;
+        b=aio1APZhCIcYIrMY844QkdaQzKw0/yiuaVjqfv52fnft1kafGT2qAS3KfXAc61a9If
+         sXHbi2fr/r1a7YZJJVGqkJX0WmWTY0OqdhS1lmugP/dXEMHeqaArKATbvxrq9/svb1bV
+         Vzpkm6sOzLrr54uo+BcZNoxHWqb8W2UrRxuTk=
+Received: by 10.103.131.18 with SMTP id i18mr6668205mun.126.1225655793072;
+        Sun, 02 Nov 2008 11:56:33 -0800 (PST)
+Received: from localhost.localdomain ([78.59.134.74])
+        by mx.google.com with ESMTPS id g1sm23199635muf.8.2008.11.02.11.56.31
+        (version=TLSv1/SSLv3 cipher=RC4-MD5);
+        Sun, 02 Nov 2008 11:56:31 -0800 (PST)
+From: Grazvydas Ignotas <notasas@gmail.com>
+To: linux-omap@vger.kernel.org
+Cc: Grazvydas Ignotas <notasas@gmail.com>
+Subject: Re: omap3evm LCD red-tint workaround
+Date:  Sun,  2 Nov 2008 21:56:19 +0200
+Message-Id: <1225655779-18934-1-git-send-email-notasas@gmail.com>
+X-Mailer: git-send-email 1.5.4.3
+In-Reply-To: <57322719-1A5A-45DC-9846-5C0A3B6EF346@student.utwente.nl>
+References: <57322719-1A5A-45DC-9846-5C0A3B6EF346@student.utwente.nl>
+Sender: linux-omap-owner@vger.kernel.org
+Precedence: bulk
+List-ID: <linux-omap.vger.kernel.org>
+X-Mailing-List:        linux-omap@vger.kernel.org
+X-UTwente-MailScanner-Information: Scanned by MailScanner. Contact servicedesk@icts.utwente.nl for more information.
+X-UTwente-MailScanner: Found to be clean
+X-UTwente-MailScanner-From: linux-omap-owner@vger.kernel.org
+X-Spam-Status: No
+X-OriginalArrivalTime: 02 Nov 2008 19:57:16.0876 (UTC) FILETIME=[34FBA0C0:01C93D25]
+
+> PS: TS is still unusable with the 16x16 pixel resolution
+This is also the case for Pandora. The patch below fixes the problem,
+but as I have no other boards to test this on, I haven't sent it.
+See if it helps you.
+
+
+From 91f3af26bbf751b846e6265d86387e81be7c1364 Mon Sep 17 00:00:00 2001
+From: Grazvydas Ignotas <notasas@gmail.com>
+Date: Tue, 28 Oct 2008 22:01:42 +0200
+Subject: [PATCH] OMAP3: fix McSPI transfers
+
+Currently on OMAP3 if both write and read is set up for a transfer,
+the first byte returned on read is corrupted. Work around this by
+disabling channel between reads and writes, instead of transfers.
+---
+ drivers/spi/omap2_mcspi.c |    7 ++++---
+ 1 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/drivers/spi/omap2_mcspi.c b/drivers/spi/omap2_mcspi.c
+index 454a271..4890b6c 100644
+--- a/drivers/spi/omap2_mcspi.c
++++ b/drivers/spi/omap2_mcspi.c
+@@ -710,7 +710,6 @@ static void omap2_mcspi_work(struct work_struct *work)
+               spi = m->spi;
+               cs = spi->controller_state;
+-              omap2_mcspi_set_enable(spi, 1);
+               list_for_each_entry(t, &m->transfers, transfer_list) {
+                       if (t->tx_buf == NULL && t->rx_buf == NULL && t->len) {
+                               status = -EINVAL;
+@@ -741,6 +740,8 @@ static void omap2_mcspi_work(struct work_struct *work)
+                       if (t->len) {
+                               unsigned        count;
++                              omap2_mcspi_set_enable(spi, 1);
++
+                               /* RX_ONLY mode needs dummy data in TX reg */
+                               if (t->tx_buf == NULL)
+                                       __raw_writel(0, cs->base
+@@ -752,6 +753,8 @@ static void omap2_mcspi_work(struct work_struct *work)
+                                       count = omap2_mcspi_txrx_pio(spi, t);
+                               m->actual_length += count;
++                              omap2_mcspi_set_enable(spi, 0);
++
+                               if (count != t->len) {
+                                       status = -EIO;
+                                       break;
+@@ -777,8 +780,6 @@ static void omap2_mcspi_work(struct work_struct *work)
+               if (cs_active)
+                       omap2_mcspi_force_cs(spi, 0);
+-              omap2_mcspi_set_enable(spi, 0);
+-
+               m->status = status;
+               m->complete(m->context);
+-- 
+1.5.4.3
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/fix-install.patch b/packages/linux/omap3-pandora-kernel-wifi/fix-install.patch
new file mode 100755 (executable)
index 0000000..46bc25a
--- /dev/null
@@ -0,0 +1,23 @@
+From: Steve Sakoman <steve@sakoman.com>
+Date: Mon, 18 Aug 2008 16:07:31 +0000 (-0700)
+Subject: scripts/Makefile.fwinst: add missing space when setting mode in cmd_install
+X-Git-Url: http://www.sakoman.net/cgi-bin/gitweb.cgi?p=linux-omap-2.6.git;a=commitdiff_plain;h=f039944bdd491cde7327133e9976881d3133ae70
+
+scripts/Makefile.fwinst: add missing space when setting mode in cmd_install
+
+This was causing build failures on some machines
+---
+
+diff --git a/scripts/Makefile.fwinst b/scripts/Makefile.fwinst
+index 6bf8e87..fb20532 100644
+--- a/scripts/Makefile.fwinst
++++ b/scripts/Makefile.fwinst
+@@ -37,7 +37,7 @@ install-all-dirs: $(installed-fw-dirs)
+       @true
+ quiet_cmd_install = INSTALL $(subst $(srctree)/,,$@)
+-      cmd_install = $(INSTALL) -m0644 $< $@
++      cmd_install = $(INSTALL) -m 0644 $< $@
+ $(installed-fw-dirs):
+       $(call cmd,mkdir)
diff --git a/packages/linux/omap3-pandora-kernel-wifi/fix-irq33.diff b/packages/linux/omap3-pandora-kernel-wifi/fix-irq33.diff
new file mode 100755 (executable)
index 0000000..709f042
--- /dev/null
@@ -0,0 +1,111 @@
+From: "Nathan Monson" <nmonson@gmail.com>
+To: "linux-omap@vger.kernel.org List" <linux-omap@vger.kernel.org>
+Subject: Re: omapfb: help from userspace
+Cc: "TK, Pratheesh Gangadhar" <pratheesh@ti.com>
+
+On Wed, Oct 8, 2008 at 11:36 AM, Nathan Monson <nmonson@gmail.com> wrote:
+> "Felipe Contreras" <felipe.contreras@gmail.com> writes:
+>> irq -33, desc: c0335cf8, depth: 0, count: 0, unhandled: 0
+>
+> On the BeagleBoard list, Pratheesh Gangadhar said that mapping I/O
+> regions as Strongly Ordered suppresses this problem:
+> http://groups.google.com/group/beagleboard/browse_thread/thread/23e1c95b4bfb09b5/70d12dca569ca503?show_docid=70d12dca569ca503
+
+Pratheesh helped me make a patch against the latest linux-omap git to
+try this.
+
+With this patch, my IRQ -33 problems with the DSP have disappeared.
+Before, I would end up in IRQ -33 loop after 10 invocations of the DSP
+Bridge 'ping.out' utility.  I just finished running it 50,000 times
+without error.
+
+As stated before, this patch is just a workaround for testing
+purposes, not a fix.  Who knows what performance side effects it
+has...
+
+---
+diff --git a/arch/arm/include/asm/mach/map.h b/arch/arm/include/asm/mach/map.h
+index 9eb936e..5cb4f5f 100644
+--- a/arch/arm/include/asm/mach/map.h
++++ b/arch/arm/include/asm/mach/map.h
+@@ -25,6 +25,7 @@ struct map_desc {
+ #define MT_HIGH_VECTORS               8
+ #define MT_MEMORY             9
+ #define MT_ROM                        10
++#define MT_MEMORY_SO          11
+
+ #define MT_NONSHARED_DEVICE   MT_DEVICE_NONSHARED
+ #define MT_IXP2000_DEVICE     MT_DEVICE_IXP2000
+diff --git a/arch/arm/mach-omap2/io.c b/arch/arm/mach-omap2/io.c
+index adbe21f..c11c0e8 100644
+--- a/arch/arm/mach-omap2/io.c
++++ b/arch/arm/mach-omap2/io.c
+@@ -119,13 +119,13 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
+               .virtual        = L3_34XX_VIRT,
+               .pfn            = __phys_to_pfn(L3_34XX_PHYS),
+               .length         = L3_34XX_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+       {
+               .virtual        = L4_34XX_VIRT,
+               .pfn            = __phys_to_pfn(L4_34XX_PHYS),
+               .length         = L4_34XX_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+       {
+               .virtual        = L4_WK_34XX_VIRT,
+@@ -137,19 +137,19 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
+               .virtual        = OMAP34XX_GPMC_VIRT,
+               .pfn            = __phys_to_pfn(OMAP34XX_GPMC_PHYS),
+               .length         = OMAP34XX_GPMC_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+       {
+               .virtual        = OMAP343X_SMS_VIRT,
+               .pfn            = __phys_to_pfn(OMAP343X_SMS_PHYS),
+               .length         = OMAP343X_SMS_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+       {
+               .virtual        = OMAP343X_SDRC_VIRT,
+               .pfn            = __phys_to_pfn(OMAP343X_SDRC_PHYS),
+               .length         = OMAP343X_SDRC_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+       {
+               .virtual        = L4_PER_34XX_VIRT,
+@@ -161,7 +161,7 @@ static struct map_desc omap34xx_io_desc[] __initdata = {
+               .virtual        = L4_EMU_34XX_VIRT,
+               .pfn            = __phys_to_pfn(L4_EMU_34XX_PHYS),
+               .length         = L4_EMU_34XX_SIZE,
+-              .type           = MT_DEVICE
++              .type           = MT_MEMORY_SO
+       },
+ };
+ #endif
+diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
+index a713e40..d5f25ad 100644
+--- a/arch/arm/mm/mmu.c
++++ b/arch/arm/mm/mmu.c
+@@ -245,6 +245,10 @@ static struct mem_type mem_types[] = {
+               .prot_sect = PMD_TYPE_SECT,
+               .domain    = DOMAIN_KERNEL,
+       },
++      [MT_MEMORY_SO] = {
++              .prot_sect = PMD_TYPE_SECT | PMD_SECT_AP_WRITE | PMD_SECT_UNCACHED,
++              .domain    = DOMAIN_KERNEL,
++      },
+ };
+
+ const struct mem_type *get_mem_type(unsigned int type)
+--
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-256MB.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-256MB.diff
new file mode 100755 (executable)
index 0000000..0492ca2
--- /dev/null
@@ -0,0 +1,24 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Thu, 2 Oct 2008 00:05:33 +0000 (+0100)
+Subject: OMAP: Increase VMALLOC_END to allow 256MB RAM
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=355a0ce968e4a7b0c8d8203f4517296e932e373d
+
+OMAP: Increase VMALLOC_END to allow 256MB RAM
+
+This increases VMALLOC_END to 0x18000000, making room for 256MB
+RAM with the default 128MB vmalloc region.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/arch/arm/plat-omap/include/mach/vmalloc.h b/arch/arm/plat-omap/include/mach/vmalloc.h
+index d8515cb..b97dfaf 100644
+--- a/arch/arm/plat-omap/include/mach/vmalloc.h
++++ b/arch/arm/plat-omap/include/mach/vmalloc.h
+@@ -17,5 +17,5 @@
+  * along with this program; if not, write to the Free Software
+  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+  */
+-#define VMALLOC_END     (PAGE_OFFSET + 0x17000000)
++#define VMALLOC_END     (PAGE_OFFSET + 0x18000000)
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-add-clk-get-parent.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-add-clk-get-parent.diff
new file mode 100755 (executable)
index 0000000..64944a5
--- /dev/null
@@ -0,0 +1,64 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:51:36 +0000 (+0100)
+Subject: OMAP: Add clk_get_parent() for OMAP2/3
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=08d1f1947a5a970b2fe6e4dfeeb70286b9379056
+
+OMAP: Add clk_get_parent() for OMAP2/3
+
+This makes clk_get_parent() work on OMAP2/3.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/arch/arm/mach-omap2/clock.c b/arch/arm/mach-omap2/clock.c
+index 5f48e14..aae0d2e 100644
+--- a/arch/arm/mach-omap2/clock.c
++++ b/arch/arm/mach-omap2/clock.c
+@@ -831,6 +831,11 @@ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent)
+       return 0;
+ }
++struct clk *omap2_clk_get_parent(struct clk *clk)
++{
++      return clk->parent;
++}
++
+ /* DPLL rate rounding code */
+ /**
+diff --git a/arch/arm/mach-omap2/clock.h b/arch/arm/mach-omap2/clock.h
+index 3fa2e26..2916879 100644
+--- a/arch/arm/mach-omap2/clock.h
++++ b/arch/arm/mach-omap2/clock.h
+@@ -29,6 +29,7 @@ int omap2_clk_set_rate(struct clk *clk, unsigned long rate);
+ int omap2_clk_set_parent(struct clk *clk, struct clk *new_parent);
+ int omap2_dpll_set_rate_tolerance(struct clk *clk, unsigned int tolerance);
+ long omap2_dpll_round_rate(struct clk *clk, unsigned long target_rate);
++struct clk *omap2_clk_get_parent(struct clk *clk);
+ #ifdef CONFIG_OMAP_RESET_CLOCKS
+ void omap2_clk_disable_unused(struct clk *clk);
+diff --git a/arch/arm/mach-omap2/clock24xx.c b/arch/arm/mach-omap2/clock24xx.c
+index c26d9d8..f91bd57 100644
+--- a/arch/arm/mach-omap2/clock24xx.c
++++ b/arch/arm/mach-omap2/clock24xx.c
+@@ -423,6 +423,7 @@ static struct clk_functions omap2_clk_functions = {
+       .clk_round_rate         = omap2_clk_round_rate,
+       .clk_set_rate           = omap2_clk_set_rate,
+       .clk_set_parent         = omap2_clk_set_parent,
++      .clk_get_parent         = omap2_clk_get_parent,
+       .clk_disable_unused     = omap2_clk_disable_unused,
+ #ifdef        CONFIG_CPU_FREQ
+       .clk_init_cpufreq_table = omap2_clk_init_cpufreq_table,
+diff --git a/arch/arm/mach-omap2/clock34xx.c b/arch/arm/mach-omap2/clock34xx.c
+index 152d095..2196edd 100644
+--- a/arch/arm/mach-omap2/clock34xx.c
++++ b/arch/arm/mach-omap2/clock34xx.c
+@@ -606,6 +606,7 @@ static struct clk_functions omap2_clk_functions = {
+       .clk_round_rate         = omap2_clk_round_rate,
+       .clk_set_rate           = omap2_clk_set_rate,
+       .clk_set_parent         = omap2_clk_set_parent,
++      .clk_get_parent         = omap2_clk_get_parent,
+       .clk_disable_unused     = omap2_clk_disable_unused,
+ };
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-enable-overlay-optimalization.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-enable-overlay-optimalization.diff
new file mode 100755 (executable)
index 0000000..d027c53
--- /dev/null
@@ -0,0 +1,117 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:45:26 +0000 (+0100)
+Subject: OMAP: Enable overlay optimisation
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=7e052af7e4c73dc450412486ad37eb529e725dc7
+
+OMAP: Enable overlay optimisation
+
+This enables the overlay optimisation feature when the video
+overlay is active. This reduces memory bandwidth used by the
+display subsystem, improving overall performance.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
+index 888d2c2..0f0b2e5 100644
+--- a/drivers/video/omap/dispc.c
++++ b/drivers/video/omap/dispc.c
+@@ -315,6 +315,60 @@ void omap_dispc_enable_digit_out(int enable)
+ }
+ EXPORT_SYMBOL(omap_dispc_enable_digit_out);
++#define MIN(a, b) ((a)<(b)?(a):(b))
++#define MAX(a, b) ((a)>(b)?(a):(b))
++
++static void setup_overlay_opt(void)
++{
++      struct fb_info **fbi = dispc.fbdev->fb_info;
++      struct omapfb_plane_struct *gfx, *vid;
++      struct fb_var_screeninfo *gvar;
++      unsigned gx, gx2, gy, gy2, gw, gh;
++      unsigned vx, vx2, vy, vy2, vw, vh;
++      unsigned bpp, skip;
++      static unsigned last_skip;
++
++      if (!fbi[0] || !fbi[1])
++              return;
++
++      gfx = fbi[0]->par;
++      vid = fbi[1]->par;
++      gvar = &fbi[0]->var;
++
++      gx = gfx->info.pos_x;
++      gy = gfx->info.pos_y;
++      gw = gfx->info.out_width;
++      gh = gfx->info.out_height;
++      vx = vid->info.pos_x;
++      vy = vid->info.pos_y;
++      vw = vid->info.out_width;
++      vh = vid->info.out_height;
++      gx2 = gx + gw;
++      gy2 = gy + gh;
++      vx2 = vx + vw;
++      vy2 = vy + vh;
++      bpp = gvar->bits_per_pixel / 8;
++
++      if (!gfx->info.enabled || !vid->info.enabled ||
++          dispc.color_key.key_type != OMAPFB_COLOR_KEY_DISABLED) {
++              skip = 0;
++      } else if (vx <= gx && vx2 >= gx2) {
++              unsigned y = MIN(gy2, vy2) - MAX(gy, vy);
++              skip = y * gvar->xres_virtual * bpp;
++      } else if (vx <= gx || vx2 >= gx2) {
++              unsigned x = MIN(gx2, vx2) - MAX(gx, vx);
++              skip = x * bpp;
++      } else {
++              skip = vw * bpp + 1;
++      }
++
++      if (skip != last_skip) {
++              last_skip = skip;
++              dispc_write_reg(DISPC_GFX_WINDOW_SKIP, skip);
++              MOD_REG_FLD(DISPC_CONTROL, 1<<12, !!skip<<12);
++      }
++}
++
+ static inline int _setup_plane(int plane, int channel_out,
+                                 u32 paddr, int screen_width,
+                                 int pos_x, int pos_y, int width, int height,
+@@ -437,6 +491,9 @@ static inline int _setup_plane(int plane, int channel_out,
+       dispc_write_reg(ri_reg[plane], (screen_width - width) * bpp / 8 + 1);
++      if (plane < 2)
++              setup_overlay_opt();
++
+       MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
+       return height * screen_width * bpp / 8;
+@@ -585,11 +642,19 @@ static int omap_dispc_enable_plane(int plane, int enable)
+       const u32 at_reg[] = { DISPC_GFX_ATTRIBUTES,
+                               DISPC_VID1_BASE + DISPC_VID_ATTRIBUTES,
+                               DISPC_VID2_BASE + DISPC_VID_ATTRIBUTES };
++      struct omapfb_plane_struct *pi;
++
+       if ((unsigned int)plane > dispc.mem_desc.region_cnt)
+               return -EINVAL;
++      pi = dispc.fbdev->fb_info[plane]->par;
++      pi->info.enabled = enable;
++
+       enable_lcd_clocks(1);
+       MOD_REG_FLD(at_reg[plane], 1, enable ? 1 : 0);
++      if (plane < 2)
++              setup_overlay_opt();
++      MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
+       enable_lcd_clocks(0);
+       return 0;
+@@ -633,6 +698,7 @@ static int omap_dispc_set_color_key(struct omapfb_color_key *ck)
+       if (val != 0)
+               dispc_write_reg(tr_reg, ck->trans_key);
+       dispc_write_reg(df_reg, ck->background);
++      setup_overlay_opt();
+       enable_lcd_clocks(0);
+       dispc.color_key = *ck;
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-fix-display-panning.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-fix-display-panning.diff
new file mode 100755 (executable)
index 0000000..a4ba3d2
--- /dev/null
@@ -0,0 +1,49 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:18:48 +0000 (+0100)
+Subject: OMAP: Fix omapfb display panning
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=2ea46e9f28ff57a32d87bc380457a584c913fe78
+
+OMAP: Fix omapfb display panning
+
+This makes the FBIOPAN_DISPLAY ioctl work with omapfb.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
+index ce4c4de..64bf333 100644
+--- a/drivers/video/omap/dispc.c
++++ b/drivers/video/omap/dispc.c
+@@ -436,6 +436,8 @@ static inline int _setup_plane(int plane, int channel_out,
+       dispc_write_reg(ri_reg[plane], (screen_width - width) * bpp / 8 + 1);
++      MOD_REG_FLD(DISPC_CONTROL, 1<<5, 1<<5);
++
+       return height * screen_width * bpp / 8;
+ }
+diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
+index e7f3462..e9ffb92 100644
+--- a/drivers/video/omap/omapfb_main.c
++++ b/drivers/video/omap/omapfb_main.c
+@@ -207,8 +207,8 @@ static int ctrl_change_mode(struct fb_info *fbi)
+       struct omapfb_device *fbdev = plane->fbdev;
+       struct fb_var_screeninfo *var = &fbi->var;
+-      offset = var->yoffset * fbi->fix.line_length +
+-               var->xoffset * var->bits_per_pixel / 8;
++      offset = (var->yoffset * var->xres_virtual + var->xoffset) *
++              var->bits_per_pixel / 8;
+       if (fbdev->ctrl->sync)
+               fbdev->ctrl->sync();
+@@ -426,6 +426,8 @@ static void set_fb_fix(struct fb_info *fbi)
+       }
+       fix->accel              = FB_ACCEL_OMAP1610;
+       fix->line_length        = var->xres_virtual * bpp / 8;
++      fix->xpanstep           = 1;
++      fix->ypanstep           = 1;
+ }
+ static int set_color_mode(struct omapfb_plane_struct *plane,
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-fix-timings.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-fix-timings.diff
new file mode 100755 (executable)
index 0000000..37ca7d3
--- /dev/null
@@ -0,0 +1,26 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:16:14 +0000 (+0100)
+Subject: OMAP: Fix video timings info message
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=3a8bdf0967ae2c4eb3cebb97118ef0392f709c1c
+
+OMAP: Fix video timings info message
+
+This fixes the hsync frequency value printed on startup.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
+index d176a2c..e7f3462 100644
+--- a/drivers/video/omap/omapfb_main.c
++++ b/drivers/video/omap/omapfb_main.c
+@@ -1792,7 +1792,8 @@ static int omapfb_do_probe(struct platform_device *pdev,
+                       vram, fbdev->mem_desc.region_cnt);
+       pr_info("omapfb: Pixclock %lu kHz hfreq %lu.%lu kHz "
+                       "vfreq %lu.%lu Hz\n",
+-                      phz / 1000, hhz / 10000, hhz % 10, vhz / 10, vhz % 10);
++                      phz / 1000, hhz / 10000, hhz % 10000,
++                      vhz / 10, vhz % 10);
+       return 0;
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-improve-pixclock-config.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-improve-pixclock-config.diff
new file mode 100755 (executable)
index 0000000..5a70212
--- /dev/null
@@ -0,0 +1,93 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:34:39 +0000 (+0100)
+Subject: OMAP: Improve pixel clock configuration
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=01c2d720e59c291de9eb21eb65225f2f215fef84
+
+OMAP: Improve pixel clock configuration
+
+This sets the DSS1_ALWON_FCLK clock as close as possible to a
+multiple of the requested pixel clock, while keeping it below
+the 173MHz limit.
+
+Due to of the structure of the clock tree, dss1_alwon_fck cannot
+be set directly, and we must use dpll4_m4_ck instead.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/drivers/video/omap/dispc.c b/drivers/video/omap/dispc.c
+index 64bf333..888d2c2 100644
+--- a/drivers/video/omap/dispc.c
++++ b/drivers/video/omap/dispc.c
+@@ -177,6 +177,7 @@ static struct {
+       struct clk      *dss_ick, *dss1_fck;
+       struct clk      *dss_54m_fck;
++      struct clk      *dpll4_m4_ck;
+       enum omapfb_update_mode update_mode;
+       struct omapfb_device    *fbdev;
+@@ -736,19 +737,34 @@ static void setup_color_conv_coef(void)
+       MOD_REG_FLD(at2_reg, (1 << 11), ct->full_range);
+ }
++#define MAX_FCK 173000000
++
+ static void calc_ck_div(int is_tft, int pck, int *lck_div, int *pck_div)
+ {
++      unsigned long prate = clk_get_rate(clk_get_parent(dispc.dpll4_m4_ck));
++      unsigned long pcd_min = is_tft? 2: 3;
++      unsigned long fck_div;
+       unsigned long fck, lck;
+-      *lck_div = 1;
+       pck = max(1, pck);
++
++      if (pck * pcd_min > MAX_FCK) {
++              dev_warn(dispc.fbdev->dev, "pixclock %d kHz too high.\n",
++                       pck / 1000);
++              pck = MAX_FCK / pcd_min;
++      }
++
++      fck = pck * 2;
++      fck_div = (prate + pck) / fck;
++      if (fck_div > 16)
++              fck_div /= (fck_div + 15) / 16;
++      if (fck_div < 1)
++              fck_div = 1;
++      clk_set_rate(dispc.dpll4_m4_ck, prate / fck_div);
+       fck = clk_get_rate(dispc.dss1_fck);
+-      lck = fck;
+-      *pck_div = (lck + pck - 1) / pck;
+-      if (is_tft)
+-              *pck_div = max(2, *pck_div);
+-      else
+-              *pck_div = max(3, *pck_div);
++
++      *lck_div = 1;
++      *pck_div = (fck + pck - 1) / pck;
+       if (*pck_div > 255) {
+               *pck_div = 255;
+               lck = pck * *pck_div;
+@@ -909,11 +925,21 @@ static int get_dss_clocks(void)
+               return PTR_ERR(dispc.dss_54m_fck);
+       }
++      if (IS_ERR((dispc.dpll4_m4_ck =
++                              clk_get(dispc.fbdev->dev, "dpll4_m4_ck")))) {
++              dev_err(dispc.fbdev->dev, "can't get dpll4_m4_ck");
++              clk_put(dispc.dss_ick);
++              clk_put(dispc.dss1_fck);
++              clk_put(dispc.dss_54m_fck);
++              return PTR_ERR(dispc.dss_54m_fck);
++      }
++
+       return 0;
+ }
+ static void put_dss_clocks(void)
+ {
++      clk_put(dispc.dpll4_m4_ck);
+       clk_put(dispc.dss_54m_fck);
+       clk_put(dispc.dss1_fck);
+       clk_put(dispc.dss_ick);
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-make-dpll4-m4-ck-programmable.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-make-dpll4-m4-ck-programmable.diff
new file mode 100755 (executable)
index 0000000..0a535c5
--- /dev/null
@@ -0,0 +1,27 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:52:42 +0000 (+0100)
+Subject: OMAP: Make dpll4_m4_ck programmable with clk_set_rate()
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=feab5b628c06619196044c15d9d2a113df173eee
+
+OMAP: Make dpll4_m4_ck programmable with clk_set_rate()
+
+Filling the set_rate and round_rate fields of dpll4_m4_ck makes
+this clock programmable through clk_set_rate().  This is needed
+to give omapfb control over the dss1_alwon_fck rate.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/arch/arm/mach-omap2/clock34xx.h b/arch/arm/mach-omap2/clock34xx.h
+index 41f91f8..9c8e0c8 100644
+--- a/arch/arm/mach-omap2/clock34xx.h
++++ b/arch/arm/mach-omap2/clock34xx.h
+@@ -877,6 +877,8 @@ static struct clk dpll4_m4_ck = {
+                               PARENT_CONTROLS_CLOCK,
+       .clkdm          = { .name = "dpll4_clkdm" },
+       .recalc         = &omap2_clksel_recalc,
++      .set_rate       = &omap2_clksel_set_rate,
++      .round_rate     = &omap2_clksel_round_rate,
+ };
+ /* The PWRDN bit is apparently only available on 3430ES2 and above */
diff --git a/packages/linux/omap3-pandora-kernel-wifi/mru-make-video-timings-selectable.diff b/packages/linux/omap3-pandora-kernel-wifi/mru-make-video-timings-selectable.diff
new file mode 100755 (executable)
index 0000000..bba3ef7
--- /dev/null
@@ -0,0 +1,312 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Fri, 29 Aug 2008 01:42:12 +0000 (+0100)
+Subject: OMAP: Make video mode selectable from pre-defined list
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=7a9e55d7156dae6bc930c77620a88a669d2ed1c9
+
+OMAP: Make video mode selectable from pre-defined list
+
+This adds a list of common video modes and allows one to be
+selected with video=omapfb:mode:name on the command line,
+overriding the defaults from lcd_*.c. A default named mode
+can also be specified in the kernel configuration.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/drivers/video/omap/Kconfig b/drivers/video/omap/Kconfig
+index 5ebd591..9977e80 100644
+--- a/drivers/video/omap/Kconfig
++++ b/drivers/video/omap/Kconfig
+@@ -7,26 +7,13 @@ config FB_OMAP
+       help
+           Frame buffer driver for OMAP based boards.
+-choice
+-      depends on FB_OMAP && MACH_OVERO
+-      prompt "Screen resolution"
+-      default FB_OMAP_079M3R
++config FB_OMAP_VIDEO_MODE
++      string "Default video mode"
++      depends on FB_OMAP
+       help
+-        Selected desired screen resolution
+-
+-config FB_OMAP_031M3R
+-      boolean "640 x 480 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_048M3R
+-      boolean "800 x 600 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_079M3R
+-      boolean "1024 x 768 @ 60 Hz Reduced blanking"
+-
+-config FB_OMAP_092M9R
+-      boolean "1280 x 720 @ 60 Hz Reduced blanking"
+-
+-endchoice
++        Enter video mode name to use if none is specified on the kernel
++        command line. If left blank, board-specific default timings
++        will be used. See omapfb_main.c for a list of valid mode names.
+ config FB_OMAP_LCDC_EXTERNAL
+       bool "External LCD controller support"
+diff --git a/drivers/video/omap/omapfb_main.c b/drivers/video/omap/omapfb_main.c
+index e9ffb92..c4c4049 100644
+--- a/drivers/video/omap/omapfb_main.c
++++ b/drivers/video/omap/omapfb_main.c
+@@ -36,6 +36,20 @@
+ #define MODULE_NAME   "omapfb"
++struct video_mode {
++      const char      *name;
++      int             x_res, y_res;
++      int             pixel_clock;    /* In kHz */
++      int             hsw;            /* Horizontal synchronization
++                                         pulse width */
++      int             hfp;            /* Horizontal front porch */
++      int             hbp;            /* Horizontal back porch */
++      int             vsw;            /* Vertical synchronization
++                                         pulse width */
++      int             vfp;            /* Vertical front porch */
++      int             vbp;            /* Vertical back porch */
++};
++
+ static unsigned int   def_accel;
+ static unsigned long  def_vram[OMAPFB_PLANE_NUM];
+ static unsigned int   def_vram_cnt;
+@@ -43,6 +57,7 @@ static unsigned long def_vxres;
+ static unsigned long  def_vyres;
+ static unsigned int   def_rotate;
+ static unsigned int   def_mirror;
++static char           def_mode[16] = CONFIG_FB_OMAP_VIDEO_MODE;
+ #ifdef CONFIG_FB_OMAP_MANUAL_UPDATE
+ static int            manual_update = 1;
+@@ -53,6 +68,7 @@ static int           manual_update;
+ static struct platform_device *fbdev_pdev;
+ static struct lcd_panel               *fbdev_panel;
+ static struct omapfb_device   *omapfb_dev;
++static struct video_mode      video_mode;
+ struct caps_table_struct {
+       unsigned long flag;
+@@ -83,6 +99,152 @@ static struct caps_table_struct color_caps[] = {
+       { 1 << OMAPFB_COLOR_YUY422,     "YUY422", },
+ };
++static struct video_mode video_modes[] __initdata = {
++      {
++              /* 640 x 480 @ 60 Hz  Reduced blanking VESA CVT 0.31M3-R */
++              .name           = "640x480@60",
++              .x_res          = 640,
++              .y_res          = 480,
++              .hfp            = 48,
++              .hsw            = 32,
++              .hbp            = 80,
++              .vfp            = 3,
++              .vsw            = 4,
++              .vbp            = 7,
++              .pixel_clock    = 23500,
++      },
++      {
++              /* 800 x 600 @ 60 Hz  Reduced blanking VESA CVT 0.48M3-R */
++              .name           = "800x600@60",
++              .x_res          = 800,
++              .y_res          = 600,
++              .hfp            = 48,
++              .hsw            = 32,
++              .hbp            = 80,
++              .vfp            = 3,
++              .vsw            = 4,
++              .vbp            = 11,
++              .pixel_clock    = 35500,
++      },
++      {
++              /* 1024 x 768 @ 60 Hz  Reduced blanking VESA CVT 0.79M3-R */
++              .name           = "1024x768@60",
++              .x_res          = 1024,
++              .y_res          = 768,
++              .hfp            = 48,
++              .hsw            = 32,
++              .hbp            = 80,
++              .vfp            = 3,
++              .vsw            = 4,
++              .vbp            = 15,
++              .pixel_clock    = 56000,
++      },
++      {
++              /* 1280 x 720 @ 60 Hz  Reduced blanking VESA CVT 0.92M9-R */
++              .name           = "1280x720@60",
++              .x_res          = 1280,
++              .y_res          = 720,
++              .hfp            = 48,
++              .hsw            = 32,
++              .hbp            = 80,
++              .vfp            = 3,
++              .vsw            = 5,
++              .vbp            = 13,
++              .pixel_clock    = 64000,
++      },
++      {
++              /* 720 x 480 @ 60 Hz  CEA-861 Format 3 */
++              .name           = "480p60",
++              .x_res          = 720,
++              .y_res          = 480,
++              .hfp            = 16,
++              .hsw            = 62,
++              .hbp            = 60,
++              .vfp            = 9,
++              .vsw            = 6,
++              .vbp            = 30,
++              .pixel_clock    = 27027,
++      },
++      {
++              /* 720 x 576 @ 60 Hz  CEA-861 Format 18 */
++              .name           = "576p50",
++              .x_res          = 720,
++              .y_res          = 576,
++              .hfp            = 12,
++              .hsw            = 64,
++              .hbp            = 68,
++              .vfp            = 5,
++              .vsw            = 5,
++              .vbp            = 39,
++              .pixel_clock    = 27000,
++      },
++      {
++              /* 1280 x 720 @ 50 Hz  CEA-861B Format 19 */
++              .name           = "720p50",
++              .x_res          = 1280,
++              .y_res          = 720,
++              .hfp            = 440,
++              .hsw            = 40,
++              .hbp            = 220,
++              .vfp            = 20,
++              .vsw            = 5,
++              .vbp            = 5,
++              .pixel_clock    = 74250,
++      },
++      {
++              /* 1280 x 720 @ 60 Hz  CEA-861B Format 4 */
++              .name           = "720p60",
++              .x_res          = 1280,
++              .y_res          = 720,
++              .hfp            = 110,
++              .hsw            = 40,
++              .hbp            = 220,
++              .vfp            = 20,
++              .vsw            = 5,
++              .vbp            = 5,
++              .pixel_clock    = 74250,
++      },
++      {
++              /* 1920 x 1080 @ 24 Hz  CEA-861B Format 32 */
++              .name           = "1080p24",
++              .x_res          = 1920,
++              .y_res          = 1080,
++              .hfp            = 148,
++              .hsw            = 44,
++              .hbp            = 638,
++              .vfp            = 36,
++              .vsw            = 5,
++              .vbp            = 4,
++              .pixel_clock    = 74250,
++      },
++      {
++              /* 1920 x 1080 @ 25 Hz  CEA-861B Format 33 */
++              .name           = "1080p25",
++              .x_res          = 1920,
++              .y_res          = 1080,
++              .hfp            = 148,
++              .hsw            = 44,
++              .hbp            = 528,
++              .vfp            = 36,
++              .vsw            = 5,
++              .vbp            = 4,
++              .pixel_clock    = 74250,
++      },
++      {
++              /* 1920 x 1080 @ 30 Hz  CEA-861B Format 34 */
++              .name           = "1080p30",
++              .x_res          = 1920,
++              .y_res          = 1080,
++              .hfp            = 148,
++              .hsw            = 44,
++              .hbp            = 88,
++              .vfp            = 36,
++              .vsw            = 5,
++              .vbp            = 4,
++              .pixel_clock    = 74250,
++      },
++};
++
+ /*
+  * ---------------------------------------------------------------------------
+  * LCD panel
+@@ -1714,6 +1876,20 @@ static int omapfb_do_probe(struct platform_device *pdev,
+               goto cleanup;
+       }
++      if (video_mode.name) {
++              pr_info("omapfb: using mode %s\n", video_mode.name);
++
++              fbdev->panel->x_res     = video_mode.x_res;
++              fbdev->panel->y_res     = video_mode.y_res;
++              fbdev->panel->pixel_clock = video_mode.pixel_clock;
++              fbdev->panel->hsw       = video_mode.hsw;
++              fbdev->panel->hfp       = video_mode.hfp;
++              fbdev->panel->hbp       = video_mode.hbp;
++              fbdev->panel->vsw       = video_mode.vsw;
++              fbdev->panel->vfp       = video_mode.vfp;
++              fbdev->panel->vbp       = video_mode.vbp;
++      }
++
+       r = fbdev->panel->init(fbdev->panel, fbdev);
+       if (r)
+               goto cleanup;
+@@ -1870,6 +2046,17 @@ static struct platform_driver omapfb_driver = {
+       },
+ };
++static void __init omapfb_find_mode(char *name, struct video_mode *vmode)
++{
++      int i;
++
++      for (i = 0; i < sizeof(video_modes)/sizeof(video_modes[0]); i++)
++              if (!strcmp(name, video_modes[i].name)) {
++                      *vmode = video_modes[i];
++                      break;
++              }
++}
++
+ #ifndef MODULE
+ /* Process kernel command line parameters */
+@@ -1918,6 +2105,8 @@ static int __init omapfb_setup(char *options)
+                       def_mirror = (simple_strtoul(this_opt + 7, NULL, 0));
+               else if (!strncmp(this_opt, "manual_update", 13))
+                       manual_update = 1;
++              else if (!strncmp(this_opt, "mode:", 5))
++                      strncpy(def_mode, this_opt + 5, sizeof(def_mode));
+               else {
+                       pr_debug("omapfb: invalid option\n");
+                       r = -1;
+@@ -1939,6 +2128,9 @@ static int __init omapfb_init(void)
+               return -ENODEV;
+       omapfb_setup(option);
+ #endif
++
++      omapfb_find_mode(def_mode, &video_mode);
++
+       /* Register the driver with LDM */
+       if (platform_driver_register(&omapfb_driver)) {
+               pr_debug("failed to register omapfb driver\n");
+@@ -1960,6 +2152,7 @@ module_param_named(vyres, def_vyres, long, 0664);
+ module_param_named(rotate, def_rotate, uint, 0664);
+ module_param_named(mirror, def_mirror, uint, 0664);
+ module_param_named(manual_update, manual_update, bool, 0664);
++module_param_string(video_mode, def_mode, sizeof(def_mode), 0664);
+ module_init(omapfb_init);
+ module_exit(omapfb_cleanup);
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-dma-iso-in.eml b/packages/linux/omap3-pandora-kernel-wifi/musb-dma-iso-in.eml
new file mode 100755 (executable)
index 0000000..56fc827
--- /dev/null
@@ -0,0 +1,138 @@
+Fixes blurred capture images in dma mode. Isochronous error field in
+urb and source data buffer pointer were not updated properly in dma
+mode.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+---
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 08e421f..a481d54 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -1505,10 +1505,29 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+               musb_writew(hw_ep->regs, MUSB_RXCSR, val);
+ #ifdef CONFIG_USB_INVENTRA_DMA
++              if (usb_pipeisoc(pipe)) {
++                      struct usb_iso_packet_descriptor *d;
++
++                      d = urb->iso_frame_desc + qh->iso_idx;
++                      d->actual_length = xfer_len;
++
++                      /* even if there was an error, we did the dma
++                       * for iso_frame_desc->length
++                       */
++                      if (d->status != EILSEQ && d->status != -EOVERFLOW)
++                              d->status = 0;
++
++                      if (++qh->iso_idx >= urb->number_of_packets)
++                              done = true;
++                      else
++                              done = false;
++
++              } else  {
+               /* done if urb buffer is full or short packet is recd */
+               done = (urb->actual_length + xfer_len >=
+                               urb->transfer_buffer_length
+                       || dma->actual_len < qh->maxpacket);
++              }
+               /* send IN token for next packet, without AUTOREQ */
+               if (!done) {
+@@ -1545,7 +1564,8 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+               if (dma) {
+                       struct dma_controller   *c;
+                       u16                     rx_count;
+-                      int                     ret;
++                      int                     ret, length;
++                      dma_addr_t              buf;
+                       rx_count = musb_readw(epio, MUSB_RXCOUNT);
+@@ -1558,6 +1578,35 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+                       c = musb->dma_controller;
++                      if (usb_pipeisoc(pipe)) {
++                              int status = 0;
++                              struct usb_iso_packet_descriptor *d;
++
++                              d = urb->iso_frame_desc + qh->iso_idx;
++
++                              if (iso_err) {
++                                      status = -EILSEQ;
++                                      urb->error_count++;
++                              }
++                              if (rx_count > d->length) {
++                                      if (status == 0) {
++                                              status = -EOVERFLOW;
++                                              urb->error_count++;
++                                      }
++                                      DBG(2, "** OVERFLOW %d into %d\n",\
++                                          rx_count, d->length);
++
++                                      length = d->length;
++                              } else
++                                      length = rx_count;
++                              d->status = status;
++                              buf = urb->transfer_dma + d->offset;
++                      } else {
++                              length = rx_count;
++                              buf = urb->transfer_dma +
++                                              urb->actual_length;
++                      }
++
+                       dma->desired_mode = 0;
+ #ifdef USE_MODE1
+                       /* because of the issue below, mode 1 will
+@@ -1569,6 +1618,12 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+                                               urb->actual_length)
+                                       > qh->maxpacket)
+                               dma->desired_mode = 1;
++                      if (rx_count < hw_ep->max_packet_sz_rx) {
++                              length = rx_count;
++                              dma->bDesiredMode = 0;
++                      } else {
++                              length = urb->transfer_buffer_length;
++                      }
+ #endif
+ /* Disadvantage of using mode 1:
+@@ -1606,12 +1661,7 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+                        */
+                       ret = c->channel_program(
+                               dma, qh->maxpacket,
+-                              dma->desired_mode,
+-                              urb->transfer_dma
+-                                      + urb->actual_length,
+-                              (dma->desired_mode == 0)
+-                                      ? rx_count
+-                                      : urb->transfer_buffer_length);
++                              dma->desired_mode, buf, length);
+                       if (!ret) {
+                               c->channel_release(dma);
+@@ -1628,19 +1678,6 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+               }
+       }
+-      if (dma && usb_pipeisoc(pipe)) {
+-              struct usb_iso_packet_descriptor        *d;
+-              int                                     iso_stat = status;
+-
+-              d = urb->iso_frame_desc + qh->iso_idx;
+-              d->actual_length += xfer_len;
+-              if (iso_err) {
+-                      iso_stat = -EILSEQ;
+-                      urb->error_count++;
+-              }
+-              d->status = iso_stat;
+-      }
+-
+ finish:
+       urb->actual_length += xfer_len;
+       qh->offset += xfer_len;
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-fix-ISO-in-unlink.diff b/packages/linux/omap3-pandora-kernel-wifi/musb-fix-ISO-in-unlink.diff
new file mode 100755 (executable)
index 0000000..c93a5b0
--- /dev/null
@@ -0,0 +1,69 @@
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+To: linux-omap@vger.kernel.org
+Cc: linux-usb@vger.kernel.org, felipe.balbi@nokia.com,
+        stern@rowland.harvard.edu, Ajay Kumar Gupta <ajay.gupta@ti.com>
+Subject: [PATCH v3] OMAP:MUSB: Corrects urb unlink function path
+Date:  Mon, 25 Aug 2008 10:52:16 +0530
+
+Fixes kernel panic while ISO IN transfer is aborted.Replaced
+usb_hcd_unlink_urb_from_ep() from musb_giveback() to __musb_giveback()
+to make sure urb is unlinked before giveback when __musb_giveback() is
+called from musb_urb_dequeue().
+
+Acquired musb->lock() before usb_hcd_unlink_urb_from_ep() within in 
+enqueue path.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+---
+ drivers/usb/musb/musb_host.c |    7 +++++--
+ 1 files changed, 5 insertions(+), 2 deletions(-)
+
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 08e421f..4279311 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -291,6 +291,7 @@ __acquires(musb->lock)
+                       urb->actual_length, urb->transfer_buffer_length
+                       );
++      usb_hcd_unlink_urb_from_ep(musb_to_hcd(musb), urb);
+       spin_unlock(&musb->lock);
+       usb_hcd_giveback_urb(musb_to_hcd(musb), urb, status);
+       spin_lock(&musb->lock);
+@@ -353,8 +354,6 @@ musb_giveback(struct musb_qh *qh, struct urb *urb, int status)
+               break;
+       }
+-      usb_hcd_unlink_urb_from_ep(musb_to_hcd(musb), urb);
+-
+       qh->is_ready = 0;
+       __musb_giveback(musb, urb, status);
+       qh->is_ready = ready;
+@@ -1787,7 +1786,9 @@ static int musb_urb_enqueue(
+        */
+       qh = kzalloc(sizeof *qh, mem_flags);
+       if (!qh) {
++              spin_lock_irqsave(&musb->lock, flags);
+               usb_hcd_unlink_urb_from_ep(hcd, urb);
++              spin_unlock_irqrestore(&musb->lock, flags);
+               return -ENOMEM;
+       }
+@@ -1899,7 +1900,9 @@ static int musb_urb_enqueue(
+ done:
+       if (ret != 0) {
++              spin_lock_irqsave(&musb->lock, flags);
+               usb_hcd_unlink_urb_from_ep(hcd, urb);
++              spin_unlock_irqrestore(&musb->lock, flags);
+               kfree(qh);
+       }
+       return ret;
+-- 
+1.5.6
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-fix-dbrownell.patch b/packages/linux/omap3-pandora-kernel-wifi/musb-fix-dbrownell.patch
new file mode 100755 (executable)
index 0000000..3526cd3
--- /dev/null
@@ -0,0 +1,71 @@
+From: David Brownell <dbrownell@users.sourceforge.net>
+
+Minor cleanups to omap 2430/34xx/35x musb_hdrc init:
+
+ - num_eps is 16; here, each one is bidirectional
+ - use DMA_32BIT_MASK to prevent confusion/errors
+ - initialize root port power to reflect 100 mA limit
+
+This still hard-wires some board-specific data, since there
+are no hooks through which different boards can provide the
+right data to the init code.
+
+Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
+
+--- a/arch/arm/mach-omap2/usb-musb.c
++++ b/arch/arm/mach-omap2/usb-musb.c
+@@ -21,12 +21,15 @@
+ #include <linux/delay.h>
+ #include <linux/platform_device.h>
+ #include <linux/clk.h>
++#include <linux/dma-mapping.h>
++
+ #include <asm/io.h>
+-#include <mach/mux.h>
++
+ #include <linux/usb/musb.h>
+ #include <mach/hardware.h>
+ #include <mach/pm.h>
++#include <mach/mux.h>
+ #include <mach/usb.h>
+ #ifdef CONFIG_USB_MUSB_SOC
+@@ -109,7 +112,7 @@ static struct musb_hdrc_config musb_config = {
+       .dyn_fifo       = 1,
+       .soft_con       = 1,
+       .dma            = 1,
+-      .num_eps        = 32,
++      .num_eps        = 16,
+       .dma_channels   = 7,
+       .dma_req_chan   = (1 << 0) | (1 << 1) | (1 << 2) | (1 << 3),
+       .ram_bits       = 12,
+@@ -129,16 +132,22 @@ static struct musb_hdrc_platform_data musb_plat = {
+                       : "usbhs_ick",
+       .set_clock      = musb_set_clock,
+       .config         = &musb_config,
++
++      /* REVISIT charge pump on TWL4030 can supply up to
++       * 100 mA ... but this value is board-specific, like
++       * "mode", and should be passed to usb_musb_init().
++       */
++      .power          = 50,                   /* up to 100 mA */
+ };
+-static u64 musb_dmamask = ~(u32)0;
++static u64 musb_dmamask = DMA_32BIT_MASK;
+ static struct platform_device musb_device = {
+       .name           = "musb_hdrc",
+       .id             = -1,
+       .dev = {
+               .dma_mask               = &musb_dmamask,
+-              .coherent_dma_mask      = 0xffffffff,
++              .coherent_dma_mask      = DMA_32BIT_MASK,
+               .platform_data          = &musb_plat,
+       },
+       .num_resources  = ARRAY_SIZE(musb_resources),
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-fix-endpoints.diff b/packages/linux/omap3-pandora-kernel-wifi/musb-fix-endpoints.diff
new file mode 100755 (executable)
index 0000000..5d1201f
--- /dev/null
@@ -0,0 +1,197 @@
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+To: linux-usb@vger.kernel.org
+Cc: linux-omap@vger.kernel.org, david-b@pacbell.net, me@felipebalbi.com,
+        Ajay Kumar Gupta <ajay.gupta@ti.com>
+Subject: [PATCH] MUSB: BULK request on different available endpoints
+Date:  Tue,  7 Oct 2008 11:12:24 +0530
+
+Fixes co-working issue of usb serial device with usb/net devices while
+oter endpoints are free and can be used.This patch implements the policy
+that if endpoint resources are available then different BULK request goes
+to different endpoint otherwise they are multiplexed to one reserved
+endpoint as currently done.
+
+NAK limit scheme has to be added for multiplexed BULK request scenario
+to avoid endpoint starvation due to usb/net devices.
+
+musb->periodic[] flag setting is also updated.It use to set this flag for
+an endpoint even when only rx or tx is used.Now flag setting is done on
+rx/tx basis of an endpoint.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+---
+ drivers/usb/musb/musb_host.c |   94 ++++++++++++++++++++++++------------------
+ drivers/usb/musb/musb_host.h |    1 +
+ 2 files changed, 55 insertions(+), 40 deletions(-)
+--- /tmp/musb_host.c   2008-10-07 10:10:49.000000000 +0200
++++ git/drivers/usb/musb/musb_host.c   2008-10-07 10:13:59.000000000 +0200
+@@ -378,27 +378,32 @@
+               switch (qh->type) {
++              case USB_ENDPOINT_XFER_CONTROL:
++              case USB_ENDPOINT_XFER_BULK:
++                      /* fifo policy for these lists, except that NAKing
++                       * should rotate a qh to the end (for fairness).
++                       */
++                      if (qh->mux == 1) {
++                              head = qh->ring.prev;
++                              list_del(&qh->ring);
++                              kfree(qh);
++                              qh = first_qh(head);
++                              break;
++                      }
+               case USB_ENDPOINT_XFER_ISOC:
+               case USB_ENDPOINT_XFER_INT:
+                       /* this is where periodic bandwidth should be
+                        * de-allocated if it's tracked and allocated;
+                        * and where we'd update the schedule tree...
+                        */
+-                      musb->periodic[ep->epnum] = NULL;
++                      if (is_in)
++                              musb->periodic[2 * ep->epnum - 2] = NULL;
++                      else
++                              musb->periodic[2 * ep->epnum - 1] = NULL;
+                       kfree(qh);
+                       qh = NULL;
+                       break;
+-              case USB_ENDPOINT_XFER_CONTROL:
+-              case USB_ENDPOINT_XFER_BULK:
+-                      /* fifo policy for these lists, except that NAKing
+-                       * should rotate a qh to the end (for fairness).
+-                       */
+-                      head = qh->ring.prev;
+-                      list_del(&qh->ring);
+-                      kfree(qh);
+-                      qh = first_qh(head);
+-                      break;
+               }
+       }
+       return qh;
+@@ -1728,22 +1733,9 @@
+       u16                     maxpacket;
+       /* use fixed hardware for control and bulk */
+-      switch (qh->type) {
+-      case USB_ENDPOINT_XFER_CONTROL:
++      if (qh->type == USB_ENDPOINT_XFER_CONTROL) {
+               head = &musb->control;
+               hw_ep = musb->control_ep;
+-              break;
+-      case USB_ENDPOINT_XFER_BULK:
+-              hw_ep = musb->bulk_ep;
+-              if (is_in)
+-                      head = &musb->in_bulk;
+-              else
+-                      head = &musb->out_bulk;
+-              break;
+-      }
+-      if (head) {
+-              idle = list_empty(head);
+-              list_add_tail(&qh->ring, head);
+               goto success;
+       }
+@@ -1778,7 +1770,8 @@
+       for (epnum = 1; epnum < musb->nr_endpoints; epnum++) {
+               int     diff;
+-              if (musb->periodic[epnum])
++              if ((is_in && musb->periodic[2 * epnum - 2]) ||
++                      (!is_in && musb->periodic[2 * epnum - 1]))
+                       continue;
+               hw_ep = &musb->endpoints[epnum];
+               if (hw_ep == musb->bulk_ep)
+@@ -1789,19 +1782,36 @@
+               else
+                       diff = hw_ep->max_packet_sz_tx - maxpacket;
+-              if (diff > 0 && best_diff > diff) {
++              if (diff >= 0 && best_diff > diff) {
+                       best_diff = diff;
+                       best_end = epnum;
+               }
+       }
+-      if (best_end < 0)
++      /* use bulk reserved ep1 if no other ep is free*/
++      if (best_end < 0 && qh->type == USB_ENDPOINT_XFER_BULK) {
++              hw_ep = musb->bulk_ep;
++              if (is_in)
++                      head = &musb->in_bulk;
++              else
++                      head = &musb->out_bulk;
++              goto success;
++      } else if (best_end < 0)
+               return -ENOSPC;
+       idle = 1;
++      qh->mux = 0;
+       hw_ep = musb->endpoints + best_end;
+-      musb->periodic[best_end] = qh;
+-      DBG(4, "qh %p periodic slot %d\n", qh, best_end);
++      if (is_in)
++              musb->periodic[2 * best_end - 2] = qh;
++      else
++              musb->periodic[2 * best_end - 1] = qh;
++      DBG(4, "qh %p periodic slot %d%s\n", qh, best_end, is_in ? "Rx" : "Tx");
+ success:
++      if (head) {
++              idle = list_empty(head);
++              list_add_tail(&qh->ring, head);
++              qh->mux = 1;
++      }
+       qh->hw_ep = hw_ep;
+       qh->hep->hcpriv = qh;
+       if (idle)
+@@ -2065,11 +2075,13 @@
+                       sched = &musb->control;
+                       break;
+               case USB_ENDPOINT_XFER_BULK:
+-                      if (usb_pipein(urb->pipe))
+-                              sched = &musb->in_bulk;
+-                      else
+-                              sched = &musb->out_bulk;
+-                      break;
++                      if (qh->mux == 1) {
++                              if (usb_pipein(urb->pipe))
++                                      sched = &musb->in_bulk;
++                              else
++                                      sched = &musb->out_bulk;
++                              break;
++                      }
+               default:
+                       /* REVISIT when we get a schedule tree, periodic
+                        * transfers won't always be at the head of a
+@@ -2131,11 +2143,13 @@
+               sched = &musb->control;
+               break;
+       case USB_ENDPOINT_XFER_BULK:
+-              if (is_in)
+-                      sched = &musb->in_bulk;
+-              else
+-                      sched = &musb->out_bulk;
+-              break;
++              if (qh->mux == 1) {
++                      if (is_in)
++                              sched = &musb->in_bulk;
++                      else
++                              sched = &musb->out_bulk;
++                      break;
++              }
+       case USB_ENDPOINT_XFER_ISOC:
+       case USB_ENDPOINT_XFER_INT:
+               for (i = 0; i < musb->nr_endpoints; i++) {
+--- /tmp/musb_host.h   2008-10-07 08:59:38.000000000 +0200
++++ git/drivers/usb/musb/musb_host.h   2008-10-07 10:10:54.000000000 +0200
+@@ -53,7 +53,8 @@
+       struct list_head        ring;           /* of musb_qh */
+       /* struct musb_qh               *next; */       /* for periodic tree */
+-
++      u8          mux;        /* qh multiplexed to hw_ep */
++      
+       unsigned                offset;         /* in urb->transfer_buffer */
+       unsigned                segsize;        /* current xfer fragment */
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-fix-multiple-bulk-transfers.diff b/packages/linux/omap3-pandora-kernel-wifi/musb-fix-multiple-bulk-transfers.diff
new file mode 100755 (executable)
index 0000000..7435a2e
--- /dev/null
@@ -0,0 +1,194 @@
+From: Ajay Kumar Gupta <ajay.gupta@ti.com>
+To: linux-usb@vger.kernel.org
+Cc: linux-omap@vger.kernel.org, felipe.balbi@nokia.com,
+Subject: [PATCH] MUSB: Fix for kernel panic with multiple bulk transfer
+Date:  Wed,  1 Oct 2008 13:08:56 +0530
+
+Fixes kernel panic when multiple copy is performed among more than two mass
+storage media and transfer is aborted.musb_advance_schedule(),
+musb_urb_dequeue(),musb_cleanup_urb() and musb_h_disable() functions have
+been modified to correct urb handling associated with bulk and control
+endpoints which are multiplexed on one hardware endpoint.
+
+musb_advance_schedule() has been removed from musb_cleanup_urb() and added
+to musb_urb_dequeue(). musb_h_disable() has been modified to take care of
+multiple qh on same hw_ep scenario.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+CC: Romit Dasgupta <romit@ti.com> 
+---
+Suggestions welcome to move while loop doing kfree(qh) from 
+musb_advance_schedule() and musb_h_disable() to musb_giveback().
+
+ drivers/usb/musb/musb_host.c |  105 ++++++++++++++++++++++++++++++-----------
+ 1 files changed, 77 insertions(+), 28 deletions(-)
+
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 8b4be01..c2474de 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -427,8 +427,17 @@ musb_advance_schedule(struct musb *musb, struct urb *urb,
+               qh = musb_giveback(qh, urb, 0);
+       else
+               qh = musb_giveback(qh, urb, urb->status);
++      while (qh && qh->is_ready && list_empty(&qh->hep->urb_list)) {
++              struct list_head *head;
++              head = qh->ring.prev;
++              list_del(&qh->ring);
++              qh->hep->hcpriv = NULL;
++              kfree(qh);
++              qh = first_qh(head);
++      }
+-      if (qh && qh->is_ready && !list_empty(&qh->hep->urb_list)) {
++
++      if (qh && qh->is_ready) {
+               DBG(4, "... next ep%d %cX urb %p\n",
+                               hw_ep->epnum, is_in ? 'R' : 'T',
+                               next_urb(qh));
+@@ -1964,8 +1973,6 @@ static int musb_cleanup_urb(struct urb *urb, struct musb_qh *qh, int is_in)
+               /* flush cpu writebuffer */
+               csr = musb_readw(epio, MUSB_TXCSR);
+       }
+-      if (status == 0)
+-              musb_advance_schedule(ep->musb, urb, ep, is_in);
+       return status;
+ }
+@@ -2026,13 +2033,24 @@ static int musb_urb_dequeue(struct usb_hcd *hcd, struct urb *urb, int status)
+       /* NOTE:  qh is invalid unless !list_empty(&hep->urb_list) */
+       if (ret < 0 || (sched && qh != first_qh(sched))) {
+               int     ready = qh->is_ready;
+-
++              int     type = urb->pipe;
+               ret = 0;
+               qh->is_ready = 0;
+               __musb_giveback(musb, urb, 0);
+-              qh->is_ready = ready;
+-      } else
++
++              if (list_empty(&qh->hep->urb_list) && list_empty(&qh->ring))
++                      list_del(&qh->ring);
++              else
++                      qh->is_ready = ready;
++              if (usb_pipeisoc(type))
++                      musb->periodic[qh->hw_ep->epnum] = NULL;
++      } else {
+               ret = musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
++              if (!ret) {
++                      musb_advance_schedule(qh->hw_ep->musb, urb, qh->hw_ep,
++                                      urb->pipe & USB_DIR_IN);
++              }
++      }
+ done:
+       spin_unlock_irqrestore(&musb->lock, flags);
+       return ret;
+@@ -2046,14 +2064,17 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+       unsigned long           flags;
+       struct musb             *musb = hcd_to_musb(hcd);
+       u8                      is_in = epnum & USB_DIR_IN;
+-      struct musb_qh          *qh = hep->hcpriv;
++      struct musb_qh          *qh, *qh_for_curr_urb;
+       struct urb              *urb, *tmp;
+       struct list_head        *sched;
+-
+-      if (!qh)
+-              return;
++      int                     i;
+       spin_lock_irqsave(&musb->lock, flags);
++      qh = hep->hcpriv;
++      if (!qh) {
++              spin_unlock_irqrestore(&musb->lock, flags);
++              return;
++      }
+       switch (qh->type) {
+       case USB_ENDPOINT_XFER_CONTROL:
+@@ -2065,6 +2086,13 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+               else
+                       sched = &musb->out_bulk;
+               break;
++      case USB_ENDPOINT_XFER_ISOC:
++      case USB_ENDPOINT_XFER_INT:
++              for (i = 0; i < musb->nr_endpoints; i++) {
++                      if (musb->periodic[i] == qh)
++                              sched = &qh->ring;
++                      break;
++              }
+       default:
+               /* REVISIT when we get a schedule tree, periodic transfers
+                * won't always be at the head of a singleton queue...
+@@ -2073,26 +2101,47 @@ musb_h_disable(struct usb_hcd *hcd, struct usb_host_endpoint *hep)
+               break;
+       }
+-      /* NOTE:  qh is invalid unless !list_empty(&hep->urb_list) */
+-
+       /* kick first urb off the hardware, if needed */
+-      qh->is_ready = 0;
+-      if (!sched || qh == first_qh(sched)) {
++      if (sched) {
++              qh_for_curr_urb = qh;
+               urb = next_urb(qh);
+-
+-              /* make software (then hardware) stop ASAP */
+-              if (!urb->unlinked)
+-                      urb->status = -ESHUTDOWN;
+-
+-              /* cleanup */
+-              musb_cleanup_urb(urb, qh, urb->pipe & USB_DIR_IN);
+-      } else
+-              urb = NULL;
+-
+-      /* then just nuke all the others */
+-      list_for_each_entry_safe_from(urb, tmp, &hep->urb_list, urb_list)
+-              musb_giveback(qh, urb, -ESHUTDOWN);
+-
++              if (urb) {
++                      /* make software (then hardware) stop ASAP */
++                      if (!urb->unlinked)
++                              urb->status = -ESHUTDOWN;
++                      /* cleanup first urb of first qh; */
++                      if (qh == first_qh(sched)) {
++                              musb_cleanup_urb(urb, qh,
++                                      urb->pipe & USB_DIR_IN);
++                      }
++                      qh = musb_giveback(qh, urb, -ESHUTDOWN);
++                      if (qh == qh_for_curr_urb) {
++                              list_for_each_entry_safe_from(urb, tmp,
++                                      &hep->urb_list, urb_list) {
++                                      qh = musb_giveback(qh, tmp, -ESHUTDOWN);
++                                      if (qh != qh_for_curr_urb)
++                                              break;
++                              }
++                      }
++              }
++              /* pick the next candidate and go */
++              if (qh && qh->is_ready) {
++                      while (qh && qh->is_ready &&
++                              list_empty(&qh->hep->urb_list)) {
++                                      struct list_head *head;
++                                      head = qh->ring.prev;
++                                      list_del(&qh->ring);
++                                      qh->hep->hcpriv = NULL;
++                                      kfree(qh);
++                                      qh = first_qh(head);
++                      }
++                      if (qh && qh->is_ready) {
++                              epnum = qh->hep->desc.bEndpointAddress;
++                              is_in = epnum & USB_DIR_IN;
++                              musb_start_urb(musb, is_in, qh);
++                      }
++              }
++      }
+       spin_unlock_irqrestore(&musb->lock, flags);
+ }
+-- 
+1.5.6
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-mru-otgfix.diff b/packages/linux/omap3-pandora-kernel-wifi/musb-mru-otgfix.diff
new file mode 100755 (executable)
index 0000000..767858b
--- /dev/null
@@ -0,0 +1,43 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Sat, 6 Sep 2008 15:11:00 +0000 (+0100)
+Subject: usb: musb: fix something
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=1e5bc41773bb981b3a89bd762becf98c72be5e4c
+
+usb: musb: fix something
+
+This makes USB work on the Beagleboard.  I don't know why.
+---
+
+diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
+index e07cad8..4d6ff26 100644
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1819,6 +1819,9 @@ allocate_instance(struct device *dev, void __iomem *mbase)
+               ep->epnum = epnum;
+       }
++#ifdef CONFIG_USB_MUSB_OTG
++      otg_set_transceiver(&musb->xceiv);
++#endif
+       musb->controller = dev;
+       return musb;
+ }
+diff --git a/drivers/usb/musb/omap2430.c b/drivers/usb/musb/omap2430.c
+index 9d2dcb1..51af80b 100644
+--- a/drivers/usb/musb/omap2430.c
++++ b/drivers/usb/musb/omap2430.c
+@@ -215,12 +215,14 @@ void musb_platform_set_mode(struct musb *musb, u8 musb_mode)
+ int __init musb_platform_init(struct musb *musb)
+ {
++      struct otg_transceiver *xceiv = otg_get_transceiver();
+       u32 l;
+ #if defined(CONFIG_ARCH_OMAP2430)
+       omap_cfg_reg(AE5_2430_USB0HS_STP);
+ #endif
++      musb->xceiv = *xceiv;
+       musb_platform_resume(musb);
+       l = omap_readl(OTG_SYSCONFIG);
diff --git a/packages/linux/omap3-pandora-kernel-wifi/musb-support-high-bandwidth.patch.eml b/packages/linux/omap3-pandora-kernel-wifi/musb-support-high-bandwidth.patch.eml
new file mode 100755 (executable)
index 0000000..0264a97
--- /dev/null
@@ -0,0 +1,134 @@
+Enables support for camera (as creative) requiring high bandwidth
+isochronous transfer.
+
+Signed-off-by: Ajay Kumar Gupta <ajay.gupta@ti.com>
+---
+ drivers/usb/musb/musb_core.c |   18 +++++++++---------
+ drivers/usb/musb/musb_host.c |   32 +++++++++++++++++++++-----------
+ 2 files changed, 30 insertions(+), 20 deletions(-)
+
+diff --git a/drivers/usb/musb/musb_core.c b/drivers/usb/musb/musb_core.c
+index c939f81..9914f70 100644
+--- a/drivers/usb/musb/musb_core.c
++++ b/drivers/usb/musb/musb_core.c
+@@ -1063,17 +1063,17 @@ static struct fifo_cfg __initdata mode_4_cfg[] = {
+ { .hw_ep_num =  7, .style = FIFO_TX,   .maxpacket = 512, },
+ { .hw_ep_num =  7, .style = FIFO_RX,   .maxpacket = 512, },
+ { .hw_ep_num =  8, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num =  8, .style = FIFO_RX,   .maxpacket = 512, },
++{ .hw_ep_num =  8, .style = FIFO_RX,   .maxpacket =  64, },
+ { .hw_ep_num =  9, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num =  9, .style = FIFO_RX,   .maxpacket = 512, },
++{ .hw_ep_num =  9, .style = FIFO_RX,   .maxpacket =  64, },
+ { .hw_ep_num = 10, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num = 10, .style = FIFO_RX,   .maxpacket = 512, },
+-{ .hw_ep_num = 11, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num = 11, .style = FIFO_RX,   .maxpacket = 512, },
+-{ .hw_ep_num = 12, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num = 12, .style = FIFO_RX,   .maxpacket = 512, },
+-{ .hw_ep_num = 13, .style = FIFO_TX,   .maxpacket = 512, },
+-{ .hw_ep_num = 13, .style = FIFO_RX,   .maxpacket = 512, },
++{ .hw_ep_num = 10, .style = FIFO_RX,   .maxpacket =  64, },
++{ .hw_ep_num = 11, .style = FIFO_TX,   .maxpacket = 256, },
++{ .hw_ep_num = 11, .style = FIFO_RX,   .maxpacket = 256, },
++{ .hw_ep_num = 12, .style = FIFO_TX,   .maxpacket = 256, },
++{ .hw_ep_num = 12, .style = FIFO_RX,   .maxpacket = 256, },
++{ .hw_ep_num = 13, .style = FIFO_TX,   .maxpacket = 256, },
++{ .hw_ep_num = 13, .style = FIFO_RX,   .maxpacket = 4096, },
+ { .hw_ep_num = 14, .style = FIFO_RXTX, .maxpacket = 1024, },
+ { .hw_ep_num = 15, .style = FIFO_RXTX, .maxpacket = 1024, },
+ };
+diff --git a/drivers/usb/musb/musb_host.c b/drivers/usb/musb/musb_host.c
+index 08e421f..84173df 100644
+--- a/drivers/usb/musb/musb_host.c
++++ b/drivers/usb/musb/musb_host.c
+@@ -1443,6 +1443,10 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+                       /* packet error reported later */
+                       iso_err = true;
+               }
++      } else if (rx_csr & MUSB_RXCSR_INCOMPRX) {
++              DBG(3, "end %d Highbandwidth  incomplete ISO packet received\n"
++                                      , epnum);
++              status = -EPROTO;
+       }
+       /* faults abort the transfer */
+@@ -1595,7 +1599,13 @@ void musb_host_rx(struct musb *musb, u8 epnum)
+                               val &= ~MUSB_RXCSR_H_AUTOREQ;
+                       else
+                               val |= MUSB_RXCSR_H_AUTOREQ;
+-                      val |= MUSB_RXCSR_AUTOCLEAR | MUSB_RXCSR_DMAENAB;
++
++                      if (qh->maxpacket & ~0x7ff)
++                              /* Autoclear doesn't work in high bandwidth iso */
++                              val |= MUSB_RXCSR_DMAENAB;
++                      else
++                              val |= MUSB_RXCSR_AUTOCLEAR
++                                      | MUSB_RXCSR_DMAENAB;
+                       musb_writew(epio, MUSB_RXCSR,
+                               MUSB_RXCSR_H_WZC_BITS | val);
+@@ -1666,6 +1676,7 @@ static int musb_schedule(
+       int                     best_end, epnum;
+       struct musb_hw_ep       *hw_ep = NULL;
+       struct list_head        *head = NULL;
++      u16                     maxpacket;
+       /* use fixed hardware for control and bulk */
+       switch (qh->type) {
+@@ -1708,6 +1719,13 @@ static int musb_schedule(
+       best_diff = 4096;
+       best_end = -1;
++      if (qh->maxpacket & (1<<11))
++              maxpacket = 2 * (qh->maxpacket & 0x7ff);
++      else if (qh->maxpacket & (1<<12))
++              maxpacket = 3 * (qh->maxpacket & 0x7ff);
++      else
++              maxpacket = (qh->maxpacket & 0x7ff);
++
+       for (epnum = 1; epnum < musb->nr_endpoints; epnum++) {
+               int     diff;
+@@ -1718,9 +1736,9 @@ static int musb_schedule(
+                       continue;
+               if (is_in)
+-                      diff = hw_ep->max_packet_sz_rx - qh->maxpacket;
++                      diff = hw_ep->max_packet_sz_rx - maxpacket;
+               else
+-                      diff = hw_ep->max_packet_sz_tx - qh->maxpacket;
++                      diff = hw_ep->max_packet_sz_tx - maxpacket;
+               if (diff > 0 && best_diff > diff) {
+                       best_diff = diff;
+@@ -1797,13 +1815,6 @@ static int musb_urb_enqueue(
+       qh->is_ready = 1;
+       qh->maxpacket = le16_to_cpu(epd->wMaxPacketSize);
+-
+-      /* no high bandwidth support yet */
+-      if (qh->maxpacket & ~0x7ff) {
+-              ret = -EMSGSIZE;
+-              goto done;
+-      }
+-
+       qh->epnum = epd->bEndpointAddress & USB_ENDPOINT_NUMBER_MASK;
+       qh->type = epd->bmAttributes & USB_ENDPOINT_XFERTYPE_MASK;
+@@ -1897,7 +1908,6 @@ static int musb_urb_enqueue(
+       }
+       spin_unlock_irqrestore(&musb->lock, flags);
+-done:
+       if (ret != 0) {
+               usb_hcd_unlink_urb_from_ep(hcd, urb);
+               kfree(qh);
+-- 
+1.5.6
+
+--
+To unsubscribe from this list: send the line "unsubscribe linux-omap" in
+the body of a message to majordomo@vger.kernel.org
+More majordomo info at  http://vger.kernel.org/majordomo-info.html
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/nand.patch b/packages/linux/omap3-pandora-kernel-wifi/nand.patch
new file mode 100755 (executable)
index 0000000..4a6d8e6
--- /dev/null
@@ -0,0 +1,11 @@
+diff --git a/drivers/mtd/nand/omap2.c b/drivers/mtd/nand/omap2.c index 2ede116..d18a8c9 100644
+--- a/drivers/mtd/nand/omap2.c
++++ b/drivers/mtd/nand/omap2.c
+@@ -196,7 +196,7 @@ static void omap_read_buf16(struct mtd_info *mtd, u_char *buf, int len)  {
+       struct nand_chip *nand = mtd->priv;
+
+-      __raw_readsl(nand->IO_ADDR_R, buf, len / 2);
++      readsw(nand->IO_ADDR_R, buf, len / 2);
+ }
+
+ /*
\ No newline at end of file
diff --git a/packages/linux/omap3-pandora-kernel-wifi/no-cortex-deadlock.patch b/packages/linux/omap3-pandora-kernel-wifi/no-cortex-deadlock.patch
new file mode 100755 (executable)
index 0000000..78547c8
--- /dev/null
@@ -0,0 +1,77 @@
+From: Mans Rullgard <mans@mansr.com>
+Date: Sat, 16 Aug 2008 23:03:06 +0000 (+0100)
+Subject: ARM: Workaround for erratum 451034
+X-Git-Url: http://git.mansr.com/?p=linux-omap;a=commitdiff_plain;h=b84fa87873ffb68ad23930cf6cddeea8bec43ede
+
+ARM: Workaround for erratum 451034
+
+On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
+store in the store buffer, can cause a processor deadlock under
+certain conditions.
+
+Executing a DMB instruction before saving NEON/VFP registers and before
+return to userspace makes it safe to run code which includes similar
+counter-measures.  Userspace code can still trigger the deadlock, so
+a different workaround is required to safely run untrusted code.
+
+See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
+
+Signed-off-by: Mans Rullgard <mans@mansr.com>
+---
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index aa475d9..41d536e 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -1117,6 +1117,22 @@ config NEON
+         Say Y to include support code for NEON, the ARMv7 Advanced SIMD
+         Extension.
++config ARM_ERRATUM_451034
++      bool "Enable workaround for ARM erratum 451034"
++      depends on VFPv3
++      help
++        On Cortex-A8 r1p0 and r1p1, executing a NEON store with an integer
++        store in the store buffer, can cause a processor deadlock under
++        certain conditions.
++
++        See ARM Cortex-A8 Errata Notice (PR120-PRDC-008070) for full details.
++
++        Say Y to include a partial workaround.
++
++        WARNING: Even with this option enabled, userspace code can trigger
++        the deadlock.  To safely run untrusted code, a different fix is
++        required.
++
+ endmenu
+ menu "Userspace binary formats"
+diff --git a/arch/arm/include/asm/vfpmacros.h b/arch/arm/include/asm/vfpmacros.h
+index 422f3cc..934798b 100644
+--- a/arch/arm/include/asm/vfpmacros.h
++++ b/arch/arm/include/asm/vfpmacros.h
+@@ -32,6 +32,9 @@
+       @ write all the working registers out of the VFP
+       .macro  VFPFSTMIA, base, tmp
++#ifdef CONFIG_ARM_ERRATUM_451034
++      dmb
++#endif
+ #if __LINUX_ARM_ARCH__ < 6
+       STC     p11, cr0, [\base],#33*4             @ FSTMIAX \base!, {d0-d15}
+ #else
+diff --git a/arch/arm/kernel/entry-common.S b/arch/arm/kernel/entry-common.S
+index 060d7e2..9799a35 100644
+--- a/arch/arm/kernel/entry-common.S
++++ b/arch/arm/kernel/entry-common.S
+@@ -69,6 +69,10 @@ no_work_pending:
+       /* perform architecture specific actions before user return */
+       arch_ret_to_user r1, lr
++#ifdef CONFIG_ARM_ERRATUM_451034
++      dmb
++#endif
++
+       @ slow_restore_user_regs
+       ldr     r1, [sp, #S_PSR]                @ get calling cpsr
+       ldr     lr, [sp, #S_PC]!                @ get pc
diff --git a/packages/linux/omap3-pandora-kernel-wifi/no-empty-flash-warnings.patch b/packages/linux/omap3-pandora-kernel-wifi/no-empty-flash-warnings.patch
new file mode 100755 (executable)
index 0000000..ab344b0
--- /dev/null
@@ -0,0 +1,15 @@
+diff --git a/fs/jffs2/scan.c b/fs/jffs2/scan.c
+index 1d437de..33b3feb 100644
+--- a/fs/jffs2/scan.c
++++ b/fs/jffs2/scan.c
+@@ -647,8 +647,8 @@ scan_more:
+                       inbuf_ofs = ofs - buf_ofs;
+                       while (inbuf_ofs < scan_end) {
+                               if (unlikely(*(uint32_t *)(&buf[inbuf_ofs]) != 0xffffffff)) {
+-                                      printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
+-                                             empty_start, ofs);
++//                                    printk(KERN_WARNING "Empty flash at 0x%08x ends at 0x%08x\n",
++//                                           empty_start, ofs);
+                                       if ((err = jffs2_scan_dirty_space(c, jeb, ofs-empty_start)))
+                                               return err;
+                                       goto scan_more;
diff --git a/packages/linux/omap3-pandora-kernel-wifi/no-harry-potter.diff b/packages/linux/omap3-pandora-kernel-wifi/no-harry-potter.diff
new file mode 100755 (executable)
index 0000000..2bb20ab
--- /dev/null
@@ -0,0 +1,11 @@
+--- /tmp/Makefile      2008-04-24 14:36:20.509598016 +0200
++++ git/arch/arm/Makefile      2008-04-24 14:36:31.949546584 +0200
+@@ -47,7 +47,7 @@
+ # Note that GCC does not numerically define an architecture version
+ # macro, but instead defines a whole series of macros which makes
+ # testing for a specific architecture or later rather impossible.
+-arch-$(CONFIG_CPU_32v7)               :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7a,-march=armv5t -Wa$(comma)-march=armv7a)
++arch-$(CONFIG_CPU_32v7)               :=-D__LINUX_ARM_ARCH__=7 $(call cc-option,-march=armv7-a,-march=armv5t -Wa$(comma)-march=armv7-a)
+ arch-$(CONFIG_CPU_32v6)               :=-D__LINUX_ARM_ARCH__=6 $(call cc-option,-march=armv6,-march=armv5t -Wa$(comma)-march=armv6)
+ # Only override the compiler option if ARMv6. The ARMv6K extensions are
+ # always available in ARMv7
diff --git a/packages/linux/omap3-pandora-kernel-wifi/omap-2430-lcd.patch b/packages/linux/omap3-pandora-kernel-wifi/omap-2430-lcd.patch
new file mode 100755 (executable)
index 0000000..8f8a687
--- /dev/null
@@ -0,0 +1,11 @@
+--- git/drivers/video/omap/lcd_2430sdp.c.orig  2007-08-13 14:35:17.000000000 -0700
++++ git/drivers/video/omap/lcd_2430sdp.c       2007-08-13 14:35:55.000000000 -0700
+@@ -32,7 +32,7 @@
+ #define LCD_PANEL_BACKLIGHT_GPIO      91
+ #define LCD_PANEL_ENABLE_GPIO         154
+ #define LCD_PIXCLOCK_MAX              5400 /* freq 5.4 MHz */
+-#define PM_RECEIVER             TWL4030_MODULE_PM_RECIEVER
++#define PM_RECEIVER             TWL4030_MODULE_PM_RECEIVER
+ #define ENABLE_VAUX2_DEDICATED  0x09
+ #define ENABLE_VAUX2_DEV_GRP    0x20
diff --git a/packages/linux/omap3-pandora-kernel-wifi/oprofile-0.9.3.armv7.diff b/packages/linux/omap3-pandora-kernel-wifi/oprofile-0.9.3.armv7.diff
new file mode 100755 (executable)
index 0000000..1eedbb5
--- /dev/null
@@ -0,0 +1,599 @@
+Hi,
+
+This patch adds Oprofile support on ARMv7, using the PMNC unit.
+Tested on OMAP3430 SDP.
+
+Feedback and comments are welcome.
+
+The patch to user space components is attached for reference. It i applies 
+against version 0.9.3 of oprofile source 
+(http://prdownloads.sourceforge.net/oprofile/oprofile-0.9.3.tar.gz).
+
+Regards,
+Jean.
+
+---
+
+From: Jean Pihet <jpihet@mvista.com>
+Date: Tue, 6 May 2008 17:21:44 +0200
+Subject: [PATCH] ARM: Add ARMv7 oprofile support
+
+Add ARMv7 Oprofile support to kernel
+
+Signed-off-by: Jean Pihet <jpihet@mvista.com>
+---
+
+diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
+index c60a27d..60b50a0 100644
+--- a/arch/arm/Kconfig
++++ b/arch/arm/Kconfig
+@@ -161,6 +161,11 @@ config OPROFILE_MPCORE
+ config OPROFILE_ARM11_CORE
+       bool
++config OPROFILE_ARMV7
++      def_bool y
++      depends on CPU_V7 && !SMP
++      bool
++
+ endif
+ config VECTORS_BASE
+diff --git a/arch/arm/oprofile/Makefile b/arch/arm/oprofile/Makefile
+index e61d0cc..88e31f5 100644
+--- a/arch/arm/oprofile/Makefile
++++ b/arch/arm/oprofile/Makefile
+@@ -11,3 +11,4 @@ oprofile-$(CONFIG_CPU_XSCALE)                += op_model_xscale.o
+ oprofile-$(CONFIG_OPROFILE_ARM11_CORE)        += op_model_arm11_core.o
+ oprofile-$(CONFIG_OPROFILE_ARMV6)     += op_model_v6.o
+ oprofile-$(CONFIG_OPROFILE_MPCORE)    += op_model_mpcore.o
++oprofile-$(CONFIG_OPROFILE_ARMV7)     += op_model_v7.o
+diff --git a/arch/arm/oprofile/common.c b/arch/arm/oprofile/common.c
+index 0a5cf3a..3fcd752 100644
+--- a/arch/arm/oprofile/common.c
++++ b/arch/arm/oprofile/common.c
+@@ -145,6 +145,10 @@ int __init oprofile_arch_init(struct oprofile_operations *ops) 
+       spec = &op_mpcore_spec;
+ #endif
++#ifdef CONFIG_OPROFILE_ARMV7
++      spec = &op_armv7_spec;
++#endif
++
+       if (spec) {
+               ret = spec->init();
+               if (ret < 0)
+diff --git a/arch/arm/oprofile/op_arm_model.h 
+b/arch/arm/oprofile/op_arm_model.h
+index 4899c62..8c4e4f6 100644
+--- a/arch/arm/oprofile/op_arm_model.h
++++ b/arch/arm/oprofile/op_arm_model.h
+@@ -26,6 +26,7 @@ extern struct op_arm_model_spec op_xscale_spec;
+ extern struct op_arm_model_spec op_armv6_spec;
+ extern struct op_arm_model_spec op_mpcore_spec;
++extern struct op_arm_model_spec op_armv7_spec;
+ extern void arm_backtrace(struct pt_regs * const regs, unsigned int depth);
+diff --git a/arch/arm/oprofile/op_model_v7.c b/arch/arm/oprofile/op_model_v7.c
+new file mode 100644
+index 0000000..a159bc1
+--- /dev/null
++++ b/arch/arm/oprofile/op_model_v7.c
+@@ -0,0 +1,407 @@
++/**
++ * @file op_model_v7.c
++ * ARM V7 (Cortex A8) Event Monitor Driver
++ *
++ * @remark Copyright 2008 Jean Pihet <jpihet@mvista.com>
++ * @remark Copyright 2004 ARM SMP Development Team
++ */
++#include <linux/types.h>
++#include <linux/errno.h>
++#include <linux/oprofile.h>
++#include <linux/interrupt.h>
++#include <linux/irq.h>
++#include <linux/smp.h>
++
++#include "op_counter.h"
++#include "op_arm_model.h"
++#include "op_model_v7.h"
++
++/* #define DEBUG */
++
++
++/*
++ * ARM V7 PMNC support
++ */
++
++static u32 cnt_en[CNTMAX];
++
++static inline void armv7_pmnc_write(u32 val)
++{
++      val &= PMNC_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c12, 0" : : "r" (val));
++}
++
++static inline u32 armv7_pmnc_read(void)
++{
++      u32 val;
++
++      asm volatile("mrc p15, 0, %0, c9, c12, 0" : "=r" (val));
++      return val;
++}
++
++static inline u32 armv7_pmnc_enable_counter(unsigned int cnt)
++{
++      u32 val;
++
++      if (cnt >= CNTMAX) {
++              printk(KERN_ERR "oprofile: CPU%u enabling wrong PMNC counter"
++                      " %d\n", smp_processor_id(), cnt);
++              return -1;
++      }
++
++      if (cnt == CCNT)
++              val = CNTENS_C;
++      else
++              val = (1 << (cnt - CNT0));
++
++      val &= CNTENS_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c12, 1" : : "r" (val));
++
++      return cnt;
++}
++
++static inline u32 armv7_pmnc_disable_counter(unsigned int cnt)
++{
++      u32 val;
++
++      if (cnt >= CNTMAX) {
++              printk(KERN_ERR "oprofile: CPU%u disabling wrong PMNC counter"
++                      " %d\n", smp_processor_id(), cnt);
++              return -1;
++      }
++
++      if (cnt == CCNT)
++              val = CNTENC_C;
++      else
++              val = (1 << (cnt - CNT0));
++
++      val &= CNTENC_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c12, 2" : : "r" (val));
++
++      return cnt;
++}
++
++static inline u32 armv7_pmnc_enable_intens(unsigned int cnt)
++{
++      u32 val;
++
++      if (cnt >= CNTMAX) {
++              printk(KERN_ERR "oprofile: CPU%u enabling wrong PMNC counter"
++                      " interrupt enable %d\n", smp_processor_id(), cnt);
++              return -1;
++      }
++
++      if (cnt == CCNT)
++              val = INTENS_C;
++      else
++              val = (1 << (cnt - CNT0));
++
++      val &= INTENS_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c14, 1" : : "r" (val));
++
++      return cnt;
++}
++
++static inline u32 armv7_pmnc_getreset_flags(void)
++{
++      u32 val;
++
++      /* Read */
++      asm volatile("mrc p15, 0, %0, c9, c12, 3" : "=r" (val));
++
++      /* Write to clear flags */
++      val &= FLAG_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c12, 3" : : "r" (val));
++
++      return val;
++}
++
++static inline int armv7_pmnc_select_counter(unsigned int cnt)
++{
++      u32 val;
++
++      if ((cnt == CCNT) || (cnt >= CNTMAX)) {
++              printk(KERN_ERR "oprofile: CPU%u selecting wrong PMNC counteri"
++                      " %d\n", smp_processor_id(), cnt);
++              return -1;
++      }
++
++      val = (cnt - CNT0) & SELECT_MASK;
++      asm volatile("mcr p15, 0, %0, c9, c12, 5" : : "r" (val));
++
++      return cnt;
++}
++
++static inline void armv7_pmnc_write_evtsel(unsigned int cnt, u32 val)
++{
++      if (armv7_pmnc_select_counter(cnt) == cnt) {
++              val &= EVTSEL_MASK;
++              asm volatile("mcr p15, 0, %0, c9, c13, 1" : : "r" (val));
++      }
++}
++
++static void armv7_pmnc_reset_counter(unsigned int cnt)
++{
++      u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
++      u32 val = -(u32)counter_config[cpu_cnt].count;
++
++      switch (cnt) {
++      case CCNT:
++              armv7_pmnc_disable_counter(cnt);
++
++              asm volatile("mcr p15, 0, %0, c9, c13, 0" : : "r" (val));
++
++              if (cnt_en[cnt] != 0)
++                  armv7_pmnc_enable_counter(cnt);
++
++              break;
++
++      case CNT0:
++      case CNT1:
++      case CNT2:
++      case CNT3:
++              armv7_pmnc_disable_counter(cnt);
++
++              if (armv7_pmnc_select_counter(cnt) == cnt)
++                  asm volatile("mcr p15, 0, %0, c9, c13, 2" : : "r" (val));
++
++              if (cnt_en[cnt] != 0)
++                  armv7_pmnc_enable_counter(cnt);
++
++              break;
++
++      default:
++              printk(KERN_ERR "oprofile: CPU%u resetting wrong PMNC counter"
++                      " %d\n", smp_processor_id(), cnt);
++              break;
++      }
++}
++
++int armv7_setup_pmnc(void)
++{
++      unsigned int cnt;
++
++      if (armv7_pmnc_read() & PMNC_E) {
++              printk(KERN_ERR "oprofile: CPU%u PMNC still enabled when setup"
++                      " new event counter.\n", smp_processor_id());
++              return -EBUSY;
++      }
++
++      /*
++       * Initialize & Reset PMNC: C bit, D bit and P bit.
++       *  Note: Using a slower count for CCNT (D bit: divide by 64) results
++       *   in a more stable system
++       */
++      armv7_pmnc_write(PMNC_P | PMNC_C | PMNC_D);
++
++
++      for (cnt = CCNT; cnt < CNTMAX; cnt++) {
++              unsigned long event;
++              u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
++
++              /*
++               * Disable counter
++               */
++              armv7_pmnc_disable_counter(cnt);
++              cnt_en[cnt] = 0;
++
++              if (!counter_config[cpu_cnt].enabled)
++                      continue;
++
++              event = counter_config[cpu_cnt].event & 255;
++
++              /*
++               * Set event (if destined for PMNx counters)
++               * We don't need to set the event if it's a cycle count
++               */
++              if (cnt != CCNT)
++                      armv7_pmnc_write_evtsel(cnt, event);
++
++              /*
++               * Enable interrupt for this counter
++               */
++              armv7_pmnc_enable_intens(cnt);
++
++              /*
++               * Reset counter
++               */
++              armv7_pmnc_reset_counter(cnt);
++
++              /*
++               * Enable counter
++               */
++              armv7_pmnc_enable_counter(cnt);
++              cnt_en[cnt] = 1;
++      }
++
++      return 0;
++}
++
++static inline void armv7_start_pmnc(void)
++{
++      armv7_pmnc_write(armv7_pmnc_read() | PMNC_E);
++}
++
++static inline void armv7_stop_pmnc(void)
++{
++      armv7_pmnc_write(armv7_pmnc_read() & ~PMNC_E);
++}
++
++/*
++ * CPU counters' IRQ handler (one IRQ per CPU)
++ */
++static irqreturn_t armv7_pmnc_interrupt(int irq, void *arg)
++{
++      struct pt_regs *regs = get_irq_regs();
++      unsigned int cnt;
++      u32 flags;
++
++
++      /*
++       * Stop IRQ generation
++       */
++      armv7_stop_pmnc();
++
++      /*
++       * Get and reset overflow status flags
++       */
++      flags = armv7_pmnc_getreset_flags();
++
++      /*
++       * Cycle counter
++       */
++      if (flags & FLAG_C) {
++              u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), CCNT);
++              armv7_pmnc_reset_counter(CCNT);
++              oprofile_add_sample(regs, cpu_cnt);
++      }
++
++      /*
++       * PMNC counters 0:3
++       */
++      for (cnt = CNT0; cnt < CNTMAX; cnt++) {
++              if (flags & (1 << (cnt - CNT0))) {
++                      u32 cpu_cnt = CPU_COUNTER(smp_processor_id(), cnt);
++                      armv7_pmnc_reset_counter(cnt);
++                      oprofile_add_sample(regs, cpu_cnt);
++              }
++      }
++
++      /*
++       * Allow IRQ generation
++       */
++      armv7_start_pmnc();
++
++      return IRQ_HANDLED;
++}
++
++int armv7_request_interrupts(int *irqs, int nr)
++{
++      unsigned int i;
++      int ret = 0;
++
++      for (i = 0; i < nr; i++) {
++              ret = request_irq(irqs[i], armv7_pmnc_interrupt,
++                              IRQF_DISABLED, "CP15 PMNC", NULL);
++              if (ret != 0) {
++                      printk(KERN_ERR "oprofile: unable to request IRQ%u"
++                              " for ARMv7\n",
++                             irqs[i]);
++                      break;
++              }
++      }
++
++      if (i != nr)
++              while (i-- != 0)
++                      free_irq(irqs[i], NULL);
++
++      return ret;
++}
++
++void armv7_release_interrupts(int *irqs, int nr)
++{
++      unsigned int i;
++
++      for (i = 0; i < nr; i++)
++              free_irq(irqs[i], NULL);
++}
++
++#ifdef DEBUG
++static void armv7_pmnc_dump_regs(void)
++{
++      u32 val;
++      unsigned int cnt;
++
++      printk(KERN_INFO "PMNC registers dump:\n");
++
++      asm volatile("mrc p15, 0, %0, c9, c12, 0" : "=r" (val));
++      printk(KERN_INFO "PMNC  =0x%08x\n", val);
++
++      asm volatile("mrc p15, 0, %0, c9, c12, 1" : "=r" (val));
++      printk(KERN_INFO "CNTENS=0x%08x\n", val);
++
++      asm volatile("mrc p15, 0, %0, c9, c14, 1" : "=r" (val));
++      printk(KERN_INFO "INTENS=0x%08x\n", val);
++
++      asm volatile("mrc p15, 0, %0, c9, c12, 3" : "=r" (val));
++      printk(KERN_INFO "FLAGS =0x%08x\n", val);
++
++      asm volatile("mrc p15, 0, %0, c9, c12, 5" : "=r" (val));
++      printk(KERN_INFO "SELECT=0x%08x\n", val);
++
++      asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r" (val));
++      printk(KERN_INFO "CCNT  =0x%08x\n", val);
++
++      for (cnt = CNT0; cnt < CNTMAX; cnt++) {
++              armv7_pmnc_select_counter(cnt);
++              asm volatile("mrc p15, 0, %0, c9, c13, 2" : "=r" (val));
++              printk(KERN_INFO "CNT[%d] count =0x%08x\n", cnt-CNT0, val);
++              asm volatile("mrc p15, 0, %0, c9, c13, 1" : "=r" (val));
++              printk(KERN_INFO "CNT[%d] evtsel=0x%08x\n", cnt-CNT0, val);
++      }
++}
++#endif
++
++
++static int irqs[] = {
++#ifdef CONFIG_ARCH_OMAP3
++      INT_34XX_BENCH_MPU_EMUL,
++#endif
++};
++
++static void armv7_pmnc_stop(void)
++{
++#ifdef DEBUG
++      armv7_pmnc_dump_regs();
++#endif
++      armv7_stop_pmnc();
++      armv7_release_interrupts(irqs, ARRAY_SIZE(irqs));
++}
++
++static int armv7_pmnc_start(void)
++{
++      int ret;
++
++#ifdef DEBUG
++      armv7_pmnc_dump_regs();
++#endif
++      ret = armv7_request_interrupts(irqs, ARRAY_SIZE(irqs));
++      if (ret >= 0)
++              armv7_start_pmnc();
++
++      return ret;
++}
++
++static int armv7_detect_pmnc(void)
++{
++      return 0;
++}
++
++struct op_arm_model_spec op_armv7_spec = {
++      .init           = armv7_detect_pmnc,
++      .num_counters   = 5,
++      .setup_ctrs     = armv7_setup_pmnc,
++      .start          = armv7_pmnc_start,
++      .stop           = armv7_pmnc_stop,
++      .name           = "arm/armv7",
++};
+diff --git a/arch/arm/oprofile/op_model_v7.h b/arch/arm/oprofile/op_model_v7.h
+new file mode 100644
+index 0000000..08f40ea
+--- /dev/null
++++ b/arch/arm/oprofile/op_model_v7.h
+@@ -0,0 +1,101 @@
++/**
++ * @file op_model_v7.h
++ * ARM v7 (Cortex A8) Event Monitor Driver
++ *
++ * @remark Copyright 2008 Jean Pihet <jpihet@mvista.com>
++ * @remark Copyright 2004 ARM SMP Development Team
++ * @remark Copyright 2000-2004 Deepak Saxena <dsaxena@mvista.com>
++ * @remark Copyright 2000-2004 MontaVista Software Inc
++ * @remark Copyright 2004 Dave Jiang <dave.jiang@intel.com>
++ * @remark Copyright 2004 Intel Corporation
++ * @remark Copyright 2004 Zwane Mwaikambo <zwane@arm.linux.org.uk>
++ * @remark Copyright 2004 Oprofile Authors
++ *
++ * @remark Read the file COPYING
++ *
++ * @author Zwane Mwaikambo
++ */
++#ifndef OP_MODEL_V7_H
++#define OP_MODEL_V7_H
++
++/*
++ * Per-CPU PMNC: config reg
++ */
++#define PMNC_E                (1 << 0)        /* Enable all counters */
++#define PMNC_P                (1 << 1)        /* Reset all counters */
++#define PMNC_C                (1 << 2)        /* Cycle counter reset */
++#define PMNC_D                (1 << 3)        /* CCNT counts every 64th cpu cycle */
++#define PMNC_X                (1 << 4)        /* Export to ETM */
++#define PMNC_DP               (1 << 5)        /* Disable CCNT if non-invasive debug*/
++#define       PMNC_MASK       0x3f            /* Mask for writable bits */
++
++/*
++ * Available counters
++ */
++#define CCNT          0
++#define CNT0          1
++#define CNT1          2
++#define CNT2          3
++#define CNT3          4
++#define CNTMAX                5
++
++#define CPU_COUNTER(cpu, counter)     ((cpu) * CNTMAX + (counter))
++
++/*
++ * CNTENS: counters enable reg
++ */
++#define CNTENS_P0     (1 << 0)
++#define CNTENS_P1     (1 << 1)
++#define CNTENS_P2     (1 << 2)
++#define CNTENS_P3     (1 << 3)
++#define CNTENS_C      (1 << 31)
++#define       CNTENS_MASK     0x8000000f      /* Mask for writable bits */
++
++/*
++ * CNTENC: counters disable reg
++ */
++#define CNTENC_P0     (1 << 0)
++#define CNTENC_P1     (1 << 1)
++#define CNTENC_P2     (1 << 2)
++#define CNTENC_P3     (1 << 3)
++#define CNTENC_C      (1 << 31)
++#define       CNTENC_MASK     0x8000000f      /* Mask for writable bits */
++
++/*
++ * INTENS: counters overflow interrupt enable reg
++ */
++#define INTENS_P0     (1 << 0)
++#define INTENS_P1     (1 << 1)
++#define INTENS_P2     (1 << 2)
++#define INTENS_P3     (1 << 3)
++#define INTENS_C      (1 << 31)
++#define       INTENS_MASK     0x8000000f      /* Mask for writable bits */
++
++/*
++ * EVTSEL: Event selection reg
++ */
++#define       EVTSEL_MASK     0x7f            /* Mask for writable bits */
++
++/*
++ * SELECT: Counter selection reg
++ */
++#define       SELECT_MASK     0x1f            /* Mask for writable bits */
++
++/*
++ * FLAG: counters overflow flag status reg
++ */
++#define FLAG_P0               (1 << 0)
++#define FLAG_P1               (1 << 1)
++#define FLAG_P2               (1 << 2)
++#define FLAG_P3               (1 << 3)
++#define FLAG_C                (1 << 31)
++#define       FLAG_MASK       0x8000000f      /* Mask for writable bits */
++
++
++int armv7_setup_pmu(void);
++int armv7_start_pmu(void);
++int armv7_stop_pmu(void);
++int armv7_request_interrupts(int *, int);
++void armv7_release_interrupts(int *, int);
++
++#endif
+
diff --git a/packages/linux/omap3-pandora-kernel-wifi/pvr/dispc.patch b/packages/linux/omap3-pandora-kernel-wifi/pvr/dispc.patch
new file mode 100755 (executable)
index 0000000..1697448
--- /dev/null
@@ -0,0 +1,46 @@
+--- kernel-2.6.27.orig/drivers/video/omap/dispc.c
++++ kernel-2.6.27/drivers/video/omap/dispc.c
+@@ -314,6 +319,32 @@
+ }
+ EXPORT_SYMBOL(omap_dispc_enable_digit_out);
++extern void omap_dispc_set_plane_base(int plane, u32 paddr)
++{
++      u32 reg;
++      u32 val;
++
++      switch (plane) {
++      case 0:
++              reg = DISPC_GFX_BA0;
++              break;
++      case 1:
++              reg = DISPC_VID1_BASE + DISPC_VID_BA0;
++              break;
++      case 2:
++              reg = DISPC_VID2_BASE + DISPC_VID_BA0;
++              break;
++      default:
++              BUG();
++              return;
++      }
++
++      dispc_write_reg(reg, paddr);
++      val = dispc_read_reg(DISPC_CONTROL) | (1 << 5); /* GOLCD */
++      dispc_write_reg(DISPC_CONTROL, val);
++}
++EXPORT_SYMBOL(omap_dispc_set_plane_base);
++
+ static inline int _setup_plane(int plane, int channel_out,
+                                 u32 paddr, int screen_width,
+                                 int pos_x, int pos_y, int width, int height,
+--- /tmp/dispc.h       2008-12-09 15:13:12.000000000 +0100
++++ git/drivers/video/omap/dispc.h     2008-12-09 15:13:36.000000000 +0100
+@@ -32,6 +32,8 @@
+ #define DISPC_TFT_DATA_LINES_18               2
+ #define DISPC_TFT_DATA_LINES_24               3
++extern void omap_dispc_set_plane_base(int plane, u32 paddr);
++
+ extern void omap_dispc_set_lcd_size(int width, int height);
+ extern void omap_dispc_enable_lcd_out(int enable);
diff --git a/packages/linux/omap3-pandora-kernel-wifi/pvr/nokia-TI.diff b/packages/linux/omap3-pandora-kernel-wifi/pvr/nokia-TI.diff
new file mode 100755 (executable)
index 0000000..a4aca1e
--- /dev/null
@@ -0,0 +1,8798 @@
+ include4/img_types.h                                                 |    5 
+ include4/pdumpdefs.h                                                 |    1 
+ include4/pvrmodule.h                                                 |   31 
+ include4/pvrversion.h                                                |    8 
+ include4/services.h                                                  |   46 
+ include4/servicesext.h                                               |    6 
+ include4/sgxapi_km.h                                                 |   65 
+ services4/3rdparty/bufferclass_example/bufferclass_example.c         |   32 
+ services4/3rdparty/bufferclass_example/bufferclass_example.h         |   25 
+ services4/3rdparty/bufferclass_example/bufferclass_example_linux.c   |   20 
+ services4/3rdparty/bufferclass_example/bufferclass_example_private.c |   76 -
+ services4/3rdparty/bufferclass_example/kbuild/Makefile               |   40 
+ services4/3rdparty/dc_omap3430_linux/kbuild/Makefile                 |   39 
+ services4/3rdparty/dc_omap3430_linux/omaplfb.h                       |    7 
+ services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c          |   60 
+ services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c                 |   52 
+ services4/include/pvr_bridge.h                                       |   26 
+ services4/include/servicesint.h                                      |   17 
+ services4/include/sgx_bridge.h                                       |   95 +
+ services4/include/sgx_bridge_km.h                                    |  139 -
+ services4/include/sgxinfo.h                                          |  347 ++--
+ services4/srvkm/Makefile                                             |   68 
+ services4/srvkm/bridged/bridged_pvr_bridge.c                         |  732 ++++++++-
+ services4/srvkm/common/deviceclass.c                                 |    6 
+ services4/srvkm/common/devicemem.c                                   |    3 
+ services4/srvkm/common/handle.c                                      |   58 
+ services4/srvkm/common/power.c                                       |   15 
+ services4/srvkm/common/pvrsrv.c                                      |  151 +-
+ services4/srvkm/common/queue.c                                       |    4 
+ services4/srvkm/common/resman.c                                      |   13 
+ services4/srvkm/devices/sgx/mmu.c                                    |    2 
+ services4/srvkm/devices/sgx/mmu.h                                    |    2 
+ services4/srvkm/devices/sgx/pb.c                                     |   37 
+ services4/srvkm/devices/sgx/sgx2dcore.c                              |   21 
+ services4/srvkm/devices/sgx/sgx_bridge_km.h                          |  158 ++
+ services4/srvkm/devices/sgx/sgxinfokm.h                              |  146 +
+ services4/srvkm/devices/sgx/sgxinit.c                                |  734 ++--------
+ services4/srvkm/devices/sgx/sgxkick.c                                |  327 +++-
+ services4/srvkm/devices/sgx/sgxreset.c                               |  330 ++++
+ services4/srvkm/devices/sgx/sgxtransfer.c                            |  312 ++++
+ services4/srvkm/devices/sgx/sgxutils.c                               |  459 +++---
+ services4/srvkm/devices/sgx/sgxutils.h                               |   28 
+ services4/srvkm/env/linux/env_data.h                                 |    8 
+ services4/srvkm/env/linux/event.c                                    |  221 +++
+ services4/srvkm/env/linux/event.h                                    |   32 
+ services4/srvkm/env/linux/kbuild/Makefile                            |   81 +
+ services4/srvkm/env/linux/mm.c                                       |    8 
+ services4/srvkm/env/linux/module.c                                   |  342 +++-
+ services4/srvkm/env/linux/osfunc.c                                   |  347 +++-
+ services4/srvkm/env/linux/pdump.c                                    |   13 
+ services4/srvkm/env/linux/proc.c                                     |   17 
+ services4/srvkm/env/linux/pvr_debug.c                                |    2 
+ services4/srvkm/hwdefs/sgxdefs.h                                     |    4 
+ services4/srvkm/hwdefs/sgxerrata.h                                   |    9 
+ services4/srvkm/hwdefs/sgxfeaturedefs.h                              |   11 
+ services4/srvkm/include/device.h                                     |   35 
+ services4/srvkm/include/handle.h                                     |   10 
+ services4/srvkm/include/osfunc.h                                     |   32 
+ services4/srvkm/include/pdump_km.h                                   |    2 
+ services4/srvkm/include/resman.h                                     |    5 
+ services4/srvkm/include/srvkm.h                                      |    4 
+ services4/system/include/syscommon.h                                 |    2 
+ services4/system/omap3430/sysconfig.c                                |   24 
+ services4/system/omap3430/sysconfig.h                                |    7 
+ services4/system/omap3430/sysutils.c                                 |    2 
+ 65 files changed, 4286 insertions(+), 1675 deletions(-)
+
+
+diff -Nurd git/drivers/gpu/pvr/include4/img_types.h git/drivers/gpu/pvr/include4/img_types.h
+--- git/drivers/gpu/pvr/include4/img_types.h   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/img_types.h   2008-12-18 15:47:29.000000000 +0100
+@@ -43,7 +43,10 @@
+ typedef signed long           IMG_INT32,      *IMG_PINT32;
+       #if defined(LINUX)
+-
++#if !defined(USE_CODE)
++              typedef unsigned long long              IMG_UINT64,     *IMG_PUINT64;
++              typedef long long                               IMG_INT64,      *IMG_PINT64;
++#endif
+       #else
+               #error("define an OS")
+diff -Nurd git/drivers/gpu/pvr/include4/pdumpdefs.h git/drivers/gpu/pvr/include4/pdumpdefs.h
+--- git/drivers/gpu/pvr/include4/pdumpdefs.h   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/pdumpdefs.h   2008-12-18 15:47:29.000000000 +0100
+@@ -73,6 +73,7 @@
+       PVRSRV_PDUMP_MEM_FORMAT_RESERVED = 1,
+       PVRSRV_PDUMP_MEM_FORMAT_TILED = 8,
+       PVRSRV_PDUMP_MEM_FORMAT_TWIDDLED = 9,
++      PVRSRV_PDUMP_MEM_FORMAT_HYBRID = 10,
+       
+       PVRSRV_PDUMP_MEM_FORMAT_FORCE_I32 = 0x7fffffff
+ } PDUMP_MEM_FORMAT;
+diff -Nurd git/drivers/gpu/pvr/include4/pvrmodule.h git/drivers/gpu/pvr/include4/pvrmodule.h
+--- git/drivers/gpu/pvr/include4/pvrmodule.h   1970-01-01 01:00:00.000000000 +0100
++++ git/drivers/gpu/pvr/include4/pvrmodule.h   2008-12-18 15:47:29.000000000 +0100
+@@ -0,0 +1,31 @@
++/**********************************************************************
++ *
++ * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
++ * 
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms and conditions of the GNU General Public License,
++ * version 2, as published by the Free Software Foundation.
++ * 
++ * This program is distributed in the hope it will be useful but, except 
++ * as otherwise stated in writing, without any warranty; without even the 
++ * implied warranty of merchantability or fitness for a particular purpose. 
++ * See the GNU General Public License for more details.
++ * 
++ * You should have received a copy of the GNU General Public License along with
++ * this program; if not, write to the Free Software Foundation, Inc.,
++ * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
++ * 
++ * The full GNU General Public License is included in this distribution in
++ * the file called "COPYING".
++ *
++ * Contact Information:
++ * Imagination Technologies Ltd. <gpl-support@imgtec.com>
++ * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
++ *
++ ******************************************************************************/
++
++#ifndef       _PVRMODULE_H_
++#define       _PVRMODULE_H_
++MODULE_AUTHOR("Imagination Technologies Ltd. <gpl-support@imgtec.com>");
++MODULE_LICENSE("GPL");
++#endif        
+diff -Nurd git/drivers/gpu/pvr/include4/pvrversion.h git/drivers/gpu/pvr/include4/pvrversion.h
+--- git/drivers/gpu/pvr/include4/pvrversion.h  2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/pvrversion.h  2008-12-18 15:47:29.000000000 +0100
+@@ -28,10 +28,10 @@
+ #define _PVRVERSION_H_
+ #define PVRVERSION_MAJ 1
+-#define PVRVERSION_MIN 1
+-#define PVRVERSION_BRANCH 11
+-#define PVRVERSION_BUILD 970
+-#define PVRVERSION_STRING "1.1.11.970"
++#define PVRVERSION_MIN 2
++#define PVRVERSION_BRANCH 12
++#define PVRVERSION_BUILD 838
++#define PVRVERSION_STRING "1.2.12.838"
+ #endif 
+diff -Nurd git/drivers/gpu/pvr/include4/servicesext.h git/drivers/gpu/pvr/include4/servicesext.h
+--- git/drivers/gpu/pvr/include4/servicesext.h 2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/servicesext.h 2008-12-18 15:47:29.000000000 +0100
+@@ -150,6 +150,8 @@
+       PVRSRV_PIXEL_FORMAT_V8U8,
+       PVRSRV_PIXEL_FORMAT_V16U16,
+       PVRSRV_PIXEL_FORMAT_QWVU8888,
++      PVRSRV_PIXEL_FORMAT_XLVU8888,
++      PVRSRV_PIXEL_FORMAT_QWVU16,
+       PVRSRV_PIXEL_FORMAT_D16,
+       PVRSRV_PIXEL_FORMAT_D24S8,
+       PVRSRV_PIXEL_FORMAT_D24X8,
+@@ -159,7 +161,9 @@
+       PVRSRV_PIXEL_FORMAT_YUY2,
+       PVRSRV_PIXEL_FORMAT_DXT23,
+       PVRSRV_PIXEL_FORMAT_DXT45,      
+-      PVRSRV_PIXEL_FORMAT_G32R32F,    
++      PVRSRV_PIXEL_FORMAT_G32R32F,
++      PVRSRV_PIXEL_FORMAT_NV11,
++      PVRSRV_PIXEL_FORMAT_NV12,
+       PVRSRV_PIXEL_FORMAT_FORCE_I32 = 0x7fffffff,
+ } PVRSRV_PIXEL_FORMAT;
+diff -Nurd git/drivers/gpu/pvr/include4/services.h git/drivers/gpu/pvr/include4/services.h
+--- git/drivers/gpu/pvr/include4/services.h    2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/services.h    2008-12-18 15:47:29.000000000 +0100
+@@ -36,16 +36,14 @@
+ #include "pdumpdefs.h"
+-#if defined(SERVICES4)
+ #define IMG_CONST const
+-#else
+-#define IMG_CONST
+-#endif
+ #define PVRSRV_MAX_CMD_SIZE           1024
+ #define PVRSRV_MAX_DEVICES            16      
++#define EVENTOBJNAME_MAXLENGTH (50)
++
+ #define PVRSRV_MEM_READ                                               (1<<0)
+ #define PVRSRV_MEM_WRITE                                      (1<<1)
+ #define PVRSRV_MEM_CACHE_CONSISTENT                   (1<<2)
+@@ -90,6 +88,7 @@
+ #define PVRSRV_MISC_INFO_TIMER_PRESENT                        (1<<0)
+ #define PVRSRV_MISC_INFO_CLOCKGATE_PRESENT            (1<<1)
+ #define PVRSRV_MISC_INFO_MEMSTATS_PRESENT             (1<<2)
++#define PVRSRV_MISC_INFO_GLOBALEVENTOBJECT_PRESENT    (1<<3)
+ #define PVRSRV_PDUMP_MAX_FILENAME_SIZE                        20
+ #define PVRSRV_PDUMP_MAX_COMMENT_SIZE                 200
+@@ -133,7 +132,8 @@
+       IMG_OPENGLES2  = 0x00000003,
+       IMG_D3DM           = 0x00000004,
+       IMG_SRV_UM         = 0x00000005,
+-      IMG_OPENVG         = 0x00000006
++      IMG_OPENVG         = 0x00000006,
++      IMG_SRVCLIENT  = 0x00000007,
+ } IMG_MODULE_ID;
+@@ -202,10 +202,8 @@
+       
+       IMG_PVOID                               pvLinAddr;      
+-#if defined(SERVICES4)
+     
+       IMG_PVOID                               pvLinAddrKM;
+-#endif
+       
+       
+       IMG_DEV_VIRTADDR                sDevVAddr;
+@@ -294,6 +292,14 @@
+ } PVRSRV_DEVICE_IDENTIFIER;
++typedef struct _PVRSRV_EVENTOBJECT_
++{
++      
++      IMG_CHAR        szName[EVENTOBJNAME_MAXLENGTH];
++      
++      IMG_HANDLE      hOSEventKM;
++
++} PVRSRV_EVENTOBJECT;
+ typedef struct _PVRSRV_MISC_INFO_
+ {
+@@ -313,9 +319,14 @@
+       IMG_UINT32      ui32MemoryStrLen;
+       
+       
++      PVRSRV_EVENTOBJECT      sGlobalEventObject;
++      IMG_HANDLE                      hOSGlobalEvent;
++      
++      
+       
+ } PVRSRV_MISC_INFO;
++
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVConnect(PVRSRV_CONNECTION *psConnection);
+@@ -335,7 +346,7 @@
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVGetMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo);
+ IMG_IMPORT
+-PVRSRV_ERROR IMG_CALLCONV PVRSRVReleaseMiscInfo (PVRSRV_MISC_INFO *psMiscInfo);
++PVRSRV_ERROR IMG_CALLCONV PVRSRVReleaseMiscInfo (IMG_CONST PVRSRV_CONNECTION *psConnection, PVRSRV_MISC_INFO *psMiscInfo);
+ #if 1
+ IMG_IMPORT
+@@ -348,7 +359,9 @@
+ #endif
+ IMG_IMPORT
+-PVRSRV_ERROR PollForValue (volatile IMG_UINT32 *pui32LinMemAddr,
++PVRSRV_ERROR PollForValue ( PVRSRV_CONNECTION *psConnection,
++                                                      IMG_HANDLE hOSEvent,
++                                                      volatile IMG_UINT32 *pui32LinMemAddr,
+                                                                       IMG_UINT32 ui32Value,
+                                                                       IMG_UINT32 ui32Mask,
+                                                                       IMG_UINT32 ui32Waitus,
+@@ -631,21 +644,18 @@
+                                                                                       IMG_UINT32 ui32RegValue,
+                                                                                       IMG_UINT32 ui32Flags);
+-#ifdef SERVICES4
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPolWithFlags(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                                        IMG_UINT32 ui32RegAddr,
+                                                                                                        IMG_UINT32 ui32RegValue,
+                                                                                                        IMG_UINT32 ui32Mask,
+                                                                                                        IMG_UINT32 ui32Flags);
+-#endif
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpRegPol(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                       IMG_UINT32 ui32RegAddr,
+                                                                                       IMG_UINT32 ui32RegValue,
+                                                                                       IMG_UINT32 ui32Mask);
+-#ifdef SERVICES4
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpPDReg(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                       IMG_UINT32 ui32RegAddr,
+@@ -655,7 +665,6 @@
+                                                                                               PVRSRV_CLIENT_MEM_INFO *psMemInfo,
+                                                                                               IMG_UINT32 ui32Offset,
+                                                                                               IMG_DEV_PHYADDR sPDDevPAddr);
+-#endif
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpMemPages(IMG_CONST PVRSRV_CONNECTION *psConnection,
+@@ -676,7 +685,6 @@
+                                                                                        IMG_CONST IMG_CHAR *pszComment,
+                                                                                        IMG_BOOL bContinuous);
+-#if defined(SERVICES4)
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentf(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                         IMG_BOOL bContinuous,
+@@ -686,7 +694,6 @@
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCommentWithFlagsf(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                                          IMG_UINT32 ui32Flags,
+                                                                                                          IMG_CONST IMG_CHAR *pszFormat, ...);
+-#endif
+ IMG_IMPORT
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpDriverInfo(IMG_CONST PVRSRV_CONNECTION *psConnection,
+@@ -718,7 +725,7 @@
+                                                                                       IMG_UINT32 ui32Size,
+                                                                                       IMG_UINT32 ui32PDumpFlags);
+-#ifdef SERVICES4
++
+ IMG_IMPORT
+ IMG_BOOL IMG_CALLCONV PVRSRVPDumpIsCapturingTest(IMG_CONST PVRSRV_CONNECTION *psConnection);
+@@ -726,7 +733,6 @@
+ PVRSRV_ERROR IMG_CALLCONV PVRSRVPDumpCycleCountRegRead(IMG_CONST PVRSRV_CONNECTION *psConnection,
+                                                                                               IMG_UINT32 ui32RegOffset,
+                                                                                               IMG_BOOL bLastFrame);
+-#endif
+ IMG_IMPORT IMG_HANDLE PVRSRVLoadLibrary(IMG_CHAR *pszLibraryName);
+ IMG_IMPORT PVRSRV_ERROR       PVRSRVUnloadLibrary(IMG_HANDLE hExtDrv);
+@@ -777,9 +783,9 @@
+ IMG_PVOID PVRSRVReallocUserModeMemTracking(IMG_VOID *pvMem, IMG_UINT32 ui32NewSize, IMG_CHAR *pszFileName, IMG_UINT32 ui32LineNumber);
+ #endif 
+-PVRSRV_ERROR PVRSRVEventObjectWait(PVRSRV_CONNECTION *psConnection, 
+-                                                                      IMG_HANDLE hOSEvent, 
+-                                                                      IMG_UINT32 ui32MSTimeout);
++IMG_IMPORT 
++PVRSRV_ERROR PVRSRVEventObjectWait(PVRSRV_CONNECTION * psConnection, 
++                                                                      IMG_HANDLE hOSEvent);
+ #define TIME_NOT_PASSED_UINT32(a,b,c)         ((a - b) < c)
+diff -Nurd git/drivers/gpu/pvr/include4/sgxapi_km.h git/drivers/gpu/pvr/include4/sgxapi_km.h
+--- git/drivers/gpu/pvr/include4/sgxapi_km.h   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/include4/sgxapi_km.h   2008-12-18 15:47:29.000000000 +0100
+@@ -32,6 +32,7 @@
+ #endif
+ #include "sgxdefs.h"
++
+ #if defined(__linux__) && !defined(USE_CODE)
+       #if defined(__KERNEL__)
+               #include <asm/unistd.h>
+@@ -64,6 +65,8 @@
+ #define SGX_MAX_TA_STATUS_VALS        32
+ #define SGX_MAX_3D_STATUS_VALS        2
++#define SGX_MAX_SRC_SYNCS                     4
++
+ #define PFLAGS_POWERDOWN                      0x00000001
+ #define PFLAGS_POWERUP                                0x00000002
+  
+@@ -75,11 +78,60 @@
+       IMG_SYS_PHYADDR                 sPhysBase;                              
+ }SGX_SLAVE_PORT;
++#ifdef SUPPORT_SGX_HWPERF
++
++#define PVRSRV_SGX_HWPERF_CBSIZE                                      0x100   
++
++#define PVRSRV_SGX_HWPERF_INVALID                                     1
++#define PVRSRV_SGX_HWPERF_TRANSFER                                    2
++#define PVRSRV_SGX_HWPERF_TA                                          3
++#define PVRSRV_SGX_HWPERF_3D                                          4
++
++#define PVRSRV_SGX_HWPERF_ON                                          0x40
++
++
++typedef struct _PVRSRV_SGX_HWPERF_CBDATA_
++{
++      IMG_UINT32      ui32FrameNo;
++      IMG_UINT32      ui32Type;
++      IMG_UINT32      ui32StartTimeWraps;
++      IMG_UINT32      ui32StartTime;
++      IMG_UINT32      ui32EndTimeWraps;
++      IMG_UINT32      ui32EndTime;
++      IMG_UINT32      ui32ClockSpeed;
++      IMG_UINT32      ui32TimeMax;
++} PVRSRV_SGX_HWPERF_CBDATA;
++
++typedef struct _PVRSRV_SGX_HWPERF_CB_
++{
++      IMG_UINT32      ui32Woff;
++      IMG_UINT32      ui32Roff;
++      PVRSRV_SGX_HWPERF_CBDATA psHWPerfCBData[PVRSRV_SGX_HWPERF_CBSIZE];
++} PVRSRV_SGX_HWPERF_CB;
++
++
++typedef struct _SGX_MISC_INFO_HWPERF_RETRIEVE_CB
++{
++      PVRSRV_SGX_HWPERF_CBDATA*       psHWPerfData;   
++      IMG_UINT32                                      ui32ArraySize;  
++      IMG_UINT32                                      ui32DataCount;  
++      IMG_UINT32                                      ui32Time;               
++} SGX_MISC_INFO_HWPERF_RETRIEVE_CB;
++#endif 
++
++
+ typedef enum _SGX_MISC_INFO_REQUEST_
+ {
++      SGX_MISC_INFO_REQUEST_CLOCKSPEED = 0,
++#ifdef SUPPORT_SGX_HWPERF
++      SGX_MISC_INFO_REQUEST_HWPERF_CB_ON,
++      SGX_MISC_INFO_REQUEST_HWPERF_CB_OFF,
++      SGX_MISC_INFO_REQUEST_HWPERF_RETRIEVE_CB,
++#endif 
+       SGX_MISC_INFO_REQUEST_FORCE_I16                                 =  0x7fff
+ } SGX_MISC_INFO_REQUEST;
++
+ typedef struct _SGX_MISC_INFO_
+ {
+       SGX_MISC_INFO_REQUEST   eRequest;       
+@@ -87,6 +139,10 @@
+       union
+       {
+               IMG_UINT32      reserved;       
++              IMG_UINT32                                                                                      ui32SGXClockSpeed;
++#ifdef SUPPORT_SGX_HWPERF
++              SGX_MISC_INFO_HWPERF_RETRIEVE_CB                                        sRetrieveCB;
++#endif 
+       } uData;
+ } SGX_MISC_INFO;
+@@ -162,6 +218,15 @@
+ } PVR3DIF4_KICKTA_PDUMP, *PPVR3DIF4_KICKTA_PDUMP;
+ #endif        
++#if defined(TRANSFER_QUEUE)
++#if defined(SGX_FEATURE_2D_HARDWARE)
++#define SGX_MAX_2D_BLIT_CMD_SIZE              26
++#define SGX_MAX_2D_SRC_SYNC_OPS                       3
++#endif
++#define SGX_MAX_TRANSFER_STATUS_VALS  64
++#define SGX_MAX_TRANSFER_SYNC_OPS     5
++#endif
++
+ #if defined (__cplusplus)
+ }
+ #endif
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c
+--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.c   2008-12-18 15:47:29.000000000 +0100
+@@ -197,11 +197,27 @@
+                       return PVRSRV_ERROR_OUT_OF_MEMORY;
+               }
++              
++
++              psDevInfo->sBufferInfo.pixelformat = BC_EXAMPLE_PIXELFORMAT;
++              psDevInfo->sBufferInfo.ui32Width = BC_EXAMPLE_WIDTH;
++              psDevInfo->sBufferInfo.ui32Height = BC_EXAMPLE_HEIGHT;
++              psDevInfo->sBufferInfo.ui32ByteStride = BC_EXAMPLE_STRIDE;              
++              psDevInfo->sBufferInfo.ui32BufferDeviceID = BC_EXAMPLE_DEVICEID;
++              psDevInfo->sBufferInfo.ui32Flags = PVRSRV_BC_FLAGS_YUVCSC_FULL_RANGE | PVRSRV_BC_FLAGS_YUVCSC_BT601;
++
+               for(i=0; i < BC_EXAMPLE_NUM_BUFFERS; i++)
+               {
++                      IMG_UINT32 ui32Size = BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE;
++
++                      if(psDevInfo->sBufferInfo.pixelformat == PVRSRV_PIXEL_FORMAT_YUV420)
++                      {
++                              
++                              ui32Size += ((BC_EXAMPLE_STRIDE >> 1) * (BC_EXAMPLE_HEIGHT >> 1) << 1);
++                      }
+                       
+-                      if (AllocContigMemory(BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE,
++                      if (AllocContigMemory(ui32Size,
+                                                                 &psDevInfo->psSystemBuffer[i].hMemHandle,
+                                                                 &psDevInfo->psSystemBuffer[i].sCPUVAddr,
+                                                                 &sSystemBufferCPUPAddr) != PVRSRV_OK)
+@@ -211,12 +227,14 @@
+                       psDevInfo->ui32NumBuffers++;
+-                      psDevInfo->psSystemBuffer[i].ui32Size = BC_EXAMPLE_HEIGHT * BC_EXAMPLE_STRIDE;
++                      psDevInfo->psSystemBuffer[i].ui32Size = ui32Size;
+                       psDevInfo->psSystemBuffer[i].sSysAddr = CpuPAddrToSysPAddr(sSystemBufferCPUPAddr);
+                       psDevInfo->psSystemBuffer[i].sPageAlignSysAddr.uiAddr = (psDevInfo->psSystemBuffer[i].sSysAddr.uiAddr & 0xFFFFF000);
+                       psDevInfo->psSystemBuffer[i].psSyncData = IMG_NULL;
+               }
++              psDevInfo->sBufferInfo.ui32BufferCount = psDevInfo->ui32NumBuffers;
++
+               
+               psDevInfo->sBCJTable.ui32TableSize = sizeof(PVRSRV_BC_SRV2BUFFER_KMJTABLE);
+@@ -234,16 +252,6 @@
+               {
+                       return PVRSRV_ERROR_DEVICE_REGISTER_FAILED;
+               }
+-
+-              
+-
+-              psDevInfo->sBufferInfo.pixelformat = BC_EXAMPLE_PIXELFORMAT;
+-              psDevInfo->sBufferInfo.ui32Width = BC_EXAMPLE_WIDTH;
+-              psDevInfo->sBufferInfo.ui32Height = BC_EXAMPLE_HEIGHT;
+-              psDevInfo->sBufferInfo.ui32ByteStride = BC_EXAMPLE_STRIDE;              
+-              psDevInfo->sBufferInfo.ui32BufferDeviceID = BC_EXAMPLE_DEVICEID;
+-              psDevInfo->sBufferInfo.ui32Flags = PVRSRV_BC_FLAGS_YUVCSC_FULL_RANGE | PVRSRV_BC_FLAGS_YUVCSC_BT601;
+-              psDevInfo->sBufferInfo.ui32BufferCount = psDevInfo->ui32NumBuffers;
+       }
+       
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h
+--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example.h   2008-12-18 15:47:29.000000000 +0100
+@@ -39,11 +39,32 @@
+ #define BC_EXAMPLE_NUM_BUFFERS        3
+-#define BC_EXAMPLE_WIDTH              (160)
++#define YUV420 1
++#ifdef YUV420
++
++#define BC_EXAMPLE_WIDTH              (320)
+ #define BC_EXAMPLE_HEIGHT             (160)
+-#define BC_EXAMPLE_STRIDE             (160*2)
++#define BC_EXAMPLE_STRIDE             (320)
++#define BC_EXAMPLE_PIXELFORMAT        (PVRSRV_PIXEL_FORMAT_YUV420)
++
++#else
++#ifdef YUV422
++
++#define BC_EXAMPLE_WIDTH              (320)
++#define BC_EXAMPLE_HEIGHT             (160)
++#define BC_EXAMPLE_STRIDE             (320*2)
+ #define BC_EXAMPLE_PIXELFORMAT        (PVRSRV_PIXEL_FORMAT_YVYU)
++#else
++
++#define BC_EXAMPLE_WIDTH              (320)
++#define BC_EXAMPLE_HEIGHT             (160)
++#define BC_EXAMPLE_STRIDE             (320*2)
++#define BC_EXAMPLE_PIXELFORMAT        (PVRSRV_PIXEL_FORMAT_RGB565)
++
++#endif
++#endif
++
+ #define BC_EXAMPLE_DEVICEID            0
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c
+--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c     2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_linux.c     2008-12-18 15:47:29.000000000 +0100
+@@ -38,11 +38,10 @@
+ #include "bufferclass_example.h"
+ #include "bufferclass_example_linux.h"
++#include "pvrmodule.h"
+ #define DEVNAME       "bc_example"
+-MODULE_AUTHOR("Imagination Technologies Ltd. <gpl-support@imgtec.com>");
+-MODULE_LICENSE("GPL");
+ MODULE_SUPPORTED_DEVICE(DEVNAME);
+ int BC_Example_Bridge(struct inode *inode, struct file *file, unsigned int cmd, unsigned long arg);
+@@ -259,22 +258,11 @@
+       {
+               return PVRSRV_ERROR_OUT_OF_MEMORY;
+       }
+-      else
+-      {
+-              IMG_VOID *pvPage;
+-              IMG_VOID *pvEnd = pvLinAddr + ui32Size;
+-
+-              for(pvPage = pvLinAddr; pvPage < pvEnd;  pvPage += PAGE_SIZE)
+-              {
+-                      SetPageReserved(virt_to_page(pvPage));
+-              }
+-              pPhysAddr->uiAddr = dma;
+-              *pLinAddr = pvLinAddr;
++      pPhysAddr->uiAddr = dma;
++      *pLinAddr = pvLinAddr;
+-              return PVRSRV_OK;
+-      }
+-      return PVRSRV_ERROR_OUT_OF_MEMORY;
++      return PVRSRV_OK;
+ #endif
+ }
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c
+--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/bufferclass_example_private.c   2008-12-18 15:47:29.000000000 +0100
+@@ -26,6 +26,43 @@
+ #include "bufferclass_example.h"
++void FillYUV420Image(void *pvDest, int width, int height, int bytestride)
++{
++      static int iPhase = 0;
++      int i, j;
++      unsigned char u,v,y;
++      unsigned char *pui8y = (unsigned char *)pvDest;
++      unsigned short *pui16uv;
++      unsigned int count = 0;
++
++      for(j=0;j<height;j++)
++      {
++              for(i=0;i<width;i++)
++              {
++                      y = (((i+iPhase)>>6)%(2)==0)? 0x7f:0x00;
++
++                      pui8y[count++] = y;
++              }
++      }
++
++      pui16uv = (unsigned short *)((unsigned char *)pvDest + (width * height));
++      count = 0;
++
++      for(j=0;j<height;j+=2)
++      {
++              for(i=0;i<width;i+=2)
++              {
++                      u = (j<(height/2))? ((i<(width/2))? 0xFF:0x33) : ((i<(width/2))? 0x33:0xAA);
++                      v = (j<(height/2))? ((i<(width/2))? 0xAC:0x0) : ((i<(width/2))? 0x03:0xEE);
++
++                      
++                      pui16uv[count++] = (v << 8) | u;
++
++              }
++      }
++
++      iPhase++;
++}
+ void FillYUV422Image(void *pvDest, int width, int height, int bytestride)
+ {
+@@ -37,12 +74,12 @@
+       for(y=0;y<height;y++)
+       {
+-              for(x=0;x<width >> 1;x++)
++              for(x=0;x<width;x+=2)
+               {
+-                      u = (y<(height/2))? ((x<(width/4))? 0xFF:0x33) : ((x<(width/4))? 0x33:0xAA);
+-                      v = (y<(height/2))? ((x<(width/4))? 0xAA:0x0) : ((x<(width/4))? 0x03:0xEE);
++                      u = (y<(height/2))? ((x<(width/2))? 0xFF:0x33) : ((x<(width/2))? 0x33:0xAA);
++                      v = (y<(height/2))? ((x<(width/2))? 0xAA:0x0) : ((x<(width/2))? 0x03:0xEE);
+-                      y0 = y1 = (((x+iPhase)>>4)%(2)==0)? 0x7f:0x00;
++                      y0 = y1 = (((x+iPhase)>>6)%(2)==0)? 0x7f:0x00;
+                       
+                       pui32yuv[count++] = (y1 << 24) | (v << 16) | (y0 << 8) | u;
+@@ -115,19 +152,36 @@
+       
+       psSyncData = psBuffer->psSyncData;
+-      
+       if(psSyncData)
+       {
++              
++              if(psSyncData->ui32ReadOpsPending != psSyncData->ui32ReadOpsComplete)
++              {
++                      return -1;
++              }
++
++              
+               psSyncData->ui32WriteOpsPending++;
+       }
+-      if(psBufferInfo->pixelformat == PVRSRV_PIXEL_FORMAT_RGB565)
+-      {
+-              FillRGB565Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE);
+-      }
+-      else
++      switch(psBufferInfo->pixelformat)
+       {
+-              FillYUV422Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE);
++              case PVRSRV_PIXEL_FORMAT_RGB565:
++              default:
++              {
++                      FillRGB565Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE);
++                      break;
++              }
++              case PVRSRV_PIXEL_FORMAT_YVYU:
++              {
++                      FillYUV422Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE);
++                      break;
++              }
++              case PVRSRV_PIXEL_FORMAT_YUV420:
++              {
++                      FillYUV420Image(psBuffer->sCPUVAddr, BC_EXAMPLE_WIDTH, BC_EXAMPLE_HEIGHT, BC_EXAMPLE_STRIDE);
++                      break;
++              }
+       }
+       
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile
+--- git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile 1970-01-01 01:00:00.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/bufferclass_example/kbuild/Makefile 2008-12-18 15:47:29.000000000 +0100
+@@ -0,0 +1,40 @@
++#
++# Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
++# 
++# This program is free software; you can redistribute it and/or modify it
++# under the terms and conditions of the GNU General Public License,
++# version 2, as published by the Free Software Foundation.
++# 
++# This program is distributed in the hope it will be useful but, except 
++# as otherwise stated in writing, without any warranty; without even the 
++# implied warranty of merchantability or fitness for a particular purpose. 
++# See the GNU General Public License for more details.
++# 
++# You should have received a copy of the GNU General Public License along with
++# this program; if not, write to the Free Software Foundation, Inc.,
++# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# The full GNU General Public License is included in this distribution in
++# the file called "COPYING".
++#
++# Contact Information:
++# Imagination Technologies Ltd. <gpl-support@imgtec.com>
++# Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
++# 
++#
++#
++
++MODULE                = bc_example
++
++INCLUDES =    -I$(EURASIAROOT)/include4 \
++              -I$(EURASIAROOT)/services4/include \
++              -I$(EURASIAROOT)/services4/system/$(PVR_SYSTEM) \
++              -I$(EURASIAROOT)/services4/system/include \
++
++SOURCES =     ../bufferclass_example.c \
++                      ../bufferclass_example_linux.c \
++                      ../bufferclass_example_private.c
++
++
++
++
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile
+--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile   1970-01-01 01:00:00.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/kbuild/Makefile   2008-12-18 15:47:29.000000000 +0100
+@@ -0,0 +1,39 @@
++#
++# Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
++# 
++# This program is free software; you can redistribute it and/or modify it
++# under the terms and conditions of the GNU General Public License,
++# version 2, as published by the Free Software Foundation.
++# 
++# This program is distributed in the hope it will be useful but, except 
++# as otherwise stated in writing, without any warranty; without even the 
++# implied warranty of merchantability or fitness for a particular purpose. 
++# See the GNU General Public License for more details.
++# 
++# You should have received a copy of the GNU General Public License along with
++# this program; if not, write to the Free Software Foundation, Inc.,
++# 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
++# 
++# The full GNU General Public License is included in this distribution in
++# the file called "COPYING".
++#
++# Contact Information:
++# Imagination Technologies Ltd. <gpl-support@imgtec.com>
++# Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
++# 
++#
++#
++
++MODULE                = omaplfb
++
++INCLUDES =    -I$(EURASIAROOT)/include4 \
++              -I$(EURASIAROOT)/services4/include \
++              -I$(EURASIAROOT)/services4/system/$(PVR_SYSTEM) \
++              -I$(EURASIAROOT)/services4/system/include \
++
++SOURCES       =       ../omaplfb_displayclass.c \
++                      ../omaplfb_linux.c
++
++
++
++
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c
+--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c    2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_displayclass.c    2008-12-18 15:47:29.000000000 +0100
+@@ -41,6 +41,7 @@
+ #define DISPLAY_DEVICE_NAME "PowerVR OMAP Linux Display Driver"
+ #define       DRIVER_PREFIX   "omaplfb"
++//extern int omap2_disp_get_output_dev(int);
+ static IMG_VOID *gpvAnchor;
+@@ -57,8 +58,6 @@
+                                                  PVR_POWER_STATE      eCurrentPowerState);
+ #endif
+-extern void omap_dispc_set_plane_base(int plane, IMG_UINT32 phys_addr);
+-
+ static PFN_DC_GET_PVRJTABLE pfnGetPVRJTable = IMG_NULL;
+ static OMAPLFB_DEVINFO * GetAnchorPtr(IMG_VOID)
+@@ -124,28 +123,53 @@
+ static PVRSRV_ERROR Flip(OMAPLFB_SWAPCHAIN *psSwapChain,
+                                                 IMG_UINT32 aPhyAddr)
+ {
+-      if (1 /* omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD */)
++      IMG_UINT32 control;
++      OMAPLFB_DEVINFO *psDevInfo;
++
++      psDevInfo = GetAnchorPtr();     
++
++      if (1) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD)
+       {
+-                omap_dispc_set_plane_base(0, aPhyAddr);
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA0, aPhyAddr);
++
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA1, aPhyAddr);
++      
++              control = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_CONTROL);
++              control |= OMAP_CONTROL_GOLCD;
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_CONTROL, control);
++              
+               return PVRSRV_OK;
+       }
+       else
+-      if (0 /*omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_TV*/)
++      if (0) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_TV)
+       {
+-                omap_dispc_set_plane_base(0, aPhyAddr);
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA0, aPhyAddr);
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_GFX_BA1, aPhyAddr + psDevInfo->sFBInfo.ui32ByteStride);
++      
++              control = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_CONTROL);
++              control |= OMAP_CONTROL_GODIGITAL;
++              OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_CONTROL, control);
++              
+               return PVRSRV_OK;
+       }
+-
++      
+       return PVRSRV_ERROR_INVALID_PARAMS;
+ }
+ static IMG_VOID EnableVSyncInterrupt(OMAPLFB_SWAPCHAIN *psSwapChain)
+ {
+-
++      
++      IMG_UINT32 ui32InterruptEnable  = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_IRQENABLE);
++      ui32InterruptEnable |= OMAPLCD_INTMASK_VSYNC;
++      OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_IRQENABLE, ui32InterruptEnable );
+ }
+ static IMG_VOID DisableVSyncInterrupt(OMAPLFB_SWAPCHAIN *psSwapChain)
+ {
++      
++      IMG_UINT32 ui32InterruptEnable = OMAPLFBVSyncReadReg(psSwapChain, OMAPLCD_IRQENABLE);
++      ui32InterruptEnable &= ~(OMAPLCD_INTMASK_VSYNC);
++      OMAPLFBVSyncWriteReg(psSwapChain, OMAPLCD_IRQENABLE, ui32InterruptEnable);
+ }
+ static PVRSRV_ERROR OpenDCDevice(IMG_UINT32 ui32DeviceID,
+@@ -169,6 +193,7 @@
+ #endif
+       );
++      
+       memset(&psDevInfo->sLINNotifBlock, 0, sizeof(psDevInfo->sLINNotifBlock));
+       psDevInfo->sLINNotifBlock.notifier_call = FrameBufferEvents;
+@@ -363,6 +388,7 @@
+       PVR_UNREFERENCED_PARAMETER(ui32OEMFlags);       
+       PVR_UNREFERENCED_PARAMETER(pui32SwapChainID);
+       
++      
+       if(!hDevice 
+       || !psDstSurfAttrib 
+       || !psSrcSurfAttrib 
+@@ -399,6 +425,7 @@
+       || psDstSurfAttrib->sDims.ui32Width != psDevInfo->sDisplayDim.ui32Width
+       || psDstSurfAttrib->sDims.ui32Height != psDevInfo->sDisplayDim.ui32Height)
+       {
++              
+               return PVRSRV_ERROR_INVALID_PARAMS;
+       }               
+@@ -407,6 +434,7 @@
+       || psDstSurfAttrib->sDims.ui32Width != psSrcSurfAttrib->sDims.ui32Width
+       || psDstSurfAttrib->sDims.ui32Height != psSrcSurfAttrib->sDims.ui32Height)
+       {
++              
+               return PVRSRV_ERROR_INVALID_PARAMS;
+       }               
+@@ -467,12 +495,21 @@
+       }
+       
++      psSwapChain->pvRegs = ioremap(psDevInfo->psLINFBInfo->fix.mmio_start, psDevInfo->psLINFBInfo->fix.mmio_len);
++
++      if (psSwapChain->pvRegs == IMG_NULL)
++      {
++              printk(KERN_WARNING DRIVER_PREFIX ": Couldn't map registers needed for flipping\n");
++              goto ErrorFreeVSyncItems;
++      }
++
++      
+       unblank_display(psDevInfo);
+       if (OMAPLFBInstallVSyncISR(psSwapChain) != PVRSRV_OK)
+       {
+               printk(KERN_WARNING DRIVER_PREFIX ": ISR handler failed to register\n");
+-              goto ErrorFreeVSyncItems;
++              goto ErrorUnmapRegisters;
+       }
+               
+       EnableVSyncInterrupt(psSwapChain);
+@@ -485,6 +522,8 @@
+       return PVRSRV_OK;
++ErrorUnmapRegisters:
++      iounmap(psSwapChain->pvRegs);
+ ErrorFreeVSyncItems:
+       OMAPLFBFreeKernelMem(psVSyncFlips);
+ ErrorFreeBuffers:
+@@ -590,6 +629,9 @@
+       }
+       
++      iounmap(psSwapChain->pvRegs);
++
++      
+       OMAPLFBFreeKernelMem(psSwapChain->psVSyncFlips);
+       OMAPLFBFreeKernelMem(psSwapChain->psBuffer);
+       OMAPLFBFreeKernelMem(psSwapChain);
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h
+--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h 2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb.h 2008-12-18 15:47:29.000000000 +0100
+@@ -121,6 +121,9 @@
+       IMG_UINT32 ui32RemoveIndex;
+       
++      IMG_VOID *pvRegs;
++
++      
+       PVRSRV_DC_DISP2SRV_KMJTABLE     *psPVRJTable;
+ } OMAPLFB_SWAPCHAIN;
+@@ -194,8 +197,8 @@
+ IMG_VOID *OMAPLFBAllocKernelMem(IMG_UINT32 ui32Size);
+ IMG_VOID OMAPLFBFreeKernelMem(IMG_VOID *pvMem);
+-IMG_VOID OMAPLFBWriteReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value);
+-IMG_UINT32 OMAPLFBReadReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset);
++IMG_VOID OMAPLFBVSyncWriteReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value);
++IMG_UINT32 OMAPLFBVSyncReadReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset);
+ PVRSRV_ERROR OMAPLFBGetLibFuncAddr(IMG_CHAR *szFunctionName, PFN_DC_GET_PVRJTABLE *ppfnFuncTable);
+ PVRSRV_ERROR OMAPLFBInstallVSyncISR (OMAPLFB_SWAPCHAIN *psSwapChain);
+ PVRSRV_ERROR OMAPLFBUninstallVSyncISR(OMAPLFB_SWAPCHAIN *psSwapChain);
+diff -Nurd git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c
+--- git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/3rdparty/dc_omap3430_linux/omaplfb_linux.c   2008-12-18 15:47:29.000000000 +0100
+@@ -101,28 +100,57 @@
+ }
+ static void
+-OMAPLFBVSyncISR(void *arg)
++OMAPLFBVSyncISR(void *arg, struct pt_regs *regs)
+ {
+-      (void) OMAPLFBVSyncIHandler((OMAPLFB_SWAPCHAIN *)arg);
++      OMAPLFB_SWAPCHAIN *psSwapChain= (OMAPLFB_SWAPCHAIN *)arg;
++      
++      (void) OMAPLFBVSyncIHandler(psSwapChain);
+ }
+-#define DISPC_IRQ_VSYNC 0x0002
+-
+ PVRSRV_ERROR OMAPLFBInstallVSyncISR(OMAPLFB_SWAPCHAIN *psSwapChain)
+ {
+-        if (omap_dispc_request_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR, psSwapChain) != 0)
+-            return PVRSRV_ERROR_OUT_OF_MEMORY; /* not worth a proper mapping */
+-
++      if (1) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_LCD)
++       {
++              if (omap_dispc_request_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR,
++                                      psSwapChain) != 0)
++              {
++                      printk("request OMAPLCD IRQ failed");
++                      return PVRSRV_ERROR_INIT_FAILURE;
++              }
++      }
++      else
++      if (0) //omap2_disp_get_output_dev(OMAP2_GRAPHICS) == OMAP2_OUTPUT_TV)
++      {
++              if (omap_dispc_request_irq(DISPC_IRQSTATUS_EVSYNC_EVEN|DISPC_IRQSTATUS_EVSYNC_ODD, OMAPLFBVSyncISR, psSwapChain) != 0)
++              {
++                      printk("request OMAPLCD IRQ failed");
++                      return PVRSRV_ERROR_INIT_FAILURE;
++              }
++      }
++              
+       return PVRSRV_OK;
+ }
+ PVRSRV_ERROR OMAPLFBUninstallVSyncISR (OMAPLFB_SWAPCHAIN *psSwapChain)
+ {
+-        omap_dispc_free_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR, psSwapChain);
++      omap_dispc_free_irq(DISPC_IRQ_VSYNC, OMAPLFBVSyncISR, psSwapChain);
++              
++      return PVRSRV_OK;               
++}
+-      return PVRSRV_OK;
++IMG_VOID OMAPLFBVSyncWriteReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset, IMG_UINT32 ui32Value)
++{
++      IMG_VOID *pvRegAddr = (IMG_VOID *)((IMG_UINT8 *)psSwapChain->pvRegs + ui32Offset);
++
++      
++      writel(ui32Value, pvRegAddr);
++}
++
++IMG_UINT32 OMAPLFBVSyncReadReg(OMAPLFB_SWAPCHAIN *psSwapChain, IMG_UINT32 ui32Offset)
++{
++      return readl((IMG_UINT8 *)psSwapChain->pvRegs + ui32Offset);
+ }
+ module_init(OMAPLFB_Init);
+diff -Nurd git/drivers/gpu/pvr/services4/include/pvr_bridge.h git/drivers/gpu/pvr/services4/include/pvr_bridge.h
+--- git/drivers/gpu/pvr/services4/include/pvr_bridge.h 2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/include/pvr_bridge.h 2008-12-18 15:47:29.000000000 +0100
+@@ -202,14 +202,14 @@
+ #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST  (PVRSRV_BRIDGE_INITSRV_CMD_LAST+1)      
+ #define PVRSRV_BRIDGE_EVENT_OBJECT_WAIT                       PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+0)
+-#define PVRSRV_BRIDGE_EVENT_OBJECT_CONNECT            PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1)
+-#define PVRSRV_BRIDGE_EVENT_OBJECT_DISCONNECT PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
++#define PVRSRV_BRIDGE_EVENT_OBJECT_OPEN                       PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+1)
++#define PVRSRV_BRIDGE_EVENT_OBJECT_CLOSE              PVRSRV_IOWR(PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
+ #define PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST           (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_FIRST+2)
+       
+ #define PVRSRV_BRIDGE_LAST_NON_DEVICE_CMD             (PVRSRV_BRIDGE_EVENT_OBJECT_CMD_LAST+1)
+-#define PVRSRV_KERNAL_MODE_CLIENT                             1
++#define PVRSRV_KERNEL_MODE_CLIENT                             1
+ typedef struct PVRSRV_BRIDGE_RETURN_TAG
+ {
+@@ -716,7 +716,7 @@
+ typedef struct PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR_TAG
+ {
+       IMG_UINT32 ui32BridgeFlags; 
+-      IMG_HANDLE *hKernelMemInfo;
++      IMG_HANDLE hKernelMemInfo;
+       IMG_UINT32 ui32Offset;
+       IMG_DEV_PHYADDR sPDDevPAddr;
+ }PVRSRV_BRIDGE_IN_PDUMP_DUMPPDDEVPADDR;
+@@ -1302,9 +1302,25 @@
+ {
+       IMG_UINT32 ui32BridgeFlags; 
+       IMG_HANDLE      hOSEventKM;
+-      IMG_UINT32  ui32MSTimeout;
+ } PVRSRV_BRIDGE_IN_EVENT_OBJECT_WAIT;
++typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN_TAG
++{
++      PVRSRV_EVENTOBJECT sEventObject;
++} PVRSRV_BRIDGE_IN_EVENT_OBJECT_OPEN;
++
++typedef struct        PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN_TAG
++{
++      IMG_HANDLE hOSEvent;
++      PVRSRV_ERROR eError;
++} PVRSRV_BRIDGE_OUT_EVENT_OBJECT_OPEN;
++
++typedef struct PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE_TAG
++{
++      PVRSRV_EVENTOBJECT sEventObject;
++      IMG_HANDLE hOSEventKM;
++} PVRSRV_BRIDGE_IN_EVENT_OBJECT_CLOSE;
++
+ #if defined (__cplusplus)
+ }
+ #endif
+diff -Nurd git/drivers/gpu/pvr/services4/include/servicesint.h git/drivers/gpu/pvr/services4/include/servicesint.h
+--- git/drivers/gpu/pvr/services4/include/servicesint.h        2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/include/servicesint.h        2008-12-18 15:47:29.000000000 +0100
+@@ -38,16 +38,6 @@
+ #define DRIVERNAME_MAXLENGTH  (100)
+-#define EVENTOBJNAME_MAXLENGTH (50)
+-
+-
+-typedef struct _PVRSRV_EVENTOBJECT_
+-{
+-      
+-      IMG_CHAR        szName[EVENTOBJNAME_MAXLENGTH];
+-      
+-      IMG_HANDLE      hOSEventKM;
+-} PVRSRV_EVENTOBJECT;
+ typedef struct _PVRSRV_KERNEL_MEM_INFO_
+@@ -93,6 +83,13 @@
+ } PVRSRV_KERNEL_SYNC_INFO;
++typedef struct _PVRSRV_DEVICE_SYNC_OBJECT_
++{
++      IMG_UINT32                      ui32ReadOpPendingVal;
++      IMG_DEV_VIRTADDR        sReadOpsCompleteDevVAddr;
++      IMG_UINT32                      ui32WriteOpPendingVal;
++      IMG_DEV_VIRTADDR        sWriteOpsCompleteDevVAddr;
++} PVRSRV_DEVICE_SYNC_OBJECT;
+ typedef struct _PVRSRV_SYNC_OBJECT
+ {
+diff -Nurd git/drivers/gpu/pvr/services4/include/sgx_bridge.h git/drivers/gpu/pvr/services4/include/sgx_bridge.h
+--- git/drivers/gpu/pvr/services4/include/sgx_bridge.h 2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/include/sgx_bridge.h 2008-12-18 15:47:29.000000000 +0100
+@@ -70,8 +70,16 @@
+ #define PVRSRV_BRIDGE_SGX_REGISTER_HW_RENDER_CONTEXT  PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+20)
+ #define PVRSRV_BRIDGE_SGX_FLUSH_HW_RENDER_TARGET      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+21)
+ #define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_RENDER_CONTEXT        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+22)
++#if defined(SGX_FEATURE_2D_HARDWARE)
++#define PVRSRV_BRIDGE_SGX_SUBMIT2D                                    PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+23)
++#define PVRSRV_BRIDGE_SGX_REGISTER_HW_2D_CONTEXT      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+24)
++#define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_2D_CONTEXT    PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+25)
++#endif
++#define PVRSRV_BRIDGE_SGX_REGISTER_HW_TRANSFER_CONTEXT        PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+26)
++#define PVRSRV_BRIDGE_SGX_UNREGISTER_HW_TRANSFER_CONTEXT      PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+27)
++#define PVRSRV_BRIDGE_SGX_READ_HWPERF_COUNTERS                PVRSRV_IOWR(PVRSRV_BRIDGE_SGX_CMD_BASE+28)
+-#define PVRSRV_BRIDGE_LAST_SGX_CMD (PVRSRV_BRIDGE_SGX_CMD_BASE+22)
++#define PVRSRV_BRIDGE_LAST_SGX_CMD (PVRSRV_BRIDGE_SGX_CMD_BASE+28)
+  
+ typedef struct PVRSRV_BRIDGE_IN_GETPHYSPAGEADDR
+@@ -161,8 +169,18 @@
+ {
+       IMG_UINT32                              ui32BridgeFlags; 
+       IMG_HANDLE                              hDevCookie;
+-      IMG_DEV_VIRTADDR                sHWRenderContextDevVAddr;
++      PVRSRV_TRANSFER_SGX_KICK                        sKick;
+ }PVRSRV_BRIDGE_IN_SUBMITTRANSFER;
++
++#if defined(SGX_FEATURE_2D_HARDWARE)
++ 
++typedef struct PVRSRV_BRIDGE_IN_SUBMIT2D_TAG
++{
++      IMG_UINT32                              ui32BridgeFlags; 
++      IMG_HANDLE                              hDevCookie;
++      PVRSRV_2D_SGX_KICK                              sKick;
++} PVRSRV_BRIDGE_IN_SUBMIT2D;
++#endif
+ #endif
+  
+@@ -330,6 +348,33 @@
+       IMG_HANDLE hHWRenderContext;
+ }PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_RENDER_CONTEXT;
++typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT_TAG
++{
++      IMG_UINT32 ui32BridgeFlags; 
++      IMG_HANDLE hDevCookie;
++      IMG_HANDLE hHWRenderContext;
++}PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT;
++
++typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG
++{
++      IMG_UINT32 ui32BridgeFlags; 
++      IMG_HANDLE hDevCookie;
++      IMG_DEV_VIRTADDR sHWTransferContextDevVAddr;
++}PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_TRANSFER_CONTEXT;
++
++typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT_TAG
++{
++      PVRSRV_ERROR eError;
++      IMG_HANDLE hHWTransferContext;
++}PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_TRANSFER_CONTEXT;
++
++typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT_TAG
++{
++      IMG_UINT32 ui32BridgeFlags; 
++      IMG_HANDLE hDevCookie;
++      IMG_HANDLE hHWTransferContext;
++}PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_TRANSFER_CONTEXT;
++
+ typedef struct PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET_TAG
+ {
+       IMG_UINT32 ui32BridgeFlags; 
+@@ -337,18 +382,54 @@
+       IMG_DEV_VIRTADDR sHWRTDataSetDevVAddr;
+ }PVRSRV_BRIDGE_IN_SGX_FLUSH_HW_RENDER_TARGET;
+-typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT_TAG
++ 
++#if defined(SGX_FEATURE_2D_HARDWARE)
++typedef struct PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT_TAG
+ {
+       IMG_UINT32 ui32BridgeFlags; 
+       IMG_HANDLE hDevCookie;
+-      IMG_HANDLE hHWRenderContext;
+-}PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_RENDER_CONTEXT;
++      IMG_DEV_VIRTADDR sHW2DContextDevVAddr;
++}PVRSRV_BRIDGE_IN_SGX_REGISTER_HW_2D_CONTEXT;
++
++typedef struct PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT_TAG
++{
++      PVRSRV_ERROR eError;
++      IMG_HANDLE hHW2DContext;
++}PVRSRV_BRIDGE_OUT_SGX_REGISTER_HW_2D_CONTEXT;
++
++typedef struct PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT_TAG
++{
++      IMG_UINT32 ui32BridgeFlags; 
++      IMG_HANDLE hDevCookie;
++      IMG_HANDLE hHW2DContext;
++}PVRSRV_BRIDGE_IN_SGX_UNREGISTER_HW_2D_CONTEXT;
+- 
+-#if defined(SGX_FEATURE_2D_HARDWARE)
+ #define       SGX2D_MAX_BLT_CMD_SIZ           256     
+ #endif 
++
++typedef struct PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_COUNTERS_TAG
++{
++      IMG_UINT32              ui32BridgeFlags; 
++      IMG_HANDLE              hDevCookie;
++      IMG_UINT32              ui32PerfReg;
++      IMG_BOOL                bNewPerf;
++      IMG_UINT32              ui32NewPerf;
++      IMG_UINT32              ui32NewPerfReset;
++      IMG_UINT32              ui32PerfCountersReg;
++} PVRSRV_BRIDGE_IN_SGX_READ_HWPERF_COUNTERS;
++
++typedef struct PVRSRV_BRIDGE_OUT_SGX_READ_HWPERF_COUNTERS_TAG
++{
++      PVRSRV_ERROR    eError;
++      IMG_UINT32              ui32OldPerf;
++      IMG_UINT32              aui32Counters[PVRSRV_SGX_HWPERF_NUM_COUNTERS];
++      IMG_UINT32              ui32KickTACounter;
++      IMG_UINT32              ui32KickTARenderCounter;
++      IMG_UINT32              ui32CPUTime;
++      IMG_UINT32              ui32SGXTime;
++} PVRSRV_BRIDGE_OUT_SGX_READ_HWPERF_COUNTERS;
++
+ #if defined (__cplusplus)
+ }
+ #endif
+diff -Nurd git/drivers/gpu/pvr/services4/include/sgx_bridge_km.h git/drivers/gpu/pvr/services4/include/sgx_bridge_km.h
+--- git/drivers/gpu/pvr/services4/include/sgx_bridge_km.h      2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/include/sgx_bridge_km.h      1970-01-01 01:00:00.000000000 +0100
+@@ -1,139 +0,0 @@
+-/**********************************************************************
+- *
+- * Copyright(c) 2008 Imagination Technologies Ltd. All rights reserved.
+- * 
+- * This program is free software; you can redistribute it and/or modify it
+- * under the terms and conditions of the GNU General Public License,
+- * version 2, as published by the Free Software Foundation.
+- * 
+- * This program is distributed in the hope it will be useful but, except 
+- * as otherwise stated in writing, without any warranty; without even the 
+- * implied warranty of merchantability or fitness for a particular purpose. 
+- * See the GNU General Public License for more details.
+- * 
+- * You should have received a copy of the GNU General Public License along with
+- * this program; if not, write to the Free Software Foundation, Inc.,
+- * 51 Franklin St - Fifth Floor, Boston, MA 02110-1301 USA.
+- * 
+- * The full GNU General Public License is included in this distribution in
+- * the file called "COPYING".
+- *
+- * Contact Information:
+- * Imagination Technologies Ltd. <gpl-support@imgtec.com>
+- * Home Park Estate, Kings Langley, Herts, WD4 8LZ, UK 
+- *
+- ******************************************************************************/
+-
+-#if !defined(__SGX_BRIDGE_KM_H__)
+-#define __SGX_BRIDGE_KM_H__
+-
+-#include "sgxapi_km.h"
+-#include "sgxinfo.h"
+-#include "sgxinfokm.h"
+-#include "sgx_bridge.h"
+-#include "pvr_bridge.h"
+-#include "perproc.h"
+-
+-#if defined (__cplusplus)
+-extern "C" {
+-#endif
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXSubmitTransferKM(IMG_HANDLE hDevHandle,
+-                                                               IMG_DEV_VIRTADDR sHWRenderContextDevVAddr);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXDoKickKM(IMG_HANDLE hDevHandle,
+-                                               PVR3DIF4_CCB_KICK *psCCBKick);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXGetPhysPageAddrKM(IMG_HANDLE hDevMemHeap,
+-                                                                IMG_DEV_VIRTADDR sDevVAddr,
+-                                                                IMG_DEV_PHYADDR *pDevPAddr,
+-                                                                IMG_CPU_PHYADDR *pCpuPAddr);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR IMG_CALLCONV SGXGetMMUPDAddrKM(IMG_HANDLE                hDevCookie,
+-                                                                                      IMG_HANDLE              hDevMemContext,
+-                                                                                      IMG_DEV_PHYADDR *psPDDevPAddr);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXGetClientInfoKM(IMG_HANDLE                            hDevCookie,
+-                                                              PVR3DIF4_CLIENT_INFO*   psClientInfo);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXGetMiscInfoKM(PVRSRV_SGXDEV_INFO      *psDevInfo,
+-                                                        SGX_MISC_INFO                 *psMiscInfo);
+-
+-#if defined(SGX_FEATURE_2D_HARDWARE)
+-IMG_IMPORT
+-PVRSRV_ERROR SGX2DQueueBlitKM(PVRSRV_SGXDEV_INFO              *psDevInfo,
+-                                                        PVRSRV_KERNEL_SYNC_INFO       *psDstSync,
+-                                                        IMG_UINT32            ui32NumSrcSyncs,
+-                                                        PVRSRV_KERNEL_SYNC_INFO *apsSrcSync[],
+-                                                        IMG_UINT32            ui32DataByteSize,
+-                                                        IMG_UINT32            *pui32BltData);
+-
+-#if defined(SGX2D_DIRECT_BLITS)
+-IMG_IMPORT
+-PVRSRV_ERROR SGX2DDirectBlitKM(PVRSRV_SGXDEV_INFO     *psDevInfo,
+-                                                         IMG_UINT32                   ui32DataByteSize,
+-                                                         IMG_UINT32                   *pui32BltData);
+-#endif 
+-#endif 
+-
+-#if defined(SGX_FEATURE_2D_HARDWARE) || defined(PVR2D_ALT_2DHW)
+-IMG_IMPORT
+-PVRSRV_ERROR SGX2DQueryBlitsCompleteKM(PVRSRV_SGXDEV_INFO             *psDevInfo,
+-                                                                         PVRSRV_KERNEL_SYNC_INFO      *psSyncInfo,
+-                                                                         IMG_BOOL bWaitForComplete);
+-#endif 
+-
+-IMG_IMPORT
+-PVRSRV_ERROR SGXGetInfoForSrvinitKM(IMG_HANDLE hDevHandle,
+-                                                                      SGX_BRIDGE_INFO_FOR_SRVINIT *psInitInfo);
+-
+-IMG_IMPORT
+-PVRSRV_ERROR DevInitSGXPart2KM(PVRSRV_PER_PROCESS_DATA *psPerProc,
+-                                                         IMG_HANDLE hDevHandle,
+-                                                         SGX_BRIDGE_INIT_INFO *psInitInfo);
+-
+-IMG_IMPORT PVRSRV_ERROR
+-SGXFindSharedPBDescKM(IMG_HANDLE hDevCookie,
+-                                        IMG_UINT32 ui32TotalPBSize,
+-                                        IMG_HANDLE *phSharedPBDesc,
+-                                        PVRSRV_KERNEL_MEM_INFO **ppsSharedPBDescKernelMemInfo,
+-                                        PVRSRV_KERNEL_MEM_INFO **ppsHWPBDescKernelMemInfo,
+-                                        PVRSRV_KERNEL_MEM_INFO **ppsBlockKernelMemInfo,
+-                                        PVRSRV_KERNEL_MEM_INFO ***pppsSharedPBDescSubKernelMemInfos,
+-                                        IMG_UINT32 *ui32SharedPBDescSubKernelMemInfosCount);
+-
+-IMG_IMPORT PVRSRV_ERROR
+-SGXUnrefSharedPBDescKM(IMG_HANDLE hSharedPBDesc);
+-
+-IMG_IMPORT PVRSRV_ERROR
+-SGXAddSharedPBDescKM(IMG_HANDLE hDevCookie,
+-                                       PVRSRV_KERNEL_MEM_INFO *psSharedPBDescKernelMemInfo,
+-                                       PVRSRV_KERNEL_MEM_INFO *psHWPBDescKernelMemInfo,
+-                                       PVRSRV_KERNEL_MEM_INFO *psBlockKernelMemInfo,
+-                                       IMG_UINT32 ui32TotalPBSize,
+-                                       IMG_HANDLE *phSharedPBDesc,
+-                                       PVRSRV_KERNEL_MEM_INFO **psSharedPBDescSubKernelMemInfos,
+-                                       IMG_UINT32 ui32SharedPBDescSubKernelMemInfosCount);
+-
+-
+-IMG_IMPORT PVRSRV_ERROR
+-SGXGetInternalDevInfoKM(IMG_HANDLE hDevCookie,
+-                                              PVR3DIF4_INTERNAL_DEVINFO *psSGXInternalDevInfo);
+-
+- 
+-#if defined(SGX_FEATURE_2D_HARDWARE)
+-#define       SGX2D_MAX_BLT_CMD_SIZ           256     
+-#endif 
+-
+-#if defined (__cplusplus)
+-}
+-#endif
+-
+-#endif 
+-
+diff -Nurd git/drivers/gpu/pvr/services4/include/sgxinfo.h git/drivers/gpu/pvr/services4/include/sgxinfo.h
+--- git/drivers/gpu/pvr/services4/include/sgxinfo.h    2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/include/sgxinfo.h    2008-12-18 15:47:29.000000000 +0100
+@@ -59,11 +59,16 @@
+ #if defined(SGX_SUPPORT_HWPROFILING)
+       IMG_HANDLE      hKernelHWProfilingMemInfo;
+ #endif
++#if defined(SUPPORT_SGX_HWPERF)
++      IMG_HANDLE      hKernelHWPerfCBMemInfo;
++#endif
+       IMG_UINT32 ui32EDMTaskReg0;
+       IMG_UINT32 ui32EDMTaskReg1;
+-      IMG_UINT32 ui32ClockGateMask;
++      IMG_UINT32 ui32ClkGateCtl;
++      IMG_UINT32 ui32ClkGateCtl2;
++      IMG_UINT32 ui32ClkGateStatusMask;
+       IMG_UINT32 ui32CacheControl;
+@@ -111,11 +116,13 @@
+ #define PVRSRV_CCBFLAGS_RASTERCMD                     0x1
+ #define PVRSRV_CCBFLAGS_TRANSFERCMD                   0x2
+ #define PVRSRV_CCBFLAGS_PROCESS_QUEUESCMD     0x3
++#if defined(SGX_FEATURE_2D_HARDWARE) 
++#define PVRSRV_CCBFLAGS_2DCMD                         0x4 
++#endif
+ #define PVRSRV_KICKFLAG_RENDER                                0x1
+ #define PVRSRV_KICKFLAG_PIXEL                         0x2
+-
+ #define       SGX_BIF_INVALIDATE_PTCACHE      0x1
+ #define       SGX_BIF_INVALIDATE_PDCACHE      0x2
+@@ -125,25 +132,40 @@
+       PVRSRV_SGX_COMMAND_TYPE         eCommand;
+       PVRSRV_SGX_COMMAND              sCommand;
+       IMG_HANDLE                      hCCBKernelMemInfo;
+-      IMG_HANDLE                      hDstKernelSyncInfo;
+-      IMG_UINT32                      ui32DstReadOpsPendingOffset;
+-      IMG_UINT32                      ui32DstWriteOpsPendingOffset;
++      IMG_HANDLE      hRenderSurfSyncInfo;
++
+       IMG_UINT32      ui32NumTAStatusVals;
+-      IMG_UINT32      aui32TAStatusValueOffset[SGX_MAX_TA_STATUS_VALS];
+       IMG_HANDLE      ahTAStatusSyncInfo[SGX_MAX_TA_STATUS_VALS];
+       IMG_UINT32      ui32Num3DStatusVals;
+-      IMG_UINT32      aui323DStatusValueOffset[SGX_MAX_3D_STATUS_VALS];
+       IMG_HANDLE      ah3DStatusSyncInfo[SGX_MAX_3D_STATUS_VALS];
+-#ifdef        NO_HARDWARE
+-      IMG_BOOL        bTerminate;
+-      IMG_HANDLE      hUpdateDstKernelSyncInfo;
++
++      IMG_BOOL        bFirstKickOrResume;
++#if (defined(NO_HARDWARE) || defined(PDUMP))
++      IMG_BOOL        bTerminateOrAbort;
++#endif
++      IMG_UINT32      ui32KickFlags;
++
++      
++      IMG_UINT32      ui32CCBOffset;
++
++      
++      IMG_UINT32      ui32NumSrcSyncs;
++      IMG_HANDLE      ahSrcKernelSyncInfo[SGX_MAX_SRC_SYNCS];
++
++      
++      IMG_BOOL        bTADependency;
++      IMG_HANDLE      hTA3DSyncInfo;
++
++      IMG_HANDLE      hTASyncInfo;
++      IMG_HANDLE      h3DSyncInfo;
++#if defined(NO_HARDWARE)
+       IMG_UINT32      ui32WriteOpsPendingVal;
+ #endif
+-      IMG_UINT32                                      ui32KickFlags;
+ } PVR3DIF4_CCB_KICK;
++
+ typedef struct _PVRSRV_SGX_HOST_CTL_
+ {     
+@@ -158,163 +180,25 @@
+       IMG_UINT32                              ui32ResManFlags;                
+       IMG_DEV_VIRTADDR                sResManCleanupData;             
++      
+       IMG_DEV_VIRTADDR                sTAHWPBDesc;            
+       IMG_DEV_VIRTADDR                s3DHWPBDesc;
++      IMG_DEV_VIRTADDR                sHostHWPBDesc;          
+-} PVRSRV_SGX_HOST_CTL;
+-
+-
+-#if defined(SUPPORT_HW_RECOVERY)
+-typedef struct _SGX_INIT_SCRIPT_DATA
+-{
+-      IMG_UINT32 asHWRecoveryData[SGX_MAX_DEV_DATA];
+-} SGX_INIT_SCRIPT_DATA;
+-#endif
+-
+-typedef struct _PVRSRV_SGXDEV_INFO_
+-{
+-      PVRSRV_DEVICE_TYPE              eDeviceType;
+-      PVRSRV_DEVICE_CLASS             eDeviceClass;
+-
+-      IMG_UINT8                               ui8VersionMajor;
+-      IMG_UINT8                               ui8VersionMinor;
+-      IMG_UINT32                              ui32CoreConfig;
+-      IMG_UINT32                              ui32CoreFlags;
+-
+-      
+-      IMG_PVOID                               pvRegsBaseKM;
+-      
+-
+-      
+-      IMG_HANDLE                              hRegMapping;
+-
+-      
+-      IMG_SYS_PHYADDR                 sRegsPhysBase;
+-      
+-      IMG_UINT32                              ui32RegSize;
+-
+-      
+-      IMG_UINT32                              ui32CoreClockSpeed;
+-
+-#if defined(SGX_FEATURE_2D_HARDWARE)
+-      
+-      SGX_SLAVE_PORT                  s2DSlavePortKM;
+-
+-      
+-      PVRSRV_RESOURCE                 s2DSlaveportResource;
+-
+-      
+-      IMG_UINT32                      ui322DFifoSize;
+-      IMG_UINT32                      ui322DFifoOffset;
+-      
+-      IMG_HANDLE                      h2DCmdCookie;
+-      
+-      IMG_HANDLE                      h2DQueue;
+-      IMG_BOOL                        b2DHWRecoveryInProgress;
+-      IMG_BOOL                        b2DHWRecoveryEndPending;
+-      IMG_UINT32                      ui322DCompletedBlits;
+-      IMG_BOOL                        b2DLockupSuspected;
+-#endif
+-      
+-    
+-      IMG_VOID                        *psStubPBDescListKM;
+-
+-
+-      
+-      IMG_DEV_PHYADDR                 sKernelPDDevPAddr;
+-
+-      IMG_VOID                                *pvDeviceMemoryHeap;
+-      PPVRSRV_KERNEL_MEM_INFO psKernelCCBMemInfo;                     
+-      PVRSRV_SGX_KERNEL_CCB   *psKernelCCB;                   
+-      PPVRSRV_SGX_CCB_INFO    psKernelCCBInfo;                
+-      PPVRSRV_KERNEL_MEM_INFO psKernelCCBCtlMemInfo;  
+-      PVRSRV_SGX_CCB_CTL              *psKernelCCBCtl;                
+-      PPVRSRV_KERNEL_MEM_INFO psKernelCCBEventKickerMemInfo; 
+-      IMG_UINT32                              *pui32KernelCCBEventKicker; 
+-      IMG_UINT32                              ui32TAKickAddress;              
+-      IMG_UINT32                              ui32TexLoadKickAddress; 
+-      IMG_UINT32                              ui32VideoHandlerAddress;
+-#if defined(SGX_SUPPORT_HWPROFILING)
+-      PPVRSRV_KERNEL_MEM_INFO psKernelHWProfilingMemInfo;
+-#endif
+-
+-      
+-      IMG_UINT32                              ui32ClientRefCount;
+-
+-      
+-      IMG_UINT32                              ui32CacheControl;
+-
+-      
+-
+-
+-      IMG_VOID                                *pvMMUContextList;
+-
+-      
+-      IMG_BOOL                                bForcePTOff;
+-
+-      IMG_UINT32                              ui32EDMTaskReg0;
+-      IMG_UINT32                              ui32EDMTaskReg1;
+-
+-      IMG_UINT32                              ui32ClockGateMask;
+-      SGX_INIT_SCRIPTS                sScripts;
+-#if defined(SUPPORT_HW_RECOVERY)
+-      SGX_INIT_SCRIPT_DATA    sScriptData;
+-#endif
+-              
+-      IMG_HANDLE                              hBIFResetPDOSMemHandle;
+-      IMG_DEV_PHYADDR                 sBIFResetPDDevPAddr;
+-      IMG_DEV_PHYADDR                 sBIFResetPTDevPAddr;
+-      IMG_DEV_PHYADDR                 sBIFResetPageDevPAddr;
+-      IMG_UINT32                              *pui32BIFResetPD;
+-      IMG_UINT32                              *pui32BIFResetPT;
+-
+-
+-
+-#if defined(SUPPORT_HW_RECOVERY)
+-      
+-      IMG_HANDLE                              hTimer;
+-      
+-      IMG_UINT32                              ui32TimeStamp;
+-#endif
+-
+-      
+-      IMG_UINT32                              ui32NumResets;
+-
+-      PVRSRV_KERNEL_MEM_INFO                  *psKernelSGXHostCtlMemInfo;
+-      PVRSRV_SGX_HOST_CTL                             *psSGXHostCtl; 
+-
+-      IMG_UINT32                              ui32Flags;
+-
+-      
+-      IMG_UINT32                              ui32RegFlags;
+-
+-      #if defined(PDUMP)
+-      PVRSRV_SGX_PDUMP_CONTEXT        sPDContext;
+-      #endif
++      IMG_UINT32                              ui32NumActivePowerEvents;        
+-#if defined(SUPPORT_SGX_MMU_DUMMY_PAGE)
+-      
+-      IMG_VOID                                *pvDummyPTPageCpuVAddr;
+-      IMG_DEV_PHYADDR                 sDummyPTDevPAddr;
+-      IMG_HANDLE                              hDummyPTPageOSMemHandle;
+-      IMG_VOID                                *pvDummyDataPageCpuVAddr;
+-      IMG_DEV_PHYADDR                 sDummyDataDevPAddr;
+-      IMG_HANDLE                              hDummyDataPageOSMemHandle;
++#if defined(SUPPORT_SGX_HWPERF)
++      IMG_UINT32                      ui32HWPerfFlags;                
+ #endif
+-      IMG_UINT32                              asSGXDevData[SGX_MAX_DEV_DATA]; 
+-#if defined(SUPPORT_SGX_EVENT_OBJECT)
+-      PVRSRV_EVENTOBJECT      *psSGXEventObject;
+-#endif
++       
++      IMG_UINT32                      ui32TimeWraps;
++} PVRSRV_SGX_HOST_CTL;
+-} PVRSRV_SGXDEV_INFO;
+ typedef struct _PVR3DIF4_CLIENT_INFO_
+ {
+-      IMG_VOID                                        *pvRegsBase;                    
+-      IMG_HANDLE                                      hBlockMapping;                  
+-      SGX_SLAVE_PORT                          s2DSlavePort;                   
+       IMG_UINT32                                      ui32ProcessID;                  
+       IMG_VOID                                        *pvProcess;                             
+       PVRSRV_MISC_INFO                        sMiscInfo;                              
+@@ -330,13 +214,9 @@
+ typedef struct _PVR3DIF4_INTERNAL_DEVINFO_
+ {
+       IMG_UINT32                      ui32Flags;
+-      IMG_BOOL                        bTimerEnable;
+       IMG_HANDLE                      hCtlKernelMemInfoHandle;
+       IMG_BOOL                        bForcePTOff;
+       IMG_UINT32                      ui32RegFlags;
+-#if defined(SUPPORT_SGX_EVENT_OBJECT)
+-      IMG_HANDLE                      hOSEvent;               
+-#endif
+ } PVR3DIF4_INTERNAL_DEVINFO;
+ typedef struct _PVRSRV_SGX_SHARED_CCB_
+@@ -371,5 +251,150 @@
+       #endif
+ }PVRSRV_SGX_CCB;
++typedef struct _CTL_STATUS_
++{
++      IMG_DEV_VIRTADDR        sStatusDevAddr;
++      IMG_UINT32              ui32StatusValue;
++} CTL_STATUS, *PCTL_STATUS;
++
++#if defined(TRANSFER_QUEUE)
++#define SGXTQ_MAX_STATUS 5
++typedef struct _PVR3DIF4_CMDTA_SHARED_
++{
++      IMG_UINT32                      ui32NumTAStatusVals;
++      IMG_UINT32                      ui32Num3DStatusVals;
++      
++      
++      IMG_UINT32                      ui32WriteOpsPendingVal;
++      IMG_DEV_VIRTADDR                sWriteOpsCompleteDevVAddr;
++      IMG_UINT32                      ui32ReadOpsPendingVal;
++      IMG_DEV_VIRTADDR                sReadOpsCompleteDevVAddr;
++
++      
++      IMG_UINT32                      ui32TQSyncWriteOpsPendingVal;
++      IMG_DEV_VIRTADDR                sTQSyncWriteOpsCompleteDevVAddr;
++      IMG_UINT32                      ui32TQSyncReadOpsPendingVal;
++      IMG_DEV_VIRTADDR                sTQSyncReadOpsCompleteDevVAddr;
++
++      
++      IMG_UINT32                      ui323DTQSyncWriteOpsPendingVal;
++      IMG_DEV_VIRTADDR                s3DTQSyncWriteOpsCompleteDevVAddr;
++      IMG_UINT32                      ui323DTQSyncReadOpsPendingVal;
++      IMG_DEV_VIRTADDR                s3DTQSyncReadOpsCompleteDevVAddr;
++      
++      
++      IMG_UINT32                      ui32NumSrcSyncs;
++      PVRSRV_DEVICE_SYNC_OBJECT       asSrcSyncs[SGX_MAX_SRC_SYNCS];
++
++      CTL_STATUS                      sCtlTAStatusInfo[SGX_MAX_TA_STATUS_VALS];
++      CTL_STATUS                      sCtl3DStatusInfo[SGX_MAX_3D_STATUS_VALS];
++      
++      PVRSRV_DEVICE_SYNC_OBJECT       sTA3DDependancy;        
++      
++} PVR3DIF4_CMDTA_SHARED;
++
++typedef struct _PVR3DIF4_TRANSFERCMD_SHARED_
++{
++      
++      
++      IMG_UINT32              ui32SrcReadOpPendingVal;
++      IMG_DEV_VIRTADDR        sSrcReadOpsCompleteDevAddr;
++      
++      IMG_UINT32              ui32SrcWriteOpPendingVal;
++      IMG_DEV_VIRTADDR        sSrcWriteOpsCompleteDevAddr;
++
++      
++      
++      IMG_UINT32              ui32DstReadOpPendingVal;
++      IMG_DEV_VIRTADDR        sDstReadOpsCompleteDevAddr;
++      
++      IMG_UINT32              ui32DstWriteOpPendingVal;
++      IMG_DEV_VIRTADDR        sDstWriteOpsCompleteDevAddr;
++
++      
++      IMG_UINT32              ui32TASyncWriteOpsPendingVal;
++      IMG_DEV_VIRTADDR        sTASyncWriteOpsCompleteDevVAddr;
++      IMG_UINT32              ui32TASyncReadOpsPendingVal;
++      IMG_DEV_VIRTADDR        sTASyncReadOpsCompleteDevVAddr;
++
++      
++      IMG_UINT32              ui323DSyncWriteOpsPendingVal;
++      IMG_DEV_VIRTADDR        s3DSyncWriteOpsCompleteDevVAddr;
++      IMG_UINT32              ui323DSyncReadOpsPendingVal;
++      IMG_DEV_VIRTADDR        s3DSyncReadOpsCompleteDevVAddr;
++
++      IMG_UINT32              ui32NumStatusVals;
++      CTL_STATUS              sCtlStatusInfo[SGXTQ_MAX_STATUS];
++
++      IMG_UINT32              ui32NumSrcSync;
++      IMG_UINT32              ui32NumDstSync;
++
++      IMG_DEV_VIRTADDR        sSrcWriteOpsDevVAddr[SGX_MAX_TRANSFER_SYNC_OPS];
++      IMG_DEV_VIRTADDR        sSrcReadOpsDevVAddr[SGX_MAX_TRANSFER_SYNC_OPS];
++
++      IMG_DEV_VIRTADDR        sDstWriteOpsDevVAddr[SGX_MAX_TRANSFER_SYNC_OPS];
++      IMG_DEV_VIRTADDR        sDstReadOpsDevVAddr[SGX_MAX_TRANSFER_SYNC_OPS];
++} PVR3DIF4_TRANSFERCMD_SHARED, *PPVR3DIF4_TRANSFERCMD_SHARED;
++
++typedef struct _PVRSRV_TRANSFER_SGX_KICK_
++{
++      IMG_HANDLE              hCCBMemInfo;
++      IMG_UINT32              ui32SharedCmdCCBOffset;
++
++      IMG_DEV_VIRTADDR        sHWTransferContextDevVAddr;
++
++      IMG_HANDLE              hTASyncInfo;
++      IMG_HANDLE              h3DSyncInfo;
++
++      IMG_UINT32              ui32NumSrcSync;
++      IMG_HANDLE              ahSrcSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
++
++      IMG_UINT32              ui32NumDstSync;
++      IMG_HANDLE              ahDstSyncInfo[SGX_MAX_TRANSFER_SYNC_OPS];
++
++      IMG_UINT32              ui32StatusFirstSync;
++} PVRSRV_TRANSFER_SGX_KICK, *PPVRSRV_TRANSFER_SGX_KICK;
++
++#if defined(SGX_FEATURE_2D_HARDWARE)
++typedef struct _PVR3DIF4_2DCMD_SHARED_ {
++      
++      IMG_UINT32                      ui32NumSrcSync;
++      PVRSRV_DEVICE_SYNC_OBJECT       sSrcSyncData[SGX_MAX_2D_SRC_SYNC_OPS];
++      
++      
++      PVRSRV_DEVICE_SYNC_OBJECT       sDstSyncData;
++      
++      
++      PVRSRV_DEVICE_SYNC_OBJECT       sTASyncData;
++      
++      
++      PVRSRV_DEVICE_SYNC_OBJECT       s3DSyncData;
++} PVR3DIF4_2DCMD_SHARED, *PPVR3DIF4_2DCMD_SHARED;
++
++typedef struct _PVRSRV_2D_SGX_KICK_
++{
++      IMG_HANDLE              hCCBMemInfo;
++      IMG_UINT32              ui32SharedCmdCCBOffset;
++
++      IMG_DEV_VIRTADDR        sHW2DContextDevVAddr;
++
++      IMG_UINT32              ui32NumSrcSync;
++      IMG_HANDLE              ahSrcSyncInfo[SGX_MAX_2D_SRC_SYNC_OPS];
++      
++      
++      IMG_HANDLE              hDstSyncInfo;
++      
++      
++      IMG_HANDLE              hTASyncInfo;
++      
++      
++      IMG_HANDLE              h3DSyncInfo;
++      
++} PVRSRV_2D_SGX_KICK, *PPVRSRV_2D_SGX_KICK;
++#endif        
++#endif        
++
++#define PVRSRV_SGX_HWPERF_NUM_COUNTERS        9
++
+ #endif 
+diff -Nurd git/drivers/gpu/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c git/drivers/gpu/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c
+--- git/drivers/gpu/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c   2009-01-05 20:00:44.000000000 +0100
++++ git/drivers/gpu/pvr/services4/srvkm/bridged/bridged_pvr_bridge.c   2008-12-18 15:47:29.000000000 +0100
+@@ -44,7 +44,6 @@
+ #include "bridged_pvr_bridge.h"
+ #include "env_data.h"
+-
+ #if defined (__linux__)
+ #include "mmap.h"
+ #else
+@@ -66,7 +65,7 @@
+ static IMG_BOOL gbInitServerRunning = IMG_FALSE;
+ static IMG_BOOL gbInitServerRan = IMG_FALSE;
+-static IMG_BOOL gbInitServerSuccessful = IMG_FALSE;
++static IMG_BOOL gbInitSuccessful = IMG_FALSE;
+ PVRSRV_BRIDGE_DISPATCH_TABLE_ENTRY g_BridgeDispatchTable[BRIDGE_DISPATCH_TABLE_ENTRY_COUNT];
+@@ -446,7 +445,13 @@
+ }
+-
++#if defined(OS_PVRSRV_ALLOC_DEVICE_MEM_BW)
++int
++PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID,
++                                         PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN,
++                                         PVRSRV_BRIDGE_OUT_ALLOCDEVICEMEM *psAllocDeviceMemOUT,
++                                         PVRSRV_PER_PROCESS_DATA *psPerProc);
++#else
+ static int
+ PVRSRVAllocDeviceMemBW(IMG_UINT32 ui32BridgeID,
+                                          PVRSRV_BRIDGE_IN_ALLOCDEVICEMEM *psAllocDeviceMemIN,
+@@ -512,7 +517,7 @@
+               psAllocDeviceMemOUT->sClientMemInfo.sDevVAddr = psMemInfo->sDevVAddr;
+               psAllocDeviceMemOUT->sClientMemInfo.ui32Flags = psMemInfo->ui32Flags;
+               psAllocDeviceMemOUT->sClientMemInfo.ui32AllocSize = psMemInfo->ui32AllocSize;
+-              psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo = IMG_NULL;
++              psAllocDeviceMemOUT->sClientMemInfo.hMappingInfo = psMemInfo->sMemBlk.hOSMemHandle;
+               psAllocDeviceMemOUT->eError =
+                       PVRSRVAllocHandle(psPerProc->psHandleBase,
+@@ -568,6 +573,7 @@
+       return 0;
+ }
++#endif 
+ static int
+ PVRSRVFreeDeviceMemBW(IMG_UINT32 ui32BridgeID,
+@@ -1547,12 +1553,12 @@
+               return 0;
+       }
+-      if(psDoKickIN->sCCBKick.hDstKernelSyncInfo != IMG_NULL)
++      if(psDoKickIN->sCCBKick.hTA3DSyncInfo != IMG_NULL)
+       {
+               psRetOUT->eError =
+                       PVRSRVLookupHandle(psPerProc->psHandleBase,
+-                                                         &psDoKickIN->sCCBKick.hDstKernelSyncInfo,
+-                                                         psDoKickIN->sCCBKick.hDstKernelSyncInfo,
++                                                         &psDoKickIN->sCCBKick.hTA3DSyncInfo,
++                                                         psDoKickIN->sCCBKick.hTA3DSyncInfo,
+                                                          PVRSRV_HANDLE_TYPE_SYNC_INFO); 
+               if(psRetOUT->eError != PVRSRV_OK)
+@@ -1561,13 +1567,12 @@
+               }
+       }
+-#if defined (NO_HARDWARE)
+-      if(psDoKickIN->sCCBKick.hUpdateDstKernelSyncInfo != IMG_NULL)
++      if(psDoKickIN->sCCBKick.hTASyncInfo != IMG_NULL)
+       {
+               psRetOUT->eError =
+                       PVRSRVLookupHandle(psPerProc->psHandleBase,
+-                                                         &