blob: 5b3a5373053838b4ee517a49b1859be013ba83ac [file] [log] [blame]
Anurag Singh057806b2013-04-16 16:53:45 -07001/*
2 * Copyright (c) 2013, The Linux Foundation. All rights reserved.
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are
6 * met:
7 * * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above
10 * copyright notice, this list of conditions and the following
11 * disclaimer in the documentation and/or other materials provided
12 * with the distribution.
13 * * Neither the name of The Linux Foundation nor the names of its
14 * contributors may be used to endorse or promote products derived
15 * from this software without specific prior written permission.
16 *
17 * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED
18 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT
20 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS
21 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
24 * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
25 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
26 * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
27 * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28 */
29#define LOG_NIDEBUG 0
30
31#include <errno.h>
32#include <string.h>
33#include <sys/types.h>
34#include <sys/stat.h>
35#include <fcntl.h>
36#include <dlfcn.h>
37#include <stdlib.h>
38
39#define LOG_TAG "QCOM PowerHAL"
40#include <utils/Log.h>
41#include <hardware/hardware.h>
42#include <hardware/power.h>
43
44#include "utils.h"
45#include "metadata-defs.h"
46#include "hint-data.h"
47#include "performance.h"
48#include "power-common.h"
49
50int set_interactive_override(struct power_module *module, int on)
51{
52 char governor[80];
53
54 if (get_scaling_governor(governor, sizeof(governor)) == -1) {
55 ALOGE("Can't obtain scaling governor.");
56
57 return HINT_NONE;
58 }
59
60 if (!on) {
61 /* Display off. */
62 if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
63 (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
64 int resource_values[] = {MS_500, SYNC_FREQ_300, OPTIMAL_FREQ_300};
65
66 perform_hint_action(DISPLAY_STATE_HINT_ID,
67 resource_values, sizeof(resource_values)/sizeof(resource_values[0]));
68
69 return HINT_HANDLED;
70 }
71 } else {
72 /* Display on */
73 if ((strncmp(governor, ONDEMAND_GOVERNOR, strlen(ONDEMAND_GOVERNOR)) == 0) &&
74 (strlen(governor) == strlen(ONDEMAND_GOVERNOR))) {
75 undo_hint_action(DISPLAY_STATE_HINT_ID);
76
77 return HINT_HANDLED;
78 }
79 }
80
81 return HINT_NONE;
82}