2 * Copyright (c) 2012 Intel Co., Ltd All Rights Reserved
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <sys/types.h>
23 #include <devman_plugin_intf.h>
25 #include "devman_define_node_path.h"
28 #define EXPORT_API __attribute__((visibility("default")))
33 /* TODO: Add APIs has (char *) params */
35 #define GENERATE_ACCESSORS_INT_RW(_suffix, _item) \
36 int OEM_sys_get_##_suffix(int *value) \
38 return sys_get_int(_item, value); \
41 int OEM_sys_set_##_suffix(int value) \
43 return sys_set_int(_item, value); \
46 #define GENERATE_ACCESSORS_INT_R(_suffix, _item) \
47 int OEM_sys_get_##_suffix(int *value) \
49 return sys_get_int(_item, value); \
52 #define GENERATE_ACCESSORS_INT_W(_suffix, _item) \
53 int OEM_sys_set_##_suffix(int value) \
55 return sys_set_int(_item, value); \
59 GENERATE_ACCESSORS_INT_R(backlight_max_brightness, BACKLIGHT_MAX_BRIGHTNESS_PATH)
60 GENERATE_ACCESSORS_INT_RW(backlight_brightness, BACKLIGHT_BRIGHTNESS_PATH)
61 GENERATE_ACCESSORS_INT_RW(backlight_acl_control, LCD_ACL_CONTROL_PATH)
62 GENERATE_ACCESSORS_INT_RW(lcd_power, LCD_POWER_PATH)
64 #if defined(DEVMGR_LOG)
65 #define devmgr_log(fmt, args...) \
67 printf("%s:"fmt"\n", __func__, ##args); \
70 #define devmgr_log(fmt, args...)
88 enum display_type etype; /* FIXME:!! Main LCD or Sub LCD node */
89 char bl_name[MAX_NAME]; /* backlight name */
90 char lcd_name[MAX_NAME]; /* lcd name */
93 #define MAX_CANDELA_CRITERION 300
94 #define PWR_SAVING_CANDELA_CRITERION 20
96 /* FIXME:!! change to global_ctx */
97 __thread int lcd_index;
98 __thread int bl_index;
99 __thread struct display_info disp_info[DISP_MAX];
101 int OEM_sys_get_backlight_brightness_by_lux(unsigned int lux, enum lux_status status)
103 static __thread int brightness = -1;
105 if (status == no_change) {
106 if (brightness == -1)
111 if (status == decrement) {
113 case 10000 ... 0xffffffff:
131 } else if (status == increment) {
133 case 15001 ... 0xffffffff:
157 static int OEM_sys_display_info(struct display_info *disp_info)
162 const char * bl_path = BACKLIGHT_PATH;
163 const char * lcd_path = LCD_PATH;
167 dirp = opendir(bl_path);
169 while(dent = readdir(dirp)) {
170 if (index >= DISP_MAX) {
171 devmgr_log("supports %d display node", DISP_MAX);
175 if (!strcmp(".", dent->d_name) || !strcmp("..", dent->d_name))
178 strcpy(disp_info[index].bl_name, dent->d_name);
185 for (i = 0; i < index; i++)
186 devmgr_log("bl_name[%s]", disp_info[i].bl_name);
192 dirp = opendir(lcd_path);
194 while(dent = readdir(dirp)) {
195 if (index >= DISP_MAX) {
196 devmgr_log("supports %d display node", DISP_MAX);
200 if (!strcmp(".", dent->d_name) || !strcmp("..", dent->d_name))
203 strcpy(disp_info[index].lcd_name, dent->d_name);
210 for (i = 0; i < index; i++)
211 devmgr_log("lcd_name[%s]", disp_info[i].lcd_name);
216 int OEM_sys_get_display_count(int *value)
220 /* TODO: We should implement to find out current number of display */
221 *value = (lcd_index == 0 ? bl_index : lcd_index) ;
223 /* ********************* */
225 devmgr_log("value[%d]", *value);
230 int OEM_sys_get_backlight_max_brightness(int index, int *value)
233 char path[MAX_NAME+1];
235 if (index >= DISP_MAX) {
236 devmgr_log("supports %d display node", DISP_MAX);
240 snprintf(path, MAX_NAME, BACKLIGHT_MAX_BRIGHTNESS_PATH, disp_info[index].bl_name);
241 ret = sys_get_int(path, value);
242 devmgr_log("path[%s]value[%d]", path, *value);
247 int OEM_sys_get_backlight_min_brightness(int index, int *value)
250 char path[MAX_NAME+1];
252 if (index >= DISP_MAX) {
253 devmgr_log("supports %d display node", DISP_MAX);
257 snprintf(path, MAX_NAME, BACKLIGHT_MIN_BRIGHTNESS_PATH, disp_info[index].bl_name);
258 ret = sys_get_int(path, value);
260 //FIXME: this is a workaround for TZSP-3141 before kernel exports min_brightness.
266 devmgr_log("path[%s]value[%d]", path, *value);
272 int OEM_sys_get_backlight_brightness(int index, int *value, int power_saving)
275 char path[MAX_NAME+1];
277 int pwr_saving_offset;
279 if (index >= DISP_MAX) {
280 devmgr_log("supports %d display node", DISP_MAX);
284 snprintf(path, MAX_NAME, BACKLIGHT_BRIGHTNESS_PATH, disp_info[index].bl_name);
285 ret = sys_get_int(path, value);
286 devmgr_log("path[%s]value[%d]power_saving[%d]", path, *value, power_saving);
289 snprintf(path, MAX_NAME, BACKLIGHT_MAX_BRIGHTNESS_PATH, disp_info[index].bl_name);
290 ret = sys_get_int(path, &max_brightness);
293 devmgr_log("Can't read max_brightness node[%s]", path);
296 pwr_saving_offset = (PWR_SAVING_CANDELA_CRITERION * max_brightness / MAX_CANDELA_CRITERION) + 0.5;
298 if (*value > max_brightness - pwr_saving_offset)
299 *value = max_brightness;
301 *value = *value + pwr_saving_offset;
303 devmgr_log("power_saving result[%d]", *value);
310 int OEM_sys_set_backlight_dimming(int index, int value)
313 char path[MAX_NAME+1];
315 devmgr_log("index is %d, value is %d", index, value);
316 if (index >= DISP_MAX) {
317 devmgr_log("supports %d display node", DISP_MAX);
321 snprintf(path, MAX_NAME, BACKLIGHT_DIMMING_PATH, disp_info[index].bl_name);
322 devmgr_log("path[%s]value[%d]", path, value);
323 ret = sys_set_int(path, value);
328 int OEM_sys_set_backlight_brightness(int index, int value, int power_saving)
331 char path[MAX_NAME+1];
333 int pwr_saving_offset;
335 if (index >= DISP_MAX) {
336 devmgr_log("supports %d display node", DISP_MAX);
340 devmgr_log("path[%s]value[%d]power_saving[%d]", path, value, power_saving);
343 snprintf(path, MAX_NAME, BACKLIGHT_MAX_BRIGHTNESS_PATH, disp_info[index].bl_name);
344 ret = sys_get_int(path, &max_brightness);
347 devmgr_log("Can't read max_brightness node[%s]", path);
350 pwr_saving_offset = (PWR_SAVING_CANDELA_CRITERION * max_brightness / MAX_CANDELA_CRITERION) + 0.5;
352 if (value < pwr_saving_offset)
355 value = value - pwr_saving_offset;
357 devmgr_log("power_saving result[%d]", value);
360 snprintf(path, MAX_NAME, BACKLIGHT_BRIGHTNESS_PATH, disp_info[index].bl_name);
361 ret = sys_set_int(path, value);
366 int OEM_sys_get_backlight_acl_control(int index, int *value)
369 char path[MAX_NAME+1];
371 if (index >= DISP_MAX) {
372 devmgr_log("supports %d display node", DISP_MAX);
376 snprintf(path, MAX_NAME, LCD_ACL_CONTROL_PATH, disp_info[index].lcd_name);
377 ret = sys_get_int(path, value);
378 devmgr_log("path[%s]value[%d]", path, *value);
383 int OEM_sys_set_backlight_acl_control(int index, int value)
386 char path[MAX_NAME+1];
388 if (index >= DISP_MAX) {
389 devmgr_log("supports %d display node", DISP_MAX);
393 snprintf(path, MAX_NAME, LCD_ACL_CONTROL_PATH, disp_info[index].lcd_name);
394 devmgr_log("path[%s]value[%d]", path, value);
395 ret = sys_set_int(path, value);
400 int OEM_sys_get_lcd_power(int index, int *value)
403 char path[MAX_NAME+1];
405 if (index >= DISP_MAX) {
406 devmgr_log("supports %d display node", DISP_MAX);
410 snprintf(path, MAX_NAME, LCD_POWER_PATH, disp_info[index].lcd_name);
411 ret = sys_get_int(path, value);
412 devmgr_log("path[%s]value[%d]", path, *value);
417 int OEM_sys_set_lcd_power(int index, int value)
420 char path[MAX_NAME+1];
422 if (index >= DISP_MAX) {
423 devmgr_log("supports %d display node", DISP_MAX);
427 snprintf(path, MAX_NAME, LCD_POWER_PATH, disp_info[index].lcd_name);
428 devmgr_log("path[%s]value[%d]", path, value);
429 ret = sys_set_int(path, value);
435 /* mode - dynamic, standard, natural, movie */
436 enum image_enhance_mode {
443 /* scenario - ui, gallery, video, vtcall, camera, browser, negative, bypass */
444 enum image_enhance_scenario {
455 /* tone - normal, warm, cold */
456 enum image_enhance_tone {
462 /* tone browser - tone1, tone2, tone3 */
463 enum image_enhance_tone_br {
469 /* outdoor - off, on */
470 enum image_enhance_outdoor {
475 /* index - mode, scenario, tone, outdoor, tune */
476 enum image_enhance_index {
485 const char *image_enhance_str[INDEX_MAX] = {
493 struct image_enhance_info {
494 enum image_enhance_mode mode;
495 enum image_enhance_scenario scenario;
496 enum image_enhance_tone tone;
497 enum image_enhance_outdoor outdoor;
500 int OEM_sys_get_image_enhance_save(void *image_enhance)
503 char path[MAX_NAME+1];
504 struct image_enhance_info *image_enhance_save = (struct image_enhance_info *)image_enhance;
506 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_MODE]);
507 ret = sys_get_int(path, &image_enhance_save->mode);
508 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_SCENARIO]);
509 ret = sys_get_int(path, &image_enhance_save->scenario);
510 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TONE]);
511 ret = sys_get_int(path, &image_enhance_save->tone);
512 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_OUTDOOR]);
513 ret = sys_get_int(path, &image_enhance_save->outdoor);
514 devmgr_log("path[%s]mode[%d]scenario[%d]tone[%d]outdoor[%d]", path, image_enhance_save->mode,
515 image_enhance_save->scenario, image_enhance_save->tone, image_enhance_save->outdoor);
520 int OEM_sys_set_image_enhance_restore(void *image_enhance)
523 char path[MAX_NAME+1];
524 struct image_enhance_info *image_enhance_restore = (struct image_enhance_info *)image_enhance;
526 devmgr_log("path[%s]mode[%d]scenario[%d]tone[%d]outdoor[%d]", path, image_enhance_restore->mode,
527 image_enhance_restore->scenario, image_enhance_restore->tone, image_enhance_restore->outdoor);
528 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_MODE]);
529 ret = sys_set_int(path, image_enhance_restore->mode);
530 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_SCENARIO]);
531 ret = sys_set_int(path, image_enhance_restore->scenario);
532 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TONE]);
533 ret = sys_set_int(path, image_enhance_restore->tone);
534 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_OUTDOOR]);
535 ret = sys_set_int(path, image_enhance_restore->outdoor);
540 int OEM_sys_get_image_enhance_mode(int *value)
543 char path[MAX_NAME+1];
545 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_MODE]);
546 ret = sys_get_int(path, value);
547 devmgr_log("path[%s]value[%d]", path, *value);
552 int OEM_sys_set_image_enhance_mode(int value)
555 char path[MAX_NAME+1];
557 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_MODE]);
558 devmgr_log("path[%s]value[%d]", path, value);
559 ret = sys_set_int(path, value);
564 int OEM_sys_get_image_enhance_scenario(int *value)
567 char path[MAX_NAME+1];
569 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_SCENARIO]);
570 ret = sys_get_int(path, value);
571 devmgr_log("path[%s]value[%d]", path, *value);
576 int OEM_sys_set_image_enhance_scenario(int value)
579 char path[MAX_NAME+1];
581 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_SCENARIO]);
582 devmgr_log("path[%s]value[%d]", path, value);
583 ret = sys_set_int(path, value);
588 int OEM_sys_get_image_enhance_tone(int *value)
591 char path[MAX_NAME+1];
593 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TONE]);
594 ret = sys_get_int(path, value);
595 devmgr_log("path[%s]value[%d]", path, *value);
600 int OEM_sys_set_image_enhance_tone(int value)
603 char path[MAX_NAME+1];
605 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TONE]);
606 devmgr_log("path[%s]value[%d]", path, value);
607 ret = sys_set_int(path, value);
612 int OEM_sys_get_image_enhance_outdoor(int *value)
615 char path[MAX_NAME+1];
617 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_OUTDOOR]);
618 ret = sys_get_int(path, value);
619 devmgr_log("path[%s]value[%d]", path, *value);
624 int OEM_sys_set_image_enhance_outdoor(int value)
627 char path[MAX_NAME+1];
629 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_OUTDOOR]);
630 devmgr_log("path[%s]value[%d]", path, value);
631 ret = sys_set_int(path, value);
636 int OEM_sys_get_image_enhance_tune(int *value)
639 char path[MAX_NAME+1];
641 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TUNE]);
642 ret = sys_get_int(path, value);
643 devmgr_log("path[%s]value[%d]", path, *value);
648 int OEM_sys_set_image_enhance_tune(int value)
651 char path[MAX_NAME+1];
653 snprintf(path, MAX_NAME, IMAGE_ENHANCE_PATH, image_enhance_str[INDEX_TUNE]);
654 devmgr_log("path[%s]value[%d]", path, value);
655 ret = sys_set_int(path, value);
660 int OEM_sys_image_enhance_info(int *value)
663 struct dirent *dir_entry;
665 const char * image_enhance_path_info = IMAGE_ENHANCE_PATH_INFO;
667 dir_info = opendir(image_enhance_path_info);
669 if (NULL != dir_info) {
681 int OEM_sys_set_display_frame_rate(int value)
684 devmgr_log("Display frame rate limited to 40Hz");
685 return sys_set_str(DISPLAY_FRAME_RATE_PATH, "40");
687 devmgr_log("Display frame rate change 40Hz and 60Hz");
688 return sys_set_str(DISPLAY_FRAME_RATE_PATH, "60");
694 int OEM_sys_set_haptic_motor_oneshot(int value)
698 // workaround: duration==50 doesn't vibrate in PR3 hardware
699 if( 50 == value) value = 100;
701 //assemble all possible times (Vibra1 On Time * Vibra1 Cycle Count)
702 ret = find_suit_value_and_set(value);
704 devmgr_log("set oneshot faild");
708 // workaround: toggle vibration on org.tizen.settings->sound doesn't work
709 // settings applicaton will do something like below, while HAPTIC_PROP_ENABLE is never been set to 1 then.
710 // haptic_stop_all_effects->
711 // haptic_internal_stop_effect->
712 // device_set_property(DEVTYPE_HAPTIC, HAPTIC_PROP_ENABLE, 0);
713 //OEM_sys_set_haptic_vibetones_enable(1);
717 ret = settimer_and_vibrate(value);
719 devmgr_log("set oneshot faild");
727 int OEM_sys_set_haptic_motor_level(int value)
731 devmgr_log("input vibration level=%d", value);
749 devmgr_log("input vibration level=%d err", value);
753 return vib_hw_ctrl(VIBRA_DUTY_CYCLE, 1, input_value, NULL, NULL);
756 int OEM_sys_get_haptic_motor_level(int *value)
758 return vib_hw_ctrl(VIBRA_DUTY_CYCLE, 0, 0, value, NULL);
761 int OEM_sys_set_haptic_motor_enable(int value)
763 int vib_num_ontime, vib_num_cycle_count;
766 if(vib_hw_ctrl(VIBRA_GET_NUM_ON_TIME, 0, 0, &vib_num_ontime, NULL)) {
767 devmgr_log("get VIBRA_GET_NUM_ON_TIME err");
771 if(vib_hw_ctrl(VIBRA_ON_TIME, 1, vib_num_ontime - 1 , NULL, NULL)) {
772 devmgr_log("set VIBRA_ON_TIME err");
776 if(vib_hw_ctrl(VIBRA_GET_NUM_CYCLECOUNT, 0, 0, &vib_num_cycle_count, NULL)) {
777 devmgr_log("get VIBRA_GET_NUM_CYCLECOUNT err");
781 if(vib_hw_ctrl(VIBRA_CYCLE_COUNT, 1, vib_num_cycle_count - 1, NULL, NULL)) {
782 devmgr_log("set VIBRA_CYCLE_COUNT err");
787 if(vib_hw_ctrl(VIBRA_START, 1, value, NULL, NULL)) {
788 devmgr_log("set VIBRA_START err");
795 int OEM_sys_get_haptic_motor_level_max(int *value)
797 return vib_hw_ctrl(VIBRA_GET_LEVEL_MAX, 0, 0, value, NULL);
800 GENERATE_ACCESSORS_INT_R(battery_capacity, BATTERY_CAPACITY_PATH)
802 GENERATE_ACCESSORS_INT_R(battery_charge_full, BATTERY_CHARGE_FULL_PATH)
803 GENERATE_ACCESSORS_INT_R(battery_charge_now, BATTERY_CHARGE_NOW_PATH)
805 GENERATE_ACCESSORS_INT_R(battery_present, BATTERY_PRESENT_PATH)
807 enum battery_status_type
809 BATTERY_STATUS_FULL = 0,
810 BATTERY_STATUS_CHARGING,
811 BATTERY_STATUS_DISCHARGING,
815 static char *status_text[] = {
816 "Full", "Charging", "Discharging"
819 int OEM_sys_get_battery_charge_full(int *value)
821 char buf[BUFF_MAX] = {0};
824 ret = sys_get_str(BATTERY_CHARGE_STATUS_PATH, buf);
827 if(0 == strncmp(buf, status_text[BATTERY_STATUS_FULL], strlen(status_text[BATTERY_STATUS_FULL]))){
839 int OEM_sys_get_battery_charge_now(int *value)
841 char buf[BUFF_MAX] = {0};
844 ret = sys_get_str(BATTERY_CHARGE_STATUS_PATH, buf);
847 if(0 == strncmp(buf, status_text[BATTERY_STATUS_CHARGING], strlen(status_text[BATTERY_STATUS_CHARGING]))){
859 int OEM_sys_get_battery_capacity_raw(int *value)
863 ret = sys_get_int(BATTERY_CAPACITY_RAW_PATH, value);
871 static char *health_text[] = {
872 "Unknown", "Good", "Overheat", "Dead", "Over voltage",
873 "Unspecified failure", "Cold",
876 int OEM_sys_get_battery_health(int *value)
878 char buf[BUFF_MAX] = {0};
882 ret = sys_get_str(BATTERY_HEALTH_PATH, buf);
886 for (i = 0; i < BATTERY_HEALTH_MAX; i++) {
887 if (strncmp(buf, health_text[i], strlen(health_text[i])) == 0) {
896 int OEM_sys_get_battery_polling_required(int *value)
903 int OEM_sys_get_battery_support_insuspend_charging(int *value)
910 static char uart_node_path[MAX_NAME];
911 static char usb_node_path[MAX_NAME];
913 /* find uart/usb node path */
914 static int OEM_sys_muic_node_path_info()
918 err = sys_check_node(UART_PATH);
920 sys_get_node(UART_PATH, uart_node_path);
922 err = sys_check_node(UART_PATH_TRATS);
924 devmgr_log("uart path node not found");
927 sys_get_node(UART_PATH_TRATS, uart_node_path);
930 err = sys_check_node(USB_PATH);
932 sys_get_node(USB_PATH, usb_node_path);
934 err = sys_check_node(USB_PATH_TRATS);
936 devmgr_log("usb path node not found");
939 sys_get_node(USB_PATH_TRATS, usb_node_path);
944 int OEM_sys_get_uart_path(int *value)
946 char buf[BUFF_MAX] = {0};
949 ret = sys_get_str(uart_node_path, buf);
953 if (strncmp(buf, "CP", 2) == 0) {
956 } else if (strncmp(buf, "AP", 2) == 0) {
964 int OEM_sys_set_uart_path(int value)
968 return sys_set_str(uart_node_path, "CP");
970 return sys_set_str(uart_node_path, "AP");
977 int OEM_sys_get_usb_path(int *value)
979 char buf[BUFF_MAX] = {0};
982 ret = sys_get_str(usb_node_path, buf);
986 if (strncmp(buf, "PDA", 3) == 0) {
989 } else if (strncmp(buf, "MODEM", 5) == 0) {
997 int OEM_sys_set_usb_path(int value)
1001 return sys_set_str(usb_node_path, "MODEM");
1003 return sys_set_str(usb_node_path, "PDA");
1009 GENERATE_ACCESSORS_INT_R(jack_charger_online, JACK_CHARGER_ONLINE_PATH)
1010 GENERATE_ACCESSORS_INT_R(jack_earjack_online, JACK_EARJACK_ONLINE_PATH)
1011 GENERATE_ACCESSORS_INT_R(jack_earkey_online, JACK_EARKEY_ONLINE_PATH)
1012 GENERATE_ACCESSORS_INT_R(jack_hdmi_online, JACK_HDMI_ONLINE_PATH)
1013 GENERATE_ACCESSORS_INT_R(jack_usb_online, JACK_USB_ONLINE_PATH)
1014 GENERATE_ACCESSORS_INT_R(jack_cradle_online, JACK_CRADLE_ONLINE_PATH)
1015 GENERATE_ACCESSORS_INT_R(jack_tvout_online, JACK_TVOUT_ONLINE_PATH)
1017 int OEM_sys_get_jack_keyboard_online(int *value)
1019 /* Currently, We don't provide SLP Based platform with keyboard I/F */
1021 /*return sys_get_int(JACK_KEYBOARD_ONLINE_PATH, value);*/
1025 int OEM_sys_get_hdmi_support(int *value)
1032 GENERATE_ACCESSORS_INT_R(leds_torch_max_brightness, LEDS_TORCH_MAX_BRIGHTNESS_PATH)
1033 GENERATE_ACCESSORS_INT_RW(leds_torch_brightness, LEDS_TORCH_BRIGHTNESS_PATH)
1035 int OEM_sys_set_power_state(int value)
1038 case POWER_STATE_SUSPEND:
1039 return sys_set_str(POWER_STATE_PATH, "mem");
1040 case POWER_STATE_PRE_SUSPEND:
1041 return sys_set_str(POWER_STATE_PATH, "pre_suspend");
1042 case POWER_STATE_POST_RESUME:
1043 return sys_set_str(POWER_STATE_PATH, "post_resume");
1049 GENERATE_ACCESSORS_INT_RW(power_wakeup_count, POWER_WAKEUP_COUNT_PATH)
1051 GENERATE_ACCESSORS_INT_W(memnotify_threshold_lv1, MEMNOTIFY_THRESHOLD_LV1_PATH)
1052 GENERATE_ACCESSORS_INT_W(memnotify_threshold_lv2, MEMNOTIFY_THRESHOLD_LV2_PATH)
1054 GENERATE_ACCESSORS_INT_R(cpufreq_cpuinfo_max_freq, CPUFREQ_CPUINFO_MAX_FREQ_PATH)
1055 GENERATE_ACCESSORS_INT_R(cpufreq_cpuinfo_min_freq, CPUFREQ_CPUINFO_MIN_FREQ_PATH)
1056 GENERATE_ACCESSORS_INT_RW(cpufreq_scaling_max_freq, CPUFREQ_SCALING_MAX_FREQ_PATH)
1057 GENERATE_ACCESSORS_INT_RW(cpufreq_scaling_min_freq, CPUFREQ_SCALING_MIN_FREQ_PATH)
1059 #define GENERATE_ACCESSORS_INT_R_NO_CONVERT(_suffix, _item) \
1060 int OEM_sys_get_##_suffix(int *value) \
1062 return sys_get_int_wo_convert(_item, value); \
1065 #define GENERATE_ACCESSORS_INT_W_NO_CONVERT(_suffix, _item) \
1066 int OEM_sys_set_##_suffix(int value) \
1068 return sys_set_int_wo_convert(_item, value); \
1071 GENERATE_ACCESSORS_INT_R_NO_CONVERT(memnotify_victim_task, MEMNOTIFY_VICTIM_TASK_PATH)
1072 GENERATE_ACCESSORS_INT_W_NO_CONVERT(process_monitor_mp_pnp, PROCESS_MONITOR_MP_PNP_PATH)
1073 GENERATE_ACCESSORS_INT_W_NO_CONVERT(process_monitor_mp_vip, PROCESS_MONITOR_MP_VIP_PATH)
1075 #define GENERATE_ACCESSORS_GET_NODE_PATH(_suffix, _item) \
1076 int OEM_sys_get_##_suffix(char *node) \
1078 return sys_get_node(_item, node); \
1081 GENERATE_ACCESSORS_GET_NODE_PATH(touch_event, TOUCH_EVENT_NODE)
1082 GENERATE_ACCESSORS_GET_NODE_PATH(memnotify_node, MEMNOTIFY_NODE)
1083 GENERATE_ACCESSORS_GET_NODE_PATH(process_monitor_node, PROCESS_MONITOR_NODE)
1085 static OEM_sys_devman_plugin_interface devman_plugin_interface_mfld;
1087 EXPORT_API const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface()
1089 /* Light interfaces */
1090 devman_plugin_interface_mfld.OEM_sys_get_display_count = &OEM_sys_get_display_count;
1091 devman_plugin_interface_mfld.OEM_sys_get_backlight_min_brightness = &OEM_sys_get_backlight_min_brightness;
1092 devman_plugin_interface_mfld.OEM_sys_get_backlight_max_brightness = &OEM_sys_get_backlight_max_brightness;
1093 devman_plugin_interface_mfld.OEM_sys_get_backlight_brightness = &OEM_sys_get_backlight_brightness;
1094 devman_plugin_interface_mfld.OEM_sys_set_backlight_brightness = &OEM_sys_set_backlight_brightness;
1095 devman_plugin_interface_mfld.OEM_sys_set_backlight_dimming = &OEM_sys_set_backlight_dimming;
1096 devman_plugin_interface_mfld.OEM_sys_get_backlight_acl_control = &OEM_sys_get_backlight_acl_control;
1097 devman_plugin_interface_mfld.OEM_sys_set_backlight_acl_control = &OEM_sys_set_backlight_acl_control;
1099 devman_plugin_interface_mfld.OEM_sys_get_lcd_power = &OEM_sys_get_lcd_power;
1100 devman_plugin_interface_mfld.OEM_sys_set_lcd_power = &OEM_sys_set_lcd_power;
1102 /* Image Ehnhace interfaces */
1103 devman_plugin_interface_mfld.OEM_sys_get_image_enhance_mode = &OEM_sys_get_image_enhance_mode;
1104 devman_plugin_interface_mfld.OEM_sys_set_image_enhance_mode = &OEM_sys_set_image_enhance_mode;
1105 devman_plugin_interface_mfld.OEM_sys_get_image_enhance_scenario = &OEM_sys_get_image_enhance_scenario;
1106 devman_plugin_interface_mfld.OEM_sys_set_image_enhance_scenario = &OEM_sys_set_image_enhance_scenario;
1107 devman_plugin_interface_mfld.OEM_sys_get_image_enhance_tone = &OEM_sys_get_image_enhance_tone;
1108 devman_plugin_interface_mfld.OEM_sys_set_image_enhance_tone = &OEM_sys_set_image_enhance_tone;
1109 devman_plugin_interface_mfld.OEM_sys_get_image_enhance_outdoor = &OEM_sys_get_image_enhance_outdoor;
1110 devman_plugin_interface_mfld.OEM_sys_set_image_enhance_outdoor = &OEM_sys_set_image_enhance_outdoor;
1112 devman_plugin_interface_mfld.OEM_sys_get_image_enhance_tune = &OEM_sys_get_image_enhance_tune;
1113 devman_plugin_interface_mfld.OEM_sys_set_image_enhance_tune = &OEM_sys_set_image_enhance_tune;
1115 devman_plugin_interface_mfld.OEM_sys_image_enhance_info = &OEM_sys_image_enhance_info;
1117 devman_plugin_interface_mfld.OEM_sys_set_display_frame_rate = &OEM_sys_set_display_frame_rate;
1119 /* UART path interfaces */
1120 devman_plugin_interface_mfld.OEM_sys_get_uart_path = &OEM_sys_get_uart_path;
1121 devman_plugin_interface_mfld.OEM_sys_set_uart_path = &OEM_sys_set_uart_path;
1123 /* USB path interfaces */
1124 devman_plugin_interface_mfld.OEM_sys_get_usb_path = &OEM_sys_get_usb_path;
1125 devman_plugin_interface_mfld.OEM_sys_set_usb_path = &OEM_sys_set_usb_path;
1127 /* Vibrator interfaces */
1128 devman_plugin_interface_mfld.OEM_sys_get_haptic_vibetones_level_max = &OEM_sys_get_haptic_motor_level_max;
1129 devman_plugin_interface_mfld.OEM_sys_get_haptic_vibetones_level = &OEM_sys_get_haptic_motor_level;
1130 devman_plugin_interface_mfld.OEM_sys_set_haptic_vibetones_level = &OEM_sys_set_haptic_motor_level;
1131 devman_plugin_interface_mfld.OEM_sys_set_haptic_vibetones_enable = &OEM_sys_set_haptic_motor_enable;
1132 devman_plugin_interface_mfld.OEM_sys_set_haptic_vibetones_oneshot = &OEM_sys_set_haptic_motor_oneshot;
1134 /* Battery interfaces */
1135 devman_plugin_interface_mfld.OEM_sys_get_battery_capacity = &OEM_sys_get_battery_capacity;
1136 devman_plugin_interface_mfld.OEM_sys_get_battery_capacity_raw = &OEM_sys_get_battery_capacity_raw;
1137 devman_plugin_interface_mfld.OEM_sys_get_battery_charge_full = &OEM_sys_get_battery_charge_full;
1138 devman_plugin_interface_mfld.OEM_sys_get_battery_charge_now = &OEM_sys_get_battery_charge_now;
1139 devman_plugin_interface_mfld.OEM_sys_get_battery_present = &OEM_sys_get_battery_present;
1140 devman_plugin_interface_mfld.OEM_sys_get_battery_health = &OEM_sys_get_battery_health;
1141 devman_plugin_interface_mfld.OEM_sys_get_battery_polling_required= &OEM_sys_get_battery_polling_required;
1142 devman_plugin_interface_mfld.OEM_sys_get_battery_support_insuspend_charging = &OEM_sys_get_battery_support_insuspend_charging;
1144 /* Connection interfaces */
1145 devman_plugin_interface_mfld.OEM_sys_get_jack_charger_online = &OEM_sys_get_jack_charger_online;
1146 devman_plugin_interface_mfld.OEM_sys_get_jack_earjack_online = &OEM_sys_get_jack_earjack_online;
1147 devman_plugin_interface_mfld.OEM_sys_get_jack_earkey_online = &OEM_sys_get_jack_earkey_online;
1148 devman_plugin_interface_mfld.OEM_sys_get_jack_hdmi_online = &OEM_sys_get_jack_hdmi_online;
1149 devman_plugin_interface_mfld.OEM_sys_get_jack_usb_online = &OEM_sys_get_jack_usb_online;
1150 devman_plugin_interface_mfld.OEM_sys_get_jack_cradle_online = &OEM_sys_get_jack_cradle_online;
1151 devman_plugin_interface_mfld.OEM_sys_get_jack_tvout_online = &OEM_sys_get_jack_tvout_online;
1152 devman_plugin_interface_mfld.OEM_sys_get_jack_keyboard_online = &OEM_sys_get_jack_keyboard_online;
1154 devman_plugin_interface_mfld.OEM_sys_get_hdmi_support = &OEM_sys_get_hdmi_support;
1156 /* Torch interfaces */
1157 devman_plugin_interface_mfld.OEM_sys_get_leds_torch_max_brightness = &OEM_sys_get_leds_torch_max_brightness;
1158 devman_plugin_interface_mfld.OEM_sys_get_leds_torch_brightness = &OEM_sys_get_leds_torch_brightness;
1159 devman_plugin_interface_mfld.OEM_sys_set_leds_torch_brightness = &OEM_sys_set_leds_torch_brightness;
1161 /* Power management interfaces */
1162 devman_plugin_interface_mfld.OEM_sys_set_power_state = &OEM_sys_set_power_state;
1163 devman_plugin_interface_mfld.OEM_sys_get_power_wakeup_count = &OEM_sys_get_power_wakeup_count;
1164 devman_plugin_interface_mfld.OEM_sys_set_power_wakeup_count = &OEM_sys_set_power_wakeup_count;
1166 /* OOM interfaces */
1167 devman_plugin_interface_mfld.OEM_sys_get_memnotify_node = &OEM_sys_get_memnotify_node;
1168 devman_plugin_interface_mfld.OEM_sys_get_memnotify_victim_task = &OEM_sys_get_memnotify_victim_task;
1169 devman_plugin_interface_mfld.OEM_sys_set_memnotify_threshold_lv1 = &OEM_sys_set_memnotify_threshold_lv1;
1170 devman_plugin_interface_mfld.OEM_sys_set_memnotify_threshold_lv2 = &OEM_sys_set_memnotify_threshold_lv2;
1172 /* Process monitor interfaces */
1173 devman_plugin_interface_mfld.OEM_sys_get_process_monitor_node = &OEM_sys_get_process_monitor_node;
1174 devman_plugin_interface_mfld.OEM_sys_set_process_monitor_mp_pnp = &OEM_sys_set_process_monitor_mp_pnp;
1175 devman_plugin_interface_mfld.OEM_sys_set_process_monitor_mp_vip = &OEM_sys_set_process_monitor_mp_vip;
1177 /* UART path interfaces */
1178 devman_plugin_interface_mfld.OEM_sys_get_cpufreq_cpuinfo_max_freq = &OEM_sys_get_cpufreq_cpuinfo_max_freq;
1179 devman_plugin_interface_mfld.OEM_sys_get_cpufreq_cpuinfo_min_freq = &OEM_sys_get_cpufreq_cpuinfo_min_freq;
1180 devman_plugin_interface_mfld.OEM_sys_get_cpufreq_scaling_max_freq = &OEM_sys_get_cpufreq_scaling_max_freq;
1181 devman_plugin_interface_mfld.OEM_sys_set_cpufreq_scaling_max_freq = &OEM_sys_set_cpufreq_scaling_max_freq;
1182 devman_plugin_interface_mfld.OEM_sys_get_cpufreq_scaling_min_freq = &OEM_sys_get_cpufreq_scaling_min_freq;
1183 devman_plugin_interface_mfld.OEM_sys_set_cpufreq_scaling_min_freq = &OEM_sys_set_cpufreq_scaling_min_freq;
1185 devman_plugin_interface_mfld.OEM_sys_get_backlight_brightness_by_lux = &OEM_sys_get_backlight_brightness_by_lux;
1186 OEM_sys_display_info(disp_info);
1187 OEM_sys_muic_node_path_info();
1189 return &devman_plugin_interface_mfld;