blob: 473b230b35bcb42f58b16df53e1b112738394247 [file] [log] [blame]
#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