3 * Overview: device mananger(devman) plugin for pinetrail platform
5 * Copyright (c) 2000 - 2011 Intel Co., Ltd. All rights reserved.
7 * Licensed under the Apache License, Version 2.0 (the "License");
8 * you may not use this file except in compliance with the License.
9 * You may obtain a copy of the License at
11 * http://www.apache.org/licenses/LICENSE-2.0
13 * Unless required by applicable law or agreed to in writing, software
14 * distributed under the License is distributed on an "AS IS" BASIS,
15 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 * See the License for the specific language governing permissions and
17 * limitations under the License.
21 #include <devman/devman.h>
22 #include <devman/devman_plugin_intf.h>
26 #include "device_engine.h"
28 #include "device-manager-plugin-pinetrail.h"
30 #define BATTERY_PRESENT_PATH "/sys/class/power_supply/BAT1/present"
31 #define BATTERY_CHARGE_STATUS_PATH "/sys/class/power_supply/BAT1/status"
32 #define BATTERY_CHARGE_FULL_PATH "/sys/class/power_supply/BAT1/charge_full"
33 #define BATTERY_CHARGE_NOW_PATH "/sys/class/power_supply/BAT1/charge_now"
35 #define BACKLIGHTNESS_MAX_PATH "/sys/class/backlight/intel_backlight/max_brightness"
36 #define BACKLIGHTNESS_PATH "/sys/class/backlight/intel_backlight/brightness"
38 #define WAKEUP_COUNT_PATH "/sys/power/wakeup_count"
39 #define POWER_STATE_PATH "/sys/power/state"
42 #define DEVIDE(_x, _y, _z)\
54 int OEM_sys_get_backlight_max_brightness(int index, int *value)
58 ret = sys_get_int(BACKLIGHTNESS_MAX_PATH, value);
59 DBG("path[%s]value[%d]", BACKLIGHTNESS_MAX_PATH, *value);
63 int OEM_sys_get_backlight_brightness(int index, int *value)
67 ret = sys_get_int(BACKLIGHTNESS_PATH, value);
68 DBG("path[%s]value[%d]", BACKLIGHTNESS_PATH, *value);
73 int OEM_sys_set_backlight_brightness(int index, int value)
77 ret = sys_set_int(BACKLIGHTNESS_PATH, value);
78 DBG("path[%s]value[%d]", BACKLIGHTNESS_PATH, value);
83 int OEM_sys_get_power_wakeup_count(int *value)
87 ret = sys_get_int(WAKEUP_COUNT_PATH, value);
89 * Fix me: with the below format output, we always run into
90 * SEGFAULT if *value != 0, it may from overflow/out of binds
93 //DBG("path[%s], value[%d], line[%d]", WAKEUP_COUNT_PATH, *value, __LINE__);
98 int OEM_sys_set_power_wakeup_count(int value)
102 ret = sys_set_int(WAKEUP_COUNT_PATH, value);
103 DBG("path[%s]value[%d]", WAKEUP_COUNT_PATH, value);
108 int OEM_sys_set_power_state(int value)
112 if(POWER_STATE_SUSPEND == value)
113 ret = sys_set_str(POWER_STATE_PATH, "mem");
114 DBG("path[%s], value[%d]", POWER_STATE_PATH, value);
119 int OEM_sys_get_battery_present(int *value)
123 ret = sys_get_int(BATTERY_PRESENT_PATH, value);
124 DBG("path[%s], value[%d]", BATTERY_PRESENT_PATH, *value);
130 int OEM_sys_get_battery_capacity(int *value)
133 static int charge_full = 0;
140 ret = sys_get_int(BATTERY_CHARGE_FULL_PATH, &charge_full);
143 ERR("get battery charge full error!");
147 DEVIDE(charge_full, 100, unit);
150 ret = sys_get_int(BATTERY_CHARGE_NOW_PATH, &charge_now);
153 ERR("get battery charge now error!");
157 DEVIDE(charge_now, unit, capacity);
159 DBG("battery capacity value[%d]", *value);
165 int OEM_sys_get_battery_charge_full(int *value)
169 if(OEM_sys_get_battery_capacity(&capacity) < 0){
170 DBG("OEM_sys_get_battery_capacity failed");
180 DBG("func[%s]value[%d]", __func__, *value);
185 int OEM_sys_get_battery_charge_now(int *value)
189 int len = strlen("Charging\n");
191 buf = sys_get_str(BATTERY_CHARGE_STATUS_PATH);
194 if(0 == strncmp(buf, "Charging\n", len )){
199 DBG("path[%s]value[%d]", BATTERY_CHARGE_STATUS_PATH, *value);
208 int OEM_sys_get_null_1(int *value)
211 ERR("this interface is not implemented");
216 int OEM_sys_set_null_1(int value)
219 ERR("this interface is not implemented");
225 int OEM_sys_get_null_2(int index, int *value)
228 ERR("this interface is not implemented");
234 int OEM_sys_set_null_2(int index, int value)
237 ERR("this interface is not implemented");
244 int OEM_sys_get_null_3(char *node)
247 ERR("this interface is not implemented");
254 /* devman_plugin_interface_sampledevice is the structure of the type
255 * OEM_sys_devman_plugin_interface in which OEM API’s which are implemented are
258 static const OEM_sys_devman_plugin_interface devman_plugin_interface_pinetrail = {
259 OEM_sys_get_null_1, //int (*OEM_sys_get_display_count) (int *value);
261 OEM_sys_get_backlight_max_brightness, //int (*OEM_sys_get_backlight_max_brightness) (int index, int *value);
262 OEM_sys_get_backlight_brightness, //int (*OEM_sys_get_backlight_brightness) (int index, int *value);
263 OEM_sys_set_backlight_brightness, //int (*OEM_sys_set_backlight_brightness) (int index, int value);
265 OEM_sys_get_null_2, //int (*OEM_sys_get_backlight_acl_control) (int index, int *value);
266 OEM_sys_set_null_2, //int (*OEM_sys_set_backlight_acl_control) (int index, int value);
268 OEM_sys_get_null_2, //int (*OEM_sys_get_lcd_power) (int index, int *value);
269 OEM_sys_set_null_2, //int (*OEM_sys_set_lcd_power) (int index, int value);
271 OEM_sys_get_null_1, //int (*OEM_sys_get_image_enhance_mode) (int *value);
272 OEM_sys_set_null_1, //int (*OEM_sys_set_image_enhance_mode) (int value);
273 OEM_sys_get_null_1, //int (*OEM_sys_get_image_enhance_scenario) (int *value);
274 OEM_sys_set_null_1, //int (*OEM_sys_set_image_enhance_scenario) (int value);
275 OEM_sys_get_null_1, //int (*OEM_sys_get_image_enhance_tone) (int *value);
276 OEM_sys_set_null_1, //int (*OEM_sys_set_image_enhance_tone) (int value);
277 OEM_sys_get_null_1, //int (*OEM_sys_get_image_enhance_outdoor) (int *value);
278 OEM_sys_set_null_1, //int (*OEM_sys_set_image_enhance_outdoor) (int value);
280 OEM_sys_get_null_1, //int (*OEM_sys_get_image_enhance_tune) (int *value);
281 OEM_sys_set_null_1, //int (*OEM_sys_set_image_enhance_tune) (int value);
283 OEM_sys_get_null_1, //int (*OEM_sys_get_uart_path) (int *value);
284 OEM_sys_set_null_1, //int (*OEM_sys_set_uart_path) (int value);
286 OEM_sys_get_null_1, //int (*OEM_sys_get_usb_path) (int *value);
287 OEM_sys_set_null_1, //int (*OEM_sys_set_usb_path) (int value);
289 OEM_sys_get_null_1, //int (*OEM_sys_get_haptic_vibetones_level_max) (int *value);
290 OEM_sys_get_null_1, //int (*OEM_sys_get_haptic_vibetones_level) (int *value);
291 OEM_sys_set_null_1, //int (*OEM_sys_set_haptic_vibetones_level) (int value);
292 OEM_sys_set_null_1, //int (*OEM_sys_set_haptic_vibetones_enable) (int value);
293 OEM_sys_set_null_1, //int (*OEM_sys_set_haptic_vibetones_oneshot) (int value);
295 OEM_sys_get_battery_capacity, //int (*OEM_sys_get_battery_capacity) (int *value);
296 OEM_sys_get_battery_charge_full, //int (*OEM_sys_get_battery_charge_full) (int *value);
297 OEM_sys_get_battery_charge_now, //int (*OEM_sys_get_battery_charge_now) (int *value);
298 OEM_sys_get_battery_present, //int (*OEM_sys_get_battery_present) (int *value);
299 OEM_sys_get_null_1, //int (*OEM_sys_get_battery_health) (int *value);
301 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_charger_online) (int *value);
302 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_earjack_online) (int *value);
303 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_earkey_online) (int *value);
304 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_hdmi_online) (int *value);
305 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_usb_online) (int *value);
306 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_cradle_online) (int *value);
307 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_tvout_online) (int *value);
308 OEM_sys_get_null_1, //int (*OEM_sys_get_jack_keyboard_online) (int *value);
310 OEM_sys_get_null_1, //int (*OEM_sys_get_leds_torch_max_brightness) (int *value);
311 OEM_sys_get_null_1, //int (*OEM_sys_get_leds_torch_brightness) (int *value);
312 OEM_sys_set_null_1, //int (*OEM_sys_set_leds_torch_brightness) (int value);
314 OEM_sys_set_power_state, //int (*OEM_sys_set_power_state) (int value);
316 OEM_sys_get_power_wakeup_count, //int (*OEM_sys_get_power_wakeup_count) (int *value);
317 OEM_sys_set_power_wakeup_count, //int (*OEM_sys_set_power_wakeup_count) (int value);
319 OEM_sys_get_null_3, //int (*OEM_sys_get_memnotify_node) (char *node);
320 OEM_sys_get_null_1, //int (*OEM_sys_get_memnotify_victim_task) (int *value);
321 OEM_sys_set_null_1, //int (*OEM_sys_set_memnotify_threshold_lv1) (int value);
322 OEM_sys_set_null_1, //int (*OEM_sys_set_memnotify_threshold_lv2) (int value);
324 OEM_sys_get_null_3, //int (*OEM_sys_get_process_monitor_node) (char *node);
325 OEM_sys_set_null_1, //int (*OEM_sys_set_process_monitor_mp_pnp) (int value);
326 OEM_sys_set_null_1, //int (*OEM_sys_set_process_monitor_mp_vip) (int value);
328 OEM_sys_get_null_1, //int (*OEM_sys_get_cpufreq_cpuinfo_max_freq) (int *value);
329 OEM_sys_get_null_1, //int (*OEM_sys_get_cpufreq_cpuinfo_min_freq) (int *value);
330 OEM_sys_get_null_1, //int (*OEM_sys_get_cpufreq_scaling_max_freq) (int *value);
331 OEM_sys_set_null_1, //int (*OEM_sys_set_cpufreq_scaling_max_freq) (int value);
332 OEM_sys_get_null_1, //int (*OEM_sys_get_cpufreq_scaling_min_freq) (int *value);
333 OEM_sys_set_null_1, //int (*OEM_sys_set_cpufreq_scaling_min_freq) (int value);
336 /* The following code returns the address of the structure
337 * devman_plugin_interface_sampledevice as defined above*/
339 const OEM_sys_devman_plugin_interface *OEM_sys_get_devman_plugin_interface()
342 return &devman_plugin_interface_pinetrail;