]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
authorDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 26 Mar 2010 14:55:59 +0000 (14:55 +0000)
committerDavid Woodhouse <David.Woodhouse@intel.com>
Fri, 26 Mar 2010 14:55:59 +0000 (14:55 +0000)
Conflicts:
drivers/mtd/nand/sh_flctl.c

Maxim's patch to initialise sysfs attributes depends on the patch which
actually adds sysfs_attr_init().

12 files changed:
1  2 
MAINTAINERS
arch/arm/mach-ep93xx/include/mach/ts72xx.h
arch/arm/mach-ep93xx/ts72xx.c
drivers/mtd/inftlcore.c
drivers/mtd/maps/pismo.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/au1550nd.c
drivers/mtd/nand/bcm_umi_nand.c
drivers/mtd/nand/mxc_nand.c
drivers/mtd/nand/omap2.c
drivers/mtd/nand/sh_flctl.c
lib/idr.c

diff --combined MAINTAINERS
index ecf4148ec2b3e827e171a8b5e3c582d9c20c0731,449d44402083aaada8a86aa68a05ae3e6398cd12..32d7091652c63faef3ddb0d2d0e0d65c502722f4
@@@ -71,6 -71,7 +71,7 @@@ Descriptions of section entries
        M: Mail patches to: FullName <address@domain>
        L: Mailing list that is relevant to this area
        W: Web-page with status/info
+       Q: Patchwork web based patch tracking system site
        T: SCM tree type and location.  Type is one of: git, hg, quilt, stgit.
        S: Status, one of the following:
           Supported:   Someone is actually paid to look after this.
@@@ -182,6 -183,7 +183,7 @@@ M: Ron Minnich <rminnich@sandia.gov
  M:    Latchesar Ionkov <lucho@ionkov.net>
  L:    v9fs-developer@lists.sourceforge.net
  W:    http://swik.net/v9fs
+ Q:    http://patchwork.kernel.org/project/v9fs-devel/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ericvh/v9fs.git
  S:    Maintained
  F:    Documentation/filesystems/9p.txt
@@@ -221,6 -223,7 +223,7 @@@ F: drivers/net/acenic
  
  ACER ASPIRE ONE TEMPERATURE AND FAN DRIVER
  M:    Peter Feuerer <peter@piie.net>
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://piie.net/?section=acerhdf
  S:    Maintained
  F:    drivers/platform/x86/acerhdf.c
  ACER WMI LAPTOP EXTRAS
  M:    Carlos Corbacho <carlos@strangeworlds.co.uk>
  L:    aceracpi@googlegroups.com (subscribers-only)
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://code.google.com/p/aceracpi
  S:    Maintained
  F:    drivers/platform/x86/acer-wmi.c
@@@ -236,6 -240,7 +240,7 @@@ ACP
  M:    Len Brown <lenb@kernel.org>
  L:    linux-acpi@vger.kernel.org
  W:    http://www.lesswatts.org/projects/acpi/
+ Q:    http://patchwork.kernel.org/project/linux-acpi/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6.git
  S:    Supported
  F:    drivers/acpi/
@@@ -288,7 -293,7 +293,7 @@@ F: drivers/acpi/video.
  
  ACPI WMI DRIVER
  M:    Carlos Corbacho <carlos@strangeworlds.co.uk>
- L:    linux-acpi@vger.kernel.org
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://www.lesswatts.org/projects/acpi/
  S:    Maintained
  F:    drivers/platform/x86/wmi.c
@@@ -426,7 -431,6 +431,6 @@@ P: Jordan Crous
  L:    linux-geode@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.amd.com/us-en/ConnectivitySolutions/TechnicalResources/0,,50_2334_2452_11363,00.html
  S:    Supported
- F:    arch/x86/kernel/geode_32.c
  F:    drivers/char/hw_random/geode-rng.c
  F:    drivers/crypto/geode*
  F:    drivers/video/geode/
@@@ -662,6 -666,12 +666,12 @@@ T:       git://git.pengutronix.de/git/imx/lin
  F:    arch/arm/mach-mx*/
  F:    arch/arm/plat-mxc/
  
+ ARM/FREESCALE IMX51
+ M:    Amit Kucheria <amit.kucheria@canonical.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ S:    Maintained
+ F:    arch/arm/mach-mx5/
  ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -935,6 -945,16 +945,16 @@@ W:       http://www.fluff.org/ben/linux
  S:    Maintained
  F:    arch/arm/mach-s3c6410/
  
+ ARM/SHMOBILE ARM ARCHITECTURE
+ M:    Paul Mundt <lethal@linux-sh.org>
+ M:    Magnus Damm <magnus.damm@gmail.com>
+ L:    linux-sh@vger.kernel.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/genesis-2.6.git
+ W:    http://oss.renesas.com
+ S:    Supported
+ F:    arch/arm/mach-shmobile/
+ F:    drivers/sh/
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -964,10 -984,18 +984,18 @@@ W:      http://www.arm.linux.org.uk
  S:    Maintained
  F:    arch/arm/vfp/
  
+ ASC7621 HARDWARE MONITOR DRIVER
+ M:    George Joseph <george.joseph@fairview5.com>
+ L:    lm-sensors@lm-sensors.org
+ S:    Maintained
+ F:    Documentation/hwmon/asc7621
+ F:    drivers/hwmon/asc7621.c
  ASUS ACPI EXTRAS DRIVER
  M:    Corentin Chary <corentincj@iksaif.net>
  M:    Karol Kozimor <sziwan@users.sourceforge.net>
  L:    acpi4asus-user@lists.sourceforge.net
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://acpi4asus.sf.net
  S:    Maintained
  F:    drivers/platform/x86/asus_acpi.c
@@@ -981,6 -1009,7 +1009,7 @@@ F:       drivers/hwmon/asb100.
  ASUS LAPTOP EXTRAS DRIVER
  M:    Corentin Chary <corentincj@iksaif.net>
  L:    acpi4asus-user@lists.sourceforge.net
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://acpi4asus.sf.net
  S:    Maintained
  F:    drivers/platform/x86/asus-laptop.c
@@@ -1222,6 -1251,13 +1251,13 @@@ W:    http://blackfin.uclinux.or
  S:    Supported
  F:    drivers/rtc/rtc-bfin.c
  
+ BLACKFIN SDH DRIVER
+ M:    Cliff Cai <cliff.cai@analog.com>
+ L:    uclinux-dist-devel@blackfin.uclinux.org
+ W:    http://blackfin.uclinux.org
+ S:    Supported
+ F:    drivers/mmc/host/bfin_sdh.c
  BLACKFIN SERIAL DRIVER
  M:    Sonic Zhang <sonic.zhang@analog.com>
  L:    uclinux-dist-devel@blackfin.uclinux.org
@@@ -1328,6 -1364,7 +1364,7 @@@ BTRFS FILE SYSTE
  M:    Chris Mason <chris.mason@oracle.com>
  L:    linux-btrfs@vger.kernel.org
  W:    http://btrfs.wiki.kernel.org/
+ Q:    http://patchwork.kernel.org/project/linux-btrfs/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mason/btrfs-unstable.git
  S:    Maintained
  F:    Documentation/filesystems/btrfs.txt
@@@ -1368,20 -1405,30 +1405,30 @@@ F:   arch/x86/include/asm/calgary.
  F:    arch/x86/include/asm/tce.h
  
  CAN NETWORK LAYER
- M:    Urs Thuermann <urs.thuermann@volkswagen.de>
+ M:    Oliver Hartkopp <socketcan@hartkopp.net>
  M:    Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
- L:    socketcan-core@lists.berlios.de (subscribers-only)
+ M:    Urs Thuermann <urs.thuermann@volkswagen.de>
+ L:    socketcan-core@lists.berlios.de
+ L:    netdev@vger.kernel.org
  W:    http://developer.berlios.de/projects/socketcan/
  S:    Maintained
- F:    drivers/net/can/
- F:    include/linux/can/
+ F:    net/can/
  F:    include/linux/can.h
+ F:    include/linux/can/core.h
+ F:    include/linux/can/bcm.h
+ F:    include/linux/can/raw.h
  
  CAN NETWORK DRIVERS
  M:    Wolfgang Grandegger <wg@grandegger.com>
- L:    socketcan-core@lists.berlios.de (subscribers-only)
+ L:    socketcan-core@lists.berlios.de
+ L:    netdev@vger.kernel.org
  W:    http://developer.berlios.de/projects/socketcan/
  S:    Maintained
+ F:    drivers/net/can/
+ F:    include/linux/can/dev.h
+ F:    include/linux/can/error.h
+ F:    include/linux/can/netlink.h
+ F:    include/linux/can/platform/
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -1394,6 -1441,15 +1441,15 @@@ F:    arch/powerpc/include/asm/spu*.
  F:    arch/powerpc/oprofile/*cell*
  F:    arch/powerpc/platforms/cell/
  
+ CEPH DISTRIBUTED FILE SYSTEM CLIENT
+ M:    Sage Weil <sage@newdream.net>
+ L:    ceph-devel@lists.sourceforge.net
+ W:    http://ceph.newdream.net/
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sage/ceph-client.git
+ S:    Supported
+ F:    Documentation/filesystems/ceph.txt
+ F:    fs/ceph
  CERTIFIED WIRELESS USB (WUSB) SUBSYSTEM:
  M:    David Vrabel <david.vrabel@csr.com>
  L:    linux-usb@vger.kernel.org
@@@ -1473,6 -1529,7 +1529,7 @@@ F:      drivers/scsi/fnic
  CMPC ACPI DRIVER
  M:    Thadeu Lima de Souza Cascardo <cascardo@holoscopio.com>
  M:    Daniel Oliveira Nascimento <don@syst.com.br>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Supported
  F:    drivers/platform/x86/classmate-laptop.c
  
@@@ -1491,6 -1548,7 +1548,7 @@@ M:      Steve French <sfrench@samba.org
  L:    linux-cifs-client@lists.samba.org (moderated for non-subscribers)
  L:    samba-technical@lists.samba.org (moderated for non-subscribers)
  W:    http://linux-cifs.samba.org/
+ Q:    http://patchwork.ozlabs.org/project/linux-cifs-client/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/sfrench/cifs-2.6.git
  S:    Supported
  F:    Documentation/filesystems/cifs.txt
@@@ -1516,6 -1574,7 +1574,7 @@@ F:      drivers/pci/hotplug/cpcihp_generic.
  
  COMPAL LAPTOP SUPPORT
  M:    Cezary Jackiewicz <cezary.jackiewicz@gmail.com>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/compal-laptop.c
  
@@@ -1746,6 -1805,7 +1805,7 @@@ F:      drivers/net/defxx.
  
  DELL LAPTOP DRIVER
  M:    Matthew Garrett <mjg59@srcf.ucam.org>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/dell-laptop.c
  
@@@ -1775,6 -1835,7 +1835,7 @@@ DEVICE-MAPPER  (LVM
  P:    Alasdair Kergon
  L:    dm-devel@redhat.com
  W:    http://sources.redhat.com/dm
+ Q:    http://patchwork.kernel.org/project/dm-devel/list/
  S:    Maintained
  F:    Documentation/device-mapper/
  F:    drivers/md/dm*
@@@ -2028,6 -2089,7 +2089,7 @@@ F:      drivers/edac/r82600_edac.
  EEEPC LAPTOP EXTRAS DRIVER
  M:    Corentin Chary <corentincj@iksaif.net>
  L:    acpi4asus-user@lists.sourceforge.net
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://acpi4asus.sf.net
  S:    Maintained
  F:    drivers/platform/x86/eeepc-laptop.c
@@@ -2087,6 -2149,7 +2149,7 @@@ F:      drivers/net/eexpress.
  ETHERNET BRIDGE
  M:    Stephen Hemminger <shemminger@linux-foundation.org>
  L:    bridge@lists.linux-foundation.org
+ L:    netdev@vger.kernel.org
  W:    http://www.linux-foundation.org/en/Net:Bridge
  S:    Maintained
  F:    include/linux/netfilter_bridge/
@@@ -2118,6 -2181,7 +2181,7 @@@ M:      "Theodore Ts'o" <tytso@mit.edu
  M:    Andreas Dilger <adilger@sun.com>
  L:    linux-ext4@vger.kernel.org
  W:    http://ext4.wiki.kernel.org
+ Q:    http://patchwork.ozlabs.org/project/linux-ext4/list/
  S:    Maintained
  F:    Documentation/filesystems/ext4.txt
  F:    fs/ext4/
@@@ -2141,6 -2205,17 +2205,17 @@@ S:    Supporte
  F:    Documentation/fault-injection/
  F:    lib/fault-inject.c
  
+ FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
+ M:    Robert Love <robert.w.love@intel.com>
+ L:    devel@open-fcoe.org
+ W:    www.Open-FCoE.org
+ S:    Supported
+ F:    drivers/scsi/libfc/
+ F:    drivers/scsi/fcoe/
+ F:    include/scsi/fc/
+ F:    include/scsi/libfc.h
+ F:    include/scsi/libfcoe.h
  FILE LOCKING (flock() and fcntl()/lockf())
  M:    Matthew Wilcox <matthew@wil.cx>
  L:    linux-fsdevel@vger.kernel.org
@@@ -2295,7 -2370,7 +2370,7 @@@ F:      arch/frv
  
  FUJITSU LAPTOP EXTRAS
  M:    Jonathan Woithe <jwoithe@physics.adelaide.edu.au>
- L:    linux-acpi@vger.kernel.org
+ L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
  
@@@ -2372,6 -2447,12 +2447,12 @@@ F:    Documentation/isdn/README.gigase
  F:    drivers/isdn/gigaset/
  F:    include/linux/gigaset_dev.h
  
+ GRETH 10/100/1G Ethernet MAC device driver
+ M:    Kristoffer Glembo <kristoffer@gaisler.com>
+ L:    netdev@vger.kernel.org
+ S:    Maintained
+ F:    drivers/net/greth*
  HARD DRIVE ACTIVE PROTECTION SYSTEM (HDAPS) DRIVER
  M:    Frank Seidel <frank@f-seidel.de>
  L:    lm-sensors@lm-sensors.org
@@@ -2393,6 -2474,18 +2474,18 @@@ L:    linuxppc-dev@ozlabs.or
  S:    Odd Fixes
  F:    drivers/char/hvc_*
  
+ VIRTIO CONSOLE DRIVER
+ M:    Amit Shah <amit.shah@redhat.com>
+ L:    virtualization@lists.linux-foundation.org
+ S:    Maintained
+ F:    drivers/char/virtio_console.c
+ iSCSI BOOT FIRMWARE TABLE (iBFT) DRIVER
+ M:    Peter Jones <pjones@redhat.com>
+ M:    Konrad Rzeszutek Wilk <konrad@kernel.org>
+ S:    Maintained
+ F:    drivers/firmware/iscsi_ibft*
  GSPCA FINEPIX SUBDRIVER
  M:    Frank Zago <frank@zago.net>
  L:    linux-media@vger.kernel.org
@@@ -2465,13 -2558,6 +2558,6 @@@ L:     linux-parisc@vger.kernel.or
  S:    Maintained
  F:    sound/parisc/harmony.*
  
- HAYES ESP SERIAL DRIVER
- M:    "Andrew J. Robinson" <arobinso@nyx.net>
- W:    http://www.nyx.net/~arobinso
- S:    Maintained
- F:    Documentation/serial/hayes-esp.txt
- F:    drivers/char/esp.c
  HEWLETT-PACKARD SMART2 RAID DRIVER
  M:    Chirag Kantharia <chirag.kantharia@hp.com>
  L:    iss_storagedev@hp.com
@@@ -2561,6 -2647,7 +2647,7 @@@ F:      drivers/net/wireless/hostap
  
  HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
  M:    Carlos Corbacho <carlos@strangeworlds.co.uk>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Odd Fixes
  F:    drivers/platform/x86/tc1100-wmi.c
  
@@@ -2679,6 -2766,7 +2766,7 @@@ F:      drivers/scsi/ips.
  IDE SUBSYSTEM
  M:    "David S. Miller" <davem@davemloft.net>
  L:    linux-ide@vger.kernel.org
+ Q:    http://patchwork.ozlabs.org/project/linux-ide/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide-2.6.git
  S:    Maintained
  F:    Documentation/ide/
@@@ -2733,6 -2821,7 +2821,7 @@@ M:      Sean Hefty <sean.hefty@intel.com
  M:    Hal Rosenstock <hal.rosenstock@gmail.com>
  L:    linux-rdma@vger.kernel.org
  W:    http://www.openib.org/
+ Q:    http://patchwork.kernel.org/project/linux-rdma/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/roland/infiniband.git
  S:    Supported
  F:    Documentation/infiniband/
@@@ -2752,12 -2841,13 +2841,13 @@@ INPUT (KEYBOARD, MOUSE, JOYSTICK, TOUCH
  M:    Dmitry Torokhov <dmitry.torokhov@gmail.com>
  M:    Dmitry Torokhov <dtor@mail.ru>
  L:    linux-input@vger.kernel.org
+ Q:    http://patchwork.kernel.org/project/linux-input/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
  S:    Maintained
  F:    drivers/input/
  
  INTEL FRAMEBUFFER DRIVER (excluding 810 and 815)
- M:    Sylvain Meyer <sylvain.meyer@worldonline.fr>
+ M:    Maik Broemme <mbroemme@plusserver.de>
  L:    linux-fbdev@vger.kernel.org
  S:    Maintained
  F:    Documentation/fb/intelfb.txt
@@@ -2771,7 -2861,7 +2861,7 @@@ F:      drivers/video/i810
  
  INTEL MENLOW THERMAL DRIVER
  M:    Sujith Thomas <sujith.thomas@intel.com>
- L:    linux-acpi@vger.kernel.org
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://www.lesswatts.org/projects/acpi/
  S:    Supported
  F:    drivers/platform/x86/intel_menlow.c
@@@ -3008,6 -3098,13 +3098,13 @@@ W:    http://www.melware.d
  S:    Maintained
  F:    drivers/isdn/hardware/eicon/
  
+ IT87 HARDWARE MONITORING DRIVER
+ M:    Jean Delvare <khali@linux-fr.org>
+ L:    lm-sensors@lm-sensors.org
+ S:    Maintained
+ F:    Documentation/hwmon/it87
+ F:    drivers/hwmon/it87.c
  IVTV VIDEO4LINUX DRIVER
  M:    Andy Walls <awalls@radix.net>
  L:    ivtv-devel@ivtvdriver.org (moderated for non-subscribers)
@@@ -3061,6 -3158,7 +3158,7 @@@ F:      drivers/hwmon/k8temp.
  KCONFIG
  M:    Roman Zippel <zippel@linux-m68k.org>
  L:    linux-kbuild@vger.kernel.org
+ Q:    http://patchwork.kernel.org/project/linux-kbuild/list/
  S:    Maintained
  F:    Documentation/kbuild/kconfig-language.txt
  F:    scripts/kconfig/
@@@ -3135,7 -3233,7 +3233,7 @@@ F:      arch/x86/include/asm/svm.
  F:    arch/x86/kvm/svm.c
  
  KERNEL VIRTUAL MACHINE (KVM) FOR POWERPC
- M:    Hollis Blanchard <hollisb@us.ibm.com>
+ M:    Alexander Graf <agraf@suse.de>
  L:    kvm-ppc@vger.kernel.org
  W:    http://kvm.qumranet.com
  S:    Supported
@@@ -3274,6 -3372,7 +3372,7 @@@ M:      Benjamin Herrenschmidt <benh@kernel.
  M:    Paul Mackerras <paulus@samba.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@ozlabs.org
+ Q:    http://patchwork.ozlabs.org/project/linuxppc-dev/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc.git
  S:    Supported
  F:    Documentation/powerpc/
@@@ -3394,6 -3493,13 +3493,13 @@@ S:    Maintaine
  F:    Documentation/ldm.txt
  F:    fs/partitions/ldm.*
  
+ LogFS
+ M:    Joern Engel <joern@logfs.org>
+ L:    logfs@logfs.org
+ W:    logfs.org
+ S:    Maintained
+ F:    fs/logfs/
  LSILOGIC MPT FUSION DRIVERS (FC/SAS/SPI)
  M:    Eric Moore <Eric.Moore@lsi.com>
  M:    support@lsi.com
@@@ -3496,9 -3602,9 +3602,9 @@@ F:      drivers/net/mv643xx_eth.
  F:    include/linux/mv643xx.h
  
  MARVELL MWL8K WIRELESS DRIVER
- M:    Lennert Buytenhek <buytenh@marvell.com>
+ M:    Lennert Buytenhek <buytenh@wantstofly.org>
  L:    linux-wireless@vger.kernel.org
- S:    Supported
+ S:    Maintained
  F:    drivers/net/wireless/mwl8k.c
  
  MARVELL SOC MMC/SD/SDIO CONTROLLER DRIVER
@@@ -3530,6 -3636,7 +3636,7 @@@ M:      Mauro Carvalho Chehab <mchehab@infra
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
  W:    http://linuxtv.org
+ Q:    http://patchwork.kernel.org/project/linux-media/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
  S:    Maintained
  F:    Documentation/dvb/
@@@ -3557,7 -3664,7 +3664,7 @@@ F:      mm
  
  MEMORY RESOURCE CONTROLLER
  M:    Balbir Singh <balbir@linux.vnet.ibm.com>
- M:    Pavel Emelyanov <xemul@openvz.org>
+ M:    Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
  M:    KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
  L:    linux-mm@kvack.org
  S:    Maintained
@@@ -3565,8 -3672,9 +3672,9 @@@ F:      mm/memcontrol.
  
  MEMORY TECHNOLOGY DEVICES (MTD)
  M:    David Woodhouse <dwmw2@infradead.org>
- W:    http://www.linux-mtd.infradead.org/
  L:    linux-mtd@lists.infradead.org
+ W:    http://www.linux-mtd.infradead.org/
+ Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
  T:    git git://git.infradead.org/mtd-2.6.git
  S:    Maintained
  F:    drivers/mtd/
@@@ -3637,6 -3745,7 +3745,7 @@@ F:      drivers/char/mxser.
  
  MSI LAPTOP SUPPORT
  M:    Lennart Poettering <mzxreary@0pointer.de>
+ L:    platform-driver-x86@vger.kernel.org
  W:    https://tango.0pointer.de/mailman/listinfo/s270-linux
  W:    http://0pointer.de/lennart/tchibo.html
  S:    Maintained
@@@ -3644,6 -3753,7 +3753,7 @@@ F:      drivers/platform/x86/msi-laptop.
  
  MSI WMI SUPPORT
  M:    Anisse Astier <anisse@astier.eu>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Supported
  F:    drivers/platform/x86/msi-wmi.c
  
@@@ -3824,6 -3934,7 +3934,7 @@@ S:      Maintaine
  NETWORKING [WIRELESS]
  M:    "John W. Linville" <linville@tuxdriver.com>
  L:    linux-wireless@vger.kernel.org
+ Q:    http://patchwork.kernel.org/project/linux-wireless/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-2.6.git
  S:    Maintained
  F:    net/mac80211/
@@@ -3916,6 -4027,7 +4027,7 @@@ M:      Tony Lindgren <tony@atomide.com
  L:    linux-omap@vger.kernel.org
  W:    http://www.muru.com/linux/omap/
  W:    http://linux.omap.com/
+ Q:    http://patchwork.kernel.org/project/linux-omap/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tmlind/linux-omap-2.6.git
  S:    Maintained
  F:    arch/arm/*omap*/
@@@ -4096,6 -4208,7 +4208,7 @@@ F:      drivers/i2c/busses/i2c-pasemi.
  
  PANASONIC LAPTOP ACPI EXTRAS DRIVER
  M:    Harald Welte <laforge@gnumonks.org>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/panasonic-laptop.c
  
@@@ -4141,6 -4254,7 +4254,7 @@@ M:      Helge Deller <deller@gmx.de
  M:    "James E.J. Bottomley" <jejb@parisc-linux.org>
  L:    linux-parisc@vger.kernel.org
  W:    http://www.parisc-linux.org/
+ Q:    http://patchwork.kernel.org/project/linux-parisc/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kyle/parisc-2.6.git
  S:    Maintained
  F:    arch/parisc/
@@@ -4183,6 -4297,7 +4297,7 @@@ F:      Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Jesse Barnes <jbarnes@virtuousgeek.org>
  L:    linux-pci@vger.kernel.org
+ Q:    http://patchwork.kernel.org/project/linux-pci/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jbarnes/pci-2.6.git
  S:    Supported
  F:    Documentation/PCI/
@@@ -4221,10 -4336,13 +4336,13 @@@ PERFORMANCE EVENTS SUBSYSTE
  M:    Peter Zijlstra <a.p.zijlstra@chello.nl>
  M:    Paul Mackerras <paulus@samba.org>
  M:    Ingo Molnar <mingo@elte.hu>
+ M:    Arnaldo Carvalho de Melo <acme@redhat.com>
  S:    Supported
  F:    kernel/perf_event.c
  F:    include/linux/perf_event.h
- F:    arch/*/*/kernel/perf_event.c
+ F:    arch/*/kernel/perf_event.c
+ F:    arch/*/kernel/*/perf_event.c
+ F:    arch/*/kernel/*/*/perf_event.c
  F:    arch/*/include/asm/perf_event.h
  F:    arch/*/lib/perf_event.c
  F:    arch/*/kernel/perf_callchain.c
@@@ -4421,6 -4539,13 +4539,13 @@@ L:    linux-arm-kernel@lists.infradead.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
  S:    Maintained
  
+ MMP2 SUPPORT (aka ARMADA610)
+ M:    Haojian Zhuang <haojian.zhuang@marvell.com>
+ M:    Eric Miao <eric.y.miao@gmail.com>
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ycmiao/pxa-linux-2.6.git
+ S:    Maintained
  PXA MMCI DRIVER
  S:    Orphan
  
@@@ -4445,6 -4570,13 +4570,13 @@@ S:    Supporte
  F:    Documentation/networking/LICENSE.qla3xxx
  F:    drivers/net/qla3xxx.*
  
+ QLOGIC QLCNIC (1/10)Gb ETHERNET DRIVER
+ M:    Amit Kumar Salecha <amit.salecha@qlogic.com>
+ M:    linux-driver@qlogic.com
+ L:    netdev@vger.kernel.org
+ S:    Supported
+ F:    drivers/net/qlcnic/
  QLOGIC QLGE 10Gb ETHERNET DRIVER
  M:    Ron Mercer <ron.mercer@qlogic.com>
  M:    linux-driver@qlogic.com
@@@ -4509,7 -4641,7 +4641,7 @@@ F:      drivers/net/wireless/ray
  RCUTORTURE MODULE
  M:    Josh Triplett <josh@freedesktop.org>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
- S:    Maintained
+ S:    Supported
  F:    Documentation/RCU/torture.txt
  F:    kernel/rcutorture.c
  
@@@ -4534,11 -4666,12 +4666,12 @@@ M:   Dipankar Sarma <dipankar@in.ibm.com
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
  W:    http://www.rdrop.com/users/paulmck/rclock/
  S:    Supported
- F:    Documentation/RCU/rcu.txt
- F:    Documentation/RCU/rcuref.txt
- F:    include/linux/rcupdate.h
- F:    include/linux/srcu.h
- F:    kernel/rcupdate.c
+ F:    Documentation/RCU/
+ F:    include/linux/rcu*
+ F:    include/linux/srcu*
+ F:    kernel/rcu*
+ F:    kernel/srcu*
+ X:    kernel/rcutorture.c
  
  REAL TIME CLOCK DRIVER
  M:    Paul Gortmaker <p_gortmaker@yahoo.com>
@@@ -4550,6 -4683,7 +4683,7 @@@ F:      include/linux/rtc.
  REAL TIME CLOCK (RTC) SUBSYSTEM
  M:    Alessandro Zummo <a.zummo@towertech.it>
  L:    rtc-linux@googlegroups.com
+ Q:    http://patchwork.ozlabs.org/project/rtc-linux/list/
  S:    Maintained
  F:    Documentation/rtc.txt
  F:    drivers/rtc/
@@@ -4567,12 -4701,6 +4701,12 @@@ S:    Maintaine
  F:    Documentation/rfkill.txt
  F:    net/rfkill/
  
 +RICOH SMARTMEDIA/XD DRIVER
 +M:    Maxim Levitsky <maximlevitsky@gmail.com>
 +S:    Maintained
 +F:    drivers/mtd/nand/r822.c
 +F:    drivers/mtd/nand/r822.h
 +
  RISCOM8 DRIVER
  S:    Orphan
  F:    Documentation/serial/riscom8.txt
@@@ -4682,6 -4810,13 +4816,13 @@@ F:    drivers/media/common/saa7146
  F:    drivers/media/video/*7146*
  F:    include/media/*7146*
  
+ TLG2300 VIDEO4LINUX-2 DRIVER
+ M:    Huang Shijie <shijie8@gmail.com>
+ M:    Kang Yong <kangyong@telegent.com>
+ M:    Zhang Xiaobing <xbzhang@telegent.com>
+ S:    Supported
+ F:    drivers/media/video/tlg2300
  SC1200 WDT DRIVER
  M:    Zwane Mwaikambo <zwane@arm.linux.org.uk>
  S:    Maintained
@@@ -4837,6 -4972,8 +4978,8 @@@ F:      drivers/scsi/be2iscsi
  SERVER ENGINES 10Gbps NIC - BladeEngine 2 DRIVER
  M:    Sathya Perla <sathyap@serverengines.com>
  M:    Subbu Seetharaman <subbus@serverengines.com>
+ M:    Sarveshwar Bandi <sarveshwarb@serverengines.com>
+ M:    Ajit Khaparde <ajitk@serverengines.com>
  L:    netdev@vger.kernel.org
  W:    http://www.serverengines.com
  S:    Supported
@@@ -4914,6 -5051,7 +5057,7 @@@ F:      drivers/*/*/*s3c2410
  TI DAVINCI MACHINE SUPPORT
  P:    Kevin Hilman
  M:    davinci-linux-open-source@linux.davincidsp.com
+ Q:    http://patchwork.kernel.org/project/linux-davinci/list/
  S:    Supported
  F:    arch/arm/mach-davinci
  
@@@ -5040,7 -5178,7 +5184,7 @@@ F:      include/linux/ssb
  
  SONY VAIO CONTROL DEVICE DRIVER
  M:    Mattia Dongili <malattia@linux.it>
- L:    linux-acpi@vger.kernel.org
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://www.linux.it/~malattia/wiki/index.php/Sony_drivers
  S:    Maintained
  F:    Documentation/laptops/sony-laptop.txt
@@@ -5079,11 -5217,27 +5223,27 @@@ F:   include/sound/soc
  SPARC + UltraSPARC (sparc/sparc64)
  M:    "David S. Miller" <davem@davemloft.net>
  L:    sparclinux@vger.kernel.org
+ Q:    http://patchwork.ozlabs.org/project/sparclinux/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
  S:    Maintained
  F:    arch/sparc/
  
+ SPARC SERIAL DRIVERS
+ M:    "David S. Miller" <davem@davemloft.net>
+ L:    sparclinux@vger.kernel.org
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-2.6.git
+ T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/sparc-next-2.6.git
+ S:    Maintained
+ F:    drivers/serial/suncore.c
+ F:    drivers/serial/suncore.h
+ F:    drivers/serial/sunhv.c
+ F:    drivers/serial/sunsab.c
+ F:    drivers/serial/sunsab.h
+ F:    drivers/serial/sunsu.c
+ F:    drivers/serial/sunzilog.c
+ F:    drivers/serial/sunzilog.h
  SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
  M:    Roger Wolff <R.E.Wolff@BitWizard.nl>
  S:    Supported
@@@ -5094,6 -5248,7 +5254,7 @@@ SPI SUBSYSTE
  M:    David Brownell <dbrownell@users.sourceforge.net>
  M:    Grant Likely <grant.likely@secretlab.ca>
  L:    spi-devel-general@lists.sourceforge.net
+ Q:    http://patchwork.kernel.org/project/spi-devel-general/list/
  S:    Maintained
  F:    Documentation/spi/
  F:    drivers/spi/
@@@ -5149,7 -5304,7 +5310,7 @@@ F:      drivers/net/starfire
  
  STARMODE RADIO IP (STRIP) PROTOCOL DRIVER
  S:    Orphan
- F:    drivers/net/wireless/strip.c
+ F:    drivers/staging/strip/strip.c
  F:    include/linux/if_strip.h
  
  STRADIS MPEG-2 DECODER DRIVER
@@@ -5170,6 -5325,7 +5331,7 @@@ SUPER
  M:    Paul Mundt <lethal@linux-sh.org>
  L:    linux-sh@vger.kernel.org
  W:    http://www.linux-sh.org
+ Q:    http://patchwork.kernel.org/project/linux-sh/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/lethal/sh-2.6.git
  S:    Supported
  F:    Documentation/sh/
@@@ -5246,6 -5402,7 +5408,7 @@@ F:      arch/xtensa
  THINKPAD ACPI EXTRAS DRIVER
  M:    Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
  L:    ibm-acpi-devel@lists.sourceforge.net
+ L:    platform-driver-x86@vger.kernel.org
  W:    http://ibm-acpi.sourceforge.net
  W:    http://thinkwiki.org/wiki/Ibm-acpi
  T:    git git://repo.or.cz/linux-2.6/linux-acpi-2.6/ibm-acpi-2.6.git
@@@ -5299,10 -5456,12 +5462,12 @@@ F:   security/tomoyo
  
  TOPSTAR LAPTOP EXTRAS DRIVER
  M:    Herton Ronaldo Krzesinski <herton@mandriva.com.br>
+ L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/topstar-laptop.c
  
  TOSHIBA ACPI EXTRAS DRIVER
+ L:    platform-driver-x86@vger.kernel.org
  S:    Orphan
  F:    drivers/platform/x86/toshiba_acpi.c
  
@@@ -5802,6 -5961,15 +5967,15 @@@ S:    Maintaine
  F:    Documentation/filesystems/vfat.txt
  F:    fs/fat/
  
+ VIRTIO HOST (VHOST)
+ M:    "Michael S. Tsirkin" <mst@redhat.com>
+ L:    kvm@vger.kernel.org
+ L:    virtualization@lists.osdl.org
+ L:    netdev@vger.kernel.org
+ S:    Maintained
+ F:    drivers/vhost/
+ F:    include/linux/vhost.h
  VIA RHINE NETWORK DRIVER
  M:    Roger Luethi <rl@hellgate.ch>
  S:    Maintained
@@@ -5925,7 -6093,7 +6099,7 @@@ L:      linux-wireless@vger.kernel.or
  W:    http://www.hpl.hp.com/personal/Jean_Tourrilhes/Linux/
  S:    Maintained
  F:    Documentation/networking/wavelan.txt
- F:    drivers/net/wireless/wavelan*
+ F:    drivers/staging/wavelan/
  
  WD7000 SCSI DRIVER
  M:    Miroslav Zagorac <zaga@fly.cc.fer.hr>
@@@ -5960,7 -6128,7 +6134,7 @@@ S:      Maintaine
  F:    drivers/input/misc/wistron_btns.c
  
  WL1251 WIRELESS DRIVER
- M:    Kalle Valo <kalle.valo@nokia.com>
+ M:    Kalle Valo <kalle.valo@iki.fi>
  L:    linux-wireless@vger.kernel.org
  W:    http://wireless.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
@@@ -6030,6 -6198,13 +6204,13 @@@ S:    Maintaine
  F:    Documentation/x86/
  F:    arch/x86/
  
+ X86 PLATFORM DRIVERS
+ M:    Matthew Garrett <mjg@redhat.com>
+ L:    platform-driver-x86@vger.kernel.org
+ T:      git git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86.git
+ S:    Maintained
+ F:    drivers/platform/x86
  XEN HYPERVISOR INTERFACE
  M:    Jeremy Fitzhardinge <jeremy@xensource.com>
  M:    Chris Wright <chrisw@sous-sol.org>
@@@ -6114,6 -6289,7 +6295,7 @@@ F:      drivers/serial/zs.
  THE REST
  M:    Linus Torvalds <torvalds@linux-foundation.org>
  L:    linux-kernel@vger.kernel.org
+ Q:    http://patchwork.kernel.org/project/LKML/list/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
  S:    Buried alive in reporters
  F:    *
index 61c0e132c63e05a034bd5491756840dbfb84cfab,93107d88ff3a089074ad94e05524c16a6dde56c4..0eabec62cd9df5d97a747978003dde74990c8ed0
@@@ -9,6 -9,9 +9,6 @@@
   * febff000   22000000        4K      model number register
   * febfe000   22400000        4K      options register
   * febfd000   22800000        4K      options register #2
 - * febfc000   [67]0000000     4K      NAND data register
 - * febfb000   [67]0400000     4K      NAND control register
 - * febfa000   [67]0800000     4K      NAND busy register
   * febf9000   10800000        4K      TS-5620 RTC index register
   * febf8000   11700000        4K      TS-5620 RTC data register
   */
  #define TS72XX_OPTIONS2_TS9420_BOOT   0x02
  
  
 -#define TS72XX_NAND1_DATA_PHYS_BASE   0x60000000
 -#define TS72XX_NAND2_DATA_PHYS_BASE   0x70000000
 -#define TS72XX_NAND_DATA_VIRT_BASE    0xfebfc000
 -#define TS72XX_NAND_DATA_SIZE         0x00001000
 -
 -#define TS72XX_NAND1_CONTROL_PHYS_BASE        0x60400000
 -#define TS72XX_NAND2_CONTROL_PHYS_BASE        0x70400000
 -#define TS72XX_NAND_CONTROL_VIRT_BASE 0xfebfb000
 -#define TS72XX_NAND_CONTROL_SIZE      0x00001000
 -
 -#define TS72XX_NAND1_BUSY_PHYS_BASE   0x60800000
 -#define TS72XX_NAND2_BUSY_PHYS_BASE   0x70800000
 -#define TS72XX_NAND_BUSY_VIRT_BASE    0xfebfa000
 -#define TS72XX_NAND_BUSY_SIZE         0x00001000
 -
 -
  #define TS72XX_RTC_INDEX_VIRT_BASE    0xfebf9000
  #define TS72XX_RTC_INDEX_PHYS_BASE    0x10800000
  #define TS72XX_RTC_INDEX_SIZE         0x00001000
@@@ -46,6 -65,8 +46,8 @@@
  #define TS72XX_RTC_DATA_PHYS_BASE     0x11700000
  #define TS72XX_RTC_DATA_SIZE          0x00001000
  
+ #define TS72XX_WDT_CONTROL_PHYS_BASE  0x23800000
+ #define TS72XX_WDT_FEED_PHYS_BASE     0x23c00000
  
  #ifndef __ASSEMBLY__
  
index 47a86f07831da64bc0c52d11452390b96daf0284,fac1ec7a60fbb618c4b8a9463f58d73c19683cd4..333d259b79d548aaf1f598327b534cbc61cc75f1
   * your option) any later version.
   */
  
 +#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
 +
  #include <linux/kernel.h>
  #include <linux/init.h>
  #include <linux/platform_device.h>
  #include <linux/io.h>
  #include <linux/m48t86.h>
  #include <linux/mtd/physmap.h>
 +#include <linux/mtd/nand.h>
 +#include <linux/mtd/partitions.h>
  
  #include <mach/hardware.h>
  #include <mach/ts72xx.h>
@@@ -58,162 -54,92 +58,162 @@@ static struct map_desc ts72xx_io_desc[
        }
  };
  
 -static struct map_desc ts72xx_nand_io_desc[] __initdata = {
 -      {
 -              .virtual        = TS72XX_NAND_DATA_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND1_DATA_PHYS_BASE),
 -              .length         = TS72XX_NAND_DATA_SIZE,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = TS72XX_NAND_CONTROL_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND1_CONTROL_PHYS_BASE),
 -              .length         = TS72XX_NAND_CONTROL_SIZE,
 -              .type           = MT_DEVICE,
 -      }, {
 -              .virtual        = TS72XX_NAND_BUSY_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND1_BUSY_PHYS_BASE),
 -              .length         = TS72XX_NAND_BUSY_SIZE,
 -              .type           = MT_DEVICE,
 +static void __init ts72xx_map_io(void)
 +{
 +      ep93xx_map_io();
 +      iotable_init(ts72xx_io_desc, ARRAY_SIZE(ts72xx_io_desc));
 +}
 +
 +
 +/*************************************************************************
 + * NAND flash
 + *************************************************************************/
 +#define TS72XX_NAND_CONTROL_ADDR_LINE 22      /* 0xN0400000 */
 +#define TS72XX_NAND_BUSY_ADDR_LINE    23      /* 0xN0800000 */
 +
 +static void ts72xx_nand_hwcontrol(struct mtd_info *mtd,
 +                                int cmd, unsigned int ctrl)
 +{
 +      struct nand_chip *chip = mtd->priv;
 +
 +      if (ctrl & NAND_CTRL_CHANGE) {
 +              void __iomem *addr = chip->IO_ADDR_R;
 +              unsigned char bits;
 +
 +              addr += (1 << TS72XX_NAND_CONTROL_ADDR_LINE);
 +
 +              bits = __raw_readb(addr) & ~0x07;
 +              bits |= (ctrl & NAND_NCE) << 2; /* bit 0 -> bit 2 */
 +              bits |= (ctrl & NAND_CLE);      /* bit 1 -> bit 1 */
 +              bits |= (ctrl & NAND_ALE) >> 2; /* bit 2 -> bit 0 */
 +
 +              __raw_writeb(bits, addr);
        }
 -};
  
 -static struct map_desc ts72xx_alternate_nand_io_desc[] __initdata = {
 +      if (cmd != NAND_CMD_NONE)
 +              __raw_writeb(cmd, chip->IO_ADDR_W);
 +}
 +
 +static int ts72xx_nand_device_ready(struct mtd_info *mtd)
 +{
 +      struct nand_chip *chip = mtd->priv;
 +      void __iomem *addr = chip->IO_ADDR_R;
 +
 +      addr += (1 << TS72XX_NAND_BUSY_ADDR_LINE);
 +
 +      return !!(__raw_readb(addr) & 0x20);
 +}
 +
 +static const char *ts72xx_nand_part_probes[] = { "cmdlinepart", NULL };
 +
 +#define TS72XX_BOOTROM_PART_SIZE      (SZ_16K)
 +#define TS72XX_REDBOOT_PART_SIZE      (SZ_2M + SZ_1M)
 +
 +static struct mtd_partition ts72xx_nand_parts[] = {
        {
 -              .virtual        = TS72XX_NAND_DATA_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND2_DATA_PHYS_BASE),
 -              .length         = TS72XX_NAND_DATA_SIZE,
 -              .type           = MT_DEVICE,
 +              .name           = "TS-BOOTROM",
 +              .offset         = 0,
 +              .size           = TS72XX_BOOTROM_PART_SIZE,
 +              .mask_flags     = MTD_WRITEABLE,        /* force read-only */
        }, {
 -              .virtual        = TS72XX_NAND_CONTROL_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND2_CONTROL_PHYS_BASE),
 -              .length         = TS72XX_NAND_CONTROL_SIZE,
 -              .type           = MT_DEVICE,
 +              .name           = "Linux",
 +              .offset         = MTDPART_OFS_APPEND,
 +              .size           = 0,                    /* filled in later */
        }, {
 -              .virtual        = TS72XX_NAND_BUSY_VIRT_BASE,
 -              .pfn            = __phys_to_pfn(TS72XX_NAND2_BUSY_PHYS_BASE),
 -              .length         = TS72XX_NAND_BUSY_SIZE,
 -              .type           = MT_DEVICE,
 -      }
 +              .name           = "RedBoot",
 +              .offset         = MTDPART_OFS_APPEND,
 +              .size           = MTDPART_SIZ_FULL,
 +              .mask_flags     = MTD_WRITEABLE,        /* force read-only */
 +      },
  };
  
 -static void __init ts72xx_map_io(void)
 +static void ts72xx_nand_set_parts(uint64_t size,
 +                                struct platform_nand_chip *chip)
  {
 -      ep93xx_map_io();
 -      iotable_init(ts72xx_io_desc, ARRAY_SIZE(ts72xx_io_desc));
 -
 -      /*
 -       * The TS-7200 has NOR flash, the other models have NAND flash.
 -       */
 -      if (!board_is_ts7200()) {
 -              if (is_ts9420_installed()) {
 -                      iotable_init(ts72xx_alternate_nand_io_desc,
 -                              ARRAY_SIZE(ts72xx_alternate_nand_io_desc));
 -              } else {
 -                      iotable_init(ts72xx_nand_io_desc,
 -                              ARRAY_SIZE(ts72xx_nand_io_desc));
 -              }
 +      /* Factory TS-72xx boards only come with 32MiB or 128MiB NAND options */
 +      if (size == SZ_32M || size == SZ_128M) {
 +              /* Set the "Linux" partition size */
 +              ts72xx_nand_parts[1].size = size - TS72XX_REDBOOT_PART_SIZE;
 +
 +              chip->partitions = ts72xx_nand_parts;
 +              chip->nr_partitions = ARRAY_SIZE(ts72xx_nand_parts);
 +      } else {
 +              pr_warning("Unknown nand disk size:%lluMiB\n", size >> 20);
        }
  }
  
 +static struct platform_nand_data ts72xx_nand_data = {
 +      .chip = {
 +              .nr_chips       = 1,
 +              .chip_offset    = 0,
 +              .chip_delay     = 15,
 +              .part_probe_types = ts72xx_nand_part_probes,
 +              .set_parts      = ts72xx_nand_set_parts,
 +      },
 +      .ctrl = {
 +              .cmd_ctrl       = ts72xx_nand_hwcontrol,
 +              .dev_ready      = ts72xx_nand_device_ready,
 +      },
 +};
 +
 +static struct resource ts72xx_nand_resource[] = {
 +      {
 +              .start          = 0,                    /* filled in later */
 +              .end            = 0,                    /* filled in later */
 +              .flags          = IORESOURCE_MEM,
 +      },
 +};
 +
 +static struct platform_device ts72xx_nand_flash = {
 +      .name                   = "gen_nand",
 +      .id                     = -1,
 +      .dev.platform_data      = &ts72xx_nand_data,
 +      .resource               = ts72xx_nand_resource,
 +      .num_resources          = ARRAY_SIZE(ts72xx_nand_resource),
 +};
 +
 +
  /*************************************************************************
   * NOR flash (TS-7200 only)
   *************************************************************************/
 -static struct physmap_flash_data ts72xx_flash_data = {
 +static struct physmap_flash_data ts72xx_nor_data = {
        .width          = 2,
  };
  
 -static struct resource ts72xx_flash_resource = {
 +static struct resource ts72xx_nor_resource = {
        .start          = EP93XX_CS6_PHYS_BASE,
        .end            = EP93XX_CS6_PHYS_BASE + SZ_16M - 1,
        .flags          = IORESOURCE_MEM,
  };
  
 -static struct platform_device ts72xx_flash = {
 -      .name           = "physmap-flash",
 -      .id             = 0,
 -      .dev            = {
 -              .platform_data  = &ts72xx_flash_data,
 -      },
 -      .num_resources  = 1,
 -      .resource       = &ts72xx_flash_resource,
 +static struct platform_device ts72xx_nor_flash = {
 +      .name                   = "physmap-flash",
 +      .id                     = 0,
 +      .dev.platform_data      = &ts72xx_nor_data,
 +      .resource               = &ts72xx_nor_resource,
 +      .num_resources          = 1,
  };
  
  static void __init ts72xx_register_flash(void)
  {
 -      if (board_is_ts7200())
 -              platform_device_register(&ts72xx_flash);
 +      if (board_is_ts7200()) {
 +              platform_device_register(&ts72xx_nor_flash);
 +      } else {
 +              resource_size_t start;
 +
 +              if (is_ts9420_installed())
 +                      start = EP93XX_CS7_PHYS_BASE;
 +              else
 +                      start = EP93XX_CS6_PHYS_BASE;
 +
 +              ts72xx_nand_resource[0].start = start;
 +              ts72xx_nand_resource[0].end = start + SZ_16M - 1;
 +
 +              platform_device_register(&ts72xx_nand_flash);
 +      }
  }
  
 +
  static unsigned char ts72xx_rtc_readbyte(unsigned long addr)
  {
        __raw_writeb(addr, TS72XX_RTC_INDEX_VIRT_BASE);
@@@ -240,6 -166,26 +240,26 @@@ static struct platform_device ts72xx_rt
        .num_resources  = 0,
  };
  
+ static struct resource ts72xx_wdt_resources[] = {
+       {
+               .start  = TS72XX_WDT_CONTROL_PHYS_BASE,
+               .end    = TS72XX_WDT_CONTROL_PHYS_BASE + SZ_4K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+       {
+               .start  = TS72XX_WDT_FEED_PHYS_BASE,
+               .end    = TS72XX_WDT_FEED_PHYS_BASE + SZ_4K - 1,
+               .flags  = IORESOURCE_MEM,
+       },
+ };
+ static struct platform_device ts72xx_wdt_device = {
+       .name           = "ts72xx-wdt",
+       .id             = -1,
+       .num_resources  = ARRAY_SIZE(ts72xx_wdt_resources),
+       .resource       = ts72xx_wdt_resources,
+ };
  static struct ep93xx_eth_data ts72xx_eth_data = {
        .phy_id         = 1,
  };
@@@ -249,6 -195,7 +269,7 @@@ static void __init ts72xx_init_machine(
        ep93xx_init_devices();
        ts72xx_register_flash();
        platform_device_register(&ts72xx_rtc_device);
+       platform_device_register(&ts72xx_wdt_device);
  
        ep93xx_register_eth(&ts72xx_eth_data, 1);
  }
diff --combined drivers/mtd/inftlcore.c
index 015a7fe1b6ee3a92390da0cd12667b3634c49f6d,8aca5523a3370fd916595e146d2ed9df4c4d9de2..015a7fe1b6ee3a92390da0cd12667b3634c49f6d
mode 100755,100644..100644
@@@ -139,6 -139,7 +139,6 @@@ static void inftl_remove_dev(struct mtd
  
        kfree(inftl->PUtable);
        kfree(inftl->VUtable);
 -      kfree(inftl);
  }
  
  /*
diff --combined drivers/mtd/maps/pismo.c
index 0a5e243d2bc63e8ba11c19ccedc7fe19ff6cbdcc,30e12c88d1dae5b98bb3098628ac4b3db9c738a0..f021018e074125f939f99ab693cc43245b516865
@@@ -118,7 -118,7 +118,7 @@@ static int __devinit pismo_add_device(s
  {
        struct platform_device *dev;
        struct resource res = { };
-       phys_addr_t base = region.base;
+       phys_addr_t base = region->base;
        int ret;
  
        if (base == ~0)
@@@ -233,7 -233,6 +233,7 @@@ static int __devexit pismo_remove(struc
        /* FIXME: set_vpp needs saner arguments */
        pismo_setvpp_remove_fix(pismo);
  
 +      i2c_set_clientdata(client, NULL);
        kfree(pismo);
  
        return 0;
@@@ -272,7 -271,7 +272,7 @@@ static int __devinit pismo_probe(struc
        ret = pismo_eeprom_read(client, &eeprom, 0, sizeof(eeprom));
        if (ret < 0) {
                dev_err(&client->dev, "error reading EEPROM: %d\n", ret);
 -              return ret;
 +              goto exit_free;
        }
  
        dev_info(&client->dev, "%.15s board found\n", eeprom.board);
                                      pdata->cs_addrs[i]);
  
        return 0;
 +
 + exit_free:
 +      i2c_set_clientdata(client, NULL);
 +      kfree(pismo);
 +      return ret;
  }
  
  static const struct i2c_device_id pismo_id[] = {
diff --combined drivers/mtd/nand/Kconfig
index 226206e06230f16d93a6f4609d74249d1f30b84e,42e5ea49e97504adc1e354c7e9534e1c3054aed6..164bd56b9d1a9c1f748dc824947a72e800e53671
@@@ -25,10 -25,6 +25,10 @@@ config MTD_NAND_ECC_SM
          Software ECC according to the Smart Media Specification.
          The original Linux implementation had byte 0 and 1 swapped.
  
 +config MTD_SM_COMMON
 +      tristate
 +      default n
 +
  config MTD_NAND_MUSEUM_IDS
        bool "Enable chip ids for obsolete ancient NAND devices"
        depends on MTD_NAND
@@@ -99,21 -95,15 +99,21 @@@ config MTD_NAND_OMAP_PREFETCH_DM
         or in DMA interrupt mode.
         Say y for DMA mode or MPU mode will be used
  
 -config MTD_NAND_TS7250
 -      tristate "NAND Flash device on TS-7250 board"
 -      depends on MACH_TS72XX
 -      help
 -        Support for NAND flash on Technologic Systems TS-7250 platform.
 -
  config MTD_NAND_IDS
        tristate
  
 +config MTD_NAND_RICOH
 +      tristate "Ricoh xD card reader"
 +      default n
 +      depends on PCI
 +      select MTD_SM_COMMON
 +      help
 +        Enable support for Ricoh R5C852 xD card reader
 +        You also need to enable ether
 +        NAND SSFDC (SmartMedia) read only translation layer' or new
 +        expermental, readwrite
 +        'SmartMedia/xD new translation layer'
 +
  config MTD_NAND_AU1550
        tristate "Au1550/1200 NAND support"
        depends on SOC_AU1200 || SOC_AU1550
@@@ -452,16 -442,9 +452,16 @@@ config MTD_NAND_FSL_UP
          Enables support for NAND Flash chips wired onto Freescale PowerPC
          processor localbus with User-Programmable Machine support.
  
 +config MTD_NAND_MPC5121_NFC
 +      tristate "MPC5121 built-in NAND Flash Controller support"
 +      depends on PPC_MPC512x
 +      help
 +        This enables the driver for the NAND flash controller on the
 +        MPC5121 SoC.
 +
  config MTD_NAND_MXC
        tristate "MXC NAND support"
-       depends on ARCH_MX2 || ARCH_MX3
+       depends on ARCH_MX2 || ARCH_MX25 || ARCH_MX3
        help
          This enables the driver for the NAND flash controller on the
          MXC processors.
@@@ -474,10 -457,10 +474,10 @@@ config MTD_NAND_NOMADI
  
  config MTD_NAND_SH_FLCTL
        tristate "Support for NAND on Renesas SuperH FLCTL"
-       depends on MTD_NAND && SUPERH && CPU_SUBTYPE_SH7723
+       depends on MTD_NAND && (SUPERH || ARCH_SHMOBILE)
        help
          Several Renesas SuperH CPU has FLCTL. This option enables support
-         for NAND Flash using FLCTL. This driver support SH7723.
+         for NAND Flash using FLCTL.
  
  config MTD_NAND_DAVINCI
          tristate "Support NAND on DaVinci SoC"
@@@ -498,11 -481,11 +498,11 @@@ config MTD_NAND_SOCRATE
        help
          Enables support for NAND Flash chips wired onto Socrates board.
  
 -config MTD_NAND_W90P910
 -      tristate "Support for NAND on w90p910 evaluation board."
 +config MTD_NAND_NUC900
 +      tristate "Support for NAND on Nuvoton NUC9xx/w90p910 evaluation boards."
        depends on ARCH_W90X900 && MTD_PARTITIONS
        help
          This enables the driver for the NAND Flash on evaluation board based
 -        on w90p910.
 +        on w90p910 / NUC9xx.
  
  endif # MTD_NAND
index 58c55db504e2dbcdff9d5db71e6d57c30f6c2a70,43d46e424040c2bc25e6e48481c9d902d14d912e..3ffe05db4923b662f51adcddb0e62cd1af09a5c8
@@@ -19,6 -19,7 +19,7 @@@
  #include <asm/io.h>
  
  #include <asm/mach-au1x00/au1xxx.h>
+ #include <asm/mach-db1x00/bcsr.h>
  
  /*
   * MTD structure for NAND controller
@@@ -450,7 -451,7 +451,7 @@@ static int __init au1xxx_nand_init(void
        u32 nand_phys;
  
        /* Allocate memory for MTD device structure and private data */
 -      au1550_mtd = kmalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip), GFP_KERNEL);
 +      au1550_mtd = kzalloc(sizeof(struct mtd_info) + sizeof(struct nand_chip), GFP_KERNEL);
        if (!au1550_mtd) {
                printk("Unable to allocate NAND MTD dev structure.\n");
                return -ENOMEM;
        /* Get pointer to private data */
        this = (struct nand_chip *)(&au1550_mtd[1]);
  
 -      /* Initialize structures */
 -      memset(au1550_mtd, 0, sizeof(struct mtd_info));
 -      memset(this, 0, sizeof(struct nand_chip));
 -
        /* Link the private data with the MTD structure */
        au1550_mtd->priv = this;
        au1550_mtd->owner = THIS_MODULE;
        /* set gpio206 high */
        au_writel(au_readl(GPIO2_DIR) & ~(1 << 6), GPIO2_DIR);
  
-       boot_swapboot = (au_readl(MEM_STSTAT) & (0x7 << 1)) | ((bcsr->status >> 6) & 0x1);
+       boot_swapboot = (au_readl(MEM_STSTAT) & (0x7 << 1)) | ((bcsr_read(BCSR_STATUS) >> 6) & 0x1);
        switch (boot_swapboot) {
        case 0:
        case 2:
        }
        nand_phys = (mem_staddr << 4) & 0xFFFC0000;
  
 -      p_nand = (void __iomem *)ioremap(nand_phys, 0x1000);
 +      p_nand = ioremap(nand_phys, 0x1000);
  
        /* make controller and MTD agree */
        if (NAND_CS == 0)
        return 0;
  
   outio:
 -      iounmap((void *)p_nand);
 +      iounmap(p_nand);
  
   outmem:
        kfree(au1550_mtd);
@@@ -604,7 -610,7 +606,7 @@@ static void __exit au1550_cleanup(void
        kfree(au1550_mtd);
  
        /* Unmap */
 -      iounmap((void *)p_nand);
 +      iounmap(p_nand);
  }
  
  module_exit(au1550_cleanup);
index 5ff90b7e565e8f154f5445a8aacfdfd387c51dae,7d1cca7a31a9ec7ff6d5880dd5bc1853518ca2cf..7eb8674c9cf92e68724e2d926faf85b2546ff55e
@@@ -381,7 -381,7 +381,7 @@@ static int __devinit bcm_umi_nand_probe
        if (!r)
                return -ENXIO;
  
-       /* map physical adress */
+       /* map physical address */
        bcm_umi_io_base = ioremap(r->start, r->end - r->start + 1);
  
        if (!bcm_umi_io_base) {
         * layout we'll be using.
         */
  
 -      err = nand_scan_ident(board_mtd, 1);
 +      err = nand_scan_ident(board_mtd, 1, NULL);
        if (err) {
                printk(KERN_ERR "nand_scan failed: %d\n", err);
                iounmap(bcm_umi_io_base);
@@@ -525,7 -525,7 +525,7 @@@ static int bcm_umi_nand_remove(struct p
        /* Release resources, unregister device */
        nand_release(board_mtd);
  
-       /* unmap physical adress */
+       /* unmap physical address */
        iounmap(bcm_umi_io_base);
  
        /* Free the MTD device structure */
index 474a09e53131b98fa91a92c627a33620911c22ab,b2900d8406d3904316b5da1bec7f9a4e2c1b88b0..2ba3be1f49379c3698217b59dc25940376f2d68d
@@@ -507,7 -507,7 +507,7 @@@ static void mxc_do_addr_cycle(struct mt
                 * MXC NANDFC can only perform full page+spare or
                 * spare-only read/write.  When the upper layers
                 * layers perform a read/write buf operation,
-                * we will used the saved column adress to index into
+                * we will used the saved column address to index into
                 * the full page.
                 */
                send_addr(host, 0, page_addr == -1);
@@@ -638,7 -638,6 +638,7 @@@ static void mxc_nand_command(struct mtd
  
        case NAND_CMD_ERASE1:
        case NAND_CMD_ERASE2:
 +      case NAND_CMD_RESET:
                send_cmd(host, command, false);
                mxc_do_addr_cycle(mtd, column, page_addr);
  
@@@ -819,7 -818,7 +819,7 @@@ static int __init mxcnd_probe(struct pl
        }
  
        /* first scan to find the device and get the page size */
 -      if (nand_scan_ident(mtd, 1)) {
 +      if (nand_scan_ident(mtd, 1, NULL)) {
                err = -ENXIO;
                goto escan;
        }
@@@ -887,14 -886,11 +887,14 @@@ static int mxcnd_suspend(struct platfor
        int ret = 0;
  
        DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND suspend\n");
 -      if (mtd) {
 -              ret = mtd->suspend(mtd);
 -              /* Disable the NFC clock */
 -              clk_disable(host->clk);
 -      }
 +
 +      ret = mtd->suspend(mtd);
 +
 +      /*
 +       * nand_suspend locks the device for exclusive access, so
 +       * the clock must already be off.
 +       */
 +      BUG_ON(!ret && host->clk_act);
  
        return ret;
  }
@@@ -908,7 -904,11 +908,7 @@@ static int mxcnd_resume(struct platform
  
        DEBUG(MTD_DEBUG_LEVEL0, "MXC_ND : NAND resume\n");
  
 -      if (mtd) {
 -              /* Enable the NFC clock */
 -              clk_enable(host->clk);
 -              mtd->resume(mtd);
 -      }
 +      mtd->resume(mtd);
  
        return ret;
  }
diff --combined drivers/mtd/nand/omap2.c
index 7df303aed8a44db682db1fa844746eb816e454cb,26aec00801848590333a62252599c5406a345904..ad07d39d4d5a2e4552fd8a11d8328f21157fc773
  
  #define       DRIVER_NAME     "omap2-nand"
  
- /* size (4 KiB) for IO mapping */
- #define       NAND_IO_SIZE    SZ_4K
  #define       NAND_WP_OFF     0
  #define NAND_WP_BIT   0x00000010
- #define WR_RD_PIN_MONITORING  0x00600000
  
  #define       GPMC_BUF_FULL   0x00000001
  #define       GPMC_BUF_EMPTY  0x00000000
@@@ -295,14 -291,11 +291,14 @@@ static void omap_read_buf_pref(struct m
        u32 *p = (u32 *)buf;
  
        /* take care of subpage reads */
 -      for (; len % 4 != 0; ) {
 -              *buf++ = __raw_readb(info->nand.IO_ADDR_R);
 -              len--;
 +      if (len % 4) {
 +              if (info->nand.options & NAND_BUSWIDTH_16)
 +                      omap_read_buf16(mtd, buf, len % 4);
 +              else
 +                      omap_read_buf8(mtd, buf, len % 4);
 +              p = (u32 *) (buf + len % 4);
 +              len -= len % 4;
        }
 -      p = (u32 *) buf;
  
        /* configure and start prefetch transfer */
        ret = gpmc_prefetch_enable(info->gpmc_cs, 0x0, len, 0x0);
@@@ -508,7 -501,7 +504,7 @@@ static void omap_write_buf_dma_pref(str
                omap_write_buf_pref(mtd, buf, len);
        else
                /* start transfer in DMA mode */
 -              omap_nand_dma_transfer(mtd, buf, len, 0x1);
 +              omap_nand_dma_transfer(mtd, (u_char *) buf, len, 0x1);
  }
  
  /**
@@@ -885,8 -878,6 +881,6 @@@ static int __devinit omap_nand_probe(st
        struct omap_nand_info           *info;
        struct omap_nand_platform_data  *pdata;
        int                             err;
-       unsigned long                   val;
  
        pdata = pdev->dev.platform_data;
        if (pdata == NULL) {
        info->gpmc_cs           = pdata->cs;
        info->gpmc_baseaddr     = pdata->gpmc_baseaddr;
        info->gpmc_cs_baseaddr  = pdata->gpmc_cs_baseaddr;
+       info->phys_base         = pdata->phys_base;
  
        info->mtd.priv          = &info->nand;
        info->mtd.name          = dev_name(&pdev->dev);
        info->mtd.owner         = THIS_MODULE;
  
-       err = gpmc_cs_request(info->gpmc_cs, NAND_IO_SIZE, &info->phys_base);
-       if (err < 0) {
-               dev_err(&pdev->dev, "Cannot request GPMC CS\n");
-               goto out_free_info;
-       }
-       /* Enable RD PIN Monitoring Reg */
-       if (pdata->dev_ready) {
-               val  = gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG1);
-               val |= WR_RD_PIN_MONITORING;
-               gpmc_cs_write_reg(info->gpmc_cs, GPMC_CS_CONFIG1, val);
-       }
-       val  = gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG7);
-       val &= ~(0xf << 8);
-       val |=  (0xc & 0xf) << 8;
-       gpmc_cs_write_reg(info->gpmc_cs, GPMC_CS_CONFIG7, val);
+       info->nand.options      |= pdata->devsize ? NAND_BUSWIDTH_16 : 0;
+       info->nand.options      |= NAND_SKIP_BBTSCAN;
  
        /* NAND write protect off */
        omap_nand_wp(&info->mtd, NAND_WP_OFF);
        if (!request_mem_region(info->phys_base, NAND_IO_SIZE,
                                pdev->dev.driver->name)) {
                err = -EBUSY;
-               goto out_free_cs;
+               goto out_free_info;
        }
  
        info->nand.IO_ADDR_R = ioremap(info->phys_base, NAND_IO_SIZE);
                info->nand.chip_delay = 50;
        }
  
-       info->nand.options  |= NAND_SKIP_BBTSCAN;
-       if ((gpmc_cs_read_reg(info->gpmc_cs, GPMC_CS_CONFIG1) & 0x3000)
-                                                               == 0x1000)
-               info->nand.options  |= NAND_BUSWIDTH_16;
        if (use_prefetch) {
                /* copy the virtual address of nand base for fifo access */
                info->nand_pref_fifo_add = info->nand.IO_ADDR_R;
  
  out_release_mem_region:
        release_mem_region(info->phys_base, NAND_IO_SIZE);
- out_free_cs:
-       gpmc_cs_free(info->gpmc_cs);
  out_free_info:
        kfree(info);
  
  static int omap_nand_remove(struct platform_device *pdev)
  {
        struct mtd_info *mtd = platform_get_drvdata(pdev);
 -      struct omap_nand_info *info = mtd->priv;
 +      struct omap_nand_info *info = container_of(mtd, struct omap_nand_info,
 +                                                      mtd);
  
        platform_set_drvdata(pdev, NULL);
        if (use_dma)
index dbc09a81866e078c41c2d0d07a07986718aafe2b,1842df8bdd934fcec9955f445984af556ebf13bb..88c802cd947f5326e183b9aa24d62ee015f8ccdf
@@@ -1,10 -1,10 +1,10 @@@
  /*
   * SuperH FLCTL nand controller
   *
-  * Copyright © 2008 Renesas Solutions Corp.
-  * Copyright © 2008 Atom Create Engineering Co., Ltd.
+  * Copyright (c) 2008 Renesas Solutions Corp.
+  * Copyright (c) 2008 Atom Create Engineering Co., Ltd.
   *
-  * Based on fsl_elbc_nand.c, Copyright © 2006-2007 Freescale Semiconductor
+  * Based on fsl_elbc_nand.c, Copyright (c) 2006-2007 Freescale Semiconductor
   *
   * This program is free software; you can redistribute it and/or modify
   * it under the terms of the GNU General Public License as published by
@@@ -75,6 -75,11 +75,11 @@@ static void start_translation(struct sh
        writeb(TRSTRT, FLTRCR(flctl));
  }
  
+ static void timeout_error(struct sh_flctl *flctl, const char *str)
+ {
+       dev_err(&flctl->pdev->dev, "Timeout occured in %s\n", str);
+ }
  static void wait_completion(struct sh_flctl *flctl)
  {
        uint32_t timeout = LOOP_TIMEOUT_MAX;
@@@ -87,7 -92,7 +92,7 @@@
                udelay(1);
        }
  
-       printk(KERN_ERR "wait_completion(): Timeout occured \n");
+       timeout_error(flctl, __func__);
        writeb(0x0, FLTRCR(flctl));
  }
  
@@@ -100,6 -105,8 +105,8 @@@ static void set_addr(struct mtd_info *m
                addr = page_addr;       /* ERASE1 */
        } else if (page_addr != -1) {
                /* SEQIN, READ0, etc.. */
+               if (flctl->chip.options & NAND_BUSWIDTH_16)
+                       column >>= 1;
                if (flctl->page_size) {
                        addr = column & 0x0FFF;
                        addr |= (page_addr & 0xff) << 16;
@@@ -132,7 -139,7 +139,7 @@@ static void wait_rfifo_ready(struct sh_
                        return;
                udelay(1);
        }
-       printk(KERN_ERR "wait_rfifo_ready(): Timeout occured \n");
+       timeout_error(flctl, __func__);
  }
  
  static void wait_wfifo_ready(struct sh_flctl *flctl)
                        return;
                udelay(1);
        }
-       printk(KERN_ERR "wait_wfifo_ready(): Timeout occured \n");
+       timeout_error(flctl, __func__);
  }
  
  static int wait_recfifo_ready(struct sh_flctl *flctl, int sector_number)
                writel(0, FL4ECCCR(flctl));
        }
  
-       printk(KERN_ERR "wait_recfifo_ready(): Timeout occured \n");
+       timeout_error(flctl, __func__);
        return 1;       /* timeout */
  }
  
@@@ -214,7 -221,7 +221,7 @@@ static void wait_wecfifo_ready(struct s
                        return;
                udelay(1);
        }
-       printk(KERN_ERR "wait_wecfifo_ready(): Timeout occured \n");
+       timeout_error(flctl, __func__);
  }
  
  static void read_datareg(struct sh_flctl *flctl, int offset)
@@@ -275,7 -282,7 +282,7 @@@ static void write_fiforeg(struct sh_flc
  static void set_cmd_regs(struct mtd_info *mtd, uint32_t cmd, uint32_t flcmcdr_val)
  {
        struct sh_flctl *flctl = mtd_to_flctl(mtd);
-       uint32_t flcmncr_val = readl(FLCMNCR(flctl));
+       uint32_t flcmncr_val = readl(FLCMNCR(flctl)) & ~SEL_16BIT;
        uint32_t flcmdcr_val, addr_len_bytes = 0;
  
        /* Set SNAND bit if page size is 2048byte */
        case NAND_CMD_READOOB:
                addr_len_bytes = flctl->rw_ADRCNT;
                flcmdcr_val |= CDSRC_E;
+               if (flctl->chip.options & NAND_BUSWIDTH_16)
+                       flcmncr_val |= SEL_16BIT;
                break;
        case NAND_CMD_SEQIN:
                /* This case is that cmd is READ0 or READ1 or READ00 */
        case NAND_CMD_PAGEPROG:
                addr_len_bytes = flctl->rw_ADRCNT;
                flcmdcr_val |= DOCMD2_E | CDSRC_E | SELRW;
+               if (flctl->chip.options & NAND_BUSWIDTH_16)
+                       flcmncr_val |= SEL_16BIT;
                break;
        case NAND_CMD_READID:
                flcmncr_val &= ~SNAND_E;
@@@ -523,6 -534,8 +534,8 @@@ static void flctl_cmdfunc(struct mtd_in
                set_addr(mtd, 0, page_addr);
  
                flctl->read_bytes = mtd->writesize + mtd->oobsize;
+               if (flctl->chip.options & NAND_BUSWIDTH_16)
+                       column >>= 1;
                flctl->index += column;
                goto read_normal_exit;
  
@@@ -686,6 -699,18 +699,18 @@@ static uint8_t flctl_read_byte(struct m
        return data;
  }
  
+ static uint16_t flctl_read_word(struct mtd_info *mtd)
+ {
+        struct sh_flctl *flctl = mtd_to_flctl(mtd);
+        int index = flctl->index;
+        uint16_t data;
+        uint16_t *buf = (uint16_t *)&flctl->done_buff[index];
+        data = *buf;
+        flctl->index += 2;
+        return data;
+ }
  static void flctl_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
  {
        int i;
@@@ -769,38 -794,36 +794,36 @@@ static int flctl_chip_init_tail(struct 
        return 0;
  }
  
- static int __init flctl_probe(struct platform_device *pdev)
+ static int __devinit flctl_probe(struct platform_device *pdev)
  {
        struct resource *res;
        struct sh_flctl *flctl;
        struct mtd_info *flctl_mtd;
        struct nand_chip *nand;
        struct sh_flctl_platform_data *pdata;
-       int ret;
+       int ret = -ENXIO;
  
        pdata = pdev->dev.platform_data;
        if (pdata == NULL) {
-               printk(KERN_ERR "sh_flctl platform_data not found.\n");
-               return -ENODEV;
+               dev_err(&pdev->dev, "no platform data defined\n");
+               return -EINVAL;
        }
  
        flctl = kzalloc(sizeof(struct sh_flctl), GFP_KERNEL);
        if (!flctl) {
-               printk(KERN_ERR "Unable to allocate NAND MTD dev structure.\n");
+               dev_err(&pdev->dev, "failed to allocate driver data\n");
                return -ENOMEM;
        }
  
        res = platform_get_resource(pdev, IORESOURCE_MEM, 0);
        if (!res) {
-               printk(KERN_ERR "%s: resource not found.\n", __func__);
-               ret = -ENODEV;
+               dev_err(&pdev->dev, "failed to get I/O memory\n");
                goto err;
        }
  
        flctl->reg = ioremap(res->start, resource_size(res));
        if (flctl->reg == NULL) {
-               printk(KERN_ERR "%s: ioremap error.\n", __func__);
-               ret = -ENOMEM;
+               dev_err(&pdev->dev, "failed to remap I/O memory\n");
                goto err;
        }
  
        flctl_mtd = &flctl->mtd;
        nand = &flctl->chip;
        flctl_mtd->priv = nand;
+       flctl->pdev = pdev;
        flctl->hwecc = pdata->has_hwecc;
  
        flctl_register_init(flctl, pdata->flcmncr_val);
        nand->select_chip = flctl_select_chip;
        nand->cmdfunc = flctl_cmdfunc;
  
 -      ret = nand_scan_ident(flctl_mtd, 1);
+       if (pdata->flcmncr_val & SEL_16BIT) {
+               nand->options |= NAND_BUSWIDTH_16;
+               nand->read_word = flctl_read_word;
+       }
 +      ret = nand_scan_ident(flctl_mtd, 1, NULL);
        if (ret)
                goto err;
  
@@@ -846,7 -875,7 +875,7 @@@ err
        return ret;
  }
  
- static int __exit flctl_remove(struct platform_device *pdev)
+ static int __devexit flctl_remove(struct platform_device *pdev)
  {
        struct sh_flctl *flctl = platform_get_drvdata(pdev);
  
diff --combined lib/idr.c
index 5ee8b1a57370824b7f32feebdafe63e95df3d00d,2eb1dca03681b00eaa0e94cadc2ca18df0678f7b..422a9d5069cc3389986ebcf98ebc3861e1535180
+++ b/lib/idr.c
@@@ -504,7 -504,7 +504,7 @@@ void *idr_find(struct idr *idp, int id
        int n;
        struct idr_layer *p;
  
-       p = rcu_dereference(idp->top);
+       p = rcu_dereference_raw(idp->top);
        if (!p)
                return NULL;
        n = (p->layer+1) * IDR_BITS;
        while (n > 0 && p) {
                n -= IDR_BITS;
                BUG_ON(n != p->layer*IDR_BITS);
-               p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]);
+               p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]);
        }
        return((void *)p);
  }
@@@ -552,7 -552,7 +552,7 @@@ int idr_for_each(struct idr *idp
        struct idr_layer **paa = &pa[0];
  
        n = idp->layers * IDR_BITS;
-       p = rcu_dereference(idp->top);
+       p = rcu_dereference_raw(idp->top);
        max = 1 << n;
  
        id = 0;
                while (n > 0 && p) {
                        n -= IDR_BITS;
                        *paa++ = p;
-                       p = rcu_dereference(p->ary[(id >> n) & IDR_MASK]);
+                       p = rcu_dereference_raw(p->ary[(id >> n) & IDR_MASK]);
                }
  
                if (p) {
@@@ -623,7 -623,7 +623,7 @@@ void *idr_get_next(struct idr *idp, in
        }
        return NULL;
  }
 -
 +EXPORT_SYMBOL(idr_get_next);
  
  
  /**