linux/drivers/clk
Martin Fuzzey 1f61e5f143 clk: clock multiplexers may register out of order
When a clock, C is initialised any orphan clocks listing C as
a possible parent are reparented to it regardless of the
parent requested by the orphan's get_parent() operation.

This means that multiplexers registered before their parents
are reparented to the first parent subsequently declared,
regardless of the selection made by the hardware registers.

For example:
	static const char *sel[] = { "srcA", "srcB", "dummy", "srcC" };

	child = clk_register_mux(NULL, "child",  sel, ARRAY_SIZE(sel), ...);
	clk_register_fixed(NULL, "dummy", ...);
	clk_register_fixed(NULL, "srcA", ...);
	clk_register_fixed(NULL, "srcB", ...);
	clk_register_fixed(NULL, "srcC", ...);

Causes child's parent to always be "dummy".

To fix this, when an orphanned clock has a get_parent() operation,
only reparent to the clock indicated by get_parent().

Signed-off-by: Martin Fuzzey <mfuzzey@parkeon.com>
Signed-off-by: Mike Turquette <mturquette@linaro.org>
[mturquette@linaro.org: improve $SUBJECT]
2012-11-26 11:14:45 -08:00
..
mmp clk: mmp: add clock definition for mmp2 2012-08-28 14:15:42 -07:00
mxs clk: mxs: Use a better name for the USB PHY clock 2012-11-16 09:28:19 -08:00
socfpga ARM: socfpga: initial support for Altera's SOCFPGA platform 2012-07-19 10:39:00 +02:00
spear CLK: SPEAr: Remove unused dummy apb_pclk 2012-11-21 11:46:12 -08:00
ux500 clk: ux500: Initial support for abx500 clock driver 2012-11-26 08:14:12 -08:00
versatile clk: move IM-PD1 clocks to drivers/clk 2012-11-21 11:02:44 -08:00
clk-bcm2835.c clk: fix return value check in bcm2835_init_clocks() 2012-11-09 16:49:15 -08:00
clk-devres.c ARM: 7537/1: clk: Fix release in devm_clk_put() 2012-09-19 21:51:27 +01:00
clk-divider.c clk: Add CLK_IS_BASIC flag to identify basic clocks 2012-07-11 15:36:43 -07:00
clk-fixed-factor.c clk: Add CLK_IS_BASIC flag to identify basic clocks 2012-07-11 15:36:43 -07:00
clk-fixed-rate.c clk: fix return value check in of_fixed_clk_setup() 2012-10-29 11:06:19 -07:00
clk-gate.c clk: Add CLK_IS_BASIC flag to identify basic clocks 2012-07-11 15:36:43 -07:00
clk-highbank.c clk: add highbank clock support 2012-07-11 17:58:47 -07:00
clk-ls1x.c clk: add Loongson1B clock support 2012-08-31 11:05:18 -07:00
clk-max77686.c clock: max77686: Add driver for Maxim 77686 32Khz crystal oscillator. 2012-09-06 16:55:38 -07:00
clk-mux.c clk: Add CLK_IS_BASIC flag to identify basic clocks 2012-07-11 15:36:43 -07:00
clk-nomadik.c ARM: nomadik: convert to generic clock 2012-06-10 18:41:40 +02:00
clk-prima2.c clk: fix return value check in sirfsoc_of_clk_init() 2012-10-29 11:07:32 -07:00
clk-twl6040.c CLK: clk-twl6040: fix return value check in twl6040_clk_probe() 2012-11-15 11:04:34 -08:00
clk-u300.c ARM: u300: convert to common clock 2012-07-11 15:36:45 -07:00
clk-vt8500.c CLK: vt8500: Fix SDMMC clk special cases 2012-11-09 17:03:55 -08:00
clk-wm831x.c clk: wm831x: Use devm_clk_register() to simplify code 2012-10-29 11:12:55 -07:00
clk.c clk: clock multiplexers may register out of order 2012-11-26 11:14:45 -08:00
clkdev.c ARM: 7534/1: clk: Make the managed clk functions generically available 2012-09-15 21:55:27 +01:00
Kconfig clk: Common clocks implementation for Versatile Express 2012-10-29 11:08:03 -07:00
Makefile CLK: clk-twl6040: Initial clock driver for OMAP4+ McPDM fclk clock 2012-10-29 11:07:42 -07:00