From: Martin Fuzzey Date: Thu, 22 Nov 2012 19:15:05 +0000 (+0100) Subject: clk: clock multiplexers may register out of order X-Git-Tag: omap-for-v3.8/fixes-for-merge-window-v4-signed~93^2~3 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1f61e5f143b578606389887887af549bc5554353;p=pandora-kernel.git 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 Signed-off-by: Mike Turquette [mturquette@linaro.org: improve $SUBJECT] --- Reading git-diff-tree failed