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