Reinhard Russinger 8 年之前
當前提交
e7cb7b603a
共有 100 個文件被更改,包括 24426 次插入0 次删除
  1. 0 0
      Config.in
  2. 7158 0
      GfA-buildroot-changes.patch
  3. 15 0
      MakeBuildrootEnv.sh
  4. 88 0
      Readme.md
  5. 1 0
      board/GfA/Display001/.#Display001.dts
  6. 1 0
      board/GfA/Display001/BUILD
  7. 314 0
      board/GfA/Display001/Display001.dts
  8. 315 0
      board/GfA/Display001/Display001_10.dts
  9. 314 0
      board/GfA/Display001/Display001_4.dts
  10. 348 0
      board/GfA/Display001/Display001_7.dts
  11. 3346 0
      board/GfA/Display001/Display001_defconfig
  12. 3349 0
      board/GfA/Display001/Display001_defconfig_spinlock_checks_normal
  13. 1082 0
      board/GfA/Display001/busybox.config
  14. 9 0
      board/GfA/Display001/device_table.txt
  15. 21 0
      board/GfA/Display001/linux/linux-001-am33xx-dtsi_no-otg.patch
  16. 916 0
      board/GfA/Display001/linux/linux-002-edt-touch.patch
  17. 24 0
      board/GfA/Display001/linux/linux-003-da8xx-videotiming.patch
  18. 61 0
      board/GfA/Display001/linux/linux-004-mmc-enum.patch
  19. 1104 0
      board/GfA/Display001/linux/linux-005-egalax-i2c.patch
  20. 48 0
      board/GfA/Display001/linux/linux-006-custom-bootlogo.patch
  21. 2887 0
      board/GfA/Display001/linux/linux-006-custom-bootlogo_ppm.patch
  22. 453 0
      board/GfA/Display001/linux/linux-007-gpio-helper.patch
  23. 271 0
      board/GfA/Display001/linux/linux-009-pru.patch
  24. 55 0
      board/GfA/Display001/linux/linux-010-pru_ena.patch
  25. 24 0
      board/GfA/Display001/linux/linux-011-bootlogo_move.patch
  26. 521 0
      board/GfA/Display001/linux/linux-012-omap-dmtimer.patch
  27. 114 0
      board/GfA/Display001/linux/linux-013-omap-dmtimer-quirks.patch
  28. 67 0
      board/GfA/Display001/post-build.sh
  29. 34 0
      board/GfA/Display001/rootfs/etc/dhcp/dhcpd.conf
  30. 2 0
      board/GfA/Display001/rootfs/etc/fw_env.config
  31. 33 0
      board/GfA/Display001/rootfs/etc/hostapd.conf
  32. 28 0
      board/GfA/Display001/rootfs/etc/init.d/M98usb_g_ether
  33. 24 0
      board/GfA/Display001/rootfs/etc/init.d/M99tincd
  34. 26 0
      board/GfA/Display001/rootfs/etc/init.d/S11crond
  35. 3 0
      board/GfA/Display001/rootfs/etc/init.d/S98_tc_cap
  36. 24 0
      board/GfA/Display001/rootfs/etc/init.d/S99fbvncserver
  37. 24 0
      board/GfA/Display001/rootfs/etc/init.d/S99keymap
  38. 24 0
      board/GfA/Display001/rootfs/etc/init.d/S99pruuart
  39. 1 0
      board/GfA/Display001/rootfs/etc/init.d/gsmMuxd
  40. 29 0
      board/GfA/Display001/rootfs/etc/init.d/gsmMuxd_PH8Ser
  41. 29 0
      board/GfA/Display001/rootfs/etc/init.d/gsmMuxd_TC65i
  42. 55 0
      board/GfA/Display001/rootfs/etc/init.d/rcS
  43. 39 0
      board/GfA/Display001/rootfs/etc/inittab
  44. 1145 0
      board/GfA/Display001/rootfs/etc/joe/joerc
  45. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/ANSI-dvorak.bmap
  46. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/applkey.bmap
  47. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/azerty.bmap
  48. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/backspace.bmap
  49. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/be-latin1.bmap
  50. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg-cp1251.bmap
  51. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg-cp855.bmap
  52. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg_bds-cp1251.bmap
  53. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg_bds-utf8.bmap
  54. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg_pho-cp1251.bmap
  55. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/bg_pho-utf8.bmap
  56. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/br-abnt.bmap
  57. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/br-abnt2.bmap
  58. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/br-latin1-abnt2.bmap
  59. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/br-latin1-us.bmap
  60. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/by.bmap
  61. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cf.bmap
  62. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/croat.bmap
  63. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/ctrl.bmap
  64. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cz-cp1250.bmap
  65. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cz-lat2-prog.bmap
  66. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cz-lat2.bmap
  67. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cz-us-qwertz.bmap
  68. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/cz.bmap
  69. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/de-latin1-nodeadkeys.bmap
  70. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/de-latin1.bmap
  71. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/de.bmap
  72. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/de_CH-latin1.bmap
  73. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/defkeymap.bmap
  74. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/defkeymap_V1.0.bmap
  75. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/dk-latin1.bmap
  76. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/dk.bmap
  77. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/dvorak-l.bmap
  78. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/dvorak-r.bmap
  79. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/dvorak.bmap
  80. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/emacs.bmap
  81. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/emacs2.bmap
  82. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/es-cp850.bmap
  83. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/es.bmap
  84. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/et-nodeadkeys.bmap
  85. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/et.bmap
  86. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/euro.bmap
  87. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/euro1.bmap
  88. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/euro2.bmap
  89. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fi-latin1.bmap
  90. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fi-latin9.bmap
  91. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fi.bmap
  92. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr-latin1.bmap
  93. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr-latin9.bmap
  94. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr-pc.bmap
  95. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr.bmap
  96. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr_CH-latin1.bmap
  97. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/fr_CH.bmap
  98. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/gr-pc.bmap
  99. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/gr.bmap
  100. 二進制
      board/GfA/Display001/rootfs/etc/keymaps/hu.bmap

+ 0 - 0
Config.in


+ 7158 - 0
GfA-buildroot-changes.patch

@@ -0,0 +1,7158 @@
+diff --git a/CrossCompile.sh b/CrossCompile.sh
+new file mode 100755
+index 0000000..a2feabc
+--- /dev/null
++++ b/CrossCompile.sh
+@@ -0,0 +1,41 @@
++#! /bin/bash
++#
++#
++
++WRKDIR=`pwd`
++CMDDIR=`dirname $0`
++cd $CMDDIR
++
++TOOLCHAIN=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`
++echo $TOOLCHAIN
++
++if [[ $TOOLCHAIN = *\$\(BASE_DIR\)* ]]; then
++	export SYSROOT=`readlink -f $CMDDIR`/output/host/usr/bin/
++else
++	export SYSROOT=$TOOLCHAIN/usr/bin
++fi
++
++export PATH=$PATH:$SYSROOT
++
++export CROSS_COMPILE=arm-buildroot-linux-gnueabihf-
++export ARCH=arm
++export KERNELDIR=`pwd`/output/build/linux-7f280334068b7c875ade51f8f3921ab311f0c824
++export BB_KERNEL_SOURCES=$KERNELDIR
++export SYSROOTARM=`grep BR2_HOST_DIR .config | awk -F\= -F\" '{print $2}'`/usr/arm-buildroot-linux-gnueabihf/sysroot
++export CC_FULLPATH="${SYSROOT}${CROSS_COMPILE}"
++#--- gnupru
++export PASM=pasm
++##export PSYSROOT=/home/ru/pru/pru-gcc/bin
++export PSYSROOT=/opt/GfA/PRU-ICSS/bin/pru-gcc/bin
++export PATH=$PSYSROOT:$PATH
++
++export PCROSS_COMPILE=pru-
++export PARCH=pru
++
++cd $WRKDIR
++if [ $# -eq "0" ] 
++then
++PROMPT_COMMAND='PS1="\[\033[0;31m\]CROSS CC:\[\033[0;32m\]$PS1";unset PROMPT_COMMAND' bash ; reset
++else
++$1
++fi
+diff --git a/MakeIMAGE.sh b/MakeIMAGE.sh
+new file mode 100755
+index 0000000..02271d3
+--- /dev/null
++++ b/MakeIMAGE.sh
+@@ -0,0 +1,91 @@
++#!/bin/sh
++
++SAVE_LC=$LC_ALL
++export LC_ALL=C
++
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++IMAGEFILE=../Display001_Build_$BUILD-img
++
++echo "Image: $IMAGEFILE"
++#-- build imagefile
++dd if=/dev/zero ibs=1M count=1 > $IMAGEFILE
++dd if=/dev/zero ibs=1M count=2048 | tr "\000" "\377" >> $IMAGEFILE
++apt-get install codelite wxcrafter
++#-- create partitions BOOT rootfs !!! don't change !!!!
++fdisk $IMAGEFILE << EOF
++o
++n
++p
++
++
+++300M
++n
++p
++
++
++
++t
++1
++c
++a
++1
++p
++w
++EOF
++echo "============="
++#-- map partitions
++DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n 1 | awk '{print $1}'`
++DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n 2 | tail -n 1 | awk '{print $1}'`
++
++echo ">>>>>>>>>>>>>>>>>>"
++echo $DRIVE1
++echo $DRIVE2
++echo ">>>>>>>>>>>>>>>>>>"
++
++kpartx -asv $IMAGEFILE
++#-- mount partitions
++umount /tmp/boot
++umount /tmp/rootfs
++
++rm -rf /tmp/boot  
++rm -rf /tmp/rootfs
++
++mkdir /tmp/boot  
++mkdir /tmp/rootfs
++
++dd if=/dev/zero of=${DRIVE1} bs=1M count=1
++mkfs.vfat -F 32 -n "boot" ${DRIVE1}
++mount ${DRIVE1} /tmp/boot
++
++du -h ${DRIVE1}
++
++cp ./output/images/*.dtb /tmp/boot 
++cp ./output/images/uImage /tmp/boot
++cp ./output/images/MLO /tmp/boot
++cp ./output/images/u-boot.img /tmp/boot   
++cp ./output/images/rootfs.tar.gz /tmp/boot
++                                        
++ls -alh /tmp/boot
++
++dd if=/dev/zero of=${DRIVE2} bs=1M count=1
++mkfs.ext3 -L "rootfs" ${DRIVE2}
++mount ${DRIVE2} /tmp/rootfs
++
++du -h ${DRIVE2}
++sleep 10
++tar -C /tmp/rootfs  --checkpoint --checkpoint-action=dot -xzf ./output/images/rootfs.tar.gz
++echo ""
++
++sync
++sync
++umount ${DRIVE1}
++umount ${DRIVE2}
++                                                        
++#-- unmap partitions
++kpartx -dsv $IMAGEFILE
++#-- packen des Imagefiles
++rm $IMAGEFILE.zip
++zip -j $IMAGEFILE.zip $IMAGEFILE
++
++export LC_ALL=$SAVE_LC
++                                                                                                                
+\ No newline at end of file
+diff --git a/MakeRootfsUpdate.sh b/MakeRootfsUpdate.sh
+new file mode 100755
+index 0000000..df6e200
+--- /dev/null
++++ b/MakeRootfsUpdate.sh
+@@ -0,0 +1,62 @@
++#!/bin/bash
++WRKDIR=/tmp/XXXUpdateRootfs
++BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
++UPDATE_BINARY=$WRKDIR/dest/UpdateRootfs.tar.Z
++UPDATE_FILENAME="../UpdateDisplay001_$BUILD.sh"
++UPDATE_IN_SCRIPT="UpdateRootfs.sh.in"
++
++rm -rf $WRKDIR
++mkdir -p $WRKDIR/dest
++
++cp ./output/images/*.dtb $WRKDIR
++cp ./output/images/uImage $WRKDIR
++cp ./output/images/MLO $WRKDIR
++cp ./output/images/u-boot.img $WRKDIR
++cp ./output/images/rootfs.tar.gz $WRKDIR
++
++tar -C $WRKDIR --exclude=./dest -czvf $WRKDIR/dest/UpdateRootfs.tar.Z ./
++
++# Check for payload format option (default is binary).
++binary=1
++uuencode=0
++
++if [[ "$1" == '--binary' ]]; then
++	binary=1
++	uuencode=0
++	shift
++fi
++if [[ "$1" == '--uuencode' ]]; then
++	binary=0
++	uuencode=1
++	shift
++fi
++
++if [[ ! -f $UPDATE_BINARY ]]; then
++	echo "       UPDATE_BINARY $UPDATE_BINARY doesn't exist!"
++	echo "Usage: $0 [--binary | --uuencode]"
++	exit 1
++fi
++
++
++if [[ $binary -ne 0 ]]; then
++	# Append binary data.
++	sed \
++		-e 's/uuencode=./uuencode=0/' \
++		-e 's/binary=./binary=1/' \
++			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
++	echo "PAYLOAD:" >> $UPDATE_FILENAME
++
++	cat $UPDATE_BINARY >> $UPDATE_FILENAME
++fi
++if [[ $uuencode -ne 0 ]]; then
++	# Append uuencoded data.
++	sed \
++		-e 's/uuencode=./uuencode=1/' \
++		-e 's/binary=./binary=0/' \
++			 $UPDATE_IN_SCRIPT > $UPDATE_FILENAME
++	echo "PAYLOAD:" >> $UPDATE_FILENAME
++
++	cat $UPDATE_BINARY | uuencode - >> $UPDATE_FILENAME
++fi
++
++chmod a+x $UPDATE_FILENAME
+diff --git a/MapImage.sh b/MapImage.sh
+new file mode 100755
+index 0000000..4905205
+--- /dev/null
++++ b/MapImage.sh
+@@ -0,0 +1,41 @@
++#!/bin/sh
++
++SAVE_LC=$LC_ALL
++export LC_ALL=C
++
++BUILD=`cat board/GfA/Display001/BUILD`
++IMAGEFILE=../Display001_Build_$BUILD-img
++echo ">>> $IMAGEFILE <<<"
++#-- map partitions
++DRIVE1=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n 1 | awk '{print $1}'`
++DRIVE2=/dev/mapper/`kpartx -s -l $IMAGEFILE | head -n 2 | tail -n 1 | awk '{print $1}'`
++
++echo ">>>>>>>>>>>>>>>>>>"
++echo $DRIVE1
++echo $DRIVE2
++echo ">>>>>>>>>>>>>>>>>>"
++
++kpartx -asv $IMAGEFILE
++#-- mount partitions
++umount /tmp/boot
++umount /tmp/rootfs
++
++rm -rf /tmp/boot  
++rm -rf /tmp/rootfs
++
++mkdir /tmp/boot  
++mkdir /tmp/rootfs
++
++mount ${DRIVE1} /tmp/boot
++mount ${DRIVE2} /tmp/rootfs
++
++bash
++
++umount ${DRIVE1}
++umount ${DRIVE2}
++                                                        
++#-- unmap partitions
++kpartx -dsv $IMAGEFILE
++
++export LC_ALL=$SAVE_LC
++                                                                                                                
+\ No newline at end of file
+diff --git a/UpdateRootfs.sh.in b/UpdateRootfs.sh.in
+new file mode 100644
+index 0000000..4706719
+--- /dev/null
++++ b/UpdateRootfs.sh.in
+@@ -0,0 +1,77 @@
++#!/bin/sh
++
++uuencode=0
++binary=1
++
++##TAR_PARAMETERS="-C / --exclude=./opt --exclude=./etc/inittab -xzvf -"
++TMP_PATH="/__GfA_Update"
++TAR_PARAMETERS="-C $TMP_PATH -xzvf -"
++
++untar_payload ()
++{
++
++	echo "remove $TMP_PATH : "
++	rm -rf $TMP_PATH
++	echo ">> $? "
++	mkdir -p $TMP_PATH
++
++	match=$(grep -n -m 1 '^PAYLOAD:$' $0 | cut -d ':' -f 1)
++	payload_start=$((match + 1))
++	if [[ $binary -ne 0 ]]; then
++		tail -n +$payload_start $0 | tar $TAR_PARAMETERS
++	fi
++	if [[ $uuencode -ne 0 ]]; then
++		tail -n +$payload_start $0 | uudecode | tar $TAR_PARAMETERS
++	fi
++}
++
++## --- Kommandos zum Installieren
++## -- get bootpartition
++such="root=/dev/mmcblk1"
++grep -q $such /proc/cmdline
++if [ $? == 0 ]
++then
++	bootpart="/dev/mmcblk1p1"
++else
++	bootpart="/dev/mmcblk0p1"
++fi	
++
++umount /mnt
++mount $bootpart /mnt
++
++## -- alte Firmwarebinaries löschen
++rm /root/btm*.bin
++
++#--- Kernel MLO und Rootfs-Tarball entpacken
++untar_payload
++# --- 
++
++rm /mnt/rootfs.tar.gz
++cp $TMP_PATH/MLO /mnt
++cp $TMP_PATH/u-boot.img /mnt
++cp $TMP_PATH/uImage /mnt
++cp $TMP_PATH/*.dtb /mnt
++
++#rootfs auspacken
++tar -C / --exclude=./opt --exclude=./etc/inittab --exclude=./etc/network/interfaces -xzvf $TMP_PATH/rootfs.tar.gz
++
++echo "sync mmc be patient ...."
++sync
++sync
++
++if [ -e /etc/init.d/S98usb_g_ether ]
++then
++	cp /etc/init.d/S98usb_g_ether /etc/init.d/M98usb_g_ether
++	rm /etc/init.d/S98usb_g_ether
++fi
++        
++#echo "Update Firmware"
++#echo "."
++#/root/spi_tivia /root/btm43_0107.bin >/dev/null
++#echo ".."
++#echo "Update Firmware Done"
++#/root/gfa_spi -v
++echo "Update Done, pls. reboot System"
++umount /mnt
++echo "."
++exit 0
+diff --git a/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
+new file mode 100644
+index 0000000..1ca1e70
+--- /dev/null
++++ b/board/beaglebone/patches/linux/0002-arm-Export-cache-flush-management-symbols-when-MULTI.patch
+@@ -0,0 +1,34 @@
++From 29885f2f3d700341d322274db6ad085e601c0994 Mon Sep 17 00:00:00 2001
++From: Pantelis Antoniou <panto@antoniou-consulting.com>
++Date: Fri, 4 Jan 2013 00:32:33 +0200
++Subject: [PATCH 3/3] arm: Export cache flush management symbols when
++ !MULTI_CACHE
++
++When compiling a kernel without CONFIG_MULTI_CACHE enabled the
++dma access functions end up not being exported. Fix it.
++
++Signed-off-by: Pantelis Antoniou <panto@antoniou-consulting.com>
++---
++ arch/arm/kernel/setup.c |    9 +++++++++
++ 1 file changed, 9 insertions(+)
++
++diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c
++index da1d1aa..dcb678c 100644
++--- a/arch/arm/kernel/setup.c
+++++ b/arch/arm/kernel/setup.c
++@@ -923,3 +923,12 @@ const struct seq_operations cpuinfo_op = {
++ 	.stop	= c_stop,
++ 	.show	= c_show
++ };
+++
+++/* export the cache management functions */
+++#ifndef MULTI_CACHE
+++
+++EXPORT_SYMBOL(__glue(_CACHE,_dma_map_area));
+++EXPORT_SYMBOL(__glue(_CACHE,_dma_unmap_area));
+++EXPORT_SYMBOL(__glue(_CACHE,_dma_flush_range));
+++
+++#endif
++-- 
++1.7.10.4
++
+diff --git a/package/gcc/4.9.1/100-uclibc-conf.patch b/package/gcc/4.9.1/100-uclibc-conf.patch
+new file mode 100644
+index 0000000..d56bf0a
+--- /dev/null
++++ b/package/gcc/4.9.1/100-uclibc-conf.patch
+@@ -0,0 +1,15 @@
++Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
++===================================================================
++--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh	2009-04-09 17:00:19.000000000 +0200
+++++ gcc-4.8.0/contrib/regression/objs-gcc.sh	2013-03-23 17:39:04.000000000 +0100
++@@ -106,6 +106,10 @@
++  then
++   make all-gdb all-dejagnu all-ld || exit 1
++   make install-gdb install-dejagnu install-ld || exit 1
+++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
+++ then
+++  make all-gdb all-dejagnu all-ld || exit 1
+++  make install-gdb install-dejagnu install-ld || exit 1
++ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
++   make bootstrap || exit 1
++   make install || exit 1
+diff --git a/package/gcc/4.9.1/301-missing-execinfo_h.patch b/package/gcc/4.9.1/301-missing-execinfo_h.patch
+new file mode 100644
+index 0000000..00efda2
+--- /dev/null
++++ b/package/gcc/4.9.1/301-missing-execinfo_h.patch
+@@ -0,0 +1,13 @@
++Index: gcc-4.8.0/boehm-gc/include/gc.h
++===================================================================
++--- gcc-4.8.0.orig/boehm-gc/include/gc.h	2007-04-23 23:10:09.000000000 +0200
+++++ gcc-4.8.0/boehm-gc/include/gc.h	2013-03-23 17:39:20.000000000 +0100
++@@ -503,7 +503,7 @@
++ #if defined(__linux__) || defined(__GLIBC__)
++ # include <features.h>
++ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
++-     && !defined(__ia64__)
+++     && !defined(__ia64__) && !defined(__UCLIBC__)
++ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
++ #     define GC_HAVE_BUILTIN_BACKTRACE
++ #   endif
+diff --git a/package/gcc/4.9.1/302-c99-snprintf.patch b/package/gcc/4.9.1/302-c99-snprintf.patch
+new file mode 100644
+index 0000000..cd4d2cc
+--- /dev/null
++++ b/package/gcc/4.9.1/302-c99-snprintf.patch
+@@ -0,0 +1,13 @@
++Index: gcc-4.8.0/libstdc++-v3/include/c_global/cstdio
++===================================================================
++--- gcc-4.8.0.orig/libstdc++-v3/include/c_global/cstdio	2013-02-03 18:54:05.000000000 +0100
+++++ gcc-4.8.0/libstdc++-v3/include/c_global/cstdio	2013-03-23 17:39:32.000000000 +0100
++@@ -138,7 +138,7 @@
++   using ::vsprintf;
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if _GLIBCXX_USE_C99 || defined __UCLIBC__
++ 
++ #undef snprintf
++ #undef vfscanf
+diff --git a/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
+new file mode 100644
+index 0000000..c8cb377
+--- /dev/null
++++ b/package/gcc/4.9.1/810-arm-softfloat-libgcc.patch
+@@ -0,0 +1,30 @@
++Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
++===================================================================
++--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h	2013-01-10 21:38:27.000000000 +0100
+++++ gcc-4.8.0/gcc/config/arm/linux-elf.h	2013-03-23 17:40:00.000000000 +0100
++@@ -55,7 +55,7 @@
++    %{shared:-lc} \
++    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
++ 
++-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+++#define LIBGCC_SPEC "-lgcc"
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++ 
++Index: gcc-4.8.0/libgcc/config/arm/t-linux
++===================================================================
++--- gcc-4.8.0.orig/libgcc/config/arm/t-linux	2012-03-22 16:14:46.000000000 +0100
+++++ gcc-4.8.0/libgcc/config/arm/t-linux	2013-03-23 17:40:54.000000000 +0100
++@@ -1,6 +1,11 @@
++ LIB1ASMSRC = arm/lib1funcs.S
++ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
++-	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3
+++	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
+++	_arm_addsubdf3 _arm_addsubsf3 \
+++	_arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
+++	_arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
+++	_arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
+++	_arm_fixsfsi _arm_fixunssfsi
++ 
++ # Just for these, we omit the frame pointer since it makes such a big
++ # difference.
+diff --git a/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
+new file mode 100644
+index 0000000..37f8f2a
+--- /dev/null
++++ b/package/gcc/4.9.1/830-arm_unbreak_armv4t.patch
+@@ -0,0 +1,13 @@
++http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
++
++--- a/gcc/config/arm/linux-eabi.h
+++++ b/gcc/config/arm/linux-eabi.h
++@@ -45,7 +45,7 @@
++    The ARM10TDMI core is the default for armv5t, so set
++    SUBTARGET_CPU_DEFAULT to achieve this.  */
++ #undef  SUBTARGET_CPU_DEFAULT
++-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
++ 
++ /* TARGET_BIG_ENDIAN_DEFAULT is set in
++    config.gcc for big endian configurations.  */
+diff --git a/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
+new file mode 100644
+index 0000000..e116e2b
+--- /dev/null
++++ b/package/gcc/4.9.1/840-microblaze-enable-dwarf-eh-support.patch
+@@ -0,0 +1,169 @@
++Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
++
++From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
++From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
++Date: Mon, 18 Jun 2012 20:18:13 +0200
++Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
++
++Changelog
++
++2013-03-18  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
++            David Holsgrove <david.holsgrove@xilinx.com>
++
++ * common/config/microblaze/microblaze-common.c: Remove
++   TARGET_EXCEPT_UNWIND_INFO definition.
++ * config/microblaze/microblaze-protos.h: Add
++   microblaze_eh_return prototype.
++ * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
++   microblaze_expand_epilogue, microblaze_return_addr): Handle
++   calls_eh_return
++   (microblaze_eh_return): New function.
++ * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
++   EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
++   ASM_PREFERRED_EH_DATA_FORMAT
++ * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
++
++Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
++Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
++---
++ gcc/common/config/microblaze/microblaze-common.c |  3 ---
++ gcc/config/microblaze/microblaze-protos.h        |  1 +
++ gcc/config/microblaze/microblaze.c               | 29 ++++++++++++++++++++----
++ gcc/config/microblaze/microblaze.h               | 15 ++++++++++++
++ gcc/config/microblaze/microblaze.md              | 11 +++++++++
++ 5 files changed, 52 insertions(+), 7 deletions(-)
++
++diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
++index 5835acc..85e6a53 100644
++--- a/gcc/common/config/microblaze/microblaze-common.c
+++++ b/gcc/common/config/microblaze/microblaze-common.c
++@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
++ #undef  TARGET_OPTION_OPTIMIZATION_TABLE
++ #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
++ 
++-#undef TARGET_EXCEPT_UNWIND_INFO
++-#define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
++-
++ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
++diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
++index c30ec72..260f4e4 100644
++--- a/gcc/config/microblaze/microblaze-protos.h
+++++ b/gcc/config/microblaze/microblaze-protos.h
++@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
++ extern int symbol_mentioned_p (rtx);
++ extern int label_mentioned_p (rtx);
++ extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
+++extern void microblaze_eh_return (rtx op0);
++ #endif  /* RTX_CODE */
++ 
++ /* Declare functions in microblaze-c.c.  */
++diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
++index fe61fce..15166d3 100644
++--- a/gcc/config/microblaze/microblaze.c
+++++ b/gcc/config/microblaze/microblaze.c
++@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
++   if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
++     return 1;
++ 
+++  if (crtl->calls_eh_return
+++      && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
+++    return 1;
+++  }
+++
++   if (!crtl->is_leaf)
++     {
++       if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
++@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
++ 	return 1;
++     }
++ 
+++  if (crtl->calls_eh_return
+++      && (regno == EH_RETURN_DATA_REGNO (0)
+++          || regno == EH_RETURN_DATA_REGNO (1)))
+++    {
+++      return 1;
+++    }
+++
++   return 0;
++ }
++ 
++@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
++       emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
++     }
++ 
+++  if (crtl->calls_eh_return)
+++    emit_insn (gen_addsi3 (stack_pointer_rtx,
+++                           stack_pointer_rtx,
+++                           gen_rtx_raw_REG (SImode,
+++                                            MB_EH_STACKADJ_REGNUM)));
+++
++   emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
++ 						    MB_ABI_SUB_RETURN_ADDR_REGNUM)));
++ }
++@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
++   if (count != 0)
++     return NULL_RTX;
++ 
++-  return gen_rtx_PLUS (Pmode,
++-		       get_hard_reg_initial_val (Pmode,
++-						 MB_ABI_SUB_RETURN_ADDR_REGNUM),
++-		       GEN_INT (8));
+++  return get_hard_reg_initial_val (Pmode,
+++                                   MB_ABI_SUB_RETURN_ADDR_REGNUM);
+++}
+++
+++void microblaze_eh_return (rtx op0)
+++{
+++  emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
++ }
++ 
++ /* Queue an .ident string in the queue of top-level asm statements.
++diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
++index 4072283..5e9f49c 100644
++--- a/gcc/config/microblaze/microblaze.h
+++++ b/gcc/config/microblaze/microblaze.h
++@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
++ #define INCOMING_RETURN_ADDR_RTX  			\
++   gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
++ 
+++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC.  */
+++#define RETURN_ADDR_OFFSET (8)
+++
+++/* Describe how we implement __builtin_eh_return.  */
+++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
+++
+++#define MB_EH_STACKADJ_REGNUM  MB_ABI_INT_RETURN_VAL2_REGNUM
+++#define EH_RETURN_STACKADJ_RTX  gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
+++
+++/* Select a format to encode pointers in exception handling data.  CODE
+++   is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
+++   true if the symbol may be affected by dynamic relocations.  */
+++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
+++  ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
+++
++ /* Use DWARF 2 debugging information by default.  */
++ #define DWARF2_DEBUGGING_INFO
++ #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
++diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
++index ed6131a..dc2405f 100644
++--- a/gcc/config/microblaze/microblaze.md
+++++ b/gcc/config/microblaze/microblaze.md
++@@ -2327,4 +2327,15 @@
++   (set_attr "mode"      "SI")
++   (set_attr "length"    "4")])
++ 
+++; This is used in compiling the unwind routines.
+++(define_expand "eh_return"
+++  [(use (match_operand 0 "general_operand" ""))]
+++  ""
+++  "
+++{
+++  microblaze_eh_return(operands[0]);
+++  DONE;
+++}")
+++
++ (include "sync.md")
+++
++-- 
++1.8.3.2
++
+diff --git a/package/gcc/4.9.1/841-PR60102.patch b/package/gcc/4.9.1/841-PR60102.patch
+new file mode 100644
+index 0000000..e34695d
+--- /dev/null
++++ b/package/gcc/4.9.1/841-PR60102.patch
+@@ -0,0 +1,388 @@
++From https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
++Target: 4.9.2
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c gcc-4.9.1/gcc/config/rs6000/rs6000.c
++--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.c	2014-08-05 14:53:37.294498582 -0300
+++++ gcc-4.9.1/gcc/config/rs6000/rs6000.c	2014-08-05 14:58:33.972555735 -0300
++@@ -1221,7 +1221,12 @@
++       /* Soft frame pointer.  */
++       "sfp",
++       /* HTM SPR registers.  */
++-      "tfhar", "tfiar", "texasr"
+++      "tfhar", "tfiar", "texasr",
+++      /* SPE High registers.  */
+++      "0",  "1",  "2",  "3",  "4",  "5",  "6",  "7",
+++      "8",  "9", "10", "11", "12", "13", "14", "15",
+++     "16", "17", "18", "19", "20", "21", "22", "23",
+++     "24", "25", "26", "27", "28", "29", "30", "31"
++ };
++ 
++ #ifdef TARGET_REGNAMES
++@@ -1249,7 +1254,12 @@
++   /* Soft frame pointer.  */
++   "sfp",
++   /* HTM SPR registers.  */
++-  "tfhar", "tfiar", "texasr"
+++  "tfhar", "tfiar", "texasr",
+++  /* SPE High registers.  */
+++  "%rh0",  "%rh1",  "%rh2",  "%rh3",  "%rh4",  "%rh5",  "%rh6",   "%rh7",
+++  "%rh8",  "%rh9",  "%rh10", "%r11",  "%rh12", "%rh13", "%rh14", "%rh15",
+++  "%rh16", "%rh17", "%rh18", "%rh19", "%rh20", "%rh21", "%rh22", "%rh23",
+++  "%rh24", "%rh25", "%rh26", "%rh27", "%rh28", "%rh29", "%rh30", "%rh31"
++ };
++ #endif
++ 
++@@ -31074,13 +31084,13 @@
++     {
++       if (BYTES_BIG_ENDIAN)
++ 	{
++-	  parts[2 * i] = gen_rtx_REG (SImode, regno + 1200);
+++	  parts[2 * i] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
++ 	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno);
++ 	}
++       else
++ 	{
++ 	  parts[2 * i] = gen_rtx_REG (SImode, regno);
++-	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno + 1200);
+++	  parts[2 * i + 1] = gen_rtx_REG (SImode, regno + FIRST_SPE_HIGH_REGNO);
++ 	}
++     }
++ 
++@@ -31100,11 +31110,11 @@
++       rtx mem = gen_rtx_MEM (BLKmode, addr);
++       rtx value = gen_int_mode (4, mode);
++ 
++-      for (i = 1201; i < 1232; i++)
+++      for (i = FIRST_SPE_HIGH_REGNO; i < LAST_SPE_HIGH_REGNO+1; i++)
++ 	{
++-	  int column = DWARF_REG_TO_UNWIND_COLUMN (i);
++-	  HOST_WIDE_INT offset
++-	    = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
+++	  int column = DWARF_REG_TO_UNWIND_COLUMN
+++		(DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
+++	  HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
++ 
++ 	  emit_move_insn (adjust_address (mem, mode, offset), value);
++ 	}
++@@ -31123,9 +31133,9 @@
++ 
++       for (i = FIRST_ALTIVEC_REGNO; i < LAST_ALTIVEC_REGNO+1; i++)
++ 	{
++-	  int column = DWARF_REG_TO_UNWIND_COLUMN (i);
++-	  HOST_WIDE_INT offset
++-	    = DWARF_FRAME_REGNUM (column) * GET_MODE_SIZE (mode);
+++	  int column = DWARF_REG_TO_UNWIND_COLUMN
+++		(DWARF2_FRAME_REG_OUT (DWARF_FRAME_REGNUM (i), true));
+++	  HOST_WIDE_INT offset = column * GET_MODE_SIZE (mode);
++ 
++ 	  emit_move_insn (adjust_address (mem, mode, offset), value);
++ 	}
++@@ -31157,9 +31167,8 @@
++     return 99;
++   if (regno == SPEFSCR_REGNO)
++     return 612;
++-  /* SPE high reg number.  We get these values of regno from
++-     rs6000_dwarf_register_span.  */
++-  gcc_assert (regno >= 1200 && regno < 1232);
+++  if (SPE_HIGH_REGNO_P (regno))
+++    return regno - FIRST_SPE_HIGH_REGNO + 1200;
++   return regno;
++ }
++ 
++diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h gcc-4.9.1/gcc/config/rs6000/rs6000.h
++--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.h	2014-08-05 14:53:37.291498480 -0300
+++++ gcc-4.9.1/gcc/config/rs6000/rs6000.h	2014-08-05 14:58:33.974555802 -0300
++@@ -930,35 +930,36 @@
++ 
++    The 3 HTM registers aren't also included in DWARF_FRAME_REGISTERS.  */
++ 
++-#define FIRST_PSEUDO_REGISTER 117
+++#define FIRST_PSEUDO_REGISTER 149
++ 
++ /* This must be included for pre gcc 3.0 glibc compatibility.  */
++ #define PRE_GCC3_DWARF_FRAME_REGISTERS 77
++ 
++-/* Add 32 dwarf columns for synthetic SPE registers.  */
++-#define DWARF_FRAME_REGISTERS ((FIRST_PSEUDO_REGISTER - 4) + 32)
+++/* True if register is an SPE High register.  */
+++#define SPE_HIGH_REGNO_P(N) \
+++  ((N) >= FIRST_SPE_HIGH_REGNO && (N) <= LAST_SPE_HIGH_REGNO)
+++
+++/* SPE high registers added as hard regs.
+++   The sfp register and 3 HTM registers
+++   aren't included in DWARF_FRAME_REGISTERS.  */
+++#define DWARF_FRAME_REGISTERS (FIRST_PSEUDO_REGISTER - 4)
++ 
++ /* The SPE has an additional 32 synthetic registers, with DWARF debug
++    info numbering for these registers starting at 1200.  While eh_frame
++    register numbering need not be the same as the debug info numbering,
++-   we choose to number these regs for eh_frame at 1200 too.  This allows
++-   future versions of the rs6000 backend to add hard registers and
++-   continue to use the gcc hard register numbering for eh_frame.  If the
++-   extra SPE registers in eh_frame were numbered starting from the
++-   current value of FIRST_PSEUDO_REGISTER, then if FIRST_PSEUDO_REGISTER
++-   changed we'd need to introduce a mapping in DWARF_FRAME_REGNUM to
++-   avoid invalidating older SPE eh_frame info.
+++   we choose to number these regs for eh_frame at 1200 too.
++ 
++    We must map them here to avoid huge unwinder tables mostly consisting
++    of unused space.  */
++ #define DWARF_REG_TO_UNWIND_COLUMN(r) \
++-  ((r) > 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
+++  ((r) >= 1200 ? ((r) - 1200 + (DWARF_FRAME_REGISTERS - 32)) : (r))
++ 
++ /* Use standard DWARF numbering for DWARF debugging information.  */
++ #define DBX_REGISTER_NUMBER(REGNO) rs6000_dbx_register_number (REGNO)
++ 
++ /* Use gcc hard register numbering for eh_frame.  */
++-#define DWARF_FRAME_REGNUM(REGNO) (REGNO)
+++#define DWARF_FRAME_REGNUM(REGNO) \
+++  (SPE_HIGH_REGNO_P (REGNO) ? ((REGNO) - FIRST_SPE_HIGH_REGNO + 1200) : (REGNO))
++ 
++ /* Map register numbers held in the call frame info that gcc has
++    collected using DWARF_FRAME_REGNUM to those that should be output in
++@@ -992,7 +993,10 @@
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    1, 1						   \
++-   , 1, 1, 1, 1, 1, 1				   \
+++   , 1, 1, 1, 1, 1, 1,				   \
+++   /* SPE High registers.  */			   \
+++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
+++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  \
++ }
++ 
++ /* 1 for registers not available across function calls.
++@@ -1012,7 +1016,10 @@
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    1, 1						   \
++-   , 1, 1, 1, 1, 1, 1				   \
+++   , 1, 1, 1, 1, 1, 1,				   \
+++   /* SPE High registers.  */			   \
+++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
+++   1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1  \
++ }
++ 
++ /* Like `CALL_USED_REGISTERS' except this macro doesn't require that
++@@ -1031,7 +1038,10 @@
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
++    0, 0						   \
++-   , 0, 0, 0, 0, 0, 0				   \
+++   , 0, 0, 0, 0, 0, 0,				   \
+++   /* SPE High registers.  */			   \
+++   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, \
+++   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0  \
++ }
++ 
++ #define TOTAL_ALTIVEC_REGS	(LAST_ALTIVEC_REGNO - FIRST_ALTIVEC_REGNO + 1)
++@@ -1114,7 +1124,10 @@
++    96, 95, 94, 93, 92, 91,					\
++    108, 107, 106, 105, 104, 103, 102, 101, 100, 99, 98, 97,	\
++    109, 110,							\
++-   111, 112, 113, 114, 115, 116					\
+++   111, 112, 113, 114, 115, 116,				\
+++   117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128,  \
+++   129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140,  \
+++   141, 142, 143, 144, 145, 146, 147, 148			\
++ }
++ 
++ /* True if register is floating-point.  */
++@@ -1349,6 +1362,7 @@
++   CR_REGS,
++   NON_FLOAT_REGS,
++   CA_REGS,
+++  SPE_HIGH_REGS,
++   ALL_REGS,
++   LIM_REG_CLASSES
++ };
++@@ -1380,6 +1394,7 @@
++   "CR_REGS",								\
++   "NON_FLOAT_REGS",							\
++   "CA_REGS",								\
+++  "SPE_HIGH_REGS",							\
++   "ALL_REGS"								\
++ }
++ 
++@@ -1387,30 +1402,54 @@
++    This is an initializer for a vector of HARD_REG_SET
++    of length N_REG_CLASSES.  */
++ 
++-#define REG_CLASS_CONTENTS						     \
++-{									     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00000000 }, /* NO_REGS */	     \
++-  { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000 }, /* BASE_REGS */	     \
++-  { 0xffffffff, 0x00000000, 0x00000008, 0x00020000 }, /* GENERAL_REGS */     \
++-  { 0x00000000, 0xffffffff, 0x00000000, 0x00000000 }, /* FLOAT_REGS */       \
++-  { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff }, /* ALTIVEC_REGS */     \
++-  { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff }, /* VSX_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00002000 }, /* VRSAVE_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00004000 }, /* VSCR_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00008000 }, /* SPE_ACC_REGS */     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00010000 }, /* SPEFSCR_REGS */     \
++-  { 0x00000000, 0x00000000, 0x00000000, 0x00040000 }, /* SPR_REGS */     \
++-  { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000 }, /* NON_SPECIAL_REGS */ \
++-  { 0x00000000, 0x00000000, 0x00000002, 0x00000000 }, /* LINK_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000004, 0x00000000 }, /* CTR_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000006, 0x00000000 }, /* LINK_OR_CTR_REGS */ \
++-  { 0x00000000, 0x00000000, 0x00000006, 0x00002000 }, /* SPECIAL_REGS */     \
++-  { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000 }, /* SPEC_OR_GEN_REGS */ \
++-  { 0x00000000, 0x00000000, 0x00000010, 0x00000000 }, /* CR0_REGS */	     \
++-  { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000 }, /* CR_REGS */	     \
++-  { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000 }, /* NON_FLOAT_REGS */   \
++-  { 0x00000000, 0x00000000, 0x00001000, 0x00000000 }, /* CA_REGS */	     \
++-  { 0xffffffff, 0xffffffff, 0xfffffffe, 0x0007ffff }  /* ALL_REGS */	     \
+++#define REG_CLASS_CONTENTS						\
+++{									\
+++  /* NO_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000 },	\
+++  /* BASE_REGS.  */							\
+++  { 0xfffffffe, 0x00000000, 0x00000008, 0x00020000, 0x00000000 },	\
+++  /* GENERAL_REGS.  */							\
+++  { 0xffffffff, 0x00000000, 0x00000008, 0x00020000, 0x00000000 },	\
+++  /* FLOAT_REGS.  */							\
+++  { 0x00000000, 0xffffffff, 0x00000000, 0x00000000, 0x00000000 },	\
+++  /* ALTIVEC_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0xffffe000, 0x00001fff, 0x00000000 },	\
+++  /* VSX_REGS.  */							\
+++  { 0x00000000, 0xffffffff, 0xffffe000, 0x00001fff, 0x00000000 },	\
+++  /* VRSAVE_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00002000, 0x00000000 },	\
+++  /* VSCR_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00004000, 0x00000000 },	\
+++  /* SPE_ACC_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00008000, 0x00000000 },	\
+++  /* SPEFSCR_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0x00000000 },	\
+++  /* SPR_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0x00040000, 0x00000000 },	\
+++  /* NON_SPECIAL_REGS.  */						\
+++  { 0xffffffff, 0xffffffff, 0x00000008, 0x00020000, 0x00000000 },	\
+++  /* LINK_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000002, 0x00000000, 0x00000000 },	\
+++  /* CTR_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000004, 0x00000000, 0x00000000 },	\
+++  /* LINK_OR_CTR_REGS.  */						\
+++  { 0x00000000, 0x00000000, 0x00000006, 0x00000000, 0x00000000 },	\
+++  /* SPECIAL_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000006, 0x00002000, 0x00000000 },	\
+++  /* SPEC_OR_GEN_REGS.  */						\
+++  { 0xffffffff, 0x00000000, 0x0000000e, 0x00022000, 0x00000000 },	\
+++  /* CR0_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000010, 0x00000000, 0x00000000 },	\
+++  /* CR_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000ff0, 0x00000000, 0x00000000 },	\
+++  /* NON_FLOAT_REGS.  */						\
+++  { 0xffffffff, 0x00000000, 0x00000ffe, 0x00020000, 0x00000000 },	\
+++  /* CA_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00001000, 0x00000000, 0x00000000 },	\
+++  /* SPE_HIGH_REGS.  */							\
+++  { 0x00000000, 0x00000000, 0x00000000, 0xffe00000, 0x001fffff },	\
+++  /* ALL_REGS.  */							\
+++  { 0xffffffff, 0xffffffff, 0xfffffffe, 0xffe7ffff, 0x001fffff }	\
++ }
++ 
++ /* The same information, inverted:
++@@ -2349,6 +2388,39 @@
++   &rs6000_reg_names[114][0],	/* tfhar  */				\
++   &rs6000_reg_names[115][0],	/* tfiar  */				\
++   &rs6000_reg_names[116][0],	/* texasr  */				\
+++									\
+++  &rs6000_reg_names[117][0],	/* SPE rh0.  */				\
+++  &rs6000_reg_names[118][0],	/* SPE rh1.  */				\
+++  &rs6000_reg_names[119][0],	/* SPE rh2.  */				\
+++  &rs6000_reg_names[120][0],	/* SPE rh3.  */				\
+++  &rs6000_reg_names[121][0],	/* SPE rh4.  */				\
+++  &rs6000_reg_names[122][0],	/* SPE rh5.  */				\
+++  &rs6000_reg_names[123][0],	/* SPE rh6.  */				\
+++  &rs6000_reg_names[124][0],	/* SPE rh7.  */				\
+++  &rs6000_reg_names[125][0],	/* SPE rh8.  */				\
+++  &rs6000_reg_names[126][0],	/* SPE rh9.  */				\
+++  &rs6000_reg_names[127][0],	/* SPE rh10.  */			\
+++  &rs6000_reg_names[128][0],	/* SPE rh11.  */			\
+++  &rs6000_reg_names[129][0],	/* SPE rh12.  */			\
+++  &rs6000_reg_names[130][0],	/* SPE rh13.  */			\
+++  &rs6000_reg_names[131][0],	/* SPE rh14.  */			\
+++  &rs6000_reg_names[132][0],	/* SPE rh15.  */			\
+++  &rs6000_reg_names[133][0],	/* SPE rh16.  */			\
+++  &rs6000_reg_names[134][0],	/* SPE rh17.  */			\
+++  &rs6000_reg_names[135][0],	/* SPE rh18.  */			\
+++  &rs6000_reg_names[136][0],	/* SPE rh19.  */			\
+++  &rs6000_reg_names[137][0],	/* SPE rh20.  */			\
+++  &rs6000_reg_names[138][0],	/* SPE rh21.  */			\
+++  &rs6000_reg_names[139][0],	/* SPE rh22.  */			\
+++  &rs6000_reg_names[140][0],	/* SPE rh22.  */			\
+++  &rs6000_reg_names[141][0],	/* SPE rh24.  */			\
+++  &rs6000_reg_names[142][0],	/* SPE rh25.  */			\
+++  &rs6000_reg_names[143][0],	/* SPE rh26.  */			\
+++  &rs6000_reg_names[144][0],	/* SPE rh27.  */			\
+++  &rs6000_reg_names[145][0],	/* SPE rh28.  */			\
+++  &rs6000_reg_names[146][0],	/* SPE rh29.  */			\
+++  &rs6000_reg_names[147][0],	/* SPE rh30.  */			\
+++  &rs6000_reg_names[148][0],	/* SPE rh31.  */			\
++ }
++ 
++ /* Table of additional register names to use in user input.  */
++@@ -2404,7 +2476,17 @@
++   {"vs56", 101},{"vs57", 102},{"vs58", 103},{"vs59", 104},      \
++   {"vs60", 105},{"vs61", 106},{"vs62", 107},{"vs63", 108},	\
++   /* Transactional Memory Facility (HTM) Registers.  */		\
++-  {"tfhar",  114}, {"tfiar",  115}, {"texasr",  116} }
+++  {"tfhar",  114}, {"tfiar",  115}, {"texasr",  116},		\
+++  /* SPE high registers.  */					\
+++  {"rh0",  117}, {"rh1",  118}, {"rh2",  119}, {"rh3",  120},	\
+++  {"rh4",  121}, {"rh5",  122}, {"rh6",  123}, {"rh7",  124},	\
+++  {"rh8",  125}, {"rh9",  126}, {"rh10", 127}, {"rh11", 128},	\
+++  {"rh12", 129}, {"rh13", 130}, {"rh14", 131}, {"rh15", 132},	\
+++  {"rh16", 133}, {"rh17", 134}, {"rh18", 135}, {"rh19", 136},	\
+++  {"rh20", 137}, {"rh21", 138}, {"rh22", 139}, {"rh23", 140},	\
+++  {"rh24", 141}, {"rh25", 142}, {"rh26", 143}, {"rh27", 144},	\
+++  {"rh28", 145}, {"rh29", 146}, {"rh30", 147}, {"rh31", 148},	\
+++}
++ 
++ /* This is how to output an element of a case-vector that is relative.  */
++ 
++diff -Nura gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md gcc-4.9.1/gcc/config/rs6000/rs6000.md
++--- gcc-4.9.1.orig/gcc/config/rs6000/rs6000.md	2014-08-05 14:53:37.292498514 -0300
+++++ gcc-4.9.1/gcc/config/rs6000/rs6000.md	2014-08-05 14:58:33.977555904 -0300
++@@ -56,6 +56,8 @@
++    (TFHAR_REGNO			114)
++    (TFIAR_REGNO			115)
++    (TEXASR_REGNO		116)
+++   (FIRST_SPE_HIGH_REGNO	117)
+++   (LAST_SPE_HIGH_REGNO		148)
++   ])
++ 
++ ;;
++diff -Nura gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c
++--- gcc-4.9.1.orig/gcc/testsuite/gcc.target/powerpc/pr60102.c	1969-12-31 21:00:00.000000000 -0300
+++++ gcc-4.9.1/gcc/testsuite/gcc.target/powerpc/pr60102.c	2014-08-05 14:58:13.847873524 -0300
++@@ -0,0 +1,11 @@
+++/* { dg-do compile } */
+++/* { dg-skip-if "not an SPE target" { ! powerpc_spe_nocache } { "*" } { "" } } */
+++/* { dg-options "-mcpu=8548 -mspe -mabi=spe -g -mfloat-gprs=double" } */
+++
+++double
+++pr60102 (double x, int m)
+++{
+++  double y;
+++  y =  m % 2 ? x : 1;
+++  return y;
+++}
++diff -Nura gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h
++--- gcc-4.9.1.orig/libgcc/config/rs6000/linux-unwind.h	2014-08-05 14:53:48.900892029 -0300
+++++ gcc-4.9.1/libgcc/config/rs6000/linux-unwind.h	2014-08-05 14:58:33.979555972 -0300
++@@ -274,8 +274,8 @@
++ #ifdef __SPE__
++   for (i = 14; i < 32; i++)
++     {
++-      fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].how = REG_SAVED_OFFSET;
++-      fs->regs.reg[i + FIRST_PSEUDO_REGISTER - 1].loc.offset
+++      fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].how = REG_SAVED_OFFSET;
+++      fs->regs.reg[i + FIRST_SPE_HIGH_REGNO - 4].loc.offset
++ 	= (long) &regs->vregs - new_cfa + 4 * i;
++     }
++ #endif
+diff --git a/package/gcc/4.9.1/900-musl-support.patch b/package/gcc/4.9.1/900-musl-support.patch
+new file mode 100644
+index 0000000..5b3dfa5
+--- /dev/null
++++ b/package/gcc/4.9.1/900-musl-support.patch
+@@ -0,0 +1,696 @@
++Add musl support to gcc
++
++This patch comes from the musl-cross project at
++https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
++
++ * the config.sub modifications have been removed, because Buildroot
++   already overwrites all config.sub with a more recent config.sub
++   that has musl support.
++
++ * change to ensure that a dummy dynamic linker path
++   MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
++   otherwise building gcc for architectures not supported by musl was
++   causing build failure. Bug reported upstream at
++   https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
++
++[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
++Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++---
++
++Index: b/fixincludes/mkfixinc.sh
++===================================================================
++--- a/fixincludes/mkfixinc.sh
+++++ b/fixincludes/mkfixinc.sh
++@@ -19,7 +19,8 @@
++     powerpc-*-eabi*    | \
++     powerpc-*-rtems*   | \
++     powerpcle-*-eabisim* | \
++-    powerpcle-*-eabi* )
+++    powerpcle-*-eabi* | \
+++    *-musl* )
++ 	#  IF there is no include fixing,
++ 	#  THEN create a no-op fixer and exit
++ 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
++Index: b/gcc/config.gcc
++===================================================================
++--- a/gcc/config.gcc
+++++ b/gcc/config.gcc
++@@ -594,7 +594,7 @@
++ esac
++ 
++ # Common C libraries.
++-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
++ 
++ # 32-bit x86 processors supported by --with-arch=.  Each processor
++ # MUST be separated by exactly one space.
++@@ -719,6 +719,9 @@
++     *-*-*uclibc*)
++       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
++       ;;
+++    *-*-*musl*)
+++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
+++      ;;
++     *)
++       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
++       ;;
++@@ -2323,6 +2326,10 @@
++ 	    powerpc*-*-linux*paired*)
++ 		tm_file="${tm_file} rs6000/750cl.h" ;;
++ 	esac
+++        case ${target} in
+++            *-linux*-musl*)
+++                enable_secureplt=yes ;;
+++        esac
++ 	if test x${enable_secureplt} = xyes; then
++ 		tm_file="rs6000/secureplt.h ${tm_file}"
++ 	fi
++Index: b/gcc/config/aarch64/aarch64-linux.h
++===================================================================
++--- a/gcc/config/aarch64/aarch64-linux.h
+++++ b/gcc/config/aarch64/aarch64-linux.h
++@@ -22,6 +22,8 @@
++ #define GCC_AARCH64_LINUX_H
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
++ 
++ #define CPP_SPEC "%{pthread:-D_REENTRANT}"
++ 
++Index: b/gcc/config/arm/linux-eabi.h
++===================================================================
++--- a/gcc/config/arm/linux-eabi.h
+++++ b/gcc/config/arm/linux-eabi.h
++@@ -77,6 +77,23 @@
++     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
++     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
++ 
+++/* For ARM musl currently supports four dynamic linkers:
+++   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
+++   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
+++   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
+++   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
+++   musl does not support the legacy OABI mode.
+++   All the dynamic linkers live in /lib.
+++   We default to soft-float, EL. */
+++#undef  MUSL_DYNAMIC_LINKER
+++#if TARGET_BIG_ENDIAN_DEFAULT
+++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
+++#endif
+++#define MUSL_DYNAMIC_LINKER \
+++  "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+++
++ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
++    use the GNU/Linux version, not the generic BPABI version.  */
++ #undef  LINK_SPEC
++Index: b/gcc/config/i386/linux.h
++===================================================================
++--- a/gcc/config/i386/linux.h
+++++ b/gcc/config/i386/linux.h
++@@ -21,3 +21,5 @@
++ 
++ #define GNU_USER_LINK_EMULATION "elf_i386"
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
++Index: b/gcc/config/i386/linux64.h
++===================================================================
++--- a/gcc/config/i386/linux64.h
+++++ b/gcc/config/i386/linux64.h
++@@ -30,3 +30,10 @@
++ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
++ #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+++
+++#undef MUSL_DYNAMIC_LINKER32
+++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+++#undef MUSL_DYNAMIC_LINKER64
+++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+++#undef MUSL_DYNAMIC_LINKERX32
+++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
++Index: b/gcc/config/linux.h
++===================================================================
++--- a/gcc/config/linux.h
+++++ b/gcc/config/linux.h
++@@ -32,10 +32,12 @@
++ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
++ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
++ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
++ #else
++ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
++ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
++ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
++ #endif
++ 
++ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
++@@ -53,18 +55,21 @@
++    uClibc or Bionic is the default C library and whether
++    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
++ 
++-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
++-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
+++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
++ 
++ #if DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
++ #elif DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
++ #elif DEFAULT_LIBC == LIBC_BIONIC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif /* DEFAULT_LIBC */
++@@ -82,23 +87,103 @@
++ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
++ #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
++ 
+++/* Musl dynamic linker paths must be defined on a per-architecture
+++   basis, for each architecture supported by Musl. However, in order
+++   to let other architectures continue to build with other C
+++   libraries, we provide a dummy definition of the following defines. */
+++#define MUSL_DYNAMIC_LINKER "invalid"
+++#define MUSL_DYNAMIC_LINKER32 "invalid"
+++#define MUSL_DYNAMIC_LINKER64 "invalid"
+++#define MUSL_DYNAMIC_LINKERX32 "invalid"
+++
++ #define GNU_USER_DYNAMIC_LINKER						\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
++-			 BIONIC_DYNAMIC_LINKER)
+++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
++ #define GNU_USER_DYNAMIC_LINKER32					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
++-			 BIONIC_DYNAMIC_LINKER32)
+++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
++ #define GNU_USER_DYNAMIC_LINKER64					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
++-			 BIONIC_DYNAMIC_LINKER64)
+++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
++ #define GNU_USER_DYNAMIC_LINKERX32					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
++-			 BIONIC_DYNAMIC_LINKERX32)
+++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
++ 
++ /* Whether we have Bionic libc runtime */
++ #undef TARGET_HAS_BIONIC
++ #define TARGET_HAS_BIONIC (OPTION_BIONIC)
++ 
+++/* musl avoids problematic includes by rearranging the include directories.
+++ * Unfortunately, this is mostly duplicated from cppdefault.c */
+++#if DEFAULT_LIBC == LIBC_MUSL
+++#define INCLUDE_DEFAULTS_MUSL_GPP			\
+++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
+++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
+++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+++
+++#ifdef LOCAL_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
+++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
+++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_LOCAL
+++#endif
+++
+++#ifdef PREFIX_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
+++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_PREFIX
+++#endif
+++
+++#ifdef CROSS_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
+++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_CROSS
+++#endif
+++
+++#ifdef TOOL_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
+++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_TOOL
+++#endif
+++
+++#ifdef NATIVE_SYSTEM_HEADER_DIR
+++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
+++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
+++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_NATIVE
+++#endif
+++
+++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
+++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
+++# define INCLUDE_DEFAULTS_MUSL_LOCAL
+++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
+++# define INCLUDE_DEFAULTS_MUSL_NATIVE
+++#else
+++# undef INCLUDE_DEFAULTS_MUSL_CROSS
+++# define INCLUDE_DEFAULTS_MUSL_CROSS
+++#endif
+++
+++#undef INCLUDE_DEFAULTS
+++#define INCLUDE_DEFAULTS				\
+++  {							\
+++    INCLUDE_DEFAULTS_MUSL_GPP				\
+++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
+++    INCLUDE_DEFAULTS_MUSL_CROSS				\
+++    INCLUDE_DEFAULTS_MUSL_TOOL				\
+++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
+++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
+++    { 0, 0, 0, 0, 0, 0 }				\
+++  }
+++#endif
+++
++ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
++ /* This is a *uclinux* target.  We don't define below macros to normal linux
++    versions, because doing so would require *uclinux* targets to include
++Index: b/gcc/config/linux.opt
++===================================================================
++--- a/gcc/config/linux.opt
+++++ b/gcc/config/linux.opt
++@@ -30,3 +30,7 @@
++ muclibc
++ Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
++ Use uClibc C library
+++
+++mmusl
+++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+++Use musl C library
++Index: b/gcc/config/microblaze/linux.h
++===================================================================
++--- a/gcc/config/microblaze/linux.h
+++++ b/gcc/config/microblaze/linux.h
++@@ -25,7 +25,23 @@
++ #undef TLS_NEEDS_GOT
++ #define TLS_NEEDS_GOT 1
++ 
++-#define DYNAMIC_LINKER "/lib/ld.so.1"
+++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
+++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
+++#endif
+++
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
+++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+++
+++#if DEFAULT_LIBC == LIBC_MUSL
+++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
+++#else
+++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
+++#endif
+++
+++
++ #undef  SUBTARGET_EXTRA_SPECS
++ #define SUBTARGET_EXTRA_SPECS \
++   { "dynamic_linker", DYNAMIC_LINKER }
++Index: b/gcc/config/rs6000/linux64.h
++===================================================================
++--- a/gcc/config/rs6000/linux64.h
+++++ b/gcc/config/rs6000/linux64.h
++@@ -375,17 +375,23 @@
++ #endif
++ #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
++ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+++#undef MUSL_DYNAMIC_LINKER32
+++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+++#undef MUSL_DYNAMIC_LINKER64
+++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
++ #if DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
++ #elif DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif
++ #define GNU_USER_DYNAMIC_LINKER32 \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
++ #define GNU_USER_DYNAMIC_LINKER64 \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
++ 
++ #undef  DEFAULT_ASM_ENDIAN
++ #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++Index: b/gcc/config/rs6000/secureplt.h
++===================================================================
++--- a/gcc/config/rs6000/secureplt.h
+++++ b/gcc/config/rs6000/secureplt.h
++@@ -18,3 +18,4 @@
++ <http://www.gnu.org/licenses/>.  */
++ 
++ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
++Index: b/gcc/config/rs6000/sysv4.h
++===================================================================
++--- a/gcc/config/rs6000/sysv4.h
+++++ b/gcc/config/rs6000/sysv4.h
++@@ -537,6 +537,9 @@
++ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
++ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
++ #endif
+++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+++#endif
++ 
++ /* Pass -G xxx to the compiler.  */
++ #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
++@@ -585,7 +588,8 @@
++ 
++ /* Override the default target of the linker.  */
++ #define	LINK_TARGET_SPEC \
++-  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
+++  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
+++  "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
++ 
++ /* Any specific OS flags.  */
++ #define LINK_OS_SPEC "\
++@@ -763,15 +767,18 @@
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++ #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
++ #if DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
++ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif
++ #define GNU_USER_DYNAMIC_LINKER \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
++ 
++ #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++   %{rdynamic:-export-dynamic} \
++@@ -894,6 +901,7 @@
++   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
++   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
++   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
+++  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
++   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
++   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
++   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
++Index: b/gcc/config/sh/linux.h
++===================================================================
++--- a/gcc/config/sh/linux.h
+++++ b/gcc/config/sh/linux.h
++@@ -43,7 +43,15 @@
++ 
++ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++ 
+++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
+++#define MUSL_DYNAMIC_LINKER_E "eb"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E
+++#endif
+++
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
++ 
++ #undef SUBTARGET_LINK_EMUL_SUFFIX
++ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
++Index: b/gcc/configure
++===================================================================
++--- a/gcc/configure
+++++ b/gcc/configure
++@@ -27300,6 +27300,9 @@
++ else
++   gcc_cv_libc_provides_ssp=no
++     case "$target" in
+++       *-*-musl*)
+++         # All versions of musl provide stack protector
+++	 gcc_cv_libc_provides_ssp=yes;;
++        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
++       # glibc 2.4 and later provides __stack_chk_fail and
++       # either __stack_chk_guard, or TLS access to stack guard canary.
++@@ -27332,6 +27335,7 @@
++ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
++ 	 # simply assert that glibc does provide this, which is true for all
++ 	 # realistically usable GNU/Hurd configurations.
+++	 # All supported versions of musl provide it as well
++ 	 gcc_cv_libc_provides_ssp=yes;;
++        *-*-darwin* | *-*-freebsd*)
++ 	 ac_fn_c_check_func "$LINENO" "__stack_chk_fail" "ac_cv_func___stack_chk_fail"
++@@ -27421,6 +27425,9 @@
++       gcc_cv_target_dl_iterate_phdr=no
++     fi
++     ;;
+++  *-linux-musl*)
+++    gcc_cv_target_dl_iterate_phdr=yes
+++    ;;
++ esac
++ 
++ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
++Index: b/gcc/configure.ac
++===================================================================
++--- a/gcc/configure.ac
+++++ b/gcc/configure.ac
++@@ -5001,6 +5001,9 @@
++       gcc_cv_libc_provides_ssp,
++       [gcc_cv_libc_provides_ssp=no
++     case "$target" in
+++       *-*-musl*)
+++         # All versions of musl provide stack protector
+++	 gcc_cv_libc_provides_ssp=yes;;
++        *-*-linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu)
++       # glibc 2.4 and later provides __stack_chk_fail and
++       # either __stack_chk_guard, or TLS access to stack guard canary.
++@@ -5027,6 +5030,7 @@
++ 	 # <http://gcc.gnu.org/ml/gcc/2008-10/msg00130.html>) and for now
++ 	 # simply assert that glibc does provide this, which is true for all
++ 	 # realistically usable GNU/Hurd configurations.
+++	 # All supported versions of musl provide it as well
++ 	 gcc_cv_libc_provides_ssp=yes;;
++        *-*-darwin* | *-*-freebsd*)
++ 	 AC_CHECK_FUNC(__stack_chk_fail,[gcc_cv_libc_provides_ssp=yes],
++@@ -5093,6 +5097,9 @@
++       gcc_cv_target_dl_iterate_phdr=no
++     fi
++     ;;
+++  *-linux-musl*)
+++    gcc_cv_target_dl_iterate_phdr=yes
+++    ;;
++ esac
++ GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
++ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
++Index: b/gcc/ginclude/stddef.h
++===================================================================
++--- a/gcc/ginclude/stddef.h
+++++ b/gcc/ginclude/stddef.h
++@@ -181,6 +181,7 @@
++ #ifndef _GCC_SIZE_T
++ #ifndef _SIZET_
++ #ifndef __size_t
+++#ifndef __DEFINED_size_t /* musl */
++ #define __size_t__	/* BeOS */
++ #define __SIZE_T__	/* Cray Unicos/Mk */
++ #define _SIZE_T
++@@ -197,6 +198,7 @@
++ #define ___int_size_t_h
++ #define _GCC_SIZE_T
++ #define _SIZET_
+++#define __DEFINED_size_t /* musl */
++ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
++   || defined(__FreeBSD_kernel__)
++ /* __size_t is a typedef on FreeBSD 5, must not trash it. */
++@@ -214,6 +216,7 @@
++ typedef long ssize_t;
++ #endif /* __BEOS__ */
++ #endif /* !(defined (__GNUG__) && defined (size_t)) */
+++#endif /* __DEFINED_size_t */
++ #endif /* __size_t */
++ #endif /* _SIZET_ */
++ #endif /* _GCC_SIZE_T */
++Index: b/libgcc/unwind-dw2-fde-dip.c
++===================================================================
++--- a/libgcc/unwind-dw2-fde-dip.c
+++++ b/libgcc/unwind-dw2-fde-dip.c
++@@ -46,33 +46,13 @@
++ #include "unwind-compat.h"
++ #include "gthr.h"
++ 
++-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++-    && (__GLIBC__ > 2 || (__GLIBC__ == 2 && __GLIBC_MINOR__ > 2) \
++-	|| (__GLIBC__ == 2 && __GLIBC_MINOR__ == 2 && defined(DT_CONFIG)))
++-# define USE_PT_GNU_EH_FRAME
++-#endif
++-
++-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++-    && defined(__BIONIC__)
++-# define USE_PT_GNU_EH_FRAME
++-#endif
++-
++-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++-    && defined(__FreeBSD__) && __FreeBSD__ >= 7
++-# define ElfW __ElfN
++-# define USE_PT_GNU_EH_FRAME
++-#endif
++-
++-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++-    && defined(__OpenBSD__)
++-# define ElfW(type) Elf_##type
++-# define USE_PT_GNU_EH_FRAME
++-#endif
++-
++-#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) \
++-    && defined(TARGET_DL_ITERATE_PHDR) \
++-    && defined(__sun__) && defined(__svr4__)
+++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR) && defined(TARGET_DL_ITERATE_PHDR)
++ # define USE_PT_GNU_EH_FRAME
+++# ifdef __OpenBSD__
+++#  define ElfW(type) Elf_##type
+++# elif defined(__FreeBSD__) && __FreeBSD__ >= 7
+++#  define ElfW __ElfN
+++# endif
++ #endif
++ 
++ #if defined(USE_PT_GNU_EH_FRAME)
++Index: b/libgomp/config/posix/time.c
++===================================================================
++--- a/libgomp/config/posix/time.c
+++++ b/libgomp/config/posix/time.c
++@@ -28,6 +28,8 @@
++    The following implementation uses the most simple POSIX routines.
++    If present, POSIX 4 clocks should be used instead.  */
++ 
+++#define _POSIX_C_SOURCE 199309L /* for clocks */
+++
++ #include "libgomp.h"
++ #include <unistd.h>
++ #if TIME_WITH_SYS_TIME
++Index: b/libitm/config/arm/hwcap.cc
++===================================================================
++--- a/libitm/config/arm/hwcap.cc
+++++ b/libitm/config/arm/hwcap.cc
++@@ -40,7 +40,11 @@
++ 
++ #ifdef __linux__
++ #include <unistd.h>
+++#ifdef __GLIBC__
++ #include <sys/fcntl.h>
+++#else
+++#include <fcntl.h>
+++#endif
++ #include <elf.h>
++ 
++ static void __attribute__((constructor))
++Index: b/libitm/config/linux/x86/tls.h
++===================================================================
++--- a/libitm/config/linux/x86/tls.h
+++++ b/libitm/config/linux/x86/tls.h
++@@ -25,16 +25,19 @@
++ #ifndef LIBITM_X86_TLS_H
++ #define LIBITM_X86_TLS_H 1
++ 
++-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+++#if defined(__GLIBC_PREREQ)
+++#if __GLIBC_PREREQ(2, 10)
++ /* Use slots in the TCB head rather than __thread lookups.
++    GLIBC has reserved words 10 through 13 for TM.  */
++ #define HAVE_ARCH_GTM_THREAD 1
++ #define HAVE_ARCH_GTM_THREAD_DISP 1
++ #endif
+++#endif
++ 
++ #include "config/generic/tls.h"
++ 
++-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+++#if defined(__GLIBC_PREREQ)
+++#if __GLIBC_PREREQ(2, 10)
++ namespace GTM HIDDEN {
++ 
++ #ifdef __x86_64__
++@@ -101,5 +104,6 @@
++ 
++ } // namespace GTM
++ #endif /* >= GLIBC 2.10 */
+++#endif
++ 
++ #endif // LIBITM_X86_TLS_H
++Index: b/libstdc++-v3/configure.host
++===================================================================
++--- a/libstdc++-v3/configure.host
+++++ b/libstdc++-v3/configure.host
++@@ -264,6 +264,13 @@
++     os_include_dir="os/bsd/freebsd"
++     ;;
++   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+++    # check for musl by target
+++    case "${host_os}" in
+++      *-musl*)
+++        os_include_dir="os/generic"
+++        ;;
+++      *)
+++
++     if [ "$uclibc" = "yes" ]; then
++       os_include_dir="os/uclibc"
++     elif [ "$bionic" = "yes" ]; then
++@@ -272,6 +279,9 @@
++       os_include_dir="os/gnu-linux"
++     fi
++     ;;
+++
+++    esac
+++    ;;
++   hpux*)
++     os_include_dir="os/hpux"
++     ;;
++Index: b/gcc/config/mips/linux64.h
++===================================================================
++--- a/gcc/config/mips/linux64.h
+++++ b/gcc/config/mips/linux64.h
++@@ -41,4 +41,4 @@
++ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
++ #define GNU_USER_DYNAMIC_LINKERN32 \
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
++-			 BIONIC_DYNAMIC_LINKERN32)
+++			 BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
++Index: b/gcc/config/mips/linux.h
++===================================================================
++--- a/gcc/config/mips/linux.h
+++++ b/gcc/config/mips/linux.h
++@@ -23,3 +23,11 @@
++ #undef UCLIBC_DYNAMIC_LINKER
++ #define UCLIBC_DYNAMIC_LINKER \
++   "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
+++
+++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
+++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
+++#endif
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E ".so.1"
+diff --git a/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
+new file mode 100644
+index 0000000..b7094fe
+--- /dev/null
++++ b/package/gcc/4.9.1/powerpc-link-with-math-lib.patch.conditional
+@@ -0,0 +1,122 @@
++http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
++
++On glibc the libc.so carries a copy of the math function copysignl() but
++on uClibc math functions like copysignl() live in libm. Since libgcc_s
++contains unresolved symbols, any attempt to link against libgcc_s
++without explicitely specifying -lm fails, resulting in a broken
++bootstrap of the compiler.
++
++Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++---
++ libgcc/Makefile.in  |    4 +++-
++ libgcc/configure    |   32 ++++++++++++++++++++++++++++++++
++ libgcc/configure.ac |   21 +++++++++++++++++++++
++ 3 files changed, 56 insertions(+), 1 deletion(-)
++
++Index: gcc-4.8.0/libgcc/Makefile.in
++===================================================================
++--- gcc-4.8.0.orig/libgcc/Makefile.in	2013-02-04 20:06:20.000000000 +0100
+++++ gcc-4.8.0/libgcc/Makefile.in	2013-03-24 09:12:43.000000000 +0100
++@@ -41,6 +41,7 @@
++ decimal_float = @decimal_float@
++ enable_decimal_float = @enable_decimal_float@
++ fixed_point = @fixed_point@
+++LIBGCC_LIBM = @LIBGCC_LIBM@
++ 
++ host_noncanonical = @host_noncanonical@
++ target_noncanonical = @target_noncanonical@
++@@ -927,9 +928,10 @@
++ 		@multilib_dir@,$(MULTIDIR),$(subst \
++ 		@shlib_objs@,$(objects) libgcc.a,$(subst \
++ 		@shlib_base_name@,libgcc_s,$(subst \
+++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
++ 		@shlib_map_file@,$(mapfile),$(subst \
++ 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
++-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
+++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
++ 
++ libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
++ 	# @multilib_flags@ is still needed because this may use
++Index: gcc-4.8.0/libgcc/configure
++===================================================================
++--- gcc-4.8.0.orig/libgcc/configure	2012-11-05 00:08:42.000000000 +0100
+++++ gcc-4.8.0/libgcc/configure	2013-03-24 09:12:43.000000000 +0100
++@@ -564,6 +564,7 @@
++ tmake_file
++ sfp_machine_header
++ set_use_emutls
+++LIBGCC_LIBM
++ set_have_cc_tls
++ vis_hide
++ fixed_point
++@@ -4481,6 +4482,37 @@
++ 	fi
++ fi
++ 
+++# On powerpc libgcc_s references copysignl which is a libm function but
+++# glibc apparently also provides it via libc as opposed to uClibc where
+++# it lives in libm.
+++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
+++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
+++if test "${libgcc_cv_copysignl_lib+set}" = set; then
+++  echo $ECHO_N "(cached) $ECHO_C" >&6
+++else
+++
+++    echo '#include <features.h>' > conftest.c
+++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
+++    libgcc_cv_copysignl_lib="-lc"
+++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
+++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+++  (eval $ac_try) 2>&5
+++  ac_status=$?
+++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+++  (exit $ac_status); }; }
+++    then
+++       libgcc_cv_copysignl_lib="-lm"
+++    fi
+++    rm -f conftest.*
+++
+++fi
+++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
+++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
+++
+++case /${libgcc_cv_copysignl_lib}/ in
+++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
+++  *) LIBGCC_LIBM= ;;
+++esac
++ 
++ # Conditionalize the makefile for this target machine.
++ tmake_file_=
++Index: gcc-4.8.0/libgcc/configure.ac
++===================================================================
++--- gcc-4.8.0.orig/libgcc/configure.ac	2012-10-15 15:10:30.000000000 +0200
+++++ gcc-4.8.0/libgcc/configure.ac	2013-03-24 09:12:43.000000000 +0100
++@@ -326,6 +326,27 @@
++ fi
++ AC_SUBST(set_have_cc_tls)
++ 
+++# On powerpc libgcc_s references copysignl which is a libm function but
+++# glibc apparently also provides it via libc as opposed to uClibc where
+++# it lives in libm.
+++AC_CACHE_CHECK
+++  libgcc_cv_copysignl_lib,
+++    echo '#include <features.h>' > conftest.c
+++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
+++    libgcc_cv_copysignl_lib="-lc"
+++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
+++    then
+++       libgcc_cv_copysignl_lib="-lm"
+++    fi
+++    rm -f conftest.*
+++  ])
+++
+++case /${libgcc_cv_copysignl_lib}/ in
+++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
+++  *) LIBGCC_LIBM= ;;
+++esac
+++AC_SUBST(LIBGCC_LIBM)
+++
++ # See if we have emulated thread-local storage.
++ GCC_CHECK_EMUTLS
++ set_use_emutls=
+diff --git a/package/gcc/4.9.3/100-uclibc-conf.patch b/package/gcc/4.9.3/100-uclibc-conf.patch
+new file mode 100644
+index 0000000..d56bf0a
+--- /dev/null
++++ b/package/gcc/4.9.3/100-uclibc-conf.patch
+@@ -0,0 +1,15 @@
++Index: gcc-4.8.0/contrib/regression/objs-gcc.sh
++===================================================================
++--- gcc-4.8.0.orig/contrib/regression/objs-gcc.sh	2009-04-09 17:00:19.000000000 +0200
+++++ gcc-4.8.0/contrib/regression/objs-gcc.sh	2013-03-23 17:39:04.000000000 +0100
++@@ -106,6 +106,10 @@
++  then
++   make all-gdb all-dejagnu all-ld || exit 1
++   make install-gdb install-dejagnu install-ld || exit 1
+++elif [ $H_REAL_TARGET = $H_REAL_HOST -a $H_REAL_TARGET = i686-pc-linux-uclibc ]
+++ then
+++  make all-gdb all-dejagnu all-ld || exit 1
+++  make install-gdb install-dejagnu install-ld || exit 1
++ elif [ $H_REAL_TARGET = $H_REAL_HOST ] ; then
++   make bootstrap || exit 1
++   make install || exit 1
+diff --git a/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
+new file mode 100644
+index 0000000..b7094fe
+--- /dev/null
++++ b/package/gcc/4.9.3/1000-powerpc-link-with-math-lib.patch.conditional
+@@ -0,0 +1,122 @@
++http://gcc.gnu.org/ml/gcc-patches/2008-10/msg00269.html
++
++On glibc the libc.so carries a copy of the math function copysignl() but
++on uClibc math functions like copysignl() live in libm. Since libgcc_s
++contains unresolved symbols, any attempt to link against libgcc_s
++without explicitely specifying -lm fails, resulting in a broken
++bootstrap of the compiler.
++
++Forward port to gcc 4.5.1 by Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++---
++ libgcc/Makefile.in  |    4 +++-
++ libgcc/configure    |   32 ++++++++++++++++++++++++++++++++
++ libgcc/configure.ac |   21 +++++++++++++++++++++
++ 3 files changed, 56 insertions(+), 1 deletion(-)
++
++Index: gcc-4.8.0/libgcc/Makefile.in
++===================================================================
++--- gcc-4.8.0.orig/libgcc/Makefile.in	2013-02-04 20:06:20.000000000 +0100
+++++ gcc-4.8.0/libgcc/Makefile.in	2013-03-24 09:12:43.000000000 +0100
++@@ -41,6 +41,7 @@
++ decimal_float = @decimal_float@
++ enable_decimal_float = @enable_decimal_float@
++ fixed_point = @fixed_point@
+++LIBGCC_LIBM = @LIBGCC_LIBM@
++ 
++ host_noncanonical = @host_noncanonical@
++ target_noncanonical = @target_noncanonical@
++@@ -927,9 +928,10 @@
++ 		@multilib_dir@,$(MULTIDIR),$(subst \
++ 		@shlib_objs@,$(objects) libgcc.a,$(subst \
++ 		@shlib_base_name@,libgcc_s,$(subst \
+++		@libgcc_libm@,$(LIBGCC_LIBM),$(subst \
++ 		@shlib_map_file@,$(mapfile),$(subst \
++ 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \
++-		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK))))))))
+++		@shlib_slibdir@,$(shlib_slibdir),$(SHLIB_LINK)))))))))
++ 
++ libunwind$(SHLIB_EXT): $(libunwind-s-objects) $(extra-parts)
++ 	# @multilib_flags@ is still needed because this may use
++Index: gcc-4.8.0/libgcc/configure
++===================================================================
++--- gcc-4.8.0.orig/libgcc/configure	2012-11-05 00:08:42.000000000 +0100
+++++ gcc-4.8.0/libgcc/configure	2013-03-24 09:12:43.000000000 +0100
++@@ -564,6 +564,7 @@
++ tmake_file
++ sfp_machine_header
++ set_use_emutls
+++LIBGCC_LIBM
++ set_have_cc_tls
++ vis_hide
++ fixed_point
++@@ -4481,6 +4482,37 @@
++ 	fi
++ fi
++ 
+++# On powerpc libgcc_s references copysignl which is a libm function but
+++# glibc apparently also provides it via libc as opposed to uClibc where
+++# it lives in libm.
+++echo "$as_me:$LINENO: checking for library containing copysignl" >&5
+++echo $ECHO_N "checking for library containing copysignl... $ECHO_C" >&6
+++if test "${libgcc_cv_copysignl_lib+set}" = set; then
+++  echo $ECHO_N "(cached) $ECHO_C" >&6
+++else
+++
+++    echo '#include <features.h>' > conftest.c
+++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
+++    libgcc_cv_copysignl_lib="-lc"
+++    if { ac_try='${CC-cc} -S conftest.c -o conftest.s 1>&5'
+++  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
+++  (eval $ac_try) 2>&5
+++  ac_status=$?
+++  echo "$as_me:$LINENO: \$? = $ac_status" >&5
+++  (exit $ac_status); }; }
+++    then
+++       libgcc_cv_copysignl_lib="-lm"
+++    fi
+++    rm -f conftest.*
+++
+++fi
+++echo "$as_me:$LINENO: result: $libgcc_cv_copysignl_lib" >&5
+++echo "${ECHO_T}$libgcc_cv_copysignl_lib" >&6
+++
+++case /${libgcc_cv_copysignl_lib}/ in
+++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
+++  *) LIBGCC_LIBM= ;;
+++esac
++ 
++ # Conditionalize the makefile for this target machine.
++ tmake_file_=
++Index: gcc-4.8.0/libgcc/configure.ac
++===================================================================
++--- gcc-4.8.0.orig/libgcc/configure.ac	2012-10-15 15:10:30.000000000 +0200
+++++ gcc-4.8.0/libgcc/configure.ac	2013-03-24 09:12:43.000000000 +0100
++@@ -326,6 +326,27 @@
++ fi
++ AC_SUBST(set_have_cc_tls)
++ 
+++# On powerpc libgcc_s references copysignl which is a libm function but
+++# glibc apparently also provides it via libc as opposed to uClibc where
+++# it lives in libm.
+++AC_CACHE_CHECK
+++  libgcc_cv_copysignl_lib,
+++    echo '#include <features.h>' > conftest.c
+++    echo 'int the_libc = __UCLIBC__ + __powerpc__;' >> conftest.c
+++    libgcc_cv_copysignl_lib="-lc"
+++    if AC_TRY_COMMAND(${CC-cc} -S conftest.c -o conftest.s 1>&AS_MESSAGE_LOG_FD)
+++    then
+++       libgcc_cv_copysignl_lib="-lm"
+++    fi
+++    rm -f conftest.*
+++  ])
+++
+++case /${libgcc_cv_copysignl_lib}/ in
+++  /-lm/) LIBGCC_LIBM="$LIBGCC_LIBM -lm" ;;
+++  *) LIBGCC_LIBM= ;;
+++esac
+++AC_SUBST(LIBGCC_LIBM)
+++
++ # See if we have emulated thread-local storage.
++ GCC_CHECK_EMUTLS
++ set_use_emutls=
+diff --git a/package/gcc/4.9.3/111-pr65730.patch b/package/gcc/4.9.3/111-pr65730.patch
+new file mode 100644
+index 0000000..f195e30
+--- /dev/null
++++ b/package/gcc/4.9.3/111-pr65730.patch
+@@ -0,0 +1,37 @@
++From b9a7775674d91c7af8043a83211ffeaa576327d7 Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Fri, 10 Apr 2015 17:46:30 +0300
++Subject: [PATCH] Fix PR target/65730
++
++2015-05-20  Max Filippov  <jcmvbkbc@gmail.com>
++gcc/
++	* config/xtensa/xtensa.c (init_alignment_context): Replace MULT
++	by BITS_PER_UNIT with ASHIFT by exact_log2 (BITS_PER_UNIT).
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: svn+ssh://gcc.gnu.org/svn/gcc/trunk@223452
++Changes to ChangeLog are dropped.
++
++ gcc/config/xtensa/xtensa.c | 5 +++--
++ 1 file changed, 3 insertions(+), 2 deletions(-)
++
++diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
++index eb039ba..7296e36 100644
++--- a/gcc/config/xtensa/xtensa.c
+++++ b/gcc/config/xtensa/xtensa.c
++@@ -1461,8 +1461,9 @@ init_alignment_context (struct alignment_context *ac, rtx mem)
++   if (ac->shift != NULL_RTX)
++     {
++       /* Shift is the byte count, but we need the bitcount.  */
++-      ac->shift = expand_simple_binop (SImode, MULT, ac->shift,
++-				       GEN_INT (BITS_PER_UNIT),
+++      gcc_assert (exact_log2 (BITS_PER_UNIT) >= 0);
+++      ac->shift = expand_simple_binop (SImode, ASHIFT, ac->shift,
+++				       GEN_INT (exact_log2 (BITS_PER_UNIT)),
++ 				       NULL_RTX, 1, OPTAB_DIRECT);
++       ac->modemask = expand_simple_binop (SImode, ASHIFT,
++ 					  GEN_INT (GET_MODE_MASK (mode)),
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
+new file mode 100644
+index 0000000..c11ad35
+--- /dev/null
++++ b/package/gcc/4.9.3/120-gcc-config.gcc-fix-typo-for-powerpc-e6500-cpu_is_64b.patch
+@@ -0,0 +1,29 @@
++From 9bf6066d588632dab9f78932df15b5b4140f31f3 Mon Sep 17 00:00:00 2001
++From: "Arnout Vandecappelle (Essensium/Mind)" <arnout@mind.be>
++Date: Fri, 6 Nov 2015 14:27:23 +0100
++Subject: [PATCH] gcc/config.gcc: fix typo for powerpc e6500 cpu_is_64bit
++
++Otherwise it is not recognized as a 64-bit powerpc and gcc will not generate
++64-bit binaries by default.
++
++Signed-off-by: Arnout Vandecappelle (Essensium/Mind) <arnout@mind.be>
++---
++ gcc/config.gcc | 2 +-
++ 2 files changed, 4 insertions(+), 1 deletion(-)
++
++diff --git a/gcc/config.gcc b/gcc/config.gcc
++index 4a7cbd2..9cc765e 100644
++--- a/gcc/config.gcc
+++++ b/gcc/config.gcc
++@@ -439,7 +439,7 @@ powerpc*-*-*)
++ 	cpu_type=rs6000
++ 	extra_headers="ppc-asm.h altivec.h spe.h ppu_intrinsics.h paired.h spu2vmx.h vec_types.h si2vmx.h htmintrin.h htmxlintrin.h"
++ 	case x$with_cpu in
++-	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|Xe6500)
+++	    xpowerpc64|xdefault64|x6[23]0|x970|xG5|xpower[345678]|xpower6x|xrs64a|xcell|xa2|xe500mc64|xe5500|xe6500)
++ 		cpu_is_64bit=yes
++ 		;;
++ 	esac
++-- 
++2.6.2
++
+diff --git a/package/gcc/4.9.3/130-pr43538.patch b/package/gcc/4.9.3/130-pr43538.patch
+new file mode 100644
+index 0000000..19e57bb
+--- /dev/null
++++ b/package/gcc/4.9.3/130-pr43538.patch
+@@ -0,0 +1,25 @@
++From c037df1be41f8daf4d581d7ffa4ec8cfa640bccf Mon Sep 17 00:00:00 2001
++From: glisse <glisse@138bc75d-0d04-0410-961f-82ee72b054a4>
++Date: Fri, 25 Apr 2014 08:03:08 +0000
++Subject: [PATCH] 2014-04-25  Marc Glisse  <marc.glisse@inria.fr>
++
++	PR target/43538
++	* mt-gnu: Don't reset CXXFLAGS_FOR_TARGET.
++
++
++git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@209784 138bc75d-0d04-0410-961f-82ee72b054a4
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++ config/mt-gnu    | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/config/mt-gnu b/config/mt-gnu
++index 15bf417..5c696f5 100644
++--- a/config/mt-gnu
+++++ b/config/mt-gnu
++@@ -1 +1 @@
++-CXXFLAGS_FOR_TARGET = $(CXXFLAGS) -D_GNU_SOURCE
+++CXXFLAGS_FOR_TARGET += -D_GNU_SOURCE
++-- 
++2.1.4
++
+diff --git a/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
+new file mode 100644
+index 0000000..55f3228
+--- /dev/null
++++ b/package/gcc/4.9.3/140-sanitizer-Fix-build-with-_FILE_OFFSET_BITS-64.patch
+@@ -0,0 +1,37 @@
++From 3c536954a67a883630f4a7513a27f02a892c3dcb Mon Sep 17 00:00:00 2001
++From: Evgeniy Stepanov <eugeni.stepanov@gmail.com>
++Date: Tue, 21 Oct 2014 21:08:13 +0000
++Subject: [PATCH] [sanitizer] Fix build with _FILE_OFFSET_BITS=64.
++
++Sanitizer source is not affected by _FILE_OFFSET_BITS in general,
++but this one file must be built with 32-bit off_t. More details in the code.
++
++git-svn-id: https://llvm.org/svn/llvm-project/compiler-rt/trunk@220328 91177308-0d34-0410-b5e6-96231b3b80d8
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++ lib/sanitizer_common/sanitizer_platform_limits_posix.cc | 8 ++++++++
++ 1 file changed, 8 insertions(+)
++
++diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++index bbc1108..fc09522 100644
++--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
+++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc
++@@ -13,7 +13,15 @@
++ 
++ #include "sanitizer_platform.h"
++ #if SANITIZER_LINUX || SANITIZER_MAC
+++// Tests in this file assume that off_t-dependent data structures match the
+++// libc ABI. For example, struct dirent here is what readdir() function (as
+++// exported from libc) returns, and not the user-facing "dirent", which
+++// depends on _FILE_OFFSET_BITS setting.
+++// To get this "true" dirent definition, we undefine _FILE_OFFSET_BITS below.
+++#ifdef _FILE_OFFSET_BITS
+++#undef _FILE_OFFSET_BITS
+++#endif
++ 
++ #include "sanitizer_internal_defs.h"
++ #include "sanitizer_platform_limits_posix.h"
++ 
++-- 
++2.1.4
++
+diff --git a/package/gcc/4.9.3/301-missing-execinfo_h.patch b/package/gcc/4.9.3/301-missing-execinfo_h.patch
+new file mode 100644
+index 0000000..00efda2
+--- /dev/null
++++ b/package/gcc/4.9.3/301-missing-execinfo_h.patch
+@@ -0,0 +1,13 @@
++Index: gcc-4.8.0/boehm-gc/include/gc.h
++===================================================================
++--- gcc-4.8.0.orig/boehm-gc/include/gc.h	2007-04-23 23:10:09.000000000 +0200
+++++ gcc-4.8.0/boehm-gc/include/gc.h	2013-03-23 17:39:20.000000000 +0100
++@@ -503,7 +503,7 @@
++ #if defined(__linux__) || defined(__GLIBC__)
++ # include <features.h>
++ # if (__GLIBC__ == 2 && __GLIBC_MINOR__ >= 1 || __GLIBC__ > 2) \
++-     && !defined(__ia64__)
+++     && !defined(__ia64__) && !defined(__UCLIBC__)
++ #   ifndef GC_HAVE_BUILTIN_BACKTRACE
++ #     define GC_HAVE_BUILTIN_BACKTRACE
++ #   endif
+diff --git a/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
+new file mode 100644
+index 0000000..c8cb377
+--- /dev/null
++++ b/package/gcc/4.9.3/810-arm-softfloat-libgcc.patch
+@@ -0,0 +1,30 @@
++Index: gcc-4.8.0/gcc/config/arm/linux-elf.h
++===================================================================
++--- gcc-4.8.0.orig/gcc/config/arm/linux-elf.h	2013-01-10 21:38:27.000000000 +0100
+++++ gcc-4.8.0/gcc/config/arm/linux-elf.h	2013-03-23 17:40:00.000000000 +0100
++@@ -55,7 +55,7 @@
++    %{shared:-lc} \
++    %{!shared:%{profile:-lc_p}%{!profile:-lc}}"
++ 
++-#define LIBGCC_SPEC "%{mfloat-abi=soft*:-lfloat} -lgcc"
+++#define LIBGCC_SPEC "-lgcc"
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
++ 
++Index: gcc-4.8.0/libgcc/config/arm/t-linux
++===================================================================
++--- gcc-4.8.0.orig/libgcc/config/arm/t-linux	2012-03-22 16:14:46.000000000 +0100
+++++ gcc-4.8.0/libgcc/config/arm/t-linux	2013-03-23 17:40:54.000000000 +0100
++@@ -1,6 +1,11 @@
++ LIB1ASMSRC = arm/lib1funcs.S
++ LIB1ASMFUNCS = _udivsi3 _divsi3 _umodsi3 _modsi3 _dvmd_lnx _clzsi2 _clzdi2 \
++-	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3
+++	_ctzsi2 _arm_addsubdf3 _arm_addsubsf3 \
+++	_arm_addsubdf3 _arm_addsubsf3 \
+++	_arm_negdf2 _arm_muldivdf3 _arm_cmpdf2 _arm_unorddf2 \
+++	_arm_fixdfsi _arm_fixunsdfsi _arm_truncdfsf2 \
+++	_arm_negsf2 _arm_muldivsf3 _arm_cmpsf2 _arm_unordsf2 \
+++	_arm_fixsfsi _arm_fixunssfsi
++ 
++ # Just for these, we omit the frame pointer since it makes such a big
++ # difference.
+diff --git a/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
+new file mode 100644
+index 0000000..37f8f2a
+--- /dev/null
++++ b/package/gcc/4.9.3/830-arm_unbreak_armv4t.patch
+@@ -0,0 +1,13 @@
++http://sourceware.org/ml/crossgcc/2008-05/msg00009.html
++
++--- a/gcc/config/arm/linux-eabi.h
+++++ b/gcc/config/arm/linux-eabi.h
++@@ -45,7 +45,7 @@
++    The ARM10TDMI core is the default for armv5t, so set
++    SUBTARGET_CPU_DEFAULT to achieve this.  */
++ #undef  SUBTARGET_CPU_DEFAULT
++-#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm10tdmi
+++#define SUBTARGET_CPU_DEFAULT TARGET_CPU_arm9tdmi
++ 
++ /* TARGET_BIG_ENDIAN_DEFAULT is set in
++    config.gcc for big endian configurations.  */
+diff --git a/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
+new file mode 100644
+index 0000000..e116e2b
+--- /dev/null
++++ b/package/gcc/4.9.3/840-microblaze-enable-dwarf-eh-support.patch
+@@ -0,0 +1,169 @@
++Fetched from Xilinx gcc git at https://github.com/Xilinx/gcc
++
++From 23c35173490ac2d6348a668dfc9c1a6eb62171f2 Mon Sep 17 00:00:00 2001
++From: "Edgar E. Iglesias" <edgar.iglesias@gmail.com>
++Date: Mon, 18 Jun 2012 20:18:13 +0200
++Subject: [PATCH] [Patch, microblaze]: Enable DWARF exception handling support.
++
++Changelog
++
++2013-03-18  Edgar E. Iglesias <edgar.iglesias@xilinx.com>
++            David Holsgrove <david.holsgrove@xilinx.com>
++
++ * common/config/microblaze/microblaze-common.c: Remove
++   TARGET_EXCEPT_UNWIND_INFO definition.
++ * config/microblaze/microblaze-protos.h: Add
++   microblaze_eh_return prototype.
++ * gcc/config/microblaze/microblaze.c: (microblaze_must_save_register,
++   microblaze_expand_epilogue, microblaze_return_addr): Handle
++   calls_eh_return
++   (microblaze_eh_return): New function.
++ * gcc/config/microblaze/microblaze.h: Define RETURN_ADDR_OFFSET,
++   EH_RETURN_DATA_REGNO, MB_EH_STACKADJ_REGNUM, EH_RETURN_STACKADJ_RTX,
++   ASM_PREFERRED_EH_DATA_FORMAT
++ * gcc/config/microblaze/microblaze.md: Define eh_return pattern.
++
++Signed-off-by: David Holsgrove <david.holsgrove@xilinx.com>
++Signed-off-by: Edgar E. Iglesias <edgar.iglesias@gmail.com>
++---
++ gcc/common/config/microblaze/microblaze-common.c |  3 ---
++ gcc/config/microblaze/microblaze-protos.h        |  1 +
++ gcc/config/microblaze/microblaze.c               | 29 ++++++++++++++++++++----
++ gcc/config/microblaze/microblaze.h               | 15 ++++++++++++
++ gcc/config/microblaze/microblaze.md              | 11 +++++++++
++ 5 files changed, 52 insertions(+), 7 deletions(-)
++
++diff --git a/gcc/common/config/microblaze/microblaze-common.c b/gcc/common/config/microblaze/microblaze-common.c
++index 5835acc..85e6a53 100644
++--- a/gcc/common/config/microblaze/microblaze-common.c
+++++ b/gcc/common/config/microblaze/microblaze-common.c
++@@ -39,7 +39,4 @@ static const struct default_options microblaze_option_optimization_table[] =
++ #undef  TARGET_OPTION_OPTIMIZATION_TABLE
++ #define TARGET_OPTION_OPTIMIZATION_TABLE microblaze_option_optimization_table
++ 
++-#undef TARGET_EXCEPT_UNWIND_INFO
++-#define TARGET_EXCEPT_UNWIND_INFO  sjlj_except_unwind_info
++-
++ struct gcc_targetm_common targetm_common = TARGETM_COMMON_INITIALIZER;
++diff --git a/gcc/config/microblaze/microblaze-protos.h b/gcc/config/microblaze/microblaze-protos.h
++index c30ec72..260f4e4 100644
++--- a/gcc/config/microblaze/microblaze-protos.h
+++++ b/gcc/config/microblaze/microblaze-protos.h
++@@ -56,6 +56,7 @@ extern bool microblaze_tls_referenced_p (rtx);
++ extern int symbol_mentioned_p (rtx);
++ extern int label_mentioned_p (rtx);
++ extern bool microblaze_cannot_force_const_mem (enum machine_mode, rtx);
+++extern void microblaze_eh_return (rtx op0);
++ #endif  /* RTX_CODE */
++ 
++ /* Declare functions in microblaze-c.c.  */
++diff --git a/gcc/config/microblaze/microblaze.c b/gcc/config/microblaze/microblaze.c
++index fe61fce..15166d3 100644
++--- a/gcc/config/microblaze/microblaze.c
+++++ b/gcc/config/microblaze/microblaze.c
++@@ -1999,6 +1999,11 @@ microblaze_must_save_register (int regno)
++   if (frame_pointer_needed && (regno == HARD_FRAME_POINTER_REGNUM))
++     return 1;
++ 
+++  if (crtl->calls_eh_return
+++      && regno == MB_ABI_SUB_RETURN_ADDR_REGNUM) {
+++    return 1;
+++  }
+++
++   if (!crtl->is_leaf)
++     {
++       if (regno == MB_ABI_SUB_RETURN_ADDR_REGNUM)
++@@ -2026,6 +2031,13 @@ microblaze_must_save_register (int regno)
++ 	return 1;
++     }
++ 
+++  if (crtl->calls_eh_return
+++      && (regno == EH_RETURN_DATA_REGNO (0)
+++          || regno == EH_RETURN_DATA_REGNO (1)))
+++    {
+++      return 1;
+++    }
+++
++   return 0;
++ }
++ 
++@@ -3131,6 +3143,12 @@ microblaze_expand_epilogue (void)
++       emit_insn (gen_addsi3 (stack_pointer_rtx, stack_pointer_rtx, fsiz_rtx));
++     }
++ 
+++  if (crtl->calls_eh_return)
+++    emit_insn (gen_addsi3 (stack_pointer_rtx,
+++                           stack_pointer_rtx,
+++                           gen_rtx_raw_REG (SImode,
+++                                            MB_EH_STACKADJ_REGNUM)));
+++
++   emit_jump_insn (gen_return_internal (gen_rtx_REG (Pmode, GP_REG_FIRST +
++ 						    MB_ABI_SUB_RETURN_ADDR_REGNUM)));
++ }
++@@ -3427,10 +3445,13 @@ microblaze_return_addr (int count, rtx frame ATTRIBUTE_UNUSED)
++   if (count != 0)
++     return NULL_RTX;
++ 
++-  return gen_rtx_PLUS (Pmode,
++-		       get_hard_reg_initial_val (Pmode,
++-						 MB_ABI_SUB_RETURN_ADDR_REGNUM),
++-		       GEN_INT (8));
+++  return get_hard_reg_initial_val (Pmode,
+++                                   MB_ABI_SUB_RETURN_ADDR_REGNUM);
+++}
+++
+++void microblaze_eh_return (rtx op0)
+++{
+++  emit_insn (gen_movsi(gen_rtx_MEM(Pmode, stack_pointer_rtx), op0));
++ }
++ 
++ /* Queue an .ident string in the queue of top-level asm statements.
++diff --git a/gcc/config/microblaze/microblaze.h b/gcc/config/microblaze/microblaze.h
++index 4072283..5e9f49c 100644
++--- a/gcc/config/microblaze/microblaze.h
+++++ b/gcc/config/microblaze/microblaze.h
++@@ -184,6 +184,21 @@ extern enum pipeline_type microblaze_pipe;
++ #define INCOMING_RETURN_ADDR_RTX  			\
++   gen_rtx_REG (VOIDmode, GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM)
++ 
+++/* Specifies the offset from INCOMING_RETURN_ADDR_RTX and the actual return PC.  */
+++#define RETURN_ADDR_OFFSET (8)
+++
+++/* Describe how we implement __builtin_eh_return.  */
+++#define EH_RETURN_DATA_REGNO(N) (((N) < 2) ? MB_ABI_FIRST_ARG_REGNUM + (N) : INVALID_REGNUM)
+++
+++#define MB_EH_STACKADJ_REGNUM  MB_ABI_INT_RETURN_VAL2_REGNUM
+++#define EH_RETURN_STACKADJ_RTX  gen_rtx_REG (Pmode, MB_EH_STACKADJ_REGNUM)
+++
+++/* Select a format to encode pointers in exception handling data.  CODE
+++   is 0 for data, 1 for code labels, 2 for function pointers.  GLOBAL is
+++   true if the symbol may be affected by dynamic relocations.  */
+++#define ASM_PREFERRED_EH_DATA_FORMAT(CODE,GLOBAL) \
+++  ((flag_pic || GLOBAL) ? DW_EH_PE_aligned : DW_EH_PE_absptr)
+++
++ /* Use DWARF 2 debugging information by default.  */
++ #define DWARF2_DEBUGGING_INFO
++ #define PREFERRED_DEBUGGING_TYPE DWARF2_DEBUG
++diff --git a/gcc/config/microblaze/microblaze.md b/gcc/config/microblaze/microblaze.md
++index ed6131a..dc2405f 100644
++--- a/gcc/config/microblaze/microblaze.md
+++++ b/gcc/config/microblaze/microblaze.md
++@@ -2327,4 +2327,15 @@
++   (set_attr "mode"      "SI")
++   (set_attr "length"    "4")])
++ 
+++; This is used in compiling the unwind routines.
+++(define_expand "eh_return"
+++  [(use (match_operand 0 "general_operand" ""))]
+++  ""
+++  "
+++{
+++  microblaze_eh_return(operands[0]);
+++  DONE;
+++}")
+++
++ (include "sync.md")
+++
++-- 
++1.8.3.2
++
+diff --git a/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
+new file mode 100644
+index 0000000..d103af1
+--- /dev/null
++++ b/package/gcc/4.9.3/850-libstdcxx-uclibc-c99.patch
+@@ -0,0 +1,255 @@
++Allow C99-depending features of libstdc++ with uClibc
++
++The libstdc++ code is fairly restrictive on how it checks for C99
++compatibility: it requires *complete* C99 support to enable certain
++features. For example, uClibc provides a good number of C99 features,
++but not C99 complex number support. For this reason, libstdc++
++completely disables many the standard C++ methods that can in fact
++work because uClibc provides the necessary functions.
++
++This patch is similar and highly inspired from
++https://gcc.gnu.org/bugzilla/show_bug.cgi?id=58393, but implemented in
++a way that doesn't involve changing the configure.ac script, as
++autoreconfiguring gcc is complicated. It simply relies on the fact
++that uClibc defines the __UCLIBC__ definition.
++
++Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++[Gustavo: update for 4.9.3]
++
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h
++--- gcc-4.9.3.orig/libstdc++-v3/config/locale/generic/c_locale.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/config/locale/generic/c_locale.h	2015-06-27 06:46:04.420022179 -0300
++@@ -70,7 +70,7 @@
++     __builtin_va_list __args;
++     __builtin_va_start(__args, __fmt);
++ 
++-#ifdef _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
++ #else
++     const int __ret = __builtin_vsprintf(__out, __fmt, __args);
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h
++--- gcc-4.9.3.orig/libstdc++-v3/config/locale/gnu/c_locale.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/config/locale/gnu/c_locale.h	2015-06-27 06:46:04.465023743 -0300
++@@ -88,7 +88,7 @@
++     __builtin_va_list __args;
++     __builtin_va_start(__args, __fmt);
++ 
++-#ifdef _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++     const int __ret = __builtin_vsnprintf(__out, __size, __fmt, __args);
++ #else
++     const int __ret = __builtin_vsprintf(__out, __fmt, __args);
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h
++--- gcc-4.9.3.orig/libstdc++-v3/include/bits/basic_string.h	2015-05-28 13:27:46.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/bits/basic_string.h	2015-06-27 06:49:04.741284648 -0300
++@@ -2844,7 +2844,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if __cplusplus >= 201103L && defined(_GLIBCXX_USE_C99)
+++#if __cplusplus >= 201103L && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__))
++ 
++ #include <ext/string_conversions.h>
++ 
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc
++--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets_nonio.tcc	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets_nonio.tcc	2015-06-27 06:46:04.466023777 -0300
++@@ -572,7 +572,7 @@
++     {
++       const locale __loc = __io.getloc();
++       const ctype<_CharT>& __ctype = use_facet<ctype<_CharT> >(__loc);
++-#ifdef _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++       // First try a buffer perhaps big enough.
++       int __cs_size = 64;
++       char* __cs = static_cast<char*>(__builtin_alloca(__cs_size));
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc
++--- gcc-4.9.3.orig/libstdc++-v3/include/bits/locale_facets.tcc	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/bits/locale_facets.tcc	2015-06-27 06:46:04.466023777 -0300
++@@ -987,7 +987,7 @@
++ 	char __fbuf[16];
++ 	__num_base::_S_format_float(__io, __fbuf, __mod);
++ 
++-#ifdef _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 	// First try a buffer perhaps big enough (most probably sufficient
++ 	// for non-ios_base::fixed outputs)
++ 	int __cs_size = __max_digits * 3;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/math.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/math.h	2015-06-27 06:46:04.466023777 -0300
++@@ -56,7 +56,7 @@
++ using std::floor;
++ using std::fmod;
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ using std::fpclassify;
++ using std::isfinite;
++ using std::isinf;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_compatibility/wchar.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_compatibility/wchar.h	2015-06-27 06:46:04.466023777 -0300
++@@ -103,7 +103,7 @@
++ using std::wmemset;
++ using std::wcsftime;
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ using std::wcstold;
++ using std::wcstoll;
++ using std::wcstoull;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio gcc-4.9.3/libstdc++-v3/include/c_global/cstdio
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdio	2014-01-23 18:17:15.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdio	2015-06-27 06:46:04.481024298 -0300
++@@ -146,7 +146,7 @@
++   using ::vsprintf;
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef snprintf
++ #undef vfscanf
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cstdlib	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_global/cstdlib	2015-06-27 06:46:04.466023777 -0300
++@@ -182,7 +182,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef _Exit
++ #undef llabs
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar gcc-4.9.3/libstdc++-v3/include/c_global/cwchar
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_global/cwchar	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_global/cwchar	2015-06-27 06:46:04.466023777 -0300
++@@ -232,7 +232,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef wcstold
++ #undef wcstoll
++@@ -289,7 +289,7 @@
++   using std::vwscanf;
++ #endif
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++   using std::wcstold;
++   using std::wcstoll;
++   using std::wcstoull;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio gcc-4.9.3/libstdc++-v3/include/c_std/cstdio
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdio	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdio	2015-06-27 06:46:04.480024263 -0300
++@@ -144,7 +144,7 @@
++   using ::vsprintf;
++ } // namespace std
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef snprintf
++ #undef vfscanf
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cstdlib	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_std/cstdlib	2015-06-27 06:46:04.480024263 -0300
++@@ -180,7 +180,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef _Exit
++ #undef llabs
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar gcc-4.9.3/libstdc++-v3/include/c_std/cwchar
++--- gcc-4.9.3.orig/libstdc++-v3/include/c_std/cwchar	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/c_std/cwchar	2015-06-27 06:46:04.480024263 -0300
++@@ -228,7 +228,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ #undef wcstold
++ #undef wcstoll
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h gcc-4.9.3/libstdc++-v3/include/ext/vstring.h
++--- gcc-4.9.3.orig/libstdc++-v3/include/ext/vstring.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/ext/vstring.h	2015-06-27 06:46:04.480024263 -0300
++@@ -2680,7 +2680,7 @@
++ _GLIBCXX_END_NAMESPACE_VERSION
++ } // namespace
++ 
++-#if ((__cplusplus >= 201103L) && defined(_GLIBCXX_USE_C99))
+++#if ((__cplusplus >= 201103L) && (defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)))
++ 
++ #include <ext/string_conversions.h>
++ 
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio gcc-4.9.3/libstdc++-v3/include/tr1/cstdio
++--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdio	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdio	2015-06-27 06:46:04.480024263 -0300
++@@ -33,7 +33,7 @@
++ 
++ #include <cstdio>
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ namespace std _GLIBCXX_VISIBILITY(default)
++ {
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib
++--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cstdlib	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/tr1/cstdlib	2015-06-27 06:46:04.480024263 -0300
++@@ -35,7 +35,7 @@
++ 
++ #if _GLIBCXX_HOSTED
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ namespace std _GLIBCXX_VISIBILITY(default)
++ {
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar gcc-4.9.3/libstdc++-v3/include/tr1/cwchar
++--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/cwchar	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/tr1/cwchar	2015-06-27 06:46:04.480024263 -0300
++@@ -52,7 +52,7 @@
++   using std::vwscanf;
++ #endif
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++   using std::wcstold;
++   using std::wcstoll;
++   using std::wcstoull;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h
++--- gcc-4.9.3.orig/libstdc++-v3/include/tr1/stdlib.h	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/include/tr1/stdlib.h	2015-06-27 06:46:04.481024298 -0300
++@@ -33,7 +33,7 @@
++ 
++ #if _GLIBCXX_HOSTED
++ 
++-#if _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++ 
++ using std::tr1::atoll;
++ using std::tr1::strtoll;
++diff -Nura gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc
++--- gcc-4.9.3.orig/libstdc++-v3/src/c++11/debug.cc	2014-01-02 19:30:10.000000000 -0300
+++++ gcc-4.9.3/libstdc++-v3/src/c++11/debug.cc	2015-06-27 06:46:04.481024298 -0300
++@@ -788,7 +788,7 @@
++ 				     int __n __attribute__ ((__unused__)), 
++ 				     const char* __fmt, _Tp __s) const throw ()
++     {
++-#ifdef _GLIBCXX_USE_C99
+++#if defined(_GLIBCXX_USE_C99) || defined(__UCLIBC__)
++       std::snprintf(__buf, __n, __fmt, __s);
++ #else
++       std::sprintf(__buf, __fmt, __s);
+diff --git a/package/gcc/4.9.3/860-cilk-wchar.patch b/package/gcc/4.9.3/860-cilk-wchar.patch
+new file mode 100644
+index 0000000..1837405
+--- /dev/null
++++ b/package/gcc/4.9.3/860-cilk-wchar.patch
+@@ -0,0 +1,56 @@
++[PATCH] cilk: fix build without wchar
++
++When building against uClibc with wchar support disabled, WCHAR_MIN and
++WCHAR_MAX are not defined leading to compilation errors.
++
++Fix it by only including the wchar code if available.
++
++Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
++---
++ libcilkrts/include/cilk/reducer_min_max.h |    8 ++++++++
++ 1 file changed, 8 insertions(+)
++
++Index: host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
++===================================================================
++--- host-gcc-final-4.9.2.orig/libcilkrts/include/cilk/reducer_min_max.h
+++++ host-gcc-final-4.9.2/libcilkrts/include/cilk/reducer_min_max.h
++@@ -3154,7 +3154,9 @@
++ CILK_C_REDUCER_MAX_INSTANCE(char,               char,       CHAR_MIN)
++ CILK_C_REDUCER_MAX_INSTANCE(unsigned char,      uchar,      0)
++ CILK_C_REDUCER_MAX_INSTANCE(signed char,        schar,      SCHAR_MIN)
+++#ifdef WCHAR_MIN
++ CILK_C_REDUCER_MAX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MIN)
+++#endif
++ CILK_C_REDUCER_MAX_INSTANCE(short,              short,      SHRT_MIN)
++ CILK_C_REDUCER_MAX_INSTANCE(unsigned short,     ushort,     0)
++ CILK_C_REDUCER_MAX_INSTANCE(int,                int,        INT_MIN)
++@@ -3306,7 +3308,9 @@
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(char,               char,       CHAR_MIN)
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned char,      uchar,      0)
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(signed char,        schar,      SCHAR_MIN)
+++#ifdef WCHAR_MIN
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MIN)
+++#endif
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(short,              short,      SHRT_MIN)
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(unsigned short,     ushort,     0)
++ CILK_C_REDUCER_MAX_INDEX_INSTANCE(int,                int,        INT_MIN)
++@@ -3432,7 +3436,9 @@
++ CILK_C_REDUCER_MIN_INSTANCE(char,               char,       CHAR_MAX)
++ CILK_C_REDUCER_MIN_INSTANCE(unsigned char,      uchar,      CHAR_MAX)
++ CILK_C_REDUCER_MIN_INSTANCE(signed char,        schar,      SCHAR_MAX)
+++#ifdef WCHAR_MAX
++ CILK_C_REDUCER_MIN_INSTANCE(wchar_t,            wchar_t,    WCHAR_MAX)
+++#endif
++ CILK_C_REDUCER_MIN_INSTANCE(short,              short,      SHRT_MAX)
++ CILK_C_REDUCER_MIN_INSTANCE(unsigned short,     ushort,     USHRT_MAX)
++ CILK_C_REDUCER_MIN_INSTANCE(int,                int,        INT_MAX)
++@@ -3584,7 +3590,9 @@
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(char,               char,       CHAR_MAX)
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned char,      uchar,      CHAR_MAX)
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(signed char,        schar,      SCHAR_MAX)
+++#ifdef WCHAR_MAX
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(wchar_t,            wchar_t,    WCHAR_MAX)
+++#endif
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(short,              short,      SHRT_MAX)
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(unsigned short,     ushort,     USHRT_MAX)
++ CILK_C_REDUCER_MIN_INDEX_INSTANCE(int,                int,        INT_MAX)
+diff --git a/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
+new file mode 100644
+index 0000000..aa1376c
+--- /dev/null
++++ b/package/gcc/4.9.3/870-xtensa-add-mauto-litpools-option.patch
+@@ -0,0 +1,290 @@
++From 6d852ffb43b111a39162135c95249e749c4e285b Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Thu, 6 Aug 2015 01:16:02 +0300
++Subject: [PATCH] xtensa: add -mauto-litpools option
++
++With support from assembler this option allows compiling huge functions,
++where single literal pool at the beginning of a function may not be
++reachable by L32R instructions at its end.
++
++Currently assembler --auto-litpools option cannot deal with literals
++used from multiple locations separated by more than 256 KBytes of code.
++Don't turn constants into literals, instead use MOVI instruction to load
++them into registers and let the assembler turn them into literals as
++necessary.
++
++2015-08-12  Max Filippov  <jcmvbkbc@gmail.com>
++gcc/
++	* config/xtensa/constraints.md (define_constraint "Y"): New
++	constraint.
++	* config/xtensa/elf.h (ASM_SPEC): Add m(no-)auto-litpools.
++	* config/xtensa/linux.h (ASM_SPEC): Likewise.
++	* config/xtensa/predicates.md (move_operand): Match constants
++	and symbols in the presence of TARGET_AUTO_LITPOOLS.
++	* config/xtensa/xtensa.c (xtensa_valid_move): Don't allow
++	immediate references to TLS data.
++	(xtensa_emit_move_sequence): Don't force constants to memory in
++	the presence of TARGET_AUTO_LITPOOLS.
++	(print_operand): Add 'y' format, same as default, but capable of
++	printing SF mode constants as well.
++	* config/xtensa/xtensa.md (movsi_internal, movhi_internal)
++	(movsf_internal): Add movi pattern that loads literal.
++	(movsf, movdf): Don't force constants to memory in the presence
++	of TARGET_AUTO_LITPOOLS.
++	(movdf_internal): Add 'Y' constraint.
++	* config/xtensa/xtensa.opt (mauto-litpools): New option.
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: r226828
++Changes to ChangeLogs and documentation are dropped.
++
++ gcc/config/xtensa/constraints.md |  5 +++++
++ gcc/config/xtensa/elf.h          |  4 +++-
++ gcc/config/xtensa/linux.h        |  4 +++-
++ gcc/config/xtensa/predicates.md  |  3 ++-
++ gcc/config/xtensa/xtensa.c       | 19 ++++++++++++++++++-
++ gcc/config/xtensa/xtensa.md      | 35 +++++++++++++++++++----------------
++ gcc/config/xtensa/xtensa.opt     |  4 ++++
++ 7 files changed, 54 insertions(+), 20 deletions(-)
++
++diff --git a/gcc/config/xtensa/constraints.md b/gcc/config/xtensa/constraints.md
++index 30f4c1f..773d4f9 100644
++--- a/gcc/config/xtensa/constraints.md
+++++ b/gcc/config/xtensa/constraints.md
++@@ -111,6 +111,11 @@
++  (and (match_code "const_int")
++       (match_test "xtensa_mask_immediate (ival)")))
++ 
+++(define_constraint "Y"
+++ "A constant that can be used in relaxed MOVI instructions."
+++ (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
+++      (match_test "TARGET_AUTO_LITPOOLS")))
+++
++ ;; Memory constraints.  Do not use define_memory_constraint here.  Doing so
++ ;; causes reload to force some constants into the constant pool, but since
++ ;; the Xtensa constant pool can only be accessed with L32R instructions, it
++diff --git a/gcc/config/xtensa/elf.h b/gcc/config/xtensa/elf.h
++index e59bede..12056f7 100644
++--- a/gcc/config/xtensa/elf.h
+++++ b/gcc/config/xtensa/elf.h
++@@ -48,7 +48,9 @@ along with GCC; see the file COPYING3.  If not see
++   %{mtarget-align:--target-align} \
++   %{mno-target-align:--no-target-align} \
++   %{mlongcalls:--longcalls} \
++-  %{mno-longcalls:--no-longcalls}"
+++  %{mno-longcalls:--no-longcalls} \
+++  %{mauto-litpools:--auto-litpools} \
+++  %{mno-auto-litpools:--no-auto-litpools}"
++ 
++ #undef LIB_SPEC
++ #define LIB_SPEC "-lc -lsim -lc -lhandlers-sim -lhal"
++diff --git a/gcc/config/xtensa/linux.h b/gcc/config/xtensa/linux.h
++index 675aacf..5b0243a 100644
++--- a/gcc/config/xtensa/linux.h
+++++ b/gcc/config/xtensa/linux.h
++@@ -42,7 +42,9 @@ along with GCC; see the file COPYING3.  If not see
++   %{mtarget-align:--target-align} \
++   %{mno-target-align:--no-target-align} \
++   %{mlongcalls:--longcalls} \
++-  %{mno-longcalls:--no-longcalls}"
+++  %{mno-longcalls:--no-longcalls} \
+++  %{mauto-litpools:--auto-litpools} \
+++  %{mno-auto-litpools:--no-auto-litpools}"
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++ 
++diff --git a/gcc/config/xtensa/predicates.md b/gcc/config/xtensa/predicates.md
++index e02209e..d7dfa11 100644
++--- a/gcc/config/xtensa/predicates.md
+++++ b/gcc/config/xtensa/predicates.md
++@@ -142,7 +142,8 @@
++ 	       (match_test "GET_MODE_CLASS (mode) == MODE_INT
++ 			    && xtensa_simm12b (INTVAL (op))"))
++ 	  (and (match_code "const_int,const_double,const,symbol_ref,label_ref")
++-	       (match_test "TARGET_CONST16 && CONSTANT_P (op)
+++	       (match_test "(TARGET_CONST16 || TARGET_AUTO_LITPOOLS)
+++			    && CONSTANT_P (op)
++ 			    && GET_MODE_SIZE (mode) % UNITS_PER_WORD == 0")))))
++ 
++ ;; Accept the floating point constant 1 in the appropriate mode.
++diff --git a/gcc/config/xtensa/xtensa.c b/gcc/config/xtensa/xtensa.c
++index eb039ba..206ff80 100644
++--- a/gcc/config/xtensa/xtensa.c
+++++ b/gcc/config/xtensa/xtensa.c
++@@ -501,6 +501,9 @@ xtensa_valid_move (machine_mode mode, rtx *operands)
++     {
++       int dst_regnum = xt_true_regnum (operands[0]);
++ 
+++      if (xtensa_tls_referenced_p (operands[1]))
+++	return FALSE;
+++
++       /* The stack pointer can only be assigned with a MOVSP opcode.  */
++       if (dst_regnum == STACK_POINTER_REGNUM)
++ 	return !TARGET_WINDOWED_ABI
++@@ -1069,7 +1072,7 @@ xtensa_emit_move_sequence (rtx *operands, machine_mode mode)
++ 	  return 1;
++ 	}
++ 
++-      if (! TARGET_CONST16)
+++      if (! TARGET_AUTO_LITPOOLS && ! TARGET_CONST16)
++ 	{
++ 	  src = force_const_mem (SImode, src);
++ 	  operands[1] = src;
++@@ -2449,6 +2452,20 @@ print_operand (FILE *file, rtx x, int letter)
++ 	}
++       break;
++ 
+++    case 'y':
+++      if (GET_CODE (x) == CONST_DOUBLE &&
+++	  GET_MODE (x) == SFmode)
+++	{
+++	  REAL_VALUE_TYPE r;
+++	  long l;
+++	  REAL_VALUE_FROM_CONST_DOUBLE (r, x);
+++	  REAL_VALUE_TO_TARGET_SINGLE (r, l);
+++	  fprintf (file, "0x%08lx", l);
+++	  break;
+++	}
+++
+++      /* fall through */
+++
++     default:
++       if (GET_CODE (x) == REG || GET_CODE (x) == SUBREG)
++ 	fprintf (file, "%s", reg_names[xt_true_regnum (x)]);
++diff --git a/gcc/config/xtensa/xtensa.md b/gcc/config/xtensa/xtensa.md
++index 6d84384..0e673a3 100644
++--- a/gcc/config/xtensa/xtensa.md
+++++ b/gcc/config/xtensa/xtensa.md
++@@ -761,8 +761,8 @@
++ })
++ 
++ (define_insn "movsi_internal"
++-  [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,W,a,a,U,*a,*A")
++-	(match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,i,T,U,r,*A,*r"))]
+++  [(set (match_operand:SI 0 "nonimmed_operand" "=D,D,D,D,R,R,a,q,a,a,W,a,a,U,*a,*A")
+++	(match_operand:SI 1 "move_operand" "M,D,d,R,D,d,r,r,I,Y,i,T,U,r,*A,*r"))]
++   "xtensa_valid_move (SImode, operands)"
++   "@
++    movi.n\t%0, %x1
++@@ -774,15 +774,16 @@
++    mov\t%0, %1
++    movsp\t%0, %1
++    movi\t%0, %x1
+++   movi\t%0, %1
++    const16\t%0, %t1\;const16\t%0, %b1
++    %v1l32r\t%0, %1
++    %v1l32i\t%0, %1
++    %v0s32i\t%1, %0
++    rsr\t%0, ACCLO
++    wsr\t%1, ACCLO"
++-  [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,load,load,store,rsr,wsr")
+++  [(set_attr "type" "move,move,move,load,store,store,move,move,move,move,move,load,load,store,rsr,wsr")
++    (set_attr "mode"	"SI")
++-   (set_attr "length"	"2,2,2,2,2,2,3,3,3,6,3,3,3,3,3")])
+++   (set_attr "length"	"2,2,2,2,2,2,3,3,3,3,6,3,3,3,3,3")])
++ 
++ ;; 16-bit Integer moves
++ 
++@@ -796,21 +797,22 @@
++ })
++ 
++ (define_insn "movhi_internal"
++-  [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,U,*a,*A")
++-	(match_operand:HI 1 "move_operand" "M,d,r,I,U,r,*A,*r"))]
+++  [(set (match_operand:HI 0 "nonimmed_operand" "=D,D,a,a,a,a,U,*a,*A")
+++	(match_operand:HI 1 "move_operand" "M,d,r,I,Y,U,r,*A,*r"))]
++   "xtensa_valid_move (HImode, operands)"
++   "@
++    movi.n\t%0, %x1
++    mov.n\t%0, %1
++    mov\t%0, %1
++    movi\t%0, %x1
+++   movi\t%0, %1
++    %v1l16ui\t%0, %1
++    %v0s16i\t%1, %0
++    rsr\t%0, ACCLO
++    wsr\t%1, ACCLO"
++-  [(set_attr "type"	"move,move,move,move,load,store,rsr,wsr")
+++  [(set_attr "type"	"move,move,move,move,move,load,store,rsr,wsr")
++    (set_attr "mode"	"HI")
++-   (set_attr "length"	"2,2,3,3,3,3,3,3")])
+++   (set_attr "length"	"2,2,3,3,3,3,3,3,3")])
++ 
++ ;; 8-bit Integer moves
++ 
++@@ -881,7 +883,7 @@
++ 	(match_operand:SF 1 "general_operand" ""))]
++   ""
++ {
++-  if (!TARGET_CONST16 && CONSTANT_P (operands[1]))
+++  if (!TARGET_CONST16 && !TARGET_AUTO_LITPOOLS && CONSTANT_P (operands[1]))
++     operands[1] = force_const_mem (SFmode, operands[1]);
++ 
++   if ((!register_operand (operands[0], SFmode)
++@@ -896,8 +898,8 @@
++ })
++ 
++ (define_insn "movsf_internal"
++-  [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,W,a,a,U")
++-	(match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,iF,T,U,r"))]
+++  [(set (match_operand:SF 0 "nonimmed_operand" "=f,f,U,D,D,R,a,f,a,a,W,a,a,U")
+++	(match_operand:SF 1 "move_operand" "f,U,f,d,R,d,r,r,f,Y,iF,T,U,r"))]
++   "((register_operand (operands[0], SFmode)
++      || register_operand (operands[1], SFmode))
++     && !(FP_REG_P (xt_true_regnum (operands[0]))
++@@ -912,13 +914,14 @@
++    mov\t%0, %1
++    wfr\t%0, %1
++    rfr\t%0, %1
+++   movi\t%0, %y1
++    const16\t%0, %t1\;const16\t%0, %b1
++    %v1l32r\t%0, %1
++    %v1l32i\t%0, %1
++    %v0s32i\t%1, %0"
++-  [(set_attr "type"	"farith,fload,fstore,move,load,store,move,farith,farith,move,load,load,store")
+++  [(set_attr "type"	"farith,fload,fstore,move,load,store,move,farith,farith,move,move,load,load,store")
++    (set_attr "mode"	"SF")
++-   (set_attr "length"	"3,3,3,2,2,2,3,3,3,6,3,3,3")])
+++   (set_attr "length"	"3,3,3,2,2,2,3,3,3,3,6,3,3,3")])
++ 
++ (define_insn "*lsiu"
++   [(set (match_operand:SF 0 "register_operand" "=f")
++@@ -991,7 +994,7 @@
++ 	(match_operand:DF 1 "general_operand" ""))]
++   ""
++ {
++-  if (CONSTANT_P (operands[1]) && !TARGET_CONST16)
+++  if (CONSTANT_P (operands[1]) && !TARGET_CONST16 && !TARGET_AUTO_LITPOOLS)
++     operands[1] = force_const_mem (DFmode, operands[1]);
++ 
++   if (!register_operand (operands[0], DFmode)
++@@ -1002,8 +1005,8 @@
++ })
++ 
++ (define_insn_and_split "movdf_internal"
++-  [(set (match_operand:DF 0 "nonimmed_operand" "=a,W,a,a,U")
++-	(match_operand:DF 1 "move_operand" "r,iF,T,U,r"))]
+++  [(set (match_operand:DF 0 "nonimmed_operand" "=a,a,W,a,a,U")
+++	(match_operand:DF 1 "move_operand" "r,Y,iF,T,U,r"))]
++   "register_operand (operands[0], DFmode)
++    || register_operand (operands[1], DFmode)"
++   "#"
++diff --git a/gcc/config/xtensa/xtensa.opt b/gcc/config/xtensa/xtensa.opt
++index 2fd6cee..21c6e96 100644
++--- a/gcc/config/xtensa/xtensa.opt
+++++ b/gcc/config/xtensa/xtensa.opt
++@@ -38,6 +38,10 @@ mtext-section-literals
++ Target
++ Intersperse literal pools with code in the text section
++ 
+++mauto-litpools
+++Target Report Mask(AUTO_LITPOOLS)
+++Relax literals in assembler and place them automatically in the text section
+++
++ mserialize-volatile
++ Target Report Mask(SERIALIZE_VOLATILE)
++ -mno-serialize-volatile	Do not serialize volatile memory references with MEMW instructions
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
+new file mode 100644
+index 0000000..abc7a08
+--- /dev/null
++++ b/package/gcc/4.9.3/871-xtensa-reimplement-register-spilling.patch
+@@ -0,0 +1,76 @@
++From 05154174b369505238b759cf80d595d8cfc8c731 Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Mon, 10 Aug 2015 21:35:20 +0300
++Subject: [PATCH 1/3] xtensa: reimplement register spilling
++
++Spilling windowed registers in userspace is much easier, more portable,
++less error-prone and equally effective as in kernel. Now that register
++spilling syscall is considered obsolete in the xtensa linux kernel
++replace it with CALL12 followed by series of ENTRY in libgcc.
++
++2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
++libgcc/
++	* config/xtensa/lib2funcs.S (__xtensa_libgcc_window_spill): Use
++	CALL12 followed by series of ENTRY to spill windowed registers.
++	(__xtensa_nonlocal_goto): Call __xtensa_libgcc_window_spill
++	instead of making linux spill syscall.
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: r226962
++
++ libgcc/config/xtensa/lib2funcs.S | 30 +++++++++++++++++++++++-------
++ 1 file changed, 23 insertions(+), 7 deletions(-)
++
++diff --git a/libgcc/config/xtensa/lib2funcs.S b/libgcc/config/xtensa/lib2funcs.S
++index 3ac8c1d..2e678af 100644
++--- a/libgcc/config/xtensa/lib2funcs.S
+++++ b/libgcc/config/xtensa/lib2funcs.S
++@@ -33,10 +33,29 @@ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++ 	.global	__xtensa_libgcc_window_spill
++ 	.type	__xtensa_libgcc_window_spill,@function
++ __xtensa_libgcc_window_spill:
++-	entry	sp, 32
++-	movi	a2, 0
++-	syscall
+++	entry	sp, 48
+++#if XCHAL_NUM_AREGS > 16
+++	call12	1f
+++	retw
+++	.align	4
+++1:
+++	.rept	(XCHAL_NUM_AREGS - 24) / 12
+++	_entry	sp, 48
+++	mov	a12, a0
+++	.endr
+++	_entry	sp, 16
+++#if XCHAL_NUM_AREGS % 12 == 0
+++	mov	a4, a4
+++#elif XCHAL_NUM_AREGS % 12 == 4
+++	mov	a8, a8
+++#elif XCHAL_NUM_AREGS % 12 == 8
+++	mov	a12, a12
+++#endif
+++	retw
+++#else
+++	mov	a8, a8
++ 	retw
+++#endif
++ 	.size	__xtensa_libgcc_window_spill, .-__xtensa_libgcc_window_spill
++ 
++ 
++@@ -58,10 +77,7 @@ __xtensa_nonlocal_goto:
++ 	entry	sp, 32
++ 
++ 	/* Flush registers.  */
++-	mov	a5, a2
++-	movi	a2, 0
++-	syscall
++-	mov	a2, a5
+++	call8	__xtensa_libgcc_window_spill
++ 
++ 	/* Because the save area for a0-a3 is stored one frame below
++ 	   the one identified by a2, the only way to restore those
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
+new file mode 100644
+index 0000000..f23a5c0
+--- /dev/null
++++ b/package/gcc/4.9.3/872-xtensa-use-unwind-dw2-fde-dip-instead-of-unwind-dw2-.patch
+@@ -0,0 +1,33 @@
++From f66206679a0ad604f13673559f230160cd3d1189 Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Fri, 14 Aug 2015 02:45:02 +0300
++Subject: [PATCH 2/3] xtensa: use unwind-dw2-fde-dip instead of unwind-dw2-fde
++
++This allows having exception cleanup code in binaries that don't
++register their unwind tables.
++
++2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
++libgcc/
++	* config/xtensa/t-xtensa (LIB2ADDEH): Replace unwind-dw2-fde
++	with unwind-dw2-fde-dip.
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: r226963
++
++ libgcc/config/xtensa/t-xtensa | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/libgcc/config/xtensa/t-xtensa b/libgcc/config/xtensa/t-xtensa
++index 27399e6..66d0eb3 100644
++--- a/libgcc/config/xtensa/t-xtensa
+++++ b/libgcc/config/xtensa/t-xtensa
++@@ -13,4 +13,4 @@ LIB1ASMFUNCS = _mulsi3 _divsi3 _modsi3 _udivsi3 _umodsi3 \
++ LIB2ADD = $(srcdir)/config/xtensa/lib2funcs.S
++ 
++ LIB2ADDEH = $(srcdir)/config/xtensa/unwind-dw2-xtensa.c \
++-   $(srcdir)/unwind-dw2-fde.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
+++   $(srcdir)/unwind-dw2-fde-dip.c $(srcdir)/unwind-sjlj.c $(srcdir)/unwind-c.c
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
+new file mode 100644
+index 0000000..dc40513
+--- /dev/null
++++ b/package/gcc/4.9.3/873-xtensa-fix-_Unwind_GetCFA.patch
+@@ -0,0 +1,40 @@
++From 15c7c4d39b317f0d902ef28fd43eca5c3369f891 Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Sat, 15 Aug 2015 05:12:11 +0300
++Subject: [PATCH 3/3] xtensa: fix _Unwind_GetCFA
++
++Returning context->cfa in _Unwind_GetCFA makes CFA point one stack frame
++higher than what was actually used by code at context->ra. This results
++in invalid CFA value in signal frames and premature unwinding completion
++in forced unwinding used by uClibc NPTL thread cancellation.
++Returning context->sp from _Unwind_GetCFA makes all CFA values valid and
++matching code that used them.
++
++2015-08-18  Max Filippov  <jcmvbkbc@gmail.com>
++libgcc/
++	* config/xtensa/unwind-dw2-xtensa.c (_Unwind_GetCFA): Return
++	context->sp instead of context->cfa.
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: r226964
++
++ libgcc/config/xtensa/unwind-dw2-xtensa.c | 2 +-
++ 1 file changed, 1 insertion(+), 1 deletion(-)
++
++diff --git a/libgcc/config/xtensa/unwind-dw2-xtensa.c b/libgcc/config/xtensa/unwind-dw2-xtensa.c
++index 35f7797..ef6b900 100644
++--- a/libgcc/config/xtensa/unwind-dw2-xtensa.c
+++++ b/libgcc/config/xtensa/unwind-dw2-xtensa.c
++@@ -130,7 +130,7 @@ _Unwind_GetGR (struct _Unwind_Context *context, int index)
++ _Unwind_Word
++ _Unwind_GetCFA (struct _Unwind_Context *context)
++ {
++-  return (_Unwind_Ptr) context->cfa;
+++  return (_Unwind_Ptr) context->sp;
++ }
++ 
++ /* Overwrite the saved value for register INDEX in CONTEXT with VAL.  */
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
+new file mode 100644
+index 0000000..23db3d8
+--- /dev/null
++++ b/package/gcc/4.9.3/874-xtensa-add-uclinux-support.patch
+@@ -0,0 +1,174 @@
++From 70c2cb98fb129b4766b5da0f945dc41fd568c77a Mon Sep 17 00:00:00 2001
++From: Max Filippov <jcmvbkbc@gmail.com>
++Date: Sat, 22 Aug 2015 08:44:26 +0300
++Subject: [PATCH] xtensa: add uclinux support
++
++2015-10-03  Max Filippov  <jcmvbkbc@gmail.com>
++gcc/
++	* config.gcc (xtensa*-*-uclinux*): New configuration.
++	* config/xtensa/uclinux.h: New file.
++	* config/xtensa/uclinux.opt: New file.
++
++libgcc/
++	* config.host (xtensa*-*-uclinux*): New configuration.
++
++Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
++---
++Backported from: r228450
++
++ gcc/config.gcc                |  5 ++++
++ gcc/config/xtensa/uclinux.h   | 69 +++++++++++++++++++++++++++++++++++++++++++
++ gcc/config/xtensa/uclinux.opt | 32 ++++++++++++++++++++
++ libgcc/config.host            |  5 ++++
++ 4 files changed, 111 insertions(+)
++ create mode 100644 gcc/config/xtensa/uclinux.h
++ create mode 100644 gcc/config/xtensa/uclinux.opt
++
++diff --git a/gcc/config.gcc b/gcc/config.gcc
++index c52f5a8..56797bd 100644
++--- a/gcc/config.gcc
+++++ b/gcc/config.gcc
++@@ -2995,6 +2995,11 @@ xtensa*-*-linux*)
++ 	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/linux.h"
++ 	tmake_file="${tmake_file} xtensa/t-xtensa"
++ 	;;
+++xtensa*-*-uclinux*)
+++	tm_file="${tm_file} dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h xtensa/uclinux.h"
+++	tmake_file="${tmake_file} xtensa/t-xtensa"
+++	extra_options="${extra_options} xtensa/uclinux.opt"
+++	;;
++ am33_2.0-*-linux*)
++ 	tm_file="mn10300/mn10300.h dbxelf.h elfos.h gnu-user.h linux.h glibc-stdint.h mn10300/linux.h"
++ 	gas=yes gnu_ld=yes
++diff --git a/gcc/config/xtensa/uclinux.h b/gcc/config/xtensa/uclinux.h
++new file mode 100644
++index 0000000..4606020
++--- /dev/null
+++++ b/gcc/config/xtensa/uclinux.h
++@@ -0,0 +1,69 @@
+++/* Xtensa uClinux configuration.
+++   Derived from the configuration for GCC for Intel i386 running Linux.
+++   Copyright (C) 2001-2015 Free Software Foundation, Inc.
+++
+++This file is part of GCC.
+++
+++GCC is free software; you can redistribute it and/or modify it under
+++the terms of the GNU General Public License as published by the Free
+++Software Foundation; either version 3, or (at your option) any later
+++version.
+++
+++GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+++WARRANTY; without even the implied warranty of MERCHANTABILITY or
+++FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+++for more details.
+++
+++You should have received a copy of the GNU General Public License
+++along with GCC; see the file COPYING3.  If not see
+++<http://www.gnu.org/licenses/>.  */
+++
+++#undef TARGET_OS_CPP_BUILTINS
+++#define TARGET_OS_CPP_BUILTINS()				\
+++  do								\
+++    {								\
+++      GNU_USER_TARGET_OS_CPP_BUILTINS ();			\
+++      builtin_define ("__uClinux__");				\
+++    }								\
+++  while (0)
+++
+++#undef SUBTARGET_CPP_SPEC
+++#define SUBTARGET_CPP_SPEC "%{posix:-D_POSIX_SOURCE} %{pthread:-D_REENTRANT}"
+++
+++#undef SIZE_TYPE
+++#define SIZE_TYPE "unsigned int"
+++
+++#undef PTRDIFF_TYPE
+++#define PTRDIFF_TYPE "int"
+++
+++#undef WCHAR_TYPE
+++#define WCHAR_TYPE "long int"
+++
+++#undef WCHAR_TYPE_SIZE
+++#define WCHAR_TYPE_SIZE 32
+++
+++#undef ASM_SPEC
+++#define ASM_SPEC \
+++ "%{mtext-section-literals:--text-section-literals} \
+++  %{mno-text-section-literals:--no-text-section-literals} \
+++  %{mtarget-align:--target-align} \
+++  %{mno-target-align:--no-target-align} \
+++  %{mlongcalls:--longcalls} \
+++  %{mno-longcalls:--no-longcalls} \
+++  %{mauto-litpools:--auto-litpools} \
+++  %{mno-auto-litpools:--no-auto-litpools}"
+++
+++#undef LINK_SPEC
+++#define LINK_SPEC "%{!no-elf2flt:%{!elf2flt*:-elf2flt}}"
+++
+++#undef LOCAL_LABEL_PREFIX
+++#define LOCAL_LABEL_PREFIX	"."
+++
+++/* Always enable "-fpic" for Xtensa Linux.  */
+++#define XTENSA_ALWAYS_PIC 1
+++
+++#undef TARGET_LIBC_HAS_FUNCTION
+++#define TARGET_LIBC_HAS_FUNCTION no_c99_libc_has_function
+++
+++#undef DBX_REGISTER_NUMBER
+++
++diff --git a/gcc/config/xtensa/uclinux.opt b/gcc/config/xtensa/uclinux.opt
++new file mode 100644
++index 0000000..95ef777
++--- /dev/null
+++++ b/gcc/config/xtensa/uclinux.opt
++@@ -0,0 +1,32 @@
+++; Xtensa uClinux options.
+++
+++; Copyright (C) 2015 Free Software Foundation, Inc.
+++;
+++; This file is part of GCC.
+++;
+++; GCC is free software; you can redistribute it and/or modify it under
+++; the terms of the GNU General Public License as published by the Free
+++; Software Foundation; either version 3, or (at your option) any later
+++; version.
+++;
+++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY
+++; WARRANTY; without even the implied warranty of MERCHANTABILITY or
+++; FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+++; for more details.
+++;
+++; You should have received a copy of the GNU General Public License
+++; along with GCC; see the file COPYING3.  If not see
+++; <http://www.gnu.org/licenses/>.
+++
+++; See the GCC internals manual (options.texi) for a description of
+++; this file's format.
+++
+++; Please try to keep this file in ASCII collating order.
+++
+++elf2flt
+++Driver
+++
+++elf2flt=
+++Driver JoinedOrMissing
+++
+++; This comment is to ensure we retain the blank line above.
++diff --git a/libgcc/config.host b/libgcc/config.host
++index 2c64756..2ee92c1 100644
++--- a/libgcc/config.host
+++++ b/libgcc/config.host
++@@ -1295,6 +1295,11 @@ xtensa*-*-linux*)
++ 	tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
++ 	md_unwind_header=xtensa/linux-unwind.h
++ 	;;
+++xtensa*-*-uclinux*)
+++	tmake_file="$tmake_file xtensa/t-xtensa xtensa/t-linux t-slibgcc-libgcc"
+++	md_unwind_header=xtensa/linux-unwind.h
+++	extra_parts="$extra_parts crtbeginS.o crtbeginT.o crtendS.o"
+++	;;
++ am33_2.0-*-linux*)
++ 	# Don't need crtbeginT.o from *-*-linux* default.
++ 	extra_parts="crtbegin.o crtend.o crtbeginS.o crtendS.o"
++-- 
++1.8.1.4
++
+diff --git a/package/gcc/4.9.3/880-nios2_legitimize_address.patch b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
+new file mode 100644
+index 0000000..4623f29
+--- /dev/null
++++ b/package/gcc/4.9.3/880-nios2_legitimize_address.patch
+@@ -0,0 +1,49 @@
++From b0ea54f3f995754881e0ea6651133aa7b58eeaa2 Mon Sep 17 00:00:00 2001
++From: cltang <cltang@138bc75d-0d04-0410-961f-82ee72b054a4>
++Date: Tue, 22 Sep 2015 12:23:20 +0000
++Subject: [PATCH] nios2_legitimize_address 2015-09-22  Chung-Lin Tang 
++ <cltang@codesourcery.com>
++
++	Backport from mainline
++	2015-09-22  Chung-Lin Tang  <cltang@codesourcery.com>
++
++	* config/nios2/nios2.c (nios2_legitimize_address): When handling
++	'reg + reloc' cases, allow first operand to be non-REG, and use
++	force_reg() to enforce address pattern.
++
++git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-5-branch@228013 138bc75d-0d04-0410-961f-82ee72b054a4
++
++Fixes:
++http://autobuild.buildroot.net/results/901/90186d1fe134b804c0101554296b1235dc0ccbb0
++
++[backported to 4.9.3]
++Signed-off-by: Romain Naour <romain.naour@gmail.com>
++---
++ gcc/config/nios2/nios2.c | 4 ++--
++ 1 file changed, 2 insertions(+), 2 deletions(-)
++
++diff --git a/gcc/config/nios2/nios2.c b/gcc/config/nios2/nios2.c
++index 047b615..41dd6f9 100644
++--- a/gcc/config/nios2/nios2.c
+++++ b/gcc/config/nios2/nios2.c
++@@ -1786,15 +1786,15 @@ nios2_legitimize_address (rtx x, rtx oldx ATTRIBUTE_UNUSED,
++ 
++      Which will be output as '%tls_le(var+48)(r23)' in assembly.  */
++   if (GET_CODE (x) == PLUS
++-      && GET_CODE (XEXP (x, 0)) == REG
++       && GET_CODE (XEXP (x, 1)) == CONST)
++     {
++-      rtx unspec, offset, reg = XEXP (x, 0);
+++      rtx unspec, offset;
++       split_const (XEXP (x, 1), &unspec, &offset);
++       if (GET_CODE (unspec) == UNSPEC
++ 	  && !nios2_large_offset_p (XINT (unspec, 1))
++ 	  && offset != const0_rtx)
++ 	{
+++	  rtx reg = force_reg (Pmode, XEXP (x, 0));
++ 	  unspec = copy_rtx (unspec);
++ 	  XVECEXP (unspec, 0, 0)
++ 	    = plus_constant (Pmode, XVECEXP (unspec, 0, 0), INTVAL (offset));
++-- 
++2.5.0
++
+diff --git a/package/gcc/4.9.3/890-fix-m68k-compile.patch b/package/gcc/4.9.3/890-fix-m68k-compile.patch
+new file mode 100644
+index 0000000..140977b
+--- /dev/null
++++ b/package/gcc/4.9.3/890-fix-m68k-compile.patch
+@@ -0,0 +1,15 @@
++remove unused header, which breaks the toolchain building
++
++Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
++
++diff -Nur gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c gcc-4.9.3/libgcc/config/m68k/linux-atomic.c
++--- gcc-4.9.3.orig/libgcc/config/m68k/linux-atomic.c	2014-01-02 23:25:22.000000000 +0100
+++++ gcc-4.9.3/libgcc/config/m68k/linux-atomic.c	2016-03-18 22:24:40.000000000 +0100
++@@ -33,7 +33,6 @@
++    using the kernel helper defined below.  There is no support for
++    64-bit operations yet.  */
++ 
++-#include <asm/unistd.h>
++ #include <stdbool.h>
++ 
++ #ifndef __NR_atomic_cmpxchg_32
+diff --git a/package/gcc/4.9.3/900-musl-support.patch b/package/gcc/4.9.3/900-musl-support.patch
+new file mode 100644
+index 0000000..90f64de
+--- /dev/null
++++ b/package/gcc/4.9.3/900-musl-support.patch
+@@ -0,0 +1,640 @@
++Add musl support to gcc
++
++This patch comes from the musl-cross project at
++https://bitbucket.org/GregorR/musl-cross/src. Compared to the upstream version:
++
++ * the config.sub modifications have been removed, because Buildroot
++   already overwrites all config.sub with a more recent config.sub
++   that has musl support.
++
++ * change to ensure that a dummy dynamic linker path
++   MUSL_DYNAMIC_LINKER<foo> is defined for all architectures,
++   otherwise building gcc for architectures not supported by musl was
++   causing build failure. Bug reported upstream at
++   https://bitbucket.org/GregorR/musl-gcc-patches/issue/4/musl-gcc-patches-break-the-build-on.
++
++ * change the USE_PT_GNU_EH_FRAME logic to keep the existing gcc logic
++   and only add the musl one as an addition, not as a replacement. Not
++   doing this breaks C++ exception handling with glibc, because
++   USE_PT_GNU_EH_FRAME doesn't get defined due to the configure script
++   not testing dl_iterate_phdr() on any system except Solaris.
++
++[Gustavo: remove upstream applied gcc/config/sh/sh.c chunk for 4.9.1]
++Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++---
++
++Index: b/fixincludes/mkfixinc.sh
++===================================================================
++--- a/fixincludes/mkfixinc.sh
+++++ b/fixincludes/mkfixinc.sh
++@@ -19,7 +19,8 @@
++     powerpc-*-eabi*    | \
++     powerpc-*-rtems*   | \
++     powerpcle-*-eabisim* | \
++-    powerpcle-*-eabi* )
+++    powerpcle-*-eabi* | \
+++    *-musl* )
++ 	#  IF there is no include fixing,
++ 	#  THEN create a no-op fixer and exit
++ 	(echo "#! /bin/sh" ; echo "exit 0" ) > ${target}
++Index: b/gcc/config.gcc
++===================================================================
++--- a/gcc/config.gcc
+++++ b/gcc/config.gcc
++@@ -594,7 +594,7 @@
++ esac
++ 
++ # Common C libraries.
++-tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3"
+++tm_defines="$tm_defines LIBC_GLIBC=1 LIBC_UCLIBC=2 LIBC_BIONIC=3 LIBC_MUSL=4"
++ 
++ # 32-bit x86 processors supported by --with-arch=.  Each processor
++ # MUST be separated by exactly one space.
++@@ -719,6 +719,9 @@
++     *-*-*uclibc*)
++       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_UCLIBC"
++       ;;
+++    *-*-*musl*)
+++      tm_defines="$tm_defines DEFAULT_LIBC=LIBC_MUSL"
+++      ;;
++     *)
++       tm_defines="$tm_defines DEFAULT_LIBC=LIBC_GLIBC"
++       ;;
++@@ -2322,6 +2325,10 @@
++ 	    powerpc*-*-linux*paired*)
++ 		tm_file="${tm_file} rs6000/750cl.h" ;;
++ 	esac
+++        case ${target} in
+++            *-linux*-musl*)
+++                enable_secureplt=yes ;;
+++        esac
++ 	if test x${enable_secureplt} = xyes; then
++ 		tm_file="rs6000/secureplt.h ${tm_file}"
++ 	fi
++Index: b/gcc/config/aarch64/aarch64-linux.h
++===================================================================
++--- a/gcc/config/aarch64/aarch64-linux.h
+++++ b/gcc/config/aarch64/aarch64-linux.h
++@@ -22,6 +22,8 @@
++ #define GCC_AARCH64_LINUX_H
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-aarch64%{mbig-endian:_be}.so.1"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-aarch64.so.1"
++ 
++ #define CPP_SPEC "%{pthread:-D_REENTRANT}"
++ 
++Index: b/gcc/config/arm/linux-eabi.h
++===================================================================
++--- a/gcc/config/arm/linux-eabi.h
+++++ b/gcc/config/arm/linux-eabi.h
++@@ -77,6 +77,23 @@
++     %{mfloat-abi=soft*:" GLIBC_DYNAMIC_LINKER_SOFT_FLOAT "} \
++     %{!mfloat-abi=*:" GLIBC_DYNAMIC_LINKER_DEFAULT "}"
++ 
+++/* For ARM musl currently supports four dynamic linkers:
+++   - ld-musl-arm.so.1 - for the EABI-derived soft-float ABI
+++   - ld-musl-armhf.so.1 - for the EABI-derived hard-float ABI
+++   - ld-musl-armeb.so.1 - for the EABI-derived soft-float ABI, EB
+++   - ld-musl-armebhf.so.1 - for the EABI-derived hard-float ABI, EB
+++   musl does not support the legacy OABI mode.
+++   All the dynamic linkers live in /lib.
+++   We default to soft-float, EL. */
+++#undef  MUSL_DYNAMIC_LINKER
+++#if TARGET_BIG_ENDIAN_DEFAULT
+++#define MUSL_DYNAMIC_LINKER_E "%{mlittle-endian:;:eb}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{mbig-endian:eb}"
+++#endif
+++#define MUSL_DYNAMIC_LINKER \
+++  "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}.so.1"
+++
++ /* At this point, bpabi.h will have clobbered LINK_SPEC.  We want to
++    use the GNU/Linux version, not the generic BPABI version.  */
++ #undef  LINK_SPEC
++Index: b/gcc/config/i386/linux.h
++===================================================================
++--- a/gcc/config/i386/linux.h
+++++ b/gcc/config/i386/linux.h
++@@ -21,3 +21,5 @@
++ 
++ #define GNU_USER_LINK_EMULATION "elf_i386"
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-i386.so.1"
++Index: b/gcc/config/i386/linux64.h
++===================================================================
++--- a/gcc/config/i386/linux64.h
+++++ b/gcc/config/i386/linux64.h
++@@ -30,3 +30,10 @@
++ #define GLIBC_DYNAMIC_LINKER32 "/lib/ld-linux.so.2"
++ #define GLIBC_DYNAMIC_LINKER64 "/lib64/ld-linux-x86-64.so.2"
++ #define GLIBC_DYNAMIC_LINKERX32 "/libx32/ld-linux-x32.so.2"
+++
+++#undef MUSL_DYNAMIC_LINKER32
+++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-i386.so.1"
+++#undef MUSL_DYNAMIC_LINKER64
+++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-x86_64.so.1"
+++#undef MUSL_DYNAMIC_LINKERX32
+++#define MUSL_DYNAMIC_LINKERX32 "/lib/ld-musl-x32.so.1"
++Index: b/gcc/config/linux.h
++===================================================================
++--- a/gcc/config/linux.h
+++++ b/gcc/config/linux.h
++@@ -32,10 +32,12 @@
++ #define OPTION_GLIBC  (DEFAULT_LIBC == LIBC_GLIBC)
++ #define OPTION_UCLIBC (DEFAULT_LIBC == LIBC_UCLIBC)
++ #define OPTION_BIONIC (DEFAULT_LIBC == LIBC_BIONIC)
+++#define OPTION_MUSL   (DEFAULT_LIBC == LIBC_MUSL)
++ #else
++ #define OPTION_GLIBC  (linux_libc == LIBC_GLIBC)
++ #define OPTION_UCLIBC (linux_libc == LIBC_UCLIBC)
++ #define OPTION_BIONIC (linux_libc == LIBC_BIONIC)
+++#define OPTION_MUSL   (linux_libc == LIBC_MUSL)
++ #endif
++ 
++ #define GNU_USER_TARGET_OS_CPP_BUILTINS()			\
++@@ -53,18 +55,21 @@
++    uClibc or Bionic is the default C library and whether
++    -muclibc or -mglibc or -mbionic has been passed to change the default.  */
++ 
++-#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LD1, LD2, LD3)	\
++-  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:" LD1 "}}"
+++#define CHOOSE_DYNAMIC_LINKER1(LIBC1, LIBC2, LIBC3, LIBC4, LD1, LD2, LD3, LD4)	\
+++  "%{" LIBC2 ":" LD2 ";:%{" LIBC3 ":" LD3 ";:%{" LIBC4 ":" LD4 ";:" LD1 "}}}"
++ 
++ #if DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", G, U, B)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mglibc", "muclibc", "mbionic", "mmusl", G, U, B, M)
++ #elif DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", U, G, B)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("muclibc", "mglibc", "mbionic", "mmusl", U, G, B, M)
++ #elif DEFAULT_LIBC == LIBC_BIONIC
++-#define CHOOSE_DYNAMIC_LINKER(G, U, B) \
++-  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", B, G, U)
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mbionic", "mglibc", "muclibc", "mmusl", B, G, U, M)
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, B, M) \
+++  CHOOSE_DYNAMIC_LINKER1 ("mmusl", "mglibc", "muclibc", "mbionic", M, G, U, B)
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif /* DEFAULT_LIBC */
++@@ -82,23 +87,103 @@
++ #define BIONIC_DYNAMIC_LINKER64 "/system/bin/linker64"
++ #define BIONIC_DYNAMIC_LINKERX32 "/system/bin/linkerx32"
++ 
+++/* Musl dynamic linker paths must be defined on a per-architecture
+++   basis, for each architecture supported by Musl. However, in order
+++   to let other architectures continue to build with other C
+++   libraries, we provide a dummy definition of the following defines. */
+++#define MUSL_DYNAMIC_LINKER "invalid"
+++#define MUSL_DYNAMIC_LINKER32 "invalid"
+++#define MUSL_DYNAMIC_LINKER64 "invalid"
+++#define MUSL_DYNAMIC_LINKERX32 "invalid"
+++
++ #define GNU_USER_DYNAMIC_LINKER						\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER,	\
++-			 BIONIC_DYNAMIC_LINKER)
+++			 BIONIC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
++ #define GNU_USER_DYNAMIC_LINKER32					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, \
++-			 BIONIC_DYNAMIC_LINKER32)
+++			 BIONIC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
++ #define GNU_USER_DYNAMIC_LINKER64					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, \
++-			 BIONIC_DYNAMIC_LINKER64)
+++			 BIONIC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
++ #define GNU_USER_DYNAMIC_LINKERX32					\
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERX32, UCLIBC_DYNAMIC_LINKERX32, \
++-			 BIONIC_DYNAMIC_LINKERX32)
+++			 BIONIC_DYNAMIC_LINKERX32, MUSL_DYNAMIC_LINKER32)
++ 
++ /* Whether we have Bionic libc runtime */
++ #undef TARGET_HAS_BIONIC
++ #define TARGET_HAS_BIONIC (OPTION_BIONIC)
++ 
+++/* musl avoids problematic includes by rearranging the include directories.
+++ * Unfortunately, this is mostly duplicated from cppdefault.c */
+++#if DEFAULT_LIBC == LIBC_MUSL
+++#define INCLUDE_DEFAULTS_MUSL_GPP			\
+++    { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1,		\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },		\
+++    { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1,		\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 },		\
+++    { GPLUSPLUS_BACKWARD_INCLUDE_DIR, "G++", 1, 1,	\
+++      GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 0 },
+++
+++#ifdef LOCAL_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_LOCAL			\
+++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 },		\
+++    { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 },
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_LOCAL
+++#endif
+++
+++#ifdef PREFIX_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_PREFIX			\
+++    { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_PREFIX
+++#endif
+++
+++#ifdef CROSS_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_CROSS			\
+++    { CROSS_INCLUDE_DIR, "GCC", 0, 0, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_CROSS
+++#endif
+++
+++#ifdef TOOL_INCLUDE_DIR
+++#define INCLUDE_DEFAULTS_MUSL_TOOL			\
+++    { TOOL_INCLUDE_DIR, "BINUTILS", 0, 1, 0, 0},
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_TOOL
+++#endif
+++
+++#ifdef NATIVE_SYSTEM_HEADER_DIR
+++#define INCLUDE_DEFAULTS_MUSL_NATIVE			\
+++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 2 },	\
+++    { NATIVE_SYSTEM_HEADER_DIR, 0, 0, 0, 1, 0 },
+++#else
+++#define INCLUDE_DEFAULTS_MUSL_NATIVE
+++#endif
+++
+++#if defined (CROSS_DIRECTORY_STRUCTURE) && !defined (TARGET_SYSTEM_ROOT)
+++# undef INCLUDE_DEFAULTS_MUSL_LOCAL
+++# define INCLUDE_DEFAULTS_MUSL_LOCAL
+++# undef INCLUDE_DEFAULTS_MUSL_NATIVE
+++# define INCLUDE_DEFAULTS_MUSL_NATIVE
+++#else
+++# undef INCLUDE_DEFAULTS_MUSL_CROSS
+++# define INCLUDE_DEFAULTS_MUSL_CROSS
+++#endif
+++
+++#undef INCLUDE_DEFAULTS
+++#define INCLUDE_DEFAULTS				\
+++  {							\
+++    INCLUDE_DEFAULTS_MUSL_GPP				\
+++    INCLUDE_DEFAULTS_MUSL_PREFIX			\
+++    INCLUDE_DEFAULTS_MUSL_CROSS				\
+++    INCLUDE_DEFAULTS_MUSL_TOOL				\
+++    INCLUDE_DEFAULTS_MUSL_NATIVE			\
+++    { GCC_INCLUDE_DIR, "GCC", 0, 1, 0, 0 },		\
+++    { 0, 0, 0, 0, 0, 0 }				\
+++  }
+++#endif
+++
++ #if (DEFAULT_LIBC == LIBC_UCLIBC) && defined (SINGLE_LIBC) /* uClinux */
++ /* This is a *uclinux* target.  We don't define below macros to normal linux
++    versions, because doing so would require *uclinux* targets to include
++Index: b/gcc/config/linux.opt
++===================================================================
++--- a/gcc/config/linux.opt
+++++ b/gcc/config/linux.opt
++@@ -30,3 +30,7 @@
++ muclibc
++ Target Report RejectNegative Var(linux_libc,LIBC_UCLIBC) Negative(mbionic)
++ Use uClibc C library
+++
+++mmusl
+++Target Report RejectNegative Var(linux_libc,LIBC_MUSL) Negative(mglibc)
+++Use musl C library
++Index: b/gcc/config/microblaze/linux.h
++===================================================================
++--- a/gcc/config/microblaze/linux.h
+++++ b/gcc/config/microblaze/linux.h
++@@ -25,7 +25,23 @@
++ #undef TLS_NEEDS_GOT
++ #define TLS_NEEDS_GOT 1
++ 
++-#define DYNAMIC_LINKER "/lib/ld.so.1"
+++#if TARGET_BIG_ENDIAN_DEFAULT == 0 /* LE */
+++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
+++#endif
+++
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-microblaze" MUSL_DYNAMIC_LINKER_E ".so.1"
+++#define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
+++
+++#if DEFAULT_LIBC == LIBC_MUSL
+++#define DYNAMIC_LINKER MUSL_DYNAMIC_LINKER
+++#else
+++#define DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER
+++#endif
+++
+++
++ #undef  SUBTARGET_EXTRA_SPECS
++ #define SUBTARGET_EXTRA_SPECS \
++   { "dynamic_linker", DYNAMIC_LINKER }
++Index: b/gcc/config/rs6000/linux64.h
++===================================================================
++--- a/gcc/config/rs6000/linux64.h
+++++ b/gcc/config/rs6000/linux64.h
++@@ -375,17 +375,23 @@
++ #endif
++ #define UCLIBC_DYNAMIC_LINKER32 "/lib/ld-uClibc.so.0"
++ #define UCLIBC_DYNAMIC_LINKER64 "/lib/ld64-uClibc.so.0"
+++#undef MUSL_DYNAMIC_LINKER32
+++#define MUSL_DYNAMIC_LINKER32 "/lib/ld-musl-powerpc.so.1"
+++#undef MUSL_DYNAMIC_LINKER64
+++#define MUSL_DYNAMIC_LINKER64 "/lib/ld-musl-powerpc64.so.1"
++ #if DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
++ #elif DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif
++ #define GNU_USER_DYNAMIC_LINKER32 \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER32, UCLIBC_DYNAMIC_LINKER32, MUSL_DYNAMIC_LINKER32)
++ #define GNU_USER_DYNAMIC_LINKER64 \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER64, UCLIBC_DYNAMIC_LINKER64, MUSL_DYNAMIC_LINKER64)
++ 
++ #undef  DEFAULT_ASM_ENDIAN
++ #if (TARGET_DEFAULT & MASK_LITTLE_ENDIAN)
++Index: b/gcc/config/rs6000/secureplt.h
++===================================================================
++--- a/gcc/config/rs6000/secureplt.h
+++++ b/gcc/config/rs6000/secureplt.h
++@@ -18,3 +18,4 @@
++ <http://www.gnu.org/licenses/>.  */
++ 
++ #define CC1_SECURE_PLT_DEFAULT_SPEC "-msecure-plt"
+++#define LINK_SECURE_PLT_DEFAULT_SPEC "--secure-plt"
++Index: b/gcc/config/rs6000/sysv4.h
++===================================================================
++--- a/gcc/config/rs6000/sysv4.h
+++++ b/gcc/config/rs6000/sysv4.h
++@@ -537,6 +537,9 @@
++ #ifndef CC1_SECURE_PLT_DEFAULT_SPEC
++ #define CC1_SECURE_PLT_DEFAULT_SPEC ""
++ #endif
+++#ifndef LINK_SECURE_PLT_DEFAULT_SPEC
+++#define LINK_SECURE_PLT_DEFAULT_SPEC ""
+++#endif
++ 
++ /* Pass -G xxx to the compiler.  */
++ #define	CC1_SPEC "%{G*} %(cc1_cpu)" \
++@@ -585,7 +588,8 @@
++ 
++ /* Override the default target of the linker.  */
++ #define	LINK_TARGET_SPEC \
++-  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "")
+++  ENDIAN_SELECT("", " --oformat elf32-powerpcle", "") \
+++  "%{!mbss-plt: %{!msecure-plt: %(link_secure_plt_default)}}"
++ 
++ /* Any specific OS flags.  */
++ #define LINK_OS_SPEC "\
++@@ -763,15 +767,18 @@
++ 
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld.so.1"
++ #define UCLIBC_DYNAMIC_LINKER "/lib/ld-uClibc.so.0"
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-powerpc.so.1"
++ #if DEFAULT_LIBC == LIBC_UCLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{mglibc:" G ";:" U "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{mmusl:" M ";:" U "}}"
+++#elif DEFAULT_LIBC == LIBC_MUSL
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{mglibc:" G ";:%{muclibc:" U ";:" M "}}"
++ #elif !defined (DEFAULT_LIBC) || DEFAULT_LIBC == LIBC_GLIBC
++-#define CHOOSE_DYNAMIC_LINKER(G, U) "%{muclibc:" U ";:" G "}"
+++#define CHOOSE_DYNAMIC_LINKER(G, U, M) "%{muclibc:" U ";:%{mmusl:" M ";:" G "}}"
++ #else
++ #error "Unsupported DEFAULT_LIBC"
++ #endif
++ #define GNU_USER_DYNAMIC_LINKER \
++-  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER)
+++  CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKER, UCLIBC_DYNAMIC_LINKER, MUSL_DYNAMIC_LINKER)
++ 
++ #define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \
++   %{rdynamic:-export-dynamic} \
++@@ -894,6 +901,7 @@
++   { "link_os_openbsd",		LINK_OS_OPENBSD_SPEC },			\
++   { "link_os_default",		LINK_OS_DEFAULT_SPEC },			\
++   { "cc1_secure_plt_default",	CC1_SECURE_PLT_DEFAULT_SPEC },		\
+++  { "link_secure_plt_default",	LINK_SECURE_PLT_DEFAULT_SPEC },		\
++   { "cpp_os_ads",		CPP_OS_ADS_SPEC },			\
++   { "cpp_os_yellowknife",	CPP_OS_YELLOWKNIFE_SPEC },		\
++   { "cpp_os_mvme",		CPP_OS_MVME_SPEC },			\
++Index: b/gcc/config/sh/linux.h
++===================================================================
++--- a/gcc/config/sh/linux.h
+++++ b/gcc/config/sh/linux.h
++@@ -43,7 +43,15 @@
++ 
++ #define TARGET_ASM_FILE_END file_end_indicate_exec_stack
++ 
+++#if TARGET_BIG_ENDIAN_DEFAULT /* BE */
+++#define MUSL_DYNAMIC_LINKER_E "eb"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E
+++#endif
+++
++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2"
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-sh" MUSL_DYNAMIC_LINKER_E ".so.1"
++ 
++ #undef SUBTARGET_LINK_EMUL_SUFFIX
++ #define SUBTARGET_LINK_EMUL_SUFFIX "_linux"
++Index: b/gcc/configure
++===================================================================
++--- a/gcc/configure
+++++ b/gcc/configure
++@@ -27449,6 +27453,9 @@
++       gcc_cv_target_dl_iterate_phdr=no
++     fi
++     ;;
+++  *-linux-musl*)
+++    gcc_cv_target_dl_iterate_phdr=yes
+++    ;;
++ esac
++ 
++ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
++Index: b/gcc/configure.ac
++===================================================================
++--- a/gcc/configure.ac
+++++ b/gcc/configure.ac
++@@ -5108,6 +5112,9 @@
++       gcc_cv_target_dl_iterate_phdr=no
++     fi
++     ;;
+++  *-linux-musl*)
+++    gcc_cv_target_dl_iterate_phdr=yes
+++    ;;
++ esac
++ GCC_TARGET_TEMPLATE([TARGET_DL_ITERATE_PHDR])
++ if test x$gcc_cv_target_dl_iterate_phdr = xyes; then
++Index: b/gcc/ginclude/stddef.h
++===================================================================
++--- a/gcc/ginclude/stddef.h
+++++ b/gcc/ginclude/stddef.h
++@@ -181,6 +181,7 @@
++ #ifndef _GCC_SIZE_T
++ #ifndef _SIZET_
++ #ifndef __size_t
+++#ifndef __DEFINED_size_t /* musl */
++ #define __size_t__	/* BeOS */
++ #define __SIZE_T__	/* Cray Unicos/Mk */
++ #define _SIZE_T
++@@ -197,6 +198,7 @@
++ #define ___int_size_t_h
++ #define _GCC_SIZE_T
++ #define _SIZET_
+++#define __DEFINED_size_t /* musl */
++ #if (defined (__FreeBSD__) && (__FreeBSD__ >= 5)) \
++   || defined(__FreeBSD_kernel__)
++ /* __size_t is a typedef on FreeBSD 5, must not trash it. */
++@@ -214,6 +216,7 @@
++ typedef long ssize_t;
++ #endif /* __BEOS__ */
++ #endif /* !(defined (__GNUG__) && defined (size_t)) */
+++#endif /* __DEFINED_size_t */
++ #endif /* __size_t */
++ #endif /* _SIZET_ */
++ #endif /* _GCC_SIZE_T */
++Index: b/libgcc/unwind-dw2-fde-dip.c
++===================================================================
++--- a/libgcc/unwind-dw2-fde-dip.c
+++++ b/libgcc/unwind-dw2-fde-dip.c
++@@ -73,6 +73,13 @@
++     && defined(TARGET_DL_ITERATE_PHDR) \
++     && defined(__sun__) && defined(__svr4__)
++ # define USE_PT_GNU_EH_FRAME
+++ #endif
+++
+++/* For musl libc, TARGET_DL_ITERATE_PHDR gets defined by the configure
+++   script. */
+++#if !defined(inhibit_libc) && defined(HAVE_LD_EH_FRAME_HDR)	\
+++  && defined(TARGET_DL_ITERATE_PHDR)
+++# define USE_PT_GNU_EH_FRAME
++ #endif
++ 
++ #if defined(USE_PT_GNU_EH_FRAME)
++Index: b/libgomp/config/posix/time.c
++===================================================================
++--- a/libgomp/config/posix/time.c
+++++ b/libgomp/config/posix/time.c
++@@ -28,6 +28,8 @@
++    The following implementation uses the most simple POSIX routines.
++    If present, POSIX 4 clocks should be used instead.  */
++ 
+++#define _POSIX_C_SOURCE 199309L /* for clocks */
+++
++ #include "libgomp.h"
++ #include <unistd.h>
++ #if TIME_WITH_SYS_TIME
++Index: b/libitm/config/arm/hwcap.cc
++===================================================================
++--- a/libitm/config/arm/hwcap.cc
+++++ b/libitm/config/arm/hwcap.cc
++@@ -40,7 +40,11 @@
++ 
++ #ifdef __linux__
++ #include <unistd.h>
+++#ifdef __GLIBC__
++ #include <sys/fcntl.h>
+++#else
+++#include <fcntl.h>
+++#endif
++ #include <elf.h>
++ 
++ static void __attribute__((constructor))
++Index: b/libitm/config/linux/x86/tls.h
++===================================================================
++--- a/libitm/config/linux/x86/tls.h
+++++ b/libitm/config/linux/x86/tls.h
++@@ -25,16 +25,19 @@
++ #ifndef LIBITM_X86_TLS_H
++ #define LIBITM_X86_TLS_H 1
++ 
++-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+++#if defined(__GLIBC_PREREQ)
+++#if __GLIBC_PREREQ(2, 10)
++ /* Use slots in the TCB head rather than __thread lookups.
++    GLIBC has reserved words 10 through 13 for TM.  */
++ #define HAVE_ARCH_GTM_THREAD 1
++ #define HAVE_ARCH_GTM_THREAD_DISP 1
++ #endif
+++#endif
++ 
++ #include "config/generic/tls.h"
++ 
++-#if defined(__GLIBC_PREREQ) && __GLIBC_PREREQ(2, 10)
+++#if defined(__GLIBC_PREREQ)
+++#if __GLIBC_PREREQ(2, 10)
++ namespace GTM HIDDEN {
++ 
++ #ifdef __x86_64__
++@@ -101,5 +104,6 @@
++ 
++ } // namespace GTM
++ #endif /* >= GLIBC 2.10 */
+++#endif
++ 
++ #endif // LIBITM_X86_TLS_H
++Index: b/libstdc++-v3/configure.host
++===================================================================
++--- a/libstdc++-v3/configure.host
+++++ b/libstdc++-v3/configure.host
++@@ -264,6 +264,13 @@
++     os_include_dir="os/bsd/freebsd"
++     ;;
++   gnu* | linux* | kfreebsd*-gnu | knetbsd*-gnu)
+++    # check for musl by target
+++    case "${host_os}" in
+++      *-musl*)
+++        os_include_dir="os/generic"
+++        ;;
+++      *)
+++
++     if [ "$uclibc" = "yes" ]; then
++       os_include_dir="os/uclibc"
++     elif [ "$bionic" = "yes" ]; then
++@@ -272,6 +279,9 @@
++       os_include_dir="os/gnu-linux"
++     fi
++     ;;
+++
+++    esac
+++    ;;
++   hpux*)
++     os_include_dir="os/hpux"
++     ;;
++Index: b/gcc/config/mips/linux64.h
++===================================================================
++--- a/gcc/config/mips/linux64.h
+++++ b/gcc/config/mips/linux64.h
++@@ -41,4 +41,4 @@
++ #define BIONIC_DYNAMIC_LINKERN32 "/system/bin/linker32"
++ #define GNU_USER_DYNAMIC_LINKERN32 \
++   CHOOSE_DYNAMIC_LINKER (GLIBC_DYNAMIC_LINKERN32, UCLIBC_DYNAMIC_LINKERN32, \
++-			 BIONIC_DYNAMIC_LINKERN32)
+++			 BIONIC_DYNAMIC_LINKERN32, MUSL_DYNAMIC_LINKER)
++Index: b/gcc/config/mips/linux.h
++===================================================================
++--- a/gcc/config/mips/linux.h
+++++ b/gcc/config/mips/linux.h
++@@ -23,3 +23,11 @@
++ #undef UCLIBC_DYNAMIC_LINKER
++ #define UCLIBC_DYNAMIC_LINKER \
++   "%{mnan=2008:/lib/ld-uClibc-mipsn8.so.0;:/lib/ld-uClibc.so.0}"
+++
+++#if TARGET_ENDIAN_DEFAULT == 0 /* LE */
+++#define MUSL_DYNAMIC_LINKER_E "%{EB:;:el}"
+++#else
+++#define MUSL_DYNAMIC_LINKER_E "%{EL:el}"
+++#endif
+++#undef MUSL_DYNAMIC_LINKER
+++#define MUSL_DYNAMIC_LINKER "/lib/ld-musl-mips" MUSL_DYNAMIC_LINKER_E "%{msoft-float:-sf}.so.1"
+diff --git a/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
+new file mode 100644
+index 0000000..df5372b
+--- /dev/null
++++ b/package/gcc/4.9.3/920-libgcc-remove-unistd-header.patch
+@@ -0,0 +1,12 @@
++Upstream status: In progress
++
++--- a/libgcc/config/nios2/linux-atomic.c
+++++ b/libgcc/config/nios2/linux-atomic.c
++@@ -20,7 +20,6 @@
++ see the files COPYING3 and COPYING.RUNTIME respectively.  If not, see
++ <http://www.gnu.org/licenses/>.  */
++ 
++-#include <asm/unistd.h>
++ #define EFAULT  14
++ #define EBUSY   16
++ #define ENOSYS  38
+diff --git a/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
+new file mode 100644
+index 0000000..670cf8d
+--- /dev/null
++++ b/package/gcc/4.9.3/930-libgcc-disable-split-stack-nothreads.patch
+@@ -0,0 +1,14 @@
++disable split-stack for non-thread builds
++
++Signed-off-by: Waldemar Brodkorb <wbx@openadk.org>
++
++diff -Nur gcc-4.9.3.orig/libgcc/config/t-stack gcc-4.9.3/libgcc/config/t-stack
++--- gcc-4.9.3.orig/libgcc/config/t-stack	2010-10-01 21:31:49.000000000 +0200
+++++ gcc-4.9.3/libgcc/config/t-stack	2016-03-07 01:34:32.000000000 +0100
++@@ -1,4 +1,6 @@
++ # Makefile fragment to provide generic support for -fsplit-stack.
++ # This should be used in config.host for any host which supports
++ # -fsplit-stack.
+++ifeq ($(enable_threads),yes)
++ LIB2ADD_ST += $(srcdir)/generic-morestack.c $(srcdir)/generic-morestack-thread.c
+++endif
+diff --git a/package/gcc/Config.in.host b/package/gcc/Config.in.host
+index d204bf7..08a7272 100644
+--- a/package/gcc/Config.in.host
++++ b/package/gcc/Config.in.host
+@@ -36,6 +36,32 @@ choice
+ 		depends on BR2_arc
+ 		select BR2_TOOLCHAIN_GCC_AT_LEAST_6
+ 
++        config BR2_GCC_VERSION_4_9_1
++                bool "gcc 4.9.1"
++                # Broken or unsupported architectures
++                depends on !BR2_arc
++                # Broken or unsupported ARM cores
++                depends on !BR2_cortex_a17
++                # Unsupported for MIPS R6 
++                depends on !BR2_mips_32r6 && !BR2_mips_64r6
++                # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
++                select BR2_GCC_NEEDS_MPC
++                select BR2_GCC_SUPPORTS_GRAPHITE
++                select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
++
++        config BR2_GCC_VERSION_4_9_3
++                bool "gcc 4.9.3"
++                # Broken or unsupported architectures
++                depends on !BR2_arc
++                # Broken or unsupported ARM cores
++                depends on !BR2_cortex_a17
++                # Unsupported for MIPS R6 
++                depends on !BR2_mips_32r6 && !BR2_mips_64r6
++                # PR60102 https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60102
++                select BR2_GCC_NEEDS_MPC
++                select BR2_GCC_SUPPORTS_GRAPHITE
++                select BR2_TOOLCHAIN_GCC_AT_LEAST_4_9
++
+ 	config BR2_GCC_VERSION_4_9_X
+ 		bool "gcc 4.9.x"
+ 		# Broken or unsupported architectures
+@@ -93,6 +119,8 @@ config BR2_GCC_SUPPORTS_FINEGRAINEDMTUNE
+ config BR2_GCC_VERSION
+ 	string
+ 	default "4.8.5"     if BR2_GCC_VERSION_4_8_X
++	default "4.9.1"     if BR2_GCC_VERSION_4_9_1
++	default "4.9.3"     if BR2_GCC_VERSION_4_9_3
+ 	default "4.9.4"     if BR2_GCC_VERSION_4_9_X
+ 	default "5.4.0"     if BR2_GCC_VERSION_5_X
+ 	default "6.2.0"     if BR2_GCC_VERSION_6_X
+diff --git a/package/gcc/gcc.hash b/package/gcc/gcc.hash
+index ce738ef..581bceb 100644
+--- a/package/gcc/gcc.hash
++++ b/package/gcc/gcc.hash
+@@ -4,6 +4,10 @@ sha512  78696b287d46aacd6f150920da376ea32f58ad9f0dafd2d3b7fa6dbdd8dd7afe659108d1
+ sha512  dfcb737073191e628231031a3571ec77ee760a59377630f4a6e4fdfa66f9ddad39fde47e3f0f227eb43cdf90e0d34cde5abdc9ac892c1e111a911062a66c9189  gcc-4.7.4.tar.bz2
+ # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.8.5/sha512.sum
+ sha512  47fdfeca0c0a624cdec9c4ae47137d056c918d5c386d4b96985bb3c8172aba377cb66cbcc30e80832fd244a7d98f562c20198056915c70cfef0977545073a8ea  gcc-4.8.5.tar.bz2
++# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.1/sha512.sum
++sha512	8598106a4b7c03bb4d6e29fa1bfa9ee6b6390d1f1bca86c1ccd27aed830ae1d126daa50c4041016cbfa76090dd66c51f1ce06958b8ccd6c3be51eae875125593  gcc-4.9.1.tar.bz2
++# From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.3/sha512.sum
++sha512  9ac57377a6975fc7adac704ec81355262b9f537def6955576753b87715470a20ee6a2a3144a79cc8fcba3443f7b44c7337d79d704b522d053f54f79aa6b442df  gcc-4.9.3.tar.bz2
+ # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-4.9.4/sha512.sum
+ sha512  93abb78e16277454f41a8e9810f41f66c0fdffdc539a762ff6b67d3037f78db971378683fd2ebf707d1d51c059fad2161fe42d110c330027f40214b7db0f3efe  gcc-4.9.4.tar.bz2
+ # From ftp://gcc.gnu.org/pub/gcc/releases/gcc-5.4.0/sha512.sum
+diff --git a/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
+new file mode 100644
+index 0000000..da2f49d
+--- /dev/null
++++ b/package/glibc/glibc/2.18-svnr23787/0001-CVE-2014-7817-eglibc.patch
+@@ -0,0 +1,174 @@
++From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
++Modified for eglibc.
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
++EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
++SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
++
++CVE-2014-7817:
++
++The function wordexp() fails to properly handle the WRDE_NOCMD
++flag when processing arithmetic inputs in the form of "$((... ``))"
++where "..." can be anything valid. The backticks in the arithmetic
++epxression are evaluated by in a shell even if WRDE_NOCMD forbade
++command substitution. This allows an attacker to attempt to pass
++dangerous commands via constructs of the above form, and bypass
++the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
++in parse_arith(). The patch also hardens parse_backticks() and 
++parse_comm() to check for WRDE_NOCMD flag and return an error instead
++of ever running a shell.
++
++We expand the testsuite and add 3 new regression tests of roughtly
++the same form but with a couple of nested levels. 
++
++On top of the 3 new tests we add fork validation to the WRDE_NOCMD
++testing. If any forks are detected during the execution of a wordexp()
++call with WRDE_NOCMD, the test is marked as failed. This is slightly
++heuristic since vfork might be used, but it provides a higher level
++of assurance that no shells were executed as part of command substitution
++with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
++libdl, instead we use the public implementation namespace function
++__register_atfork (already part of the public ABI for libpthread).
++
++Tested on x86_64 with no regressions.
++
++2014-10-27  Carlos O'Donell  <carlos@redhat.com>
++
++	* wordexp-test.c (__dso_handle): Add prototype.
++	(__register_atfork): Likewise.
++	(__app_register_atfork): New function.
++	(registered_forks): New global.
++	(register_fork): New function.
++	(test_case): Add 3 new tests for WRDE_CMDSUB.
++	(main): Call __app_register_atfork.
++	(testit): If WRDE_NOCMD set registered_forks to zero, run test, and
++	if fork count is non-zero fail the test.
++	* posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
++	is set and parsing '`'. 
++	(parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
++	(parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
++	parsing '`'.
++
++diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
++index 4957006..5ce2a1b 100644
++--- a/libc/posix/wordexp-test.c
+++++ b/libc/posix/wordexp-test.c
++@@ -27,6 +27,25 @@
++ 
++ #define IFS " \n\t"
++ 
+++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
+++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
+++
+++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
+++{
+++  return __register_atfork (prepare, parent, child,
+++			    &__dso_handle == NULL ? NULL : __dso_handle);
+++}
+++
+++/* Number of forks seen.  */
+++static int registered_forks;
+++
+++/* For each fork increment the fork count.  */
+++static void
+++register_fork (void)
+++{
+++  registered_forks++;
+++}
+++
++ struct test_case_struct
++ {
++   int retval;
++@@ -206,6 +225,12 @@ struct test_case_struct
++     { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
++     { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
++     { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
+++    /* Test for CVE-2014-7817. We test 3 combinations of command
+++       substitution inside an arithmetic expression to make sure that
+++       no commands are executed and error is returned.  */
+++    { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
+++    { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
+++    { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
++ 
++     { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
++   };
++@@ -258,6 +283,15 @@ main (int argc, char *argv[])
++ 	  return -1;
++     }
++ 
+++  /* If we are not allowed to do command substitution, we install
+++     fork handlers to verify that no forks happened.  No forks should
+++     happen at all if command substitution is disabled.  */
+++  if (__app_register_atfork (register_fork, NULL, NULL) != 0)
+++    {
+++      printf ("Failed to register fork handler.\n");
+++      return -1;
+++    }
+++
++   for (test = 0; test_case[test].retval != -1; test++)
++     if (testit (&test_case[test]))
++       ++fail;
++@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
++ 
++   printf ("Test %d (%s): ", ++tests, tc->words);
++ 
+++  if (tc->flags & WRDE_NOCMD)
+++    registered_forks = 0;
+++
++   if (tc->flags & WRDE_APPEND)
++     {
++       /* initial wordexp() call, to be appended to */
++@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
++     }
++   retval = wordexp (tc->words, &we, tc->flags);
++ 
+++  if ((tc->flags & WRDE_NOCMD)
+++      && (registered_forks > 0))
+++    {
+++      printf ("FAILED fork called for WRDE_NOCMD\n");
+++      return 1;
+++    }
+++
++   if (tc->flags & WRDE_DOOFFS)
++       start_offs = sav_we.we_offs;
++ 
++diff --git a/posix/wordexp.c b/posix/wordexp.c
++index b6b65dd..d6a158f 100644
++--- a/libc/posix/wordexp.c
+++++ b/libc/posix/wordexp.c
++@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
++ 	  break;
++ 
++ 	case '`':
+++	   if (flags & WRDE_NOCMD)
+++	     {
+++	       free (expr);
+++	       return WRDE_NOCMD;
+++	     }
+++
++ 	  (*offset)++;
++ 	  error = parse_backtick (&expr, &expr_length, &expr_maxlen,
++ 				  words, offset, flags, NULL, NULL, NULL);
++@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
++   size_t comm_maxlen;
++   char *comm = w_newword (&comm_length, &comm_maxlen);
++ 
+++  /* Do nothing if command substitution should not succeed.  */
+++  if (flags & WRDE_NOCMD)
+++    return WRDE_CMDSUB;
+++
++   for (; words[*offset]; ++(*offset))
++     {
++       switch (words[*offset])
++@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
++       switch (words[*offset])
++ 	{
++ 	case '`':
+++	  if (flags & WRDE_NOCMD)
+++	    return WRDE_NOCMD;
+++
++ 	  /* Go -- give the script to the shell */
++ 	  error = exec_comm (comm, word, word_length, max_length, flags,
++ 			     pwordexp, ifs, ifs_white);
+diff --git a/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
+new file mode 100644
+index 0000000..4f426f2
+--- /dev/null
++++ b/package/glibc/glibc/2.18-svnr23787/0002-accept-make4.patch
+@@ -0,0 +1,33 @@
++Backport upstream patch (28d708c44bc47b56f6551ff285f78edcf61c208a) to accept
++make-4.0 or newer.
++We patch both configure and configure.in files so if we ever have to run
++autoreconf in the glibc source, then the fix will be propagated properly.
++
++Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>
++
++Index: glibc-2.18-svnr23787/libc/configure
++===================================================================
++--- glibc-2.18-svnr23787.orig/libc/configure
+++++ glibc-2.18-svnr23787/libc/configure
++@@ -4772,7 +4772,7 @@ $as_echo_n "checking version of $MAKE...
++   ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'`
++   case $ac_prog_version in
++     '') ac_prog_version="v. ?.??, bad"; ac_verc_fail=yes;;
++-    3.79* | 3.[89]*)
+++    3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*)
++        ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;;
++     *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;;
++ 
++Index: glibc-2.18-svnr23787/libc/configure.in
++===================================================================
++--- glibc-2.18-svnr23787.orig/libc/configure.in
+++++ glibc-2.18-svnr23787/libc/configure.in
++@@ -989,7 +989,7 @@ AC_CHECK_PROG_VER(CC, ${ac_tool_prefix}g
++   critic_missing="$critic_missing gcc")
++ AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version,
++   [GNU Make[^0-9]*\([0-9][0-9.]*\)],
++-  [3.79* | 3.[89]*], critic_missing="$critic_missing make")
+++  [3.79* | 3.[89]* | [4-9].* | [1-9][0-9]*], critic_missing="$critic_missing make")
++ 
++ AC_CHECK_PROG_VER(MSGFMT, gnumsgfmt gmsgfmt msgfmt, --version,
++   [GNU gettext.* \([0-9]*\.[0-9.]*\)],
+diff --git a/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
+new file mode 100644
+index 0000000..f447dcd
+--- /dev/null
++++ b/package/glibc/glibc/2.18-svnr23787/0003-CVE-2014-6040.patch
+@@ -0,0 +1,141 @@
++Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
++See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c	2015-01-08 16:05:53.918823240 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm1364.c	2015-01-08 16:06:02.781555143 -0300
++@@ -220,7 +220,8 @@
++ 	  ++rp2;							      \
++ 									      \
++ 	uint32_t res;							      \
++-	if (__builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
+++	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = DB_TO_UCS4[ch + rp2->idx],			      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm932.c	2015-01-08 16:05:53.910818967 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm932.c	2015-01-08 16:06:02.781555143 -0300
++@@ -73,11 +73,12 @@
++ 	  }								      \
++ 									      \
++ 	ch = (ch * 0x100) + inptr[1];					      \
+++	/* ch was less than 0xfd.  */					      \
+++	assert (ch < 0xfd00);						      \
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
++-	    || __builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm932db_to_ucs4[ch + rp2->idx],		      \
++ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm933.c	2015-01-08 16:05:53.917822706 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm933.c	2015-01-08 16:06:02.781555143 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm933db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm935.c	2015-01-08 16:05:53.921824843 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm935.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm935db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm937.c	2015-01-08 16:05:53.915821638 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm937.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm937db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm939.c	2015-01-08 16:05:53.917822706 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm939.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm939db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm943.c	2015-01-08 16:05:53.918823240 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm943.c	2015-01-08 16:06:02.782555677 -0300
++@@ -74,11 +74,12 @@
++ 	  }								      \
++ 									      \
++ 	ch = (ch * 0x100) + inptr[1];					      \
+++	/* ch was less than 0xfd.  */					      \
+++	assert (ch < 0xfd00);						      \
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
++-	    || __builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm943db_to_ucs4[ch + rp2->idx],		      \
++ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
++--- eglibc-2.19.orig/libc/iconvdata/Makefile	2015-01-08 16:05:53.903815227 -0300
+++++ eglibc-2.19/libc/iconvdata/Makefile	2015-01-08 16:06:02.782555677 -0300
++@@ -303,6 +303,7 @@
++ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
++ 			 $(addprefix $(objpfx),$(modules.so)) \
++ 			 $(common-objdir)/iconv/iconv_prog TESTS
+++	iconv_modules="$(modules)" \
++ 	$(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
++ 
++ $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
++--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:05:53.894810420 -0300
+++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:06:02.782555677 -0300
++@@ -188,6 +188,24 @@
++ 
++ done < TESTS2
++ 
+++# Check for crashes in decoders.
+++printf '\016\377\377\377\377\377\377\377' > $temp1
+++for from in $iconv_modules ; do
+++    echo $ac_n "test decoder $from $ac_c"
+++    PROG=`eval echo $ICONV`
+++    if $PROG < $temp1 >/dev/null 2>&1 ; then
+++	: # fall through
+++    else
+++	status=$?
+++	if test $status -gt 1 ; then
+++	    echo "/FAILED"
+++	    failed=1
+++	    continue
+++	fi
+++    fi
+++    echo "OK"
+++done
+++
++ exit $failed
++ # Local Variables:
++ #  mode:shell-script
+diff --git a/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
+new file mode 100644
+index 0000000..c7aa12c
+--- /dev/null
++++ b/package/glibc/glibc/2.18-svnr23787/0004-CVE-2014-9402.patch
+@@ -0,0 +1,20 @@
++Fix CVE-2014-9402 - denial of service in getnetbyname function.
++Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
++See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
++--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:35.024977879 -0300
+++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:42.543992357 -0300
++@@ -398,8 +398,8 @@
++ 
++ 	case BYNAME:
++ 	  {
++-	    char **ap = result->n_aliases++;
++-	    while (*ap != NULL)
+++	    char **ap;
+++	    for (ap = result->n_aliases; *ap != NULL; ++ap)
++ 	      {
++ 		/* Check each alias name for being of the forms:
++ 		   4.3.2.1.in-addr.arpa		= net 1.2.3.4
+diff --git a/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
+new file mode 100644
+index 0000000..a0da626
+--- /dev/null
++++ b/package/glibc/glibc/2.18-svnr23787/0005-CVE-2015-1472.patch
+@@ -0,0 +1,88 @@
++Fix CVE-2015-1472 - heap buffer overflow in wscanf
++Backport from upstream:
++https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
++See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
++index aece3f2..8a2eb9e 100644
++--- a/libc/stdio-common/tst-sscanf.c
+++++ b/libc/stdio-common/tst-sscanf.c
++@@ -233,5 +233,38 @@ main (void)
++ 	}
++     }
++ 
+++  /* BZ #16618
+++     The test will segfault during SSCANF if the buffer overflow
+++     is not fixed.  The size of `s` is such that it forces the use
+++     of malloc internally and this triggers the incorrect computation.
+++     Thus the value for SIZE is arbitrariy high enough that malloc
+++     is used.  */
+++  {
+++#define SIZE 131072
+++    CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
+++    if (s == NULL)
+++      abort ();
+++    for (size_t i = 0; i < SIZE; i++)
+++      s[i] = L('0');
+++    s[SIZE] = L('\0');
+++    int i = 42;
+++    /* Scan multi-digit zero into `i`.  */
+++    if (SSCANF (s, L("%d"), &i) != 1)
+++      {
+++	printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
+++	result = 1;
+++      }
+++    if (i != 0)
+++      {
+++	printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
+++	result = 1;
+++      }
+++    free (s);
+++    if (result != 1)
+++      printf ("PASS: bug16618: Did not crash.\n");
+++#undef SIZE
+++  }
+++
+++
++   return result;
++ }
++diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
++index cd129a8..0e204e7 100644
++--- a/libc/stdio-common/vfscanf.c
+++++ b/libc/stdio-common/vfscanf.c
++@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
++       if (__glibc_unlikely (wpsize == wpmax))				      \
++ 	{								    \
++ 	  CHAR_T *old = wp;						    \
++-	  size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax			    \
++-			    ? UCHAR_MAX + 1 : 2 * wpmax);		    \
++-	  if (use_malloc || !__libc_use_alloca (newsize))		    \
+++	  bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
+++	  size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax);		    \
+++	  size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX;	    \
+++	  if (!__libc_use_alloca (newsize))				    \
++ 	    {								    \
++ 	      wp = realloc (use_malloc ? wp : NULL, newsize);		    \
++ 	      if (wp == NULL)						    \
++@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
++ 		}							    \
++ 	      if (! use_malloc)						    \
++ 		MEMCPY (wp, old, wpsize);				    \
++-	      wpmax = newsize;						    \
+++	      wpmax = wpneed;						    \
++ 	      use_malloc = true;					    \
++ 	    }								    \
++ 	  else								    \
++ 	    {								    \
++ 	      size_t s = wpmax * sizeof (CHAR_T);			    \
++-	      wp = (CHAR_T *) extend_alloca (wp, s,			    \
++-					     newsize * sizeof (CHAR_T));    \
+++	      wp = (CHAR_T *) extend_alloca (wp, s, newsize);		    \
++ 	      wpmax = s / sizeof (CHAR_T);				    \
++ 	      if (old != NULL)						    \
++ 		MEMCPY (wp, old, wpsize);				    \
++-- 
++1.9.4
++
+diff --git a/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
+new file mode 100644
+index 0000000..da2f49d
+--- /dev/null
++++ b/package/glibc/glibc/2.19-svnr25243/0001-CVE-2014-7817-eglibc.patch
+@@ -0,0 +1,174 @@
++From https://bugzilla.redhat.com/show_bug.cgi?id=1157689
++Modified for eglibc.
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!!
++EMBARGOED !!! EMBARGOED !!! EMARGOED !!! EMBARGOED !!! EMBARGOED !!!
++SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!! SECURITY !!!
++
++CVE-2014-7817:
++
++The function wordexp() fails to properly handle the WRDE_NOCMD
++flag when processing arithmetic inputs in the form of "$((... ``))"
++where "..." can be anything valid. The backticks in the arithmetic
++epxression are evaluated by in a shell even if WRDE_NOCMD forbade
++command substitution. This allows an attacker to attempt to pass
++dangerous commands via constructs of the above form, and bypass
++the WRDE_NOCMD flag. This patch fixes this by checking for WRDE_NOCMD
++in parse_arith(). The patch also hardens parse_backticks() and 
++parse_comm() to check for WRDE_NOCMD flag and return an error instead
++of ever running a shell.
++
++We expand the testsuite and add 3 new regression tests of roughtly
++the same form but with a couple of nested levels. 
++
++On top of the 3 new tests we add fork validation to the WRDE_NOCMD
++testing. If any forks are detected during the execution of a wordexp()
++call with WRDE_NOCMD, the test is marked as failed. This is slightly
++heuristic since vfork might be used, but it provides a higher level
++of assurance that no shells were executed as part of command substitution
++with WRDE_NOCMD in effect. In addition it doesn't require libpthread or
++libdl, instead we use the public implementation namespace function
++__register_atfork (already part of the public ABI for libpthread).
++
++Tested on x86_64 with no regressions.
++
++2014-10-27  Carlos O'Donell  <carlos@redhat.com>
++
++	* wordexp-test.c (__dso_handle): Add prototype.
++	(__register_atfork): Likewise.
++	(__app_register_atfork): New function.
++	(registered_forks): New global.
++	(register_fork): New function.
++	(test_case): Add 3 new tests for WRDE_CMDSUB.
++	(main): Call __app_register_atfork.
++	(testit): If WRDE_NOCMD set registered_forks to zero, run test, and
++	if fork count is non-zero fail the test.
++	* posix/wordexp.c (parse_arith): Return WRDE_NOCMD if WRDE_NOCMD flag
++	is set and parsing '`'. 
++	(parse_comm): Return WRDE_NOCMD if WRDE_NOCMD flag is set.
++	(parse_backtick): Return WRDE_NOCMD if WRDE_NOCMD flag is set and
++	parsing '`'.
++
++diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c
++index 4957006..5ce2a1b 100644
++--- a/libc/posix/wordexp-test.c
+++++ b/libc/posix/wordexp-test.c
++@@ -27,6 +27,25 @@
++ 
++ #define IFS " \n\t"
++ 
+++extern void *__dso_handle __attribute__ ((__weak__, __visibility__ ("hidden")));
+++extern int __register_atfork (void (*) (void), void (*) (void), void (*) (void), void *);
+++
+++static int __app_register_atfork (void (*prepare) (void), void (*parent) (void), void (*child) (void))
+++{
+++  return __register_atfork (prepare, parent, child,
+++			    &__dso_handle == NULL ? NULL : __dso_handle);
+++}
+++
+++/* Number of forks seen.  */
+++static int registered_forks;
+++
+++/* For each fork increment the fork count.  */
+++static void
+++register_fork (void)
+++{
+++  registered_forks++;
+++}
+++
++ struct test_case_struct
++ {
++   int retval;
++@@ -206,6 +225,12 @@ struct test_case_struct
++     { WRDE_SYNTAX, NULL, "$((2+))", 0, 0, { NULL, }, IFS },
++     { WRDE_SYNTAX, NULL, "`", 0, 0, { NULL, }, IFS },
++     { WRDE_SYNTAX, NULL, "$((010+4+))", 0, 0, { NULL }, IFS },
+++    /* Test for CVE-2014-7817. We test 3 combinations of command
+++       substitution inside an arithmetic expression to make sure that
+++       no commands are executed and error is returned.  */
+++    { WRDE_CMDSUB, NULL, "$((`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
+++    { WRDE_CMDSUB, NULL, "$((1+`echo 1`))", WRDE_NOCMD, 0, { NULL, }, IFS },
+++    { WRDE_CMDSUB, NULL, "$((1+$((`echo 1`))))", WRDE_NOCMD, 0, { NULL, }, IFS },
++ 
++     { -1, NULL, NULL, 0, 0, { NULL, }, IFS },
++   };
++@@ -258,6 +283,15 @@ main (int argc, char *argv[])
++ 	  return -1;
++     }
++ 
+++  /* If we are not allowed to do command substitution, we install
+++     fork handlers to verify that no forks happened.  No forks should
+++     happen at all if command substitution is disabled.  */
+++  if (__app_register_atfork (register_fork, NULL, NULL) != 0)
+++    {
+++      printf ("Failed to register fork handler.\n");
+++      return -1;
+++    }
+++
++   for (test = 0; test_case[test].retval != -1; test++)
++     if (testit (&test_case[test]))
++       ++fail;
++@@ -367,6 +401,9 @@ testit (struct test_case_struct *tc)
++ 
++   printf ("Test %d (%s): ", ++tests, tc->words);
++ 
+++  if (tc->flags & WRDE_NOCMD)
+++    registered_forks = 0;
+++
++   if (tc->flags & WRDE_APPEND)
++     {
++       /* initial wordexp() call, to be appended to */
++@@ -378,6 +415,13 @@ testit (struct test_case_struct *tc)
++     }
++   retval = wordexp (tc->words, &we, tc->flags);
++ 
+++  if ((tc->flags & WRDE_NOCMD)
+++      && (registered_forks > 0))
+++    {
+++      printf ("FAILED fork called for WRDE_NOCMD\n");
+++      return 1;
+++    }
+++
++   if (tc->flags & WRDE_DOOFFS)
++       start_offs = sav_we.we_offs;
++ 
++diff --git a/posix/wordexp.c b/posix/wordexp.c
++index b6b65dd..d6a158f 100644
++--- a/libc/posix/wordexp.c
+++++ b/libc/posix/wordexp.c
++@@ -693,6 +693,12 @@ parse_arith (char **word, size_t *word_length, size_t *max_length,
++ 	  break;
++ 
++ 	case '`':
+++	   if (flags & WRDE_NOCMD)
+++	     {
+++	       free (expr);
+++	       return WRDE_NOCMD;
+++	     }
+++
++ 	  (*offset)++;
++ 	  error = parse_backtick (&expr, &expr_length, &expr_maxlen,
++ 				  words, offset, flags, NULL, NULL, NULL);
++@@ -1144,6 +1150,10 @@ parse_comm (char **word, size_t *word_length, size_t *max_length,
++   size_t comm_maxlen;
++   char *comm = w_newword (&comm_length, &comm_maxlen);
++ 
+++  /* Do nothing if command substitution should not succeed.  */
+++  if (flags & WRDE_NOCMD)
+++    return WRDE_CMDSUB;
+++
++   for (; words[*offset]; ++(*offset))
++     {
++       switch (words[*offset])
++@@ -2121,6 +2131,9 @@ parse_backtick (char **word, size_t *word_length, size_t *max_length,
++       switch (words[*offset])
++ 	{
++ 	case '`':
+++	  if (flags & WRDE_NOCMD)
+++	    return WRDE_NOCMD;
+++
++ 	  /* Go -- give the script to the shell */
++ 	  error = exec_comm (comm, word, word_length, max_length, flags,
++ 			     pwordexp, ifs, ifs_white);
+diff --git a/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
+new file mode 100644
+index 0000000..f447dcd
+--- /dev/null
++++ b/package/glibc/glibc/2.19-svnr25243/0002-CVE-2014-6040.patch
+@@ -0,0 +1,141 @@
++Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commit;h=41488498b6
++See https://bugzilla.redhat.com/show_bug.cgi?id=1135841
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm1364.c eglibc-2.19/libc/iconvdata/ibm1364.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm1364.c	2015-01-08 16:05:53.918823240 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm1364.c	2015-01-08 16:06:02.781555143 -0300
++@@ -220,7 +220,8 @@
++ 	  ++rp2;							      \
++ 									      \
++ 	uint32_t res;							      \
++-	if (__builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
+++	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = DB_TO_UCS4[ch + rp2->idx],			      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm932.c eglibc-2.19/libc/iconvdata/ibm932.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm932.c	2015-01-08 16:05:53.910818967 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm932.c	2015-01-08 16:06:02.781555143 -0300
++@@ -73,11 +73,12 @@
++ 	  }								      \
++ 									      \
++ 	ch = (ch * 0x100) + inptr[1];					      \
+++	/* ch was less than 0xfd.  */					      \
+++	assert (ch < 0xfd00);						      \
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
++-	    || __builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm932db_to_ucs4[ch + rp2->idx],		      \
++ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm933.c eglibc-2.19/libc/iconvdata/ibm933.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm933.c	2015-01-08 16:05:53.917822706 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm933.c	2015-01-08 16:06:02.781555143 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm933db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm935.c eglibc-2.19/libc/iconvdata/ibm935.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm935.c	2015-01-08 16:05:53.921824843 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm935.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm935db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm937.c eglibc-2.19/libc/iconvdata/ibm937.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm937.c	2015-01-08 16:05:53.915821638 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm937.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm937db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm939.c eglibc-2.19/libc/iconvdata/ibm939.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm939.c	2015-01-08 16:05:53.917822706 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm939.c	2015-01-08 16:06:02.782555677 -0300
++@@ -161,7 +161,7 @@
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
+++	if (__builtin_expect (rp2->start == 0xffff, 0)			      \
++ 	    || __builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm939db_to_ucs4[ch + rp2->idx],		      \
++ 		__builtin_expect (res, L'\1') == L'\0' && ch != '\0'))	      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/ibm943.c eglibc-2.19/libc/iconvdata/ibm943.c
++--- eglibc-2.19.orig/libc/iconvdata/ibm943.c	2015-01-08 16:05:53.918823240 -0300
+++++ eglibc-2.19/libc/iconvdata/ibm943.c	2015-01-08 16:06:02.782555677 -0300
++@@ -74,11 +74,12 @@
++ 	  }								      \
++ 									      \
++ 	ch = (ch * 0x100) + inptr[1];					      \
+++	/* ch was less than 0xfd.  */					      \
+++	assert (ch < 0xfd00);						      \
++ 	while (ch > rp2->end)						      \
++ 	  ++rp2;							      \
++ 									      \
++-	if (__builtin_expect (rp2 == NULL, 0)				      \
++-	    || __builtin_expect (ch < rp2->start, 0)			      \
+++	if (__builtin_expect (ch < rp2->start, 0)			      \
++ 	    || (res = __ibm943db_to_ucs4[ch + rp2->idx],		      \
++ 	    __builtin_expect (res, '\1') == 0 && ch !=0))		      \
++ 	  {								      \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/Makefile eglibc-2.19/libc/iconvdata/Makefile
++--- eglibc-2.19.orig/libc/iconvdata/Makefile	2015-01-08 16:05:53.903815227 -0300
+++++ eglibc-2.19/libc/iconvdata/Makefile	2015-01-08 16:06:02.782555677 -0300
++@@ -303,6 +303,7 @@
++ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \
++ 			 $(addprefix $(objpfx),$(modules.so)) \
++ 			 $(common-objdir)/iconv/iconv_prog TESTS
+++	iconv_modules="$(modules)" \
++ 	$(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@
++ 
++ $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \
++diff -Nura eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh eglibc-2.19/libc/iconvdata/run-iconv-test.sh
++--- eglibc-2.19.orig/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:05:53.894810420 -0300
+++++ eglibc-2.19/libc/iconvdata/run-iconv-test.sh	2015-01-08 16:06:02.782555677 -0300
++@@ -188,6 +188,24 @@
++ 
++ done < TESTS2
++ 
+++# Check for crashes in decoders.
+++printf '\016\377\377\377\377\377\377\377' > $temp1
+++for from in $iconv_modules ; do
+++    echo $ac_n "test decoder $from $ac_c"
+++    PROG=`eval echo $ICONV`
+++    if $PROG < $temp1 >/dev/null 2>&1 ; then
+++	: # fall through
+++    else
+++	status=$?
+++	if test $status -gt 1 ; then
+++	    echo "/FAILED"
+++	    failed=1
+++	    continue
+++	fi
+++    fi
+++    echo "OK"
+++done
+++
++ exit $failed
++ # Local Variables:
++ #  mode:shell-script
+diff --git a/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
+new file mode 100644
+index 0000000..c7aa12c
+--- /dev/null
++++ b/package/glibc/glibc/2.19-svnr25243/0003-CVE-2014-9402.patch
+@@ -0,0 +1,20 @@
++Fix CVE-2014-9402 - denial of service in getnetbyname function.
++Backport from https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=11e3417af6e354f1942c68a271ae51e892b2814d
++See https://bugzilla.redhat.com/show_bug.cgi?id=1175369
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff -Nura eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c eglibc-2.19/libc/resolv/nss_dns/dns-network.c
++--- eglibc-2.19.orig/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:35.024977879 -0300
+++++ eglibc-2.19/libc/resolv/nss_dns/dns-network.c	2015-01-08 16:12:42.543992357 -0300
++@@ -398,8 +398,8 @@
++ 
++ 	case BYNAME:
++ 	  {
++-	    char **ap = result->n_aliases++;
++-	    while (*ap != NULL)
+++	    char **ap;
+++	    for (ap = result->n_aliases; *ap != NULL; ++ap)
++ 	      {
++ 		/* Check each alias name for being of the forms:
++ 		   4.3.2.1.in-addr.arpa		= net 1.2.3.4
+diff --git a/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
+new file mode 100644
+index 0000000..a0da626
+--- /dev/null
++++ b/package/glibc/glibc/2.19-svnr25243/0004-CVE-2015-1472.patch
+@@ -0,0 +1,88 @@
++Fix CVE-2015-1472 - heap buffer overflow in wscanf
++Backport from upstream:
++https://sourceware.org/git/?p=glibc.git;a=commitdiff;h=5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06
++See: https://bugzilla.redhat.com/show_bug.cgi?id=1188235
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++diff --git a/stdio-common/tst-sscanf.c b/stdio-common/tst-sscanf.c
++index aece3f2..8a2eb9e 100644
++--- a/libc/stdio-common/tst-sscanf.c
+++++ b/libc/stdio-common/tst-sscanf.c
++@@ -233,5 +233,38 @@ main (void)
++ 	}
++     }
++ 
+++  /* BZ #16618
+++     The test will segfault during SSCANF if the buffer overflow
+++     is not fixed.  The size of `s` is such that it forces the use
+++     of malloc internally and this triggers the incorrect computation.
+++     Thus the value for SIZE is arbitrariy high enough that malloc
+++     is used.  */
+++  {
+++#define SIZE 131072
+++    CHAR *s = malloc ((SIZE + 1) * sizeof (*s));
+++    if (s == NULL)
+++      abort ();
+++    for (size_t i = 0; i < SIZE; i++)
+++      s[i] = L('0');
+++    s[SIZE] = L('\0');
+++    int i = 42;
+++    /* Scan multi-digit zero into `i`.  */
+++    if (SSCANF (s, L("%d"), &i) != 1)
+++      {
+++	printf ("FAIL: bug16618: SSCANF did not read one input item.\n");
+++	result = 1;
+++      }
+++    if (i != 0)
+++      {
+++	printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n");
+++	result = 1;
+++      }
+++    free (s);
+++    if (result != 1)
+++      printf ("PASS: bug16618: Did not crash.\n");
+++#undef SIZE
+++  }
+++
+++
++   return result;
++ }
++diff --git a/stdio-common/vfscanf.c b/stdio-common/vfscanf.c
++index cd129a8..0e204e7 100644
++--- a/libc/stdio-common/vfscanf.c
+++++ b/libc/stdio-common/vfscanf.c
++@@ -272,9 +272,10 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
++       if (__glibc_unlikely (wpsize == wpmax))				      \
++ 	{								    \
++ 	  CHAR_T *old = wp;						    \
++-	  size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax			    \
++-			    ? UCHAR_MAX + 1 : 2 * wpmax);		    \
++-	  if (use_malloc || !__libc_use_alloca (newsize))		    \
+++	  bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \
+++	  size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax);		    \
+++	  size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX;	    \
+++	  if (!__libc_use_alloca (newsize))				    \
++ 	    {								    \
++ 	      wp = realloc (use_malloc ? wp : NULL, newsize);		    \
++ 	      if (wp == NULL)						    \
++@@ -286,14 +287,13 @@ _IO_vfscanf_internal (_IO_FILE *s, const char *format, _IO_va_list argptr,
++ 		}							    \
++ 	      if (! use_malloc)						    \
++ 		MEMCPY (wp, old, wpsize);				    \
++-	      wpmax = newsize;						    \
+++	      wpmax = wpneed;						    \
++ 	      use_malloc = true;					    \
++ 	    }								    \
++ 	  else								    \
++ 	    {								    \
++ 	      size_t s = wpmax * sizeof (CHAR_T);			    \
++-	      wp = (CHAR_T *) extend_alloca (wp, s,			    \
++-					     newsize * sizeof (CHAR_T));    \
+++	      wp = (CHAR_T *) extend_alloca (wp, s, newsize);		    \
++ 	      wpmax = s / sizeof (CHAR_T);				    \
++ 	      if (old != NULL)						    \
++ 		MEMCPY (wp, old, wpsize);				    \
++-- 
++1.9.4
++
+diff --git a/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
+new file mode 100644
+index 0000000..19b8b6e
+--- /dev/null
++++ b/package/glibc/glibc/2.22/0001-fix-CVE-2015-7547.patch
+@@ -0,0 +1,236 @@
++Fetched from gentoo glibc patchball
++Original patch filename: 10_all_glibc-CVE-2015-7547.patch
++Based on: https://sourceware.org/ml/libc-alpha/2016-02/msg00416.html
++
++Fixes:
++CVE-2015-7547 - glibc getaddrinfo stack-based buffer overflow.
++
++Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
++
++--- a/resolv/nss_dns/dns-host.c
+++++ b/resolv/nss_dns/dns-host.c
++@@ -1031,7 +1031,10 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
++   int h_namelen = 0;
++ 
++   if (ancount == 0)
++-    return NSS_STATUS_NOTFOUND;
+++    {
+++      *h_errnop = HOST_NOT_FOUND;
+++      return NSS_STATUS_NOTFOUND;
+++    }
++ 
++   while (ancount-- > 0 && cp < end_of_message && had_error == 0)
++     {
++@@ -1208,7 +1211,14 @@ gaih_getanswer_slice (const querybuf *answer, int anslen, const char *qname,
++   /* Special case here: if the resolver sent a result but it only
++      contains a CNAME while we are looking for a T_A or T_AAAA record,
++      we fail with NOTFOUND instead of TRYAGAIN.  */
++-  return canon == NULL ? NSS_STATUS_TRYAGAIN : NSS_STATUS_NOTFOUND;
+++  if (canon != NULL)
+++    {
+++      *h_errnop = HOST_NOT_FOUND;
+++      return NSS_STATUS_NOTFOUND;
+++    }
+++
+++  *h_errnop = NETDB_INTERNAL;
+++  return NSS_STATUS_TRYAGAIN;
++ }
++ 
++ 
++@@ -1242,8 +1252,15 @@ gaih_getanswer (const querybuf *answer1, int anslen1, const querybuf *answer2,
++ 						     &pat, &buffer, &buflen,
++ 						     errnop, h_errnop, ttlp,
++ 						     &first);
+++      /* Use the second response status in some cases.  */
++       if (status != NSS_STATUS_SUCCESS && status2 != NSS_STATUS_NOTFOUND)
++ 	status = status2;
+++      /* Do not return a truncated second response (unless it was
+++         unavoidable e.g. unrecoverable TRYAGAIN).  */
+++      if (status == NSS_STATUS_SUCCESS
+++	  && (status2 == NSS_STATUS_TRYAGAIN
+++	      && *errnop == ERANGE && *h_errnop != NO_RECOVERY))
+++	status = NSS_STATUS_TRYAGAIN;
++     }
++ 
++   return status;
++--- a/resolv/res_query.c
+++++ b/resolv/res_query.c
++@@ -396,6 +396,7 @@ __libc_res_nsearch(res_state statp,
++ 		  {
++ 		    free (*answerp2);
++ 		    *answerp2 = NULL;
+++		    *nanswerp2 = 0;
++ 		    *answerp2_malloced = 0;
++ 		  }
++ 	}
++@@ -447,6 +448,7 @@ __libc_res_nsearch(res_state statp,
++ 			  {
++ 			    free (*answerp2);
++ 			    *answerp2 = NULL;
+++			    *nanswerp2 = 0;
++ 			    *answerp2_malloced = 0;
++ 			  }
++ 
++@@ -521,6 +523,7 @@ __libc_res_nsearch(res_state statp,
++ 	  {
++ 	    free (*answerp2);
++ 	    *answerp2 = NULL;
+++	    *nanswerp2 = 0;
++ 	    *answerp2_malloced = 0;
++ 	  }
++ 	if (saved_herrno != -1)
++--- a/resolv/res_send.c
+++++ b/resolv/res_send.c
++@@ -639,11 +639,7 @@ send_vc(res_state statp,
++ {
++ 	const HEADER *hp = (HEADER *) buf;
++ 	const HEADER *hp2 = (HEADER *) buf2;
++-	u_char *ans = *ansp;
++-	int orig_anssizp = *anssizp;
++-	// XXX REMOVE
++-	// int anssiz = *anssizp;
++-	HEADER *anhp = (HEADER *) ans;
+++	HEADER *anhp = (HEADER *) *ansp;
++ 	struct sockaddr *nsap = get_nsaddr (statp, ns);
++ 	int truncating, connreset, n;
++ 	/* On some architectures compiler might emit a warning indicating
++@@ -767,35 +763,6 @@ send_vc(res_state statp,
++ 		assert (anscp != NULL || ansp2 == NULL);
++ 		thisresplenp = &resplen;
++ 	} else {
++-		if (*anssizp != MAXPACKET) {
++-			/* No buffer allocated for the first
++-			   reply.  We can try to use the rest
++-			   of the user-provided buffer.  */
++-#if __GNUC_PREREQ (4, 7)
++-			DIAG_PUSH_NEEDS_COMMENT;
++-			DIAG_IGNORE_NEEDS_COMMENT (5, "-Wmaybe-uninitialized");
++-#endif
++-#if _STRING_ARCH_unaligned
++-			*anssizp2 = orig_anssizp - resplen;
++-			*ansp2 = *ansp + resplen;
++-#else
++-			int aligned_resplen
++-			  = ((resplen + __alignof__ (HEADER) - 1)
++-			     & ~(__alignof__ (HEADER) - 1));
++-			*anssizp2 = orig_anssizp - aligned_resplen;
++-			*ansp2 = *ansp + aligned_resplen;
++-#endif
++-#if __GNUC_PREREQ (4, 7)
++-			DIAG_POP_NEEDS_COMMENT;
++-#endif
++-		} else {
++-			/* The first reply did not fit into the
++-			   user-provided buffer.  Maybe the second
++-			   answer will.  */
++-			*anssizp2 = orig_anssizp;
++-			*ansp2 = *ansp;
++-		}
++-
++ 		thisanssizp = anssizp2;
++ 		thisansp = ansp2;
++ 		thisresplenp = resplen2;
++@@ -804,10 +771,14 @@ send_vc(res_state statp,
++ 	anhp = (HEADER *) *thisansp;
++ 
++ 	*thisresplenp = rlen;
++-	if (rlen > *thisanssizp) {
++-		/* Yes, we test ANSCP here.  If we have two buffers
++-		   both will be allocatable.  */
++-		if (__glibc_likely (anscp != NULL))       {
+++	/* Is the answer buffer too small?  */
+++	if (*thisanssizp < rlen) {
+++		/* If the current buffer is not the the static
+++		   user-supplied buffer then we can reallocate
+++		   it.  */
+++		if (thisansp != NULL && thisansp != ansp) {
+++			/* Always allocate MAXPACKET, callers expect
+++			   this specific size.  */
++ 			u_char *newp = malloc (MAXPACKET);
++ 			if (newp == NULL) {
++ 				*terrno = ENOMEM;
++@@ -957,8 +928,6 @@ send_dg(res_state statp,
++ {
++ 	const HEADER *hp = (HEADER *) buf;
++ 	const HEADER *hp2 = (HEADER *) buf2;
++-	u_char *ans = *ansp;
++-	int orig_anssizp = *anssizp;
++ 	struct timespec now, timeout, finish;
++ 	struct pollfd pfd[1];
++ 	int ptimeout;
++@@ -1154,50 +1123,48 @@ send_dg(res_state statp,
++ 			assert (anscp != NULL || ansp2 == NULL);
++ 			thisresplenp = &resplen;
++ 		} else {
++-			if (*anssizp != MAXPACKET) {
++-				/* No buffer allocated for the first
++-				   reply.  We can try to use the rest
++-				   of the user-provided buffer.  */
++-#if _STRING_ARCH_unaligned
++-				*anssizp2 = orig_anssizp - resplen;
++-				*ansp2 = *ansp + resplen;
++-#else
++-				int aligned_resplen
++-				  = ((resplen + __alignof__ (HEADER) - 1)
++-				     & ~(__alignof__ (HEADER) - 1));
++-				*anssizp2 = orig_anssizp - aligned_resplen;
++-				*ansp2 = *ansp + aligned_resplen;
++-#endif
++-			} else {
++-				/* The first reply did not fit into the
++-				   user-provided buffer.  Maybe the second
++-				   answer will.  */
++-				*anssizp2 = orig_anssizp;
++-				*ansp2 = *ansp;
++-			}
++-
++ 			thisanssizp = anssizp2;
++ 			thisansp = ansp2;
++ 			thisresplenp = resplen2;
++ 		}
++ 
++ 		if (*thisanssizp < MAXPACKET
++-		    /* Yes, we test ANSCP here.  If we have two buffers
++-		       both will be allocatable.  */
++-		    && anscp
+++		    /* If the current buffer is not the the static
+++		       user-supplied buffer then we can reallocate
+++		       it.  */
+++		    && (thisansp != NULL && thisansp != ansp)
++ #ifdef FIONREAD
+++		    /* Is the size too small?  */
++ 		    && (ioctl (pfd[0].fd, FIONREAD, thisresplenp) < 0
++ 			|| *thisanssizp < *thisresplenp)
++ #endif
++                     ) {
+++			/* Always allocate MAXPACKET, callers expect
+++			   this specific size.  */
++ 			u_char *newp = malloc (MAXPACKET);
++ 			if (newp != NULL) {
++-				*anssizp = MAXPACKET;
++-				*thisansp = ans = newp;
+++				*thisanssizp = MAXPACKET;
+++				*thisansp = newp;
++ 				if (thisansp == ansp2)
++ 				  *ansp2_malloced = 1;
++ 			}
++ 		}
+++		/* We could end up with truncation if anscp was NULL
+++		   (not allowed to change caller's buffer) and the
+++		   response buffer size is too small.  This isn't a
+++		   reliable way to detect truncation because the ioctl
+++		   may be an inaccurate report of the UDP message size.
+++		   Therefore we use this only to issue debug output.
+++		   To do truncation accurately with UDP we need
+++		   MSG_TRUNC which is only available on Linux.  We
+++		   can abstract out the Linux-specific feature in the
+++		   future to detect truncation.  */
+++		if (__glibc_unlikely (*thisanssizp < *thisresplenp)) {
+++			Dprint(statp->options & RES_DEBUG,
+++			       (stdout, ";; response may be truncated (UDP)\n")
+++			);
+++		}
+++
++ 		HEADER *anhp = (HEADER *) *thisansp;
++ 		socklen_t fromlen = sizeof(struct sockaddr_in6);
++ 		assert (sizeof(from) <= fromlen);
+diff --git a/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
+new file mode 100644
+index 0000000..28f4b6e
+--- /dev/null
++++ b/package/glibc/glibc/2.22/0002-microblaze-include-unix-sysdep.h.patch
+@@ -0,0 +1,43 @@
++From 8415fb8d4f05c023b9d79e44dff197cc285fd1e5 Mon Sep 17 00:00:00 2001
++From: Mike Frysinger <vapier@gentoo.org>
++Date: Thu, 6 Aug 2015 02:10:46 -0400
++Subject: [PATCH] microblaze: include unix/sysdep.h
++
++The semi-recent SYSCALL_CANCEL inclusion broke microblaze due to the
++sysdep.h header not including the unix/sysdep.h header.  Include it
++here like all other ports.
++
++(cherry picked from commit 5d5de49c3ccd69f65b801f1ca490a0112d1cbd7d)
++
++Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com>
++[edited to remove ChangeLog modifications, which cause conflicts.]
++---
++ sysdeps/unix/sysv/linux/microblaze/sysdep.h | 7 ++++++-
++ 2 files changed, 12 insertions(+), 1 deletion(-)
++
++diff --git a/sysdeps/unix/sysv/linux/microblaze/sysdep.h b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
++index 83c0340..9d5c542 100644
++--- a/sysdeps/unix/sysv/linux/microblaze/sysdep.h
+++++ b/sysdeps/unix/sysv/linux/microblaze/sysdep.h
++@@ -16,8 +16,11 @@
++    License along with the GNU C Library; if not, see
++    <http://www.gnu.org/licenses/>.  */
++ 
+++#ifndef _LINUX_MICROBLAZE_SYSDEP_H
+++#define _LINUX_MICROBLAZE_SYSDEP_H 1
+++
+++#include <sysdeps/unix/sysdep.h>
++ #include <sysdeps/microblaze/sysdep.h>
++-#include <sys/syscall.h>
++ 
++ /* Defines RTLD_PRIVATE_ERRNO.  */
++ #include <dl-sysdep.h>
++@@ -305,3 +308,5 @@ SYSCALL_ERROR_LABEL_DCL:                            \
++ # define PTR_DEMANGLE(var) (void) (var)
++ 
++ #endif /* not __ASSEMBLER__ */
+++
+++#endif /* _LINUX_MICROBLAZE_SYSDEP_H */
++-- 
++2.6.4
++
+diff --git a/package/glibc/glibc/Config.in b/package/glibc/glibc/Config.in
+new file mode 100644
+index 0000000..0565162
+--- /dev/null
++++ b/package/glibc/glibc/Config.in
+@@ -0,0 +1,56 @@
++if BR2_TOOLCHAIN_BUILDROOT_EGLIBC
++
++config BR2_PACKAGE_EGLIBC
++	bool
++	default y
++	select BR2_PACKAGE_LINUX_HEADERS
++
++choice
++	prompt "eglibc version"
++	default BR2_EGLIBC_VERSION_2_18
++
++config BR2_EGLIBC_VERSION_2_18
++	bool "2.18-svnr23787"
++	# Build breakage
++	depends on !BR2_sparc
++
++config BR2_EGLIBC_VERSION_2_19
++	bool "2.19-svnr25243"
++	# Build breakage
++	depends on !BR2_powerpc_SPE
++
++endchoice
++
++endif
++
++if BR2_TOOLCHAIN_BUILDROOT_GLIBC
++
++config BR2_PACKAGE_GLIBC
++	bool
++	default y
++	select BR2_PACKAGE_LINUX_HEADERS
++
++choice
++	prompt "glibc version"
++	default BR2_GLIBC_VERSION_2_22
++
++config BR2_GLIBC_VERSION_2_22
++	bool "2.22"
++	# No support for pthread barriers on < v9 ISA
++	depends on !BR2_sparc
++
++config BR2_GLIBC_VERSION_2_23
++	bool "2.23"
++	# No support for pthread barriers on < v9 ISA
++	depends on !BR2_sparc
++
++endchoice
++
++endif
++
++config BR2_GLIBC_VERSION_STRING
++	string
++	default "2.18-svnr23787" if BR2_EGLIBC_VERSION_2_18
++	default "2.19-svnr25243" if BR2_EGLIBC_VERSION_2_19
++	default "2.22" if BR2_GLIBC_VERSION_2_22
++	default "2.23" if BR2_GLIBC_VERSION_2_23
+diff --git a/package/glibc/glibc/glibc.hash b/package/glibc/glibc/glibc.hash
+new file mode 100644
+index 0000000..b04f214
+--- /dev/null
++++ b/package/glibc/glibc/glibc.hash
+@@ -0,0 +1,8 @@
++# Locally calculated after checking pgp signature (glibc)
++# http://downloads.yoctoproject.org/releases/eglibc/*.{md5,sha1} (eglibc)
++md5	b395b021422a027d89884992e91734fc	eglibc-2.18-svnr23787.tar.bz2
++sha1	224d9e655e8f0ad04ffde47b97a11c64e2255b56	eglibc-2.18-svnr23787.tar.bz2
++md5	197836c2ba42fb146e971222647198dd	eglibc-2.19-svnr25243.tar.bz2
++sha1	8013c1935b46fd50d2d1fbfad3b0af362b75fb28	eglibc-2.19-svnr25243.tar.bz2
++sha256	eb731406903befef1d8f878a46be75ef862b9056ab0cde1626d08a7a05328948	glibc-2.22.tar.xz
++sha256	94efeb00e4603c8546209cefb3e1a50a5315c86fa9b078b6fad758e187ce13e9	glibc-2.23.tar.xz
+diff --git a/package/glibc/glibc/glibc.mk b/package/glibc/glibc/glibc.mk
+new file mode 100644
+index 0000000..4a9ba0e
+--- /dev/null
++++ b/package/glibc/glibc/glibc.mk
+@@ -0,0 +1,155 @@
++################################################################################
++#
++# glibc/eglibc
++#
++################################################################################
++
++GLIBC_VERSION = $(call qstrip,$(BR2_GLIBC_VERSION_STRING))
++
++ifeq ($(BR2_TOOLCHAIN_BUILDROOT_EGLIBC),y)
++GLIBC_SITE = http://downloads.yoctoproject.org/releases/eglibc
++GLIBC_SOURCE = eglibc-$(GLIBC_VERSION).tar.bz2
++GLIBC_SRC_SUBDIR = libc
++else
++GLIBC_SITE = $(BR2_GNU_MIRROR)/libc
++GLIBC_SOURCE = glibc-$(GLIBC_VERSION).tar.xz
++GLIBC_SRC_SUBDIR = .
++endif
++
++GLIBC_LICENSE = GPLv2+ (programs), LGPLv2.1+, BSD-3c, MIT (library)
++GLIBC_LICENSE_FILES = $(addprefix $(GLIBC_SRC_SUBDIR)/,COPYING COPYING.LIB LICENSES)
++
++# glibc is part of the toolchain so disable the toolchain dependency
++GLIBC_ADD_TOOLCHAIN_DEPENDENCY = NO
++
++# Before (e)glibc is configured, we must have the first stage
++# cross-compiler and the kernel headers
++GLIBC_DEPENDENCIES = host-gcc-initial linux-headers host-gawk
++
++GLIBC_SUBDIR = build
++
++GLIBC_INSTALL_STAGING = YES
++
++GLIBC_INSTALL_STAGING_OPTS = install_root=$(STAGING_DIR) install
++
++# Thumb build is broken, build in ARM mode
++ifeq ($(BR2_ARM_INSTRUCTIONS_THUMB),y)
++GLIBC_EXTRA_CFLAGS += -marm
++endif
++
++# MIPS64 defaults to n32 so pass the correct -mabi if
++# we are using a different ABI. OABI32 is also used
++# in MIPS so we pass -mabi=32 in this case as well
++# even though it's not strictly necessary.
++ifeq ($(BR2_MIPS_NABI64),y)
++GLIBC_EXTRA_CFLAGS += -mabi=64
++else ifeq ($(BR2_MIPS_OABI32),y)
++GLIBC_EXTRA_CFLAGS += -mabi=32
++endif
++
++ifeq ($(BR2_ENABLE_DEBUG),y)
++GLIBC_EXTRA_CFLAGS += -g
++endif
++
++# The stubs.h header is not installed by install-headers, but is
++# needed for the gcc build. An empty stubs.h will work, as explained
++# in http://gcc.gnu.org/ml/gcc/2002-01/msg00900.html. The same trick
++# is used by Crosstool-NG.
++ifeq ($(BR2_TOOLCHAIN_BUILDROOT_GLIBC),y)
++define GLIBC_ADD_MISSING_STUB_H
++	mkdir -p $(STAGING_DIR)/usr/include/gnu
++	touch $(STAGING_DIR)/usr/include/gnu/stubs.h
++endef
++endif
++
++# Even though we use the autotools-package infrastructure, we have to
++# override the default configure commands for several reasons:
++#
++#  1. We have to build out-of-tree, but we can't use the same
++#     'symbolic link to configure' used with the gcc packages.
++#
++#  2. We have to execute the configure script with bash and not sh.
++#
++# Note that as mentionned in
++# http://patches.openembedded.org/patch/38849/, eglibc/glibc must be
++# built with -O2, so we pass our own CFLAGS and CXXFLAGS below.
++define GLIBC_CONFIGURE_CMDS
++	mkdir -p $(@D)/build
++	# Do the configuration
++	(cd $(@D)/build; \
++		$(TARGET_CONFIGURE_OPTS) \
++		CFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" CPPFLAGS="" \
++		CXXFLAGS="-O2 $(GLIBC_EXTRA_CFLAGS)" \
++		$(SHELL) $(@D)/$(GLIBC_SRC_SUBDIR)/configure \
++		ac_cv_path_BASH_SHELL=/bin/bash \
++		libc_cv_forced_unwind=yes \
++		libc_cv_ssp=no \
++		--target=$(GNU_TARGET_NAME) \
++		--host=$(GNU_TARGET_NAME) \
++		--build=$(GNU_HOST_NAME) \
++		--prefix=/usr \
++		--enable-shared \
++		$(if $(BR2_SOFT_FLOAT),--without-fp,--with-fp) \
++		$(if $(BR2_x86_64),--enable-lock-elision) \
++		--with-pkgversion="Buildroot" \
++		--without-cvs \
++		--disable-profile \
++		--without-gd \
++		--enable-obsolete-rpc \
++		--enable-kernel=$(call qstrip,$(BR2_TOOLCHAIN_HEADERS_AT_LEAST)) \
++		--with-headers=$(STAGING_DIR)/usr/include)
++	$(GLIBC_ADD_MISSING_STUB_H)
++endef
++
++
++#
++# We also override the install to target commands since we only want
++# to install the libraries, and nothing more.
++#
++
++GLIBC_LIBS_LIB = \
++	ld*.so.* libc.so.* libcrypt.so.* libdl.so.* libgcc_s.so.* libm.so.*        \
++	libnsl.so.* libpthread.so.* libresolv.so.* librt.so.* libutil.so.*   \
++	libnss_files.so.* libnss_dns.so.*
++
++ifeq ($(BR2_PACKAGE_GDB),y)
++GLIBC_LIBS_LIB += libthread_db.so.*
++endif
++
++define GLIBC_INSTALL_TARGET_CMDS
++	for libs in $(GLIBC_LIBS_LIB); do \
++		$(call copy_toolchain_lib_root,$(STAGING_DIR)/,,lib,$$libs,/lib) ; \
++	done
++endef
++
++# MIPS R6 requires to have NaN2008 support which is currently not
++# supported by the Linux kernel. In order to prevent building the
++# glibc against kernels not having NaN2008 support on platforms that
++# requires it, glibc currently checks for an (inexisting) 10.0.0
++# kernel headers version.
++#
++# Since in practice the kernel support for NaN2008 is not really
++# required for things to work properly, we adjust the glibc check to
++# make it believe that NaN2008 support was added in the kernel
++# starting from version 4.0.0.
++#
++# In general the compatibility issues introduced by mis-matched NaN
++# encodings will not cause a problem as signalling NaNs are rarely used
++# in average code. For MIPS R6 there isn't actually any compatibility
++# issue as the hardware is always NaN2008 and software is always
++# NaN2008. The problem only comes from when older MIPS code is linked in
++# via a DSO and multiple NaN encodings are introduced. Since Buildroot
++# is intended to have all code built from source then this scenario is
++# highly unlikely. The failure mode, if it ever occurs, would be either
++# that a signalling NaN fails to raise an invalid operation exception or
++# (more likely) an ordinary NaN raises an invalid operation exception.
++ifeq ($(BR2_mips_32r6)$(BR2_mips_64r6),y)
++define GLIBC_FIX_MIPS_R6
++	$(SED) 's#10.0.0#4.0.0#' \
++		$(@D)/sysdeps/unix/sysv/linux/mips/configure \
++		$(@D)/sysdeps/unix/sysv/linux/mips/configure.ac
++endef
++GLIBC_POST_EXTRACT_HOOKS += GLIBC_FIX_MIPS_R6
++endif
++
++$(eval $(autotools-package))
+diff --git a/package/glibc/glibc/nsswitch.conf b/package/glibc/glibc/nsswitch.conf
+new file mode 100644
+index 0000000..5c38491
+--- /dev/null
++++ b/package/glibc/glibc/nsswitch.conf
+@@ -0,0 +1,13 @@
++# /etc/nsswitch.conf
++
++passwd:         files
++group:          files
++shadow:         files
++
++hosts:          files dns
++networks:       files dns
++
++protocols:      files
++services:       files
++ethers:         files
++rpc:            files
+diff --git a/package/qt5/Config.in b/package/qt5/Config.in
+index 234dfdd..fb57d25 100644
+--- a/package/qt5/Config.in
++++ b/package/qt5/Config.in
+@@ -31,6 +31,7 @@ menuconfig BR2_PACKAGE_QT5
+ 
+ if BR2_PACKAGE_QT5
+ source "package/qt5/qt5base/Config.in"
++source "package/qt5/qt53d/Config.in"
+ source "package/qt5/qt5canvas3d/Config.in"
+ source "package/qt5/qt5connectivity/Config.in"
+ source "package/qt5/qt5declarative/Config.in"
+@@ -41,17 +42,20 @@ source "package/qt5/qt5location/Config.in"
+ source "package/qt5/qt5multimedia/Config.in"
+ source "package/qt5/qt5quickcontrols/Config.in"
+ source "package/qt5/qt5sensors/Config.in"
++source "package/qt5/qt5serialbus/Config.in"
+ source "package/qt5/qt5serialport/Config.in"
++source "package/qt5/qt5wayland/Config.in"
+ source "package/qt5/qt5svg/Config.in"
+ source "package/qt5/qt5tools/Config.in"
+ source "package/qt5/qt5webchannel/Config.in"
+ source "package/qt5/qt5websockets/Config.in"
+ source "package/qt5/qt5x11extras/Config.in"
++source "package/qt5/qt5webengine/Config.in"
+ source "package/qt5/qt5xmlpatterns/Config.in"
+-comment "technology preview"
+-source "package/qt5/qt53d/Config.in"
++source "package/qt5/qt5virtualkeyboard/Config.in"
++source "package/qt5/qt5charts/Config.in"
++source "package/qt5/qt5datavis3d/Config.in"
+ source "package/qt5/qt5quickcontrols2/Config.in"
+-source "package/qt5/qt5serialbus/Config.in"
+ comment "legacy compatibility"
+ source "package/qt5/qt5script/Config.in"
+ source "package/qt5/qt5webkit/Config.in"
+diff --git a/package/qt5/qt5.mk b/package/qt5/qt5.mk
+index d25f663..0710ef4 100644
+--- a/package/qt5/qt5.mk
++++ b/package/qt5/qt5.mk
+@@ -1,6 +1,8 @@
+-QT5_VERSION_MAJOR = 5.6
+-QT5_VERSION = $(QT5_VERSION_MAJOR).2
++QT5_VERSION_MAJOR = 5.7
++QT5_VERSION = $(QT5_VERSION_MAJOR).0
+ QT5_SITE = http://download.qt.io/official_releases/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/submodules
++##QT5_VERSION = $(QT5_VERSION_MAJOR).1
++##QT5_SITE = http://download.qt.io/snapshots/qt/$(QT5_VERSION_MAJOR)/$(QT5_VERSION)/latest_src/submodules
+ include $(sort $(wildcard package/qt5/*/*.mk))
+ 
+ define QT5_LA_PRL_FILES_FIXUP
+diff --git a/package/qt5/qt53d/qt53d.hash b/package/qt5/qt53d/qt53d.hash
+deleted file mode 100644
+index 7179380..0000000
+--- a/package/qt5/qt53d/qt53d.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qt3d-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 a21786db6e0f5c6c70213fe1a3530ed3d7f28f28401a0f793970e9bc860ce941 qt3d-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
+new file mode 100644
+index 0000000..54e4db8
+--- /dev/null
++++ b/package/qt5/qt5base/0001-Disable-c-standard-compiler-flags-for-the-host-build.__patch
+@@ -0,0 +1,44 @@
++From e69e69519661954716d59bfa5bbd0626515cfda9 Mon Sep 17 00:00:00 2001
++From: Peter Seiderer <ps.report@gmx.net>
++Date: Thu, 3 Mar 2016 15:17:31 +0100
++Subject: [PATCH] Disable c++ standard compiler flags for the host build
++MIME-Version: 1.0
++Content-Type: text/plain; charset=UTF-8
++Content-Transfer-Encoding: 8bit
++
++There is no test for c++ standard support for the host build
++(only for the target compiler/build) which leads to trouble
++in some cross compiling environments (old host compiler, new
++cross compiler):
++
++  g++: error: unrecognized command line option ‘-std=c++1z’
++
++So disable c++ standard compiler flags unconditionally for host builds.
++
++Task-number: QTBUG-51644
++Change-Id: Ifb3042e125fe199a7e081740d1171d26ccacf0c5
++Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@theqtcompany.com>
++Signed-off-by: Yegor Yefremov <yegorslists@googlemail.com>
++---
++ mkspecs/features/default_post.prf | 5 ++++-
++ 1 file changed, 4 insertions(+), 1 deletion(-)
++
++diff --git a/mkspecs/features/default_post.prf b/mkspecs/features/default_post.prf
++index cd8d885..561c8f4 100644
++--- a/mkspecs/features/default_post.prf
+++++ b/mkspecs/features/default_post.prf
++@@ -95,7 +95,10 @@ breakpad {
++     !isEmpty(QMAKE_STRIP):QMAKE_POST_LINK = $$QMAKE_POST_LINK$$escape_expand(\\n\\t)$$quote($$QMAKE_STRIP $$DEBUGFILENAME)
++ }
++ 
++-c++11|c++14|c++1z {
+++# Disable special compiler flags for host builds (needs to be changed for 5.7
+++# to fall back to c++11 because since 5.7 c++11 is required everywhere,
+++# including host builds).
+++if(!host_build|!cross_compile):if(c++11|c++14|c++1z) {
++     c++1z:       cxxstd = CXX1Z
++     else: c++14: cxxstd = CXX14
++     else:        cxxstd = CXX11
++-- 
++2.1.4
++
+diff --git a/package/qt5/qt5base/Config.in b/package/qt5/qt5base/Config.in
+index 7244fbe..64a7f65 100644
+--- a/package/qt5/qt5base/Config.in
++++ b/package/qt5/qt5base/Config.in
+@@ -180,7 +180,7 @@ config BR2_PACKAGE_QT5BASE_DIRECTFB
+ 	bool "directfb support"
+ 	depends on BR2_PACKAGE_DIRECTFB
+ 
+-comment "directfb backend available if directfb is enabled"
++comment "directfb backend if directb is enabled"
+ 	depends on !BR2_PACKAGE_DIRECTFB
+ 
+ config BR2_PACKAGE_QT5BASE_XCB
+diff --git a/package/qt5/qt5base/qmake.conf b/package/qt5/qt5base/qmake.conf
+index 49cf898..2152d3c 100644
+--- a/package/qt5/qt5base/qmake.conf
++++ b/package/qt5/qt5base/qmake.conf
+@@ -19,7 +19,6 @@ QMAKE_CXXFLAGS_RELEASE += -O3
+ CONFIG                 += nostrip
+ 
+ QMAKE_LIBS             += -lrt -lpthread -ldl
+-QMAKE_CFLAGS_ISYSTEM   =
+ 
+ include(../common/linux_device_post.conf)
+ load(qt_config)
+diff --git a/package/qt5/qt5base/qt5base.hash b/package/qt5/qt5base/qt5base.hash
+deleted file mode 100644
+index 9808e9b..0000000
+--- a/package/qt5/qt5base/qt5base.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtbase-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 2f6eae93c5d982fe0a387a01aeb3435571433e23e9d9d9246741faf51f1ee787 qtbase-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5base/qt5base.mk b/package/qt5/qt5base/qt5base.mk
+index 23dba2a..81666d6 100644
+--- a/package/qt5/qt5base/qt5base.mk
++++ b/package/qt5/qt5base/qt5base.mk
+@@ -20,21 +20,16 @@ QT5BASE_INSTALL_STAGING = YES
+ #    want to use the one packaged in Buildroot
+ QT5BASE_CONFIGURE_OPTS += \
+ 	-optimized-qmake \
++	-no-kms \
+ 	-no-cups \
++	-no-nis \
+ 	-no-iconv \
+ 	-system-zlib \
+ 	-system-pcre \
++	-system-harfbuzz \
+ 	-no-pch \
+ 	-shared
+ 
+-# Uses libgbm from mesa3d
+-ifeq ($(BR2_PACKAGE_MESA3D_OPENGL_EGL),y)
+-QT5BASE_CONFIGURE_OPTS += -kms -gbm
+-QT5BASE_DEPENDENCIES += mesa3d
+-else
+-QT5BASE_CONFIGURE_OPTS += -no-kms
+-endif
+-
+ ifeq ($(BR2_ENABLE_DEBUG),y)
+ QT5BASE_CONFIGURE_OPTS += -debug
+ else
+@@ -58,10 +53,6 @@ ifneq ($(QT5BASE_CONFIG_FILE),)
+ QT5BASE_CONFIGURE_OPTS += -qconfig buildroot
+ endif
+ 
+-ifeq ($(BR2_PACKAGE_HAS_UDEV),y)
+-QT5BASE_DEPENDENCIES += udev
+-endif
+-
+ # Qt5 SQL Plugins
+ ifeq ($(BR2_PACKAGE_QT5BASE_SQL),y)
+ ifeq ($(BR2_PACKAGE_QT5BASE_MYSQL),y)
+diff --git a/package/qt5/qt5canvas3d/qt5canvas3d.hash b/package/qt5/qt5canvas3d/qt5canvas3d.hash
+deleted file mode 100644
+index 01819e4..0000000
+--- a/package/qt5/qt5canvas3d/qt5canvas3d.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtcanvas3d-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 d7584d006b03f99692ccabce922e755a6f12bb1ed1fbc99c2b84842b9e0aa0ad qtcanvas3d-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5charts/Config.in b/package/qt5/qt5charts/Config.in
+new file mode 100644
+index 0000000..d354bb2
+--- /dev/null
++++ b/package/qt5/qt5charts/Config.in
+@@ -0,0 +1,18 @@
++config BR2_PACKAGE_QT5CHARTS
++	bool "qt5charts"
++	select BR2_PACKAGE_QT5DECLARATIVE
++	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
++	select BR2_PACKAGE_QT5BASE_WIDGETS
++	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
++	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
++	help
++	  Qt is a cross-platform application and UI framework for
++	  developers using C++.
++
++	  This package corresponds to the qt5charts module.
++
++	  http://qt.io
++
++comment "qt5charts needs an OpenGL-capable backend"
++	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
++	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
+diff --git a/package/qt5/qt5charts/qt5charts.mk b/package/qt5/qt5charts/qt5charts.mk
+new file mode 100644
+index 0000000..54871e2
+--- /dev/null
++++ b/package/qt5/qt5charts/qt5charts.mk
+@@ -0,0 +1,39 @@
++################################################################################
++#
++# qt5charts
++#
++################################################################################
++
++QT5CHARTS_VERSION = $(QT5_VERSION)
++QT5CHARTS_SITE = $(QT5_SITE)
++QT5CHARTS_SOURCE = qtcharts-opensource-src-$(QT5CHARTS_VERSION).tar.xz
++QT5CHARTS_DEPENDENCIES = qt5base qt5declarative
++QT5CHARTS_INSTALL_STAGING = YES
++
++ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
++QT5CHARTS_LICENSE = GPLv2 or GPLv3 or LGPLv3
++QT5CHARTS_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3
++else
++QT5CHARTS_LICENSE = Commercial license
++QT5CHARTS_REDISTRIBUTE = NO
++endif
++
++define QT5CHARTS_CONFIGURE_CMDS
++	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
++endef
++
++define QT5CHARTS_BUILD_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
++endef
++
++define QT5CHARTS_INSTALL_STAGING_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
++	$(QT5_LA_PRL_FILES_FIXUP)
++endef
++
++define QT5CHARTS_INSTALL_TARGET_CMDS
++	cp -dpfr $(STAGING_DIR)/usr/lib/libQt5Charts.so.* $(TARGET_DIR)/usr/lib/
++	cp -dpfr $(STAGING_DIR)/usr/qml/QtCharts $(TARGET_DIR)/usr/qml/
++endef
++
++$(eval $(generic-package))
+diff --git a/package/qt5/qt5connectivity/Config.in b/package/qt5/qt5connectivity/Config.in
+index fa9b911..d529ea7 100644
+--- a/package/qt5/qt5connectivity/Config.in
++++ b/package/qt5/qt5connectivity/Config.in
+@@ -1,9 +1,13 @@
+ config BR2_PACKAGE_QT5CONNECTIVITY
+ 	bool "qt5connectivity"
++	select BR2_PACKAGE_BLUEZ_UTILS
+ 	select BR2_PACKAGE_QT5BASE
+ 	select BR2_PACKAGE_QT5BASE_CONCURRENT
+ 	select BR2_PACKAGE_QT5BASE_DBUS
+-	depends on BR2_PACKAGE_NEARD || BR2_PACKAGE_BLUEZ_UTILS || BR2_PACKAGE_BLUEZ5_UTILS
++	depends on !BR2_STATIC_LIBS # bluez_utils
++	depends on BR2_USE_WCHAR # bluez_utils
++	depends on BR2_TOOLCHAIN_HAS_THREADS # bluez_utils
++	depends on BR2_USE_MMU # bluez_utils
+ 	help
+ 	  Qt is a cross-platform application and UI framework for
+ 	  developers using C++.
+@@ -12,6 +16,6 @@ config BR2_PACKAGE_QT5CONNECTIVITY
+ 
+ 	  http://qt.io
+ 
+-comment "qt5connectivity needs neard and/or bluez(5)_utils"
+-	depends on !BR2_PACKAGE_NEARD && !BR2_PACKAGE_BLUEZ_UTILS && \
+-		!BR2_PACKAGE_BLUEZ5_UTILS
++comment "qt5connectivity needs a toolchain w/ wchar, threads, dynamic library"
++	depends on BR2_USE_MMU
++	depends on !BR2_USE_WCHAR || !BR2_TOOLCHAIN_HAS_THREADS || BR2_STATIC_LIBS
+diff --git a/package/qt5/qt5connectivity/qt5connectivity.hash b/package/qt5/qt5connectivity/qt5connectivity.hash
+deleted file mode 100644
+index 4574f3d..0000000
+--- a/package/qt5/qt5connectivity/qt5connectivity.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtconnectivity-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 1b672923e0703d62f605ccec97b454b1a04c1f0db47f54b687d009e84eabedf9 qtconnectivity-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5connectivity/qt5connectivity.mk b/package/qt5/qt5connectivity/qt5connectivity.mk
+index 0f7257d..936bc6f 100644
+--- a/package/qt5/qt5connectivity/qt5connectivity.mk
++++ b/package/qt5/qt5connectivity/qt5connectivity.mk
+@@ -7,7 +7,7 @@
+ QT5CONNECTIVITY_VERSION = $(QT5_VERSION)
+ QT5CONNECTIVITY_SITE = $(QT5_SITE)
+ QT5CONNECTIVITY_SOURCE = qtconnectivity-opensource-src-$(QT5CONNECTIVITY_VERSION).tar.xz
+-QT5CONNECTIVITY_DEPENDENCIES = qt5base
++QT5CONNECTIVITY_DEPENDENCIES = bluez_utils qt5base
+ QT5CONNECTIVITY_INSTALL_STAGING = YES
+ 
+ ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
+@@ -18,10 +18,9 @@ QT5CONNECTIVITY_LICENSE = Commercial license
+ QT5CONNECTIVITY_REDISTRIBUTE = NO
+ endif
+ 
+-QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_QT5DECLARATIVE),qt5declarative)
+-QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ_UTILS),bluez_utils)
+-QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_BLUEZ5_UTILS),bluez5_utils)
+-QT5CONNECTIVITY_DEPENDENCIES += $(if $(BR2_PACKAGE_NEARD),neard)
++ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
++QT5CONNECTIVITY_DEPENDENCIES += qt5declarative
++endif
+ 
+ define QT5CONNECTIVITY_CONFIGURE_CMDS
+ 	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
+@@ -37,36 +36,15 @@ define QT5CONNECTIVITY_INSTALL_STAGING_CMDS
+ endef
+ 
+ ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
+-ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
+-define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS
++define QT5CONNECTIVITY_INSTALL_TARGET_QMLS
+ 	cp -dpfr $(STAGING_DIR)/usr/qml/QtBluetooth $(TARGET_DIR)/usr/qml/
+ endef
+ endif
+-ifeq ($(BR2_PACKAGE_NEARD),y)
+-define QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS
+-	cp -dpfr $(STAGING_DIR)/usr/qml/QtNfc $(TARGET_DIR)/usr/qml/
+-endef
+-endif
+-endif
+ 
+-ifneq ($(BR2_PACKAGE_BLUEZ_UTILS)$(BR2_PACKAGE_BLUEZ5_UTILS),)
+-define QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH
++define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
+ 	cp -dpf $(STAGING_DIR)/usr/lib/libQt5Bluetooth.so.* $(TARGET_DIR)/usr/lib
+ 	cp -dpf $(STAGING_DIR)/usr/bin/sdpscanner $(TARGET_DIR)/usr/bin
+-endef
+-endif
+-
+-ifeq ($(BR2_PACKAGE_NEARD),y)
+-define QT5CONNECTIVITY_INSTALL_TARGET_NFC
+-	cp -dpf $(STAGING_DIR)/usr/lib/libQt5Nfc.so.* $(TARGET_DIR)/usr/lib
+-endef
+-endif
+-
+-define QT5CONNECTIVITY_INSTALL_TARGET_CMDS
+-	$(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH)
+-	$(QT5CONNECTIVITY_INSTALL_TARGET_NFC)
+-	$(QT5CONNECTIVITY_INSTALL_TARGET_BLUETOOTH_QMLS)
+-	$(QT5CONNECTIVITY_INSTALL_TARGET_NFC_QMLS)
++	$(QT5CONNECTIVITY_INSTALL_TARGET_QMLS)
+ endef
+ 
+ $(eval $(generic-package))
+diff --git a/package/qt5/qt5datavis3d/Config.in b/package/qt5/qt5datavis3d/Config.in
+new file mode 100644
+index 0000000..c7aca95
+--- /dev/null
++++ b/package/qt5/qt5datavis3d/Config.in
+@@ -0,0 +1,17 @@
++config BR2_PACKAGE_QT5DATAVIS3D
++	bool "qt5datavis3d"
++	select BR2_PACKAGE_QT5DECLARATIVE
++	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
++	depends on BR2_PACKAGE_QT5_GL_AVAILABLE
++	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
++	help
++	  Qt is a cross-platform application and UI framework for
++	  developers using C++.
++
++	  This package corresponds to the qt5datavis3d module.
++
++	  http://qt.io
++
++comment "qt5canvas3d needs an OpenGL-capable backend"
++	depends on !BR2_PACKAGE_QT5_GL_AVAILABLE
++	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
+diff --git a/package/qt5/qt5datavis3d/qt5datavis3d.mk b/package/qt5/qt5datavis3d/qt5datavis3d.mk
+new file mode 100644
+index 0000000..a6cecaa
+--- /dev/null
++++ b/package/qt5/qt5datavis3d/qt5datavis3d.mk
+@@ -0,0 +1,39 @@
++################################################################################
++#
++# qt5datavis3d
++#
++################################################################################
++
++QT5DATAVIS3D_VERSION = $(QT5_VERSION)
++QT5DATAVIS3D_SITE = $(QT5_SITE)
++QT5DATAVIS3D_SOURCE = qtdatavis3d-opensource-src-$(QT5DATAVIS3D_VERSION).tar.xz
++QT5DATAVIS3D_DEPENDENCIES = qt5base qt5declarative
++QT5DATAVIS3D_INSTALL_STAGING = YES
++
++ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
++QT5DATAVIS3D_LICENSE = GPLv2 or GPLv3 or LGPLv3
++QT5DATAVIS3D_LICENSE_FILES = LICENSE.GPLv2 LICENSE.GPLv3 LICENSE.LGPLv3
++else
++QT5DATAVIS3D_LICENSE = Commercial license
++QT5DATAVIS3D_REDISTRIBUTE = NO
++endif
++
++define QT5DATAVIS3D_CONFIGURE_CMDS
++	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
++endef
++
++define QT5DATAVIS3D_BUILD_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
++endef
++
++define QT5DATAVIS3D_INSTALL_STAGING_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
++	$(QT5_LA_PRL_FILES_FIXUP)
++endef
++
++define QT5DATAVIS3D_INSTALL_TARGET_CMDS
++	cp -dpfr $(STAGING_DIR)/usr/lib/libQt5DataVisualization.so.* $(TARGET_DIR)/usr/lib
++        cp -dpfr $(STAGING_DIR)/usr/qml/QtDataVisualization $(TARGET_DIR)/usr/qml/
++endef
++
++$(eval $(generic-package))
+diff --git a/package/qt5/qt5declarative/qt5declarative.hash b/package/qt5/qt5declarative/qt5declarative.hash
+deleted file mode 100644
+index d8d3a68..0000000
+--- a/package/qt5/qt5declarative/qt5declarative.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtdeclarative-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 0086a986bc36b398ba518c404d08cdff0a0d7978c30aa3fa2ab73d71654209da qtdeclarative-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5enginio/qt5enginio.hash b/package/qt5/qt5enginio/qt5enginio.hash
+deleted file mode 100644
+index 9951834..0000000
+--- a/package/qt5/qt5enginio/qt5enginio.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtenginio-opensource-src-1.6.2.tar.xz.mirrorlist
+-sha256 90ffc38d214a75ab0ef90a4760843f12bc073ae49c17de24c677d1d403bddcc3 qtenginio-opensource-src-1.6.2.tar.xz
+diff --git a/package/qt5/qt5enginio/qt5enginio.mk b/package/qt5/qt5enginio/qt5enginio.mk
+index ada5fa7..b858d1c 100644
+--- a/package/qt5/qt5enginio/qt5enginio.mk
++++ b/package/qt5/qt5enginio/qt5enginio.mk
+@@ -6,7 +6,7 @@
+ 
+ # Qt5Enginio does not follow Qt versionning
+ # see https://bugreports.qt.io/browse/QTBUG-50111
+-QT5ENGINIO_VERSION = 1.6.2
++QT5ENGINIO_VERSION = 1.6.0
+ QT5ENGINIO_SITE = $(QT5_SITE)
+ QT5ENGINIO_SOURCE = qtenginio-opensource-src-$(QT5ENGINIO_VERSION).tar.xz
+ QT5ENGINIO_DEPENDENCIES = openssl qt5base
+diff --git a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash b/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
+deleted file mode 100644
+index ae29e3b..0000000
+--- a/package/qt5/qt5graphicaleffects/qt5graphicaleffects.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtgraphicaleffects-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 1e9f0fac2c72a812d396db74b2d9d12f513d2ec9135d5982ca85aee7f00be75e qtgraphicaleffects-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5imageformats/qt5imageformats.hash b/package/qt5/qt5imageformats/qt5imageformats.hash
+deleted file mode 100644
+index 54b58e4..0000000
+--- a/package/qt5/qt5imageformats/qt5imageformats.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtimageformats-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 4fb153be62dac393cbcebab65040b3b9d6edecd1ebbe5e543401b0e45bd147e4 qtimageformats-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5location/qt5location.hash b/package/qt5/qt5location/qt5location.hash
+deleted file mode 100644
+index 374952f..0000000
+--- a/package/qt5/qt5location/qt5location.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtlocation-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 7a8995206ed0220f943a33c037527a1a8243d5386f5ca77bf88152675c28d23a qtlocation-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5multimedia/Config.in b/package/qt5/qt5multimedia/Config.in
+index 7549b35..59c3984 100644
+--- a/package/qt5/qt5multimedia/Config.in
++++ b/package/qt5/qt5multimedia/Config.in
+@@ -3,7 +3,6 @@ config BR2_PACKAGE_QT5MULTIMEDIA
+ 	select BR2_PACKAGE_QT5BASE
+ 	select BR2_PACKAGE_QT5BASE_GUI
+ 	select BR2_PACKAGE_QT5BASE_NETWORK
+-	select BR2_PACKAGE_QT5BASE_OPENGL_LIB if BR2_PACKAGE_QT5BASE_OPENGL
+ 	help
+ 	  Qt is a cross-platform application and UI framework for
+ 	  developers using C++.
+diff --git a/package/qt5/qt5multimedia/qt5multimedia.hash b/package/qt5/qt5multimedia/qt5multimedia.hash
+deleted file mode 100644
+index 56a11fb..0000000
+--- a/package/qt5/qt5multimedia/qt5multimedia.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtmultimedia-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 cb9a70a7c6c0eb5be4a3fcaf9590863479e95a255308bbf07d5b7aa303bb8caf qtmultimedia-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash b/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
+deleted file mode 100644
+index 6db589d..0000000
+--- a/package/qt5/qt5quickcontrols/qt5quickcontrols.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 5ed0f2292be10222dfb1b57a05472798fd759279f65455d91c02ef4fb746102c qtquickcontrols-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
+deleted file mode 100644
+index 0d85d48..0000000
+--- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtquickcontrols2-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 09dc1710aa4701aebe145829eb99bab94d0870cf578f7dddcec0af92286dfec1 qtquickcontrols2-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
+index a5ad3f6..622e61f 100644
+--- a/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
++++ b/package/qt5/qt5quickcontrols2/qt5quickcontrols2.mk
+@@ -31,10 +31,10 @@ define QT5QUICKCONTROLS2_INSTALL_STAGING_CMDS
+ endef
+ 
+ define QT5QUICKCONTROLS2_INSTALL_TARGET_CMDS
+-	cp -dpf $(STAGING_DIR)/usr/lib/libQt5LabsTemplates.so.* $(TARGET_DIR)/usr/lib
+-	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs
+-	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs
+-	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs
++	cp -dpf $(STAGING_DIR)/usr/lib/libQt5Quick*.so.* $(TARGET_DIR)/usr/lib
++#	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/controls $(TARGET_DIR)/usr/qml/Qt/labs
++#	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/calendar $(TARGET_DIR)/usr/qml/Qt/labs
++#	cp -dpfr $(STAGING_DIR)/usr/qml/Qt/labs/templates $(TARGET_DIR)/usr/qml/Qt/labs
+ endef
+ 
+ $(eval $(generic-package))
+diff --git a/package/qt5/qt5script/qt5script.hash b/package/qt5/qt5script/qt5script.hash
+deleted file mode 100644
+index c8ecb75..0000000
+--- a/package/qt5/qt5script/qt5script.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtscript-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 e06ef6b271cae2187b57cd4ffdd6759428fd47f94a060e2ed2af024a8c14110e qtscript-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5sensors/qt5sensors.hash b/package/qt5/qt5sensors/qt5sensors.hash
+deleted file mode 100644
+index 65cd127..0000000
+--- a/package/qt5/qt5sensors/qt5sensors.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsensors-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 a7809081aab4f2f0d7a4f40c3abb02e1690bb390d1dd410d7c6c5019a5053427 qtsensors-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5serialbus/Config.in b/package/qt5/qt5serialbus/Config.in
+index f5b713d..504141c 100644
+--- a/package/qt5/qt5serialbus/Config.in
++++ b/package/qt5/qt5serialbus/Config.in
+@@ -1,6 +1,5 @@
+ config BR2_PACKAGE_QT5SERIALBUS
+ 	bool "qt5serialbus"
+-	depends on BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6 # CAN FD
+ 	select BR2_PACKAGE_QT5BASE
+ 	select BR2_PACKAGE_QT5SERIALPORT
+ 	help
+@@ -10,6 +9,3 @@ config BR2_PACKAGE_QT5SERIALBUS
+ 	  This package corresponds to the qt5serialbus module.
+ 
+ 	  http://qt.io
+-
+-comment "qt5serialbus needs headers >= 3.6"
+-	depends on !BR2_TOOLCHAIN_HEADERS_AT_LEAST_3_6
+diff --git a/package/qt5/qt5serialbus/qt5serialbus.hash b/package/qt5/qt5serialbus/qt5serialbus.hash
+deleted file mode 100644
+index 308c365..0000000
+--- a/package/qt5/qt5serialbus/qt5serialbus.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialbus-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 b39260091691532382935ed51de9ead8e66cfb5f7a6e5410c17cd0695ccaf826 qtserialbus-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5serialport/qt5serialport.hash b/package/qt5/qt5serialport/qt5serialport.hash
+deleted file mode 100644
+index 2458e5d..0000000
+--- a/package/qt5/qt5serialport/qt5serialport.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtserialport-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 af76281bad2c2bd283189635316b46091f6712134b845ae1b9e3016eec94f376 qtserialport-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5svg/qt5svg.hash b/package/qt5/qt5svg/qt5svg.hash
+deleted file mode 100644
+index 0c9e9eb..0000000
+--- a/package/qt5/qt5svg/qt5svg.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtsvg-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 f7a361bf661b31ae7779513559dd0b774171911bc57f5cfb6bed6878ddc8bc4e qtsvg-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
+new file mode 100644
+index 0000000..61cbdfe
+--- /dev/null
++++ b/package/qt5/qt5tools/0001-Disable-qdoc-needs-qtdeclarative.patch
+@@ -0,0 +1,30 @@
++From acdb24783322bb6e69df61cf04df2b2e47a06ad2 Mon Sep 17 00:00:00 2001
++From: Peter Seiderer <ps.report@gmx.net>
++Date: Tue, 29 Mar 2016 13:37:09 +0200
++Subject: [PATCH] Disable qdoc (needs qtdeclarative).
++
++Fixes:
++
++  Project ERROR: Unknown module(s) in QT: qmldevtools-private
++  Makefile:63: recipe for target 'sub-qdoc-qmake_all' failed
++
++Signed-off-by: Peter Seiderer <ps.report@gmx.net>
++---
++ src/src.pro | 1 -
++ 1 file changed, 1 deletion(-)
++
++diff --git a/src/src.pro b/src/src.pro
++index 387d54f..494898f 100644
++--- a/src/src.pro
+++++ b/src/src.pro
++@@ -14,7 +14,6 @@ qtHaveModule(widgets) {
++ }
++ 
++ SUBDIRS += linguist \
++-    qdoc \
++     qtplugininfo
++ if(!android|android_app):!ios: SUBDIRS += qtpaths
++ 
++-- 
++2.1.4
++
+diff --git a/package/qt5/qt5tools/qt5tools.hash b/package/qt5/qt5tools/qt5tools.hash
+deleted file mode 100644
+index cc11b28..0000000
+--- a/package/qt5/qt5tools/qt5tools.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qttools-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 db2bb4318786257a47172c377d9c456d5d5ec760d5d69240a4693dc87989e1b7 qttools-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5virtualkeyboard/Config.in b/package/qt5/qt5virtualkeyboard/Config.in
+new file mode 100644
+index 0000000..803b937
+--- /dev/null
++++ b/package/qt5/qt5virtualkeyboard/Config.in
+@@ -0,0 +1,10 @@
++config BR2_PACKAGE_QT5VIRTUALKEYBOARD
++	bool "qt5virtualkeyboard"
++	select BR2_PACKAGE_QT5BASE
++	help
++	  Qt is a cross-platform application and UI framework for
++	  developers using C++.
++
++	  This package corresponds to the qt5virtualkeyboard module.
++
++	  http://qt.io
+\ No newline at end of file
+diff --git a/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
+new file mode 100644
+index 0000000..bbae549
+--- /dev/null
++++ b/package/qt5/qt5virtualkeyboard/qt5virtualkeyboard.mk
+@@ -0,0 +1,31 @@
++################################################################################
++#
++# qt5virtualkeyboard
++#
++################################################################################
++
++QT5VIRTUALKEYBOARD_VERSION = $(QT5_VERSION)
++QT5VIRTUALKEYBOARD_SITE = $(QT5_SITE)
++QT5VIRTUALKEYBOARD_SOURCE = qtvirtualkeyboard-opensource-src-$(QT5VIRTUALKEYBOARD_VERSION).tar.xz
++QT5VIRTUALKEYBOARD_DEPENDENCIES = qt5base qt5declarative
++QT5VIRTUALKEYBOARD_INSTALL_STAGING = YES
++
++define QT5VIRTUALKEYBOARD_CONFIGURE_CMDS
++	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake CONFIG+=disable-desktop) 
++endef
++
++define QT5VIRTUALKEYBOARD_BUILD_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
++endef
++
++define QT5VIRTUALKEYBOARD_INSTALL_STAGING_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
++endef
++
++define QT5VIRTUALKEYBOARD_INSTALL_TARGET_CMDS
++	cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforminputcontexts/libqtvirtualkeyboardplugin.so $(TARGET_DIR)/usr/lib/qt/plugins/platforminputcontexts
++	cp -dpfrv $(STAGING_DIR)/usr/qml/QtQuick/VirtualKeyboard $(TARGET_DIR)/usr/qml/QtQuick/
++
++endef
++
++$(eval $(generic-package))
+diff --git a/package/qt5/qt5wayland/Config.in b/package/qt5/qt5wayland/Config.in
+new file mode 100644
+index 0000000..dbb67b7
+--- /dev/null
++++ b/package/qt5/qt5wayland/Config.in
+@@ -0,0 +1,14 @@
++config BR2_PACKAGE_QT5WAYLAND
++	bool "qt5wayland"
++	select BR2_PACKAGE_QT5BASE
++	select BR2_PACKAGE_QT5DECLARATIVE
++	select BR2_PACKAGE_QT5JSBACKEND
++	depends on BR2_PACKAGE_WAYLAND
++	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
++	help
++	  Qt is a cross-platform application and UI framework for
++	  developers using C++.
++
++	  This package corresponds to the qt5wayland module.
++
++	  http://qt.io
+\ No newline at end of file
+diff --git a/package/qt5/qt5wayland/qt5wayland.mk b/package/qt5/qt5wayland/qt5wayland.mk
+new file mode 100644
+index 0000000..436934d
+--- /dev/null
++++ b/package/qt5/qt5wayland/qt5wayland.mk
+@@ -0,0 +1,35 @@
++#	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake -r CONFIG+=wayland-compositor )
++################################################################################
++#
++# qt5wayland
++#
++################################################################################
++
++QT5WAYLAND_VERSION = $(QT5_VERSION)
++QT5WAYLAND_SITE = $(QT5_SITE)
++QT5WAYLAND_SOURCE = qtwayland-opensource-src-$(QT5WAYLAND_VERSION).tar.xz
++QT5WAYLAND_DEPENDENCIES = qt5base qt5declarative wayland
++ifeq ($(BR2_PACKAGE_HAS_LIBEGL),y)
++QT5WAYLAND_DEPENDENCIES += libegl
++endif
++QT5WAYLAND_INSTALL_STAGING = YES
++
++define QT5WAYLAND_CONFIGURE_CMDS
++	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
++endef
++
++define QT5WAYLAND_BUILD_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
++endef
++
++define QT5WAYLAND_INSTALL_STAGING_CMDS
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
++endef
++
++define QT5WAYLAND_INSTALL_TARGET_CMDS
++	cp -dpf $(STAGING_DIR)/usr/lib/libQt5WaylandClient.so* $(TARGET_DIR)/usr/lib
++	cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/wayland-*-client $(TARGET_DIR)/usr/lib/qt/plugins
++	cp -dpf $(STAGING_DIR)/usr/lib/qt/plugins/platforms/libqwayland-*.so $(TARGET_DIR)/usr/lib/qt/plugins/platforms
++endef
++
++$(eval $(generic-package))
+diff --git a/package/qt5/qt5webchannel/qt5webchannel.hash b/package/qt5/qt5webchannel/qt5webchannel.hash
+deleted file mode 100644
+index 0f9eaae..0000000
+--- a/package/qt5/qt5webchannel/qt5webchannel.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebchannel-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 700efdef5f51bdb77093f4db212afe275ad35a710ea08ba0e9e9cbc8f09f1a52 qtwebchannel-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
+new file mode 100644
+index 0000000..f3d5bda
+--- /dev/null
++++ b/package/qt5/qt5webengine/001-chromium-glibc-2.24-issue.patch
+@@ -0,0 +1,14 @@
++--- a/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp	2016-05-26 15:53:47.000000000 +0200
+++++ b/src/3rdparty/chromium/third_party/WebKit/Source/wtf/PageAllocator.cpp	2016-11-19 00:19:49.894527354 +0100
++@@ -39,6 +39,11 @@
++ 
++ #include <sys/mman.h>
++ 
+++#if OS(LINUX) && defined(MADV_FREE)
+++// glibc 2.24 issues in qtwebengine
+++#undef MADV_FREE
+++#endif
+++
++ #ifndef MADV_FREE
++ #define MADV_FREE MADV_DONTNEED
++ #endif
+diff --git a/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
+new file mode 100644
+index 0000000..c7bdcff
+--- /dev/null
++++ b/package/qt5/qt5webengine/001-delegate_frame_node_fence_sync.patch
+@@ -0,0 +1,20 @@
++--- a/src/core/delegated_frame_node.cpp	2016-03-03 17:02:28.000000000 +0100
+++++ b/src/core/delegated_frame_node.cpp	2016-04-09 21:01:03.502390661 +0200
++@@ -194,7 +194,7 @@
++     case gfx::TransferableFence::NoSync:
++         break;
++     case gfx::TransferableFence::EglSync:
++-#ifdef EGL_KHR_reusable_sync
+++#ifdef EGL_KHR_fence_sync
++     {
++         static bool resolved = false;
++         static PFNEGLCLIENTWAITSYNCKHRPROC eglClientWaitSyncKHR = 0;
++@@ -235,7 +235,7 @@
++     case gfx::TransferableFence::NoSync:
++         break;
++     case gfx::TransferableFence::EglSync:
++-#ifdef EGL_KHR_reusable_sync
+++#ifdef EGL_KHR_fence_sync
++     {
++         static bool resolved = false;
++         static PFNEGLDESTROYSYNCKHRPROC eglDestroySyncKHR = 0;
+diff --git a/package/qt5/qt5webengine/Config.in b/package/qt5/qt5webengine/Config.in
+new file mode 100644
+index 0000000..b630a85
+--- /dev/null
++++ b/package/qt5/qt5webengine/Config.in
+@@ -0,0 +1,17 @@
++config BR2_PACKAGE_QT5WEBENGINE
++	bool "qt5webengine"
++	select BR2_PACKAGE_QT5BASE
++	select BR2_PACKAGE_QT5BASE_GUI
++#	select BR2_PACKAGE_QT5BASE_FONTCONFIG
++	select BR2_PACKAGE_QT5BASE_DBUS
++	select BR2_PACKAGE_QT5BASE_ICU
++	select BR2_PACKAGE_QT5WEBCHANNEL
++	select BR2_PACKAGE_OPENSSL
++	select BR2_PACKAGE_LIBCAP
++	select BR2_PACKAGE_QT5DECLARATIVE
++	select BR2_PACKAGE_QT5DECLARATIVE_QUICK
++	help
++	Qt is a cross-platform application and UI framework for
++	developers using C++.
++	
++	 This package corresponds to the qt5webengine module.
+diff --git a/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
+new file mode 100644
+index 0000000..bb8aa69
+--- /dev/null
++++ b/package/qt5/qt5webengine/patches_save/001-allow-arm-compiler.patch
+@@ -0,0 +1,26 @@
++diff '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*ninja*' -Naur qt5_a/src/3rdparty/chromium/build/common.gypi qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi
++--- qt5_a/src/3rdparty/chromium/build/common.gypi	2015-10-13 06:36:43.000000000 +0200
+++++ qt5webengine-5.5.1/src/3rdparty/chromium/build/common.gypi	2016-02-09 16:37:54.729166157 +0100
++@@ -2294,7 +2294,7 @@
++           }],
++         ],
++         # Change the default to hard once the armhf transition is complete.
++-        'arm_float_abi%': 'softfp',
+++        'arm_float_abi%': 'hard',
++         'arm_thumb%': 1,
++       }],
++ 
++--- qt5webengine-5.5.1/tools/qmake/mkspecs/features/functions.prf	2015-10-13 06:36:55.000000000 +0200
+++++ qt5_we_b/tools/qmake/mkspecs/features/functions.prf	2016-02-09 21:44:30.829783885 +0100
++@@ -12,9 +12,9 @@
++     return(false)
++   }
++ 
++-  linux-g++*:!isGCCVersionSupported(): return(false)
+++  linux*g++*:!isGCCVersionSupported(): return(false)
++   !isPythonVersionSupported(): return(false)
++-  linux-g++*|win32-msvc2013|macx-clang: return(true)
+++  linux*g++*|win32-msvc2013|macx-clang: return(true)
++   boot2qt: return(true)
++ 
++   skipBuild("Qt WebEngine can currently only be built for Linux (GCC), Windows (MSVC 2013), OS X (XCode 5.1+) or Qt for Device Creation.")
+diff --git a/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
+new file mode 100644
+index 0000000..b780f49
+--- /dev/null
++++ b/package/qt5/qt5webengine/patches_save/002-buildroot-python-bz2.patch
+@@ -0,0 +1,11 @@
++--- a/src/3rdparty/chromium/v8/tools/js2c.py	2016-03-03 15:48:36.000000000 +0100
+++++ b/src/3rdparty/chromium/v8/tools/js2c.py	2016-04-28 15:56:42.219174252 +0200
++@@ -34,7 +34,7 @@
++ import os, re, sys, string
++ import optparse
++ import jsmin
++-import bz2
+++##import bz2
++ import textwrap
++ 
++ 
+diff --git a/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
+new file mode 100644
+index 0000000..a917a9c
+--- /dev/null
++++ b/package/qt5/qt5webengine/patches_save/002-move_icu_to_56_1.patch
+@@ -0,0 +1,43 @@
++--- qt5webengine-5.5.1/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h	2015-10-13 06:36:26.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/third_party/icu/source/common/unicode/uvernum.h	2016-02-11 12:06:28.304679220 +0100
++@@ -57,7 +57,7 @@
++  *  This value will change in the subsequent releases of ICU
++  *  @stable ICU 2.4
++  */
++-#define U_ICU_VERSION_MAJOR_NUM 52
+++#define U_ICU_VERSION_MAJOR_NUM 56
++ 
++ /** The current ICU minor version as an integer.
++  *  This value will change in the subsequent releases of ICU
++@@ -83,7 +83,7 @@
++  *  This value will change in the subsequent releases of ICU
++  *  @stable ICU 2.6
++  */
++-#define U_ICU_VERSION_SUFFIX _52
+++#define U_ICU_VERSION_SUFFIX _56
++ 
++ /**
++  * \def U_DEF2_ICU_ENTRY_POINT_RENAME
++@@ -118,19 +118,19 @@
++  *  This value will change in the subsequent releases of ICU
++  *  @stable ICU 2.4
++  */
++-#define U_ICU_VERSION "52.1"
+++#define U_ICU_VERSION "56.1"
++ 
++ /** The current ICU library major/minor version as a string without dots, for library name suffixes.
++  *  This value will change in the subsequent releases of ICU
++  *  @stable ICU 2.6
++  */
++-#define U_ICU_VERSION_SHORT "52"
+++#define U_ICU_VERSION_SHORT "56"
++ 
++ #ifndef U_HIDE_INTERNAL_API
++ /** Data version in ICU4C.
++  * @internal ICU 4.4 Internal Use Only
++  **/
++-#define U_ICU_DATA_VERSION "52.1"
+++#define U_ICU_DATA_VERSION "56.1"
++ #endif  /* U_HIDE_INTERNAL_API */
++ 
++ /*===========================================================================
+diff --git a/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
+new file mode 100644
+index 0000000..8d633d9
+--- /dev/null
++++ b/package/qt5/qt5webengine/patches_save/003-egl_khr_reusable_sync.patch
+@@ -0,0 +1,14 @@
++--- qt5webengine-5.5.1/src/core/delegated_frame_node.cpp	2015-10-13 06:36:54.000000000 +0200
+++++ qt5_b/src/core/delegated_frame_node.cpp	2016-02-11 13:27:42.142167151 +0100
++@@ -76,6 +76,11 @@
++ #include <EGL/eglext.h>
++ #endif
++ 
+++#ifdef EGL_KHR_reusable_sync
+++#undef EGL_KHR_reusable_sync
+++#endif
+++
+++
++ namespace QtWebEngineCore {
++ 
++ class MailboxTexture : public QSGTexture, protected QOpenGLFunctions {
+diff --git a/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
+new file mode 100644
+index 0000000..604cb88
+--- /dev/null
++++ b/package/qt5/qt5webengine/patches_save/004-allow-egl-surface.patch
+@@ -0,0 +1,166 @@
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/base/files/file_proxy_unittest.cc	2015-10-13 06:36:48.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/base/files/file_proxy_unittest.cc	2016-02-12 17:58:52.694043375 +0100
++@@ -142,7 +142,7 @@
++ }
++ 
++ TEST_F(FileProxyTest, CreateOrOpen_AbandonedCreate) {
++-  bool prev = ThreadRestrictions::SetIOAllowed(false);
+++  bool prev = ThreadRestrictions::SetIOAllowed(true);
++   {
++     FileProxy proxy(file_task_runner());
++     proxy.CreateOrOpen(
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_main_loop.cc	2015-10-13 06:36:47.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/content/browser/browser_main_loop.cc	2016-02-12 17:53:52.118534482 +0100
++@@ -745,7 +745,7 @@
++ 
++   // If the UI thread blocks, the whole UI is unresponsive.
++   // Do not allow disk IO from the UI thread.
++-  base::ThreadRestrictions::SetIOAllowed(false);
+++  base::ThreadRestrictions::SetIOAllowed(true);
++   base::ThreadRestrictions::DisallowWaiting();
++   return result_code_;
++ }
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc	2015-10-13 06:36:46.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/content/browser/browser_process_sub_thread.cc	2016-02-12 17:52:40.717701092 +0100
++@@ -39,7 +39,7 @@
++     // Though this thread is called the "IO" thread, it actually just routes
++     // messages around; it shouldn't be allowed to perform any blocking disk
++     // I/O.
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++     base::ThreadRestrictions::DisallowWaiting();
++   }
++ }
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc	2015-10-13 06:36:51.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/dbus/end_to_end_async_unittest.cc	2016-02-12 17:57:04.280777854 +0100
++@@ -39,7 +39,7 @@
++ 
++   virtual void SetUp() {
++     // Make the main thread not to allow IO.
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++ 
++     // Start the D-Bus thread.
++     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/object_manager_unittest.cc	2015-10-13 06:36:51.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/dbus/object_manager_unittest.cc	2016-02-12 17:54:33.659019384 +0100
++@@ -61,7 +61,7 @@
++ 
++   virtual void SetUp() {
++     // Make the main thread not to allow IO.
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++ 
++     // Start the D-Bus thread.
++     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/property_unittest.cc	2015-10-13 06:36:51.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/dbus/property_unittest.cc	2016-02-12 17:57:54.025358691 +0100
++@@ -51,7 +51,7 @@
++ 
++   virtual void SetUp() {
++     // Make the main thread not to allow IO.
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++ 
++     // Start the D-Bus thread.
++     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc	2015-10-13 06:36:51.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/dbus/signal_sender_verification_unittest.cc	2016-02-12 17:55:57.519998395 +0100
++@@ -32,7 +32,7 @@
++     base::StatisticsRecorder::Initialize();
++ 
++     // Make the main thread not to allow IO.
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++ 
++     // Start the D-Bus thread.
++     dbus_thread_.reset(new base::Thread("D-Bus Thread"));
++@@ -161,7 +161,7 @@
++   void SafeServiceStop(TestService* test_service) {
++     base::ThreadRestrictions::SetIOAllowed(true);
++     test_service->Stop();
++-    base::ThreadRestrictions::SetIOAllowed(false);
+++    base::ThreadRestrictions::SetIOAllowed(true);
++   }
++ 
++   base::MessageLoop message_loop_;
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/file_stream_unittest.cc	2015-10-13 06:36:53.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/net/base/file_stream_unittest.cc	2016-02-12 18:00:05.358889970 +0100
++@@ -758,7 +758,7 @@
++   scoped_refptr<base::SequencedWorkerPool> pool(
++       new base::SequencedWorkerPool(1, "StreamTest"));
++ 
++-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
+++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
++   scoped_ptr<FileStream> stream(new FileStream(pool.get()));
++   int flags = base::File::FLAG_OPEN | base::File::FLAG_WRITE |
++               base::File::FLAG_ASYNC;
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc	2015-10-13 06:36:53.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/net/base/network_config_watcher_mac.cc	2016-02-12 18:00:56.359484236 +0100
++@@ -67,7 +67,7 @@
++ void NetworkConfigWatcherMacThread::Init() {
++   // Disallow IO to make sure NetworkConfigWatcherMacThread's helper thread does
++   // not perform blocking operations.
++-  base::ThreadRestrictions::SetIOAllowed(false);
+++  base::ThreadRestrictions::SetIOAllowed(true);
++ 
++   delegate_->Init();
++ 
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc
++--- qt5webengine-5.5.1/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc	2015-10-13 06:36:53.000000000 +0200
+++++ qt5_b/src/3rdparty/chromium/net/disk_cache/backend_unittest.cc	2016-02-12 18:02:24.724514006 +0100
++@@ -463,7 +463,7 @@
++       base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
++   net::TestCompletionCallback cb;
++ 
++-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
+++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
++   scoped_ptr<disk_cache::BackendImpl> cache(new disk_cache::BackendImpl(
++       cache_path_, cache_thread.task_runner(), NULL));
++   int rv = cache->Init(cb.callback());
++@@ -1972,7 +1972,7 @@
++       base::Thread::Options(base::MessageLoop::TYPE_IO, 0)));
++ 
++   net::TestCompletionCallback cb;
++-  bool prev = base::ThreadRestrictions::SetIOAllowed(false);
+++  bool prev = base::ThreadRestrictions::SetIOAllowed(true);
++   base::FilePath path(cache_path_);
++   int rv = disk_cache::CreateCacheBackend(net::DISK_CACHE,
++                                           net::CACHE_BACKEND_BLOCKFILE,
++diff -aur '--exclude=*.pyc' '--exclude=*.o' '--exclude=*.h' '--exclude=*.a' '--exclude=*deps' '--exclude=*log*' '--exclude=*ninja*' '--exclude=*.gyp' '--exclude=*.pak' '--exclude=*.pickle' '--exclude=*.cache' '--exclude=*.py' '--exclude=*.idl' '--exclude=*.gypi' '--exclude=*.tmp' '--exclude=*.in' '--exclude=*.rc' qt5webengine-5.5.1/src/core/gl_surface_qt.cpp qt5_b/src/core/gl_surface_qt.cpp
++--- qt5webengine-5.5.1/src/core/gl_surface_qt.cpp	2015-10-13 06:36:54.000000000 +0200
+++++ qt5_b/src/core/gl_surface_qt.cpp	2016-02-14 11:38:43.661776602 +0100
++@@ -513,15 +513,20 @@
++         return NULL;
++ #endif
++     }
++-    case kGLImplementationEGLGLES2: {
+++   case kGLImplementationEGLGLES2: {
++         scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
++         if (!surface->Initialize())
++             return NULL;
++         return surface;
++     }
++-    default:
++-        Q_UNREACHABLE();
++-        return NULL;
+++    default: {
+++        scoped_refptr<GLSurface> surface = new GLSurfaceQtEGL(size);
+++        if (!surface->Initialize())
+++            return NULL;
+++        return surface;
+++    }
+++//        Q_UNREACHABLE();
+++//        return NULL;
++     }
++ }
++ 
+diff --git a/package/qt5/qt5webengine/qt5webengine.__hash b/package/qt5/qt5webengine/qt5webengine.__hash
+new file mode 100644
+index 0000000..b5ecd88
+--- /dev/null
++++ b/package/qt5/qt5webengine/qt5webengine.__hash
+@@ -0,0 +1,2 @@
++# Hash from: http://download.qt.io/official_releases/qt/5.5/5.5.1/submodules/qtwebengine-opensource-src-5.5.1.tar.xz.mirrorlist
++sha256 7c4d328dd305991aaf0c3450615f4a8e5d80152194bee6f5925bd8d3477e2b90 qtwebengine-opensource-src-5.5.1.tar.xz
+diff --git a/package/qt5/qt5webengine/qt5webengine.mk b/package/qt5/qt5webengine/qt5webengine.mk
+new file mode 100644
+index 0000000..bcd1a82
+--- /dev/null
++++ b/package/qt5/qt5webengine/qt5webengine.mk
+@@ -0,0 +1,70 @@
++################################################################################
++#
++# qt5webengine
++#
++################################################################################
++
++QT5WEBENGINE_VERSION = $(QT5_VERSION)
++QT5WEBENGINE_SITE = $(QT5_SITE)
++QT5WEBENGINE_SOURCE = qtwebengine-opensource-src-$(QT5WEBENGINE_VERSION).tar.xz
++QT5WEBENGINE_DEPENDENCIES = qt5base qt5declarative qt5webchannel libcap openssl host-gperf
++QT5WEBENGINE_INSTALL_STAGING = YES
++
++ifeq ($(BR2_PACKAGE_QT5BASE_LICENSE_APPROVED),y)
++QT5WEBENGINE_LICENSE = LGPLv2.1 with exception or LGPLv3 or GPLv2
++# Source files contain references to LGPL_EXCEPTION.txt but it is not included
++# in the archive.
++QT5WEBENGINE_LICENSE_FILES = LICENSE.LGPLv21 LICENSE.LGPLv3 LICENSE.GPLv2
++else
++QT5WEBENGINE_LICENSE = Commercial license
++QT5WEBENGINE_REDISTRIBUTE = NO
++endif
++
++ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
++QT5WEBENGINE_DEPENDENCIES += qt5declarative
++endif
++
++define QT5WEBENGINE_CONFIGURE_CMDS
++ (cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake WEBENGINE_CONFIG+=use_proprietary_codecs)
++endef
++
++define QT5WEBENGINE_BUILD_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
++endef
++
++define QT5WEBENGINE_INSTALL_STAGING_CMDS
++ $(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
++ $(QT5_LA_PRL_FILES_FIXUP)
++endef
++
++ifeq ($(BR2_PACKAGE_QT5DECLARATIVE_QUICK),y)
++define QT5WEBENGINE_INSTALL_TARGET_QMLS
++ cp -dpfr $(STAGING_DIR)/usr/qml/QtWebEngine $(TARGET_DIR)/usr/qml/
++endef
++endif
++
++ifeq ($(BR2_PACKAGE_QT5BASE_EXAMPLES),y)
++define QT5WEBENGINE_INSTALL_TARGET_EXAMPLES
++ cp -dpfr $(STAGING_DIR)/usr/lib/qt/examples/webengine* $(TARGET_DIR)/usr/lib/qt/examples/
++endef
++endif
++
++ifneq ($(BR2_STATIC_LIBS),y)
++define QT5WEBENGINE_INSTALL_TARGET_LIBS
++ cp -dpf $(STAGING_DIR)/usr/lib/libQt5WebEngine*.so.* $(TARGET_DIR)/usr/lib
++ #cp -dpfr $(STAGING_DIR)/usr/lib/qt/plugins/qtwebengine $(TARGET_DIR)/usr/lib/qt/plugins/
++ cp -dpf $(STAGING_DIR)/usr/libexec/QtWebEngineProcess $(TARGET_DIR)/usr/libexec/
++ mkdir -p $(TARGET_DIR)/usr/translations/qtwebengine_locales
++ cp -dpfr $(STAGING_DIR)/usr/translations/qtwebengine_locales/* $(TARGET_DIR)/usr/translations/qtwebengine_locales/
++ mkdir -p $(TARGET_DIR)/usr/resources
++ cp -dpfr $(STAGING_DIR)/usr/resources/* $(TARGET_DIR)/usr/resources/
++endef
++endif
++
++define QT5WEBENGINE_INSTALL_TARGET_CMDS
++ $(QT5WEBENGINE_INSTALL_TARGET_LIBS)
++ $(QT5WEBENGINE_INSTALL_TARGET_QMLS)
++ $(QT5WEBENGINE_INSTALL_TARGET_EXAMPLES)
++endef
++
++$(eval $(generic-package))
+diff --git a/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
+new file mode 100644
+index 0000000..b7b6791
+--- /dev/null
++++ b/package/qt5/qt5webkit/0004-Fix-linking-with-libpthread.patch
+@@ -0,0 +1,34 @@
++From 5dd4bb67cfce812fd7686e43616e2069f354a7df Mon Sep 17 00:00:00 2001
++From: Allan Sandfeld Jensen <allan.jensen@theqtcompany.com>
++Date: Mon, 22 Feb 2016 10:57:32 +0100
++Subject: [PATCH] Fix linking with libpthread
++
++WebKit use libpthread directly but is depending on other qt modules
++causing it to be linked against, which might break unless -lpthread
++is last. Instead just add it explicitly after the static libraries.
++
++Upstream-Status: Backport from 5.7 branch
++
++Change-Id: I2b95cff2c96373f8dce6f95052c4fccbe1982b33
++Reviewed-by: Simon Hausmann <simon.hausmann@theqtcompany.com>
++Signed-off-by: Jonathan Liu <net147@gmail.com>
++Signed-off-by: Gary Bisson <gary.bisson@boundarydevices.com>
++---
++ Tools/qmake/mkspecs/features/default_post.prf | 1 +
++ 1 file changed, 1 insertion(+)
++
++diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
++index 67276b7..39bb3f7 100644
++--- a/Tools/qmake/mkspecs/features/default_post.prf
+++++ b/Tools/qmake/mkspecs/features/default_post.prf
++@@ -201,6 +201,7 @@ needToLink() {
++         linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
++         LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
++     }
+++    posix:!darwin: LIBS += -lpthread
++ }
++ 
++ creating_module {
++-- 
++2.7.1
++
+diff --git a/package/qt5/qt5webkit/Config.in b/package/qt5/qt5webkit/Config.in
+index 48aaf94..7add5f9 100644
+--- a/package/qt5/qt5webkit/Config.in
++++ b/package/qt5/qt5webkit/Config.in
+@@ -23,6 +23,6 @@ config BR2_PACKAGE_QT5WEBKIT
+ 	  http://qt.io
+ 
+ comment "qt5webkit needs a toolchain w/ dynamic library"
+-	depends on BR2_STATIC_LIBS
+-	depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
+-	depends on !BR2_BINFMT_FLAT
++        depends on BR2_STATIC_LIBS
++        depends on BR2_PACKAGE_QT5_JSCORE_AVAILABLE
++        depends on !BR2_BINFMT_FLAT
+diff --git a/package/qt5/qt5webkit/qt5webkit.hash b/package/qt5/qt5webkit/qt5webkit.hash
+deleted file mode 100644
+index 96b8bdd..0000000
+--- a/package/qt5/qt5webkit/qt5webkit.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# locally computed
+-sha256 bdd659573e7e75cd4ad57b7160a7353d98d21a6fef06e4fb9e114a5b1f1e9dab qt5webkit-b35917bcb44d7f200af0f4ac68a126fa0aa8d93d.tar.gz
+diff --git a/package/qt5/qt5webkit/qt5webkit.mk b/package/qt5/qt5webkit/qt5webkit.mk
+index 378cdf7..629e40a 100644
+--- a/package/qt5/qt5webkit/qt5webkit.mk
++++ b/package/qt5/qt5webkit/qt5webkit.mk
+@@ -4,13 +4,11 @@
+ #
+ ################################################################################
+ 
+-QT5WEBKIT_VERSION = b35917bcb44d7f200af0f4ac68a126fa0aa8d93d
++QT5WEBKIT_VERSION = d2ff5a085572b1ee24dcb42ae107063f3142d14e
+ # Using GitHub since it supports downloading tarballs from random commits.
+ # The http://code.qt.io/cgit/qt/qtwebkit.git/ repo doesn't allow to do so.
+ QT5WEBKIT_SITE = $(call github,qtproject,qtwebkit,$(QT5WEBKIT_VERSION))
+-QT5WEBKIT_DEPENDENCIES = \
+-	host-bison host-flex host-gperf host-python host-ruby \
+-	qt5base sqlite
++QT5WEBKIT_DEPENDENCIES = qt5base sqlite host-ruby host-gperf host-bison host-flex
+ QT5WEBKIT_INSTALL_STAGING = YES
+ 
+ QT5WEBKIT_LICENSE_FILES = Source/WebCore/LICENSE-LGPL-2 Source/WebCore/LICENSE-LGPL-2.1
+@@ -33,16 +31,6 @@ ifeq ($(BR2_PACKAGE_QT5DECLARATIVE),y)
+ QT5WEBKIT_DEPENDENCIES += qt5declarative
+ endif
+ 
+-# QtWebkit's build system uses python, but only supports python2. We work
+-# around this by forcing python2 early in the PATH, via a python->python2
+-# symlink.
+-QT5WEBKIT_ENV = PATH=$(@D)/host-bin:$(BR_PATH)
+-define QT5WEBKIT_PYTHON2_SYMLINK
+-	mkdir -p $(@D)/host-bin
+-	ln -sf $(HOST_DIR)/usr/bin/python2 $(@D)/host-bin/python
+-endef
+-QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
+-
+ # Since we get the source from git, generated header files are not included.
+ # qmake detects that header file generation (using the syncqt tool) must be
+ # done based on the existence of a .git directory (cfr. the git_build config
+@@ -51,15 +39,15 @@ QT5WEBKIT_PRE_CONFIGURE_HOOKS += QT5WEBKIT_PYTHON2_SYMLINK
+ # create an empty .git directory.
+ define QT5WEBKIT_CONFIGURE_CMDS
+ 	mkdir -p $(@D)/.git
+-	(cd $(@D); $(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(HOST_DIR)/usr/bin/qmake)
++	(cd $(@D); $(TARGET_MAKE_ENV) $(HOST_DIR)/usr/bin/qmake)
+ endef
+ 
+ define QT5WEBKIT_BUILD_CMDS
+-	$(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D)
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D)
+ endef
+ 
+ define QT5WEBKIT_INSTALL_STAGING_CMDS
+-	$(TARGET_MAKE_ENV) $(QT5WEBKIT_ENV) $(MAKE) -C $(@D) install
++	$(TARGET_MAKE_ENV) $(MAKE) -C $(@D) install
+ 	$(QT5_LA_PRL_FILES_FIXUP)
+ endef
+ 
+diff --git a/package/qt5/qt5websockets/qt5websockets.hash b/package/qt5/qt5websockets/qt5websockets.hash
+deleted file mode 100644
+index 3443476..0000000
+--- a/package/qt5/qt5websockets/qt5websockets.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtwebsockets-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 3cd9d4bbff8e6be5e252f00fc9ecb9ac2d8a193020288c7d1e82583daeb5ba35 qtwebsockets-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5x11extras/qt5x11extras.hash b/package/qt5/qt5x11extras/qt5x11extras.hash
+deleted file mode 100644
+index 297c578..0000000
+--- a/package/qt5/qt5x11extras/qt5x11extras.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtx11extras-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 71ffde1cfaeec310677b69ecd16cb5992e8885cf3e73b4cec7d6e7a115b40ced qtx11extras-opensource-src-5.6.2.tar.xz
+diff --git a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash b/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
+deleted file mode 100644
+index fa4e97f..0000000
+--- a/package/qt5/qt5xmlpatterns/qt5xmlpatterns.hash
++++ /dev/null
+@@ -1,2 +0,0 @@
+-# Hash from: http://download.qt.io/official_releases/qt/5.6/5.6.2/submodules/qtxmlpatterns-opensource-src-5.6.2.tar.xz.mirrorlist
+-sha256 7c6df3eebf188d8ce6822a22cebbc63da5ac27047cf1bd7236d5b988244782cc qtxmlpatterns-opensource-src-5.6.2.tar.xz
+diff --git a/package/ti-gfx/S80ti-gfx b/package/ti-gfx/S80ti-gfx
+index fc5999a..00f8394 100644
+--- a/package/ti-gfx/S80ti-gfx
++++ b/package/ti-gfx/S80ti-gfx
+@@ -3,14 +3,16 @@
+ start() {
+ 	echo "ti-gfx: starting pvr driver"
+ 
++	TMPFB=`mktemp`
++	cat /dev/fb0 > $TMPFB
+ 	BITSPERPIXEL="$(fbset | awk '/geom/ {print $6}')"
+ 	YRES="$(fbset | awk '/geom/ {print $3}')"
+ 	# Set RGBA ordering to something the drivers like
+-	if [ "$BITSPERPIXEL" = "32" ] ; then
+-		fbset -rgba 8/16,8/8,8/0,8/24
+-	fi
++	#if [ "$BITSPERPIXEL" = "32" ] ; then
++	#	fbset -rgba 8/16,8/8,8/0,8/24
++	#fi
+ 	# Try to enable triple buffering when there's enough VRAM
+-	fbset -vyres $(( YRES*3 ))
++	#fbset -vyres $(( YRES*3 ))
+ 
+ 	modprobe pvrsrvkm
+ 	modprobe omaplfb
+@@ -22,6 +24,14 @@ start() {
+ 	mknod /dev/pvrsrvkm c $pvr_maj 0
+ 	chmod 600 /dev/pvrsrvkm
+ 
++	#-- cursor off	
++	echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty0
++	# -- disa screensaver
++	echo 0 > /sys/class/graphics/fb0/blank
++	
++	cat $TMPFB > /dev/fb0
++	rm $TMPFB
++	
+ 	if ! /usr/bin/pvrsrvctl --start --no-module; then
+ 		echo "ti-gfx: unable to start server"
+ 	fi
+diff --git a/package/ti-gfx/powervr.ini b/package/ti-gfx/powervr.ini
+index 8d2d853..cceecdd 100644
+--- a/package/ti-gfx/powervr.ini
++++ b/package/ti-gfx/powervr.ini
+@@ -1,2 +1,4 @@
+ [default]
+-WindowSystem=libpvrPVR2D_FRONTWSEGL.so
++#WindowSystem=libpvrPVR2D_FRONTWSEGL.so
++WindowSystem=libpvrPVR2D_FLIPWSEGL.so
++ParamBufferSize=16777216
+diff --git a/package/ti-sgx-km/ti-sgx-km.mk b/package/ti-sgx-km/ti-sgx-km.mk
+index 48c8a6d..05e1cca 100644
+--- a/package/ti-sgx-km/ti-sgx-km.mk
++++ b/package/ti-sgx-km/ti-sgx-km.mk
+@@ -5,7 +5,8 @@
+ ################################################################################
+ 
+ # This correpsonds to SDK 02.00.00.00
+-TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
++#TI_SGX_KM_VERSION = 2b7523d07a13ab704a24a7664749551f4a13ed32
++TI_SGX_KM_VERSION = remotes/origin/ti-img-sgx/1.14.3699939/k4.4
+ TI_SGX_KM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-linux.git
+ TI_SGX_KM_LICENSE = GPLv2
+ TI_SGX_KM_LICENSE_FILES = GPL-COPYING
+@@ -18,7 +19,7 @@ TI_SGX_KM_MAKE_OPTS = \
+ 	PVR_NULLDRM=1
+ 
+ ifeq ($(BR2_PACKAGE_TI_SGX_AM335X),y)
+-TI_SGX_KM_PLATFORM_NAME = omap335x
++TI_SGX_KM_PLATFORM_NAME = omap
+ else ifeq ($(BR2_PACKAGE_TI_SGX_AM437X),y)
+ TI_SGX_KM_PLATFORM_NAME = omap437x
+ else ifeq ($(BR2_PACKAGE_TI_SGX_AM4430),y)
+@@ -38,6 +39,8 @@ define TI_SGX_KM_INSTALL_TARGET_CMDS
+ 	$(TARGET_MAKE_ENV) $(MAKE) $(TI_SGX_KM_MAKE_OPTS) \
+ 		DISCIMAGE=$(TARGET_DIR) \
+ 		kbuild_install -C $(@D)/$(TI_SGX_KM_SUBDIR)
++		echo ">>>>>>>>>"
++		sleep 10
+ endef
+ 
+ $(eval $(generic-package))
+diff --git a/package/ti-sgx-um/ti-sgx-um.mk b/package/ti-sgx-um/ti-sgx-um.mk
+index d5c50a0..76a7663 100644
+--- a/package/ti-sgx-um/ti-sgx-um.mk
++++ b/package/ti-sgx-um/ti-sgx-um.mk
+@@ -6,6 +6,7 @@
+ 
+ # This correpsonds to SDK 02.00.00.00
+ TI_SGX_UM_VERSION = e15f1543bab4de9e8927a2c4934addf3fd16ffcb
++#TI_SGX_UM_VERSION = glsdk_7.04.00.03
+ TI_SGX_UM_SITE = git://git.ti.com/graphics/omap5-sgx-ddk-um-linux.git
+ TI_SGX_UM_LICENSE = TI TSPA License
+ TI_SGX_UM_LICENSE_FILES = OMAP5-Linux-Graphics-DDK-UM-Manifest.doc

+ 15 - 0
MakeBuildrootEnv.sh

@@ -0,0 +1,15 @@
+#!/bin/bash
+GFAWRKDIR=`pwd`
+cd ..
+rm -rf buildroot
+git clone git://git.buildroot.net/buildroot
+cd buildroot
+##git checkout 63a20d5dfebe83e2b2bd683dc78ebdf787dff100 -b gfawrk
+git checkout 048ec8ae4cf67ec88bef3dec9b2ef354e8f3c85a -b gfawrk
+patch -p1 < ../GfA/GfA-buildroot-changes.patch
+chmod a+x *.sh
+cp ../GfA/configs/* ./configs
+make  BR2_EXTERNAL=../GfA Display001_defconfig
+git add .
+git commit -m "GfA wrk changes and setup"
+cd $GFAWRKDIR

+ 88 - 0
Readme.md

@@ -0,0 +1,88 @@
+
+# Display001 : 
+
+ GfA HMI System
+
+  - Displays 4,3 7 und 10 Zoll 
+  - 2x RS485
+  - Ethernet 10/100
+  - USB 2.0 Host
+  - USB Device
+  - MicroSD Slot
+  - Kapzitives Multitouch
+  
+## Optional
+
+  - Gemalto PH8 GSM/GPRS Modem mit SIM Kartenslot
+  
+## Rootfs / Kernel / Apps
+
+Erstellung mit Buildroot, Bootloader "Das U-Boot"
+
+### Erstellen des Rootfs, Bootloader und Kernel
+
+1. Erstellen eines Arbeitsverzeichnisses
+  z.B 
+ ```
+ mkdir Display001WRK
+ ```	
+2. Wechseln in das Verzeichnis
+ ```
+ cd Display001WRK
+ ```
+3. Clone des Script und Konfigurationsverzeichnisses
+ ```
+ git clone https://gogs.reru.org/GfA/Display001GfA.git GfA
+ ```
+ *Bitte in Verzeichnis GfA clonen !!!*
+
+4. Verzeichnis für Toolchain erstellen
+ ```
+ sudo mkdir /opt/GfA
+ sudo chmod a+rw /opt/GfA
+ ```
+5. In Verzeichnis wechseln
+ ```
+ cd GfA
+ ```	
+6. Script Aufrufen
+ ```
+ ./MakeBuildrootEnv.sh
+ ```
+ Damit wird *buildroot* gecloned und der richtige commit eingestellt,
+ Patches eingespielt und Hilfsscripte kopiert.
+
+Buildroot ist nun Konfiguriert,
+
+```
+cd ../buildroot
+make
+```
+sollte das komplette System erstellen
+
+## Zusatzscripte
+
+### MakeIMAGE.sh
+Erstellt ein komplettes Image für SD Karte
+mit Bootloader Linuxkernel und Rootfilesystem aus den buildroot Ergebnissen.
+
+Hierfür mas das paket *kpartx* installiert sein und das script muss mit sudo aufgerufen werden.
+im Verzeichnis *buildroot*
+```
+sudo ./MakeIMAGE
+```
+ erstellt eine Datei ../Display001_Build_*xxx*-img und ../Display001_build*xxx*-img.zip
+Diese Datei kann direkt mit *dd* auf eine SD Karte kopiert werden und enthält dann zwei Partitionen (boot und rootfs)
+```
+sudo dd if=../Display001_build315-img of=/dev/sdb bs=16M
+```
+### MakeRootfsUpdate.sh
+
+erstellt eine Datei
+../UpdateDisplay001-*xxx*.sh
+
+```
+./MakeRootfsUpdate.sh
+```
+Dieses Script mit integriertem *tarball*,
+kann für Updates auf dem Zielsystem verwendet werden.

+ 1 - 0
board/GfA/Display001/.#Display001.dts

@@ -0,0 +1 @@
+ru@here.4993

+ 1 - 0
board/GfA/Display001/BUILD

@@ -0,0 +1 @@
+315

+ 314 - 0
board/GfA/Display001/Display001.dts

@@ -0,0 +1,314 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-always-on;
+};
+
+&mmc1 {
+	vmmc-supply = <&vmmcsd_fixed>;
+};
+
+&mmc2 {
+	vmmc-supply = <&vmmcsd_fixed>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_pins>;
+	bus-width = <8>;
+	ti,non-removable;
+	status = "okay";
+};
+
+&am33xx_pinmux {
+		lcd_pins_default: lcd_pins_default {
+			pinctrl-single,pins = <
+				0x20 0x01	/* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
+				0x24 0x01	/* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
+				0x28 0x01	/* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
+				0x2c 0x01	/* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
+				0x30 0x01	/* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
+				0x34 0x01	/* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
+				0x38 0x01	/* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
+				0x3c 0x01	/* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
+				0xa0 0x00	/* lcd_data0.lcd_data0, OUTPUT | MODE0 */
+				0xa4 0x00	/* lcd_data1.lcd_data1, OUTPUT | MODE0 */
+				0xa8 0x00	/* lcd_data2.lcd_data2, OUTPUT | MODE0 */
+				0xac 0x00	/* lcd_data3.lcd_data3, OUTPUT | MODE0 */
+				0xb0 0x00	/* lcd_data4.lcd_data4, OUTPUT | MODE0 */
+				0xb4 0x00	/* lcd_data5.lcd_data5, OUTPUT | MODE0 */
+				0xb8 0x00	/* lcd_data6.lcd_data6, OUTPUT | MODE0 */
+				0xbc 0x00	/* lcd_data7.lcd_data7, OUTPUT | MODE0 */
+				0xc0 0x00	/* lcd_data8.lcd_data8, OUTPUT | MODE0 */
+				0xc4 0x00	/* lcd_data9.lcd_data9, OUTPUT | MODE0 */
+				0xc8 0x00	/* lcd_data10.lcd_data10, OUTPUT | MODE0 */
+				0xcc 0x00	/* lcd_data11.lcd_data11, OUTPUT | MODE0 */
+				0xd0 0x00	/* lcd_data12.lcd_data12, OUTPUT | MODE0 */
+				0xd4 0x00	/* lcd_data13.lcd_data13, OUTPUT | MODE0 */
+				0xd8 0x00	/* lcd_data14.lcd_data14, OUTPUT | MODE0 */
+				0xdc 0x00	/* lcd_data15.lcd_data15, OUTPUT | MODE0 */
+				0xe0 0x00	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 0x00	/* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
+				0xe8 0x00	/* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
+				0xec 0x00	/* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
+			>;
+		};
+
+		lcd_pins_sleep: lcd_pins_sleep {
+			pinctrl-single,pins = <
+				0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad8.lcd_data16 */
+				0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad9.lcd_data17 */
+				0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad10.lcd_data18 */
+				0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad11.lcd_data19 */
+				0x30 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad12.lcd_data20 */
+				0x34 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad13.lcd_data21 */
+				0x38 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad14.lcd_data22 */
+				0x3c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad15.lcd_data23 */
+				0xa0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data0.lcd_data0 */
+				0xa4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data1.lcd_data1 */
+				0xa8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data2.lcd_data2 */
+				0xac (PULL_DISABLE | MUX_MODE7)		/* lcd_data3.lcd_data3 */
+				0xb0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data4.lcd_data4 */
+				0xb4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data5.lcd_data5 */
+				0xb8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data6.lcd_data6 */
+				0xbc (PULL_DISABLE | MUX_MODE7)		/* lcd_data7.lcd_data7 */
+				0xc0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data8.lcd_data8 */
+				0xc4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data9.lcd_data9 */
+				0xc8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data10.lcd_data10 */
+				0xcc (PULL_DISABLE | MUX_MODE7)		/* lcd_data11.lcd_data11 */
+				0xd0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data12.lcd_data12 */
+				0xd4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data13.lcd_data13 */
+				0xd8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data14.lcd_data14 */
+				0xdc (PULL_DISABLE | MUX_MODE7)		/* lcd_data15.lcd_data15 */
+				0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_hsync.lcd_hsync */
+				0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_pclk.lcd_pclk */
+				0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_ac_bias_en.lcd_ac_bias_en */
+			>;
+		};
+
+
+             /* 	i2c1_pins: pinmux_i2c1_pins { 
+                        pinctrl-single,pins = <
+                                0x158 (PIN_INPUT | MUX_MODE2) */   /* spi0_d1.i2c1_sda */
+                              /*  0x15c (PIN_INPUT | MUX_MODE2) */    /* spi0_cs0.i2c1_scl */
+/*                        >;
+                };
+*/
+              	i2c2_pins: pinmux_i2c2_pins { 
+                        pinctrl-single,pins = <
+                                0x150 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_sclk.i2c2_sda */
+                                0x154 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d0.i2c2_scl */
+                        >;
+                };
+
+
+               spi1_pins: pinmux_spi1_pins {
+                        pinctrl-single,pins = <
+                                0x190 (PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_aclkx.spi1_sclk */
+                                0x194 (PIN_INPUT_PULLUP | MUX_MODE3)  /* mcasp0_fsx.spi1_d0 */
+                                0x198 (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_axr0.spi1_d1 */
+                                0x19c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_ahclrk.spi1_cs0 */
+                                0x164 (PIN_OUTPUT_PULLUP | MUX_MODE2) /* ecap0_in.pwm0_out */
+                        >;
+                };
+
+
+		edt_ft5x06_pins: pinmux_edt_ft5x06_pins{
+                        pinctrl-single,pins = <
+                                0x1ac (PIN_OUTPUT | MUX_MODE7)    /* mcasp0_ahclkx.gpio3.21 RESET TOUCH P9_25*/
+                                0x8c  (PIN_INPUT | MUX_MODE7)    /* gpmc_clk_mux0.gpio2.1  INT TOUCH P8_18 */
+                        >;
+
+		};
+
+
+               uart4_pins_default: pinmux_uart4_pins_default {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLUP | MUX_MODE6)    /* gpmc_wait0.uart4_rxd */
+                                0x074 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* gpmc_wpn.uart4_txd */ 
+				0x078 (PIN_OUTPUT | MUX_MODE7)		/* gpmc_ben1.gpio1.28 */
+                        >;
+                };
+
+
+                uart4_pins_sleep: pinmux_uart4_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                                0x074 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x078 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                        >;
+                };
+
+               uart1_pins_default: pinmux_uart1_pins_default {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_OUTPUT | MUX_MODE0)  	/* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+
+                uart1_pins_sleep: pinmux_uart1_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+		timer7_pins: pinmux_timer7_pins {
+                        pinctrl-single,pins = <
+                               0x094 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_oen_ren.timer7 */
+				>;
+				};
+
+		profibus_pins_default: pinmux_profibus_pins_default {
+                        pinctrl-single,pins = < 
+                        0x158 (PIN_INPUT_PULLUP | MUX_MODE4)    /* spi0_d1.uart0_rxd */
+                        0x15c (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* spi0_cs0.uart0_txd */ 
+			0x1a4 (PIN_OUTPUT | MUX_MODE5)		/* mcasp0_fsr.gpio3.19 */
+                	>;
+                };
+};
+
+&timer7 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&timer7_pins>; 
+	status = "okay";
+};
+
+&i2c0 {
+	hdmi1: hdmi@70 {
+	      compatible = "nxp,tda998x";
+	      reg = <0x70>;
+	};
+};
+
+
+&i2c2 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c2_pins>;
+    status = "okay";
+    clock-frequency = <400000>;
+};
+
+
+&i2c2 {
+        polytouch: edt-ft5x06@38 {
+                compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+                reg = <0x38>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&edt_ft5x06_pins>;
+                interrupt-parent = <&gpio2>;
+                interrupts = <1 0>;
+                reset-gpios = <&gpio3 21 1>;
+        };
+};
+
+
+&spi1 {
+	pinctrl-names = "default";
+        pinctrl-0 = <&spi1_pins>;
+
+	clock-frequency = <1000000>;
+        status = "okay";
+	spi1_0{
+		compatible = "spidev";
+                reg = <0>;
+		spi-max-frequency = <10000000>;
+        };
+
+	spi1_1{
+		compatible = "spidev";
+                reg = <1>;
+		spi-max-frequency = <10000000>;
+        };
+};
+
+
+&lcdc {
+        pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&lcd_pins_default>;
+        pinctrl-1 = <&lcd_pins_sleep>;
+        status = "okay";
+        display-timings {
+                480x272 {
+                        hactive         = <480>;
+                        vactive         = <272>;
+                        hback-porch     = <2>;
+                        hfront-porch    = <2>;
+                        hsync-len       = <41>;
+                        vback-porch     = <2>;
+                        vfront-porch    = <2>;
+                        vsync-len       = <10>;
+                        clock-frequency = <9000000>;
+                        hsync-active    = <0>;
+                        vsync-active    = <0>;
+                        de-active       = <1>;
+                        pixelclk-active = <1>;
+                };
+        };
+};
+
+&tscadc {
+        status = "okay";
+        tsc {
+                ti,wires = <4>;
+                ti,x-plate-resistance = <200>;
+                ti,coordinate-readouts = <5>; 
+                ti,wire-config = <0x00 0x11 0x22 0x33>;
+        };
+};
+
+&uart4 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart4_pins_default>;
+        pinctrl-1 = <&uart4_pins_sleep>;
+
+        status = "okay";
+
+	rts-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	rs485-rts-active-high;
+	rs485-rts-delay = <0 0>;
+	linux,rs485-enabled-at-boot-time;
+	rs485-rx-during-tx;
+};
+
+&uart1 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart1_pins_default>;
+        pinctrl-1 = <&uart1_pins_sleep>;
+
+        status = "okay";
+};
+
+&pruss {
+	pinctrl-names = "default";
+        pinctrl-0 = <&profibus_pins_default>;
+	status = "okay";
+};
+
+/ {
+        pwm7: dmtimer-pwm@7 {
+                compatible = "ti,omap-dmtimer-pwm";
+                ti,timers = <&timer7>;
+                #pwm-cells = <3>;
+        };
+
+        pwm-beeper {
+                compatible = "pwm-beeper";
+                pwms = <&pwm7>;
+        };
+};

+ 315 - 0
board/GfA/Display001/Display001_10.dts

@@ -0,0 +1,315 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-always-on;
+};
+
+&mmc1 {
+	vmmc-supply = <&vmmcsd_fixed>;
+};
+
+&mmc2 {
+	vmmc-supply = <&vmmcsd_fixed>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_pins>;
+	bus-width = <8>;
+	ti,non-removable;
+	status = "okay";
+};
+
+&am33xx_pinmux {
+		lcd_pins_default: lcd_pins_default {
+			pinctrl-single,pins = <
+				0x20 0x01	/* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
+				0x24 0x01	/* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
+				0x28 0x01	/* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
+				0x2c 0x01	/* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
+				0x30 0x01	/* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
+				0x34 0x01	/* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
+				0x38 0x01	/* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
+				0x3c 0x01	/* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
+				0xa0 0x00	/* lcd_data0.lcd_data0, OUTPUT | MODE0 */
+				0xa4 0x00	/* lcd_data1.lcd_data1, OUTPUT | MODE0 */
+				0xa8 0x00	/* lcd_data2.lcd_data2, OUTPUT | MODE0 */
+				0xac 0x00	/* lcd_data3.lcd_data3, OUTPUT | MODE0 */
+				0xb0 0x00	/* lcd_data4.lcd_data4, OUTPUT | MODE0 */
+				0xb4 0x00	/* lcd_data5.lcd_data5, OUTPUT | MODE0 */
+				0xb8 0x00	/* lcd_data6.lcd_data6, OUTPUT | MODE0 */
+				0xbc 0x00	/* lcd_data7.lcd_data7, OUTPUT | MODE0 */
+				0xc0 0x00	/* lcd_data8.lcd_data8, OUTPUT | MODE0 */
+				0xc4 0x00	/* lcd_data9.lcd_data9, OUTPUT | MODE0 */
+				0xc8 0x00	/* lcd_data10.lcd_data10, OUTPUT | MODE0 */
+				0xcc 0x00	/* lcd_data11.lcd_data11, OUTPUT | MODE0 */
+				0xd0 0x00	/* lcd_data12.lcd_data12, OUTPUT | MODE0 */
+				0xd4 0x00	/* lcd_data13.lcd_data13, OUTPUT | MODE0 */
+				0xd8 0x00	/* lcd_data14.lcd_data14, OUTPUT | MODE0 */
+				0xdc 0x00	/* lcd_data15.lcd_data15, OUTPUT | MODE0 */
+				0xe0 0x00	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 0x00	/* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
+				0xe8 0x00	/* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
+				0xec 0x00	/* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
+			>;
+		};
+
+		lcd_pins_sleep: lcd_pins_sleep {
+			pinctrl-single,pins = <
+				0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad8.lcd_data16 */
+				0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad9.lcd_data17 */
+				0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad10.lcd_data18 */
+				0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad11.lcd_data19 */
+				0x30 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad12.lcd_data20 */
+				0x34 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad13.lcd_data21 */
+				0x38 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad14.lcd_data22 */
+				0x3c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad15.lcd_data23 */
+				0xa0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data0.lcd_data0 */
+				0xa4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data1.lcd_data1 */
+				0xa8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data2.lcd_data2 */
+				0xac (PULL_DISABLE | MUX_MODE7)		/* lcd_data3.lcd_data3 */
+				0xb0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data4.lcd_data4 */
+				0xb4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data5.lcd_data5 */
+				0xb8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data6.lcd_data6 */
+				0xbc (PULL_DISABLE | MUX_MODE7)		/* lcd_data7.lcd_data7 */
+				0xc0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data8.lcd_data8 */
+				0xc4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data9.lcd_data9 */
+				0xc8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data10.lcd_data10 */
+				0xcc (PULL_DISABLE | MUX_MODE7)		/* lcd_data11.lcd_data11 */
+				0xd0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data12.lcd_data12 */
+				0xd4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data13.lcd_data13 */
+				0xd8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data14.lcd_data14 */
+				0xdc (PULL_DISABLE | MUX_MODE7)		/* lcd_data15.lcd_data15 */
+				0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_hsync.lcd_hsync */
+				0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_pclk.lcd_pclk */
+				0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_ac_bias_en.lcd_ac_bias_en */
+			>;
+		};
+
+
+             /* 	i2c1_pins: pinmux_i2c1_pins { 
+                        pinctrl-single,pins = <
+                                0x158 (PIN_INPUT | MUX_MODE2) */   /* spi0_d1.i2c1_sda */
+                              /*  0x15c (PIN_INPUT | MUX_MODE2) */    /* spi0_cs0.i2c1_scl */
+/*                        >;
+                };
+*/
+              	i2c2_pins: pinmux_i2c2_pins { 
+                        pinctrl-single,pins = <
+                                0x150 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_sclk.i2c2_sda */
+                                0x154 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d0.i2c2_scl */
+                        >;
+                };
+
+
+               spi1_pins: pinmux_spi1_pins {
+                        pinctrl-single,pins = <
+                                0x190 (PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_aclkx.spi1_sclk */
+                                0x194 (PIN_INPUT_PULLUP | MUX_MODE3)  /* mcasp0_fsx.spi1_d0 */
+                                0x198 (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_axr0.spi1_d1 */
+                                0x19c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_ahclrk.spi1_cs0 */
+                                0x164 (PIN_OUTPUT_PULLUP | MUX_MODE2) /* ecap0_in.pwm0_out */
+                        >;
+                };
+
+
+		edt_ft5x06_pins: pinmux_edt_ft5x06_pins{
+                        pinctrl-single,pins = <
+                                0x1ac (PIN_OUTPUT | MUX_MODE7)    /* mcasp0_ahclkx.gpio3.21 RESET TOUCH P9_25*/
+                                0x8c  (PIN_INPUT | MUX_MODE7)    /* gpmc_clk_mux0.gpio2.1  INT TOUCH P8_18 */
+                        >;
+
+		};
+
+
+               uart4_pins_default: pinmux_uart4_pins_default {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLUP | MUX_MODE6)    /* gpmc_wait0.uart4_rxd */
+                                0x074 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* gpmc_wpn.uart4_txd */ 
+				0x078 (PIN_OUTPUT | MUX_MODE7)		/* gpmc_ben1.gpio1.28 */
+                        >;
+                };
+
+
+                uart4_pins_sleep: pinmux_uart4_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                                0x074 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x078 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                        >;
+                };
+
+               uart1_pins_default: pinmux_uart1_pins_default {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_OUTPUT | MUX_MODE0)  	/* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+
+                uart1_pins_sleep: pinmux_uart1_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+		timer7_pins: pinmux_timer7_pins {
+                        pinctrl-single,pins = <
+                               0x094 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_oen_ren.timer7 */
+				>;
+				};
+
+		profibus_pins_default: pinmux_profibus_pins_default {
+                        pinctrl-single,pins = < 
+                        0x158 (PIN_INPUT_PULLUP | MUX_MODE4)    /* spi0_d1.uart0_rxd */
+                        0x15c (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* spi0_cs0.uart0_txd */ 
+			0x1a4 (PIN_OUTPUT | MUX_MODE5)		/* mcasp0_fsr.gpio3.19 */
+                	>;
+                };
+};
+
+&timer7 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&timer7_pins>; 
+	status = "okay";
+};
+
+&i2c0 {
+	hdmi1: hdmi@70 {
+	      compatible = "nxp,tda998x";
+	      reg = <0x70>;
+	};
+};
+
+
+&i2c2 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c2_pins>;
+    status = "okay";
+    clock-frequency = <400000>;
+};
+
+
+&i2c2 {
+        egalax_ts@2A {
+                compatible = "eeti,egalax_i2c";
+                reg = <0x2A>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&edt_ft5x06_pins>;
+                interrupt-parent = <&gpio2>;
+                interrupts = <1 8>;
+                int-gpios = <&gpio2 1 0>;
+		linux,wakeup;
+        };
+};
+
+
+&spi1 {
+	pinctrl-names = "default";
+        pinctrl-0 = <&spi1_pins>;
+
+	clock-frequency = <1000000>;
+        status = "okay";
+	spi1_0{
+		compatible = "spidev";
+                reg = <0>;
+		spi-max-frequency = <10000000>;
+        };
+
+	spi1_1{
+		compatible = "spidev";
+                reg = <1>;
+		spi-max-frequency = <10000000>;
+        };
+};
+
+
+&lcdc {
+        pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&lcd_pins_default>;
+        pinctrl-1 = <&lcd_pins_sleep>;
+        status = "okay";
+	display-timings {
+		800x480 {
+			hactive         = <1280>;
+			vactive         = <800>;
+			hback-porch     = <50>;
+			hfront-porch    = <60>;
+			hsync-len       = <50>;
+			vback-porch     = <10>;
+			vfront-porch    = <8>;
+			vsync-len       = <5>;
+			clock-frequency = <72000000>;
+			hsync-active    = <0>;
+			vsync-active    = <0>;
+			de-active	= <1>;
+			pixelclk-active = <0>;
+		};
+	};
+};
+
+&tscadc {
+        status = "okay";
+        tsc {
+                ti,wires = <4>;
+                ti,x-plate-resistance = <200>;
+                ti,coordinate-readouts = <5>; 
+                ti,wire-config = <0x00 0x11 0x22 0x33>;
+        };
+};
+
+&uart4 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart4_pins_default>;
+        pinctrl-1 = <&uart4_pins_sleep>;
+
+        status = "okay";
+
+	rts-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	rs485-rts-active-high;
+	rs485-rts-delay = <0 0>;
+	linux,rs485-enabled-at-boot-time;
+	rs485-rx-during-tx;
+};
+
+&uart1 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart1_pins_default>;
+        pinctrl-1 = <&uart1_pins_sleep>;
+
+        status = "okay";
+};
+
+&pruss {
+	pinctrl-names = "default";
+        pinctrl-0 = <&profibus_pins_default>;
+	status = "okay";
+};
+
+/ {
+        pwm7: dmtimer-pwm@7 {
+                compatible = "ti,omap-dmtimer-pwm";
+                ti,timers = <&timer7>;
+                #pwm-cells = <3>;
+        };
+
+        pwm-beeper {
+                compatible = "pwm-beeper";
+                pwms = <&pwm7>;
+        };
+};

+ 314 - 0
board/GfA/Display001/Display001_4.dts

@@ -0,0 +1,314 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-always-on;
+};
+
+&mmc1 {
+	vmmc-supply = <&vmmcsd_fixed>;
+};
+
+&mmc2 {
+	vmmc-supply = <&vmmcsd_fixed>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_pins>;
+	bus-width = <8>;
+	ti,non-removable;
+	status = "okay";
+};
+
+&am33xx_pinmux {
+		lcd_pins_default: lcd_pins_default {
+			pinctrl-single,pins = <
+				0x20 0x01	/* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
+				0x24 0x01	/* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
+				0x28 0x01	/* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
+				0x2c 0x01	/* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
+				0x30 0x01	/* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
+				0x34 0x01	/* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
+				0x38 0x01	/* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
+				0x3c 0x01	/* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
+				0xa0 0x00	/* lcd_data0.lcd_data0, OUTPUT | MODE0 */
+				0xa4 0x00	/* lcd_data1.lcd_data1, OUTPUT | MODE0 */
+				0xa8 0x00	/* lcd_data2.lcd_data2, OUTPUT | MODE0 */
+				0xac 0x00	/* lcd_data3.lcd_data3, OUTPUT | MODE0 */
+				0xb0 0x00	/* lcd_data4.lcd_data4, OUTPUT | MODE0 */
+				0xb4 0x00	/* lcd_data5.lcd_data5, OUTPUT | MODE0 */
+				0xb8 0x00	/* lcd_data6.lcd_data6, OUTPUT | MODE0 */
+				0xbc 0x00	/* lcd_data7.lcd_data7, OUTPUT | MODE0 */
+				0xc0 0x00	/* lcd_data8.lcd_data8, OUTPUT | MODE0 */
+				0xc4 0x00	/* lcd_data9.lcd_data9, OUTPUT | MODE0 */
+				0xc8 0x00	/* lcd_data10.lcd_data10, OUTPUT | MODE0 */
+				0xcc 0x00	/* lcd_data11.lcd_data11, OUTPUT | MODE0 */
+				0xd0 0x00	/* lcd_data12.lcd_data12, OUTPUT | MODE0 */
+				0xd4 0x00	/* lcd_data13.lcd_data13, OUTPUT | MODE0 */
+				0xd8 0x00	/* lcd_data14.lcd_data14, OUTPUT | MODE0 */
+				0xdc 0x00	/* lcd_data15.lcd_data15, OUTPUT | MODE0 */
+				0xe0 0x00	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 0x00	/* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
+				0xe8 0x00	/* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
+				0xec 0x00	/* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
+			>;
+		};
+
+		lcd_pins_sleep: lcd_pins_sleep {
+			pinctrl-single,pins = <
+				0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad8.lcd_data16 */
+				0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad9.lcd_data17 */
+				0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad10.lcd_data18 */
+				0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad11.lcd_data19 */
+				0x30 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad12.lcd_data20 */
+				0x34 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad13.lcd_data21 */
+				0x38 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad14.lcd_data22 */
+				0x3c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad15.lcd_data23 */
+				0xa0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data0.lcd_data0 */
+				0xa4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data1.lcd_data1 */
+				0xa8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data2.lcd_data2 */
+				0xac (PULL_DISABLE | MUX_MODE7)		/* lcd_data3.lcd_data3 */
+				0xb0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data4.lcd_data4 */
+				0xb4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data5.lcd_data5 */
+				0xb8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data6.lcd_data6 */
+				0xbc (PULL_DISABLE | MUX_MODE7)		/* lcd_data7.lcd_data7 */
+				0xc0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data8.lcd_data8 */
+				0xc4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data9.lcd_data9 */
+				0xc8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data10.lcd_data10 */
+				0xcc (PULL_DISABLE | MUX_MODE7)		/* lcd_data11.lcd_data11 */
+				0xd0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data12.lcd_data12 */
+				0xd4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data13.lcd_data13 */
+				0xd8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data14.lcd_data14 */
+				0xdc (PULL_DISABLE | MUX_MODE7)		/* lcd_data15.lcd_data15 */
+				0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_hsync.lcd_hsync */
+				0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_pclk.lcd_pclk */
+				0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_ac_bias_en.lcd_ac_bias_en */
+			>;
+		};
+
+
+             /* 	i2c1_pins: pinmux_i2c1_pins { 
+                        pinctrl-single,pins = <
+                                0x158 (PIN_INPUT | MUX_MODE2) */   /* spi0_d1.i2c1_sda */
+                              /*  0x15c (PIN_INPUT | MUX_MODE2) */    /* spi0_cs0.i2c1_scl */
+/*                        >;
+                };
+*/
+              	i2c2_pins: pinmux_i2c2_pins { 
+                        pinctrl-single,pins = <
+                                0x150 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_sclk.i2c2_sda */
+                                0x154 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d0.i2c2_scl */
+                        >;
+                };
+
+
+               spi1_pins: pinmux_spi1_pins {
+                        pinctrl-single,pins = <
+                                0x190 (PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_aclkx.spi1_sclk */
+                                0x194 (PIN_INPUT_PULLUP | MUX_MODE3)  /* mcasp0_fsx.spi1_d0 */
+                                0x198 (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_axr0.spi1_d1 */
+                                0x19c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_ahclrk.spi1_cs0 */
+                                0x164 (PIN_OUTPUT_PULLUP | MUX_MODE2) /* ecap0_in.pwm0_out */
+                        >;
+                };
+
+
+		edt_ft5x06_pins: pinmux_edt_ft5x06_pins{
+                        pinctrl-single,pins = <
+                                0x1ac (PIN_OUTPUT | MUX_MODE7)    /* mcasp0_ahclkx.gpio3.21 RESET TOUCH P9_25*/
+                                0x8c  (PIN_INPUT | MUX_MODE7)    /* gpmc_clk_mux0.gpio2.1  INT TOUCH P8_18 */
+                        >;
+
+		};
+
+
+               uart4_pins_default: pinmux_uart4_pins_default {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLUP | MUX_MODE6)    /* gpmc_wait0.uart4_rxd */
+                                0x074 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* gpmc_wpn.uart4_txd */ 
+				0x078 (PIN_OUTPUT | MUX_MODE7)		/* gpmc_ben1.gpio1.28 */
+                        >;
+                };
+
+
+                uart4_pins_sleep: pinmux_uart4_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                                0x074 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x078 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                        >;
+                };
+
+               uart1_pins_default: pinmux_uart1_pins_default {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_OUTPUT | MUX_MODE0)  	/* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+
+                uart1_pins_sleep: pinmux_uart1_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+		timer7_pins: pinmux_timer7_pins {
+                        pinctrl-single,pins = <
+                               0x094 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_oen_ren.timer7 */
+				>;
+				};
+
+		profibus_pins_default: pinmux_profibus_pins_default {
+                        pinctrl-single,pins = < 
+                        0x158 (PIN_INPUT_PULLUP | MUX_MODE4)    /* spi0_d1.uart0_rxd */
+                        0x15c (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* spi0_cs0.uart0_txd */ 
+			0x1a4 (PIN_OUTPUT | MUX_MODE5)		/* mcasp0_fsr.gpio3.19 */
+                	>;
+                };
+};
+
+&timer7 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&timer7_pins>; 
+	status = "okay";
+};
+
+&i2c0 {
+	hdmi1: hdmi@70 {
+	      compatible = "nxp,tda998x";
+	      reg = <0x70>;
+	};
+};
+
+
+&i2c2 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c2_pins>;
+    status = "okay";
+    clock-frequency = <400000>;
+};
+
+
+&i2c2 {
+        polytouch: edt-ft5x06@38 {
+                compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+                reg = <0x38>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&edt_ft5x06_pins>;
+                interrupt-parent = <&gpio2>;
+                interrupts = <1 0>;
+                reset-gpios = <&gpio3 21 1>;
+        };
+};
+
+
+&spi1 {
+	pinctrl-names = "default";
+        pinctrl-0 = <&spi1_pins>;
+
+	clock-frequency = <1000000>;
+        status = "okay";
+	spi1_0{
+		compatible = "spidev";
+                reg = <0>;
+		spi-max-frequency = <10000000>;
+        };
+
+	spi1_1{
+		compatible = "spidev";
+                reg = <1>;
+		spi-max-frequency = <10000000>;
+        };
+};
+
+
+&lcdc {
+        pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&lcd_pins_default>;
+        pinctrl-1 = <&lcd_pins_sleep>;
+        status = "okay";
+        display-timings {
+                480x272 {
+                        hactive         = <480>;
+                        vactive         = <272>;
+                        hback-porch     = <2>;
+                        hfront-porch    = <2>;
+                        hsync-len       = <41>;
+                        vback-porch     = <2>;
+                        vfront-porch    = <2>;
+                        vsync-len       = <10>;
+                        clock-frequency = <9000000>;
+                        hsync-active    = <0>;
+                        vsync-active    = <0>;
+                        de-active       = <1>;
+                        pixelclk-active = <1>;
+                };
+        };
+};
+
+&tscadc {
+        status = "okay";
+        tsc {
+                ti,wires = <4>;
+                ti,x-plate-resistance = <200>;
+                ti,coordinate-readouts = <5>; 
+                ti,wire-config = <0x00 0x11 0x22 0x33>;
+        };
+};
+
+&uart4 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart4_pins_default>;
+        pinctrl-1 = <&uart4_pins_sleep>;
+
+        status = "okay";
+
+	rts-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	rs485-rts-active-high;
+	rs485-rts-delay = <0 0>;
+	linux,rs485-enabled-at-boot-time;
+	rs485-rx-during-tx;
+};
+
+&uart1 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart1_pins_default>;
+        pinctrl-1 = <&uart1_pins_sleep>;
+
+        status = "okay";
+};
+
+&pruss {
+	pinctrl-names = "default";
+        pinctrl-0 = <&profibus_pins_default>;
+	status = "okay";
+};
+
+/ {
+        pwm7: dmtimer-pwm@7 {
+                compatible = "ti,omap-dmtimer-pwm";
+                ti,timers = <&timer7>;
+                #pwm-cells = <3>;
+        };
+
+        pwm-beeper {
+                compatible = "pwm-beeper";
+                pwms = <&pwm7>;
+        };
+};

+ 348 - 0
board/GfA/Display001/Display001_7.dts

@@ -0,0 +1,348 @@
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-bone-common.dtsi"
+
+&ldo3_reg {
+	regulator-min-microvolt = <1800000>;
+	regulator-max-microvolt = <1800000>;
+	regulator-always-on;
+};
+
+&mmc1 {
+	vmmc-supply = <&vmmcsd_fixed>;
+};
+
+&mmc2 {
+	vmmc-supply = <&vmmcsd_fixed>;
+	pinctrl-names = "default";
+	pinctrl-0 = <&emmc_pins>;
+	bus-width = <8>;
+	ti,non-removable;
+	status = "okay";
+};
+
+&am33xx_pinmux {
+		lcd_pins_default: lcd_pins_default {
+			pinctrl-single,pins = <
+				0x20 0x01	/* gpmc_ad8.lcd_data16, OUTPUT | MODE1 */
+				0x24 0x01	/* gpmc_ad9.lcd_data17, OUTPUT | MODE1 */
+				0x28 0x01	/* gpmc_ad10.lcd_data18, OUTPUT | MODE1 */
+				0x2c 0x01	/* gpmc_ad11.lcd_data19, OUTPUT | MODE1 */
+				0x30 0x01	/* gpmc_ad12.lcd_data20, OUTPUT | MODE1 */
+				0x34 0x01	/* gpmc_ad13.lcd_data21, OUTPUT | MODE1 */
+				0x38 0x01	/* gpmc_ad14.lcd_data22, OUTPUT | MODE1 */
+				0x3c 0x01	/* gpmc_ad15.lcd_data23, OUTPUT | MODE1 */
+				0xa0 0x00	/* lcd_data0.lcd_data0, OUTPUT | MODE0 */
+				0xa4 0x00	/* lcd_data1.lcd_data1, OUTPUT | MODE0 */
+				0xa8 0x00	/* lcd_data2.lcd_data2, OUTPUT | MODE0 */
+				0xac 0x00	/* lcd_data3.lcd_data3, OUTPUT | MODE0 */
+				0xb0 0x00	/* lcd_data4.lcd_data4, OUTPUT | MODE0 */
+				0xb4 0x00	/* lcd_data5.lcd_data5, OUTPUT | MODE0 */
+				0xb8 0x00	/* lcd_data6.lcd_data6, OUTPUT | MODE0 */
+				0xbc 0x00	/* lcd_data7.lcd_data7, OUTPUT | MODE0 */
+				0xc0 0x00	/* lcd_data8.lcd_data8, OUTPUT | MODE0 */
+				0xc4 0x00	/* lcd_data9.lcd_data9, OUTPUT | MODE0 */
+				0xc8 0x00	/* lcd_data10.lcd_data10, OUTPUT | MODE0 */
+				0xcc 0x00	/* lcd_data11.lcd_data11, OUTPUT | MODE0 */
+				0xd0 0x00	/* lcd_data12.lcd_data12, OUTPUT | MODE0 */
+				0xd4 0x00	/* lcd_data13.lcd_data13, OUTPUT | MODE0 */
+				0xd8 0x00	/* lcd_data14.lcd_data14, OUTPUT | MODE0 */
+				0xdc 0x00	/* lcd_data15.lcd_data15, OUTPUT | MODE0 */
+				0xe0 0x00	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 0x00	/* lcd_hsync.lcd_hsync, OUTPUT | MODE0 */
+				0xe8 0x00	/* lcd_pclk.lcd_pclk, OUTPUT | MODE0 */
+				0xec 0x00	/* lcd_ac_bias_en.lcd_ac_bias_en, OUTPUT | MODE0 */
+			>;
+		};
+
+		lcd_pins_sleep: lcd_pins_sleep {
+			pinctrl-single,pins = <
+				0x20 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad8.lcd_data16 */
+				0x24 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad9.lcd_data17 */
+				0x28 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad10.lcd_data18 */
+				0x2c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad11.lcd_data19 */
+				0x30 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad12.lcd_data20 */
+				0x34 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad13.lcd_data21 */
+				0x38 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad14.lcd_data22 */
+				0x3c (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* gpmc_ad15.lcd_data23 */
+				0xa0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data0.lcd_data0 */
+				0xa4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data1.lcd_data1 */
+				0xa8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data2.lcd_data2 */
+				0xac (PULL_DISABLE | MUX_MODE7)		/* lcd_data3.lcd_data3 */
+				0xb0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data4.lcd_data4 */
+				0xb4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data5.lcd_data5 */
+				0xb8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data6.lcd_data6 */
+				0xbc (PULL_DISABLE | MUX_MODE7)		/* lcd_data7.lcd_data7 */
+				0xc0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data8.lcd_data8 */
+				0xc4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data9.lcd_data9 */
+				0xc8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data10.lcd_data10 */
+				0xcc (PULL_DISABLE | MUX_MODE7)		/* lcd_data11.lcd_data11 */
+				0xd0 (PULL_DISABLE | MUX_MODE7)		/* lcd_data12.lcd_data12 */
+				0xd4 (PULL_DISABLE | MUX_MODE7)		/* lcd_data13.lcd_data13 */
+				0xd8 (PULL_DISABLE | MUX_MODE7)		/* lcd_data14.lcd_data14 */
+				0xdc (PULL_DISABLE | MUX_MODE7)		/* lcd_data15.lcd_data15 */
+				0xe0 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_vsync.lcd_vsync, OUTPUT | MODE0 */
+				0xe4 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_hsync.lcd_hsync */
+				0xe8 (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_pclk.lcd_pclk */
+				0xec (PIN_INPUT_PULLDOWN | MUX_MODE7)	/* lcd_ac_bias_en.lcd_ac_bias_en */
+			>;
+		};
+
+
+             /* 	i2c1_pins: pinmux_i2c1_pins { 
+                        pinctrl-single,pins = <
+                                0x158 (PIN_INPUT | MUX_MODE2) */   /* spi0_d1.i2c1_sda */
+                              /*  0x15c (PIN_INPUT | MUX_MODE2) */    /* spi0_cs0.i2c1_scl */
+/*                        >;
+                };
+*/
+              	i2c2_pins: pinmux_i2c2_pins { 
+                        pinctrl-single,pins = <
+                                0x150 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_sclk.i2c2_sda */
+                                0x154 (PIN_INPUT_PULLUP | MUX_MODE2)    /* spi0_d0.i2c2_scl */
+                        >;
+                };
+
+                i2c_gpio_pins: pinmux_i2c_gpio_pins {
+                        pinctrl-single,pins = <
+                                0x150 (PIN_INPUT | MUX_MODE7)    /* spi0_sclk.i2c2_sda */
+                                0x154 (PIN_INPUT | MUX_MODE7)    /* spi0_d0.i2c2_scl */
+                        >;
+                };
+
+               spi1_pins: pinmux_spi1_pins {
+                        pinctrl-single,pins = <
+                                0x190 (PIN_INPUT_PULLUP | MUX_MODE3) /* mcasp0_aclkx.spi1_sclk */
+                                0x194 (PIN_INPUT_PULLUP | MUX_MODE3)  /* mcasp0_fsx.spi1_d0 */
+                                0x198 (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_axr0.spi1_d1 */
+                                0x19c (PIN_OUTPUT_PULLUP | MUX_MODE3) /* mcasp0_ahclrk.spi1_cs0 */
+                                0x164 (PIN_OUTPUT_PULLUP | MUX_MODE2) /* ecap0_in.pwm0_out */
+                        >;
+                };
+
+
+		edt_ft5x06_pins: pinmux_edt_ft5x06_pins{
+                        pinctrl-single,pins = <
+                                0x1ac (PIN_OUTPUT | MUX_MODE7)    /* mcasp0_ahclkx.gpio3.21 RESET TOUCH P9_25*/
+                                0x8c  (PIN_INPUT | MUX_MODE7)    /* gpmc_clk_mux0.gpio2.1  INT TOUCH P8_18 */
+                        >;
+
+		};
+
+
+               uart4_pins_default: pinmux_uart4_pins_default {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLUP | MUX_MODE6)    /* gpmc_wait0.uart4_rxd */
+                                0x074 (PIN_OUTPUT_PULLDOWN | MUX_MODE6) /* gpmc_wpn.uart4_txd */ 
+				0x078 (PIN_OUTPUT | MUX_MODE7)		/* gpmc_ben1.gpio1.28 */
+                        >;
+                };
+
+
+                uart4_pins_sleep: pinmux_uart4_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x070 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                                0x074 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+				0x078 (PIN_INPUT_PULLDOWN | MUX_MODE7)
+                        >;
+                };
+
+               uart1_pins_default: pinmux_uart1_pins_default {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLUP | MUX_MODE0)    /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_OUTPUT_PULLDOWN | MUX_MODE0) /* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLUP | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_OUTPUT | MUX_MODE0)  	/* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+
+                uart1_pins_sleep: pinmux_uart1_pins_sleep {
+                        pinctrl-single,pins = <
+                                0x180 (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* uart1_rxd.uart1_rxd */
+                                0x184 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* uart1_txd.uart1_txd */ 
+				0x178 (PIN_INPUT_PULLDOWN | MUX_MODE0)	/* i2c2_sda.uart1_ctsn */
+                                0x17c (PIN_INPUT_PULLDOWN | MUX_MODE0)  /* i2c2_scl.uart1_rtsn */
+                        >;
+                };
+
+		timer7_pins: pinmux_timer7_pins {
+                        pinctrl-single,pins = <
+                               0x094 (PIN_OUTPUT_PULLDOWN | MUX_MODE2)  /* gpmc_oen_ren.timer7 */
+				>;
+				};
+
+		profibus_pins_default: pinmux_profibus_pins_default {
+                        pinctrl-single,pins = < 
+                        0x158 (PIN_INPUT_PULLUP | MUX_MODE4)    /* spi0_d1.uart0_rxd */
+                        0x15c (PIN_OUTPUT_PULLDOWN | MUX_MODE4) /* spi0_cs0.uart0_txd */ 
+			0x1a4 (PIN_OUTPUT | MUX_MODE5)		/* mcasp0_fsr.gpio3.19 */
+                	>;
+                };
+};
+
+&timer7 {
+	pinctrl-names = "default";
+	pinctrl-0 = <&timer7_pins>; 
+	status = "okay";
+};
+
+&i2c0 {
+	hdmi1: hdmi@70 {
+	      compatible = "nxp,tda998x";
+	      reg = <0x70>;
+	};
+};
+
+/*
+&i2c2 {
+    pinctrl-names = "default";
+    pinctrl-0 = <&i2c2_pins>;
+    status = "okay";
+    clock-frequency = <400000>;
+};
+
+
+&i2c2 {
+        polytouch: edt-ft5x06@38 {
+                compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+                reg = <0x38>;
+                pinctrl-names = "default";
+                pinctrl-0 = <&edt_ft5x06_pins>;
+                interrupt-parent = <&gpio2>;
+                interrupts = <1 0>;
+                reset-gpios = <&gpio3 21 1>;
+        };
+};
+*/
+
+/ {
+i2c@3 {
+        compatible = "i2c-gpio";
+        pinctrl-names = "default";
+        pinctrl-0 = <&i2c_gpio_pins>;
+        status = "okay";
+
+        gpios = <&gpio0 2 0 /* sda */
+                 &gpio0 3 0 /* scl */
+                >;
+        /*i2c-gpio,sda-open-drain;
+        i2c-gpio,scl-open-drain;*/ 
+        i2c-gpio,delay-us = <1>;        /* ~100 kHz */
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        polytouch: edt-ft5x06@38 {
+                        compatible = "edt,edt-ft5406", "edt,edt-ft5x06";
+                        reg = <0x38>;
+                        pinctrl-names = "default";
+                        pinctrl-0 = <&edt_ft5x06_pins>;
+                        interrupt-parent = <&gpio2>;
+                        interrupts = <1 0>;
+                        reset-gpios = <&gpio3 21 1>;
+                };
+        };
+};
+
+&spi1 {
+	pinctrl-names = "default";
+        pinctrl-0 = <&spi1_pins>;
+
+	clock-frequency = <1000000>;
+        status = "okay";
+	spi1_0{
+		compatible = "spidev";
+                reg = <0>;
+		spi-max-frequency = <10000000>;
+        };
+
+	spi1_1{
+		compatible = "spidev";
+                reg = <1>;
+		spi-max-frequency = <10000000>;
+        };
+};
+
+
+&lcdc {
+	pinctrl-names = "default", "sleep";
+	pinctrl-0 = <&lcd_pins_default>;
+	pinctrl-1 = <&lcd_pins_sleep>;
+	status = "okay";
+	display-timings {
+		800x480 {
+			hactive         = <800>;
+			vactive         = <480>;
+			hback-porch     = <88>;
+			hfront-porch    = <40>;
+			hsync-len       = <128>;
+			vback-porch     = <33>;
+			vfront-porch    = <10>;
+			vsync-len       = <2>;
+			clock-frequency = <33000000>;
+			hsync-active    = <0>;
+			vsync-active    = <0>;
+			de-active	= <1>;
+			pixelclk-active = <0>;
+		};
+	};
+};
+
+&tscadc {
+        status = "okay";
+        tsc {
+                ti,wires = <4>;
+                ti,x-plate-resistance = <200>;
+                ti,coordinate-readouts = <5>; 
+                ti,wire-config = <0x00 0x11 0x22 0x33>;
+        };
+};
+
+&uart4 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart4_pins_default>;
+        pinctrl-1 = <&uart4_pins_sleep>;
+
+        status = "okay";
+
+	rts-gpio = <&gpio1 28 GPIO_ACTIVE_HIGH>;
+	rs485-rts-active-high;
+	rs485-rts-delay = <0 0>;
+	linux,rs485-enabled-at-boot-time;
+	rs485-rx-during-tx;
+};
+
+&uart1 {
+	pinctrl-names = "default", "sleep";
+        pinctrl-0 = <&uart1_pins_default>;
+        pinctrl-1 = <&uart1_pins_sleep>;
+
+        status = "okay";
+};
+
+&pruss {
+	pinctrl-names = "default";
+        pinctrl-0 = <&profibus_pins_default>;
+	status = "okay";
+};
+
+/ {
+        pwm7: dmtimer-pwm@7 {
+                compatible = "ti,omap-dmtimer-pwm";
+                ti,timers = <&timer7>;
+                #pwm-cells = <3>;
+        };
+
+        pwm-beeper {
+                compatible = "pwm-beeper";
+                pwms = <&pwm7>;
+        };
+};

+ 3346 - 0
board/GfA/Display001/Display001_defconfig

@@ -0,0 +1,3346 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 3.12.10 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_ARCH_HAS_BANDGAP=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+# CONFIG_FHANDLE is not set
+# CONFIG_AUDIT is not set
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_PREEMPT_RCU=y
+CONFIG_PREEMPT_RCU=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_BOOST is not set
+# CONFIG_RCU_NOCB_CPU is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_GENERIC_SCHED_CLOCK=y
+# CONFIG_CGROUPS is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+# CONFIG_JUMP_LABEL is not set
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+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_MODULE_SIG is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_MULTIPLATFORM 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_CLPS711X is not set
+# CONFIG_ARCH_GEMINI 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_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C24XX is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2PLUS=y
+
+#
+# Multiple platform selection
+#
+
+#
+# CPU Core family selection
+#
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_BCM is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MXC is not set
+
+#
+# TI OMAP Common Features
+#
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+CONFIG_OMAP_MUX_DEBUG=y
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
+CONFIG_OMAP_DM_TIMER=y
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_MACH_OMAP_GENERIC=y
+CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+# CONFIG_SOC_OMAP5 is not set
+CONFIG_SOC_AM33XX=y
+CONFIG_SOC_AM43XX=y
+
+#
+# TI OMAP2/3/4 Specific Features
+#
+# CONFIG_ARCH_OMAP2PLUS_TYPICAL is not set
+CONFIG_SOC_HAS_OMAP2_SDRC=y
+# CONFIG_SOC_DRA7XX is not set
+CONFIG_SOC_OMAP3430=y
+# CONFIG_SOC_TI81XX is not set
+CONFIG_OMAP_PACKAGE_CBB=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_DEVKIT8000 is not set
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP3530_LV_SOM is not set
+# CONFIG_MACH_OMAP3_TORPEDO is not set
+# CONFIG_MACH_OVERO is not set
+# CONFIG_MACH_OMAP3EVM is not set
+CONFIG_MACH_OMAP3517EVM=y
+# CONFIG_MACH_CRANEBOARD is not set
+# CONFIG_MACH_OMAP3_PANDORA is not set
+# CONFIG_MACH_TOUCHBOOK is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_NOKIA_RM680 is not set
+# CONFIG_MACH_NOKIA_RX51 is not set
+# CONFIG_MACH_OMAP_ZOOM2 is not set
+# CONFIG_MACH_OMAP_ZOOM3 is not set
+# CONFIG_MACH_CM_T35 is not set
+# CONFIG_MACH_CM_T3517 is not set
+# CONFIG_MACH_IGEP0020 is not set
+# CONFIG_MACH_IGEP0030 is not set
+# CONFIG_MACH_SBC3530 is not set
+# CONFIG_MACH_OMAP_3630SDP is not set
+# CONFIG_OMAP3_EMU is not set
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+# CONFIG_OMAP4_ERRATA_I688 is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_SHMOBILE_MULTI is not set
+# CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_VIRT is not set
+# CONFIG_ARCH_WM8850 is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=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_LPAE is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+CONFIG_ARM_VIRT_EXT=y
+# CONFIG_SWP_EMULATE is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_KUSER_HELPERS=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CACHE_PL310=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_NR_BANKS=8
+CONFIG_MULTI_IRQ_HANDLER=y
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_PL310_ERRATA_727915=y
+# CONFIG_ARM_ERRATA_743622 is not set
+# CONFIG_ARM_ERRATA_751472 is not set
+# CONFIG_PL310_ERRATA_753970 is not set
+CONFIG_ARM_ERRATA_754322=y
+# CONFIG_PL310_ERRATA_769419 is not set
+CONFIG_ARM_ERRATA_775420=y
+# CONFIG_ARM_ERRATA_773022 is not set
+CONFIG_TI_PRIV_EDMA=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_HAVE_SMP=y
+# CONFIG_SMP is not set
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_ARM_PSCI is not set
+CONFIG_ARCH_NR_GPIO=192
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=999999
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_BOUNCE=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_ZBUD is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+# CONFIG_SECCOMP is not set
+# CONFIG_CC_STACKPROTECTOR is not set
+# CONFIG_XEN is not set
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_ARM_APPENDED_DTB is not set
+CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO0,115200"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+# CONFIG_CRASH_DUMP is not set
+CONFIG_AUTO_ZRELADDR=y
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_GENERIC_CPUFREQ_CPU0=y
+
+#
+# ARM CPU frequency scaling drivers
+#
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
+
+#
+# CPU Idle
+#
+# CONFIG_CPU_IDLE is not set
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED 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
+# CONFIG_KERNEL_MODE_NEON is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_PM_SLEEP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM_RUNTIME=y
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_SLEEP_DEBUG=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_HAS_OPP=y
+CONFIG_PM_OPP=y
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+# CONFIG_UNIX_DIAG is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_MIGRATE=y
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_ROUTE_CLASSID=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_DEMUX is not set
+# CONFIG_NET_IP_TUNNEL is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_IPVTI is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_UDP_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_BROADCAST=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+# CONFIG_NF_CT_NETLINK_HELPER is not set
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NETFILTER_XTABLES=y
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_CONNMARK=m
+# CONFIG_NETFILTER_XT_SET is not set
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_CT is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_IPTABLES=y
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+# CONFIG_IP_NF_MATCH_RPFILTER is not set
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=y
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# 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_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_MMAP is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_NET_MPLS_GSO is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+# CONFIG_BPF_JIT is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_TCPPROBE is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+CONFIG_CFG80211_DEBUGFS=y
+# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_WEXT=y
+CONFIG_LIB80211=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
+CONFIG_MAC80211_RC_DEFAULT="pid"
+# CONFIG_MAC80211_MESH is not set
+# CONFIG_MAC80211_LEDS is not set
+CONFIG_MAC80211_DEBUGFS=y
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+CONFIG_RFKILL=y
+CONFIG_RFKILL_LEDS=y
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_RFKILL_REGULATOR is not set
+# CONFIG_RFKILL_GPIO is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_CMA is not set
+
+#
+# Bus devices
+#
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_OMAP_INTERCONNECT=y
+# CONFIG_ARM_CCI is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP 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_SST25L 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_DOCG3 is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_OF_SELFTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_MTD=y
+# 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_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ATMEL_SSC is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_BMP085_I2C is not set
+# CONFIG_BMP085_SPI is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+CONFIG_CROSSBAR=y
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+CONFIG_EEPROM_93CX6=y
+# CONFIG_EEPROM_93XX46 is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_ISCSI_BOOT_SYSFS is not set
+# CONFIG_SCSI_UFSHCD is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_BCACHE is not set
+# CONFIG_BLK_DEV_DM is not set
+# CONFIG_TARGET_CORE is not set
+CONFIG_NETDEVICES=y
+CONFIG_MII=m
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_NLMON is not set
+
+#
+# CAIF transport drivers
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+# CONFIG_NET_DSA_MV88E6123_61_65 is not set
+CONFIG_ETHERNET=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_CALXEDA_XGMAC is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_DM9000 is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SH_ETH is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_DAVINCI_EMAC is not set
+CONFIG_TI_DAVINCI_MDIO=y
+CONFIG_TI_DAVINCI_CPDMA=y
+CONFIG_TI_CPSW_PHY_SEL=y
+CONFIG_TI_CPSW=y
+CONFIG_TI_CPTS=y
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_AT803X_PHY=y
+# CONFIG_AMD_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MICREL_KS8995MA is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPPOE=m
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_CDC_EEM is not set
+CONFIG_USB_NET_CDC_NCM=m
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+# CONFIG_USB_NET_SMSC95XX is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+CONFIG_USB_NET_RNDIS_HOST=m
+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_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_VL600 is not set
+CONFIG_WLAN=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8187=m
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_ATH_CARDS is not set
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+# CONFIG_B43_SDIO is not set
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_BRCMFMAC is not set
+# CONFIG_HOSTAP is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_MESH is not set
+# CONFIG_P54_COMMON is not set
+CONFIG_RT2X00=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_LIB_DEBUGFS is not set
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTL_CARDS=m
+CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192C_COMMON=m
+# CONFIG_WL_TI is not set
+# CONFIG_ZD1211RW is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+# CONFIG_CW1200 is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=m
+# CONFIG_INPUT_SPARSEKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB 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_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+CONFIG_TOUCHSCREEN_ATMEL_MXT=y
+# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_EGALAX is not set
+CONFIG_TOUCHSCREEN_EGALAX_I2C=m
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 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_EDT_FT5X06=m
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
+CONFIG_TOUCHSCREEN_PIXCIR=m
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_TOUCHSCREEN_W90X900 is not set
+# CONFIG_TOUCHSCREEN_ST1232 is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_KXTJ9 is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
+CONFIG_INPUT_UINPUT=y
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
+# CONFIG_INPUT_CMA3000 is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_SERIO_OLPC_APSP is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVKMEM=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=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
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_EM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_OF_PLATFORM is not set
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_ATMEL is not set
+CONFIG_HW_RANDOM_OMAP=y
+# CONFIG_HW_RANDOM_EXYNOS 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_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+CONFIG_I2C_ALGOBIT=m
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+CONFIG_I2C_GPIO=m
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_PXA_PCI is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# 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_STUB 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_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_FSL_DSPI is not set
+# CONFIG_SPI_OC_TINY is not set
+CONFIG_SPI_OMAP24XX=y
+CONFIG_SPI_TI_QSPI=y
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
+CONFIG_DEBUG_GPIO=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_OF_HELPER=y
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_RCAR is not set
+# CONFIG_GPIO_TS5500 is not set
+# CONFIG_GPIO_GRGPIO is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_74X164 is not set
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# LPC GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+
+#
+# USB GPIO expanders:
+#
+CONFIG_W1=y
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+# CONFIG_W1_MASTER_DS1WM is not set
+# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_HDQ_MASTER_OMAP is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2408 is not set
+# CONFIG_W1_SLAVE_DS2413 is not set
+# CONFIG_W1_SLAVE_DS2423 is not set
+# CONFIG_W1_SLAVE_DS2431 is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+# CONFIG_W1_SLAVE_DS2760 is not set
+# CONFIG_W1_SLAVE_DS2780 is not set
+# CONFIG_W1_SLAVE_DS2781 is not set
+# CONFIG_W1_SLAVE_DS28E04 is not set
+# CONFIG_W1_SLAVE_BQ27000 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_POWER_RESET is not set
+# CONFIG_POWER_RESET_RESTART is not set
+# CONFIG_POWER_AVS is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_AD7314 is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7310 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_G762 is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_HTU21 is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_LM95234 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MAX6697 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_NCT6775 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SHT21 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH56XX_COMMON is not set
+# CONFIG_SENSORS_SCH5627 is not set
+# CONFIG_SENSORS_SCH5636 is not set
+# CONFIG_SENSORS_ADS1015 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_ADS7871 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA209 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_IMX_THERMAL is not set
+
+#
+# Texas Instruments thermal drivers
+#
+CONFIG_TI_SOC_THERMAL=y
+CONFIG_TI_THERMAL=y
+# CONFIG_OMAP4_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
+# CONFIG_SSB_DRIVER_GPIO is not set
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_TI_AM335X_TSCADC=y
+# CONFIG_MFD_LP8788 is not set
+CONFIG_MFD_OMAP_USB_HOST=y
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65090 is not set
+CONFIG_MFD_TPS65217=y
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_VEXPRESS_CONFIG is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_DUMMY is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
+CONFIG_REGULATOR_PBIAS=y
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_TI_ABB is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+CONFIG_REGULATOR_TPS65217=y
+CONFIG_REGULATOR_TPS6524X=y
+CONFIG_REGULATOR_TIAVSCLASS0=y
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_RC_SUPPORT is not set
+# CONFIG_MEDIA_CONTROLLER is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Media drivers
+#
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_STV06XX is not set
+# CONFIG_USB_GL860 is not set
+# CONFIG_USB_GSPCA_BENQ is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_CPIA1 is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_JEILINJ is not set
+# CONFIG_USB_GSPCA_JL2005BCD is not set
+# CONFIG_USB_GSPCA_KINECT is not set
+# CONFIG_USB_GSPCA_KONICA is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_MR97310A is not set
+# CONFIG_USB_GSPCA_NW80X is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_OV534 is not set
+# CONFIG_USB_GSPCA_OV534_9 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7302 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SE401 is not set
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_SPCA1528 is not set
+# CONFIG_USB_GSPCA_SQ905 is not set
+# CONFIG_USB_GSPCA_SQ905C is not set
+# CONFIG_USB_GSPCA_SQ930X is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_STK1135 is not set
+# CONFIG_USB_GSPCA_STV0680 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TOPRO is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+# CONFIG_USB_GSPCA_VICAM is not set
+# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
+# CONFIG_USB_GSPCA_ZC3XX is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_VIDEO_USBTV is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_DM6446_CCDC is not set
+# CONFIG_VIDEO_OMAP2_VOUT is not set
+# CONFIG_VIDEO_TIMBERDALE is not set
+# CONFIG_SOC_CAMERA is not set
+# CONFIG_VIDEO_AM437X_VPFE is not set
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_V4L_TEST_DRIVERS is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+# CONFIG_CYPRESS_FIRMWARE is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+
+#
+# Audio decoders, processors and mixers
+#
+
+#
+# RDS decoders
+#
+
+#
+# Video decoders
+#
+
+#
+# Video and audio decoders
+#
+
+#
+# Video encoders
+#
+
+#
+# Camera sensor devices
+#
+
+#
+# Flash devices
+#
+
+#
+# Video improvement chips
+#
+
+#
+# Miscelaneous helper chips
+#
+
+#
+# Sensors used on soc_camera driver
+#
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y
+# 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=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_DA8XX=y
+# CONFIG_FB_DA8XX_TDA998X is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DEBUG is not set
+# CONFIG_OMAP2_DSS_DEBUGFS is not set
+CONFIG_OMAP2_DSS_DPI=y
+CONFIG_OMAP2_DSS_DRA7XX_DPI=y
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP5_DSS_HDMI=y
+CONFIG_OMAP2_DSS_SDI=y
+CONFIG_OMAP2_DSS_DSI=y
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=y
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP Display Device Drivers (new device model)
+#
+# CONFIG_DISPLAY_ENCODER_TFP410 is not set
+# CONFIG_DISPLAY_ENCODER_TPD12S015 is not set
+# CONFIG_DISPLAY_DRA_EVM_ENCODER_TPD12S015 is not set
+# CONFIG_DISPLAY_ENCODER_SIL9022 is not set
+# CONFIG_DISPLAY_CONNECTOR_DVI is not set
+# CONFIG_DISPLAY_CONNECTOR_HDMI is not set
+# CONFIG_DISPLAY_CONNECTOR_ANALOG_TV is not set
+# CONFIG_DISPLAY_PANEL_DPI is not set
+# CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02 is not set
+# CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1 is not set
+# CONFIG_DISPLAY_PANEL_TFCS9700 is not set
+# CONFIG_EXYNOS_VIDEO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_LOGO=y
+CONFIG_FB_LOGO_CUSTOM=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_FB_SSD1307 is not set
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO_TPKBD is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_HCD_OMAP=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_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_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+CONFIG_USB_MUSB_HDRC=m
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_GADGET is not set
+CONFIG_USB_MUSB_DUAL_ROLE=y
+# CONFIG_USB_MUSB_TUSB6010 is not set
+CONFIG_USB_MUSB_OMAP2PLUS=m
+# CONFIG_USB_MUSB_AM35X is not set
+CONFIG_USB_MUSB_DSPS=m
+# CONFIG_USB_MUSB_UX500 is not set
+CONFIG_USB_MUSB_AM335X_CHILD=m
+# CONFIG_USB_INVENTRA_DMA is not set
+CONFIG_USB_TI_CPPI41_DMA=y
+# CONFIG_MUSB_PIO_ONLY is not set
+# CONFIG_USB_RENESAS_USBHS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+# CONFIG_USB_PRINTER is not set
+CONFIG_USB_WDM=m
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_REALTEK is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_STORAGE_ENE_UB6250 is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_CHIPIDEA is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=y
+# CONFIG_USB_SERIAL_CONSOLE is not set
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP210X is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=y
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_F81232 is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_IUU is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_METRO is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=y
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_QCAUX is not set
+# CONFIG_USB_SERIAL_QUALCOMM is not set
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+CONFIG_USB_SERIAL_WWAN=y
+CONFIG_USB_SERIAL_OPTION=y
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+# CONFIG_USB_SERIAL_ZTE is not set
+# CONFIG_USB_SERIAL_SSU100 is not set
+# CONFIG_USB_SERIAL_QT2 is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_AM335X_CONTROL_USB=y
+CONFIG_AM335X_PHY_USB=y
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
+# CONFIG_USB_ULPI is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+
+#
+# USB Peripheral Controller
+#
+# CONFIG_USB_FUSB300 is not set
+# CONFIG_USB_FOTG210_UDC is not set
+# CONFIG_USB_R8A66597 is not set
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_DUMMY_HCD is not set
+CONFIG_USB_LIBCOMPOSITE=m
+CONFIG_USB_F_ACM=m
+CONFIG_USB_U_SERIAL=m
+CONFIG_USB_U_ETHER=m
+CONFIG_USB_U_RNDIS=m
+CONFIG_USB_F_ECM=m
+CONFIG_USB_F_EEM=m
+CONFIG_USB_F_SUBSET=m
+CONFIG_USB_F_RNDIS=m
+CONFIG_USB_F_MASS_STORAGE=m
+# CONFIG_USB_CONFIGFS is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_ETH_EEM=y
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FUNCTIONFS is not set
+CONFIG_USB_MASS_STORAGE=m
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_ACM_MS is not set
+CONFIG_USB_G_MULTI=m
+CONFIG_USB_G_MULTI_RNDIS=y
+CONFIG_USB_G_MULTI_CDC=y
+# CONFIG_USB_G_HID is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_WEBCAM is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+# CONFIG_MMC_CLKGATE is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_MMC_SLOTINDEX=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_PXAV2 is not set
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_DW is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
+# CONFIG_LEDS_LP8501 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_PWM is not set
+# CONFIG_LEDS_REGULATOR is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_BLINKM is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_CPU is not set
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=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_DS3232 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_ISL12022 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
+# CONFIG_RTC_DRV_PCF8523 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_BQ32K is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_RV3029C2 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+# CONFIG_RTC_DRV_RX4581 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_OMAP=y
+# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_MOXART is not set
+
+#
+# HID Sensor RTC drivers
+#
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+# CONFIG_DW_DMAC_CORE is not set
+# CONFIG_DW_DMAC is not set
+# CONFIG_TIMB_DMA is not set
+CONFIG_TI_EDMA=y
+CONFIG_DMA_OMAP=y
+CONFIG_TI_CPPI41=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_UIO=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_DMEM_GENIRQ=m
+CONFIG_UIO_PRUSS=m
+# CONFIG_VIRT_DRIVERS is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_STAGING is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+CONFIG_COMMON_CLK_DEBUG=y
+# CONFIG_COMMON_CLK_SI5351 is not set
+
+#
+# Hardware Spinlock drivers
+#
+# CONFIG_HWSPINLOCK_OMAP is not set
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_MAILBOX=y
+CONFIG_OMAP_MBOX=y
+CONFIG_OMAP2PLUS_MBOX=y
+CONFIG_OMAP_MBOX_KFIFO_SIZE=256
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_OF_IOMMU=y
+# CONFIG_OMAP_IOMMU is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_OMAP_DMTIMER=m
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_TIECAP=m
+CONFIG_PWM_TIEHRPWM=m
+CONFIG_PWM_TIPWMSS=y
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+# CONFIG_IPACK_BUS is not set
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_TI=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+CONFIG_OMAP_CONTROL_PHY=y
+CONFIG_OMAP_USB2=y
+CONFIG_OMAP_PIPE3=y
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_LOGFS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_SWAP is not set
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+CONFIG_CIFS=y
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_UPCALL is not set
+# CONFIG_CIFS_XATTR is not set
+CONFIG_CIFS_DEBUG=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_SMB2 is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS 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=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+CONFIG_DEBUG_PREEMPT=y
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+# CONFIG_DEBUG_LOCK_ALLOC is not set
+# CONFIG_PROVE_LOCKING is not set
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_PROVE_RCU_DELAY is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+CONFIG_RCU_CPU_STALL_VERBOSE=y
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_KPROBE_EVENT=y
+CONFIG_PROBE_EVENTS=y
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_STRICT_DEVMEM is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_UART_8250 is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_ARM_KPROBES_TEST is not set
+# CONFIG_PID_IN_CONTEXTIDR is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# 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 is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32 is not set
+CONFIG_CRYPTO_CRCT10DIF=y
+# CONFIG_CRYPTO_GHASH is not set
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA1_ARM is not set
+CONFIG_CRYPTO_SHA256=y
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_ARM is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_ZLIB is not set
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+# CONFIG_CRC8 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+# CONFIG_XZ_DEC is not set
+# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+CONFIG_AVERAGE=y
+# CONFIG_CORDIC is not set
+# CONFIG_DDR is not set
+CONFIG_OID_REGISTRY=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_VIRTUALIZATION is not set

+ 3349 - 0
board/GfA/Display001/Display001_defconfig_spinlock_checks_normal

@@ -0,0 +1,3349 @@
+#
+# Automatically generated file; DO NOT EDIT.
+# Linux/arm 3.12.10 Kernel Configuration
+#
+CONFIG_ARM=y
+CONFIG_SYS_SUPPORTS_APM_EMULATION=y
+CONFIG_HAVE_PROC_CPU=y
+CONFIG_STACKTRACE_SUPPORT=y
+CONFIG_HAVE_LATENCYTOP_SUPPORT=y
+CONFIG_LOCKDEP_SUPPORT=y
+CONFIG_TRACE_IRQFLAGS_SUPPORT=y
+CONFIG_RWSEM_GENERIC_SPINLOCK=y
+CONFIG_ARCH_HAS_CPUFREQ=y
+CONFIG_ARCH_HAS_BANDGAP=y
+CONFIG_GENERIC_HWEIGHT=y
+CONFIG_GENERIC_CALIBRATE_DELAY=y
+CONFIG_DMA_NONCOHERENT=y
+CONFIG_NEED_DMA_MAP_STATE=y
+CONFIG_VECTORS_BASE=0xffff0000
+CONFIG_ARM_PATCH_PHYS_VIRT=y
+CONFIG_GENERIC_BUG=y
+CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"
+CONFIG_IRQ_WORK=y
+CONFIG_BUILDTIME_EXTABLE_SORT=y
+
+#
+# General setup
+#
+CONFIG_BROKEN_ON_SMP=y
+CONFIG_INIT_ENV_ARG_LIMIT=32
+CONFIG_CROSS_COMPILE=""
+# CONFIG_COMPILE_TEST is not set
+CONFIG_LOCALVERSION=""
+CONFIG_LOCALVERSION_AUTO=y
+CONFIG_HAVE_KERNEL_GZIP=y
+CONFIG_HAVE_KERNEL_LZMA=y
+CONFIG_HAVE_KERNEL_XZ=y
+CONFIG_HAVE_KERNEL_LZO=y
+CONFIG_HAVE_KERNEL_LZ4=y
+CONFIG_KERNEL_GZIP=y
+# CONFIG_KERNEL_LZMA is not set
+# CONFIG_KERNEL_XZ is not set
+# CONFIG_KERNEL_LZO is not set
+# CONFIG_KERNEL_LZ4 is not set
+CONFIG_DEFAULT_HOSTNAME="(none)"
+CONFIG_SWAP=y
+CONFIG_SYSVIPC=y
+CONFIG_SYSVIPC_SYSCTL=y
+CONFIG_POSIX_MQUEUE=y
+CONFIG_POSIX_MQUEUE_SYSCTL=y
+# CONFIG_FHANDLE is not set
+# CONFIG_AUDIT is not set
+
+#
+# IRQ subsystem
+#
+CONFIG_GENERIC_IRQ_PROBE=y
+CONFIG_GENERIC_IRQ_SHOW=y
+CONFIG_HARDIRQS_SW_RESEND=y
+CONFIG_GENERIC_IRQ_CHIP=y
+CONFIG_IRQ_DOMAIN=y
+# CONFIG_IRQ_DOMAIN_DEBUG is not set
+CONFIG_IRQ_FORCED_THREADING=y
+CONFIG_SPARSE_IRQ=y
+CONFIG_KTIME_SCALAR=y
+CONFIG_GENERIC_CLOCKEVENTS=y
+CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
+
+#
+# Timers subsystem
+#
+CONFIG_TICK_ONESHOT=y
+CONFIG_NO_HZ_COMMON=y
+# CONFIG_HZ_PERIODIC is not set
+CONFIG_NO_HZ_IDLE=y
+CONFIG_NO_HZ=y
+CONFIG_HIGH_RES_TIMERS=y
+
+#
+# CPU/Task time and stats accounting
+#
+CONFIG_TICK_CPU_ACCOUNTING=y
+# CONFIG_IRQ_TIME_ACCOUNTING is not set
+CONFIG_BSD_PROCESS_ACCT=y
+# CONFIG_BSD_PROCESS_ACCT_V3 is not set
+# CONFIG_TASKSTATS is not set
+
+#
+# RCU Subsystem
+#
+CONFIG_TREE_PREEMPT_RCU=y
+CONFIG_PREEMPT_RCU=y
+CONFIG_RCU_STALL_COMMON=y
+CONFIG_RCU_FANOUT=32
+CONFIG_RCU_FANOUT_LEAF=16
+# CONFIG_RCU_FANOUT_EXACT is not set
+# CONFIG_TREE_RCU_TRACE is not set
+# CONFIG_RCU_BOOST is not set
+# CONFIG_RCU_NOCB_CPU is not set
+CONFIG_IKCONFIG=y
+CONFIG_IKCONFIG_PROC=y
+CONFIG_LOG_BUF_SHIFT=16
+CONFIG_GENERIC_SCHED_CLOCK=y
+# CONFIG_CGROUPS is not set
+# CONFIG_CHECKPOINT_RESTORE is not set
+# CONFIG_NAMESPACES is not set
+# CONFIG_UIDGID_STRICT_TYPE_CHECKS is not set
+# CONFIG_SCHED_AUTOGROUP is not set
+# CONFIG_SYSFS_DEPRECATED is not set
+# CONFIG_RELAY is not set
+CONFIG_BLK_DEV_INITRD=y
+CONFIG_INITRAMFS_SOURCE=""
+CONFIG_RD_GZIP=y
+# CONFIG_RD_BZIP2 is not set
+# CONFIG_RD_LZMA is not set
+# CONFIG_RD_XZ is not set
+# CONFIG_RD_LZO is not set
+# CONFIG_RD_LZ4 is not set
+# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
+CONFIG_SYSCTL=y
+CONFIG_ANON_INODES=y
+CONFIG_HAVE_UID16=y
+CONFIG_EXPERT=y
+CONFIG_UID16=y
+# CONFIG_SYSCTL_SYSCALL is not set
+CONFIG_KALLSYMS=y
+CONFIG_KALLSYMS_ALL=y
+CONFIG_PRINTK=y
+CONFIG_BUG=y
+CONFIG_ELF_CORE=y
+CONFIG_BASE_FULL=y
+CONFIG_FUTEX=y
+CONFIG_EPOLL=y
+CONFIG_SIGNALFD=y
+CONFIG_TIMERFD=y
+CONFIG_EVENTFD=y
+CONFIG_SHMEM=y
+CONFIG_AIO=y
+# CONFIG_EMBEDDED is not set
+CONFIG_HAVE_PERF_EVENTS=y
+CONFIG_PERF_USE_VMALLOC=y
+
+#
+# Kernel Performance Events And Counters
+#
+CONFIG_PERF_EVENTS=y
+# CONFIG_DEBUG_PERF_USE_VMALLOC is not set
+CONFIG_VM_EVENT_COUNTERS=y
+CONFIG_SLUB_DEBUG=y
+CONFIG_COMPAT_BRK=y
+# CONFIG_SLAB is not set
+CONFIG_SLUB=y
+# CONFIG_SLOB is not set
+CONFIG_PROFILING=y
+CONFIG_TRACEPOINTS=y
+# CONFIG_OPROFILE is not set
+CONFIG_HAVE_OPROFILE=y
+CONFIG_KPROBES=y
+# CONFIG_JUMP_LABEL is not set
+# CONFIG_HAVE_64BIT_ALIGNED_ACCESS is not set
+CONFIG_KRETPROBES=y
+CONFIG_HAVE_KPROBES=y
+CONFIG_HAVE_KRETPROBES=y
+CONFIG_HAVE_ARCH_TRACEHOOK=y
+CONFIG_HAVE_DMA_ATTRS=y
+CONFIG_HAVE_DMA_CONTIGUOUS=y
+CONFIG_GENERIC_SMP_IDLE_THREAD=y
+CONFIG_GENERIC_IDLE_POLL_SETUP=y
+CONFIG_HAVE_REGS_AND_STACK_ACCESS_API=y
+CONFIG_HAVE_CLK=y
+CONFIG_HAVE_DMA_API_DEBUG=y
+CONFIG_HAVE_HW_BREAKPOINT=y
+CONFIG_HAVE_ARCH_JUMP_LABEL=y
+CONFIG_ARCH_WANT_IPC_PARSE_VERSION=y
+CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
+CONFIG_HAVE_CONTEXT_TRACKING=y
+CONFIG_HAVE_IRQ_TIME_ACCOUNTING=y
+CONFIG_HAVE_MOD_ARCH_SPECIFIC=y
+CONFIG_MODULES_USE_ELF_REL=y
+CONFIG_CLONE_BACKWARDS=y
+CONFIG_OLD_SIGSUSPEND3=y
+CONFIG_OLD_SIGACTION=y
+
+#
+# GCOV-based kernel profiling
+#
+# CONFIG_GCOV_KERNEL is not set
+CONFIG_HAVE_GENERIC_DMA_COHERENT=y
+CONFIG_SLABINFO=y
+CONFIG_RT_MUTEXES=y
+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_MODULE_SIG is not set
+CONFIG_BLOCK=y
+CONFIG_LBDAF=y
+# CONFIG_BLK_DEV_BSG is not set
+# CONFIG_BLK_DEV_BSGLIB is not set
+# CONFIG_BLK_DEV_INTEGRITY is not set
+# CONFIG_BLK_CMDLINE_PARSER is not set
+
+#
+# Partition Types
+#
+# CONFIG_PARTITION_ADVANCED is not set
+CONFIG_MSDOS_PARTITION=y
+CONFIG_EFI_PARTITION=y
+
+#
+# IO Schedulers
+#
+CONFIG_IOSCHED_NOOP=y
+CONFIG_IOSCHED_DEADLINE=y
+CONFIG_IOSCHED_CFQ=y
+# CONFIG_DEFAULT_DEADLINE is not set
+CONFIG_DEFAULT_CFQ=y
+# CONFIG_DEFAULT_NOOP is not set
+CONFIG_DEFAULT_IOSCHED="cfq"
+CONFIG_UNINLINE_SPIN_UNLOCK=y
+CONFIG_FREEZER=y
+
+#
+# System Type
+#
+CONFIG_MMU=y
+# CONFIG_ARCH_MULTIPLATFORM 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_CLPS711X is not set
+# CONFIG_ARCH_GEMINI 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_IOP13XX is not set
+# CONFIG_ARCH_IOP32X is not set
+# CONFIG_ARCH_IOP33X is not set
+# CONFIG_ARCH_IXP4XX is not set
+# CONFIG_ARCH_DOVE is not set
+# CONFIG_ARCH_KIRKWOOD is not set
+# CONFIG_ARCH_MV78XX0 is not set
+# CONFIG_ARCH_ORION5X is not set
+# CONFIG_ARCH_MMP is not set
+# CONFIG_ARCH_KS8695 is not set
+# CONFIG_ARCH_W90X900 is not set
+# CONFIG_ARCH_LPC32XX is not set
+# CONFIG_ARCH_PXA is not set
+# CONFIG_ARCH_MSM is not set
+# CONFIG_ARCH_SHMOBILE is not set
+# CONFIG_ARCH_RPC is not set
+# CONFIG_ARCH_SA1100 is not set
+# CONFIG_ARCH_S3C24XX is not set
+# CONFIG_ARCH_S3C64XX is not set
+# CONFIG_ARCH_S5P64X0 is not set
+# CONFIG_ARCH_S5PC100 is not set
+# CONFIG_ARCH_S5PV210 is not set
+# CONFIG_ARCH_EXYNOS is not set
+# CONFIG_ARCH_SHARK is not set
+# CONFIG_ARCH_DAVINCI is not set
+# CONFIG_ARCH_OMAP1 is not set
+CONFIG_ARCH_OMAP2PLUS=y
+
+#
+# Multiple platform selection
+#
+
+#
+# CPU Core family selection
+#
+# CONFIG_ARCH_MULTI_V6 is not set
+CONFIG_ARCH_MULTI_V7=y
+CONFIG_ARCH_MULTI_V6_V7=y
+# CONFIG_ARCH_MULTI_CPU_AUTO is not set
+# CONFIG_ARCH_MVEBU is not set
+# CONFIG_ARCH_BCM is not set
+# CONFIG_GPIO_PCA953X is not set
+# CONFIG_KEYBOARD_GPIO_POLLED is not set
+# CONFIG_ARCH_HIGHBANK is not set
+# CONFIG_ARCH_KEYSTONE is not set
+# CONFIG_ARCH_MXC is not set
+
+#
+# TI OMAP Common Features
+#
+
+#
+# OMAP Feature Selections
+#
+CONFIG_OMAP_RESET_CLOCKS=y
+CONFIG_OMAP_MUX=y
+CONFIG_OMAP_MUX_DEBUG=y
+CONFIG_OMAP_MUX_WARNINGS=y
+CONFIG_OMAP_32K_TIMER=y
+# CONFIG_OMAP3_L2_AUX_SECURE_SAVE_RESTORE is not set
+CONFIG_OMAP_DM_TIMER=y
+CONFIG_OMAP_PM_NOOP=y
+CONFIG_MACH_OMAP_GENERIC=y
+CONFIG_ARCH_OMAP=y
+CONFIG_ARCH_OMAP3=y
+CONFIG_ARCH_OMAP4=y
+# CONFIG_SOC_OMAP5 is not set
+CONFIG_SOC_AM33XX=y
+CONFIG_SOC_AM43XX=y
+
+#
+# TI OMAP2/3/4 Specific Features
+#
+# CONFIG_ARCH_OMAP2PLUS_TYPICAL is not set
+CONFIG_SOC_HAS_OMAP2_SDRC=y
+# CONFIG_SOC_DRA7XX is not set
+CONFIG_SOC_OMAP3430=y
+# CONFIG_SOC_TI81XX is not set
+CONFIG_OMAP_PACKAGE_CBB=y
+
+#
+# OMAP Board Type
+#
+# CONFIG_MACH_OMAP3_BEAGLE is not set
+# CONFIG_MACH_DEVKIT8000 is not set
+# CONFIG_MACH_OMAP_LDP is not set
+# CONFIG_MACH_OMAP3530_LV_SOM is not set
+# CONFIG_MACH_OMAP3_TORPEDO is not set
+# CONFIG_MACH_OVERO is not set
+# CONFIG_MACH_OMAP3EVM is not set
+CONFIG_MACH_OMAP3517EVM=y
+# CONFIG_MACH_CRANEBOARD is not set
+# CONFIG_MACH_OMAP3_PANDORA is not set
+# CONFIG_MACH_TOUCHBOOK is not set
+# CONFIG_MACH_OMAP_3430SDP is not set
+# CONFIG_MACH_NOKIA_RM680 is not set
+# CONFIG_MACH_NOKIA_RX51 is not set
+# CONFIG_MACH_OMAP_ZOOM2 is not set
+# CONFIG_MACH_OMAP_ZOOM3 is not set
+# CONFIG_MACH_CM_T35 is not set
+# CONFIG_MACH_CM_T3517 is not set
+# CONFIG_MACH_IGEP0020 is not set
+# CONFIG_MACH_IGEP0030 is not set
+# CONFIG_MACH_SBC3530 is not set
+# CONFIG_MACH_OMAP_3630SDP is not set
+# CONFIG_OMAP3_EMU is not set
+# CONFIG_OMAP3_SDRC_AC_TIMING is not set
+# CONFIG_OMAP4_ERRATA_I688 is not set
+# CONFIG_ARCH_ROCKCHIP is not set
+# CONFIG_ARCH_SOCFPGA is not set
+# CONFIG_PLAT_SPEAR is not set
+# CONFIG_ARCH_STI is not set
+# CONFIG_ARCH_SHMOBILE_MULTI is not set
+# CONFIG_ARCH_SUNXI is not set
+# CONFIG_ARCH_SIRF is not set
+# CONFIG_ARCH_TEGRA is not set
+# CONFIG_ARCH_U8500 is not set
+# CONFIG_ARCH_VEXPRESS is not set
+# CONFIG_ARCH_VIRT is not set
+# CONFIG_ARCH_WM8850 is not set
+# CONFIG_ARCH_ZYNQ is not set
+
+#
+# Processor Type
+#
+CONFIG_CPU_V7=y
+CONFIG_CPU_32v6K=y
+CONFIG_CPU_32v7=y
+CONFIG_CPU_ABRT_EV7=y
+CONFIG_CPU_PABRT_V7=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_LPAE is not set
+# CONFIG_ARCH_PHYS_ADDR_T_64BIT is not set
+CONFIG_ARM_THUMB=y
+CONFIG_ARM_THUMBEE=y
+CONFIG_ARM_VIRT_EXT=y
+# CONFIG_SWP_EMULATE is not set
+# CONFIG_CPU_ICACHE_DISABLE is not set
+# CONFIG_CPU_DCACHE_DISABLE is not set
+# CONFIG_CPU_BPREDICT_DISABLE is not set
+CONFIG_KUSER_HELPERS=y
+CONFIG_OUTER_CACHE=y
+CONFIG_OUTER_CACHE_SYNC=y
+CONFIG_MIGHT_HAVE_CACHE_L2X0=y
+CONFIG_CACHE_L2X0=y
+CONFIG_CACHE_PL310=y
+CONFIG_ARM_L1_CACHE_SHIFT_6=y
+CONFIG_ARM_L1_CACHE_SHIFT=6
+CONFIG_ARM_DMA_MEM_BUFFERABLE=y
+CONFIG_ARM_NR_BANKS=8
+CONFIG_MULTI_IRQ_HANDLER=y
+# CONFIG_ARM_ERRATA_430973 is not set
+# CONFIG_ARM_ERRATA_458693 is not set
+# CONFIG_ARM_ERRATA_460075 is not set
+CONFIG_PL310_ERRATA_588369=y
+CONFIG_ARM_ERRATA_720789=y
+CONFIG_PL310_ERRATA_727915=y
+# CONFIG_ARM_ERRATA_743622 is not set
+# CONFIG_ARM_ERRATA_751472 is not set
+# CONFIG_PL310_ERRATA_753970 is not set
+CONFIG_ARM_ERRATA_754322=y
+# CONFIG_PL310_ERRATA_769419 is not set
+CONFIG_ARM_ERRATA_775420=y
+# CONFIG_ARM_ERRATA_773022 is not set
+CONFIG_TI_PRIV_EDMA=y
+
+#
+# Bus support
+#
+# CONFIG_PCI_SYSCALL is not set
+# CONFIG_PCCARD is not set
+
+#
+# Kernel Features
+#
+CONFIG_HAVE_SMP=y
+# CONFIG_SMP is not set
+CONFIG_HAVE_ARM_ARCH_TIMER=y
+CONFIG_VMSPLIT_3G=y
+# CONFIG_VMSPLIT_2G is not set
+# CONFIG_VMSPLIT_1G is not set
+CONFIG_PAGE_OFFSET=0xC0000000
+# CONFIG_ARM_PSCI is not set
+CONFIG_ARCH_NR_GPIO=192
+# CONFIG_PREEMPT_NONE is not set
+# CONFIG_PREEMPT_VOLUNTARY is not set
+CONFIG_PREEMPT=y
+CONFIG_PREEMPT_COUNT=y
+CONFIG_HZ_FIXED=0
+CONFIG_HZ_100=y
+# CONFIG_HZ_200 is not set
+# CONFIG_HZ_250 is not set
+# CONFIG_HZ_300 is not set
+# CONFIG_HZ_500 is not set
+# CONFIG_HZ_1000 is not set
+CONFIG_HZ=100
+CONFIG_SCHED_HRTICK=y
+# CONFIG_THUMB2_KERNEL is not set
+CONFIG_AEABI=y
+CONFIG_OABI_COMPAT=y
+CONFIG_ARCH_HAS_HOLES_MEMORYMODEL=y
+# CONFIG_ARCH_SPARSEMEM_DEFAULT is not set
+# CONFIG_ARCH_SELECT_MEMORY_MODEL is not set
+CONFIG_HAVE_ARCH_PFN_VALID=y
+CONFIG_HIGHMEM=y
+# CONFIG_HIGHPTE is not set
+CONFIG_HW_PERF_EVENTS=y
+CONFIG_ARCH_WANT_GENERAL_HUGETLB=y
+CONFIG_FLATMEM=y
+CONFIG_FLAT_NODE_MEM_MAP=y
+CONFIG_HAVE_MEMBLOCK=y
+CONFIG_MEMORY_ISOLATION=y
+# CONFIG_HAVE_BOOTMEM_INFO_NODE is not set
+CONFIG_PAGEFLAGS_EXTENDED=y
+CONFIG_SPLIT_PTLOCK_CPUS=999999
+CONFIG_COMPACTION=y
+CONFIG_MIGRATION=y
+# CONFIG_PHYS_ADDR_T_64BIT is not set
+CONFIG_ZONE_DMA_FLAG=0
+CONFIG_BOUNCE=y
+# CONFIG_KSM is not set
+CONFIG_DEFAULT_MMAP_MIN_ADDR=4096
+CONFIG_CROSS_MEMORY_ATTACH=y
+CONFIG_NEED_PER_CPU_KM=y
+# CONFIG_CLEANCACHE is not set
+# CONFIG_FRONTSWAP is not set
+CONFIG_CMA=y
+# CONFIG_CMA_DEBUG is not set
+# CONFIG_ZBUD is not set
+CONFIG_FORCE_MAX_ZONEORDER=12
+CONFIG_ALIGNMENT_TRAP=y
+# CONFIG_UACCESS_WITH_MEMCPY is not set
+# CONFIG_SECCOMP is not set
+# CONFIG_CC_STACKPROTECTOR is not set
+# CONFIG_XEN is not set
+
+#
+# Boot options
+#
+CONFIG_USE_OF=y
+CONFIG_ATAGS=y
+# CONFIG_DEPRECATED_PARAM_STRUCT is not set
+CONFIG_ZBOOT_ROM_TEXT=0x0
+CONFIG_ZBOOT_ROM_BSS=0x0
+# CONFIG_ARM_APPENDED_DTB is not set
+CONFIG_CMDLINE="root=/dev/mmcblk0p2 rootwait console=ttyO0,115200"
+CONFIG_CMDLINE_FROM_BOOTLOADER=y
+# CONFIG_CMDLINE_EXTEND is not set
+# CONFIG_CMDLINE_FORCE is not set
+# CONFIG_XIP_KERNEL is not set
+CONFIG_KEXEC=y
+CONFIG_ATAGS_PROC=y
+# CONFIG_CRASH_DUMP is not set
+CONFIG_AUTO_ZRELADDR=y
+
+#
+# CPU Power Management
+#
+
+#
+# CPU Frequency scaling
+#
+CONFIG_CPU_FREQ=y
+CONFIG_CPU_FREQ_TABLE=y
+CONFIG_CPU_FREQ_GOV_COMMON=y
+CONFIG_CPU_FREQ_STAT=y
+CONFIG_CPU_FREQ_STAT_DETAILS=y
+CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE=y
+# CONFIG_CPU_FREQ_DEFAULT_GOV_POWERSAVE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
+# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
+CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
+CONFIG_CPU_FREQ_GOV_POWERSAVE=y
+CONFIG_CPU_FREQ_GOV_USERSPACE=y
+CONFIG_CPU_FREQ_GOV_ONDEMAND=y
+CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y
+CONFIG_GENERIC_CPUFREQ_CPU0=y
+
+#
+# ARM CPU frequency scaling drivers
+#
+# CONFIG_ARM_KIRKWOOD_CPUFREQ is not set
+CONFIG_ARM_OMAP2PLUS_CPUFREQ=y
+
+#
+# CPU Idle
+#
+# CONFIG_CPU_IDLE is not set
+# CONFIG_ARCH_NEEDS_CPU_IDLE_COUPLED 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
+# CONFIG_KERNEL_MODE_NEON is not set
+
+#
+# Userspace binary formats
+#
+CONFIG_BINFMT_ELF=y
+CONFIG_ARCH_BINFMT_ELF_RANDOMIZE_PIE=y
+CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS=y
+CONFIG_BINFMT_SCRIPT=y
+# CONFIG_HAVE_AOUT is not set
+CONFIG_BINFMT_MISC=y
+CONFIG_COREDUMP=y
+
+#
+# Power management options
+#
+CONFIG_SUSPEND=y
+CONFIG_SUSPEND_FREEZER=y
+CONFIG_PM_SLEEP=y
+# CONFIG_PM_AUTOSLEEP is not set
+# CONFIG_PM_WAKELOCKS is not set
+CONFIG_PM_RUNTIME=y
+CONFIG_PM=y
+CONFIG_PM_DEBUG=y
+# CONFIG_PM_ADVANCED_DEBUG is not set
+# CONFIG_PM_TEST_SUSPEND is not set
+CONFIG_PM_SLEEP_DEBUG=y
+# CONFIG_APM_EMULATION is not set
+CONFIG_ARCH_HAS_OPP=y
+CONFIG_PM_OPP=y
+CONFIG_PM_CLK=y
+# CONFIG_WQ_POWER_EFFICIENT_DEFAULT is not set
+CONFIG_CPU_PM=y
+CONFIG_ARCH_SUSPEND_POSSIBLE=y
+CONFIG_ARM_CPU_SUSPEND=y
+CONFIG_NET=y
+
+#
+# Networking options
+#
+CONFIG_PACKET=y
+# CONFIG_PACKET_DIAG is not set
+CONFIG_UNIX=y
+# CONFIG_UNIX_DIAG is not set
+CONFIG_XFRM=y
+CONFIG_XFRM_ALGO=y
+CONFIG_XFRM_USER=y
+# CONFIG_XFRM_SUB_POLICY is not set
+CONFIG_XFRM_MIGRATE=y
+# CONFIG_XFRM_STATISTICS is not set
+CONFIG_NET_KEY=y
+CONFIG_NET_KEY_MIGRATE=y
+CONFIG_INET=y
+CONFIG_IP_MULTICAST=y
+# CONFIG_IP_ADVANCED_ROUTER is not set
+CONFIG_IP_ROUTE_CLASSID=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_DEMUX is not set
+# CONFIG_NET_IP_TUNNEL is not set
+# CONFIG_IP_MROUTE is not set
+CONFIG_SYN_COOKIES=y
+# CONFIG_NET_IPVTI is not set
+# CONFIG_INET_AH is not set
+# CONFIG_INET_ESP is not set
+# CONFIG_INET_IPCOMP is not set
+# CONFIG_INET_XFRM_TUNNEL is not set
+# CONFIG_INET_TUNNEL is not set
+CONFIG_INET_XFRM_MODE_TRANSPORT=y
+CONFIG_INET_XFRM_MODE_TUNNEL=y
+CONFIG_INET_XFRM_MODE_BEET=y
+# CONFIG_INET_LRO is not set
+CONFIG_INET_DIAG=y
+CONFIG_INET_TCP_DIAG=y
+# CONFIG_INET_UDP_DIAG is not set
+# CONFIG_TCP_CONG_ADVANCED is not set
+CONFIG_TCP_CONG_CUBIC=y
+CONFIG_DEFAULT_TCP_CONG="cubic"
+# CONFIG_TCP_MD5SIG is not set
+# CONFIG_IPV6 is not set
+# CONFIG_NETWORK_SECMARK is not set
+# CONFIG_NETWORK_PHY_TIMESTAMPING is not set
+CONFIG_NETFILTER=y
+# CONFIG_NETFILTER_DEBUG is not set
+CONFIG_NETFILTER_ADVANCED=y
+
+#
+# Core Netfilter Configuration
+#
+CONFIG_NETFILTER_NETLINK=m
+CONFIG_NETFILTER_NETLINK_ACCT=m
+CONFIG_NETFILTER_NETLINK_QUEUE=m
+CONFIG_NETFILTER_NETLINK_LOG=m
+CONFIG_NF_CONNTRACK=m
+CONFIG_NF_CONNTRACK_MARK=y
+CONFIG_NF_CONNTRACK_PROCFS=y
+CONFIG_NF_CONNTRACK_EVENTS=y
+CONFIG_NF_CONNTRACK_TIMEOUT=y
+CONFIG_NF_CONNTRACK_TIMESTAMP=y
+CONFIG_NF_CONNTRACK_LABELS=y
+CONFIG_NF_CT_PROTO_DCCP=m
+CONFIG_NF_CT_PROTO_GRE=m
+CONFIG_NF_CT_PROTO_SCTP=m
+CONFIG_NF_CT_PROTO_UDPLITE=m
+CONFIG_NF_CONNTRACK_AMANDA=m
+CONFIG_NF_CONNTRACK_FTP=m
+CONFIG_NF_CONNTRACK_H323=m
+CONFIG_NF_CONNTRACK_IRC=m
+CONFIG_NF_CONNTRACK_BROADCAST=m
+CONFIG_NF_CONNTRACK_NETBIOS_NS=m
+CONFIG_NF_CONNTRACK_SNMP=m
+CONFIG_NF_CONNTRACK_PPTP=m
+CONFIG_NF_CONNTRACK_SANE=m
+CONFIG_NF_CONNTRACK_SIP=m
+CONFIG_NF_CONNTRACK_TFTP=m
+CONFIG_NF_CT_NETLINK=m
+CONFIG_NF_CT_NETLINK_TIMEOUT=m
+# CONFIG_NF_CT_NETLINK_HELPER is not set
+CONFIG_NETFILTER_NETLINK_QUEUE_CT=y
+CONFIG_NF_NAT=m
+CONFIG_NF_NAT_NEEDED=y
+CONFIG_NF_NAT_PROTO_DCCP=m
+CONFIG_NF_NAT_PROTO_UDPLITE=m
+CONFIG_NF_NAT_PROTO_SCTP=m
+CONFIG_NF_NAT_AMANDA=m
+CONFIG_NF_NAT_FTP=m
+CONFIG_NF_NAT_IRC=m
+CONFIG_NF_NAT_SIP=m
+CONFIG_NF_NAT_TFTP=m
+CONFIG_NETFILTER_SYNPROXY=m
+CONFIG_NETFILTER_XTABLES=m
+
+#
+# Xtables combined modules
+#
+CONFIG_NETFILTER_XT_MARK=m
+CONFIG_NETFILTER_XT_CONNMARK=m
+# CONFIG_NETFILTER_XT_SET is not set
+
+#
+# Xtables targets
+#
+# CONFIG_NETFILTER_XT_TARGET_CHECKSUM is not set
+CONFIG_NETFILTER_XT_TARGET_CLASSIFY=m
+CONFIG_NETFILTER_XT_TARGET_CONNMARK=m
+# CONFIG_NETFILTER_XT_TARGET_CT is not set
+# CONFIG_NETFILTER_XT_TARGET_DSCP is not set
+CONFIG_NETFILTER_XT_TARGET_HL=m
+CONFIG_NETFILTER_XT_TARGET_HMARK=m
+CONFIG_NETFILTER_XT_TARGET_IDLETIMER=m
+CONFIG_NETFILTER_XT_TARGET_LED=m
+CONFIG_NETFILTER_XT_TARGET_LOG=m
+CONFIG_NETFILTER_XT_TARGET_MARK=m
+CONFIG_NETFILTER_XT_TARGET_NETMAP=m
+CONFIG_NETFILTER_XT_TARGET_NFLOG=m
+CONFIG_NETFILTER_XT_TARGET_NFQUEUE=m
+# CONFIG_NETFILTER_XT_TARGET_NOTRACK is not set
+CONFIG_NETFILTER_XT_TARGET_RATEEST=m
+CONFIG_NETFILTER_XT_TARGET_REDIRECT=m
+CONFIG_NETFILTER_XT_TARGET_TEE=m
+# CONFIG_NETFILTER_XT_TARGET_TPROXY is not set
+# CONFIG_NETFILTER_XT_TARGET_TRACE is not set
+CONFIG_NETFILTER_XT_TARGET_TCPMSS=m
+# CONFIG_NETFILTER_XT_TARGET_TCPOPTSTRIP is not set
+
+#
+# Xtables matches
+#
+CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=m
+CONFIG_NETFILTER_XT_MATCH_BPF=m
+CONFIG_NETFILTER_XT_MATCH_CLUSTER=m
+CONFIG_NETFILTER_XT_MATCH_COMMENT=m
+CONFIG_NETFILTER_XT_MATCH_CONNBYTES=m
+CONFIG_NETFILTER_XT_MATCH_CONNLABEL=m
+CONFIG_NETFILTER_XT_MATCH_CONNLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_CONNMARK=m
+CONFIG_NETFILTER_XT_MATCH_CONNTRACK=m
+CONFIG_NETFILTER_XT_MATCH_CPU=m
+CONFIG_NETFILTER_XT_MATCH_DCCP=m
+CONFIG_NETFILTER_XT_MATCH_DEVGROUP=m
+CONFIG_NETFILTER_XT_MATCH_DSCP=m
+CONFIG_NETFILTER_XT_MATCH_ECN=m
+CONFIG_NETFILTER_XT_MATCH_ESP=m
+CONFIG_NETFILTER_XT_MATCH_HASHLIMIT=m
+CONFIG_NETFILTER_XT_MATCH_HELPER=m
+CONFIG_NETFILTER_XT_MATCH_HL=m
+CONFIG_NETFILTER_XT_MATCH_IPRANGE=m
+CONFIG_NETFILTER_XT_MATCH_LENGTH=m
+CONFIG_NETFILTER_XT_MATCH_LIMIT=m
+CONFIG_NETFILTER_XT_MATCH_MAC=m
+CONFIG_NETFILTER_XT_MATCH_MARK=m
+CONFIG_NETFILTER_XT_MATCH_MULTIPORT=m
+CONFIG_NETFILTER_XT_MATCH_NFACCT=m
+CONFIG_NETFILTER_XT_MATCH_OSF=m
+CONFIG_NETFILTER_XT_MATCH_OWNER=m
+CONFIG_NETFILTER_XT_MATCH_POLICY=m
+CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
+CONFIG_NETFILTER_XT_MATCH_QUOTA=m
+CONFIG_NETFILTER_XT_MATCH_RATEEST=m
+CONFIG_NETFILTER_XT_MATCH_REALM=m
+CONFIG_NETFILTER_XT_MATCH_RECENT=m
+CONFIG_NETFILTER_XT_MATCH_SCTP=m
+CONFIG_NETFILTER_XT_MATCH_SOCKET=m
+CONFIG_NETFILTER_XT_MATCH_STATE=m
+CONFIG_NETFILTER_XT_MATCH_STATISTIC=m
+CONFIG_NETFILTER_XT_MATCH_STRING=m
+CONFIG_NETFILTER_XT_MATCH_TCPMSS=m
+CONFIG_NETFILTER_XT_MATCH_TIME=m
+CONFIG_NETFILTER_XT_MATCH_U32=m
+CONFIG_IP_SET=m
+CONFIG_IP_SET_MAX=256
+CONFIG_IP_SET_BITMAP_IP=m
+CONFIG_IP_SET_BITMAP_IPMAC=m
+CONFIG_IP_SET_BITMAP_PORT=m
+CONFIG_IP_SET_HASH_IP=m
+CONFIG_IP_SET_HASH_IPPORT=m
+CONFIG_IP_SET_HASH_IPPORTIP=m
+CONFIG_IP_SET_HASH_IPPORTNET=m
+CONFIG_IP_SET_HASH_NET=m
+CONFIG_IP_SET_HASH_NETPORT=m
+CONFIG_IP_SET_HASH_NETIFACE=m
+CONFIG_IP_SET_LIST_SET=m
+# CONFIG_IP_VS is not set
+
+#
+# IP: Netfilter Configuration
+#
+CONFIG_NF_DEFRAG_IPV4=m
+CONFIG_NF_CONNTRACK_IPV4=m
+CONFIG_NF_CONNTRACK_PROC_COMPAT=y
+CONFIG_IP_NF_IPTABLES=m
+CONFIG_IP_NF_MATCH_AH=m
+CONFIG_IP_NF_MATCH_ECN=m
+# CONFIG_IP_NF_MATCH_RPFILTER is not set
+CONFIG_IP_NF_MATCH_TTL=m
+CONFIG_IP_NF_FILTER=m
+CONFIG_IP_NF_TARGET_REJECT=m
+CONFIG_IP_NF_TARGET_SYNPROXY=m
+CONFIG_IP_NF_TARGET_ULOG=m
+CONFIG_NF_NAT_IPV4=m
+CONFIG_IP_NF_TARGET_MASQUERADE=m
+CONFIG_IP_NF_TARGET_NETMAP=m
+CONFIG_IP_NF_TARGET_REDIRECT=m
+CONFIG_NF_NAT_SNMP_BASIC=m
+CONFIG_NF_NAT_PROTO_GRE=m
+CONFIG_NF_NAT_PPTP=m
+CONFIG_NF_NAT_H323=m
+CONFIG_IP_NF_MANGLE=m
+CONFIG_IP_NF_TARGET_CLUSTERIP=m
+CONFIG_IP_NF_TARGET_ECN=m
+CONFIG_IP_NF_TARGET_TTL=m
+CONFIG_IP_NF_RAW=m
+CONFIG_IP_NF_ARPTABLES=m
+CONFIG_IP_NF_ARPFILTER=m
+CONFIG_IP_NF_ARP_MANGLE=m
+# CONFIG_IP_DCCP is not set
+# CONFIG_IP_SCTP is not set
+# CONFIG_RDS is not set
+# CONFIG_TIPC is not set
+# CONFIG_ATM is not set
+# CONFIG_L2TP is not set
+# CONFIG_BRIDGE is not set
+CONFIG_HAVE_NET_DSA=y
+# 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_PHONET is not set
+# CONFIG_IEEE802154 is not set
+# CONFIG_NET_SCHED is not set
+# CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
+# CONFIG_BATMAN_ADV is not set
+# CONFIG_OPENVSWITCH is not set
+# CONFIG_VSOCKETS is not set
+# CONFIG_NETLINK_MMAP is not set
+# CONFIG_NETLINK_DIAG is not set
+# CONFIG_NET_MPLS_GSO is not set
+CONFIG_NET_RX_BUSY_POLL=y
+CONFIG_BQL=y
+# CONFIG_BPF_JIT is not set
+
+#
+# Network testing
+#
+# CONFIG_NET_PKTGEN is not set
+# CONFIG_NET_TCPPROBE is not set
+# CONFIG_NET_DROP_MONITOR is not set
+# CONFIG_HAMRADIO is not set
+# CONFIG_CAN is not set
+# CONFIG_IRDA is not set
+# CONFIG_BT is not set
+# CONFIG_AF_RXRPC is not set
+CONFIG_WIRELESS=y
+CONFIG_WIRELESS_EXT=y
+CONFIG_WEXT_CORE=y
+CONFIG_WEXT_PROC=y
+CONFIG_WEXT_SPY=y
+CONFIG_CFG80211=m
+# CONFIG_NL80211_TESTMODE is not set
+# CONFIG_CFG80211_DEVELOPER_WARNINGS is not set
+# CONFIG_CFG80211_REG_DEBUG is not set
+# CONFIG_CFG80211_CERTIFICATION_ONUS is not set
+CONFIG_CFG80211_DEFAULT_PS=y
+CONFIG_CFG80211_DEBUGFS=y
+# CONFIG_CFG80211_INTERNAL_REGDB is not set
+CONFIG_CFG80211_WEXT=y
+CONFIG_LIB80211=m
+# CONFIG_LIB80211_DEBUG is not set
+CONFIG_MAC80211=m
+CONFIG_MAC80211_HAS_RC=y
+CONFIG_MAC80211_RC_PID=y
+CONFIG_MAC80211_RC_MINSTREL=y
+CONFIG_MAC80211_RC_MINSTREL_HT=y
+CONFIG_MAC80211_RC_DEFAULT_PID=y
+# CONFIG_MAC80211_RC_DEFAULT_MINSTREL is not set
+CONFIG_MAC80211_RC_DEFAULT="pid"
+# CONFIG_MAC80211_MESH is not set
+# CONFIG_MAC80211_LEDS is not set
+CONFIG_MAC80211_DEBUGFS=y
+# CONFIG_MAC80211_MESSAGE_TRACING is not set
+# CONFIG_MAC80211_DEBUG_MENU is not set
+# CONFIG_WIMAX is not set
+CONFIG_RFKILL=y
+CONFIG_RFKILL_LEDS=y
+# CONFIG_RFKILL_INPUT is not set
+# CONFIG_RFKILL_REGULATOR is not set
+# CONFIG_RFKILL_GPIO is not set
+# CONFIG_NET_9P is not set
+# CONFIG_CAIF is not set
+# CONFIG_CEPH_LIB is not set
+# CONFIG_NFC is not set
+CONFIG_HAVE_BPF_JIT=y
+
+#
+# Device Drivers
+#
+
+#
+# Generic Driver Options
+#
+CONFIG_UEVENT_HELPER_PATH=""
+CONFIG_DEVTMPFS=y
+CONFIG_DEVTMPFS_MOUNT=y
+CONFIG_STANDALONE=y
+CONFIG_PREVENT_FIRMWARE_BUILD=y
+CONFIG_FW_LOADER=y
+# CONFIG_FIRMWARE_IN_KERNEL is not set
+CONFIG_EXTRA_FIRMWARE=""
+CONFIG_FW_LOADER_USER_HELPER=y
+# CONFIG_DEBUG_DRIVER is not set
+# CONFIG_DEBUG_DEVRES is not set
+# CONFIG_SYS_HYPERVISOR is not set
+# CONFIG_GENERIC_CPU_DEVICES is not set
+CONFIG_SOC_BUS=y
+CONFIG_REGMAP=y
+CONFIG_REGMAP_I2C=y
+CONFIG_REGMAP_MMIO=y
+CONFIG_DMA_SHARED_BUFFER=y
+# CONFIG_DMA_CMA is not set
+
+#
+# Bus devices
+#
+CONFIG_OMAP_OCP2SCP=y
+CONFIG_OMAP_INTERCONNECT=y
+# CONFIG_ARM_CCI is not set
+CONFIG_CONNECTOR=y
+CONFIG_PROC_EVENTS=y
+CONFIG_MTD=y
+# CONFIG_MTD_TESTS is not set
+# CONFIG_MTD_REDBOOT_PARTS is not set
+# CONFIG_MTD_CMDLINE_PARTS is not set
+# CONFIG_MTD_AFS_PARTS is not set
+CONFIG_MTD_OF_PARTS=y
+# CONFIG_MTD_AR7_PARTS is not set
+
+#
+# User Modules And Translation Layers
+#
+# CONFIG_MTD_BLKDEVS is not set
+# CONFIG_MTD_BLOCK is not set
+# CONFIG_MTD_BLOCK_RO is not set
+# CONFIG_FTL is not set
+# CONFIG_NFTL is not set
+# CONFIG_INFTL is not set
+# CONFIG_RFD_FTL is not set
+# CONFIG_SSFDC is not set
+# CONFIG_SM_FTL is not set
+# CONFIG_MTD_OOPS is not set
+# CONFIG_MTD_SWAP 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_SST25L 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_DOCG3 is not set
+# CONFIG_MTD_NAND is not set
+# CONFIG_MTD_ONENAND is not set
+
+#
+# LPDDR flash memory drivers
+#
+# CONFIG_MTD_LPDDR is not set
+CONFIG_MTD_UBI=y
+CONFIG_MTD_UBI_WL_THRESHOLD=4096
+CONFIG_MTD_UBI_BEB_LIMIT=20
+# CONFIG_MTD_UBI_FASTMAP is not set
+# CONFIG_MTD_UBI_GLUEBI is not set
+CONFIG_DTC=y
+CONFIG_OF=y
+
+#
+# Device Tree and Open Firmware support
+#
+CONFIG_PROC_DEVICETREE=y
+# CONFIG_OF_SELFTEST is not set
+CONFIG_OF_FLATTREE=y
+CONFIG_OF_EARLY_FLATTREE=y
+CONFIG_OF_ADDRESS=y
+CONFIG_OF_IRQ=y
+CONFIG_OF_NET=y
+CONFIG_OF_MDIO=y
+CONFIG_OF_MTD=y
+# 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_LOOP_MIN_COUNT=8
+# CONFIG_BLK_DEV_CRYPTOLOOP is not set
+# CONFIG_BLK_DEV_DRBD is not set
+# CONFIG_BLK_DEV_NBD is not set
+CONFIG_BLK_DEV_RAM=y
+CONFIG_BLK_DEV_RAM_COUNT=16
+CONFIG_BLK_DEV_RAM_SIZE=16384
+# CONFIG_BLK_DEV_XIP is not set
+# CONFIG_CDROM_PKTCDVD is not set
+# CONFIG_ATA_OVER_ETH is not set
+# CONFIG_MG_DISK is not set
+# CONFIG_BLK_DEV_RBD is not set
+
+#
+# Misc devices
+#
+# CONFIG_SENSORS_LIS3LV02D is not set
+# CONFIG_AD525X_DPOT is not set
+# CONFIG_ATMEL_PWM is not set
+# CONFIG_DUMMY_IRQ is not set
+# CONFIG_ICS932S401 is not set
+# CONFIG_ATMEL_SSC is not set
+# CONFIG_ENCLOSURE_SERVICES is not set
+# CONFIG_APDS9802ALS is not set
+# CONFIG_ISL29003 is not set
+# CONFIG_ISL29020 is not set
+# CONFIG_SENSORS_TSL2550 is not set
+# CONFIG_SENSORS_BH1780 is not set
+# CONFIG_SENSORS_BH1770 is not set
+# CONFIG_SENSORS_APDS990X is not set
+# CONFIG_HMC6352 is not set
+# CONFIG_DS1682 is not set
+# CONFIG_TI_DAC7512 is not set
+# CONFIG_BMP085_I2C is not set
+# CONFIG_BMP085_SPI is not set
+# CONFIG_USB_SWITCH_FSA9480 is not set
+# CONFIG_LATTICE_ECP3_CONFIG is not set
+# CONFIG_SRAM is not set
+CONFIG_CROSSBAR=y
+# CONFIG_C2PORT is not set
+
+#
+# EEPROM support
+#
+# CONFIG_EEPROM_AT24 is not set
+# CONFIG_EEPROM_AT25 is not set
+# CONFIG_EEPROM_LEGACY is not set
+# CONFIG_EEPROM_MAX6875 is not set
+CONFIG_EEPROM_93CX6=y
+# CONFIG_EEPROM_93XX46 is not set
+
+#
+# Texas Instruments shared transport line discipline
+#
+# CONFIG_TI_ST is not set
+# CONFIG_SENSORS_LIS3_SPI is not set
+# CONFIG_SENSORS_LIS3_I2C is not set
+
+#
+# Altera FPGA firmware download module
+#
+# CONFIG_ALTERA_STAPL is not set
+
+#
+# SCSI device support
+#
+CONFIG_SCSI_MOD=y
+# CONFIG_RAID_ATTRS is not set
+CONFIG_SCSI=y
+CONFIG_SCSI_DMA=y
+# CONFIG_SCSI_TGT is not set
+# CONFIG_SCSI_NETLINK is not set
+CONFIG_SCSI_PROC_FS=y
+
+#
+# SCSI support type (disk, tape, CD-ROM)
+#
+CONFIG_BLK_DEV_SD=y
+# CONFIG_CHR_DEV_ST is not set
+# CONFIG_CHR_DEV_OSST is not set
+# CONFIG_BLK_DEV_SR is not set
+# CONFIG_CHR_DEV_SG is not set
+# CONFIG_CHR_DEV_SCH is not set
+CONFIG_SCSI_MULTI_LUN=y
+# CONFIG_SCSI_CONSTANTS is not set
+# CONFIG_SCSI_LOGGING is not set
+CONFIG_SCSI_SCAN_ASYNC=y
+
+#
+# SCSI Transports
+#
+# CONFIG_SCSI_SPI_ATTRS is not set
+# CONFIG_SCSI_FC_ATTRS is not set
+# CONFIG_SCSI_ISCSI_ATTRS is not set
+# CONFIG_SCSI_SAS_ATTRS is not set
+# CONFIG_SCSI_SAS_LIBSAS is not set
+# CONFIG_SCSI_SRP_ATTRS is not set
+CONFIG_SCSI_LOWLEVEL=y
+# CONFIG_ISCSI_TCP is not set
+# CONFIG_ISCSI_BOOT_SYSFS is not set
+# CONFIG_SCSI_UFSHCD is not set
+# CONFIG_LIBFC is not set
+# CONFIG_LIBFCOE is not set
+# CONFIG_SCSI_DEBUG is not set
+# CONFIG_SCSI_DH is not set
+# CONFIG_SCSI_OSD_INITIATOR is not set
+# CONFIG_ATA is not set
+CONFIG_MD=y
+# CONFIG_BLK_DEV_MD is not set
+# CONFIG_BCACHE is not set
+# CONFIG_BLK_DEV_DM is not set
+# CONFIG_TARGET_CORE is not set
+CONFIG_NETDEVICES=y
+CONFIG_MII=m
+CONFIG_NET_CORE=y
+# CONFIG_BONDING is not set
+# CONFIG_DUMMY is not set
+# CONFIG_EQUALIZER is not set
+# CONFIG_NET_TEAM is not set
+# CONFIG_MACVLAN is not set
+# CONFIG_VXLAN is not set
+# CONFIG_NETCONSOLE is not set
+# CONFIG_NETPOLL is not set
+# CONFIG_NET_POLL_CONTROLLER is not set
+CONFIG_TUN=m
+# CONFIG_VETH is not set
+# CONFIG_NLMON is not set
+
+#
+# CAIF transport drivers
+#
+
+#
+# Distributed Switch Architecture drivers
+#
+# CONFIG_NET_DSA_MV88E6XXX is not set
+# CONFIG_NET_DSA_MV88E6060 is not set
+# CONFIG_NET_DSA_MV88E6XXX_NEED_PPU is not set
+# CONFIG_NET_DSA_MV88E6131 is not set
+# CONFIG_NET_DSA_MV88E6123_61_65 is not set
+CONFIG_ETHERNET=y
+# CONFIG_NET_VENDOR_ARC is not set
+# CONFIG_NET_CADENCE is not set
+# CONFIG_NET_VENDOR_BROADCOM is not set
+# CONFIG_NET_CALXEDA_XGMAC is not set
+# CONFIG_NET_VENDOR_CIRRUS is not set
+# CONFIG_DM9000 is not set
+# CONFIG_DNET is not set
+# CONFIG_NET_VENDOR_FARADAY is not set
+# CONFIG_NET_VENDOR_INTEL is not set
+# CONFIG_NET_VENDOR_MARVELL is not set
+# CONFIG_NET_VENDOR_MICREL is not set
+CONFIG_NET_VENDOR_MICROCHIP=y
+# CONFIG_ENC28J60 is not set
+# CONFIG_NET_VENDOR_NATSEMI is not set
+# CONFIG_ETHOC is not set
+# CONFIG_SH_ETH is not set
+# CONFIG_NET_VENDOR_SEEQ is not set
+# CONFIG_NET_VENDOR_SMSC is not set
+# CONFIG_NET_VENDOR_STMICRO is not set
+CONFIG_NET_VENDOR_TI=y
+# CONFIG_TI_DAVINCI_EMAC is not set
+CONFIG_TI_DAVINCI_MDIO=y
+CONFIG_TI_DAVINCI_CPDMA=y
+CONFIG_TI_CPSW_PHY_SEL=y
+CONFIG_TI_CPSW=y
+CONFIG_TI_CPTS=y
+# CONFIG_NET_VENDOR_VIA is not set
+# CONFIG_NET_VENDOR_WIZNET is not set
+CONFIG_PHYLIB=y
+
+#
+# MII PHY device drivers
+#
+CONFIG_AT803X_PHY=y
+# CONFIG_AMD_PHY is not set
+# CONFIG_MARVELL_PHY is not set
+# CONFIG_DAVICOM_PHY is not set
+# CONFIG_QSEMI_PHY is not set
+# CONFIG_LXT_PHY is not set
+# CONFIG_CICADA_PHY is not set
+# CONFIG_VITESSE_PHY is not set
+CONFIG_SMSC_PHY=y
+# CONFIG_BROADCOM_PHY is not set
+# CONFIG_BCM87XX_PHY is not set
+# CONFIG_ICPLUS_PHY is not set
+# CONFIG_REALTEK_PHY is not set
+# CONFIG_NATIONAL_PHY is not set
+# CONFIG_STE10XP is not set
+# CONFIG_LSI_ET1011C_PHY is not set
+# CONFIG_MICREL_PHY is not set
+# CONFIG_FIXED_PHY is not set
+# CONFIG_MDIO_BITBANG is not set
+# CONFIG_MDIO_BUS_MUX_GPIO is not set
+# CONFIG_MDIO_BUS_MUX_MMIOREG is not set
+# CONFIG_MICREL_KS8995MA is not set
+CONFIG_PPP=m
+CONFIG_PPP_BSDCOMP=m
+# CONFIG_PPP_DEFLATE is not set
+# CONFIG_PPP_FILTER is not set
+# CONFIG_PPP_MPPE is not set
+# CONFIG_PPP_MULTILINK is not set
+CONFIG_PPPOE=m
+CONFIG_PPP_ASYNC=m
+# CONFIG_PPP_SYNC_TTY is not set
+# CONFIG_SLIP is not set
+CONFIG_SLHC=m
+
+#
+# USB Network Adapters
+#
+CONFIG_USB_CATC=m
+CONFIG_USB_KAWETH=m
+CONFIG_USB_PEGASUS=m
+CONFIG_USB_RTL8150=m
+CONFIG_USB_RTL8152=m
+CONFIG_USB_USBNET=m
+CONFIG_USB_NET_AX8817X=m
+CONFIG_USB_NET_AX88179_178A=m
+CONFIG_USB_NET_CDCETHER=m
+# CONFIG_USB_NET_CDC_EEM is not set
+CONFIG_USB_NET_CDC_NCM=m
+# CONFIG_USB_NET_CDC_MBIM is not set
+# CONFIG_USB_NET_DM9601 is not set
+# CONFIG_USB_NET_SR9700 is not set
+# CONFIG_USB_NET_SMSC75XX is not set
+# CONFIG_USB_NET_SMSC95XX is not set
+# CONFIG_USB_NET_GL620A is not set
+CONFIG_USB_NET_NET1080=m
+# CONFIG_USB_NET_PLUSB is not set
+# CONFIG_USB_NET_MCS7830 is not set
+CONFIG_USB_NET_RNDIS_HOST=m
+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_USB_NET_CX82310_ETH is not set
+# CONFIG_USB_NET_KALMIA is not set
+# CONFIG_USB_NET_QMI_WWAN is not set
+CONFIG_USB_HSO=m
+CONFIG_USB_NET_INT51X1=m
+# CONFIG_USB_IPHETH is not set
+# CONFIG_USB_SIERRA_NET is not set
+# CONFIG_USB_VL600 is not set
+CONFIG_WLAN=y
+CONFIG_LIBERTAS_THINFIRM=m
+# CONFIG_LIBERTAS_THINFIRM_DEBUG is not set
+CONFIG_LIBERTAS_THINFIRM_USB=m
+# CONFIG_AT76C50X_USB is not set
+# CONFIG_USB_ZD1201 is not set
+CONFIG_USB_NET_RNDIS_WLAN=m
+CONFIG_RTL8187=m
+# CONFIG_MAC80211_HWSIM is not set
+# CONFIG_ATH_CARDS is not set
+CONFIG_B43=m
+CONFIG_B43_SSB=y
+# CONFIG_B43_SDIO is not set
+CONFIG_B43_PIO=y
+CONFIG_B43_PHY_N=y
+CONFIG_B43_PHY_LP=y
+CONFIG_B43_HWRNG=y
+# CONFIG_B43_DEBUG is not set
+# CONFIG_B43LEGACY is not set
+# CONFIG_BRCMFMAC is not set
+# CONFIG_HOSTAP is not set
+CONFIG_LIBERTAS=m
+CONFIG_LIBERTAS_USB=m
+CONFIG_LIBERTAS_SDIO=m
+CONFIG_LIBERTAS_SPI=m
+# CONFIG_LIBERTAS_DEBUG is not set
+# CONFIG_LIBERTAS_MESH is not set
+# CONFIG_P54_COMMON is not set
+CONFIG_RT2X00=m
+CONFIG_RT2500USB=m
+CONFIG_RT73USB=m
+CONFIG_RT2800USB=m
+CONFIG_RT2800USB_RT33XX=y
+CONFIG_RT2800USB_RT35XX=y
+CONFIG_RT2800USB_RT3573=y
+CONFIG_RT2800USB_RT53XX=y
+CONFIG_RT2800USB_RT55XX=y
+CONFIG_RT2800USB_UNKNOWN=y
+CONFIG_RT2800_LIB=m
+CONFIG_RT2X00_LIB_USB=m
+CONFIG_RT2X00_LIB=m
+CONFIG_RT2X00_LIB_FIRMWARE=y
+CONFIG_RT2X00_LIB_CRYPTO=y
+CONFIG_RT2X00_LIB_LEDS=y
+# CONFIG_RT2X00_LIB_DEBUGFS is not set
+# CONFIG_RT2X00_DEBUG is not set
+CONFIG_RTL_CARDS=m
+CONFIG_RTL8192CU=m
+CONFIG_RTLWIFI=m
+CONFIG_RTLWIFI_USB=m
+# CONFIG_RTLWIFI_DEBUG is not set
+CONFIG_RTL8192C_COMMON=m
+# CONFIG_WL_TI is not set
+# CONFIG_ZD1211RW is not set
+CONFIG_MWIFIEX=m
+CONFIG_MWIFIEX_SDIO=m
+CONFIG_MWIFIEX_USB=m
+# CONFIG_CW1200 is not set
+
+#
+# Enable WiMAX (Networking options) to see the WiMAX drivers
+#
+# CONFIG_WAN is not set
+# CONFIG_ISDN is not set
+
+#
+# Input device support
+#
+CONFIG_INPUT=y
+# CONFIG_INPUT_FF_MEMLESS is not set
+CONFIG_INPUT_POLLDEV=m
+# CONFIG_INPUT_SPARSEKMAP is not set
+CONFIG_INPUT_MATRIXKMAP=y
+
+#
+# Userland interfaces
+#
+CONFIG_INPUT_MOUSEDEV=y
+CONFIG_INPUT_MOUSEDEV_PSAUX=y
+CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024
+CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768
+CONFIG_INPUT_JOYDEV=y
+CONFIG_INPUT_EVDEV=y
+# CONFIG_INPUT_EVBUG is not set
+
+#
+# Input Device Drivers
+#
+CONFIG_INPUT_KEYBOARD=y
+# CONFIG_KEYBOARD_ADP5588 is not set
+# CONFIG_KEYBOARD_ADP5589 is not set
+CONFIG_KEYBOARD_ATKBD=y
+# CONFIG_KEYBOARD_QT1070 is not set
+# CONFIG_KEYBOARD_QT2160 is not set
+# CONFIG_KEYBOARD_LKKBD is not set
+# CONFIG_KEYBOARD_GPIO is not set
+# CONFIG_KEYBOARD_TCA6416 is not set
+# CONFIG_KEYBOARD_TCA8418 is not set
+# CONFIG_KEYBOARD_MATRIX is not set
+# CONFIG_KEYBOARD_LM8323 is not set
+# CONFIG_KEYBOARD_LM8333 is not set
+# CONFIG_KEYBOARD_MAX7359 is not set
+# CONFIG_KEYBOARD_MCS is not set
+# CONFIG_KEYBOARD_MPR121 is not set
+# CONFIG_KEYBOARD_NEWTON is not set
+# CONFIG_KEYBOARD_OPENCORES is not set
+# CONFIG_KEYBOARD_SAMSUNG is not set
+# CONFIG_KEYBOARD_STOWAWAY is not set
+# CONFIG_KEYBOARD_SUNKBD is not set
+# CONFIG_KEYBOARD_OMAP4 is not set
+# CONFIG_KEYBOARD_XTKBD is not set
+CONFIG_INPUT_MOUSE=y
+CONFIG_MOUSE_PS2=y
+CONFIG_MOUSE_PS2_ALPS=y
+CONFIG_MOUSE_PS2_LOGIPS2PP=y
+CONFIG_MOUSE_PS2_SYNAPTICS=y
+CONFIG_MOUSE_PS2_CYPRESS=y
+CONFIG_MOUSE_PS2_TRACKPOINT=y
+# CONFIG_MOUSE_PS2_ELANTECH is not set
+# CONFIG_MOUSE_PS2_SENTELIC is not set
+# CONFIG_MOUSE_PS2_TOUCHKIT is not set
+# CONFIG_MOUSE_SERIAL is not set
+# CONFIG_MOUSE_APPLETOUCH is not set
+# CONFIG_MOUSE_BCM5974 is not set
+# CONFIG_MOUSE_CYAPA is not set
+# CONFIG_MOUSE_VSXXXAA is not set
+# CONFIG_MOUSE_GPIO is not set
+# CONFIG_MOUSE_SYNAPTICS_I2C is not set
+# CONFIG_MOUSE_SYNAPTICS_USB 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_AD7877 is not set
+# CONFIG_TOUCHSCREEN_AD7879 is not set
+CONFIG_TOUCHSCREEN_ATMEL_MXT=y
+# CONFIG_TOUCHSCREEN_AUO_PIXCIR is not set
+# CONFIG_TOUCHSCREEN_BU21013 is not set
+# CONFIG_TOUCHSCREEN_CY8CTMG110 is not set
+# CONFIG_TOUCHSCREEN_CYTTSP_CORE is not set
+# CONFIG_TOUCHSCREEN_CYTTSP4_CORE is not set
+# CONFIG_TOUCHSCREEN_DYNAPRO is not set
+# CONFIG_TOUCHSCREEN_HAMPSHIRE is not set
+# CONFIG_TOUCHSCREEN_EETI is not set
+# CONFIG_TOUCHSCREEN_EGALAX is not set
+CONFIG_TOUCHSCREEN_EGALAX_I2C=m
+# CONFIG_TOUCHSCREEN_FUJITSU is not set
+# CONFIG_TOUCHSCREEN_ILI210X is not set
+# CONFIG_TOUCHSCREEN_GUNZE is not set
+# CONFIG_TOUCHSCREEN_ELO is not set
+# CONFIG_TOUCHSCREEN_WACOM_W8001 is not set
+# CONFIG_TOUCHSCREEN_WACOM_I2C is not set
+# CONFIG_TOUCHSCREEN_MAX11801 is not set
+# CONFIG_TOUCHSCREEN_MCS5000 is not set
+# CONFIG_TOUCHSCREEN_MMS114 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_EDT_FT5X06=m
+# CONFIG_TOUCHSCREEN_TOUCHRIGHT is not set
+# CONFIG_TOUCHSCREEN_TOUCHWIN is not set
+CONFIG_TOUCHSCREEN_TI_AM335X_TSC=m
+CONFIG_TOUCHSCREEN_PIXCIR=m
+# CONFIG_TOUCHSCREEN_USB_COMPOSITE is not set
+# CONFIG_TOUCHSCREEN_TOUCHIT213 is not set
+# CONFIG_TOUCHSCREEN_TSC_SERIO is not set
+# CONFIG_TOUCHSCREEN_TSC2005 is not set
+# CONFIG_TOUCHSCREEN_TSC2007 is not set
+# CONFIG_TOUCHSCREEN_W90X900 is not set
+# CONFIG_TOUCHSCREEN_ST1232 is not set
+# CONFIG_TOUCHSCREEN_TPS6507X is not set
+CONFIG_INPUT_MISC=y
+# CONFIG_INPUT_AD714X is not set
+# CONFIG_INPUT_BMA150 is not set
+# CONFIG_INPUT_MMA8450 is not set
+# CONFIG_INPUT_MPU3050 is not set
+# CONFIG_INPUT_GP2A is not set
+# CONFIG_INPUT_GPIO_TILT_POLLED is not set
+# CONFIG_INPUT_ATI_REMOTE2 is not set
+# CONFIG_INPUT_KEYSPAN_REMOTE is not set
+# CONFIG_INPUT_KXTJ9 is not set
+# CONFIG_INPUT_POWERMATE is not set
+# CONFIG_INPUT_YEALINK is not set
+# CONFIG_INPUT_CM109 is not set
+CONFIG_INPUT_UINPUT=y
+# CONFIG_INPUT_PCF8574 is not set
+CONFIG_INPUT_PWM_BEEPER=m
+# CONFIG_INPUT_GPIO_ROTARY_ENCODER is not set
+# CONFIG_INPUT_ADXL34X is not set
+# CONFIG_INPUT_IMS_PCU is not set
+# CONFIG_INPUT_CMA3000 is not set
+
+#
+# Hardware I/O ports
+#
+CONFIG_SERIO=y
+CONFIG_SERIO_SERPORT=y
+CONFIG_SERIO_LIBPS2=y
+# CONFIG_SERIO_RAW is not set
+# CONFIG_SERIO_ALTERA_PS2 is not set
+# CONFIG_SERIO_PS2MULT is not set
+# CONFIG_SERIO_ARC_PS2 is not set
+# CONFIG_SERIO_APBPS2 is not set
+# CONFIG_SERIO_OLPC_APSP is not set
+# CONFIG_GAMEPORT is not set
+
+#
+# Character devices
+#
+CONFIG_TTY=y
+CONFIG_VT=y
+CONFIG_CONSOLE_TRANSLATIONS=y
+CONFIG_VT_CONSOLE=y
+CONFIG_VT_CONSOLE_SLEEP=y
+CONFIG_HW_CONSOLE=y
+CONFIG_VT_HW_CONSOLE_BINDING=y
+CONFIG_UNIX98_PTYS=y
+# CONFIG_DEVPTS_MULTIPLE_INSTANCES is not set
+# CONFIG_LEGACY_PTYS is not set
+# CONFIG_SERIAL_NONSTANDARD is not set
+# CONFIG_N_GSM is not set
+# CONFIG_TRACE_SINK is not set
+CONFIG_DEVKMEM=y
+
+#
+# Serial drivers
+#
+CONFIG_SERIAL_8250=y
+CONFIG_SERIAL_8250_DEPRECATED_OPTIONS=y
+CONFIG_SERIAL_8250_CONSOLE=y
+CONFIG_SERIAL_8250_DMA=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
+# CONFIG_SERIAL_8250_DW is not set
+# CONFIG_SERIAL_8250_EM is not set
+
+#
+# Non-8250 serial port support
+#
+# CONFIG_SERIAL_MAX3100 is not set
+# CONFIG_SERIAL_MAX310X is not set
+CONFIG_SERIAL_CORE=y
+CONFIG_SERIAL_CORE_CONSOLE=y
+# CONFIG_SERIAL_OF_PLATFORM is not set
+CONFIG_SERIAL_OMAP=y
+CONFIG_SERIAL_OMAP_CONSOLE=y
+# CONFIG_SERIAL_SCCNXP is not set
+# CONFIG_SERIAL_TIMBERDALE is not set
+# CONFIG_SERIAL_ALTERA_JTAGUART is not set
+# CONFIG_SERIAL_ALTERA_UART is not set
+# CONFIG_SERIAL_IFX6X60 is not set
+# CONFIG_SERIAL_XILINX_PS_UART is not set
+# CONFIG_SERIAL_ARC is not set
+# CONFIG_SERIAL_FSL_LPUART is not set
+# CONFIG_SERIAL_ST_ASC is not set
+# CONFIG_TTY_PRINTK is not set
+# CONFIG_HVC_DCC is not set
+# CONFIG_IPMI_HANDLER is not set
+CONFIG_HW_RANDOM=y
+# CONFIG_HW_RANDOM_TIMERIOMEM is not set
+# CONFIG_HW_RANDOM_ATMEL is not set
+CONFIG_HW_RANDOM_OMAP=y
+# CONFIG_HW_RANDOM_EXYNOS 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_COMPAT is not set
+CONFIG_I2C_CHARDEV=y
+# CONFIG_I2C_MUX is not set
+CONFIG_I2C_HELPER_AUTO=y
+
+#
+# I2C Hardware Bus support
+#
+
+#
+# I2C system bus drivers (mostly embedded / system-on-chip)
+#
+# CONFIG_I2C_CBUS_GPIO is not set
+# CONFIG_I2C_DESIGNWARE_PLATFORM is not set
+# CONFIG_I2C_GPIO is not set
+# CONFIG_I2C_OCORES is not set
+CONFIG_I2C_OMAP=y
+# CONFIG_I2C_PCA_PLATFORM is not set
+# CONFIG_I2C_PXA_PCI is not set
+# CONFIG_I2C_SIMTEC is not set
+# CONFIG_I2C_XILINX is not set
+
+#
+# External I2C/SMBus adapter drivers
+#
+# CONFIG_I2C_DIOLAN_U2C is not set
+# 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_STUB 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_SPI=y
+# CONFIG_SPI_DEBUG is not set
+CONFIG_SPI_MASTER=y
+
+#
+# SPI Master Controller Drivers
+#
+# CONFIG_SPI_ALTERA is not set
+# CONFIG_SPI_BITBANG is not set
+# CONFIG_SPI_GPIO is not set
+# CONFIG_SPI_FSL_SPI is not set
+# CONFIG_SPI_FSL_DSPI is not set
+# CONFIG_SPI_OC_TINY is not set
+CONFIG_SPI_OMAP24XX=y
+CONFIG_SPI_TI_QSPI=y
+# CONFIG_SPI_PXA2XX_PCI is not set
+# CONFIG_SPI_SC18IS602 is not set
+# CONFIG_SPI_XCOMM is not set
+# CONFIG_SPI_XILINX is not set
+# CONFIG_SPI_DESIGNWARE is not set
+
+#
+# SPI Protocol Masters
+#
+CONFIG_SPI_SPIDEV=y
+# CONFIG_SPI_TLE62X0 is not set
+# CONFIG_HSI is not set
+
+#
+# PPS support
+#
+CONFIG_PPS=y
+# CONFIG_PPS_DEBUG is not set
+
+#
+# PPS clients support
+#
+# CONFIG_PPS_CLIENT_KTIMER is not set
+# CONFIG_PPS_CLIENT_LDISC is not set
+# CONFIG_PPS_CLIENT_GPIO is not set
+
+#
+# PPS generators support
+#
+
+#
+# PTP clock support
+#
+CONFIG_PTP_1588_CLOCK=y
+
+#
+# Enable PHYLIB and NETWORK_PHY_TIMESTAMPING to see the additional clocks.
+#
+CONFIG_PINCTRL=y
+
+#
+# Pin controllers
+#
+CONFIG_PINMUX=y
+CONFIG_PINCONF=y
+CONFIG_GENERIC_PINCONF=y
+# CONFIG_DEBUG_PINCTRL is not set
+CONFIG_PINCTRL_SINGLE=y
+CONFIG_ARCH_HAVE_CUSTOM_GPIO_H=y
+CONFIG_ARCH_REQUIRE_GPIOLIB=y
+CONFIG_GPIO_DEVRES=y
+CONFIG_GPIOLIB=y
+CONFIG_OF_GPIO=y
+CONFIG_DEBUG_GPIO=y
+CONFIG_GPIO_SYSFS=y
+CONFIG_GPIO_OF_HELPER=y
+
+#
+# Memory mapped GPIO drivers:
+#
+# CONFIG_GPIO_GENERIC_PLATFORM is not set
+# CONFIG_GPIO_EM is not set
+# CONFIG_GPIO_RCAR is not set
+# CONFIG_GPIO_TS5500 is not set
+# CONFIG_GPIO_GRGPIO is not set
+
+#
+# I2C GPIO expanders:
+#
+# CONFIG_GPIO_MAX7300 is not set
+# CONFIG_GPIO_MAX732X is not set
+# CONFIG_GPIO_PCF857X is not set
+# CONFIG_GPIO_SX150X is not set
+# CONFIG_GPIO_ADP5588 is not set
+# CONFIG_GPIO_ADNP is not set
+
+#
+# PCI GPIO expanders:
+#
+
+#
+# SPI GPIO expanders:
+#
+# CONFIG_GPIO_MAX7301 is not set
+# CONFIG_GPIO_MCP23S08 is not set
+# CONFIG_GPIO_MC33880 is not set
+# CONFIG_GPIO_74X164 is not set
+
+#
+# AC97 GPIO expanders:
+#
+
+#
+# LPC GPIO expanders:
+#
+
+#
+# MODULbus GPIO expanders:
+#
+
+#
+# USB GPIO expanders:
+#
+CONFIG_W1=y
+CONFIG_W1_CON=y
+
+#
+# 1-wire Bus Masters
+#
+# CONFIG_W1_MASTER_DS2490 is not set
+# CONFIG_W1_MASTER_DS2482 is not set
+# CONFIG_W1_MASTER_DS1WM is not set
+# CONFIG_W1_MASTER_GPIO is not set
+# CONFIG_HDQ_MASTER_OMAP is not set
+
+#
+# 1-wire Slaves
+#
+# CONFIG_W1_SLAVE_THERM is not set
+# CONFIG_W1_SLAVE_SMEM is not set
+# CONFIG_W1_SLAVE_DS2408 is not set
+# CONFIG_W1_SLAVE_DS2413 is not set
+# CONFIG_W1_SLAVE_DS2423 is not set
+# CONFIG_W1_SLAVE_DS2431 is not set
+# CONFIG_W1_SLAVE_DS2433 is not set
+# CONFIG_W1_SLAVE_DS2760 is not set
+# CONFIG_W1_SLAVE_DS2780 is not set
+# CONFIG_W1_SLAVE_DS2781 is not set
+# CONFIG_W1_SLAVE_DS28E04 is not set
+# CONFIG_W1_SLAVE_BQ27000 is not set
+CONFIG_POWER_SUPPLY=y
+# CONFIG_POWER_SUPPLY_DEBUG is not set
+# CONFIG_PDA_POWER is not set
+# CONFIG_TEST_POWER is not set
+# CONFIG_BATTERY_DS2780 is not set
+# CONFIG_BATTERY_DS2781 is not set
+# CONFIG_BATTERY_DS2782 is not set
+# CONFIG_BATTERY_SBS is not set
+# CONFIG_BATTERY_BQ27x00 is not set
+# CONFIG_BATTERY_MAX17040 is not set
+# CONFIG_BATTERY_MAX17042 is not set
+# CONFIG_CHARGER_ISP1704 is not set
+# CONFIG_CHARGER_MAX8903 is not set
+# CONFIG_CHARGER_LP8727 is not set
+# CONFIG_CHARGER_GPIO is not set
+# CONFIG_CHARGER_MANAGER is not set
+# CONFIG_CHARGER_BQ2415X is not set
+# CONFIG_CHARGER_BQ24190 is not set
+# CONFIG_CHARGER_SMB347 is not set
+# CONFIG_POWER_RESET is not set
+# CONFIG_POWER_RESET_RESTART is not set
+# CONFIG_POWER_AVS is not set
+CONFIG_HWMON=y
+# CONFIG_HWMON_VID is not set
+# CONFIG_HWMON_DEBUG_CHIP is not set
+
+#
+# Native drivers
+#
+# CONFIG_SENSORS_AD7314 is not set
+# CONFIG_SENSORS_AD7414 is not set
+# CONFIG_SENSORS_AD7418 is not set
+# CONFIG_SENSORS_ADCXX is not set
+# CONFIG_SENSORS_ADM1021 is not set
+# CONFIG_SENSORS_ADM1025 is not set
+# CONFIG_SENSORS_ADM1026 is not set
+# CONFIG_SENSORS_ADM1029 is not set
+# CONFIG_SENSORS_ADM1031 is not set
+# CONFIG_SENSORS_ADM9240 is not set
+# CONFIG_SENSORS_ADT7310 is not set
+# CONFIG_SENSORS_ADT7410 is not set
+# CONFIG_SENSORS_ADT7411 is not set
+# CONFIG_SENSORS_ADT7462 is not set
+# CONFIG_SENSORS_ADT7470 is not set
+# CONFIG_SENSORS_ADT7475 is not set
+# CONFIG_SENSORS_ASC7621 is not set
+# CONFIG_SENSORS_ATXP1 is not set
+# CONFIG_SENSORS_DS620 is not set
+# CONFIG_SENSORS_DS1621 is not set
+# CONFIG_SENSORS_F71805F is not set
+# CONFIG_SENSORS_F71882FG is not set
+# CONFIG_SENSORS_F75375S is not set
+# CONFIG_SENSORS_G760A is not set
+# CONFIG_SENSORS_G762 is not set
+# CONFIG_SENSORS_GL518SM is not set
+# CONFIG_SENSORS_GL520SM is not set
+# CONFIG_SENSORS_GPIO_FAN is not set
+# CONFIG_SENSORS_HIH6130 is not set
+# CONFIG_SENSORS_HTU21 is not set
+# CONFIG_SENSORS_IT87 is not set
+# CONFIG_SENSORS_JC42 is not set
+# CONFIG_SENSORS_LINEAGE is not set
+# CONFIG_SENSORS_LM63 is not set
+# CONFIG_SENSORS_LM70 is not set
+# CONFIG_SENSORS_LM73 is not set
+# CONFIG_SENSORS_LM75 is not set
+# CONFIG_SENSORS_LM77 is not set
+# CONFIG_SENSORS_LM78 is not set
+# CONFIG_SENSORS_LM80 is not set
+# CONFIG_SENSORS_LM83 is not set
+# CONFIG_SENSORS_LM85 is not set
+# CONFIG_SENSORS_LM87 is not set
+# CONFIG_SENSORS_LM90 is not set
+# CONFIG_SENSORS_LM92 is not set
+# CONFIG_SENSORS_LM93 is not set
+# CONFIG_SENSORS_LTC4151 is not set
+# CONFIG_SENSORS_LTC4215 is not set
+# CONFIG_SENSORS_LTC4245 is not set
+# CONFIG_SENSORS_LTC4261 is not set
+# CONFIG_SENSORS_LM95234 is not set
+# CONFIG_SENSORS_LM95241 is not set
+# CONFIG_SENSORS_LM95245 is not set
+# CONFIG_SENSORS_MAX1111 is not set
+# CONFIG_SENSORS_MAX16065 is not set
+# CONFIG_SENSORS_MAX1619 is not set
+# CONFIG_SENSORS_MAX1668 is not set
+# CONFIG_SENSORS_MAX197 is not set
+# CONFIG_SENSORS_MAX6639 is not set
+# CONFIG_SENSORS_MAX6642 is not set
+# CONFIG_SENSORS_MAX6650 is not set
+# CONFIG_SENSORS_MAX6697 is not set
+# CONFIG_SENSORS_MCP3021 is not set
+# CONFIG_SENSORS_NCT6775 is not set
+# CONFIG_SENSORS_PC87360 is not set
+# CONFIG_SENSORS_PC87427 is not set
+# CONFIG_SENSORS_PCF8591 is not set
+# CONFIG_PMBUS is not set
+# CONFIG_SENSORS_SHT15 is not set
+# CONFIG_SENSORS_SHT21 is not set
+# CONFIG_SENSORS_SMM665 is not set
+# CONFIG_SENSORS_DME1737 is not set
+# CONFIG_SENSORS_EMC1403 is not set
+# CONFIG_SENSORS_EMC2103 is not set
+# CONFIG_SENSORS_EMC6W201 is not set
+# CONFIG_SENSORS_SMSC47M1 is not set
+# CONFIG_SENSORS_SMSC47M192 is not set
+# CONFIG_SENSORS_SMSC47B397 is not set
+# CONFIG_SENSORS_SCH56XX_COMMON is not set
+# CONFIG_SENSORS_SCH5627 is not set
+# CONFIG_SENSORS_SCH5636 is not set
+# CONFIG_SENSORS_ADS1015 is not set
+# CONFIG_SENSORS_ADS7828 is not set
+# CONFIG_SENSORS_ADS7871 is not set
+# CONFIG_SENSORS_AMC6821 is not set
+# CONFIG_SENSORS_INA209 is not set
+# CONFIG_SENSORS_INA2XX is not set
+# CONFIG_SENSORS_THMC50 is not set
+# CONFIG_SENSORS_TMP102 is not set
+# CONFIG_SENSORS_TMP401 is not set
+# CONFIG_SENSORS_TMP421 is not set
+# CONFIG_SENSORS_VT1211 is not set
+# CONFIG_SENSORS_W83781D is not set
+# CONFIG_SENSORS_W83791D is not set
+# CONFIG_SENSORS_W83792D is not set
+# CONFIG_SENSORS_W83793 is not set
+# CONFIG_SENSORS_W83795 is not set
+# CONFIG_SENSORS_W83L785TS is not set
+# CONFIG_SENSORS_W83L786NG is not set
+# CONFIG_SENSORS_W83627HF is not set
+# CONFIG_SENSORS_W83627EHF is not set
+CONFIG_THERMAL=y
+CONFIG_THERMAL_HWMON=y
+CONFIG_THERMAL_DEFAULT_GOV_STEP_WISE=y
+# CONFIG_THERMAL_DEFAULT_GOV_FAIR_SHARE is not set
+# CONFIG_THERMAL_DEFAULT_GOV_USER_SPACE is not set
+CONFIG_THERMAL_GOV_FAIR_SHARE=y
+CONFIG_THERMAL_GOV_STEP_WISE=y
+CONFIG_THERMAL_GOV_USER_SPACE=y
+CONFIG_CPU_THERMAL=y
+# CONFIG_THERMAL_EMULATION is not set
+# CONFIG_IMX_THERMAL is not set
+
+#
+# Texas Instruments thermal drivers
+#
+CONFIG_TI_SOC_THERMAL=y
+CONFIG_TI_THERMAL=y
+# CONFIG_OMAP4_THERMAL is not set
+CONFIG_WATCHDOG=y
+CONFIG_WATCHDOG_CORE=y
+# CONFIG_WATCHDOG_NOWAYOUT is not set
+
+#
+# Watchdog Device Drivers
+#
+# CONFIG_SOFT_WATCHDOG is not set
+# CONFIG_DW_WATCHDOG is not set
+CONFIG_OMAP_WATCHDOG=y
+# CONFIG_MAX63XX_WATCHDOG is not set
+# CONFIG_MEN_A21_WDT is not set
+
+#
+# USB-based Watchdog Cards
+#
+# CONFIG_USBPCWATCHDOG is not set
+CONFIG_SSB_POSSIBLE=y
+
+#
+# Sonics Silicon Backplane
+#
+CONFIG_SSB=m
+CONFIG_SSB_BLOCKIO=y
+CONFIG_SSB_SDIOHOST_POSSIBLE=y
+# CONFIG_SSB_SDIOHOST is not set
+# CONFIG_SSB_SILENT is not set
+# CONFIG_SSB_DEBUG is not set
+# CONFIG_SSB_DRIVER_GPIO is not set
+CONFIG_BCMA_POSSIBLE=y
+
+#
+# Broadcom specific AMBA
+#
+# CONFIG_BCMA is not set
+
+#
+# Multifunction device drivers
+#
+CONFIG_MFD_CORE=y
+# CONFIG_MFD_AS3711 is not set
+# CONFIG_PMIC_ADP5520 is not set
+# CONFIG_MFD_AAT2870_CORE is not set
+# CONFIG_MFD_CROS_EC is not set
+# CONFIG_MFD_ASIC3 is not set
+# CONFIG_PMIC_DA903X is not set
+# CONFIG_MFD_DA9052_SPI is not set
+# CONFIG_MFD_DA9052_I2C is not set
+# CONFIG_MFD_DA9055 is not set
+# CONFIG_MFD_DA9063 is not set
+# CONFIG_MFD_MC13XXX_SPI is not set
+# CONFIG_MFD_MC13XXX_I2C is not set
+# CONFIG_HTC_EGPIO is not set
+# CONFIG_HTC_PASIC3 is not set
+# CONFIG_HTC_I2CPLD is not set
+# CONFIG_MFD_KEMPLD is not set
+# CONFIG_MFD_88PM800 is not set
+# CONFIG_MFD_88PM805 is not set
+# CONFIG_MFD_88PM860X is not set
+# CONFIG_MFD_MAX77686 is not set
+# CONFIG_MFD_MAX77693 is not set
+# CONFIG_MFD_MAX8907 is not set
+# CONFIG_MFD_MAX8925 is not set
+# CONFIG_MFD_MAX8997 is not set
+# CONFIG_MFD_MAX8998 is not set
+# CONFIG_EZX_PCAP is not set
+# CONFIG_MFD_VIPERBOARD is not set
+# CONFIG_MFD_RETU is not set
+# CONFIG_MFD_PCF50633 is not set
+# CONFIG_MFD_RC5T583 is not set
+# CONFIG_MFD_SEC_CORE is not set
+# CONFIG_MFD_SI476X_CORE is not set
+# CONFIG_MFD_SM501 is not set
+# CONFIG_MFD_SMSC is not set
+# CONFIG_ABX500_CORE is not set
+# CONFIG_MFD_STMPE is not set
+CONFIG_MFD_SYSCON=y
+CONFIG_MFD_TI_AM335X_TSCADC=y
+# CONFIG_MFD_LP8788 is not set
+CONFIG_MFD_OMAP_USB_HOST=y
+# CONFIG_MFD_PALMAS is not set
+# CONFIG_TPS6105X is not set
+# CONFIG_TPS65010 is not set
+# CONFIG_TPS6507X is not set
+# CONFIG_MFD_TPS65090 is not set
+CONFIG_MFD_TPS65217=y
+# CONFIG_MFD_TPS65218 is not set
+# CONFIG_MFD_TPS6586X is not set
+# CONFIG_MFD_TPS65910 is not set
+# CONFIG_MFD_TPS65912 is not set
+# CONFIG_MFD_TPS65912_I2C is not set
+# CONFIG_MFD_TPS65912_SPI is not set
+# CONFIG_MFD_TPS80031 is not set
+# CONFIG_TWL4030_CORE is not set
+# CONFIG_TWL6040_CORE is not set
+# CONFIG_MFD_WL1273_CORE is not set
+# CONFIG_MFD_LM3533 is not set
+# CONFIG_MFD_TC3589X is not set
+# CONFIG_MFD_TMIO is not set
+# CONFIG_MFD_T7L66XB is not set
+# CONFIG_MFD_TC6387XB is not set
+# CONFIG_MFD_TC6393XB is not set
+# CONFIG_MFD_ARIZONA_I2C is not set
+# CONFIG_MFD_ARIZONA_SPI is not set
+# CONFIG_MFD_WM8400 is not set
+# CONFIG_MFD_WM831X_I2C is not set
+# CONFIG_MFD_WM831X_SPI is not set
+# CONFIG_MFD_WM8350_I2C is not set
+# CONFIG_MFD_WM8994 is not set
+# CONFIG_VEXPRESS_CONFIG is not set
+CONFIG_REGULATOR=y
+# CONFIG_REGULATOR_DEBUG is not set
+# CONFIG_REGULATOR_DUMMY is not set
+CONFIG_REGULATOR_FIXED_VOLTAGE=y
+# CONFIG_REGULATOR_VIRTUAL_CONSUMER is not set
+# CONFIG_REGULATOR_USERSPACE_CONSUMER is not set
+# CONFIG_REGULATOR_AD5398 is not set
+# CONFIG_REGULATOR_ANATOP is not set
+# CONFIG_REGULATOR_DA9210 is not set
+# CONFIG_REGULATOR_FAN53555 is not set
+# CONFIG_REGULATOR_GPIO is not set
+# CONFIG_REGULATOR_ISL6271A is not set
+# CONFIG_REGULATOR_LP3971 is not set
+# CONFIG_REGULATOR_LP3972 is not set
+# CONFIG_REGULATOR_LP872X is not set
+# CONFIG_REGULATOR_LP8755 is not set
+# CONFIG_REGULATOR_MAX1586 is not set
+# CONFIG_REGULATOR_MAX8649 is not set
+# CONFIG_REGULATOR_MAX8660 is not set
+# CONFIG_REGULATOR_MAX8952 is not set
+# CONFIG_REGULATOR_MAX8973 is not set
+CONFIG_REGULATOR_PBIAS=y
+# CONFIG_REGULATOR_PFUZE100 is not set
+# CONFIG_REGULATOR_TI_ABB is not set
+# CONFIG_REGULATOR_TPS51632 is not set
+# CONFIG_REGULATOR_TPS62360 is not set
+# CONFIG_REGULATOR_TPS65023 is not set
+# CONFIG_REGULATOR_TPS6507X is not set
+CONFIG_REGULATOR_TPS65217=y
+CONFIG_REGULATOR_TPS6524X=y
+CONFIG_REGULATOR_TIAVSCLASS0=y
+CONFIG_MEDIA_SUPPORT=m
+
+#
+# Multimedia core support
+#
+CONFIG_MEDIA_CAMERA_SUPPORT=y
+# CONFIG_MEDIA_ANALOG_TV_SUPPORT is not set
+# CONFIG_MEDIA_DIGITAL_TV_SUPPORT is not set
+# CONFIG_MEDIA_RADIO_SUPPORT is not set
+# CONFIG_MEDIA_RC_SUPPORT is not set
+# CONFIG_MEDIA_CONTROLLER is not set
+CONFIG_VIDEO_DEV=m
+CONFIG_VIDEO_V4L2=m
+# CONFIG_VIDEO_ADV_DEBUG is not set
+# CONFIG_VIDEO_FIXED_MINOR_RANGES is not set
+CONFIG_VIDEOBUF2_CORE=m
+CONFIG_VIDEOBUF2_MEMOPS=m
+CONFIG_VIDEOBUF2_VMALLOC=m
+# CONFIG_VIDEO_V4L2_INT_DEVICE is not set
+# CONFIG_TTPCI_EEPROM is not set
+
+#
+# Media drivers
+#
+CONFIG_MEDIA_USB_SUPPORT=y
+
+#
+# Webcam devices
+#
+CONFIG_USB_VIDEO_CLASS=m
+CONFIG_USB_VIDEO_CLASS_INPUT_EVDEV=y
+CONFIG_USB_GSPCA=m
+# CONFIG_USB_M5602 is not set
+# CONFIG_USB_STV06XX is not set
+# CONFIG_USB_GL860 is not set
+# CONFIG_USB_GSPCA_BENQ is not set
+# CONFIG_USB_GSPCA_CONEX is not set
+# CONFIG_USB_GSPCA_CPIA1 is not set
+# CONFIG_USB_GSPCA_ETOMS is not set
+# CONFIG_USB_GSPCA_FINEPIX is not set
+# CONFIG_USB_GSPCA_JEILINJ is not set
+# CONFIG_USB_GSPCA_JL2005BCD is not set
+# CONFIG_USB_GSPCA_KINECT is not set
+# CONFIG_USB_GSPCA_KONICA is not set
+# CONFIG_USB_GSPCA_MARS is not set
+# CONFIG_USB_GSPCA_MR97310A is not set
+# CONFIG_USB_GSPCA_NW80X is not set
+# CONFIG_USB_GSPCA_OV519 is not set
+# CONFIG_USB_GSPCA_OV534 is not set
+# CONFIG_USB_GSPCA_OV534_9 is not set
+# CONFIG_USB_GSPCA_PAC207 is not set
+# CONFIG_USB_GSPCA_PAC7302 is not set
+# CONFIG_USB_GSPCA_PAC7311 is not set
+# CONFIG_USB_GSPCA_SE401 is not set
+CONFIG_USB_GSPCA_SN9C2028=m
+CONFIG_USB_GSPCA_SN9C20X=m
+CONFIG_USB_GSPCA_SONIXB=m
+# CONFIG_USB_GSPCA_SONIXJ is not set
+# CONFIG_USB_GSPCA_SPCA500 is not set
+# CONFIG_USB_GSPCA_SPCA501 is not set
+# CONFIG_USB_GSPCA_SPCA505 is not set
+# CONFIG_USB_GSPCA_SPCA506 is not set
+# CONFIG_USB_GSPCA_SPCA508 is not set
+# CONFIG_USB_GSPCA_SPCA561 is not set
+# CONFIG_USB_GSPCA_SPCA1528 is not set
+# CONFIG_USB_GSPCA_SQ905 is not set
+# CONFIG_USB_GSPCA_SQ905C is not set
+# CONFIG_USB_GSPCA_SQ930X is not set
+# CONFIG_USB_GSPCA_STK014 is not set
+# CONFIG_USB_GSPCA_STK1135 is not set
+# CONFIG_USB_GSPCA_STV0680 is not set
+# CONFIG_USB_GSPCA_SUNPLUS is not set
+# CONFIG_USB_GSPCA_T613 is not set
+# CONFIG_USB_GSPCA_TOPRO is not set
+# CONFIG_USB_GSPCA_TV8532 is not set
+# CONFIG_USB_GSPCA_VC032X is not set
+# CONFIG_USB_GSPCA_VICAM is not set
+# CONFIG_USB_GSPCA_XIRLINK_CIT is not set
+# CONFIG_USB_GSPCA_ZC3XX is not set
+# CONFIG_USB_PWC is not set
+# CONFIG_VIDEO_CPIA2 is not set
+# CONFIG_USB_ZR364XX is not set
+# CONFIG_USB_STKWEBCAM is not set
+# CONFIG_USB_S2255 is not set
+# CONFIG_USB_SN9C102 is not set
+# CONFIG_VIDEO_USBTV is not set
+
+#
+# Webcam, TV (analog/digital) USB devices
+#
+# CONFIG_VIDEO_EM28XX is not set
+CONFIG_V4L_PLATFORM_DRIVERS=y
+# CONFIG_VIDEO_DM6446_CCDC is not set
+# CONFIG_VIDEO_OMAP2_VOUT is not set
+# CONFIG_VIDEO_TIMBERDALE is not set
+# CONFIG_SOC_CAMERA is not set
+# CONFIG_VIDEO_AM437X_VPFE is not set
+# CONFIG_V4L_MEM2MEM_DRIVERS is not set
+# CONFIG_V4L_TEST_DRIVERS is not set
+
+#
+# Supported MMC/SDIO adapters
+#
+# CONFIG_CYPRESS_FIRMWARE is not set
+
+#
+# Media ancillary drivers (tuners, sensors, i2c, frontends)
+#
+CONFIG_MEDIA_SUBDRV_AUTOSELECT=y
+
+#
+# Audio decoders, processors and mixers
+#
+
+#
+# RDS decoders
+#
+
+#
+# Video decoders
+#
+
+#
+# Video and audio decoders
+#
+
+#
+# Video encoders
+#
+
+#
+# Camera sensor devices
+#
+
+#
+# Flash devices
+#
+
+#
+# Video improvement chips
+#
+
+#
+# Miscelaneous helper chips
+#
+
+#
+# Sensors used on soc_camera driver
+#
+
+#
+# Tools to develop new frontends
+#
+# CONFIG_DVB_DUMMY_FE is not set
+
+#
+# Graphics support
+#
+# CONFIG_DRM is not set
+# CONFIG_VGASTATE is not set
+# CONFIG_VIDEO_OUTPUT_CONTROL is not set
+CONFIG_VIDEOMODE_HELPERS=y
+CONFIG_FB=y
+CONFIG_FIRMWARE_EDID=y
+# CONFIG_FB_DDC is not set
+# CONFIG_FB_BOOT_VESA_SUPPORT is not set
+CONFIG_FB_CFB_FILLRECT=y
+CONFIG_FB_CFB_COPYAREA=y
+CONFIG_FB_CFB_IMAGEBLIT=y
+CONFIG_FB_CFB_REV_PIXELS_IN_BYTE=y
+# 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=y
+# CONFIG_FB_TILEBLITTING is not set
+
+#
+# Frame buffer hardware drivers
+#
+# CONFIG_FB_UVESA is not set
+# CONFIG_FB_S1D13XXX is not set
+# CONFIG_FB_TMIO is not set
+# CONFIG_FB_SMSCUFX is not set
+# CONFIG_FB_UDL is not set
+# CONFIG_FB_GOLDFISH is not set
+CONFIG_FB_DA8XX=y
+# CONFIG_FB_DA8XX_TDA998X is not set
+# CONFIG_FB_VIRTUAL is not set
+# CONFIG_FB_METRONOME is not set
+# CONFIG_FB_BROADSHEET is not set
+# CONFIG_FB_AUO_K190X is not set
+# CONFIG_FB_SIMPLE is not set
+CONFIG_OMAP2_VRFB=y
+CONFIG_OMAP2_DSS=y
+# CONFIG_OMAP2_DSS_DEBUG is not set
+# CONFIG_OMAP2_DSS_DEBUGFS is not set
+CONFIG_OMAP2_DSS_DPI=y
+CONFIG_OMAP2_DSS_DRA7XX_DPI=y
+CONFIG_OMAP2_DSS_VENC=y
+CONFIG_OMAP4_DSS_HDMI=y
+CONFIG_OMAP5_DSS_HDMI=y
+CONFIG_OMAP2_DSS_SDI=y
+CONFIG_OMAP2_DSS_DSI=y
+CONFIG_OMAP2_DSS_MIN_FCK_PER_PCK=0
+CONFIG_OMAP2_DSS_SLEEP_AFTER_VENC_RESET=y
+CONFIG_FB_OMAP2=y
+CONFIG_FB_OMAP2_DEBUG_SUPPORT=y
+CONFIG_FB_OMAP2_NUM_FBS=3
+
+#
+# OMAP Display Device Drivers (new device model)
+#
+# CONFIG_DISPLAY_ENCODER_TFP410 is not set
+# CONFIG_DISPLAY_ENCODER_TPD12S015 is not set
+# CONFIG_DISPLAY_DRA_EVM_ENCODER_TPD12S015 is not set
+# CONFIG_DISPLAY_ENCODER_SIL9022 is not set
+# CONFIG_DISPLAY_CONNECTOR_DVI is not set
+# CONFIG_DISPLAY_CONNECTOR_HDMI is not set
+# CONFIG_DISPLAY_CONNECTOR_ANALOG_TV is not set
+# CONFIG_DISPLAY_PANEL_DPI is not set
+# CONFIG_DISPLAY_PANEL_LGPHILIPS_LB035Q02 is not set
+# CONFIG_DISPLAY_PANEL_TPO_TD043MTEA1 is not set
+# CONFIG_DISPLAY_PANEL_TFCS9700 is not set
+# CONFIG_EXYNOS_VIDEO is not set
+# CONFIG_BACKLIGHT_LCD_SUPPORT is not set
+
+#
+# Console display driver support
+#
+CONFIG_DUMMY_CONSOLE=y
+CONFIG_FRAMEBUFFER_CONSOLE=y
+# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
+# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
+CONFIG_LOGO=y
+CONFIG_FB_LOGO_CUSTOM=y
+# CONFIG_LOGO_LINUX_MONO is not set
+# CONFIG_LOGO_LINUX_VGA16 is not set
+# CONFIG_LOGO_LINUX_CLUT224 is not set
+# CONFIG_FB_SSD1307 is not set
+# CONFIG_SOUND is not set
+
+#
+# HID support
+#
+CONFIG_HID=y
+# CONFIG_HID_BATTERY_STRENGTH is not set
+# CONFIG_HIDRAW is not set
+# CONFIG_UHID is not set
+CONFIG_HID_GENERIC=y
+
+#
+# Special HID drivers
+#
+# CONFIG_HID_A4TECH is not set
+# CONFIG_HID_ACRUX is not set
+# CONFIG_HID_APPLE is not set
+# CONFIG_HID_APPLEIR is not set
+# CONFIG_HID_AUREAL is not set
+# CONFIG_HID_BELKIN is not set
+# CONFIG_HID_CHERRY is not set
+# CONFIG_HID_CHICONY is not set
+# CONFIG_HID_CYPRESS is not set
+# CONFIG_HID_DRAGONRISE is not set
+# CONFIG_HID_EMS_FF is not set
+# CONFIG_HID_ELECOM is not set
+# CONFIG_HID_ELO is not set
+# CONFIG_HID_EZKEY is not set
+# CONFIG_HID_HOLTEK is not set
+# CONFIG_HID_HUION is not set
+# CONFIG_HID_KEYTOUCH is not set
+# CONFIG_HID_KYE is not set
+# CONFIG_HID_UCLOGIC is not set
+# CONFIG_HID_WALTOP is not set
+# CONFIG_HID_GYRATION is not set
+# CONFIG_HID_ICADE is not set
+# CONFIG_HID_TWINHAN is not set
+# CONFIG_HID_KENSINGTON is not set
+# CONFIG_HID_LCPOWER is not set
+# CONFIG_HID_LENOVO_TPKBD is not set
+# CONFIG_HID_LOGITECH is not set
+# CONFIG_HID_MAGICMOUSE is not set
+# CONFIG_HID_MICROSOFT is not set
+# CONFIG_HID_MONTEREY is not set
+# CONFIG_HID_MULTITOUCH is not set
+# CONFIG_HID_NTRIG is not set
+# CONFIG_HID_ORTEK is not set
+# CONFIG_HID_PANTHERLORD is not set
+# CONFIG_HID_PETALYNX is not set
+# CONFIG_HID_PICOLCD is not set
+# CONFIG_HID_PRIMAX is not set
+# CONFIG_HID_ROCCAT is not set
+# CONFIG_HID_SAITEK is not set
+# CONFIG_HID_SAMSUNG is not set
+# CONFIG_HID_SONY is not set
+# CONFIG_HID_SPEEDLINK is not set
+# CONFIG_HID_STEELSERIES is not set
+# CONFIG_HID_SUNPLUS is not set
+# CONFIG_HID_GREENASIA is not set
+# CONFIG_HID_SMARTJOYPLUS is not set
+# CONFIG_HID_TIVO is not set
+# CONFIG_HID_TOPSEED is not set
+# CONFIG_HID_THINGM is not set
+# CONFIG_HID_THRUSTMASTER is not set
+# CONFIG_HID_WACOM is not set
+# CONFIG_HID_WIIMOTE is not set
+# CONFIG_HID_XINMO is not set
+# CONFIG_HID_ZEROPLUS is not set
+# CONFIG_HID_ZYDACRON is not set
+# CONFIG_HID_SENSOR_HUB is not set
+
+#
+# USB HID support
+#
+CONFIG_USB_HID=y
+# CONFIG_HID_PID is not set
+CONFIG_USB_HIDDEV=y
+
+#
+# I2C HID support
+#
+# CONFIG_I2C_HID is not set
+CONFIG_USB_OHCI_LITTLE_ENDIAN=y
+CONFIG_USB_ARCH_HAS_EHCI=y
+CONFIG_USB_SUPPORT=y
+CONFIG_USB_COMMON=y
+CONFIG_USB_ARCH_HAS_HCD=y
+CONFIG_USB=y
+# CONFIG_USB_DEBUG is not set
+CONFIG_USB_ANNOUNCE_NEW_DEVICES=y
+
+#
+# Miscellaneous USB options
+#
+CONFIG_USB_DEFAULT_PERSIST=y
+# CONFIG_USB_DYNAMIC_MINORS is not set
+# CONFIG_USB_OTG is not set
+# CONFIG_USB_OTG_WHITELIST is not set
+# CONFIG_USB_OTG_BLACKLIST_HUB is not set
+CONFIG_USB_MON=y
+# CONFIG_USB_WUSB_CBAF is not set
+
+#
+# USB Host Controller Drivers
+#
+# CONFIG_USB_C67X00_HCD is not set
+# CONFIG_USB_XHCI_HCD is not set
+CONFIG_USB_EHCI_HCD=y
+# CONFIG_USB_EHCI_ROOT_HUB_TT is not set
+CONFIG_USB_EHCI_TT_NEWSCHED=y
+CONFIG_USB_EHCI_HCD_OMAP=y
+# CONFIG_USB_EHCI_HCD_PLATFORM is not set
+# CONFIG_USB_OXU210HP_HCD is not set
+# CONFIG_USB_ISP116X_HCD is not set
+# CONFIG_USB_ISP1760_HCD is not set
+# CONFIG_USB_ISP1362_HCD is not set
+# CONFIG_USB_FUSBH200_HCD is not set
+# CONFIG_USB_FOTG210_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_HCD_SSB is not set
+# CONFIG_USB_HCD_TEST_MODE is not set
+CONFIG_USB_MUSB_HDRC=m
+# CONFIG_USB_MUSB_HOST is not set
+# CONFIG_USB_MUSB_GADGET is not set
+CONFIG_USB_MUSB_DUAL_ROLE=y
+# CONFIG_USB_MUSB_TUSB6010 is not set
+CONFIG_USB_MUSB_OMAP2PLUS=m
+# CONFIG_USB_MUSB_AM35X is not set
+CONFIG_USB_MUSB_DSPS=m
+# CONFIG_USB_MUSB_UX500 is not set
+CONFIG_USB_MUSB_AM335X_CHILD=m
+# CONFIG_USB_INVENTRA_DMA is not set
+CONFIG_USB_TI_CPPI41_DMA=y
+# CONFIG_MUSB_PIO_ONLY is not set
+# CONFIG_USB_RENESAS_USBHS is not set
+
+#
+# USB Device Class drivers
+#
+CONFIG_USB_ACM=m
+# CONFIG_USB_PRINTER is not set
+CONFIG_USB_WDM=m
+# CONFIG_USB_TMC is not set
+
+#
+# NOTE: USB_STORAGE depends on SCSI but BLK_DEV_SD may
+#
+
+#
+# also be needed; see USB_STORAGE Help for more info
+#
+CONFIG_USB_STORAGE=y
+# CONFIG_USB_STORAGE_DEBUG is not set
+# CONFIG_USB_STORAGE_REALTEK is not set
+# CONFIG_USB_STORAGE_DATAFAB is not set
+# CONFIG_USB_STORAGE_FREECOM is not set
+# CONFIG_USB_STORAGE_ISD200 is not set
+# CONFIG_USB_STORAGE_USBAT is not set
+# CONFIG_USB_STORAGE_SDDR09 is not set
+# CONFIG_USB_STORAGE_SDDR55 is not set
+# CONFIG_USB_STORAGE_JUMPSHOT is not set
+# CONFIG_USB_STORAGE_ALAUDA is not set
+# CONFIG_USB_STORAGE_ONETOUCH is not set
+# CONFIG_USB_STORAGE_KARMA is not set
+# CONFIG_USB_STORAGE_CYPRESS_ATACB is not set
+# CONFIG_USB_STORAGE_ENE_UB6250 is not set
+
+#
+# USB Imaging devices
+#
+# CONFIG_USB_MDC800 is not set
+# CONFIG_USB_MICROTEK is not set
+# CONFIG_USB_CHIPIDEA is not set
+
+#
+# USB port drivers
+#
+CONFIG_USB_SERIAL=y
+# CONFIG_USB_SERIAL_CONSOLE is not set
+CONFIG_USB_SERIAL_GENERIC=y
+CONFIG_USB_SERIAL_SIMPLE=y
+# CONFIG_USB_SERIAL_AIRCABLE is not set
+# CONFIG_USB_SERIAL_ARK3116 is not set
+# CONFIG_USB_SERIAL_BELKIN is not set
+# CONFIG_USB_SERIAL_CH341 is not set
+# CONFIG_USB_SERIAL_WHITEHEAT is not set
+# CONFIG_USB_SERIAL_DIGI_ACCELEPORT is not set
+# CONFIG_USB_SERIAL_CP210X is not set
+# CONFIG_USB_SERIAL_CYPRESS_M8 is not set
+# CONFIG_USB_SERIAL_EMPEG is not set
+CONFIG_USB_SERIAL_FTDI_SIO=y
+# CONFIG_USB_SERIAL_VISOR is not set
+# CONFIG_USB_SERIAL_IPAQ is not set
+# CONFIG_USB_SERIAL_IR is not set
+# CONFIG_USB_SERIAL_EDGEPORT is not set
+# CONFIG_USB_SERIAL_EDGEPORT_TI is not set
+# CONFIG_USB_SERIAL_F81232 is not set
+# CONFIG_USB_SERIAL_GARMIN is not set
+# CONFIG_USB_SERIAL_IPW is not set
+# CONFIG_USB_SERIAL_IUU is not set
+# CONFIG_USB_SERIAL_KEYSPAN_PDA is not set
+# CONFIG_USB_SERIAL_KEYSPAN is not set
+# CONFIG_USB_SERIAL_KLSI is not set
+# CONFIG_USB_SERIAL_KOBIL_SCT is not set
+# CONFIG_USB_SERIAL_MCT_U232 is not set
+# CONFIG_USB_SERIAL_METRO is not set
+# CONFIG_USB_SERIAL_MOS7720 is not set
+# CONFIG_USB_SERIAL_MOS7840 is not set
+# CONFIG_USB_SERIAL_NAVMAN is not set
+CONFIG_USB_SERIAL_PL2303=y
+# CONFIG_USB_SERIAL_OTI6858 is not set
+# CONFIG_USB_SERIAL_QCAUX is not set
+# CONFIG_USB_SERIAL_QUALCOMM is not set
+# CONFIG_USB_SERIAL_SPCP8X5 is not set
+# CONFIG_USB_SERIAL_SAFE is not set
+# CONFIG_USB_SERIAL_SIERRAWIRELESS is not set
+# CONFIG_USB_SERIAL_SYMBOL is not set
+# CONFIG_USB_SERIAL_TI is not set
+# CONFIG_USB_SERIAL_CYBERJACK is not set
+# CONFIG_USB_SERIAL_XIRCOM is not set
+CONFIG_USB_SERIAL_WWAN=y
+CONFIG_USB_SERIAL_OPTION=y
+# CONFIG_USB_SERIAL_OMNINET is not set
+# CONFIG_USB_SERIAL_OPTICON is not set
+# CONFIG_USB_SERIAL_XSENS_MT is not set
+# CONFIG_USB_SERIAL_WISHBONE is not set
+# CONFIG_USB_SERIAL_ZTE is not set
+# CONFIG_USB_SERIAL_SSU100 is not set
+# CONFIG_USB_SERIAL_QT2 is not set
+# CONFIG_USB_SERIAL_DEBUG is not set
+
+#
+# USB Miscellaneous drivers
+#
+# CONFIG_USB_EMI62 is not set
+# CONFIG_USB_EMI26 is not set
+# CONFIG_USB_ADUTUX is not set
+# CONFIG_USB_SEVSEG is not set
+# CONFIG_USB_RIO500 is not set
+# CONFIG_USB_LEGOTOWER is not set
+# CONFIG_USB_LCD is not set
+# CONFIG_USB_LED is not set
+# CONFIG_USB_CYPRESS_CY7C63 is not set
+# CONFIG_USB_CYTHERM is not set
+# CONFIG_USB_IDMOUSE is not set
+# CONFIG_USB_FTDI_ELAN is not set
+# CONFIG_USB_APPLEDISPLAY is not set
+# CONFIG_USB_SISUSBVGA is not set
+# CONFIG_USB_LD is not set
+# CONFIG_USB_TRANCEVIBRATOR is not set
+# CONFIG_USB_IOWARRIOR is not set
+# CONFIG_USB_TEST is not set
+# CONFIG_USB_EHSET_TEST_FIXTURE is not set
+# CONFIG_USB_ISIGHTFW is not set
+# CONFIG_USB_YUREX is not set
+# CONFIG_USB_EZUSB_FX2 is not set
+# CONFIG_USB_HSIC_USB3503 is not set
+
+#
+# USB Physical Layer drivers
+#
+CONFIG_USB_PHY=y
+CONFIG_NOP_USB_XCEIV=y
+CONFIG_AM335X_CONTROL_USB=y
+CONFIG_AM335X_PHY_USB=y
+# CONFIG_SAMSUNG_USB2PHY is not set
+# CONFIG_SAMSUNG_USB3PHY is not set
+# CONFIG_USB_GPIO_VBUS is not set
+# CONFIG_USB_ISP1301 is not set
+# CONFIG_USB_RCAR_PHY is not set
+# CONFIG_USB_ULPI is not set
+CONFIG_USB_GADGET=y
+# CONFIG_USB_GADGET_DEBUG is not set
+# CONFIG_USB_GADGET_DEBUG_FILES is not set
+# CONFIG_USB_GADGET_DEBUG_FS is not set
+CONFIG_USB_GADGET_VBUS_DRAW=2
+CONFIG_USB_GADGET_STORAGE_NUM_BUFFERS=2
+
+#
+# USB Peripheral Controller
+#
+# CONFIG_USB_FUSB300 is not set
+# CONFIG_USB_FOTG210_UDC is not set
+# CONFIG_USB_R8A66597 is not set
+# CONFIG_USB_PXA27X is not set
+# CONFIG_USB_MV_UDC is not set
+# CONFIG_USB_MV_U3D is not set
+# CONFIG_USB_M66592 is not set
+# CONFIG_USB_NET2272 is not set
+# CONFIG_USB_DUMMY_HCD is not set
+CONFIG_USB_LIBCOMPOSITE=m
+CONFIG_USB_F_ACM=m
+CONFIG_USB_U_SERIAL=m
+CONFIG_USB_U_ETHER=m
+CONFIG_USB_U_RNDIS=m
+CONFIG_USB_F_ECM=m
+CONFIG_USB_F_EEM=m
+CONFIG_USB_F_SUBSET=m
+CONFIG_USB_F_RNDIS=m
+CONFIG_USB_F_MASS_STORAGE=m
+# CONFIG_USB_CONFIGFS is not set
+# CONFIG_USB_ZERO is not set
+CONFIG_USB_ETH=m
+CONFIG_USB_ETH_RNDIS=y
+CONFIG_USB_ETH_EEM=y
+# CONFIG_USB_G_NCM is not set
+# CONFIG_USB_GADGETFS is not set
+# CONFIG_USB_FUNCTIONFS is not set
+CONFIG_USB_MASS_STORAGE=m
+# CONFIG_USB_G_SERIAL is not set
+# CONFIG_USB_G_PRINTER is not set
+# CONFIG_USB_CDC_COMPOSITE is not set
+# CONFIG_USB_G_ACM_MS is not set
+CONFIG_USB_G_MULTI=m
+CONFIG_USB_G_MULTI_RNDIS=y
+CONFIG_USB_G_MULTI_CDC=y
+# CONFIG_USB_G_HID is not set
+# CONFIG_USB_G_DBGP is not set
+# CONFIG_USB_G_WEBCAM is not set
+CONFIG_MMC=y
+# CONFIG_MMC_DEBUG is not set
+CONFIG_MMC_UNSAFE_RESUME=y
+# CONFIG_MMC_CLKGATE is not set
+
+#
+# MMC/SD/SDIO Card Drivers
+#
+CONFIG_MMC_BLOCK=y
+CONFIG_MMC_BLOCK_MINORS=8
+CONFIG_MMC_BLOCK_BOUNCE=y
+CONFIG_MMC_SLOTINDEX=y
+CONFIG_SDIO_UART=y
+# CONFIG_MMC_TEST is not set
+
+#
+# MMC/SD/SDIO Host Controller Drivers
+#
+# CONFIG_MMC_SDHCI is not set
+# CONFIG_MMC_SDHCI_PXAV3 is not set
+# CONFIG_MMC_SDHCI_PXAV2 is not set
+CONFIG_MMC_OMAP=y
+CONFIG_MMC_OMAP_HS=y
+# CONFIG_MMC_DW is not set
+# CONFIG_MMC_VUB300 is not set
+# CONFIG_MMC_USHC is not set
+# CONFIG_MEMSTICK is not set
+CONFIG_NEW_LEDS=y
+CONFIG_LEDS_CLASS=y
+
+#
+# LED drivers
+#
+# CONFIG_LEDS_LM3530 is not set
+# CONFIG_LEDS_LM3642 is not set
+# CONFIG_LEDS_PCA9532 is not set
+CONFIG_LEDS_GPIO=y
+# CONFIG_LEDS_LP3944 is not set
+# CONFIG_LEDS_LP5521 is not set
+# CONFIG_LEDS_LP5523 is not set
+# CONFIG_LEDS_LP5562 is not set
+# CONFIG_LEDS_LP8501 is not set
+# CONFIG_LEDS_PCA955X is not set
+# CONFIG_LEDS_PCA963X is not set
+# CONFIG_LEDS_DAC124S085 is not set
+# CONFIG_LEDS_PWM is not set
+# CONFIG_LEDS_REGULATOR is not set
+# CONFIG_LEDS_BD2802 is not set
+# CONFIG_LEDS_LT3593 is not set
+# CONFIG_LEDS_TCA6507 is not set
+# CONFIG_LEDS_LM355x is not set
+# CONFIG_LEDS_OT200 is not set
+# CONFIG_LEDS_BLINKM is not set
+
+#
+# LED Triggers
+#
+CONFIG_LEDS_TRIGGERS=y
+CONFIG_LEDS_TRIGGER_TIMER=y
+CONFIG_LEDS_TRIGGER_ONESHOT=y
+CONFIG_LEDS_TRIGGER_HEARTBEAT=y
+CONFIG_LEDS_TRIGGER_BACKLIGHT=y
+# CONFIG_LEDS_TRIGGER_CPU is not set
+CONFIG_LEDS_TRIGGER_GPIO=y
+CONFIG_LEDS_TRIGGER_DEFAULT_ON=y
+
+#
+# iptables trigger is under Netfilter config (LED target)
+#
+# CONFIG_LEDS_TRIGGER_TRANSIENT is not set
+# CONFIG_LEDS_TRIGGER_CAMERA is not set
+# CONFIG_ACCESSIBILITY is not set
+# CONFIG_EDAC is not set
+CONFIG_RTC_LIB=y
+CONFIG_RTC_CLASS=y
+CONFIG_RTC_HCTOSYS=y
+CONFIG_RTC_SYSTOHC=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_DS3232 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_ISL12022 is not set
+# CONFIG_RTC_DRV_X1205 is not set
+# CONFIG_RTC_DRV_PCF2127 is not set
+# CONFIG_RTC_DRV_PCF8523 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_BQ32K is not set
+# CONFIG_RTC_DRV_S35390A is not set
+# CONFIG_RTC_DRV_FM3130 is not set
+# CONFIG_RTC_DRV_RX8581 is not set
+# CONFIG_RTC_DRV_RX8025 is not set
+# CONFIG_RTC_DRV_EM3027 is not set
+# CONFIG_RTC_DRV_RV3029C2 is not set
+
+#
+# SPI RTC drivers
+#
+# CONFIG_RTC_DRV_M41T93 is not set
+# CONFIG_RTC_DRV_M41T94 is not set
+# CONFIG_RTC_DRV_DS1305 is not set
+# CONFIG_RTC_DRV_DS1390 is not set
+# CONFIG_RTC_DRV_MAX6902 is not set
+# CONFIG_RTC_DRV_R9701 is not set
+# CONFIG_RTC_DRV_RS5C348 is not set
+# CONFIG_RTC_DRV_DS3234 is not set
+# CONFIG_RTC_DRV_PCF2123 is not set
+# CONFIG_RTC_DRV_RX4581 is not set
+
+#
+# Platform RTC drivers
+#
+# CONFIG_RTC_DRV_CMOS is not set
+# CONFIG_RTC_DRV_DS1286 is not set
+# CONFIG_RTC_DRV_DS1511 is not set
+# CONFIG_RTC_DRV_DS1553 is not set
+# CONFIG_RTC_DRV_DS1742 is not set
+# CONFIG_RTC_DRV_STK17TA8 is not set
+# CONFIG_RTC_DRV_M48T86 is not set
+# CONFIG_RTC_DRV_M48T35 is not set
+# CONFIG_RTC_DRV_M48T59 is not set
+# CONFIG_RTC_DRV_MSM6242 is not set
+# CONFIG_RTC_DRV_BQ4802 is not set
+# CONFIG_RTC_DRV_RP5C01 is not set
+# CONFIG_RTC_DRV_V3020 is not set
+# CONFIG_RTC_DRV_DS2404 is not set
+
+#
+# on-CPU RTC drivers
+#
+CONFIG_RTC_DRV_OMAP=y
+# CONFIG_RTC_DRV_SNVS is not set
+# CONFIG_RTC_DRV_MOXART is not set
+
+#
+# HID Sensor RTC drivers
+#
+# CONFIG_RTC_DRV_HID_SENSOR_TIME is not set
+CONFIG_DMADEVICES=y
+# CONFIG_DMADEVICES_DEBUG is not set
+
+#
+# DMA Devices
+#
+# CONFIG_DW_DMAC_CORE is not set
+# CONFIG_DW_DMAC is not set
+# CONFIG_TIMB_DMA is not set
+CONFIG_TI_EDMA=y
+CONFIG_DMA_OMAP=y
+CONFIG_TI_CPPI41=y
+CONFIG_DMA_ENGINE=y
+CONFIG_DMA_VIRTUAL_CHANNELS=y
+CONFIG_DMA_OF=y
+
+#
+# DMA Clients
+#
+# CONFIG_ASYNC_TX_DMA is not set
+# CONFIG_DMATEST is not set
+# CONFIG_AUXDISPLAY is not set
+CONFIG_UIO=m
+CONFIG_UIO_PDRV_GENIRQ=m
+CONFIG_UIO_DMEM_GENIRQ=m
+CONFIG_UIO_PRUSS=m
+# CONFIG_VIRT_DRIVERS is not set
+
+#
+# Virtio drivers
+#
+# CONFIG_VIRTIO_MMIO is not set
+
+#
+# Microsoft Hyper-V guest support
+#
+# CONFIG_STAGING is not set
+CONFIG_CLKDEV_LOOKUP=y
+CONFIG_HAVE_CLK_PREPARE=y
+CONFIG_COMMON_CLK=y
+
+#
+# Common Clock Framework
+#
+CONFIG_COMMON_CLK_DEBUG=y
+# CONFIG_COMMON_CLK_SI5351 is not set
+
+#
+# Hardware Spinlock drivers
+#
+# CONFIG_HWSPINLOCK_OMAP is not set
+CONFIG_CLKSRC_OF=y
+CONFIG_CLKSRC_MMIO=y
+CONFIG_ARM_ARCH_TIMER=y
+CONFIG_MAILBOX=y
+CONFIG_OMAP_MBOX=y
+CONFIG_OMAP2PLUS_MBOX=y
+CONFIG_OMAP_MBOX_KFIFO_SIZE=256
+CONFIG_IOMMU_SUPPORT=y
+CONFIG_OF_IOMMU=y
+# CONFIG_OMAP_IOMMU is not set
+
+#
+# Remoteproc drivers
+#
+# CONFIG_STE_MODEM_RPROC is not set
+
+#
+# Rpmsg drivers
+#
+# CONFIG_PM_DEVFREQ is not set
+# CONFIG_EXTCON is not set
+# CONFIG_MEMORY is not set
+# CONFIG_IIO is not set
+CONFIG_PWM=y
+CONFIG_PWM_SYSFS=y
+CONFIG_PWM_OMAP_DMTIMER=m
+# CONFIG_PWM_PCA9685 is not set
+CONFIG_PWM_TIECAP=m
+CONFIG_PWM_TIEHRPWM=m
+CONFIG_PWM_TIPWMSS=y
+CONFIG_IRQCHIP=y
+CONFIG_ARM_GIC=y
+# CONFIG_IPACK_BUS is not set
+CONFIG_ARCH_HAS_RESET_CONTROLLER=y
+CONFIG_RESET_CONTROLLER=y
+CONFIG_RESET_TI=y
+# CONFIG_FMC is not set
+
+#
+# PHY Subsystem
+#
+CONFIG_GENERIC_PHY=y
+CONFIG_OMAP_CONTROL_PHY=y
+CONFIG_OMAP_USB2=y
+CONFIG_OMAP_PIPE3=y
+
+#
+# File systems
+#
+CONFIG_DCACHE_WORD_ACCESS=y
+CONFIG_EXT2_FS=y
+# CONFIG_EXT2_FS_XATTR is not set
+# CONFIG_EXT2_FS_XIP is not set
+CONFIG_EXT3_FS=y
+CONFIG_EXT3_DEFAULTS_TO_ORDERED=y
+# CONFIG_EXT3_FS_XATTR is not set
+CONFIG_EXT4_FS=y
+# CONFIG_EXT4_FS_POSIX_ACL is not set
+# CONFIG_EXT4_FS_SECURITY is not set
+# CONFIG_EXT4_DEBUG is not set
+CONFIG_JBD=y
+# CONFIG_JBD_DEBUG is not set
+CONFIG_JBD2=y
+# CONFIG_JBD2_DEBUG is not set
+CONFIG_FS_MBCACHE=y
+# CONFIG_REISERFS_FS is not set
+# CONFIG_JFS_FS is not set
+# CONFIG_XFS_FS is not set
+# CONFIG_GFS2_FS is not set
+# CONFIG_OCFS2_FS is not set
+# CONFIG_BTRFS_FS is not set
+# CONFIG_NILFS2_FS is not set
+# CONFIG_FS_POSIX_ACL is not set
+CONFIG_FILE_LOCKING=y
+CONFIG_FSNOTIFY=y
+CONFIG_DNOTIFY=y
+CONFIG_INOTIFY_USER=y
+# CONFIG_FANOTIFY is not set
+CONFIG_QUOTA=y
+# CONFIG_QUOTA_NETLINK_INTERFACE is not set
+CONFIG_PRINT_QUOTA_WARNING=y
+# CONFIG_QUOTA_DEBUG is not set
+CONFIG_QUOTA_TREE=y
+# CONFIG_QFMT_V1 is not set
+CONFIG_QFMT_V2=y
+CONFIG_QUOTACTL=y
+# CONFIG_AUTOFS4_FS is not set
+# CONFIG_FUSE_FS is not set
+
+#
+# Caches
+#
+# CONFIG_FSCACHE is not set
+
+#
+# CD-ROM/DVD Filesystems
+#
+# CONFIG_ISO9660_FS is not set
+# CONFIG_UDF_FS is not set
+
+#
+# DOS/FAT/NT Filesystems
+#
+CONFIG_FAT_FS=y
+CONFIG_MSDOS_FS=y
+CONFIG_VFAT_FS=y
+CONFIG_FAT_DEFAULT_CODEPAGE=437
+CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
+# CONFIG_NTFS_FS is not set
+
+#
+# Pseudo filesystems
+#
+CONFIG_PROC_FS=y
+CONFIG_PROC_SYSCTL=y
+CONFIG_PROC_PAGE_MONITOR=y
+CONFIG_SYSFS=y
+CONFIG_TMPFS=y
+# CONFIG_TMPFS_POSIX_ACL is not set
+# CONFIG_TMPFS_XATTR is not set
+# CONFIG_HUGETLB_PAGE is not set
+CONFIG_CONFIGFS_FS=m
+CONFIG_MISC_FILESYSTEMS=y
+# CONFIG_ADFS_FS is not set
+# CONFIG_AFFS_FS is not set
+# CONFIG_ECRYPT_FS is not set
+# CONFIG_HFS_FS is not set
+# CONFIG_HFSPLUS_FS is not set
+# CONFIG_BEFS_FS is not set
+# CONFIG_BFS_FS is not set
+# CONFIG_EFS_FS is not set
+# CONFIG_JFFS2_FS is not set
+CONFIG_UBIFS_FS=y
+CONFIG_UBIFS_FS_ADVANCED_COMPR=y
+CONFIG_UBIFS_FS_LZO=y
+CONFIG_UBIFS_FS_ZLIB=y
+# CONFIG_LOGFS is not set
+# CONFIG_CRAMFS is not set
+# CONFIG_SQUASHFS is not set
+# CONFIG_VXFS_FS is not set
+# CONFIG_MINIX_FS is not set
+# CONFIG_OMFS_FS is not set
+# CONFIG_HPFS_FS is not set
+# CONFIG_QNX4FS_FS is not set
+# CONFIG_QNX6FS_FS is not set
+# CONFIG_ROMFS_FS is not set
+# CONFIG_PSTORE is not set
+# CONFIG_SYSV_FS is not set
+# CONFIG_UFS_FS is not set
+# CONFIG_F2FS_FS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V2=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_SWAP is not set
+# CONFIG_NFS_V4_1 is not set
+CONFIG_ROOT_NFS=y
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+# CONFIG_SUNRPC_DEBUG is not set
+# CONFIG_CEPH_FS is not set
+CONFIG_CIFS=y
+# CONFIG_CIFS_STATS is not set
+# CONFIG_CIFS_WEAK_PW_HASH is not set
+# CONFIG_CIFS_UPCALL is not set
+# CONFIG_CIFS_XATTR is not set
+CONFIG_CIFS_DEBUG=y
+# CONFIG_CIFS_DEBUG2 is not set
+# CONFIG_CIFS_DFS_UPCALL is not set
+# CONFIG_CIFS_SMB2 is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS 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=y
+# CONFIG_NLS_CODEPAGE_852 is not set
+# CONFIG_NLS_CODEPAGE_855 is not set
+# CONFIG_NLS_CODEPAGE_857 is not set
+# CONFIG_NLS_CODEPAGE_860 is not set
+# CONFIG_NLS_CODEPAGE_861 is not set
+# CONFIG_NLS_CODEPAGE_862 is not set
+# CONFIG_NLS_CODEPAGE_863 is not set
+# CONFIG_NLS_CODEPAGE_864 is not set
+# CONFIG_NLS_CODEPAGE_865 is not set
+# CONFIG_NLS_CODEPAGE_866 is not set
+# CONFIG_NLS_CODEPAGE_869 is not set
+# CONFIG_NLS_CODEPAGE_936 is not set
+# CONFIG_NLS_CODEPAGE_950 is not set
+# CONFIG_NLS_CODEPAGE_932 is not set
+# CONFIG_NLS_CODEPAGE_949 is not set
+# CONFIG_NLS_CODEPAGE_874 is not set
+# CONFIG_NLS_ISO8859_8 is not set
+# CONFIG_NLS_CODEPAGE_1250 is not set
+# CONFIG_NLS_CODEPAGE_1251 is not set
+# CONFIG_NLS_ASCII is not set
+CONFIG_NLS_ISO8859_1=y
+# CONFIG_NLS_ISO8859_2 is not set
+# CONFIG_NLS_ISO8859_3 is not set
+# CONFIG_NLS_ISO8859_4 is not set
+# CONFIG_NLS_ISO8859_5 is not set
+# CONFIG_NLS_ISO8859_6 is not set
+# CONFIG_NLS_ISO8859_7 is not set
+# CONFIG_NLS_ISO8859_9 is not set
+# CONFIG_NLS_ISO8859_13 is not set
+# CONFIG_NLS_ISO8859_14 is not set
+CONFIG_NLS_ISO8859_15=y
+# CONFIG_NLS_KOI8_R is not set
+# CONFIG_NLS_KOI8_U is not set
+# CONFIG_NLS_MAC_ROMAN is not set
+# CONFIG_NLS_MAC_CELTIC is not set
+# CONFIG_NLS_MAC_CENTEURO is not set
+# CONFIG_NLS_MAC_CROATIAN is not set
+# CONFIG_NLS_MAC_CYRILLIC is not set
+# CONFIG_NLS_MAC_GAELIC is not set
+# CONFIG_NLS_MAC_GREEK is not set
+# CONFIG_NLS_MAC_ICELAND is not set
+# CONFIG_NLS_MAC_INUIT is not set
+# CONFIG_NLS_MAC_ROMANIAN is not set
+# CONFIG_NLS_MAC_TURKISH is not set
+CONFIG_NLS_UTF8=y
+# CONFIG_DLM is not set
+
+#
+# Kernel hacking
+#
+
+#
+# printk and dmesg options
+#
+CONFIG_PRINTK_TIME=y
+CONFIG_DEFAULT_MESSAGE_LOGLEVEL=4
+# CONFIG_BOOT_PRINTK_DELAY is not set
+# CONFIG_DYNAMIC_DEBUG is not set
+
+#
+# Compile-time checks and compiler options
+#
+CONFIG_DEBUG_INFO=y
+# CONFIG_DEBUG_INFO_REDUCED is not set
+CONFIG_ENABLE_WARN_DEPRECATED=y
+CONFIG_ENABLE_MUST_CHECK=y
+CONFIG_FRAME_WARN=1024
+# CONFIG_STRIP_ASM_SYMS is not set
+# CONFIG_READABLE_ASM is not set
+# CONFIG_UNUSED_SYMBOLS is not set
+CONFIG_DEBUG_FS=y
+# CONFIG_HEADERS_CHECK is not set
+# CONFIG_DEBUG_SECTION_MISMATCH is not set
+# CONFIG_DEBUG_FORCE_WEAK_PER_CPU is not set
+CONFIG_MAGIC_SYSRQ=y
+CONFIG_DEBUG_KERNEL=y
+
+#
+# Memory Debugging
+#
+# CONFIG_DEBUG_PAGEALLOC is not set
+# CONFIG_DEBUG_OBJECTS is not set
+# CONFIG_SLUB_DEBUG_ON is not set
+# CONFIG_SLUB_STATS is not set
+CONFIG_HAVE_DEBUG_KMEMLEAK=y
+# CONFIG_DEBUG_KMEMLEAK is not set
+# CONFIG_DEBUG_STACK_USAGE is not set
+# CONFIG_DEBUG_VM is not set
+# CONFIG_DEBUG_MEMORY_INIT is not set
+# CONFIG_DEBUG_HIGHMEM is not set
+# CONFIG_DEBUG_SHIRQ is not set
+
+#
+# Debug Lockups and Hangs
+#
+# CONFIG_LOCKUP_DETECTOR is not set
+# CONFIG_DETECT_HUNG_TASK is not set
+# CONFIG_PANIC_ON_OOPS is not set
+CONFIG_PANIC_ON_OOPS_VALUE=0
+CONFIG_SCHED_DEBUG=y
+CONFIG_SCHEDSTATS=y
+CONFIG_TIMER_STATS=y
+CONFIG_DEBUG_PREEMPT=y
+
+#
+# Lock Debugging (spinlocks, mutexes, etc...)
+#
+# CONFIG_DEBUG_RT_MUTEXES is not set
+# CONFIG_RT_MUTEX_TESTER is not set
+CONFIG_DEBUG_SPINLOCK=y
+CONFIG_DEBUG_MUTEXES=y
+# CONFIG_DEBUG_WW_MUTEX_SLOWPATH is not set
+CONFIG_DEBUG_LOCK_ALLOC=y
+CONFIG_PROVE_LOCKING=y
+CONFIG_LOCKDEP=y
+# CONFIG_LOCK_STAT is not set
+# CONFIG_DEBUG_LOCKDEP is not set
+# CONFIG_DEBUG_ATOMIC_SLEEP is not set
+# CONFIG_DEBUG_LOCKING_API_SELFTESTS is not set
+CONFIG_TRACE_IRQFLAGS=y
+CONFIG_STACKTRACE=y
+# CONFIG_DEBUG_KOBJECT is not set
+# CONFIG_DEBUG_BUGVERBOSE is not set
+# CONFIG_DEBUG_WRITECOUNT is not set
+# CONFIG_DEBUG_LIST is not set
+# CONFIG_DEBUG_SG is not set
+# CONFIG_DEBUG_NOTIFIERS is not set
+# CONFIG_DEBUG_CREDENTIALS is not set
+
+#
+# RCU Debugging
+#
+# CONFIG_PROVE_RCU is not set
+# CONFIG_PROVE_RCU_DELAY is not set
+# CONFIG_SPARSE_RCU_POINTER is not set
+# CONFIG_RCU_TORTURE_TEST is not set
+CONFIG_RCU_CPU_STALL_TIMEOUT=21
+CONFIG_RCU_CPU_STALL_VERBOSE=y
+# CONFIG_RCU_CPU_STALL_INFO is not set
+# CONFIG_RCU_TRACE is not set
+# CONFIG_DEBUG_BLOCK_EXT_DEVT is not set
+# CONFIG_NOTIFIER_ERROR_INJECTION is not set
+# CONFIG_FAULT_INJECTION is not set
+# CONFIG_LATENCYTOP is not set
+CONFIG_NOP_TRACER=y
+CONFIG_HAVE_FUNCTION_TRACER=y
+CONFIG_HAVE_FUNCTION_GRAPH_TRACER=y
+CONFIG_HAVE_DYNAMIC_FTRACE=y
+CONFIG_HAVE_FTRACE_MCOUNT_RECORD=y
+CONFIG_HAVE_SYSCALL_TRACEPOINTS=y
+CONFIG_HAVE_C_RECORDMCOUNT=y
+CONFIG_TRACE_CLOCK=y
+CONFIG_RING_BUFFER=y
+CONFIG_EVENT_TRACING=y
+CONFIG_CONTEXT_SWITCH_TRACER=y
+CONFIG_TRACING=y
+CONFIG_TRACING_SUPPORT=y
+CONFIG_FTRACE=y
+# CONFIG_FUNCTION_TRACER is not set
+# CONFIG_IRQSOFF_TRACER is not set
+# CONFIG_PREEMPT_TRACER is not set
+# CONFIG_SCHED_TRACER is not set
+# CONFIG_ENABLE_DEFAULT_TRACERS is not set
+# CONFIG_FTRACE_SYSCALLS is not set
+# CONFIG_TRACER_SNAPSHOT is not set
+CONFIG_BRANCH_PROFILE_NONE=y
+# CONFIG_PROFILE_ANNOTATED_BRANCHES is not set
+# CONFIG_PROFILE_ALL_BRANCHES is not set
+# CONFIG_STACK_TRACER is not set
+# CONFIG_BLK_DEV_IO_TRACE is not set
+CONFIG_KPROBE_EVENT=y
+CONFIG_PROBE_EVENTS=y
+# CONFIG_RING_BUFFER_BENCHMARK is not set
+# CONFIG_RING_BUFFER_STARTUP_TEST is not set
+
+#
+# Runtime Testing
+#
+# CONFIG_LKDTM is not set
+# CONFIG_TEST_LIST_SORT is not set
+# CONFIG_KPROBES_SANITY_TEST is not set
+# CONFIG_BACKTRACE_SELF_TEST is not set
+# CONFIG_RBTREE_TEST is not set
+# CONFIG_INTERVAL_TREE_TEST is not set
+# CONFIG_ATOMIC64_SELFTEST is not set
+# CONFIG_TEST_STRING_HELPERS is not set
+# CONFIG_TEST_KSTRTOX is not set
+# CONFIG_DMA_API_DEBUG is not set
+# CONFIG_SAMPLES is not set
+CONFIG_HAVE_ARCH_KGDB=y
+# CONFIG_KGDB is not set
+# CONFIG_STRICT_DEVMEM is not set
+CONFIG_ARM_UNWIND=y
+# CONFIG_DEBUG_USER is not set
+# CONFIG_DEBUG_LL is not set
+CONFIG_DEBUG_LL_INCLUDE="mach/debug-macro.S"
+# CONFIG_DEBUG_UART_PL01X is not set
+# CONFIG_DEBUG_UART_8250 is not set
+CONFIG_UNCOMPRESS_INCLUDE="debug/uncompress.h"
+# CONFIG_ARM_KPROBES_TEST is not set
+# CONFIG_PID_IN_CONTEXTIDR is not set
+
+#
+# Security options
+#
+CONFIG_KEYS=y
+# CONFIG_ENCRYPTED_KEYS is not set
+# CONFIG_KEYS_DEBUG_PROC_KEYS is not set
+# CONFIG_SECURITY_DMESG_RESTRICT is not set
+# CONFIG_SECURITY is not set
+# CONFIG_SECURITYFS is not set
+CONFIG_DEFAULT_SECURITY_DAC=y
+CONFIG_DEFAULT_SECURITY=""
+CONFIG_CRYPTO=y
+
+#
+# Crypto core or helper
+#
+CONFIG_CRYPTO_ALGAPI=y
+CONFIG_CRYPTO_ALGAPI2=y
+CONFIG_CRYPTO_AEAD2=y
+CONFIG_CRYPTO_BLKCIPHER=y
+CONFIG_CRYPTO_BLKCIPHER2=y
+CONFIG_CRYPTO_HASH=y
+CONFIG_CRYPTO_HASH2=y
+CONFIG_CRYPTO_RNG2=y
+CONFIG_CRYPTO_PCOMP2=y
+CONFIG_CRYPTO_MANAGER=y
+CONFIG_CRYPTO_MANAGER2=y
+# CONFIG_CRYPTO_USER is not set
+CONFIG_CRYPTO_MANAGER_DISABLE_TESTS=y
+# CONFIG_CRYPTO_GF128MUL is not set
+# CONFIG_CRYPTO_NULL is not set
+CONFIG_CRYPTO_WORKQUEUE=y
+# CONFIG_CRYPTO_CRYPTD is not set
+# CONFIG_CRYPTO_AUTHENC is not set
+# CONFIG_CRYPTO_TEST is not set
+
+#
+# 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 is not set
+# CONFIG_CRYPTO_CTR is not set
+# CONFIG_CRYPTO_CTS is not set
+CONFIG_CRYPTO_ECB=y
+# CONFIG_CRYPTO_LRW is not set
+# CONFIG_CRYPTO_PCBC is not set
+# CONFIG_CRYPTO_XTS is not set
+
+#
+# Hash modes
+#
+CONFIG_CRYPTO_CMAC=y
+CONFIG_CRYPTO_HMAC=y
+# CONFIG_CRYPTO_XCBC is not set
+# CONFIG_CRYPTO_VMAC is not set
+
+#
+# Digest
+#
+CONFIG_CRYPTO_CRC32C=y
+# CONFIG_CRYPTO_CRC32 is not set
+CONFIG_CRYPTO_CRCT10DIF=y
+# CONFIG_CRYPTO_GHASH is not set
+CONFIG_CRYPTO_MD4=y
+CONFIG_CRYPTO_MD5=y
+CONFIG_CRYPTO_MICHAEL_MIC=m
+# CONFIG_CRYPTO_RMD128 is not set
+# CONFIG_CRYPTO_RMD160 is not set
+# CONFIG_CRYPTO_RMD256 is not set
+# CONFIG_CRYPTO_RMD320 is not set
+# CONFIG_CRYPTO_SHA1 is not set
+# CONFIG_CRYPTO_SHA1_ARM is not set
+CONFIG_CRYPTO_SHA256=y
+# CONFIG_CRYPTO_SHA512 is not set
+# CONFIG_CRYPTO_TGR192 is not set
+# CONFIG_CRYPTO_WP512 is not set
+
+#
+# Ciphers
+#
+CONFIG_CRYPTO_AES=y
+# CONFIG_CRYPTO_AES_ARM is not set
+# CONFIG_CRYPTO_ANUBIS is not set
+CONFIG_CRYPTO_ARC4=y
+# CONFIG_CRYPTO_BLOWFISH is not set
+# CONFIG_CRYPTO_CAMELLIA is not set
+# CONFIG_CRYPTO_CAST5 is not set
+# CONFIG_CRYPTO_CAST6 is not set
+CONFIG_CRYPTO_DES=y
+# CONFIG_CRYPTO_FCRYPT is not set
+# CONFIG_CRYPTO_KHAZAD is not set
+# CONFIG_CRYPTO_SALSA20 is not set
+# CONFIG_CRYPTO_SEED is not set
+# CONFIG_CRYPTO_SERPENT is not set
+# CONFIG_CRYPTO_TEA is not set
+# CONFIG_CRYPTO_TWOFISH is not set
+
+#
+# Compression
+#
+CONFIG_CRYPTO_DEFLATE=y
+# CONFIG_CRYPTO_ZLIB is not set
+CONFIG_CRYPTO_LZO=y
+# CONFIG_CRYPTO_LZ4 is not set
+# CONFIG_CRYPTO_LZ4HC is not set
+
+#
+# Random Number Generation
+#
+# CONFIG_CRYPTO_ANSI_CPRNG is not set
+# CONFIG_CRYPTO_USER_API_HASH is not set
+# CONFIG_CRYPTO_USER_API_SKCIPHER is not set
+# CONFIG_CRYPTO_HW is not set
+# CONFIG_ASYMMETRIC_KEY_TYPE is not set
+CONFIG_BINARY_PRINTF=y
+
+#
+# Library routines
+#
+CONFIG_BITREVERSE=y
+CONFIG_GENERIC_STRNCPY_FROM_USER=y
+CONFIG_GENERIC_STRNLEN_USER=y
+CONFIG_GENERIC_NET_UTILS=y
+CONFIG_GENERIC_PCI_IOMAP=y
+CONFIG_GENERIC_IO=y
+CONFIG_CRC_CCITT=y
+CONFIG_CRC16=y
+CONFIG_CRC_T10DIF=y
+CONFIG_CRC_ITU_T=y
+CONFIG_CRC32=y
+# CONFIG_CRC32_SELFTEST is not set
+CONFIG_CRC32_SLICEBY8=y
+# CONFIG_CRC32_SLICEBY4 is not set
+# CONFIG_CRC32_SARWATE is not set
+# CONFIG_CRC32_BIT is not set
+CONFIG_CRC7=y
+CONFIG_LIBCRC32C=y
+# CONFIG_CRC8 is not set
+CONFIG_ZLIB_INFLATE=y
+CONFIG_ZLIB_DEFLATE=y
+CONFIG_LZO_COMPRESS=y
+CONFIG_LZO_DECOMPRESS=y
+# CONFIG_XZ_DEC is not set
+# CONFIG_XZ_DEC_BCJ is not set
+CONFIG_DECOMPRESS_GZIP=y
+CONFIG_GENERIC_ALLOCATOR=y
+CONFIG_TEXTSEARCH=y
+CONFIG_TEXTSEARCH_KMP=m
+CONFIG_TEXTSEARCH_BM=m
+CONFIG_TEXTSEARCH_FSM=m
+CONFIG_HAS_IOMEM=y
+CONFIG_HAS_IOPORT=y
+CONFIG_HAS_DMA=y
+CONFIG_DQL=y
+CONFIG_NLATTR=y
+CONFIG_ARCH_HAS_ATOMIC64_DEC_IF_POSITIVE=y
+CONFIG_AVERAGE=y
+# CONFIG_CORDIC is not set
+# CONFIG_DDR is not set
+CONFIG_OID_REGISTRY=y
+CONFIG_FONT_SUPPORT=y
+# CONFIG_FONTS is not set
+CONFIG_FONT_8x8=y
+CONFIG_FONT_8x16=y
+# CONFIG_VIRTUALIZATION is not set

+ 1082 - 0
board/GfA/Display001/busybox.config

@@ -0,0 +1,1082 @@
+#
+# Automatically generated make config: don't edit
+# Busybox version: 1.25.1
+# Tue Nov  8 12:01:30 2016
+#
+CONFIG_HAVE_DOT_CONFIG=y
+
+#
+# Busybox Settings
+#
+
+#
+# General Configuration
+#
+CONFIG_DESKTOP=y
+# CONFIG_EXTRA_COMPAT is not set
+CONFIG_INCLUDE_SUSv2=y
+# CONFIG_USE_PORTABLE_CODE is not set
+CONFIG_PLATFORM_LINUX=y
+CONFIG_FEATURE_BUFFERS_USE_MALLOC=y
+# CONFIG_FEATURE_BUFFERS_GO_ON_STACK is not set
+# CONFIG_FEATURE_BUFFERS_GO_IN_BSS is not set
+CONFIG_SHOW_USAGE=y
+CONFIG_FEATURE_VERBOSE_USAGE=y
+# CONFIG_FEATURE_COMPRESS_USAGE is not set
+CONFIG_BUSYBOX=y
+CONFIG_FEATURE_INSTALLER=y
+# CONFIG_INSTALL_NO_USR is not set
+CONFIG_LOCALE_SUPPORT=y
+CONFIG_UNICODE_SUPPORT=y
+# CONFIG_UNICODE_USING_LOCALE is not set
+# CONFIG_FEATURE_CHECK_UNICODE_IN_ENV is not set
+CONFIG_SUBST_WCHAR=63
+CONFIG_LAST_SUPPORTED_WCHAR=767
+# CONFIG_UNICODE_COMBINING_WCHARS is not set
+# CONFIG_UNICODE_WIDE_WCHARS is not set
+# CONFIG_UNICODE_BIDI_SUPPORT is not set
+# CONFIG_UNICODE_NEUTRAL_TABLE is not set
+# CONFIG_UNICODE_PRESERVE_BROKEN is not set
+# CONFIG_PAM is not set
+CONFIG_FEATURE_USE_SENDFILE=y
+CONFIG_LONG_OPTS=y
+CONFIG_FEATURE_DEVPTS=y
+CONFIG_FEATURE_CLEAN_UP=y
+CONFIG_FEATURE_UTMP=y
+CONFIG_FEATURE_WTMP=y
+# CONFIG_FEATURE_PIDFILE is not set
+CONFIG_PID_FILE_PATH=""
+CONFIG_FEATURE_SUID=y
+# CONFIG_FEATURE_SUID_CONFIG is not set
+# CONFIG_FEATURE_SUID_CONFIG_QUIET is not set
+# CONFIG_SELINUX is not set
+# CONFIG_FEATURE_PREFER_APPLETS is not set
+CONFIG_BUSYBOX_EXEC_PATH="/proc/self/exe"
+CONFIG_FEATURE_SYSLOG=y
+# CONFIG_FEATURE_HAVE_RPC is not set
+
+#
+# Build Options
+#
+# CONFIG_STATIC is not set
+# CONFIG_PIE is not set
+# CONFIG_NOMMU is not set
+# CONFIG_BUILD_LIBBUSYBOX is not set
+# CONFIG_FEATURE_INDIVIDUAL is not set
+# CONFIG_FEATURE_SHARED_BUSYBOX is not set
+CONFIG_LFS=y
+CONFIG_CROSS_COMPILER_PREFIX=""
+CONFIG_SYSROOT=""
+CONFIG_EXTRA_CFLAGS=""
+CONFIG_EXTRA_LDFLAGS=""
+CONFIG_EXTRA_LDLIBS=""
+
+#
+# Debugging Options
+#
+# CONFIG_DEBUG is not set
+# CONFIG_DEBUG_PESSIMIZE is not set
+# CONFIG_DEBUG_SANITIZE is not set
+# CONFIG_UNIT_TEST is not set
+# CONFIG_WERROR is not set
+CONFIG_NO_DEBUG_LIB=y
+# CONFIG_DMALLOC is not set
+# CONFIG_EFENCE is not set
+
+#
+# Installation Options ("make install" behavior)
+#
+CONFIG_INSTALL_APPLET_SYMLINKS=y
+# CONFIG_INSTALL_APPLET_HARDLINKS is not set
+# CONFIG_INSTALL_APPLET_SCRIPT_WRAPPERS is not set
+# CONFIG_INSTALL_APPLET_DONT is not set
+# CONFIG_INSTALL_SH_APPLET_SYMLINK is not set
+# CONFIG_INSTALL_SH_APPLET_HARDLINK is not set
+# CONFIG_INSTALL_SH_APPLET_SCRIPT_WRAPPER is not set
+CONFIG_PREFIX="./_install"
+
+#
+# Busybox Library Tuning
+#
+# CONFIG_FEATURE_USE_BSS_TAIL is not set
+CONFIG_FEATURE_RTMINMAX=y
+CONFIG_PASSWORD_MINLEN=6
+CONFIG_MD5_SMALL=1
+CONFIG_SHA3_SMALL=1
+# CONFIG_FEATURE_FAST_TOP is not set
+# CONFIG_FEATURE_ETC_NETWORKS is not set
+CONFIG_FEATURE_USE_TERMIOS=y
+CONFIG_FEATURE_EDITING=y
+CONFIG_FEATURE_EDITING_MAX_LEN=1024
+CONFIG_FEATURE_EDITING_VI=y
+CONFIG_FEATURE_EDITING_HISTORY=999
+CONFIG_FEATURE_EDITING_SAVEHISTORY=y
+# CONFIG_FEATURE_EDITING_SAVE_ON_EXIT is not set
+CONFIG_FEATURE_REVERSE_SEARCH=y
+CONFIG_FEATURE_TAB_COMPLETION=y
+# CONFIG_FEATURE_USERNAME_COMPLETION is not set
+CONFIG_FEATURE_EDITING_FANCY_PROMPT=y
+# CONFIG_FEATURE_EDITING_ASK_TERMINAL is not set
+CONFIG_FEATURE_NON_POSIX_CP=y
+# CONFIG_FEATURE_VERBOSE_CP_MESSAGE is not set
+CONFIG_FEATURE_COPYBUF_KB=4
+CONFIG_FEATURE_SKIP_ROOTFS=y
+CONFIG_MONOTONIC_SYSCALL=y
+CONFIG_IOCTL_HEX2STR_ERROR=y
+CONFIG_FEATURE_HWIB=y
+
+#
+# Applets
+#
+
+#
+# Archival Utilities
+#
+CONFIG_FEATURE_SEAMLESS_XZ=y
+CONFIG_FEATURE_SEAMLESS_LZMA=y
+CONFIG_FEATURE_SEAMLESS_BZ2=y
+CONFIG_FEATURE_SEAMLESS_GZ=y
+CONFIG_FEATURE_SEAMLESS_Z=y
+CONFIG_AR=y
+# CONFIG_FEATURE_AR_LONG_FILENAMES is not set
+CONFIG_FEATURE_AR_CREATE=y
+# CONFIG_UNCOMPRESS is not set
+CONFIG_GUNZIP=y
+CONFIG_FEATURE_GUNZIP_LONG_OPTIONS=y
+CONFIG_BUNZIP2=y
+CONFIG_UNLZMA=y
+# CONFIG_FEATURE_LZMA_FAST is not set
+CONFIG_LZMA=y
+CONFIG_UNXZ=y
+CONFIG_XZ=y
+# CONFIG_BZIP2 is not set
+CONFIG_CPIO=y
+# CONFIG_FEATURE_CPIO_O is not set
+# CONFIG_FEATURE_CPIO_P is not set
+# CONFIG_DPKG is not set
+# CONFIG_DPKG_DEB is not set
+# CONFIG_FEATURE_DPKG_DEB_EXTRACT_ONLY is not set
+CONFIG_GZIP=y
+# CONFIG_FEATURE_GZIP_LONG_OPTIONS is not set
+CONFIG_GZIP_FAST=0
+# CONFIG_FEATURE_GZIP_LEVELS is not set
+# CONFIG_LZOP is not set
+# CONFIG_LZOP_COMPR_HIGH is not set
+# CONFIG_RPM2CPIO is not set
+# CONFIG_RPM is not set
+CONFIG_TAR=y
+CONFIG_FEATURE_TAR_CREATE=y
+CONFIG_FEATURE_TAR_AUTODETECT=y
+CONFIG_FEATURE_TAR_FROM=y
+# CONFIG_FEATURE_TAR_OLDGNU_COMPATIBILITY is not set
+# CONFIG_FEATURE_TAR_OLDSUN_COMPATIBILITY is not set
+CONFIG_FEATURE_TAR_GNU_EXTENSIONS=y
+CONFIG_FEATURE_TAR_LONG_OPTIONS=y
+CONFIG_FEATURE_TAR_TO_COMMAND=y
+# CONFIG_FEATURE_TAR_UNAME_GNAME is not set
+# CONFIG_FEATURE_TAR_NOPRESERVE_TIME is not set
+# CONFIG_FEATURE_TAR_SELINUX is not set
+CONFIG_UNZIP=y
+
+#
+# Coreutils
+#
+CONFIG_BASENAME=y
+CONFIG_CAT=y
+CONFIG_DATE=y
+CONFIG_FEATURE_DATE_ISOFMT=y
+# CONFIG_FEATURE_DATE_NANO is not set
+CONFIG_FEATURE_DATE_COMPAT=y
+CONFIG_DD=y
+CONFIG_FEATURE_DD_SIGNAL_HANDLING=y
+# CONFIG_FEATURE_DD_THIRD_STATUS_LINE is not set
+CONFIG_FEATURE_DD_IBS_OBS=y
+CONFIG_FEATURE_DD_STATUS=y
+CONFIG_HOSTID=y
+CONFIG_ID=y
+# CONFIG_GROUPS is not set
+CONFIG_SHUF=y
+# CONFIG_STAT is not set
+# CONFIG_FEATURE_STAT_FORMAT is not set
+# CONFIG_FEATURE_STAT_FILESYSTEM is not set
+CONFIG_SYNC=y
+CONFIG_FEATURE_SYNC_FANCY=y
+CONFIG_TEST=y
+CONFIG_FEATURE_TEST_64=y
+CONFIG_TOUCH=y
+# CONFIG_FEATURE_TOUCH_NODEREF is not set
+CONFIG_FEATURE_TOUCH_SUSV3=y
+CONFIG_TR=y
+CONFIG_FEATURE_TR_CLASSES=y
+CONFIG_FEATURE_TR_EQUIV=y
+CONFIG_TRUNCATE=y
+CONFIG_UNLINK=y
+# CONFIG_BASE64 is not set
+CONFIG_WHO=y
+# CONFIG_USERS is not set
+# CONFIG_CAL is not set
+CONFIG_CATV=y
+CONFIG_CHGRP=y
+CONFIG_CHMOD=y
+CONFIG_CHOWN=y
+# CONFIG_FEATURE_CHOWN_LONG_OPTIONS is not set
+CONFIG_CHROOT=y
+CONFIG_CKSUM=y
+# CONFIG_COMM is not set
+CONFIG_CP=y
+# CONFIG_FEATURE_CP_LONG_OPTIONS is not set
+CONFIG_CUT=y
+CONFIG_DF=y
+# CONFIG_FEATURE_DF_FANCY is not set
+CONFIG_DIRNAME=y
+CONFIG_DOS2UNIX=y
+CONFIG_UNIX2DOS=y
+CONFIG_DU=y
+CONFIG_FEATURE_DU_DEFAULT_BLOCKSIZE_1K=y
+CONFIG_ECHO=y
+CONFIG_FEATURE_FANCY_ECHO=y
+CONFIG_ENV=y
+# CONFIG_FEATURE_ENV_LONG_OPTIONS is not set
+# CONFIG_EXPAND is not set
+# CONFIG_FEATURE_EXPAND_LONG_OPTIONS is not set
+CONFIG_EXPR=y
+CONFIG_EXPR_MATH_SUPPORT_64=y
+CONFIG_FALSE=y
+CONFIG_FOLD=y
+# CONFIG_FSYNC is not set
+CONFIG_HEAD=y
+CONFIG_FEATURE_FANCY_HEAD=y
+CONFIG_INSTALL=y
+CONFIG_FEATURE_INSTALL_LONG_OPTIONS=y
+CONFIG_LN=y
+CONFIG_LOGNAME=y
+CONFIG_LS=y
+CONFIG_FEATURE_LS_FILETYPES=y
+CONFIG_FEATURE_LS_FOLLOWLINKS=y
+CONFIG_FEATURE_LS_RECURSIVE=y
+CONFIG_FEATURE_LS_SORTFILES=y
+CONFIG_FEATURE_LS_TIMESTAMPS=y
+CONFIG_FEATURE_LS_USERNAME=y
+CONFIG_FEATURE_LS_COLOR=y
+CONFIG_FEATURE_LS_COLOR_IS_DEFAULT=y
+CONFIG_MD5SUM=y
+CONFIG_MKDIR=y
+CONFIG_FEATURE_MKDIR_LONG_OPTIONS=y
+CONFIG_MKFIFO=y
+CONFIG_MKNOD=y
+CONFIG_MV=y
+CONFIG_FEATURE_MV_LONG_OPTIONS=y
+CONFIG_NICE=y
+CONFIG_NOHUP=y
+CONFIG_OD=y
+CONFIG_PRINTENV=y
+CONFIG_PRINTF=y
+CONFIG_PWD=y
+CONFIG_READLINK=y
+CONFIG_FEATURE_READLINK_FOLLOW=y
+CONFIG_REALPATH=y
+CONFIG_RM=y
+CONFIG_RMDIR=y
+# CONFIG_FEATURE_RMDIR_LONG_OPTIONS is not set
+CONFIG_SEQ=y
+CONFIG_SHA1SUM=y
+CONFIG_SHA256SUM=y
+CONFIG_SHA512SUM=y
+CONFIG_SHA3SUM=y
+CONFIG_SLEEP=y
+# CONFIG_FEATURE_FANCY_SLEEP is not set
+# CONFIG_FEATURE_FLOAT_SLEEP is not set
+CONFIG_SORT=y
+CONFIG_FEATURE_SORT_BIG=y
+# CONFIG_SPLIT is not set
+# CONFIG_FEATURE_SPLIT_FANCY is not set
+CONFIG_STTY=y
+# CONFIG_SUM is not set
+# CONFIG_TAC is not set
+CONFIG_TAIL=y
+CONFIG_FEATURE_FANCY_TAIL=y
+CONFIG_TEE=y
+CONFIG_FEATURE_TEE_USE_BLOCK_IO=y
+CONFIG_TRUE=y
+CONFIG_TTY=y
+CONFIG_UNAME=y
+CONFIG_UNAME_OSNAME="GNU/Linux"
+# CONFIG_UNEXPAND is not set
+# CONFIG_FEATURE_UNEXPAND_LONG_OPTIONS is not set
+CONFIG_UNIQ=y
+CONFIG_USLEEP=y
+CONFIG_UUDECODE=y
+CONFIG_UUENCODE=y
+CONFIG_WC=y
+# CONFIG_FEATURE_WC_LARGE is not set
+CONFIG_WHOAMI=y
+CONFIG_YES=y
+
+#
+# Common options
+#
+CONFIG_FEATURE_VERBOSE=y
+
+#
+# Common options for cp and mv
+#
+CONFIG_FEATURE_PRESERVE_HARDLINKS=y
+
+#
+# Common options for ls, more and telnet
+#
+CONFIG_FEATURE_AUTOWIDTH=y
+
+#
+# Common options for df, du, ls
+#
+CONFIG_FEATURE_HUMAN_READABLE=y
+
+#
+# Common options for md5sum, sha1sum, sha256sum, sha512sum, sha3sum
+#
+CONFIG_FEATURE_MD5_SHA1_SUM_CHECK=y
+
+#
+# Console Utilities
+#
+CONFIG_CHVT=y
+CONFIG_FGCONSOLE=y
+CONFIG_CLEAR=y
+CONFIG_DEALLOCVT=y
+CONFIG_DUMPKMAP=y
+# CONFIG_KBD_MODE is not set
+CONFIG_LOADFONT=y
+CONFIG_LOADKMAP=y
+CONFIG_OPENVT=y
+CONFIG_RESET=y
+CONFIG_RESIZE=y
+CONFIG_FEATURE_RESIZE_PRINT=y
+CONFIG_SETCONSOLE=y
+# CONFIG_FEATURE_SETCONSOLE_LONG_OPTIONS is not set
+# CONFIG_SETFONT is not set
+# CONFIG_FEATURE_SETFONT_TEXTUAL_MAP is not set
+CONFIG_DEFAULT_SETFONT_DIR=""
+CONFIG_SETKEYCODES=y
+CONFIG_SETLOGCONS=y
+# CONFIG_SHOWKEY is not set
+
+#
+# Common options for loadfont and setfont
+#
+CONFIG_FEATURE_LOADFONT_PSF2=y
+CONFIG_FEATURE_LOADFONT_RAW=y
+
+#
+# Debian Utilities
+#
+CONFIG_MKTEMP=y
+CONFIG_PIPE_PROGRESS=y
+CONFIG_RUN_PARTS=y
+CONFIG_FEATURE_RUN_PARTS_LONG_OPTIONS=y
+# CONFIG_FEATURE_RUN_PARTS_FANCY is not set
+CONFIG_START_STOP_DAEMON=y
+CONFIG_FEATURE_START_STOP_DAEMON_FANCY=y
+CONFIG_FEATURE_START_STOP_DAEMON_LONG_OPTIONS=y
+CONFIG_WHICH=y
+
+#
+# Editors
+#
+CONFIG_AWK=y
+# CONFIG_FEATURE_AWK_LIBM is not set
+CONFIG_FEATURE_AWK_GNU_EXTENSIONS=y
+CONFIG_CMP=y
+CONFIG_DIFF=y
+# CONFIG_FEATURE_DIFF_LONG_OPTIONS is not set
+CONFIG_FEATURE_DIFF_DIR=y
+# CONFIG_ED is not set
+CONFIG_PATCH=y
+CONFIG_SED=y
+CONFIG_VI=y
+CONFIG_FEATURE_VI_MAX_LEN=4096
+CONFIG_FEATURE_VI_8BIT=y
+CONFIG_FEATURE_VI_COLON=y
+CONFIG_FEATURE_VI_YANKMARK=y
+CONFIG_FEATURE_VI_SEARCH=y
+# CONFIG_FEATURE_VI_REGEX_SEARCH is not set
+CONFIG_FEATURE_VI_USE_SIGNALS=y
+CONFIG_FEATURE_VI_DOT_CMD=y
+CONFIG_FEATURE_VI_READONLY=y
+CONFIG_FEATURE_VI_SETOPTS=y
+CONFIG_FEATURE_VI_SET=y
+CONFIG_FEATURE_VI_WIN_RESIZE=y
+CONFIG_FEATURE_VI_ASK_TERMINAL=y
+CONFIG_FEATURE_VI_UNDO=y
+CONFIG_FEATURE_VI_UNDO_QUEUE=y
+CONFIG_FEATURE_VI_UNDO_QUEUE_MAX=256
+CONFIG_FEATURE_ALLOW_EXEC=y
+
+#
+# Finding Utilities
+#
+CONFIG_FIND=y
+CONFIG_FEATURE_FIND_PRINT0=y
+CONFIG_FEATURE_FIND_MTIME=y
+CONFIG_FEATURE_FIND_MMIN=y
+CONFIG_FEATURE_FIND_PERM=y
+CONFIG_FEATURE_FIND_TYPE=y
+CONFIG_FEATURE_FIND_XDEV=y
+CONFIG_FEATURE_FIND_MAXDEPTH=y
+CONFIG_FEATURE_FIND_NEWER=y
+# CONFIG_FEATURE_FIND_INUM is not set
+CONFIG_FEATURE_FIND_EXEC=y
+CONFIG_FEATURE_FIND_EXEC_PLUS=y
+CONFIG_FEATURE_FIND_USER=y
+CONFIG_FEATURE_FIND_GROUP=y
+CONFIG_FEATURE_FIND_NOT=y
+CONFIG_FEATURE_FIND_DEPTH=y
+CONFIG_FEATURE_FIND_PAREN=y
+CONFIG_FEATURE_FIND_SIZE=y
+CONFIG_FEATURE_FIND_PRUNE=y
+# CONFIG_FEATURE_FIND_DELETE is not set
+CONFIG_FEATURE_FIND_PATH=y
+CONFIG_FEATURE_FIND_REGEX=y
+# CONFIG_FEATURE_FIND_CONTEXT is not set
+# CONFIG_FEATURE_FIND_LINKS is not set
+CONFIG_GREP=y
+CONFIG_FEATURE_GREP_EGREP_ALIAS=y
+CONFIG_FEATURE_GREP_FGREP_ALIAS=y
+CONFIG_FEATURE_GREP_CONTEXT=y
+CONFIG_XARGS=y
+# CONFIG_FEATURE_XARGS_SUPPORT_CONFIRMATION is not set
+CONFIG_FEATURE_XARGS_SUPPORT_QUOTES=y
+CONFIG_FEATURE_XARGS_SUPPORT_TERMOPT=y
+CONFIG_FEATURE_XARGS_SUPPORT_ZERO_TERM=y
+CONFIG_FEATURE_XARGS_SUPPORT_REPL_STR=y
+
+#
+# Init Utilities
+#
+# CONFIG_BOOTCHARTD is not set
+# CONFIG_FEATURE_BOOTCHARTD_BLOATED_HEADER is not set
+# CONFIG_FEATURE_BOOTCHARTD_CONFIG_FILE is not set
+CONFIG_HALT=y
+# CONFIG_FEATURE_CALL_TELINIT is not set
+CONFIG_TELINIT_PATH=""
+CONFIG_INIT=y
+CONFIG_LINUXRC=y
+CONFIG_FEATURE_USE_INITTAB=y
+CONFIG_FEATURE_KILL_REMOVED=y
+CONFIG_FEATURE_KILL_DELAY=0
+CONFIG_FEATURE_INIT_SCTTY=y
+CONFIG_FEATURE_INIT_SYSLOG=y
+CONFIG_FEATURE_EXTRA_QUIET=y
+# CONFIG_FEATURE_INIT_COREDUMPS is not set
+CONFIG_INIT_TERMINAL_TYPE="linux"
+CONFIG_FEATURE_INIT_MODIFY_CMDLINE=y
+CONFIG_MESG=y
+CONFIG_FEATURE_MESG_ENABLE_ONLY_GROUP=y
+
+#
+# Login/Password Management Utilities
+#
+CONFIG_FEATURE_SHADOWPASSWDS=y
+# CONFIG_USE_BB_PWD_GRP is not set
+# CONFIG_USE_BB_SHADOW is not set
+CONFIG_USE_BB_CRYPT=y
+# CONFIG_USE_BB_CRYPT_SHA is not set
+CONFIG_ADDGROUP=y
+# CONFIG_FEATURE_ADDGROUP_LONG_OPTIONS is not set
+# CONFIG_FEATURE_ADDUSER_TO_GROUP is not set
+# CONFIG_ADD_SHELL is not set
+# CONFIG_REMOVE_SHELL is not set
+CONFIG_ADDUSER=y
+# CONFIG_FEATURE_ADDUSER_LONG_OPTIONS is not set
+# CONFIG_FEATURE_CHECK_NAMES is not set
+CONFIG_LAST_ID=60000
+CONFIG_FIRST_SYSTEM_ID=100
+CONFIG_LAST_SYSTEM_ID=999
+# CONFIG_CHPASSWD is not set
+CONFIG_FEATURE_DEFAULT_PASSWD_ALGO="des"
+# CONFIG_CRYPTPW is not set
+CONFIG_MKPASSWD=y
+CONFIG_DELUSER=y
+CONFIG_DELGROUP=y
+# CONFIG_FEATURE_DEL_USER_FROM_GROUP is not set
+CONFIG_GETTY=y
+CONFIG_LOGIN=y
+# CONFIG_LOGIN_SESSION_AS_CHILD is not set
+# CONFIG_LOGIN_SCRIPTS is not set
+CONFIG_FEATURE_NOLOGIN=y
+CONFIG_FEATURE_SECURETTY=y
+CONFIG_PASSWD=y
+CONFIG_FEATURE_PASSWD_WEAK_CHECK=y
+CONFIG_SU=y
+CONFIG_FEATURE_SU_SYSLOG=y
+CONFIG_FEATURE_SU_CHECKS_SHELLS=y
+CONFIG_SULOGIN=y
+CONFIG_VLOCK=y
+
+#
+# Linux Ext2 FS Progs
+#
+CONFIG_CHATTR=y
+CONFIG_FSCK=y
+CONFIG_LSATTR=y
+# CONFIG_TUNE2FS is not set
+
+#
+# Linux Module Utilities
+#
+CONFIG_MODINFO=y
+# CONFIG_MODPROBE_SMALL is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_OPTIONS_ON_CMDLINE is not set
+# CONFIG_FEATURE_MODPROBE_SMALL_CHECK_ALREADY_LOADED is not set
+CONFIG_INSMOD=y
+CONFIG_RMMOD=y
+CONFIG_LSMOD=y
+CONFIG_FEATURE_LSMOD_PRETTY_2_6_OUTPUT=y
+CONFIG_MODPROBE=y
+CONFIG_FEATURE_MODPROBE_BLACKLIST=y
+CONFIG_DEPMOD=y
+
+#
+# Options common to multiple modutils
+#
+# CONFIG_FEATURE_2_4_MODULES is not set
+# CONFIG_FEATURE_INSMOD_TRY_MMAP is not set
+# CONFIG_FEATURE_INSMOD_VERSION_CHECKING is not set
+# CONFIG_FEATURE_INSMOD_KSYMOOPS_SYMBOLS is not set
+# CONFIG_FEATURE_INSMOD_LOADINKMEM is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP is not set
+# CONFIG_FEATURE_INSMOD_LOAD_MAP_FULL is not set
+CONFIG_FEATURE_CHECK_TAINTED_MODULE=y
+CONFIG_FEATURE_MODUTILS_ALIAS=y
+CONFIG_FEATURE_MODUTILS_SYMBOLS=y
+CONFIG_DEFAULT_MODULES_DIR="/lib/modules"
+CONFIG_DEFAULT_DEPMOD_FILE="modules.dep"
+
+#
+# Linux System Utilities
+#
+CONFIG_BLKDISCARD=y
+# CONFIG_BLOCKDEV is not set
+CONFIG_FATATTR=y
+CONFIG_FSTRIM=y
+CONFIG_MDEV=y
+CONFIG_FEATURE_MDEV_CONF=y
+CONFIG_FEATURE_MDEV_RENAME=y
+# CONFIG_FEATURE_MDEV_RENAME_REGEXP is not set
+CONFIG_FEATURE_MDEV_EXEC=y
+# CONFIG_FEATURE_MDEV_LOAD_FIRMWARE is not set
+CONFIG_MOUNT=y
+# CONFIG_FEATURE_MOUNT_FAKE is not set
+# CONFIG_FEATURE_MOUNT_VERBOSE is not set
+# CONFIG_FEATURE_MOUNT_HELPERS is not set
+# CONFIG_FEATURE_MOUNT_LABEL is not set
+# CONFIG_FEATURE_MOUNT_NFS is not set
+CONFIG_FEATURE_MOUNT_CIFS=y
+CONFIG_FEATURE_MOUNT_FLAGS=y
+CONFIG_FEATURE_MOUNT_FSTAB=y
+CONFIG_FEATURE_MOUNT_OTHERTAB=y
+CONFIG_NSENTER=y
+CONFIG_FEATURE_NSENTER_LONG_OPTS=y
+# CONFIG_REV is not set
+CONFIG_SETARCH=y
+CONFIG_UEVENT=y
+CONFIG_UNSHARE=y
+# CONFIG_ACPID is not set
+# CONFIG_FEATURE_ACPID_COMPAT is not set
+CONFIG_BLKID=y
+# CONFIG_FEATURE_BLKID_TYPE is not set
+CONFIG_DMESG=y
+CONFIG_FEATURE_DMESG_PRETTY=y
+CONFIG_FBSET=y
+CONFIG_FEATURE_FBSET_FANCY=y
+CONFIG_FEATURE_FBSET_READMODE=y
+CONFIG_FDFLUSH=y
+CONFIG_FDFORMAT=y
+CONFIG_FDISK=y
+# CONFIG_FDISK_SUPPORT_LARGE_DISKS is not set
+CONFIG_FEATURE_FDISK_WRITABLE=y
+# CONFIG_FEATURE_AIX_LABEL is not set
+# CONFIG_FEATURE_SGI_LABEL is not set
+# CONFIG_FEATURE_SUN_LABEL is not set
+# CONFIG_FEATURE_OSF_LABEL is not set
+CONFIG_FEATURE_GPT_LABEL=y
+CONFIG_FEATURE_FDISK_ADVANCED=y
+# CONFIG_FINDFS is not set
+# CONFIG_FLOCK is not set
+CONFIG_FREERAMDISK=y
+# CONFIG_FSCK_MINIX is not set
+# CONFIG_MKFS_EXT2 is not set
+# CONFIG_MKFS_MINIX is not set
+# CONFIG_FEATURE_MINIX2 is not set
+# CONFIG_MKFS_REISER is not set
+CONFIG_MKFS_VFAT=y
+CONFIG_GETOPT=y
+CONFIG_FEATURE_GETOPT_LONG=y
+CONFIG_HEXDUMP=y
+# CONFIG_FEATURE_HEXDUMP_REVERSE is not set
+# CONFIG_HD is not set
+CONFIG_HWCLOCK=y
+CONFIG_FEATURE_HWCLOCK_LONG_OPTIONS=y
+CONFIG_FEATURE_HWCLOCK_ADJTIME_FHS=y
+CONFIG_IPCRM=y
+CONFIG_IPCS=y
+CONFIG_LOSETUP=y
+CONFIG_LSPCI=y
+CONFIG_LSUSB=y
+CONFIG_MKSWAP=y
+# CONFIG_FEATURE_MKSWAP_UUID is not set
+CONFIG_MORE=y
+CONFIG_PIVOT_ROOT=y
+CONFIG_RDATE=y
+# CONFIG_RDEV is not set
+CONFIG_READPROFILE=y
+# CONFIG_RTCWAKE is not set
+# CONFIG_SCRIPT is not set
+# CONFIG_SCRIPTREPLAY is not set
+CONFIG_SWAPONOFF=y
+CONFIG_FEATURE_SWAPON_DISCARD=y
+# CONFIG_FEATURE_SWAPON_PRI is not set
+CONFIG_SWITCH_ROOT=y
+CONFIG_UMOUNT=y
+CONFIG_FEATURE_UMOUNT_ALL=y
+
+#
+# Common options for mount/umount
+#
+CONFIG_FEATURE_MOUNT_LOOP=y
+CONFIG_FEATURE_MOUNT_LOOP_CREATE=y
+# CONFIG_FEATURE_MTAB_SUPPORT is not set
+CONFIG_VOLUMEID=y
+
+#
+# Filesystem/Volume identification
+#
+CONFIG_FEATURE_VOLUMEID_BCACHE=y
+# CONFIG_FEATURE_VOLUMEID_BTRFS is not set
+# CONFIG_FEATURE_VOLUMEID_CRAMFS is not set
+CONFIG_FEATURE_VOLUMEID_EXFAT=y
+CONFIG_FEATURE_VOLUMEID_EXT=y
+CONFIG_FEATURE_VOLUMEID_F2FS=y
+CONFIG_FEATURE_VOLUMEID_FAT=y
+# CONFIG_FEATURE_VOLUMEID_HFS is not set
+# CONFIG_FEATURE_VOLUMEID_ISO9660 is not set
+# CONFIG_FEATURE_VOLUMEID_JFS is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXRAID is not set
+# CONFIG_FEATURE_VOLUMEID_LINUXSWAP is not set
+# CONFIG_FEATURE_VOLUMEID_LUKS is not set
+# CONFIG_FEATURE_VOLUMEID_NILFS is not set
+# CONFIG_FEATURE_VOLUMEID_NTFS is not set
+# CONFIG_FEATURE_VOLUMEID_OCFS2 is not set
+# CONFIG_FEATURE_VOLUMEID_REISERFS is not set
+# CONFIG_FEATURE_VOLUMEID_ROMFS is not set
+# CONFIG_FEATURE_VOLUMEID_SQUASHFS is not set
+# CONFIG_FEATURE_VOLUMEID_SYSV is not set
+# CONFIG_FEATURE_VOLUMEID_UDF is not set
+# CONFIG_FEATURE_VOLUMEID_XFS is not set
+
+#
+# Miscellaneous Utilities
+#
+CONFIG_CONSPY=y
+CONFIG_CROND=y
+# CONFIG_FEATURE_CROND_D is not set
+# CONFIG_FEATURE_CROND_CALL_SENDMAIL is not set
+CONFIG_FEATURE_CROND_DIR="/var/spool/cron"
+CONFIG_I2CGET=y
+CONFIG_I2CSET=y
+CONFIG_I2CDUMP=y
+CONFIG_I2CDETECT=y
+CONFIG_LESS=y
+CONFIG_FEATURE_LESS_MAXLINES=9999999
+CONFIG_FEATURE_LESS_BRACKETS=y
+CONFIG_FEATURE_LESS_FLAGS=y
+CONFIG_FEATURE_LESS_TRUNCATE=y
+# CONFIG_FEATURE_LESS_MARKS is not set
+CONFIG_FEATURE_LESS_REGEXP=y
+# CONFIG_FEATURE_LESS_WINCH is not set
+# CONFIG_FEATURE_LESS_ASK_TERMINAL is not set
+# CONFIG_FEATURE_LESS_DASHCMD is not set
+# CONFIG_FEATURE_LESS_LINENUMS is not set
+# CONFIG_NANDWRITE is not set
+# CONFIG_NANDDUMP is not set
+CONFIG_RFKILL=y
+CONFIG_SETSERIAL=y
+# CONFIG_TASKSET is not set
+# CONFIG_FEATURE_TASKSET_FANCY is not set
+CONFIG_UBIRENAME=y
+# CONFIG_UBIATTACH is not set
+# CONFIG_UBIDETACH is not set
+# CONFIG_UBIMKVOL is not set
+# CONFIG_UBIRMVOL is not set
+# CONFIG_UBIRSVOL is not set
+# CONFIG_UBIUPDATEVOL is not set
+# CONFIG_WALL is not set
+# CONFIG_ADJTIMEX is not set
+# CONFIG_BBCONFIG is not set
+# CONFIG_FEATURE_COMPRESS_BBCONFIG is not set
+CONFIG_BEEP=y
+CONFIG_FEATURE_BEEP_FREQ=4000
+CONFIG_FEATURE_BEEP_LENGTH_MS=30
+# CONFIG_CHAT is not set
+# CONFIG_FEATURE_CHAT_NOFAIL is not set
+# CONFIG_FEATURE_CHAT_TTY_HIFI is not set
+# CONFIG_FEATURE_CHAT_IMPLICIT_CR is not set
+# CONFIG_FEATURE_CHAT_SWALLOW_OPTS is not set
+# CONFIG_FEATURE_CHAT_SEND_ESCAPES is not set
+# CONFIG_FEATURE_CHAT_VAR_ABORT_LEN is not set
+# CONFIG_FEATURE_CHAT_CLR_ABORT is not set
+CONFIG_CHRT=y
+CONFIG_CRONTAB=y
+CONFIG_DC=y
+# CONFIG_FEATURE_DC_LIBM is not set
+# CONFIG_DEVFSD is not set
+# CONFIG_DEVFSD_MODLOAD is not set
+# CONFIG_DEVFSD_FG_NP is not set
+# CONFIG_DEVFSD_VERBOSE is not set
+# CONFIG_FEATURE_DEVFS is not set
+CONFIG_DEVMEM=y
+CONFIG_EJECT=y
+# CONFIG_FEATURE_EJECT_SCSI is not set
+# CONFIG_FBSPLASH is not set
+# CONFIG_FLASHCP is not set
+# CONFIG_FLASH_LOCK is not set
+# CONFIG_FLASH_UNLOCK is not set
+# CONFIG_FLASH_ERASEALL is not set
+# CONFIG_IONICE is not set
+# CONFIG_INOTIFYD is not set
+CONFIG_LAST=y
+# CONFIG_FEATURE_LAST_FANCY is not set
+CONFIG_HDPARM=y
+CONFIG_FEATURE_HDPARM_GET_IDENTITY=y
+# CONFIG_FEATURE_HDPARM_HDIO_SCAN_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_UNREGISTER_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_DRIVE_RESET is not set
+# CONFIG_FEATURE_HDPARM_HDIO_TRISTATE_HWIF is not set
+# CONFIG_FEATURE_HDPARM_HDIO_GETSET_DMA is not set
+CONFIG_MAKEDEVS=y
+# CONFIG_FEATURE_MAKEDEVS_LEAF is not set
+CONFIG_FEATURE_MAKEDEVS_TABLE=y
+# CONFIG_MAN is not set
+CONFIG_MICROCOM=y
+CONFIG_MOUNTPOINT=y
+CONFIG_MT=y
+# CONFIG_RAIDAUTORUN is not set
+# CONFIG_READAHEAD is not set
+CONFIG_RUNLEVEL=y
+# CONFIG_RX is not set
+CONFIG_SETSID=y
+CONFIG_STRINGS=y
+CONFIG_TIME=y
+# CONFIG_TIMEOUT is not set
+# CONFIG_TTYSIZE is not set
+# CONFIG_VOLNAME is not set
+CONFIG_WATCHDOG=y
+
+#
+# Networking Utilities
+#
+CONFIG_NAMEIF=y
+# CONFIG_FEATURE_NAMEIF_EXTENDED is not set
+# CONFIG_NBDCLIENT is not set
+# CONFIG_NC is not set
+# CONFIG_NC_SERVER is not set
+# CONFIG_NC_EXTRA is not set
+# CONFIG_NC_110_COMPAT is not set
+CONFIG_PING=y
+# CONFIG_PING6 is not set
+CONFIG_FEATURE_FANCY_PING=y
+CONFIG_WGET=y
+CONFIG_FEATURE_WGET_STATUSBAR=y
+CONFIG_FEATURE_WGET_AUTHENTICATION=y
+CONFIG_FEATURE_WGET_LONG_OPTIONS=y
+CONFIG_FEATURE_WGET_TIMEOUT=y
+CONFIG_FEATURE_WGET_OPENSSL=y
+CONFIG_FEATURE_WGET_SSL_HELPER=y
+# CONFIG_WHOIS is not set
+CONFIG_FEATURE_IPV6=y
+# CONFIG_FEATURE_UNIX_LOCAL is not set
+# CONFIG_FEATURE_PREFER_IPV4_ADDRESS is not set
+# CONFIG_VERBOSE_RESOLUTION_ERRORS is not set
+# CONFIG_ARP is not set
+CONFIG_ARPING=y
+# CONFIG_BRCTL is not set
+# CONFIG_FEATURE_BRCTL_FANCY is not set
+# CONFIG_FEATURE_BRCTL_SHOW is not set
+CONFIG_DNSD=y
+CONFIG_ETHER_WAKE=y
+# CONFIG_FAKEIDENTD is not set
+# CONFIG_FTPD is not set
+# CONFIG_FEATURE_FTP_WRITE is not set
+# CONFIG_FEATURE_FTPD_ACCEPT_BROKEN_LIST is not set
+# CONFIG_FEATURE_FTP_AUTHENTICATION is not set
+# CONFIG_FTPGET is not set
+# CONFIG_FTPPUT is not set
+# CONFIG_FEATURE_FTPGETPUT_LONG_OPTIONS is not set
+CONFIG_HOSTNAME=y
+# CONFIG_HTTPD is not set
+# CONFIG_FEATURE_HTTPD_RANGES is not set
+# CONFIG_FEATURE_HTTPD_SETUID is not set
+# CONFIG_FEATURE_HTTPD_BASIC_AUTH is not set
+# CONFIG_FEATURE_HTTPD_AUTH_MD5 is not set
+# CONFIG_FEATURE_HTTPD_CGI is not set
+# CONFIG_FEATURE_HTTPD_CONFIG_WITH_SCRIPT_INTERPR is not set
+# CONFIG_FEATURE_HTTPD_SET_REMOTE_PORT_TO_ENV is not set
+# CONFIG_FEATURE_HTTPD_ENCODE_URL_STR is not set
+# CONFIG_FEATURE_HTTPD_ERROR_PAGES is not set
+# CONFIG_FEATURE_HTTPD_PROXY is not set
+# CONFIG_FEATURE_HTTPD_GZIP is not set
+CONFIG_IFCONFIG=y
+CONFIG_FEATURE_IFCONFIG_STATUS=y
+CONFIG_FEATURE_IFCONFIG_SLIP=y
+CONFIG_FEATURE_IFCONFIG_MEMSTART_IOADDR_IRQ=y
+CONFIG_FEATURE_IFCONFIG_HW=y
+# CONFIG_FEATURE_IFCONFIG_BROADCAST_PLUS is not set
+# CONFIG_IFENSLAVE is not set
+# CONFIG_IFPLUGD is not set
+CONFIG_IFUPDOWN=y
+CONFIG_IFUPDOWN_IFSTATE_PATH="/var/run/ifstate"
+CONFIG_FEATURE_IFUPDOWN_IP=y
+# CONFIG_FEATURE_IFUPDOWN_IP_BUILTIN is not set
+# CONFIG_FEATURE_IFUPDOWN_IFCONFIG_BUILTIN is not set
+CONFIG_FEATURE_IFUPDOWN_IPV4=y
+CONFIG_FEATURE_IFUPDOWN_IPV6=y
+CONFIG_FEATURE_IFUPDOWN_MAPPING=y
+# CONFIG_FEATURE_IFUPDOWN_EXTERNAL_DHCP is not set
+CONFIG_INETD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_ECHO=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DISCARD=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_TIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_DAYTIME=y
+CONFIG_FEATURE_INETD_SUPPORT_BUILTIN_CHARGEN=y
+# CONFIG_FEATURE_INETD_RPC is not set
+CONFIG_IP=y
+CONFIG_FEATURE_IP_ADDRESS=y
+CONFIG_FEATURE_IP_LINK=y
+CONFIG_FEATURE_IP_ROUTE=y
+CONFIG_FEATURE_IP_ROUTE_DIR="/etc/iproute2"
+CONFIG_FEATURE_IP_TUNNEL=y
+CONFIG_FEATURE_IP_RULE=y
+CONFIG_FEATURE_IP_NEIGH=y
+CONFIG_FEATURE_IP_SHORT_FORMS=y
+# CONFIG_FEATURE_IP_RARE_PROTOCOLS is not set
+CONFIG_IPADDR=y
+CONFIG_IPLINK=y
+CONFIG_IPROUTE=y
+CONFIG_IPTUNNEL=y
+CONFIG_IPRULE=y
+CONFIG_IPNEIGH=y
+# CONFIG_IPCALC is not set
+# CONFIG_FEATURE_IPCALC_FANCY is not set
+# CONFIG_FEATURE_IPCALC_LONG_OPTIONS is not set
+CONFIG_NETSTAT=y
+CONFIG_FEATURE_NETSTAT_WIDE=y
+CONFIG_FEATURE_NETSTAT_PRG=y
+CONFIG_NSLOOKUP=y
+# CONFIG_NTPD is not set
+# CONFIG_FEATURE_NTPD_SERVER is not set
+# CONFIG_FEATURE_NTPD_CONF is not set
+# CONFIG_PSCAN is not set
+CONFIG_ROUTE=y
+# CONFIG_SLATTACH is not set
+# CONFIG_TCPSVD is not set
+CONFIG_TELNET=y
+CONFIG_FEATURE_TELNET_TTYPE=y
+CONFIG_FEATURE_TELNET_AUTOLOGIN=y
+# CONFIG_TELNETD is not set
+# CONFIG_FEATURE_TELNETD_STANDALONE is not set
+# CONFIG_FEATURE_TELNETD_INETD_WAIT is not set
+CONFIG_TFTP=y
+# CONFIG_TFTPD is not set
+
+#
+# Common options for tftp/tftpd
+#
+CONFIG_FEATURE_TFTP_GET=y
+CONFIG_FEATURE_TFTP_PUT=y
+CONFIG_FEATURE_TFTP_BLOCKSIZE=y
+# CONFIG_FEATURE_TFTP_PROGRESS_BAR is not set
+# CONFIG_TFTP_DEBUG is not set
+CONFIG_TRACEROUTE=y
+# CONFIG_TRACEROUTE6 is not set
+# CONFIG_FEATURE_TRACEROUTE_VERBOSE is not set
+# CONFIG_FEATURE_TRACEROUTE_SOURCE_ROUTE is not set
+# CONFIG_FEATURE_TRACEROUTE_USE_ICMP is not set
+CONFIG_TUNCTL=y
+CONFIG_FEATURE_TUNCTL_UG=y
+# CONFIG_UDHCPC6 is not set
+CONFIG_UDHCPD=y
+CONFIG_DHCPRELAY=y
+CONFIG_DUMPLEASES=y
+CONFIG_FEATURE_UDHCPD_WRITE_LEASES_EARLY=y
+# CONFIG_FEATURE_UDHCPD_BASE_IP_ON_MAC is not set
+CONFIG_DHCPD_LEASES_FILE="/var/lib/misc/udhcpd.leases"
+CONFIG_UDHCPC=y
+CONFIG_FEATURE_UDHCPC_ARPING=y
+CONFIG_FEATURE_UDHCPC_SANITIZEOPT=y
+# CONFIG_FEATURE_UDHCP_PORT is not set
+CONFIG_UDHCP_DEBUG=0
+# CONFIG_FEATURE_UDHCP_RFC3397 is not set
+CONFIG_FEATURE_UDHCP_8021Q=y
+CONFIG_UDHCPC_DEFAULT_SCRIPT="/usr/share/udhcpc/default.script"
+CONFIG_UDHCPC_SLACK_FOR_BUGGY_SERVERS=80
+CONFIG_IFUPDOWN_UDHCPC_CMD_OPTIONS="-R -n"
+# CONFIG_UDPSVD is not set
+CONFIG_VCONFIG=y
+# CONFIG_ZCIP is not set
+
+#
+# Print Utilities
+#
+# CONFIG_LPD is not set
+# CONFIG_LPR is not set
+# CONFIG_LPQ is not set
+
+#
+# Mail Utilities
+#
+# CONFIG_MAKEMIME is not set
+CONFIG_FEATURE_MIME_CHARSET=""
+# CONFIG_POPMAILDIR is not set
+# CONFIG_FEATURE_POPMAILDIR_DELIVERY is not set
+# CONFIG_REFORMIME is not set
+# CONFIG_FEATURE_REFORMIME_COMPAT is not set
+# CONFIG_SENDMAIL is not set
+
+#
+# Process Utilities
+#
+# CONFIG_IOSTAT is not set
+CONFIG_LSOF=y
+# CONFIG_MPSTAT is not set
+# CONFIG_NMETER is not set
+# CONFIG_PMAP is not set
+# CONFIG_POWERTOP is not set
+# CONFIG_PSTREE is not set
+# CONFIG_PWDX is not set
+# CONFIG_SMEMCAP is not set
+CONFIG_TOP=y
+CONFIG_FEATURE_TOP_CPU_USAGE_PERCENTAGE=y
+CONFIG_FEATURE_TOP_CPU_GLOBAL_PERCENTS=y
+# CONFIG_FEATURE_TOP_SMP_CPU is not set
+# CONFIG_FEATURE_TOP_DECIMALS is not set
+# CONFIG_FEATURE_TOP_SMP_PROCESS is not set
+# CONFIG_FEATURE_TOPMEM is not set
+CONFIG_UPTIME=y
+# CONFIG_FEATURE_UPTIME_UTMP_SUPPORT is not set
+CONFIG_FREE=y
+CONFIG_FUSER=y
+CONFIG_KILL=y
+CONFIG_KILLALL=y
+CONFIG_KILLALL5=y
+# CONFIG_PGREP is not set
+CONFIG_PIDOF=y
+CONFIG_FEATURE_PIDOF_SINGLE=y
+CONFIG_FEATURE_PIDOF_OMIT=y
+# CONFIG_PKILL is not set
+CONFIG_PS=y
+# CONFIG_FEATURE_PS_WIDE is not set
+# CONFIG_FEATURE_PS_LONG is not set
+# CONFIG_FEATURE_PS_TIME is not set
+# CONFIG_FEATURE_PS_ADDITIONAL_COLUMNS is not set
+# CONFIG_FEATURE_PS_UNUSUAL_SYSTEMS is not set
+CONFIG_RENICE=y
+CONFIG_BB_SYSCTL=y
+# CONFIG_FEATURE_SHOW_THREADS is not set
+CONFIG_WATCH=y
+
+#
+# Runit Utilities
+#
+# CONFIG_CHPST is not set
+# CONFIG_SETUIDGID is not set
+# CONFIG_ENVUIDGID is not set
+# CONFIG_ENVDIR is not set
+# CONFIG_SOFTLIMIT is not set
+# CONFIG_RUNSV is not set
+# CONFIG_RUNSVDIR is not set
+# CONFIG_FEATURE_RUNSVDIR_LOG is not set
+# CONFIG_SV is not set
+CONFIG_SV_DEFAULT_SERVICE_DIR=""
+# CONFIG_SVLOGD is not set
+# CONFIG_CHCON is not set
+# CONFIG_FEATURE_CHCON_LONG_OPTIONS is not set
+# CONFIG_GETENFORCE is not set
+# CONFIG_GETSEBOOL is not set
+# CONFIG_LOAD_POLICY is not set
+# CONFIG_MATCHPATHCON is not set
+# CONFIG_RESTORECON is not set
+# CONFIG_RUNCON is not set
+# CONFIG_FEATURE_RUNCON_LONG_OPTIONS is not set
+# CONFIG_SELINUXENABLED is not set
+# CONFIG_SETENFORCE is not set
+# CONFIG_SETFILES is not set
+# CONFIG_FEATURE_SETFILES_CHECK_OPTION is not set
+# CONFIG_SETSEBOOL is not set
+# CONFIG_SESTATUS is not set
+
+#
+# Shells
+#
+CONFIG_ASH=y
+CONFIG_ASH_BASH_COMPAT=y
+CONFIG_ASH_IDLE_TIMEOUT=y
+CONFIG_ASH_JOB_CONTROL=y
+CONFIG_ASH_ALIAS=y
+CONFIG_ASH_GETOPTS=y
+CONFIG_ASH_BUILTIN_ECHO=y
+CONFIG_ASH_BUILTIN_PRINTF=y
+CONFIG_ASH_BUILTIN_TEST=y
+CONFIG_ASH_HELP=y
+CONFIG_ASH_CMDCMD=y
+# CONFIG_ASH_MAIL is not set
+CONFIG_ASH_OPTIMIZE_FOR_SIZE=y
+CONFIG_ASH_RANDOM_SUPPORT=y
+CONFIG_ASH_EXPAND_PRMT=y
+# CONFIG_CTTYHACK is not set
+# CONFIG_HUSH is not set
+# CONFIG_HUSH_BASH_COMPAT is not set
+# CONFIG_HUSH_BRACE_EXPANSION is not set
+# CONFIG_HUSH_HELP is not set
+# CONFIG_HUSH_INTERACTIVE is not set
+# CONFIG_HUSH_SAVEHISTORY is not set
+# CONFIG_HUSH_JOB is not set
+# CONFIG_HUSH_TICK is not set
+# CONFIG_HUSH_IF is not set
+# CONFIG_HUSH_LOOPS is not set
+# CONFIG_HUSH_CASE is not set
+# CONFIG_HUSH_FUNCTIONS is not set
+# CONFIG_HUSH_LOCAL is not set
+# CONFIG_HUSH_RANDOM_SUPPORT is not set
+# CONFIG_HUSH_EXPORT_N is not set
+# CONFIG_HUSH_MODE_X is not set
+# CONFIG_MSH is not set
+CONFIG_FEATURE_SH_IS_ASH=y
+# CONFIG_FEATURE_SH_IS_HUSH is not set
+# CONFIG_FEATURE_SH_IS_NONE is not set
+# CONFIG_FEATURE_BASH_IS_ASH is not set
+# CONFIG_FEATURE_BASH_IS_HUSH is not set
+CONFIG_FEATURE_BASH_IS_NONE=y
+CONFIG_SH_MATH_SUPPORT=y
+# CONFIG_SH_MATH_SUPPORT_64 is not set
+CONFIG_FEATURE_SH_EXTRA_QUIET=y
+# CONFIG_FEATURE_SH_STANDALONE is not set
+# CONFIG_FEATURE_SH_NOFORK is not set
+# CONFIG_FEATURE_SH_HISTFILESIZE is not set
+
+#
+# System Logging Utilities
+#
+CONFIG_KLOGD=y
+CONFIG_FEATURE_KLOGD_KLOGCTL=y
+CONFIG_LOGGER=y
+# CONFIG_LOGREAD is not set
+# CONFIG_FEATURE_LOGREAD_REDUCED_LOCKING is not set
+CONFIG_SYSLOGD=y
+CONFIG_FEATURE_ROTATE_LOGFILE=y
+CONFIG_FEATURE_REMOTE_LOG=y
+# CONFIG_FEATURE_SYSLOGD_DUP is not set
+# CONFIG_FEATURE_SYSLOGD_CFG is not set
+CONFIG_FEATURE_SYSLOGD_READ_BUFFER_SIZE=256
+# CONFIG_FEATURE_IPC_SYSLOG is not set
+CONFIG_FEATURE_IPC_SYSLOG_BUFFER_SIZE=0
+# CONFIG_FEATURE_KMSG_SYSLOG is not set

+ 9 - 0
board/GfA/Display001/device_table.txt

@@ -0,0 +1,9 @@
+# See package/makedevs/README for details
+#
+# This device table is used to assign proper ownership and permissions
+# on various files. It doesn't create any device file, as it is used
+# in both static device configurations (where /dev/ is static) and in
+# dynamic configurations (where devtmpfs, mdev or udev are used).
+#
+# <name>				<type>	<mode>	<uid>	<gid>	<major>	<minor>	<start>	<inc>	<count>
+/dev/ppp				c	700	0	0	108	0	-	-	-

+ 21 - 0
board/GfA/Display001/linux/linux-001-am33xx-dtsi_no-otg.patch

@@ -0,0 +1,21 @@
+diff -Naur linux-orig/arch/arm/boot/dts/am33xx.dtsi linux-7f280334068b7c875ade51f8f3921ab311f0c824/arch/arm/boot/dts/am33xx.dtsi
+--- linux-orig/arch/arm/boot/dts/am33xx.dtsi	2014-02-07 00:05:20.000000000 +0100
++++ linux-7f280334068b7c875ade51f8f3921ab311f0c824/arch/arm/boot/dts/am33xx.dtsi	2015-07-07 23:48:27.436000000 +0200
+@@ -526,7 +526,7 @@
+ 
+ 				interrupts = <18>;
+ 				interrupt-names = "mc";
+-				dr_mode = "otg";
++				dr_mode = "peripheral";
+ 				mentor,multipoint = <1>;
+ 				mentor,num-eps = <16>;
+ 				mentor,ram-bits = <12>;
+@@ -573,7 +573,7 @@
+ 				reg-names = "mc", "control";
+ 				interrupts = <19>;
+ 				interrupt-names = "mc";
+-				dr_mode = "otg";
++				dr_mode = "host";
+ 				mentor,multipoint = <1>;
+ 				mentor,num-eps = <16>;
+ 				mentor,ram-bits = <12>;

+ 916 - 0
board/GfA/Display001/linux/linux-002-edt-touch.patch

@@ -0,0 +1,916 @@
+diff -ur -x '*.o.*' -x '*.o' -x '*.builtin' -x '*.order' -x '*.ko' -x '*.ko.cmd' -x '*~' -x '*mod.c' linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/edt-ft5x06.c linux-change/drivers/input/touchscreen/edt-ft5x06.c
+--- linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/edt-ft5x06.c	2014-02-07 00:05:20.000000000 +0100
++++ linux-change/drivers/input/touchscreen/edt-ft5x06.c	2014-07-27 00:23:49.000000000 +0200
+@@ -1,5 +1,7 @@
+ /*
+  * Copyright (C) 2012 Simon Budig, <simon.budig@kernelconcepts.de>
++ * Daniel Wagener <daniel.wagener@kernelconcepts.de> (M09 firmware support)
++ * Lothar Waßmann <LW@KARO-electronics.de> (DT support)
+  *
+  * This software is licensed under the terms of the GNU General Public
+  * License version 2, as published by the Free Software Foundation, and
+@@ -33,6 +35,7 @@
+ #include <linux/debugfs.h>
+ #include <linux/slab.h>
+ #include <linux/gpio.h>
++#include <linux/of_gpio.h>
+ #include <linux/input/mt.h>
+ #include <linux/input/edt-ft5x06.h>
+ 
+@@ -45,6 +48,14 @@
+ #define WORK_REGISTER_NUM_X		0x33
+ #define WORK_REGISTER_NUM_Y		0x34
+ 
++#define M09_REGISTER_THRESHOLD		0x80
++#define M09_REGISTER_GAIN		0x92
++#define M09_REGISTER_OFFSET		0x93
++#define M09_REGISTER_NUM_X		0x94
++#define M09_REGISTER_NUM_Y		0x95
++
++#define NO_REGISTER			0xff
++
+ #define WORK_REGISTER_OPMODE		0x3c
+ #define FACTORY_REGISTER_OPMODE		0x01
+ 
+@@ -59,12 +70,30 @@
+ #define EDT_RAW_DATA_RETRIES		100
+ #define EDT_RAW_DATA_DELAY		1 /* msec */
+ 
++enum edt_ver {
++	M06,
++	M09,
++};
++
++struct edt_reg_addr {
++	int reg_threshold;
++	int reg_report_rate;
++	int reg_gain;
++	int reg_offset;
++	int reg_num_x;
++	int reg_num_y;
++};
++
+ struct edt_ft5x06_ts_data {
+ 	struct i2c_client *client;
+ 	struct input_dev *input;
+ 	u16 num_x;
+ 	u16 num_y;
+ 
++	int reset_pin;
++	int irq_pin;
++	int wake_pin;
++
+ #if defined(CONFIG_DEBUG_FS)
+ 	struct dentry *debug_dir;
+ 	u8 *raw_buffer;
+@@ -79,6 +108,9 @@
+ 	int report_rate;
+ 
+ 	char name[EDT_NAME_LEN];
++
++	struct edt_reg_addr reg_addr;
++	enum edt_ver version;
+ };
+ 
+ static int edt_ft5x06_ts_readwrite(struct i2c_client *client,
+@@ -136,33 +168,58 @@
+ {
+ 	struct edt_ft5x06_ts_data *tsdata = dev_id;
+ 	struct device *dev = &tsdata->client->dev;
+-	u8 cmd = 0xf9;
+-	u8 rdbuf[26];
++	u8 cmd;
++	u8 rdbuf[29];
+ 	int i, type, x, y, id;
++	int offset, tplen, datalen;
+ 	int error;
+ 
++	switch (tsdata->version) {
++	case M06:
++		cmd = 0xf9; /* tell the controller to send touch data */
++		offset = 5; /* where the actual touch data starts */
++		tplen = 4;  /* data comes in so called frames */
++		datalen = 26; /* how much bytes to listen for */
++		break;
++
++	case M09:
++		cmd = 0x02;
++		offset = 1;
++		tplen = 6;
++		datalen = 29;
++		break;
++
++	default:
++		goto out;
++	}
++
+ 	memset(rdbuf, 0, sizeof(rdbuf));
+ 
+ 	error = edt_ft5x06_ts_readwrite(tsdata->client,
+ 					sizeof(cmd), &cmd,
+-					sizeof(rdbuf), rdbuf);
++					datalen, rdbuf);
+ 	if (error) {
+ 		dev_err_ratelimited(dev, "Unable to fetch data, error: %d\n",
+ 				    error);
+ 		goto out;
+ 	}
+ 
+-	if (rdbuf[0] != 0xaa || rdbuf[1] != 0xaa || rdbuf[2] != 26) {
+-		dev_err_ratelimited(dev, "Unexpected header: %02x%02x%02x!\n",
+-				    rdbuf[0], rdbuf[1], rdbuf[2]);
+-		goto out;
+-	}
++	/* M09 does not send header or CRC */
++	if (tsdata->version == M06) {
++		if (rdbuf[0] != 0xaa || rdbuf[1] != 0xaa ||
++			rdbuf[2] != datalen) {
++			dev_err_ratelimited(dev,
++					"Unexpected header: %02x%02x%02x!\n",
++					rdbuf[0], rdbuf[1], rdbuf[2]);
++			goto out;
++		}
+ 
+-	if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, 26))
+-		goto out;
++		if (!edt_ft5x06_ts_check_crc(tsdata, rdbuf, datalen))
++			goto out;
++	}
+ 
+ 	for (i = 0; i < MAX_SUPPORT_POINTS; i++) {
+-		u8 *buf = &rdbuf[i * 4 + 5];
++		u8 *buf = &rdbuf[i * tplen + offset];
+ 		bool down;
+ 
+ 		type = buf[0] >> 6;
+@@ -170,10 +227,14 @@
+ 		if (type == TOUCH_EVENT_RESERVED)
+ 			continue;
+ 
++		/* M06 sometimes sends bogus coordinates in TOUCH_DOWN */
++		if (tsdata->version == M06 && type == TOUCH_EVENT_DOWN)
++			continue;
++
+ 		x = ((buf[0] << 8) | buf[1]) & 0x0fff;
+ 		y = ((buf[2] << 8) | buf[3]) & 0x0fff;
+ 		id = (buf[2] >> 4) & 0x0f;
+-		down = (type != TOUCH_EVENT_UP);
++		down = type != TOUCH_EVENT_UP;
+ 
+ 		input_mt_slot(tsdata->input, id);
+ 		input_mt_report_slot_state(tsdata->input, MT_TOOL_FINGER, down);
+@@ -197,12 +258,25 @@
+ {
+ 	u8 wrbuf[4];
+ 
+-	wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
+-	wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
+-	wrbuf[2] = value;
+-	wrbuf[3] = wrbuf[0] ^ wrbuf[1] ^ wrbuf[2];
++	switch (tsdata->version) {
++	case M06:
++		wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
++		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
++		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
++		wrbuf[2] = value;
++		wrbuf[3] = wrbuf[0] ^ wrbuf[1] ^ wrbuf[2];
++		return edt_ft5x06_ts_readwrite(tsdata->client, 4,
++					wrbuf, 0, NULL);
++	case M09:
++		wrbuf[0] = addr;
++		wrbuf[1] = value;
++
++		return edt_ft5x06_ts_readwrite(tsdata->client, 3,
++					wrbuf, 0, NULL);
+ 
+-	return edt_ft5x06_ts_readwrite(tsdata->client, 4, wrbuf, 0, NULL);
++	default:
++		return -EINVAL;
++	}
+ }
+ 
+ static int edt_ft5x06_register_read(struct edt_ft5x06_ts_data *tsdata,
+@@ -211,19 +285,36 @@
+ 	u8 wrbuf[2], rdbuf[2];
+ 	int error;
+ 
+-	wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
+-	wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
+-	wrbuf[1] |= tsdata->factory_mode ? 0x80 : 0x40;
++	switch (tsdata->version) {
++	case M06:
++		wrbuf[0] = tsdata->factory_mode ? 0xf3 : 0xfc;
++		wrbuf[1] = tsdata->factory_mode ? addr & 0x7f : addr & 0x3f;
++		wrbuf[1] |= tsdata->factory_mode ? 0x80 : 0x40;
+ 
+-	error = edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2, rdbuf);
+-	if (error)
+-		return error;
++		error = edt_ft5x06_ts_readwrite(tsdata->client, 2, wrbuf, 2,
++						rdbuf);
++		if (error)
++			return error;
+ 
+-	if ((wrbuf[0] ^ wrbuf[1] ^ rdbuf[0]) != rdbuf[1]) {
+-		dev_err(&tsdata->client->dev,
+-			"crc error: 0x%02x expected, got 0x%02x\n",
+-			wrbuf[0] ^ wrbuf[1] ^ rdbuf[0], rdbuf[1]);
+-		return -EIO;
++		if ((wrbuf[0] ^ wrbuf[1] ^ rdbuf[0]) != rdbuf[1]) {
++			dev_err(&tsdata->client->dev,
++				"crc error: 0x%02x expected, got 0x%02x\n",
++				wrbuf[0] ^ wrbuf[1] ^ rdbuf[0],
++				rdbuf[1]);
++			return -EIO;
++		}
++		break;
++
++	case M09:
++		wrbuf[0] = addr;
++		error = edt_ft5x06_ts_readwrite(tsdata->client, 1,
++						wrbuf, 1, rdbuf);
++		if (error)
++			return error;
++		break;
++
++	default:
++		return -EINVAL;
+ 	}
+ 
+ 	return rdbuf[0];
+@@ -234,19 +325,21 @@
+ 	size_t field_offset;
+ 	u8 limit_low;
+ 	u8 limit_high;
+-	u8 addr;
++	u8 addr_m06;
++	u8 addr_m09;
+ };
+ 
+-#define EDT_ATTR(_field, _mode, _addr, _limit_low, _limit_high)		\
++#define EDT_ATTR(_field, _mode, _addr_m06, _addr_m09,			\
++		_limit_low, _limit_high)				\
+ 	struct edt_ft5x06_attribute edt_ft5x06_attr_##_field = {	\
+ 		.dattr = __ATTR(_field, _mode,				\
+ 				edt_ft5x06_setting_show,		\
+ 				edt_ft5x06_setting_store),		\
+-		.field_offset =						\
+-			offsetof(struct edt_ft5x06_ts_data, _field),	\
++		.field_offset = offsetof(struct edt_ft5x06_ts_data, _field), \
++		.addr_m06 = _addr_m06,					\
++		.addr_m09 = _addr_m09,					\
+ 		.limit_low = _limit_low,				\
+ 		.limit_high = _limit_high,				\
+-		.addr = _addr,						\
+ 	}
+ 
+ static ssize_t edt_ft5x06_setting_show(struct device *dev,
+@@ -257,10 +350,11 @@
+ 	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+ 	struct edt_ft5x06_attribute *attr =
+ 			container_of(dattr, struct edt_ft5x06_attribute, dattr);
+-	u8 *field = (u8 *)((char *)tsdata + attr->field_offset);
++	u8 *field = (u8 *)tsdata + attr->field_offset;
+ 	int val;
+ 	size_t count = 0;
+ 	int error = 0;
++	u8 addr;
+ 
+ 	mutex_lock(&tsdata->mutex);
+ 
+@@ -269,15 +363,33 @@
+ 		goto out;
+ 	}
+ 
+-	val = edt_ft5x06_register_read(tsdata, attr->addr);
+-	if (val < 0) {
+-		error = val;
+-		dev_err(&tsdata->client->dev,
+-			"Failed to fetch attribute %s, error %d\n",
+-			dattr->attr.name, error);
++	switch (tsdata->version) {
++	case M06:
++		addr = attr->addr_m06;
++		break;
++
++	case M09:
++		addr = attr->addr_m09;
++		break;
++
++	default:
++		error = -ENODEV;
+ 		goto out;
+ 	}
+ 
++	if (addr != NO_REGISTER) {
++		val = edt_ft5x06_register_read(tsdata, addr);
++		if (val < 0) {
++			error = val;
++			dev_err(&tsdata->client->dev,
++				"Failed to fetch attribute %s, error %d\n",
++				dattr->attr.name, error);
++			goto out;
++		}
++	} else {
++		val = *field;
++	}
++
+ 	if (val != *field) {
+ 		dev_warn(&tsdata->client->dev,
+ 			 "%s: read (%d) and stored value (%d) differ\n",
+@@ -299,9 +411,10 @@
+ 	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+ 	struct edt_ft5x06_attribute *attr =
+ 			container_of(dattr, struct edt_ft5x06_attribute, dattr);
+-	u8 *field = (u8 *)((char *)tsdata + attr->field_offset);
++	u8 *field = (u8 *)tsdata + attr->field_offset;
+ 	unsigned int val;
+ 	int error;
++	u8 addr;
+ 
+ 	mutex_lock(&tsdata->mutex);
+ 
+@@ -319,14 +432,29 @@
+ 		goto out;
+ 	}
+ 
+-	error = edt_ft5x06_register_write(tsdata, attr->addr, val);
+-	if (error) {
+-		dev_err(&tsdata->client->dev,
+-			"Failed to update attribute %s, error: %d\n",
+-			dattr->attr.name, error);
++	switch (tsdata->version) {
++	case M06:
++		addr = attr->addr_m06;
++		break;
++
++	case M09:
++		addr = attr->addr_m09;
++		break;
++
++	default:
++		error = -ENODEV;
+ 		goto out;
+ 	}
+ 
++	if (addr != NO_REGISTER) {
++		error = edt_ft5x06_register_write(tsdata, addr, val);
++		if (error) {
++			dev_err(&tsdata->client->dev,
++				"Failed to update attribute %s, error: %d\n",
++				dattr->attr.name, error);
++			goto out;
++		}
++	}
+ 	*field = val;
+ 
+ out:
+@@ -334,12 +462,14 @@
+ 	return error ?: count;
+ }
+ 
+-static EDT_ATTR(gain, S_IWUSR | S_IRUGO, WORK_REGISTER_GAIN, 0, 31);
+-static EDT_ATTR(offset, S_IWUSR | S_IRUGO, WORK_REGISTER_OFFSET, 0, 31);
+-static EDT_ATTR(threshold, S_IWUSR | S_IRUGO,
+-		WORK_REGISTER_THRESHOLD, 20, 80);
+-static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO,
+-		WORK_REGISTER_REPORT_RATE, 3, 14);
++static EDT_ATTR(gain, S_IWUSR | S_IRUGO, WORK_REGISTER_GAIN,
++		M09_REGISTER_GAIN, 0, 31);
++static EDT_ATTR(offset, S_IWUSR | S_IRUGO, WORK_REGISTER_OFFSET,
++		M09_REGISTER_OFFSET, 0, 31);
++static EDT_ATTR(threshold, S_IWUSR | S_IRUGO, WORK_REGISTER_THRESHOLD,
++		M09_REGISTER_THRESHOLD, 20, 80);
++static EDT_ATTR(report_rate, S_IWUSR | S_IRUGO, WORK_REGISTER_REPORT_RATE,
++		NO_REGISTER, 3, 14);
+ 
+ static struct attribute *edt_ft5x06_attrs[] = {
+ 	&edt_ft5x06_attr_gain.dattr.attr,
+@@ -374,6 +504,9 @@
+ 	}
+ 
+ 	/* mode register is 0x3c when in the work mode */
++	if (tsdata->version == M09)
++		goto m09_out;
++
+ 	error = edt_ft5x06_register_write(tsdata, WORK_REGISTER_OPMODE, 0x03);
+ 	if (error) {
+ 		dev_err(&client->dev,
+@@ -406,12 +539,18 @@
+ 	enable_irq(client->irq);
+ 
+ 	return error;
++
++m09_out:
++	dev_err(&client->dev, "No factory mode support for M09\n");
++	return -EINVAL;
++
+ }
+ 
+ static int edt_ft5x06_work_mode(struct edt_ft5x06_ts_data *tsdata)
+ {
+ 	struct i2c_client *client = tsdata->client;
+ 	int retries = EDT_SWITCH_MODE_RETRIES;
++	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
+ 	int ret;
+ 	int error;
+ 
+@@ -444,13 +583,14 @@
+ 	tsdata->raw_buffer = NULL;
+ 
+ 	/* restore parameters */
+-	edt_ft5x06_register_write(tsdata, WORK_REGISTER_THRESHOLD,
++	edt_ft5x06_register_write(tsdata, reg_addr->reg_threshold,
+ 				  tsdata->threshold);
+-	edt_ft5x06_register_write(tsdata, WORK_REGISTER_GAIN,
++	edt_ft5x06_register_write(tsdata, reg_addr->reg_gain,
+ 				  tsdata->gain);
+-	edt_ft5x06_register_write(tsdata, WORK_REGISTER_OFFSET,
++	edt_ft5x06_register_write(tsdata, reg_addr->reg_offset,
+ 				  tsdata->offset);
+-	edt_ft5x06_register_write(tsdata, WORK_REGISTER_REPORT_RATE,
++	if (reg_addr->reg_report_rate)
++		edt_ft5x06_register_write(tsdata, reg_addr->reg_report_rate,
+ 				  tsdata->report_rate);
+ 
+ 	enable_irq(client->irq);
+@@ -479,7 +619,7 @@
+ 
+ 	if (mode != tsdata->factory_mode) {
+ 		retval = mode ? edt_ft5x06_factory_mode(tsdata) :
+-			        edt_ft5x06_work_mode(tsdata);
++				edt_ft5x06_work_mode(tsdata);
+ 	}
+ 
+ 	mutex_unlock(&tsdata->mutex);
+@@ -568,7 +708,6 @@
+ 	return error ?: read;
+ };
+ 
+-
+ static const struct file_operations debugfs_raw_data_fops = {
+ 	.open = simple_open,
+ 	.read = edt_ft5x06_debugfs_raw_data_read,
+@@ -614,57 +753,100 @@
+ 
+ #endif /* CONFIG_DEBUGFS */
+ 
+-
+-
+ static int edt_ft5x06_ts_reset(struct i2c_client *client,
+-					 int reset_pin)
++			struct edt_ft5x06_ts_data *tsdata)
+ {
+ 	int error;
+ 
+-	if (gpio_is_valid(reset_pin)) {
++	if (gpio_is_valid(tsdata->wake_pin)) {
++		error = devm_gpio_request_one(&client->dev,
++					tsdata->wake_pin, GPIOF_OUT_INIT_LOW,
++					"edt-ft5x06 wake");
++		if (error) {
++			dev_err(&client->dev,
++				"Failed to request GPIO %d as wake pin, error %d\n",
++				tsdata->wake_pin, error);
++			return error;
++		}
++
++		msleep(5);
++		gpio_set_value(tsdata->wake_pin, 1);
++	}
++	if (gpio_is_valid(tsdata->reset_pin)) {
+ 		/* this pulls reset down, enabling the low active reset */
+-		error = gpio_request_one(reset_pin, GPIOF_OUT_INIT_LOW,
+-					 "edt-ft5x06 reset");
++		error = devm_gpio_request_one(&client->dev,
++					tsdata->reset_pin, GPIOF_OUT_INIT_LOW,
++					"edt-ft5x06 reset");
+ 		if (error) {
+ 			dev_err(&client->dev,
+ 				"Failed to request GPIO %d as reset pin, error %d\n",
+-				reset_pin, error);
++				tsdata->reset_pin, error);
+ 			return error;
+ 		}
+ 
+-		mdelay(50);
+-		gpio_set_value(reset_pin, 1);
+-		mdelay(100);
++		msleep(5);
++		gpio_set_value(tsdata->reset_pin, 1);
++		msleep(300);
+ 	}
+ 
+ 	return 0;
+ }
+ 
+ static int edt_ft5x06_ts_identify(struct i2c_client *client,
+-					    char *model_name,
+-					    char *fw_version)
++					struct edt_ft5x06_ts_data *tsdata,
++					char *fw_version)
+ {
+ 	u8 rdbuf[EDT_NAME_LEN];
+ 	char *p;
+ 	int error;
++	char *model_name = tsdata->name;
+ 
++	/* see what we find if we assume it is a M06 *
++	 * if we get less than EDT_NAME_LEN, we don't want
++	 * to have garbage in there
++	 */
++	memset(rdbuf, 0, sizeof(rdbuf));
+ 	error = edt_ft5x06_ts_readwrite(client, 1, "\xbb",
+ 					EDT_NAME_LEN - 1, rdbuf);
+ 	if (error)
+ 		return error;
+ 
+-	/* remove last '$' end marker */
+-	rdbuf[EDT_NAME_LEN - 1] = '\0';
+-	if (rdbuf[EDT_NAME_LEN - 2] == '$')
+-		rdbuf[EDT_NAME_LEN - 2] = '\0';
+-
+-	/* look for Model/Version separator */
+-	p = strchr(rdbuf, '*');
+-	if (p)
+-		*p++ = '\0';
++	/* if we find something consistent, stay with that assumption
++	 * at least M09 won't send 3 bytes here
++	 */
++	if (!(strnicmp(rdbuf + 1, "EP0", 3))) {
++		tsdata->version = M06;
++
++		/* remove last '$' end marker */
++		rdbuf[EDT_NAME_LEN - 1] = '\0';
++		if (rdbuf[EDT_NAME_LEN - 2] == '$')
++			rdbuf[EDT_NAME_LEN - 2] = '\0';
++
++		/* look for Model/Version separator */
++		p = strchr(rdbuf, '*');
++		if (p)
++			*p++ = '\0';
++		strlcpy(model_name, rdbuf + 1, EDT_NAME_LEN);
++		strlcpy(fw_version, p ? p : "", EDT_NAME_LEN);
++	} else {
++		/* since there are only two versions around (M06, M09) */
++		tsdata->version = M09;
++
++		error = edt_ft5x06_ts_readwrite(client, 1, "\xA6",
++						2, rdbuf);
++		if (error)
++			return error;
++
++		strlcpy(fw_version, rdbuf, 2);
++
++		error = edt_ft5x06_ts_readwrite(client, 1, "\xA8",
++						1, rdbuf);
++		if (error)
++			return error;
+ 
+-	strlcpy(model_name, rdbuf + 1, EDT_NAME_LEN);
+-	strlcpy(fw_version, p ? p : "", EDT_NAME_LEN);
++		snprintf(model_name, EDT_NAME_LEN, "EP0%i%i0M09",
++			rdbuf[0] >> 4, rdbuf[0] & 0x0F);
++	}
+ 
+ 	return 0;
+ }
+@@ -674,71 +856,157 @@
+ 	    pdata->name <= edt_ft5x06_attr_##name.limit_high)		\
+ 		edt_ft5x06_register_write(tsdata, reg, pdata->name)
+ 
++#define EDT_GET_PROP(name, reg) {				\
++	u32 val;						\
++	if (of_property_read_u32(np, #name, &val) == 0)		\
++		edt_ft5x06_register_write(tsdata, reg, val);	\
++}
++
++static void edt_ft5x06_ts_get_dt_defaults(struct device_node *np,
++					struct edt_ft5x06_ts_data *tsdata)
++{
++	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
++
++	EDT_GET_PROP(threshold, reg_addr->reg_threshold);
++	EDT_GET_PROP(gain, reg_addr->reg_gain);
++	EDT_GET_PROP(offset, reg_addr->reg_offset);
++}
++
+ static void
+ edt_ft5x06_ts_get_defaults(struct edt_ft5x06_ts_data *tsdata,
+ 			   const struct edt_ft5x06_platform_data *pdata)
+ {
++	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
++
+ 	if (!pdata->use_parameters)
+ 		return;
+ 
+ 	/* pick up defaults from the platform data */
+-	EDT_ATTR_CHECKSET(threshold, WORK_REGISTER_THRESHOLD);
+-	EDT_ATTR_CHECKSET(gain, WORK_REGISTER_GAIN);
+-	EDT_ATTR_CHECKSET(offset, WORK_REGISTER_OFFSET);
+-	EDT_ATTR_CHECKSET(report_rate, WORK_REGISTER_REPORT_RATE);
++	EDT_ATTR_CHECKSET(threshold, reg_addr->reg_threshold);
++	EDT_ATTR_CHECKSET(gain, reg_addr->reg_gain);
++	EDT_ATTR_CHECKSET(offset, reg_addr->reg_offset);
++	if (reg_addr->reg_report_rate != NO_REGISTER)
++		EDT_ATTR_CHECKSET(report_rate, reg_addr->reg_report_rate);
+ }
+ 
+ static void
+ edt_ft5x06_ts_get_parameters(struct edt_ft5x06_ts_data *tsdata)
+ {
++	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
++
+ 	tsdata->threshold = edt_ft5x06_register_read(tsdata,
+-						     WORK_REGISTER_THRESHOLD);
+-	tsdata->gain = edt_ft5x06_register_read(tsdata, WORK_REGISTER_GAIN);
+-	tsdata->offset = edt_ft5x06_register_read(tsdata, WORK_REGISTER_OFFSET);
+-	tsdata->report_rate = edt_ft5x06_register_read(tsdata,
+-						WORK_REGISTER_REPORT_RATE);
+-	tsdata->num_x = edt_ft5x06_register_read(tsdata, WORK_REGISTER_NUM_X);
+-	tsdata->num_y = edt_ft5x06_register_read(tsdata, WORK_REGISTER_NUM_Y);
++						     reg_addr->reg_threshold);
++	tsdata->gain = edt_ft5x06_register_read(tsdata, reg_addr->reg_gain);
++	tsdata->offset = edt_ft5x06_register_read(tsdata, reg_addr->reg_offset);
++	if (reg_addr->reg_report_rate != NO_REGISTER)
++		tsdata->report_rate = edt_ft5x06_register_read(tsdata,
++						reg_addr->reg_report_rate);
++	tsdata->num_x = edt_ft5x06_register_read(tsdata, reg_addr->reg_num_x);
++	tsdata->num_y = edt_ft5x06_register_read(tsdata, reg_addr->reg_num_y);
+ }
+ 
++static void
++edt_ft5x06_ts_set_regs(struct edt_ft5x06_ts_data *tsdata)
++{
++	struct edt_reg_addr *reg_addr = &tsdata->reg_addr;
++
++	switch (tsdata->version) {
++	case M06:
++		reg_addr->reg_threshold = WORK_REGISTER_THRESHOLD;
++		reg_addr->reg_report_rate = WORK_REGISTER_REPORT_RATE;
++		reg_addr->reg_gain = WORK_REGISTER_GAIN;
++		reg_addr->reg_offset = WORK_REGISTER_OFFSET;
++		reg_addr->reg_num_x = WORK_REGISTER_NUM_X;
++		reg_addr->reg_num_y = WORK_REGISTER_NUM_Y;
++		break;
++
++	case M09:
++		reg_addr->reg_threshold = M09_REGISTER_THRESHOLD;
++		reg_addr->reg_gain = M09_REGISTER_GAIN;
++		reg_addr->reg_offset = M09_REGISTER_OFFSET;
++		reg_addr->reg_num_x = M09_REGISTER_NUM_X;
++		reg_addr->reg_num_y = M09_REGISTER_NUM_Y;
++		break;
++	}
++}
++
++#ifdef CONFIG_OF
++static int edt_ft5x06_i2c_ts_probe_dt(struct device *dev,
++				struct edt_ft5x06_ts_data *tsdata)
++{
++	struct device_node *np = dev->of_node;
++
++	/*
++	 * irq_pin is not needed for DT setup.
++	 * irq is associated via 'interrupts' property in DT
++	 */
++	tsdata->irq_pin = -EINVAL;
++	tsdata->reset_pin = of_get_named_gpio(np, "reset-gpios", 0);
++	tsdata->wake_pin = of_get_named_gpio(np, "wake-gpios", 0);
++
++	return 0;
++}
++#else
++static inline int edt_ft5x06_i2c_ts_probe_dt(struct device *dev,
++					struct edt_ft5x06_ts_data *tsdata)
++{
++	return -ENODEV;
++}
++#endif
++
+ static int edt_ft5x06_ts_probe(struct i2c_client *client,
+ 					 const struct i2c_device_id *id)
+ {
+ 	const struct edt_ft5x06_platform_data *pdata =
+-						client->dev.platform_data;
++						dev_get_platdata(&client->dev);
+ 	struct edt_ft5x06_ts_data *tsdata;
+ 	struct input_dev *input;
+ 	int error;
+ 	char fw_version[EDT_NAME_LEN];
+ 
++
++	printk(KERN_INFO "EDT-TC:: %s ::-----\n", __func__);
++
+ 	dev_dbg(&client->dev, "probing for EDT FT5x06 I2C\n");
+ 
++	tsdata = devm_kzalloc(&client->dev, sizeof(*tsdata), GFP_KERNEL);
++	if (!tsdata) {
++		dev_err(&client->dev, "failed to allocate driver data.\n");
++		return -ENOMEM;
++	}
++
+ 	if (!pdata) {
+-		dev_err(&client->dev, "no platform data?\n");
+-		return -EINVAL;
++		error = edt_ft5x06_i2c_ts_probe_dt(&client->dev, tsdata);
++		if (error) {
++			dev_err(&client->dev,
++				"DT probe failed and no platform data present\n");
++			return error;
++		}
++	} else {
++		tsdata->reset_pin = pdata->reset_pin;
++		tsdata->irq_pin = pdata->irq_pin;
++		tsdata->wake_pin = -EINVAL;
+ 	}
+ 
+-	error = edt_ft5x06_ts_reset(client, pdata->reset_pin);
++	error = edt_ft5x06_ts_reset(client, tsdata);
+ 	if (error)
+ 		return error;
+ 
+-	if (gpio_is_valid(pdata->irq_pin)) {
+-		error = gpio_request_one(pdata->irq_pin,
+-					 GPIOF_IN, "edt-ft5x06 irq");
++	if (gpio_is_valid(tsdata->irq_pin)) {
++		error = devm_gpio_request_one(&client->dev, tsdata->irq_pin,
++					GPIOF_IN, "edt-ft5x06 irq");
+ 		if (error) {
+ 			dev_err(&client->dev,
+ 				"Failed to request GPIO %d, error %d\n",
+-				pdata->irq_pin, error);
++				tsdata->irq_pin, error);
+ 			return error;
+ 		}
+ 	}
+ 
+-	tsdata = kzalloc(sizeof(*tsdata), GFP_KERNEL);
+-	input = input_allocate_device();
+-	if (!tsdata || !input) {
+-		dev_err(&client->dev, "failed to allocate driver data.\n");
+-		error = -ENOMEM;
+-		goto err_free_mem;
++	input = devm_input_allocate_device(&client->dev);
++	if (!input) {
++		dev_err(&client->dev, "failed to allocate input device.\n");
++		return -ENOMEM;
+ 	}
+ 
+ 	mutex_init(&tsdata->mutex);
+@@ -746,13 +1014,19 @@
+ 	tsdata->input = input;
+ 	tsdata->factory_mode = false;
+ 
+-	error = edt_ft5x06_ts_identify(client, tsdata->name, fw_version);
++	error = edt_ft5x06_ts_identify(client, tsdata, fw_version);
+ 	if (error) {
+ 		dev_err(&client->dev, "touchscreen probe failed\n");
+-		goto err_free_mem;
++		return error;
+ 	}
+ 
+-	edt_ft5x06_ts_get_defaults(tsdata, pdata);
++	edt_ft5x06_ts_set_regs(tsdata);
++
++	if (!pdata)
++		edt_ft5x06_ts_get_dt_defaults(client->dev.of_node, tsdata);
++	else
++		edt_ft5x06_ts_get_defaults(tsdata, pdata);
++
+ 	edt_ft5x06_ts_get_parameters(tsdata);
+ 
+ 	dev_dbg(&client->dev,
+@@ -776,23 +1050,24 @@
+ 	error = input_mt_init_slots(input, MAX_SUPPORT_POINTS, 0);
+ 	if (error) {
+ 		dev_err(&client->dev, "Unable to init MT slots.\n");
+-		goto err_free_mem;
++		return error;
+ 	}
+ 
+ 	input_set_drvdata(input, tsdata);
+ 	i2c_set_clientdata(client, tsdata);
+ 
+-	error = request_threaded_irq(client->irq, NULL, edt_ft5x06_ts_isr,
+-				     IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
+-				     client->name, tsdata);
++	error = devm_request_threaded_irq(&client->dev, client->irq, NULL,
++					edt_ft5x06_ts_isr,
++					IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
++					client->name, tsdata);
+ 	if (error) {
+ 		dev_err(&client->dev, "Unable to request touchscreen IRQ.\n");
+-		goto err_free_mem;
++		return error;
+ 	}
+ 
+ 	error = sysfs_create_group(&client->dev.kobj, &edt_ft5x06_attr_group);
+ 	if (error)
+-		goto err_free_irq;
++		return error;
+ 
+ 	error = input_register_device(input);
+ 	if (error)
+@@ -802,44 +1077,23 @@
+ 	device_init_wakeup(&client->dev, 1);
+ 
+ 	dev_dbg(&client->dev,
+-		"EDT FT5x06 initialized: IRQ pin %d, Reset pin %d.\n",
+-		pdata->irq_pin, pdata->reset_pin);
++		"EDT FT5x06 initialized: IRQ %d, WAKE pin %d, Reset pin %d.\n",
++		client->irq, tsdata->wake_pin, tsdata->reset_pin);
+ 
+ 	return 0;
+ 
+ err_remove_attrs:
+ 	sysfs_remove_group(&client->dev.kobj, &edt_ft5x06_attr_group);
+-err_free_irq:
+-	free_irq(client->irq, tsdata);
+-err_free_mem:
+-	input_free_device(input);
+-	kfree(tsdata);
+-
+-	if (gpio_is_valid(pdata->irq_pin))
+-		gpio_free(pdata->irq_pin);
+-
+ 	return error;
+ }
+ 
+ static int edt_ft5x06_ts_remove(struct i2c_client *client)
+ {
+-	const struct edt_ft5x06_platform_data *pdata =
+-						dev_get_platdata(&client->dev);
+ 	struct edt_ft5x06_ts_data *tsdata = i2c_get_clientdata(client);
+ 
+ 	edt_ft5x06_ts_teardown_debugfs(tsdata);
+ 	sysfs_remove_group(&client->dev.kobj, &edt_ft5x06_attr_group);
+ 
+-	free_irq(client->irq, tsdata);
+-	input_unregister_device(tsdata->input);
+-
+-	if (gpio_is_valid(pdata->irq_pin))
+-		gpio_free(pdata->irq_pin);
+-	if (gpio_is_valid(pdata->reset_pin))
+-		gpio_free(pdata->reset_pin);
+-
+-	kfree(tsdata);
+-
+ 	return 0;
+ }
+ 
+@@ -869,15 +1123,26 @@
+ 			 edt_ft5x06_ts_suspend, edt_ft5x06_ts_resume);
+ 
+ static const struct i2c_device_id edt_ft5x06_ts_id[] = {
+-	{ "edt-ft5x06", 0 },
+-	{ }
++	{ "edt-ft5x06", 0, },
++	{ /* sentinel */ }
+ };
+ MODULE_DEVICE_TABLE(i2c, edt_ft5x06_ts_id);
+ 
++#ifdef CONFIG_OF
++static const struct of_device_id edt_ft5x06_of_match[] = {
++	{ .compatible = "edt,edt-ft5206", },
++	{ .compatible = "edt,edt-ft5306", },
++	{ .compatible = "edt,edt-ft5406", },
++	{ /* sentinel */ }
++};
++MODULE_DEVICE_TABLE(of, edt_ft5x06_of_match);
++#endif
++
+ static struct i2c_driver edt_ft5x06_ts_driver = {
+ 	.driver = {
+ 		.owner = THIS_MODULE,
+ 		.name = "edt_ft5x06",
++		.of_match_table = of_match_ptr(edt_ft5x06_of_match),
+ 		.pm = &edt_ft5x06_ts_pm_ops,
+ 	},
+ 	.id_table = edt_ft5x06_ts_id,
+diff -ur -x '*.o.*' -x '*.o' -x '*.builtin' -x '*.order' -x '*.ko' -x '*.ko.cmd' -x '*~' -x '*mod.c' linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/pixcir_i2c_ts.c linux-change/drivers/input/touchscreen/pixcir_i2c_ts.c
+--- linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/pixcir_i2c_ts.c	2014-02-07 00:05:20.000000000 +0100
++++ linux-change/drivers/input/touchscreen/pixcir_i2c_ts.c	2014-03-31 03:41:37.000000000 +0200
+@@ -480,7 +480,8 @@
+ 	}
+ 
+ 	error = devm_request_threaded_irq(dev, client->irq, NULL, pixcir_ts_isr,
+-				     IRQF_TRIGGER_FALLING | IRQF_ONESHOT,
++				     IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING
++				     | IRQF_ONESHOT,
+ 				     client->name, tsdata);
+ 	if (error) {
+ 		dev_err(dev, "failed to request irq %d\n", client->irq);
+diff -ur -x '*.o.*' -x '*.o' -x '*.builtin' -x '*.order' -x '*.ko' -x '*.ko.cmd' -x '*~' -x '*mod.c' linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/ti_am335x_tsc.c linux-change/drivers/input/touchscreen/ti_am335x_tsc.c
+--- linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/input/touchscreen/ti_am335x_tsc.c	2014-02-07 00:05:20.000000000 +0100
++++ linux-change/drivers/input/touchscreen/ti_am335x_tsc.c	2014-03-31 03:41:37.000000000 +0200
+@@ -465,6 +465,9 @@
+ 
+ 	tscadc_dev = ti_tscadc_dev_get(to_platform_device(dev));
+ 	if (device_may_wakeup(tscadc_dev->dev)) {
++		/* Flush any pending interrupts */
++		titsc_writel(ts_dev, REG_IRQSTATUS, 0xffffffff);
++
+ 		idle = titsc_readl(ts_dev, REG_IRQENABLE);
+ 		titsc_writel(ts_dev, REG_IRQENABLE,
+ 				(idle | IRQENB_HW_PEN));

+ 24 - 0
board/GfA/Display001/linux/linux-003-da8xx-videotiming.patch

@@ -0,0 +1,24 @@
+--- a/drivers/video/fbmon.c	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/video/fbmon.c	2015-01-11 22:23:39.721375753 +0100
+@@ -38,7 +38,9 @@
+ #include <asm/pci-bridge.h>
+ #endif
+ #include "edid.h"
+-
++#ifdef CONFIG_FB_DA8XX
++#include <video/da8xx-fb.h>
++#endif
+ /*
+  * EDID parser
+  */
+@@ -1400,6 +1402,10 @@
+ 	fbmode->vmode = 0;
+ 	if (vm->flags & DISPLAY_FLAGS_HSYNC_HIGH)
+ 		fbmode->sync |= FB_SYNC_HOR_HIGH_ACT;
++#ifdef CONFIG_FB_DA8XX		
++	if (vm->flags & DISPLAY_FLAGS_PIXDATA_POSEDGE)
++		fbmode->sync |= FB_SYNC_CLK_INVERT;
++#endif		
+ 	if (vm->flags & DISPLAY_FLAGS_VSYNC_HIGH)
+ 		fbmode->sync |= FB_SYNC_VERT_HIGH_ACT;
+ 	if (vm->flags & DISPLAY_FLAGS_INTERLACED)

+ 61 - 0
board/GfA/Display001/linux/linux-004-mmc-enum.patch

@@ -0,0 +1,61 @@
+--- linux-org/drivers/mmc/card/Kconfig	2014-02-07 00:05:20.000000000 +0100
++++ linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/mmc/card/Kconfig	2015-09-29 23:12:27.205337449 +0200
+@@ -50,6 +50,33 @@
+ 
+ 	  If unsure, say Y here.
+ 
++config MMC_SLOTINDEX
++	bool "Use host index for enumerating mmxblkN"
++	depends on MMC_BLOCK
++	default n
++	help
++	  On embedded devices, often there is a combination of
++	  removable mmc devices (e.g. MMC/SD cards) and hard
++	  wired ones (e.g. eMMC). Depending on the hardware
++	  configuration, the 'mmcblkN' node might change if
++	  the removable device is available or not at boot time.
++
++	  E.g. if the removable device is attached at boot time,
++	  it might become mmxblk0. And the hard wired one mmcblk1.
++	  But if the removable device isn't there at boot time,
++	  the hard wired one will become mmcblk0. This makes it
++	  somehow difficult to hard code the root device to the
++	  non-removable device and boot fast.
++
++	  Enabling this option will simply associating 'N' of
++	  'mmcblkN' with the slot index instead of the dynamic
++	  name index. The slot index is always the same, ensuring
++	  that the non-removable mmc device is associated always
++	  with the same mmcblkN. Independent of the availability of
++	  the removable one.
++
++	  If unsure, say N here.
++
+ config SDIO_UART
+ 	tristate "SDIO UART/GPS class support"
+ 	depends on TTY
+--- linux-org/drivers/mmc/card/block.c	2014-02-07 00:05:20.000000000 +0100
++++ linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/mmc/card/block.c	2015-09-29 23:15:11.545345811 +0200
+@@ -2098,7 +2098,7 @@
+ 	 */
+ 
+ 	snprintf(md->disk->disk_name, sizeof(md->disk->disk_name),
+-		 "mmcblk%d%s", md->name_idx, subname ? subname : "");
++		 "mmcblk%d%s", NAMEIDX, subname ? subname : "");
+ 
+ 	if (mmc_card_mmc(card))
+ 		blk_queue_logical_block_size(md->queue.queue,
+--- linux-org/include/linux/mmc/host.h	2014-02-07 00:05:20.000000000 +0100
++++ linux-7f280334068b7c875ade51f8f3921ab311f0c824/include/linux/mmc/host.h	2015-09-29 23:22:48.889369085 +0200
+@@ -487,4 +487,11 @@
+ 	return host->ios.clock;
+ }
+ #endif
++
++#ifdef CONFIG_MMC_SLOTINDEX
++#define NAMEIDX (card->host->index)
++#else
++#define NAMEIDX (md->name_idx)
++#endif
++
+ #endif /* LINUX_MMC_HOST_H */

+ 1104 - 0
board/GfA/Display001/linux/linux-005-egalax-i2c.patch

@@ -0,0 +1,1104 @@
+--- a/drivers/input/touchscreen/Makefile	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/input/touchscreen/Makefile	2015-10-12 18:55:04.861031192 +0200
+@@ -32,6 +32,7 @@
+ obj-$(CONFIG_TOUCHSCREEN_EETI)		+= eeti_ts.o
+ obj-$(CONFIG_TOUCHSCREEN_ELO)		+= elo.o
+ obj-$(CONFIG_TOUCHSCREEN_EGALAX)	+= egalax_ts.o
++obj-$(CONFIG_TOUCHSCREEN_EGALAX_I2C)	+= egalax_i2c.o
+ obj-$(CONFIG_TOUCHSCREEN_FUJITSU)	+= fujitsu_ts.o
+ obj-$(CONFIG_TOUCHSCREEN_ILI210X)	+= ili210x.o
+ obj-$(CONFIG_TOUCHSCREEN_INEXIO)	+= inexio.o
+--- a/drivers/input/touchscreen/Kconfig	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/input/touchscreen/Kconfig	2015-10-12 18:54:15.585025690 +0200
+@@ -265,6 +265,16 @@
+ 	  To compile this driver as a module, choose M here: the
+ 	  module will be called egalax_ts.
+ 
++config TOUCHSCREEN_EGALAX_I2C
++	tristate "EETI eGalax (egalax_i2c) multi-touch panel support for i2C"
++	depends on I2C && OF
++	help
++	  Say Y here to enable support for I2C connected EETI
++	  eGalax multi-touch panels.
++
++	  To compile this driver as a module, choose M here: the
++	  module will be called egalax_i2c.
++
+ config TOUCHSCREEN_FUJITSU
+ 	tristate "Fujitsu serial touchscreen"
+ 	select SERIO
+--- a/drivers/input/touchscreen/egalax_i2c.c	1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/input/touchscreen/egalax_i2c.c	2015-10-12 18:56:02.573037587 +0200
+@@ -0,0 +1,1072 @@
++/*
++ *
++ * Touch Screen I2C Driver for EETI Controller
++ *
++ * Copyright (C) 2000-2015  eGalax_eMPIA Technology Inc.
++ * All Rights Reserved.
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ */
++
++#define RELEASE_DATE "2015/04/23"
++
++#include <linux/module.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/interrupt.h>
++#include <linux/wait.h>
++#include <linux/delay.h>
++#include <linux/i2c.h>
++#include <linux/gpio.h>
++#include <linux/device.h>
++#include <asm/uaccess.h>
++#include <linux/kfifo.h>
++#include <linux/version.h>
++#include <linux/input.h>
++#include <linux/irq.h>
++#include <linux/timer.h>
++#include <linux/proc_fs.h>
++#include <linux/seq_file.h>
++#include <linux/miscdevice.h>
++#include <linux/slab.h>
++#include <linux/poll.h>
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)
++#include <linux/input/mt.h>
++#endif
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
++#include <linux/of_gpio.h>
++#endif
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,8,0)
++	#define __devinit 
++	#define __devexit 
++	#define __devexit_p(x) x
++#endif
++
++#ifdef CONFIG_HAS_EARLYSUSPEND
++	#include <linux/earlysuspend.h>
++	static struct early_suspend egalax_early_suspend;
++#endif
++
++// Global define to enable function
++//#define _SWITCH_XY
++//#define _CONVERT_Y
++
++#define MAX_EVENTS		600
++#define MAX_I2C_LEN		64
++#define FIFO_SIZE		8192 //(PAGE_SIZE*2)
++#define MAX_SUPPORT_POINT	16
++#define REPORTID_MOUSE		0x01
++#define REPORTID_VENDOR		0x03
++#define REPORTID_MTOUCH		0x06//0x04
++#define MAX_RESOLUTION		4095
++
++// running mode
++#define MODE_STOP	0
++#define MODE_WORKING	1
++#define MODE_IDLE	2
++#define MODE_SUSPEND	3
++
++struct tagMTContacts {
++	unsigned char ID;
++	signed char Status;
++	unsigned short X;
++	unsigned short Y;
++};
++
++struct _egalax_i2c {
++	struct workqueue_struct *ktouch_wq;
++	struct work_struct work_irq;
++	struct delayed_work delay_work_ioctl;
++	struct mutex mutex_wq;
++	struct i2c_client *client;
++	unsigned char work_state;
++	unsigned char skip_packet;
++	unsigned int ioctl_cmd;
++	int interrupt_gpio;
++};
++
++struct egalax_char_dev
++{
++	int OpenCnts;
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	struct kfifo* pDataKFiFo;
++#else
++	struct kfifo DataKFiFo;
++#endif
++	unsigned char *pFiFoBuf;
++	spinlock_t FiFoLock;
++	struct semaphore sem;
++	wait_queue_head_t fifo_inq;
++};
++
++static struct _egalax_i2c *p_egalax_i2c_dev = NULL;	// allocated in egalax_i2c_probe
++static struct egalax_char_dev *p_char_dev = NULL;	// allocated in init_module
++static atomic_t egalax_char_available = ATOMIC_INIT(1);
++static atomic_t wait_command_ack = ATOMIC_INIT(0);
++static struct input_dev *input_dev = NULL;
++static struct tagMTContacts pContactBuf[MAX_SUPPORT_POINT];
++static unsigned char input_report_buf[MAX_I2C_LEN+2];
++
++#define DBG_MODULE	0x00000001
++#define DBG_CDEV	0x00000002
++#define DBG_PROC	0x00000004
++#define DBG_POINT	0x00000008
++#define DBG_INT		0x00000010
++#define DBG_I2C		0x00000020
++#define DBG_SUSP	0x00000040
++#define DBG_INPUT	0x00000080
++#define DBG_CONST	0x00000100
++#define DBG_IDLE	0x00000200
++#define DBG_WAKEUP	0x00000400
++#define DBG_BUTTON	0x00000800
++static unsigned int DbgLevel = DBG_MODULE|DBG_SUSP;
++
++#define PROC_FS_NAME	"egalax_dbg"
++#define PROC_FS_MAX_LEN	8
++static struct proc_dir_entry *dbgProcFile;
++
++#define EGALAX_DBG(level, fmt, args...)  do{ if( (level&DbgLevel)>0 ) \
++					printk( KERN_DEBUG "[egalax_i2c]: " fmt, ## args); }while(0)
++
++static int egalax_I2C_read(unsigned char *pBuf, unsigned short len)
++{
++	struct i2c_msg xfer;
++	unsigned char cmdbuf[2]={0x27, 0x00};
++
++	if(pBuf==NULL)
++		return -1;
++
++	// Write register first
++	xfer.addr = p_egalax_i2c_dev->client->addr;
++	xfer.flags = 0;
++	xfer.len = 2;
++	xfer.buf = cmdbuf;
++	i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1);
++
++	// Read device data
++	xfer.addr = p_egalax_i2c_dev->client->addr;
++	xfer.flags = I2C_M_RD;
++	xfer.len = len;
++	xfer.buf = pBuf;
++
++	if(i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1) != 1) 
++	{
++		EGALAX_DBG(DBG_I2C, " %s: i2c transfer fail\n", __func__);
++		return -EIO;
++	}
++	else
++		EGALAX_DBG(DBG_I2C, " %s: i2c transfer success\n", __func__);
++
++	return 0;
++}
++
++static int egalax_I2C_write(unsigned short reg, unsigned char *pBuf, unsigned short len)
++{
++	unsigned char cmdbuf[4+len];
++	struct i2c_msg xfer;
++
++	if(pBuf==NULL)
++		return -1;
++
++	cmdbuf[0] = reg & 0x00FF;
++	cmdbuf[1] = (reg >> 8) & 0x00FF;
++	cmdbuf[2] = (len+2) & 0x00FF;
++	cmdbuf[3] = ((len+2) >> 8) & 0x00FF;
++	memcpy(cmdbuf+4, pBuf, len);
++
++	// Write data to device
++	xfer.addr = p_egalax_i2c_dev->client->addr;
++	xfer.flags = 0;
++	xfer.len = sizeof(cmdbuf);
++	xfer.buf = cmdbuf;
++
++	if(i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1) != 1) 
++	{
++		EGALAX_DBG(DBG_I2C, " %s: i2c transfer fail\n", __func__);
++		return -EIO;
++	}
++	else
++		EGALAX_DBG(DBG_I2C, " %s: i2c transfer success\n", __func__);
++
++	return 0;
++}
++
++static int wakeup_controller(int irq)
++{
++	int ret = 0;
++
++	disable_irq(irq);
++	
++	gpio_direction_output(p_egalax_i2c_dev->interrupt_gpio, 0);
++	udelay(200);
++	gpio_direction_input(p_egalax_i2c_dev->interrupt_gpio); //return to high level
++	
++	enable_irq(irq);
++	
++	EGALAX_DBG(DBG_WAKEUP, " INT wakeup touch controller done\n");
++	
++	return ret;
++}
++
++static int egalax_cdev_open(struct inode *inode, struct file *filp)
++{
++	if( !atomic_dec_and_test(&egalax_char_available) )
++	{
++		atomic_inc(&egalax_char_available);
++		return -EBUSY; // already open
++	}
++
++	p_char_dev->OpenCnts++;
++	filp->private_data = p_char_dev;// Used by the read and write metheds
++
++	EGALAX_DBG(DBG_CDEV, " CDev open done!\n");
++	try_module_get(THIS_MODULE);
++	return 0;
++}
++
++static int egalax_cdev_release(struct inode *inode, struct file *filp)
++{
++	struct egalax_char_dev *cdev = filp->private_data;
++
++	atomic_inc(&egalax_char_available); // release the device
++
++	cdev->OpenCnts--;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	kfifo_reset( cdev->pDataKFiFo );
++#else
++	kfifo_reset( &cdev->DataKFiFo );
++#endif
++
++	EGALAX_DBG(DBG_CDEV, " CDev release done!\n");
++	module_put(THIS_MODULE);
++	return 0;
++}
++
++static char fifo_read_buf[MAX_I2C_LEN];
++static ssize_t egalax_cdev_read(struct file *file, char __user *buf, size_t count, loff_t *offset)
++{
++	int read_cnt, ret, fifoLen;
++	struct egalax_char_dev *cdev = file->private_data;
++	
++	if( down_interruptible(&cdev->sem) )
++		return -ERESTARTSYS;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	fifoLen = kfifo_len(cdev->pDataKFiFo);
++#else
++	fifoLen = kfifo_len(&cdev->DataKFiFo);
++#endif
++
++	while( fifoLen<1 ) // nothing to read
++	{
++		up(&cdev->sem); // release the lock
++		if( file->f_flags & O_NONBLOCK )
++			return -EAGAIN;
++
++	#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++		if( wait_event_interruptible(cdev->fifo_inq, kfifo_len( cdev->pDataKFiFo )>0) )
++	#else
++		if( wait_event_interruptible(cdev->fifo_inq, kfifo_len( &cdev->DataKFiFo )>0) )
++	#endif
++		{
++			return -ERESTARTSYS; // signal: tell the fs layer to handle it
++		}
++
++		if( down_interruptible(&cdev->sem) )
++			return -ERESTARTSYS;
++	}
++
++	if(count > MAX_I2C_LEN)
++		count = MAX_I2C_LEN;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	read_cnt = kfifo_get(cdev->pDataKFiFo, fifo_read_buf, count);
++#else
++	read_cnt = kfifo_out_locked(&cdev->DataKFiFo, fifo_read_buf, count, &cdev->FiFoLock);
++#endif
++	EGALAX_DBG(DBG_CDEV, " \"%s\" reading fifo data count=%d\n", current->comm, read_cnt);
++
++	ret = copy_to_user(buf, fifo_read_buf, read_cnt)?-EFAULT:read_cnt;
++
++	up(&cdev->sem);
++	
++	return ret;
++}
++
++static ssize_t egalax_cdev_write(struct file *file, const char __user *buf, size_t count, loff_t *offset)
++{
++	struct egalax_char_dev *cdev = file->private_data;
++	int ret=0;
++	char *tmp;
++
++	if( down_interruptible(&cdev->sem) )
++		return -ERESTARTSYS;
++
++	if (count > MAX_I2C_LEN)
++		count = MAX_I2C_LEN;
++
++	tmp = kzalloc(MAX_I2C_LEN, GFP_KERNEL);
++	if(tmp==NULL)
++	{
++		up(&cdev->sem);
++		return -ENOMEM;
++	}
++
++	if(copy_from_user(tmp, buf, count))
++	{
++		up(&cdev->sem);
++		kfree(tmp);
++		return -EFAULT;
++	}
++	
++	ret = egalax_I2C_write(0x0067, tmp, MAX_I2C_LEN);
++
++	up(&cdev->sem);
++	EGALAX_DBG(DBG_CDEV, " I2C writing %zu bytes.\n", count);
++	kfree(tmp);
++
++	return (ret==0?count:-1);
++}
++
++static unsigned int egalax_cdev_poll(struct file *filp, struct poll_table_struct *wait)
++{
++	struct egalax_char_dev *cdev = filp->private_data;
++	unsigned int mask = 0;
++	int fifoLen;
++	
++	down(&cdev->sem);
++	poll_wait(filp, &cdev->fifo_inq,  wait);
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	fifoLen = kfifo_len(cdev->pDataKFiFo);
++#else
++	fifoLen = kfifo_len(&cdev->DataKFiFo);
++#endif
++
++	if( fifoLen > 0 )
++		mask |= POLLIN | POLLRDNORM;    /* readable */
++	if( (FIFO_SIZE - fifoLen) > MAX_I2C_LEN )
++		mask |= POLLOUT | POLLWRNORM;   /* writable */
++
++	up(&cdev->sem);
++	return mask;
++}
++
++static int egalax_proc_show(struct seq_file* seqfilp, void *v)
++{
++	seq_printf(seqfilp, "EETI I2C for All Points.\nDebug Level: 0x%08X\nRelease Date: %s\n", DbgLevel, RELEASE_DATE);
++	return 0;
++}
++
++static int egalax_proc_open(struct inode *inode, struct file *filp)
++{
++	EGALAX_DBG(DBG_PROC, " \"%s\" call proc_open\n", current->comm);
++	return single_open(filp, egalax_proc_show, NULL);
++}
++
++static ssize_t egalax_proc_write(struct file *file, const char __user *buf, size_t count, loff_t *offset)
++{
++	char procfs_buffer_size = 0; 
++	unsigned char procfs_buf[PROC_FS_MAX_LEN+1] = {0};
++
++	EGALAX_DBG(DBG_PROC, " \"%s\" call proc_write\n", current->comm);
++
++	procfs_buffer_size = count;
++	if(procfs_buffer_size > PROC_FS_MAX_LEN ) 
++		procfs_buffer_size = PROC_FS_MAX_LEN+1;
++	
++	if( copy_from_user(procfs_buf, buf, procfs_buffer_size) ) 
++	{
++		EGALAX_DBG(DBG_PROC, " proc_write faied at copy_from_user\n");
++		return -EFAULT;
++	}
++
++	sscanf(procfs_buf, "%x", &DbgLevel);
++	EGALAX_DBG(DBG_PROC, " Switch Debug Level to 0x%08X\n", DbgLevel);
++
++	return procfs_buffer_size;
++}
++
++#define MAX_POINT_PER_PACKET	5
++#define POINT_STRUCT_SIZE	10
++static int TotalPtsCnt=0, RecvPtsCnt=0;
++static void ProcessReport(unsigned char *buf, struct _egalax_i2c *p_egalax_i2c)
++{
++	unsigned char i, index=0, cnt_down=0, cnt_up=0, shift=0;
++	unsigned char status=0;
++	unsigned short contactID=0, x=0, y=0;
++
++	if(TotalPtsCnt<=0)
++	{
++		if(buf[1]==0 || buf[1]>MAX_SUPPORT_POINT)
++		{
++			EGALAX_DBG(DBG_POINT, " NumsofContacts mismatch, skip packet\n");
++			return;
++		}
++
++		TotalPtsCnt = buf[1];
++		RecvPtsCnt = 0;
++	}
++	else if(buf[1]>0)
++	{
++		TotalPtsCnt = RecvPtsCnt = 0;
++		EGALAX_DBG(DBG_POINT, " NumsofContacts mismatch, skip packet\n");
++		return;
++	}
++
++	while(index<MAX_POINT_PER_PACKET)
++	{
++		shift = index * POINT_STRUCT_SIZE + 2;
++		status = buf[shift] & 0x01;
++		contactID = buf[shift+1];
++		x = ((buf[shift+3]<<8) + buf[shift+2]);
++		y = ((buf[shift+5]<<8) + buf[shift+4]);
++
++		if( contactID>=MAX_SUPPORT_POINT )
++		{
++			TotalPtsCnt = RecvPtsCnt = 0;
++			EGALAX_DBG(DBG_POINT, " Get error ContactID.\n");
++			return;
++		}
++
++		EGALAX_DBG(DBG_POINT, " Get Point[%d] Update: Status=%d X=%d Y=%d\n", contactID, status, x, y);
++
++	#ifdef _SWITCH_XY
++		short tmp = x;
++		x = y;
++		y = tmp;
++	#endif
++	#ifdef _CONVERT_X
++		x = MAX_RESOLUTION-x;
++	#endif
++
++	#ifdef _CONVERT_Y
++		y = MAX_RESOLUTION-y;
++	#endif
++
++		pContactBuf[RecvPtsCnt].ID = contactID;
++		pContactBuf[RecvPtsCnt].Status = status;
++		pContactBuf[RecvPtsCnt].X = x;
++		pContactBuf[RecvPtsCnt].Y = y;
++
++		RecvPtsCnt++;
++		index++;
++
++		// Recv all points, send input report
++		if(RecvPtsCnt==TotalPtsCnt)
++		{
++			for(i=0; i<RecvPtsCnt; i++)
++			{
++			#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
++				input_mt_slot(input_dev, pContactBuf[i].ID);
++				input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, pContactBuf[i].Status);
++				if(pContactBuf[i].Status)
++				{
++					input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, pContactBuf[i].Status);
++					input_report_abs(input_dev, ABS_MT_POSITION_X, pContactBuf[i].X);
++					input_report_abs(input_dev, ABS_MT_POSITION_Y, pContactBuf[i].Y);
++				}
++			#else
++				input_report_abs(input_dev, ABS_MT_TRACKING_ID, pContactBuf[i].ID);
++				input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, pContactBuf[i].Status);
++				input_report_abs(input_dev, ABS_MT_POSITION_X, pContactBuf[i].X);
++				input_report_abs(input_dev, ABS_MT_POSITION_Y, pContactBuf[i].Y);
++				input_report_abs(input_dev, ABS_MT_WIDTH_MAJOR, 0);
++				input_mt_sync(input_dev);
++			#endif
++
++				if(pContactBuf[i].Status)
++					cnt_down++;
++				else
++					cnt_up++;
++			}
++		#ifndef CONFIG_HAS_EARLYSUSPEND //We use this config to distinguish Linux and Android
++			#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,38)
++			input_mt_report_pointer_emulation(input_dev, true);
++			#endif
++		#endif
++			input_sync(input_dev);
++			EGALAX_DBG(DBG_POINT, " Input sync point data done! (Down:%d Up:%d)\n", cnt_down, cnt_up);
++			
++			TotalPtsCnt = RecvPtsCnt = 0;
++			return;
++		}
++	}
++}
++
++static struct input_dev * allocate_Input_Dev(void)
++{
++	int ret;
++	struct input_dev *pInputDev=NULL;
++
++	pInputDev = input_allocate_device();
++	if(pInputDev == NULL)
++	{
++		EGALAX_DBG(DBG_MODULE, " Failed to allocate input device\n");
++		return NULL;//-ENOMEM;
++	}
++
++	pInputDev->name = "eGalax_Touch_Screen";
++	pInputDev->phys = "I2C";
++	pInputDev->id.bustype = BUS_I2C;
++	pInputDev->id.vendor = 0x0EEF;
++	pInputDev->id.product = 0x0020;
++	pInputDev->id.version = 0x0001;
++	
++	set_bit(EV_ABS, pInputDev->evbit);
++#ifndef CONFIG_HAS_EARLYSUSPEND //We use this config to distinguish Linux and Android
++	set_bit(EV_KEY, pInputDev->evbit);
++	__set_bit(BTN_TOUCH, pInputDev->keybit);
++	input_set_abs_params(pInputDev, ABS_X, 0, MAX_RESOLUTION, 0, 0);
++	input_set_abs_params(pInputDev, ABS_Y, 0, MAX_RESOLUTION, 0, 0);
++#endif
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
++	__set_bit(INPUT_PROP_DIRECT, pInputDev->propbit);
++	#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,7,0)
++		input_mt_init_slots(pInputDev, MAX_SUPPORT_POINT, 0);
++	#else
++		input_mt_init_slots(pInputDev, MAX_SUPPORT_POINT);
++	#endif
++	input_set_abs_params(pInputDev, ABS_MT_POSITION_X, 0, MAX_RESOLUTION, 0, 0);
++	input_set_abs_params(pInputDev, ABS_MT_POSITION_Y, 0, MAX_RESOLUTION, 0, 0);
++	input_set_abs_params(pInputDev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0);
++#else
++	input_set_abs_params(pInputDev, ABS_MT_POSITION_X, 0, MAX_RESOLUTION, 0, 0);
++	input_set_abs_params(pInputDev, ABS_MT_POSITION_Y, 0, MAX_RESOLUTION, 0, 0);
++	input_set_abs_params(pInputDev, ABS_MT_WIDTH_MAJOR, 0, MAX_RESOLUTION, 0, 0); //Size
++	input_set_abs_params(pInputDev, ABS_MT_TOUCH_MAJOR, 0, 255, 0, 0); //Pressure
++	input_set_abs_params(pInputDev, ABS_MT_TRACKING_ID, 0, MAX_SUPPORT_POINT, 0, 0);
++#endif // #if LINUX_VERSION_CODE > KERNEL_VERSION(3,0,0)
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,6,36)
++	input_set_events_per_packet(pInputDev, MAX_EVENTS);
++#endif
++
++	ret = input_register_device(pInputDev);
++	if(ret) 
++	{
++		EGALAX_DBG(DBG_MODULE, " Unable to register input device.\n");
++		input_free_device(pInputDev);
++		pInputDev = NULL;
++	}
++	
++	return pInputDev;
++}
++
++static int egalax_i2c_measure(struct _egalax_i2c *egalax_i2c)
++{
++	int ret=0, frameLen=0, loop=3, i;
++
++	EGALAX_DBG(DBG_INT, " egalax_i2c_measure\n");
++
++	if( egalax_I2C_read(input_report_buf, MAX_I2C_LEN+2) < 0)
++	{
++		EGALAX_DBG(DBG_I2C, " I2C read input report fail!\n");
++		return -1;
++	}
++	
++	if( DbgLevel&DBG_I2C )
++	{
++		char dbgmsg[(MAX_I2C_LEN+2)*4];
++		for(i=0; i<MAX_I2C_LEN+2; i++)
++			sprintf(dbgmsg+i*4, "[%02X]", input_report_buf[i]);
++		EGALAX_DBG(DBG_I2C, " Buf=%s\n", dbgmsg);
++	}
++
++	frameLen = input_report_buf[0] + (input_report_buf[1]<<8);
++	EGALAX_DBG(DBG_I2C, " I2C read data with Len=%d\n", frameLen);
++
++	if(frameLen==0)
++	{
++		EGALAX_DBG(DBG_MODULE, " Device reset\n");
++		return -1;
++	}
++
++	switch(input_report_buf[2])
++	{
++		case REPORTID_MTOUCH:
++			if( !egalax_i2c->skip_packet && egalax_i2c->work_state==MODE_WORKING )
++				ProcessReport(input_report_buf+2, egalax_i2c);
++			ret = 0;
++			break;
++		case REPORTID_VENDOR:
++			atomic_set(&wait_command_ack, 1);
++			EGALAX_DBG(DBG_I2C, " I2C get vendor command packet\n");
++
++			if( p_char_dev->OpenCnts>0 ) // If someone reading now! put the data into the buffer!
++			{
++				loop=3;
++				do {
++				#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++					ret = wait_event_timeout(p_char_dev->fifo_inq, (FIFO_SIZE-kfifo_len(p_char_dev->pDataKFiFo))>=MAX_I2C_LEN, HZ);
++				#else
++					ret = wait_event_timeout(p_char_dev->fifo_inq, kfifo_avail(&p_char_dev->DataKFiFo)>=MAX_I2C_LEN, HZ);
++				#endif
++				}while(ret<=0 && --loop);
++
++				if(ret>0) // fifo size is ready
++				{
++				#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++					ret = kfifo_put(p_char_dev->pDataKFiFo, input_report_buf+2, MAX_I2C_LEN);
++				#else
++					ret = kfifo_in_locked(&p_char_dev->DataKFiFo, input_report_buf+2, MAX_I2C_LEN, &p_char_dev->FiFoLock);
++				#endif
++
++					wake_up_interruptible( &p_char_dev->fifo_inq );
++				}
++				else
++					EGALAX_DBG(DBG_CDEV, " [Warning] Can't write data because fifo size is overflow.\n");
++			}
++
++			break;
++		default:
++			EGALAX_DBG(DBG_I2C, " I2C read error data with hedaer=%d\n", input_report_buf[2]);
++			ret = -1;
++			break;
++	}
++
++	return ret;
++}
++
++static void egalax_i2c_wq_irq(struct work_struct *work)
++{
++	struct _egalax_i2c *egalax_i2c = container_of(work, struct _egalax_i2c, work_irq);
++	struct i2c_client *client = egalax_i2c->client;
++
++	EGALAX_DBG(DBG_INT, " egalax_i2c_wq run\n");
++
++	/*continue recv data*/
++	while( !gpio_get_value(egalax_i2c->interrupt_gpio) )
++	{
++		egalax_i2c_measure(egalax_i2c);
++		schedule();
++	}
++		
++	if( egalax_i2c->skip_packet > 0 )
++		egalax_i2c->skip_packet = 0;
++
++	enable_irq(client->irq);
++
++	EGALAX_DBG(DBG_INT, " egalax_i2c_wq leave\n");
++}
++
++static irqreturn_t egalax_i2c_interrupt(int irq, void *dev_id)
++{
++	struct _egalax_i2c *egalax_i2c = (struct _egalax_i2c *)dev_id;
++
++	EGALAX_DBG(DBG_INT, " INT with irq:%d\n", irq);
++
++	disable_irq_nosync(irq);
++
++	queue_work(egalax_i2c->ktouch_wq, &egalax_i2c->work_irq);
++
++	return IRQ_HANDLED;
++}
++
++static void egalax_i2c_senduppoint(void) 
++{
++	int i=0;
++	
++	EGALAX_DBG(DBG_SUSP, " %s\n", __func__);
++
++	for(i=0; i<MAX_SUPPORT_POINT; i++)
++	{
++	#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,0,0)
++		input_mt_slot(input_dev, pContactBuf[i].ID);
++		input_mt_report_slot_state(input_dev, MT_TOOL_FINGER, 0);
++	#else
++		input_report_abs(input_dev, ABS_MT_TRACKING_ID, pContactBuf[i].ID);
++		input_report_abs(input_dev, ABS_MT_TOUCH_MAJOR, 0);
++		input_mt_sync(input_dev);
++	#endif
++	
++		if(pContactBuf[i].Status)
++			pContactBuf[i].Status = 0;
++	}
++
++#ifndef CONFIG_HAS_EARLYSUSPEND //We use this config to distinguish Linux and Android
++	input_mt_report_pointer_emulation(input_dev, true);
++#endif
++	input_sync(input_dev);
++	EGALAX_DBG(DBG_POINT, " Sent up point data done!\n");
++}
++
++static int egalax_i2c_pm_suspend(struct i2c_client *client, pm_message_t mesg)
++{
++	unsigned char cmdbuf[4];
++	struct i2c_msg xfer;
++
++	EGALAX_DBG(DBG_SUSP, " Enter early_suspend state:%d\n", p_egalax_i2c_dev->work_state);
++	
++	if(!p_egalax_i2c_dev) 
++		goto fail_suspend;
++
++	//Power sleep command
++	cmdbuf[0] = 0xA7;	cmdbuf[1] = 0x00;
++	cmdbuf[2] = 0x01;	cmdbuf[3] = 0x08;
++	
++	// Write data to device
++	xfer.addr = p_egalax_i2c_dev->client->addr;
++	xfer.flags = 0;
++	xfer.len = sizeof(cmdbuf);
++	xfer.buf = cmdbuf;
++
++	if(i2c_transfer(p_egalax_i2c_dev->client->adapter, &xfer, 1) != 1) 
++	{
++		EGALAX_DBG(DBG_I2C, " %s: i2c send Power command fail\n", __func__);
++		goto fail_suspend2;
++	}
++
++	p_egalax_i2c_dev->work_state = MODE_SUSPEND;
++
++	EGALAX_DBG(DBG_SUSP, " Early_suspend done!!\n");
++	return 0;
++
++fail_suspend2:
++	p_egalax_i2c_dev->work_state = MODE_SUSPEND;
++fail_suspend:
++	EGALAX_DBG(DBG_SUSP, " Early_suspend failed!!\n");
++	return -1;
++}
++
++static int egalax_i2c_pm_resume(struct i2c_client *client)
++{
++	EGALAX_DBG(DBG_SUSP, " Enter early_resume state:%d\n", p_egalax_i2c_dev->work_state);
++
++	if(!p_egalax_i2c_dev) 
++		goto fail_resume;
++
++	if( wakeup_controller(p_egalax_i2c_dev->client->irq)==0 )
++		p_egalax_i2c_dev->work_state = MODE_WORKING;
++	else
++		goto fail_resume2;
++
++	egalax_i2c_senduppoint();
++
++	EGALAX_DBG(DBG_SUSP, " Early_resume done!!\n");
++	return 0;
++
++fail_resume2:
++	p_egalax_i2c_dev->work_state = MODE_WORKING;
++fail_resume:
++	EGALAX_DBG(DBG_SUSP, " Early_resume failed!!\n");
++	return -1;
++}
++
++#ifdef CONFIG_HAS_EARLYSUSPEND
++static void egalax_i2c_early_suspend(struct early_suspend *handler)
++{
++	pm_message_t state;
++	state.event = PM_EVENT_SUSPEND;
++
++	EGALAX_DBG(DBG_SUSP, " %s\n", __func__);
++	egalax_i2c_pm_suspend(p_egalax_i2c_dev->client, state);
++}
++
++static void egalax_i2c_early_resume(struct early_suspend *handler)
++{
++	EGALAX_DBG(DBG_SUSP, " %s\n", __func__);
++	egalax_i2c_pm_resume(p_egalax_i2c_dev->client);
++}
++#endif // #ifdef CONFIG_HAS_EARLYSUSPEND
++
++static int __devinit egalax_i2c_probe(struct i2c_client *client, const struct i2c_device_id *idp)
++{
++	int ret;
++	struct device_node *devnode;
++	
++	EGALAX_DBG(DBG_MODULE, " Start probe\n");
++
++	p_egalax_i2c_dev = (struct _egalax_i2c *)kzalloc(sizeof(struct _egalax_i2c), GFP_KERNEL);
++	if (!p_egalax_i2c_dev) 
++	{
++		EGALAX_DBG(DBG_MODULE, " Request memory failed\n");
++		ret = -ENOMEM;
++		goto fail1;
++	}
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
++	devnode = client->dev.of_node;
++	if(devnode) //if use the device tree config
++	{
++		p_egalax_i2c_dev->interrupt_gpio = of_get_named_gpio(devnode, "int-gpios", 0);
++	}
++#else
++	{
++		p_egalax_i2c_dev->interrupt_gpio = irq_to_gpio(client->irq);
++	}
++#endif
++
++	if( !gpio_is_valid(p_egalax_i2c_dev->interrupt_gpio) )
++	{
++		ret = -ENODEV;
++		goto fail1;
++	}
++	ret = gpio_request(p_egalax_i2c_dev->interrupt_gpio, "Touch IRQ");
++	if(ret<0)
++	{
++		EGALAX_DBG(DBG_MODULE, " gpio_request[%d] failed: %d\n", p_egalax_i2c_dev->interrupt_gpio, ret);
++		if(ret!=-EBUSY)
++			goto fail1;
++	}
++	gpio_direction_input(p_egalax_i2c_dev->interrupt_gpio);
++
++	input_dev = allocate_Input_Dev();
++	if(input_dev==NULL)
++	{
++		EGALAX_DBG(DBG_MODULE, " allocate_Input_Dev failed\n");
++		ret = -EINVAL; 
++		goto fail2;
++	}
++	EGALAX_DBG(DBG_MODULE, " Register input device done\n");
++
++	p_egalax_i2c_dev->client = client;
++	mutex_init(&p_egalax_i2c_dev->mutex_wq);
++
++	p_egalax_i2c_dev->ktouch_wq = create_singlethread_workqueue("egalax_touch_wq");
++	INIT_WORK(&p_egalax_i2c_dev->work_irq, egalax_i2c_wq_irq);
++
++	i2c_set_clientdata(client, p_egalax_i2c_dev);
++
++	if( gpio_get_value(p_egalax_i2c_dev->interrupt_gpio) )
++		p_egalax_i2c_dev->skip_packet = 0;
++	else
++		p_egalax_i2c_dev->skip_packet = 1;
++
++	p_egalax_i2c_dev->work_state = MODE_WORKING;
++
++	ret = request_irq(client->irq, egalax_i2c_interrupt, IRQF_DISABLED | IRQF_TRIGGER_LOW, client->name, p_egalax_i2c_dev);
++	if( ret ) 
++	{
++		EGALAX_DBG(DBG_MODULE, " Request irq(%d) failed\n", client->irq);
++		goto fail3;
++	}
++	EGALAX_DBG(DBG_MODULE, " Request irq(%d) gpio(%d) with result:%d\n", client->irq, p_egalax_i2c_dev->interrupt_gpio, ret);
++
++#ifdef CONFIG_HAS_EARLYSUSPEND
++	egalax_early_suspend.level = EARLY_SUSPEND_LEVEL_BLANK_SCREEN;
++	egalax_early_suspend.suspend = egalax_i2c_early_suspend;
++	egalax_early_suspend.resume = egalax_i2c_early_resume;
++	register_early_suspend(&egalax_early_suspend);
++	EGALAX_DBG(DBG_MODULE, " Register early_suspend done\n");
++#endif
++
++	EGALAX_DBG(DBG_MODULE, " I2C probe done\n");
++	return 0;
++
++fail3:
++	i2c_set_clientdata(client, NULL);
++	destroy_workqueue(p_egalax_i2c_dev->ktouch_wq); 
++	free_irq(client->irq, p_egalax_i2c_dev);
++	input_unregister_device(input_dev);
++	input_dev = NULL;
++fail2:
++	gpio_free(p_egalax_i2c_dev->interrupt_gpio);
++fail1:
++	kfree(p_egalax_i2c_dev);
++	p_egalax_i2c_dev = NULL;
++
++	EGALAX_DBG(DBG_MODULE, " I2C probe failed\n");
++	return ret;
++}
++
++static int __devexit egalax_i2c_remove(struct i2c_client *client)
++{
++	struct _egalax_i2c *egalax_i2c = i2c_get_clientdata(client);
++
++	egalax_i2c->work_state = MODE_STOP;
++
++	cancel_work_sync(&egalax_i2c->work_irq);
++
++	if(client->irq)
++	{
++		disable_irq(client->irq);
++		free_irq(client->irq, egalax_i2c);
++	}
++
++	gpio_free(egalax_i2c->interrupt_gpio);
++	
++	if(egalax_i2c->ktouch_wq) 
++		destroy_workqueue(egalax_i2c->ktouch_wq); 
++
++#ifdef CONFIG_HAS_EARLYSUSPEND
++	unregister_early_suspend(&egalax_early_suspend);
++#endif
++
++	if(input_dev)
++	{
++		EGALAX_DBG(DBG_MODULE,  " Unregister input device\n");
++		input_unregister_device(input_dev);
++		input_dev = NULL;
++	}
++
++	i2c_set_clientdata(client, NULL);
++	kfree(egalax_i2c);
++	p_egalax_i2c_dev = NULL;
++
++	return 0;
++}
++
++static const struct i2c_device_id egalax_i2c_idtable[] = { 
++	{ "egalax_i2c", 0 }, 
++	{ } 
++};
++
++#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
++static const struct of_device_id egalax_i2c_dt_ids[] = { 
++	{ .compatible = "eeti,egalax_i2c" }, 
++	{ } 
++};
++#endif
++
++MODULE_DEVICE_TABLE(i2c, egalax_i2c_idtable);
++
++static struct i2c_driver egalax_i2c_driver = {
++	.driver = {
++		.name 	= "egalax_i2c",
++		.owner	= THIS_MODULE,
++	#if LINUX_VERSION_CODE >= KERNEL_VERSION(3,1,0)
++		.of_match_table = egalax_i2c_dt_ids,
++	#endif
++	},
++	.id_table	= egalax_i2c_idtable,
++	.probe		= egalax_i2c_probe,
++	.remove		= __devexit_p(egalax_i2c_remove),
++#ifndef CONFIG_HAS_EARLYSUSPEND
++	.suspend 	= egalax_i2c_pm_suspend,
++	.resume 	= egalax_i2c_pm_resume,
++#endif
++};
++
++static const struct file_operations egalax_cdev_fops = {
++	.owner	= THIS_MODULE,
++	.read	= egalax_cdev_read,
++	.write	= egalax_cdev_write,
++	.open	= egalax_cdev_open,
++	.release= egalax_cdev_release,
++	.poll	= egalax_cdev_poll,
++};
++
++static const struct file_operations egalax_proc_fops = {
++	.owner		= THIS_MODULE,
++        .open           = egalax_proc_open,
++        .read           = seq_read,
++        .write          = egalax_proc_write,
++        .llseek         = seq_lseek,
++	.release	= single_release,
++};
++
++static struct miscdevice egalax_misc_dev = {
++	.minor = MISC_DYNAMIC_MINOR,
++	.name = "egalax_i2c",
++	.fops = &egalax_cdev_fops,
++};
++
++static void egalax_i2c_ts_exit(void)
++{
++	if(p_char_dev)
++	{
++		if( p_char_dev->pFiFoBuf )
++			kfree(p_char_dev->pFiFoBuf);
++
++		kfree(p_char_dev);
++		p_char_dev = NULL;
++	}
++
++	misc_deregister(&egalax_misc_dev);
++
++	i2c_del_driver(&egalax_i2c_driver);
++
++	remove_proc_entry(PROC_FS_NAME, NULL);
++
++	EGALAX_DBG(DBG_MODULE, " Exit driver done!\n");
++}
++
++static struct egalax_char_dev* setup_chardev(void)
++{
++	struct egalax_char_dev *pCharDev;
++
++	pCharDev = kzalloc(1*sizeof(struct egalax_char_dev), GFP_KERNEL);
++	if(!pCharDev) 
++		goto fail_cdev;
++
++	spin_lock_init( &pCharDev->FiFoLock );
++	pCharDev->pFiFoBuf = kzalloc(sizeof(unsigned char)*FIFO_SIZE, GFP_KERNEL);
++	if(!pCharDev->pFiFoBuf)
++		goto fail_fifobuf;
++
++#if LINUX_VERSION_CODE < KERNEL_VERSION(2,6,33)
++	pCharDev->pDataKFiFo = kfifo_init(pCharDev->pFiFoBuf, FIFO_SIZE, GFP_KERNEL, &pCharDev->FiFoLock);
++	if( pCharDev->pDataKFiFo==NULL )
++		goto fail_kfifo;
++#else
++	kfifo_init(&pCharDev->DataKFiFo, pCharDev->pFiFoBuf, FIFO_SIZE);
++	if( !kfifo_initialized(&pCharDev->DataKFiFo) )
++		goto fail_kfifo;
++#endif
++	
++	pCharDev->OpenCnts = 0;
++	sema_init(&pCharDev->sem, 1);
++	init_waitqueue_head(&pCharDev->fifo_inq);
++
++	return pCharDev; 
++
++fail_kfifo:
++	kfree(pCharDev->pFiFoBuf);
++fail_fifobuf:
++	kfree(pCharDev);
++fail_cdev:
++	return NULL;
++}
++
++static int egalax_i2c_ts_init(void)
++{
++	int result;
++
++	result = misc_register(&egalax_misc_dev);
++	if(result) 
++	{
++		EGALAX_DBG(DBG_MODULE, " misc device register failed\n");
++		goto fail;
++	}
++
++	p_char_dev = setup_chardev(); // allocate the character device
++	if(!p_char_dev) 
++	{
++		result = -ENOMEM;
++		goto fail;
++	}
++
++	dbgProcFile = proc_create(PROC_FS_NAME, S_IRUGO|S_IWUGO, NULL, &egalax_proc_fops);
++	if (dbgProcFile == NULL) 
++	{
++		remove_proc_entry(PROC_FS_NAME, NULL);
++		EGALAX_DBG(DBG_MODULE, " Could not initialize /proc/%s\n", PROC_FS_NAME);
++	}
++
++	EGALAX_DBG(DBG_MODULE, " Driver init done!\n");
++	return i2c_add_driver(&egalax_i2c_driver);
++
++fail:	
++	egalax_i2c_ts_exit();
++	return result;
++}
++
++module_init(egalax_i2c_ts_init);
++module_exit(egalax_i2c_ts_exit);
++
++MODULE_AUTHOR("EETI <touch_fae@eeti.com>");
++MODULE_DESCRIPTION("egalax all points controller i2c driver");
++MODULE_LICENSE("GPL");

+ 48 - 0
board/GfA/Display001/linux/linux-006-custom-bootlogo.patch

@@ -0,0 +1,48 @@
+diff -Naurp linux-orig/drivers/video/logo/Kconfig linux-new/drivers/video/logo/Kconfig
+--- linux-orig/drivers/video/logo/Kconfig	2014-02-07 00:05:20.000000000 +0100
++++ linux-new/drivers/video/logo/Kconfig	2015-10-30 11:26:05.982804832 +0100
+@@ -15,6 +15,10 @@ config FB_LOGO_EXTRA
+ 	depends on FB=y
+ 	default y if SPU_BASE
+ 
++config FB_LOGO_CUSTOM
++	bool "Custom Linux Logo"
++	default n
++
+ config LOGO_LINUX_MONO
+ 	bool "Standard black and white Linux logo"
+ 	default y
+diff -Naurp linux-orig/drivers/video/logo/logo.c linux-new/drivers/video/logo/logo.c
+--- linux-orig/drivers/video/logo/logo.c	2014-02-07 00:05:20.000000000 +0100
++++ linux-new/drivers/video/logo/logo.c	2015-10-30 11:42:22.566239197 +0100
+@@ -31,6 +31,8 @@ MODULE_PARM_DESC(nologo, "Disables start
+  */
+ const struct linux_logo * __init_refok fb_find_logo(int depth)
+ {
++	extern const struct linux_logo logo_custom_clut224;
++	
+ 	const struct linux_logo *logo = NULL;
+ 
+ 	if (nologo)
+@@ -100,6 +102,10 @@ const struct linux_logo * __init_refok f
+ 		/* M32R Linux logo */
+ 		logo = &logo_m32r_clut224;
+ #endif
++#ifdef CONFIG_FB_LOGO_CUSTOM
++		/* Custom Linux logo */
++		logo = &logo_custom_clut224;
++#endif
+ 	}
+ 	return logo;
+ }
+diff -Naurp linux-orig/drivers/video/logo/Makefile linux-new/drivers/video/logo/Makefile
+--- linux-orig/drivers/video/logo/Makefile	2014-02-07 00:05:20.000000000 +0100
++++ linux-new/drivers/video/logo/Makefile	2015-10-30 11:16:38.303156003 +0100
+@@ -15,6 +15,7 @@ obj-$(CONFIG_LOGO_SUPERH_MONO)		+= logo_
+ obj-$(CONFIG_LOGO_SUPERH_VGA16)		+= logo_superh_vga16.o
+ obj-$(CONFIG_LOGO_SUPERH_CLUT224)	+= logo_superh_clut224.o
+ obj-$(CONFIG_LOGO_M32R_CLUT224)		+= logo_m32r_clut224.o
++obj-$(CONFIG_FB_LOGO_CUSTOM)		+= logo_custom_clut224.o
+ 
+ obj-$(CONFIG_SPU_BASE)			+= logo_spe_clut224.o
+ 

+ 2887 - 0
board/GfA/Display001/linux/linux-006-custom-bootlogo_ppm.patch

@@ -0,0 +1,2887 @@
+diff -Naurp a/drivers/video/logo/logo_custom_clut224.ppm b/drivers/video/logo/logo_custom_clut224.ppm
+--- a/drivers/video/logo/logo_custom_clut224.ppm	1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/video/logo/logo_custom_clut224.ppm	2015-11-17 16:04:14.418518831 +0100
+@@ -0,0 +1,2883 @@
++P3
++179 96
++255
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  24 24 24  39 39 39
++57 57 57  72 72 72  87 87 87  87 87 87  87 87 87  87 87 87
++87 87 87  87 87 87  87 87 87  72 72 72  72 72 72  57 57 57
++39 39 39  24 24 24  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 72 72
++0 88 88  0 103 103  0 122 122  0 128 128  0 128 128  0 122 122
++0 103 103  0 103 103  0 72 72  0 40 40  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++39 39 39  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  39 39 39
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 55 55  0 103 103  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
++0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
++0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 122 122  0 55 55  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 40 40  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  0 103 103  0 40 40  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 72 72  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 103 103  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 88 88  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
++0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  57 57 57  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++72 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 103 103
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 88 88  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 55 55  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 55 55  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
++0 0 0  0 0 0  0 21 21  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 21 21
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
++0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++72 72 72  57 57 57  39 39 39  39 39 39  39 39 39  24 24 24
++39 39 39  39 39 39  39 39 39  39 39 39  57 57 57  72 72 72
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 103 103  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 88 88  0 55 55  0 21 21  0 21 21  0 21 21  0 40 40
++0 55 55  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  57 57 57  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  57 57 57  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
++0 72 72  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 72 72  0 21 21
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 21 21  0 88 88  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 55 55
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  57 57 57
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 40 40
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  0 40 40  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 88 88  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  72 72 72  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 21 21  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
++0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
++0 0 0  0 0 0  72 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  57 57 57
++0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 55 55  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 55 55  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  0 21 21  0 0 0  0 0 0
++0 0 0  57 57 57  105 105 105  72 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 88 88  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 88 88  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 40 40  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  72 72 72  0 21 21  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 55 55  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 103 103
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 21 21  0 103 103  0 128 128  0 128 128  0 128 128
++0 128 128  0 72 72  0 0 0  0 0 0  0 0 0  0 21 21
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  57 57 57  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 21 21
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 21 21  0 128 128  0 128 128  0 122 122
++0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 40 40  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 55 55  0 128 128  0 122 122
++0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 88 88  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 72 72  0 21 21
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 122 122  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 21 21  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 40 40  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 55 55  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 72 72  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 88 88
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++72 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 40 40  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 21 21
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 21 21  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 21 21  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 55 55  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  57 57 57  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 88 88
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 88 88  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  72 72 72
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 21 21  0 122 122  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 122 122  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 103 103  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  72 72 72  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 72 72  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 40 40  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
++0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  0 40 40  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 103 103
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 55 55  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 72 72  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 88 88  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 55 55  0 122 122  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 103 103  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 21 21  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 103 103  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 55 55
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 88 88  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 72 72  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 55 55  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
++0 122 122  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  0 21 21  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 21 21  0 103 103
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 40 40  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 72 72  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 40 40  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 40 40
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 103 103  0 122 122  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 55 55  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  57 57 57  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 72 72  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 122 122  0 122 122
++0 122 122  0 122 122  0 122 122  0 122 122  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 21 21  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 88 88  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 21 21  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 55 55  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 40 40  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  0 21 21  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 103 103  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 72 72
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 21 21  0 122 122  0 122 122
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 122 122  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 55 55  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 21 21
++0 21 21  0 21 21  0 21 21  0 21 21  0 21 21  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  57 57 57  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 88 88  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 88 88
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  72 72 72  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 55 55  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 21 21  0 122 122  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 21 21  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  39 39 39  39 39 39  39 39 39  39 39 39  39 39 39
++39 39 39  39 39 39  39 39 39  39 39 39  39 39 39  39 39 39
++39 39 39  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 21 21
++0 103 103  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 55 55  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 88 88
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  39 39 39  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  72 72 72
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 55 55  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 128 128  0 103 103  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  24 24 24  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 40 40  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 122 122  0 21 21  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++24 24 24  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 21 21  0 122 122  0 122 122  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 122 122
++0 40 40  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 103 103  0 122 122  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 122 122  0 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 72 72  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 103 103  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++87 87 87  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  87 87 87  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 103 103  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  36 120 120  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 40 40  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  72 72 72  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  61 115 115  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 55 55  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  57 57 57  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  57 57 57
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 109 109  24 123 123
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 88 88  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  57 57 57  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 109 109  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 103 103  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  72 72 72
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  69 113 113  0 128 128  0 128 128  0 122 122
++0 21 21  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  39 39 39
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  24 24 24  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  39 39 39  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  87 109 109  38 67 67
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  39 39 39  24 24 24  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  39 39 39  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  72 72 72  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++57 57 57  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  39 39 39  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++57 57 57  39 39 39  24 24 24  24 24 24  24 24 24  24 24 24
++0 0 0  24 24 24  24 24 24  39 39 39  39 39 39  57 57 57
++87 87 87  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  87 87 87  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  39 39 39  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  24 24 24  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  24 24 24  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 123 123
++87 109 109  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
++0 128 128  69 113 113  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  72 72 72  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++57 57 57  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  72 72 72  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 72 72  0 128 128  0 128 128
++0 128 128  0 128 128  36 120 120  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  57 57 57  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 40 40  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  69 113 113  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  72 72 72  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  24 24 24
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 21 21  0 122 122  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  36 120 120
++87 109 109  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  87 87 87
++24 24 24  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  24 24 24  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 103 103  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  36 120 120  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  39 39 39  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  57 57 57  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++87 87 87  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 88 88  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 122 122  43 92 92  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  87 87 87  39 39 39  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  72 72 72  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  57 57 57  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 55 55
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 103 103  0 0 0  0 0 0  39 39 39
++72 72 72  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  72 72 72
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  87 87 87
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  39 39 39  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 40 40  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 122 122  0 21 21  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  39 39 39  87 87 87  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  39 39 39  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  24 24 24
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  87 87 87  24 24 24  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 103 103  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 122 122  0 55 55  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  39 39 39
++72 72 72  87 87 87  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  57 57 57
++39 39 39  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++39 39 39  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 103 103  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 128 128  0 128 128  0 128 128  0 128 128  0 128 128  0 128 128
++0 72 72  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 21 21  24 24 24  39 39 39  57 57 57
++72 72 72  87 87 87  87 87 87  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  87 87 87  87 87 87  72 72 72
++72 72 72  39 39 39  24 24 24  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  0 0 0  0 0 0  0 0 0  0 0 0  0 0 0
++0 0 0  72 72 72  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  105 105 105  105 105 105
++105 105 105  105 105 105  105 105 105  105 105 105  72 72 72

+ 453 - 0
board/GfA/Display001/linux/linux-007-gpio-helper.patch

@@ -0,0 +1,453 @@
+diff -Naurp a/drivers/gpio/gpio-of-helper.c b/drivers/gpio/gpio-of-helper.c
+--- a/drivers/gpio/gpio-of-helper.c	1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/gpio/gpio-of-helper.c	2015-10-30 21:13:09.834705182 +0100
+@@ -0,0 +1,414 @@
++/*
++ * GPIO OF based helper
++ *
++ * A simple DT based driver to provide access to GPIO functionality
++ * to user-space via sysfs.
++ *
++ * Copyright (C) 2013 Pantelis Antoniou <panto@antoniou-consulting.com>
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License as published by
++ * the Free Software Foundation; either version 2 of the License, or
++ * (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#include <linux/module.h>
++#include <linux/kernel.h>
++#include <linux/string.h>
++#include <linux/timer.h>
++#include <linux/errno.h>
++#include <linux/init.h>
++#include <linux/delay.h>
++#include <linux/bitops.h>
++#include <linux/err.h>
++#include <linux/of.h>
++#include <linux/of_device.h>
++#include <linux/of_gpio.h>
++#include <linux/pinctrl/pinctrl.h>
++#include <linux/pinctrl/pinmux.h>
++#include <linux/pinctrl/consumer.h>
++#include <linux/atomic.h>
++#include <linux/clk.h>
++#include <linux/interrupt.h>
++#include <linux/math64.h>
++#include <linux/atomic.h>
++#include <linux/idr.h>
++
++/* fwd decl. */
++struct gpio_of_helper_info;
++
++enum gpio_type {
++	GPIO_TYPE_INPUT = 0,
++	GPIO_TYPE_OUTPUT = 1,
++};
++
++struct gpio_of_entry {
++	int id;
++	struct gpio_of_helper_info *info;
++	struct device_node *node;
++	enum gpio_type type;
++	int gpio;
++	enum of_gpio_flags gpio_flags;
++	int irq;
++	const char *name;
++	atomic64_t counter;
++	unsigned int count_flags;
++#define COUNT_RISING_EDGE	(1 << 0)
++#define COUNT_FALLING_EDGE	(1 << 1)
++};
++
++struct gpio_of_helper_info {
++	struct platform_device *pdev;
++	struct idr idr;
++};
++
++static const struct of_device_id gpio_of_helper_of_match[] = {
++	{
++		.compatible = "gpio-of-helper",
++	},
++	{ },
++};
++MODULE_DEVICE_TABLE(of, gpio_of_helper_of_match);
++
++static ssize_t gpio_of_helper_show_status(struct device *dev,
++				struct device_attribute *attr, char *buf)
++{
++	struct platform_device *pdev = to_platform_device(dev);
++	struct gpio_of_helper_info *info = platform_get_drvdata(pdev);
++	struct gpio_of_entry *entry;
++	char *p, *e;
++	int id, n;
++
++	p = buf;
++	e = p + PAGE_SIZE;
++	n = 0;
++	idr_for_each_entry(&info->idr, entry, id) {
++		switch (entry->type) {
++		case GPIO_TYPE_INPUT:
++			n = snprintf(p, e - p, "%2d %-24s %3d %-3s %llu\n",
++				entry->id, entry->name, entry->gpio, "IN",
++				(unsigned long long)
++					atomic64_read(&entry->counter));
++			break;
++		case GPIO_TYPE_OUTPUT:
++			n = snprintf(p, e - p, "%2d %-24s %3d %-3s\n",
++				entry->id, entry->name, entry->gpio, "OUT");
++			break;
++		}
++		p += n;
++	}
++
++	return p - buf;
++}
++
++static DEVICE_ATTR(status, S_IRUGO,
++		gpio_of_helper_show_status, NULL);
++
++static irqreturn_t gpio_of_helper_handler(int irq, void *ptr)
++{
++	struct gpio_of_entry *entry = ptr;
++
++	/* caution - low speed interfaces only! */
++	atomic64_inc(&entry->counter);
++
++	return IRQ_HANDLED;
++}
++
++static struct gpio_of_entry *
++gpio_of_entry_create(struct gpio_of_helper_info *info,
++		struct device_node *node)
++{
++	struct platform_device *pdev = info->pdev;
++	struct device *dev = &pdev->dev;
++	struct gpio_of_entry *entry;
++	int err, gpio, irq;
++	unsigned int req_flags, count_flags, irq_flags;
++	enum gpio_type type;
++	enum of_gpio_flags gpio_flags;
++	const char *name;
++
++	/* get the type of the node first */
++	if (of_property_read_bool(node, "input"))
++		type = GPIO_TYPE_INPUT;
++	else if (of_property_read_bool(node, "output"))
++		type = GPIO_TYPE_OUTPUT;
++	else {
++		dev_err(dev, "Not valid gpio node type\n");
++		err = -EINVAL;
++		goto err_bad_node;
++	}
++
++	/* get the name */
++	err = of_property_read_string(node, "gpio-name", &name);
++	if (err != 0) {
++		dev_err(dev, "Failed to get name property\n");
++		goto err_bad_node;
++	}
++
++	err = of_get_named_gpio_flags(node, "gpio", 0, &gpio_flags);
++	if (IS_ERR_VALUE(err)) {
++		dev_err(dev, "Failed to get gpio property of '%s'\n", name);
++		goto err_bad_node;
++	}
++	gpio = err;
++
++	req_flags = 0;
++	count_flags = 0;
++
++	/* set the request flags */
++	switch (type) {
++		case GPIO_TYPE_INPUT:
++			req_flags = GPIOF_DIR_IN | GPIOF_EXPORT;
++			if (of_property_read_bool(node, "count-falling-edge"))
++				count_flags |= COUNT_FALLING_EDGE;
++			if (of_property_read_bool(node, "count-rising-edge"))
++				count_flags |= COUNT_RISING_EDGE;
++			break;
++		case GPIO_TYPE_OUTPUT:
++			req_flags = GPIOF_DIR_OUT | GPIOF_EXPORT;
++			if (of_property_read_bool(node, "init-high"))
++				req_flags |= GPIOF_OUT_INIT_HIGH;
++			else if (of_property_read_bool(node, "init-low"))
++				req_flags |= GPIOF_OUT_INIT_LOW;
++			break;
++	}
++
++	/* request the gpio */
++	err = devm_gpio_request_one(dev, gpio, req_flags, name);
++	if (err != 0) {
++		dev_err(dev, "Failed to request gpio '%s'\n", name);
++		goto err_bad_node;
++	}
++
++	irq = -1;
++	irq_flags = 0;
++
++	/* counter mode requested - need an interrupt */
++	if (count_flags != 0) {
++		irq = gpio_to_irq(gpio);
++		if (IS_ERR_VALUE(irq)) {
++			dev_err(dev, "Failed to request gpio '%s'\n", name);
++			goto err_bad_node;
++		}
++
++		if (count_flags & COUNT_RISING_EDGE)
++			irq_flags |= IRQF_TRIGGER_RISING;
++		if (count_flags & COUNT_FALLING_EDGE)
++			irq_flags |= IRQF_TRIGGER_FALLING;
++	}
++
++	if (!idr_pre_get(&info->idr, GFP_KERNEL)) {
++		dev_err(dev, "Failed on idr_pre_get of '%s'\n", name);
++		err = -ENOMEM;
++		goto err_no_mem;
++	}
++
++	entry = devm_kzalloc(dev, sizeof(*entry), GFP_KERNEL);
++	if (entry == NULL) {
++		dev_err(dev, "Failed to allocate gpio entry of '%s'\n", name);
++		err = -ENOMEM;
++		goto err_no_mem;
++	}
++
++	entry->id = -1;
++	entry->info = info;
++	entry->node = of_node_get(node);	/* get node reference */
++	entry->type = type;
++	entry->gpio = gpio;
++	entry->gpio_flags = gpio_flags;
++	entry->irq = irq;
++	entry->name = name;
++
++	/* interrupt enable is last thing done */
++	if (irq >= 0) {
++		atomic64_set(&entry->counter, 0);
++		entry->count_flags = count_flags;
++		err = devm_request_irq(dev, irq, gpio_of_helper_handler,
++				irq_flags, name, entry);
++		if (err != 0) {
++			dev_err(dev, "Failed to request irq of '%s'\n", name);
++			goto err_no_irq;
++		}
++	}
++
++	/* all done; insert */
++	err = idr_get_new(&info->idr, entry, &entry->id);
++	if (IS_ERR_VALUE(err)) {
++		dev_err(dev, "Failed to idr_get_new  of '%s'\n", name);
++		goto err_fail_idr;
++	}
++
++	dev_info(dev, "Allocated GPIO id=%d\n", entry->id);
++
++	return entry;
++
++err_fail_idr:
++	/* nothing to do */
++err_no_irq:
++	/* release node ref */
++	of_node_put(node);
++	/* nothing else needs to be done, devres handles it */
++err_no_mem:
++err_bad_node:
++	return ERR_PTR(err);
++}
++
++static int gpio_of_entry_destroy(struct gpio_of_entry *entry)
++{
++	struct gpio_of_helper_info *info = entry->info;
++	struct platform_device *pdev = info->pdev;
++	struct device *dev = &pdev->dev;
++
++	dev_info(dev, "Destroying GPIO id=%d\n", entry->id);
++
++	/* remove from the IDR */
++	idr_remove(&info->idr, entry->id);
++
++	/* remove node ref */
++	of_node_put(entry->node);
++
++	/* free gpio */
++	devm_gpio_free(dev, entry->gpio);
++
++	/* gree irq */
++	if (entry->irq >= 0)
++		devm_free_irq(dev, entry->irq, entry);
++
++	/* and free */
++	devm_kfree(dev, entry);
++
++	return 0;
++}
++
++static int gpio_of_helper_probe(struct platform_device *pdev)
++{
++	struct device *dev = &pdev->dev;
++	struct gpio_of_helper_info *info;
++	struct gpio_of_entry *entry;
++	struct device_node *pnode = pdev->dev.of_node;
++	struct device_node *cnode;
++	struct pinctrl *pinctrl;
++	int err;
++
++	/* we only support OF */
++	if (pnode == NULL) {
++		dev_err(&pdev->dev, "No platform of_node!\n");
++		return -ENODEV;
++	}
++
++	pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
++	if (IS_ERR(pinctrl)) {
++		/* special handling for probe defer */
++		if (PTR_ERR(pinctrl) == -EPROBE_DEFER)
++			return -EPROBE_DEFER;
++
++		dev_warn(&pdev->dev,
++			"pins are not configured from the driver\n");
++	}
++
++	info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
++	if (info == NULL) {
++		dev_err(&pdev->dev, "Failed to allocate info\n");
++		err = -ENOMEM;
++		goto err_no_mem;
++	}
++	platform_set_drvdata(pdev, info);
++	info->pdev = pdev;
++
++	idr_init(&info->idr);
++
++	err = device_create_file(dev, &dev_attr_status);
++	if (err != 0) {
++		dev_err(dev, "Failed to create status sysfs attribute\n");
++		goto err_no_sysfs;
++	}
++
++	for_each_child_of_node(pnode, cnode) {
++
++		entry = gpio_of_entry_create(info, cnode);
++		if (IS_ERR_OR_NULL(entry)) {
++			dev_err(dev, "Failed to create gpio entry\n");
++			err = PTR_ERR(entry);
++			goto err_fail_entry;
++		}
++	}
++
++	dev_info(&pdev->dev, "ready\n");
++
++	return 0;
++err_fail_entry:
++	device_remove_file(&pdev->dev, &dev_attr_status);
++err_no_sysfs:
++err_no_mem:
++	return err;
++}
++
++static int gpio_of_helper_remove(struct platform_device *pdev)
++{
++	struct gpio_of_helper_info *info = platform_get_drvdata(pdev);
++	struct gpio_of_entry *entry;
++	int id;
++
++	dev_info(&pdev->dev, "removing\n");
++
++	device_remove_file(&pdev->dev, &dev_attr_status);
++
++	id = 0;
++	idr_for_each_entry(&info->idr, entry, id) {
++		/* destroy each and every one */
++		gpio_of_entry_destroy(entry);
++	}
++
++	return 0;
++}
++
++#ifdef CONFIG_PM
++#ifdef CONFIG_PM_RUNTIME
++static int gpio_of_helper_runtime_suspend(struct device *dev)
++{
++	/* place holder */
++	return 0;
++}
++
++static int gpio_of_helper_runtime_resume(struct device *dev)
++{
++	/* place holder */
++	return 0;
++}
++#endif /* CONFIG_PM_RUNTIME */
++
++static struct dev_pm_ops gpio_of_helper_pm_ops = {
++	SET_RUNTIME_PM_OPS(gpio_of_helper_runtime_suspend,
++			   gpio_of_helper_runtime_resume, NULL)
++};
++#define GPIO_OF_HELPER_PM_OPS (&gpio_of_helper_pm_ops)
++#else
++#define GPIO_OF_HELPER_PM_OPS NULL
++#endif /* CONFIG_PM */
++
++struct platform_driver gpio_of_helper_driver = {
++	.probe		= gpio_of_helper_probe,
++	.remove		= gpio_of_helper_remove,
++	.driver = {
++		.name		= "gpio-of-helper",
++		.owner		= THIS_MODULE,
++		.pm		= GPIO_OF_HELPER_PM_OPS,
++		.of_match_table	= gpio_of_helper_of_match,
++	},
++};
++
++module_platform_driver(gpio_of_helper_driver);
++
++MODULE_AUTHOR("Pantelis Antoniou <panto@antoniou-consulting.com>");
++MODULE_DESCRIPTION("GPIO OF Helper driver");
++MODULE_LICENSE("GPL");
++MODULE_ALIAS("platform:gpio-of-helper");
+diff -Naurp a/drivers/gpio/Kconfig b/drivers/gpio/Kconfig
+--- a/drivers/gpio/Kconfig	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/gpio/Kconfig	2015-10-30 21:13:09.826705188 +0100
+@@ -81,6 +81,20 @@ config GPIO_SYSFS
+ 	  Kernel drivers may also request that a particular GPIO be
+ 	  exported to userspace; this can be useful when debugging.
+ 
++config GPIO_OF_HELPER
++	bool "GPIO OF helper device"
++	depends on OF_GPIO 
++	help
++	  Say Y here to add an GPIO OF helper driver
++
++	  Allows you specify a GPIO helper based on OF
++	  which allows simple export of GPIO functionality
++	  in user-space.
++
++	  Features include, value set/get, direction control,
++	  interrupt/value change poll support, event counting
++	  and others.
++
+ config GPIO_GENERIC
+ 	tristate
+ 
+diff -Naurp a/drivers/gpio/Makefile b/drivers/gpio/Makefile
+--- a/drivers/gpio/Makefile	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/gpio/Makefile	2015-10-30 21:13:09.826705188 +0100
+@@ -6,6 +6,7 @@ obj-$(CONFIG_GPIO_DEVRES)	+= devres.o
+ obj-$(CONFIG_GPIOLIB)		+= gpiolib.o
+ obj-$(CONFIG_OF_GPIO)		+= gpiolib-of.o
+ obj-$(CONFIG_GPIO_ACPI)		+= gpiolib-acpi.o
++obj-$(CONFIG_GPIO_OF_HELPER)	+= gpio-of-helper.o
+ 
+ # Device drivers. Generally keep list sorted alphabetically
+ obj-$(CONFIG_GPIO_GENERIC)	+= gpio-generic.o

+ 271 - 0
board/GfA/Display001/linux/linux-009-pru.patch

@@ -0,0 +1,271 @@
+From e6720081e390bd1014edf00a800c24d6dfb0abbf Mon Sep 17 00:00:00 2001
+From: Elias <elias@iagent.no>
+Date: Tue, 14 Jan 2014 11:10:17 +0100
+Subject: [PATCH] These are the patches necessary for enabling the PRU with
+ kernel 3.12. Most of this has been taken form the 3.9-patchset and updated.
+
+---
+ arch/arm/boot/dts/am33xx.dtsi |  11 +++++
+ drivers/uio/Kconfig           |   4 +-
+ drivers/uio/uio_pruss.c       | 105 ++++++++++++++++++++++++++++++++++++++++--
+ 3 files changed, 115 insertions(+), 5 deletions(-)
+
+diff --git a/arch/arm/boot/dts/am33xx.dtsi b/arch/arm/boot/dts/am33xx.dtsi
+index 3dd2af6..d9fd58b 100644
+--- a/arch/arm/boot/dts/am33xx.dtsi
++++ b/arch/arm/boot/dts/am33xx.dtsi
+@@ -368,6 +368,17 @@
+ 			ti,timer-pwm;
+ 		};
+ 
++		pruss: pruss@4a300000 {
++			compatible = "ti,pruss-v2";
++			ti,hwmods = "pruss";
++			ti,deassert-hard-reset = "pruss", "pruss";
++			reg = <0x4a300000 0x080000>;
++			ti,pintc-offset = <0x20000>;
++			interrupt-parent = <&intc>;
++			status = "disabled";
++			interrupts = <20 21 22 23 24 25 26 27>;
++		};
++
+ 		rtc@44e3e000 {
+ 			compatible = "ti,da830-rtc";
+ 			reg = <0x44e3e000 0x1000>;
+diff --git a/drivers/uio/Kconfig b/drivers/uio/Kconfig
+index 5a90914..6c5abe9 100644
+--- a/drivers/uio/Kconfig
++++ b/drivers/uio/Kconfig
+@@ -106,10 +106,10 @@ config UIO_NETX
+ 
+ config UIO_PRUSS
+ 	tristate "Texas Instruments PRUSS driver"
+-	depends on ARCH_DAVINCI_DA850
++	depends on ARCH_DAVINCI_DA850 || SOC_AM33XX
+ 	select GENERIC_ALLOCATOR
+ 	help
+-	  PRUSS driver for OMAPL138/DA850/AM18XX devices
++	  PRUSS driver for OMAPL138/DA850/AM18XX and AM33XX devices
+ 	  PRUSS driver requires user space components, examples and user space
+ 	  driver is available from below SVN repo - you may use anonymous login
+ 
+diff --git a/drivers/uio/uio_pruss.c b/drivers/uio/uio_pruss.c
+index f519da9..d99a772 100644
+--- a/drivers/uio/uio_pruss.c
++++ b/drivers/uio/uio_pruss.c
+@@ -19,6 +19,7 @@
+ #include <linux/module.h>
+ #include <linux/moduleparam.h>
+ #include <linux/platform_device.h>
++#include <linux/of_gpio.h>
+ #include <linux/uio_driver.h>
+ #include <linux/platform_data/uio_pruss.h>
+ #include <linux/io.h>
+@@ -26,6 +27,11 @@
+ #include <linux/dma-mapping.h>
+ #include <linux/slab.h>
+ #include <linux/genalloc.h>
++#include <linux/of_address.h>
++#include <linux/of_device.h>
++#include <linux/pinctrl/consumer.h>
++#include <linux/err.h>
++#include <linux/pm_runtime.h>
+ 
+ #define DRV_NAME "pruss_uio"
+ #define DRV_VERSION "1.0"
+@@ -106,10 +112,12 @@ static void pruss_cleanup(struct platform_device *dev,
+ 		dma_free_coherent(&dev->dev, extram_pool_sz, gdev->ddr_vaddr,
+ 			gdev->ddr_paddr);
+ 	}
++#ifdef CONFIG_ARCH_DAVINCI_DA850
+ 	if (gdev->sram_vaddr)
+ 		gen_pool_free(gdev->sram_pool,
+ 			      gdev->sram_vaddr,
+ 			      sram_pool_sz);
++#endif
+ 	kfree(gdev->info);
+ 	clk_put(gdev->pruss_clk);
+ 	kfree(gdev);
+@@ -120,8 +128,14 @@ static int pruss_probe(struct platform_device *dev)
+ 	struct uio_info *p;
+ 	struct uio_pruss_dev *gdev;
+ 	struct resource *regs_prussio;
++	struct resource res;
+ 	int ret = -ENODEV, cnt = 0, len;
+ 	struct uio_pruss_pdata *pdata = dev_get_platdata(&dev->dev);
++    struct pinctrl *pinctrl;
++
++	int count;
++	struct device_node *child;
++	const char *pin_name;
+ 
+ 	gdev = kzalloc(sizeof(struct uio_pruss_dev), GFP_KERNEL);
+ 	if (!gdev)
+@@ -132,6 +146,7 @@ static int pruss_probe(struct platform_device *dev)
+ 		kfree(gdev);
+ 		return -ENOMEM;
+ 	}
++#ifdef CONFIG_ARCH_DAVINCI_DA850
+ 	/* Power on PRU in case its not done as part of boot-loader */
+ 	gdev->pruss_clk = clk_get(&dev->dev, "pruss");
+ 	if (IS_ERR(gdev->pruss_clk)) {
+@@ -143,6 +158,63 @@ static int pruss_probe(struct platform_device *dev)
+ 	} else {
+ 		clk_enable(gdev->pruss_clk);
+ 	}
++#endif
++
++	if (dev->dev.of_node) {
++		pm_runtime_enable(&dev->dev);
++		ret = pm_runtime_get_sync(&dev->dev);
++		if (IS_ERR_VALUE(ret)) {
++			dev_err(&dev->dev, "pm_runtime_get_sync() failed\n");
++			return ret;
++		}
++
++		ret = of_address_to_resource(dev->dev.of_node, 0, &res);
++		if (IS_ERR_VALUE(ret)) {
++			dev_err(&dev->dev, "failed to parse DT reg\n");
++			return ret;
++		}
++		regs_prussio = &res;
++	}
++
++	pinctrl = devm_pinctrl_get_select_default(&dev->dev);
++	if (IS_ERR(pinctrl))
++		dev_warn(&dev->dev,
++			"pins are not configured from the driver\n");
++	else{
++		count = of_get_child_count(dev->dev.of_node);
++		if (!count){
++			dev_info(&dev->dev, "No children\n");
++			return -ENODEV;
++		}
++		// Run through all children. They have lables for easy reference.
++		for_each_child_of_node(dev->dev.of_node, child){
++			enum of_gpio_flags flags;
++			unsigned gpio;
++
++			count = of_gpio_count(child);
++
++			ret = of_property_count_strings(child, "pin-names");
++			if (ret < 0) {
++				dev_err(&dev->dev, "Failed to get pin-names\n");
++				continue;
++			}
++			if(count != ret){
++				dev_err(&dev->dev, "The number of gpios (%d) does not match"\
++					" the number of pin names (%d)\n", count, ret);
++				continue;
++			}
++
++			dev_err(&dev->dev, "Child has %u gpios\n", count);
++			for(cnt=0; cnt<count; cnt++){
++				ret = of_property_read_string_index(child,
++					"pin-names", cnt, &pin_name);
++				if (ret != 0)
++					dev_err(&dev->dev, "Error on pin-name #%d\n", cnt);
++				gpio = of_get_gpio_flags(child, cnt, &flags);
++				ret = devm_gpio_request_one(&dev->dev, gpio, flags, pin_name);
++			}
++		}
++	}
+ 
+ 	regs_prussio = platform_get_resource(dev, IORESOURCE_MEM, 0);
+ 	if (!regs_prussio) {
+@@ -150,19 +222,23 @@ static int pruss_probe(struct platform_device *dev)
+ 		goto out_free;
+ 	}
+ 
++    dev_err(&dev->dev,"pruss_probe() get_resource ok\n");
++
+ 	if (!regs_prussio->start) {
+ 		dev_err(&dev->dev, "Invalid memory resource\n");
+ 		goto out_free;
+ 	}
+ 
+-	if (pdata->sram_pool) {
++	if (pdata && pdata->sram_pool) {
+ 		gdev->sram_pool = pdata->sram_pool;
++#ifdef CONFIG_ARCH_DAVINCI_DA850
+ 		gdev->sram_vaddr =
+ 			gen_pool_alloc(gdev->sram_pool, sram_pool_sz);
+ 		if (!gdev->sram_vaddr) {
+ 			dev_err(&dev->dev, "Could not allocate SRAM pool\n");
+ 			goto out_free;
+ 		}
++#endif
+ 		gdev->sram_paddr =
+ 			gen_pool_virt_to_phys(gdev->sram_pool,
+ 					      gdev->sram_vaddr);
+@@ -182,7 +258,17 @@ static int pruss_probe(struct platform_device *dev)
+ 		goto out_free;
+ 	}
+ 
+-	gdev->pintc_base = pdata->pintc_base;
++	if (dev->dev.of_node) {
++		ret = of_property_read_u32(dev->dev.of_node,
++					   "ti,pintc-offset",
++					   &gdev->pintc_base);
++		if (ret < 0) {
++			dev_err(&dev->dev,
++				"Can't parse ti,pintc-offset property\n");
++			goto out_free;
++		}
++	} else
++		gdev->pintc_base = pdata->pintc_base;
+ 	gdev->hostirq_start = platform_get_irq(dev, 0);
+ 
+ 	for (cnt = 0, p = gdev->info; cnt < MAX_PRUSS_EVT; cnt++, p++) {
+@@ -190,6 +276,7 @@ static int pruss_probe(struct platform_device *dev)
+ 		p->mem[0].size = resource_size(regs_prussio);
+ 		p->mem[0].memtype = UIO_MEM_PHYS;
+ 
++#ifdef CONFIG_ARCH_DAVINCI_DA850
+ 		p->mem[1].addr = gdev->sram_paddr;
+ 		p->mem[1].size = sram_pool_sz;
+ 		p->mem[1].memtype = UIO_MEM_PHYS;
+@@ -197,6 +284,11 @@ static int pruss_probe(struct platform_device *dev)
+ 		p->mem[2].addr = gdev->ddr_paddr;
+ 		p->mem[2].size = extram_pool_sz;
+ 		p->mem[2].memtype = UIO_MEM_PHYS;
++#else
++		p->mem[1].addr = gdev->ddr_paddr;
++		p->mem[1].size = extram_pool_sz;
++		p->mem[1].memtype = UIO_MEM_PHYS;
++#endif
+ 
+ 		p->name = kasprintf(GFP_KERNEL, "pruss_evt%d", cnt);
+ 		p->version = DRV_VERSION;
+@@ -210,7 +302,6 @@ static int pruss_probe(struct platform_device *dev)
+ 		if (ret < 0)
+ 			goto out_free;
+ 	}
+-
+ 	platform_set_drvdata(dev, gdev);
+ 	return 0;
+ 
+@@ -227,12 +318,20 @@ static int pruss_remove(struct platform_device *dev)
+ 	return 0;
+ }
+ 
++static const struct of_device_id pruss_dt_ids[] = {
++	{ .compatible = "ti,pruss-v1", .data = NULL, },
++	{ .compatible = "ti,pruss-v2", .data = NULL, },
++	{},
++};
++MODULE_DEVICE_TABLE(of, pruss_dt_ids);
++
+ static struct platform_driver pruss_driver = {
+ 	.probe = pruss_probe,
+ 	.remove = pruss_remove,
+ 	.driver = {
+ 		   .name = DRV_NAME,
+ 		   .owner = THIS_MODULE,
++		   .of_match_table = pruss_dt_ids,
+ 		   },
+ };
+ 
+-- 
+1.8.5.2
+

+ 55 - 0
board/GfA/Display001/linux/linux-010-pru_ena.patch

@@ -0,0 +1,55 @@
+diff -Nur -x '*.S' -x '*.lds' a/arch/arm/mach-omap2/omap_device.c b/arch/arm/mach-omap2/omap_device.c
+--- a/arch/arm/mach-omap2/omap_device.c	2014-02-07 00:05:20.000000000 +0100
++++ b/arch/arm/mach-omap2/omap_device.c	2016-01-10 20:05:46.923487984 +0100
+@@ -123,8 +123,8 @@
+ 	struct omap_device *od;
+ 	struct omap_hwmod *oh;
+ 	struct device_node *node = pdev->dev.of_node;
+-	const char *oh_name;
+-	int oh_cnt, i, ret = 0;
++	const char *oh_name, *rst_name;
++	int oh_cnt, dstr_cnt, i, ret = 0;
+ 	bool device_active = false;
+ 
+ 	oh_cnt = of_property_count_strings(node, "ti,hwmods");
+@@ -176,6 +176,26 @@
+ 		pm_runtime_set_active(&pdev->dev);
+ 	}
+ 
++       dstr_cnt =
++               of_property_count_strings(node, "ti,deassert-hard-reset");
++       if (dstr_cnt > 0) {
++               for (i = 0; i < dstr_cnt; i += 2) {
++                       of_property_read_string_index(
++                               node, "ti,deassert-hard-reset", i,
++                               &oh_name);
++                       of_property_read_string_index(
++                               node, "ti,deassert-hard-reset", i+1,
++                               &rst_name);
++                       oh = omap_hwmod_lookup(oh_name);
++                       if (!oh) {
++                               dev_warn(&pdev->dev,
++                               "Cannot parse deassert property for '%s'\n",
++                               oh_name);
++                               break;
++                       }
++                       omap_hwmod_deassert_hardreset(oh, rst_name);
++               }
++       }
+ odbfd_exit1:
+ 	kfree(hwmods);
+ odbfd_exit:
+diff -Nur -x '*.S' -x '*.lds' a/drivers/uio/uio_pruss.c b/drivers/uio/uio_pruss.c
+--- a/drivers/uio/uio_pruss.c	2016-01-10 22:06:02.731071925 +0100
++++ b/drivers/uio/uio_pruss.c	2016-01-10 22:04:52.011075216 +0100
+@@ -182,10 +182,6 @@
+ 			"pins are not configured from the driver\n");
+ 	else{
+ 		count = of_get_child_count(dev->dev.of_node);
+-		if (!count){
+-			dev_info(&dev->dev, "No children\n");
+-			return -ENODEV;
+-		}
+ 		// Run through all children. They have lables for easy reference.
+ 		for_each_child_of_node(dev->dev.of_node, child){
+ 			enum of_gpio_flags flags;

+ 24 - 0
board/GfA/Display001/linux/linux-011-bootlogo_move.patch

@@ -0,0 +1,24 @@
+--- linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/video/fbmem.c	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/video/fbmem.c	2016-01-11 23:12:12.522516459 +0100
+@@ -498,8 +498,8 @@
+ 		fb_set_logo(info, logo, logo_new, fb_logo.depth);
+ 	}
+ 
+-	image.dx = 0;
+-	image.dy = y;
++	image.dx = 0 + 5;
++	image.dy = y + 5;
+ 	image.width = logo->width;
+ 	image.height = logo->height;
+ 
+--- linux-7f280334068b7c875ade51f8f3921ab311f0c824/drivers/video/console/fbcon.c	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/video/console/fbcon.c	2016-01-12 08:39:57.850085691 +0100
+@@ -584,6 +584,8 @@
+ 	if (fb_get_color_depth(&info->var, &info->fix) == 1)
+ 		erase &= ~0x400;
+ 	logo_height = fb_prepare_logo(info, ops->rotate);
++	logo_height += 5;
++	
+ 	logo_lines = DIV_ROUND_UP(logo_height, vc->vc_font.height);
+ 	q = (unsigned short *) (vc->vc_origin +
+ 				vc->vc_size_row * rows);

+ 521 - 0
board/GfA/Display001/linux/linux-012-omap-dmtimer.patch

@@ -0,0 +1,521 @@
+diff -Naur a/Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt b/Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt
+--- a/Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt	1970-01-01 01:00:00.000000000 +0100
++++ b/Documentation/devicetree/bindings/pwm/pwm-omap-dmtimer.txt	2016-11-09 00:03:50.775305324 +0100
+@@ -0,0 +1,18 @@
++* OMAP PWM for dual-mode timers
++
++Required properties:
++- compatible: Shall contain "ti,omap-dmtimer-pwm".
++- ti,timers: phandle to PWM capable OMAP timer. See arm/omap/timer.txt for info
++  about these timers.
++- #pwm-cells: Should be 3. See pwm.txt in this directory for a description of
++  the cells format.
++
++Optional properties:
++- ti,prescaler: Should be a value between 0 and 7, see the timers datasheet
++
++Example:
++	pwm9: dmtimer-pwm@9 {
++		compatible = "ti,omap-dmtimer-pwm";
++		ti,timers = <&timer9>;
++		#pwm-cells = <3>;
++	};
+diff -Naur a/drivers/pwm/Kconfig b/drivers/pwm/Kconfig
+--- a/drivers/pwm/Kconfig	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/pwm/Kconfig	2016-11-09 00:03:50.795305503 +0100
+@@ -101,6 +101,15 @@
+ 	  To compile this driver as a module, choose M here: the module
+ 	  will be called pwm-mxs.
+ 
++config PWM_OMAP_DMTIMER
++	tristate "OMAP Dual-Mode Timer PWM support"
++	depends on OF && ARCH_OMAP && OMAP_DM_TIMER
++	help
++	  Generic PWM framework driver for OMAP Dual-Mode Timer PWM output
++
++	  To compile this driver as a module, choose M here: the module
++	  will be called pwm-omap-dmtimer
++
+ config PWM_PCA9685
+ 	tristate "NXP PCA9685 PWM driver"
+ 	depends on OF && REGMAP_I2C
+diff -Naur a/drivers/pwm/Makefile b/drivers/pwm/Makefile
+--- a/drivers/pwm/Makefile	2014-02-07 00:05:20.000000000 +0100
++++ b/drivers/pwm/Makefile	2016-11-09 00:03:50.795305503 +0100
+@@ -7,6 +7,7 @@
+ obj-$(CONFIG_PWM_JZ4740)	+= pwm-jz4740.o
+ obj-$(CONFIG_PWM_LPC32XX)	+= pwm-lpc32xx.o
+ obj-$(CONFIG_PWM_MXS)		+= pwm-mxs.o
++obj-$(CONFIG_PWM_OMAP_DMTIMER)	+= pwm-omap-dmtimer.o
+ obj-$(CONFIG_PWM_PCA9685)	+= pwm-pca9685.o
+ obj-$(CONFIG_PWM_PUV3)		+= pwm-puv3.o
+ obj-$(CONFIG_PWM_PXA)		+= pwm-pxa.o
+diff -Naur a/drivers/pwm/pwm-omap-dmtimer.c b/drivers/pwm/pwm-omap-dmtimer.c
+--- a/drivers/pwm/pwm-omap-dmtimer.c	1970-01-01 01:00:00.000000000 +0100
++++ b/drivers/pwm/pwm-omap-dmtimer.c	2016-11-09 00:05:19.484095652 +0100
+@@ -0,0 +1,369 @@
++/*
++ * Copyright (c) 2015 Neil Armstrong <narmstrong@baylibre.com>
++ * Copyright (c) 2014 Joachim Eastwood <manabian@gmail.com>
++ * Copyright (c) 2012 NeilBrown <neilb@suse.de>
++ * Heavily based on earlier code which is:
++ * Copyright (c) 2010 Grant Erickson <marathon96@gmail.com>
++ *
++ * Also based on pwm-samsung.c
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * version 2 as published by the Free Software Foundation.
++ *
++ * Description:
++ *   This file is the core OMAP support for the generic, Linux
++ *   PWM driver / controller, using the OMAP's dual-mode timers.
++ */
++
++#include <linux/clk.h>
++#include <linux/err.h>
++#include <linux/kernel.h>
++#include <linux/module.h>
++#include <linux/mutex.h>
++#include <linux/of.h>
++#include <linux/of_platform.h>
++#include <linux/platform_data/pwm_omap_dmtimer.h>
++#include <linux/platform_device.h>
++#include <linux/pm_runtime.h>
++#include <linux/pwm.h>
++#include <linux/slab.h>
++#include <linux/time.h>
++
++#define DM_TIMER_LOAD_MIN 0xfffffffe
++#define DM_TIMER_MAX      0xffffffff
++
++struct pwm_omap_dmtimer_chip {
++	struct pwm_chip chip;
++	struct mutex mutex;
++	pwm_omap_dmtimer *dm_timer;
++	struct pwm_omap_dmtimer_pdata *pdata;
++	struct platform_device *dm_timer_pdev;
++};
++
++static inline struct pwm_omap_dmtimer_chip *
++to_pwm_omap_dmtimer_chip(struct pwm_chip *chip)
++{
++	return container_of(chip, struct pwm_omap_dmtimer_chip, chip);
++}
++
++static u32 pwm_omap_dmtimer_get_clock_cycles(unsigned long clk_rate, int ns)
++{
++	return DIV_ROUND_CLOSEST_ULL((u64)clk_rate * ns, NSEC_PER_SEC);
++}
++
++static void pwm_omap_dmtimer_start(struct pwm_omap_dmtimer_chip *omap)
++{
++	/*
++	 * According to OMAP 4 TRM section 22.2.4.10 the counter should be
++	 * started at 0xFFFFFFFE when overflow and match is used to ensure
++	 * that the PWM line is toggled on the first event.
++	 *
++	 * Note that omap_dm_timer_enable/disable is for register access and
++	 * not the timer counter itself.
++	 */
++	omap->pdata->enable(omap->dm_timer);
++	omap->pdata->write_counter(omap->dm_timer, DM_TIMER_LOAD_MIN);
++	omap->pdata->disable(omap->dm_timer);
++
++	omap->pdata->start(omap->dm_timer);
++}
++
++static int pwm_omap_dmtimer_enable(struct pwm_chip *chip,
++				   struct pwm_device *pwm)
++{
++	struct pwm_omap_dmtimer_chip *omap = to_pwm_omap_dmtimer_chip(chip);
++
++	mutex_lock(&omap->mutex);
++	pwm_omap_dmtimer_start(omap);
++	mutex_unlock(&omap->mutex);
++
++	return 0;
++}
++
++static void pwm_omap_dmtimer_disable(struct pwm_chip *chip,
++				     struct pwm_device *pwm)
++{
++	struct pwm_omap_dmtimer_chip *omap = to_pwm_omap_dmtimer_chip(chip);
++
++	mutex_lock(&omap->mutex);
++	omap->pdata->stop(omap->dm_timer);
++	mutex_unlock(&omap->mutex);
++}
++
++static int pwm_omap_dmtimer_config(struct pwm_chip *chip,
++				   struct pwm_device *pwm,
++				   int duty_ns, int period_ns)
++{
++	struct pwm_omap_dmtimer_chip *omap = to_pwm_omap_dmtimer_chip(chip);
++	u32 period_cycles, duty_cycles;
++	u32 load_value, match_value;
++	struct clk *fclk;
++	unsigned long clk_rate;
++	bool timer_active;
++
++	dev_dbg(chip->dev, "requested duty cycle: %d ns, period: %d ns\n",
++		duty_ns, period_ns);
++
++	mutex_lock(&omap->mutex);
++	if (duty_ns == pwm_get_duty_cycle(pwm) &&
++	    period_ns == pwm_get_period(pwm)) {
++		/* No change - don't cause any transients. */
++		mutex_unlock(&omap->mutex);
++		return 0;
++	}
++
++	fclk = omap->pdata->get_fclk(omap->dm_timer);
++	if (!fclk) {
++		dev_err(chip->dev, "invalid pmtimer fclk\n");
++		goto err_einval;
++	}
++
++	clk_rate = clk_get_rate(fclk);
++	if (!clk_rate) {
++		dev_err(chip->dev, "invalid pmtimer fclk rate\n");
++		goto err_einval;
++	}
++
++	dev_dbg(chip->dev, "clk rate: %luHz\n", clk_rate);
++
++	/*
++	 * Calculate the appropriate load and match values based on the
++	 * specified period and duty cycle. The load value determines the
++	 * period time and the match value determines the duty time.
++	 *
++	 * The period lasts for (DM_TIMER_MAX-load_value+1) clock cycles.
++	 * Similarly, the active time lasts (match_value-load_value+1) cycles.
++	 * The non-active time is the remainder: (DM_TIMER_MAX-match_value)
++	 * clock cycles.
++	 *
++	 * NOTE: It is required that: load_value <= match_value < DM_TIMER_MAX
++	 *
++	 * References:
++	 *   OMAP4430/60/70 TRM sections 22.2.4.10 and 22.2.4.11
++	 *   AM335x Sitara TRM sections 20.1.3.5 and 20.1.3.6
++	 */
++	period_cycles = pwm_omap_dmtimer_get_clock_cycles(clk_rate, period_ns);
++	duty_cycles = pwm_omap_dmtimer_get_clock_cycles(clk_rate, duty_ns);
++
++	if (period_cycles < 2) {
++		dev_info(chip->dev,
++			 "period %d ns too short for clock rate %lu Hz\n",
++			 period_ns, clk_rate);
++		goto err_einval;
++	}
++
++	if (duty_cycles < 1) {
++		dev_dbg(chip->dev,
++			"duty cycle %d ns is too short for clock rate %lu Hz\n",
++			duty_ns, clk_rate);
++		dev_dbg(chip->dev, "using minimum of 1 clock cycle\n");
++		duty_cycles = 1;
++	} else if (duty_cycles >= period_cycles) {
++		dev_dbg(chip->dev,
++			"duty cycle %d ns is too long for period %d ns at clock rate %lu Hz\n",
++			duty_ns, period_ns, clk_rate);
++		dev_dbg(chip->dev, "using maximum of 1 clock cycle less than period\n");
++		duty_cycles = period_cycles - 1;
++	}
++
++	dev_dbg(chip->dev, "effective duty cycle: %lld ns, period: %lld ns\n",
++		DIV_ROUND_CLOSEST_ULL((u64)NSEC_PER_SEC * duty_cycles,
++				      clk_rate),
++		DIV_ROUND_CLOSEST_ULL((u64)NSEC_PER_SEC * period_cycles,
++				      clk_rate));
++
++	load_value = (DM_TIMER_MAX - period_cycles) + 1;
++	match_value = load_value + duty_cycles - 1;
++
++	/*
++	 * We MUST stop the associated dual-mode timer before attempting to
++	 * write its registers, but calls to omap_dm_timer_start/stop must
++	 * be balanced so check if timer is active before calling timer_stop.
++	 */
++	timer_active = pm_runtime_active(&omap->dm_timer_pdev->dev);
++	if (timer_active)
++		omap->pdata->stop(omap->dm_timer);
++
++	omap->pdata->set_load(omap->dm_timer, true, load_value);
++	omap->pdata->set_match(omap->dm_timer, true, match_value);
++
++	dev_dbg(chip->dev, "load value: %#08x (%d), match value: %#08x (%d)\n",
++		load_value, load_value,	match_value, match_value);
++
++	omap->pdata->set_pwm(omap->dm_timer,
++			      pwm->polarity == PWM_POLARITY_INVERSED,
++			      true,
++			      PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE);
++
++	/* If config was called while timer was running it must be reenabled. */
++	if (timer_active)
++		pwm_omap_dmtimer_start(omap);
++
++	mutex_unlock(&omap->mutex);
++
++	return 0;
++
++err_einval:
++	mutex_unlock(&omap->mutex);
++
++	return -EINVAL;
++}
++
++static int pwm_omap_dmtimer_set_polarity(struct pwm_chip *chip,
++					 struct pwm_device *pwm,
++					 enum pwm_polarity polarity)
++{
++	struct pwm_omap_dmtimer_chip *omap = to_pwm_omap_dmtimer_chip(chip);
++
++	/*
++	 * PWM core will not call set_polarity while PWM is enabled so it's
++	 * safe to reconfigure the timer here without stopping it first.
++	 */
++	mutex_lock(&omap->mutex);
++	omap->pdata->set_pwm(omap->dm_timer,
++			      polarity == PWM_POLARITY_INVERSED,
++			      true,
++			      PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE);
++	mutex_unlock(&omap->mutex);
++
++	return 0;
++}
++
++static const struct pwm_ops pwm_omap_dmtimer_ops = {
++	.enable	= pwm_omap_dmtimer_enable,
++	.disable = pwm_omap_dmtimer_disable,
++	.config	= pwm_omap_dmtimer_config,
++	.set_polarity = pwm_omap_dmtimer_set_polarity,
++	.owner = THIS_MODULE,
++};
++
++static int pwm_omap_dmtimer_probe(struct platform_device *pdev)
++{
++	struct device_node *np = pdev->dev.of_node;
++	struct device_node *timer;
++	struct pwm_omap_dmtimer_chip *omap;
++	struct pwm_omap_dmtimer_pdata *pdata;
++	pwm_omap_dmtimer *dm_timer;
++	u32 prescaler;
++	int status;
++
++	pdata = dev_get_platdata(&pdev->dev);
++	if (!pdata) {
++		dev_err(&pdev->dev, "Missing dmtimer platform data\n");
++		return -EINVAL;
++	}
++
++	if (!pdata->request_by_node ||
++	    !pdata->free ||
++	    !pdata->enable ||
++	    !pdata->disable ||
++	    !pdata->get_fclk ||
++	    !pdata->start ||
++	    !pdata->stop ||
++	    !pdata->set_load ||
++	    !pdata->set_match ||
++	    !pdata->set_pwm ||
++	    !pdata->set_prescaler ||
++	    !pdata->write_counter) {
++		dev_err(&pdev->dev, "Incomplete dmtimer pdata structure\n");
++		return -EINVAL;
++	}
++
++	timer = of_parse_phandle(np, "ti,timers", 0);
++	if (!timer)
++		return -ENODEV;
++
++	if (!of_get_property(timer, "ti,timer-pwm", NULL)) {
++		dev_err(&pdev->dev, "Missing ti,timer-pwm capability\n");
++		return -ENODEV;
++	}
++
++	dm_timer = pdata->request_by_node(timer);
++	if (!dm_timer)
++		return -EPROBE_DEFER;
++
++	omap = devm_kzalloc(&pdev->dev, sizeof(*omap), GFP_KERNEL);
++	if (!omap) {
++		pdata->free(dm_timer);
++		return -ENOMEM;
++	}
++
++	omap->pdata = pdata;
++	omap->dm_timer = dm_timer;
++
++	omap->dm_timer_pdev = of_find_device_by_node(timer);
++	if (!omap->dm_timer_pdev) {
++		dev_err(&pdev->dev, "Unable to find timer pdev\n");
++		omap->pdata->free(dm_timer);
++		return -EINVAL;
++	}
++
++	/*
++	 * Ensure that the timer is stopped before we allow PWM core to call
++	 * pwm_enable.
++	 */
++	if (pm_runtime_active(&omap->dm_timer_pdev->dev))
++		omap->pdata->stop(omap->dm_timer);
++
++	/* setup dmtimer prescaler */
++	if (!of_property_read_u32(pdev->dev.of_node, "ti,prescaler",
++				&prescaler))
++		omap->pdata->set_prescaler(omap->dm_timer, prescaler);
++
++	omap->chip.dev = &pdev->dev;
++	omap->chip.ops = &pwm_omap_dmtimer_ops;
++	omap->chip.base = -1;
++	omap->chip.npwm = 1;
++	omap->chip.of_xlate = of_pwm_xlate_with_flags;
++	omap->chip.of_pwm_n_cells = 3;
++
++	mutex_init(&omap->mutex);
++
++	status = pwmchip_add(&omap->chip);
++	if (status < 0) {
++		dev_err(&pdev->dev, "failed to register PWM\n");
++		omap->pdata->free(omap->dm_timer);
++		return status;
++	}
++
++	platform_set_drvdata(pdev, omap);
++
++	return 0;
++}
++
++static int pwm_omap_dmtimer_remove(struct platform_device *pdev)
++{
++	struct pwm_omap_dmtimer_chip *omap = platform_get_drvdata(pdev);
++
++	if (pm_runtime_active(&omap->dm_timer_pdev->dev))
++		omap->pdata->stop(omap->dm_timer);
++
++	omap->pdata->free(omap->dm_timer);
++
++	mutex_destroy(&omap->mutex);
++
++	return pwmchip_remove(&omap->chip);
++}
++
++static const struct of_device_id pwm_omap_dmtimer_of_match[] = {
++	{.compatible = "ti,omap-dmtimer-pwm"},
++	{}
++};
++MODULE_DEVICE_TABLE(of, pwm_omap_dmtimer_of_match);
++
++static struct platform_driver pwm_omap_dmtimer_driver = {
++	.driver = {
++		.name = "omap-dmtimer-pwm",
++		.of_match_table = of_match_ptr(pwm_omap_dmtimer_of_match),
++	},
++	.probe = pwm_omap_dmtimer_probe,
++	.remove	= pwm_omap_dmtimer_remove,
++};
++module_platform_driver(pwm_omap_dmtimer_driver);
++
++MODULE_AUTHOR("Grant Erickson <marathon96@gmail.com>");
++MODULE_AUTHOR("NeilBrown <neilb@suse.de>");
++MODULE_AUTHOR("Neil Armstrong <narmstrong@baylibre.com>");
++MODULE_LICENSE("GPL v2");
++MODULE_DESCRIPTION("OMAP PWM Driver using Dual-mode Timers");
+diff -Naur a/include/linux/kernel.h b/include/linux/kernel.h
+--- a/include/linux/kernel.h	2014-02-07 00:05:20.000000000 +0100
++++ b/include/linux/kernel.h	2016-11-09 00:21:01.364470364 +0100
+@@ -92,6 +92,19 @@
+ )
+ 
+ /*
++ * Same as above but for u64 dividends. divisor must be a 32-bit
++ * number.
++ */
++#define DIV_ROUND_CLOSEST_ULL(x, divisor)(		\
++{							\
++	typeof(divisor) __d = divisor;			\
++	unsigned long long _tmp = (x) + (__d) / 2;	\
++	do_div(_tmp, __d);				\
++	_tmp;						\
++}							\
++)
++                                   
++/*
+  * Multiplies an integer by a fraction, while avoiding unnecessary
+  * overflow or loss of precision.
+  */
+diff -Naur a/include/linux/platform_data/pwm_omap_dmtimer.h b/include/linux/platform_data/pwm_omap_dmtimer.h
+--- a/include/linux/platform_data/pwm_omap_dmtimer.h	1970-01-01 01:00:00.000000000 +0100
++++ b/include/linux/platform_data/pwm_omap_dmtimer.h	2016-11-09 00:03:50.807305610 +0100
+@@ -0,0 +1,69 @@
++/*
++ * include/linux/platform_data/pwm_omap_dmtimer.h
++ *
++ * OMAP Dual-Mode Timer PWM platform data
++ *
++ * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
++ * Tarun Kanti DebBarma <tarun.kanti@ti.com>
++ * Thara Gopinath <thara@ti.com>
++ *
++ * Platform device conversion and hwmod support.
++ *
++ * Copyright (C) 2005 Nokia Corporation
++ * Author: Lauri Leukkunen <lauri.leukkunen@nokia.com>
++ * PWM and clock framework support by Timo Teras.
++ *
++ * This program is free software; you can redistribute it and/or modify it
++ * under the terms of the GNU General Public License as published by the
++ * Free Software Foundation; either version 2 of the License, or (at your
++ * option) any later version.
++ *
++ * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED
++ * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
++ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
++ * NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
++ * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
++ * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
++ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
++ *
++ * 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.,
++ * 675 Mass Ave, Cambridge, MA 02139, USA.
++ */
++
++#ifndef __PWM_OMAP_DMTIMER_PDATA_H
++#define __PWM_OMAP_DMTIMER_PDATA_H
++
++/* trigger types */
++#define PWM_OMAP_DMTIMER_TRIGGER_NONE			0x00
++#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW		0x01
++#define PWM_OMAP_DMTIMER_TRIGGER_OVERFLOW_AND_COMPARE	0x02
++
++struct omap_dm_timer;
++typedef struct omap_dm_timer pwm_omap_dmtimer;
++
++struct pwm_omap_dmtimer_pdata {
++	pwm_omap_dmtimer *(*request_by_node)(struct device_node *np);
++	int	(*free)(pwm_omap_dmtimer *timer);
++
++	void	(*enable)(pwm_omap_dmtimer *timer);
++	void	(*disable)(pwm_omap_dmtimer *timer);
++
++	struct clk *(*get_fclk)(pwm_omap_dmtimer *timer);
++
++	int	(*start)(pwm_omap_dmtimer *timer);
++	int	(*stop)(pwm_omap_dmtimer *timer);
++
++	int	(*set_load)(pwm_omap_dmtimer *timer, int autoreload,
++			unsigned int value);
++	int	(*set_match)(pwm_omap_dmtimer *timer, int enable,
++			unsigned int match);
++	int	(*set_pwm)(pwm_omap_dmtimer *timer, int def_on,
++			int toggle, int trigger);
++	int	(*set_prescaler)(pwm_omap_dmtimer *timer, int prescaler);
++
++	int	(*write_counter)(pwm_omap_dmtimer *timer, unsigned int value);
++};
++
++#endif /* __PWM_OMAP_DMTIMER_PDATA_H */

+ 114 - 0
board/GfA/Display001/linux/linux-013-omap-dmtimer-quirks.patch

@@ -0,0 +1,114 @@
+diff -Naur a/arch/arm/mach-omap2/board-generic.c b/arch/arm/mach-omap2/board-generic.c
+--- a/arch/arm/mach-omap2/board-generic.c	2014-02-07 00:05:20.000000000 +0100
++++ b/arch/arm/mach-omap2/board-generic.c	2016-11-16 23:18:42.813852792 +0100
+@@ -38,7 +38,8 @@
+ {
+ 	omap_sdrc_init(NULL, NULL);
+ 
+-	of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
++	pdata_quirks_init(omap_dt_match_table);
++	//of_platform_populate(NULL, omap_dt_match_table, NULL, NULL);
+ 
+ 	omapdss_init_of();
+ }
+diff -Naur a/arch/arm/mach-omap2/common.h b/arch/arm/mach-omap2/common.h
+--- a/arch/arm/mach-omap2/common.h	2014-02-07 00:05:20.000000000 +0100
++++ b/arch/arm/mach-omap2/common.h	2016-11-16 23:21:11.115162076 +0100
+@@ -321,6 +321,7 @@
+ 
+ #endif
+ 
++void pdata_quirks_init(const struct of_device_id *);
+ struct omap_sdrc_params;
+ extern void omap_sdrc_init(struct omap_sdrc_params *sdrc_cs0,
+ 				      struct omap_sdrc_params *sdrc_cs1);
+diff -Naur a/arch/arm/mach-omap2/Makefile b/arch/arm/mach-omap2/Makefile
+--- a/arch/arm/mach-omap2/Makefile	2014-02-07 00:05:20.000000000 +0100
++++ b/arch/arm/mach-omap2/Makefile	2016-11-16 22:30:30.400328507 +0100
+@@ -238,7 +238,7 @@
+ obj-$(CONFIG_SOC_OMAP2420)		+= msdi.o
+ 
+ # Specific board support
+-obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o
++obj-$(CONFIG_MACH_OMAP_GENERIC)		+= board-generic.o pdata-quirks.o
+ obj-$(CONFIG_MACH_OMAP_H4)		+= board-h4.o
+ obj-$(CONFIG_MACH_OMAP_2430SDP)		+= board-2430sdp.o
+ obj-$(CONFIG_MACH_OMAP3_BEAGLE)		+= board-omap3beagle.o
+diff -Naur a/arch/arm/mach-omap2/pdata-quirks.c b/arch/arm/mach-omap2/pdata-quirks.c
+--- a/arch/arm/mach-omap2/pdata-quirks.c	1970-01-01 01:00:00.000000000 +0100
++++ b/arch/arm/mach-omap2/pdata-quirks.c	2016-11-16 23:06:44.195509881 +0100
+@@ -0,0 +1,74 @@
++/*
++ * Legacy platform_data quirks
++ *
++ * Copyright (C) 2013 Texas Instruments
++ *
++ * This program is free software; you can redistribute it and/or modify
++ * it under the terms of the GNU General Public License version 2 as
++ * published by the Free Software Foundation.
++ */
++#include <linux/clk.h>
++#include <linux/davinci_emac.h>
++#include <linux/gpio.h>
++#include <linux/init.h>
++#include <linux/kernel.h>
++#include <linux/of_platform.h>
++#include <linux/ti_wilink_st.h>
++#include <linux/wl12xx.h>
++#include <linux/mmc/card.h>
++#include <linux/mmc/host.h>
++#include <linux/regulator/machine.h>
++#include <linux/regulator/fixed.h>
++
++#include <linux/platform_data/iommu-omap.h>
++#include <linux/platform_data/pwm_omap_dmtimer.h>
++#include <plat/dmtimer.h>
++
++#include "common.h"
++#include "common-board-devices.h"
++#include "control.h"
++#include "omap_device.h"
++#include "omap-secure.h"
++#include "soc.h"
++#include "hsmmc.h"
++
++
++struct pdata_init {
++	const char *compatible;
++	void (*fn)(void);
++};
++
++static struct of_dev_auxdata omap_auxdata_lookup[];
++
++/* Dual mode timer PWM callbacks platdata */
++#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
++struct pwm_omap_dmtimer_pdata pwm_dmtimer_pdata = {
++	.request_by_node = omap_dm_timer_request_by_node,
++	.free = omap_dm_timer_free,
++	.enable = omap_dm_timer_enable,
++	.disable = omap_dm_timer_disable,
++	.get_fclk = omap_dm_timer_get_fclk,
++	.start = omap_dm_timer_start,
++	.stop = omap_dm_timer_stop,
++	.set_load = omap_dm_timer_set_load,
++	.set_match = omap_dm_timer_set_match,
++	.set_pwm = omap_dm_timer_set_pwm,
++	.set_prescaler = omap_dm_timer_set_prescaler,
++	.write_counter = omap_dm_timer_write_counter,
++};
++#endif
++
++static struct of_dev_auxdata omap_auxdata_lookup[] __initdata = {
++#if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
++	OF_DEV_AUXDATA("ti,omap-dmtimer-pwm", 0, NULL, &pwm_dmtimer_pdata),
++#endif
++	{ /* sentinel */ },
++};
++
++void __init pdata_quirks_init(const struct of_device_id *omap_dt_match_table)
++{
++
++        of_platform_populate(NULL, omap_dt_match_table,
++                             omap_auxdata_lookup, NULL);
++}
++

+ 67 - 0
board/GfA/Display001/post-build.sh

@@ -0,0 +1,67 @@
+#!/bin/sh
+
+TARGETDIR=$1
+
+echo ">>>$TARGETDIR<<<"
+
+BUILD=`cat ../GfA/board/GfA/Display001/BUILD`
+BUILDDATE=`date +"%Y-%m-%d %H:%M"`
+BUILD=$((BUILD+1))
+echo $BUILD > ../GfA/board/GfA/Display001/BUILD
+
+chmod 600  ../GfA/board/GfA/Display001/rootfs/root/.ssh/id*
+cp -a ../GfA/board/GfA/Display001/rootfs/* $TARGETDIR/
+cp -v output/staging/usr/bin/locale $TARGETDIR/usr/bin/
+mkdir -p $TARGETDIR/usr/share/i18n
+cp -a output/staging/usr/share/i18n/* $TARGETDIR/usr/share/i18n
+
+# Dienste auf Manuell stellen
+SERVICE=S80dhcp-relay
+NSERVICE=M80dhcp-relay
+if [ -f $TARGETDIR/etc/init.d/$SERVICE ]
+then
+	rm $TARGETDIR/etc/init.d/$NSERVICE
+	mv $TARGETDIR/etc/init.d/$SERVICE $TARGETDIR/etc/init.d/$NSERVICE
+fi
+
+SERVICE=S80dhcp-server
+NSERVICE=M80dhcp-server
+if [ -f $TARGETDIR/etc/init.d/$SERVICE ]
+then
+	rm $TARGETDIR/etc/init.d/$NSERVICE
+	mv $TARGETDIR/etc/init.d/$SERVICE $TARGETDIR/etc/init.d/$NSERVICE
+fi
+
+SERVICE=S50postgresql
+NSERVICE=M50postgresql
+if [ -f $TARGETDIR/etc/init.d/$SERVICE ]
+then
+	rm $TARGETDIR/etc/init.d/$NSERVICE
+	mv $TARGETDIR/etc/init.d/$SERVICE $TARGETDIR/etc/init.d/$NSERVICE
+fi
+
+SERVICE=S97mysqld
+NSERVICE=M97mysqld
+if [ -f $TARGETDIR/etc/init.d/$SERVICE ]
+then
+	rm $TARGETDIR/etc/init.d/$NSERVICE
+	mv $TARGETDIR/etc/init.d/$SERVICE $TARGETDIR/etc/init.d/$NSERVICE
+fi
+#------------------------------------
+#-- fonts kopieren, muss noch geändert werden dass qt mit fontconfig funktioniert
+mkdir -p $TARGETDIR/usr/lib/fonts
+cp $TARGETDIR/usr/share/fonts/dejavu/* $TARGETDIR/usr/lib/fonts
+cp $TARGETDIR/usr/share/fonts/liberation/* $TARGETDIR/usr/lib/fonts
+#------------------------------------
+#-- links für EGL bibliotheken herstellen
+WRKDIR=`pwd`
+cd $TARGETDIR/usr/lib
+
+rm ./libEGL.so.1
+rm ./libGLESv2.so.2
+ln -s libEGL.so ./libEGL.so.1
+ln -s libGLESv2.so ./libGLESv2.so.2
+
+cd $WRKDIR
+#------------------------------------
+echo "GfA-Display001 Rel 1.0 Build $BUILD ($BUILDDATE)" > $TARGETDIR/etc/BUILD

+ 34 - 0
board/GfA/Display001/rootfs/etc/dhcp/dhcpd.conf

@@ -0,0 +1,34 @@
+#
+# Sample configuration file for ISC dhcpd for Debian
+#
+# $Id: dhcpd.conf,v 1.1.1.1 2002/05/21 00:07:44 peloy Exp $
+#
+
+# The ddns-updates-style parameter controls whether or not the server will
+# attempt to do a DNS update when a lease is confirmed. We default to the
+# behavior of the version 2 packages ('none', since DHCP v2 didn't
+# have support for DDNS.)
+ddns-update-style none;
+
+# option definitions common to all supported networks...
+option domain-name "example.org";
+option domain-name-servers ns1.example.org, ns2.example.org;
+
+default-lease-time 600;
+max-lease-time 7200;
+
+# If this DHCP server is the official DHCP server for the local
+# network, the authoritative directive should be uncommented.
+authoritative;
+
+# Use this to send dhcp log messages to a different log file (you also
+# have to hack syslog.conf to complete the redirection).
+# log-facility local7;
+
+subnet 192.168.7.0 netmask 255.255.255.252 {
+  range 192.168.7.1 192.168.7.1;
+}
+
+subnet 192.168.8.0 netmask 255.255.255.0 {
+  range 192.168.8.100 192.168.8.110;
+}

+ 2 - 0
board/GfA/Display001/rootfs/etc/fw_env.config

@@ -0,0 +1,2 @@
+/dev/mmcblk1boot1 	0x00000	0x20000	0x20000
+/dev/mmcblk1boot1	0x20000	0x20000	0x20000

+ 33 - 0
board/GfA/Display001/rootfs/etc/hostapd.conf

@@ -0,0 +1,33 @@
+interface=wlan1
+driver=nl80211
+channel=11
+hw_mode=g
+preamble=1
+dtim_period=2
+beacon_int=100
+logger_syslog=-1
+logger_syslog_level=2
+logger_stdout=-1
+logger_stdout_level=2
+dump_file=/tmp/hostapd.dump
+ctrl_interface=/var/run/hostapd
+ctrl_interface_group=0
+supported_rates=60 90 120 180 240 360 480 540
+basic_rates=60 90 120 180 240
+ssid=GfA-DISP001-
+max_num_sta=5
+macaddr_acl=0
+auth_algs=3
+ieee80211d=0
+uapsd_advertisement_enabled=1
+wep_rekey_period=0
+own_ip_addr=127.0.0.1
+wpa_group_rekey=0
+wpa_strict_rekey=0
+wpa_gmk_rekey=0
+wpa_ptk_rekey=0
+#ap_table_max_size=255
+#ap_table_expiration_time=60
+eap_server=1
+disassoc_low_ack=1
+ap_max_inactivity=4294967295

+ 28 - 0
board/GfA/Display001/rootfs/etc/init.d/M98usb_g_ether

@@ -0,0 +1,28 @@
+#!/bin/sh
+#
+# Start the usb gadget network....
+#
+
+case "$1" in
+  start)
+ 	echo "Starting usb g_ether network..."
+	modprobe g_ether
+	/sbin/ifdown usb0
+	/sbin/ifup usb0
+	udhcpd
+	;;
+  stop)
+	echo -n "Stopping usb g_ether network..."
+	rmmod g_ether
+	killall udhcpd
+	;;
+  restart|reload)
+	"$0" stop
+	"$0" start
+	;;
+  *)
+	echo "Usage: $0 {start|stop|restart}"
+	exit 1
+esac
+
+exit $?

+ 24 - 0
board/GfA/Display001/rootfs/etc/init.d/M99tincd

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Start tincd
+#
+
+case "$1" in
+  start)
+        echo -e "Starting tincd vpn ...\n"
+        tincd -n gfa
+        ;;
+  stop)
+        echo -e "Stopping tincd vpn ...\n"
+        tincd -n gfa -k
+        ;;
+  restart|reload)
+        "$0" stop
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?

+ 26 - 0
board/GfA/Display001/rootfs/etc/init.d/S11crond

@@ -0,0 +1,26 @@
+#!/bin/sh
+#
+# Start crond
+#
+
+case "$1" in
+  start)
+        echo -e "Starting crond ...\n"
+    test -x /var/spool/cron || ln -s /var/cron /var/spool/cron
+        crond
+        ;;
+  stop)
+        echo -e "Stopping crond ...\n"
+        killall crond
+        ;;
+  restart|reload)
+        "$0" stop
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?
+

+ 3 - 0
board/GfA/Display001/rootfs/etc/init.d/S98_tc_cap

@@ -0,0 +1,3 @@
+#!/bin/sh
+modprobe edt-ft5x06
+echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty0

+ 24 - 0
board/GfA/Display001/rootfs/etc/init.d/S99fbvncserver

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Start fbvncserver
+#
+
+case "$1" in
+  start)
+        echo -e "Starting fbvncserevr ...\n"
+        fbvncserver -t /dev/input/event1 -k /dev/null -P /etc/vncpwd &
+        ;;
+  stop)
+        echo -e "Stopping fbvncserver ...\n"
+        killall fbvncserver
+        ;;
+  restart|reload)
+        "$0" stop
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?

+ 24 - 0
board/GfA/Display001/rootfs/etc/init.d/S99keymap

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Set keymap
+#
+
+case "$1" in
+  start)
+        echo "Starting keymap ..."
+        loadkmap < /etc/keymaps/de-latin1-nodeadkeys.bmap
+        echo -e "\033[?25l\033[9;0]\033[14;0]" > /dev/tty1
+        ;;
+  stop)
+        echo -n "Stopping keymap ..."
+        ;;
+  restart|reload)
+        "$0" stop
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?

+ 24 - 0
board/GfA/Display001/rootfs/etc/init.d/S99pruuart

@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# Start fbvncserver
+#
+
+case "$1" in
+  start)
+        echo -e "Starting pruuart ...\n"
+        screen -dmS pruuart /var/GfA/Pruuart 19200 N
+        ;;
+  stop)
+        echo -e "Stopping pruuart ...\n"
+        killall Pruuart
+        ;;
+  restart|reload)
+        "$0" stop
+        "$0" start
+        ;;
+  *)
+        echo "Usage: $0 {start|stop|restart}"
+        exit 1
+esac
+
+exit $?

+ 1 - 0
board/GfA/Display001/rootfs/etc/init.d/gsmMuxd

@@ -0,0 +1 @@
+./gsmMuxd_PH8Ser

+ 29 - 0
board/GfA/Display001/rootfs/etc/init.d/gsmMuxd_PH8Ser

@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+
+case "$1" in
+	start)
+		/root/gfa_spi -o 0x40025040 0x00000010
+		/bin/sleep 4
+		/root/gfa_spi -o 0x40025040 0x00000000
+		/bin/sleep 1
+		/root/gfa_spi -o 0x40027200 0x00000080
+		/bin/sleep 2
+		/root/gfa_spi -o 0x40027200 0x00000000
+		/bin/sleep 5	
+		/var/GfA/gsmMuxd_Ser -p /dev/ttyO1 -m ph8 -B 921600 -b 115200 -r -w -s /dev/mux /dev/ptmx /dev/ptmx /dev/ptmx
+		;;
+	stop)
+		killall gsmMuxd_Ser
+		sleep 3
+		;;
+
+	status)
+		ps -e | grep gsmMuxd_Ser
+		;;
+	*)
+		echo "Usage: $0 {start|stop|status}"
+		exit 1
+		;;
+esac
+exit 0

+ 29 - 0
board/GfA/Display001/rootfs/etc/init.d/gsmMuxd_TC65i

@@ -0,0 +1,29 @@
+#!/bin/sh
+#
+
+case "$1" in
+	start)
+		/root/gfa_spi -o 0x40025040 0x00000010
+		/bin/sleep 4
+		/root/gfa_spi -o 0x40025040 0x00000000
+		/bin/sleep 1
+		/root/gfa_spi -o 0x40027200 0x00000080
+		/bin/sleep 2
+		/root/gfa_spi -o 0x40027200 0x00000000
+		/bin/sleep 5	
+		/var/GfA/gsmMuxd_Ser -p /dev/ttyO1 -m mc35 -B 460800 -b 115200 -r -w -s /dev/mux /dev/ptmx /dev/ptmx /dev/ptmx
+		;;
+	stop)
+		killall gsmMuxd_Ser
+		sleep 3
+		;;
+
+	status)
+		ps -e | grep gsmMuxd_Ser
+		;;
+	*)
+		echo "Usage: $0 {start|stop|status}"
+		exit 1
+		;;
+esac
+exit 0

+ 55 - 0
board/GfA/Display001/rootfs/etc/init.d/rcS

@@ -0,0 +1,55 @@
+#!/bin/sh
+
+# Start all init scripts in /etc/init.d
+# executing them in numerical order.
+#
+
+# --- set ddr3ram controller queue
+devmem2 0x4c000054 w 0x00FFFF10
+# --- get spi tiva rtc
+/root/gfa_spi -s
+
+if [ -c "/dev/net/tun" ]
+	then echo "."
+	else
+	modprobe tun
+fi	
+
+if [ -c "/dev/ppp" ]
+	then echo "."
+	else
+	mknod /dev/ppp c 108 0
+fi	
+
+for i in /etc/init.d/S??* ;do
+
+     # Ignore dangling symlinks (if any).
+     [ ! -f "$i" ] && continue
+
+     case "$i" in
+	*.sh)
+	    # Source shell script for speed.
+	    (
+		trap - INT QUIT TSTP
+		set start
+		. $i
+	    )
+	    ;;
+	*)
+	    # No sh extension, so fork subprocess.
+	    $i start
+	    ;;
+    esac
+done
+
+rdate time.memod.de
+
+BOOTCNT=`cat /etc/BOOTCNT`
+BOOTCNT=$((BOOTCNT+1))
+echo $BOOTCNT > /etc/BOOTCNT
+
+echo "$BOOTCNT ::"`date`" -- "`/root/gfa_spi -u` >> /etc/BOOTTIME 
+
+#-- pwm beeper --- toDo fix kernel dependencies, of error message
+modprobe pwm_beeper
+beep -f 4000 -l 100 -d 200 -n -f 10 -l 50 -n -f 5000 -l 100

+ 39 - 0
board/GfA/Display001/rootfs/etc/inittab

@@ -0,0 +1,39 @@
+# /etc/inittab
+#
+# Copyright (C) 2001 Erik Andersen <andersen@codepoet.org>
+#
+# Note: BusyBox init doesn't support runlevels.  The runlevels field is
+# completely ignored by BusyBox init. If you want runlevels, use
+# sysvinit.
+#
+# Format for each entry: <id>:<runlevels>:<action>:<process>
+#
+# id        == tty to run on, or empty for /dev/console
+# runlevels == ignored
+# action    == one of sysinit, respawn, askfirst, wait, and once
+# process   == program to run
+
+# Startup the system
+null::sysinit:/bin/mount -t proc proc /proc
+null::sysinit:/bin/mount -o remount,rw / # REMOUNT_ROOTFS_RW
+null::sysinit:/bin/mkdir -p /dev/pts
+null::sysinit:/bin/mkdir -p /dev/shm
+null::sysinit:/bin/mount -a
+null::sysinit:/bin/hostname -F /etc/hostname
+# now run any rc scripts
+::sysinit:/etc/init.d/rcS
+
+# Put a getty on the serial port
+ttyO0::respawn:/sbin/getty -L  ttyO0 115200 linux # GENERIC_SERIAL
+#tty1::respawn:/root/startapp.sh
+tty2::respawn:/sbin/getty -L  tty2 115200 linux
+tty3::respawn:/sbin/getty -L  tty3 115200 linux
+tty8::respawn:/var/GfA/Display_GSM 
+# Stuff to do for the 3-finger salute
+::ctrlaltdel:/sbin/reboot
+
+# Stuff to do before rebooting
+null::shutdown:/etc/init.d/rcK
+null::shutdown:/bin/umount -a -r
+null::shutdown:/sbin/swapoff -a
+

+ 1145 - 0
board/GfA/Display001/rootfs/etc/joe/joerc

@@ -0,0 +1,1145 @@
+                         Initialization file for JOE
+                                Standard Joe
+
+ JOE looks for this file in:
+	1 - $HOME/.joerc
+	2 - /etc/joe/joerc
+
+ This file can include other files by placing the following include command
+ in the first column:
+
+ :include filename
+
+ FIRST SECTION: Default global options (these options can also be specified
+ on the command line.  Also the NOXON, LINES, COLUMNS, DOPADDING and BAUD
+ options can be specified in environment variables):
+
+ Override colors of lexical classes specified in syntax files:
+ Put each color override you want in the first column.
+
+ Valid colors:
+   bold inverse blink dim underline
+   white cyan magenta blue yellow green red black
+   bg_white bg_cyan bg_magenta bg_blue bg_yellow bg_green bg_red bg_black
+
+ Other colors are available: see syntax/c.jsf for documentation.
+
+ Override all instances of class Idle:
+   =Idle red
+
+ Override Idle only for c syntax file:
+   =c.Idle red
+
+ The following list is from c.jsf.  Look at other syntax files for more classes.
+
+ =Idle
+ =Bad        bold red
+ =Preproc    blue
+ =Define     bold blue
+ =IncLocal   cyan
+ =IncSystem  bold cyan
+ =Constant   cyan
+ =Escape     bold cyan
+ =Type       bold
+ =Keyword    bold
+ =CppKeyword bold
+ =Brace      magenta
+ =Control
+
+ Put each option you want set in the first column:
+
+ -option	Sets the option
+ --option	Clears the option
+
+ -help_is_utf8	Set if help text is in UTF-8 format.  Leave clear if it's a raw 8-bit format.
+
+ -mid		Cursor is recentered when scrolling is necessary
+
+ -marking	Text between ^KB and cursor is highlighted (use with -lightoff)
+
+ -asis		Characters 128 - 255 shown as-is
+
+ -force		Force final newline when files are saved
+
+ -nolocks	If you don't want file locks to be used
+
+ -nomodcheck	Disable periodic checking of disk file newer than buffer
+		(this checking happens on save even with this option).
+
+ -nocurdir	Do not prompt with current directory
+
+-nobackups	If you don't want backup files to be created
+
+ -break_hardlinks
+		Delete file before writing, to break hard links
+		(but don't break symbolic links).
+
+ -break_links
+		Delete file before writing, to break hard links
+		and symbolic links.
+
+
+ -lightoff	Turn off highlighting after block copy or move
+
+ -exask		^KX always confirms file name
+
+ -beep		Beep on errors and when cursor goes past extremes
+
+ -nosta		Disable top-most status line
+
+ -keepup	%k and %c status line escape sequences updated frequently
+
+ -pg nnn	No. lines to keep for PgUp/PgDn
+
+ -undo_keep nnn	Number of undo records to keep.  0 for infinite.
+
+ -csmode	^KF after a pervious search does a ^L instead
+
+ -backpath path
+		Directory to store backup files (one space between
+		'backpath' and the 'path', no trailing spaces or comments
+		after the path).
+
+ -floatmouse	Clicking past end of line moves the cursor past the end
+ 
+ -rtbutton	Use the right mouse button for action, instead of the left
+
+ -nonotice	Disable copyright notice
+
+ -noxon		Attempt to turn off ^S/^Q processing
+
+ -orphan	Put extra files given on command line in orphaned buffers
+		instead of in windows
+
+ -dopadding	Output pad characters (for when there is no tty handshaking)
+
+ -lines nnn	Set no. screen lines
+
+ -baud nnn	Set baud rate for terminal optimizations
+
+ -columns nnn	Set no. screen columns
+
+ -help		Start with help on
+
+ -skiptop nnn	Don't use top nnn lines of the screen
+
+-notite         Don't send terminal initialization and termination strings:
+                prevents restoration of screen on exit.
+
+ -usetabs       Use tabs to help optimize screen update.
+
+-assume_color	Assume terminal has ANSI color support even if termcap/terminfo entry
+		says that it doesn't.  This only applies if the terminal otherwise
+		looks like an ANSI terminal (support bold and capability starts with
+		ESC [).
+
+-assume_256color
+		Assume terminal has xterm 256 color support (ESC [ 38 ; 5 ; NNN m and
+                ESC [ 48 ; 5 ; NNN m).
+
+-guess_non_utf8	Allow guess of non-UTF-8 file encoding in a UTF-8 locale.
+
+ -guess_utf8	Allow guess of UTF-8 file encoding in non-UTF-8 locale.
+
+-guess_crlf     Automatically detect MS-DOS files and set -crlf appropriately
+
+-guess_indent	Guess indent character (tab or space).
+
+-menu_above	Position menu/list above prompt when enabled.  Otherwise position
+		below prompt.
+
+-transpose	Transpose rows with columns in all menus.
+
+ -menu_explorer	Stay in menu system when a directory is selected (otherwise
+                directory is added to path and menu is closed).
+
+ -menu_jump	Jump into file selection menu when tab is hit (otherwise, menu
+		comes up, but cursor stays in file name prompt).
+
+ -icase         Search is case insensitive by default.
+
+ -wrap          Search wraps
+
+ -autoswap	Swap markb with markk when necessary
+
+-joe_state     Use ~/.joe_state file
+
+ -mouse		Enable xterm mouse support.  When enabled, left-click will
+		position the cursor and left-click-drag will select blocks
+		For normal xterm cut and paste, hold the shift key down.
+
+ -joexterm	If you are using XTerm version 212 or higher, and if it was
+		configured with --enable-paste64, set this flag: it allows
+		mouse cut & paste to work properly (text selected with the
+		mouse can be pasted into other application, and middle
+		button clicks paste into JOE).
+
+ -square	Rectangular block mode
+
+ -text_color color
+		Set color for text.
+ -status_color color
+		Set color for status bar.
+ -help_color color
+		Set color for help.
+ -menu_color color
+		Set color for menus.
+ -prompt_color color
+		Set color for prompts.
+ -msg_color color
+		Set color for messages.
+
+		For example: -text_color bg_blue+white
+		Sets the background color to blue and foreground color to white.
+
+-restore	Restore previous cursor position when files are opened
+
+-search_prompting
+		Search prompts with previous search request.
+
+ Status line definition strings.  -lmsg defines the left-justified string and
+ -rmsg defines the right-justified string.  The first character of -rmsg is
+ the background fill character.  The following escape sequences can be used
+ in these strings:
+
+  %t  12 hour time
+  %u  24 hour time
+  %T  O for overtype mode, I for insert mode
+  %W  W if wordwrap is enabled
+  %I  A if autoindent is enabled
+  %X  Rectangle mode indicator
+  %n  File name
+  %m  '(Modified)' if file has been changed
+  %*  '*' if file has been changed
+  %R  Read-only indicator
+  %r  Row (line) number
+  %c  Column number
+  %o  Byte offset into file
+  %O  Byte offset into file in hex
+  %a  Ascii value of character under cursor
+  %A  Ascii value of character under cursor in hex
+  %p  Percent of file cursor is at
+  %l  No. lines in file
+  %k  Entered prefix keys
+  %S  '*SHELL*' if there is a shell running in window
+  %M  Macro recording message
+  %y  Syntax
+  %x  Context (first non-indented line going backwards)
+  %dd day
+  %dm month
+  %dY year
+  %Ename%  value of environment variable
+  %Tname%  value of option (ON or OFF for boolean options)
+
+ These formatting escape sequences may also be given:
+ 
+  \i  Inverse
+  \u  Underline
+  \b  Bold
+  \d  Dim
+  \f  Blink
+
+-lmsg \i%k%T%W%I%X %n %m%y%R %M %x
+-rmsg  %S Row %r Col %c %t  Ctrl-K H for help
+
+ SECOND SECTION: File name dependant local option settings:
+
+ Each line with '*' in the first column indicates the modes which should be
+ set for files whose name matches the regular expression.  If more than one
+ regular expression matches the file name, then the last matching one is
+ chosen.
+
+ A file contents regular expression may also be specified on a separate line
+ with '+regex'.  If this regular expresssion is given, then both the file name
+ regex and the file contents regex must match for the options to apply.
+
+ Here are the modes which can be set:
+
+	-cpara >#!;*/%
+				Characters which can indent paragraphs.
+
+	-encoding name
+				Set file coding (for example: utf-8, iso-8859-15)
+
+	-syntax name
+				Specify syntax (syntax file called
+				'name.jsf' will be loaded)
+
+	-hex			Hex editor mode
+
+	-highlight		Enable highlighting
+
+	-smarthome		Home key first moves cursor to beginning of line,
+				then if hit again, to first non-blank character.
+
+	-indentfirst		Smart home goes to first non-blank character first,
+				instead of going the beginning of line first.
+
+	-smartbacks		Backspace key deletes 'istep' number of
+				'indentc's if cursor is at first non-space
+				character.
+
+	-tab nnn		Tab width
+
+	-indentc nnn		Indentation character (32 for space, 9 for tab)
+
+	-istep nnn		Number of indentation columns
+
+	-spaces			TAB inserts spaces instead of tabs.
+
+	-purify			Fix indentation if necessary for rindent, lindent and backs
+				(for example if indentation uses a mix of tabs and spaces,
+				and indentc is space, indentation will be converted to all
+				spaces).
+
+	-crlf			File uses CR-LF at ends of lines
+
+	-wordwrap		Wordwrap
+
+	-nobackup		If you don't want backup file to be created
+
+	-autoindent		Auto indent
+
+	-overwrite		Overtype mode
+
+        -picture                Picture mode (right arrow can go past end of lines)
+
+	-lmargin nnn		Left margin
+
+	-rmargin nnn		Right margin
+
+	-flowed			Put one space after intermediate paragraph lines
+				for support of flowed text.
+
+
+	-french			One space after '.', '?' and '!' for wordwrap
+				and paragraph reformat instead of two.  Joe
+				does not change the spacing you give, but
+				sometimes it must put spacing in itself.  This
+				selects how much is inserted.
+
+	-linums			Enable line numbers on each line
+
+	-rdonly			File is read-only
+
+	-keymap name
+				Keymap to use if not 'main'
+
+	-lmsg			Status line definition strings-
+	-rmsg			see previous section for more info.
+
+	-mfirst macro
+				Macro to execute on first modification
+	-mnew macro
+				Macro to execute when new files are loaded
+	-mold macro
+				Macro to execute when existing files are loaded
+	-msnew macro
+				Macro to execute when new files are saved
+	-msold macro
+				Macro to execute when existing files are saved
+
+	Macros for the above options are in the same format as in the key
+	binding section below- but without the key name strings.
+
+	These define the language syntax for ^G (goto matching delimiter):
+
+	-single_quoted		Text between '  ' should be ignored (this is
+				not good for regular text since ' is
+				normally used alone as an apostrophe)
+
+	-no_double_quoted	Text between " " should not be ignored (useful
+				for TeX).
+
+	-c_comment		Text between /* */ should be ignored
+
+	-cpp_comment		Text after // should be ignored
+
+	-pound_comment		Text after # should be ignored
+
+	-vhdl_comment		Text after -- should be ignored
+
+	-semi_comment		Text after ; should be ignored
+
+	-text_delimiters begin=end:if=elif=else=endif
+
+				Define word delimiters
+
+ Default local options
+-highlight
+-istep 2
+
+ Perforce macro: use this macro (put in first column) to have joe "p4 edit"
+ a file you're about to change.
+
+ -mfirst if,"rdonly && joe(sys,\"p4 edit \",name,rtn)",then,mode,"o",msg,"executed \"p4 edit ",name,"\"",rtn,endif
+
+ -mfirst if,"rdonly && joe(sys,\"p4 edit \",name,rtn)",then,reload,msg,"executed \"p4 edit ",name,"\"",rtn,endif
+
+ File type table is now in a separate file.  You can copy this file to ~/.joe and customize it.
+
+:include ftyperc
+
+ SECOND and 1/2 SECTION: Option menu layout
+
+	:defmenu name	Defines a menu.
+
+	macro string comment
+			A menu entry.  Macro is any JOE macro- see "Macros:"
+			below. String is the label to be used for the macro
+			in the menu.  It is in the same format as the -lmsg
+			and -rmsg options above.
+
+			Two whitespace characters in a row begins a comment.
+			Use '% ' for a leading space in the string.
+
+:defmenu root
+mode,"overwrite",rtn	T Overtype %Zoverwrite%
+mode,"hex",rtn	% % Hex edit mode
+mode,"autoindent",rtn	I Autoindent %Zautoindent%
+mode,"wordwrap",rtn	W Word wrap %Zwordwrap%
+mode,"tab",rtn	D Tab width %Ztab%
+mode,"lmargin",rtn	L Left margin %Zlmargin%
+mode,"rmargin",rtn	R Right margin %Zrmargin%
+mode,"square",rtn	X Rectangle mode %Zsquare%
+mode,"indentc",rtn	% % Indent char %Zindentc%
+mode,"istep",rtn	% % Indent step %Zistep%
+mode,"highlight",rtn	H Highlighting %Zhighlight%
+mode,"crlf",rtn	Z CR-LF (MS-DOS) %Zcrlf%
+mode,"linums",rtn	N Line numbers %Zlinums%
+mode,"beep",rtn	B Beep %Zbeep%
+mode,"rdonly",rtn	O Read only %Zrdonly%
+mode,"syntax",rtn	Y Syntax
+mode,"encoding",rtn	E Encoding
+mode,"asis",rtn	% % Meta chars as-is
+mode,"language",rtn	V Language
+mode,"picture",rtn	P picture %Zpicture%
+menu,"more-options",rtn	  % % More options...
+
+:defmenu more-options
+menu,"^G",rtn	% % ^G options
+menu,"search",rtn	% % search options
+menu,"paragraph",rtn	% % paragraph options
+menu,"file",rtn	% % file options
+menu,"menu",rtn	% % menu options
+menu,"global",rtn	% % global options
+menu,"cursor",rtn	% % cursor options
+menu,"marking",rtn	% % marking options
+menu,"tab",rtn	% % tab/indent options
+
+:defmenu menu
+mode,"menu_explorer",rtn	% % Menu explorer %Zmenu_explorer%
+mode,"menu_above",rtn	% % Menu position %Zmenu_above%
+mode,"menu_jump",rtn	% % Jump into menu %Zmenu_jump%
+mode,"transpose",rtn	% % Transpose menus %Ztranspose%
+
+:defmenu ^G
+mode,"single_quoted",rtn	% % ^G ignores '...' %Zsingle_quoted%
+mode,"no_double_quoted",rtn	% % ^G no ignore "..." %Zno_double_quoted%
+mode,"c_comment",rtn	% % ^G ignores /*...*/ %Zc_comment%
+mode,"cpp_comment",rtn	% % ^G ignores //... %Zcpp_comment%
+mode,"pound_comment",rtn	% % ^G ignores #... %Zpound_comment%
+mode,"vhdl_comment",rtn	% % ^G ignores --... %Zvhdl_comment%
+mode,"semi_comment",rtn	% % ^G ignores ;... %Zsemi_comment%
+mode,"tex_comment",rtn % % ^G ignores %... %Ztex_comment%
+mode,"text_delimiters",rtn % % Text delimiters %Ztext_delimiters%
+
+:defmenu search
+mode,"icase",rtn	% % Case insensitivity %Zicase%
+mode,"wrap",rtn	% % Search wraps %Zwrap%
+mode,"search_prompting",rtn	% % Search prompting %Zsearch_prompting%
+mode,"csmode",rtn	% % Continued search %Zcsmode%
+
+:defmenu paragraph
+mode,"french",rtn	% % French spacing %Zfrench%
+mode,"flowed",rtn	% % Flowed text %Zflowed%
+mode,"cpara",rtn	% % Paragraph indent chars %Zcpara%
+
+:defmenu file
+mode,"restore",rtn	% % Restore cursor %Zrestore%
+mode,"guess_crlf",rtn	% % Auto detect CR-LF %Zguess_crlf%
+mode,"guess_indent",rtn	% % Guess indent %Zguess_indent%
+mode,"guess_non_utf8",rtn	% % Guess non-UTF-8 %Zguess_non_utf8%
+mode,"guess_utf8",rtn	% % Guess UTF-8 %Zguess_utf8%
+mode,"force",rtn	% % Force last NL %Zforce%
+mode,"nobackup",rtn	% % No backup %Znobackup%
+
+:defmenu global
+mode,"nolocks",rtn	% % Disable locks %Znolocks%
+mode,"nobackups",rtn	% % Disable backups %Znobackups%
+mode,"nomodcheck",rtn	% % Disable mtime check %Znomodcheck%
+mode,"nocurdir",rtn	% % Disable current dir %Znocurdir%
+mode,"exask",rtn	% % Exit ask %Zexask%
+mode,"nosta",rtn	% % Disable status line %Znosta%
+mode,"keepup",rtn	% % Fast status line %Zkeepup%
+mode,"break_hardlinks",rtn	% % Break hard links %Zbreak_hardlinks%
+mode,"break_links",rtn	% % Break links %Zbreak_links%
+mode,"joe_state",rtn	% % Joe_state file %Zjoe_state%
+mode,"undo_keep",rtn	% % No. undo records %Zundo_keep%
+mode,"backpath",rtn	% % Path to backup files %Zbackpath%
+
+:defmenu cursor
+mode,"pg",rtn	% % No. PgUp/PgDn lines %Zpg%
+mode,"mid",rtn	C Center on scroll %Zmid%
+mode,"floatmouse",rtn	% % Click past end %Zfloatmouse%
+mode,"rtbutton",rtn	% % Right button %Zrtbutton%
+
+:defmenu marking
+mode,"autoswap",rtn	% % Autoswap mode %Zautoswap%
+mode,"marking",rtn	% % Marking %Zmarking%
+mode,"lightoff",rtn	% % Auto unmask %Zlightoff%
+
+:defmenu tab
+mode,"smarthome",rtn	% % Smart home key %Zsmarthome%
+mode,"smartbacks",rtn	% % Smart backspace %Zsmartbacks%
+mode,"indentfirst",rtn	% % To indent first %Zindentfirst%
+mode,"purify",rtn	% % Clean up indents %Zpurify%
+mode,"spaces",rtn	% % No tabs %Zspaces%
+
+ THIRD SECTION: Named help screens:
+
+ Use \i to turn on/off inverse video
+ Use \u to turn on/off underline
+ Use \b to turn on/off bold
+ Use \d to turn on/off dim
+ Use \f to turn on/off flash
+
+ Use \| to insert a spring: all springs in a given line are set to the same
+ width such that the entire line exactly fits in the width of the screen (if
+ it's not an exact multiple so that there are N spaces remaining, the
+ rightmost N springs each get one extra space).  Hint: if you want vertical
+ alignment, each line should have the same number of springs.
+
+ Use the '-help_is_utf8' global option to allow UTF-8 sequences in the help
+ text.  Otherwise, the locale 8-bit character set is assumed.
+
+{Basic
+\i   Help Screen    \|turn off with ^KH    more help with ESC . (^[.)              \i
+\i \i\|\uCURSOR\u           \|\uGO TO\u            \|\uBLOCK\u      \|\uDELETE\u   \|\uMISC\u         \|\uEXIT\u      \|\i \i
+\i \i\|^B left ^F right \|^U  prev. screen \|^KB begin  \|^D char. \|^KJ reformat \|^KX save  \|\i \i
+\i \i\|^P up   ^N down  \|^V  next screen  \|^KK end    \|^Y line  \|^KA center   \|^C  abort \|\i \i
+\i \i\|^Z previous word \|^A  beg. of line \|^KM move   \|^W >word \|^T  options  \|^KZ shell \|\i \i
+\i \i\|^X next word     \|^E  end of line  \|^KC copy   \|^O word< \|^R  refresh  \|\uFILE\u      \|\i \i
+\i \i\|\uSEARCH\u           \|^KU top of file  \|^KW file   \|^J >line \|\uSPELL\u        \|^KE edit  \|\i \i
+\i \i\|^KF find text    \|^KV end of file  \|^KY delete \|^_ undo  \|^[N word     \|^KR insert\|\i \i
+\i \i\|^L  find next    \|^KL to line No.  \|^K/ filter \|^^ redo  \|^[L file     \|^KD save  \|\i \i
+}
+
+{Windows
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i\|^KO Split the window in half           \|^KE Load file into window             \|\i \i
+\i \i\|^KG Make current window bigger         \|^KT Make current window smaller       \|\i \i
+\i \i\|^KN Go to the window below             \|^KP Go to the window above            \|\i \i
+\i \i\|^[V Switch to next buffer              \|^[U Switch to previous buffer         \|\i \i
+\i \i\|^C  Eliminate the current window       \|^KI Show all windows / Show one window\|\i \i
+}
+
+{Advanced
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i\|\uMACROS\u         \|\uMISC\u            \|\uSCROLL\u    \|\uSHELL\u       \|\uGOTO\u       \|\uI-SEARCH\u     \|\i \i
+\i \i\|^K[ 0-9 Record \|^K SPACE status \|^[W Up    \|^K' Window  \|^[B To ^KB \|^[R Backwards\|\i \i
+\i \i\|^K]     Stop   \|^K\\ Repeat      \|^[Z Down  \|^[! Command \|^[K To ^KK \|^[S Forwards \|\i \i
+\i \i\|^K 0-9  Play   \|\uINSERT\u          \|^K< Left  \|\uQUOTE\u       \|\uDELETE\u     \|\uBOOKMARKS\u    \|\i \i
+\i \i\|^K?     Query  \|^] split line   \|^K> Right \|^[' Ctrl-   \|^[Y yank   \|^[ 0-9 Goto  \|\i \i
+\i \i\|^[D     Dump   \|^SPACE ins space\|          \|^\\ Meta-    \|^[O line<  \|^[^[   Set   \|\i \i
+}
+
+{Programs
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i\|\uGOTO\u                 \|\uINDENT\u   \|\uCOMPILING\u          \uQUICK\u                       \|\i \i
+\i \i\|^G  Matching ( [ {   \|^K, less \|^[C Compile & parse ^G  find word under cursor \|\i \i
+\i \i\|^K- Previous place   \|^K. more \|^[G Grep & parse    ^[ENTER complete word      \|\i \i
+\i \i\|^K= Next place       \|\uFILE\u     \|^[= To next error   ^[Y paste deleted text     \|\i \i
+\i \i\|^K; Tags file search \|^K `     \|^[- To prev. error  ^[^Y cycle through deleted \|\i \i
+\i \i\|                     \| revert  \|^[ SP Jump to error                            \|\i \i
+}
+
+{Search
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \iSpecial search sequences:                                                    \|\i \i
+\i \i    \\^  \\$  matches beg./end of line      \\?     match any single char       \|\i \i
+\i \i    \\<  \\>  matches beg./end of word      \\*     match 0 or more chars       \|\i \i
+\i \i    \\c      matches balanced C expression \\\\     matches a \\                 \|\i \i
+\i \i    \\[..]   matches one of a set          \\n     matches a newline           \|\i \i
+\i \i    \\+      matches 0 or more of the character which follows the \\+          \|\i \i
+\i \iSpecial replace sequences:                                                   \|\i \i
+\i \i    \\&      replaced with text which matched search string                   \|\i \i
+\i \i    \\0 - 9  replaced with text which matched Nth \\*, \\?, \\c, \\+, or \\[..]    \|\i \i
+\i \i    \\\\      replaced with \\               \\n     replaced with newline       \|\i \i
+}
+
+{SearchOptions
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \iSearch options:                                                              \|\i \i
+\i \i   r Replace                                                                 \|\i \i
+\i \i   k Restrict search to highlighted block, which can be rectangular          \|\i \i
+\i \i   b Search backward instead of forward                                      \|\i \i
+\i \i   i Ignore case                                                             \|\i \i
+\i \i   a Search across all loaded files                                          \|\i \i
+\i \i   e Search across all files in Grep or Compile error list                   \|\i \i
+\i \i   w Wrap to beginning of file for this search                               \|\i \i
+\i \i   n Do not wrap to beginning of file for this search                        \|\i \i
+\i \i   nnn Perform exaclty nnn replacements                                      \|\i \i
+}
+
+{Math
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i \uCOMMANDS\u (hit ESC m for math)  \uFUNCTIONS\u                                    \|\i \i
+\i \i     hex hex display mode       sin cos tab asin acos atan                   \|\i \i
+\i \i     dec decimal mode           sinh cosh tanh asinh acosh atanh             \|\i \i
+\i \i     ins type result into file  sqrt cbrt exp ln log                         \|\i \i
+\i \i    eval evaluate block         int floor ceil abs erg ergc                  \|\i \i
+\i \i    0xff enter number in hex    joe(..macro..) - runs an editor macro        \|\i \i
+\i \i    3e-4 floating point decimal \uBLOCK\u                                        \|\i \i
+\i \i    a=10 assign a variable      sum cnt  Sum, count                          \|\i \i
+\i \i 2+3:ins multiple commands      avg dev  Average, std. deviation             \|\i \i
+\i \i    e pi constants              \uOPERATORS\u                                    \|\i \i
+\i \i     ans previous result        ! ^  * / %  + -  < <= > >= == !=  &&  ||  ? :\|\i \i
+}
+
+{Names
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i Hit TAB at file name prompts to generate menu of file names                 \|\i \i
+\i \i Or use up/down keys to access history of previously entered names           \|\i \i
+\i \i Special file names:                                                         \|\i \i
+\i \i      !command                 Pipe in/out of a shell command                \|\i \i
+\i \i      >>filename               Append to a file                              \|\i \i
+\i \i      -                        Read/Write to/from standard I/O               \|\i \i
+\i \i      filename,START,SIZE      Read/Write a part of a file/device            \|\i \i
+\i \i          Give START/SIZE in decimal (255), octal (0377) or hex (0xFF)       \|\i \i
+}
+
+{Joe
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,    next screen ^[.     \i
+\i \i Send bug reports to: http://sourceforge.net/projects/joe-editor \|\i \i
+\i \i \|\i \i
+\i \i  default joerc file is here /etc/joe/joerc \|\i \i
+\i \i  default syntax and i18n files are here /usr/share/joe \|\i \i
+\i \i  additional documentation can be found here /usr/share/doc/joe \|\i \i
+}
+
+{CharTable
+\i   Help Screen    \|turn off with ^KH    prev. screen ^[,                        \i
+\i \i\| Dec  \u 0123 4567  8901 2345    0123 4567  8901 2345 \u  Dec \|\i \i
+\i \i\|     |                                              |     \|\i \i
+\i \i\|   0 | \u@ABC\u \uDEFG\u  \uHIJK\u \uLMNO\u    \i\u@ABC\u\i \i\uDEFG\u\i  \i\uHIJK\u\i \i\uLMNO\u\i | 128 \|\i \i
+\i \i\|  16 | \uPQRS\u \uTUVW\u  \uXYZ[\u \u\\]^_\u    \i\uPQRS\u\i \i\uTUVW\u\i  \i\uXYZ[\u\i \i\u\\]^_\u\i | 144 \|\i \i
+\i \i\|  32 |  !"# $%&'  ()*+ ,-./     ¡¢£ ¤¥¦§  ¨©ª« ¬­®¯ | 160 \|\i \i
+\i \i\|  48 | 0123 4567  89:; <=>?    °±²³ ´µ¶·  ¸¹º» ¼½¾¿ | 176 \|\i \i
+\i \i\|  64 | @ABC DEFG  HIJK LMNO    ÀÁÂÃ ÄÅÆÇ  ÈÉÊË ÌÍÎÏ | 192 \|\i \i
+\i \i\|  80 | PQRS TUVW  XYZ[ \\]^_    ÐÑÒÓ ÔÕÖ×  ØÙÚÛ ÜÝÞß | 208 \|\i \i
+\i \i\|  96 | `abc defg  hijk lmno    àáâã äåæç  èéêë ìíîï | 224 \|\i \i
+\i \i\| 112 | pqrs tuvw  xyz{ |}~    ðñòó ôõö÷  øùúû üýþÿ | 240 \|\i \i
+}
+
+ FOURTH SECTION: Key bindings:
+
+ Section names you must provide:
+
+	:main		For editing window
+	:prompt		For prompt lines
+	:query		For single-character query lines
+	:querya		Singe-character query for quote
+	:querysr	Search & Replace single-character query
+
+ Other sections may be given as well for organization purposes or for
+ use with the '-keymap' option.
+
+ Use:
+ :inherit name		To copy the named section into the current one
+ :delete key		To delete a key sequence from the current section
+
+ Keys:
+
+ Use ^@ through ^_ and ^? for Ctrl chars
+ Use SP for space
+ Use a TO b to generate a range of characters
+ Use MDOWN, MDRAG, MUP, M2DOWN, M2DRAG, M2UP, M3DOWN, M3DRAG, M3UP for mouse
+ Use MWDOWN, MWUP for wheel mouse motion
+ Use ^# for 0x9B (for Amiga).  But warning: this breaks UTF-8 keyboards.
+
+ You can also use termcap string capability names.  For example:
+
+	.ku		Up
+	.kd		Down
+	.kl		Left
+	.kr		Right
+	.kh		Home
+	.kH		End
+	.kI		Insert
+	.kD		Delete
+	.kP		PgUp
+	.kN		PgDn
+	.k1 - .k9	F1 - F9
+	.k0		F0 or F10
+	.k;		F10
+
+ Macros:
+
+ Simple macros can be made by comma seperating 2 or more command names.  For
+ example:
+
+ eof,bol	^T Z		Goto beginning of last line
+
+ Also quoted matter is typed in literally:
+
+ bol,">",dnarw	.k1		Quote news article line
+
+ Macros may cross lines if they end with ,
+
+ Commands or named macros may be created with :def.  For example, you can
+ use:
+
+ :def foo eof,bol
+
+ To define a command foo which will goto the beginning of the last line.
+
+:windows		Bindings common to all windows
+type		^@ TO ÿ		Type a character
+abort		^C		Abort window
+abort		^K Q
+abort		^K ^Q
+abort		^K q
+arg		^K \		Repeat next command
+explode		^K I		Show all windows or show only one window
+explode		^K ^I
+explode		^K i
+help		^K H		Help menu
+help		^K ^H
+help		^K h
+hnext		^[ .		Next help window
+hprev		^[ ,		Previous help window
+math		^[ m		Calculator
+math		^[ M		Calculator
+ math		^[ ^M		Calculator
+msg		^[ h		Display a message
+msg		^[ H		Display a message
+msg		^[ ^H		Display a message
+nextw		^K N		Goto next window
+nextw		^K ^N
+nextw		^K n
+pgdn		.kN		Screen down
+pgdn		^V
+pgdn		^[ [ 6 ~
+ pgdn      ^# S
+pgup		.kP		Screen up
+pgup		^U
+pgup		^[ [ 5 ~
+ pgup      ^# T
+play		^K 0 TO 9	Execute macro
+prevw		^K P		Goto previous window
+prevw		^K ^P
+prevw		^K p
+query		^K ?		Macro query insert
+record		^K [		Record a macro
+retype		^R		Refresh screen
+rtn		^M		Return
+shell		^K Z		Shell escape
+shell		^K ^Z
+shell		^K z
+stop		^K ]		Stop recording
+ Mouse handling
+defmdown	MDOWN		Move the cursor to the mouse location
+defmup		MUP
+defmdrag	MDRAG		Select a region of characters
+defm2down	M2DOWN		Select the word at the mouse location
+defm2up		M2UP
+defm2drag	M2DRAG		Select a region of words
+defm3down	M3DOWN		Select the line at the mouse location
+defm3up		M3UP
+defm3drag	M3DRAG		Select a region of lines
+
+xtmouse		^[ [ M		Introduces an xterm mouse event
+
+if,"char==65",then,"it's an A",else,"it's not an a",endif	^[ q
+
+:main			Text editing window
+:inherit windows
+
+ Spell-check macros
+
+ Ispell
+:def ispellfile filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;cat ispell.tmp;/bin/rm ispell.tmp",rtn,retype
+:def ispellword psh,nextword,markk,prevword,markb,filt,"cat >ispell.tmp;ispell ispell.tmp </dev/tty >/dev/tty;tr -d <ispell.tmp '\\012';/bin/rm ispell.tmp",rtn,retype,nextword
+
+ Aspell
+:def aspellfile filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;cat $SPLTMP;/bin/rm $SPLTMP",rtn,retype
+:def aspellword psh,nextword,markk,prevword,markb,filt,"SPLTMP=ispell.tmp;cat >$SPLTMP;aspell --lang=",language,".",charset," -x -c $SPLTMP </dev/tty >/dev/tty;tr -d <$SPLTMP '\\012';/bin/rm $SPLTMP",rtn,retype,nextword
+
+
+aspellfile	^[ l
+aspellword	^[ n
+
+ Compile
+
+:def compile mwind!,mfit!,querysave,query,scratch,"* Build Log *",rtn,bof,markb,eof," ",markk,blkdel,build
+
+ Grep
+
+:def grep_find mwind!,mfit!,scratch,"* Grep Log *",rtn,bof,markb,eof," ",markk,blkdel,grep
+
+ Man page
+
+:def man scratch,"* Man Page *",rtn,bof,markb,eof," ",markk,blkdel," ",ltarw,run,"man -P cat -S 2:3 "
+
+ Here we guess some common key sequences which either do not have termcap
+ sequences or which are frequently wrong.  Note that if the termcap entry is
+ correct, it will override these later on.
+
+paste			^[ ] 5 2 ;		Bracketed paste
+
+insc			^[ [ 2 ~
+insc			^[ [ L			SCO
+
+delch			^[ [ 3 ~
+
+pgup			^[ [ I		SCO
+
+pgdn			^[ [ G		SCO
+
+home			^[ [ 1 ~		Putty, Linux, Cygwin
+home			^[ [ H			Xterm, Konsole, SCO
+home			^[ O H			gnome-terminal
+home			^[ [ 7 ~		RxVT
+ home			^# SP A		Amiga
+
+eol			^[ [ 4 ~		Putty, Linux, Cygwin, ssh
+eol			^[ [ F			Xterm, Konsole, SCO
+eol			^[ O F			gnome-terminal
+eol			^[ [ 8 ~		RxVT
+ eol			^# SP @		Amiga
+
+rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ [ 1 ; 5 C    Mark right Xterm
+rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ [ 5 C        Mark right Gnome-terminal
+ (Almost all termcap entries have ^[ O C as an arrow key).
+ rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ O C		Mark right Putty Ctrl-rtarw
+rtarw,ltarw,begin_marking,rtarw,toggle_marking	^[ O c		Mark right RxVT Ctrl-rtarw
+
+ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ [ 1 ; 5 D    Mark left
+ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ [ 5 D        Mark left
+ ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ O D		Mark left Putty Ctrl-ltarw
+ltarw,rtarw,begin_marking,ltarw,toggle_marking	^[ O d		Mark left RxVT Ctrl-ltarw
+
+uparw,dnarw,begin_marking,uparw,toggle_marking	^[ [ 1 ; 5 A    Mark up
+uparw,dnarw,begin_marking,uparw,toggle_marking	^[ [ 5 A        Mark up
+ uparw,dnarw,begin_marking,uparw,toggle_marking	^[ O A		Mark up Putty Ctrl-uparw
+uparw,dnarw,begin_marking,uparw,toggle_marking	^[ O a		Mark up RxVT Ctrl-uparw
+
+dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ [ 1 ; 5 B    Mark down
+dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ [ 5 B        Mark down
+ dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ O B		Mark down Putty Ctrl-dnarw
+dnarw,uparw,begin_marking,dnarw,toggle_marking	^[ O b		Mark down RxVT Ctrl-dnarw
+
+blkdel,nmark   ^[ [ 3 ; 5 -	Gnome-terminal Ctrl-Del
+blkdel,nmark   ^[ [ 3 ; 5 ~	Xterm Ctrl-Del
+
+yank		^[ [ 2 ; 5 -	Gnome-terminal Ctrl-Ins
+yank		^[ [ 2 ; 5 ~    Xterm Ctrl-Ins
+
+ Extra functions not really part of JOE user interface:
+
+delbol		^[ o		Delete to beginning of line
+delbol		^[ ^O		Delete to beginning of line
+dnslide		^[ z		Scroll down one line
+dnslide		^[ Z		Scroll down one line
+dnslide		^[ ^Z		Scroll down one line
+dnslide,dnslide,dnslide,dnslide		MWDOWN
+compile		^[ c		Compile
+compile		^[ C
+compile		^[ ^C		Compile
+grep_find	^[ g		Grep
+grep_find	^[ G		Grep
+grep_find	^[ ^G		Grep
+execmd		^[ x		Prompt for command to execute
+execmd		^[ X		Prompt for command to execute
+execmd		^[ ^X		Prompt for command to execute
+finish		^[ ^I		Complete word in document
+finish		^[ ^M		Complete word: used to be math
+mwind,mfit,jump,bol		^[ SP
+isrch		^[ s		Forward incremental search
+isrch		^[ S		Forward incremental search
+isrch		^[ ^S		Forward incremental search
+notmod		^[ ~		Not modified
+mwind,mfit,prevw,nxterr		^[ =		To next error
+parserr		^[ e		Parse errors in current buffer
+parserr		^[ E		Parse errors in current buffer
+parserr		^[ ^E		Parse errors in current buffer
+mwind,mfit,prevw,prverr		^[ -		To previous error
+rsrch		^[ r		Backward incremental search
+rsrch		^[ R		Backward incremental search
+rsrch		^[ ^R		Backward incremental search
+run		^[ !		Run a program in a window
+tomarkb		^[ b		Go to beginning of marked block
+tomarkb		^[ ^B		Go to beginning of marked block
+tomarkk		^[ k		Go to end of marked block
+tomarkk		^[ ^K		Go to end of marked block
+tomarkk		^[ K		Go to end of marked block
+txt		^[ i		Prompt for text and insert it
+txt		^[ I		Prompt for text and insert it
+upslide		^[ w		Scroll up one line
+upslide		^[ ^W		Scroll up one line
+upslide		^[ W		Scroll up one line
+upslide,upslide,upslide,upslide		MWUP
+yank		^[ y		Undelete text
+yankpop		^[ ^Y		Undelete text
+yank		^[ Y		Undelete text
+
+ toggle_marking	^@		Ctrl-space block selection method
+insc		^@		Ctrl-space used to insert a space
+
+ bufed		^[ d		Menu of buffers
+nbuf		^[ v		Next buffer
+nbuf		^[ V		Next buffer
+nbuf		^[ ^V		Next buffer
+pbuf		^[ u		Prev buffer
+pbuf		^[ U		Prev buffer
+pbuf		^[ ^U		Prev buffer
+ query		^[ q		Quoted insert
+ byte		^[ n		Goto byte
+ col		^[ c		Goto column
+ abortbuf	^[ k		Kill current buffer- don't mess with windows
+ ask		^[ a		Ask to save current buffer
+ bop		^[ p		Backwards paragraph
+ bos		^[ x		Bottom of screen
+ copy		^[ ^W		Copy block into yank
+ dupw		^[ \		Split window
+ eop		^[ n		Forwards paragraph
+ format		^[ j		Format paragraph ignore block
+ markl		^[ l		Mark line
+ nmark		^[ @		Turn off ^KB ^KK
+ pop		^[ >		Pop ^KB ^KK
+ psh		^[ <		Push ^KB ^KK
+ swap		^[ x		Swap ^KB and cursor
+ tomarkbk	^[ g		Switch between beginning and end of marked
+ tos		^[ e		Top of screen
+ tw0		^[ 0		Kill current window (orphans buffer)
+ tw1		^[ 1		Kill all other windows (orphans buffers)
+ uarg		^[ u		Universal argument
+ yank		^[ ^Y		Undelete previous text
+ yapp		^[ w		Append next delete to previous yank
+
+ Standard JOE user interface
+
+quote8		^\		Enter Meta chars
+ quote		`		Enter Ctrl chars
+quote		^[ '		Enter Ctrl chars
+quote		^Q
+
+backs		^?		Backspace
+backs		^H
+backw		^O		Backspace word
+bknd		^K '		Shell window
+blkcpy		^K C		Copy marked block
+blkcpy		^K ^C
+blkcpy		^K c
+blkdel		^K Y		Delete marked block
+blkdel		^K ^Y
+blkdel		^K y
+blkmove		^K M		Move marked block
+blkmove		^K ^M
+blkmove		^K m
+blksave		^K W		Save marked block
+blksave		^K ^W
+blksave		^K w
+bof		^K U		Goto beginning of file
+bof		^K ^U
+bof		^K u
+ bol		.kh		Goto beginning of line
+ bol		^A
+ bol      ^# SP A
+home		.kh
+home		^A
+center		^K A		Center line
+center		^K ^A
+center		^K a
+crawll		^K <		Pan left
+crawlr		^K >		Pan right
+delch		.kD		Delete character
+delch		^D
+deleol		^J		Delete to end of line
+dellin		^Y		Delete entire line
+delw		^W		Delete word to right
+dnarw		.kd		Go down
+dnarw		^N
+dnarw		^[ O B
+dnarw		^[ [ B
+ dnarw		^# B
+edit		^K E		Edit a file
+edit		^K ^E
+edit		^K e
+eof		^K V		Go to end of file
+eof		^K ^V
+eof		^K v
+eol		.kH		Go to end of line
+eol		.@7
+eol		^E
+exsave		^K X		Save and exit
+exsave		^K ^X
+exsave		^K x
+ffirst		^K F		Find first
+ffirst		^K ^F
+ffirst		^K f
+filt		^K /		Filter block
+ finish		^K ^M		Complete text under cursor
+fnext		^L		Find next
+fmtblk		^K J		Format paragraphs in block
+fmtblk		^K ^J
+fmtblk		^K j
+gomark		^[ 0 TO 9	Goto bookmark
+groww		^K G		Grow window
+groww		^K ^G
+groww		^K g
+insc		.kI		Insert a space
+ insc		^@
+insf		^K R		Insert a file
+insf		^K ^R
+insf		^K r
+lindent		^K ,		Indent to left
+line		^K L		Goto line no.
+line		^K ^L
+line		^K l
+ltarw		.kl		Go left
+ltarw		^B
+ltarw		^[ O D
+ltarw		^[ [ D
+ ltarw          ^# D
+macros		^[ d		Dump keyboard macros
+macros		^[ ^D
+markb		^K B		Set beginning of marked block
+markb		^K ^B
+markb		^K b
+markk		^K K		Set end of marked block
+markk		^K ^K
+markk		^K k
+ mode		^T		Options menu
+menu,"root",rtn	^T
+nextpos		^K =		Goto next position in position history
+nextword	^X		Goto next word
+open		^]		Split line
+prevpos		^K -		Previous position in history
+prevword	^Z		Previous word
+reload		^K `		Revert file
+redo		^^		Redo changes
+rindent		^K .		Indent to right
+rtarw		.kr		Go right
+rtarw		^F
+rtarw		^[ O C
+rtarw		^[ [ C
+ rtarw          ^# C
+run		^K !		Run a shell command
+save		^K D		Save file
+save		^K S
+save		^K ^D
+save		^K ^S
+save		^K d
+save		^K s
+setmark		^[ ^[		Set bookmark
+shrinkw		^K T		Shrink window
+shrinkw		^K ^T
+shrinkw		^K t
+splitw		^K O		Split window
+splitw		^K ^O
+splitw		^K o
+stat		^K SP		Show status
+tag		^K ;		Tags file search
+tomatch		^G		Goto matching parenthasis
+undo		^_		Undo changes
+uparw		.ku		Go up
+ uparw		^# A
+uparw		^P
+uparw		^[ O A
+uparw		^[ [ A
+
+:prompt			Prompt windows
+:inherit main
+if,"byte>size",then,complete,complete,else,delch,endif	^D
+complete	^I
+dnarw,eol	.kd		Go down
+dnarw,eol	^N
+dnarw,eol	^[ O B
+dnarw,eol	^[ [ B
+ dnarw,eol	^# B
+uparw,eol	.ku		Go up
+ uparw,eol	^# A
+uparw,eol	^P
+uparw,eol	^[ O A
+uparw,eol	^[ [ A
+
+:menu			Selection menus
+:inherit windows
+
+pgupmenu			^[ [ I
+
+pgdnmenu			^[ [ G
+
+bolmenu			^[ [ 1 ~		Putty, Linux, Cygwin
+bolmenu			^[ [ H			Xterm, Konsole
+bolmenu			^[ O H			gnome-terminal
+bolmenu			^[ [ 7 ~		RxVT
+ bolmenu			^# SP A		Amiga
+
+eolmenu			^[ [ 4 ~		Putty, Linux, Cygwin, ssh
+eolmenu			^[ [ F			Xterm, Konsole
+eolmenu			^[ O F			gnome-terminal
+eolmenu			^[ [ 8 ~		RxVT
+ eolmenu			^# SP @		Amiga
+
+abort		^[ ^[	Why?
+backsmenu	^?
+backsmenu	^H
+bofmenu		^K U
+bofmenu		^K ^U
+bofmenu		^K u
+bolmenu		.kh
+bolmenu		^A
+dnarwmenu	.kd
+dnarwmenu	^N
+dnarwmenu	^[ [ B
+dnarwmenu	^[ O B
+ dnarwmenu ^# B
+dnarwmenu	MWDOWN
+eofmenu		^K V
+eofmenu		^K ^V
+eofmenu		^K v
+eolmenu		.kH
+eolmenu		^E
+ltarwmenu	.kl
+ltarwmenu	^B
+ltarwmenu	^[ [ D
+ltarwmenu	^[ O D
+ ltarwmenu ^# D
+pgdnmenu	.kN		Screen down
+pgdnmenu	^V
+pgdnmenu	^[ [ 6 ~
+ pgdnmenu  ^# S
+pgupmenu	.kP		Screen up
+pgupmenu	^U
+pgupmenu	^[ [ 5 ~
+ pgupmenu  ^# T
+rtarwmenu	.kr
+rtarwmenu	^F
+rtarwmenu	^[ [ C
+ rtarwmenu ^# C
+rtarwmenu	^[ O C
+rtn		SP
+rtn		^I
+rtn		^K H
+rtn		^K h
+rtn		^K ^H
+tabmenu		^I
+uparwmenu	.ku
+uparwmenu	^P
+uparwmenu	^[ [ A
+uparwmenu	^[ O A
+ uparwmenu ^# A
+uparwmenu	MWUP
+defm2down	M2DOWN		Hits return key
+
+:query			Single-key query window
+:inherit windows
+
+:querya			Single-key query window for quoting
+type		^@ TO ÿ
+
+:querysr		Search & replace query window
+type		^@ TO ÿ

二進制
board/GfA/Display001/rootfs/etc/keymaps/ANSI-dvorak.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/applkey.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/azerty.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/backspace.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/be-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg-cp1251.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg-cp855.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg_bds-cp1251.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg_bds-utf8.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg_pho-cp1251.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/bg_pho-utf8.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/br-abnt.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/br-abnt2.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/br-latin1-abnt2.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/br-latin1-us.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/by.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cf.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/croat.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/ctrl.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cz-cp1250.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cz-lat2-prog.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cz-lat2.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cz-us-qwertz.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/cz.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/de-latin1-nodeadkeys.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/de-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/de.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/de_CH-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/defkeymap.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/defkeymap_V1.0.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/dk-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/dk.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/dvorak-l.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/dvorak-r.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/dvorak.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/emacs.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/emacs2.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/es-cp850.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/es.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/et-nodeadkeys.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/et.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/euro.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/euro1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/euro2.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fi-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fi-latin9.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fi.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr-latin9.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr-pc.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr_CH-latin1.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/fr_CH.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/gr-pc.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/gr.bmap


二進制
board/GfA/Display001/rootfs/etc/keymaps/hu.bmap


Some files were not shown because too many files changed in this diff