Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
authorLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Jan 2012 16:00:30 +0000 (08:00 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Thu, 12 Jan 2012 16:00:30 +0000 (08:00 -0800)
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (526 commits)
  ASoC: twl6040 - Add method to query optimum PDM_DL1 gain
  ALSA: hda - Fix the lost power-setup of seconary pins after PM resume
  ALSA: usb-audio: add Yamaha MOX6/MOX8 support
  ALSA: virtuoso: add S/PDIF input support for all Xonars
  ALSA: ice1724 - Support for ooAoo SQ210a
  ALSA: ice1724 - Allow card info based on model only
  ALSA: ice1724 - Create capture pcm only for ADC-enabled configurations
  ALSA: hdspm - Provide unique driver id based on card serial
  ASoC: Dynamically allocate the rtd device for a non-empty release()
  ASoC: Fix recursive dependency due to select ATMEL_SSC in SND_ATMEL_SOC_SSC
  ALSA: hda - Fix the detection of "Loopback Mixing" control for VIA codecs
  ALSA: hda - Return the error from get_wcaps_type() for invalid NIDs
  ALSA: hda - Use auto-parser for HP laptops with cx20459 codec
  ALSA: asihpi - Fix potential Oops in snd_asihpi_cmode_info()
  ALSA: hdsp - Fix potential Oops in snd_hdsp_info_pref_sync_ref()
  ALSA: hda/cirrus - support for iMac12,2 model
  ASoC: cx20442: add bias control over a platform provided regulator
  ALSA: usb-audio - Avoid flood of frame-active debug messages
  ALSA: snd-usb-us122l: Delete calls to preempt_disable
  mfd: Put WM8994 into cache only mode when suspending
  ...

Fix up trivial conflicts in:
 - arch/arm/mach-s3c64xx/mach-crag6410.c:
renamed speyside_wm8962 to tobermory, added littlemill right
next to it
 - drivers/base/regmap/{regcache.c,regmap.c}:
duplicate diff that had already come in with other changes in
the regmap tree

27 files changed:
1  2 
Documentation/devicetree/bindings/vendor-prefixes.txt
MAINTAINERS
arch/arm/mach-omap2/mcbsp.c
arch/arm/mach-pxa/corgi.c
arch/arm/mach-pxa/eseries.c
arch/arm/mach-pxa/poodle.c
arch/arm/mach-pxa/stargate2.c
arch/arm/mach-pxa/tosa.c
arch/arm/mach-s3c64xx/mach-crag6410.c
arch/arm/mach-shmobile/board-ap4evb.c
arch/arm/mach-shmobile/board-mackerel.c
arch/arm/mach-tegra/board-harmony.c
arch/arm/mach-tegra/board-seaboard.c
arch/sh/boards/mach-se/7724/setup.c
drivers/mfd/Kconfig
drivers/mfd/Makefile
drivers/mfd/wm8994-core.c
sound/core/Kconfig
sound/soc/codecs/sgtl5000.c
sound/soc/kirkwood/kirkwood-dma.c
sound/soc/mxs/mxs-saif.c
sound/soc/nuc900/nuc900-ac97.c
sound/usb/6fire/chip.c
sound/usb/caiaq/device.c
sound/usb/misc/ua101.c
sound/usb/usx2y/us122l.c
sound/usb/usx2y/usbusx2y.c

@@@ -8,9 -8,7 +8,9 @@@ amcc     Applied Micro Circuits Corporatio
  apm   Applied Micro Circuits Corporation (APM)
  arm   ARM Ltd.
  atmel Atmel Corporation
 +cavium        Cavium, Inc.
  chrp  Common Hardware Reference Platform
 +cortina       Cortina Systems, Inc.
  dallas        Maxim Integrated Products (formerly Dallas Semiconductor)
  denx  Denx Software Engineering
  epson Seiko Epson Corp.
@@@ -34,12 -32,10 +34,13 @@@ powervr    Imagination Technologie
  qcom  Qualcomm, Inc.
  ramtron       Ramtron International
  samsung       Samsung Semiconductor
 +sbs   Smart Battery System
  schindler     Schindler
 +sil   Silicon Image
  simtek
  sirf  SiRF Technology, Inc.
 +st    STMicroelectronics
  stericsson    ST-Ericsson
  ti    Texas Instruments
+ wlf   Wolfson Microelectronics
  xlnx  Xilinx
diff --combined MAINTAINERS
@@@ -184,6 -184,11 +184,6 @@@ S:        Maintaine
  F:    Documentation/filesystems/9p.txt
  F:    fs/9p/
  
 -A2232 SERIAL BOARD DRIVER
 -L:    linux-m68k@lists.linux-m68k.org
 -S:    Orphan
 -F:    drivers/staging/generic_serial/ser_a2232*
 -
  AACRAID SCSI RAID DRIVER
  M:    Adaptec OEM Raid Solutions <aacraid@adaptec.com>
  L:    linux-scsi@vger.kernel.org
@@@ -342,7 -347,7 +342,7 @@@ S: Supporte
  F:    drivers/mfd/adp5520.c
  F:    drivers/video/backlight/adp5520_bl.c
  F:    drivers/leds/leds-adp5520.c
 -F:    drivers/gpio/adp5520-gpio.c
 +F:    drivers/gpio/gpio-adp5520.c
  F:    drivers/input/keyboard/adp5520-keys.c
  
  ADP5588 QWERTY KEYPAD AND IO EXPANDER DRIVER (ADP5588/ADP5587)
@@@ -351,7 -356,7 +351,7 @@@ L: device-drivers-devel@blackfin.uclinu
  W:    http://wiki.analog.com/ADP5588
  S:    Supported
  F:    drivers/input/keyboard/adp5588-keys.c
 -F:    drivers/gpio/adp5588-gpio.c
 +F:    drivers/gpio/gpio-adp5588.c
  
  ADP8860 BACKLIGHT DRIVER (ADP8860/ADP8861/ADP8863)
  M:    Michael Hennerich <michael.hennerich@analog.com>
@@@ -506,8 -511,8 +506,8 @@@ M: Joerg Roedel <joerg.roedel@amd.com
  L:    iommu@lists.linux-foundation.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/linux-2.6-iommu.git
  S:    Supported
 -F:    arch/x86/kernel/amd_iommu*.c
 -F:    arch/x86/include/asm/amd_iommu*.h
 +F:    drivers/iommu/amd_iommu*.[ch]
 +F:    include/linux/amd-iommu.h
  
  AMD MICROCODE UPDATE SUPPORT
  M:    Andreas Herrmann <andreas.herrmann3@amd.com>
@@@ -537,6 -542,7 +537,7 @@@ F: sound/soc/codecs/adau
  F:    sound/soc/codecs/adav*
  F:    sound/soc/codecs/ad1*
  F:    sound/soc/codecs/ssm*
+ F:    sound/soc/codecs/sigmadsp.*
  
  ANALOG DEVICES INC ASOC DRIVERS
  L:    uclinux-dist-devel@blackfin.uclinux.org
@@@ -784,7 -790,6 +785,7 @@@ L: linux-arm-kernel@lists.infradead.or
  S:    Maintained
  T:    git git://git.pengutronix.de/git/imx/linux-2.6.git
  F:    arch/arm/mach-mx*/
 +F:    arch/arm/mach-imx/
  F:    arch/arm/plat-mxc/
  
  ARM/FREESCALE IMX51
@@@ -800,13 -805,6 +801,13 @@@ S:       Maintaine
  T:    git git://git.linaro.org/people/shawnguo/linux-2.6.git
  F:    arch/arm/mach-imx/*imx6*
  
 +ARM/FREESCALE MXS ARM ARCHITECTURE
 +M:    Shawn Guo <shawn.guo@linaro.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Maintained
 +T:    git git://git.linaro.org/people/shawnguo/linux-2.6.git
 +F:    arch/arm/mach-mxs/
 +
  ARM/GLOMATION GESBC9312SX MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -914,6 -912,7 +915,6 @@@ M: Lennert Buytenhek <kernel@wantstofly
  M:    Nicolas Pitre <nico@fluxnic.net>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Odd Fixes
 -F:    arch/arm/mach-loki/
  F:    arch/arm/mach-kirkwood/
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
@@@ -1048,18 -1047,35 +1049,18 @@@ ARM/SAMSUNG ARM ARCHITECTURE
  M:    Ben Dooks <ben-linux@fluff.org>
  M:    Kukjin Kim <kgene.kim@samsung.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +L:    linux-samsung-soc@vger.kernel.org (moderated for non-subscribers)
  W:    http://www.fluff.org/ben/linux/
  S:    Maintained
  F:    arch/arm/plat-samsung/
  F:    arch/arm/plat-s3c24xx/
  F:    arch/arm/plat-s5p/
 +F:    arch/arm/mach-s3c24*/
 +F:    arch/arm/mach-s3c64xx/
  F:    drivers/*/*s3c2410*
  F:    drivers/*/*/*s3c2410*
 -
 -ARM/S3C2410 ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 -S:    Maintained
 -F:    arch/arm/mach-s3c2410/
 -
 -ARM/S3C244x ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 -S:    Maintained
 -F:    arch/arm/mach-s3c2440/
 -F:    arch/arm/mach-s3c2443/
 -
 -ARM/S3C64xx ARM ARCHITECTURE
 -M:    Ben Dooks <ben-linux@fluff.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://www.fluff.org/ben/linux/
 -S:    Maintained
 -F:    arch/arm/mach-s3c64xx/
 +F:    drivers/spi/spi-s3c*
 +F:    sound/soc/samsung/*
  
  ARM/S5P EXYNOS ARM ARCHITECTURES
  M:    Kukjin Kim <kgene.kim@samsung.com>
@@@ -1075,8 -1091,8 +1076,8 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-s5pv210/mach-aquila.c
  F:    arch/arm/mach-s5pv210/mach-goni.c
 -F:    arch/arm/mach-exynos4/mach-universal_c210.c
 -F:    arch/arm/mach-exynos4/mach-nuri.c
 +F:    arch/arm/mach-exynos/mach-universal_c210.c
 +F:    arch/arm/mach-exynos/mach-nuri.c
  
  ARM/SAMSUNG S5P SERIES FIMC SUPPORT
  M:    Kyungmin Park <kyungmin.park@samsung.com>
@@@ -1104,6 -1120,7 +1105,6 @@@ M:      Tomasz Stanislawski <t.stanislaws@sa
  L:    linux-arm-kernel@lists.infradead.org
  L:    linux-media@vger.kernel.org
  S:    Maintained
 -F:    arch/arm/plat-s5p/dev-tv.c
  F:    drivers/media/video/s5p-tv/
  
  ARM/SHMOBILE ARM ARCHITECTURE
@@@ -1117,6 -1134,13 +1118,6 @@@ S:     Supporte
  F:    arch/arm/mach-shmobile/
  F:    drivers/sh/
  
 -ARM/TELECHIPS ARM ARCHITECTURE
 -M:    "Hans J. Koch" <hjk@hansjkoch.de>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/plat-tcc/
 -F:    arch/arm/mach-tcc8k/
 -
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -1138,13 -1162,14 +1139,13 @@@ L:   linux-arm-kernel@lists.infradead.or
  W:    http://www.mcuos.com
  S:    Maintained
  F:    arch/arm/mach-w90x900/
 -F:    arch/arm/mach-nuc93x/
  F:    drivers/input/keyboard/w90p910_keypad.c
  F:    drivers/input/touchscreen/w90p910_ts.c
  F:    drivers/watchdog/nuc900_wdt.c
  F:    drivers/net/ethernet/nuvoton/w90p910_ether.c
  F:    drivers/mtd/nand/nuc900_nand.c
  F:    drivers/rtc/rtc-nuc900.c
 -F:    drivers/spi/spi_nuc900.c
 +F:    drivers/spi/spi-nuc900.c
  F:    drivers/usb/host/ehci-w90x900.c
  F:    drivers/video/nuc900fb.c
  
@@@ -1169,6 -1194,7 +1170,6 @@@ L:      linux-arm-kernel@lists.infradead.or
  S:    Maintained
  F:    arch/arm/mach-ux500/
  F:    drivers/dma/ste_dma40*
 -F:    drivers/mfd/ab3550*
  F:    drivers/mfd/abx500*
  F:    drivers/mfd/ab8500*
  F:    drivers/mfd/stmpe*
@@@ -1348,7 -1374,7 +1349,7 @@@ F:      drivers/net/ethernet/cadence
  ATMEL SPI DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  S:    Supported
 -F:    drivers/spi/atmel_spi.*
 +F:    drivers/spi/spi-atmel.*
  
  ATMEL USBA UDC DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
@@@ -1487,7 -1513,7 +1488,7 @@@ M:      Sonic Zhang <sonic.zhang@analog.com
  L:    uclinux-dist-devel@blackfin.uclinux.org
  W:    http://blackfin.uclinux.org
  S:    Supported
 -F:    drivers/tty/serial/bfin_5xx.c
 +F:    drivers/tty/serial/bfin_uart.c
  
  BLACKFIN WATCHDOG DRIVER
  M:    Mike Frysinger <vapier.adi@gmail.com>
@@@ -1578,7 -1604,7 +1579,7 @@@ M:      Franky (Zhenhui) Lin <frankyl@broadc
  M:    Kan Yan <kanyan@broadcom.com>
  L:    linux-wireless@vger.kernel.org
  S:    Supported
 -F:    drivers/staging/brcm80211/
 +F:    drivers/net/wireless/brcm80211/
  
  BROADCOM BNX2FC 10 GIGABIT FCOE DRIVER
  M:    Bhanu Prakash Gollapudi <bprakash@broadcom.com>
@@@ -1617,7 -1643,7 +1618,7 @@@ BT8XXGPIO DRIVE
  M:    Michael Buesch <m@bues.ch>
  W:    http://bu3sch.de/btgpio.php
  S:    Maintained
 -F:    drivers/gpio/bt8xxgpio.c
 +F:    drivers/gpio/gpio-bt8xx.c
  
  BTRFS FILE SYSTEM
  M:    Chris Mason <chris.mason@oracle.com>
@@@ -1645,14 -1671,6 +1646,14 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/pci/oxygen/
  
 +C6X ARCHITECTURE
 +M:    Mark Salter <msalter@redhat.com>
 +M:    Aurelien Jacquiot <a-jacquiot@ti.com>
 +L:    linux-c6x-dev@linux-c6x.org
 +W:    http://www.linux-c6x.org/wiki/index.php/Main_Page
 +S:    Maintained
 +F:    arch/c6x/
 +
  CACHEFILES: FS-CACHE BACKEND FOR CACHING ON MOUNTED FILESYSTEMS
  M:    David Howells <dhowells@redhat.com>
  L:    linux-cachefs@redhat.com
@@@ -1666,7 -1684,7 +1667,7 @@@ L:      linux-media@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-2.6.git
  S:    Maintained
  F:    Documentation/video4linux/cafe_ccic
 -F:    drivers/media/video/cafe_ccic*
 +F:    drivers/media/video/marvell-ccic/
  
  CAIF NETWORK LAYER
  M:    Sjur Braendeland <sjur.brandeland@stericsson.com>
@@@ -1690,9 -1708,11 +1691,9 @@@ F:     arch/x86/include/asm/tce.
  
  CAN NETWORK LAYER
  M:    Oliver Hartkopp <socketcan@hartkopp.net>
 -M:    Oliver Hartkopp <oliver.hartkopp@volkswagen.de>
 -M:    Urs Thuermann <urs.thuermann@volkswagen.de>
  L:    linux-can@vger.kernel.org
 -L:    netdev@vger.kernel.org
 -W:    http://developer.berlios.de/projects/socketcan/
 +W:    http://gitorious.org/linux-can
 +T:    git git://gitorious.org/linux-can/linux-can-next.git
  S:    Maintained
  F:    net/can/
  F:    include/linux/can.h
@@@ -1703,10 -1723,9 +1704,10 @@@ F:    include/linux/can/gw.
  
  CAN NETWORK DRIVERS
  M:    Wolfgang Grandegger <wg@grandegger.com>
 +M:    Marc Kleine-Budde <mkl@pengutronix.de>
  L:    linux-can@vger.kernel.org
 -L:    netdev@vger.kernel.org
 -W:    http://developer.berlios.de/projects/socketcan/
 +W:    http://gitorious.org/linux-can
 +T:    git git://gitorious.org/linux-can/linux-can-next.git
  S:    Maintained
  F:    drivers/net/can/
  F:    include/linux/can/dev.h
@@@ -1890,6 -1909,12 +1891,6 @@@ L:     platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/compal-laptop.c
  
 -COMPUTONE INTELLIPORT MULTIPORT CARD
 -W:    http://www.wittsend.com/computone.html
 -S:    Orphan
 -F:    Documentation/serial/computone.txt
 -F:    drivers/staging/tty/ip2/
 -
  CONEXANT ACCESSRUNNER USB DRIVER
  M:    Simon Arlott <cxacru@fire.lp0.eu>
  L:    accessrunner-general@lists.sourceforge.net
@@@ -2104,7 -2129,7 +2105,7 @@@ DAVICOM FAST ETHERNET (DMFE) NETWORK DR
  L:    netdev@vger.kernel.org
  S:    Orphan
  F:    Documentation/networking/dmfe.txt
 -F:    drivers/net/ethernet/tulip/dmfe.c
 +F:    drivers/net/ethernet/dec/tulip/dmfe.c
  
  DC390/AM53C974 SCSI driver
  M:    Kurt Garloff <garloff@suse.de>
@@@ -2177,13 -2202,6 +2178,13 @@@ T:    git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    drivers/usb/dwc3/
  
 +DEVICE FREQUENCY (DEVFREQ)
 +M:    MyungJoo Ham <myungjoo.ham@samsung.com>
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Maintained
 +F:    drivers/devfreq/
 +
  DEVICE NUMBER REGISTRY
  M:    Torben Mathiasen <device@lanana.org>
  W:    http://lanana.org/docs/device-list/index.html
@@@ -2200,6 -2218,15 +2201,6 @@@ F:     drivers/md/dm
  F:    include/linux/device-mapper.h
  F:    include/linux/dm-*.h
  
 -DIGI INTL. EPCA DRIVER
 -M:    "Digi International, Inc" <Eng.Linux@digi.com>
 -L:    Eng.Linux@digi.com
 -W:    http://www.digi.com
 -S:    Orphan
 -F:    Documentation/serial/digiepca.txt
 -F:    drivers/staging/tty/epca*
 -F:    drivers/staging/tty/digi*
 -
  DIOLAN U2C-12 I2C DRIVER
  M:    Guenter Roeck <guenter.roeck@ericsson.com>
  L:    linux-i2c@vger.kernel.org
@@@ -2683,7 -2710,7 +2684,7 @@@ FIREWIRE SUBSYSTE
  M:    Stefan Richter <stefanr@s5r6.in-berlin.de>
  L:    linux1394-devel@lists.sourceforge.net
  W:    http://ieee1394.wiki.kernel.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394/linux1394.git
  S:    Maintained
  F:    drivers/firewire/
  F:    include/linux/firewire*.h
@@@ -2903,7 -2930,6 +2904,7 @@@ F:      include/linux/gigaset_dev.
  
  GPIO SUBSYSTEM
  M:    Grant Likely <grant.likely@secretlab.ca>
 +M:    Linus Walleij <linus.walleij@stericsson.com>
  S:    Maintained
  T:    git git://git.secretlab.ca/git/linux-2.6.git
  F:    Documentation/gpio.txt
@@@ -2921,7 -2947,7 +2922,7 @@@ GRETH 10/100/1G Ethernet MAC device dri
  M:    Kristoffer Glembo <kristoffer@gaisler.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/greth*
 +F:    drivers/net/ethernet/aeroflex/
  
  GSPCA FINEPIX SUBDRIVER
  M:    Frank Zago <frank@zago.net>
@@@ -3085,7 -3111,6 +3086,7 @@@ F:      include/linux/hid
  
  HIGH-RESOLUTION TIMERS, CLOCKEVENTS, DYNTICKS
  M:    Thomas Gleixner <tglx@linutronix.de>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Maintained
  F:    Documentation/timers/
  F:    kernel/hrtimer.c
@@@ -3173,16 -3198,6 +3174,16 @@@ M:    William Irwin <wli@holomorphy.com
  S:    Maintained
  F:    fs/hugetlbfs/
  
 +Hyper-V CORE AND DRIVERS
 +M:    K. Y. Srinivasan <kys@microsoft.com>
 +M:    Haiyang Zhang <haiyangz@microsoft.com>
 +L:    devel@linuxdriverproject.org
 +S:    Maintained
 +F:    drivers/hv/
 +F:    drivers/hid/hid-hyperv.c
 +F:    drivers/net/hyperv/
 +F:    drivers/staging/hv/
 +
  I2C/SMBUS STUB DRIVER
  M:    "Mark M. Hoffman" <mhoffman@lightlink.com>
  L:    linux-i2c@vger.kernel.org
@@@ -3578,7 -3593,8 +3579,7 @@@ F:      net/netfilter/ipvs
  IPWIRELESS DRIVER
  M:    Jiri Kosina <jkosina@suse.cz>
  M:    David Sterba <dsterba@suse.cz>
 -S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jikos/ipwireless_cs.git
 +S:    Odd Fixes
  F:    drivers/tty/ipwireless/
  
  IPX NETWORK LAYER
@@@ -3604,7 -3620,7 +3605,7 @@@ F:      net/irda
  IRQ SUBSYSTEM
  M:    Thomas Gleixner <tglx@linutronix.de>
  S:    Maintained
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git irq/core
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
  F:    kernel/irq/
  
  ISAPNP
@@@ -3871,7 -3887,8 +3872,7 @@@ L:      keyrings@linux-nfs.or
  S:    Supported
  F:    Documentation/security/keys-trusted-encrypted.txt
  F:    include/keys/encrypted-type.h
 -F:    security/keys/encrypted.c
 -F:    security/keys/encrypted.h
 +F:    security/keys/encrypted-keys/
  
  KGDB / KDB /debug_core
  M:    Jason Wessel <jason.wessel@windriver.com>
@@@ -4004,7 -4021,7 +4005,7 @@@ M:      Josh Boyer <jwboyer@gmail.com
  M:    Matt Porter <mporter@kernel.crashing.org>
  W:    http://www.penguinppc.org/
  L:    linuxppc-dev@lists.ozlabs.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jwboyer/powerpc-4xx.git
 +T:    git git://git.infradead.org/users/jwboyer/powerpc-4xx.git
  S:    Maintained
  F:    arch/powerpc/platforms/40x/
  F:    arch/powerpc/platforms/44x/
@@@ -4091,7 -4108,7 +4092,7 @@@ F:      drivers/hwmon/lm90.
  LOCKDEP AND LOCKSTAT
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/peterz/linux-2.6-lockdep.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking
  S:    Maintained
  F:    Documentation/lockdep*.txt
  F:    Documentation/lockstat.txt
@@@ -4273,9 -4290,7 +4274,9 @@@ T:      git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    Documentation/dvb/
  F:    Documentation/video4linux/
 +F:    Documentation/DocBook/media/
  F:    drivers/media/
 +F:    drivers/staging/media/
  F:    include/media/
  F:    include/linux/dvb/
  F:    include/linux/videodev*.h
@@@ -4297,9 -4312,8 +4298,9 @@@ F:      include/linux/mm.
  F:    mm/
  
  MEMORY RESOURCE CONTROLLER
 +M:    Johannes Weiner <hannes@cmpxchg.org>
 +M:    Michal Hocko <mhocko@suse.cz>
  M:    Balbir Singh <bsingharora@gmail.com>
 -M:    Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
  M:    KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
  L:    cgroups@vger.kernel.org
  L:    linux-mm@kvack.org
@@@ -4847,14 -4861,6 +4848,14 @@@ S:    Maintaine
  T:    git git://openrisc.net/~jonas/linux
  F:    arch/openrisc
  
 +OPENVSWITCH
 +M:    Jesse Gross <jesse@nicira.com>
 +L:    dev@openvswitch.org
 +W:    http://openvswitch.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jesse/openvswitch.git
 +S:    Maintained
 +F:    net/openvswitch/
 +
  OPL4 DRIVER
  M:    Clemens Ladisch <clemens@ladisch.de>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -5089,7 -5095,6 +5090,7 @@@ M:      Peter Zijlstra <a.p.zijlstra@chello.
  M:    Paul Mackerras <paulus@samba.org>
  M:    Ingo Molnar <mingo@elte.hu>
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
  S:    Supported
  F:    kernel/events/*
  F:    include/linux/perf_event.h
@@@ -5121,19 -5126,10 +5122,19 @@@ L:   linux-mtd@lists.infradead.or
  S:    Maintained
  F:    drivers/mtd/devices/phram.c
  
 +PICOXCELL SUPPORT
 +M:    Jamie Iles <jamie@jamieiles.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://github.com/jamieiles/linux-2.6-ji.git
 +S:    Supported
 +F:    arch/arm/mach-picoxcell
 +F:    drivers/*/picoxcell*
 +F:    drivers/*/*/picoxcell*
 +
  PIN CONTROL SUBSYSTEM
  M:    Linus Walleij <linus.walleij@linaro.org>
  S:    Maintained
 -F:    drivers/pinmux/
 +F:    drivers/pinctrl/
  
  PKTCDVD DRIVER
  M:    Peter Osterlund <petero2@telia.com>
@@@ -5178,7 -5174,6 +5179,7 @@@ F:      drivers/scsi/pm8001
  
  POSIX CLOCKS and TIMERS
  M:    Thomas Gleixner <tglx@linutronix.de>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
  F:    fs/timerfd.c
  F:    include/linux/timer*
@@@ -5316,27 -5311,35 +5317,27 @@@ F:   drivers/media/video/pvrusb2
  PXA2xx/PXA3xx SUPPORT
  M:    Eric Miao <eric.y.miao@gmail.com>
  M:    Russell King <linux@arm.linux.org.uk>
 +M:    Haojian Zhuang <haojian.zhuang@marvell.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +T:    git git://github.com/hzhuang1/linux.git
 +T:    git git://git.linaro.org/people/ycmiao/pxa-linux.git
  S:    Maintained
  F:    arch/arm/mach-pxa/
  F:    drivers/pcmcia/pxa2xx*
 -F:    drivers/spi/pxa2xx*
 +F:    drivers/spi/spi-pxa2xx*
  F:    drivers/usb/gadget/pxa2*
  F:    include/sound/pxa2xx-lib.h
  F:    sound/arm/pxa*
  F:    sound/soc/pxa
  
 -PXA168 SUPPORT
 -M:    Eric Miao <eric.y.miao@gmail.com>
 -M:    Jason Chagas <jason.chagas@marvell.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
 -
 -PXA910 SUPPORT
 +MMP SUPPORT
  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
 -
 -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
 +T:    git git://github.com/hzhuang1/linux.git
 +T:    git git://git.linaro.org/people/ycmiao/pxa-linux.git
  S:    Maintained
 +F:    arch/arm/mach-mmp/
  
  PXA MMCI DRIVER
  S:    Orphan
@@@ -5375,7 -5378,6 +5376,7 @@@ S:      Supporte
  F:    drivers/scsi/qla4xxx/
  
  QLOGIC QLA3XXX NETWORK DRIVER
 +M:    Jitendra Kalsaria <jitendra.kalsaria@qlogic.com>
  M:    Ron Mercer <ron.mercer@qlogic.com>
  M:    linux-driver@qlogic.com
  L:    netdev@vger.kernel.org
@@@ -5546,6 -5548,11 +5547,6 @@@ M:     Maxim Levitsky <maximlevitsky@gmail.
  S:    Maintained
  F:    drivers/memstick/host/r592.*
  
 -RISCOM8 DRIVER
 -S:    Orphan
 -F:    Documentation/serial/riscom8.txt
 -F:    drivers/staging/tty/riscom8*
 -
  ROCKETPORT DRIVER
  P:    Comtrol Corp.
  W:    http://www.comtrol.com
@@@ -5682,7 -5689,6 +5683,7 @@@ F:      drivers/dma/dw_dmac.
  TIMEKEEPING, NTP
  M:    John Stultz <johnstul@us.ibm.com>
  M:    Thomas Gleixner <tglx@linutronix.de>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git timers/core
  S:    Supported
  F:    include/linux/clocksource.h
  F:    include/linux/time.h
@@@ -5707,7 -5713,6 +5708,7 @@@ F:      drivers/watchdog/sc1200wdt.
  SCHEDULER
  M:    Ingo Molnar <mingo@elte.hu>
  M:    Peter Zijlstra <peterz@infradead.org>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched/core
  S:    Maintained
  F:    kernel/sched*
  F:    include/linux/sched.h
@@@ -5805,14 -5810,13 +5806,14 @@@ L:   linux-mmc@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/cjb/mmc.git
  S:    Maintained
  F:    drivers/mmc/host/sdhci.*
 +F:    drivers/mmc/host/sdhci-pltfm.[ch]
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE, OPEN FIRMWARE BINDINGS (SDHCI-OF)
  M:    Anton Vorontsov <avorontsov@ru.mvista.com>
  L:    linuxppc-dev@lists.ozlabs.org
  L:    linux-mmc@vger.kernel.org
  S:    Maintained
 -F:    drivers/mmc/host/sdhci-of.*
 +F:    drivers/mmc/host/sdhci-pltfm.[ch]
  
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
  M:    Ben Dooks <ben-linux@fluff.org>
@@@ -5891,6 -5895,7 +5892,6 @@@ F:      drivers/net/ethernet/emulex/benet
  
  SFC NETWORK DRIVER
  M:    Solarflare linux maintainers <linux-net-drivers@solarflare.com>
 -M:    Steve Hodgson <shodgson@solarflare.com>
  M:    Ben Hutchings <bhutchings@solarflare.com>
  L:    netdev@vger.kernel.org
  S:    Supported
@@@ -6191,7 -6196,9 +6192,7 @@@ M:      Viresh Kumar <viresh.kumar@st.com
  W:    http://www.st.com/spear
  S:    Maintained
  F:    arch/arm/mach-spear*/clock.c
 -F:    arch/arm/mach-spear*/include/mach/clkdev.h
  F:    arch/arm/plat-spear/clock.c
 -F:    arch/arm/plat-spear/include/plat/clkdev.h
  F:    arch/arm/plat-spear/include/plat/clock.h
  
  SPEAR PAD MULTIPLEXING SUPPORT
@@@ -6207,6 -6214,11 +6208,6 @@@ F:     arch/arm/mach-spear3xx/spear3*0_evb.
  F:    arch/arm/mach-spear6xx/spear600.c
  F:    arch/arm/mach-spear6xx/spear600_evb.c
  
 -SPECIALIX IO8+ MULTIPORT SERIAL CARD DRIVER
 -S:    Orphan
 -F:    Documentation/serial/specialix.txt
 -F:    drivers/staging/tty/specialix*
 -
  SPI SUBSYSTEM
  M:    Grant Likely <grant.likely@secretlab.ca>
  L:    spi-devel-general@lists.sourceforge.net
@@@ -6249,7 -6261,7 +6250,7 @@@ F:      arch/alpha/kernel/srm_env.
  
  STABLE BRANCH
  M:    Greg Kroah-Hartman <greg@kroah.com>
 -L:    stable@kernel.org
 +L:    stable@vger.kernel.org
  S:    Maintained
  
  STAGING SUBSYSTEM
@@@ -6284,6 -6296,11 +6285,6 @@@ M:     Manu Abraham <abraham.manu@gmail.com
  S:    Odd Fixes
  F:    drivers/staging/crystalhd/
  
 -STAGING - CYPRESS WESTBRIDGE SUPPORT
 -M:    David Cross <david.cross@cypress.com>
 -S:    Odd Fixes
 -F:    drivers/staging/westbridge/
 -
  STAGING - ECHO CANCELLER
  M:    Steve Underwood <steveu@coppice.org>
  M:    David Rowe <david@rowetel.com>
@@@ -6305,6 -6322,12 +6306,6 @@@ M:     David Täht <d@teklibre.com
  S:    Odd Fixes
  F:    drivers/staging/frontier/
  
 -STAGING - HYPER-V (MICROSOFT)
 -M:    Hank Janssen <hjanssen@microsoft.com>
 -M:    Haiyang Zhang <haiyangz@microsoft.com>
 -S:    Odd Fixes
 -F:    drivers/staging/hv/
 -
  STAGING - INDUSTRIAL IO
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-iio@vger.kernel.org
@@@ -6315,7 -6338,7 +6316,7 @@@ STAGING - LIRC (LINUX INFRARED REMOTE C
  M:    Jarod Wilson <jarod@wilsonet.com>
  W:    http://www.lirc.org/
  S:    Odd Fixes
 -F:    drivers/staging/lirc/
 +F:    drivers/staging/media/lirc/
  
  STAGING - NVIDIA COMPLIANT EMBEDDED CONTROLLER INTERFACE (nvec)
  M:    Julian Andres Klode <jak@jak-linux.org>
@@@ -6351,7 -6374,7 +6352,7 @@@ F:      drivers/staging/sm7xx
  STAGING - SOFTLOGIC 6x10 MPEG CODEC
  M:    Ben Collins <bcollins@bluecherry.net>
  S:    Odd Fixes
 -F:    drivers/staging/solo6x10/
 +F:    drivers/staging/media/solo6x10/
  
  STAGING - SPEAKUP CONSOLE SPEECH DRIVER
  M:    William Hubbs <w.d.hubbs@gmail.com>
@@@ -6389,7 -6412,7 +6390,7 @@@ S:      Odd Fixe
  F:    drivers/staging/winbond/
  
  STAGING - XGI Z7,Z9,Z11 PCI DISPLAY DRIVER
 -M:    Arnaud Patard <apatard@mandriva.com>
 +M:    Arnaud Patard <arnaud.patard@rtp-net.org>
  S:    Odd Fixes
  F:    drivers/staging/xgifb/
  
@@@ -6480,13 -6503,6 +6481,13 @@@ W:    http://tcp-lp-mod.sourceforge.net
  S:    Maintained
  F:    net/ipv4/tcp_lp.c
  
 +TEAM DRIVER
 +M:    Jiri Pirko <jpirko@redhat.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/net/team/
 +F:    include/linux/if_team.h
 +
  TEGRA SUPPORT
  M:    Colin Cross <ccross@android.com>
  M:    Olof Johansson <olof@lixom.net>
@@@ -6624,7 -6640,7 +6625,7 @@@ TRACIN
  M:    Steven Rostedt <rostedt@goodmis.org>
  M:    Frederic Weisbecker <fweisbec@gmail.com>
  M:    Ingo Molnar <mingo@redhat.com>
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip.git perf/core
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git perf/core
  S:    Maintained
  F:    Documentation/trace/ftrace.txt
  F:    arch/*/*/*/ftrace.h
@@@ -6654,7 -6670,7 +6655,7 @@@ TULIP NETWORK DRIVER
  M:    Grant Grundler <grundler@parisc-linux.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
 -F:    drivers/net/ethernet/tulip/
 +F:    drivers/net/ethernet/dec/tulip/
  
  TUN/TAP driver
  M:    Maxim Krasnyansky <maxk@qualcomm.com>
@@@ -7374,7 -7390,7 +7375,7 @@@ M:      Thomas Gleixner <tglx@linutronix.de
  M:    Ingo Molnar <mingo@redhat.com>
  M:    "H. Peter Anvin" <hpa@zytor.com>
  M:    x86@kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/x86/linux-2.6-x86.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86/core
  S:    Maintained
  F:    Documentation/x86/
  F:    arch/x86/
@@@ -145,9 -145,6 +145,9 @@@ static int omap_init_mcbsp(struct omap_
                pdata->reg_size = 4;
                pdata->has_ccr = true;
        }
 +      pdata->set_clk_src = omap2_mcbsp_set_clk_src;
 +      if (id == 1)
 +              pdata->mux_signal = omap2_mcbsp1_mux_rx_clk;
  
        if (oh->class->rev == MCBSP_CONFIG_TYPE3) {
                if (id == 2)
                else
                        /* The FIFO has 128 locations */
                        pdata->buffer_size = 0x80;
+       } else if (oh->class->rev == MCBSP_CONFIG_TYPE4) {
+               /* The FIFO has 128 locations for all instances */
+               pdata->buffer_size = 0x80;
        }
  
        if (oh->class->rev >= MCBSP_CONFIG_TYPE3)
                                        name, oh->name);
                return PTR_ERR(pdev);
        }
 -      pdata->set_clk_src = omap2_mcbsp_set_clk_src;
 -      if (id == 1)
 -              pdata->mux_signal = omap2_mcbsp1_mux_rx_clk;
        omap_mcbsp_count++;
        return 0;
  }
@@@ -436,6 -436,14 +436,14 @@@ static struct platform_device corgiled_
  };
  
  /*
+  * Corgi Audio
+  */
+ static struct platform_device corgi_audio_device = {
+       .name   = "corgi-audio",
+       .id     = -1,
+ };
+ /*
   * MMC/SD Device
   *
   * The card detect interrupt isn't debounced so we delay it by 250ms
@@@ -531,7 -539,7 +539,7 @@@ static struct spi_board_info corgi_spi_
                .chip_select    = 0,
                .platform_data  = &corgi_ads7846_info,
                .controller_data= &corgi_ads7846_chip,
 -              .irq            = gpio_to_irq(CORGI_GPIO_TP_INT),
 +              .irq            = PXA_GPIO_TO_IRQ(CORGI_GPIO_TP_INT),
        }, {
                .modalias       = "corgi-lcd",
                .max_speed_hz   = 50000,
@@@ -641,6 -649,7 +649,7 @@@ static struct platform_device *devices[
        &corgifb_device,
        &corgikbd_device,
        &corgiled_device,
+       &corgi_audio_device,
        &sharpsl_nand_device,
        &sharpsl_rom_device,
  };
@@@ -655,7 -664,7 +664,7 @@@ static void corgi_poweroff(void
                /* Green LED off tells the bootloader to halt */
                gpio_set_value(CORGI_GPIO_LED_GREEN, 0);
  
 -      arm_machine_restart('h', NULL);
 +      pxa_restart('h', NULL);
  }
  
  static void corgi_restart(char mode, const char *cmd)
                /* Green LED on tells the bootloader to reboot */
                gpio_set_value(CORGI_GPIO_LED_GREEN, 1);
  
 -      arm_machine_restart('h', cmd);
 +      pxa_restart('h', cmd);
  }
  
  static void __init corgi_init(void)
  {
        pm_power_off = corgi_poweroff;
 -      arm_pm_restart = corgi_restart;
  
        /* Stop 3.6MHz and drive HIGH to PCMCIA and CS */
        PCFR |= PCFR_OPDE;
@@@ -725,7 -735,6 +734,7 @@@ MACHINE_START(CORGI, "SHARP Corgi"
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
 +      .restart        = corgi_restart,
  MACHINE_END
  #endif
  
@@@ -737,7 -746,6 +746,7 @@@ MACHINE_START(SHEPHERD, "SHARP Shepherd
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
 +      .restart        = corgi_restart,
  MACHINE_END
  #endif
  
@@@ -749,7 -757,6 +758,7 @@@ MACHINE_START(HUSKY, "SHARP Husky"
        .handle_irq     = pxa25x_handle_irq,
        .init_machine   = corgi_init,
        .timer          = &pxa_timer,
 +      .restart        = corgi_restart,
  MACHINE_END
  #endif
  
@@@ -119,8 -119,8 +119,8 @@@ struct resource eseries_tmio_resources[
                .flags  = IORESOURCE_MEM,
        },
        [1] = {
 -              .start  = IRQ_GPIO(GPIO_ESERIES_TMIO_IRQ),
 -              .end    = IRQ_GPIO(GPIO_ESERIES_TMIO_IRQ),
 +              .start  = PXA_GPIO_TO_IRQ(GPIO_ESERIES_TMIO_IRQ),
 +              .end    = PXA_GPIO_TO_IRQ(GPIO_ESERIES_TMIO_IRQ),
                .flags  = IORESOURCE_IRQ,
        },
  };
@@@ -196,7 -196,6 +196,7 @@@ MACHINE_START(E330, "Toshiba e330"
        .fixup          = eseries_fixup,
        .init_machine   = e330_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -247,7 -246,6 +247,7 @@@ MACHINE_START(E350, "Toshiba e350"
        .fixup          = eseries_fixup,
        .init_machine   = e350_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -371,7 -369,6 +371,7 @@@ MACHINE_START(E400, "Toshiba e400"
        .fixup          = eseries_fixup,
        .init_machine   = e400_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -528,12 -525,18 +528,18 @@@ static struct platform_device e740_t7l6
        .resource      = eseries_tmio_resources,
  };
  
+ static struct platform_device e740_audio_device = {
+       .name           = "e740-audio",
+       .id             = -1,
+ };
  /* ----------------------------------------------------------------------- */
  
  static struct platform_device *e740_devices[] __initdata = {
        &e740_fb_device,
        &e740_t7l66xb_device,
        &e7xx_gpio_vbus,
+       &e740_audio_device,
  };
  
  static void __init e740_init(void)
@@@ -561,7 -564,6 +567,7 @@@ MACHINE_START(E740, "Toshiba e740"
        .fixup          = eseries_fixup,
        .init_machine   = e740_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -722,12 -724,18 +728,18 @@@ static struct platform_device e750_tc63
        .resource      = eseries_tmio_resources,
  };
  
+ static struct platform_device e750_audio_device = {
+       .name           = "e750-audio",
+       .id             = -1,
+ };
  /* ------------------------------------------------------------- */
  
  static struct platform_device *e750_devices[] __initdata = {
        &e750_fb_device,
        &e750_tc6393xb_device,
        &e7xx_gpio_vbus,
+       &e750_audio_device,
  };
  
  static void __init e750_init(void)
@@@ -754,7 -762,6 +766,7 @@@ MACHINE_START(E750, "Toshiba e750"
        .fixup          = eseries_fixup,
        .init_machine   = e750_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -929,12 -936,18 +941,18 @@@ static struct platform_device e800_tc63
        .resource      = eseries_tmio_resources,
  };
  
+ static struct platform_device e800_audio_device = {
+       .name           = "e800-audio",
+       .id             = -1,
+ };
  /* ----------------------------------------------------------------------- */
  
  static struct platform_device *e800_devices[] __initdata = {
        &e800_fb_device,
        &e800_tc6393xb_device,
        &e800_gpio_vbus,
+       &e800_audio_device,
  };
  
  static void __init e800_init(void)
@@@ -960,6 -973,5 +978,6 @@@ MACHINE_START(E800, "Toshiba e800"
        .fixup          = eseries_fixup,
        .init_machine   = e800_init,
        .timer          = &pxa_timer,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
@@@ -158,6 -158,11 +158,11 @@@ static struct scoop_pcmcia_config poodl
  EXPORT_SYMBOL(poodle_scoop_device);
  
  
+ static struct platform_device poodle_audio_device = {
+       .name   = "poodle-audio",
+       .id     = -1,
+ };
  /* LoCoMo device */
  static struct resource locomo_resources[] = {
        [0] = {
                .flags          = IORESOURCE_MEM,
        },
        [1] = {
 -              .start          = IRQ_GPIO(10),
 -              .end            = IRQ_GPIO(10),
 +              .start          = PXA_GPIO_TO_IRQ(10),
 +              .end            = PXA_GPIO_TO_IRQ(10),
                .flags          = IORESOURCE_IRQ,
        },
  };
@@@ -212,7 -217,7 +217,7 @@@ static struct spi_board_info poodle_spi
                .bus_num        = 1,
                .platform_data  = &poodle_ads7846_info,
                .controller_data= &poodle_ads7846_chip,
 -              .irq            = gpio_to_irq(POODLE_GPIO_TP_INT),
 +              .irq            = PXA_GPIO_TO_IRQ(POODLE_GPIO_TP_INT),
        },
  };
  
@@@ -407,6 -412,7 +412,7 @@@ static struct platform_device sharpsl_r
  static struct platform_device *devices[] __initdata = {
        &poodle_locomo_device,
        &poodle_scoop_device,
+       &poodle_audio_device,
        &sharpsl_nand_device,
        &sharpsl_rom_device,
  };
@@@ -417,7 -423,12 +423,7 @@@ static struct i2c_board_info __initdat
  
  static void poodle_poweroff(void)
  {
 -      arm_machine_restart('h', NULL);
 -}
 -
 -static void poodle_restart(char mode, const char *cmd)
 -{
 -      arm_machine_restart('h', cmd);
 +      pxa_restart('h', NULL);
  }
  
  static void __init poodle_init(void)
        int ret = 0;
  
        pm_power_off = poodle_poweroff;
 -      arm_pm_restart = poodle_restart;
  
        PCFR |= PCFR_OPDE;
  
@@@ -466,5 -478,4 +472,5 @@@ MACHINE_START(POODLE, "SHARP Poodle"
        .handle_irq     = pxa25x_handle_irq,
        .timer          = &pxa_timer,
        .init_machine   = poodle_init,
 +      .restart        = pxa_restart,
  MACHINE_END
@@@ -376,7 -376,7 +376,7 @@@ static struct spi_board_info spi_board_
                .bus_num = 1,
                .chip_select = 0,
                .controller_data = &staccel_chip_info,
 -              .irq = IRQ_GPIO(96),
 +              .irq = PXA_GPIO_TO_IRQ(96),
        }, {
                .modalias = "cc2420",
                .max_speed_hz = 6500000,
@@@ -546,7 -546,7 +546,7 @@@ static struct i2c_board_info __initdat
                .type = "da9030",
                .addr = 0x49,
                .platform_data = &imote2_da9030_pdata,
 -              .irq = gpio_to_irq(1),
 +              .irq = PXA_GPIO_TO_IRQ(1),
        },
  };
  
@@@ -560,18 -560,18 +560,18 @@@ static struct i2c_board_info __initdat
                /* Through a nand gate - Also beware, on V2 sensor board the
                 * pull up resistors are missing.
                 */
 -              .irq = IRQ_GPIO(99),
 +              .irq = PXA_GPIO_TO_IRQ(99),
        }, { /* ITS400 Sensor board only */
                .type = "tsl2561",
                .addr = 0x49,
                /* Through a nand gate - Also beware, on V2 sensor board the
                 * pull up resistors are missing.
                 */
 -              .irq = IRQ_GPIO(99),
 +              .irq = PXA_GPIO_TO_IRQ(99),
        }, { /* ITS400 Sensor board only */
                .type = "tmp175",
                .addr = 0x4A,
 -              .irq = IRQ_GPIO(96),
 +              .irq = PXA_GPIO_TO_IRQ(96),
        }, { /* IMB400 Multimedia board */
                .type = "wm8940",
                .addr = 0x1A,
@@@ -593,10 -593,16 +593,16 @@@ static struct pxa2xx_udc_mach_info imot
        .udc_command            = sg2_udc_command,
  };
  
+ static struct platform_device imote2_audio_device = {
+       .name = "imote2-audio",
+       .id   = -1,
+ };
  static struct platform_device *imote2_devices[] = {
        &stargate2_flash_device,
        &imote2_leds,
        &sht15,
+       &imote2_audio_device,
  };
  
  static void __init imote2_init(void)
@@@ -661,8 -667,8 +667,8 @@@ static struct resource smc91x_resources
                .flags = IORESOURCE_MEM,
        },
        [1] = {
 -              .start = IRQ_GPIO(40),
 -              .end = IRQ_GPIO(40),
 +              .start = PXA_GPIO_TO_IRQ(40),
 +              .end = PXA_GPIO_TO_IRQ(40),
                .flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHEDGE,
        }
  };
@@@ -707,7 -713,7 +713,7 @@@ static int stargate2_mci_init(struct de
        }
        gpio_direction_input(SG2_GPIO_nSD_DETECT);
  
 -      err = request_irq(IRQ_GPIO(SG2_GPIO_nSD_DETECT),
 +      err = request_irq(PXA_GPIO_TO_IRQ(SG2_GPIO_nSD_DETECT),
                          stargate2_detect_int,
                          IRQ_TYPE_EDGE_BOTH,
                          "MMC card detect",
@@@ -738,7 -744,7 +744,7 @@@ static void stargate2_mci_setpower(stru
  
  static void stargate2_mci_exit(struct device *dev, void *data)
  {
 -      free_irq(IRQ_GPIO(SG2_GPIO_nSD_DETECT), data);
 +      free_irq(PXA_GPIO_TO_IRQ(SG2_GPIO_nSD_DETECT), data);
        gpio_free(SG2_SD_POWER_ENABLE);
        gpio_free(SG2_GPIO_nSD_DETECT);
  }
@@@ -913,7 -919,7 +919,7 @@@ static struct i2c_board_info __initdat
                .type = "da9030",
                .addr = 0x49,
                .platform_data = &stargate2_da9030_pdata,
 -              .irq = gpio_to_irq(1),
 +              .irq = PXA_GPIO_TO_IRQ(1),
        },
  };
  
@@@ -938,18 -944,18 +944,18 @@@ static struct i2c_board_info __initdat
                /* Through a nand gate - Also beware, on V2 sensor board the
                 * pull up resistors are missing.
                 */
 -              .irq = IRQ_GPIO(99),
 +              .irq = PXA_GPIO_TO_IRQ(99),
        }, { /* ITS400 Sensor board only */
                .type = "tsl2561",
                .addr = 0x49,
                /* Through a nand gate - Also beware, on V2 sensor board the
                 * pull up resistors are missing.
                 */
 -              .irq = IRQ_GPIO(99),
 +              .irq = PXA_GPIO_TO_IRQ(99),
        }, { /* ITS400 Sensor board only */
                .type = "tmp175",
                .addr = 0x4A,
 -              .irq = IRQ_GPIO(96),
 +              .irq = PXA_GPIO_TO_IRQ(96),
        },
  };
  
@@@ -1005,7 -1011,6 +1011,7 @@@ MACHINE_START(INTELMOTE2, "IMOTE 2"
        .timer          = &pxa_timer,
        .init_machine   = imote2_init,
        .atag_offset    = 0x100,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
  
@@@ -1018,6 -1023,5 +1024,6 @@@ MACHINE_START(STARGATE2, "Stargate 2"
        .timer = &pxa_timer,
        .init_machine = stargate2_init,
        .atag_offset = 0x100,
 +      .restart        = pxa_restart,
  MACHINE_END
  #endif
diff --combined arch/arm/mach-pxa/tosa.c
@@@ -404,8 -404,8 +404,8 @@@ static struct pda_power_pdata tosa_powe
  static struct resource tosa_power_resource[] = {
        {
                .name           = "ac",
 -              .start          = gpio_to_irq(TOSA_GPIO_AC_IN),
 -              .end            = gpio_to_irq(TOSA_GPIO_AC_IN),
 +              .start          = PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN),
 +              .end            = PXA_GPIO_TO_IRQ(TOSA_GPIO_AC_IN),
                .flags          = IORESOURCE_IRQ |
                                  IORESOURCE_IRQ_HIGHEDGE |
                                  IORESOURCE_IRQ_LOWEDGE,
@@@ -889,6 -889,11 +889,11 @@@ static struct platform_device wm9712_de
        .id     = -1,
  };
  
+ static struct platform_device tosa_audio_device = {
+       .name   = "tosa-audio",
+       .id     = -1,
+ };
  static struct platform_device *devices[] __initdata = {
        &tosascoop_device,
        &tosascoop_jc_device,
        &sharpsl_rom_device,
        &wm9712_device,
        &tosa_gpio_vbus,
+       &tosa_audio_device,
  };
  
  static void tosa_poweroff(void)
  {
 -      arm_machine_restart('g', NULL);
 +      pxa_restart('g', NULL);
  }
  
  static void tosa_restart(char mode, const char *cmd)
@@@ -935,6 -941,7 +941,6 @@@ static void __init tosa_init(void
        init_gpio_reset(TOSA_GPIO_ON_RESET, 0, 0);
  
        pm_power_off = tosa_poweroff;
 -      arm_pm_restart = tosa_restart;
  
        PCFR |= PCFR_OPDE;
  
@@@ -969,7 -976,6 +975,7 @@@ static void __init fixup_tosa(struct ta
  }
  
  MACHINE_START(TOSA, "SHARP Tosa")
 +      .restart_mode   = 'g',
        .fixup          = fixup_tosa,
        .map_io         = pxa25x_map_io,
        .nr_irqs        = TOSA_NR_IRQS,
        .handle_irq       = pxa25x_handle_irq,
        .init_machine   = tosa_init,
        .timer          = &pxa_timer,
 +      .restart        = tosa_restart,
  MACHINE_END
@@@ -37,9 -37,6 +37,9 @@@
  #include <linux/mfd/wm831x/irq.h>
  #include <linux/mfd/wm831x/gpio.h>
  
 +#include <sound/wm1250-ev1.h>
 +
 +#include <asm/hardware/vic.h>
  #include <asm/mach/arch.h>
  #include <asm/mach-types.h>
  
@@@ -53,6 -50,7 +53,6 @@@
  
  #include <mach/regs-gpio-memport.h>
  
 -#include <plat/s3c6410.h>
  #include <plat/regs-serial.h>
  #include <plat/regs-fb-v4.h>
  #include <plat/fb.h>
@@@ -68,8 -66,6 +68,8 @@@
  #include <plat/iic.h>
  #include <plat/pm.h>
  
 +#include "common.h"
 +
  /* serial port setup */
  
  #define UCON (S3C2410_UCON_DEFAULT | S3C2410_UCON_UCLK)
@@@ -286,16 -282,11 +286,16 @@@ static struct platform_device lowland_d
        .id             = -1,
  };
  
- static struct platform_device speyside_wm8962_device = {
-       .name           = "speyside-wm8962",
+ static struct platform_device tobermory_device = {
+       .name           = "tobermory",
        .id             = -1,
  };
  
 +static struct platform_device littlemill_device = {
 +      .name           = "littlemill",
 +      .id             = -1,
 +};
 +
  static struct regulator_consumer_supply wallvdd_consumers[] = {
        REGULATOR_SUPPLY("SPKVDD1", "1-001a"),
        REGULATOR_SUPPLY("SPKVDD2", "1-001a"),
@@@ -347,8 -338,7 +347,8 @@@ static struct platform_device *crag6410
        &crag6410_lcd_powerdev,
        &crag6410_backlight_device,
        &speyside_device,
-       &speyside_wm8962_device,
+       &tobermory_device,
 +      &littlemill_device,
        &lowland_device,
        &wallvdd_device,
  };
@@@ -382,10 -372,6 +382,10 @@@ static struct regulator_init_data vddar
        .driver_data = &vddarm_pdata,
  };
  
 +static struct regulator_consumer_supply vddint_consumers[] __initdata = {
 +      REGULATOR_SUPPLY("vddint", NULL),
 +};
 +
  static struct regulator_init_data vddint __initdata = {
        .constraints = {
                .name = "VDDINT",
                .always_on = 1,
                .valid_ops_mask = REGULATOR_CHANGE_VOLTAGE,
        },
 +      .num_consumer_supplies = ARRAY_SIZE(vddint_consumers),
 +      .consumer_supplies = vddint_consumers,
 +      .supply_regulator = "WALLVDD",
  };
  
  static struct regulator_init_data vddmem __initdata = {
@@@ -517,8 -500,7 +517,8 @@@ static struct wm831x_touch_pdata touch_
  static struct wm831x_pdata crag_pmic_pdata __initdata = {
        .wm831x_num = 1,
        .irq_base = BANFF_PMIC_IRQ_BASE,
 -      .gpio_base = GPIO_BOARD_START + 8,
 +      .gpio_base = BANFF_PMIC_GPIO_BASE,
 +      .soft_shutdown = true,
  
        .backup = &banff_backup_pdata,
  
@@@ -623,7 -605,6 +623,7 @@@ static struct wm831x_pdata glenfarclas_
        .wm831x_num = 2,
        .irq_base = GLENFARCLAS_PMIC_IRQ_BASE,
        .gpio_base = GLENFARCLAS_PMIC_GPIO_BASE,
 +      .soft_shutdown = true,
  
        .gpio_defaults = {
                /* GPIO1-3: IRQ inputs, rising edge triggered, CMOS */
        .disable_touch = true,
  };
  
 +static struct wm1250_ev1_pdata wm1250_ev1_pdata = {
 +      .gpios = {
 +              [WM1250_EV1_GPIO_CLK_ENA] = S3C64XX_GPN(12),
 +              [WM1250_EV1_GPIO_CLK_SEL0] = S3C64XX_GPL(12),
 +              [WM1250_EV1_GPIO_CLK_SEL1] = S3C64XX_GPL(13),
 +              [WM1250_EV1_GPIO_OSR] = S3C64XX_GPL(14),
 +              [WM1250_EV1_GPIO_MASTER] = S3C64XX_GPL(8),
 +      },
 +};
 +
  static struct i2c_board_info i2c_devs1[] __initdata = {
        { I2C_BOARD_INFO("wm8311", 0x34),
          .irq = S3C_EINT(0),
        { I2C_BOARD_INFO("wlf-gf-module", 0x25) },
        { I2C_BOARD_INFO("wlf-gf-module", 0x26) },
  
 -      { I2C_BOARD_INFO("wm1250-ev1", 0x27) },
 +      { I2C_BOARD_INFO("wm1250-ev1", 0x27),
 +        .platform_data = &wm1250_ev1_pdata },
 +};
 +
 +static struct s3c2410_platform_i2c i2c1_pdata = {
 +      .frequency = 400000,
 +      .bus_num = 1,
  };
  
  static void __init crag6410_map_io(void)
@@@ -727,7 -692,7 +727,7 @@@ static void __init crag6410_machine_ini
        s3c_sdhci2_set_platdata(&crag6410_hsmmc2_pdata);
  
        s3c_i2c0_set_platdata(&i2c0_pdata);
 -      s3c_i2c1_set_platdata(NULL);
 +      s3c_i2c1_set_platdata(&i2c1_pdata);
        s3c_fb_set_platdata(&crag6410_lcd_pdata);
  
        i2c_register_board_info(0, i2c_devs0, ARRAY_SIZE(i2c_devs0));
  
        regulator_has_full_constraints();
  
 -      s3c_pm_init();
 +      s3c64xx_pm_init();
  }
  
  MACHINE_START(WLF_CRAGG_6410, "Wolfson Cragganmore 6410")
        /* Maintainer: Mark Brown <broonie@opensource.wolfsonmicro.com> */
        .atag_offset    = 0x100,
        .init_irq       = s3c6410_init_irq,
 +      .handle_irq     = vic_handle_irq,
        .map_io         = crag6410_map_io,
        .init_machine   = crag6410_machine_init,
        .timer          = &s3c24xx_timer,
 +      .restart        = s3c64xx_restart,
  MACHINE_END
@@@ -762,9 -762,22 +762,22 @@@ static struct platform_device fsi_devic
        },
  };
  
+ static struct fsi_ak4642_info fsi2_ak4643_info = {
+       .name           = "AK4643",
+       .card           = "FSI2A-AK4643",
+       .cpu_dai        = "fsia-dai",
+       .codec          = "ak4642-codec.0-0013",
+       .platform       = "sh_fsi2",
+       .id             = FSI_PORT_A,
+ };
  static struct platform_device fsi_ak4643_device = {
-       .name           = "sh_fsi2_a_ak4643",
+       .name   = "fsi-ak4642-audio",
+       .dev    = {
+               .platform_data  = &fsi_info,
+       },
  };
  static struct sh_mobile_meram_cfg hdmi_meram_cfg = {
        .icb[0] = {
                .marker_icb     = 30,
@@@ -1172,6 -1185,8 +1185,6 @@@ static struct map_desc ap4evb_io_desc[
  static void __init ap4evb_map_io(void)
  {
        iotable_init(ap4evb_io_desc, ARRAY_SIZE(ap4evb_io_desc));
 -      /* DMA memory at 0xf6000000 - 0xffdfffff */
 -      init_consistent_dma_size(158 << 20);
  
        /* setup early devices and console here as well */
        sh7372_add_early_devices();
@@@ -990,8 -990,20 +990,20 @@@ static struct platform_device fsi_devic
        },
  };
  
+ static struct fsi_ak4642_info fsi2_ak4643_info = {
+       .name           = "AK4643",
+       .card           = "FSI2A-AK4643",
+       .cpu_dai        = "fsia-dai",
+       .codec          = "ak4642-codec.0-0013",
+       .platform       = "sh_fsi2",
+       .id             = FSI_PORT_A,
+ };
  static struct platform_device fsi_ak4643_device = {
-       .name           = "sh_fsi2_a_ak4643",
+       .name   = "fsi-ak4642-audio",
+       .dev    = {
+               .platform_data  = &fsi2_ak4643_info,
+       },
  };
  
  /*
@@@ -1390,6 -1402,8 +1402,6 @@@ static struct map_desc mackerel_io_desc
  static void __init mackerel_map_io(void)
  {
        iotable_init(mackerel_io_desc, ARRAY_SIZE(mackerel_io_desc));
 -      /* DMA memory at 0xf6000000 - 0xffdfffff */
 -      init_consistent_dma_size(158 << 20);
  
        /* setup early devices and console here as well */
        sh7372_add_early_devices();
@@@ -31,7 -31,6 +31,7 @@@
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
  #include <asm/mach/time.h>
 +#include <asm/hardware/gic.h>
  #include <asm/setup.h>
  
  #include <mach/tegra_wm8903_pdata.h>
@@@ -90,11 -89,11 +90,11 @@@ static struct wm8903_platform_data harm
        .micdet_delay = 100,
        .gpio_base = HARMONY_GPIO_WM8903(0),
        .gpio_cfg = {
-               WM8903_GPIO_NO_CONFIG,
-               WM8903_GPIO_NO_CONFIG,
                0,
-               WM8903_GPIO_NO_CONFIG,
-               WM8903_GPIO_NO_CONFIG,
+               0,
+               WM8903_GPIO_CONFIG_ZERO,
+               0,
+               0,
        },
  };
  
@@@ -186,10 -185,8 +186,10 @@@ MACHINE_START(HARMONY, "harmony"
        .atag_offset    = 0x100,
        .fixup          = tegra_harmony_fixup,
        .map_io         = tegra_map_common_io,
 -      .init_early     = tegra_init_early,
 +      .init_early     = tegra20_init_early,
        .init_irq       = tegra_init_irq,
 +      .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_harmony_init,
 +      .restart        = tegra_assert_system_reset,
  MACHINE_END
@@@ -34,7 -34,6 +34,7 @@@
  
  #include <asm/mach-types.h>
  #include <asm/mach/arch.h>
 +#include <asm/hardware/gic.h>
  
  #include "board.h"
  #include "board-seaboard.h"
@@@ -172,11 -171,11 +172,11 @@@ static struct wm8903_platform_data wm89
        .micdet_delay = 100,
        .gpio_base = SEABOARD_GPIO_WM8903(0),
        .gpio_cfg = {
-               WM8903_GPIO_NO_CONFIG,
-               WM8903_GPIO_NO_CONFIG,
                0,
-               WM8903_GPIO_NO_CONFIG,
-               WM8903_GPIO_NO_CONFIG,
+               0,
+               WM8903_GPIO_CONFIG_ZERO,
+               0,
+               0,
        },
  };
  
@@@ -283,32 -282,26 +283,32 @@@ static void __init tegra_wario_init(voi
  MACHINE_START(SEABOARD, "seaboard")
        .atag_offset    = 0x100,
        .map_io         = tegra_map_common_io,
 -      .init_early     = tegra_init_early,
 +      .init_early     = tegra20_init_early,
        .init_irq       = tegra_init_irq,
 +      .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_seaboard_init,
 +      .restart        = tegra_assert_system_reset,
  MACHINE_END
  
  MACHINE_START(KAEN, "kaen")
        .atag_offset    = 0x100,
        .map_io         = tegra_map_common_io,
 -      .init_early     = tegra_init_early,
 +      .init_early     = tegra20_init_early,
        .init_irq       = tegra_init_irq,
 +      .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_kaen_init,
 +      .restart        = tegra_assert_system_reset,
  MACHINE_END
  
  MACHINE_START(WARIO, "wario")
        .atag_offset    = 0x100,
        .map_io         = tegra_map_common_io,
 -      .init_early     = tegra_init_early,
 +      .init_early     = tegra20_init_early,
        .init_irq       = tegra_init_irq,
 +      .handle_irq     = gic_handle_irq,
        .timer          = &tegra_timer,
        .init_machine   = tegra_wario_init,
 +      .restart        = tegra_assert_system_reset,
  MACHINE_END
@@@ -210,6 -210,9 +210,6 @@@ static struct platform_device lcdc_devi
        .dev            = {
                .platform_data  = &lcdc_info,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_LCDC,
 -      },
  };
  
  /* CEU0 */
@@@ -241,6 -244,9 +241,6 @@@ static struct platform_device ceu0_devi
        .dev    = {
                .platform_data  = &sh_mobile_ceu0_info,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_CEU0,
 -      },
  };
  
  /* CEU1 */
@@@ -272,6 -278,9 +272,6 @@@ static struct platform_device ceu1_devi
        .dev    = {
                .platform_data  = &sh_mobile_ceu1_info,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_CEU1,
 -      },
  };
  
  /* FSI */
@@@ -301,10 -310,25 +301,22 @@@ static struct platform_device fsi_devic
        .dev    = {
                .platform_data  = &fsi_info,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_SPU, /* FSI needs SPU hwblk */
 -      },
  };
  
+ static struct fsi_ak4642_info fsi_ak4642_info = {
+       .name           = "AK4642",
+       .card           = "FSIA-AK4642",
+       .cpu_dai        = "fsia-dai",
+       .codec          = "ak4642-codec.0-0012",
+       .platform       = "sh_fsi.0",
+       .id             = FSI_PORT_A,
+ };
  static struct platform_device fsi_ak4642_device = {
-       .name           = "sh_fsi_a_ak4642",
+       .name   = "fsi-ak4642-audio",
+       .dev    = {
+               .platform_data  = &fsi_ak4642_info,
+       },
  };
  
  /* KEYSC in SoC (Needs SW33-2 set to ON) */
@@@ -343,6 -367,9 +355,6 @@@ static struct platform_device keysc_dev
        .dev    = {
                .platform_data  = &keysc_info,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_KEYSC,
 -      },
  };
  
  /* SH Eth */
@@@ -371,6 -398,9 +383,6 @@@ static struct platform_device sh_eth_de
        },
        .num_resources = ARRAY_SIZE(sh_eth_resources),
        .resource = sh_eth_resources,
 -      .archdata = {
 -              .hwblk_id = HWBLK_ETHER,
 -      },
  };
  
  static struct r8a66597_platdata sh7724_usb0_host_data = {
@@@ -400,6 -430,9 +412,6 @@@ static struct platform_device sh7724_us
        },
        .num_resources  = ARRAY_SIZE(sh7724_usb0_host_resources),
        .resource       = sh7724_usb0_host_resources,
 -      .archdata = {
 -              .hwblk_id = HWBLK_USB0,
 -      },
  };
  
  static struct r8a66597_platdata sh7724_usb1_gadget_data = {
@@@ -458,6 -491,9 +470,6 @@@ static struct platform_device sdhi0_cn7
        .dev = {
                .platform_data  = &sh7724_sdhi0_data,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_SDHI0,
 -      },
  };
  
  static struct resource sdhi1_cn8_resources[] = {
@@@ -487,6 -523,9 +499,6 @@@ static struct platform_device sdhi1_cn8
        .dev = {
                .platform_data  = &sh7724_sdhi1_data,
        },
 -      .archdata = {
 -              .hwblk_id = HWBLK_SDHI1,
 -      },
  };
  
  /* IrDA */
@@@ -549,6 -588,9 +561,6 @@@ static struct platform_device vou_devic
        .dev            = {
                .platform_data  = &sh_vou_pdata,
        },
 -      .archdata       = {
 -              .hwblk_id       = HWBLK_VOU,
 -      },
  };
  
  static struct platform_device *ms7724se_devices[] __initdata = {
diff --combined drivers/mfd/Kconfig
@@@ -328,34 -328,6 +328,34 @@@ config PMIC_DA903
          individual components like LCD backlight, voltage regulators,
          LEDs and battery-charger under the corresponding menus.
  
 +config PMIC_DA9052
 +      bool
 +      select MFD_CORE
 +
 +config MFD_DA9052_SPI
 +      bool "Support Dialog Semiconductor DA9052/53 PMIC variants with SPI"
 +      select REGMAP_SPI
 +      select REGMAP_IRQ
 +      select PMIC_DA9052
 +      depends on SPI_MASTER=y
 +      help
 +        Support for the Dialog Semiconductor DA9052 PMIC
 +        when controlled using SPI. This driver provides common support
 +        for accessing the device, additional drivers must be enabled in
 +        order to use the functionality of the device.
 +
 +config MFD_DA9052_I2C
 +      bool "Support Dialog Semiconductor DA9052/53 PMIC variants with I2C"
 +      select REGMAP_I2C
 +      select REGMAP_IRQ
 +      select PMIC_DA9052
 +      depends on I2C=y
 +      help
 +        Support for the Dialog Semiconductor DA9052 PMIC
 +        when controlled using I2C. This driver provides common support
 +        for accessing the device, additional drivers must be enabled in
 +        order to use the functionality of the device.
 +
  config PMIC_ADP5520
        bool "Analog Devices ADP5520/01 MFD PMIC Core Support"
        depends on I2C=y
@@@ -505,6 -477,7 +505,7 @@@ config MFD_WM899
        bool "Support Wolfson Microelectronics WM8994"
        select MFD_CORE
        select REGMAP_I2C
+       select REGMAP_IRQ
        depends on I2C=y && GENERIC_HARDIRQS
        help
          The WM8994 is a highly integrated hi-fi CODEC designed for
diff --combined drivers/mfd/Makefile
@@@ -31,7 -31,7 +31,7 @@@ wm8350-objs                   := wm8350-core.o wm8350-r
  wm8350-objs                   += wm8350-irq.o
  obj-$(CONFIG_MFD_WM8350)      += wm8350.o
  obj-$(CONFIG_MFD_WM8350_I2C)  += wm8350-i2c.o
- obj-$(CONFIG_MFD_WM8994)      += wm8994-core.o wm8994-irq.o
+ obj-$(CONFIG_MFD_WM8994)      += wm8994-core.o wm8994-irq.o wm8994-regmap.o
  
  obj-$(CONFIG_TPS6105X)                += tps6105x.o
  obj-$(CONFIG_TPS65010)                += tps65010.o
@@@ -67,11 -67,6 +67,11 @@@ endi
  obj-$(CONFIG_UCB1400_CORE)    += ucb1400_core.o
  
  obj-$(CONFIG_PMIC_DA903X)     += da903x.o
 +
 +obj-$(CONFIG_PMIC_DA9052)     += da9052-core.o
 +obj-$(CONFIG_MFD_DA9052_SPI)  += da9052-spi.o
 +obj-$(CONFIG_MFD_DA9052_I2C)  += da9052-i2c.o
 +
  max8925-objs                  := max8925-core.o max8925-i2c.o
  obj-$(CONFIG_MFD_MAX8925)     += max8925.o
  obj-$(CONFIG_MFD_MAX8997)     += max8997.o max8997-irq.o
  #include <linux/mfd/wm8994/pdata.h>
  #include <linux/mfd/wm8994/registers.h>
  
- static int wm8994_read(struct wm8994 *wm8994, unsigned short reg,
-                      int bytes, void *dest)
- {
-       return regmap_raw_read(wm8994->regmap, reg, dest, bytes);
- }
+ #include "wm8994.h"
  
  /**
   * wm8994_reg_read: Read a single WM8994 register.
@@@ -68,12 -64,6 +64,6 @@@ int wm8994_bulk_read(struct wm8994 *wm8
        return regmap_bulk_read(wm8994->regmap, reg, buf, count);
  }
  
- static int wm8994_write(struct wm8994 *wm8994, unsigned short reg,
-                       int bytes, const void *src)
- {
-       return regmap_raw_write(wm8994->regmap, reg, src, bytes);
- }
  /**
   * wm8994_reg_write: Write a single WM8994 register.
   *
@@@ -239,7 -229,6 +229,7 @@@ static int wm8994_suspend(struct devic
  
        switch (wm8994->type) {
        case WM8958:
 +      case WM1811:
                ret = wm8994_reg_read(wm8994, WM8958_MIC_DETECT_1);
                if (ret < 0) {
                        dev_err(dev, "Failed to read power status: %d\n", ret);
                break;
        }
  
+       switch (wm8994->type) {
+       case WM1811:
+               ret = wm8994_reg_read(wm8994, WM8994_ANTIPOP_2);
+               if (ret < 0) {
+                       dev_err(dev, "Failed to read jackdet: %d\n", ret);
+               } else if (ret & WM1811_JACKDET_MODE_MASK) {
+                       dev_dbg(dev, "CODEC still active, ignoring suspend\n");
+                       return 0;
+               }
+               break;
+       default:
+               break;
+       }
        /* Disable LDO pulldowns while the device is suspended if we
         * don't know that something will be driving them. */
        if (!wm8994->ldo_ena_always_driven)
                                WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD,
                                WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD);
  
-       /* GPIO configuration state is saved here since we may be configuring
-        * the GPIO alternate functions even if we're not using the gpiolib
-        * driver for them.
-        */
-       ret = wm8994_read(wm8994, WM8994_GPIO_1, WM8994_NUM_GPIO_REGS * 2,
-                         &wm8994->gpio_regs);
-       if (ret < 0)
-               dev_err(dev, "Failed to save GPIO registers: %d\n", ret);
-       /* For similar reasons we also stash the regulator states */
-       ret = wm8994_read(wm8994, WM8994_LDO_1, WM8994_NUM_LDO_REGS * 2,
-                         &wm8994->ldo_regs);
-       if (ret < 0)
-               dev_err(dev, "Failed to save LDO registers: %d\n", ret);
        /* Explicitly put the device into reset in case regulators
         * don't get disabled in order to ensure consistent restart.
         */
-       wm8994_reg_write(wm8994, WM8994_SOFTWARE_RESET, 0x8994);
+       wm8994_reg_write(wm8994, WM8994_SOFTWARE_RESET,
+                        wm8994_reg_read(wm8994, WM8994_SOFTWARE_RESET));
+       regcache_cache_only(wm8994->regmap, true);
+       regcache_mark_dirty(wm8994->regmap);
  
        wm8994->suspended = true;
  
  static int wm8994_resume(struct device *dev)
  {
        struct wm8994 *wm8994 = dev_get_drvdata(dev);
-       int ret, i;
+       int ret;
  
        /* We may have lied to the PM core about suspending */
        if (!wm8994->suspended)
                return ret;
        }
  
-       /* Write register at a time as we use the cache on the CPU so store
-        * it in native endian.
-        */
-       for (i = 0; i < ARRAY_SIZE(wm8994->irq_masks_cur); i++) {
-               ret = wm8994_reg_write(wm8994, WM8994_INTERRUPT_STATUS_1_MASK
-                                      + i, wm8994->irq_masks_cur[i]);
-               if (ret < 0)
-                       dev_err(dev, "Failed to restore interrupt masks: %d\n",
-                               ret);
+       regcache_cache_only(wm8994->regmap, false);
+       ret = regcache_sync(wm8994->regmap);
+       if (ret != 0) {
+               dev_err(dev, "Failed to restore register map: %d\n", ret);
+               goto err_enable;
        }
  
-       ret = wm8994_write(wm8994, WM8994_LDO_1, WM8994_NUM_LDO_REGS * 2,
-                          &wm8994->ldo_regs);
-       if (ret < 0)
-               dev_err(dev, "Failed to restore LDO registers: %d\n", ret);
-       ret = wm8994_write(wm8994, WM8994_GPIO_1, WM8994_NUM_GPIO_REGS * 2,
-                          &wm8994->gpio_regs);
-       if (ret < 0)
-               dev_err(dev, "Failed to restore GPIO registers: %d\n", ret);
        /* Disable LDO pulldowns while the device is active */
        wm8994_set_bits(wm8994, WM8994_PULL_CONTROL_2,
                        WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD,
        wm8994->suspended = false;
  
        return 0;
+ err_enable:
+       regulator_bulk_disable(wm8994->num_supplies, wm8994->supplies);
+       return ret;
  }
  #endif
  
@@@ -361,19 -344,16 +345,16 @@@ static int wm8994_ldo_in_use(struct wm8
  }
  #endif
  
- static struct regmap_config wm8994_regmap_config = {
-       .reg_bits = 16,
-       .val_bits = 16,
- };
  /*
   * Instantiate the generic non-control parts of the device.
   */
  static int wm8994_device_init(struct wm8994 *wm8994, int irq)
  {
        struct wm8994_pdata *pdata = wm8994->dev->platform_data;
+       struct regmap_config *regmap_config;
        const char *devname;
        int ret, i;
+       int pulls = 0;
  
        dev_set_drvdata(wm8994->dev, wm8994);
  
                goto err_regmap;
        }
  
-       wm8994->supplies = kzalloc(sizeof(struct regulator_bulk_data) *
-                                  wm8994->num_supplies,
-                                  GFP_KERNEL);
+       wm8994->supplies = devm_kzalloc(wm8994->dev,
+                                       sizeof(struct regulator_bulk_data) *
+                                       wm8994->num_supplies, GFP_KERNEL);
        if (!wm8994->supplies) {
                ret = -ENOMEM;
                goto err_regmap;
                                 wm8994->supplies);
        if (ret != 0) {
                dev_err(wm8994->dev, "Failed to get supplies: %d\n", ret);
-               goto err_supplies;
+               goto err_regmap;
        }
  
        ret = regulator_bulk_enable(wm8994->num_supplies,
                        ret);
                goto err_enable;
        }
+       wm8994->revision = ret;
  
        switch (wm8994->type) {
        case WM8994:
-               switch (ret) {
+               switch (wm8994->revision) {
                case 0:
                case 1:
                        dev_warn(wm8994->dev,
                                 "revision %c not fully supported\n",
-                                'A' + ret);
+                                'A' + wm8994->revision);
                        break;
                default:
                        break;
                }
                break;
+       case WM1811:
+               /* Revision C did not change the relevant layer */
+               if (wm8994->revision > 1)
+                       wm8994->revision++;
+               break;
        default:
                break;
        }
  
-       dev_info(wm8994->dev, "%s revision %c\n", devname, 'A' + ret);
+       dev_info(wm8994->dev, "%s revision %c\n", devname,
+                'A' + wm8994->revision);
+       switch (wm8994->type) {
+       case WM1811:
+               regmap_config = &wm1811_regmap_config;
+               break;
+       case WM8994:
+               regmap_config = &wm8994_regmap_config;
+               break;
+       case WM8958:
+               regmap_config = &wm8958_regmap_config;
+               break;
+       default:
+               dev_err(wm8994->dev, "Unknown device type %d\n", wm8994->type);
+               return -EINVAL;
+       }
+       ret = regmap_reinit_cache(wm8994->regmap, regmap_config);
+       if (ret != 0) {
+               dev_err(wm8994->dev, "Failed to reinit register cache: %d\n",
+                       ret);
+               return ret;
+       }
  
        if (pdata) {
                wm8994->irq_base = pdata->irq_base;
                }
  
                wm8994->ldo_ena_always_driven = pdata->ldo_ena_always_driven;
+               if (pdata->spkmode_pu)
+                       pulls |= WM8994_SPKMODE_PU;
        }
  
-       /* Disable LDO pulldowns while the device is active */
+       /* Disable unneeded pulls */
        wm8994_set_bits(wm8994, WM8994_PULL_CONTROL_2,
-                       WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD,
-                       0);
+                       WM8994_LDO1ENA_PD | WM8994_LDO2ENA_PD |
+                       WM8994_SPKMODE_PU | WM8994_CSNADDR_PD,
+                       pulls);
  
        /* In some system designs where the regulators are not in use,
         * we can achieve a small reduction in leakage currents by
@@@ -560,12 -573,9 +574,9 @@@ err_enable
                               wm8994->supplies);
  err_get:
        regulator_bulk_free(wm8994->num_supplies, wm8994->supplies);
- err_supplies:
-       kfree(wm8994->supplies);
  err_regmap:
        regmap_exit(wm8994->regmap);
        mfd_remove_devices(wm8994->dev);
-       kfree(wm8994);
        return ret;
  }
  
@@@ -577,18 -587,24 +588,24 @@@ static void wm8994_device_exit(struct w
        regulator_bulk_disable(wm8994->num_supplies,
                               wm8994->supplies);
        regulator_bulk_free(wm8994->num_supplies, wm8994->supplies);
-       kfree(wm8994->supplies);
        regmap_exit(wm8994->regmap);
-       kfree(wm8994);
  }
  
+ static const struct of_device_id wm8994_of_match[] = {
+       { .compatible = "wlf,wm1811", },
+       { .compatible = "wlf,wm8994", },
+       { .compatible = "wlf,wm8958", },
+       { }
+ };
+ MODULE_DEVICE_TABLE(of, wm8994_of_match);
  static int wm8994_i2c_probe(struct i2c_client *i2c,
                            const struct i2c_device_id *id)
  {
        struct wm8994 *wm8994;
        int ret;
  
-       wm8994 = kzalloc(sizeof(struct wm8994), GFP_KERNEL);
+       wm8994 = devm_kzalloc(&i2c->dev, sizeof(struct wm8994), GFP_KERNEL);
        if (wm8994 == NULL)
                return -ENOMEM;
  
        wm8994->irq = i2c->irq;
        wm8994->type = id->driver_data;
  
-       wm8994->regmap = regmap_init_i2c(i2c, &wm8994_regmap_config);
+       wm8994->regmap = regmap_init_i2c(i2c, &wm8994_base_regmap_config);
        if (IS_ERR(wm8994->regmap)) {
                ret = PTR_ERR(wm8994->regmap);
                dev_err(wm8994->dev, "Failed to allocate register map: %d\n",
                        ret);
-               kfree(wm8994);
                return ret;
        }
  
@@@ -620,6 -635,7 +636,7 @@@ static int wm8994_i2c_remove(struct i2c
  
  static const struct i2c_device_id wm8994_i2c_id[] = {
        { "wm1811", WM1811 },
+       { "wm1811a", WM1811 },
        { "wm8994", WM8994 },
        { "wm8958", WM8958 },
        { }
@@@ -634,6 -650,7 +651,7 @@@ static struct i2c_driver wm8994_i2c_dri
                .name = "wm8994",
                .owner = THIS_MODULE,
                .pm = &wm8994_pm_ops,
+               .of_match_table = wm8994_of_match,
        },
        .probe = wm8994_i2c_probe,
        .remove = wm8994_i2c_remove,
diff --combined sound/core/Kconfig
@@@ -5,6 -5,7 +5,6 @@@ config SND_TIME
  config SND_PCM
        tristate
        select SND_TIMER
 -      select GCD
  
  config SND_HWDEP
        tristate
@@@ -154,6 -155,16 +154,16 @@@ config SND_DYNAMIC_MINOR
  
          If you are unsure about this, say N here.
  
+ config SND_COMPRESS_OFFLOAD
+       tristate "ALSA Compressed audio offload support"
+       default n
+       help
+         If you want support for offloading compressed audio and have such
+         a hardware, then you should say Y here and also to the DSP driver
+         of your platform.
+         If you are unsure about this, say N here.
  config SND_SUPPORT_OLD_API
        bool "Support old ALSA API"
        default y
@@@ -206,6 -217,9 +216,9 @@@ config SND_PCM_XRUN_DEBU
  config SND_VMASTER
        bool
  
+ config SND_KCTL_JACK
+       bool
  config SND_DMA_SGBUF
        def_bool y
        depends on X86
@@@ -16,7 -16,6 +16,6 @@@
  #include <linux/pm.h>
  #include <linux/i2c.h>
  #include <linux/clk.h>
- #include <linux/platform_device.h>
  #include <linux/regulator/driver.h>
  #include <linux/regulator/machine.h>
  #include <linux/regulator/consumer.h>
@@@ -833,7 -832,7 +832,7 @@@ static int ldo_regulator_register(struc
        ldo->voltage = voltage;
  
        ldo->dev = regulator_register(&ldo->desc, codec->dev,
 -                                        init_data, ldo);
 +                                        init_data, ldo, NULL);
        if (IS_ERR(ldo->dev)) {
                int ret = PTR_ERR(ldo->dev);
  
@@@ -923,7 -922,7 +922,7 @@@ static int sgtl5000_set_bias_level(stru
                        SNDRV_PCM_FMTBIT_S24_LE |\
                        SNDRV_PCM_FMTBIT_S32_LE)
  
- static struct snd_soc_dai_ops sgtl5000_ops = {
+ static const struct snd_soc_dai_ops sgtl5000_ops = {
        .hw_params = sgtl5000_pcm_hw_params,
        .digital_mute = sgtl5000_digital_mute,
        .set_fmt = sgtl5000_set_dai_fmt,
@@@ -968,7 -967,7 +967,7 @@@ static int sgtl5000_volatile_register(s
  }
  
  #ifdef CONFIG_SUSPEND
- static int sgtl5000_suspend(struct snd_soc_codec *codec, pm_message_t state)
+ static int sgtl5000_suspend(struct snd_soc_codec *codec)
  {
        sgtl5000_set_bias_level(codec, SND_SOC_BIAS_OFF);
  
@@@ -1077,7 -1076,7 +1076,7 @@@ static int sgtl5000_set_power_regs(stru
        /* according to datasheet, maximum voltage of supplies */
        if (vdda > 3600 || vddio > 3600 || vddd > 1980) {
                dev_err(codec->dev,
-                       "exceed max voltage vdda %dmv vddio %dma vddd %dma\n",
+                       "exceed max voltage vdda %dmV vddio %dmV vddd %dmV\n",
                        vdda, vddio, vddd);
  
                return -EINVAL;
@@@ -1402,7 -1401,8 +1401,8 @@@ static __devinit int sgtl5000_i2c_probe
        struct sgtl5000_priv *sgtl5000;
        int ret;
  
-       sgtl5000 = kzalloc(sizeof(struct sgtl5000_priv), GFP_KERNEL);
+       sgtl5000 = devm_kzalloc(&client->dev, sizeof(struct sgtl5000_priv),
+                                                               GFP_KERNEL);
        if (!sgtl5000)
                return -ENOMEM;
  
  
        ret = snd_soc_register_codec(&client->dev,
                        &sgtl5000_driver, &sgtl5000_dai, 1);
-       if (ret) {
-               dev_err(&client->dev, "Failed to register codec: %d\n", ret);
-               kfree(sgtl5000);
-               return ret;
-       }
-       return 0;
+       return ret;
  }
  
  static __devexit int sgtl5000_i2c_remove(struct i2c_client *client)
  {
-       struct sgtl5000_priv *sgtl5000 = i2c_get_clientdata(client);
        snd_soc_unregister_codec(&client->dev);
  
-       kfree(sgtl5000);
        return 0;
  }
  
@@@ -94,10 -94,9 +94,10 @@@ static irqreturn_t kirkwood_dma_irq(in
        return IRQ_HANDLED;
  }
  
 -static void kirkwood_dma_conf_mbus_windows(void __iomem *base, int win,
 -                                      unsigned long dma,
 -                                      struct mbus_dram_target_info *dram)
 +static void
 +kirkwood_dma_conf_mbus_windows(void __iomem *base, int win,
 +                             unsigned long dma,
 +                             const struct mbus_dram_target_info *dram)
  {
        int i;
  
  
        /* try to find matching cs for current dma address */
        for (i = 0; i < dram->num_cs; i++) {
 -              struct mbus_dram_window *cs = dram->cs + i;
 +              const struct mbus_dram_window *cs = dram->cs + i;
                if ((cs->base & 0xffff0000) < (dma & 0xffff0000)) {
                        writel(cs->base & 0xffff0000,
                                base + KIRKWOOD_AUDIO_WIN_BASE_REG(win));
@@@ -128,7 -127,6 +128,7 @@@ static int kirkwood_dma_open(struct snd
        struct snd_soc_dai *cpu_dai = soc_runtime->cpu_dai;
        struct kirkwood_dma_data *priv;
        struct kirkwood_dma_priv *prdata = snd_soc_platform_get_drvdata(platform);
 +      const struct mbus_dram_target_info *dram;
        unsigned long addr;
  
        priv = snd_soc_dai_get_dma_data(cpu_dai, substream);
                writel((unsigned long)-1, priv->io + KIRKWOOD_ERR_MASK);
        }
  
 +      dram = mv_mbus_dram_info();
        addr = virt_to_phys(substream->dma_buffer.area);
        if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) {
                prdata->play_stream = substream;
                kirkwood_dma_conf_mbus_windows(priv->io,
 -                      KIRKWOOD_PLAYBACK_WIN, addr, priv->dram);
 +                      KIRKWOOD_PLAYBACK_WIN, addr, dram);
        } else {
                prdata->rec_stream = substream;
                kirkwood_dma_conf_mbus_windows(priv->io,
 -                      KIRKWOOD_RECORD_WIN, addr, priv->dram);
 +                      KIRKWOOD_RECORD_WIN, addr, dram);
        }
  
        return 0;
@@@ -318,7 -315,6 +318,6 @@@ static int kirkwood_dma_preallocate_dma
  static int kirkwood_dma_new(struct snd_soc_pcm_runtime *rtd)
  {
        struct snd_card *card = rtd->card->snd_card;
-       struct snd_soc_dai *dai = rtd->cpu_dai;
        struct snd_pcm *pcm = rtd->pcm;
        int ret;
  
        if (!card->dev->coherent_dma_mask)
                card->dev->coherent_dma_mask = 0xffffffff;
  
-       if (dai->driver->playback.channels_min) {
+       if (pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream) {
                ret = kirkwood_dma_preallocate_dma_buffer(pcm,
                                SNDRV_PCM_STREAM_PLAYBACK);
                if (ret)
                        return ret;
        }
  
-       if (dai->driver->capture.channels_min) {
+       if (pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream) {
                ret = kirkwood_dma_preallocate_dma_buffer(pcm,
                                SNDRV_PCM_STREAM_CAPTURE);
                if (ret)
@@@ -391,17 -387,7 +390,7 @@@ static struct platform_driver kirkwood_
        .remove = __devexit_p(kirkwood_soc_platform_remove),
  };
  
- static int __init kirkwood_pcm_init(void)
- {
-       return platform_driver_register(&kirkwood_pcm_driver);
- }
- module_init(kirkwood_pcm_init);
- static void __exit kirkwood_pcm_exit(void)
- {
-       platform_driver_unregister(&kirkwood_pcm_driver);
- }
- module_exit(kirkwood_pcm_exit);
+ module_platform_driver(kirkwood_pcm_driver);
  
  MODULE_AUTHOR("Arnaud Patard <arnaud.patard@rtp-net.org>");
  MODULE_DESCRIPTION("Marvell Kirkwood Audio DMA module");
diff --combined sound/soc/mxs/mxs-saif.c
@@@ -210,7 -210,7 +210,7 @@@ int mxs_saif_put_mclk(unsigned int saif
                return -EBUSY;
        }
  
 -      clk_disable(saif->clk);
 +      clk_disable_unprepare(saif->clk);
  
        /* disable MCLK output */
        __raw_writel(BM_SAIF_CTRL_CLKGATE,
@@@ -264,7 -264,7 +264,7 @@@ int mxs_saif_get_mclk(unsigned int saif
        if (ret)
                return ret;
  
 -      ret = clk_enable(saif->clk);
 +      ret = clk_prepare_enable(saif->clk);
        if (ret)
                return ret;
  
@@@ -550,7 -550,7 +550,7 @@@ static int mxs_saif_trigger(struct snd_
        (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S20_3LE | \
        SNDRV_PCM_FMTBIT_S24_LE)
  
- static struct snd_soc_dai_ops mxs_saif_dai_ops = {
+ static const struct snd_soc_dai_ops mxs_saif_dai_ops = {
        .startup = mxs_saif_startup,
        .trigger = mxs_saif_trigger,
        .prepare = mxs_saif_prepare,
@@@ -625,6 -625,13 +625,6 @@@ static int mxs_saif_probe(struct platfo
        if (pdev->id >= ARRAY_SIZE(mxs_saif))
                return -EINVAL;
  
 -      pdata = pdev->dev.platform_data;
 -      if (pdata && pdata->init) {
 -              ret = pdata->init();
 -              if (ret)
 -                      return ret;
 -      }
 -
        saif = kzalloc(sizeof(*saif), GFP_KERNEL);
        if (!saif)
                return -ENOMEM;
        mxs_saif[pdev->id] = saif;
        saif->id = pdev->id;
  
 -      saif->master_id = saif->id;
 -      if (pdata && pdata->get_master_id) {
 -              saif->master_id = pdata->get_master_id(saif->id);
 +      pdata = pdev->dev.platform_data;
 +      if (pdata && !pdata->master_mode) {
 +              saif->master_id = pdata->master_id;
                if (saif->master_id < 0 ||
 -                      saif->master_id >= ARRAY_SIZE(mxs_saif))
 +                      saif->master_id >= ARRAY_SIZE(mxs_saif) ||
 +                      saif->master_id == saif->id) {
 +                      dev_err(&pdev->dev, "get wrong master id\n");
                        return -EINVAL;
 +              }
 +      } else {
 +              saif->master_id = saif->id;
        }
  
        saif->clk = clk_get(&pdev->dev, NULL);
@@@ -779,18 -781,8 +779,8 @@@ static struct platform_driver mxs_saif_
        },
  };
  
- static int __init mxs_saif_init(void)
- {
-       return platform_driver_register(&mxs_saif_driver);
- }
- static void __exit mxs_saif_exit(void)
- {
-       platform_driver_unregister(&mxs_saif_driver);
- }
+ module_platform_driver(mxs_saif_driver);
  
- module_init(mxs_saif_init);
- module_exit(mxs_saif_exit);
  MODULE_AUTHOR("Freescale Semiconductor, Inc.");
  MODULE_DESCRIPTION("MXS ASoC SAIF driver");
  MODULE_LICENSE("GPL");
@@@ -291,7 -291,7 +291,7 @@@ static int nuc900_ac97_remove(struct sn
        return 0;
  }
  
- static struct snd_soc_dai_ops nuc900_ac97_dai_ops = {
+ static const struct snd_soc_dai_ops nuc900_ac97_dai_ops = {
        .trigger        = nuc900_ac97_trigger,
  };
  
@@@ -365,8 -365,7 +365,8 @@@ static int __devinit nuc900_ac97_drvpro
        if (ret)
                goto out3;
  
 -      mfp_set_groupg(nuc900_audio->dev); /* enbale ac97 multifunction pin*/
 +      /* enbale ac97 multifunction pin */
 +      mfp_set_groupg(nuc900_audio->dev, "nuc900-audio");
  
        return 0;
  
@@@ -406,18 -405,7 +406,7 @@@ static struct platform_driver nuc900_ac
        .remove         = __devexit_p(nuc900_ac97_drvremove),
  };
  
- static int __init nuc900_ac97_init(void)
- {
-       return platform_driver_register(&nuc900_ac97_driver);
- }
- static void __exit nuc900_ac97_exit(void)
- {
-       platform_driver_unregister(&nuc900_ac97_driver);
- }
- module_init(nuc900_ac97_init);
- module_exit(nuc900_ac97_exit);
+ module_platform_driver(nuc900_ac97_driver);
  
  MODULE_AUTHOR("Wan ZongShun <mcuos.com@gmail.com>");
  MODULE_DESCRIPTION("NUC900 AC97 SoC driver!");
diff --combined sound/usb/6fire/chip.c
@@@ -35,7 -35,7 +35,7 @@@ MODULE_SUPPORTED_DEVICE("{{TerraTec, DM
  
  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
  static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for card */
- static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable card */
+ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable card */
  static struct sfire_chip *chips[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
  static struct usb_device *devices[SNDRV_CARDS] = SNDRV_DEFAULT_PTR;
  
@@@ -211,11 -211,22 +211,11 @@@ static struct usb_device_id device_tabl
  
  MODULE_DEVICE_TABLE(usb, device_table);
  
 -static struct usb_driver driver = {
 +static struct usb_driver usb_driver = {
        .name = "snd-usb-6fire",
        .probe = usb6fire_chip_probe,
        .disconnect = usb6fire_chip_disconnect,
        .id_table = device_table,
  };
  
 -static int __init usb6fire_chip_init(void)
 -{
 -      return usb_register(&driver);
 -}
 -
 -static void __exit usb6fire_chip_cleanup(void)
 -{
 -      usb_deregister(&driver);
 -}
 -
 -module_init(usb6fire_chip_init);
 -module_exit(usb6fire_chip_cleanup);
 +module_usb_driver(usb_driver);
diff --combined sound/usb/caiaq/device.c
@@@ -55,7 -55,7 +55,7 @@@ MODULE_SUPPORTED_DEVICE("{{Native Instr
  
  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
  static char* id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for this card */
- static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
+ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
  static int snd_card_used[SNDRV_CARDS];
  
  module_param_array(index, int, NULL, 0444);
@@@ -538,5 -538,16 +538,5 @@@ static struct usb_driver snd_usb_drive
        .id_table       = snd_usb_id_table,
  };
  
 -static int __init snd_module_init(void)
 -{
 -      return usb_register(&snd_usb_driver);
 -}
 -
 -static void __exit snd_module_exit(void)
 -{
 -      usb_deregister(&snd_usb_driver);
 -}
 -
 -module_init(snd_module_init)
 -module_exit(snd_module_exit)
 +module_usb_driver(snd_usb_driver);
  
diff --combined sound/usb/misc/ua101.c
@@@ -52,7 -52,7 +52,7 @@@ MODULE_SUPPORTED_DEVICE("{{Edirol,UA-10
  
  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
  static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
- static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
+ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
  static unsigned int queue_length = 21;
  
  module_param_array(index, int, NULL, 0444);
@@@ -1387,4 -1387,16 +1387,4 @@@ static struct usb_driver ua101_driver 
  #endif
  };
  
 -static int __init alsa_card_ua101_init(void)
 -{
 -      return usb_register(&ua101_driver);
 -}
 -
 -static void __exit alsa_card_ua101_exit(void)
 -{
 -      usb_deregister(&ua101_driver);
 -      mutex_destroy(&devices_mutex);
 -}
 -
 -module_init(alsa_card_ua101_init);
 -module_exit(alsa_card_ua101_exit);
 +module_usb_driver(ua101_driver);
diff --combined sound/usb/usx2y/us122l.c
@@@ -37,7 -37,7 +37,7 @@@ MODULE_LICENSE("GPL")
  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;    /* Index 0-max */
  static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;     /* Id for this card */
                                                        /* Enable this card */
- static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
+ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
  
  module_param_array(index, int, NULL, 0444);
  MODULE_PARM_DESC(index, "Index value for "NAME_ALLCAPS".");
@@@ -772,4 -772,16 +772,4 @@@ static struct usb_driver snd_us122l_usb
        .supports_autosuspend = 1
  };
  
 -
 -static int __init snd_us122l_module_init(void)
 -{
 -      return usb_register(&snd_us122l_usb_driver);
 -}
 -
 -static void __exit snd_us122l_module_exit(void)
 -{
 -      usb_deregister(&snd_us122l_usb_driver);
 -}
 -
 -module_init(snd_us122l_module_init)
 -module_exit(snd_us122l_module_exit)
 +module_usb_driver(snd_us122l_usb_driver);
@@@ -154,7 -154,7 +154,7 @@@ MODULE_SUPPORTED_DEVICE("{{TASCAM(0x160
  
  static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; /* Index 0-max */
  static char* id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; /* Id for this card */
- static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
+ static bool enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; /* Enable this card */
  
  module_param_array(index, int, NULL, 0444);
  MODULE_PARM_DESC(index, "Index value for "NAME_ALLCAPS".");
@@@ -459,4 -459,15 +459,4 @@@ static void usX2Y_usb_disconnect(struc
        }
  }
  
 -static int __init snd_usX2Y_module_init(void)
 -{
 -      return usb_register(&snd_usX2Y_usb_driver);
 -}
 -
 -static void __exit snd_usX2Y_module_exit(void)
 -{
 -      usb_deregister(&snd_usX2Y_usb_driver);
 -}
 -
 -module_init(snd_usX2Y_module_init)
 -module_exit(snd_usX2Y_module_exit)
 +module_usb_driver(snd_usX2Y_usb_driver);