|
@@ -124,9 +124,18 @@ static int rockchip_cpuclk_pre_rate_change(struct rockchip_cpuclk *cpuclk,
|
|
|
struct clk_notifier_data *ndata)
|
|
|
{
|
|
|
const struct rockchip_cpuclk_reg_data *reg_data = cpuclk->reg_data;
|
|
|
+ const struct rockchip_cpuclk_rate_table *rate;
|
|
|
unsigned long alt_prate, alt_div;
|
|
|
unsigned long flags;
|
|
|
|
|
|
+ /* check validity of the new rate */
|
|
|
+ rate = rockchip_get_cpuclk_settings(cpuclk, ndata->new_rate);
|
|
|
+ if (!rate) {
|
|
|
+ pr_err("%s: Invalid rate : %lu for cpuclk\n",
|
|
|
+ __func__, ndata->new_rate);
|
|
|
+ return -EINVAL;
|
|
|
+ }
|
|
|
+
|
|
|
alt_prate = clk_get_rate(cpuclk->alt_parent);
|
|
|
|
|
|
spin_lock_irqsave(cpuclk->lock, flags);
|