Merge tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:36:01 +0000 (18:36 -0400)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 1 Aug 2016 22:36:01 +0000 (18:36 -0400)
Pull ARM SoC driver updates from Olof Johansson:
 "Driver updates for ARM SoCs.

  A slew of changes this release cycle.  The reset driver tree, that we
  merge through arm-soc for historical reasons, is also sizable this
  time around.

  Among the changes:

   - clps711x: Treewide changes to compatible strings, merged here for simplicity.
   - Qualcomm: SCM firmware driver cleanups, move to platform driver
   - ux500: Major cleanups, removal of old mach-specific infrastructure.
   - Atmel external bus memory driver
   - Move of brcmstb platform to the rest of bcm
   - PMC driver updates for tegra, various fixes and improvements
   - Samsung platform driver updates to support 64-bit Exynos platforms
   - Reset controller cleanups moving to devm_reset_controller_register() APIs
   - Reset controller driver for Amlogic Meson
   - Reset controller driver for Hisilicon hi6220
   - ARM SCPI power domain support"

* tag 'armsoc-drivers' of git://git.kernel.org/pub/scm/linux/kernel/git/arm/arm-soc: (100 commits)
  ARM: ux500: consolidate base platform files
  ARM: ux500: move soc_id driver to drivers/soc
  ARM: ux500: call ux500_setup_id later
  ARM: ux500: consolidate soc_device code in id.c
  ARM: ux500: remove cpu_is_u* helpers
  ARM: ux500: use CLK_OF_DECLARE()
  ARM: ux500: move l2x0 init to .init_irq
  mfd: db8500 stop passing around platform data
  ASoC: ab8500-codec: remove platform data based probe
  ARM: ux500: move ab8500_regulator_plat_data into driver
  ARM: ux500: remove unused regulator data
  soc: raspberrypi-power: add CONFIG_OF dependency
  firmware: scpi: add CONFIG_OF dependency
  video: clps711x-fb: Changing the compatibility string to match with the smallest supported chip
  input: clps711x-keypad: Changing the compatibility string to match with the smallest supported chip
  pwm: clps711x: Changing the compatibility string to match with the smallest supported chip
  serial: clps711x: Changing the compatibility string to match with the smallest supported chip
  irqchip: clps711x: Changing the compatibility string to match with the smallest supported chip
  clocksource: clps711x: Changing the compatibility string to match with the smallest supported chip
  clk: clps711x: Changing the compatibility string to match with the smallest supported chip
  ...

12 files changed:
1  2 
Documentation/driver-model/devres.txt
MAINTAINERS
arch/arm/boot/dts/exynos5420-peach-pit.dts
arch/arm/mach-exynos/Kconfig
arch/arm/mach-exynos/exynos.c
arch/arm/mach-omap2/pdata-quirks.c
drivers/clocksource/clps711x-timer.c
drivers/cpufreq/s5pv210-cpufreq.c
drivers/memory/omap-gpmc.c
drivers/power/reset/Kconfig
drivers/power/reset/Makefile
drivers/soc/samsung/pm_domains.c

index 589296bdc133e3f422c6d7fe6a992e3ac0802db3,f5e522342ee5508a13776f7e6369aa2e23b7a7fc..b0d775d28e97bebe4875385530a26f0335f90b29
@@@ -352,11 -352,12 +352,15 @@@ REGULATO
    devm_regulator_put()
    devm_regulator_register()
  
+ RESET
+   devm_reset_control_get()
+   devm_reset_controller_register()
  SLAVE DMA ENGINE
    devm_acpi_dma_controller_register()
  
  SPI
    devm_spi_register_master()
 +
 +WATCHDOG
 +  devm_watchdog_register_device()
diff --combined MAINTAINERS
index 9f5cd4df67975be647d79da19b3a4d23a1f96c7d,88c8e3a53218ad087eeaec2b55c4a0aff430ffb3..5f62e4cd900c561c9b7bea60bc7a046ecbec0756
@@@ -213,7 -213,7 +213,7 @@@ S: Maintaine
  F:    drivers/media/dvb-frontends/a8293*
  
  AACRAID SCSI RAID DRIVER
 -M:    Adaptec OEM Raid Solutions <aacraid@adaptec.com>
 +M:    Adaptec OEM Raid Solutions <aacraid@microsemi.com>
  L:    linux-scsi@vger.kernel.org
  W:    http://www.adaptec.com/
  S:    Supported
@@@ -288,7 -288,6 +288,7 @@@ F: include/linux/acpi.
  F:    include/acpi/
  F:    Documentation/acpi/
  F:    Documentation/ABI/testing/sysfs-bus-acpi
 +F:    Documentation/ABI/testing/configfs-acpi
  F:    drivers/pci/*acpi*
  F:    drivers/pci/*/*acpi*
  F:    drivers/pci/*/*/*acpi*
@@@ -596,10 -595,6 +596,10 @@@ S:       Odd Fixe
  L:    linux-alpha@vger.kernel.org
  F:    arch/alpha/
  
 +ALPS PS/2 TOUCHPAD DRIVER
 +R:    Pali Rohár <pali.rohar@gmail.com>
 +F:    drivers/input/mouse/alps.*
 +
  ALTERA MAILBOX DRIVER
  M:    Ley Foon Tan <lftan@altera.com>
  L:    nios2-dev@lists.rocketboards.org (moderated for non-subscribers)
@@@ -612,13 -607,6 +612,13 @@@ L:       linux-gpio@vger.kernel.or
  S:    Maintained
  F:    drivers/gpio/gpio-altera.c
  
 +ALTERA SYSTEM RESOURCE DRIVER FOR ARRIA10 DEVKIT
 +M:    Thor Thayer <tthayer@opensource.altera.com>
 +S:    Maintained
 +F:    drivers/gpio/gpio-altera-a10sr.c
 +F:    drivers/mfd/altera-a10sr.c
 +F:    include/linux/mfd/altera-a10sr.h
 +
  ALTERA TRIPLE SPEED ETHERNET DRIVER
  M:    Vince Bridgers <vbridger@opensource.altera.com>
  L:    netdev@vger.kernel.org
@@@ -847,9 -835,7 +847,9 @@@ M: Iyappan Subramanian <isubramanian@ap
  M:    Keyur Chudgar <kchudgar@apm.com>
  S:    Supported
  F:    drivers/net/ethernet/apm/xgene/
 +F:    drivers/net/phy/mdio-xgene.c
  F:    Documentation/devicetree/bindings/net/apm-xgene-enet.txt
 +F:    Documentation/devicetree/bindings/net/apm-xgene-mdio.txt
  
  APTINA CAMERA SENSOR PLL
  M:    Laurent Pinchart <Laurent.pinchart@ideasonboard.com>
@@@ -1173,7 -1159,6 +1173,7 @@@ F:      arch/arm/mach-footbridge
  ARM/FREESCALE IMX / MXC ARM ARCHITECTURE
  M:    Shawn Guo <shawnguo@kernel.org>
  M:    Sascha Hauer <kernel@pengutronix.de>
 +R:    Fabio Estevam <fabio.estevam@nxp.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux.git
@@@ -1536,6 -1521,7 +1536,7 @@@ M:      David Brown <david.brown@linaro.org
  L:    linux-arm-msm@vger.kernel.org
  L:    linux-soc@vger.kernel.org
  S:    Maintained
+ F:    Documentation/devicetree/bindings/soc/qcom/
  F:    arch/arm/boot/dts/qcom-*.dts
  F:    arch/arm/boot/dts/qcom-*.dtsi
  F:    arch/arm/mach-qcom/
@@@ -1613,13 -1599,12 +1614,13 @@@ F:   arch/arm/mach-s3c24*
  F:    arch/arm/mach-s3c64xx/
  F:    arch/arm/mach-s5p*/
  F:    arch/arm/mach-exynos*/
 -F:    drivers/*/*s3c2410*
 -F:    drivers/*/*/*s3c2410*
 +F:    drivers/*/*s3c24*
 +F:    drivers/*/*/*s3c24*
 +F:    drivers/*/*s3c64xx*
 +F:    drivers/*/*s5pv210*
  F:    drivers/memory/samsung/*
  F:    drivers/soc/samsung/*
  F:    drivers/spi/spi-s3c*
 -F:    sound/soc/samsung/*
  F:    Documentation/arm/Samsung/
  F:    Documentation/devicetree/bindings/arm/samsung/
  F:    Documentation/devicetree/bindings/sram/samsung-sram.txt
@@@ -1658,13 -1643,6 +1659,13 @@@ L:    linux-media@vger.kernel.or
  S:    Maintained
  F:    drivers/media/platform/s5p-tv/
  
 +ARM/SAMSUNG S5P SERIES HDMI CEC SUBSYSTEM SUPPORT
 +M:    Kyungmin Park <kyungmin.park@samsung.com>
 +L:    linux-arm-kernel@lists.infradead.org
 +L:    linux-media@vger.kernel.org
 +S:    Maintained
 +F:    drivers/staging/media/platform/s5p-cec/
 +
  ARM/SAMSUNG S5P SERIES JPEG CODEC SUPPORT
  M:    Andrzej Pietrasiewicz <andrzej.p@samsung.com>
  M:    Jacek Anaszewski <j.anaszewski@samsung.com>
@@@ -1687,6 -1665,7 +1688,6 @@@ F:      arch/arm/boot/dts/sh
  F:    arch/arm/configs/shmobile_defconfig
  F:    arch/arm/include/debug/renesas-scif.S
  F:    arch/arm/mach-shmobile/
 -F:    drivers/sh/
  F:    drivers/soc/renesas/
  F:    include/linux/soc/renesas/
  
@@@ -1711,6 -1690,8 +1712,6 @@@ S:      Maintaine
  F:    drivers/edac/altera_edac.
  
  ARM/STI ARCHITECTURE
 -M:    Srinivas Kandagatla <srinivas.kandagatla@gmail.com>
 -M:    Maxime Coquelin <maxime.coquelin@st.com>
  M:    Patrice Chotard <patrice.chotard@st.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  L:    kernel@stlinux.com
@@@ -1743,7 -1724,6 +1744,7 @@@ F:      drivers/ata/ahci_st.
  
  ARM/STM32 ARCHITECTURE
  M:    Maxime Coquelin <mcoquelin.stm32@gmail.com>
 +M:    Alexandre Torgue <alexandre.torgue@st.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mcoquelin/stm32.git
@@@ -1754,7 -1734,8 +1755,7 @@@ ARM/TANGO ARCHITECTUR
  M:    Marc Gonzalez <marc_gonzalez@sigmadesigns.com>
  L:    linux-arm-kernel@lists.infradead.org
  S:    Maintained
 -F:    arch/arm/mach-tango/
 -F:    arch/arm/boot/dts/tango*
 +N:    tango
  
  ARM/TECHNOLOGIC SYSTEMS TS7250 MACHINE SUPPORT
  M:    Lennert Buytenhek <kernel@wantstofly.org>
@@@ -1841,7 -1822,6 +1842,6 @@@ L:      linux-arm-kernel@lists.infradead.or
  T:    git git://git.linaro.org/people/ulfh/clk.git
  S:    Maintained
  F:    drivers/clk/ux500/
- F:    include/linux/platform_data/clk-ux500.h
  
  ARM/VERSATILE EXPRESS PLATFORM
  M:    Liviu Dudau <liviu.dudau@arm.com>
@@@ -2262,8 -2242,7 +2262,8 @@@ F:      include/net/ax25.
  F:    net/ax25/
  
  AZ6007 DVB DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2312,7 -2291,6 +2312,7 @@@ S:      Maintaine
  F:    Documentation/ABI/testing/sysfs-class-net-batman-adv
  F:    Documentation/ABI/testing/sysfs-class-net-mesh
  F:    Documentation/networking/batman-adv.txt
 +F:    include/uapi/linux/batman_adv.h
  F:    net/batman-adv/
  
  BAYCOM/HDLCDRV DRIVERS FOR AX.25
@@@ -2476,14 -2454,6 +2476,14 @@@ L:    netdev@vger.kernel.or
  S:    Supported
  F:    drivers/net/ethernet/broadcom/b44.*
  
 +BROADCOM B53 ETHERNET SWITCH DRIVER
 +M:    Florian Fainelli <f.fainelli@gmail.com>
 +L:    netdev@vger.kernel.org
 +L:    openwrt-devel@lists.openwrt.org (subscribers-only)
 +S:    Supported
 +F:    drivers/net/dsa/b53/*
 +F:    include/linux/platform_data/b53.h
 +
  BROADCOM GENET ETHERNET DRIVER
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
@@@ -2598,11 -2568,12 +2598,11 @@@ S:   Supporte
  F:    drivers/net/ethernet/broadcom/tg3.*
  
  BROADCOM BRCM80211 IEEE802.11n WIRELESS DRIVER
 -M:    Brett Rudley <brudley@broadcom.com>
 -M:    Arend van Spriel <arend@broadcom.com>
 -M:    Franky (Zhenhui) Lin <frankyl@broadcom.com>
 -M:    Hante Meuleman <meuleman@broadcom.com>
 +M:    Arend van Spriel <arend.vanspriel@broadcom.com>
 +M:    Franky Lin <franky.lin@broadcom.com>
 +M:    Hante Meuleman <hante.meuleman@broadcom.com>
  L:    linux-wireless@vger.kernel.org
 -L:    brcm80211-dev-list@broadcom.com
 +L:    brcm80211-dev-list.pdl@broadcom.com
  S:    Supported
  F:    drivers/net/wireless/broadcom/brcm80211/
  
@@@ -2739,8 -2710,7 +2739,8 @@@ F:      Documentation/filesystems/btrfs.tx
  F:    fs/btrfs/
  
  BTTV VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -2804,9 -2774,9 +2804,9 @@@ F:      include/net/caif
  F:    net/caif/
  
  CALGARY x86-64 IOMMU
 -M:    Muli Ben-Yehuda <muli@il.ibm.com>
 -M:    "Jon D. Mason" <jdmason@kudzu.us>
 -L:    discuss@x86-64.org
 +M:    Muli Ben-Yehuda <mulix@mulix.org>
 +M:    Jon Mason <jdmason@kudzu.us>
 +L:    iommu@lists.linux-foundation.org
  S:    Maintained
  F:    arch/x86/kernel/pci-calgary_64.c
  F:    arch/x86/kernel/tce_64.c
@@@ -2837,7 -2807,6 +2837,7 @@@ W:      https://github.com/linux-ca
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkl/linux-can-next.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/can/
  F:    drivers/net/can/
  F:    include/linux/can/dev.h
  F:    include/linux/can/platform/
@@@ -2845,7 -2814,7 +2845,7 @@@ F:      include/uapi/linux/can/error.
  F:    include/uapi/linux/can/netlink.h
  
  CAPABILITIES
 -M:    Serge Hallyn <serge.hallyn@canonical.com>
 +M:    Serge Hallyn <serge@hallyn.com>
  L:    linux-security-module@vger.kernel.org
  S:    Supported
  F:    include/linux/capability.h
@@@ -2877,22 -2846,6 +2877,22 @@@ F:    drivers/net/ieee802154/cc2520.
  F:    include/linux/spi/cc2520.h
  F:    Documentation/devicetree/bindings/net/ieee802154/cc2520.txt
  
 +CEC DRIVER
 +M:    Hans Verkuil <hans.verkuil@cisco.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +W:    http://linuxtv.org
 +S:    Supported
 +F:    Documentation/cec.txt
 +F:    Documentation/DocBook/media/v4l/cec*
 +F:    drivers/staging/media/cec/
 +F:    drivers/media/cec-edid.c
 +F:    drivers/media/rc/keymaps/rc-cec.c
 +F:    include/media/cec.h
 +F:    include/media/cec-edid.h
 +F:    include/linux/cec.h
 +F:    include/linux/cec-funcs.h
 +
  CELL BROADBAND ENGINE ARCHITECTURE
  M:    Arnd Bergmann <arnd@arndb.de>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -3134,7 -3087,6 +3134,7 @@@ M:      Stephen Boyd <sboyd@codeaurora.org
  L:    linux-clk@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/clock/
  F:    drivers/clk/
  X:    drivers/clk/clkdev.c
  F:    include/linux/clk-pr*
@@@ -3329,7 -3281,6 +3329,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/herbert/crypto-2.6.git
  S:    Maintained
  F:    Documentation/crypto/
 +F:    Documentation/devicetree/bindings/crypto/
  F:    Documentation/DocBook/crypto-API.tmpl
  F:    arch/*/crypto/
  F:    crypto/
@@@ -3393,8 -3344,7 +3393,8 @@@ S:      Maintaine
  F:    drivers/media/dvb-frontends/cx24120*
  
  CX88 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -3720,8 -3670,6 +3720,8 @@@ M:      Support Opensource <support.opensour
  W:    http://www.dialog-semiconductor.com/products
  S:    Supported
  F:    Documentation/hwmon/da90??
 +F:    Documentation/devicetree/bindings/mfd/da90*.txt
 +F:    Documentation/devicetree/bindings/regulator/da92*.txt
  F:    Documentation/devicetree/bindings/sound/da[79]*.txt
  F:    drivers/gpio/gpio-da90??.c
  F:    drivers/hwmon/da90??-hwmon.c
@@@ -3742,10 -3690,8 +3742,10 @@@ F:    drivers/watchdog/da90??_wdt.
  F:    include/linux/mfd/da903x.h
  F:    include/linux/mfd/da9052/
  F:    include/linux/mfd/da9055/
 +F:    include/linux/mfd/da9062/
  F:    include/linux/mfd/da9063/
  F:    include/linux/mfd/da9150/
 +F:    include/linux/regulator/da9211.h
  F:    include/sound/da[79]*.h
  F:    sound/soc/codecs/da[79]*.[ch]
  
@@@ -3828,7 -3774,6 +3828,7 @@@ Q:      https://patchwork.kernel.org/project
  S:    Maintained
  F:    drivers/dma/
  F:    include/linux/dmaengine.h
 +F:    Documentation/devicetree/bindings/dma/
  F:    Documentation/dmaengine/
  T:    git git://git.infradead.org/users/vkoul/slave-dma.git
  
@@@ -4346,8 -4291,7 +4346,8 @@@ F:      fs/ecryptfs
  EDAC-CORE
  M:    Doug Thompson <dougthompson@xmission.com>
  M:    Borislav Petkov <bp@alien8.de>
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bp/bp.git for-next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mchehab/linux-edac.git linux_next
@@@ -4392,8 -4336,7 +4392,8 @@@ S:      Maintaine
  F:    drivers/edac/e7xxx_edac.c
  
  EDAC-GHES
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/ghes_edac.c
@@@ -4417,22 -4360,19 +4417,22 @@@ S:   Maintaine
  F:    drivers/edac/i5000_edac.c
  
  EDAC-I5400
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/i5400_edac.c
  
  EDAC-I7300
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/i7300_edac.c
  
  EDAC-I7CORE
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/i7core_edac.c
@@@ -4469,8 -4409,7 +4469,8 @@@ S:      Maintaine
  F:    drivers/edac/r82600_edac.c
  
  EDAC-SBRIDGE
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-edac@vger.kernel.org
  S:    Maintained
  F:    drivers/edac/sb_edac.c
@@@ -4523,14 -4462,13 +4523,14 @@@ S:   Orpha
  F:    fs/efs/
  
  EHEA (IBM pSeries eHEA 10Gb ethernet adapter) DRIVER
 -M:    Thadeu Lima de Souza Cascardo <cascardo@linux.vnet.ibm.com>
 +M:    Douglas Miller <dougmill@linux.vnet.ibm.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/ibm/ehea/
  
  EM28XX VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -4711,7 -4649,7 +4711,7 @@@ S:      Maintaine
  F:    drivers/staging/fbtft/
  
  FCOE SUBSYSTEM (libfc, libfcoe, fcoe)
 -M:    Vasu Dev <vasu.dev@intel.com>
 +M:    Johannes Thumshirn <jth@kernel.org>
  L:    fcoe-devel@open-fcoe.org
  W:    www.Open-FCoE.org
  S:    Supported
@@@ -4933,13 -4871,6 +4933,13 @@@ F:    drivers/net/ethernet/freescale/gianf
  X:    drivers/net/ethernet/freescale/gianfar_ptp.c
  F:    Documentation/devicetree/bindings/net/fsl-tsec-phy.txt
  
 +FREESCALE QUICC ENGINE UCC HDLC DRIVER
 +M:    Zhao Qiang <qiang.zhao@nxp.com>
 +L:    netdev@vger.kernel.org
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Maintained
 +F:    drivers/net/wan/fsl_ucc_hdlc*
 +
  FREESCALE QUICC ENGINE UCC UART DRIVER
  M:    Timur Tabi <timur@tabi.org>
  L:    linuxppc-dev@lists.ozlabs.org
@@@ -4995,13 -4926,6 +4995,13 @@@ F:    Documentation/filesystems/caching
  F:    fs/fscache/
  F:    include/linux/fscache*.h
  
 +FS-CRYPTO: FILE SYSTEM LEVEL ENCRYPTION SUPPORT
 +M:    Theodore Y. Ts'o <tytso@mit.edu>
 +M:    Jaegeuk Kim <jaegeuk@kernel.org>
 +S:    Supported
 +F:    fs/crypto/
 +F:    include/linux/fscrypto.h
 +
  F2FS FILE SYSTEM
  M:    Jaegeuk Kim <jaegeuk@kernel.org>
  M:    Changman Lee <cm224.lee@samsung.com>
@@@ -5230,10 -5154,10 +5230,10 @@@ S:   Maintaine
  F:    drivers/media/usb/gspca/m5602/
  
  GSPCA PAC207 SONIXB SUBDRIVER
 -M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/media/usb/gspca/pac207.c
  
  GSPCA SN9C20X SUBDRIVER
@@@ -5251,10 -5175,10 +5251,10 @@@ S:   Maintaine
  F:    drivers/media/usb/gspca/t613.c
  
  GSPCA USB WEBCAM DRIVER
 -M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/media/usb/gspca/
  
  GUID PARTITION TABLE (GPT)
@@@ -5335,7 -5259,6 +5335,7 @@@ M:      Matt Mackall <mpm@selenic.com
  M:    Herbert Xu <herbert@gondor.apana.org.au>
  L:    linux-crypto@vger.kernel.org
  S:    Odd fixes
 +F:    Documentation/devicetree/bindings/rng/
  F:    Documentation/hw_random.txt
  F:    drivers/char/hw_random/
  F:    include/linux/hw_random.h
@@@ -5346,9 -5269,8 +5346,9 @@@ M:      Bjorn Andersson <bjorn.andersson@lin
  L:    linux-remoteproc@vger.kernel.org
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/hwspinlock.git
 +F:    Documentation/devicetree/bindings/hwlock/
  F:    Documentation/hwspinlock.txt
 -F:    drivers/hwspinlock/hwspinlock_*
 +F:    drivers/hwspinlock/
  F:    include/linux/hwspinlock.h
  
  HARMONY SOUND DRIVER
@@@ -5366,12 -5288,6 +5366,12 @@@ T:    git git://linuxtv.org/anttip/media_t
  S:    Maintained
  F:    drivers/media/dvb-frontends/hd29l2*
  
 +HEWLETT PACKARD ENTERPRISE ILO NMI WATCHDOG DRIVER
 +M:    Brian Boylston <brian.boylston@hpe.com>
 +S:    Supported
 +F:    Documentation/watchdog/hpwdt.txt
 +F:    drivers/watchdog/hpwdt.c
 +
  HEWLETT-PACKARD SMART ARRAY RAID DRIVER (hpsa)
  M:    Don Brace <don.brace@microsemi.com>
  L:    iss_storagedev@hp.com
@@@ -5490,15 -5406,6 +5490,15 @@@ F:    include/uapi/linux/if_hippi.
  F:    net/802/hippi.c
  F:    drivers/net/hippi/
  
 +HISILICON NETWORK SUBSYSTEM DRIVER
 +M:    Yisen Zhuang <yisen.zhuang@huawei.com>
 +M:    Salil Mehta <salil.mehta@huawei.com>
 +L:    netdev@vger.kernel.org
 +W:    http://www.hisilicon.com
 +S:    Maintained
 +F:    drivers/net/ethernet/hisilicon/
 +F:    Documentation/devicetree/bindings/net/hisilicon*.txt
 +
  HISILICON SAS Controller
  M:    John Garry <john.garry@huawei.com>
  W:    http://www.hisilicon.com
@@@ -5866,9 -5773,7 +5866,9 @@@ R:      Hartmut Knaack <knaack.h@gmx.de
  R:    Lars-Peter Clausen <lars@metafoo.de>
  R:    Peter Meerwald-Stadler <pmeerw@pmeerw.net>
  L:    linux-iio@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jic23/iio.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/iio/
  F:    drivers/iio/
  F:    drivers/staging/iio/
  F:    include/linux/iio/
@@@ -5998,12 -5903,6 +5998,12 @@@ L:    platform-driver-x86@vger.kernel.or
  S:    Maintained
  F:    drivers/platform/x86/intel-hid.c
  
 +INTEL VIRTUAL BUTTON DRIVER
 +M:    AceLan Kao <acelan.kao@canonical.com>
 +L:    platform-driver-x86@vger.kernel.org
 +S:    Maintained
 +F:    drivers/platform/x86/intel-vbtn.c
 +
  INTEL IDLE DRIVER
  M:    Len Brown <lenb@kernel.org>
  L:    linux-pm@vger.kernel.org
@@@ -6106,12 -6005,6 +6106,12 @@@ L:     linux-rdma@vger.kernel.or
  S:     Supported
  F:     drivers/infiniband/hw/i40iw/
  
 +INTEL MERRIFIELD GPIO DRIVER
 +M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +L:    linux-gpio@vger.kernel.org
 +S:    Maintained
 +F:    drivers/gpio/gpio-merrifield.c
 +
  INTEL-MID GPIO DRIVER
  M:    David Cohen <david.a.cohen@linux.intel.com>
  L:    linux-gpio@vger.kernel.org
@@@ -6236,7 -6129,6 +6236,7 @@@ M:      Joerg Roedel <joro@8bytes.org
  L:    iommu@lists.linux-foundation.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/iommu/
  F:    drivers/iommu/
  
  IP MASQUERADING
@@@ -6327,6 -6219,7 +6327,6 @@@ F:      Documentation/devicetree/bindings/in
  F:    drivers/irqchip/
  
  IRQ DOMAINS (IRQ NUMBER MAPPING LIBRARY)
 -M:    Jiang Liu <jiang.liu@linux.intel.com>
  M:    Marc Zyngier <marc.zyngier@arm.com>
  S:    Maintained
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git irq/core
@@@ -6594,7 -6487,6 +6594,7 @@@ F:      include/uapi/linux/sunrpc
  
  KERNEL SELFTEST FRAMEWORK
  M:    Shuah Khan <shuahkh@osg.samsung.com>
 +M:    Shuah Khan <shuah@kernel.org>
  L:    linux-kselftest@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/shuah/linux-kselftest
  S:    Maintained
@@@ -6803,7 -6695,6 +6803,7 @@@ M:      Jacek Anaszewski <j.anaszewski@samsu
  L:    linux-leds@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/leds/
  F:    drivers/leds/
  F:    include/linux/leds.h
  
@@@ -6859,7 -6750,6 +6859,7 @@@ S:      Maintaine
  F:    drivers/ata/
  F:    include/linux/ata.h
  F:    include/linux/libata.h
 +F:    Documentation/devicetree/bindings/ata/
  
  LIBATA PATA ARASAN COMPACT FLASH CONTROLLER
  M:    Viresh Kumar <vireshk@kernel.org>
@@@ -6967,7 -6857,6 +6967,7 @@@ F:      drivers/crypto/nx
  F:    drivers/crypto/vmx/
  F:    drivers/net/ethernet/ibm/ibmveth.*
  F:    drivers/net/ethernet/ibm/ibmvnic.*
 +F:    drivers/pci/hotplug/pnv_php.c
  F:    drivers/pci/hotplug/rpa*
  F:    drivers/scsi/ibmvscsi/
  N:    opal
@@@ -7065,7 -6954,7 +7065,7 @@@ T:      git git://git.kernel.org/pub/scm/lin
  LINUX KERNEL DUMP TEST MODULE (LKDTM)
  M:    Kees Cook <keescook@chromium.org>
  S:    Maintained
 -F:    drivers/misc/lkdtm.c
 +F:    drivers/misc/lkdtm*
  
  LLC (802.2)
  M:    Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
@@@ -7118,23 -7007,15 +7118,23 @@@ Q:   http://patchwork.linuxtv.org/project
  S:    Maintained
  F:    drivers/media/usb/dvb-usb-v2/lmedm04*
  
 -LOCKDEP AND LOCKSTAT
 +LOCKING PRIMITIVES
  M:    Peter Zijlstra <peterz@infradead.org>
  M:    Ingo Molnar <mingo@redhat.com>
  L:    linux-kernel@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core/locking
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git locking/core
  S:    Maintained
 -F:    Documentation/locking/lockdep*.txt
 -F:    Documentation/locking/lockstat.txt
 +F:    Documentation/locking/
  F:    include/linux/lockdep.h
 +F:    include/linux/spinlock*.h
 +F:    arch/*/include/asm/spinlock*.h
 +F:    include/linux/rwlock*.h
 +F:    include/linux/mutex*.h
 +F:    arch/*/include/asm/mutex*.h
 +F:    include/linux/rwsem*.h
 +F:    arch/*/include/asm/rwsem.h
 +F:    include/linux/seqlock.h
 +F:    lib/locking*.[ch]
  F:    kernel/locking/
  
  LOGICAL DISK MANAGER SUPPORT (LDM, Windows 2000/XP/Vista Dynamic Disks)
@@@ -7275,12 -7156,6 +7275,12 @@@ W:    http://www.kernel.org/doc/man-page
  L:    linux-man@vger.kernel.org
  S:    Maintained
  
 +MARVELL 88E6XXX ETHERNET SWITCH FABRIC DRIVER
 +M:    Andrew Lunn <andrew@lunn.ch>
 +M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 +S:    Maintained
 +F:    drivers/net/dsa/mv88e6xxx/
 +
  MARVELL ARMADA DRM SUPPORT
  M:    Russell King <rmk+kernel@armlinux.org.uk>
  S:    Maintained
@@@ -7288,6 -7163,11 +7288,6 @@@ F:     drivers/gpu/drm/armada
  F:    include/uapi/drm/armada_drm.h
  F:    Documentation/devicetree/bindings/display/armada/
  
 -MARVELL 88E6352 DSA support
 -M:    Guenter Roeck <linux@roeck-us.net>
 -S:    Maintained
 -F:    drivers/net/dsa/mv88e6352.c
 -
  MARVELL CRYPTO DRIVER
  M:    Boris Brezillon <boris.brezillon@free-electrons.com>
  M:    Arnaud Ebalard <arno@natisbad.org>
@@@ -7374,13 -7254,6 +7374,13 @@@ F:    Documentation/devicetree/bindings/i2
  F:    drivers/hwmon/max6697.c
  F:    include/linux/platform_data/max6697.h
  
 +MAX9860 MONO AUDIO VOICE CODEC DRIVER
 +M:    Peter Rosin <peda@axentia.se>
 +L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
 +S:    Maintained
 +F:    Documentation/devicetree/bindings/sound/max9860.txt
 +F:    sound/soc/codecs/max9860.*
 +
  MAXIM MUIC CHARGER DRIVERS FOR EXYNOS BASED BOARDS
  M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
  L:    linux-pm@vger.kernel.org
@@@ -7430,16 -7303,6 +7430,16 @@@ L:    linux-iio@vger.kernel.or
  S:    Maintained
  F:    drivers/iio/potentiometer/mcp4531.c
  
 +MEDIA DRIVERS FOR RENESAS - FCP
 +M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
 +L:    linux-media@vger.kernel.org
 +L:    linux-renesas-soc@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    Documentation/devicetree/bindings/media/renesas,fcp.txt
 +F:    drivers/media/platform/rcar-fcp.c
 +F:    include/media/rcar-fcp.h
 +
  MEDIA DRIVERS FOR RENESAS - VSP1
  M:    Laurent Pinchart <laurent.pinchart@ideasonboard.com>
  L:    linux-media@vger.kernel.org
@@@ -7449,18 -7312,8 +7449,18 @@@ S:    Supporte
  F:    Documentation/devicetree/bindings/media/renesas,vsp1.txt
  F:    drivers/media/platform/vsp1/
  
 +MEDIA DRIVERS FOR HELENE
 +M:    Abylay Ospan <aospan@netup.ru>
 +L:    linux-media@vger.kernel.org
 +W:    https://linuxtv.org
 +W:    http://netup.tv/
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Supported
 +F:    drivers/media/dvb-frontends/helene*
 +
  MEDIA DRIVERS FOR ASCOT2E
  M:    Sergey Kozlov <serjk@netup.ru>
 +M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  W:    http://netup.tv/
@@@ -7470,7 -7323,6 +7470,7 @@@ F:      drivers/media/dvb-frontends/ascot2e
  
  MEDIA DRIVERS FOR CXD2841ER
  M:    Sergey Kozlov <serjk@netup.ru>
 +M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  W:    http://netup.tv/
@@@ -7480,7 -7332,6 +7480,7 @@@ F:      drivers/media/dvb-frontends/cxd2841e
  
  MEDIA DRIVERS FOR HORUS3A
  M:    Sergey Kozlov <serjk@netup.ru>
 +M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  W:    http://netup.tv/
@@@ -7490,7 -7341,6 +7490,7 @@@ F:      drivers/media/dvb-frontends/horus3a
  
  MEDIA DRIVERS FOR LNBH25
  M:    Sergey Kozlov <serjk@netup.ru>
 +M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  W:    http://netup.tv/
@@@ -7500,7 -7350,6 +7500,7 @@@ F:      drivers/media/dvb-frontends/lnbh25
  
  MEDIA DRIVERS FOR NETUP PCI UNIVERSAL DVB devices
  M:    Sergey Kozlov <serjk@netup.ru>
 +M:    Abylay Ospan <aospan@netup.ru>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  W:    http://netup.tv/
@@@ -7509,8 -7358,7 +7509,8 @@@ S:      Supporte
  F:    drivers/media/pci/netup_unidvb/*
  
  MEDIA INPUT INFRASTRUCTURE (V4L/DVB)
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  P:    LinuxTV.org Project
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
@@@ -7558,7 -7406,7 +7558,7 @@@ F:      drivers/scsi/megaraid.
  F:    drivers/scsi/megaraid/
  
  MELLANOX ETHERNET DRIVER (mlx4_en)
 -M:    Eugenia Emantayev <eugenia@mellanox.com>
 +M:    Tariq Toukan <tariqt@mellanox.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  W:    http://www.mellanox.com
@@@ -7610,7 -7458,6 +7610,7 @@@ Q:      http://patchwork.ozlabs.org/project/
  T:    git git://git.infradead.org/linux-mtd.git
  T:    git git://git.infradead.org/l2-mtd.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/mtd/
  F:    drivers/mtd/
  F:    include/linux/mtd/
  F:    include/uapi/mtd/
@@@ -7750,8 -7597,10 +7750,8 @@@ L:     linux-media@vger.kernel.or
  W:    https://linuxtv.org
  W:    http://palosaari.fi/linux/
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
 -T:    git git://linuxtv.org/anttip/media_tree.git
  S:    Maintained
 -F:    drivers/staging/media/mn88472/
 -F:    drivers/media/dvb-frontends/mn88472.h
 +F:    drivers/media/dvb-frontends/mn88472*
  
  MN88473 MEDIA DRIVER
  M:    Antti Palosaari <crope@iki.fi>
@@@ -7877,7 -7726,6 +7877,7 @@@ M:      Ulf Hansson <ulf.hansson@linaro.org
  L:    linux-mmc@vger.kernel.org
  T:    git git://git.linaro.org/people/ulf.hansson/mmc.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/mmc/
  F:    drivers/mmc/
  F:    include/linux/mmc/
  F:    include/uapi/linux/mmc/
@@@ -8142,7 -7990,6 +8142,7 @@@ Q:      http://patchwork.ozlabs.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next.git
  S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/net/
  F:    drivers/net/
  F:    include/linux/if_*
  F:    include/linux/netdevice.h
@@@ -8161,7 -8008,6 +8161,7 @@@ Q:      http://patchwork.kernel.org/project/
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers.git
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/net/wireless/
  F:    drivers/net/wireless/
  
  NETXEN (1/10) GbE SUPPORT
@@@ -8307,13 -8153,6 +8307,13 @@@ S:    Supporte
  F:    drivers/nvme/host/
  F:    include/linux/nvme.h
  
 +NVM EXPRESS TARGET DRIVER
 +M:    Christoph Hellwig <hch@lst.de>
 +M:    Sagi Grimberg <sagi@grimberg.me>
 +L:    linux-nvme@lists.infradead.org
 +S:    Supported
 +F:    drivers/nvme/target/
 +
  NVMEM FRAMEWORK
  M:    Srinivas Kandagatla <srinivas.kandagatla@linaro.org>
  M:    Maxime Ripard <maxime.ripard@free-electrons.com>
@@@ -8566,9 -8405,10 +8566,9 @@@ F:     drivers/i2c/busses/i2c-ocores.
  OPEN FIRMWARE AND FLATTENED DEVICE TREE
  M:    Rob Herring <robh+dt@kernel.org>
  M:    Frank Rowand <frowand.list@gmail.com>
 -M:    Grant Likely <grant.likely@linaro.org>
  L:    devicetree@vger.kernel.org
  W:    http://www.devicetree.org/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/glikely/linux.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
  S:    Maintained
  F:    drivers/of/
  F:    include/linux/of*.h
@@@ -8576,10 -8416,12 +8576,10 @@@ F:   scripts/dtc
  
  OPEN FIRMWARE AND FLATTENED DEVICE TREE BINDINGS
  M:    Rob Herring <robh+dt@kernel.org>
 -M:    Pawel Moll <pawel.moll@arm.com>
  M:    Mark Rutland <mark.rutland@arm.com>
 -M:    Ian Campbell <ijc+devicetree@hellion.org.uk>
 -M:    Kumar Gala <galak@codeaurora.org>
  L:    devicetree@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/robh/linux.git
 +Q:    http://patchwork.ozlabs.org/project/devicetree-bindings/list/
  S:    Maintained
  F:    Documentation/devicetree/
  F:    arch/*/boot/dts/
@@@ -9103,8 -8945,6 +9103,8 @@@ M:      Linus Walleij <linus.walleij@linaro.
  L:    linux-gpio@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/linusw/linux-pinctrl.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/pinctrl/
 +F:    Documentation/pinctrl.txt
  F:    drivers/pinctrl/
  F:    include/linux/pinctrl/
  
@@@ -9227,8 -9067,6 +9227,8 @@@ M:      David Woodhouse <dwmw2@infradead.org
  L:    linux-pm@vger.kernel.org
  T:    git git://git.infradead.org/battery-2.6.git
  S:    Maintained
 +F:    Documentation/devicetree/bindings/power/
 +F:    Documentation/devicetree/bindings/power_supply/
  F:    include/linux/power_supply.h
  F:    drivers/power/
  X:    drivers/power/avs/
@@@ -9242,12 -9080,6 +9242,12 @@@ F:    drivers/firmware/psci.
  F:    include/linux/psci.h
  F:    include/uapi/linux/psci.h
  
 +POWERNV OPERATOR PANEL LCD DISPLAY DRIVER
 +M:    Suraj Jitindar Singh <sjitindarsingh@gmail.com>
 +L:    linuxppc-dev@lists.ozlabs.org
 +S:    Maintained
 +F:    drivers/char/powernv-op-panel.c
 +
  PNP SUPPORT
  M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  S:    Maintained
@@@ -9372,13 -9204,6 +9372,13 @@@ F:    include/linux/tracehook.
  F:    include/uapi/linux/ptrace.h
  F:    kernel/ptrace.c
  
 +PULSE8-CEC DRIVER
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/staging/media/pulse8-cec
 +
  PVRUSB2 VIDEO4LINUX DRIVER
  M:    Mike Isely <isely@pobox.com>
  L:    pvrusb2@isely.net       (subscribers-only)
@@@ -9390,10 -9215,10 +9390,10 @@@ F:   Documentation/video4linux/README.pvr
  F:    drivers/media/usb/pvrusb2/
  
  PWC WEBCAM DRIVER
 -M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
 -S:    Maintained
 +S:    Odd Fixes
  F:    drivers/media/usb/pwc/*
  
  PWM FAN DRIVER
@@@ -9466,8 -9291,7 +9466,8 @@@ L:      rtc-linux@googlegroups.co
  S:    Maintained
  
  QAT DRIVER
 -M:    Tadeusz Struk <tadeusz.struk@intel.com>
 +M:    Giovanni Cabiddu <giovanni.cabiddu@intel.com>
 +M:    Salvatore Benedetto <salvatore.benedetto@intel.com>
  L:    qat-linux@intel.com
  S:    Supported
  F:    drivers/crypto/qat/
@@@ -9609,14 -9433,14 +9609,14 @@@ F:   drivers/video/fbdev/aty/radeon
  F:    include/uapi/linux/radeonfb.h
  
  RADIOSHARK RADIO DRIVER
 -M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
  F:    drivers/media/radio/radio-shark.c
  
  RADIOSHARK2 RADIO DRIVER
 -M:    Hans de Goede <hdegoede@redhat.com>
 +M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -9690,7 -9514,7 +9690,7 @@@ M:      Florian Fainelli <florian@openwrt.or
  S:    Maintained
  
  RDC R6040 FAST ETHERNET DRIVER
 -M:    Florian Fainelli <florian@openwrt.org>
 +M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/rdc/r6040.c
@@@ -9757,7 -9581,6 +9757,7 @@@ M:      Mark Brown <broonie@kernel.org
  L:    linux-kernel@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regmap.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/regmap/
  F:    drivers/base/regmap/
  F:    include/linux/regmap.h
  
@@@ -9767,9 -9590,8 +9767,9 @@@ M:      Bjorn Andersson <bjorn.andersson@lin
  L:    linux-remoteproc@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/ohad/remoteproc.git
  S:    Maintained
 -F:    drivers/remoteproc/
 +F:    Documentation/devicetree/bindings/remoteproc/
  F:    Documentation/remoteproc.txt
 +F:    drivers/remoteproc/
  F:    include/linux/remoteproc.h
  
  REMOTE PROCESSOR MESSAGING (RPMSG) SUBSYSTEM
@@@ -9843,6 -9665,7 +9843,6 @@@ F:      Documentation/ABI/*/sysfs-driver-hid
  
  ROCKER DRIVER
  M:    Jiri Pirko <jiri@resnulli.us>
 -M:    Scott Feldman <sfeldma@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/rocker/
@@@ -10029,8 -9852,7 +10029,8 @@@ S:    Odd Fixe
  F:    drivers/media/i2c/saa6588*
  
  SAA7134 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -10054,9 -9876,7 +10054,9 @@@ S:    Maintaine
  F:    drivers/platform/x86/samsung-laptop.c
  
  SAMSUNG AUDIO (ASoC) DRIVERS
 +M:    Krzysztof Kozlowski <k.kozlowski@samsung.com>
  M:    Sangbeom Kim <sbkim73@samsung.com>
 +M:    Sylwester Nawrocki <s.nawrocki@samsung.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  S:    Supported
  F:    sound/soc/samsung/
@@@ -10161,7 -9981,6 +10161,7 @@@ SERIAL DRIVER
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  L:    linux-serial@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/serial/
  F:    drivers/tty/serial/
  
  SYNOPSYS DESIGNWARE DMAC DRIVER
@@@ -10298,7 -10117,6 +10298,7 @@@ M:   "Martin K. Petersen" <martin.peterse
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mkp/scsi.git
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/scsi/
  F:    drivers/scsi/
  F:    include/scsi/
  
@@@ -10370,13 -10188,6 +10370,13 @@@ F: tools/testing/selftests/seccomp/
  K:    \bsecure_computing
  K:    \bTIF_SECCOMP\b
  
 +SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) Broadcom BRCMSTB DRIVER
 +M:    Al Cooper <alcooperx@gmail.com>
 +L:    linux-mmc@vger.kernel.org
 +L:    bcm-kernel-feedback-list@broadcom.com
 +S:    Maintained
 +F:    drivers/mmc/host/sdhci-brcmstb*
 +
  SECURE DIGITAL HOST CONTROLLER INTERFACE (SDHCI) SAMSUNG DRIVER
  M:    Ben Dooks <ben-linux@fluff.org>
  M:    Jaehoon Chung <jh80.chung@samsung.com>
@@@ -10450,9 -10261,10 +10450,9 @@@ W:  http://www.avagotech.co
  S:    Supported
  F:    drivers/scsi/be2iscsi/
  
 -Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER
 +Emulex 10Gbps NIC BE2, BE3-R, Lancer, Skyhawk-R DRIVER (be2net)
  M:    Sathya Perla <sathya.perla@broadcom.com>
  M:    Ajit Khaparde <ajit.khaparde@broadcom.com>
 -M:    Padmanabh Ratnakar <padmanabh.ratnakar@broadcom.com>
  M:    Sriharsha Basavapatna <sriharsha.basavapatna@broadcom.com>
  M:    Somnath Kotur <somnath.kotur@broadcom.com>
  L:    netdev@vger.kernel.org
@@@ -10559,8 -10371,7 +10559,8 @@@ S:   Maintaine
  F:    drivers/media/radio/si4713/radio-usb-si4713.c
  
  SIANO DVB DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -10718,7 -10529,7 +10718,7 @@@ SMACK SECURITY MODUL
  M:    Casey Schaufler <casey@schaufler-ca.com>
  L:    linux-security-module@vger.kernel.org
  W:    http://schaufler-ca.com
 -T:    git git://git.gitorious.org/smack-next/kernel.git
 +T:    git git://github.com/cschaufler/smack-next
  S:    Maintained
  F:    Documentation/security/Smack.txt
  F:    security/smack/
@@@ -10892,7 -10703,6 +10892,7 @@@ T:   git git://git.kernel.org/pub/scm/lin
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://alsa-project.org/main/index.php/ASoC
  S:    Supported
 +F:    Documentation/devicetree/bindings/sound/
  F:    Documentation/sound/alsa/soc/
  F:    sound/soc/
  F:    include/sound/soc*
@@@ -10968,7 -10778,6 +10968,7 @@@ L:   linux-spi@vger.kernel.or
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git
  Q:    http://patchwork.kernel.org/project/spi-devel-general/list/
  S:    Maintained
 +F:    Documentation/devicetree/bindings/spi/
  F:    Documentation/spi/
  F:    drivers/spi/
  F:    include/linux/spi/
@@@ -11031,7 -10840,6 +11031,7 @@@ STAGING - INDUSTRIAL I
  M:    Jonathan Cameron <jic23@kernel.org>
  L:    linux-iio@vger.kernel.org
  S:    Odd Fixes
 +F:    Documentation/devicetree/bindings/staging/iio/
  F:    drivers/staging/iio/
  
  STAGING - LIRC (LINUX INFRARED REMOTE CONTROL) DRIVERS
@@@ -11329,8 -11137,7 +11329,8 @@@ S:   Maintaine
  F:    drivers/media/i2c/tda9840*
  
  TEA5761 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -11338,8 -11145,7 +11338,8 @@@ S:   Odd fixe
  F:    drivers/media/tuners/tea5761.*
  
  TEA5767 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -11486,6 -11292,11 +11486,6 @@@ F:  Documentation/thermal/cpu-cooling-ap
  F:    drivers/thermal/cpu_cooling.c
  F:    include/linux/cpu_cooling.h
  
 -THINGM BLINK(1) USB RGB LED DRIVER
 -M:    Vivien Didelot <vivien.didelot@savoirfairelinux.com>
 -S:    Maintained
 -F:    drivers/hid/hid-thingm.c
 -
  THINKPAD ACPI EXTRAS DRIVER
  M:    Henrique de Moraes Holschuh <ibm-acpi@hmh.eng.br>
  L:    ibm-acpi-devel@lists.sourceforge.net
@@@ -11721,8 -11532,7 +11721,8 @@@ F:   include/linux/shmem_fs.
  F:    mm/shmem.c
  
  TM6000 VIDEO4LINUX DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -11936,12 -11746,6 +11936,12 @@@ S: Supporte
  F:    Documentation/scsi/ufs.txt
  F:    drivers/scsi/ufs/
  
 +UNIVERSAL FLASH STORAGE HOST CONTROLLER DRIVER DWC HOOKS
 +M:    Joao Pinto <Joao.Pinto@synopsys.com>
 +L:    linux-scsi@vger.kernel.org
 +S:    Supported
 +F:    drivers/scsi/ufs/*dwc*
 +
  UNSORTED BLOCK IMAGES (UBI)
  M:    Artem Bityutskiy <dedekind1@gmail.com>
  M:    Richard Weinberger <richard@nod.at>
@@@ -11967,7 -11771,8 +11967,7 @@@ S:   Maintaine
  F:    drivers/net/wireless/ath/ar5523/
  
  USB ATTACHED SCSI
 -M:    Hans de Goede <hdegoede@redhat.com>
 -M:    Gerd Hoffmann <kraxel@redhat.com>
 +M:    Oliver Neukum <oneukum@suse.com>
  L:    linux-usb@vger.kernel.org
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
@@@ -12081,8 -11886,7 +12081,8 @@@ F:   drivers/usb/common/usb-otg-fsm.
  
  USB OVER IP DRIVER
  M:    Valentina Manea <valentina.manea.m@gmail.com>
 -M:    Shuah Khan <shuah.kh@samsung.com>
 +M:    Shuah Khan <shuahkh@osg.samsung.com>
 +M:    Shuah Khan <shuah@kernel.org>
  L:    linux-usb@vger.kernel.org
  S:    Maintained
  F:    Documentation/usb/usbip_protocol.txt
@@@ -12153,7 -11957,6 +12153,7 @@@ L:   linux-usb@vger.kernel.or
  W:    http://www.linux-usb.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/usb.git
  S:    Supported
 +F:    Documentation/devicetree/bindings/usb/
  F:    Documentation/usb/
  F:    drivers/usb/
  F:    include/linux/usb.h
@@@ -12327,7 -12130,6 +12327,7 @@@ VIRTIO CORE, NET AND BLOCK DRIVER
  M:    "Michael S. Tsirkin" <mst@redhat.com>
  L:    virtualization@lists.linux-foundation.org
  S:    Maintained
 +F:    Documentation/devicetree/bindings/virtio/
  F:    drivers/virtio/
  F:    tools/virtio/
  F:    drivers/net/virtio_net.c
@@@ -12466,7 -12268,7 +12466,7 @@@ S:   Maintaine
  F:    drivers/net/vmxnet3/
  
  VMware PVSCSI driver
 -M:    Arvind Kumar <arvindkumar@vmware.com>
 +M:    Jim Gill <jgill@vmware.com>
  M:    VMware PV-Drivers <pv-drivers@vmware.com>
  L:    linux-scsi@vger.kernel.org
  S:    Maintained
@@@ -12716,8 -12518,7 +12716,8 @@@ S:   Maintaine
  F:    arch/x86/entry/vdso/
  
  XC2028/3028 TUNER DRIVER
 -M:    Mauro Carvalho Chehab <mchehab@osg.samsung.com>
 +M:    Mauro Carvalho Chehab <mchehab@s-opensource.com>
 +M:    Mauro Carvalho Chehab <mchehab@kernel.org>
  L:    linux-media@vger.kernel.org
  W:    https://linuxtv.org
  T:    git git://linuxtv.org/media_tree.git
index 1de972d46a87f31abc814991b2517d4bf75a59f1,d530b4f5f1e9853bbaee12583de42c5a29d9ca12..6b6766e3d90aaab8b731fd854360c1adcc3e3aeb
@@@ -16,6 -16,7 +16,7 @@@
  #include <dt-bindings/regulator/maxim,max77802.h>
  #include "exynos5420.dtsi"
  #include "exynos5420-cpus.dtsi"
+ #include "exynos-mfc-reserved-memory.dtsi"
  
  / {
        model = "Google Peach Pit Rev 6+";
        hpd-gpios = <&gpx2 6 GPIO_ACTIVE_HIGH>;
  
        ports {
 -              port0 {
 +              port {
                        dp_out: endpoint {
                                remote-endpoint = <&bridge_in>;
                        };
                use-external-pwm;
  
                ports {
 -                      port0 {
 +                      #address-cells = <1>;
 +                      #size-cells = <0>;
 +
 +                      port@0 {
 +                              reg = <0>;
 +
                                bridge_out: endpoint {
                                        remote-endpoint = <&panel_in>;
                                };
                        };
  
 -                      port1 {
 +                      port@1 {
 +                              reg = <1>;
 +
                                bridge_in: endpoint {
                                        remote-endpoint = <&dp_out>;
                                };
  };
  
  &mfc {
-       samsung,mfc-r = <0x43000000 0x800000>;
-       samsung,mfc-l = <0x51000000 0x800000>;
+       memory-region = <&mfc_left>, <&mfc_right>;
  };
  
  &mmc_0 {
index ecf139f31c4c7995e5bef7d46bd48ab6d6acf283,58b334f5f1d6d44f1bb0be455201c2310131b43a..8f820de890b43559e55e475a9b51f8975f32e346
@@@ -12,13 -12,14 +12,14 @@@ menuconfig ARCH_EXYNO
        depends on ARCH_MULTI_V7
        select ARCH_HAS_BANDGAP
        select ARCH_HAS_HOLES_MEMORYMODEL
 -      select ARCH_REQUIRE_GPIOLIB
        select ARM_AMBA
        select ARM_GIC
        select COMMON_CLK_SAMSUNG
        select EXYNOS_THERMAL
        select EXYNOS_PMU
        select EXYNOS_SROM
+       select EXYNOS_PM_DOMAINS if PM_GENERIC_DOMAINS
 +      select GPIOLIB
        select HAVE_ARM_SCU if SMP
        select HAVE_S3C2410_I2C if I2C
        select HAVE_S3C2410_WATCHDOG if WATCHDOG
@@@ -61,6 -62,7 +62,6 @@@ config ARCH_EXYNOS
        select CLKSRC_SAMSUNG_PWM if CPU_EXYNOS4210
        select CPU_EXYNOS4210
        select GIC_NON_BANKED
 -      select KEYBOARD_SAMSUNG if INPUT_KEYBOARD
        select MIGHT_HAVE_CACHE_L2X0
        help
          Samsung EXYNOS4 (Cortex-A9) SoC based systems
index ecbfa5dd3c543ad8ab7b34823e830c3387ab1e6b,a8620c6eb723aa2e89f7a1b5d77a01c3de85b4d6..acabf0bffc5dbf2bc7bd2effa800c3002cc9d2c7
@@@ -14,6 -14,7 +14,6 @@@
  #include <linux/of.h>
  #include <linux/of_address.h>
  #include <linux/of_fdt.h>
 -#include <linux/of_platform.h>
  #include <linux/platform_device.h>
  #include <linux/irqchip.h>
  #include <linux/soc/samsung/exynos-regs-pmu.h>
  #include <asm/mach/map.h>
  
  #include <mach/map.h>
 +#include <plat/cpu.h>
  
  #include "common.h"
- #include "mfc.h"
  
  static struct map_desc exynos4_iodesc[] __initdata = {
        {
@@@ -217,6 -216,8 +216,6 @@@ static void __init exynos_dt_machine_in
            of_machine_is_compatible("samsung,exynos3250") ||
            of_machine_is_compatible("samsung,exynos5250"))
                platform_device_register(&exynos_cpuidle);
 -
 -      of_platform_populate(NULL, of_default_bus_match_table, NULL, NULL);
  }
  
  static char const *const exynos_dt_compat[] __initconst = {
        NULL
  };
  
- static void __init exynos_reserve(void)
- {
- #ifdef CONFIG_S5P_DEV_MFC
-       int i;
-       char *mfc_mem[] = {
-               "samsung,mfc-v5",
-               "samsung,mfc-v6",
-               "samsung,mfc-v7",
-               "samsung,mfc-v8",
-       };
-       for (i = 0; i < ARRAY_SIZE(mfc_mem); i++)
-               if (of_scan_flat_dt(s5p_fdt_alloc_mfc_mem, mfc_mem[i]))
-                       break;
- #endif
- }
  static void __init exynos_dt_fixup(void)
  {
        /*
@@@ -273,6 -257,5 +255,5 @@@ DT_MACHINE_START(EXYNOS_DT, "SAMSUNG EX
        .init_machine   = exynos_dt_machine_init,
        .init_late      = exynos_init_late,
        .dt_compat      = exynos_dt_compat,
-       .reserve        = exynos_reserve,
        .dt_fixup       = exynos_dt_fixup,
  MACHINE_END
index ab2b2b2b90e58acef0e2ac6cc29178e1a701ee3b,7cc672b33e0c26822f1140a4d07ab9e938c66d94..05e20aaf68dd0461b23acfcf1c6aef78adb5a8c7
@@@ -26,7 -26,6 +26,7 @@@
  #include <linux/platform_data/wkup_m3.h>
  #include <linux/platform_data/pwm_omap_dmtimer.h>
  #include <linux/platform_data/media/ir-rx51.h>
 +#include <linux/platform_data/asoc-ti-mcbsp.h>
  #include <plat/dmtimer.h>
  
  #include "common.h"
@@@ -274,8 -273,6 +274,6 @@@ static struct platform_device omap3_rom
        },
  };
  
- static struct platform_device rx51_lirc_device;
  static void __init nokia_n900_legacy_init(void)
  {
        hsmmc2_internal_input_clk();
  
                pr_info("RX-51: Registering OMAP3 HWRNG device\n");
                platform_device_register(&omap3_rom_rng_device);
        }
-       platform_device_register(&rx51_lirc_device);
  }
  
  static void __init omap3_tao3530_legacy_init(void)
@@@ -492,10 -486,6 +487,6 @@@ static struct pwm_omap_dmtimer_pdata pw
  
  static struct lirc_rx51_platform_data __maybe_unused rx51_lirc_data = {
        .set_max_mpu_wakeup_lat = omap_pm_set_max_mpu_wakeup_lat,
-       .pwm_timer = 9, /* Use GPT 9 for CIR */
- #if IS_ENABLED(CONFIG_OMAP_DM_TIMER)
-       .dmtimer = &pwm_dmtimer_pdata,
- #endif
  };
  
  static struct platform_device __maybe_unused rx51_lirc_device = {
        },
  };
  
 +#if IS_ENABLED(CONFIG_SND_OMAP_SOC_MCBSP)
 +static struct omap_mcbsp_platform_data mcbsp_pdata;
 +static void __init omap3_mcbsp_init(void)
 +{
 +      omap3_mcbsp_init_pdata_callback(&mcbsp_pdata);
 +}
 +#else
 +static void __init omap3_mcbsp_init(void) {}
 +#endif
 +
  /*
   * Few boards still need auxdata populated before we populate
   * the dev entries in of_platform_populate().
@@@ -543,15 -523,11 +534,16 @@@ static struct of_dev_auxdata omap_auxda
                       &omap3_iommu_pdata),
        OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x4809c000, "4809c000.mmc", &mmc_pdata[0]),
        OF_DEV_AUXDATA("ti,omap3-hsmmc", 0x480b4000, "480b4000.mmc", &mmc_pdata[1]),
+       OF_DEV_AUXDATA("nokia,n900-ir", 0, "n900-ir", &rx51_lirc_data),
        /* Only on am3517 */
        OF_DEV_AUXDATA("ti,davinci_mdio", 0x5c030000, "davinci_mdio.0", NULL),
        OF_DEV_AUXDATA("ti,am3517-emac", 0x5c000000, "davinci_emac.0",
                       &am35xx_emac_pdata),
 +      /* McBSP modules with sidetone core */
 +#if IS_ENABLED(CONFIG_SND_OMAP_SOC_MCBSP)
 +      OF_DEV_AUXDATA("ti,omap3-mcbsp", 0x49022000, "49022000.mcbsp", &mcbsp_pdata),
 +      OF_DEV_AUXDATA("ti,omap3-mcbsp", 0x49024000, "49024000.mcbsp", &mcbsp_pdata),
 +#endif
  #endif
  #ifdef CONFIG_SOC_AM33XX
        OF_DEV_AUXDATA("ti,am3352-wkup-m3", 0x44d00000, "44d00000.wkup_m3",
@@@ -624,8 -600,6 +616,8 @@@ void __init pdata_quirks_init(const str
            of_machine_is_compatible("ti,omap3"))
                omap_sdrc_init(NULL, NULL);
  
 +      if (of_machine_is_compatible("ti,omap3"))
 +              omap3_mcbsp_init();
        pdata_quirks_check(auxdata_quirks);
        of_platform_populate(NULL, omap_dt_match_table,
                             omap_auxdata_lookup, NULL);
index 84aed78261e46e6cf6427298fdc78a16790bf8d1,7c65f9e1d347912d225602e520c8d7cb4266d298..24db6d605549cec0a4f0e611be0de44161b98b84
@@@ -104,7 -104,7 +104,7 @@@ void __init clps711x_clksrc_init(void _
  }
  
  #ifdef CONFIG_CLKSRC_OF
 -static void __init clps711x_timer_init(struct device_node *np)
 +static int __init clps711x_timer_init(struct device_node *np)
  {
        unsigned int irq = irq_of_parse_and_map(np, 0);
        struct clk *clock = of_clk_get(np, 0);
  
        switch (of_alias_get_id(np, "timer")) {
        case CLPS711X_CLKSRC_CLOCKSOURCE:
 -              BUG_ON(_clps711x_clksrc_init(clock, base));
 -              break;
 +              return _clps711x_clksrc_init(clock, base);
        case CLPS711X_CLKSRC_CLOCKEVENT:
 -              BUG_ON(_clps711x_clkevt_init(clock, base, irq));
 -              break;
 +              return _clps711x_clkevt_init(clock, base, irq);
        default:
 -              break;
 +              return -EINVAL;
        }
  }
- CLOCKSOURCE_OF_DECLARE(clps711x, "cirrus,clps711x-timer", clps711x_timer_init);
+ CLOCKSOURCE_OF_DECLARE(clps711x, "cirrus,ep7209-timer", clps711x_timer_init);
  #endif
index 9e07588ea9f5800a246be7cfe9b4cc912480305f,392b29a0eb1785330ea3ad5fd3c17b9b01436c18..f82074eea779ca40684cf98e8ab29a33b05f13b9
@@@ -220,7 -220,7 +220,7 @@@ static void s5pv210_set_refresh(enum s5
  
        tmp1 /= tmp;
  
-       __raw_writel(tmp1, reg);
+       writel_relaxed(tmp1, reg);
  }
  
  static int s5pv210_target(struct cpufreq_policy *policy, unsigned int index)
        new_freq = s5pv210_freq_table[index].frequency;
  
        /* Finding current running level index */
 -      if (cpufreq_frequency_table_target(policy, s5pv210_freq_table,
 -                                         old_freq, CPUFREQ_RELATION_H,
 -                                         &priv_index)) {
 -              ret = -EINVAL;
 -              goto exit;
 -      }
 +      priv_index = cpufreq_table_find_index_h(policy, old_freq);
  
        arm_volt = dvs_conf[index].arm_volt;
        int_volt = dvs_conf[index].int_volt;
                 * 1. Temporary Change divider for MFC and G3D
                 * SCLKA2M(200/1=200)->(200/4=50)Mhz
                 */
-               reg = __raw_readl(S5P_CLK_DIV2);
+               reg = readl_relaxed(S5P_CLK_DIV2);
                reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK);
                reg |= (3 << S5P_CLKDIV2_G3D_SHIFT) |
                        (3 << S5P_CLKDIV2_MFC_SHIFT);
-               __raw_writel(reg, S5P_CLK_DIV2);
+               writel_relaxed(reg, S5P_CLK_DIV2);
  
                /* For MFC, G3D dividing */
                do {
-                       reg = __raw_readl(S5P_CLKDIV_STAT0);
+                       reg = readl_relaxed(S5P_CLKDIV_STAT0);
                } while (reg & ((1 << 16) | (1 << 17)));
  
                /*
                 * 2. Change SCLKA2M(200Mhz)to SCLKMPLL in MFC_MUX, G3D MUX
                 * (200/4=50)->(667/4=166)Mhz
                 */
-               reg = __raw_readl(S5P_CLK_SRC2);
+               reg = readl_relaxed(S5P_CLK_SRC2);
                reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK);
                reg |= (1 << S5P_CLKSRC2_G3D_SHIFT) |
                        (1 << S5P_CLKSRC2_MFC_SHIFT);
-               __raw_writel(reg, S5P_CLK_SRC2);
+               writel_relaxed(reg, S5P_CLK_SRC2);
  
                do {
-                       reg = __raw_readl(S5P_CLKMUX_STAT1);
+                       reg = readl_relaxed(S5P_CLKMUX_STAT1);
                } while (reg & ((1 << 7) | (1 << 3)));
  
                /*
                        s5pv210_set_refresh(DMC1, 133000);
  
                /* 4. SCLKAPLL -> SCLKMPLL */
-               reg = __raw_readl(S5P_CLK_SRC0);
+               reg = readl_relaxed(S5P_CLK_SRC0);
                reg &= ~(S5P_CLKSRC0_MUX200_MASK);
                reg |= (0x1 << S5P_CLKSRC0_MUX200_SHIFT);
-               __raw_writel(reg, S5P_CLK_SRC0);
+               writel_relaxed(reg, S5P_CLK_SRC0);
  
                do {
-                       reg = __raw_readl(S5P_CLKMUX_STAT0);
+                       reg = readl_relaxed(S5P_CLKMUX_STAT0);
                } while (reg & (0x1 << 18));
  
        }
  
        /* Change divider */
-       reg = __raw_readl(S5P_CLK_DIV0);
+       reg = readl_relaxed(S5P_CLK_DIV0);
  
        reg &= ~(S5P_CLKDIV0_APLL_MASK | S5P_CLKDIV0_A2M_MASK |
                S5P_CLKDIV0_HCLK200_MASK | S5P_CLKDIV0_PCLK100_MASK |
                (clkdiv_val[index][6] << S5P_CLKDIV0_HCLK133_SHIFT) |
                (clkdiv_val[index][7] << S5P_CLKDIV0_PCLK66_SHIFT));
  
-       __raw_writel(reg, S5P_CLK_DIV0);
+       writel_relaxed(reg, S5P_CLK_DIV0);
  
        do {
-               reg = __raw_readl(S5P_CLKDIV_STAT0);
+               reg = readl_relaxed(S5P_CLKDIV_STAT0);
        } while (reg & 0xff);
  
        /* ARM MCS value changed */
-       reg = __raw_readl(S5P_ARM_MCS_CON);
+       reg = readl_relaxed(S5P_ARM_MCS_CON);
        reg &= ~0x3;
        if (index >= L3)
                reg |= 0x3;
        else
                reg |= 0x1;
  
-       __raw_writel(reg, S5P_ARM_MCS_CON);
+       writel_relaxed(reg, S5P_ARM_MCS_CON);
  
        if (pll_changing) {
                /* 5. Set Lock time = 30us*24Mhz = 0x2cf */
-               __raw_writel(0x2cf, S5P_APLL_LOCK);
+               writel_relaxed(0x2cf, S5P_APLL_LOCK);
  
                /*
                 * 6. Turn on APLL
                 * 6-2. Wait untile the PLL is locked
                 */
                if (index == L0)
-                       __raw_writel(APLL_VAL_1000, S5P_APLL_CON);
+                       writel_relaxed(APLL_VAL_1000, S5P_APLL_CON);
                else
-                       __raw_writel(APLL_VAL_800, S5P_APLL_CON);
+                       writel_relaxed(APLL_VAL_800, S5P_APLL_CON);
  
                do {
-                       reg = __raw_readl(S5P_APLL_CON);
+                       reg = readl_relaxed(S5P_APLL_CON);
                } while (!(reg & (0x1 << 29)));
  
                /*
                 * to SCLKA2M(200Mhz) in MFC_MUX and G3D MUX
                 * (667/4=166)->(200/4=50)Mhz
                 */
-               reg = __raw_readl(S5P_CLK_SRC2);
+               reg = readl_relaxed(S5P_CLK_SRC2);
                reg &= ~(S5P_CLKSRC2_G3D_MASK | S5P_CLKSRC2_MFC_MASK);
                reg |= (0 << S5P_CLKSRC2_G3D_SHIFT) |
                        (0 << S5P_CLKSRC2_MFC_SHIFT);
-               __raw_writel(reg, S5P_CLK_SRC2);
+               writel_relaxed(reg, S5P_CLK_SRC2);
  
                do {
-                       reg = __raw_readl(S5P_CLKMUX_STAT1);
+                       reg = readl_relaxed(S5P_CLKMUX_STAT1);
                } while (reg & ((1 << 7) | (1 << 3)));
  
                /*
                 * 8. Change divider for MFC and G3D
                 * (200/4=50)->(200/1=200)Mhz
                 */
-               reg = __raw_readl(S5P_CLK_DIV2);
+               reg = readl_relaxed(S5P_CLK_DIV2);
                reg &= ~(S5P_CLKDIV2_G3D_MASK | S5P_CLKDIV2_MFC_MASK);
                reg |= (clkdiv_val[index][10] << S5P_CLKDIV2_G3D_SHIFT) |
                        (clkdiv_val[index][9] << S5P_CLKDIV2_MFC_SHIFT);
-               __raw_writel(reg, S5P_CLK_DIV2);
+               writel_relaxed(reg, S5P_CLK_DIV2);
  
                /* For MFC, G3D dividing */
                do {
-                       reg = __raw_readl(S5P_CLKDIV_STAT0);
+                       reg = readl_relaxed(S5P_CLKDIV_STAT0);
                } while (reg & ((1 << 16) | (1 << 17)));
  
                /* 9. Change MPLL to APLL in MSYS_MUX */
-               reg = __raw_readl(S5P_CLK_SRC0);
+               reg = readl_relaxed(S5P_CLK_SRC0);
                reg &= ~(S5P_CLKSRC0_MUX200_MASK);
                reg |= (0x0 << S5P_CLKSRC0_MUX200_SHIFT);
-               __raw_writel(reg, S5P_CLK_SRC0);
+               writel_relaxed(reg, S5P_CLK_SRC0);
  
                do {
-                       reg = __raw_readl(S5P_CLKMUX_STAT0);
+                       reg = readl_relaxed(S5P_CLKMUX_STAT0);
                } while (reg & (0x1 << 18));
  
                /*
         * and memory refresh parameter should be changed
         */
        if (bus_speed_changing) {
-               reg = __raw_readl(S5P_CLK_DIV6);
+               reg = readl_relaxed(S5P_CLK_DIV6);
                reg &= ~S5P_CLKDIV6_ONEDRAM_MASK;
                reg |= (clkdiv_val[index][8] << S5P_CLKDIV6_ONEDRAM_SHIFT);
-               __raw_writel(reg, S5P_CLK_DIV6);
+               writel_relaxed(reg, S5P_CLK_DIV6);
  
                do {
-                       reg = __raw_readl(S5P_CLKDIV_STAT1);
+                       reg = readl_relaxed(S5P_CLKDIV_STAT1);
                } while (reg & (1 << 15));
  
                /* Reconfigure DRAM refresh counter value */
@@@ -492,7 -497,7 +492,7 @@@ static int check_mem_type(void __iomem 
  {
        unsigned long val;
  
-       val = __raw_readl(dmc_reg + 0x4);
+       val = readl_relaxed(dmc_reg + 0x4);
        val = (val & (0xf << 8));
  
        return val >> 8;
@@@ -537,10 -542,10 +537,10 @@@ static int s5pv210_cpu_init(struct cpuf
        }
  
        /* Find current refresh counter and frequency each DMC */
-       s5pv210_dram_conf[0].refresh = (__raw_readl(dmc_base[0] + 0x30) * 1000);
+       s5pv210_dram_conf[0].refresh = (readl_relaxed(dmc_base[0] + 0x30) * 1000);
        s5pv210_dram_conf[0].freq = clk_get_rate(dmc0_clk);
  
-       s5pv210_dram_conf[1].refresh = (__raw_readl(dmc_base[1] + 0x30) * 1000);
+       s5pv210_dram_conf[1].refresh = (readl_relaxed(dmc_base[1] + 0x30) * 1000);
        s5pv210_dram_conf[1].freq = clk_get_rate(dmc1_clk);
  
        policy->suspend_freq = SLEEP_FREQ;
index 4721b591994fb88a71a6c994623d774d65d583ff,21829880478fd9fa2fe9f5b2d5c99efc4de7a4f7..869c83fb3c5d90a751d2e1b1d7c03c6e35fa2517
@@@ -20,7 -20,6 +20,6 @@@
  #include <linux/ioport.h>
  #include <linux/spinlock.h>
  #include <linux/io.h>
- #include <linux/module.h>
  #include <linux/gpio/driver.h>
  #include <linux/interrupt.h>
  #include <linux/irqdomain.h>
@@@ -398,7 -397,7 +397,7 @@@ static void gpmc_cs_bool_timings(int cs
        gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG4,
                           GPMC_CONFIG4_OEEXTRADELAY, p->oe_extra_delay);
        gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG4,
 -                         GPMC_CONFIG4_OEEXTRADELAY, p->we_extra_delay);
 +                         GPMC_CONFIG4_WEEXTRADELAY, p->we_extra_delay);
        gpmc_cs_modify_reg(cs, GPMC_CS_CONFIG6,
                           GPMC_CONFIG6_CYCLE2CYCLESAMECSEN,
                           p->cycle2cyclesamecsen);
@@@ -1807,7 -1806,6 +1806,6 @@@ static const struct of_device_id gpmc_d
        { .compatible = "ti,am3352-gpmc" },     /* am335x devices */
        { }
  };
- MODULE_DEVICE_TABLE(of, gpmc_dt_ids);
  
  /**
   * gpmc_read_settings_dt - read gpmc settings from device-tree
@@@ -2134,7 -2132,8 +2132,7 @@@ no_timings
        /* is child a common bus? */
        if (of_match_node(of_default_bus_match_table, child))
                /* create children and other common bus children */
 -              if (of_platform_populate(child, of_default_bus_match_table,
 -                                       NULL, &pdev->dev))
 +              if (of_platform_default_populate(child, NULL, &pdev->dev))
                        goto err_child_fail;
  
        return 0;
@@@ -2154,68 -2153,6 +2152,6 @@@ err
        return ret;
  }
  
- static int gpmc_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
- {
-       return 1;       /* we're input only */
- }
- static int gpmc_gpio_direction_input(struct gpio_chip *chip,
-                                    unsigned int offset)
- {
-       return 0;       /* we're input only */
- }
- static int gpmc_gpio_direction_output(struct gpio_chip *chip,
-                                     unsigned int offset, int value)
- {
-       return -EINVAL; /* we're input only */
- }
- static void gpmc_gpio_set(struct gpio_chip *chip, unsigned int offset,
-                         int value)
- {
- }
- static int gpmc_gpio_get(struct gpio_chip *chip, unsigned int offset)
- {
-       u32 reg;
-       offset += 8;
-       reg = gpmc_read_reg(GPMC_STATUS) & BIT(offset);
-       return !!reg;
- }
- static int gpmc_gpio_init(struct gpmc_device *gpmc)
- {
-       int ret;
-       gpmc->gpio_chip.parent = gpmc->dev;
-       gpmc->gpio_chip.owner = THIS_MODULE;
-       gpmc->gpio_chip.label = DEVICE_NAME;
-       gpmc->gpio_chip.ngpio = gpmc_nr_waitpins;
-       gpmc->gpio_chip.get_direction = gpmc_gpio_get_direction;
-       gpmc->gpio_chip.direction_input = gpmc_gpio_direction_input;
-       gpmc->gpio_chip.direction_output = gpmc_gpio_direction_output;
-       gpmc->gpio_chip.set = gpmc_gpio_set;
-       gpmc->gpio_chip.get = gpmc_gpio_get;
-       gpmc->gpio_chip.base = -1;
-       ret = gpiochip_add(&gpmc->gpio_chip);
-       if (ret < 0) {
-               dev_err(gpmc->dev, "could not register gpio chip: %d\n", ret);
-               return ret;
-       }
-       return 0;
- }
- static void gpmc_gpio_exit(struct gpmc_device *gpmc)
- {
-       gpiochip_remove(&gpmc->gpio_chip);
- }
  static int gpmc_probe_dt(struct platform_device *pdev)
  {
        int ret;
@@@ -2280,7 -2217,69 +2216,69 @@@ static int gpmc_probe_dt_children(struc
  {
        return 0;
  }
- #endif
+ #endif /* CONFIG_OF */
+ static int gpmc_gpio_get_direction(struct gpio_chip *chip, unsigned int offset)
+ {
+       return 1;       /* we're input only */
+ }
+ static int gpmc_gpio_direction_input(struct gpio_chip *chip,
+                                    unsigned int offset)
+ {
+       return 0;       /* we're input only */
+ }
+ static int gpmc_gpio_direction_output(struct gpio_chip *chip,
+                                     unsigned int offset, int value)
+ {
+       return -EINVAL; /* we're input only */
+ }
+ static void gpmc_gpio_set(struct gpio_chip *chip, unsigned int offset,
+                         int value)
+ {
+ }
+ static int gpmc_gpio_get(struct gpio_chip *chip, unsigned int offset)
+ {
+       u32 reg;
+       offset += 8;
+       reg = gpmc_read_reg(GPMC_STATUS) & BIT(offset);
+       return !!reg;
+ }
+ static int gpmc_gpio_init(struct gpmc_device *gpmc)
+ {
+       int ret;
+       gpmc->gpio_chip.parent = gpmc->dev;
+       gpmc->gpio_chip.owner = THIS_MODULE;
+       gpmc->gpio_chip.label = DEVICE_NAME;
+       gpmc->gpio_chip.ngpio = gpmc_nr_waitpins;
+       gpmc->gpio_chip.get_direction = gpmc_gpio_get_direction;
+       gpmc->gpio_chip.direction_input = gpmc_gpio_direction_input;
+       gpmc->gpio_chip.direction_output = gpmc_gpio_direction_output;
+       gpmc->gpio_chip.set = gpmc_gpio_set;
+       gpmc->gpio_chip.get = gpmc_gpio_get;
+       gpmc->gpio_chip.base = -1;
+       ret = gpiochip_add(&gpmc->gpio_chip);
+       if (ret < 0) {
+               dev_err(gpmc->dev, "could not register gpio chip: %d\n", ret);
+               return ret;
+       }
+       return 0;
+ }
+ static void gpmc_gpio_exit(struct gpmc_device *gpmc)
+ {
+       gpiochip_remove(&gpmc->gpio_chip);
+ }
  
  static int gpmc_probe(struct platform_device *pdev)
  {
@@@ -2436,15 -2435,7 +2434,7 @@@ static __init int gpmc_init(void
  {
        return platform_driver_register(&gpmc_driver);
  }
- static __exit void gpmc_exit(void)
- {
-       platform_driver_unregister(&gpmc_driver);
- }
  postcore_initcall(gpmc_init);
- module_exit(gpmc_exit);
  
  static struct omap3_gpmc_regs gpmc_context;
  
index 7053abced0bced0d35d8a894babd00bb68b238d6,f38ac90f1aa580e81247f59486d113d359dea05b..3bfac539334b5c75ed78f5c3541ffe476e962f1b
@@@ -46,6 -46,16 +46,16 @@@ config POWER_RESET_AXXI
  
          Say Y if you have an Axxia family SoC.
  
+ config POWER_RESET_BRCMKONA
+       bool "Broadcom Kona reset driver"
+       depends on ARM || COMPILE_TEST
+       default ARCH_BCM_MOBILE
+       help
+         This driver provides restart support for Broadcom Kona chips.
+         Say Y here if you have a Broadcom Kona-based board and you wish
+         to have restart support.
  config POWER_RESET_BRCMSTB
        bool "Broadcom STB reset driver"
        depends on ARM || MIPS || COMPILE_TEST
@@@ -148,8 -158,7 +158,8 @@@ config POWER_RESET_XGEN
  
  config POWER_RESET_KEYSTONE
        bool "Keystone reset driver"
 -      depends on ARCH_KEYSTONE
 +      depends on ARCH_KEYSTONE || COMPILE_TEST
 +      depends on HAS_IOMEM
        select MFD_SYSCON
        help
          Reboot support for the KEYSTONE SoCs.
@@@ -184,19 -193,5 +194,19 @@@ config POWER_RESET_Z
        help
          Reboot support for ZTE SoCs.
  
 +config REBOOT_MODE
 +      tristate
 +
 +config SYSCON_REBOOT_MODE
 +      tristate "Generic SYSCON regmap reboot mode driver"
 +      depends on OF
 +      select REBOOT_MODE
 +      select MFD_SYSCON
 +      help
 +        Say y here will enable reboot mode driver. This will
 +        get reboot mode arguments and store it in SYSCON mapped
 +        register, then the bootloader can read it to take different
 +        action according to the mode.
 +
  endif
  
index d6b2560d5c4ae8c86d237faf9d6d58fb1018ef18,6b6eeb3b4d7ff561e372d36dd6aea9222ea55bb9..1be307c7fc25ebf6b5aaca25d15c15f7763c80e1
@@@ -3,6 -3,7 +3,7 @@@ obj-$(CONFIG_POWER_RESET_AT91_POWEROFF
  obj-$(CONFIG_POWER_RESET_AT91_RESET) += at91-reset.o
  obj-$(CONFIG_POWER_RESET_AT91_SAMA5D2_SHDWC) += at91-sama5d2_shdwc.o
  obj-$(CONFIG_POWER_RESET_AXXIA) += axxia-reset.o
+ obj-$(CONFIG_POWER_RESET_BRCMKONA) += brcm-kona-reset.o
  obj-$(CONFIG_POWER_RESET_BRCMSTB) += brcmstb-reboot.o
  obj-$(CONFIG_POWER_RESET_GPIO) += gpio-poweroff.o
  obj-$(CONFIG_POWER_RESET_GPIO_RESTART) += gpio-restart.o
@@@ -21,5 -22,3 +22,5 @@@ obj-$(CONFIG_POWER_RESET_SYSCON) += sys
  obj-$(CONFIG_POWER_RESET_SYSCON_POWEROFF) += syscon-poweroff.o
  obj-$(CONFIG_POWER_RESET_RMOBILE) += rmobile-reset.o
  obj-$(CONFIG_POWER_RESET_ZX) += zx-reboot.o
 +obj-$(CONFIG_REBOOT_MODE) += reboot-mode.o
 +obj-$(CONFIG_SYSCON_REBOOT_MODE) += syscon-reboot-mode.o
index 0000000000000000000000000000000000000000,f60515eefb660378e02d01e2f304785acccdbf94..4822346aadc6c8766e3d9cee67b57afea74f76d0
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,245 +1,245 @@@
 -      __raw_writel(pwr, base);
+ /*
+  * Exynos Generic power domain support.
+  *
+  * Copyright (c) 2012 Samsung Electronics Co., Ltd.
+  *            http://www.samsung.com
+  *
+  * Implementation of Exynos specific power domain control which is used in
+  * conjunction with runtime-pm. Support for both device-tree and non-device-tree
+  * based power domain support is included.
+  *
+  * This program is free software; you can redistribute it and/or modify
+  * it under the terms of the GNU General Public License version 2 as
+  * published by the Free Software Foundation.
+ */
+ #include <linux/io.h>
+ #include <linux/err.h>
+ #include <linux/slab.h>
+ #include <linux/pm_domain.h>
+ #include <linux/clk.h>
+ #include <linux/delay.h>
+ #include <linux/of_address.h>
+ #include <linux/of_platform.h>
+ #include <linux/sched.h>
+ #define MAX_CLK_PER_DOMAIN    4
+ struct exynos_pm_domain_config {
+       /* Value for LOCAL_PWR_CFG and STATUS fields for each domain */
+       u32 local_pwr_cfg;
+ };
+ /*
+  * Exynos specific wrapper around the generic power domain
+  */
+ struct exynos_pm_domain {
+       void __iomem *base;
+       char const *name;
+       bool is_off;
+       struct generic_pm_domain pd;
+       struct clk *oscclk;
+       struct clk *clk[MAX_CLK_PER_DOMAIN];
+       struct clk *pclk[MAX_CLK_PER_DOMAIN];
+       struct clk *asb_clk[MAX_CLK_PER_DOMAIN];
+       u32 local_pwr_cfg;
+ };
+ static int exynos_pd_power(struct generic_pm_domain *domain, bool power_on)
+ {
+       struct exynos_pm_domain *pd;
+       void __iomem *base;
+       u32 timeout, pwr;
+       char *op;
+       int i;
+       pd = container_of(domain, struct exynos_pm_domain, pd);
+       base = pd->base;
+       for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+               if (IS_ERR(pd->asb_clk[i]))
+                       break;
+               clk_prepare_enable(pd->asb_clk[i]);
+       }
+       /* Set oscclk before powering off a domain*/
+       if (!power_on) {
+               for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+                       if (IS_ERR(pd->clk[i]))
+                               break;
+                       pd->pclk[i] = clk_get_parent(pd->clk[i]);
+                       if (clk_set_parent(pd->clk[i], pd->oscclk))
+                               pr_err("%s: error setting oscclk as parent to clock %d\n",
+                                               pd->name, i);
+               }
+       }
+       pwr = power_on ? pd->local_pwr_cfg : 0;
 -      while ((__raw_readl(base + 0x4) & pd->local_pwr_cfg) != pwr) {
++      writel_relaxed(pwr, base);
+       /* Wait max 1ms */
+       timeout = 10;
 -              on = __raw_readl(pd->base + 0x4) & pd->local_pwr_cfg;
++      while ((readl_relaxed(base + 0x4) & pd->local_pwr_cfg) != pwr) {
+               if (!timeout) {
+                       op = (power_on) ? "enable" : "disable";
+                       pr_err("Power domain %s %s failed\n", domain->name, op);
+                       return -ETIMEDOUT;
+               }
+               timeout--;
+               cpu_relax();
+               usleep_range(80, 100);
+       }
+       /* Restore clocks after powering on a domain*/
+       if (power_on) {
+               for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+                       if (IS_ERR(pd->clk[i]))
+                               break;
+                       if (IS_ERR(pd->pclk[i]))
+                               continue; /* Skip on first power up */
+                       if (clk_set_parent(pd->clk[i], pd->pclk[i]))
+                               pr_err("%s: error setting parent to clock%d\n",
+                                               pd->name, i);
+               }
+       }
+       for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+               if (IS_ERR(pd->asb_clk[i]))
+                       break;
+               clk_disable_unprepare(pd->asb_clk[i]);
+       }
+       return 0;
+ }
+ static int exynos_pd_power_on(struct generic_pm_domain *domain)
+ {
+       return exynos_pd_power(domain, true);
+ }
+ static int exynos_pd_power_off(struct generic_pm_domain *domain)
+ {
+       return exynos_pd_power(domain, false);
+ }
+ static const struct exynos_pm_domain_config exynos4210_cfg __initconst = {
+       .local_pwr_cfg          = 0x7,
+ };
+ static const struct of_device_id exynos_pm_domain_of_match[] __initconst = {
+       {
+               .compatible = "samsung,exynos4210-pd",
+               .data = &exynos4210_cfg,
+       },
+       { },
+ };
+ static __init int exynos4_pm_init_power_domain(void)
+ {
+       struct device_node *np;
+       const struct of_device_id *match;
+       for_each_matching_node_and_match(np, exynos_pm_domain_of_match, &match) {
+               const struct exynos_pm_domain_config *pm_domain_cfg;
+               struct exynos_pm_domain *pd;
+               int on, i;
+               pm_domain_cfg = match->data;
+               pd = kzalloc(sizeof(*pd), GFP_KERNEL);
+               if (!pd) {
+                       pr_err("%s: failed to allocate memory for domain\n",
+                                       __func__);
+                       of_node_put(np);
+                       return -ENOMEM;
+               }
+               pd->pd.name = kstrdup_const(strrchr(np->full_name, '/') + 1,
+                                           GFP_KERNEL);
+               if (!pd->pd.name) {
+                       kfree(pd);
+                       of_node_put(np);
+                       return -ENOMEM;
+               }
+               pd->name = pd->pd.name;
+               pd->base = of_iomap(np, 0);
+               if (!pd->base) {
+                       pr_warn("%s: failed to map memory\n", __func__);
+                       kfree_const(pd->pd.name);
+                       kfree(pd);
+                       continue;
+               }
+               pd->pd.power_off = exynos_pd_power_off;
+               pd->pd.power_on = exynos_pd_power_on;
+               pd->local_pwr_cfg = pm_domain_cfg->local_pwr_cfg;
+               for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+                       char clk_name[8];
+                       snprintf(clk_name, sizeof(clk_name), "asb%d", i);
+                       pd->asb_clk[i] = of_clk_get_by_name(np, clk_name);
+                       if (IS_ERR(pd->asb_clk[i]))
+                               break;
+               }
+               pd->oscclk = of_clk_get_by_name(np, "oscclk");
+               if (IS_ERR(pd->oscclk))
+                       goto no_clk;
+               for (i = 0; i < MAX_CLK_PER_DOMAIN; i++) {
+                       char clk_name[8];
+                       snprintf(clk_name, sizeof(clk_name), "clk%d", i);
+                       pd->clk[i] = of_clk_get_by_name(np, clk_name);
+                       if (IS_ERR(pd->clk[i]))
+                               break;
+                       /*
+                        * Skip setting parent on first power up.
+                        * The parent at this time may not be useful at all.
+                        */
+                       pd->pclk[i] = ERR_PTR(-EINVAL);
+               }
+               if (IS_ERR(pd->clk[0]))
+                       clk_put(pd->oscclk);
+ no_clk:
++              on = readl_relaxed(pd->base + 0x4) & pd->local_pwr_cfg;
+               pm_genpd_init(&pd->pd, NULL, !on);
+               of_genpd_add_provider_simple(np, &pd->pd);
+       }
+       /* Assign the child power domains to their parents */
+       for_each_matching_node(np, exynos_pm_domain_of_match) {
+               struct generic_pm_domain *child_domain, *parent_domain;
+               struct of_phandle_args args;
+               args.np = np;
+               args.args_count = 0;
+               child_domain = of_genpd_get_from_provider(&args);
+               if (IS_ERR(child_domain))
+                       continue;
+               if (of_parse_phandle_with_args(np, "power-domains",
+                                        "#power-domain-cells", 0, &args) != 0)
+                       continue;
+               parent_domain = of_genpd_get_from_provider(&args);
+               if (IS_ERR(parent_domain))
+                       continue;
+               if (pm_genpd_add_subdomain(parent_domain, child_domain))
+                       pr_warn("%s failed to add subdomain: %s\n",
+                               parent_domain->name, child_domain->name);
+               else
+                       pr_info("%s has as child subdomain: %s.\n",
+                               parent_domain->name, child_domain->name);
+       }
+       return 0;
+ }
+ core_initcall(exynos4_pm_init_power_domain);
This page took 0.097701 seconds and 5 git commands to generate.