diff options
Diffstat (limited to 'drivers/cpufreq/imx6q-cpufreq.c')
-rw-r--r-- | drivers/cpufreq/imx6q-cpufreq.c | 21 |
1 files changed, 1 insertions, 20 deletions
diff --git a/drivers/cpufreq/imx6q-cpufreq.c b/drivers/cpufreq/imx6q-cpufreq.c index e37cdaedbb5b..3e396543aea4 100644 --- a/drivers/cpufreq/imx6q-cpufreq.c +++ b/drivers/cpufreq/imx6q-cpufreq.c | |||
@@ -117,28 +117,11 @@ static int imx6q_set_target(struct cpufreq_policy *policy, | |||
117 | * - Reprogram pll1_sys_clk and reparent pll1_sw_clk back to it | 117 | * - Reprogram pll1_sys_clk and reparent pll1_sw_clk back to it |
118 | * - Disable pll2_pfd2_396m_clk | 118 | * - Disable pll2_pfd2_396m_clk |
119 | */ | 119 | */ |
120 | clk_prepare_enable(pll2_pfd2_396m_clk); | ||
121 | clk_set_parent(step_clk, pll2_pfd2_396m_clk); | 120 | clk_set_parent(step_clk, pll2_pfd2_396m_clk); |
122 | clk_set_parent(pll1_sw_clk, step_clk); | 121 | clk_set_parent(pll1_sw_clk, step_clk); |
123 | if (freq_hz > clk_get_rate(pll2_pfd2_396m_clk)) { | 122 | if (freq_hz > clk_get_rate(pll2_pfd2_396m_clk)) { |
124 | clk_set_rate(pll1_sys_clk, freqs.new * 1000); | 123 | clk_set_rate(pll1_sys_clk, freqs.new * 1000); |
125 | /* | ||
126 | * If we are leaving 396 MHz set-point, we need to enable | ||
127 | * pll1_sys_clk and disable pll2_pfd2_396m_clk to keep | ||
128 | * their use count correct. | ||
129 | */ | ||
130 | if (freqs.old * 1000 <= clk_get_rate(pll2_pfd2_396m_clk)) { | ||
131 | clk_prepare_enable(pll1_sys_clk); | ||
132 | clk_disable_unprepare(pll2_pfd2_396m_clk); | ||
133 | } | ||
134 | clk_set_parent(pll1_sw_clk, pll1_sys_clk); | 124 | clk_set_parent(pll1_sw_clk, pll1_sys_clk); |
135 | clk_disable_unprepare(pll2_pfd2_396m_clk); | ||
136 | } else { | ||
137 | /* | ||
138 | * Disable pll1_sys_clk if pll2_pfd2_396m_clk is sufficient | ||
139 | * to provide the frequency. | ||
140 | */ | ||
141 | clk_disable_unprepare(pll1_sys_clk); | ||
142 | } | 125 | } |
143 | 126 | ||
144 | /* Ensure the arm clock divider is what we expect */ | 127 | /* Ensure the arm clock divider is what we expect */ |
@@ -221,14 +204,12 @@ static int imx6q_cpufreq_probe(struct platform_device *pdev) | |||
221 | 204 | ||
222 | cpu_dev = &pdev->dev; | 205 | cpu_dev = &pdev->dev; |
223 | 206 | ||
224 | np = of_find_node_by_path("/cpus/cpu@0"); | 207 | np = of_node_get(cpu_dev->of_node); |
225 | if (!np) { | 208 | if (!np) { |
226 | dev_err(cpu_dev, "failed to find cpu0 node\n"); | 209 | dev_err(cpu_dev, "failed to find cpu0 node\n"); |
227 | return -ENOENT; | 210 | return -ENOENT; |
228 | } | 211 | } |
229 | 212 | ||
230 | cpu_dev->of_node = np; | ||
231 | |||
232 | arm_clk = devm_clk_get(cpu_dev, "arm"); | 213 | arm_clk = devm_clk_get(cpu_dev, "arm"); |
233 | pll1_sys_clk = devm_clk_get(cpu_dev, "pll1_sys"); | 214 | pll1_sys_clk = devm_clk_get(cpu_dev, "pll1_sys"); |
234 | pll1_sw_clk = devm_clk_get(cpu_dev, "pll1_sw"); | 215 | pll1_sw_clk = devm_clk_get(cpu_dev, "pll1_sw"); |