power: Simplify soc_id checks

- Get soc_id in a common util function
 - Return boolean values for the target-specific soc_id checks

Change-Id: I038c435d28855859f36566de7acf881037d070f2
This commit is contained in:
Zhao Wei Liew
2016-07-19 19:57:06 +08:00
committed by Michael Bestas
parent 3fac864721
commit 7ff6620596
5 changed files with 69 additions and 57 deletions

View File

@@ -56,25 +56,20 @@ static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
/* Returns true is target is SDM630/SDM455 else false*/
static bool is_target_SDM630() {
int fd;
bool is_target_SDM630 = false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM630 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 318 || soc_id == 327 || soc_id == 385) {
is_target_SDM630 = true; /* Above SOCID for SDM630/SDM455 */
}
}
}
close(fd);
return is_target_SDM630;
/**
* If target is SDM630/SDM455:
* return true
* else:
* return false
*/
static bool is_target_SDM630(void) {
static bool is_SDM630 = false;
int soc_id;
soc_id = get_soc_id();
if (soc_id == 318 || soc_id == 327 || soc_id == 385) is_SDM630 = true;
return is_SDM630;
}
int power_hint_override(power_hint_t hint, void* data) {

View File

@@ -55,25 +55,20 @@ static int display_hint_sent;
static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
static bool is_target_SDM439() /* Returns value=1 if target is Hathi else value 0 */
{
int fd;
bool is_target_SDM439 = false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM439 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 353 || soc_id == 363 || soc_id == 354 || soc_id == 364) {
is_target_SDM439 = true; /* Above SOCID for SDM439/429 */
}
}
}
close(fd);
return is_target_SDM439;
/**
* If target is SDM439/429:
* return true
* else:
* return false
*/
static bool is_target_SDM439(void) {
static bool is_SDM439 = false;
int soc_id;
soc_id = get_soc_id();
if (soc_id == 353 || soc_id == 363 || soc_id == 354 || soc_id == 364) is_SDM439 = true;
return is_SDM439;
}
int power_hint_override(power_hint_t hint, void* data) {

View File

@@ -56,25 +56,20 @@ static int video_encode_hint_sent;
static void process_video_encode_hint(void* metadata);
static bool is_target_SDM632() /* Returns value=632 if target is SDM632 else value 0 */
{
int fd;
bool is_target_SDM632 = false;
char buf[10] = {0};
fd = open("/sys/devices/soc0/soc_id", O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1) {
ALOGW("Unable to read soc_id");
is_target_SDM632 = false;
} else {
int soc_id = atoi(buf);
if (soc_id == 349 || soc_id == 350) {
is_target_SDM632 = true; /* Above SOCID for SDM632 */
}
}
}
close(fd);
return is_target_SDM632;
/**
* If target is SDM632:
* return true
* else:
* return false
*/
static bool is_target_SDM632(void) {
static bool is_SDM632 = false;
int soc_id;
soc_id = get_soc_id();
if (soc_id == 349 || soc_id == 350) is_SDM632 = true;
return is_SDM632;
}
int power_hint_override(power_hint_t hint, void* data) {

24
utils.c
View File

@@ -43,6 +43,9 @@
#define LOG_TAG "QTI PowerHAL"
#include <log/log.h>
#define SOC_ID_0 "/sys/devices/soc0/soc_id"
#define SOC_ID_1 "/sys/devices/system/soc/soc0/id"
char scaling_gov_path[4][80] = {"sys/devices/system/cpu/cpu0/cpufreq/scaling_governor",
"sys/devices/system/cpu/cpu1/cpufreq/scaling_governor",
"sys/devices/system/cpu/cpu2/cpufreq/scaling_governor",
@@ -341,3 +344,24 @@ void undo_initial_hint_action() {
}
}
}
int get_soc_id(void) {
int fd;
int soc_id = -1;
char buf[10] = {0};
if (!access(SOC_ID_0, F_OK))
fd = open(SOC_ID_0, O_RDONLY);
else
fd = open(SOC_ID_1, O_RDONLY);
if (fd >= 0) {
if (read(fd, buf, sizeof(buf) - 1) == -1)
ALOGW("Unable to read soc_id");
else
soc_id = atoi(buf);
}
close(fd);
return soc_id;
}

View File

@@ -47,4 +47,7 @@ void release_request(int lock_handle);
void interaction(int duration, int num_args, int opt_list[]);
int interaction_with_handle(int lock_handle, int duration, int num_args, int opt_list[]);
int perf_hint_enable(int hint_id, int duration);
int get_soc_id(void);
PropVal perf_get_property(const char* prop, const char* def_val);