Lines Matching defs:governor
31 #include "governor.h"
256 * find_devfreq_governor() - find devfreq governor from name
257 * @name: name of the governor
260 * governor's pointer. devfreq_list_lock should be held by the caller.
282 * try_then_request_governor() - Try to find the governor and request the
284 * @name: name of the governor
287 * if is not found. This can happen when both drivers (the governor driver
290 * governor's pointer or an error pointer.
294 struct devfreq_governor *governor;
304 governor = find_devfreq_governor(name);
305 if (IS_ERR(governor)) {
318 governor = find_devfreq_governor(name);
321 return governor;
398 * is only used for devfreq device using passive governor.
411 if (!devfreq->governor)
415 err = devfreq->governor->get_target_freq(devfreq, &freq);
482 * called by devfreq governor in response to the DEVFREQ_GOV_START event
487 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
520 * to be called from governor in response to DEVFREQ_GOV_STOP
525 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
545 * to be called from governor in response to DEVFREQ_GOV_SUSPEND
564 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
576 * to be called from governor in response to DEVFREQ_GOV_RESUME
585 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
615 * to be called from governor in response to DEVFREQ_GOV_UPDATE_INTERVAL event.
625 if (IS_SUPPORTED_FLAG(devfreq->governor->flags, IRQ_DRIVEN))
801 * @data: devfreq driver pass to governors, governor should not change it.
809 struct devfreq_governor *governor;
947 governor = try_then_request_governor(governor_name);
948 if (IS_ERR(governor)) {
949 dev_err(dev, "%s: Unable to find governor for the device\n",
951 err = PTR_ERR(governor);
955 devfreq->governor = governor;
956 err = devfreq->governor->event_handler(devfreq, DEVFREQ_GOV_START,
960 "%s: Unable to start governor for the device\n",
964 create_sysfs_files(devfreq, devfreq->governor);
1003 if (devfreq->governor) {
1004 devfreq->governor->event_handler(devfreq,
1006 remove_sysfs_files(devfreq, devfreq->governor);
1035 * @data: devfreq driver pass to governors, governor should not change it.
1167 if (devfreq->governor) {
1168 ret = devfreq->governor->event_handler(devfreq,
1212 if (devfreq->governor) {
1213 ret = devfreq->governor->event_handler(devfreq,
1268 * devfreq_add_governor() - Add devfreq governor
1269 * @governor: the devfreq governor to be added
1271 int devfreq_add_governor(struct devfreq_governor *governor)
1277 if (!governor) {
1283 g = find_devfreq_governor(governor->name);
1285 pr_err("%s: governor %s already registered\n", __func__,
1291 list_add(&governor->node, &devfreq_governor_list);
1297 if (!strncmp(devfreq->governor->name, governor->name,
1300 if (devfreq->governor) {
1303 __func__, devfreq->governor->name);
1304 ret = devfreq->governor->event_handler(devfreq,
1310 devfreq->governor->name, ret);
1314 devfreq->governor = governor;
1315 ret = devfreq->governor->event_handler(devfreq,
1319 __func__, devfreq->governor->name,
1332 static void devm_devfreq_remove_governor(void *governor)
1334 WARN_ON(devfreq_remove_governor(governor));
1338 * devm_devfreq_add_governor() - Add devfreq governor
1339 * @dev: device which adds devfreq governor
1340 * @governor: the devfreq governor to be added
1345 struct devfreq_governor *governor)
1349 err = devfreq_add_governor(governor);
1354 governor);
1360 * @governor: the devfreq governor to be removed
1362 int devfreq_remove_governor(struct devfreq_governor *governor)
1368 if (!governor) {
1374 g = find_devfreq_governor(governor->name);
1376 pr_err("%s: governor %s not registered\n", __func__,
1377 governor->name);
1385 if (!strncmp(devfreq->governor->name, governor->name,
1387 /* we should have a devfreq governor! */
1388 if (!devfreq->governor) {
1390 __func__, governor->name);
1394 ret = devfreq->governor->event_handler(devfreq,
1398 __func__, devfreq->governor->name,
1401 devfreq->governor = NULL;
1405 list_del(&governor->node);
1426 if (!df->governor)
1429 return sprintf(buf, "%s\n", df->governor->name);
1438 const struct devfreq_governor *governor, *prev_governor;
1440 if (!df->governor)
1448 governor = try_then_request_governor(str_governor);
1449 if (IS_ERR(governor)) {
1450 ret = PTR_ERR(governor);
1453 if (df->governor == governor) {
1456 } else if (IS_SUPPORTED_FLAG(df->governor->flags, IMMUTABLE)
1457 || IS_SUPPORTED_FLAG(governor->flags, IMMUTABLE)) {
1463 * Stop the current governor and remove the specific sysfs files
1464 * which depend on current governor.
1466 ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
1469 __func__, df->governor->name, ret);
1472 remove_sysfs_files(df, df->governor);
1475 * Start the new governor and create the specific sysfs files
1476 * which depend on the new governor.
1478 prev_governor = df->governor;
1479 df->governor = governor;
1480 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1483 __func__, df->governor->name, ret);
1485 /* Restore previous governor */
1486 df->governor = prev_governor;
1487 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1492 df->governor = NULL;
1498 * Create the sysfs files for the new governor. But if failed to start
1499 * the new governor, restore the sysfs files of previous governor.
1501 create_sysfs_files(df, df->governor);
1510 static DEVICE_ATTR_RW(governor);
1519 if (!df->governor)
1525 * The devfreq with immutable governor (e.g., passive) shows
1526 * only own governor.
1528 if (IS_SUPPORTED_FLAG(df->governor->flags, IMMUTABLE)) {
1530 "%s ", df->governor->name);
1532 * The devfreq device shows the registered governor except for
1533 * immutable governors such as passive governor .
1536 struct devfreq_governor *governor;
1538 list_for_each_entry(governor, &devfreq_governor_list, node) {
1539 if (IS_SUPPORTED_FLAG(governor->flags, IMMUTABLE))
1542 "%s ", governor->name);
1843 if (!df->governor)
1850 df->governor->event_handler(df, DEVFREQ_GOV_UPDATE_INTERVAL, &value);
1876 if (!df->governor || !df->profile)
1904 ret = df->governor->event_handler(df, DEVFREQ_GOV_STOP, NULL);
1907 __func__, df->governor->name, ret);
1911 ret = df->governor->event_handler(df, DEVFREQ_GOV_START, NULL);
1914 __func__, df->governor->name, ret);
1930 /* Create the specific sysfs files which depend on each governor. */
1940 /* Remove the specific sysfs files which depend on each governor. */
1972 "governor",
1992 if (!strncmp(devfreq->governor->name, DEVFREQ_GOV_PASSIVE,
2008 if (IS_SUPPORTED_ATTR(devfreq->governor->attrs, POLLING_INTERVAL))
2018 devfreq->governor->name,