| #ifndef __MRVL_CHARGER__ |
| #define __MRVL_CHARGER__ |
| |
| #define UEVENT_BUFFER_SIZE 256 |
| |
| #define CHGBAT_STR_NAME_LEN 32 |
| |
| enum CHG_BAT_FILES { |
| BAT_CAPACITY_FILE_IDX = 0, |
| BAT_HEALTH_FILE_IDX, |
| BAT_PRESENT_FILE_IDX, |
| BAT_TEMP_FILE_IDX, |
| BAT_STATUS_FILE_IDX, |
| BAT_TECH_FILE_IDX, |
| BAT_TYPE_FILE_IDX, |
| BAT_VOLT_FILE_IDX, |
| ACCHG_ONLINE_FILE_IDX, |
| ACCHG_TYPE_FILE_IDX, |
| ACCHG_STATUS_FILE_IDX, |
| USBCHG_ONLINE_FILE_IDX, |
| USBCHG_TYPE_FILE_IDX, |
| USBCHG_STATUS_FILE_IDX, |
| |
| NR_CHG_USB_FILE_IDX, |
| }; |
| |
| struct chg_bat_stat { |
| /* raw battery status */ |
| unsigned int capacity; |
| unsigned char health[CHGBAT_STR_NAME_LEN]; |
| unsigned int present; |
| unsigned char type[CHGBAT_STR_NAME_LEN]; |
| unsigned int voltage_now; |
| unsigned char bat_status[CHGBAT_STR_NAME_LEN]; |
| unsigned int bat_temp; |
| unsigned char bat_technology[CHGBAT_STR_NAME_LEN]; |
| |
| /* raw chg status */ |
| //unsigned char ac_or_usb; |
| unsigned int acchg_online; |
| unsigned char acchg_type[CHGBAT_STR_NAME_LEN]; |
| unsigned char acchg_status[CHGBAT_STR_NAME_LEN]; |
| unsigned int usbchg_online; |
| unsigned char usbchg_type[CHGBAT_STR_NAME_LEN]; |
| unsigned char usbchg_status[CHGBAT_STR_NAME_LEN]; |
| }; |
| |
| struct chg_bat_tag { |
| unsigned int capacity; |
| unsigned int health; |
| unsigned int present; |
| unsigned int type; |
| unsigned int voltage_now; |
| unsigned int bat_status; |
| unsigned int bat_temp; |
| unsigned int bat_technology; |
| unsigned int acchg_online; |
| unsigned int acchg_type; |
| unsigned int acchg_status; |
| unsigned int usbchg_online; |
| unsigned int usbchg_type; |
| unsigned int usbchg_status; |
| }; |
| |
| #define BAT_CAPACITY_FILE "/sys/class/power_supply/battery/capacity" |
| #define BAT_HEALTH_FILE "/sys/class/power_supply/battery/health" |
| #define BAT_PRESENT_FILE "/sys/class/power_supply/battery/present" |
| #define BAT_TEMP_FILE "/sys/class/power_supply/battery/temp" |
| #define BAT_STATUS_FILE "/sys/class/power_supply/battery/status" |
| #define BAT_TECH_FILE "/sys/class/power_supply/battery/technology" |
| #define BAT_TYPE_FILE "/sys/class/power_supply/battery/type" |
| #define BAT_VOLT_FILE "/sys/class/power_supply/battery/voltage_now" |
| |
| #define ACCHG_ONLINE_FILE "/sys/class/power_supply/ac/online" |
| #define ACCHG_TYPE_FILE "/sys/class/power_supply/ac/type" |
| #define ACCHG_STATUS_FILE "/sys/class/power_supply/ac/status" |
| |
| #define USBCHG_ONLINE_FILE "/sys/class/power_supply/usb/online" |
| #define USBCHG_TYPE_FILE "/sys/class/power_supply/usb/type" |
| #define USBCHG_STATUS_FILE "/sys/class/power_supply/usb/status" |
| |
| #define PSY_TYPE_UNKNOWN "Unknown" |
| #define PSY_TYPE_BATTERY "Battery" |
| #define PSY_TYPE_UPS "UPS" |
| #define PSY_TYPE_MAINS "Mains" |
| #define PSY_TYPE_USB "USB" |
| #define PSY_TYPE_USBDCP "USB_DCP" |
| #define PSY_TYPE_USBCDP "USB_CDP" |
| #define PSY_TYPE_USBACA "USB_ACA" |
| |
| #define CHGBAT_STATUS_UNKNOWN "Unknown" |
| #define CHGBAT_STATUS_CHARGING "Charging" |
| #define CHGBAT_STATUS_DISCHARGING "Discharging" |
| #define CHGBAT_STATUS_NOTCHARGING "Not charging" |
| #define CHGBAT_STATUS_FULL "Full" |
| |
| #define CHARGE_TYPE_UNKNOWN "Unknown" |
| #define CHARGE_TYPE_NA "N/A" |
| #define CHARGE_TYPE_TRICKLE "Trickle" |
| #define CHARGE_TYPE_FAST "Fast" |
| |
| #define BAT_HEALTH_UNKNOWN "Unknown" |
| #define BAT_HEALTH_GOOD "Good" |
| #define BAT_HEALTH_OVERHEAT "Overheat" |
| #define BAT_HEALTH_DEAD "Dead" |
| #define BAT_HEALTH_OVERVOLTAGE "Over voltage" |
| #define BAT_HEALTH_UNSPEC_FAILURE "Unspecified failure" |
| #define BAT_HEALTH_COLD "Cold" |
| #define BAT_HEALTH_WATCHDOG_TIMER_EXPIRE "Watchdog timer expire" |
| #define BAT_HEALTH_SAFETY_TIMER_EXPIRE "Safety timer expire" |
| |
| #define BAT_TECHNOLOGY_UNKNOWN "Unknown" |
| #define BAT_TECHNOLOGY_NiMH "NiMH" |
| #define BAT_TECHNOLOGY_LION "Li-ion" |
| #define BAT_TECHNOLOGY_LIPO "Li-poly" |
| #define BAT_TECHNOLOGY_LiFe "LiFe" |
| #define BAT_TECHNOLOGY_NiCd "NiCd" |
| #define BAT_TECHNOLOGY_LiMn "LiMn" |
| |
| enum power_supply_type { |
| PSY_UNKNOWN = 0, |
| PSY_BATTERY, |
| PSY_UPS, |
| PSY_MAINS, |
| PSY_USB, /* Standard Downstream Port */ |
| PSY_USB_DCP, /* Dedicated Charging Port */ |
| PSY_USB_CDP, /* Charging Downstream Port */ |
| PSY_USB_ACA, /* Accessory Charger Adapters */ |
| }; |
| |
| enum chg_status_stat { |
| STATUS_UNKNOWN = 0, |
| STATUS_CHARGING, |
| STATUS_DISCHARGING, |
| STATUS_NOT_CHARGING, |
| STATUS_FULL, |
| }; |
| |
| enum chg_type_stat { |
| CHG_TYPE_UNKNOWN = 0, |
| CHG_TYPE_NONE, |
| CHG_TYPE_TRICKLE, |
| CHG_TYPE_FAST, |
| }; |
| |
| enum bat_health_stat { |
| HEALTH_UNKNOWN = 0, |
| HEALTH_GOOD, |
| HEALTH_OVERHEAT, |
| HEALTH_DEAD, |
| HEALTH_OVERVOLTAGE, |
| HEALTH_UNSPEC_FAILURE, |
| HEALTH_COLD, |
| HEALTH_WATCHDOG_TIMER_EXPIRE, |
| HEALTH_SAFETY_TIMER_EXPIRE, |
| }; |
| |
| enum bat_technology_stat { |
| TECHNOLOGY_UNKNOWN = 0, |
| TECHNOLOGY_NiMH, |
| TECHNOLOGY_LION, |
| TECHNOLOGY_LIPO, |
| TECHNOLOGY_LiFe, |
| TECHNOLOGY_NiCd, |
| TECHNOLOGY_LiMn, |
| }; |
| |
| enum bat_capacity_stat { |
| CAPACITY_LEVEL_UNKNOWN = 0, |
| CAPACITY_LEVEL_CRITICAL, |
| CAPACITY_LEVEL_LOW, |
| CAPACITY_LEVEL_NORMAL, |
| CAPACITY_LEVEL_HIGH, |
| CAPACITY_LEVEL_FULL, |
| }; |
| |
| enum chg_type { |
| NULL_CHG = 0, |
| AC_CHARGER, |
| USB_CHARGER, |
| }; |
| |
| enum bat_present_stat { |
| BAT_NOT_PRESENT = 0, |
| BAT_PRESENT, |
| }; |
| |
| enum chg_event_type{ |
| BAT_EVENT = 0, |
| USBCHG_EVENT, |
| ACCHG_EVENT, |
| NR_EVENT_TYPE, |
| }; |
| |
| struct chg_file_desc { |
| int fd; |
| char *file_name; |
| int (* read_file)(struct chg_file_desc * file_desc, |
| struct chg_bat_stat * chg_bat_status, |
| int attrib_idx); |
| }; |
| |
| #define ALL_CHG_BAT_FILES ((1 << NR_CHG_USB_FILE_IDX) - 1) |
| |
| #define ALL_AC_CHG_FILES \ |
| ((1 << ACCHG_ONLINE_FILE_IDX) | \ |
| (1 << ACCHG_TYPE_FILE_IDX) | \ |
| (1 << ACCHG_STATUS_FILE_IDX)) |
| |
| #define ALL_USB_CHG_FILES \ |
| ((1 << USBCHG_ONLINE_FILE_IDX) | \ |
| (1 << USBCHG_TYPE_FILE_IDX) |\ |
| (1 << USBCHG_STATUS_FILE_IDX)) |
| |
| #define ALL_BAT_FILES \ |
| ( (1 << BAT_CAPACITY_FILE_IDX) | \ |
| (1 << BAT_HEALTH_FILE_IDX) | \ |
| (1 << BAT_PRESENT_FILE_IDX) | \ |
| (1 << BAT_TEMP_FILE_IDX) | \ |
| (1 << BAT_STATUS_FILE_IDX) | \ |
| (1 << BAT_TECH_FILE_IDX) | \ |
| (1 << BAT_TYPE_FILE_IDX) | \ |
| (1 << BAT_VOLT_FILE_IDX)) |
| |
| #define CHG_METHOD_GETDATA "get_chg_info" |
| |
| enum { |
| CHARGER_MSG_SEND = 0, |
| NR_CHARGER_MSG, |
| }; |
| |
| #define CHARGER_OBJ_NAME "charger" |
| |
| int send_chg_msg(struct ubus_context *ctx, struct ubus_object *obj, |
| struct ubus_request_data *req, const char *method, |
| struct blob_attr *msg); |
| int charger_init(struct ubus_context *ctx, struct ubus_object *obj); |
| |
| #endif |