|
Lines 413-431
static ssize_t store_scaling_governor (s
Link Here
|
| 413 |
char str_governor[16]; |
413 |
char str_governor[16]; |
| 414 |
struct cpufreq_policy new_policy; |
414 |
struct cpufreq_policy new_policy; |
| 415 |
|
415 |
|
|
|
416 |
mutex_lock(&policy->lock); |
| 416 |
ret = cpufreq_get_policy(&new_policy, policy->cpu); |
417 |
ret = cpufreq_get_policy(&new_policy, policy->cpu); |
| 417 |
if (ret) |
418 |
if (ret) |
| 418 |
return ret; |
419 |
goto error; |
| 419 |
|
420 |
|
| 420 |
ret = sscanf (buf, "%15s", str_governor); |
421 |
ret = sscanf (buf, "%15s", str_governor); |
| 421 |
if (ret != 1) |
422 |
if (ret != 1){ |
| 422 |
return -EINVAL; |
423 |
ret = -EINVAL; |
|
|
424 |
goto error; |
| 425 |
} |
| 423 |
|
426 |
|
| 424 |
if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)) |
427 |
if (cpufreq_parse_governor(str_governor, &new_policy.policy, &new_policy.governor)){ |
| 425 |
return -EINVAL; |
428 |
ret = -EINVAL; |
|
|
429 |
goto error; |
| 430 |
} |
| 431 |
/* Do not use cpufreq_set_policy here or the user_policy.max |
| 432 |
will be wrongly overridden */ |
| 433 |
ret = __cpufreq_set_policy(policy, &new_policy); |
| 434 |
|
| 435 |
policy->user_policy.policy = policy->policy; |
| 436 |
policy->user_policy.governor = policy->governor; |
| 437 |
mutex_unlock(&policy->lock); |
| 438 |
cpufreq_cpu_put(policy); |
| 426 |
|
439 |
|
| 427 |
ret = cpufreq_set_policy(&new_policy); |
|
|
| 428 |
return ret ? ret : count; |
440 |
return ret ? ret : count; |
|
|
441 |
error: |
| 442 |
mutex_unlock(&policy->lock); |
| 443 |
return ret; |
| 429 |
} |
444 |
} |
| 430 |
|
445 |
|
| 431 |
/** |
446 |
/** |