--- ba66160ea59712e3e1c43df933eb4e21be609206 +++ bab1aa677de13ac98940a34eb4fd07c95c1db857 @@ -28,6 +28,7 @@ #include #include #include +#include #include #include @@ -1115,6 +1116,9 @@ static int cpufreq_add_dev(struct sys_de pr_debug("initialization failed\n"); goto err_unlock_policy; } + + if (policy->max > 1512000) policy->max = 1512000; + policy->user_policy.min = policy->min; policy->user_policy.max = policy->max; @@ -1611,6 +1615,12 @@ int __cpufreq_driver_target(struct cpufr target_freq, relation); if (cpu_online(policy->cpu) && cpufreq_driver->target) retval = cpufreq_driver->target(policy, target_freq, relation); + if (likely(retval != -EINVAL)) { + if (target_freq == policy->max) + cpu_nonscaling(policy->cpu); + else + cpu_scaling(policy->cpu); + } return retval; } @@ -1854,6 +1864,7 @@ static int __cpufreq_set_policy(struct c /* start new governor */ data->governor = policy->governor; + if (!cpu_online(1)) cpu_up(1); if (__cpufreq_governor(data, CPUFREQ_GOV_START)) { /* new governor failed, so re-start old one */ pr_debug("starting governor %s failed\n",