Merge tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Mon, 2 Dec 2019 00:06:02 +0000 (16:06 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Mon, 2 Dec 2019 00:06:02 +0000 (16:06 -0800)
Pull clk updates from Stephen Boyd:
 "This merge window we have one small clk provider API in the core
  framework and then a bunch of driver updates and a handful of new
  drivers. In terms of diffstat the Qualcomm and Amlogic drivers are
  high up there because of all the clk data introcued by new drivers.
  The Nvidia Tegra driver had a lot of work done this cycle too to
  support suspend/resume and memory controllers. And the OMAP clk driver
  got proper clk and reset handling in place.

  Rounding out the patches are various updates to remove unused data,
  mark things static, correct incorrect data in drivers, etc. All the
  little things that improve drivers and maintain code health. I will
  point out that there's a patch in here for the GPIO clk driver, that
  almost nobody uses, which changes behavior and causes clk_set_rate()
  to try to change the GPIO gate clk's parent. Other than that things
  are fairly well SoC specific here.

  Core:
   - Add a clk provider API to get current parent index
   - Plug a memory leak in clk_unregister() path

  New Drivers:
   - CGU in Ingenix X1000
   - Bitmain BM1880 clks
   - Qualcomm MSM8998 GPU clk controllers
   - Qualcomm SC7180 GCC and RPMH clk controllers
   - Qualcomm QCS404 Q6SSTOP clk controllers
   - Add support for the Renesas R-Car M3-W+ (r8a77961) SoC
   - Add support for the Renesas RZ/G2N (r8a774b1) SoC
   - Add Tegra20/30 External Memory Clock (EMC) support

  Updates:
   - Make gpio gate clks propagate rate setting up to parent
   - Prepare Armada 3700 for suspend to RAM by moving PCIe
     suspend/resume priority
   - Drop unused variables, enums, etc. in various clk drivers
   - Convert various drivers to use devm_platform_ioremap_resource()
   - Use struct_size() some more in various clk drivers
   - Improve Rockchip px30 clk tree
   - Add suspend/resume support to Tegra210 clk driver
   - Reimplement SOR clks on earlier Tegra SoCs, helping HDMI and DP
   - Allwinner DT exports and H6 clk tree fixes
   - Proper clk and reset handling for OMAP SoCs
   - Revamped TI divider clk to clamp max divider
   - Make 1443X/1416X PLL clock structure common for reusing among i.MX8
     SoCs
   - Drop IMX7ULP_CLK_MIPI_PLL clock, it shouldn't be used
   - Add VIDEO2_PLL clock for imx8mq
   - Add missing gate clock for pll1/2 fixed dividers on i.MX8 SoCs
   - Add sm1 support in the Amlogic audio clock controller
   - Switch some clocks on R-Car Gen2/3 to .determine_rate()
   - Remove Renesas R-Car Gen2 legacy DT clock support
   - Improve arithmetic divisions on Renesas R-Car Gen2 and Gen3
   - Improve Renesas R-Car Gen3 SD clock handling
   - Add rate table for Samsung exynos542x GPU and VPLL clks
   - Fix potential CPU performance degradation after system
     suspend/resume cycle on exynos542x SoCs"

* tag 'clk-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/clk/linux: (160 commits)
  clk: aspeed: Add RMII RCLK gates for both AST2500 MACs
  MAINTAINERS: Add entry for BM1880 SoC clock driver
  clk: Add common clock driver for BM1880 SoC
  dt-bindings: clock: Add devicetree binding for BM1880 SoC
  clk: Add clk_hw_unregister_composite helper function definition
  clk: Zero init clk_init_data in helpers
  clk: ingenic: Allow drivers to be built with COMPILE_TEST
  MAINTAINERS: Update section for Ux500 clock drivers
  clk: mark clk_disable_unused() as __init
  clk: Fix memory leak in clk_unregister()
  clk: Ingenic: Add CGU driver for X1000.
  dt-bindings: clock: Add X1000 bindings.
  clk: tegra: Use match_string() helper to simplify the code
  clk: pxa: fix one of the pxa RTC clocks
  clk: sprd: Use IS_ERR() to validate the return value of syscon_regmap_lookup_by_phandle()
  clk: armada-xp: remove unused code
  clk: tegra: Fix build error without CONFIG_PM_SLEEP
  clk: tegra: Add missing stubs for the case of !CONFIG_PM_SLEEP
  clk: tegra: Optimize PLLX restore on Tegra20/30
  clk: tegra: Add suspend and resume support on Tegra210
  ...

1  2 
MAINTAINERS
drivers/clk/at91/sckc.c
drivers/clk/clk-ast2600.c
drivers/clk/imx/clk-imx8mm.c
drivers/clk/imx/clk-imx8mn.c
drivers/clk/ti/clk-7xx.c
drivers/clk/ti/clkctrl.c

diff --combined MAINTAINERS
@@@ -643,7 -643,7 +643,7 @@@ F: drivers/net/ethernet/alacritech/
  
  FORCEDETH GIGABIT ETHERNET DRIVER
  M:    Rain River <rain.1986.08.12@gmail.com>
 -M:    Zhu Yanjun <yanjun.zhu@oracle.com>
 +M:    Zhu Yanjun <zyjzyj2000@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/nvidia/*
@@@ -682,11 -682,11 +682,11 @@@ S:      Maintaine
  F:    Documentation/devicetree/bindings/opp/sun50i-nvmem-cpufreq.txt
  F:    drivers/cpufreq/sun50i-cpufreq-nvmem.c
  
 -ALLWINNER SECURITY SYSTEM
 +ALLWINNER CRYPTO DRIVERS
  M:    Corentin Labbe <clabbe.montjoie@gmail.com>
  L:    linux-crypto@vger.kernel.org
  S:    Maintained
 -F:    drivers/crypto/sunxi-ss/
 +F:    drivers/crypto/allwinner/
  
  ALLWINNER VPU DRIVER
  M:    Maxime Ripard <mripard@kernel.org>
@@@ -901,14 -901,6 +901,14 @@@ S:       Supporte
  F:    drivers/iio/adc/ad7124.c
  F:    Documentation/devicetree/bindings/iio/adc/adi,ad7124.yaml
  
 +ANALOG DEVICES INC AD7292 DRIVER
 +M:    Marcelo Schmitt <marcelo.schmitt1@gmail.com>
 +L:    linux-iio@vger.kernel.org
 +W:    http://ez.analog.com/community/linux-device-drivers
 +S:    Supported
 +F:    drivers/iio/adc/ad7292.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7292.yaml
 +
  ANALOG DEVICES INC AD7606 DRIVER
  M:    Stefan Popa <stefan.popa@analog.com>
  M:    Beniamin Bia <beniamin.bia@analog.com>
@@@ -1010,7 -1002,6 +1010,7 @@@ F:      drivers/media/i2c/adv7842
  
  ANALOG DEVICES INC ASOC CODEC DRIVERS
  M:    Lars-Peter Clausen <lars@metafoo.de>
 +M:    Nuno Sá <nuno.sa@analog.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
  W:    http://wiki.analog.com/
  W:    http://ez.analog.com/community/linux-device-drivers
@@@ -1049,7 -1040,6 +1049,7 @@@ F:      drivers/clk/analogbits/
  F:    include/linux/clk/analogbits*
  
  ANDES ARCHITECTURE
 +M:    Nick Hu <nickhu@andestech.com>
  M:    Greentime Hu <green.hu@gmail.com>
  M:    Vincent Chen <deanbo422@gmail.com>
  T:    git https://git.kernel.org/pub/scm/linux/kernel/git/greentime/linux.git
@@@ -1192,21 -1182,14 +1192,21 @@@ S:   Maintaine
  F:    drivers/media/i2c/aptina-pll.*
  
  AQUANTIA ETHERNET DRIVER (atlantic)
 -M:    Igor Russkikh <igor.russkikh@aquantia.com>
 +M:    Igor Russkikh <irusskikh@marvell.com>
  L:    netdev@vger.kernel.org
  S:    Supported
 -W:    http://www.aquantia.com
 +W:    https://www.marvell.com/
  Q:    http://patchwork.ozlabs.org/project/netdev/list/
  F:    drivers/net/ethernet/aquantia/atlantic/
  F:    Documentation/networking/device_drivers/aquantia/atlantic.txt
  
 +AQUANTIA ETHERNET DRIVER PTP SUBSYSTEM
 +M:    Egor Pomozov <epomozov@marvell.com>
 +L:    netdev@vger.kernel.org
 +S:    Supported
 +W:    http://www.aquantia.com
 +F:    drivers/net/ethernet/aquantia/atlantic/aq_ptp*
 +
  ARC FRAMEBUFFER DRIVER
  M:    Jaya Kumar <jayalk@intworks.biz>
  S:    Maintained
@@@ -1268,7 -1251,6 +1268,7 @@@ F:      Documentation/devicetree/bindings/di
  ARM KOMEDA DRM-KMS DRIVER
  M:    James (Qian) Wang <james.qian.wang@arm.com>
  M:    Liviu Dudau <liviu.dudau@arm.com>
 +M:    Mihail Atanassov <mihail.atanassov@arm.com>
  L:    Mali DP Maintainers <malidp@foss.arm.com>
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -1290,8 -1272,6 +1290,8 @@@ F:      Documentation/gpu/afbc.rs
  ARM MALI PANFROST DRM DRIVER
  M:    Rob Herring <robh@kernel.org>
  M:    Tomeu Vizoso <tomeu.vizoso@collabora.com>
 +R:    Steven Price <steven.price@arm.com>
 +R:    Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  T:    git git://anongit.freedesktop.org/drm/drm-misc
@@@ -1411,7 -1391,6 +1411,7 @@@ F:      drivers/clk/actions
  F:    drivers/clocksource/timer-owl*
  F:    drivers/dma/owl-dma.c
  F:    drivers/i2c/busses/i2c-owl.c
 +F:    drivers/mmc/host/owl-mmc.c
  F:    drivers/pinctrl/actions/*
  F:    drivers/soc/actions/
  F:    include/dt-bindings/power/owl-*
@@@ -1420,7 -1399,6 +1420,7 @@@ F:      Documentation/devicetree/bindings/ar
  F:    Documentation/devicetree/bindings/clock/actions,owl-cmu.txt
  F:    Documentation/devicetree/bindings/dma/owl-dma.txt
  F:    Documentation/devicetree/bindings/i2c/i2c-owl.txt
 +F:    Documentation/devicetree/bindings/mmc/owl-mmc.yaml
  F:    Documentation/devicetree/bindings/pinctrl/actions,s900-pinctrl.txt
  F:    Documentation/devicetree/bindings/power/actions,owl-sps.txt
  F:    Documentation/devicetree/bindings/timer/actions,owl-timer.txt
@@@ -1492,14 -1470,6 +1492,14 @@@ F:    drivers/soc/amlogic
  F:    drivers/rtc/rtc-meson*
  N:    meson
  
 +ARM/Amlogic Meson SoC Crypto Drivers
 +M:    Corentin Labbe <clabbe@baylibre.com>
 +L:    linux-crypto@vger.kernel.org
 +L:    linux-amlogic@lists.infradead.org
 +S:    Maintained
 +F:    drivers/crypto/amlogic/
 +F:    Documentation/devicetree/bindings/crypto/amlogic*
 +
  ARM/Amlogic Meson SoC Sound Drivers
  M:    Jerome Brunet <jbrunet@baylibre.com>
  L:    alsa-devel@alsa-project.org (moderated for non-subscribers)
@@@ -1559,8 -1529,10 +1559,10 @@@ M:    Manivannan Sadhasivam <manivannan.sa
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/bitmain/
+ F:    drivers/clk/clk-bm1880.c
  F:    drivers/pinctrl/pinctrl-bm1880.c
  F:    Documentation/devicetree/bindings/arm/bitmain.yaml
+ F:    Documentation/devicetree/bindings/clock/bitmain,bm1880-clk.yaml
  F:    Documentation/devicetree/bindings/pinctrl/bitmain,bm1880-pinctrl.txt
  
  ARM/CALXEDA HIGHBANK ARCHITECTURE
@@@ -2035,7 -2007,6 +2037,7 @@@ F:      drivers/dma/ste_dma40
  F:    drivers/hwspinlock/u8500_hsem.c
  F:    drivers/i2c/busses/i2c-nomadik.c
  F:    drivers/i2c/busses/i2c-stu300.c
 +F:    drivers/iio/adc/ab8500-gpadc.c
  F:    drivers/mfd/ab3100*
  F:    drivers/mfd/ab8500*
  F:    drivers/mfd/abx500*
@@@ -2196,10 -2167,12 +2198,10 @@@ F:   arch/arm64/boot/dts/realtek
  F:    Documentation/devicetree/bindings/arm/realtek.yaml
  
  ARM/RENESAS ARM64 ARCHITECTURE
 -M:    Simon Horman <horms@verge.net.au>
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm64/boot/dts/renesas/
@@@ -2311,10 -2284,12 +2313,10 @@@ S:   Maintaine
  F:    drivers/media/platform/s5p-mfc/
  
  ARM/SHMOBILE ARM ARCHITECTURE
 -M:    Simon Horman <horms@verge.net.au>
  M:    Geert Uytterhoeven <geert+renesas@glider.be>
  M:    Magnus Damm <magnus.damm@gmail.com>
  L:    linux-renesas-soc@vger.kernel.org
  Q:    http://patchwork.kernel.org/project/linux-renesas-soc/list/
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas.git next
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/geert/renesas-devel.git next
  S:    Supported
  F:    arch/arm/boot/dts/emev2*
@@@ -2354,13 -2329,11 +2356,13 @@@ F:   drivers/edac/altera_edac
  
  ARM/SPREADTRUM SoC SUPPORT
  M:    Orson Zhai <orsonzhai@gmail.com>
 -M:    Baolin Wang <baolin.wang@linaro.org>
 +M:    Baolin Wang <baolin.wang7@gmail.com>
  M:    Chunyan Zhang <zhang.lyra@gmail.com>
  S:    Maintained
  F:    arch/arm64/boot/dts/sprd
  N:    sprd
 +N:    sc27xx
 +N:    sc2731
  
  ARM/STI ARCHITECTURE
  M:    Patrice Chotard <patrice.chotard@st.com>
@@@ -2519,10 -2492,10 +2521,10 @@@ F:   drivers/reset/reset-uniphier.
  F:    drivers/tty/serial/8250/8250_uniphier.c
  N:    uniphier
  
- ARM/Ux500 CLOCK FRAMEWORK SUPPORT
+ Ux500 CLOCK DRIVERS
  M:    Ulf Hansson <ulf.hansson@linaro.org>
+ L:    linux-clk@vger.kernel.org
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
- T:    git git://git.linaro.org/people/ulfh/clk.git
  S:    Maintained
  F:    drivers/clk/ux500/
  
@@@ -2642,7 -2615,6 +2644,7 @@@ S:      Maintaine
  F:    arch/arm64/
  X:    arch/arm64/boot/dts/
  F:    Documentation/arm64/
 +F:    tools/testing/selftests/arm64/
  
  AS3645A LED FLASH CONTROLLER DRIVER
  M:    Sakari Ailus <sakari.ailus@iki.fi>
@@@ -3085,7 -3057,6 +3087,7 @@@ M:      Daniel Borkmann <daniel@iogearbox.ne
  R:    Martin KaFai Lau <kafai@fb.com>
  R:    Song Liu <songliubraving@fb.com>
  R:    Yonghong Song <yhs@fb.com>
 +R:    Andrii Nakryiko <andriin@fb.com>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf.git
@@@ -3131,7 -3102,7 +3133,7 @@@ S:      Supporte
  F:    arch/arm64/net/
  
  BPF JIT for MIPS (32-BIT AND 64-BIT)
 -M:    Paul Burton <paul.burton@mips.com>
 +M:    Paul Burton <paulburton@kernel.org>
  L:    netdev@vger.kernel.org
  L:    bpf@vger.kernel.org
  S:    Maintained
@@@ -3218,7 -3189,7 +3220,7 @@@ N:      bcm216
  N:    kona
  F:    arch/arm/mach-bcm/
  
 -BROADCOM BCM2835 ARM ARCHITECTURE
 +BROADCOM BCM2711/BCM2835 ARM ARCHITECTURE
  M:    Eric Anholt <eric@anholt.net>
  M:    Stefan Wahren <wahrenst@gmx.net>
  L:    bcm-kernel-feedback-list@broadcom.com
@@@ -3226,7 -3197,6 +3228,7 @@@ L:      linux-rpi-kernel@lists.infradead.or
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  T:    git git://github.com/anholt/linux
  S:    Maintained
 +N:    bcm2711
  N:    bcm2835
  F:    drivers/staging/vc04_services
  
@@@ -3273,6 -3243,8 +3275,6 @@@ S:      Maintaine
  F:    drivers/usb/gadget/udc/bcm63xx_udc.*
  
  BROADCOM BCM7XXX ARM ARCHITECTURE
 -M:    Brian Norris <computersforpeace@gmail.com>
 -M:    Gregory Fong <gregory.0xf0@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  M:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
@@@ -3293,6 -3265,7 +3295,6 @@@ S:      Maintaine
  F:    drivers/cpufreq/bmips-cpufreq.c
  
  BROADCOM BMIPS MIPS ARCHITECTURE
 -M:    Kevin Cernekee <cernekee@gmail.com>
  M:    Florian Fainelli <f.fainelli@gmail.com>
  L:    bcm-kernel-feedback-list@broadcom.com
  L:    linux-mips@vger.kernel.org
@@@ -3564,7 -3537,7 +3566,7 @@@ BUS FREQUENCY DRIVER FOR SAMSUNG EXYNO
  M:    Chanwoo Choi <cw00.choi@samsung.com>
  L:    linux-pm@vger.kernel.org
  L:    linux-samsung-soc@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  S:    Maintained
  F:    drivers/devfreq/exynos-bus.c
  F:    Documentation/devicetree/bindings/devfreq/exynos-bus.txt
@@@ -3627,13 -3600,6 +3629,13 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/media/cdns,*.txt
  F:    drivers/media/platform/cadence/cdns-csi2*
  
 +CADENCE NAND DRIVER
 +M:    Piotr Sroka <piotrs@cadence.com>
 +L:    linux-mtd@lists.infradead.org
 +S:    Maintained
 +F:    drivers/mtd/nand/raw/cadence-nand-controller.c
 +F:    Documentation/devicetree/bindings/mtd/cadence-nand-controller.txt
 +
  CADET FM/AM RADIO RECEIVER DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -3665,6 -3631,16 +3667,6 @@@ L:     cake@lists.bufferbloat.net (moderate
  S:    Maintained
  F:    net/sched/sch_cake.c
  
 -CALGARY x86-64 IOMMU
 -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
 -F:    arch/x86/include/asm/calgary.h
 -F:    arch/x86/include/asm/tce.h
 -
  CAN NETWORK DRIVERS
  M:    Wolfgang Grandegger <wg@grandegger.com>
  M:    Marc Kleine-Budde <mkl@pengutronix.de>
@@@ -3766,6 -3742,7 +3768,6 @@@ F:      drivers/crypto/cavium/cpt
  
  CAVIUM THUNDERX2 ARM64 SOC
  M:    Robert Richter <rrichter@cavium.com>
 -M:    Jayachandran C <jnair@caviumnetworks.com>
  L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
  S:    Maintained
  F:    arch/arm64/boot/dts/cavium/thunder2-99xx*
@@@ -4298,13 -4275,14 +4300,13 @@@ F:   include/linux/cpufreq.
  F:    include/linux/sched/cpufreq.h
  F:    tools/testing/selftests/cpufreq/
  
 -CPU FREQUENCY DRIVERS - ARM BIG LITTLE
 +CPU FREQUENCY DRIVERS - VEXPRESS SPC ARM BIG LITTLE
  M:    Viresh Kumar <viresh.kumar@linaro.org>
  M:    Sudeep Holla <sudeep.holla@arm.com>
  L:    linux-pm@vger.kernel.org
  W:    http://www.arm.com/products/processors/technologies/biglittleprocessing.php
  S:    Maintained
 -F:    drivers/cpufreq/arm_big_little.h
 -F:    drivers/cpufreq/arm_big_little.c
 +F:    drivers/cpufreq/vexpress-spc-cpufreq.c
  
  CPU POWER MONITORING SUBSYSTEM
  M:    Thomas Renninger <trenn@suse.com>
@@@ -4483,6 -4461,14 +4485,6 @@@ W:     http://www.chelsio.co
  S:    Supported
  F:    drivers/scsi/cxgbi/cxgb3i
  
 -CXGB3 IWARP RNIC DRIVER (IW_CXGB3)
 -M:    Potnuri Bharat Teja <bharat@chelsio.com>
 -L:    linux-rdma@vger.kernel.org
 -W:    http://www.openfabrics.org
 -S:    Supported
 -F:    drivers/infiniband/hw/cxgb3/
 -F:    include/uapi/rdma/cxgb3-abi.h
 -
  CXGB4 CRYPTO DRIVER (chcr)
  M:    Atul Gupta <atul.gupta@chelsio.com>
  L:    linux-crypto@vger.kernel.org
@@@ -4657,14 -4643,6 +4659,14 @@@ M:    "Maciej W. Rozycki" <macro@linux-mip
  S:    Maintained
  F:    drivers/net/fddi/defxx.*
  
 +DEINTERLACE DRIVERS FOR ALLWINNER H3
 +M:    Jernej Skrabec <jernej.skrabec@siol.net>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/platform/sunxi/sun8i-di/
 +F:    Documentation/devicetree/bindings/media/allwinner,sun8i-h3-deinterlace.yaml
 +
  DELL SMBIOS DRIVER
  M:    Pali Rohár <pali.rohar@gmail.com>
  M:    Mario Limonciello <mario.limonciello@dell.com>
@@@ -4789,9 -4767,9 +4791,9 @@@ F:      include/linux/devcoredump.
  DEVICE FREQUENCY (DEVFREQ)
  M:    MyungJoo Ham <myungjoo.ham@samsung.com>
  M:    Kyungmin Park <kyungmin.park@samsung.com>
 -R:    Chanwoo Choi <cw00.choi@samsung.com>
 +M:    Chanwoo Choi <cw00.choi@samsung.com>
  L:    linux-pm@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  S:    Maintained
  F:    drivers/devfreq/
  F:    include/linux/devfreq.h
@@@ -4801,11 -4779,10 +4803,11 @@@ F:   include/trace/events/devfreq.
  DEVICE FREQUENCY EVENT (DEVFREQ-EVENT)
  M:    Chanwoo Choi <cw00.choi@samsung.com>
  L:    linux-pm@vger.kernel.org
 -T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mzx/devfreq.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/chanwoo/linux.git
  S:    Supported
  F:    drivers/devfreq/event/
  F:    drivers/devfreq/devfreq-event.c
 +F:    include/dt-bindings/pmu/exynos_ppmu.h
  F:    include/linux/devfreq-event.h
  F:    Documentation/devicetree/bindings/devfreq/event/
  
@@@ -5075,14 -5052,10 +5077,14 @@@ M:   Ioana Radulescu <ruxandra.radulescu@
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-eth*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpaa2-mac*
  F:    drivers/net/ethernet/freescale/dpaa2/dpni*
 +F:    drivers/net/ethernet/freescale/dpaa2/dpmac*
  F:    drivers/net/ethernet/freescale/dpaa2/dpkg.h
  F:    drivers/net/ethernet/freescale/dpaa2/Makefile
  F:    drivers/net/ethernet/freescale/dpaa2/Kconfig
 +F:    Documentation/networking/device_drivers/freescale/dpaa2/ethernet-driver.rst
 +F:    Documentation/networking/device_drivers/freescale/dpaa2/mac-phy-support.rst
  
  DPAA2 ETHERNET SWITCH DRIVER
  M:    Ioana Radulescu <ruxandra.radulescu@nxp.com>
@@@ -5405,22 -5378,12 +5407,22 @@@ F:   include/linux/vga
  
  DRM DRIVERS FOR ALLWINNER A10
  M:    Maxime Ripard <mripard@kernel.org>
 +M:    Chen-Yu Tsai <wens@csie.org>
  L:    dri-devel@lists.freedesktop.org
  S:    Supported
  F:    drivers/gpu/drm/sun4i/
  F:    Documentation/devicetree/bindings/display/sunxi/sun4i-drm.txt
  T:    git git://anongit.freedesktop.org/drm/drm-misc
  
 +DRM DRIVER FOR ALLWINNER DE2 AND DE3 ENGINE
 +M:    Maxime Ripard <mripard@kernel.org>
 +M:    Chen-Yu Tsai <wens@csie.org>
 +R:    Jernej Skrabec <jernej.skrabec@siol.net>
 +L:    dri-devel@lists.freedesktop.org
 +S:    Supported
 +F:    drivers/gpu/drm/sun4i/sun8i*
 +T:    git git://anongit.freedesktop.org/drm/drm-misc
 +
  DRM DRIVERS FOR AMLOGIC SOCS
  M:    Neil Armstrong <narmstrong@baylibre.com>
  L:    dri-devel@lists.freedesktop.org
@@@ -6045,14 -6008,14 +6047,14 @@@ F:   sound/usb/misc/ua101.
  EFI TEST DRIVER
  L:    linux-efi@vger.kernel.org
  M:    Ivan Hu <ivan.hu@canonical.com>
 -M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
 +M:    Ard Biesheuvel <ardb@kernel.org>
  S:    Maintained
  F:    drivers/firmware/efi/test/
  
  EFI VARIABLE FILESYSTEM
  M:    Matthew Garrett <matthew.garrett@nebula.com>
  M:    Jeremy Kerr <jk@ozlabs.org>
 -M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
 +M:    Ard Biesheuvel <ardb@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
  L:    linux-efi@vger.kernel.org
  S:    Maintained
@@@ -6151,10 -6114,7 +6153,10 @@@ M:    Gao Xiang <gaoxiang25@huawei.com
  M:    Chao Yu <yuchao0@huawei.com>
  L:    linux-erofs@lists.ozlabs.org
  S:    Maintained
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/xiang/erofs.git
 +F:    Documentation/filesystems/erofs.txt
  F:    fs/erofs/
 +F:    include/trace/events/erofs.h
  
  ERRSEQ ERROR TRACKING INFRASTRUCTURE
  M:    Jeff Layton <jlayton@kernel.org>
@@@ -6186,12 -6146,10 +6188,12 @@@ S:   Maintaine
  F:    Documentation/ABI/testing/sysfs-class-net-phydev
  F:    Documentation/devicetree/bindings/net/ethernet-phy.yaml
  F:    Documentation/devicetree/bindings/net/mdio*
 +F:    Documentation/devicetree/bindings/net/qca,ar803x.yaml
  F:    Documentation/networking/phy.rst
  F:    drivers/net/phy/
  F:    drivers/of/of_mdio.c
  F:    drivers/of/of_net.c
 +F:    include/dt-bindings/net/qca-ar803x.h
  F:    include/linux/*mdio*.h
  F:    include/linux/of_net.h
  F:    include/linux/phy.h
@@@ -6204,7 -6162,6 +6206,7 @@@ F:      include/uapi/linux/mii.
  
  EXFAT FILE SYSTEM
  M:    Valdis Kletnieks <valdis.kletnieks@vt.edu>
 +L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    drivers/staging/exfat/
  
@@@ -6234,7 -6191,7 +6236,7 @@@ S:      Supporte
  F:    security/integrity/evm/
  
  EXTENSIBLE FIRMWARE INTERFACE (EFI)
 -M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
 +M:    Ard Biesheuvel <ardb@kernel.org>
  L:    linux-efi@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/efi/efi.git
  S:    Maintained
@@@ -6759,7 -6716,6 +6761,7 @@@ FSNOTIFY: FILESYSTEM NOTIFICATION INFRA
  M:    Jan Kara <jack@suse.cz>
  R:    Amir Goldstein <amir73il@gmail.com>
  L:    linux-fsdevel@vger.kernel.org
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jack/linux-fs.git fsnotify
  S:    Maintained
  F:    fs/notify/
  F:    include/linux/fsnotify*.h
@@@ -7411,25 -7367,6 +7413,25 @@@ F:    include/uapi/linux/if_hippi.
  F:    net/802/hippi.c
  F:    drivers/net/hippi/
  
 +HISILICON SECURITY ENGINE V2 DRIVER (SEC2)
 +M:    Zaibo Xu <xuzaibo@huawei.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/hisilicon/sec2/sec_crypto.c
 +F:    drivers/crypto/hisilicon/sec2/sec_main.c
 +F:    drivers/crypto/hisilicon/sec2/sec_crypto.h
 +F:    drivers/crypto/hisilicon/sec2/sec.h
 +F:    Documentation/ABI/testing/debugfs-hisi-sec
 +
 +HISILICON HIGH PERFORMANCE RSA ENGINE DRIVER (HPRE)
 +M:    Zaibo Xu <xuzaibo@huawei.com>
 +L:    linux-crypto@vger.kernel.org
 +S:    Maintained
 +F:    drivers/crypto/hisilicon/hpre/hpre_crypto.c
 +F:    drivers/crypto/hisilicon/hpre/hpre_main.c
 +F:    drivers/crypto/hisilicon/hpre/hpre.h
 +F:    Documentation/ABI/testing/debugfs-hisi-hpre
 +
  HISILICON NETWORK SUBSYSTEM 3 DRIVER (HNS3)
  M:    Yisen Zhuang <yisen.zhuang@huawei.com>
  M:    Salil Mehta <salil.mehta@huawei.com>
@@@ -7438,11 -7375,6 +7440,11 @@@ W:    http://www.hisilicon.co
  S:    Maintained
  F:    drivers/net/ethernet/hisilicon/hns3/
  
 +HISILICON TRUE RANDOM NUMBER GENERATOR V2 SUPPORT
 +M:    Zaibo Xu <xuzaibo@huawei.com>
 +S:    Maintained
 +F:    drivers/char/hw_random/hisi-trng-v2.c
 +
  HISILICON LPC BUS DRIVER
  M:    john.garry@huawei.com
  W:    http://www.hisilicon.com
@@@ -7488,6 -7420,7 +7490,6 @@@ S:      Maintaine
  F:    drivers/crypto/hisilicon/qm.c
  F:    drivers/crypto/hisilicon/qm.h
  F:    drivers/crypto/hisilicon/sgl.c
 -F:    drivers/crypto/hisilicon/sgl.h
  F:    drivers/crypto/hisilicon/zip/
  F:    Documentation/ABI/testing/debugfs-hisi-zip
  
@@@ -7513,8 -7446,8 +7515,8 @@@ F:      drivers/platform/x86/tc1100-wmi.
  
  HP100:        Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
  M:    Jaroslav Kysela <perex@perex.cz>
 -S:    Maintained
 -F:    drivers/net/ethernet/hp/hp100.*
 +S:    Obsolete
 +F:    drivers/staging/hp/hp100.*
  
  HPET: High Precision Event Timers driver
  M:    Clemens Ladisch <clemens@ladisch.de>
@@@ -7615,13 -7548,6 +7617,13 @@@ L:    linux-kernel@vger.kernel.or
  S:    Maintained
  F:    arch/x86/kernel/cpu/hygon.c
  
 +HYNIX HI556 SENSOR DRIVER
 +M:    Shawn Tu <shawnx.tu@intel.com>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/hi556.c
 +
  Hyper-V CORE AND DRIVERS
  M:    "K. Y. Srinivasan" <kys@microsoft.com>
  M:    Haiyang Zhang <haiyangz@microsoft.com>
@@@ -7654,7 -7580,6 +7656,7 @@@ F:      include/uapi/linux/hyperv.
  F:    include/asm-generic/mshyperv.h
  F:    tools/hv/
  F:    Documentation/ABI/stable/sysfs-bus-vmbus
 +F:    Documentation/ABI/testing/debugfs-hyperv
  
  HYPERBUS SUPPORT
  M:    Vignesh Raghavendra <vigneshr@ti.com>
@@@ -7807,7 -7732,7 +7809,7 @@@ F:      drivers/i2c/i2c-stub.
  
  I3C SUBSYSTEM
  M:    Boris Brezillon <bbrezillon@kernel.org>
 -L:    linux-i3c@lists.infradead.org
 +L:    linux-i3c@lists.infradead.org (moderated for non-subscribers)
  C:    irc://chat.freenode.net/linux-i3c
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/i3c/linux.git
  S:    Maintained
@@@ -7823,12 -7748,6 +7825,12 @@@ S:    Maintaine
  F:    Documentation/devicetree/bindings/i3c/snps,dw-i3c-master.txt
  F:    drivers/i3c/master/dw*
  
 +I3C DRIVER FOR CADENCE I3C MASTER IP
 +M:      Przemysław Gaj <pgaj@cadence.com>
 +S:      Maintained
 +F:      Documentation/devicetree/bindings/i3c/cdns,i3c-master.txt
 +F:      drivers/i3c/master/i3c-master-cdns.c
 +
  IA64 (Itanium) PLATFORM
  M:    Tony Luck <tony.luck@intel.com>
  M:    Fenghua Yu <fenghua.yu@intel.com>
@@@ -8085,7 -8004,7 +8087,7 @@@ S:      Maintaine
  F:    drivers/usb/atm/ueagle-atm.c
  
  IMGTEC ASCII LCD DRIVER
 -M:    Paul Burton <paul.burton@mips.com>
 +M:    Paul Burton <paulburton@kernel.org>
  S:    Maintained
  F:    Documentation/devicetree/bindings/auxdisplay/img-ascii-lcd.txt
  F:    drivers/auxdisplay/img-ascii-lcd.c
@@@ -8382,14 -8301,11 +8384,14 @@@ F:   drivers/hid/intel-ish-hid
  
  INTEL IOMMU (VT-d)
  M:    David Woodhouse <dwmw2@infradead.org>
 +M:    Lu Baolu <baolu.lu@linux.intel.com>
  L:    iommu@lists.linux-foundation.org
 -T:    git git://git.infradead.org/iommu-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/joro/iommu.git
  S:    Supported
 -F:    drivers/iommu/intel-iommu.c
 +F:    drivers/iommu/dmar.c
 +F:    drivers/iommu/intel*.[ch]
  F:    include/linux/intel-iommu.h
 +F:    include/linux/intel-svm.h
  
  INTEL IOP-ADMA DMA DRIVER
  R:    Dan Williams <dan.j.williams@intel.com>
@@@ -8413,7 -8329,6 +8415,7 @@@ S:      Maintaine
  F:    drivers/staging/media/ipu3/
  F:    Documentation/media/uapi/v4l/pixfmt-meta-intel-ipu3.rst
  F:    Documentation/media/v4l-drivers/ipu3.rst
 +F:    Documentation/media/v4l-drivers/ipu3_rcb.svg
  
  INTEL IXP4XX QMGR, NPE, ETHERNET and HSS SUPPORT
  M:    Krzysztof Halasa <khalasa@piap.pl>
@@@ -8649,13 -8564,12 +8651,13 @@@ F:   include/linux/iova.
  
  IO_URING
  M:    Jens Axboe <axboe@kernel.dk>
 -L:    linux-block@vger.kernel.org
 -L:    linux-fsdevel@vger.kernel.org
 +L:    io-uring@vger.kernel.org
  T:    git git://git.kernel.dk/linux-block
  T:    git git://git.kernel.dk/liburing
  S:    Maintained
  F:    fs/io_uring.c
 +F:    fs/io-wq.c
 +F:    fs/io-wq.h
  F:    include/uapi/linux/io_uring.h
  
  IPMI SUBSYSTEM
@@@ -9006,17 -8920,6 +9008,17 @@@ S:    Maintaine
  F:    tools/testing/selftests/
  F:    Documentation/dev-tools/kselftest*
  
 +KERNEL UNIT TESTING FRAMEWORK (KUnit)
 +M:    Brendan Higgins <brendanhiggins@google.com>
 +L:    linux-kselftest@vger.kernel.org
 +L:    kunit-dev@googlegroups.com
 +W:    https://google.github.io/kunit-docs/third_party/kernel/docs/
 +S:    Maintained
 +F:    Documentation/dev-tools/kunit/
 +F:    include/kunit/
 +F:    lib/kunit/
 +F:    tools/testing/kunit/
 +
  KERNEL USERMODE HELPER
  M:    Luis Chamberlain <mcgrof@kernel.org>
  L:    linux-kernel@vger.kernel.org
@@@ -9174,7 -9077,6 +9176,7 @@@ F:      security/keys
  KGDB / KDB /debug_core
  M:    Jason Wessel <jason.wessel@windriver.com>
  M:    Daniel Thompson <daniel.thompson@linaro.org>
 +R:    Douglas Anderson <dianders@chromium.org>
  W:    http://kgdb.wiki.kernel.org/
  L:    kgdb-bugreport@lists.sourceforge.net
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/jwessel/kgdb.git
@@@ -9222,7 -9124,7 +9224,7 @@@ F:      drivers/auxdisplay/ks0108.
  F:    include/linux/ks0108.h
  
  L3MDEV
 -M:    David Ahern <dsa@cumulusnetworks.com>
 +M:    David Ahern <dsahern@kernel.org>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    net/l3mdev
@@@ -9283,7 -9185,6 +9285,7 @@@ M:      Pavel Machek <pavel@ucw.cz
  R:    Dan Murphy <dmurphy@ti.com>
  L:    linux-leds@vger.kernel.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/j.anaszewski/linux-leds.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pavel/linux-leds.git
  S:    Maintained
  F:    Documentation/devicetree/bindings/leds/
  F:    drivers/leds/
@@@ -9594,13 -9495,6 +9596,13 @@@ F:    Documentation/misc-devices/lis3lv02d
  F:    drivers/misc/lis3lv02d/
  F:    drivers/platform/x86/hp_accel.c
  
 +LIST KUNIT TEST
 +M:    David Gow <davidgow@google.com>
 +L:    linux-kselftest@vger.kernel.org
 +L:    kunit-dev@googlegroups.com
 +S:    Maintained
 +F:    lib/list-test.c
 +
  LIVE PATCHING
  M:    Josh Poimboeuf <jpoimboe@redhat.com>
  M:    Jiri Kosina <jikos@kernel.org>
@@@ -9726,17 -9620,9 +9728,17 @@@ LTC1660 DAC DRIVE
  M:    Marcus Folkesson <marcus.folkesson@gmail.com>
  L:    linux-iio@vger.kernel.org
  S:    Maintained
 -F:    Documentation/devicetree/bindings/iio/dac/ltc1660.txt
 +F:    Documentation/devicetree/bindings/iio/dac/lltc,ltc1660.yaml
  F:    drivers/iio/dac/ltc1660.c
  
 +LTC2983 IIO TEMPERATURE DRIVER
 +M:    Nuno Sá <nuno.sa@analog.com>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-iio@vger.kernel.org
 +S:    Supported
 +F:    drivers/iio/temperature/ltc2983.c
 +F:    Documentation/devicetree/bindings/iio/temperature/adi,ltc2983.yaml
 +
  LTC4261 HARDWARE MONITOR DRIVER
  M:    Guenter Roeck <linux@roeck-us.net>
  L:    linux-hwmon@vger.kernel.org
@@@ -9744,17 -9630,6 +9746,17 @@@ S:    Maintaine
  F:    Documentation/hwmon/ltc4261.rst
  F:    drivers/hwmon/ltc4261.c
  
 +LTC2947 HARDWARE MONITOR DRIVER
 +M:    Nuno Sá <nuno.sa@analog.com>
 +W:    http://ez.analog.com/community/linux-device-drivers
 +L:    linux-hwmon@vger.kernel.org
 +S:    Supported
 +F:    drivers/hwmon/ltc2947-core.c
 +F:    drivers/hwmon/ltc2947-spi.c
 +F:    drivers/hwmon/ltc2947-i2c.c
 +F:    drivers/hwmon/ltc2947.h
 +F:    Documentation/devicetree/bindings/hwmon/adi,ltc2947.yaml
 +
  LTC4306 I2C MULTIPLEXER DRIVER
  M:    Michael Hennerich <michael.hennerich@analog.com>
  W:    http://ez.analog.com/community/linux-device-drivers
@@@ -9863,7 -9738,6 +9865,7 @@@ S:      Maintaine
  F:    drivers/net/dsa/mv88e6xxx/
  F:    include/linux/platform_data/mv88e6xxx.h
  F:    Documentation/devicetree/bindings/net/dsa/marvell.txt
 +F:    Documentation/networking/devlink-params-mv88e6xxx.txt
  
  MARVELL ARMADA DRM SUPPORT
  M:    Russell King <linux@armlinux.org.uk>
@@@ -9988,7 -9862,7 +9990,7 @@@ F:      Documentation/hwmon/max16065.rs
  F:    drivers/hwmon/max16065.c
  
  MAX2175 SDR TUNER DRIVER
 -M:    Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
 +M:    Ramesh Shanmugasundaram <rashanmu@gmail.com>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  S:    Maintained
@@@ -10250,7 -10124,7 +10252,7 @@@ F:   drivers/media/platform/renesas-ceu.
  F:    include/media/drv-intf/renesas-ceu.h
  
  MEDIA DRIVERS FOR RENESAS - DRIF
 -M:    Ramesh Shanmugasundaram <ramesh.shanmugasundaram@bp.renesas.com>
 +M:    Ramesh Shanmugasundaram <rashanmu@gmail.com>
  L:    linux-media@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
@@@ -10382,7 -10256,7 +10384,7 @@@ MEDIATEK ETHERNET DRIVE
  M:    Felix Fietkau <nbd@openwrt.org>
  M:    John Crispin <john@phrozen.org>
  M:    Sean Wang <sean.wang@mediatek.com>
 -M:    Nelson Chang <nelson.chang@mediatek.com>
 +M:    Mark Lee <Mark-MC.Lee@mediatek.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/ethernet/mediatek/
@@@ -10645,12 -10519,8 +10647,12 @@@ F: mm/memblock.
  F:    Documentation/core-api/boot-time-mm.rst
  
  MEMORY MANAGEMENT
 +M:    Andrew Morton <akpm@linux-foundation.org>
  L:    linux-mm@kvack.org
  W:    http://www.linux-mm.org
 +T:    quilt https://ozlabs.org/~akpm/mmotm/
 +T:    quilt https://ozlabs.org/~akpm/mmots/
 +T:    git git://github.com/hnaz/linux-mm.git
  S:    Maintained
  F:    include/linux/mm.h
  F:    include/linux/gfp.h
@@@ -10660,13 -10530,15 +10662,13 @@@ F:        include/linux/vmalloc.
  F:    mm/
  
  MEMORY TECHNOLOGY DEVICES (MTD)
 -M:    David Woodhouse <dwmw2@infradead.org>
 -M:    Brian Norris <computersforpeace@gmail.com>
 -M:    Marek Vasut <marek.vasut@gmail.com>
  M:    Miquel Raynal <miquel.raynal@bootlin.com>
  M:    Richard Weinberger <richard@nod.at>
  M:    Vignesh Raghavendra <vigneshr@ti.com>
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
  Q:    http://patchwork.ozlabs.org/project/linux-mtd/list/
 +C:    irc://irc.oftc.net/mtd
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/fixes
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/mtd/linux.git mtd/next
  S:    Maintained
@@@ -10711,7 -10583,7 +10713,7 @@@ W:   http://linux-meson.com
  S:    Supported
  F:    drivers/media/platform/meson/ao-cec.c
  F:    drivers/media/platform/meson/ao-cec-g12a.c
 -F:    Documentation/devicetree/bindings/media/meson-ao-cec.txt
 +F:    Documentation/devicetree/bindings/media/amlogic,meson-gx-ao-cec.yaml
  T:    git git://linuxtv.org/media_tree.git
  
  MESON NAND CONTROLLER DRIVER FOR AMLOGIC SOCS
@@@ -10852,7 -10724,7 +10854,7 @@@ M:   Kent Gustavsson <kent@minoris.se
  L:    linux-iio@vger.kernel.org
  S:    Supported
  F:    drivers/iio/adc/mcp3911.c
 -F:    Documentation/devicetree/bindings/iio/adc/mcp3911.txt
 +F:    Documentation/devicetree/bindings/iio/adc/microchip,mcp3911.yaml
  
  MICROCHIP NAND DRIVER
  M:    Tudor Ambarus <tudor.ambarus@microchip.com>
@@@ -10943,7 -10815,6 +10945,7 @@@ M:   Microchip Linux Driver Support <UNGL
  L:    netdev@vger.kernel.org
  S:    Supported
  F:    drivers/net/ethernet/mscc/
 +F:    include/soc/mscc/ocelot*
  
  MICROSOFT SURFACE PRO 3 BUTTON DRIVER
  M:    Chen Yu <yu.c.chen@intel.com>
@@@ -10958,7 -10829,7 +10960,7 @@@ F:   drivers/usb/image/microtek.
  
  MIPS
  M:    Ralf Baechle <ralf@linux-mips.org>
 -M:    Paul Burton <paul.burton@mips.com>
 +M:    Paul Burton <paulburton@kernel.org>
  M:    James Hogan <jhogan@kernel.org>
  L:    linux-mips@vger.kernel.org
  W:    http://www.linux-mips.org/
@@@ -10972,7 -10843,7 +10974,7 @@@ F:   arch/mips
  F:    drivers/platform/mips/
  
  MIPS BOSTON DEVELOPMENT BOARD
 -M:    Paul Burton <paul.burton@mips.com>
 +M:    Paul Burton <paulburton@kernel.org>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
  F:    Documentation/devicetree/bindings/clock/img,boston-clock.txt
@@@ -10982,7 -10853,7 +10984,7 @@@ F:   drivers/clk/imgtec/clk-boston.
  F:    include/dt-bindings/clock/boston-clock.h
  
  MIPS GENERIC PLATFORM
 -M:    Paul Burton <paul.burton@mips.com>
 +M:    Paul Burton <paulburton@kernel.org>
  L:    linux-mips@vger.kernel.org
  S:    Supported
  F:    Documentation/devicetree/bindings/power/mti,mips-cpc.txt
@@@ -10998,18 -10869,18 +11000,18 @@@ F:        arch/mips/include/asm/mach-loongson3
  F:    drivers/*/*loongson1*
  F:    drivers/*/*/*loongson1*
  
 -MIPS/LOONGSON2 ARCHITECTURE
 +MIPS/LOONGSON2EF ARCHITECTURE
  M:    Jiaxun Yang <jiaxun.yang@flygoat.com>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
 -F:    arch/mips/loongson64/fuloong-2e/
 -F:    arch/mips/loongson64/lemote-2f/
 -F:    arch/mips/include/asm/mach-loongson64/
 +F:    arch/mips/loongson2ef/
 +F:    arch/mips/include/asm/mach-loongson2ef/
  F:    drivers/*/*loongson2*
  F:    drivers/*/*/*loongson2*
  
 -MIPS/LOONGSON3 ARCHITECTURE
 +MIPS/LOONGSON64 ARCHITECTURE
  M:    Huacai Chen <chenhc@lemote.com>
 +M:    Jiaxun Yang <jiaxun.yang@flygoat.com>
  L:    linux-mips@vger.kernel.org
  S:    Maintained
  F:    arch/mips/loongson64/
@@@ -11537,6 -11408,7 +11539,6 @@@ F:   include/trace/events/tcp.
  NETWORKING [TLS]
  M:    Boris Pismenny <borisp@mellanox.com>
  M:    Aviad Yehezkel <aviadye@mellanox.com>
 -M:    Dave Watson <davejwatson@fb.com>
  M:    John Fastabend <john.fastabend@gmail.com>
  M:    Daniel Borkmann <daniel@iogearbox.net>
  M:    Jakub Kicinski <jakub.kicinski@netronome.com>
@@@ -11673,7 -11545,6 +11675,7 @@@ NSDEP
  M:    Matthias Maennich <maennich@google.com>
  S:    Maintained
  F:    scripts/nsdeps
 +F:    Documentation/core-api/symbol-namespaces.rst
  
  NTB AMD DRIVER
  M:    Shyam Sundar S K <Shyam-sundar.S-k@amd.com>
@@@ -11760,7 -11631,6 +11762,7 @@@ F:   drivers/nvme/target/fcloop.
  NVM EXPRESS TARGET DRIVER
  M:    Christoph Hellwig <hch@lst.de>
  M:    Sagi Grimberg <sagi@grimberg.me>
 +M:    Chaitanya Kulkarni <chaitanya.kulkarni@wdc.com>
  L:    linux-nvme@lists.infradead.org
  T:    git://git.infradead.org/nvme.git
  W:    http://git.infradead.org/nvme.git
@@@ -12442,15 -12312,12 +12444,15 @@@ F:        arch/parisc
  F:    Documentation/parisc/
  F:    drivers/parisc/
  F:    drivers/char/agp/parisc-agp.c
 +F:    drivers/input/misc/hp_sdc_rtc.c
  F:    drivers/input/serio/gscps2.c
 +F:    drivers/input/serio/hp_sdc*
  F:    drivers/parport/parport_gsc.*
  F:    drivers/tty/serial/8250/8250_gsc.c
  F:    drivers/video/fbdev/sti*
  F:    drivers/video/console/sti*
  F:    drivers/video/logo/logo_parisc*
 +F:    include/linux/hp_sdc.h
  
  PARMAN
  M:    Jiri Pirko <jiri@mellanox.com>
@@@ -12902,13 -12769,6 +12904,13 @@@ F: arch/*/events/
  F:    arch/*/events/*/*
  F:    tools/perf/
  
 +PERFORMANCE EVENTS SUBSYSTEM ARM64 PMU EVENTS
 +R:    John Garry <john.garry@huawei.com>
 +R:    Will Deacon <will@kernel.org>
 +L:    linux-arm-kernel@lists.infradead.org (moderated for non-subscribers)
 +S:    Supported
 +F:    tools/perf/pmu-events/arch/arm64/
 +
  PERSONALITY HANDLING
  M:    Christoph Hellwig <hch@infradead.org>
  L:    linux-abi-devel@lists.sourceforge.net
@@@ -12966,7 -12826,6 +12968,7 @@@ S:   Maintaine
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/brauner/linux.git
  F:    samples/pidfd/
  F:    tools/testing/selftests/pidfd/
 +F:    tools/testing/selftests/clone3/
  K:    (?i)pidfd
  K:    (?i)clone3
  K:    \b(clone_args|kernel_clone_args)\b
@@@ -13002,7 -12861,7 +13004,7 @@@ F:   Documentation/devicetree/bindings/pi
  
  PIN CONTROLLER - INTEL
  M:    Mika Westerberg <mika.westerberg@linux.intel.com>
 -M:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +M:    Andy Shevchenko <andy@kernel.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pinctrl/intel.git
  S:    Maintained
  F:    drivers/pinctrl/intel/
@@@ -13132,15 -12991,6 +13134,15 @@@ L: linux-scsi@vger.kernel.or
  S:    Supported
  F:    drivers/scsi/pm8001/
  
 +PM-GRAPH UTILITY
 +M:    "Todd E Brandt" <todd.e.brandt@linux.intel.com>
 +L:    linux-pm@vger.kernel.org
 +W:    https://01.org/pm-graph
 +B:    https://bugzilla.kernel.org/buglist.cgi?component=pm-graph&product=Tools
 +T:    git git://github.com/intel/pm-graph
 +S:    Supported
 +F:    tools/power/pm-graph
 +
  PNP SUPPORT
  M:    "Rafael J. Wysocki" <rafael.j.wysocki@intel.com>
  S:    Maintained
@@@ -13273,14 -13123,12 +13275,14 @@@ F:        Documentation/filesystems/proc.tx
  PROC SYSCTL
  M:    Luis Chamberlain <mcgrof@kernel.org>
  M:    Kees Cook <keescook@chromium.org>
 +M:    Iurii Zaikin <yzaikin@google.com>
  L:    linux-kernel@vger.kernel.org
  L:    linux-fsdevel@vger.kernel.org
  S:    Maintained
  F:    fs/proc/proc_sysctl.c
  F:    include/linux/sysctl.h
  F:    kernel/sysctl.c
 +F:    kernel/sysctl-test.c
  F:    tools/testing/selftests/sysctl/
  
  PS3 NETWORK SUPPORT
@@@ -13513,7 -13361,7 +13515,7 @@@ S:   Maintaine
  F:    drivers/scsi/qla1280.[ch]
  
  QLOGIC QLA2XXX FC-SCSI DRIVER
 -M:    qla2xxx-upstream@qlogic.com
 +M:    hmadhani@marvell.com
  L:    linux-scsi@vger.kernel.org
  S:    Supported
  F:    Documentation/scsi/LICENSE.qla2xxx
@@@ -13964,7 -13812,7 +13966,7 @@@ R:   Sergei Shtylyov <sergei.shtylyov@cog
  L:    netdev@vger.kernel.org
  L:    linux-renesas-soc@vger.kernel.org
  F:    Documentation/devicetree/bindings/net/renesas,*.txt
 -F:    Documentation/devicetree/bindings/net/sh_eth.txt
 +F:    Documentation/devicetree/bindings/net/renesas,*.yaml
  F:    drivers/net/ethernet/renesas/
  F:    include/linux/sh_eth.h
  
@@@ -14054,7 -13902,7 +14056,7 @@@ F:   drivers/mtd/nand/raw/r852.
  
  RISC-V ARCHITECTURE
  M:    Paul Walmsley <paul.walmsley@sifive.com>
 -M:    Palmer Dabbelt <palmer@sifive.com>
 +M:    Palmer Dabbelt <palmer@dabbelt.com>
  M:    Albert Ou <aou@eecs.berkeley.edu>
  L:    linux-riscv@lists.infradead.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/riscv/linux.git
@@@ -14105,12 -13953,6 +14107,12 @@@ L: linux-serial@vger.kernel.or
  S:    Odd Fixes
  F:    drivers/tty/serial/rp2.*
  
 +ROHM BH1750 AMBIENT LIGHT SENSOR DRIVER
 +M:    Tomasz Duszynski <tduszyns@gmail.com>
 +S:    Maintained
 +F:    drivers/iio/light/bh1750.c
 +F:    Documentation/devicetree/bindings/iio/light/bh1750.yaml
 +
  ROHM MULTIFUNCTION BD9571MWV-M PMIC DEVICE DRIVERS
  M:    Marek Vasut <marek.vasut+renesas@gmail.com>
  L:    linux-kernel@vger.kernel.org
@@@ -14937,7 -14779,7 +14939,7 @@@ F:   drivers/media/usb/siano
  F:    drivers/media/mmc/siano/
  
  SIFIVE DRIVERS
 -M:    Palmer Dabbelt <palmer@sifive.com>
 +M:    Palmer Dabbelt <palmer@dabbelt.com>
  M:    Paul Walmsley <paul.walmsley@sifive.com>
  L:    linux-riscv@lists.infradead.org
  T:    git git://github.com/sifive/riscv-linux.git
@@@ -14947,7 -14789,7 +14949,7 @@@ N:   sifiv
  
  SIFIVE FU540 SYSTEM-ON-CHIP
  M:    Paul Walmsley <paul.walmsley@sifive.com>
 -M:    Palmer Dabbelt <palmer@sifive.com>
 +M:    Palmer Dabbelt <palmer@dabbelt.com>
  L:    linux-riscv@lists.infradead.org
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pjw/sifive.git
  S:    Supported
@@@ -14962,11 -14804,6 +14964,11 @@@ S: Maintaine
  F:    drivers/input/touchscreen/silead.c
  F:    drivers/platform/x86/touchscreen_dmi.c
  
 +SILICON LABS WIRELESS DRIVERS (for WFxxx series)
 +M:    Jérôme Pouiller <jerome.pouiller@silabs.com>
 +S:    Supported
 +F:    drivers/staging/wfx/
 +
  SILICON MOTION SM712 FRAME BUFFER DRIVER
  M:    Sudip Mukherjee <sudipm.mukherjee@gmail.com>
  M:    Teddy Wang <teddy.wang@siliconmotion.com>
@@@ -15166,7 -15003,7 +15168,7 @@@ F:   include/media/soc_camera.
  F:    drivers/staging/media/soc_camera/
  
  SOCIONEXT SYNQUACER I2C DRIVER
 -M:    Ard Biesheuvel <ard.biesheuvel@linaro.org>
 +M:    Ard Biesheuvel <ardb@kernel.org>
  L:    linux-i2c@vger.kernel.org
  S:    Maintained
  F:    drivers/i2c/busses/i2c-synquacer.c
@@@ -15301,14 -15138,6 +15303,14 @@@ S: Maintaine
  F:    drivers/media/i2c/imx274.c
  F:    Documentation/devicetree/bindings/media/i2c/imx274.txt
  
 +SONY IMX290 SENSOR DRIVER
 +M:    Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
 +L:    linux-media@vger.kernel.org
 +T:    git git://linuxtv.org/media_tree.git
 +S:    Maintained
 +F:    drivers/media/i2c/imx290.c
 +F:    Documentation/devicetree/bindings/media/i2c/imx290.txt
 +
  SONY IMX319 SENSOR DRIVER
  M:    Bingbu Cao <bingbu.cao@intel.com>
  L:    linux-media@vger.kernel.org
@@@ -15456,6 -15285,7 +15458,6 @@@ F:   arch/arm/boot/dts/spear
  F:    arch/arm/mach-spear/
  
  SPI NOR SUBSYSTEM
 -M:    Marek Vasut <marek.vasut@gmail.com>
  M:    Tudor Ambarus <tudor.ambarus@microchip.com>
  L:    linux-mtd@lists.infradead.org
  W:    http://www.linux-mtd.infradead.org/
@@@ -15632,14 -15462,6 +15634,14 @@@ L: linux-wireless@vger.kernel.or
  S:    Supported
  F:    drivers/staging/wilc1000/
  
 +STAGING - SEPS525 LCD CONTROLLER DRIVERS
 +M:    Michael Hennerich <michael.hennerich@analog.com>
 +M:    Beniamin Bia <beniamin.bia@analog.com>
 +L:    linux-fbdev@vger.kernel.org
 +S:    Supported
 +F:    drivers/staging/fbtft/fb_seps525.c
 +F:    Documentation/devicetree/bindings/iio/adc/adi,ad7606.yaml
 +
  STAGING SUBSYSTEM
  M:    Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  T:    git git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/staging.git
@@@ -16382,12 -16204,6 +16384,12 @@@ S: Maintaine
  F:    drivers/media/platform/davinci/
  F:    include/media/davinci/
  
 +TI ENHANCED QUADRATURE ENCODER PULSE (eQEP) DRIVER
 +R:    David Lechner <david@lechnology.com>
 +L:    linux-iio@vger.kernel.org
 +F:    Documentation/devicetree/bindings/counter/ti-eqep.yaml
 +F:    drivers/counter/ti-eqep.c
 +
  TI ETHERNET SWITCH DRIVER (CPSW)
  R:    Grygorii Strashko <grygorii.strashko@ti.com>
  L:    linux-omap@vger.kernel.org
@@@ -16485,7 -16301,6 +16487,7 @@@ W:   http://linuxtv.org
  Q:    http://patchwork.linuxtv.org/project/linux-media/list/
  S:    Maintained
  F:    drivers/media/platform/ti-vpe/
 +F:    Documentation/devicetree/bindings/media/ti,vpe.yaml
  
  TI WILINK WIRELESS DRIVERS
  L:    linux-wireless@vger.kernel.org
@@@ -16556,13 -16371,6 +16558,13 @@@ S: Maintaine
  F:    Documentation/hwmon/tmp401.rst
  F:    drivers/hwmon/tmp401.c
  
 +TMP513 HARDWARE MONITOR DRIVER
 +M:    Eric Tremblay <etremblay@distech-controls.com>
 +L:    linux-hwmon@vger.kernel.org
 +S:    Maintained
 +F:    Documentation/hwmon/tmp513.rst
 +F:    drivers/hwmon/tmp513.c
 +
  TMPFS (SHMEM FILESYSTEM)
  M:    Hugh Dickins <hughd@google.com>
  L:    linux-mm@kvack.org
@@@ -16774,9 -16582,10 +16776,9 @@@ F:  drivers/media/pci/tw686x
  
  UBI FILE SYSTEM (UBIFS)
  M:    Richard Weinberger <richard@nod.at>
 -M:    Artem Bityutskiy <dedekind1@gmail.com>
 -M:    Adrian Hunter <adrian.hunter@intel.com>
  L:    linux-mtd@lists.infradead.org
 -T:    git git://git.infradead.org/ubifs-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes
  W:    http://www.linux-mtd.infradead.org/doc/ubifs.html
  S:    Supported
  F:    Documentation/filesystems/ubifs.txt
@@@ -16891,11 -16700,11 +16893,11 @@@ S:        Maintaine
  F:    drivers/scsi/ufs/ufs-mediatek*
  
  UNSORTED BLOCK IMAGES (UBI)
 -M:    Artem Bityutskiy <dedekind1@gmail.com>
  M:    Richard Weinberger <richard@nod.at>
  W:    http://www.linux-mtd.infradead.org/
  L:    linux-mtd@lists.infradead.org
 -T:    git git://git.infradead.org/ubifs-2.6.git
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git next
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/rw/ubifs.git fixes
  S:    Supported
  F:    drivers/mtd/ubi/
  F:    include/linux/mtd/ubi.h
@@@ -16955,6 -16764,13 +16957,6 @@@ W:  http://www.linux-usb.org/usbne
  S:    Maintained
  F:    drivers/net/usb/dm9601.c
  
 -USB DIAMOND RIO500 DRIVER
 -M:    Cesar Miquel <miquel@df.uba.ar>
 -L:    rio500-users@lists.sourceforge.net
 -W:    http://rio500.sourceforge.net
 -S:    Maintained
 -F:    drivers/usb/misc/rio500*
 -
  USB EHCI DRIVER
  M:    Alan Stern <stern@rowland.harvard.edu>
  L:    linux-usb@vger.kernel.org
@@@ -17382,7 -17198,6 +17384,7 @@@ F:   include/media/videobuf2-
  
  VIMC VIRTUAL MEDIA CONTROLLER DRIVER
  M:    Helen Koike <helen.koike@collabora.com>
 +R:    Shuah Khan <skhan@linuxfoundation.org>
  L:    linux-media@vger.kernel.org
  T:    git git://linuxtv.org/media_tree.git
  W:    https://linuxtv.org
@@@ -17398,7 -17213,6 +17400,7 @@@ F:   virt/lib
  
  VIRTIO AND VHOST VSOCK DRIVER
  M:    Stefan Hajnoczi <stefanha@redhat.com>
 +M:    Stefano Garzarella <sgarzare@redhat.com>
  L:    kvm@vger.kernel.org
  L:    virtualization@lists.linux-foundation.org
  L:    netdev@vger.kernel.org
@@@ -17530,14 -17344,6 +17532,14 @@@ S: Maintaine
  F:    drivers/input/serio/userio.c
  F:    include/uapi/linux/userio.h
  
 +VITESSE FELIX ETHERNET SWITCH DRIVER
 +M:    Vladimir Oltean <vladimir.oltean@nxp.com>
 +M:    Claudiu Manoil <claudiu.manoil@nxp.com>
 +L:    netdev@vger.kernel.org
 +S:    Maintained
 +F:    drivers/net/dsa/ocelot/*
 +F:    net/dsa/tag_ocelot.c
 +
  VIVID VIRTUAL VIDEO DRIVER
  M:    Hans Verkuil <hverkuil@xs4all.nl>
  L:    linux-media@vger.kernel.org
@@@ -17631,25 -17437,13 +17633,25 @@@ F:        include/linux/regulator
  K:    regulator_get_optional
  
  VRF
 -M:    David Ahern <dsa@cumulusnetworks.com>
 +M:    David Ahern <dsahern@kernel.org>
  M:    Shrijeet Mukherjee <shrijeet@gmail.com>
  L:    netdev@vger.kernel.org
  S:    Maintained
  F:    drivers/net/vrf.c
  F:    Documentation/networking/vrf.txt
  
 +VSPRINTF
 +M:    Petr Mladek <pmladek@suse.com>
 +M:    Steven Rostedt <rostedt@goodmis.org>
 +M:    Sergey Senozhatsky <sergey.senozhatsky@gmail.com>
 +R:    Andy Shevchenko <andriy.shevchenko@linux.intel.com>
 +R:    Rasmus Villemoes <linux@rasmusvillemoes.dk>
 +T:    git git://git.kernel.org/pub/scm/linux/kernel/git/pmladek/printk.git
 +S:    Maintained
 +F:    lib/vsprintf.c
 +F:    lib/test_printf.c
 +F:    Documentation/core-api/printk-formats.rst
 +
  VT1211 HARDWARE MONITOR DRIVER
  M:    Juerg Haefliger <juergh@gmail.com>
  L:    linux-hwmon@vger.kernel.org
@@@ -17664,8 -17458,10 +17666,8 @@@ S:  Maintaine
  F:    drivers/hwmon/vt8231.c
  
  VUB300 USB to SDIO/SD/MMC bridge chip
 -M:    Tony Olech <tony.olech@elandigitalsystems.com>
  L:    linux-mmc@vger.kernel.org
 -L:    linux-usb@vger.kernel.org
 -S:    Supported
 +S:    Orphan
  F:    drivers/mmc/host/vub300.c
  
  W1 DALLAS'S 1-WIRE BUS
@@@ -18242,7 -18038,6 +18244,7 @@@ F:   Documentation/vm/zsmalloc.rs
  ZSWAP COMPRESSED SWAP CACHING
  M:    Seth Jennings <sjenning@redhat.com>
  M:    Dan Streetman <ddstreet@ieee.org>
 +M:    Vitaly Wool <vitaly.wool@konsulko.com>
  L:    linux-mm@kvack.org
  S:    Maintained
  F:    mm/zswap.c
diff --combined drivers/clk/at91/sckc.c
@@@ -76,10 -76,7 +76,10 @@@ static int clk_slow_osc_prepare(struct 
  
        writel(tmp | osc->bits->cr_osc32en, sckcr);
  
 -      usleep_range(osc->startup_usec, osc->startup_usec + 1);
 +      if (system_state < SYSTEM_RUNNING)
 +              udelay(osc->startup_usec);
 +      else
 +              usleep_range(osc->startup_usec, osc->startup_usec + 1);
  
        return 0;
  }
@@@ -190,10 -187,7 +190,10 @@@ static int clk_slow_rc_osc_prepare(stru
  
        writel(readl(sckcr) | osc->bits->cr_rcen, sckcr);
  
 -      usleep_range(osc->startup_usec, osc->startup_usec + 1);
 +      if (system_state < SYSTEM_RUNNING)
 +              udelay(osc->startup_usec);
 +      else
 +              usleep_range(osc->startup_usec, osc->startup_usec + 1);
  
        return 0;
  }
@@@ -294,10 -288,7 +294,10 @@@ static int clk_sam9x5_slow_set_parent(s
  
        writel(tmp, sckcr);
  
 -      usleep_range(SLOWCK_SW_TIME_USEC, SLOWCK_SW_TIME_USEC + 1);
 +      if (system_state < SYSTEM_RUNNING)
 +              udelay(SLOWCK_SW_TIME_USEC);
 +      else
 +              usleep_range(SLOWCK_SW_TIME_USEC, SLOWCK_SW_TIME_USEC + 1);
  
        return 0;
  }
@@@ -487,8 -478,7 +487,7 @@@ static void __init of_sam9x60_sckc_setu
        if (IS_ERR(slow_osc))
                goto unregister_slow_rc;
  
-       clk_data = kzalloc(sizeof(*clk_data) + (2 * sizeof(struct clk_hw *)),
-                          GFP_KERNEL);
+       clk_data = kzalloc(struct_size(clk_data, hws, 2), GFP_KERNEL);
        if (!clk_data)
                goto unregister_slow_osc;
  
@@@ -542,10 -532,7 +541,10 @@@ static int clk_sama5d4_slow_osc_prepare
                return 0;
        }
  
 -      usleep_range(osc->startup_usec, osc->startup_usec + 1);
 +      if (system_state < SYSTEM_RUNNING)
 +              udelay(osc->startup_usec);
 +      else
 +              usleep_range(osc->startup_usec, osc->startup_usec + 1);
        osc->prepared = true;
  
        return 0;
@@@ -15,7 -15,7 +15,7 @@@
  
  #include "clk-aspeed.h"
  
- #define ASPEED_G6_NUM_CLKS            67
+ #define ASPEED_G6_NUM_CLKS            71
  
  #define ASPEED_G6_SILICON_REV         0x004
  
@@@ -40,6 -40,9 +40,9 @@@
  
  #define ASPEED_G6_STRAP1              0x500
  
+ #define ASPEED_MAC12_CLK_DLY          0x340
+ #define ASPEED_MAC34_CLK_DLY          0x350
  /* Globally visible clocks */
  static DEFINE_SPINLOCK(aspeed_g6_clk_lock);
  
@@@ -116,8 -119,6 +119,6 @@@ static const struct aspeed_gate_data as
        [ASPEED_CLK_GATE_FSICLK]        = { 62,  59, "fsiclk-gate",     NULL,    0 },   /* FSI */
  };
  
- static const char * const eclk_parent_names[] = { "mpll", "hpll", "dpll" };
  static const struct clk_div_table ast2600_eclk_div_table[] = {
        { 0x0, 2 },
        { 0x1, 2 },
@@@ -266,11 -267,10 +267,11 @@@ static int aspeed_g6_clk_enable(struct 
  
        /* Enable clock */
        if (gate->flags & CLK_GATE_SET_TO_DISABLE) {
 -              regmap_write(gate->map, get_clock_reg(gate), clk);
 -      } else {
 -              /* Use set to clear register */
 +              /* Clock is clear to enable, so use set to clear register */
                regmap_write(gate->map, get_clock_reg(gate) + 0x04, clk);
 +      } else {
 +              /* Clock is set to enable, so use write to set register */
 +              regmap_write(gate->map, get_clock_reg(gate), clk);
        }
  
        if (gate->reset_idx >= 0) {
@@@ -486,6 -486,11 +487,11 @@@ static int aspeed_g6_clk_probe(struct p
                return PTR_ERR(hw);
        aspeed_g6_clk_data->hws[ASPEED_CLK_SDIO] = hw;
  
+       /* MAC1/2 RMII 50MHz RCLK */
+       hw = clk_hw_register_fixed_rate(dev, "mac12rclk", "hpll", 0, 50000000);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
        /* MAC1/2 AHB bus clock divider */
        hw = clk_hw_register_divider_table(dev, "mac12", "hpll", 0,
                        scu_g6_base + ASPEED_G6_CLK_SELECTION1, 16, 3, 0,
                return PTR_ERR(hw);
        aspeed_g6_clk_data->hws[ASPEED_CLK_MAC12] = hw;
  
+       /* RMII1 50MHz (RCLK) output enable */
+       hw = clk_hw_register_gate(dev, "mac1rclk", "mac12rclk", 0,
+                       scu_g6_base + ASPEED_MAC12_CLK_DLY, 29, 0,
+                       &aspeed_g6_clk_lock);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
+       aspeed_g6_clk_data->hws[ASPEED_CLK_MAC1RCLK] = hw;
+       /* RMII2 50MHz (RCLK) output enable */
+       hw = clk_hw_register_gate(dev, "mac2rclk", "mac12rclk", 0,
+                       scu_g6_base + ASPEED_MAC12_CLK_DLY, 30, 0,
+                       &aspeed_g6_clk_lock);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
+       aspeed_g6_clk_data->hws[ASPEED_CLK_MAC2RCLK] = hw;
+       /* MAC1/2 RMII 50MHz RCLK */
+       hw = clk_hw_register_fixed_rate(dev, "mac34rclk", "hclk", 0, 50000000);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
        /* MAC3/4 AHB bus clock divider */
        hw = clk_hw_register_divider_table(dev, "mac34", "hpll", 0,
                        scu_g6_base + 0x310, 24, 3, 0,
                return PTR_ERR(hw);
        aspeed_g6_clk_data->hws[ASPEED_CLK_MAC34] = hw;
  
+       /* RMII3 50MHz (RCLK) output enable */
+       hw = clk_hw_register_gate(dev, "mac3rclk", "mac34rclk", 0,
+                       scu_g6_base + ASPEED_MAC34_CLK_DLY, 29, 0,
+                       &aspeed_g6_clk_lock);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
+       aspeed_g6_clk_data->hws[ASPEED_CLK_MAC3RCLK] = hw;
+       /* RMII4 50MHz (RCLK) output enable */
+       hw = clk_hw_register_gate(dev, "mac4rclk", "mac34rclk", 0,
+                       scu_g6_base + ASPEED_MAC34_CLK_DLY, 30, 0,
+                       &aspeed_g6_clk_lock);
+       if (IS_ERR(hw))
+               return PTR_ERR(hw);
+       aspeed_g6_clk_data->hws[ASPEED_CLK_MAC4RCLK] = hw;
        /* LPC Host (LHCLK) clock divider */
        hw = clk_hw_register_divider_table(dev, "lhclk", "hpll", 0,
                        scu_g6_base + ASPEED_G6_CLK_SELECTION1, 20, 3, 0,
@@@ -26,73 -26,6 +26,6 @@@ static u32 share_count_disp
  static u32 share_count_pdm;
  static u32 share_count_nand;
  
- static const struct imx_pll14xx_rate_table imx8mm_pll1416x_tbl[] = {
-       PLL_1416X_RATE(1800000000U, 225, 3, 0),
-       PLL_1416X_RATE(1600000000U, 200, 3, 0),
-       PLL_1416X_RATE(1200000000U, 300, 3, 1),
-       PLL_1416X_RATE(1000000000U, 250, 3, 1),
-       PLL_1416X_RATE(800000000U,  200, 3, 1),
-       PLL_1416X_RATE(750000000U,  250, 2, 2),
-       PLL_1416X_RATE(700000000U,  350, 3, 2),
-       PLL_1416X_RATE(600000000U,  300, 3, 2),
- };
- static const struct imx_pll14xx_rate_table imx8mm_audiopll_tbl[] = {
-       PLL_1443X_RATE(393216000U, 262, 2, 3, 9437),
-       PLL_1443X_RATE(361267200U, 361, 3, 3, 17511),
- };
- static const struct imx_pll14xx_rate_table imx8mm_videopll_tbl[] = {
-       PLL_1443X_RATE(650000000U, 325, 3, 2, 0),
-       PLL_1443X_RATE(594000000U, 198, 2, 2, 0),
- };
- static const struct imx_pll14xx_rate_table imx8mm_drampll_tbl[] = {
-       PLL_1443X_RATE(650000000U, 325, 3, 2, 0),
- };
- static struct imx_pll14xx_clk imx8mm_audio_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mm_audiopll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_audiopll_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_video_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mm_videopll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_videopll_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_dram_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mm_drampll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_drampll_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_arm_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mm_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_gpu_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mm_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_vpu_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mm_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mm_sys_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mm_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mm_pll1416x_tbl),
- };
  static const char *pll_ref_sels[] = { "osc_24m", "dummy", "dummy", "dummy", };
  static const char *audio_pll1_bypass_sels[] = {"audio_pll1", "audio_pll1_ref_sel", };
  static const char *audio_pll2_bypass_sels[] = {"audio_pll2", "audio_pll2_ref_sel", };
@@@ -101,8 -34,6 +34,6 @@@ static const char *dram_pll_bypass_sels
  static const char *gpu_pll_bypass_sels[] = {"gpu_pll", "gpu_pll_ref_sel", };
  static const char *vpu_pll_bypass_sels[] = {"vpu_pll", "vpu_pll_ref_sel", };
  static const char *arm_pll_bypass_sels[] = {"arm_pll", "arm_pll_ref_sel", };
- static const char *sys_pll1_bypass_sels[] = {"sys_pll1", "sys_pll1_ref_sel", };
- static const char *sys_pll2_bypass_sels[] = {"sys_pll2", "sys_pll2_ref_sel", };
  static const char *sys_pll3_bypass_sels[] = {"sys_pll3", "sys_pll3_ref_sel", };
  
  /* CCM ROOT */
@@@ -392,20 -323,18 +323,18 @@@ static int imx8mm_clocks_probe(struct p
        clks[IMX8MM_GPU_PLL_REF_SEL] = imx_clk_mux("gpu_pll_ref_sel", base + 0x64, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MM_VPU_PLL_REF_SEL] = imx_clk_mux("vpu_pll_ref_sel", base + 0x74, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MM_ARM_PLL_REF_SEL] = imx_clk_mux("arm_pll_ref_sel", base + 0x84, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
-       clks[IMX8MM_SYS_PLL1_REF_SEL] = imx_clk_mux("sys_pll1_ref_sel", base + 0x94, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
-       clks[IMX8MM_SYS_PLL2_REF_SEL] = imx_clk_mux("sys_pll2_ref_sel", base + 0x104, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MM_SYS_PLL3_REF_SEL] = imx_clk_mux("sys_pll3_ref_sel", base + 0x114, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
  
-       clks[IMX8MM_AUDIO_PLL1] = imx_clk_pll14xx("audio_pll1", "audio_pll1_ref_sel", base, &imx8mm_audio_pll);
-       clks[IMX8MM_AUDIO_PLL2] = imx_clk_pll14xx("audio_pll2", "audio_pll2_ref_sel", base + 0x14, &imx8mm_audio_pll);
-       clks[IMX8MM_VIDEO_PLL1] = imx_clk_pll14xx("video_pll1", "video_pll1_ref_sel", base + 0x28, &imx8mm_video_pll);
-       clks[IMX8MM_DRAM_PLL] = imx_clk_pll14xx("dram_pll", "dram_pll_ref_sel", base + 0x50, &imx8mm_dram_pll);
-       clks[IMX8MM_GPU_PLL] = imx_clk_pll14xx("gpu_pll", "gpu_pll_ref_sel", base + 0x64, &imx8mm_gpu_pll);
-       clks[IMX8MM_VPU_PLL] = imx_clk_pll14xx("vpu_pll", "vpu_pll_ref_sel", base + 0x74, &imx8mm_vpu_pll);
-       clks[IMX8MM_ARM_PLL] = imx_clk_pll14xx("arm_pll", "arm_pll_ref_sel", base + 0x84, &imx8mm_arm_pll);
-       clks[IMX8MM_SYS_PLL1] = imx_clk_pll14xx("sys_pll1", "sys_pll1_ref_sel", base + 0x94, &imx8mm_sys_pll);
-       clks[IMX8MM_SYS_PLL2] = imx_clk_pll14xx("sys_pll2", "sys_pll2_ref_sel", base + 0x104, &imx8mm_sys_pll);
-       clks[IMX8MM_SYS_PLL3] = imx_clk_pll14xx("sys_pll3", "sys_pll3_ref_sel", base + 0x114, &imx8mm_sys_pll);
+       clks[IMX8MM_AUDIO_PLL1] = imx_clk_pll14xx("audio_pll1", "audio_pll1_ref_sel", base, &imx_1443x_pll);
+       clks[IMX8MM_AUDIO_PLL2] = imx_clk_pll14xx("audio_pll2", "audio_pll2_ref_sel", base + 0x14, &imx_1443x_pll);
+       clks[IMX8MM_VIDEO_PLL1] = imx_clk_pll14xx("video_pll1", "video_pll1_ref_sel", base + 0x28, &imx_1443x_pll);
+       clks[IMX8MM_DRAM_PLL] = imx_clk_pll14xx("dram_pll", "dram_pll_ref_sel", base + 0x50, &imx_1443x_pll);
+       clks[IMX8MM_GPU_PLL] = imx_clk_pll14xx("gpu_pll", "gpu_pll_ref_sel", base + 0x64, &imx_1416x_pll);
+       clks[IMX8MM_VPU_PLL] = imx_clk_pll14xx("vpu_pll", "vpu_pll_ref_sel", base + 0x74, &imx_1416x_pll);
+       clks[IMX8MM_ARM_PLL] = imx_clk_pll14xx("arm_pll", "arm_pll_ref_sel", base + 0x84, &imx_1416x_pll);
+       clks[IMX8MM_SYS_PLL1] = imx_clk_fixed("sys_pll1", 800000000);
+       clks[IMX8MM_SYS_PLL2] = imx_clk_fixed("sys_pll2", 1000000000);
+       clks[IMX8MM_SYS_PLL3] = imx_clk_pll14xx("sys_pll3", "sys_pll3_ref_sel", base + 0x114, &imx_1416x_pll);
  
        /* PLL bypass out */
        clks[IMX8MM_AUDIO_PLL1_BYPASS] = imx_clk_mux_flags("audio_pll1_bypass", base, 16, 1, audio_pll1_bypass_sels, ARRAY_SIZE(audio_pll1_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MM_GPU_PLL_BYPASS] = imx_clk_mux_flags("gpu_pll_bypass", base + 0x64, 28, 1, gpu_pll_bypass_sels, ARRAY_SIZE(gpu_pll_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MM_VPU_PLL_BYPASS] = imx_clk_mux_flags("vpu_pll_bypass", base + 0x74, 28, 1, vpu_pll_bypass_sels, ARRAY_SIZE(vpu_pll_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MM_ARM_PLL_BYPASS] = imx_clk_mux_flags("arm_pll_bypass", base + 0x84, 28, 1, arm_pll_bypass_sels, ARRAY_SIZE(arm_pll_bypass_sels), CLK_SET_RATE_PARENT);
-       clks[IMX8MM_SYS_PLL1_BYPASS] = imx_clk_mux_flags("sys_pll1_bypass", base + 0x94, 28, 1, sys_pll1_bypass_sels, ARRAY_SIZE(sys_pll1_bypass_sels), CLK_SET_RATE_PARENT);
-       clks[IMX8MM_SYS_PLL2_BYPASS] = imx_clk_mux_flags("sys_pll2_bypass", base + 0x104, 28, 1, sys_pll2_bypass_sels, ARRAY_SIZE(sys_pll2_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MM_SYS_PLL3_BYPASS] = imx_clk_mux_flags("sys_pll3_bypass", base + 0x114, 28, 1, sys_pll3_bypass_sels, ARRAY_SIZE(sys_pll3_bypass_sels), CLK_SET_RATE_PARENT);
  
        /* PLL out gate */
        clks[IMX8MM_GPU_PLL_OUT] = imx_clk_gate("gpu_pll_out", "gpu_pll_bypass", base + 0x64, 11);
        clks[IMX8MM_VPU_PLL_OUT] = imx_clk_gate("vpu_pll_out", "vpu_pll_bypass", base + 0x74, 11);
        clks[IMX8MM_ARM_PLL_OUT] = imx_clk_gate("arm_pll_out", "arm_pll_bypass", base + 0x84, 11);
-       clks[IMX8MM_SYS_PLL1_OUT] = imx_clk_gate("sys_pll1_out", "sys_pll1_bypass", base + 0x94, 11);
-       clks[IMX8MM_SYS_PLL2_OUT] = imx_clk_gate("sys_pll2_out", "sys_pll2_bypass", base + 0x104, 11);
        clks[IMX8MM_SYS_PLL3_OUT] = imx_clk_gate("sys_pll3_out", "sys_pll3_bypass", base + 0x114, 11);
  
-       /* SYS PLL fixed output */
-       clks[IMX8MM_SYS_PLL1_40M] = imx_clk_fixed_factor("sys_pll1_40m", "sys_pll1_out", 1, 20);
-       clks[IMX8MM_SYS_PLL1_80M] = imx_clk_fixed_factor("sys_pll1_80m", "sys_pll1_out", 1, 10);
-       clks[IMX8MM_SYS_PLL1_100M] = imx_clk_fixed_factor("sys_pll1_100m", "sys_pll1_out", 1, 8);
-       clks[IMX8MM_SYS_PLL1_133M] = imx_clk_fixed_factor("sys_pll1_133m", "sys_pll1_out", 1, 6);
-       clks[IMX8MM_SYS_PLL1_160M] = imx_clk_fixed_factor("sys_pll1_160m", "sys_pll1_out", 1, 5);
-       clks[IMX8MM_SYS_PLL1_200M] = imx_clk_fixed_factor("sys_pll1_200m", "sys_pll1_out", 1, 4);
-       clks[IMX8MM_SYS_PLL1_266M] = imx_clk_fixed_factor("sys_pll1_266m", "sys_pll1_out", 1, 3);
-       clks[IMX8MM_SYS_PLL1_400M] = imx_clk_fixed_factor("sys_pll1_400m", "sys_pll1_out", 1, 2);
+       /* SYS PLL1 fixed output */
+       clks[IMX8MM_SYS_PLL1_40M_CG] = imx_clk_gate("sys_pll1_40m_cg", "sys_pll1", base + 0x94, 27);
+       clks[IMX8MM_SYS_PLL1_80M_CG] = imx_clk_gate("sys_pll1_80m_cg", "sys_pll1", base + 0x94, 25);
+       clks[IMX8MM_SYS_PLL1_100M_CG] = imx_clk_gate("sys_pll1_100m_cg", "sys_pll1", base + 0x94, 23);
+       clks[IMX8MM_SYS_PLL1_133M_CG] = imx_clk_gate("sys_pll1_133m_cg", "sys_pll1", base + 0x94, 21);
+       clks[IMX8MM_SYS_PLL1_160M_CG] = imx_clk_gate("sys_pll1_160m_cg", "sys_pll1", base + 0x94, 19);
+       clks[IMX8MM_SYS_PLL1_200M_CG] = imx_clk_gate("sys_pll1_200m_cg", "sys_pll1", base + 0x94, 17);
+       clks[IMX8MM_SYS_PLL1_266M_CG] = imx_clk_gate("sys_pll1_266m_cg", "sys_pll1", base + 0x94, 15);
+       clks[IMX8MM_SYS_PLL1_400M_CG] = imx_clk_gate("sys_pll1_400m_cg", "sys_pll1", base + 0x94, 13);
+       clks[IMX8MM_SYS_PLL1_OUT] = imx_clk_gate("sys_pll1_out", "sys_pll1", base + 0x94, 11);
+       clks[IMX8MM_SYS_PLL1_40M] = imx_clk_fixed_factor("sys_pll1_40m", "sys_pll1_40m_cg", 1, 20);
+       clks[IMX8MM_SYS_PLL1_80M] = imx_clk_fixed_factor("sys_pll1_80m", "sys_pll1_80m_cg", 1, 10);
+       clks[IMX8MM_SYS_PLL1_100M] = imx_clk_fixed_factor("sys_pll1_100m", "sys_pll1_100m_cg", 1, 8);
+       clks[IMX8MM_SYS_PLL1_133M] = imx_clk_fixed_factor("sys_pll1_133m", "sys_pll1_133m_cg", 1, 6);
+       clks[IMX8MM_SYS_PLL1_160M] = imx_clk_fixed_factor("sys_pll1_160m", "sys_pll1_160m_cg", 1, 5);
+       clks[IMX8MM_SYS_PLL1_200M] = imx_clk_fixed_factor("sys_pll1_200m", "sys_pll1_200m_cg", 1, 4);
+       clks[IMX8MM_SYS_PLL1_266M] = imx_clk_fixed_factor("sys_pll1_266m", "sys_pll1_266m_cg", 1, 3);
+       clks[IMX8MM_SYS_PLL1_400M] = imx_clk_fixed_factor("sys_pll1_400m", "sys_pll1_400m_cg", 1, 2);
        clks[IMX8MM_SYS_PLL1_800M] = imx_clk_fixed_factor("sys_pll1_800m", "sys_pll1_out", 1, 1);
  
-       clks[IMX8MM_SYS_PLL2_50M] = imx_clk_fixed_factor("sys_pll2_50m", "sys_pll2_out", 1, 20);
-       clks[IMX8MM_SYS_PLL2_100M] = imx_clk_fixed_factor("sys_pll2_100m", "sys_pll2_out", 1, 10);
-       clks[IMX8MM_SYS_PLL2_125M] = imx_clk_fixed_factor("sys_pll2_125m", "sys_pll2_out", 1, 8);
-       clks[IMX8MM_SYS_PLL2_166M] = imx_clk_fixed_factor("sys_pll2_166m", "sys_pll2_out", 1, 6);
-       clks[IMX8MM_SYS_PLL2_200M] = imx_clk_fixed_factor("sys_pll2_200m", "sys_pll2_out", 1, 5);
-       clks[IMX8MM_SYS_PLL2_250M] = imx_clk_fixed_factor("sys_pll2_250m", "sys_pll2_out", 1, 4);
-       clks[IMX8MM_SYS_PLL2_333M] = imx_clk_fixed_factor("sys_pll2_333m", "sys_pll2_out", 1, 3);
-       clks[IMX8MM_SYS_PLL2_500M] = imx_clk_fixed_factor("sys_pll2_500m", "sys_pll2_out", 1, 2);
+       /* SYS PLL2 fixed output */
+       clks[IMX8MM_SYS_PLL2_50M_CG] = imx_clk_gate("sys_pll2_50m_cg", "sys_pll2", base + 0x104, 27);
+       clks[IMX8MM_SYS_PLL2_100M_CG] = imx_clk_gate("sys_pll2_100m_cg", "sys_pll2", base + 0x104, 25);
+       clks[IMX8MM_SYS_PLL2_125M_CG] = imx_clk_gate("sys_pll2_125m_cg", "sys_pll2", base + 0x104, 23);
+       clks[IMX8MM_SYS_PLL2_166M_CG] = imx_clk_gate("sys_pll2_166m_cg", "sys_pll2", base + 0x104, 21);
+       clks[IMX8MM_SYS_PLL2_200M_CG] = imx_clk_gate("sys_pll2_200m_cg", "sys_pll2", base + 0x104, 19);
+       clks[IMX8MM_SYS_PLL2_250M_CG] = imx_clk_gate("sys_pll2_250m_cg", "sys_pll2", base + 0x104, 17);
+       clks[IMX8MM_SYS_PLL2_333M_CG] = imx_clk_gate("sys_pll2_333m_cg", "sys_pll2", base + 0x104, 15);
+       clks[IMX8MM_SYS_PLL2_500M_CG] = imx_clk_gate("sys_pll2_500m_cg", "sys_pll2", base + 0x104, 13);
+       clks[IMX8MM_SYS_PLL2_OUT] = imx_clk_gate("sys_pll2_out", "sys_pll2", base + 0x104, 11);
+       clks[IMX8MM_SYS_PLL2_50M] = imx_clk_fixed_factor("sys_pll2_50m", "sys_pll2_50m_cg", 1, 20);
+       clks[IMX8MM_SYS_PLL2_100M] = imx_clk_fixed_factor("sys_pll2_100m", "sys_pll2_100m_cg", 1, 10);
+       clks[IMX8MM_SYS_PLL2_125M] = imx_clk_fixed_factor("sys_pll2_125m", "sys_pll2_125m_cg", 1, 8);
+       clks[IMX8MM_SYS_PLL2_166M] = imx_clk_fixed_factor("sys_pll2_166m", "sys_pll2_166m_cg", 1, 6);
+       clks[IMX8MM_SYS_PLL2_200M] = imx_clk_fixed_factor("sys_pll2_200m", "sys_pll2_200m_cg", 1, 5);
+       clks[IMX8MM_SYS_PLL2_250M] = imx_clk_fixed_factor("sys_pll2_250m", "sys_pll2_250m_cg", 1, 4);
+       clks[IMX8MM_SYS_PLL2_333M] = imx_clk_fixed_factor("sys_pll2_333m", "sys_pll2_333m_cg", 1, 3);
+       clks[IMX8MM_SYS_PLL2_500M] = imx_clk_fixed_factor("sys_pll2_500m", "sys_pll2_500m_cg", 1, 2);
        clks[IMX8MM_SYS_PLL2_1000M] = imx_clk_fixed_factor("sys_pll2_1000m", "sys_pll2_out", 1, 1);
  
        np = dev->of_node;
                                           clks[IMX8MM_CLK_A53_DIV],
                                           clks[IMX8MM_CLK_A53_SRC],
                                           clks[IMX8MM_ARM_PLL_OUT],
 -                                         clks[IMX8MM_CLK_24M]);
 +                                         clks[IMX8MM_SYS_PLL1_800M]);
  
        imx_check_clocks(clks, ARRAY_SIZE(clks));
  
@@@ -25,89 -25,6 +25,6 @@@ static u32 share_count_disp
  static u32 share_count_pdm;
  static u32 share_count_nand;
  
- enum {
-       ARM_PLL,
-       GPU_PLL,
-       VPU_PLL,
-       SYS_PLL1,
-       SYS_PLL2,
-       SYS_PLL3,
-       DRAM_PLL,
-       AUDIO_PLL1,
-       AUDIO_PLL2,
-       VIDEO_PLL2,
-       NR_PLLS,
- };
- static const struct imx_pll14xx_rate_table imx8mn_pll1416x_tbl[] = {
-       PLL_1416X_RATE(1800000000U, 225, 3, 0),
-       PLL_1416X_RATE(1600000000U, 200, 3, 0),
-       PLL_1416X_RATE(1500000000U, 375, 3, 1),
-       PLL_1416X_RATE(1400000000U, 350, 3, 1),
-       PLL_1416X_RATE(1200000000U, 300, 3, 1),
-       PLL_1416X_RATE(1000000000U, 250, 3, 1),
-       PLL_1416X_RATE(800000000U,  200, 3, 1),
-       PLL_1416X_RATE(750000000U,  250, 2, 2),
-       PLL_1416X_RATE(700000000U,  350, 3, 2),
-       PLL_1416X_RATE(600000000U,  300, 3, 2),
- };
- static const struct imx_pll14xx_rate_table imx8mn_audiopll_tbl[] = {
-       PLL_1443X_RATE(393216000U, 262, 2, 3, 9437),
-       PLL_1443X_RATE(361267200U, 361, 3, 3, 17511),
- };
- static const struct imx_pll14xx_rate_table imx8mn_videopll_tbl[] = {
-       PLL_1443X_RATE(650000000U, 325, 3, 2, 0),
-       PLL_1443X_RATE(594000000U, 198, 2, 2, 0),
- };
- static const struct imx_pll14xx_rate_table imx8mn_drampll_tbl[] = {
-       PLL_1443X_RATE(650000000U, 325, 3, 2, 0),
- };
- static struct imx_pll14xx_clk imx8mn_audio_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mn_audiopll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_audiopll_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_video_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mn_videopll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_videopll_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_dram_pll = {
-               .type = PLL_1443X,
-               .rate_table = imx8mn_drampll_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_drampll_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_arm_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mn_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_gpu_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mn_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_vpu_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mn_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_pll1416x_tbl),
- };
- static struct imx_pll14xx_clk imx8mn_sys_pll = {
-               .type = PLL_1416X,
-               .rate_table = imx8mn_pll1416x_tbl,
-               .rate_count = ARRAY_SIZE(imx8mn_pll1416x_tbl),
- };
  static const char * const pll_ref_sels[] = { "osc_24m", "dummy", "dummy", "dummy", };
  static const char * const audio_pll1_bypass_sels[] = {"audio_pll1", "audio_pll1_ref_sel", };
  static const char * const audio_pll2_bypass_sels[] = {"audio_pll2", "audio_pll2_ref_sel", };
@@@ -116,8 -33,6 +33,6 @@@ static const char * const dram_pll_bypa
  static const char * const gpu_pll_bypass_sels[] = {"gpu_pll", "gpu_pll_ref_sel", };
  static const char * const vpu_pll_bypass_sels[] = {"vpu_pll", "vpu_pll_ref_sel", };
  static const char * const arm_pll_bypass_sels[] = {"arm_pll", "arm_pll_ref_sel", };
- static const char * const sys_pll1_bypass_sels[] = {"sys_pll1", "sys_pll1_ref_sel", };
- static const char * const sys_pll2_bypass_sels[] = {"sys_pll2", "sys_pll2_ref_sel", };
  static const char * const sys_pll3_bypass_sels[] = {"sys_pll3", "sys_pll3_ref_sel", };
  
  static const char * const imx8mn_a53_sels[] = {"osc_24m", "arm_pll_out", "sys_pll2_500m",
@@@ -405,20 -320,18 +320,18 @@@ static int imx8mn_clocks_probe(struct p
        clks[IMX8MN_GPU_PLL_REF_SEL] = imx_clk_mux("gpu_pll_ref_sel", base + 0x64, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MN_VPU_PLL_REF_SEL] = imx_clk_mux("vpu_pll_ref_sel", base + 0x74, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MN_ARM_PLL_REF_SEL] = imx_clk_mux("arm_pll_ref_sel", base + 0x84, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
-       clks[IMX8MN_SYS_PLL1_REF_SEL] = imx_clk_mux("sys_pll1_ref_sel", base + 0x94, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
-       clks[IMX8MN_SYS_PLL2_REF_SEL] = imx_clk_mux("sys_pll2_ref_sel", base + 0x104, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
        clks[IMX8MN_SYS_PLL3_REF_SEL] = imx_clk_mux("sys_pll3_ref_sel", base + 0x114, 0, 2, pll_ref_sels, ARRAY_SIZE(pll_ref_sels));
  
-       clks[IMX8MN_AUDIO_PLL1] = imx_clk_pll14xx("audio_pll1", "audio_pll1_ref_sel", base, &imx8mn_audio_pll);
-       clks[IMX8MN_AUDIO_PLL2] = imx_clk_pll14xx("audio_pll2", "audio_pll2_ref_sel", base + 0x14, &imx8mn_audio_pll);
-       clks[IMX8MN_VIDEO_PLL1] = imx_clk_pll14xx("video_pll1", "video_pll1_ref_sel", base + 0x28, &imx8mn_video_pll);
-       clks[IMX8MN_DRAM_PLL] = imx_clk_pll14xx("dram_pll", "dram_pll_ref_sel", base + 0x50, &imx8mn_dram_pll);
-       clks[IMX8MN_GPU_PLL] = imx_clk_pll14xx("gpu_pll", "gpu_pll_ref_sel", base + 0x64, &imx8mn_gpu_pll);
-       clks[IMX8MN_VPU_PLL] = imx_clk_pll14xx("vpu_pll", "vpu_pll_ref_sel", base + 0x74, &imx8mn_vpu_pll);
-       clks[IMX8MN_ARM_PLL] = imx_clk_pll14xx("arm_pll", "arm_pll_ref_sel", base + 0x84, &imx8mn_arm_pll);
-       clks[IMX8MN_SYS_PLL1] = imx_clk_pll14xx("sys_pll1", "sys_pll1_ref_sel", base + 0x94, &imx8mn_sys_pll);
-       clks[IMX8MN_SYS_PLL2] = imx_clk_pll14xx("sys_pll2", "sys_pll2_ref_sel", base + 0x104, &imx8mn_sys_pll);
-       clks[IMX8MN_SYS_PLL3] = imx_clk_pll14xx("sys_pll3", "sys_pll3_ref_sel", base + 0x114, &imx8mn_sys_pll);
+       clks[IMX8MN_AUDIO_PLL1] = imx_clk_pll14xx("audio_pll1", "audio_pll1_ref_sel", base, &imx_1443x_pll);
+       clks[IMX8MN_AUDIO_PLL2] = imx_clk_pll14xx("audio_pll2", "audio_pll2_ref_sel", base + 0x14, &imx_1443x_pll);
+       clks[IMX8MN_VIDEO_PLL1] = imx_clk_pll14xx("video_pll1", "video_pll1_ref_sel", base + 0x28, &imx_1443x_pll);
+       clks[IMX8MN_DRAM_PLL] = imx_clk_pll14xx("dram_pll", "dram_pll_ref_sel", base + 0x50, &imx_1443x_pll);
+       clks[IMX8MN_GPU_PLL] = imx_clk_pll14xx("gpu_pll", "gpu_pll_ref_sel", base + 0x64, &imx_1416x_pll);
+       clks[IMX8MN_VPU_PLL] = imx_clk_pll14xx("vpu_pll", "vpu_pll_ref_sel", base + 0x74, &imx_1416x_pll);
+       clks[IMX8MN_ARM_PLL] = imx_clk_pll14xx("arm_pll", "arm_pll_ref_sel", base + 0x84, &imx_1416x_pll);
+       clks[IMX8MN_SYS_PLL1] = imx_clk_fixed("sys_pll1", 800000000);
+       clks[IMX8MN_SYS_PLL2] = imx_clk_fixed("sys_pll2", 1000000000);
+       clks[IMX8MN_SYS_PLL3] = imx_clk_pll14xx("sys_pll3", "sys_pll3_ref_sel", base + 0x114, &imx_1416x_pll);
  
        /* PLL bypass out */
        clks[IMX8MN_AUDIO_PLL1_BYPASS] = imx_clk_mux_flags("audio_pll1_bypass", base, 16, 1, audio_pll1_bypass_sels, ARRAY_SIZE(audio_pll1_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MN_GPU_PLL_BYPASS] = imx_clk_mux_flags("gpu_pll_bypass", base + 0x64, 28, 1, gpu_pll_bypass_sels, ARRAY_SIZE(gpu_pll_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MN_VPU_PLL_BYPASS] = imx_clk_mux_flags("vpu_pll_bypass", base + 0x74, 28, 1, vpu_pll_bypass_sels, ARRAY_SIZE(vpu_pll_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MN_ARM_PLL_BYPASS] = imx_clk_mux_flags("arm_pll_bypass", base + 0x84, 28, 1, arm_pll_bypass_sels, ARRAY_SIZE(arm_pll_bypass_sels), CLK_SET_RATE_PARENT);
-       clks[IMX8MN_SYS_PLL1_BYPASS] = imx_clk_mux_flags("sys_pll1_bypass", base + 0x94, 28, 1, sys_pll1_bypass_sels, ARRAY_SIZE(sys_pll1_bypass_sels), CLK_SET_RATE_PARENT);
-       clks[IMX8MN_SYS_PLL2_BYPASS] = imx_clk_mux_flags("sys_pll2_bypass", base + 0x104, 28, 1, sys_pll2_bypass_sels, ARRAY_SIZE(sys_pll2_bypass_sels), CLK_SET_RATE_PARENT);
        clks[IMX8MN_SYS_PLL3_BYPASS] = imx_clk_mux_flags("sys_pll3_bypass", base + 0x114, 28, 1, sys_pll3_bypass_sels, ARRAY_SIZE(sys_pll3_bypass_sels), CLK_SET_RATE_PARENT);
  
        /* PLL out gate */
        clks[IMX8MN_GPU_PLL_OUT] = imx_clk_gate("gpu_pll_out", "gpu_pll_bypass", base + 0x64, 11);
        clks[IMX8MN_VPU_PLL_OUT] = imx_clk_gate("vpu_pll_out", "vpu_pll_bypass", base + 0x74, 11);
        clks[IMX8MN_ARM_PLL_OUT] = imx_clk_gate("arm_pll_out", "arm_pll_bypass", base + 0x84, 11);
-       clks[IMX8MN_SYS_PLL1_OUT] = imx_clk_gate("sys_pll1_out", "sys_pll1_bypass", base + 0x94, 11);
-       clks[IMX8MN_SYS_PLL2_OUT] = imx_clk_gate("sys_pll2_out", "sys_pll2_bypass", base + 0x104, 11);
        clks[IMX8MN_SYS_PLL3_OUT] = imx_clk_gate("sys_pll3_out", "sys_pll3_bypass", base + 0x114, 11);
  
-       /* SYS PLL fixed output */
-       clks[IMX8MN_SYS_PLL1_40M] = imx_clk_fixed_factor("sys_pll1_40m", "sys_pll1_out", 1, 20);
-       clks[IMX8MN_SYS_PLL1_80M] = imx_clk_fixed_factor("sys_pll1_80m", "sys_pll1_out", 1, 10);
-       clks[IMX8MN_SYS_PLL1_100M] = imx_clk_fixed_factor("sys_pll1_100m", "sys_pll1_out", 1, 8);
-       clks[IMX8MN_SYS_PLL1_133M] = imx_clk_fixed_factor("sys_pll1_133m", "sys_pll1_out", 1, 6);
-       clks[IMX8MN_SYS_PLL1_160M] = imx_clk_fixed_factor("sys_pll1_160m", "sys_pll1_out", 1, 5);
-       clks[IMX8MN_SYS_PLL1_200M] = imx_clk_fixed_factor("sys_pll1_200m", "sys_pll1_out", 1, 4);
-       clks[IMX8MN_SYS_PLL1_266M] = imx_clk_fixed_factor("sys_pll1_266m", "sys_pll1_out", 1, 3);
-       clks[IMX8MN_SYS_PLL1_400M] = imx_clk_fixed_factor("sys_pll1_400m", "sys_pll1_out", 1, 2);
+       /* SYS PLL1 fixed output */
+       clks[IMX8MN_SYS_PLL1_40M_CG] = imx_clk_gate("sys_pll1_40m_cg", "sys_pll1", base + 0x94, 27);
+       clks[IMX8MN_SYS_PLL1_80M_CG] = imx_clk_gate("sys_pll1_80m_cg", "sys_pll1", base + 0x94, 25);
+       clks[IMX8MN_SYS_PLL1_100M_CG] = imx_clk_gate("sys_pll1_100m_cg", "sys_pll1", base + 0x94, 23);
+       clks[IMX8MN_SYS_PLL1_133M_CG] = imx_clk_gate("sys_pll1_133m_cg", "sys_pll1", base + 0x94, 21);
+       clks[IMX8MN_SYS_PLL1_160M_CG] = imx_clk_gate("sys_pll1_160m_cg", "sys_pll1", base + 0x94, 19);
+       clks[IMX8MN_SYS_PLL1_200M_CG] = imx_clk_gate("sys_pll1_200m_cg", "sys_pll1", base + 0x94, 17);
+       clks[IMX8MN_SYS_PLL1_266M_CG] = imx_clk_gate("sys_pll1_266m_cg", "sys_pll1", base + 0x94, 15);
+       clks[IMX8MN_SYS_PLL1_400M_CG] = imx_clk_gate("sys_pll1_400m_cg", "sys_pll1", base + 0x94, 13);
+       clks[IMX8MN_SYS_PLL1_OUT] = imx_clk_gate("sys_pll1_out", "sys_pll1", base + 0x94, 11);
+       clks[IMX8MN_SYS_PLL1_40M] = imx_clk_fixed_factor("sys_pll1_40m", "sys_pll1_40m_cg", 1, 20);
+       clks[IMX8MN_SYS_PLL1_80M] = imx_clk_fixed_factor("sys_pll1_80m", "sys_pll1_80m_cg", 1, 10);
+       clks[IMX8MN_SYS_PLL1_100M] = imx_clk_fixed_factor("sys_pll1_100m", "sys_pll1_100m_cg", 1, 8);
+       clks[IMX8MN_SYS_PLL1_133M] = imx_clk_fixed_factor("sys_pll1_133m", "sys_pll1_133m_cg", 1, 6);
+       clks[IMX8MN_SYS_PLL1_160M] = imx_clk_fixed_factor("sys_pll1_160m", "sys_pll1_160m_cg", 1, 5);
+       clks[IMX8MN_SYS_PLL1_200M] = imx_clk_fixed_factor("sys_pll1_200m", "sys_pll1_200m_cg", 1, 4);
+       clks[IMX8MN_SYS_PLL1_266M] = imx_clk_fixed_factor("sys_pll1_266m", "sys_pll1_266m_cg", 1, 3);
+       clks[IMX8MN_SYS_PLL1_400M] = imx_clk_fixed_factor("sys_pll1_400m", "sys_pll1_400m_cg", 1, 2);
        clks[IMX8MN_SYS_PLL1_800M] = imx_clk_fixed_factor("sys_pll1_800m", "sys_pll1_out", 1, 1);
  
-       clks[IMX8MN_SYS_PLL2_50M] = imx_clk_fixed_factor("sys_pll2_50m", "sys_pll2_out", 1, 20);
-       clks[IMX8MN_SYS_PLL2_100M] = imx_clk_fixed_factor("sys_pll2_100m", "sys_pll2_out", 1, 10);
-       clks[IMX8MN_SYS_PLL2_125M] = imx_clk_fixed_factor("sys_pll2_125m", "sys_pll2_out", 1, 8);
-       clks[IMX8MN_SYS_PLL2_166M] = imx_clk_fixed_factor("sys_pll2_166m", "sys_pll2_out", 1, 6);
-       clks[IMX8MN_SYS_PLL2_200M] = imx_clk_fixed_factor("sys_pll2_200m", "sys_pll2_out", 1, 5);
-       clks[IMX8MN_SYS_PLL2_250M] = imx_clk_fixed_factor("sys_pll2_250m", "sys_pll2_out", 1, 4);
-       clks[IMX8MN_SYS_PLL2_333M] = imx_clk_fixed_factor("sys_pll2_333m", "sys_pll2_out", 1, 3);
-       clks[IMX8MN_SYS_PLL2_500M] = imx_clk_fixed_factor("sys_pll2_500m", "sys_pll2_out", 1, 2);
+       /* SYS PLL2 fixed output */
+       clks[IMX8MN_SYS_PLL2_50M_CG] = imx_clk_gate("sys_pll2_50m_cg", "sys_pll2", base + 0x104, 27);
+       clks[IMX8MN_SYS_PLL2_100M_CG] = imx_clk_gate("sys_pll2_100m_cg", "sys_pll2", base + 0x104, 25);
+       clks[IMX8MN_SYS_PLL2_125M_CG] = imx_clk_gate("sys_pll2_125m_cg", "sys_pll2", base + 0x104, 23);
+       clks[IMX8MN_SYS_PLL2_166M_CG] = imx_clk_gate("sys_pll2_166m_cg", "sys_pll2", base + 0x104, 21);
+       clks[IMX8MN_SYS_PLL2_200M_CG] = imx_clk_gate("sys_pll2_200m_cg", "sys_pll2", base + 0x104, 19);
+       clks[IMX8MN_SYS_PLL2_250M_CG] = imx_clk_gate("sys_pll2_250m_cg", "sys_pll2", base + 0x104, 17);
+       clks[IMX8MN_SYS_PLL2_333M_CG] = imx_clk_gate("sys_pll2_333m_cg", "sys_pll2", base + 0x104, 15);
+       clks[IMX8MN_SYS_PLL2_500M_CG] = imx_clk_gate("sys_pll2_500m_cg", "sys_pll2", base + 0x104, 13);
+       clks[IMX8MN_SYS_PLL2_OUT] = imx_clk_gate("sys_pll2_out", "sys_pll2", base + 0x104, 11);
+       clks[IMX8MN_SYS_PLL2_50M] = imx_clk_fixed_factor("sys_pll2_50m", "sys_pll2_50m_cg", 1, 20);
+       clks[IMX8MN_SYS_PLL2_100M] = imx_clk_fixed_factor("sys_pll2_100m", "sys_pll2_100m_cg", 1, 10);
+       clks[IMX8MN_SYS_PLL2_125M] = imx_clk_fixed_factor("sys_pll2_125m", "sys_pll2_125m_cg", 1, 8);
+       clks[IMX8MN_SYS_PLL2_166M] = imx_clk_fixed_factor("sys_pll2_166m", "sys_pll2_166m_cg", 1, 6);
+       clks[IMX8MN_SYS_PLL2_200M] = imx_clk_fixed_factor("sys_pll2_200m", "sys_pll2_200m_cg", 1, 5);
+       clks[IMX8MN_SYS_PLL2_250M] = imx_clk_fixed_factor("sys_pll2_250m", "sys_pll2_250m_cg", 1, 4);
+       clks[IMX8MN_SYS_PLL2_333M] = imx_clk_fixed_factor("sys_pll2_333m", "sys_pll2_333m_cg", 1, 3);
+       clks[IMX8MN_SYS_PLL2_500M] = imx_clk_fixed_factor("sys_pll2_500m", "sys_pll2_500m_cg", 1, 2);
        clks[IMX8MN_SYS_PLL2_1000M] = imx_clk_fixed_factor("sys_pll2_1000m", "sys_pll2_out", 1, 1);
  
        np = dev->of_node;
                                           clks[IMX8MN_CLK_A53_DIV],
                                           clks[IMX8MN_CLK_A53_SRC],
                                           clks[IMX8MN_ARM_PLL_OUT],
 -                                         clks[IMX8MN_CLK_24M]);
 +                                         clks[IMX8MN_SYS_PLL1_800M]);
  
        imx_check_clocks(clks, ARRAY_SIZE(clks));
  
diff --combined drivers/clk/ti/clk-7xx.c
@@@ -25,7 -25,7 +25,7 @@@ static const struct omap_clkctrl_reg_da
  };
  
  static const struct omap_clkctrl_reg_data dra7_dsp1_clkctrl_regs[] __initconst = {
-       { DRA7_DSP1_MMU0_DSP1_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_dsp_m2_ck" },
+       { DRA7_DSP1_MMU0_DSP1_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_dsp_m2_ck" },
        { 0 },
  };
  
@@@ -41,7 -41,7 +41,7 @@@ static const struct omap_clkctrl_bit_da
  };
  
  static const struct omap_clkctrl_reg_data dra7_ipu1_clkctrl_regs[] __initconst = {
-       { DRA7_IPU1_MMU_IPU1_CLKCTRL, dra7_mmu_ipu1_bit_data, CLKF_HW_SUP, "ipu1-clkctrl:0000:24" },
+       { DRA7_IPU1_MMU_IPU1_CLKCTRL, dra7_mmu_ipu1_bit_data, CLKF_HW_SUP | CLKF_NO_IDLEST, "ipu1-clkctrl:0000:24" },
        { 0 },
  };
  
@@@ -137,7 -137,7 +137,7 @@@ static const struct omap_clkctrl_reg_da
  };
  
  static const struct omap_clkctrl_reg_data dra7_dsp2_clkctrl_regs[] __initconst = {
-       { DRA7_DSP2_MMU0_DSP2_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_dsp_m2_ck" },
+       { DRA7_DSP2_MMU0_DSP2_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_dsp_m2_ck" },
        { 0 },
  };
  
@@@ -164,7 -164,7 +164,7 @@@ static const struct omap_clkctrl_reg_da
  };
  
  static const struct omap_clkctrl_reg_data dra7_ipu2_clkctrl_regs[] __initconst = {
-       { DRA7_IPU2_MMU_IPU2_CLKCTRL, NULL, CLKF_HW_SUP, "dpll_core_h22x2_ck" },
+       { DRA7_IPU2_MMU_IPU2_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_NO_IDLEST, "dpll_core_h22x2_ck" },
        { 0 },
  };
  
@@@ -683,7 -683,7 +683,7 @@@ static const struct omap_clkctrl_reg_da
        { DRA7_L4PER2_MCASP2_CLKCTRL, dra7_mcasp2_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:0154:22" },
        { DRA7_L4PER2_MCASP3_CLKCTRL, dra7_mcasp3_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:015c:22" },
        { DRA7_L4PER2_MCASP5_CLKCTRL, dra7_mcasp5_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:016c:22" },
 -      { DRA7_L4PER2_MCASP8_CLKCTRL, dra7_mcasp8_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:0184:24" },
 +      { DRA7_L4PER2_MCASP8_CLKCTRL, dra7_mcasp8_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:0184:22" },
        { DRA7_L4PER2_MCASP4_CLKCTRL, dra7_mcasp4_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:018c:22" },
        { DRA7_L4PER2_UART7_CLKCTRL, dra7_uart7_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:01c4:24" },
        { DRA7_L4PER2_UART8_CLKCTRL, dra7_uart8_bit_data, CLKF_SW_SUP, "l4per2-clkctrl:01d4:24" },
@@@ -828,8 -828,8 +828,8 @@@ static struct ti_dt_clk dra7xx_clks[] 
        DT_CLK(NULL, "mcasp6_aux_gfclk_mux", "l4per2-clkctrl:01f8:22"),
        DT_CLK(NULL, "mcasp7_ahclkx_mux", "l4per2-clkctrl:01fc:24"),
        DT_CLK(NULL, "mcasp7_aux_gfclk_mux", "l4per2-clkctrl:01fc:22"),
 -      DT_CLK(NULL, "mcasp8_ahclkx_mux", "l4per2-clkctrl:0184:22"),
 -      DT_CLK(NULL, "mcasp8_aux_gfclk_mux", "l4per2-clkctrl:0184:24"),
 +      DT_CLK(NULL, "mcasp8_ahclkx_mux", "l4per2-clkctrl:0184:24"),
 +      DT_CLK(NULL, "mcasp8_aux_gfclk_mux", "l4per2-clkctrl:0184:22"),
        DT_CLK(NULL, "mmc1_clk32k", "l3init-clkctrl:0008:8"),
        DT_CLK(NULL, "mmc1_fclk_div", "l3init-clkctrl:0008:25"),
        DT_CLK(NULL, "mmc1_fclk_mux", "l3init-clkctrl:0008:24"),
diff --combined drivers/clk/ti/clkctrl.c
@@@ -24,7 -24,7 +24,7 @@@
  #include <linux/timekeeping.h>
  #include "clock.h"
  
- #define NO_IDLEST                     0x1
+ #define NO_IDLEST                     0
  
  #define OMAP4_MODULEMODE_MASK         0x3
  
@@@ -34,6 -34,9 +34,9 @@@
  #define OMAP4_IDLEST_MASK             (0x3 << 16)
  #define OMAP4_IDLEST_SHIFT            16
  
+ #define OMAP4_STBYST_MASK             BIT(18)
+ #define OMAP4_STBYST_SHIFT            18
  #define CLKCTRL_IDLEST_FUNCTIONAL     0x0
  #define CLKCTRL_IDLEST_INTERFACE_IDLE 0x2
  #define CLKCTRL_IDLEST_DISABLED               0x3
@@@ -100,12 -103,11 +103,12 @@@ static bool _omap4_is_timeout(union oma
         * can be from a timer that requires pm_runtime access, which
         * will eventually bring us here with timekeeping_suspended,
         * during both suspend entry and resume paths. This happens
 -       * at least on am43xx platform.
 +       * at least on am43xx platform. Account for flakeyness
 +       * with udelay() by multiplying the timeout value by 2.
         */
        if (unlikely(_early_timeout || timekeeping_suspended)) {
                if (time->cycles++ < timeout) {
 -                      udelay(1);
 +                      udelay(1 * 2);
                        return false;
                }
        } else {
@@@ -159,7 -161,7 +162,7 @@@ static int _omap4_clkctrl_clk_enable(st
  
        ti_clk_ll_ops->clk_writel(val, &clk->enable_reg);
  
-       if (clk->flags & NO_IDLEST)
+       if (test_bit(NO_IDLEST, &clk->flags))
                return 0;
  
        /* Wait until module is enabled */
@@@ -188,7 -190,7 +191,7 @@@ static void _omap4_clkctrl_clk_disable(
  
        ti_clk_ll_ops->clk_writel(val, &clk->enable_reg);
  
-       if (clk->flags & NO_IDLEST)
+       if (test_bit(NO_IDLEST, &clk->flags))
                goto exit;
  
        /* Wait until module is disabled */
@@@ -381,7 -383,7 +384,7 @@@ _ti_clkctrl_setup_div(struct omap_clkct
  
        if (ti_clk_parse_divider_data((int *)div_data->dividers, 0,
                                      div_data->max_div, div_flags,
-                                     &div->width, &div->table)) {
+                                     div)) {
                pr_err("%s: Data parsing for %pOF:%04x:%d failed\n", __func__,
                       node, offset, data->bit);
                kfree(div);
@@@ -597,7 -599,7 +600,7 @@@ static void __init _ti_omap4_clkctrl_se
                if (reg_data->flags & CLKF_HW_SUP)
                        hw->enable_bit = MODULEMODE_HWCTRL;
                if (reg_data->flags & CLKF_NO_IDLEST)
-                       hw->flags |= NO_IDLEST;
+                       set_bit(NO_IDLEST, &hw->flags);
  
                if (reg_data->clkdm_name)
                        hw->clkdm_name = reg_data->clkdm_name;
                init.ops = &omap4_clkctrl_clk_ops;
                hw->hw.init = &init;
  
-               clk = ti_clk_register(NULL, &hw->hw, init.name);
+               clk = ti_clk_register_omap_hw(NULL, &hw->hw, init.name);
                if (IS_ERR_OR_NULL(clk))
                        goto cleanup;
  
@@@ -648,3 -650,33 +651,33 @@@ cleanup
  }
  CLK_OF_DECLARE(ti_omap4_clkctrl_clock, "ti,clkctrl",
               _ti_omap4_clkctrl_setup);
+ /**
+  * ti_clk_is_in_standby - Check if clkctrl clock is in standby or not
+  * @clk: clock to check standby status for
+  *
+  * Finds whether the provided clock is in standby mode or not. Returns
+  * true if the provided clock is a clkctrl type clock and it is in standby,
+  * false otherwise.
+  */
+ bool ti_clk_is_in_standby(struct clk *clk)
+ {
+       struct clk_hw *hw;
+       struct clk_hw_omap *hwclk;
+       u32 val;
+       hw = __clk_get_hw(clk);
+       if (!omap2_clk_is_hw_omap(hw))
+               return false;
+       hwclk = to_clk_hw_omap(hw);
+       val = ti_clk_ll_ops->clk_readl(&hwclk->enable_reg);
+       if (val & OMAP4_STBYST_MASK)
+               return true;
+       return false;
+ }
+ EXPORT_SYMBOL_GPL(ti_clk_is_in_standby);