Merge tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 Feb 2015 20:30:30 +0000 (12:30 -0800)
committerLinus Torvalds <torvalds@linux-foundation.org>
Sat, 21 Feb 2015 20:30:30 +0000 (12:30 -0800)
Pull clock framework updates from Mike Turquette:
 "The clock framework changes contain the usual driver additions,
  enhancements and fixes mostly for ARM32, ARM64, MIPS and Power-based
  devices.

  Additionally the framework core underwent a bit of surgery with two
  major changes:

   - The boundary between the clock core and clock providers (e.g clock
     drivers) is now more well defined with dedicated provider helper
     functions.  struct clk no longer maps 1:1 with the hardware clock
     but is a true per-user cookie which helps us tracker users of
     hardware clocks and debug bad behavior.

   - The addition of rate constraints for clocks.  Rate ranges are now
     supported which are analogous to the voltage ranges in the
     regulator framework.

  Unfortunately these changes to the core created some breakeage.  We
  think we fixed it all up but for this reason there are lots of last
  minute commits trying to undo the damage"

* tag 'clk-for-linus-3.20' of git://git.linaro.org/people/mike.turquette/linux: (113 commits)
  clk: Only recalculate the rate if needed
  Revert "clk: mxs: Fix invalid 32-bit access to frac registers"
  clk: qoriq: Add support for the platform PLL
  powerpc/corenet: Enable CLK_QORIQ
  clk: Replace explicit clk assignment with __clk_hw_set_clk
  clk: Add __clk_hw_set_clk helper function
  clk: Don't dereference parent clock if is NULL
  MIPS: Alchemy: Remove bogus args from alchemy_clk_fgcs_detr
  clkdev: Always allocate a struct clk and call __clk_get() w/ CCF
  clk: shmobile: div6: Avoid division by zero in .round_rate()
  clk: mxs: Fix invalid 32-bit access to frac registers
  clk: omap: compile legacy omap3 clocks conditionally
  clkdev: Export clk_register_clkdev
  clk: Add rate constraints to clocks
  clk: remove clk-private.h
  pci: xgene: do not use clk-private.h
  arm: omap2+ remove dead clock code
  clk: Make clk API return per-user struct clk instances
  clk: tegra: Define PLLD_DSI and remove dsia(b)_mux
  clk: tegra: Add support for the Tegra132 CAR IP block
  ...

22 files changed:
1  2 
MAINTAINERS
arch/arm/boot/dts/sun4i-a10.dtsi
arch/arm/boot/dts/sun5i-a10s.dtsi
arch/arm/boot/dts/sun5i-a13.dtsi
arch/arm/boot/dts/sun6i-a31.dtsi
arch/arm/boot/dts/sun7i-a20.dtsi
arch/arm/boot/dts/sun8i-a23.dtsi
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/clock.c
arch/arm/mach-omap2/clock.h
arch/arm/mach-omap2/dpll44xx.c
arch/arm/mach-omap2/io.c
arch/arm/mach-omap2/prm_common.c
arch/powerpc/configs/corenet32_smp_defconfig
arch/powerpc/configs/corenet64_smp_defconfig
arch/powerpc/kernel/time.c
drivers/clk/Kconfig
drivers/clk/clk.c
drivers/clk/rockchip/clk-rk3288.c
drivers/clk/shmobile/Makefile
drivers/clk/sunxi/clk-sunxi.c
drivers/mmc/host/sunxi-mmc.c

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
Simple merge
index 47e557656993fe99f1ea46667a1c1d27e8a2648f,5960ccce5bb4fad816c4e5eac00cd816689a8233..fa2f403ccf28adf4f6aa10c08978dd3b59b6e709
                mmc0: mmc@01c0f000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c0f000 0x1000>;
-                       clocks = <&ahb1_gates 8>, <&mmc0_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 8>,
+                                <&mmc0_clk 0>,
+                                <&mmc0_clk 1>,
+                                <&mmc0_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 8>;
                        reset-names = "ahb";
 -                      interrupts = <0 60 4>;
 +                      interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc1: mmc@01c10000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c10000 0x1000>;
-                       clocks = <&ahb1_gates 9>, <&mmc1_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 9>,
+                                <&mmc1_clk 0>,
+                                <&mmc1_clk 1>,
+                                <&mmc1_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 9>;
                        reset-names = "ahb";
 -                      interrupts = <0 61 4>;
 +                      interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc2: mmc@01c11000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c11000 0x1000>;
-                       clocks = <&ahb1_gates 10>, <&mmc2_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 10>,
+                                <&mmc2_clk 0>,
+                                <&mmc2_clk 1>,
+                                <&mmc2_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 10>;
                        reset-names = "ahb";
 -                      interrupts = <0 62 4>;
 +                      interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc3: mmc@01c12000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c12000 0x1000>;
-                       clocks = <&ahb1_gates 11>, <&mmc3_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 11>,
+                                <&mmc3_clk 0>,
+                                <&mmc3_clk 1>,
+                                <&mmc3_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 11>;
                        reset-names = "ahb";
 -                      interrupts = <0 63 4>;
 +                      interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
index 786d491542ac429567fd6db6142406858090f81c,390ef09d8c450eae8e7643122e8d8778ae2372c7..3a8530b79f1c46200d2b7ee8bbe343198c7106d8
                mmc0: mmc@01c0f000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c0f000 0x1000>;
-                       clocks = <&ahb_gates 8>, <&mmc0_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb_gates 8>,
+                                <&mmc0_clk 0>,
+                                <&mmc0_clk 1>,
+                                <&mmc0_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
 -                      interrupts = <0 32 4>;
 +                      interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc1: mmc@01c10000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c10000 0x1000>;
-                       clocks = <&ahb_gates 9>, <&mmc1_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb_gates 9>,
+                                <&mmc1_clk 0>,
+                                <&mmc1_clk 1>,
+                                <&mmc1_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
 -                      interrupts = <0 33 4>;
 +                      interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc2: mmc@01c11000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c11000 0x1000>;
-                       clocks = <&ahb_gates 10>, <&mmc2_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb_gates 10>,
+                                <&mmc2_clk 0>,
+                                <&mmc2_clk 1>,
+                                <&mmc2_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
 -                      interrupts = <0 34 4>;
 +                      interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc3: mmc@01c12000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c12000 0x1000>;
-                       clocks = <&ahb_gates 11>, <&mmc3_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb_gates 11>,
+                                <&mmc3_clk 0>,
+                                <&mmc3_clk 1>,
+                                <&mmc3_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
 -                      interrupts = <0 35 4>;
 +                      interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
index dd34527293e465d4739cf4518bbd8b292a61989b,edd4d912825872c2ca4c52005bb3bc497a77d1e9..382ebd137ee4fbe97514362eee3f336d4e253047
                mmc0: mmc@01c0f000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c0f000 0x1000>;
-                       clocks = <&ahb1_gates 8>, <&mmc0_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 8>,
+                                <&mmc0_clk 0>,
+                                <&mmc0_clk 1>,
+                                <&mmc0_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 8>;
                        reset-names = "ahb";
 -                      interrupts = <0 60 4>;
 +                      interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc1: mmc@01c10000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c10000 0x1000>;
-                       clocks = <&ahb1_gates 9>, <&mmc1_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 9>,
+                                <&mmc1_clk 0>,
+                                <&mmc1_clk 1>,
+                                <&mmc1_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 9>;
                        reset-names = "ahb";
 -                      interrupts = <0 61 4>;
 +                      interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
                mmc2: mmc@01c11000 {
                        compatible = "allwinner,sun5i-a13-mmc";
                        reg = <0x01c11000 0x1000>;
-                       clocks = <&ahb1_gates 10>, <&mmc2_clk>;
-                       clock-names = "ahb", "mmc";
+                       clocks = <&ahb1_gates 10>,
+                                <&mmc2_clk 0>,
+                                <&mmc2_clk 1>,
+                                <&mmc2_clk 2>;
+                       clock-names = "ahb",
+                                     "mmc",
+                                     "output",
+                                     "sample";
                        resets = <&ahb1_rst 10>;
                        reset-names = "ahb";
 -                      interrupts = <0 62 4>;
 +                      interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
                        status = "disabled";
                };
  
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge
index 51866f17068457038503ff14520ef9a67e3a0d7d,cce62e934e0c421718c05c840cb52f9046d27435..ca7957b09a3cc13ad6882006468a7e3431e7a75f
@@@ -138,10 -143,11 +138,11 @@@ CONFIG_RTC_DRV_DS1307=
  CONFIG_RTC_DRV_DS1374=y
  CONFIG_RTC_DRV_DS3232=y
  CONFIG_UIO=y
 -CONFIG_STAGING=y
 -CONFIG_MEMORY=y
  CONFIG_VIRT_DRIVERS=y
  CONFIG_FSL_HV_MANAGER=y
 +CONFIG_STAGING=y
 +CONFIG_FSL_CORENET_CF=y
+ CONFIG_CLK_QORIQ=y
  CONFIG_EXT2_FS=y
  CONFIG_EXT3_FS=y
  # CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
index d6c0c819895288c39bd826085e7fadb6793b360a,c9e80579d9d105ac8324c55a4aa68a955d26e2f7..04737aaa8b6b8ead5bfc2574fabe48afd78c872c
@@@ -122,7 -117,9 +122,8 @@@ CONFIG_DMADEVICES=
  CONFIG_FSL_DMA=y
  CONFIG_VIRT_DRIVERS=y
  CONFIG_FSL_HV_MANAGER=y
+ CONFIG_CLK_QORIQ=y
  CONFIG_FSL_CORENET_CF=y
 -CONFIG_MEMORY=y
  CONFIG_EXT2_FS=y
  CONFIG_EXT3_FS=y
  CONFIG_ISO9660_FS=m
Simple merge
Simple merge
Simple merge
index cbcddcc02475233f53b2d150f8395a99c3b4ba4d,eeadbb6b52061f83058343ff0439337a683be093..05d7a0bc059907872ff1719d0c401a0494082199
@@@ -569,24 -569,24 +569,24 @@@ static struct rockchip_clk_branch rk328
        COMPOSITE_NOMUX(0, "uart4_src", "uart_src", 0,
                        RK3288_CLKSEL_CON(3), 0, 7, DFLAGS,
                        RK3288_CLKGATE_CON(2), 12, GFLAGS),
-       COMPOSITE_FRAC(0, "uart4_frac", "uart4_src", 0,
+       COMPOSITE_FRAC(0, "uart4_frac", "uart4_src", CLK_SET_RATE_PARENT,
                        RK3288_CLKSEL_CON(7), 0,
                        RK3288_CLKGATE_CON(2), 13, GFLAGS),
-       MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, 0,
+       MUX(SCLK_UART4, "sclk_uart4", mux_uart4_p, CLK_SET_RATE_PARENT,
                        RK3288_CLKSEL_CON(3), 8, 2, MFLAGS),
  
 -      COMPOSITE(0, "mac_src", mux_pll_src_npll_cpll_gpll_p, 0,
 +      COMPOSITE(0, "mac_pll_src", mux_pll_src_npll_cpll_gpll_p, 0,
                        RK3288_CLKSEL_CON(21), 0, 2, MFLAGS, 8, 5, DFLAGS,
                        RK3288_CLKGATE_CON(2), 5, GFLAGS),
 -      MUX(0, "macref", mux_macref_p, 0,
 +      MUX(SCLK_MAC, "mac_clk", mux_mac_p, 0,
                        RK3288_CLKSEL_CON(21), 4, 1, MFLAGS),
 -      GATE(0, "sclk_macref_out", "macref", 0,
 +      GATE(SCLK_MACREF_OUT, "sclk_macref_out", "mac_clk", 0,
                        RK3288_CLKGATE_CON(5), 3, GFLAGS),
 -      GATE(SCLK_MACREF, "sclk_macref", "macref", 0,
 +      GATE(SCLK_MACREF, "sclk_macref", "mac_clk", 0,
                        RK3288_CLKGATE_CON(5), 2, GFLAGS),
 -      GATE(SCLK_MAC_RX, "sclk_mac_rx", "macref", 0,
 +      GATE(SCLK_MAC_RX, "sclk_mac_rx", "mac_clk", 0,
                        RK3288_CLKGATE_CON(5), 0, GFLAGS),
 -      GATE(SCLK_MAC_TX, "sclk_mac_tx", "macref", 0,
 +      GATE(SCLK_MAC_TX, "sclk_mac_tx", "mac_clk", 0,
                        RK3288_CLKGATE_CON(5), 1, GFLAGS),
  
        COMPOSITE(0, "hsadc_src", mux_pll_src_cpll_gpll_p, 0,
index f83980f2b9568ffa7df081bf5593518e04bcde0b,bef4e4fa6688d31bca7f2343bdad3ff30a868fde..0689d7fb2666b1956728d85f9373b9cbd2c600b1
@@@ -4,7 -5,7 +5,8 @@@ obj-$(CONFIG_ARCH_R8A7740)               += clk-r8a7
  obj-$(CONFIG_ARCH_R8A7779)            += clk-r8a7779.o
  obj-$(CONFIG_ARCH_R8A7790)            += clk-rcar-gen2.o
  obj-$(CONFIG_ARCH_R8A7791)            += clk-rcar-gen2.o
+ obj-$(CONFIG_ARCH_R8A7793)            += clk-rcar-gen2.o
  obj-$(CONFIG_ARCH_R8A7794)            += clk-rcar-gen2.o
 +obj-$(CONFIG_ARCH_SH73A0)             += clk-sh73a0.o
  obj-$(CONFIG_ARCH_SHMOBILE_MULTI)     += clk-div6.o
  obj-$(CONFIG_ARCH_SHMOBILE_MULTI)     += clk-mstp.o
Simple merge
Simple merge