diff options
Diffstat (limited to 'include/linux/power_supply.h')
-rw-r--r-- | include/linux/power_supply.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index 204c18d..8289fca 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h @@ -14,6 +14,7 @@ #define __LINUX_POWER_SUPPLY_H__ #include <linux/device.h> +#include <linux/wakelock.h> #include <linux/workqueue.h> #include <linux/leds.h> @@ -43,6 +44,7 @@ enum { POWER_SUPPLY_CHARGE_TYPE_NONE, POWER_SUPPLY_CHARGE_TYPE_TRICKLE, POWER_SUPPLY_CHARGE_TYPE_FAST, + POWER_SUPPLY_CHARGE_TYPE_SLOW, }; enum { @@ -53,6 +55,7 @@ enum { POWER_SUPPLY_HEALTH_OVERVOLTAGE, POWER_SUPPLY_HEALTH_UNSPEC_FAILURE, POWER_SUPPLY_HEALTH_COLD, + POWER_SUPPLY_HEALTH_UNDERVOLTAGE, }; enum { @@ -108,6 +111,9 @@ enum power_supply_property { POWER_SUPPLY_PROP_ENERGY_NOW, POWER_SUPPLY_PROP_ENERGY_AVG, POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ +#ifdef CONFIG_SLP + POWER_SUPPLY_PROP_CAPACITY_RAW, +#endif POWER_SUPPLY_PROP_CAPACITY_LEVEL, POWER_SUPPLY_PROP_TEMP, POWER_SUPPLY_PROP_TEMP_AMBIENT, @@ -120,6 +126,11 @@ enum power_supply_property { POWER_SUPPLY_PROP_MODEL_NAME, POWER_SUPPLY_PROP_MANUFACTURER, POWER_SUPPLY_PROP_SERIAL_NUMBER, +#if defined(CONFIG_MACH_KONA) + POWER_SUPPLY_PROP_CHARGING_MODE, + POWER_SUPPLY_PROP_COMPENSATION_1, + POWER_SUPPLY_PROP_COMPENSATION_3, +#endif }; enum power_supply_type { @@ -130,7 +141,55 @@ enum power_supply_type { POWER_SUPPLY_TYPE_USB_DCP, /* Dedicated Charging Port */ POWER_SUPPLY_TYPE_USB_CDP, /* Charging Downstream Port */ POWER_SUPPLY_TYPE_USB_ACA, /* Accessory Charger Adapters */ + POWER_SUPPLY_TYPE_DOCK, + POWER_SUPPLY_TYPE_MISC, + POWER_SUPPLY_TYPE_WIRELESS, + POWER_SUPPLY_TYPE_UARTOFF, + POWER_SUPPLY_TYPE_OTG, +}; + +enum { + POWER_SUPPLY_VBUS_UNKNOWN = 0, + POWER_SUPPLY_VBUS_UVLO, + POWER_SUPPLY_VBUS_WEAK, + POWER_SUPPLY_VBUS_OVLO, + POWER_SUPPLY_VBUS_GOOD, +}; + +/* + * EXTENDED_ONLINE_TYPE + * - support various charger cable type + * - set type from each accessory driver(muic, host, mhl, etc,,,) + * + * - type format + * | 31-24: RSVD | 23-16: MAIN TYPE | 15-8: SUB TYPE | 7-0: POWER TYPE | + */ +#define ONLINE_TYPE_RSVD_SHIFT 24 +#define ONLINE_TYPE_RSVD_MASK (0xF << ONLINE_TYPE_RSVD_SHIFT) +#define ONLINE_TYPE_MAIN_SHIFT 16 +#define ONLINE_TYPE_MAIN_MASK (0xF << ONLINE_TYPE_MAIN_SHIFT) +#define ONLINE_TYPE_SUB_SHIFT 8 +#define ONLINE_TYPE_SUB_MASK (0xF << ONLINE_TYPE_SUB_SHIFT) +#define ONLINE_TYPE_PWR_SHIFT 0 +#define ONLINE_TYPE_PWR_MASK (0xF << ONLINE_TYPE_PWR_SHIFT) + +enum online_sub_type { + ONLINE_SUB_TYPE_UNKNOWN = 0, + ONLINE_SUB_TYPE_MHL, + ONLINE_SUB_TYPE_AUDIO, + ONLINE_SUB_TYPE_DESK, + ONLINE_SUB_TYPE_SMART_NOTG, + ONLINE_SUB_TYPE_SMART_OTG, + ONLINE_SUB_TYPE_KBD, +}; + +enum online_power_type { + ONLINE_POWER_TYPE_UNKNOWN = 0, + ONLINE_POWER_TYPE_BATTERY, + ONLINE_POWER_TYPE_TA, + ONLINE_POWER_TYPE_USB, }; +/* EXTENDED_ONLINE_TYPE */ union power_supply_propval { int intval; @@ -163,6 +222,9 @@ struct power_supply { /* private */ struct device *dev; struct work_struct changed_work; + spinlock_t changed_lock; + bool changed; + struct wake_lock work_wake_lock; #ifdef CONFIG_LEDS_TRIGGERS struct led_trigger *charging_full_trig; @@ -201,6 +263,9 @@ extern struct power_supply *power_supply_get_by_name(char *name); extern void power_supply_changed(struct power_supply *psy); extern int power_supply_am_i_supplied(struct power_supply *psy); extern int power_supply_set_battery_charged(struct power_supply *psy); +extern int power_supply_set_current_limit(struct power_supply *psy, int limit); +extern int power_supply_set_online(struct power_supply *psy, bool enable); +extern int power_supply_set_charge_type(struct power_supply *psy, int type); #if defined(CONFIG_POWER_SUPPLY) || defined(CONFIG_POWER_SUPPLY_MODULE) extern int power_supply_is_system_supplied(void); |