Lines Matching defs:governor
31 #include "governor.h"
253 * find_devfreq_governor() - find devfreq governor from name
254 * @name: name of the governor
257 * governor's pointer. devfreq_list_lock should be held by the caller.
279 * try_then_request_governor() - Try to find the governor and request the
281 * @name: name of the governor
284 * if is not found. This can happen when both drivers (the governor driver
287 * governor's pointer or an error pointer.
291 struct devfreq_governor *governor;
301 governor = find_devfreq_governor(name);
302 if (IS_ERR(governor)) {
315 governor = find_devfreq_governor(name);
318 return governor;
395 * is only used for devfreq device using passive governor.
408 if (!devfreq->governor)
412 err = devfreq->governor->get_target_freq(devfreq, &freq);
479 * called by devfreq governor in response to the DEVFREQ_GOV_START event
484 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
517 * to be called from governor in response to DEVFREQ_GOV_STOP
522 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
542 * to be called from governor in response to DEVFREQ_GOV_SUSPEND
561 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
573 * to be called from governor in response to DEVFREQ_GOV_RESUME
582 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
612 * to be called from governor in response to DEVFREQ_GOV_UPDATE_INTERVAL event.
622 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
798 * @data: devfreq driver pass to governors, governor should not change it.
806 struct devfreq_governor *governor;
942 governor = try_then_request_governor(governor_name);
943 if (IS_ERR(governor)) {
944 dev_err(dev, "%s: Unable to find governor for the device\n",
946 err = PTR_ERR(governor);
950 devfreq->governor = governor;
951 err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
955 "%s: Unable to start governor for the device\n",
959 create_sysfs_files(devfreq, devfreq->governor);
998 if (devfreq->governor) {
999 devfreq->governor->event_handler(devfreq,
1001 remove_sysfs_files(devfreq, devfreq->governor);
1030 * @data: devfreq driver pass to governors, governor should not change it.
1162 if (devfreq->governor) {
1163 ret = devfreq->governor->event_handler(devfreq,
1207 if (devfreq->governor) {
1208 ret = devfreq->governor->event_handler(devfreq,
1263 * devfreq_add_governor() - Add devfreq governor
1264 * @governor: the devfreq governor to be added
1266 int devfreq_add_governor(struct devfreq_governor *governor)
1272 if (!governor) {
1278 g = find_devfreq_governor(governor->name);
1280 pr_err("%s: governor %s already registered\n", __func__,
1286 list_add(&governor->node, &devfreq_governor_list);
1292 if (!strncmp(devfreq->governor->name, governor->name,
1295 if (devfreq->governor) {
1298 __func__, devfreq->governor->name);
1299 ret = devfreq->governor->event_handler(devfreq,
1305 devfreq->governor->name, ret);
1309 devfreq->governor = governor;
1310 ret = devfreq->governor->event_handler(devfreq,
1314 __func__, devfreq->governor->name,
1327 static void devm_devfreq_remove_governor(void *governor)
1329 WARN_ON(devfreq_remove_governor(governor));
1333 * devm_devfreq_add_governor() - Add devfreq governor
1334 * @dev: device which adds devfreq governor
1335 * @governor: the devfreq governor to be added
1340 struct devfreq_governor *governor)
1344 err = devfreq_add_governor(governor);
1349 governor);
1355 * @governor: the devfreq governor to be removed
1357 int devfreq_remove_governor(struct devfreq_governor *governor)
1363 if (!governor) {
1369 g = find_devfreq_governor(governor->name);
1371 pr_err("%s: governor %s not registered\n", __func__,
1372 governor->name);
1380 if (!devfreq->governor)
1383 if (!strncmp(devfreq->governor->name, governor->name,
1385 ret = devfreq->governor->event_handler(devfreq,
1389 __func__, devfreq->governor->name,
1392 devfreq->governor = NULL;
1396 list_del(&governor->node);
1417 if (!df->governor)
1420 return sprintf(buf, "%s\n", df->governor->name);
1429 const struct devfreq_governor *governor, *prev_governor;
1431 if (!df->governor)
1439 governor = try_then_request_governor(str_governor);
1440 if (IS_ERR(governor)) {
1441 ret = PTR_ERR(governor);
1444 if (df->governor == governor) {
1447 } else if (IS_SUPPORTED_FLAG(df->governor->flags, IMMUTABLE)
1448 || IS_SUPPORTED_FLAG(governor->flags, IMMUTABLE)) {
1454 * Stop the current governor and remove the specific sysfs files
1455 * which depend on current governor.
1457 ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
1460 __func__, df->governor->name, ret);
1463 remove_sysfs_files(df, df->governor);
1466 * Start the new governor and create the specific sysfs files
1467 * which depend on the new governor.
1469 prev_governor = df->governor;
1470 df->governor = governor;
1471 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1474 __func__, df->governor->name, ret);
1476 /* Restore previous governor */
1477 df->governor = prev_governor;
1478 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1483 df->governor = NULL;
1489 * Create the sysfs files for the new governor. But if failed to start
1490 * the new governor, restore the sysfs files of previous governor.
1492 create_sysfs_files(df, df->governor);
1501 static DEVICE_ATTR_RW(governor);
1510 if (!df->governor)
1516 * The devfreq with immutable governor (e.g., passive) shows
1517 * only own governor.
1519 if (IS_SUPPORTED_FLAG(df->governor->flags, IMMUTABLE)) {
1521 "%s ", df->governor->name);
1523 * The devfreq device shows the registered governor except for
1524 * immutable governors such as passive governor .
1527 struct devfreq_governor *governor;
1529 list_for_each_entry(governor, &devfreq_governor_list, node) {
1530 if (IS_SUPPORTED_FLAG(governor->flags, IMMUTABLE))
1533 "%s ", governor->name);
1831 if (!df->governor)
1838 df->governor->event_handler(df, DEVFREQ_GOV_UPDATE_INTERVAL, &value);
1864 if (!df->governor || !df->profile)
1892 ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
1895 __func__, df->governor->name, ret);
1899 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1902 __func__, df->governor->name, ret);
1918 /* Create the specific sysfs files which depend on each governor. */
1928 /* Remove the specific sysfs files which depend on each governor. */
1960 "governor",
1980 if (!strncmp(devfreq->governor->name, DEVFREQ_GOV_PASSIVE,
1996 if (IS_SUPPORTED_ATTR(devfreq->governor->attrs, POLLING_INTERVAL))
2006 devfreq->governor->name,