#define LCD_PATH "/sys/class/lcd/"
#define LCD_ACL_CONTROL_PATH LCD_PATH"%s/acl_control"
#define LCD_POWER_PATH LCD_PATH"%s/lcd_power"
+#define IMAGE_ENHANCE_PATH "/sys/class/extension/mdnie/%s"
+#define IMAGE_ENHANCE_PATH_INFO "/sys/class/extension/mdnie"
//#define DISPLAY_FRAME_RATE_PATH "/sys/devices/platform/maru-display/devfreq/maru-display/max_freq"
-#define UART_PATH "/sys/devices/platform/uart-select/path"
-#define USB_PATH "/sys/devices/platform/usb-switch/path"
+//#define UART_PATH "/sys/devices/platform/uart-select/path"
+//#define USB_PATH "/sys/devices/platform/usb-switch/path"
+
+#define UART_PATH "/sys/devices/virtual/sec/switch/uart_sel"
+#define USB_PATH "/sys/devices/virtual/sec/switch/usb_sel"
+#define UART_PATH_TRATS "/sys/devices/platform/uart-select/path"
+#define USB_PATH_TRATS "/sys/devices/platform/usb-select/path"
#define HAPTIC_VIBETONES_LEVEL_PATH "/sys/class/haptic/vibetones/level"
#define HAPTIC_VIBETONES_LEVEL_MAX_PATH "/sys/class/haptic/vibetones/level_max"
#define HAPTIC_VIBETONES_ONESHOT_PATH "/sys/class/haptic/vibetones/oneshot"
#define BATTERY_CAPACITY_PATH "/sys/class/power_supply/battery/capacity"
+#define BATTERY_CAPACITY_RAW_PATH "/sys/class/power_supply/battery/capacity_raw"
#define BATTERY_CHARGE_FULL_PATH "/sys/class/power_supply/battery/charge_full"
#define BATTERY_CHARGE_NOW_PATH "/sys/class/power_supply/battery/charge_now"
#define BATTERY_PRESENT_PATH "/sys/class/power_supply/battery/present"
#define LEDS_TORCH_MAX_BRIGHTNESS_PATH "/sys/class/leds/leds-torch/max_brightness"
#define LEDS_TORCH_BRIGHTNESS_PATH "/sys/class/leds/leds-torch/brightness"
+//#define LEDS_TORCH_MAX_BRIGHTNESS_PATH "/sys/class/camera/flash/max_brightness"
+//#define LEDS_TORCH_BRIGHTNESS_PATH "/sys/class/camera/flash/rear_flash"
#define POWER_STATE_PATH "/sys/power/state"
#define POWER_WAKEUP_COUNT_PATH "/sys/power/wakeup_count"
enum {
POWER_STATE_SUSPEND = 0,
+ POWER_STATE_PRE_SUSPEND,
+ POWER_STATE_POST_RESUME,
};
+enum {
+ LUX_DECREMENT,
+ LUX_NOCHANGE,
+ LUX_INCREMENT,
+};
+
+
typedef struct {
int (*OEM_sys_get_display_count) (int *value);
- int (*OEM_sys_get_backlight_min_brightness) (int index, int *value);
+ int (*OEM_sys_get_backlight_min_brightness) (int index, int *value);
int (*OEM_sys_get_backlight_max_brightness) (int index, int *value);
int (*OEM_sys_get_backlight_brightness) (int index, int *value, int power_saving);
int (*OEM_sys_set_backlight_brightness) (int index, int value, int power_saving);
- int (*OEM_sys_set_backlight_dimming) (int index, int value);
+ int (*OEM_sys_set_backlight_dimming) (int index, int value);
int (*OEM_sys_get_backlight_acl_control) (int index, int *value);
int (*OEM_sys_set_backlight_acl_control) (int index, int value);
int (*OEM_sys_get_usb_path) (int *value);
int (*OEM_sys_set_usb_path) (int value);
+ int (*OEM_sys_get_haptic_motor_level_max) (int *value);
+ int (*OEM_sys_get_haptic_motor_level) (int *value);
+ int (*OEM_sys_set_haptic_motor_level) (int value);
+ int (*OEM_sys_set_haptic_motor_enable) (int value);
+ int (*OEM_sys_set_haptic_motor_oneshot) (int value);
+
int (*OEM_sys_get_haptic_vibetones_level_max) (int *value);
int (*OEM_sys_get_haptic_vibetones_level) (int *value);
int (*OEM_sys_set_haptic_vibetones_level) (int value);
int (*OEM_sys_set_cpufreq_scaling_max_freq) (int value);
int (*OEM_sys_get_cpufreq_scaling_min_freq) (int *value);
int (*OEM_sys_set_cpufreq_scaling_min_freq) (int value);
+
+ int (*OEM_sys_get_backlight_brightness_by_lux) (int lux, int status);
} OEM_sys_devman_plugin_interface;
const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface();
DISP_MAX
};
+enum lux_status {
+ decrement,
+ no_change,
+ increment,
+};
+
struct display_info
{
enum display_type etype; /* FIXME:!! Main LCD or Sub LCD node */
int lcd_index;
struct display_info disp_info[DISP_MAX];
+int OEM_sys_get_backlight_brightness_by_lux(unsigned int lux, enum lux_status status)
+{
+ static int brightness = -1;
+
+ if (status == no_change) {
+ if (brightness == -1)
+ status = increment;
+ else
+ return brightness;
+ }
+ if (status == decrement) {
+ switch (lux) {
+ case 10000 ... 0xffffffff:
+ brightness = 100;
+ break;
+ case 1000 ... 9999:
+ brightness = 80;
+ break;
+ case 75 ... 999:
+ brightness = 60;
+ break;
+ case 7 ... 74:
+ brightness = 40;
+ break;
+ case 0 ... 6:
+ brightness = 1;
+ break;
+ default:
+ return -1;
+ }
+ } else if (status == increment) {
+ switch (lux) {
+ case 15001 ... 0xffffffff:
+ brightness = 100;
+ break;
+ case 1501 ... 15000:
+ brightness = 80;
+ break;
+ case 151 ... 1500:
+ brightness = 60;
+ break;
+ case 16 ... 150:
+ brightness = 40;
+ break;
+ case 0 ... 15:
+ brightness = 1;
+ break;
+ default:
+ return -1;
+ }
+ } else
+ return -1;
+
+ return brightness;
+}
+
static int OEM_sys_display_info(struct display_info *disp_info)
{
struct dirent *dent;
return ret;
}
+int OEM_sys_get_backlight_min_brightness(int index, int *value)
+{
+ int ret = -1;
+ char path[MAX_NAME+1];
+
+ if (index >= DISP_MAX) {
+ devmgr_log("supports %d display node", DISP_MAX);
+ return ret;
+ }
+
+ snprintf(path, MAX_NAME, BACKLIGHT_MIN_BRIGHTNESS_PATH, disp_info[index].bl_name);
+ ret = sys_get_int(path, value);
+ devmgr_log("path[%s]value[%d]", path, *value);
+
+ return ret;
+}
+
int OEM_sys_get_backlight_brightness(int index, int *value, int power_saving)
{
int ret = -1;
return ret;
}
+int OEM_sys_set_backlight_dimming(int index, int value)
+{
+ /*
+ int ret = -1;
+ char path[MAX_NAME+1];
+
+ if (index >= DISP_MAX) {
+ devmgr_log("supports %d display node", DISP_MAX);
+ return ret;
+ }
+
+ snprintf(path, MAX_NAME, BACKLIGHT_DIMMING_PATH, disp_info[index].lcd_name);
+ devmgr_log("path[%s]value[%d]", path, value);
+ ret = sys_set_int(path, value);
+ return ret;
+ */
+
+ // TODO : value is only 1
+ return OEM_sys_set_backlight_brightness(index, 1, 0/*power_saving*/);
+
+}
+
int OEM_sys_set_backlight_brightness(int index, int value, int power_saving)
{
int ret = -1;
return ret;
}
-int OEM_sys_get_backlight_min_brightness(int index, int *value)
-{
- int ret = -1;
- char path[MAX_NAME+1];
-
- if (index >= DISP_MAX) {
- devmgr_log("supports %d display node", DISP_MAX);
- return ret;
- }
-
- snprintf(path, MAX_NAME, BACKLIGHT_MIN_BRIGHTNESS_PATH, disp_info[index].bl_name);
- ret = sys_get_int(path, value);
- devmgr_log("path[%s]value[%d]", path, *value);
-
- return ret;
-}
-
-int OEM_sys_set_backlight_dimming(int index, int value)
-{
- /*
- int ret = -1;
- char path[MAX_NAME+1];
-
- if (index >= DISP_MAX) {
- devmgr_log("supports %d display node", DISP_MAX);
- return ret;
- }
-
- snprintf(path, MAX_NAME, BACKLIGHT_DIMMING_PATH, disp_info[index].lcd_name);
- devmgr_log("path[%s]value[%d]", path, value);
- ret = sys_set_int(path, value);
- return ret;
- */
-
- // TODO : value is only 1
- return OEM_sys_set_backlight_brightness(index, 1, 0/*power_saving*/);
-
-}
-
/* image_enhance */
int OEM_sys_get_image_enhance_save(void *image_enhance)
{
return ret;
}
+int OEM_sys_image_enhance_info(int *value)
+{
+ return 0;
+}
+
int OEM_sys_set_display_frame_rate(int value)
{
/*
GENERATE_ACCESSORS_INT_R(battery_charge_now, BATTERY_CHARGE_NOW_PATH)
GENERATE_ACCESSORS_INT_R(battery_present, BATTERY_PRESENT_PATH)
+int OEM_sys_get_battery_capacity_raw(int *value)
+{
+ return 0;
+}
+
static char *health_text[] = {
"Unknown", "Good", "Overheat", "Dead", "Over voltage",
"Unspecified failure", "Cold",
return 0;
}
+static char uart_node_path[MAX_NAME];
+static char usb_node_path[MAX_NAME];
+
+/* find uart/usb node path */
+static int OEM_sys_muic_node_path_info()
+{
+ int err = -1;
+
+ err = sys_check_node(UART_PATH);
+ if (!err)
+ sys_get_node(UART_PATH, uart_node_path);
+ else {
+ err = sys_check_node(UART_PATH_TRATS);
+ if (err) {
+ devmgr_log("uart path node not found");
+ return -1;
+ }
+ sys_get_node(UART_PATH_TRATS, uart_node_path);
+ }
+
+ err = sys_check_node(USB_PATH);
+ if (!err)
+ sys_get_node(USB_PATH, usb_node_path);
+ else {
+ err = sys_check_node(USB_PATH_TRATS);
+ if (err) {
+ devmgr_log("usb path node not found");
+ return -1;
+ }
+ sys_get_node(USB_PATH_TRATS, usb_node_path);
+ }
+ return 0;
+}
+
int OEM_sys_get_uart_path(int *value)
{
char buf[BUFF_MAX] = {0};
int ret = 0;
- ret = sys_get_str(UART_PATH, buf);
+ ret = sys_get_str(uart_node_path, buf);
if (ret != 0) {
return -1;
}
{
switch (value) {
case PATH_CP:
- return sys_set_str(UART_PATH, "CP");
+ return sys_set_str(uart_node_path, "CP");
case PATH_AP:
- return sys_set_str(UART_PATH, "AP");
+ return sys_set_str(uart_node_path, "AP");
}
return -1;
char buf[BUFF_MAX] = {0};
int ret = 0;
- ret = sys_get_str(USB_PATH, buf);
+ ret = sys_get_str(usb_node_path, buf);
if (ret != 0) {
return -1;
}
- if (strncmp(buf, "AP", 2) == 0) {
+ if (strncmp(buf, "PDA", 3) == 0) {
*value = PATH_AP;
return 0;
- } else if (strncmp(buf, "CP", 2) == 0) {
+ } else if (strncmp(buf, "MODEM", 5) == 0) {
*value = PATH_CP;
return 0;
}
{
switch (value) {
case PATH_CP:
- return sys_set_str(USB_PATH, "CP");
+ return sys_set_str(usb_node_path, "MODEM");
case PATH_AP:
- return sys_set_str(USB_PATH, "AP");
+ return sys_set_str(usb_node_path, "PDA");
}
return -1;
}
-int OEM_sys_get_battery_capacity_raw(int *value)
-{
- return 0;
-}
-
-int OEM_sys_image_enhance_info(int *value)
-{
- return 0;
-}
-
GENERATE_ACCESSORS_INT_R(jack_charger_online, JACK_CHARGER_ONLINE_PATH)
GENERATE_ACCESSORS_INT_R(jack_earjack_online, JACK_EARJACK_ONLINE_PATH)
GENERATE_ACCESSORS_INT_R(jack_earkey_online, JACK_EARKEY_ONLINE_PATH)
switch (value) {
case POWER_STATE_SUSPEND:
return sys_set_str(POWER_STATE_PATH, "mem");
+ case POWER_STATE_PRE_SUSPEND:
+ return sys_set_str(POWER_STATE_PATH, "pre_suspend");
+ case POWER_STATE_POST_RESUME:
+ return sys_set_str(POWER_STATE_PATH, "post_resume");
}
return -1;
devman_plugin_interface_emul.OEM_sys_get_cpufreq_scaling_min_freq = &OEM_sys_get_cpufreq_scaling_min_freq;
devman_plugin_interface_emul.OEM_sys_set_cpufreq_scaling_min_freq = &OEM_sys_set_cpufreq_scaling_min_freq;
+ devman_plugin_interface_emul.OEM_sys_get_backlight_brightness_by_lux = &OEM_sys_get_backlight_brightness_by_lux;
OEM_sys_display_info(disp_info);
+ OEM_sys_muic_node_path_info();
+
return &devman_plugin_interface_emul;
}