aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/clk
diff options
context:
space:
mode:
authorTushar Behera <tushar.behera@linaro.org>2013-04-23 02:31:51 -0400
committerOlof Johansson <olof@lixom.net>2013-04-23 22:51:30 -0400
commit37746c9a2dd28d52790dd84267b848c087a63b2e (patch)
treee33f526e3ece67f5752b50875502cc28d281f7ca /drivers/clk
parentdb60074b468c5935760bd1f33cd192fae3c28b2b (diff)
clk: exynos5250: Fix parent clock for sclk_mmc{0,1,2,3}
commit 688f7d8c9fef ("clk: exynos5250: Fix divider values for sclk_mmc{0,1,2,3}") incorrectly sets the divider for sclk_mmc{0,1,2,3} to fix the wrong clock value. Though this fixed issue with Arndale, it created regressions for other boards like Snow. On Exynos5250, sclk_mmc<n> is generated like below (as per the clock names in drivers/clk/samsung/clk-exynos5250.c) mout_group1_p ==> mout_mmc<n> ==> div_mmc<n> ==> div_mmc_pre<n> => sclk_mmc<n> Earlier div_mmc<n> was set as the parent for sclk_mmc<n>, hence div_mmc_pre<n> was not getting referred in kernel code and depending on its value set during preboot, sclk_mmc<n> value was different for various boards. Setting the correct clock generation path should fix the issues reported in above referenced commit. The changes committed during the earlier patch has also been reverted here. Reported-by: Doug Anderson <dianders@chromium.org> Signed-off-by: Tushar Behera <tushar.behera@linaro.org> Tested-by: Doug Anderson <dianders@chromium.org> Acked-by: Kukjin Kim <kgene.kim@samsung.com> Signed-off-by: Olof Johansson <olof@lixom.net>
Diffstat (limited to 'drivers/clk')
-rw-r--r--drivers/clk/samsung/clk-exynos5250.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/drivers/clk/samsung/clk-exynos5250.c b/drivers/clk/samsung/clk-exynos5250.c
index 7290faa518d2..bb54606ff035 100644
--- a/drivers/clk/samsung/clk-exynos5250.c
+++ b/drivers/clk/samsung/clk-exynos5250.c
@@ -276,10 +276,10 @@ struct samsung_div_clock exynos5250_div_clks[] __initdata = {
276 DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8), 276 DIV(none, "div_pcm0", "sclk_audio0", DIV_MAU, 4, 8),
277 DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4), 277 DIV(none, "div_sata", "mout_sata", DIV_FSYS0, 20, 4),
278 DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4), 278 DIV(none, "div_usb3", "mout_usb3", DIV_FSYS0, 24, 4),
279 DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 8, 8), 279 DIV(none, "div_mmc0", "mout_mmc0", DIV_FSYS1, 0, 4),
280 DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 24, 8), 280 DIV(none, "div_mmc1", "mout_mmc1", DIV_FSYS1, 16, 4),
281 DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 8, 8), 281 DIV(none, "div_mmc2", "mout_mmc2", DIV_FSYS2, 0, 4),
282 DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 24, 8), 282 DIV(none, "div_mmc3", "mout_mmc3", DIV_FSYS2, 16, 4),
283 DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4), 283 DIV(none, "div_uart0", "mout_uart0", DIV_PERIC0, 0, 4),
284 DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4), 284 DIV(none, "div_uart1", "mout_uart1", DIV_PERIC0, 4, 4),
285 DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4), 285 DIV(none, "div_uart2", "mout_uart2", DIV_PERIC0, 8, 4),
@@ -421,13 +421,13 @@ struct samsung_gate_clock exynos5250_gate_clks[] __initdata = {
421 SRC_MASK_DISP1_0, 20, 0, 0), 421 SRC_MASK_DISP1_0, 20, 0, 0),
422 GATE(sclk_audio0, "sclk_audio0", "div_audio0", 422 GATE(sclk_audio0, "sclk_audio0", "div_audio0",
423 SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0), 423 SRC_MASK_MAU, 0, CLK_SET_RATE_PARENT, 0),
424 GATE(sclk_mmc0, "sclk_mmc0", "div_mmc0", 424 GATE(sclk_mmc0, "sclk_mmc0", "div_mmc_pre0",
425 SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0), 425 SRC_MASK_FSYS, 0, CLK_SET_RATE_PARENT, 0),
426 GATE(sclk_mmc1, "sclk_mmc1", "div_mmc1", 426 GATE(sclk_mmc1, "sclk_mmc1", "div_mmc_pre1",
427 SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0), 427 SRC_MASK_FSYS, 4, CLK_SET_RATE_PARENT, 0),
428 GATE(sclk_mmc2, "sclk_mmc2", "div_mmc2", 428 GATE(sclk_mmc2, "sclk_mmc2", "div_mmc_pre2",
429 SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0), 429 SRC_MASK_FSYS, 8, CLK_SET_RATE_PARENT, 0),
430 GATE(sclk_mmc3, "sclk_mmc3", "div_mmc3", 430 GATE(sclk_mmc3, "sclk_mmc3", "div_mmc_pre3",
431 SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0), 431 SRC_MASK_FSYS, 12, CLK_SET_RATE_PARENT, 0),
432 GATE(sclk_sata, "sclk_sata", "div_sata", 432 GATE(sclk_sata, "sclk_sata", "div_sata",
433 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0), 433 SRC_MASK_FSYS, 24, CLK_SET_RATE_PARENT, 0),