]> git.kernelconcepts.de Git - karo-tx-linux.git/commitdiff
Merge tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 May 2012 20:05:55 +0000 (13:05 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 26 May 2012 20:05:55 +0000 (13:05 -0700)
Pull arm-soc: soc specific changes (part 2) from Olof Johansson:
 "This adds support for the spear13xx platform, which has first been
  under review a long time ago and finally been completed after generic
  spear work has gone into the clock, dt and pinctrl branches.

  Also a number of updates for the samsung socs are part of this branch."

Fix up trivial conflicts in drivers/gpio/gpio-samsung.c that look much
worse than they are: the exonys5 init code was refactored in commit
fd454997d687 ("gpio: samsung: refactor gpiolib init for exynos4/5"), and
then commit f10590c9836c ("ARM: EXYNOS: add GPC4 bank instance") added a
new gpio chip define and did tiny updates to the init code.

So the conflict diff looks like hell, but it's actually a fairly simple
change.

* tag 'soc2' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (34 commits)
  ARM: exynos: fix building with CONFIG_OF disabled
  ARM: EXYNOS: Add AUXDATA for i2c controllers
  ARM: dts: Update device tree source files for EXYNOS5250
  ARM: EXYNOS: Add device tree support for interrupt combiner
  ARM: EXYNOS: Add irq_domain support for interrupt combiner
  ARM: EXYNOS: Remove a new bus_type instance for EXYNOS5
  ARM: EXYNOS: update irqs for EXYNOS5250 SoC
  ARM: EXYNOS: Add pre-divider and fout mux clocks for bpll and mpll
  ARM: EXYNOS: add GPC4 bank instance
  ARM: EXYNOS: Redefine IRQ_MCT_L0,1 definition
  ARM: EXYNOS: Modify the GIC physical address for static io-mapping
  ARM: EXYNOS: Add watchdog timer clock instance
  pinctrl: SPEAr1310: Fix pin numbers for clcd_high_res
  SPEAr: Update MAINTAINERS and Documentation
  SPEAr13xx: Add defconfig
  SPEAr13xx: Add compilation support
  SPEAr13xx: Add dts and dtsi files
  pinctrl: Add SPEAr13xx pinctrl drivers
  pinctrl: SPEAr: Create macro for declaring GPIO PINS
  SPEAr13xx: Add common clock framework support
  ...

1  2 
MAINTAINERS
arch/arm/Makefile
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/include/mach/irqs.h
arch/arm/mach-exynos/include/mach/map.h
arch/arm/mach-exynos/include/mach/regs-pmu.h
arch/arm/mach-s3c24xx/Makefile
drivers/gpio/gpio-samsung.c

diff --combined MAINTAINERS
index 64ec55559d73f5b667a5a0daa1a5047028e362d3,fa81a16e4641b5dd13048604c9ee7699ceb8d6e8..daa31999b2a1504f4fe4bb4539ce396d21bc3b04
@@@ -640,6 -640,13 +640,6 @@@ S:        Maintaine
  F:    drivers/amba/
  F:    include/linux/amba/bus.h
  
 -ARM/ADI ROADRUNNER MACHINE SUPPORT
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -F:    arch/arm/mach-ixp23xx/
 -F:    arch/arm/mach-ixp23xx/include/mach/
 -
  ARM/ADS SPHERE MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -739,10 -746,7 +739,10 @@@ M:       Barry Song <baohua.song@csr.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm/mach-prima2/
 -F:    drivers/dma/sirf-dma*
 +F:    drivers/dma/sirf-dma.c
 +F:    drivers/i2c/busses/i2c-sirf.c
 +F:    drivers/pinctrl/pinctrl-sirf.c
 +F:    drivers/spi/spi-sirf.c
  
  ARM/EBSA110 MACHINE SUPPORT
  M:    Russell King <linux@arm.linux.org.uk>
@@@ -855,11 -859,21 +855,11 @@@ M:      Dan Williams <dan.j.williams@intel.c
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP2000 ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXDP2850 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  
 -ARM/INTEL IXP23XX ARM ARCHITECTURE
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Maintained
 -
  ARM/INTEL IXP4XX ARM ARCHITECTURE
  M:    Imre Kaloz <kaloz@openwrt.org>
  M:    Krzysztof Halasa <khc@pm.waw.pl>
@@@ -894,12 -908,11 +894,12 @@@ ARM/MAGICIAN MACHINE SUPPOR
  M:    Philipp Zabel <philipp.zabel@gmail.com>
  S:    Maintained
  
 -ARM/Marvell Loki/Kirkwood/MV78xx0/Orion SOC support
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -M:    Nicolas Pitre <nico@fluxnic.net>
 +ARM/Marvell Dove/Kirkwood/MV78xx0/Orion SOC support
 +M:    Jason Cooper <jason@lakedaemon.net>
 +M:    Andrew Lunn <andrew@lunn.ch>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -S:    Odd Fixes
 +S:    Maintained
 +F:    arch/arm/mach-dove/
  F:    arch/arm/mach-kirkwood/
  F:    arch/arm/mach-mv78xx0/
  F:    arch/arm/mach-orion5x/
@@@ -1318,21 -1331,6 +1318,21 @@@ M:    Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/tty/serial/atmel_serial.c
  
 +ATMEL DMA DRIVER
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/dma/at_hdmac.c
 +F:    drivers/dma/at_hdmac_regs.h
 +F:    arch/arm/mach-at91/include/mach/at_hdmac.h
 +
 +ATMEL ISI DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-media@vger.kernel.org
 +S:    Supported
 +F:    drivers/media/video/atmel-isi.c
 +F:    include/media/atmel-isi.h
 +
  ATMEL LCDFB DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-fbdev@vger.kernel.org
@@@ -1350,22 -1348,10 +1350,22 @@@ M:   Nicolas Ferre <nicolas.ferre@atmel.c
  S:    Supported
  F:    drivers/spi/spi-atmel.*
  
 +ATMEL Timer Counter (TC) AND CLOCKSOURCE DRIVERS
 +M:    Nicolas Ferre <nicolas.ferre@atmel.com>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    drivers/misc/atmel_tclib.c
 +F:    drivers/clocksource/tcb_clksrc.c
 +
 +ATMEL TSADCC DRIVER
 +M:    Josh Wu <josh.wu@atmel.com>
 +L:    linux-input@vger.kernel.org
 +S:    Supported
 +F:    drivers/input/touchscreen/atmel_tsadcc.c
 +
  ATMEL USBA UDC DRIVER
  M:    Nicolas Ferre <nicolas.ferre@atmel.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 -W:    http://avr32linux.org/twiki/bin/view/Main/AtmelUsbDeviceDriver
  S:    Supported
  F:    drivers/usb/gadget/atmel_usba_udc.*
  
@@@ -1445,7 -1431,6 +1445,7 @@@ F:      include/linux/backlight.
  BATMAN ADVANCED
  M:    Marek Lindner <lindner_marek@yahoo.de>
  M:    Simon Wunderlich <siwu@hrz.tu-chemnitz.de>
 +M:    Antonio Quartulli <ordex@autistici.org>
  L:    b.a.t.m.a.n@lists.open-mesh.org
  W:    http://www.open-mesh.org/
  S:    Maintained
@@@ -1613,7 -1598,6 +1613,7 @@@ F:      include/linux/bcma
  
  BROCADE BFA FC SCSI DRIVER
  M:    Jing Huang <huangj@brocade.com>
 +M:    Krishna C Gudipati <kgudipat@brocade.com>
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    drivers/scsi/bfa/
@@@ -1747,7 -1731,6 +1747,7 @@@ S:      Supporte
  F:    include/linux/capability.h
  F:    security/capability.c
  F:    security/commoncap.c 
 +F:    kernel/capability.c
  
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
@@@ -1826,12 -1809,6 +1826,12 @@@ L:    linux-kernel@zh-kernel.org (moderate
  S:    Maintained
  F:    Documentation/zh_CN/
  
 +CHIPIDEA USB HIGH SPEED DUAL ROLE CONTROLLER
 +M:    Alexander Shishkin <alexander.shishkin@linux.intel.com>
 +L:    linux-usb@vger.kernel.org
 +S:    Maintained
 +F:    drivers/usb/chipidea/
 +
  CISCO VIC ETHERNET NIC DRIVER
  M:    Christian Benvenuti <benve@cisco.com>
  M:    Roopa Prabhu <roprabhu@cisco.com>
@@@ -2408,10 -2385,10 +2408,10 @@@ F:   drivers/gpu/drm
  F:    include/drm/
  
  INTEL DRM DRIVERS (excluding Poulsbo, Moorestown and derivative chipsets)
 -M:    Keith Packard <keithp@keithp.com>
 +M:    Daniel Vetter <daniel.vetter@ffwll.ch>
  L:    intel-gfx@lists.freedesktop.org (subscribers-only)
  L:    dri-devel@lists.freedesktop.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/keithp/linux.git
 +T:    git git://people.freedesktop.org/~danvet/drm-intel
  S:    Supported
  F:    drivers/gpu/drm/i915
  F:    include/drm/i915*
@@@ -2728,13 -2705,6 +2728,13 @@@ S:    Maintaine
  F:    Documentation/hwmon/f71805f
  F:    drivers/hwmon/f71805f.c
  
 +FC0011 TUNER DRIVER
 +M:    Michael Buesch <m@bues.ch>
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/media/common/tuners/fc0011.h
 +F:    drivers/media/common/tuners/fc0011.c
 +
  FANOTIFY
  M:    Eric Paris <eparis@redhat.com>
  S:    Maintained
@@@ -2793,15 -2763,6 +2793,15 @@@ T:    git git://git.alsa-project.org/alsa-
  S:    Maintained
  F:    sound/firewire/
  
 +FIREWIRE SBP-2 TARGET
 +M:    Chris Boot <bootc@bootc.net>
 +L:    linux-scsi@vger.kernel.org
 +L:    target-devel@vger.kernel.org
 +L:    linux1394-devel@lists.sourceforge.net
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/nab/lio-core-2.6.git master
 +S:    Maintained
 +F:    drivers/target/sbp/
 +
  FIREWIRE SUBSYSTEM
  M:    Stefan Richter <stefanr@s5r6.in-berlin.de>
  L:    linux1394-devel@lists.sourceforge.net
@@@ -2938,7 -2899,7 +2938,7 @@@ S:      Maintaine
  F:    arch/frv/
  
  FUJITSU LAPTOP EXTRAS
 -M:    Jonathan Woithe <jwoithe@physics.adelaide.edu.au>
 +M:    Jonathan Woithe <jwoithe@just42.net>
  L:    platform-driver-x86@vger.kernel.org
  S:    Maintained
  F:    drivers/platform/x86/fujitsu-laptop.c
@@@ -3364,6 -3325,12 +3364,6 @@@ T:     git git://git.kernel.org/pub/scm/lin
  S:    Maintained
  F:    arch/ia64/
  
 -IBM MCA SCSI SUBSYSTEM DRIVER
 -M:    Michael Lang <langa2@kph.uni-mainz.de>
 -W:    http://www.uni-mainz.de/~langm000/linux.html
 -S:    Maintained
 -F:    drivers/scsi/ibmmca.c
 -
  IBM Power Linux RAID adapter
  M:    Brian King <brking@us.ibm.com>
  S:    Supported
@@@ -3426,7 -3393,6 +3426,7 @@@ IIO SUBSYSTEM AND DRIVER
  M:    Jonathan Cameron <jic23@cam.ac.uk>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 +F:    drivers/iio/
  F:    drivers/staging/iio/
  
  IKANOS/ADI EAGLE ADSL USB DRIVER
@@@ -3475,8 -3441,6 +3475,8 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input.git
  S:    Maintained
  F:    drivers/input/
 +F:    include/linux/input.h
 +F:    include/linux/input/
  
  INPUT MULTITOUCH (MT) PROTOCOL
  M:    Henrik Rydberg <rydberg@euromail.se>
@@@ -3564,6 -3528,12 +3564,6 @@@ M:     Deepak Saxena <dsaxena@plexity.net
  S:    Maintained
  F:    drivers/char/hw_random/ixp4xx-rng.c
  
 -INTEL IXP2000 ETHERNET DRIVER
 -M:    Lennert Buytenhek <kernel@wantstofly.org>
 -L:    netdev@vger.kernel.org
 -S:    Maintained
 -F:    drivers/net/ethernet/xscale/ixp2000/
 -
  INTEL ETHERNET DRIVERS (e100/e1000/e1000e/igb/igbvf/ixgb/ixgbe/ixgbevf)
  M:    Jeff Kirsher <jeffrey.t.kirsher@intel.com>
  M:    Jesse Brandeburg <jesse.brandeburg@intel.com>
@@@ -3648,14 -3618,6 +3648,14 @@@ S:    Supporte
  W:    http://wireless.kernel.org/en/users/Drivers/iwmc3200wifi
  F:    drivers/net/wireless/iwmc3200wifi/
  
 +INTEL MANAGEMENT ENGINE (mei)
 +M:    Tomas Winkler <tomas.winkler@intel.com>
 +L:    linux-kernel@vger.kernel.org
 +S:    Supported
 +F:    include/linux/mei.h
 +F:    drivers/misc/mei/*
 +F:    Documentation/mei/*
 +
  IOC3 ETHERNET DRIVER
  M:    Ralf Baechle <ralf@linux-mips.org>
  L:    linux-mips@linux-mips.org
@@@ -3681,7 -3643,7 +3681,7 @@@ S:      Maintaine
  F:    drivers/net/ethernet/icplus/ipg.*
  
  IPATH DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Maintained
  F:    drivers/infiniband/hw/ipath/
@@@ -4471,6 -4433,13 +4471,6 @@@ T:     git git://git.monstr.eu/linux-2.6-mi
  S:    Supported
  F:    arch/microblaze/
  
 -MICROCHANNEL ARCHITECTURE (MCA)
 -M:    James Bottomley <James.Bottomley@HansenPartnership.com>
 -S:    Maintained
 -F:    Documentation/mca.txt
 -F:    drivers/mca/
 -F:    include/linux/mca*
 -
  MICROTEK X6 SCANNER
  M:    Oliver Neukum <oliver@neukum.name>
  S:    Maintained
@@@ -5174,13 -5143,19 +5174,13 @@@ F:   Documentation/powerpc/eeh-pci-error-
  PCI SUBSYSTEM
  M:    Bjorn Helgaas <bhelgaas@google.com>
  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.git
 +Q:    http://patchwork.ozlabs.org/project/linux-pci/list/
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/linux.git
  S:    Supported
  F:    Documentation/PCI/
  F:    drivers/pci/
  F:    include/linux/pci*
  
 -PCI HOTPLUG
 -M:    Bjorn Helgaas <bhelgaas@google.com>
 -L:    linux-pci@vger.kernel.org
 -S:    Supported
 -F:    drivers/pci/hotplug
 -
  PCMCIA SUBSYSTEM
  P:    Linux PCMCIA Team
  L:    linux-pcmcia@lists.infradead.org
@@@ -5243,7 -5218,7 +5243,7 @@@ S:      Maintaine
  F:    include/linux/personality.h
  
  PHONET PROTOCOL
 -M:    Remi Denis-Courmont <remi.denis-courmont@nokia.com>
 +M:    Remi Denis-Courmont <courmisch@gmail.com>
  S:    Supported
  F:    Documentation/networking/phonet.txt
  F:    include/linux/phonet.h
@@@ -5501,7 -5476,7 +5501,7 @@@ L:      rtc-linux@googlegroups.co
  S:    Maintained
  
  QIB DRIVER
 -M:    Mike Marciniszyn <infinipath@qlogic.com>
 +M:    Mike Marciniszyn <infinipath@intel.com>
  L:    linux-rdma@vger.kernel.org
  S:    Supported
  F:    drivers/infiniband/hw/qib/
@@@ -5651,13 -5626,14 +5651,13 @@@ F:   net/rds
  READ-COPY UPDATE (RCU)
  M:    Dipankar Sarma <dipankar@in.ibm.com>
  M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 -W:    http://www.rdrop.com/users/paulmck/rclock/
 +W:    http://www.rdrop.com/users/paulmck/RCU/
  S:    Supported
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
  F:    Documentation/RCU/
 +X:    Documentation/RCU/torture.txt
  F:    include/linux/rcu*
 -F:    include/linux/srcu*
  F:    kernel/rcu*
 -F:    kernel/srcu*
  X:    kernel/rcutorture.c
  
  REAL TIME CLOCK (RTC) SUBSYSTEM
@@@ -6003,7 -5979,7 +6003,7 @@@ SECURITY SUBSYSTE
  M:    James Morris <james.l.morris@oracle.com>
  L:    linux-security-module@vger.kernel.org (suggested Cc:)
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jmorris/linux-security.git
 -W:    http://security.wiki.kernel.org/
 +W:    http://kernsec.org/
  S:    Supported
  F:    security/
  
@@@ -6174,15 -6150,6 +6174,15 @@@ S:    Maintaine
  F:    include/linux/sl?b*.h
  F:    mm/sl?b.c
  
 +SLEEPABLE READ-COPY UPDATE (SRCU)
 +M:    Lai Jiangshan <laijs@cn.fujitsu.com>
 +M:    "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
 +W:    http://www.rdrop.com/users/paulmck/RCU/
 +S:    Supported
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git
 +F:    include/linux/srcu*
 +F:    kernel/srcu*
 +
  SMC91x ETHERNET DRIVER
  M:    Nicolas Pitre <nico@fluxnic.net>
  S:    Odd Fixes
@@@ -6350,14 -6317,25 +6350,25 @@@ F:   include/linux/compiler.
  
  SPEAR PLATFORM SUPPORT
  M:    Viresh Kumar <viresh.kumar@st.com>
+ M:    Shiraz Hashim <shiraz.hashim@st.com>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.st.com/spear
  S:    Maintained
  F:    arch/arm/plat-spear/
  
+ SPEAR13XX MACHINE SUPPORT
+ M:    Viresh Kumar <viresh.kumar@st.com>
+ M:    Shiraz Hashim <shiraz.hashim@st.com>
+ L:    spear-devel@list.st.com
+ L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
+ W:    http://www.st.com/spear
+ S:    Maintained
+ F:    arch/arm/mach-spear13xx/
  SPEAR3XX MACHINE SUPPORT
  M:    Viresh Kumar <viresh.kumar@st.com>
+ M:    Shiraz Hashim <shiraz.hashim@st.com>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.st.com/spear
@@@ -6366,6 -6344,8 +6377,8 @@@ F:      arch/arm/mach-spear3xx
  
  SPEAR6XX MACHINE SUPPORT
  M:    Rajeev Kumar <rajeev-dlh.kumar@st.com>
+ M:    Shiraz Hashim <shiraz.hashim@st.com>
+ M:    Viresh Kumar <viresh.kumar@st.com>
  L:    spear-devel@list.st.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  W:    http://www.st.com/spear
@@@ -6586,7 -6566,7 +6599,7 @@@ 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 sh-latest
 +T:    git git://github.com/pmundt/linux-sh.git sh-latest
  S:    Supported
  F:    Documentation/sh/
  F:    arch/sh/
@@@ -6704,28 -6684,12 +6717,28 @@@ F:   drivers/misc/tifm
  F:    drivers/mmc/host/tifm_sd.c
  F:    include/linux/tifm.h
  
 +TI LM49xxx FAMILY ASoC CODEC DRIVERS
 +M:    M R Swami Reddy <mr.swami.reddy@ti.com>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    sound/soc/codecs/lm49453*
 +
  TI TWL4030 SERIES SOC CODEC DRIVER
  M:    Peter Ujfalusi <peter.ujfalusi@ti.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Maintained
  F:    sound/soc/codecs/twl4030*
  
 +TI WILINK WIRELESS DRIVERS
 +M:    Luciano Coelho <coelho@ti.com>
 +L:    linux-wireless@vger.kernel.org
 +W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 +W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 +S:    Maintained
 +F:    drivers/net/wireless/ti/
 +F:    include/linux/wl12xx.h
 +
  TIPC NETWORK LAYER
  M:    Jon Maloy <jon.maloy@ericsson.com>
  M:    Allan Stephens <allan.stephens@windriver.com>
@@@ -6933,14 -6897,6 +6946,14 @@@ F:    Documentation/cdrom
  F:    drivers/cdrom/cdrom.c
  F:    include/linux/cdrom.h
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER
 +M:    Vinayak Holikatti <vinholikatti@gmail.com>
 +M:    Santosh Y <santoshsy@gmail.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    Documentation/scsi/ufs.txt
 +F:    drivers/scsi/ufs/
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <dedekind1@gmail.com>
  W:    http://www.linux-mtd.infradead.org/
@@@ -7087,14 -7043,6 +7100,14 @@@ W:    http://pegasus2.sourceforge.net
  S:    Maintained
  F:    drivers/net/usb/pegasus.*
  
 +USB PHY LAYER
 +M:    Felipe Balbi <balbi@ti.com>
 +L:    linux-usb@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/balbi/usb.git
 +S:    Maintained
 +F:    drivers/usb/phy/
 +F:    drivers/usb/otg/
 +
  USB PRINTER DRIVER (usblp)
  M:    Pete Zaitcev <zaitcev@redhat.com>
  L:    linux-usb@vger.kernel.org
@@@ -7208,7 -7156,7 +7221,7 @@@ F:      include/linux/usb/usbnet.
  
  USB VIDEO CLASS
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 -L:    linux-uvc-devel@lists.berlios.de (subscribers-only)
 +L:    linux-uvc-devel@lists.sourceforge.net (subscribers-only)
  L:    linux-media@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-media.git
  W:    http://www.ideasonboard.org/uvc/
@@@ -7378,18 -7326,6 +7391,18 @@@ S:    Maintaine
  F:    drivers/vlynq/vlynq.c
  F:    include/linux/vlynq.h
  
 +VME SUBSYSTEM
 +M:    Martyn Welch <martyn.welch@ge.com>
 +M:    Manohar Vanga <manohar.vanga@cern.ch>
 +M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
 +L:    devel@driverdev.osuosl.org
 +S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core.git
 +F:    Documentation/vme_api.txt
 +F:    drivers/staging/vme/
 +F:    drivers/vme/
 +F:    include/linux/vme*
 +
  VMWARE VMXNET3 ETHERNET DRIVER
  M:    Shreyas Bhatewara <sbhatewara@vmware.com>
  M:    "VMware, Inc." <pv-drivers@vmware.com>
@@@ -7510,6 -7446,23 +7523,6 @@@ M:     Miloslav Trmac <mitr@volny.cz
  S:    Maintained
  F:    drivers/input/misc/wistron_btns.c
  
 -WL1251 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl1251
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless-testing.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl1251/*
 -
 -WL1271 WIRELESS DRIVER
 -M:    Luciano Coelho <coelho@ti.com>
 -L:    linux-wireless@vger.kernel.org
 -W:    http://wireless.kernel.org/en/users/Drivers/wl12xx
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/luca/wl12xx.git
 -S:    Maintained
 -F:    drivers/net/wireless/wl12xx/
 -F:    include/linux/wl12xx.h
 -
  WL3501 WIRELESS PCMCIA CARD DRIVER
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
  L:    linux-wireless@vger.kernel.org
@@@ -7631,7 -7584,7 +7644,7 @@@ XFS FILESYSTE
  P:    Silicon Graphics Inc
  M:    Ben Myers <bpm@sgi.com>
  M:    Alex Elder <elder@kernel.org>
 -M:    xfs-masters@oss.sgi.com
 +M:    xfs@oss.sgi.com
  L:    xfs@oss.sgi.com
  W:    http://oss.sgi.com/projects/xfs
  T:    git git://oss.sgi.com/xfs/xfs.git
diff --combined arch/arm/Makefile
index 18194acab4933b0ac4d51aa9cf5b980b19f4a28a,fcc2170d2cd7bd9f55602ca14d47bb006bf97ee4..0298b00fe2413a1964cd899b9834136c3166136a
@@@ -70,6 -70,8 +70,6 @@@ arch-$(CONFIG_CPU_32v4)               :=-D__LINUX_AR
  arch-$(CONFIG_CPU_32v3)               :=-D__LINUX_ARM_ARCH__=3 -march=armv3
  
  # This selects how we optimise for the processor.
 -tune-$(CONFIG_CPU_ARM610)     :=-mtune=arm610
 -tune-$(CONFIG_CPU_ARM710)     :=-mtune=arm710
  tune-$(CONFIG_CPU_ARM7TDMI)   :=-mtune=arm7tdmi
  tune-$(CONFIG_CPU_ARM720T)    :=-mtune=arm7tdmi
  tune-$(CONFIG_CPU_ARM740T)    :=-mtune=arm7tdmi
@@@ -117,7 -119,7 +117,7 @@@ KBUILD_AFLAGS      +=$(CFLAGS_ABI) $(AFLAGS_
  CHECKFLAGS    += -D__arm__
  
  #Default value
 -head-y                := arch/arm/kernel/head$(MMUEXT).o arch/arm/kernel/init_task.o
 +head-y                := arch/arm/kernel/head$(MMUEXT).o
  textofs-y     := 0x00008000
  textofs-$(CONFIG_ARCH_CLPS711X) := 0x00028000
  # We don't want the htc bootloader to corrupt kernel during resume
@@@ -147,6 -149,8 +147,6 @@@ machine-$(CONFIG_ARCH_INTEGRATOR)  := in
  machine-$(CONFIG_ARCH_IOP13XX)                := iop13xx
  machine-$(CONFIG_ARCH_IOP32X)         := iop32x
  machine-$(CONFIG_ARCH_IOP33X)         := iop33x
 -machine-$(CONFIG_ARCH_IXP2000)                := ixp2000
 -machine-$(CONFIG_ARCH_IXP23XX)                := ixp23xx
  machine-$(CONFIG_ARCH_IXP4XX)         := ixp4xx
  machine-$(CONFIG_ARCH_KIRKWOOD)               := kirkwood
  machine-$(CONFIG_ARCH_KS8695)         := ks8695
@@@ -160,7 -164,9 +160,7 @@@ machine-$(CONFIG_ARCH_MXS)         := mx
  machine-$(CONFIG_ARCH_NETX)           := netx
  machine-$(CONFIG_ARCH_NOMADIK)                := nomadik
  machine-$(CONFIG_ARCH_OMAP1)          := omap1
 -machine-$(CONFIG_ARCH_OMAP2)          := omap2
 -machine-$(CONFIG_ARCH_OMAP3)          := omap2
 -machine-$(CONFIG_ARCH_OMAP4)          := omap2
 +machine-$(CONFIG_ARCH_OMAP2PLUS)      := omap2
  machine-$(CONFIG_ARCH_ORION5X)                := orion5x
  machine-$(CONFIG_ARCH_PICOXCELL)      := picoxcell
  machine-$(CONFIG_ARCH_PNX4008)                := pnx4008
@@@ -186,6 -192,8 +186,8 @@@ machine-$(CONFIG_ARCH_VEXPRESS)            := vex
  machine-$(CONFIG_ARCH_VT8500)         := vt8500
  machine-$(CONFIG_ARCH_W90X900)                := w90x900
  machine-$(CONFIG_FOOTBRIDGE)          := footbridge
+ machine-$(CONFIG_MACH_SPEAR1310)      := spear13xx
+ machine-$(CONFIG_MACH_SPEAR1340)      := spear13xx
  machine-$(CONFIG_MACH_SPEAR300)               := spear3xx
  machine-$(CONFIG_MACH_SPEAR310)               := spear3xx
  machine-$(CONFIG_MACH_SPEAR320)               := spear3xx
index e3cfd5fd7dd54bb694789f1b3553e1abe3569bf5,5893e2397da12de33b441711bf7b4a389fe7efce..43ebe909441108097a30f0c9c7fc605407105501
@@@ -61,6 -61,7 +61,7 @@@ config SOC_EXYNOS525
        bool "SAMSUNG EXYNOS5250"
        default y
        depends on ARCH_EXYNOS5
+       select SAMSUNG_DMADEV
        help
          Enable EXYNOS5250 SoC support
  
@@@ -70,7 -71,7 +71,7 @@@ config EXYNOS4_MC
        help
          Use MCT (Multi Core Timer) as kernel timers
  
- config EXYNOS4_DEV_DMA
+ config EXYNOS_DEV_DMA
        bool
        help
          Compile in amba device definitions for DMA controller
@@@ -80,6 -81,11 +81,11 @@@ config EXYNOS4_DEV_AHC
        help
          Compile in platform device definitions for AHCI
  
+ config EXYNOS_DEV_DRM
+       bool
+       help
+         Compile in platform device definitions for core DRM device
  config EXYNOS4_SETUP_FIMD0
        bool
        help
@@@ -161,7 -167,7 +167,7 @@@ config EXYNOS4_SETUP_USB_PH
        help
          Common setup code for USB PHY controller
  
- config EXYNOS4_SETUP_SPI
+ config EXYNOS_SETUP_SPI
        bool
        help
          Common setup code for SPI GPIO configurations.
@@@ -200,7 -206,6 +206,7 @@@ config MACH_SMDKV31
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select SAMSUNG_DEV_BACKLIGHT
 +      select EXYNOS_DEV_DRM
        select EXYNOS_DEV_SYSMMU
        select EXYNOS4_DEV_AHCI
        select SAMSUNG_DEV_KEYPAD
@@@ -224,7 -229,7 +230,7 @@@ config MACH_ARMLEX421
        select S3C_DEV_HSMMC2
        select S3C_DEV_HSMMC3
        select EXYNOS4_DEV_AHCI
-       select EXYNOS4_DEV_DMA
+       select EXYNOS_DEV_DMA
        select EXYNOS4_SETUP_SDHCI
        help
          Machine support for Samsung ARMLEX4210 based on EXYNOS4210
@@@ -250,14 -255,12 +256,14 @@@ config MACH_UNIVERSAL_C21
        select S3C_DEV_I2C1
        select S3C_DEV_I2C3
        select S3C_DEV_I2C5
 +      select S3C_DEV_USB_HSOTG
        select S5P_DEV_I2C_HDMIPHY
        select S5P_DEV_MFC
        select S5P_DEV_ONENAND
        select S5P_DEV_TV
        select EXYNOS_DEV_SYSMMU
        select EXYNOS4_DEV_DMA
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_I2C3
        select EXYNOS4_SETUP_SDHCI
        select EXYNOS4_SETUP_FIMC
        select S5P_SETUP_MIPIPHY
 +      select EXYNOS4_SETUP_USB_PHY
        help
          Machine support for Samsung Mobile Universal S5PC210 Reference
          Board.
@@@ -284,7 -286,6 +290,7 @@@ config MACH_NUR
        select S3C_DEV_I2C3
        select S3C_DEV_I2C5
        select S3C_DEV_I2C6
 +      select S3C_DEV_USB_HSOTG
        select S5P_DEV_CSIS0
        select S5P_DEV_JPEG
        select S5P_DEV_FIMC0
        select S5P_DEV_USB_EHCI
        select S5P_SETUP_MIPIPHY
        select EXYNOS4_DEV_DMA
 +      select EXYNOS_DEV_DRM
        select EXYNOS4_SETUP_FIMC
        select EXYNOS4_SETUP_FIMD0
        select EXYNOS4_SETUP_I2C1
@@@ -331,7 -331,6 +337,7 @@@ config MACH_ORIGE
        select S5P_DEV_USB_EHCI
        select SAMSUNG_DEV_BACKLIGHT
        select SAMSUNG_DEV_PWM
 +      select EXYNOS_DEV_DRM
        select EXYNOS_DEV_SYSMMU
        select EXYNOS4_DEV_DMA
        select EXYNOS4_DEV_USB_OHCI
@@@ -353,16 -352,11 +359,16 @@@ config MACH_SMDK421
        select S3C_DEV_I2C7
        select S3C_DEV_RTC
        select S3C_DEV_WDT
 +      select S5P_DEV_FIMC0
 +      select S5P_DEV_FIMC1
 +      select S5P_DEV_FIMC2
 +      select S5P_DEV_FIMC3
 +      select S5P_DEV_MFC
        select SAMSUNG_DEV_BACKLIGHT
        select SAMSUNG_DEV_KEYPAD
        select SAMSUNG_DEV_PWM
        select EXYNOS_DEV_SYSMMU
-       select EXYNOS4_DEV_DMA
+       select EXYNOS_DEV_DMA
        select EXYNOS4_SETUP_I2C1
        select EXYNOS4_SETUP_I2C3
        select EXYNOS4_SETUP_I2C7
index ddde8f3a24d435cdf09073d83302bc34a4e22b8b,561553a96f4ba0df7d61e0f9918cb57877a2ba28..7a4b4789eb7288205fcfcd555dcf50ffdb962753
  #define IRQ_IIC7                      EXYNOS4_IRQ_IIC7
  
  #define IRQ_USB_HOST                  EXYNOS4_IRQ_USB_HOST
 +#define IRQ_OTG                               EXYNOS4_IRQ_USB_HSOTG
  
  #define IRQ_HSMMC0                    EXYNOS4_IRQ_HSMMC0
  #define IRQ_HSMMC1                    EXYNOS4_IRQ_HSMMC1
  #define EXYNOS5_IRQ_MIPICSI1          IRQ_SPI(80)
  #define EXYNOS5_IRQ_EFNFCON_DMA_ABORT IRQ_SPI(81)
  #define EXYNOS5_IRQ_MIPIDSI0          IRQ_SPI(82)
+ #define EXYNOS5_IRQ_WDT_IOP           IRQ_SPI(83)
  #define EXYNOS5_IRQ_ROTATOR           IRQ_SPI(84)
  #define EXYNOS5_IRQ_GSC0              IRQ_SPI(85)
  #define EXYNOS5_IRQ_GSC1              IRQ_SPI(86)
  #define EXYNOS5_IRQ_JPEG              IRQ_SPI(89)
  #define EXYNOS5_IRQ_EFNFCON_DMA               IRQ_SPI(90)
  #define EXYNOS5_IRQ_2D                        IRQ_SPI(91)
- #define EXYNOS5_IRQ_SFMC0             IRQ_SPI(92)
- #define EXYNOS5_IRQ_SFMC1             IRQ_SPI(93)
+ #define EXYNOS5_IRQ_EFNFCON_0         IRQ_SPI(92)
+ #define EXYNOS5_IRQ_EFNFCON_1         IRQ_SPI(93)
  #define EXYNOS5_IRQ_MIXER             IRQ_SPI(94)
  #define EXYNOS5_IRQ_HDMI              IRQ_SPI(95)
  #define EXYNOS5_IRQ_MFC                       IRQ_SPI(96)
  #define EXYNOS5_IRQ_PCM2              IRQ_SPI(104)
  #define EXYNOS5_IRQ_SPDIF             IRQ_SPI(105)
  #define EXYNOS5_IRQ_ADC0              IRQ_SPI(106)
+ #define EXYNOS5_IRQ_ADC1              IRQ_SPI(107)
  #define EXYNOS5_IRQ_SATA_PHY          IRQ_SPI(108)
  #define EXYNOS5_IRQ_SATA_PMEMREQ      IRQ_SPI(109)
  #define EXYNOS5_IRQ_CAM_C             IRQ_SPI(110)
  #define EXYNOS5_IRQ_DP1_INTP1         IRQ_SPI(113)
  #define EXYNOS5_IRQ_CEC                       IRQ_SPI(114)
  #define EXYNOS5_IRQ_SATA              IRQ_SPI(115)
- #define EXYNOS5_IRQ_NFCON             IRQ_SPI(116)
  
+ #define EXYNOS5_IRQ_MCT_L0            IRQ_SPI(120)
+ #define EXYNOS5_IRQ_MCT_L1            IRQ_SPI(121)
  #define EXYNOS5_IRQ_MMC44             IRQ_SPI(123)
  #define EXYNOS5_IRQ_MDMA1             IRQ_SPI(124)
  #define EXYNOS5_IRQ_FIMC_LITE0                IRQ_SPI(125)
  #define EXYNOS5_IRQ_RP_TIMER          IRQ_SPI(127)
  
  #define EXYNOS5_IRQ_PMU                       COMBINER_IRQ(1, 2)
- #define EXYNOS5_IRQ_PMU_CPU1          COMBINER_IRQ(1, 6)
  
  #define EXYNOS5_IRQ_SYSMMU_GSC0_0     COMBINER_IRQ(2, 0)
  #define EXYNOS5_IRQ_SYSMMU_GSC0_1     COMBINER_IRQ(2, 1)
  #define EXYNOS5_IRQ_SYSMMU_GSC3_0     COMBINER_IRQ(2, 6)
  #define EXYNOS5_IRQ_SYSMMU_GSC3_1     COMBINER_IRQ(2, 7)
  
+ #define EXYNOS5_IRQ_SYSMMU_LITE2_0    COMBINER_IRQ(3, 0)
+ #define EXYNOS5_IRQ_SYSMMU_LITE2_1    COMBINER_IRQ(3, 1)
  #define EXYNOS5_IRQ_SYSMMU_FIMD1_0    COMBINER_IRQ(3, 2)
  #define EXYNOS5_IRQ_SYSMMU_FIMD1_1    COMBINER_IRQ(3, 3)
  #define EXYNOS5_IRQ_SYSMMU_LITE0_0    COMBINER_IRQ(3, 4)
  
  #define EXYNOS5_IRQ_SYSMMU_ARM_0      COMBINER_IRQ(6, 0)
  #define EXYNOS5_IRQ_SYSMMU_ARM_1      COMBINER_IRQ(6, 1)
- #define EXYNOS5_IRQ_SYSMMU_MFC_L_0    COMBINER_IRQ(6, 2)
- #define EXYNOS5_IRQ_SYSMMU_MFC_L_1    COMBINER_IRQ(6, 3)
+ #define EXYNOS5_IRQ_SYSMMU_MFC_R_0    COMBINER_IRQ(6, 2)
+ #define EXYNOS5_IRQ_SYSMMU_MFC_R_1    COMBINER_IRQ(6, 3)
  #define EXYNOS5_IRQ_SYSMMU_RTIC_0     COMBINER_IRQ(6, 4)
  #define EXYNOS5_IRQ_SYSMMU_RTIC_1     COMBINER_IRQ(6, 5)
  #define EXYNOS5_IRQ_SYSMMU_SSS_0      COMBINER_IRQ(6, 6)
  #define EXYNOS5_IRQ_SYSMMU_MDMA1_1    COMBINER_IRQ(7, 3)
  #define EXYNOS5_IRQ_SYSMMU_TV_0               COMBINER_IRQ(7, 4)
  #define EXYNOS5_IRQ_SYSMMU_TV_1               COMBINER_IRQ(7, 5)
- #define EXYNOS5_IRQ_SYSMMU_GPSX_0     COMBINER_IRQ(7, 6)
- #define EXYNOS5_IRQ_SYSMMU_GPSX_1     COMBINER_IRQ(7, 7)
  
- #define EXYNOS5_IRQ_SYSMMU_MFC_R_0    COMBINER_IRQ(8, 5)
- #define EXYNOS5_IRQ_SYSMMU_MFC_R_1    COMBINER_IRQ(8, 6)
+ #define EXYNOS5_IRQ_SYSMMU_MFC_L_0    COMBINER_IRQ(8, 5)
+ #define EXYNOS5_IRQ_SYSMMU_MFC_L_1    COMBINER_IRQ(8, 6)
  
  #define EXYNOS5_IRQ_SYSMMU_DIS1_0     COMBINER_IRQ(9, 4)
  #define EXYNOS5_IRQ_SYSMMU_DIS1_1     COMBINER_IRQ(9, 5)
  #define EXYNOS5_IRQ_SYSMMU_DRC_0      COMBINER_IRQ(11, 6)
  #define EXYNOS5_IRQ_SYSMMU_DRC_1      COMBINER_IRQ(11, 7)
  
+ #define EXYNOS5_IRQ_MDMA1_ABORT               COMBINER_IRQ(13, 1)
+ #define EXYNOS5_IRQ_MDMA0_ABORT               COMBINER_IRQ(15, 3)
  #define EXYNOS5_IRQ_FIMD1_FIFO                COMBINER_IRQ(18, 4)
  #define EXYNOS5_IRQ_FIMD1_VSYNC               COMBINER_IRQ(18, 5)
  #define EXYNOS5_IRQ_FIMD1_SYSTEM      COMBINER_IRQ(18, 6)
  
+ #define EXYNOS5_IRQ_ARMIOP_GIC                COMBINER_IRQ(19, 0)
+ #define EXYNOS5_IRQ_ARMISP_GIC                COMBINER_IRQ(19, 1)
+ #define EXYNOS5_IRQ_IOP_GIC           COMBINER_IRQ(19, 3)
+ #define EXYNOS5_IRQ_ISP_GIC           COMBINER_IRQ(19, 4)
+ #define EXYNOS5_IRQ_PMU_CPU1          COMBINER_IRQ(22, 4)
  #define EXYNOS5_IRQ_EINT0             COMBINER_IRQ(23, 0)
- #define EXYNOS5_IRQ_MCT_L0            COMBINER_IRQ(23, 1)
- #define EXYNOS5_IRQ_MCT_L1            COMBINER_IRQ(23, 2)
  #define EXYNOS5_IRQ_MCT_G0            COMBINER_IRQ(23, 3)
  #define EXYNOS5_IRQ_MCT_G1            COMBINER_IRQ(23, 4)
- #define EXYNOS5_IRQ_MCT_G2            COMBINER_IRQ(23, 5)
- #define EXYNOS5_IRQ_MCT_G3            COMBINER_IRQ(23, 6)
  
  #define EXYNOS5_IRQ_EINT1             COMBINER_IRQ(24, 0)
  #define EXYNOS5_IRQ_SYSMMU_LITE1_0    COMBINER_IRQ(24, 1)
  
  #define EXYNOS5_MAX_COMBINER_NR               32
  
- #define EXYNOS5_IRQ_GPIO1_NR_GROUPS   13
+ #define EXYNOS5_IRQ_GPIO1_NR_GROUPS   14
  #define EXYNOS5_IRQ_GPIO2_NR_GROUPS   9
  #define EXYNOS5_IRQ_GPIO3_NR_GROUPS   5
  #define EXYNOS5_IRQ_GPIO4_NR_GROUPS   1
index 2196af2d8218f81e22055b9017eb66d4e4bd3d1a,c72f8088d93d97b0b56db5c61fb4aa3ff6b50cee..ca4aa89aa46b357fe5ff04710bd9ffdf4caf361b
@@@ -34,6 -34,9 +34,9 @@@
  
  #define EXYNOS4_PA_JPEG                       0x11840000
  
+ /* x = 0...1 */
+ #define EXYNOS4_PA_FIMC_LITE(x)               (0x12390000 + ((x) * 0x10000))
  #define EXYNOS4_PA_G2D                        0x12800000
  
  #define EXYNOS4_PA_I2S0                       0x03830000
@@@ -78,8 -81,8 +81,8 @@@
  
  #define EXYNOS4_PA_GIC_CPU            0x10480000
  #define EXYNOS4_PA_GIC_DIST           0x10490000
- #define EXYNOS5_PA_GIC_CPU            0x10480000
- #define EXYNOS5_PA_GIC_DIST           0x10490000
+ #define EXYNOS5_PA_GIC_CPU            0x10482000
+ #define EXYNOS5_PA_GIC_DIST           0x10481000
  
  #define EXYNOS4_PA_COREPERI           0x10500000
  #define EXYNOS4_PA_TWD                        0x10500600
  #define EXYNOS4_PA_HSMMC(x)           (0x12510000 + ((x) * 0x10000))
  #define EXYNOS4_PA_DWMCI              0x12550000
  
 +#define EXYNOS4_PA_HSOTG              0x12480000
 +#define EXYNOS4_PA_USB_HSPHY          0x125B0000
 +
  #define EXYNOS4_PA_SATA                       0x12560000
  #define EXYNOS4_PA_SATAPHY            0x125D0000
  #define EXYNOS4_PA_SATAPHY_CTRL               0x126B0000
  #define S3C_PA_SPI0                   EXYNOS4_PA_SPI0
  #define S3C_PA_SPI1                   EXYNOS4_PA_SPI1
  #define S3C_PA_SPI2                   EXYNOS4_PA_SPI2
 +#define S3C_PA_USB_HSOTG              EXYNOS4_PA_HSOTG
  
  #define S5P_PA_EHCI                   EXYNOS4_PA_EHCI
  #define S5P_PA_FIMC0                  EXYNOS4_PA_FIMC0
index d457d052a420d680805679d6654dac7a40a5bc03,606b19907f99d635bc1e5a30d90dfca85b51bed8..4dbb8629b20025b091dd83016afa7f930accb776
  #define S5P_CHECK_SLEEP                               0x00000BAD
  
  /* Only for EXYNOS4210 */
 +#define S5P_USBDEVICE_PHY_CONTROL     S5P_PMUREG(0x0704)
 +#define S5P_USBDEVICE_PHY_ENABLE      (1 << 0)
 +
  #define S5P_USBHOST_PHY_CONTROL               S5P_PMUREG(0x0708)
  #define S5P_USBHOST_PHY_ENABLE                (1 << 0)
  
  
  #define S5P_PMU_LCD1_CONF             S5P_PMUREG(0x3CA0)
  
- /* Only for EXYNOS4212 */
+ /* Only for EXYNOS4x12 */
  #define S5P_ISP_ARM_LOWPWR                    S5P_PMUREG(0x1050)
  #define S5P_DIS_IRQ_ISP_ARM_LOCAL_LOWPWR      S5P_PMUREG(0x1054)
  #define S5P_DIS_IRQ_ISP_ARM_CENTRAL_LOWPWR    S5P_PMUREG(0x1058)
  #define S5P_SECSS_MEM_OPTION                  S5P_PMUREG(0x2EC8)
  #define S5P_ROTATOR_MEM_OPTION                        S5P_PMUREG(0x2F48)
  
+ /* Only for EXYNOS4412 */
+ #define S5P_ARM_CORE2_LOWPWR                  S5P_PMUREG(0x1020)
+ #define S5P_DIS_IRQ_CORE2                     S5P_PMUREG(0x1024)
+ #define S5P_DIS_IRQ_CENTRAL2                  S5P_PMUREG(0x1028)
+ #define S5P_ARM_CORE3_LOWPWR                  S5P_PMUREG(0x1030)
+ #define S5P_DIS_IRQ_CORE3                     S5P_PMUREG(0x1034)
+ #define S5P_DIS_IRQ_CENTRAL3                  S5P_PMUREG(0x1038)
  #endif /* __ASM_ARCH_REGS_PMU_H */
index 270a0b6f4f2282ab94faacd0ddbb6446fec41242,d0f3a92f9e4af35d0dabe24447faac9d3e83f5d0..0ab6ab15da4ca11fdb79c5144051333e4d10f00a
@@@ -14,8 -14,6 +14,8 @@@ obj-                          :
  
  # core
  
 +obj-y                         += common.o
 +
  obj-$(CONFIG_CPU_S3C2410)     += s3c2410.o
  obj-$(CONFIG_S3C2410_DMA)     += dma-s3c2410.o
  obj-$(CONFIG_S3C2410_PM)      += pm-s3c2410.o sleep-s3c2410.o
@@@ -35,10 -33,6 +35,10 @@@ obj-$(CONFIG_S3C2440_DMA)   += dma-s3c244
  
  obj-$(CONFIG_CPU_S3C2443)     += s3c2443.o irq-s3c2443.o clock-s3c2443.o
  
 +# PM
 +
 +obj-$(CONFIG_PM)              += pm.o irq-pm.o sleep.o
 +
  # common code
  
  obj-$(CONFIG_S3C2443_COMMON)  += common-s3c2443.o
@@@ -97,5 -91,6 +97,6 @@@ obj-$(CONFIG_MACH_OSIRIS_DVS)         += mach-
  # device setup
  
  obj-$(CONFIG_S3C2416_SETUP_SDHCI_GPIO)        += setup-sdhci-gpio.o
+ obj-$(CONFIG_S3C2443_SETUP_SPI)               += setup-spi.o
  obj-$(CONFIG_ARCH_S3C24XX)            += setup-i2c.o
  obj-$(CONFIG_S3C24XX_SETUP_TS)                += setup-ts.o
index 421f6af0f99582022f395da0f2e0d9f2d6523b83,f88bb9f919a89e0ff578af8f63869b30c619362e..7bb00448e13d2cd30140b06c9c1ca635708d9bbd
@@@ -2452,6 -2452,12 +2452,12 @@@ static struct samsung_gpio_chip exynos5
                        .ngpio  = EXYNOS5_GPIO_C3_NR,
                        .label  = "GPC3",
                },
+       }, {
+               .chip   = {
+                       .base   = EXYNOS5_GPC4(0),
+                       .ngpio  = EXYNOS5_GPIO_C4_NR,
+                       .label  = "GPC4",
+               },
        }, {
                .chip   = {
                        .base   = EXYNOS5_GPD0(0),
@@@ -2716,224 -2722,14 +2722,227 @@@ static __init void exynos_gpiolib_attac
  }
  #endif /* defined(CONFIG_ARCH_EXYNOS) && defined(CONFIG_OF) */
  
-       chip = &exynos5_gpios_1[20];
 +static __init void exynos4_gpiolib_init(void)
 +{
 +#ifdef CONFIG_CPU_EXYNOS4210
 +      struct samsung_gpio_chip *chip;
 +      int i, nr_chips;
 +      void __iomem *gpio_base1, *gpio_base2, *gpio_base3;
 +      int group = 0;
 +      void __iomem *gpx_base;
 +
 +      /* gpio part1 */
 +      gpio_base1 = ioremap(EXYNOS4_PA_GPIO1, SZ_4K);
 +      if (gpio_base1 == NULL) {
 +              pr_err("unable to ioremap for gpio_base1\n");
 +              goto err_ioremap1;
 +      }
 +
 +      chip = exynos4_gpios_1;
 +      nr_chips = ARRAY_SIZE(exynos4_gpios_1);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS4_PA_GPIO1, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos4_gpios_1,
 +                                     nr_chips, gpio_base1);
 +
 +      /* gpio part2 */
 +      gpio_base2 = ioremap(EXYNOS4_PA_GPIO2, SZ_4K);
 +      if (gpio_base2 == NULL) {
 +              pr_err("unable to ioremap for gpio_base2\n");
 +              goto err_ioremap2;
 +      }
 +
 +      /* need to set base address for gpx */
 +      chip = &exynos4_gpios_2[16];
 +      gpx_base = gpio_base2 + 0xC00;
 +      for (i = 0; i < 4; i++, chip++, gpx_base += 0x20)
 +              chip->base = gpx_base;
 +
 +      chip = exynos4_gpios_2;
 +      nr_chips = ARRAY_SIZE(exynos4_gpios_2);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS4_PA_GPIO2, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos4_gpios_2,
 +                                     nr_chips, gpio_base2);
 +
 +      /* gpio part3 */
 +      gpio_base3 = ioremap(EXYNOS4_PA_GPIO3, SZ_256);
 +      if (gpio_base3 == NULL) {
 +              pr_err("unable to ioremap for gpio_base3\n");
 +              goto err_ioremap3;
 +      }
 +
 +      chip = exynos4_gpios_3;
 +      nr_chips = ARRAY_SIZE(exynos4_gpios_3);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS4_PA_GPIO3, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos4_gpios_3,
 +                                     nr_chips, gpio_base3);
 +
 +#if defined(CONFIG_CPU_EXYNOS4210) && defined(CONFIG_S5P_GPIO_INT)
 +      s5p_register_gpioint_bank(IRQ_GPIO_XA, 0, IRQ_GPIO1_NR_GROUPS);
 +      s5p_register_gpioint_bank(IRQ_GPIO_XB, IRQ_GPIO1_NR_GROUPS, IRQ_GPIO2_NR_GROUPS);
 +#endif
 +
 +      return;
 +
 +err_ioremap3:
 +      iounmap(gpio_base2);
 +err_ioremap2:
 +      iounmap(gpio_base1);
 +err_ioremap1:
 +      return;
 +#endif        /* CONFIG_CPU_EXYNOS4210 */
 +}
 +
 +static __init void exynos5_gpiolib_init(void)
 +{
 +#ifdef CONFIG_SOC_EXYNOS5250
 +      struct samsung_gpio_chip *chip;
 +      int i, nr_chips;
 +      void __iomem *gpio_base1, *gpio_base2, *gpio_base3, *gpio_base4;
 +      int group = 0;
 +      void __iomem *gpx_base;
 +
 +      /* gpio part1 */
 +      gpio_base1 = ioremap(EXYNOS5_PA_GPIO1, SZ_4K);
 +      if (gpio_base1 == NULL) {
 +              pr_err("unable to ioremap for gpio_base1\n");
 +              goto err_ioremap1;
 +      }
 +
++      /* need to set base address for gpc4 */
++      exonys5_gpios_1[11].base = gpio_base1 + 0x2E0;
++
 +      /* need to set base address for gpx */
++      chip = &exynos5_gpios_1[21];
 +      gpx_base = gpio_base1 + 0xC00;
 +      for (i = 0; i < 4; i++, chip++, gpx_base += 0x20)
 +              chip->base = gpx_base;
 +
 +      chip = exynos5_gpios_1;
 +      nr_chips = ARRAY_SIZE(exynos5_gpios_1);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS5_PA_GPIO1, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos5_gpios_1,
 +                                     nr_chips, gpio_base1);
 +
 +      /* gpio part2 */
 +      gpio_base2 = ioremap(EXYNOS5_PA_GPIO2, SZ_4K);
 +      if (gpio_base2 == NULL) {
 +              pr_err("unable to ioremap for gpio_base2\n");
 +              goto err_ioremap2;
 +      }
 +
 +      chip = exynos5_gpios_2;
 +      nr_chips = ARRAY_SIZE(exynos5_gpios_2);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS5_PA_GPIO2, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos5_gpios_2,
 +                                     nr_chips, gpio_base2);
 +
 +      /* gpio part3 */
 +      gpio_base3 = ioremap(EXYNOS5_PA_GPIO3, SZ_4K);
 +      if (gpio_base3 == NULL) {
 +              pr_err("unable to ioremap for gpio_base3\n");
 +              goto err_ioremap3;
 +      }
 +
 +      /* need to set base address for gpv */
 +      exynos5_gpios_3[0].base = gpio_base3;
 +      exynos5_gpios_3[1].base = gpio_base3 + 0x20;
 +      exynos5_gpios_3[2].base = gpio_base3 + 0x60;
 +      exynos5_gpios_3[3].base = gpio_base3 + 0x80;
 +      exynos5_gpios_3[4].base = gpio_base3 + 0xC0;
 +
 +      chip = exynos5_gpios_3;
 +      nr_chips = ARRAY_SIZE(exynos5_gpios_3);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS5_PA_GPIO3, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos5_gpios_3,
 +                                     nr_chips, gpio_base3);
 +
 +      /* gpio part4 */
 +      gpio_base4 = ioremap(EXYNOS5_PA_GPIO4, SZ_4K);
 +      if (gpio_base4 == NULL) {
 +              pr_err("unable to ioremap for gpio_base4\n");
 +              goto err_ioremap4;
 +      }
 +
 +      chip = exynos5_gpios_4;
 +      nr_chips = ARRAY_SIZE(exynos5_gpios_4);
 +
 +      for (i = 0; i < nr_chips; i++, chip++) {
 +              if (!chip->config) {
 +                      chip->config = &exynos_gpio_cfg;
 +                      chip->group = group++;
 +              }
 +              exynos_gpiolib_attach_ofnode(chip,
 +                              EXYNOS5_PA_GPIO4, i * 0x20);
 +      }
 +      samsung_gpiolib_add_4bit_chips(exynos5_gpios_4,
 +                                     nr_chips, gpio_base4);
 +      return;
 +
 +err_ioremap4:
 +      iounmap(gpio_base3);
 +err_ioremap3:
 +      iounmap(gpio_base2);
 +err_ioremap2:
 +      iounmap(gpio_base1);
 +err_ioremap1:
 +      return;
 +
 +#endif        /* CONFIG_SOC_EXYNOS5250 */
 +}
 +
  /* TODO: cleanup soc_is_* */
  static __init int samsung_gpiolib_init(void)
  {
        struct samsung_gpio_chip *chip;
        int i, nr_chips;
 -#if defined(CONFIG_CPU_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS5250)
 -      void __iomem *gpio_base1, *gpio_base2, *gpio_base3, *gpio_base4;
 -#endif
        int group = 0;
  
        samsung_gpiolib_set_cfg(samsung_gpio_cfgs, ARRAY_SIZE(samsung_gpio_cfgs));
                s5p_register_gpioint_bank(IRQ_GPIOINT, 0, S5P_GPIOINT_GROUP_MAXNR);
  #endif
        } else if (soc_is_exynos4210()) {
 -#ifdef CONFIG_CPU_EXYNOS4210
 -              void __iomem *gpx_base;
 -
 -              /* gpio part1 */
 -              gpio_base1 = ioremap(EXYNOS4_PA_GPIO1, SZ_4K);
 -              if (gpio_base1 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base1\n");
 -                      goto err_ioremap1;
 -              }
 -
 -              chip = exynos4_gpios_1;
 -              nr_chips = ARRAY_SIZE(exynos4_gpios_1);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS4_PA_GPIO1, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos4_gpios_1,
 -                                             nr_chips, gpio_base1);
 -
 -              /* gpio part2 */
 -              gpio_base2 = ioremap(EXYNOS4_PA_GPIO2, SZ_4K);
 -              if (gpio_base2 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base2\n");
 -                      goto err_ioremap2;
 -              }
 -
 -              /* need to set base address for gpx */
 -              chip = &exynos4_gpios_2[16];
 -              gpx_base = gpio_base2 + 0xC00;
 -              for (i = 0; i < 4; i++, chip++, gpx_base += 0x20)
 -                      chip->base = gpx_base;
 -
 -              chip = exynos4_gpios_2;
 -              nr_chips = ARRAY_SIZE(exynos4_gpios_2);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS4_PA_GPIO2, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos4_gpios_2,
 -                                             nr_chips, gpio_base2);
 -
 -              /* gpio part3 */
 -              gpio_base3 = ioremap(EXYNOS4_PA_GPIO3, SZ_256);
 -              if (gpio_base3 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base3\n");
 -                      goto err_ioremap3;
 -              }
 -
 -              chip = exynos4_gpios_3;
 -              nr_chips = ARRAY_SIZE(exynos4_gpios_3);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS4_PA_GPIO3, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos4_gpios_3,
 -                                             nr_chips, gpio_base3);
 -
 -#if defined(CONFIG_CPU_EXYNOS4210) && defined(CONFIG_S5P_GPIO_INT)
 -              s5p_register_gpioint_bank(IRQ_GPIO_XA, 0, IRQ_GPIO1_NR_GROUPS);
 -              s5p_register_gpioint_bank(IRQ_GPIO_XB, IRQ_GPIO1_NR_GROUPS, IRQ_GPIO2_NR_GROUPS);
 -#endif
 -
 -#endif        /* CONFIG_CPU_EXYNOS4210 */
 +              exynos4_gpiolib_init();
        } else if (soc_is_exynos5250()) {
 -#ifdef CONFIG_SOC_EXYNOS5250
 -              void __iomem *gpx_base;
 -
 -              /* gpio part1 */
 -              gpio_base1 = ioremap(EXYNOS5_PA_GPIO1, SZ_4K);
 -              if (gpio_base1 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base1\n");
 -                      goto err_ioremap1;
 -              }
 -
 -              /* need to set base address for gpc4 */
 -              exynos5_gpios_1[11].base = gpio_base1 + 0x2E0;
 -
 -              /* need to set base address for gpx */
 -              chip = &exynos5_gpios_1[21];
 -              gpx_base = gpio_base1 + 0xC00;
 -              for (i = 0; i < 4; i++, chip++, gpx_base += 0x20)
 -                      chip->base = gpx_base;
 -
 -              chip = exynos5_gpios_1;
 -              nr_chips = ARRAY_SIZE(exynos5_gpios_1);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS5_PA_GPIO1, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos5_gpios_1,
 -                                             nr_chips, gpio_base1);
 -
 -              /* gpio part2 */
 -              gpio_base2 = ioremap(EXYNOS5_PA_GPIO2, SZ_4K);
 -              if (gpio_base2 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base2\n");
 -                      goto err_ioremap2;
 -              }
 -
 -              chip = exynos5_gpios_2;
 -              nr_chips = ARRAY_SIZE(exynos5_gpios_2);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS5_PA_GPIO2, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos5_gpios_2,
 -                                             nr_chips, gpio_base2);
 -
 -              /* gpio part3 */
 -              gpio_base3 = ioremap(EXYNOS5_PA_GPIO3, SZ_4K);
 -              if (gpio_base3 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base3\n");
 -                      goto err_ioremap3;
 -              }
 -
 -              /* need to set base address for gpv */
 -              exynos5_gpios_3[0].base = gpio_base3;
 -              exynos5_gpios_3[1].base = gpio_base3 + 0x20;
 -              exynos5_gpios_3[2].base = gpio_base3 + 0x60;
 -              exynos5_gpios_3[3].base = gpio_base3 + 0x80;
 -              exynos5_gpios_3[4].base = gpio_base3 + 0xC0;
 -
 -              chip = exynos5_gpios_3;
 -              nr_chips = ARRAY_SIZE(exynos5_gpios_3);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS5_PA_GPIO3, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos5_gpios_3,
 -                                             nr_chips, gpio_base3);
 -
 -              /* gpio part4 */
 -              gpio_base4 = ioremap(EXYNOS5_PA_GPIO4, SZ_4K);
 -              if (gpio_base4 == NULL) {
 -                      pr_err("unable to ioremap for gpio_base4\n");
 -                      goto err_ioremap4;
 -              }
 -
 -              chip = exynos5_gpios_4;
 -              nr_chips = ARRAY_SIZE(exynos5_gpios_4);
 -
 -              for (i = 0; i < nr_chips; i++, chip++) {
 -                      if (!chip->config) {
 -                              chip->config = &exynos_gpio_cfg;
 -                              chip->group = group++;
 -                      }
 -                      exynos_gpiolib_attach_ofnode(chip,
 -                                      EXYNOS5_PA_GPIO4, i * 0x20);
 -              }
 -              samsung_gpiolib_add_4bit_chips(exynos5_gpios_4,
 -                                             nr_chips, gpio_base4);
 -#endif        /* CONFIG_SOC_EXYNOS5250 */
 +              exynos5_gpiolib_init();
        } else {
                WARN(1, "Unknown SoC in gpio-samsung, no GPIOs added\n");
                return -ENODEV;
        }
  
        return 0;
 -
 -#if defined(CONFIG_CPU_EXYNOS4210) || defined(CONFIG_SOC_EXYNOS5250)
 -err_ioremap4:
 -      iounmap(gpio_base3);
 -err_ioremap3:
 -      iounmap(gpio_base2);
 -err_ioremap2:
 -      iounmap(gpio_base1);
 -err_ioremap1:
 -      return -ENOMEM;
 -#endif
  }
  core_initcall(samsung_gpiolib_init);