linux/drivers/clk/versatile
Linus Walleij 1243ed57f8 clk: versatile: sp810: support reentrance
commit ec7957a6aa upstream.

Despite care take to allocate clocks state containers the
SP810 driver actually just supports creating one instance:
all clocks registered for every instance will end up with the
exact same name and __clk_init() will fail.

Rename the timclken<0> .. timclken<n> to sp810_<instance>_<n>
so every clock on every instance gets a unique name.

This is necessary for the RealView PBA8 which has two SP810
blocks: the second block will not register its clocks unless
every clock on every instance is unique and results in boot
logs like this:

------------[ cut here ]------------
WARNING: CPU: 0 PID: 0 at ../drivers/clk/versatile/clk-sp810.c:137
  clk_sp810_of_setup+0x110/0x154()
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted
4.5.0-rc2-00030-g352718fc39f6-dirty #225
Hardware name: ARM RealView Machine (Device Tree Support)
[<c00167f8>] (unwind_backtrace) from [<c0013204>]
             (show_stack+0x10/0x14)
[<c0013204>] (show_stack) from [<c01a049c>]
             (dump_stack+0x84/0x9c)
[<c01a049c>] (dump_stack) from [<c0024990>]
             (warn_slowpath_common+0x74/0xb0)
[<c0024990>] (warn_slowpath_common) from [<c0024a68>]
             (warn_slowpath_null+0x1c/0x24)
[<c0024a68>] (warn_slowpath_null) from [<c051eb44>]
             (clk_sp810_of_setup+0x110/0x154)
[<c051eb44>] (clk_sp810_of_setup) from [<c051e3a4>]
             (of_clk_init+0x12c/0x1c8)
[<c051e3a4>] (of_clk_init) from [<c0504714>]
             (time_init+0x20/0x2c)
[<c0504714>] (time_init) from [<c0501b18>]
             (start_kernel+0x244/0x3c4)
[<c0501b18>] (start_kernel) from [<7000807c>] (0x7000807c)
---[ end trace cb88537fdc8fa200 ]---

Cc: Michael Turquette <mturquette@baylibre.com>
Cc: Pawel Moll <pawel.moll@arm.com>
Fixes: 6e973d2c43 "clk: vexpress: Add separate SP810 driver"
Signed-off-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Stephen Boyd <sboyd@codeaurora.org>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk>
History 2016-05-01 00:05:51 +02:00
..
clk-icst.c clk: versatile-icst: fix memory leak 2015-12-13 17:49:38 +00:00
clk-icst.h clk: versatile: pass a parent to the ICST clock 2014-02-13 11:20:48 +01:00
clk-impd1.c clk: impd1: add pclk clocks 2014-05-21 16:16:02 -07:00
clk-integrator.c clk: versatile: respect parent rate in ICST clock 2014-02-13 11:20:55 +01:00
clk-realview.c clk: versatile: pass a parent to the ICST clock 2014-02-13 11:20:48 +01:00
clk-sp810.c clk: versatile: sp810: support reentrance 2016-05-01 00:05:51 +02:00
clk-vexpress-osc.c mfd: vexpress: Convert custom func API to regmap 2014-05-15 17:02:18 +01:00
clk-vexpress.c clk: add CLK_SET_RATE_NO_REPARENT flag 2013-08-19 12:27:17 -07:00
Kconfig clk: versatile: Split config options for sp810 and vexpress_osc 2014-05-15 17:02:20 +01:00
Makefile clk: versatile: Split config options for sp810 and vexpress_osc 2014-05-15 17:02:20 +01:00