diff options
author | Stephen Boyd <sboyd@codeaurora.org> | 2017-07-19 01:23:26 +0200 |
---|---|---|
committer | Stephen Boyd <sboyd@codeaurora.org> | 2017-07-19 01:23:26 +0200 |
commit | 1f5e4c15d3bb298ed35b3b347fbd6112cd7a5d54 (patch) | |
tree | 94f4b1979dcfdd86ffa4fe971b475156bf046bfd | |
parent | clk: mmp: Drop unnecessary static (diff) | |
parent | clk: x86: Do not gate clocks enabled by the firmware (diff) | |
download | linux-1f5e4c15d3bb298ed35b3b347fbd6112cd7a5d54.tar.xz linux-1f5e4c15d3bb298ed35b3b347fbd6112cd7a5d54.zip |
Merge branch 'clk-fixes' into clk-next
* clk-fixes:
clk: x86: Do not gate clocks enabled by the firmware
clk: gemini: Fix reset regression
-rw-r--r-- | drivers/clk/clk-gemini.c | 14 | ||||
-rw-r--r-- | drivers/clk/x86/clk-pmc-atom.c | 7 |
2 files changed, 21 insertions, 0 deletions
diff --git a/drivers/clk/clk-gemini.c b/drivers/clk/clk-gemini.c index c391a49aaaff..b4cf2f699a21 100644 --- a/drivers/clk/clk-gemini.c +++ b/drivers/clk/clk-gemini.c @@ -237,6 +237,18 @@ static int gemini_reset(struct reset_controller_dev *rcdev, BIT(GEMINI_RESET_CPU1) | BIT(id)); } +static int gemini_reset_assert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + return 0; +} + +static int gemini_reset_deassert(struct reset_controller_dev *rcdev, + unsigned long id) +{ + return 0; +} + static int gemini_reset_status(struct reset_controller_dev *rcdev, unsigned long id) { @@ -253,6 +265,8 @@ static int gemini_reset_status(struct reset_controller_dev *rcdev, static const struct reset_control_ops gemini_reset_ops = { .reset = gemini_reset, + .assert = gemini_reset_assert, + .deassert = gemini_reset_deassert, .status = gemini_reset_status, }; diff --git a/drivers/clk/x86/clk-pmc-atom.c b/drivers/clk/x86/clk-pmc-atom.c index f99abc1106f0..08ef69945ffb 100644 --- a/drivers/clk/x86/clk-pmc-atom.c +++ b/drivers/clk/x86/clk-pmc-atom.c @@ -186,6 +186,13 @@ static struct clk_plt *plt_clk_register(struct platform_device *pdev, int id, pclk->reg = base + PMC_CLK_CTL_OFFSET + id * PMC_CLK_CTL_SIZE; spin_lock_init(&pclk->lock); + /* + * If the clock was already enabled by the firmware mark it as critical + * to avoid it being gated by the clock framework if no driver owns it. + */ + if (plt_clk_is_enabled(&pclk->hw)) + init.flags |= CLK_IS_CRITICAL; + ret = devm_clk_hw_register(&pdev->dev, &pclk->hw); if (ret) { pclk = ERR_PTR(ret); |