linux/drivers/clk
Linus Torvalds 2ad7b44f5d Merge branch 'for-linus-clk' of git://ftp.arm.linux.org.uk/~rmk/linux-arm
Pull clkdev updates from Russell King:
 "This series addresses some breakage in clkdev caused by a previous
  patch set from the clk tree which introduced per-user clk structures.
  This basically renamed the existing 'struct clk' to 'struct clk_hw',
  and introduced a new 'struct clk'.

  This change will break anyone using clk_add_alias() with the common
  clk code enabled.  Thankfully, the intersection of users of
  clk_add_alias() and those using the common clk code is practically
  zero, but this is something which should be fixed to keep the code
  sane.

  The problem is that clk_add_alias() does this:

        r = clk_get(...);
        l = clkdev_alloc(r, ...);
        clk_put(...);

  which causes the alias to store a pointer to 'r', which has been
  freed.

  The original patch set tried to work around this problem incorrectly -
  at clk_get() time, it tried to convert the struct clk to a struct
  clk_hw, and then creating a new struct clk from that.  Clearly, if the
  original struct clk has been freed, then we have a use-after-free bug.

  We have other places in the tree which do something similar, so this
  series also addresses those locations too.

  This series addresses this problem by converting clkdev to store and
  use the clk_hw pointer.  This allows clk_get() to only have to create
  it's per-user struct clk from the clk_hw.  We can also get to the
  desired clk_hw at clk_add_alias() or clk lookup creation time, when
  the struct clk is "alive".

  We also perform some cleanups of the code:

   - replacing looped calls to clkdev_add() with clkdev_add_table()

   - replacing open-coded lookup allocation (which should have been
     using clkdev_alloc()) and subsequent clkdev_add() with
     clkdev_create()

   - replacing open-coded clk_add_alias() with clk_add_alias()"

* 'for-linus-clk' of git://ftp.arm.linux.org.uk/~rmk/linux-arm:
  clk: s2mps11: use clkdev_create()
  ASoC: migor: use clkdev_create()
  ARM: omap2: use clkdev_add_alias()
  ARM: omap2: use clkdev_create()
  ARM: orion: use clkdev_create()
  ARM: lpc32xx: convert to use clkdev_add_table()
  SH: use clkdev_add_table()
  clkdev: add clkdev_create() helper
  clkdev: const-ify connection id to clk_add_alias()
  clkdev: get rid of redundant clk_add_alias() prototype in linux/clk.h
  clkdev: drop __init from clkdev_add_table()
  clk: update clk API documentation to clarify clk_round_rate()
  clkdev: use clk_hw internally
2015-06-23 15:50:46 -07:00
..
at91 Merge branch 'ccf/atmel-fixes-for-4.1' of https://github.com/bbrezillon/linux-at91 into clk-fixes 2015-06-19 07:37:14 -07:00
bcm clk: bcm/kona: use DIV_ROUND_CLOSEST_ULL() 2015-04-17 09:03:55 -04:00
berlin clk: berlin: bg2q: remove non-exist "smemc" gate clock 2015-01-13 10:58:43 -08:00
hisilicon clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
keystone clk: keystone: gate: fix clk_init_data initialization 2014-02-10 15:17:43 -05:00
mmp clk: Add rate constraints to clocks 2015-02-02 14:23:42 -08:00
mvebu clk: mvebu: add Marvell Armada 39x driver 2015-03-04 15:18:53 +01:00
mxs clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
pistachio CLK: Pistachio: Register external clock gates 2015-03-31 11:59:31 +02:00
pxa clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
qcom clk: qcom: Fix MSM8916 gfx3d_clk_src configuration 2015-04-30 18:42:55 -07:00
rockchip clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
samsung clk: exynos5420: Restore GATE_BUS_TOP on suspend 2015-05-05 10:51:04 +02:00
shmobile ARM: shmobile: r8a7778: common clock framework CPG driver 2015-02-27 09:49:25 +09:00
sirf clk: sirf: update copyright years to 2014 2014-03-26 21:47:35 -07:00
socfpga Adds support getting the divider registers for the MAIN PLL that was once 2014-05-12 19:11:13 -07:00
spear Merge branch 'clk-fixes' into clk-next 2014-07-13 07:56:45 -07:00
st clk: constify of_device_id array 2015-04-01 10:59:27 -07:00
sunxi clk: sunxi: Add pll6 / 4 clock output to sun4i-a10-pll6 2015-03-25 11:46:41 -07:00
tegra clk: tegra: Use the proper parent for plld_dsi 2015-04-10 16:04:22 +02:00
ti clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
ux500 clk: ux500: Drop use of clk-private.h 2015-01-27 11:56:33 -08:00
versatile clk: versatile: test returned value 2015-04-09 08:19:31 -07:00
x86 clk: x86: drop owner assignment from platform_drivers 2014-10-20 16:20:23 +02:00
zynq clk: don't use __initconst for non-const arrays 2015-04-12 17:18:27 -07:00
clk-asm9260.c ARM: clk: add clk-asm9260 driver 2015-01-20 10:10:51 -08:00
clk-axi-clkgen.c clk: Remove .owner field for driver 2014-09-25 17:43:31 -07:00
clk-axm5516.c clk: drop owner assignment from platform_drivers 2014-10-20 16:20:22 +02:00
clk-bcm2835.c
clk-cdce706.c clk: cdce706: Constify struct regmap_config 2015-03-27 00:23:27 -07:00
clk-clps711x.c clk: Add CLPS711X clk driver 2014-07-28 23:30:46 -07:00
clk-composite.c clk: Replace explicit clk assignment with __clk_hw_set_clk 2015-02-18 09:40:11 -08:00
clk-conf.c clk: Replace of_clk_get_by_clkspec() with of_clk_get_from_provider() 2015-03-12 12:20:34 -07:00
clk-devres.c
clk-divider.c clk: divider: fix calculation of initial best divider when rounding to closest 2015-03-09 14:20:17 -07:00
clk-efm32gg.c clk/efm32gg: fix dt init prototype 2014-09-09 13:52:18 -07:00
clk-fixed-factor.c Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-11-15 16:47:22 -08:00
clk-fixed-rate.c clk: add accuracy support for fixed clock 2013-12-22 23:14:28 -08:00
clk-fractional-divider.c clk: fractional-divider: support for divider bypassing 2015-03-12 12:18:47 -07:00
clk-gate.c clk-gate: fix bit # check in clk_register_gate() 2015-01-20 10:09:05 -08:00
clk-gpio-gate.c clk: clk-gpio-gate: Fix active low 2015-04-10 17:45:30 -07:00
clk-highbank.c
clk-ls1x.c clk: ls1x: Update relationship among all clocks 2014-11-24 07:45:09 +01:00
clk-max77686.c clk: Remove .owner field for driver 2014-09-25 17:43:31 -07:00
clk-max77802.c clk: Remove .owner field for driver 2014-09-25 17:43:31 -07:00
clk-max-gen.c clk: Add generic driver for Maxim PMIC clocks 2014-09-09 13:55:44 -07:00
clk-max-gen.h clk: Add generic driver for Maxim PMIC clocks 2014-09-09 13:55:44 -07:00
clk-mb86s7x.c clk: Add clock driver for mb86s7x 2015-04-10 13:51:55 -07:00
clk-moxart.c clk: add MOXA ART SoCs clock driver 2014-03-18 17:13:14 -07:00
clk-mux.c clk: Add clk_unregister_{divider, gate, mux} to close memory leak 2015-01-17 13:52:41 -08:00
clk-nomadik.c clk: nomadik: fix multiplatform problem 2014-02-26 11:14:44 -08:00
clk-nspire.c
clk-palmas.c clk: constify of_device_id array 2015-04-01 10:59:27 -07:00
clk-pwm.c clk: Add PWM clock driver 2015-04-10 14:44:43 -07:00
clk-qoriq.c clk: qoriq: Add support for the platform PLL 2015-02-18 09:56:43 -08:00
clk-rk808.c clk: RK808: add clkout driver for RK808 2014-10-14 02:18:18 +02:00
clk-s2mps11.c clk: s2mps11: use clkdev_create() 2015-05-06 11:58:59 +01:00
clk-si570.c clk: si570: Constify struct regmap_config 2015-03-27 00:22:49 -07:00
clk-si5351.c clk: si5351: Do not pass struct clk in platform_data 2015-05-08 11:22:30 -07:00
clk-si5351.h clk: si5351: remove variant from platform_data 2014-01-27 11:20:22 -08:00
clk-twl6040.c clk: Remove .owner field for driver 2014-09-25 17:43:31 -07:00
clk-u300.c clk: u300: Terminate of match table 2014-05-27 18:29:04 -07:00
clk-vt8500.c clk: vt8500: Staticize vtwm_pll_ops 2013-12-19 17:47:32 -08:00
clk-wm831x.c clk: Remove .owner field for driver 2014-09-25 17:43:31 -07:00
clk-xgene.c clk: Add APM X-Gene SoC clock driver 2013-10-07 11:22:15 -07:00
clk.c clk: add missing lock when call clk_core_enable in clk_set_parent 2015-05-06 16:58:53 -07:00
clk.h clk: Replace of_clk_get_by_clkspec() with of_clk_get_from_provider() 2015-03-12 12:20:34 -07:00
clkdev.c clkdev: add clkdev_create() helper 2015-05-06 11:58:57 +01:00
Kconfig clk: Add PWM clock driver 2015-04-10 14:44:43 -07:00
Makefile The changes to the common clock framework for 4.0 are mostly new clock 2015-04-21 09:24:09 -07:00