Project import generated by Copybara.

GitOrigin-RevId: 476af6c46a320325a2c516b0e6610867279a913a
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..5d56a3f
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,80 @@
+#
+# NOTE! Don't add files that are generated in specific
+# subdirectories here. Add them in the ".gitignore" file
+# in that subdirectory instead.
+#
+# NOTE! Please use 'git ls-files -i --exclude-standard'
+# command after changing this file, to see if there are
+# any tracked files which get ignored after the change.
+#
+# Normal rules
+#
+.*
+*.o
+*.o.*
+*.a
+*.s
+*.ko
+*.so
+*.so.dbg
+*.mod.c
+*.i
+*.lst
+*.symtypes
+*.order
+modules.builtin
+*.elf
+*.bin
+*.gz
+*.bz2
+*.lzma
+*.xz
+*.lzo
+*.patch
+*.gcno
+
+#
+# Top-level generic files
+#
+/tags
+/TAGS
+/linux
+/vmlinux
+/vmlinuz
+/System.map
+/Module.markers
+/Module.symvers
+
+#
+# git files that we don't want to ignore even it they are dot-files
+#
+!.gitignore
+!.mailmap
+
+#
+# Generated include files
+#
+include/config
+include/linux/version.h
+include/generated
+
+# stgit generated dirs
+patches-*
+
+# quilt's files
+patches
+series
+
+# cscope files
+cscope.*
+ncscope.*
+
+# gnu global files
+GPATH
+GRTAGS
+GSYMS
+GTAGS
+
+*.orig
+*~
+\#*#
diff --git a/.mailmap b/.mailmap
new file mode 100644
index 0000000..1eba28a
--- /dev/null
+++ b/.mailmap
@@ -0,0 +1,109 @@
+#
+# This list is used by git-shortlog to fix a few botched name translations
+# in the git archive, either because the author's full name was messed up
+# and/or not always written the same way, making contributions from the
+# same person appearing not to be so or badly displayed.
+#
+# repo-abbrev: /pub/scm/linux/kernel/git/
+#
+
+Aaron Durbin <adurbin@google.com>
+Adam Oldham <oldhamca@gmail.com>
+Adam Radford <aradford@gmail.com>
+Adrian Bunk <bunk@stusta.de>
+Alan Cox <alan@lxorguk.ukuu.org.uk>
+Alan Cox <root@hraefn.swansea.linux.org.uk>
+Aleksey Gorelov <aleksey_gorelov@phoenix.com>
+Al Viro <viro@ftp.linux.org.uk>
+Al Viro <viro@zenIV.linux.org.uk>
+Andreas Herrmann <aherrman@de.ibm.com>
+Andrew Morton <akpm@osdl.org>
+Andrew Vasquez <andrew.vasquez@qlogic.com>
+Andy Adamson <andros@citi.umich.edu>
+Arnaud Patard <arnaud.patard@rtp-net.org>
+Arnd Bergmann <arnd@arndb.de>
+Axel Dyks <xl@xlsigned.net>
+Axel Lin <axel.lin@gmail.com>
+Ben Gardner <bgardner@wabtec.com>
+Ben M Cahill <ben.m.cahill@intel.com>
+Björn Steinbrink <B.Steinbrink@gmx.de>
+Brian Avery <b.avery@hp.com>
+Brian King <brking@us.ibm.com>
+Christoph Hellwig <hch@lst.de>
+Corey Minyard <minyard@acm.org>
+David Brownell <david-b@pacbell.net>
+David Woodhouse <dwmw2@shinybook.infradead.org>
+Dmitry Eremin-Solenikov <dbaryshkov@gmail.com>
+Domen Puncer <domen@coderock.org>
+Douglas Gilbert <dougg@torque.net>
+Ed L. Cashin <ecashin@coraid.com>
+Evgeniy Polyakov <johnpol@2ka.mipt.ru>
+Felipe W Damasio <felipewd@terra.com.br>
+Felix Kuhling <fxkuehl@gmx.de>
+Felix Moeller <felix@derklecks.de>
+Filipe Lautert <filipe@icewall.org>
+Franck Bui-Huu <vagabon.xyz@gmail.com>
+Frank Zago <fzago@systemfabricworks.com>
+Greg Kroah-Hartman <greg@echidna.(none)>
+Greg Kroah-Hartman <gregkh@suse.de>
+Greg Kroah-Hartman <greg@kroah.com>
+Henk Vergonet <Henk.Vergonet@gmail.com>
+Henrik Kretzschmar <henne@nachtwindheim.de>
+Herbert Xu <herbert@gondor.apana.org.au>
+Jacob Shin <Jacob.Shin@amd.com>
+James Bottomley <jejb@mulgrave.(none)>
+James Bottomley <jejb@titanic.il.steeleye.com>
+James E Wilson <wilson@specifix.com>
+James Ketrenos <jketreno@io.(none)>
+Jean Tourrilhes <jt@hpl.hp.com>
+Jeff Garzik <jgarzik@pretzel.yyz.us>
+Jens Axboe <axboe@suse.de>
+Jens Osterkamp <Jens.Osterkamp@de.ibm.com>
+John Stultz <johnstul@us.ibm.com>
+Juha Yrjola <at solidboot.com>
+Juha Yrjola <juha.yrjola@nokia.com>
+Juha Yrjola <juha.yrjola@solidboot.com>
+Kay Sievers <kay.sievers@vrfy.org>
+Kenneth W Chen <kenneth.w.chen@intel.com>
+Koushik <raghavendra.koushik@neterion.com>
+Leonid I Ananiev <leonid.i.ananiev@intel.com>
+Linas Vepstas <linas@austin.ibm.com>
+Mark Brown <broonie@sirena.org.uk>
+Matthieu CASTET <castet.matthieu@free.fr>
+Michael Buesch <mb@bu3sch.de>
+Michael Buesch <mbuesch@freenet.de>
+Michel Dänzer <michel@tungstengraphics.com>
+Mitesh shah <mshah@teja.com>
+Morten Welinder <terra@gnome.org>
+Morten Welinder <welinder@anemone.rentec.com>
+Morten Welinder <welinder@darter.rentec.com>
+Morten Welinder <welinder@troll.com>
+Nguyen Anh Quynh <aquynh@gmail.com>
+Paolo 'Blaisorblade' Giarrusso <blaisorblade@yahoo.it>
+Patrick Mochel <mochel@digitalimplant.org>
+Peter A Jonsson <pj@ludd.ltu.se>
+Peter Oruba <peter@oruba.de>
+Peter Oruba <peter.oruba@amd.com>
+Praveen BP <praveenbp@ti.com>
+Rajesh Shah <rajesh.shah@intel.com>
+Ralf Baechle <ralf@linux-mips.org>
+Ralf Wildenhues <Ralf.Wildenhues@gmx.de>
+Rémi Denis-Courmont <rdenis@simphalempin.com>
+Rudolf Marek <R.Marek@sh.cvut.cz>
+Rui Saraiva <rmps@joel.ist.utl.pt>
+Sachin P Sant <ssant@in.ibm.com>
+Sam Ravnborg <sam@mars.ravnborg.org>
+Sascha Hauer <s.hauer@pengutronix.de>
+S.Çağlar Onur <caglar@pardus.org.tr>
+Simon Kelley <simon@thekelleys.org.uk>
+Stéphane Witzmann <stephane.witzmann@ubpmes.univ-bpclermont.fr>
+Stephen Hemminger <shemminger@osdl.org>
+Tejun Heo <htejun@gmail.com>
+Thomas Graf <tgraf@suug.ch>
+Tony Luck <tony.luck@intel.com>
+Tsuneo Yoshioka <Tsuneo.Yoshioka@f-secure.com>
+Uwe Kleine-König <ukleinek@informatik.uni-freiburg.de>
+Uwe Kleine-König <ukl@pengutronix.de>
+Uwe Kleine-König <Uwe.Kleine-Koenig@digi.com>
+Valdis Kletnieks <Valdis.Kletnieks@vt.edu>
+Takashi YOSHII <takashi.yoshii.zj@renesas.com>
diff --git a/Documentation/.gitignore b/Documentation/.gitignore
new file mode 100644
index 0000000..bcd907b
--- /dev/null
+++ b/Documentation/.gitignore
@@ -0,0 +1,7 @@
+filesystems/dnotify_test
+laptops/dslm
+timers/hpet_example
+vm/hugepage-mmap
+vm/hugepage-shm
+vm/map_hugetlb
+
diff --git a/Documentation/DocBook/.gitignore b/Documentation/DocBook/.gitignore
new file mode 100644
index 0000000..c6def35
--- /dev/null
+++ b/Documentation/DocBook/.gitignore
@@ -0,0 +1,10 @@
+*.xml
+*.ps
+*.pdf
+*.html
+*.9.gz
+*.9
+*.aux
+*.dvi
+*.log
+*.out
diff --git a/Documentation/DocBook/dvb/.gitignore b/Documentation/DocBook/dvb/.gitignore
new file mode 100644
index 0000000..d7ec32e
--- /dev/null
+++ b/Documentation/DocBook/dvb/.gitignore
@@ -0,0 +1 @@
+!*.xml
diff --git a/Documentation/DocBook/v4l/.gitignore b/Documentation/DocBook/v4l/.gitignore
new file mode 100644
index 0000000..d7ec32e
--- /dev/null
+++ b/Documentation/DocBook/v4l/.gitignore
@@ -0,0 +1 @@
+!*.xml
diff --git a/Documentation/accounting/.gitignore b/Documentation/accounting/.gitignore
new file mode 100644
index 0000000..8648520
--- /dev/null
+++ b/Documentation/accounting/.gitignore
@@ -0,0 +1 @@
+getdelays
diff --git a/Documentation/auxdisplay/.gitignore b/Documentation/auxdisplay/.gitignore
new file mode 100644
index 0000000..7af2228
--- /dev/null
+++ b/Documentation/auxdisplay/.gitignore
@@ -0,0 +1 @@
+cfag12864b-example
diff --git a/Documentation/connector/.gitignore b/Documentation/connector/.gitignore
new file mode 100644
index 0000000..d2b9c32
--- /dev/null
+++ b/Documentation/connector/.gitignore
@@ -0,0 +1 @@
+ucon
diff --git a/Documentation/ia64/.gitignore b/Documentation/ia64/.gitignore
new file mode 100644
index 0000000..ab806ed
--- /dev/null
+++ b/Documentation/ia64/.gitignore
@@ -0,0 +1 @@
+aliasing-test
diff --git a/Documentation/lguest/.gitignore b/Documentation/lguest/.gitignore
new file mode 100644
index 0000000..115587f
--- /dev/null
+++ b/Documentation/lguest/.gitignore
@@ -0,0 +1 @@
+lguest
diff --git a/Documentation/networking/.gitignore b/Documentation/networking/.gitignore
new file mode 100644
index 0000000..286a568
--- /dev/null
+++ b/Documentation/networking/.gitignore
@@ -0,0 +1 @@
+ifenslave
diff --git a/Documentation/networking/timestamping/.gitignore b/Documentation/networking/timestamping/.gitignore
new file mode 100644
index 0000000..71e81eb
--- /dev/null
+++ b/Documentation/networking/timestamping/.gitignore
@@ -0,0 +1 @@
+timestamping
diff --git a/Documentation/pcmcia/.gitignore b/Documentation/pcmcia/.gitignore
new file mode 100644
index 0000000..53d0813
--- /dev/null
+++ b/Documentation/pcmcia/.gitignore
@@ -0,0 +1 @@
+crc32hash
diff --git a/Documentation/spi/.gitignore b/Documentation/spi/.gitignore
new file mode 100644
index 0000000..4280576
--- /dev/null
+++ b/Documentation/spi/.gitignore
@@ -0,0 +1,2 @@
+spidev_fdx
+spidev_test
diff --git a/Documentation/video4linux/.gitignore b/Documentation/video4linux/.gitignore
new file mode 100644
index 0000000..9527039
--- /dev/null
+++ b/Documentation/video4linux/.gitignore
@@ -0,0 +1 @@
+v4lgrab
diff --git a/Documentation/vm/.gitignore b/Documentation/vm/.gitignore
new file mode 100644
index 0000000..09b164a
--- /dev/null
+++ b/Documentation/vm/.gitignore
@@ -0,0 +1,2 @@
+page-types
+slabinfo
diff --git a/Documentation/watchdog/src/.gitignore b/Documentation/watchdog/src/.gitignore
new file mode 100644
index 0000000..ac90997
--- /dev/null
+++ b/Documentation/watchdog/src/.gitignore
@@ -0,0 +1,2 @@
+watchdog-simple
+watchdog-test
diff --git a/arch/.gitignore b/arch/.gitignore
new file mode 100644
index 0000000..7414689
--- /dev/null
+++ b/arch/.gitignore
@@ -0,0 +1,2 @@
+i386
+x86_64
diff --git a/arch/alpha/kernel/.gitignore b/arch/alpha/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/alpha/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/arm/boot/.gitignore b/arch/arm/boot/.gitignore
new file mode 100644
index 0000000..c4f90a1
--- /dev/null
+++ b/arch/arm/boot/.gitignore
@@ -0,0 +1,8 @@
+Image
+zImage
+xipImage
+bootpImage
+uImage
+lib1funcs.S
+piggy.gzip
+vmlinux
diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore
new file mode 100644
index 0000000..c602896
--- /dev/null
+++ b/arch/arm/boot/compressed/.gitignore
@@ -0,0 +1,7 @@
+font.c
+lib1funcs.S
+piggy.gzip
+piggy.lzo
+piggy.lzma
+vmlinux
+vmlinux.lds
diff --git a/arch/arm/configs/ambarella_a5s_defconfig b/arch/arm/configs/ambarella_a5s_defconfig
index 7ef6b58..ad71b14 100644
--- a/arch/arm/configs/ambarella_a5s_defconfig
+++ b/arch/arm/configs/ambarella_a5s_defconfig
@@ -1,7 +1,7 @@
 #
 # Automatically generated make config: don't edit
 # Linux/arm 2.6.38.8 Kernel Configuration
-# Wed Dec  3 07:35:25 2014
+# Thu May 21 15:33:33 2015
 #
 CONFIG_ARM=y
 CONFIG_HAVE_PWM=y
@@ -659,6 +659,7 @@
 # CONFIG_NET_CLS_IND is not set
 CONFIG_NET_SCH_FIFO=y
 # CONFIG_DCB is not set
+CONFIG_DNS_RESOLVER=y
 # CONFIG_BATMAN_ADV is not set
 
 #
@@ -1494,6 +1495,7 @@
 CONFIG_CONFIGFS_FS=y
 CONFIG_MISC_FILESYSTEMS=y
 # 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
@@ -1531,7 +1533,28 @@
 # CONFIG_QNX4FS_FS is not set
 # CONFIG_ROMFS_FS is not set
 # CONFIG_SYSV_FS is not set
-# CONFIG_NETWORK_FILESYSTEMS is not set
+CONFIG_NETWORK_FILESYSTEMS=y
+CONFIG_NFS_FS=y
+CONFIG_NFS_V3=y
+# CONFIG_NFS_V3_ACL is not set
+CONFIG_NFS_V4=y
+# CONFIG_NFS_V4_1 is not set
+# CONFIG_ROOT_NFS is not set
+# CONFIG_NFS_USE_LEGACY_DNS is not set
+CONFIG_NFS_USE_KERNEL_DNS=y
+# CONFIG_NFS_USE_NEW_IDMAPPER is not set
+# CONFIG_NFSD is not set
+CONFIG_LOCKD=y
+CONFIG_LOCKD_V4=y
+CONFIG_NFS_COMMON=y
+CONFIG_SUNRPC=y
+CONFIG_SUNRPC_GSS=y
+CONFIG_RPCSEC_GSS_KRB5=y
+# CONFIG_CEPH_FS is not set
+# CONFIG_CIFS is not set
+# CONFIG_NCP_FS is not set
+# CONFIG_CODA_FS is not set
+# CONFIG_AFS_FS is not set
 
 #
 # Partition Types
@@ -1627,7 +1650,8 @@
 #
 # Security options
 #
-# CONFIG_KEYS is not set
+CONFIG_KEYS=y
+# 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
diff --git a/arch/arm/kernel/.gitignore b/arch/arm/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/arm/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/arm/mach-ambarella/init-dropcam-quartz.c b/arch/arm/mach-ambarella/init-dropcam-quartz.c
index 84bdbe7..f028b55 100644
--- a/arch/arm/mach-ambarella/init-dropcam-quartz.c
+++ b/arch/arm/mach-ambarella/init-dropcam-quartz.c
@@ -383,7 +383,7 @@
 
 	ambarella_platform_sd_controller0.slot[1].cd_delay = 100;
 	ambarella_platform_sd_controller0.slot[1].fixed_wp = 0;
-	ambarella_platform_sd_controller0.slot[1].fixed_cd = 0;
+	ambarella_platform_sd_controller0.slot[1].fixed_cd = 1;
 	ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_gpio = -1;
 	ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_line = -1;
 	ambarella_platform_sd_controller0.slot[1].gpio_cd.irq_type = -1;
diff --git a/arch/avr32/boot/images/.gitignore b/arch/avr32/boot/images/.gitignore
new file mode 100644
index 0000000..64ea9d0
--- /dev/null
+++ b/arch/avr32/boot/images/.gitignore
@@ -0,0 +1,4 @@
+uImage
+uImage.srec
+vmlinux.cso
+sfdwarf.log
diff --git a/arch/avr32/kernel/.gitignore b/arch/avr32/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/avr32/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/blackfin/boot/.gitignore b/arch/blackfin/boot/.gitignore
new file mode 100644
index 0000000..229e508
--- /dev/null
+++ b/arch/blackfin/boot/.gitignore
@@ -0,0 +1,2 @@
+vmImage*
+vmlinux*
diff --git a/arch/blackfin/kernel/.gitignore b/arch/blackfin/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/blackfin/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/cris/boot/.gitignore b/arch/cris/boot/.gitignore
new file mode 100644
index 0000000..171a085
--- /dev/null
+++ b/arch/cris/boot/.gitignore
@@ -0,0 +1,2 @@
+Image
+zImage
diff --git a/arch/ia64/kernel/.gitignore b/arch/ia64/kernel/.gitignore
new file mode 100644
index 0000000..21cb0da
--- /dev/null
+++ b/arch/ia64/kernel/.gitignore
@@ -0,0 +1,2 @@
+gate.lds
+vmlinux.lds
diff --git a/arch/m32r/kernel/.gitignore b/arch/m32r/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/m32r/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/m68k/kernel/.gitignore b/arch/m68k/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/m68k/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/m68knommu/kernel/.gitignore b/arch/m68knommu/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/m68knommu/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/mips/boot/.gitignore b/arch/mips/boot/.gitignore
new file mode 100644
index 0000000..f210b09
--- /dev/null
+++ b/arch/mips/boot/.gitignore
@@ -0,0 +1,6 @@
+mkboot
+elf2ecoff
+vmlinux.*
+zImage
+zImage.tmp
+calc_vmlinuz_load_addr
diff --git a/arch/mips/kernel/.gitignore b/arch/mips/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/mips/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/mn10300/boot/.gitignore b/arch/mn10300/boot/.gitignore
new file mode 100644
index 0000000..b6718de
--- /dev/null
+++ b/arch/mn10300/boot/.gitignore
@@ -0,0 +1 @@
+zImage
diff --git a/arch/parisc/kernel/.gitignore b/arch/parisc/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/parisc/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/powerpc/boot/.gitignore b/arch/powerpc/boot/.gitignore
new file mode 100644
index 0000000..3d80c3e
--- /dev/null
+++ b/arch/powerpc/boot/.gitignore
@@ -0,0 +1,48 @@
+addnote
+dtc
+empty.c
+hack-coff
+infblock.c
+infblock.h
+infcodes.c
+infcodes.h
+inffast.c
+inffast.h
+inffixed.h
+inflate.c
+inflate.h
+inftrees.c
+inftrees.h
+infutil.c
+infutil.h
+kernel-vmlinux.strip.c
+kernel-vmlinux.strip.gz
+mktree
+uImage
+cuImage.*
+dtbImage.*
+treeImage.*
+zImage
+zImage.initrd
+zImage.bin.*
+zImage.chrp
+zImage.coff
+zImage.holly
+zImage.iseries
+zImage.*lds
+zImage.miboot
+zImage.pmac
+zImage.pseries
+zconf.h
+zlib.h
+zutil.h
+fdt.c
+fdt.h
+fdt_ro.c
+fdt_rw.c
+fdt_strerror.c
+fdt_sw.c
+fdt_wip.c
+libfdt.h
+libfdt_internal.h
+
diff --git a/arch/powerpc/boot/dtc-src/.gitignore b/arch/powerpc/boot/dtc-src/.gitignore
new file mode 100644
index 0000000..a7c3f94
--- /dev/null
+++ b/arch/powerpc/boot/dtc-src/.gitignore
@@ -0,0 +1,3 @@
+dtc-lexer.lex.c
+dtc-parser.tab.c
+dtc-parser.tab.h
diff --git a/arch/powerpc/kernel/.gitignore b/arch/powerpc/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/powerpc/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/powerpc/kernel/vdso32/.gitignore b/arch/powerpc/kernel/vdso32/.gitignore
new file mode 100644
index 0000000..fea5809
--- /dev/null
+++ b/arch/powerpc/kernel/vdso32/.gitignore
@@ -0,0 +1,2 @@
+vdso32.lds
+vdso32.so.dbg
diff --git a/arch/powerpc/kernel/vdso64/.gitignore b/arch/powerpc/kernel/vdso64/.gitignore
new file mode 100644
index 0000000..77a0b42
--- /dev/null
+++ b/arch/powerpc/kernel/vdso64/.gitignore
@@ -0,0 +1,2 @@
+vdso64.lds
+vdso64.so.dbg
diff --git a/arch/powerpc/platforms/cell/spufs/.gitignore b/arch/powerpc/platforms/cell/spufs/.gitignore
new file mode 100644
index 0000000..a09ee8d
--- /dev/null
+++ b/arch/powerpc/platforms/cell/spufs/.gitignore
@@ -0,0 +1,2 @@
+spu_save_dump.h
+spu_restore_dump.h
diff --git a/arch/sh/boot/.gitignore b/arch/sh/boot/.gitignore
new file mode 100644
index 0000000..541087d
--- /dev/null
+++ b/arch/sh/boot/.gitignore
@@ -0,0 +1,3 @@
+zImage
+vmlinux*
+uImage*
diff --git a/arch/sh/boot/compressed/.gitignore b/arch/sh/boot/compressed/.gitignore
new file mode 100644
index 0000000..2374a83
--- /dev/null
+++ b/arch/sh/boot/compressed/.gitignore
@@ -0,0 +1 @@
+vmlinux.bin.*
diff --git a/arch/sh/kernel/.gitignore b/arch/sh/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/sh/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/sh/kernel/vsyscall/.gitignore b/arch/sh/kernel/vsyscall/.gitignore
new file mode 100644
index 0000000..40836ad
--- /dev/null
+++ b/arch/sh/kernel/vsyscall/.gitignore
@@ -0,0 +1 @@
+vsyscall.lds
diff --git a/arch/sparc/boot/.gitignore b/arch/sparc/boot/.gitignore
new file mode 100644
index 0000000..fc6f398
--- /dev/null
+++ b/arch/sparc/boot/.gitignore
@@ -0,0 +1,8 @@
+btfix.S
+btfixupprep
+image
+zImage
+tftpboot.img
+vmlinux.aout
+piggyback
+
diff --git a/arch/sparc/kernel/.gitignore b/arch/sparc/kernel/.gitignore
new file mode 100644
index 0000000..c5f676c
--- /dev/null
+++ b/arch/sparc/kernel/.gitignore
@@ -0,0 +1 @@
+vmlinux.lds
diff --git a/arch/um/.gitignore b/arch/um/.gitignore
new file mode 100644
index 0000000..a73d3a1
--- /dev/null
+++ b/arch/um/.gitignore
@@ -0,0 +1,3 @@
+kernel/config.c
+kernel/config.tmp
+kernel/vmlinux.lds
diff --git a/arch/x86/.gitignore b/arch/x86/.gitignore
new file mode 100644
index 0000000..0280790
--- /dev/null
+++ b/arch/x86/.gitignore
@@ -0,0 +1,3 @@
+boot/compressed/vmlinux
+tools/test_get_len
+
diff --git a/arch/x86/boot/.gitignore b/arch/x86/boot/.gitignore
new file mode 100644
index 0000000..851fe93
--- /dev/null
+++ b/arch/x86/boot/.gitignore
@@ -0,0 +1,10 @@
+bootsect
+bzImage
+cpustr.h
+mkcpustr
+offsets.h
+voffset.h
+zoffset.h
+setup
+setup.bin
+setup.elf
diff --git a/arch/x86/boot/compressed/.gitignore b/arch/x86/boot/compressed/.gitignore
new file mode 100644
index 0000000..4a46fab
--- /dev/null
+++ b/arch/x86/boot/compressed/.gitignore
@@ -0,0 +1,6 @@
+relocs
+vmlinux.bin.all
+vmlinux.relocs
+vmlinux.lds
+mkpiggy
+piggy.S
diff --git a/arch/x86/boot/tools/.gitignore b/arch/x86/boot/tools/.gitignore
new file mode 100644
index 0000000..378eac2
--- /dev/null
+++ b/arch/x86/boot/tools/.gitignore
@@ -0,0 +1 @@
+build
diff --git a/arch/x86/kernel/.gitignore b/arch/x86/kernel/.gitignore
new file mode 100644
index 0000000..08f4fd7
--- /dev/null
+++ b/arch/x86/kernel/.gitignore
@@ -0,0 +1,3 @@
+vsyscall.lds
+vsyscall_32.lds
+vmlinux.lds
diff --git a/arch/x86/kernel/acpi/realmode/.gitignore b/arch/x86/kernel/acpi/realmode/.gitignore
new file mode 100644
index 0000000..58f1f48
--- /dev/null
+++ b/arch/x86/kernel/acpi/realmode/.gitignore
@@ -0,0 +1,3 @@
+wakeup.bin
+wakeup.elf
+wakeup.lds
diff --git a/arch/x86/kernel/cpu/.gitignore b/arch/x86/kernel/cpu/.gitignore
new file mode 100644
index 0000000..667df55
--- /dev/null
+++ b/arch/x86/kernel/cpu/.gitignore
@@ -0,0 +1 @@
+capflags.c
diff --git a/arch/x86/lib/.gitignore b/arch/x86/lib/.gitignore
new file mode 100644
index 0000000..8df89f0
--- /dev/null
+++ b/arch/x86/lib/.gitignore
@@ -0,0 +1 @@
+inat-tables.c
diff --git a/arch/x86/vdso/.gitignore b/arch/x86/vdso/.gitignore
new file mode 100644
index 0000000..60274d5
--- /dev/null
+++ b/arch/x86/vdso/.gitignore
@@ -0,0 +1,6 @@
+vdso.lds
+vdso-syms.lds
+vdso32-syms.lds
+vdso32-syscall-syms.lds
+vdso32-sysenter-syms.lds
+vdso32-int80-syms.lds
diff --git a/arch/x86/vdso/vdso32/.gitignore b/arch/x86/vdso/vdso32/.gitignore
new file mode 100644
index 0000000..e45fba9
--- /dev/null
+++ b/arch/x86/vdso/vdso32/.gitignore
@@ -0,0 +1 @@
+vdso32.lds
diff --git a/drivers/atm/.gitignore b/drivers/atm/.gitignore
new file mode 100644
index 0000000..fc0ae5e
--- /dev/null
+++ b/drivers/atm/.gitignore
@@ -0,0 +1,5 @@
+# Ignore generated files
+fore200e_mkfirm
+fore200e_pca_fw.c
+pca200e.bin
+pca200e_ecd.bin2
diff --git a/drivers/char/.gitignore b/drivers/char/.gitignore
new file mode 100644
index 0000000..7bcea53
--- /dev/null
+++ b/drivers/char/.gitignore
@@ -0,0 +1,2 @@
+consolemap_deftbl.c

+defkeymap.c

diff --git a/drivers/eisa/.gitignore b/drivers/eisa/.gitignore
new file mode 100644
index 0000000..4b335c0
--- /dev/null
+++ b/drivers/eisa/.gitignore
@@ -0,0 +1 @@
+devlist.h
diff --git a/drivers/gpu/drm/radeon/.gitignore b/drivers/gpu/drm/radeon/.gitignore
new file mode 100644
index 0000000..403eb3a
--- /dev/null
+++ b/drivers/gpu/drm/radeon/.gitignore
@@ -0,0 +1,3 @@
+mkregtable
+*_reg_safe.h
+
diff --git a/drivers/mmc/host/ambarella_sd.c b/drivers/mmc/host/ambarella_sd.c
index 6e7079d..d367f51 100644
--- a/drivers/mmc/host/ambarella_sd.c
+++ b/drivers/mmc/host/ambarella_sd.c
@@ -437,8 +437,10 @@
 	amba_writeb(pinfo->regbase + SD_TMO_OFFSET,
 		CONFIG_SD_AMBARELLA_TIMEOUT_VAL);
 
-	nis_flag = SD_NISEN_REMOVAL	|
-		SD_NISEN_INSERT		|
+	nis_flag =
+		// We don't have any removable card slots.
+		// SD_NISEN_REMOVAL	|
+		// SD_NISEN_INSERT		|
 		SD_NISEN_DMA		|
 		SD_NISEN_BLOCK_GAP	|
 		SD_NISEN_XFR_DONE	|
@@ -520,18 +522,12 @@
 static inline void ambarella_sd_data_done(
 	struct ambarella_sd_mmc_info *pslotinfo, u16 nis, u16 eis)
 {
+	struct mmc_command *cmd;
 	struct mmc_data *data;
+	struct ambarella_sd_controller_info *pinfo;
+	u32 rsp0, rsp1, rsp2, rsp3;
 
-	if ((pslotinfo->state == AMBA_SD_STATE_CMD) &&
-		((pslotinfo->cmd_reg & 0x3) == SD_CMD_RSP_48BUSY)) {
-		if (eis) {
-			pslotinfo->state = AMBA_SD_STATE_ERR;
-		} else {
-			pslotinfo->state = AMBA_SD_STATE_IDLE;
-		}
-		wake_up(&pslotinfo->wait);
-		return;
-	}
+	// We should not receive this IRQ if we have AMBA_SD_STATE_CMD.
 	if (pslotinfo->mrq == NULL) {
 		ambsd_dbg(pslotinfo, "%s: mrq is NULL, nis[0x%x] eis[0x%x]\n",
 			__func__, nis, eis);
@@ -543,6 +539,8 @@
 		return;
 	}
 
+	pinfo = (struct ambarella_sd_controller_info *)pslotinfo->pinfo;
+	cmd = pslotinfo->mrq->cmd;
 	data = pslotinfo->mrq->data;
 	if (eis) {
 		if (eis & SD_EIS_DATA_BIT_ERR) {
@@ -565,6 +563,20 @@
 		data->bytes_xfered = pslotinfo->dma_size;
 	}
 
+	// Our command should be done as well.
+	if (cmd->flags & MMC_RSP_136) {
+		rsp0 = amba_readl(pinfo->regbase + SD_RSP0_OFFSET);
+		rsp1 = amba_readl(pinfo->regbase + SD_RSP1_OFFSET);
+		rsp2 = amba_readl(pinfo->regbase + SD_RSP2_OFFSET);
+		rsp3 = amba_readl(pinfo->regbase + SD_RSP3_OFFSET);
+		cmd->resp[0] = ((rsp3 << 8) | (rsp2 >> 24));
+		cmd->resp[1] = ((rsp2 << 8) | (rsp1 >> 24));
+		cmd->resp[2] = ((rsp1 << 8) | (rsp0 >> 24));
+		cmd->resp[3] = (rsp0 << 8);
+	} else {
+		cmd->resp[0] = amba_readl(pinfo->regbase + SD_RSP0_OFFSET);
+	}
+
 	pslotinfo->state = AMBA_SD_STATE_IDLE;
 	wake_up(&pslotinfo->wait);
 }
@@ -638,8 +650,7 @@
 		cmd->resp[0] = amba_readl(pinfo->regbase + SD_RSP0_OFFSET);
 	}
 
-	if ((pslotinfo->state == AMBA_SD_STATE_CMD) &&
-		((pslotinfo->cmd_reg & 0x3) != SD_CMD_RSP_48BUSY)) {
+	if ((pslotinfo->cmd_reg & 0x3) != SD_CMD_RSP_48BUSY) {
 		pslotinfo->state = AMBA_SD_STATE_IDLE;
 		wake_up(&pslotinfo->wait);
 	}
@@ -651,57 +662,38 @@
 	struct ambarella_sd_mmc_info *pslotinfo = NULL;
 	u16 nis;
 	u16 eis;
-	u32 enabled = 0;
-	u32 i;
+	u16 nixen;
 
 	pinfo = (struct ambarella_sd_controller_info *)devid;
+	// We can hard-code it to slot 1 (wifi).
+	// It is always enabled.
+	pslotinfo = pinfo->pslotinfo[1];
 
 	/* Read the interrupt registers */
 	amba_read2w(pinfo->regbase + SD_NIS_OFFSET, &nis, &eis);
-
-	for (i = 0; i < pinfo->pcontroller->num_slots; i++) {
-		pslotinfo = pinfo->pslotinfo[i];
-		enabled = pslotinfo->plat_info->check_owner();
-		if (enabled)
-			break;
+	if (pslotinfo->state == AMBA_SD_STATE_DATA) {
+		// We sent a data command.
+		if ((nis & (SD_NIS_XFR_DONE | SD_NIS_CMD_DONE)) == SD_NIS_CMD_DONE) {
+			// A card IRQ brought us in, but we don't want to handle the
+			// command done.
+			nis &= ~SD_NIS_CMD_DONE;
+		}
+		// Technically XFR_DONE could also come before CMD_DONE, but this
+		// has never been observed.
 	}
-
 	/* Clear interrupt */
 	amba_write2w(pinfo->regbase + SD_NIS_OFFSET, nis, eis);
-	if (enabled) {
-		ambsd_dbg(pslotinfo, "%s nis = 0x%x, eis = 0x%x & %u\n",
-			__func__, nis, eis, pslotinfo->state);
-	} else {
-		ambsd_dbg(pslotinfo, "%s[false] nis = 0x%x, eis = 0x%x\n",
-			__func__, nis, eis);
-		if (eis) {
-			ambsd_err(pslotinfo,
-				"FIO_CTR_REG = 0x%x, FIO_DMACTR_REG = 0x%x\n",
-				amba_readl(FIO_CTR_REG),
-				amba_readl(FIO_DMACTR_REG));
-			ambarella_sd_reset_all(pslotinfo->mmc);
-		}
-		goto ambarella_sd_irq_exit;
-	}
+
+	ambsd_dbg(pslotinfo, "%s nis = 0x%x, eis = 0x%x & %u\n",
+		__func__, nis, eis, pslotinfo->state);
 
 	if (nis & SD_NIS_CARD) {
 		ambsd_dbg(pslotinfo, "SD_NIS_CARD\n");
 		mmc_signal_sdio_irq(pslotinfo->mmc);
 	}
 
-	if (!ambarella_is_valid_gpio_irq(&pslotinfo->plat_info->gpio_cd) &&
-		(pslotinfo->plat_info->fixed_cd == -1)) {
-		if (nis & SD_NIS_REMOVAL) {
-			ambsd_dbg(pslotinfo, "SD_NIS_REMOVAL\n");
-			mmc_detect_change(pslotinfo->mmc,
-				pslotinfo->plat_info->cd_delay);
-		} else if (nis & SD_NIS_INSERT) {
-			ambsd_dbg(pslotinfo, "SD_NIS_INSERT\n");
-			mmc_detect_change(pslotinfo->mmc,
-				pslotinfo->plat_info->cd_delay);
-		}
-	}
-
+	// SD_NIS_REMOVAL, SD_NIS_INSERT and SD_NIS_DMA are disabled and not
+	// handled.
 	if (eis) {
 		if (eis & (SD_EIS_CMD_TMOUT_ERR | SD_EIS_CMD_CRC_ERR |
 			SD_EIS_CMD_BIT_ERR | SD_EIS_CMD_IDX_ERR |
@@ -720,18 +712,12 @@
 			ambarella_sd_data_done(pslotinfo, nis, eis);
 		}
 	} else {
-		if (nis & SD_NIS_CMD_DONE) {
+		if (nis & SD_NIS_XFR_DONE) {
+			// Both command and data are now done.
+			ambarella_sd_data_done(pslotinfo, nis, eis);
+		} else if (nis & SD_NIS_CMD_DONE) {
 			ambarella_sd_cmd_done(pslotinfo, nis, eis);
 		}
-		if (nis & SD_NIS_XFR_DONE) {
-			ambarella_sd_data_done(pslotinfo, nis, eis);
-		}
-#if 0
-		if (nis & SD_NIS_DMA) {
-			amba_writel(pinfo->regbase + SD_DMA_ADDR_OFFSET,
-			amba_readl(pinfo->regbase + SD_DMA_ADDR_OFFSET));
-		}
-#endif
 	}
 
 ambarella_sd_irq_exit:
@@ -945,34 +931,6 @@
 	}
 }
 
-static u32 ambarella_sd_check_cd(struct mmc_host *mmc)
-{
-	struct ambarella_sd_mmc_info *pslotinfo = mmc_priv(mmc);
-	struct ambarella_sd_controller_info *pinfo;
-	int cdpin;
-	u32 valid_cd = 0;
-
-	pinfo = (struct ambarella_sd_controller_info *)pslotinfo->pinfo;
-
-	if (pslotinfo->plat_info->fixed_cd == 1) {
-		valid_cd = 1;
-	} else if (pslotinfo->plat_info->fixed_cd == 0) {
-		valid_cd = 0;
-	} else {
-		cdpin = ambarella_sd_gpio_cd_check_val(pslotinfo);
-		if (cdpin == 1) {
-			valid_cd = 1;
-		} else if (cdpin == -1) {
-			if (amba_tstbitsl(pinfo->regbase + SD_STA_OFFSET,
-				SD_STA_CARD_INSERTED)) {
-				valid_cd = 1;
-			}
-		}
-	}
-
-	return valid_cd;
-}
-
 static inline void ambarella_sd_prepare_tmo(
 	struct ambarella_sd_mmc_info *pslotinfo,
 	struct mmc_data *pmmcdata)
@@ -1120,42 +1078,37 @@
 	struct ambarella_sd_mmc_info *pslotinfo)
 {
 	struct ambarella_sd_controller_info *pinfo;
-	u32 valid_request = 0;
-	u32 counter = 0;
 	u32 sta_reg;
 	u32 tmpreg;
 	long timeout;
+	u16 nixen_reg;
 
 	pinfo = (struct ambarella_sd_controller_info *)pslotinfo->pinfo;
 
 	ambarella_sd_request_bus(pslotinfo->mmc);
 
-	valid_request = ambarella_sd_check_cd(pslotinfo->mmc);
-	ambsd_dbg(pslotinfo, "cmd = %u valid_request = %u.\n",
-		pslotinfo->mrq->cmd->opcode, valid_request);
-	if (!valid_request) {
-		pslotinfo->mrq->cmd->error = -ENOMEDIUM;
-		pslotinfo->state = AMBA_SD_STATE_ERR;
-		goto ambarella_sd_send_cmd_exit;
-	}
+	ambsd_dbg(pslotinfo, "cmd = %u.\n", pslotinfo->mrq->cmd->opcode);
 
 	ambarella_sd_check_ios(pslotinfo->mmc, &pslotinfo->mmc->ios);
+
+	sta_reg = amba_readl(pinfo->regbase + SD_STA_OFFSET);
 	if (pslotinfo->mrq->data) {
-		while (1) {
-			sta_reg = amba_readl(pinfo->regbase + SD_STA_OFFSET);
-			if ((sta_reg & SD_STA_CMD_INHIBIT_DAT) == 0) {
-				break;
-			}
-			counter++;
-			if (counter > CONFIG_SD_AMBARELLA_WAIT_COUNTER_LIMIT) {
-				ambsd_warn(pslotinfo,
-					"Wait SD_STA_CMD_INHIBIT_DAT...\n");
-				pslotinfo->state = AMBA_SD_STATE_ERR;
-				pinfo->reset_error = 1;
-				goto ambarella_sd_send_cmd_exit;
-			}
+		if (sta_reg & SD_STA_CMD_INHIBIT_DAT) {
+			// This should not happen because we wait for commands to
+			// complete
+			ambsd_warn(pslotinfo, "SD_STA_CMD_INHIBIT_DAT...\n");
+			pslotinfo->state = AMBA_SD_STATE_ERR;
+			pinfo->reset_error = 1;
+			goto ambarella_sd_send_cmd_exit;
 		}
 
+		// We're doing blocking data transfer, and we don't want to care about
+		// when the command is done. The data done IRQ should come and we can
+		// handle both. This saves us one IRQ.
+		nixen_reg = amba_readw(pinfo->regbase + SD_NIXEN_OFFSET);
+		amba_writew(pinfo->regbase + SD_NIXEN_OFFSET,
+			nixen_reg & ~SD_NIXEN_CMD_DONE);
+
 		amba_writeb(pinfo->regbase + SD_TMO_OFFSET, pslotinfo->tmo);
 		amba_writel(pinfo->regbase + SD_DMA_ADDR_OFFSET,
 			pslotinfo->dma_address);
@@ -1165,19 +1118,13 @@
 		amba_write2w(pinfo->regbase + SD_XFR_OFFSET,
 			pslotinfo->xfr_reg, pslotinfo->cmd_reg);
 	} else {
-		while (1) {
-			sta_reg = amba_readl(pinfo->regbase + SD_STA_OFFSET);
-			if ((sta_reg & SD_STA_CMD_INHIBIT_CMD) == 0) {
-				break;
-			}
-			counter++;
-			if (counter > CONFIG_SD_AMBARELLA_WAIT_COUNTER_LIMIT) {
-				ambsd_warn(pslotinfo,
-					"Wait SD_STA_CMD_INHIBIT_CMD...\n");
-				pslotinfo->state = AMBA_SD_STATE_ERR;
-				pinfo->reset_error = 1;
-				goto ambarella_sd_send_cmd_exit;
-			}
+		if (sta_reg & SD_STA_CMD_INHIBIT_CMD) {
+			// This should not happen because we wait for commands to
+			// complete
+			ambsd_warn(pslotinfo, "Wait SD_STA_CMD_INHIBIT_CMD...\n");
+			pslotinfo->state = AMBA_SD_STATE_ERR;
+			pinfo->reset_error = 1;
+			goto ambarella_sd_send_cmd_exit;
 		}
 
 		amba_writel(pinfo->regbase + SD_ARG_OFFSET, pslotinfo->arg_reg);
@@ -1254,6 +1201,8 @@
 				sta_reg, pslotinfo->sta_reg);
 			pslotinfo->mrq->data->error = -ETIMEDOUT;
 		}
+		// Now that we're done, restore the cmd done IRQ.
+		amba_writew(pinfo->regbase + SD_NIXEN_OFFSET, nixen_reg);
 	}
 }
 
@@ -1339,14 +1288,11 @@
 static int ambarella_sd_get_cd(struct mmc_host *mmc)
 {
 	struct ambarella_sd_mmc_info *pslotinfo = mmc_priv(mmc);
-	u32 cdpin;
 
-	ambarella_sd_request_bus(mmc);
-	cdpin = ambarella_sd_check_cd(mmc);
-	ambarella_sd_release_bus(mmc);
-
-	ambsd_dbg(pslotinfo, "CD[%u].\n", cdpin);
-	return cdpin ? 1 : 0;
+	// Slot 0 is always 0.
+	// Slot 1 is always 1.
+	// See linux-2.6.38/arch/arm/mach-ambarella/init-dropcam-quartz.c
+	return pslotinfo->plat_info->fixed_cd;
 }
 
 static void ambarella_sd_enable_sdio_irq(struct mmc_host *mmc, int enable)
diff --git a/drivers/mtd/nand/nand_base.c b/drivers/mtd/nand/nand_base.c
index 0e3763a..3b309a5 100644
--- a/drivers/mtd/nand/nand_base.c
+++ b/drivers/mtd/nand/nand_base.c
@@ -3153,7 +3153,8 @@
 				(*maf_id == NAND_MFR_SAMSUNG ||
 				 *maf_id == NAND_MFR_HYNIX ||
 				 *maf_id == NAND_MFR_TOSHIBA ||
-				 *maf_id == NAND_MFR_AMD)) ||
+				 *maf_id == NAND_MFR_AMD ||
+				 *maf_id == NAND_MFR_WINBOND)) ||
 			(mtd->writesize == 2048 &&
 			 *maf_id == NAND_MFR_MICRON))
 		chip->options |= NAND_BBT_SCAN2NDPAGE;
diff --git a/drivers/mtd/nand/nand_ids.c b/drivers/mtd/nand/nand_ids.c
index 00cf1b0..b053db8 100644
--- a/drivers/mtd/nand/nand_ids.c
+++ b/drivers/mtd/nand/nand_ids.c
@@ -176,6 +176,7 @@
 	{NAND_MFR_HYNIX, "Hynix"},
 	{NAND_MFR_MICRON, "Micron"},
 	{NAND_MFR_AMD, "AMD"},
+	{NAND_MFR_WINBOND, "Winbond"},
 	{0x0, "Unknown"}
 };
 
diff --git a/drivers/net/wan/.gitignore b/drivers/net/wan/.gitignore
new file mode 100644
index 0000000..dae3ea6
--- /dev/null
+++ b/drivers/net/wan/.gitignore
@@ -0,0 +1 @@
+wanxlfw.inc
diff --git a/drivers/pci/.gitignore b/drivers/pci/.gitignore
new file mode 100644
index 0000000..f297ca8
--- /dev/null
+++ b/drivers/pci/.gitignore
@@ -0,0 +1,4 @@
+classlist.h
+devlist.h
+gen-devlist
+
diff --git a/drivers/scsi/.gitignore b/drivers/scsi/.gitignore
new file mode 100644
index 0000000..c89ae9a
--- /dev/null
+++ b/drivers/scsi/.gitignore
@@ -0,0 +1 @@
+53c700_d.h
diff --git a/drivers/scsi/aic7xxx/.gitignore b/drivers/scsi/aic7xxx/.gitignore
new file mode 100644
index 0000000..b8ee24d
--- /dev/null
+++ b/drivers/scsi/aic7xxx/.gitignore
@@ -0,0 +1,6 @@
+aic79xx_reg.h
+aic79xx_reg_print.c
+aic79xx_seq.h
+aic7xxx_reg.h
+aic7xxx_reg_print.c
+aic7xxx_seq.h
diff --git a/drivers/tty/vt/.gitignore b/drivers/tty/vt/.gitignore
new file mode 100644
index 0000000..83683a2
--- /dev/null
+++ b/drivers/tty/vt/.gitignore
@@ -0,0 +1,2 @@
+consolemap_deftbl.c
+defkeymap.c
diff --git a/drivers/usb/gadget/dropcam_storage.c b/drivers/usb/gadget/dropcam_storage.c
index 1502499..8e80069 100644
--- a/drivers/usb/gadget/dropcam_storage.c
+++ b/drivers/usb/gadget/dropcam_storage.c
@@ -104,8 +104,10 @@
 };
 FSG_MODULE_PARAMETERS(/* no prefix */, mod_data);
 
+static struct fsg_common common;
+
 static unsigned long msg_registered;
-static void msg_cleanup(void);
+static int msg_cleanup(void);
 
 static int msg_thread_exits(struct fsg_common *common)
 {
@@ -118,7 +120,6 @@
 	static const struct fsg_operations ops = {
 		.thread_exits = msg_thread_exits,
 	};
-	static struct fsg_common common;
 
 	struct fsg_common *retp;
 	struct fsg_config config;
@@ -188,12 +189,22 @@
 }
 module_init(msg_init);
 
-static void msg_cleanup(void)
+static int msg_cleanup(void)
 {
-	if (test_and_clear_bit(0, &msg_registered))
+	if (test_and_clear_bit(0, &msg_registered)) {
 		usb_composite_unregister(&msg_driver);
-	fs_release_netlink();
+                fs_release_netlink();
+                return 0;
+        }
+        return 1;
 }
-module_exit(msg_cleanup);
+
+static void module_cleanup(void)
+{
+        if (msg_cleanup()) {
+		wait_for_completion(&common.thread_notifier);
+        }
+}
+module_exit(module_cleanup);
 
 #include "dropcam_fsdrv.c"
diff --git a/drivers/video/logo/.gitignore b/drivers/video/logo/.gitignore
new file mode 100644
index 0000000..e48355f
--- /dev/null
+++ b/drivers/video/logo/.gitignore
@@ -0,0 +1,7 @@
+#
+# Generated files
+#
+*_mono.c
+*_vga16.c
+*_clut224.c
+*_gray256.c
diff --git a/drivers/watchdog/dropcam_tps3813k33.c b/drivers/watchdog/dropcam_tps3813k33.c
index a5061c3..5bdc03e 100644
--- a/drivers/watchdog/dropcam_tps3813k33.c
+++ b/drivers/watchdog/dropcam_tps3813k33.c
@@ -40,27 +40,22 @@
 #define	 DC_WDT_RESET_GPIO	 54
 
 #define	 DC_WDT_HALF_CYCLE_TIME	     ((HZ * 550)/1000)
+#define	 KERNEL_HEARTBEAT_EXPIRE_TIMEOUT	     (HZ * 10)	/* 10 seconds */
 
-static struct workqueue_struct *tps3813k33_wdt_kicker;
+static struct workqueue_struct *tps3813k33_kernel_heartbeat;
 
 struct dropcam_tps3813k33_info {
 	int last_toggle_value;
 	struct timer_list * ptimer;
+	unsigned long last_kernel_heartbeat;
 	struct work_struct tps3813k33_work;
 };
 
 static struct timer_list dropcam_tps3813k33_timer;
 
-static void dropcam_tps3813k33_toggle_worker(struct work_struct *work) {
+static void dropcam_tps3813k33_heartbeat_worker(struct work_struct *work) {
 	struct dropcam_tps3813k33_info *wdt_info = container_of(work, struct dropcam_tps3813k33_info, tps3813k33_work);
-
-	wdt_info->last_toggle_value = !wdt_info->last_toggle_value;
-
-	ambarella_gpio_set(DC_WDT_RESET_GPIO, wdt_info->last_toggle_value);
-
-	ambarella_gpio_set(DC_WDT_ENABLE_GPIO, 1);
-
-	mod_timer(wdt_info->ptimer, jiffies + DC_WDT_HALF_CYCLE_TIME);
+	wdt_info->last_kernel_heartbeat = jiffies;
 }
 
 static void dropcam_tps3813k33_toggle_timer_handler(unsigned long data)
@@ -68,7 +63,19 @@
 	struct dropcam_tps3813k33_info *wdt_info =
 		(struct dropcam_tps3813k33_info *)data;
 
-	queue_work(tps3813k33_wdt_kicker, &wdt_info->tps3813k33_work);
+	queue_work(tps3813k33_kernel_heartbeat, &wdt_info->tps3813k33_work);
+
+	/* this timer interrupt handler might still fire after kernel panic
+	 * kick the watchdog only if the kernel is alive */
+	if (jiffies - wdt_info->last_kernel_heartbeat < KERNEL_HEARTBEAT_EXPIRE_TIMEOUT) {
+		wdt_info->last_toggle_value = !wdt_info->last_toggle_value;
+
+		ambarella_gpio_set(DC_WDT_RESET_GPIO, wdt_info->last_toggle_value);
+
+		ambarella_gpio_set(DC_WDT_ENABLE_GPIO, 1);
+
+		mod_timer(wdt_info->ptimer, jiffies + DC_WDT_HALF_CYCLE_TIME);
+	}
 }
 
 static const struct file_operations dropcam_tps3813k33_fops = {
@@ -105,8 +112,8 @@
 
 	pinfo->ptimer->expires = jiffies + DC_WDT_HALF_CYCLE_TIME;
 
-	tps3813k33_wdt_kicker = create_workqueue("tps3813k33_wdt_kicker");
-	INIT_WORK(&pinfo->tps3813k33_work, dropcam_tps3813k33_toggle_worker);
+	tps3813k33_kernel_heartbeat = create_workqueue("tps3813k33_kernel_heartbeat");
+	INIT_WORK(&pinfo->tps3813k33_work, dropcam_tps3813k33_heartbeat_worker);
 
 	printk(KERN_INFO "Enabling TPS3813 HW WDT\n");
 	ambarella_gpio_config(DC_WDT_ENABLE_GPIO, GPIO_FUNC_SW_OUTPUT);
@@ -116,6 +123,8 @@
 
 	add_timer(pinfo->ptimer);
 
+	pinfo->last_kernel_heartbeat = jiffies;
+
 	goto dropcam_tps3813k33_ok;
 
 dropcam_tps3813k33_no_pinfo:
diff --git a/drivers/zorro/.gitignore b/drivers/zorro/.gitignore
new file mode 100644
index 0000000..34f980b
--- /dev/null
+++ b/drivers/zorro/.gitignore
@@ -0,0 +1,2 @@
+devlist.h
+gen-devlist
diff --git a/firmware/.gitignore b/firmware/.gitignore
new file mode 100644
index 0000000..d9c6901
--- /dev/null
+++ b/firmware/.gitignore
@@ -0,0 +1,6 @@
+*.gen.S
+*.fw
+*.bin
+*.csp
+*.dsp
+ihex2fw
diff --git a/firmware/cis/.gitignore b/firmware/cis/.gitignore
new file mode 100644
index 0000000..1de3984
--- /dev/null
+++ b/firmware/cis/.gitignore
@@ -0,0 +1 @@
+*.cis
diff --git a/include/linux/mtd/nand.h b/include/linux/mtd/nand.h
index 1f489b2..eb14548 100644
--- a/include/linux/mtd/nand.h
+++ b/include/linux/mtd/nand.h
@@ -556,6 +556,7 @@
 #define NAND_MFR_HYNIX		0xad
 #define NAND_MFR_MICRON		0x2c
 #define NAND_MFR_AMD		0x01
+#define NAND_MFR_WINBOND	0xef
 
 /**
  * struct nand_flash_dev - NAND Flash Device ID Structure
diff --git a/kernel/.gitignore b/kernel/.gitignore
new file mode 100644
index 0000000..ab4f109
--- /dev/null
+++ b/kernel/.gitignore
@@ -0,0 +1,6 @@
+#
+# Generated files
+#
+config_data.h
+config_data.gz
+timeconst.h
diff --git a/kernel/debug/kdb/.gitignore b/kernel/debug/kdb/.gitignore
new file mode 100644
index 0000000..396d12e
--- /dev/null
+++ b/kernel/debug/kdb/.gitignore
@@ -0,0 +1 @@
+gen-kdb_cmds.c
diff --git a/lib/.gitignore b/lib/.gitignore
new file mode 100644
index 0000000..3bef1ea
--- /dev/null
+++ b/lib/.gitignore
@@ -0,0 +1,6 @@
+#
+# Generated files
+#
+gen_crc32table
+crc32table.h
+
diff --git a/lib/raid6/.gitignore b/lib/raid6/.gitignore
new file mode 100644
index 0000000..162beca
--- /dev/null
+++ b/lib/raid6/.gitignore
@@ -0,0 +1,4 @@
+mktables
+altivec*.c
+int*.c
+tables.c
diff --git a/net/wireless/.gitignore b/net/wireless/.gitignore
new file mode 100644
index 0000000..c33451b
--- /dev/null
+++ b/net/wireless/.gitignore
@@ -0,0 +1 @@
+regdb.c
diff --git a/scripts/.gitignore b/scripts/.gitignore
new file mode 100644
index 0000000..e2741d2
--- /dev/null
+++ b/scripts/.gitignore
@@ -0,0 +1,10 @@
+#
+# Generated files
+#
+conmakehash
+kallsyms
+pnmtologo
+bin2c
+unifdef
+ihex2fw
+recordmcount
diff --git a/scripts/basic/.gitignore b/scripts/basic/.gitignore
new file mode 100644
index 0000000..bf8b199
--- /dev/null
+++ b/scripts/basic/.gitignore
@@ -0,0 +1,3 @@
+hash
+fixdep
+docproc
diff --git a/scripts/dtc/.gitignore b/scripts/dtc/.gitignore
new file mode 100644
index 0000000..095acb4
--- /dev/null
+++ b/scripts/dtc/.gitignore
@@ -0,0 +1,5 @@
+dtc
+dtc-lexer.lex.c
+dtc-parser.tab.c
+dtc-parser.tab.h
+
diff --git a/scripts/genksyms/.gitignore b/scripts/genksyms/.gitignore
new file mode 100644
index 0000000..be5cadb
--- /dev/null
+++ b/scripts/genksyms/.gitignore
@@ -0,0 +1,4 @@
+keywords.c
+lex.c
+parse.[ch]
+genksyms
diff --git a/scripts/kconfig/.gitignore b/scripts/kconfig/.gitignore
new file mode 100644
index 0000000..624f650
--- /dev/null
+++ b/scripts/kconfig/.gitignore
@@ -0,0 +1,23 @@
+#
+# Generated files
+#
+config*
+lex.*.c
+*.tab.c
+*.tab.h
+zconf.hash.c
+*.moc
+lkc_defs.h
+gconf.glade.h
+*.pot
+*.mo
+
+#
+# configuration programs
+#
+conf
+mconf
+nconf
+qconf
+gconf
+kxgettext
diff --git a/scripts/kconfig/lxdialog/.gitignore b/scripts/kconfig/lxdialog/.gitignore
new file mode 100644
index 0000000..90b08ff
--- /dev/null
+++ b/scripts/kconfig/lxdialog/.gitignore
@@ -0,0 +1,4 @@
+#
+# Generated files
+#
+lxdialog
diff --git a/scripts/mod/.gitignore b/scripts/mod/.gitignore
new file mode 100644
index 0000000..e9b7abe
--- /dev/null
+++ b/scripts/mod/.gitignore
@@ -0,0 +1,4 @@
+elfconfig.h
+mk_elfconfig
+modpost
+
diff --git a/scripts/selinux/genheaders/.gitignore b/scripts/selinux/genheaders/.gitignore
new file mode 100644
index 0000000..4c0b646
--- /dev/null
+++ b/scripts/selinux/genheaders/.gitignore
@@ -0,0 +1 @@
+genheaders
diff --git a/scripts/selinux/mdp/.gitignore b/scripts/selinux/mdp/.gitignore
new file mode 100644
index 0000000..654546d
--- /dev/null
+++ b/scripts/selinux/mdp/.gitignore
@@ -0,0 +1,2 @@
+# Generated file
+mdp
diff --git a/security/apparmor/.gitignore b/security/apparmor/.gitignore
new file mode 100644
index 0000000..4d995ae
--- /dev/null
+++ b/security/apparmor/.gitignore
@@ -0,0 +1,6 @@
+#
+# Generated include files
+#
+af_names.h
+capability_names.h
+rlim_names.h
diff --git a/security/selinux/.gitignore b/security/selinux/.gitignore
new file mode 100644
index 0000000..2e5040a
--- /dev/null
+++ b/security/selinux/.gitignore
@@ -0,0 +1,2 @@
+av_permissions.h
+flask.h
diff --git a/sound/oss/.gitignore b/sound/oss/.gitignore
new file mode 100644
index 0000000..7efb12b
--- /dev/null
+++ b/sound/oss/.gitignore
@@ -0,0 +1,4 @@
+#Ignore generated files
+maui_boot.h
+pss_boot.h
+trix_boot.h
diff --git a/sound/soc/ambarella/ambarella_i2s.c b/sound/soc/ambarella/ambarella_i2s.c
index 84738b2..d063cd3 100644
--- a/sound/soc/ambarella/ambarella_i2s.c
+++ b/sound/soc/ambarella/ambarella_i2s.c
@@ -261,8 +261,12 @@
 static int ambarella_i2s_prepare(struct snd_pcm_substream *substream,
 			struct snd_soc_dai *dai)
 {
-	if(substream->stream == SNDRV_PCM_STREAM_CAPTURE)
-		dai_fifo_rst();
+	if(substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
+		dai_rx_disable();
+        } else {
+		dai_tx_disable();
+        }
+	dai_fifo_rst();
 	return 0;
 }
 
diff --git a/sound/soc/ambarella/ambarella_pcm.c b/sound/soc/ambarella/ambarella_pcm.c
index 1f64aa0..cbb0b45 100644
--- a/sound/soc/ambarella/ambarella_pcm.c
+++ b/sound/soc/ambarella/ambarella_pcm.c
@@ -100,53 +100,40 @@
 	return ambarella_dma_desc_stop(prtd->channel);
 }
 
-static void dai_dma_handler(void *dev_id)
+static void dai_dma_handler(void *dev_id, u32 status)
 {
 	u32 *rpt;
-	int cur_descr;
 	struct snd_pcm_substream *substream = dev_id;
 	struct snd_pcm_runtime *runtime = substream->runtime;
 	struct ambarella_runtime_data *prtd = runtime->private_data;
 
-	cur_descr = prtd->last_descr;
+	rpt = &prtd->dma_rpt_buf[prtd->last_descr];
+	/* Descriptor chain done */
+	/* In actual test we only see `status` has the done bit set but not the
+	 * report buffer. The old ambarella code only checks the report buffer
+	 * but let also check it just in case. */
+	if (*rpt & 0x10000000 || (status & DMA_CHANX_STA_DD)) {
+		/* Don't increase the descriptor index because DMA
+		 * is terminated. */
+                *rpt &= ~0x10000000;
+		return;
+	}
 
 	prtd->last_descr++;
 	if (prtd->last_descr >= prtd->ndescr) {
 		prtd->last_descr = 0;
 	}
 	snd_pcm_period_elapsed(substream);
-
-	/* Check if stop dma chain */
-	rpt = &prtd->dma_rpt_buf[cur_descr];
-	if (*rpt & 0x10000000) { /* Descriptor chain done */
-		*rpt &= (~0x10000000);
-		if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
-			/* dai_tx_disable() */
-			amba_clrbitsl(I2S_INIT_REG, 0x4);
-			/* dai_fifo_rst() */
-			if(!amba_tstbitsl(I2S_INIT_REG, 0x6))
-				amba_setbitsl(I2S_INIT_REG, 0x1);
-		} else {
-			/* dai_rx_disable() */
-			amba_clrbitsl(I2S_INIT_REG, 0x2);
-			/* dai_fifo_rst() */
-			if(!amba_tstbitsl(I2S_INIT_REG, 0x6))
-				amba_setbitsl(I2S_INIT_REG, 0x1);
-		}
-	}
-
-	//if (*rpt & 0x08000000)  /* Descriptor DMA operation done */
-	//	*rpt &= (~0x08000000);
 }
 
 static void dai_rx_dma_handler(void *dev_id, u32 status)
 {
-	dai_dma_handler(dev_id);
+	dai_dma_handler(dev_id, status);
 }
 
 static void dai_tx_dma_handler(void *dev_id, u32 status)
 {
-	dai_dma_handler(dev_id);
+	dai_dma_handler(dev_id, status);
 }
 
 /* this may get called several times by oss emulation */
@@ -282,6 +269,10 @@
 	/* Ensure dma is stopped */
 	ambarella_dai_dma_stop(prtd);
 
+	/* Reset ring buffer. ALSA will reset internal `hw_ptr` after
+	 * `snd_pcm_prepare()`. If we don't reset the pointer here we will
+	 * trigger a XRUN at start due to large `hw_ptr` delta.*/
+	prtd->last_descr = 0;
 	return 0;
 }
 
diff --git a/sound/soc/codecs/wm8974_amb.c b/sound/soc/codecs/wm8974_amb.c
index 046bfa0..b3d0541 100755
--- a/sound/soc/codecs/wm8974_amb.c
+++ b/sound/soc/codecs/wm8974_amb.c
@@ -222,8 +222,8 @@
 SOC_SINGLE("Mono Playback Switch", WM8974_MONOMIX, 6, 1, 1),
 
 /* DAC / ADC oversampling */
-SOC_SINGLE("DAC 128x Oversampling Switch", WM8974_DAC, 8, 1, 0),
-SOC_SINGLE("ADC 128x Oversampling Switch", WM8974_ADC, 8, 1, 0),
+SOC_SINGLE("DAC 128x Oversampling Switch", WM8974_DAC, 3, 1, 0),
+SOC_SINGLE("ADC 128x Oversampling Switch", WM8974_ADC, 3, 1, 0),
 };
 
 /* Speaker Output Mixer */
diff --git a/tools/perf/.gitignore b/tools/perf/.gitignore
new file mode 100644
index 0000000..cb43289
--- /dev/null
+++ b/tools/perf/.gitignore
@@ -0,0 +1,22 @@
+PERF-BUILD-OPTIONS
+PERF-CFLAGS
+PERF-GUI-VARS
+PERF-VERSION-FILE
+perf
+perf-help
+perf-record
+perf-report
+perf-stat
+perf-top
+perf*.1
+perf*.xml
+perf*.html
+common-cmds.h
+perf.data
+perf.data.old
+perf-archive
+tags
+TAGS
+cscope*
+config.mak
+config.mak.autogen
diff --git a/usr/.gitignore b/usr/.gitignore
new file mode 100644
index 0000000..8e48117
--- /dev/null
+++ b/usr/.gitignore
@@ -0,0 +1,10 @@
+#
+# Generated files
+#
+gen_init_cpio
+initramfs_data.cpio
+initramfs_data.cpio.gz
+initramfs_data.cpio.bz2
+initramfs_data.cpio.lzma
+initramfs_list
+include