diff options
| author | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-10 17:47:59 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-07-10 17:47:59 -0400 |
| commit | 5f60cfd932b42c69ed3226400cb5eab152576c3a (patch) | |
| tree | 70e4feba5158e76060d36a6c015be8297c294bca /include/linux | |
| parent | 9f9d76321659b5ebc9939101481f7c3ce228ea6e (diff) | |
| parent | d7ce6d1d5f6e307a2fbb69626cf120e20e793fe7 (diff) | |
Merge git://git.infradead.org/~dwmw2/battery-2.6
* git://git.infradead.org/~dwmw2/battery-2.6:
[BATTERY] ds2760 W1 slave
[BATTERY] One Laptop Per Child power/battery driver
[BATTERY] Apple PMU driver
[BATTERY] 1-Wire ds2760 chip battery driver
[BATTERY] APM emulation driver for class batteries
[BATTERY] pda_power platform driver
[BATTERY] Universal power supply class (was: battery class)
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/pda_power.h | 31 | ||||
| -rw-r--r-- | include/linux/power_supply.h | 180 |
2 files changed, 211 insertions, 0 deletions
diff --git a/include/linux/pda_power.h b/include/linux/pda_power.h new file mode 100644 index 000000000000..1375f15797e7 --- /dev/null +++ b/include/linux/pda_power.h | |||
| @@ -0,0 +1,31 @@ | |||
| 1 | /* | ||
| 2 | * Common power driver for PDAs and phones with one or two external | ||
| 3 | * power supplies (AC/USB) connected to main and backup batteries, | ||
| 4 | * and optional builtin charger. | ||
| 5 | * | ||
| 6 | * Copyright © 2007 Anton Vorontsov <cbou@mail.ru> | ||
| 7 | * | ||
| 8 | * This program is free software; you can redistribute it and/or modify | ||
| 9 | * it under the terms of the GNU General Public License version 2 as | ||
| 10 | * published by the Free Software Foundation. | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __PDA_POWER_H__ | ||
| 14 | #define __PDA_POWER_H__ | ||
| 15 | |||
| 16 | #define PDA_POWER_CHARGE_AC (1 << 0) | ||
| 17 | #define PDA_POWER_CHARGE_USB (1 << 1) | ||
| 18 | |||
| 19 | struct pda_power_pdata { | ||
| 20 | int (*is_ac_online)(void); | ||
| 21 | int (*is_usb_online)(void); | ||
| 22 | void (*set_charge)(int flags); | ||
| 23 | |||
| 24 | char **supplied_to; | ||
| 25 | size_t num_supplicants; | ||
| 26 | |||
| 27 | unsigned int wait_for_status; /* msecs, default is 500 */ | ||
| 28 | unsigned int wait_for_charger; /* msecs, default is 500 */ | ||
| 29 | }; | ||
| 30 | |||
| 31 | #endif /* __PDA_POWER_H__ */ | ||
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h new file mode 100644 index 000000000000..606c0957997f --- /dev/null +++ b/include/linux/power_supply.h | |||
| @@ -0,0 +1,180 @@ | |||
| 1 | /* | ||
| 2 | * Universal power supply monitor class | ||
| 3 | * | ||
| 4 | * Copyright © 2007 Anton Vorontsov <cbou@mail.ru> | ||
| 5 | * Copyright © 2004 Szabolcs Gyurko | ||
| 6 | * Copyright © 2003 Ian Molton <spyro@f2s.com> | ||
| 7 | * | ||
| 8 | * Modified: 2004, Oct Szabolcs Gyurko | ||
| 9 | * | ||
| 10 | * You may use this code as per GPL version 2 | ||
| 11 | */ | ||
| 12 | |||
| 13 | #ifndef __LINUX_POWER_SUPPLY_H__ | ||
| 14 | #define __LINUX_POWER_SUPPLY_H__ | ||
| 15 | |||
| 16 | #include <linux/device.h> | ||
| 17 | #include <linux/workqueue.h> | ||
| 18 | #include <linux/leds.h> | ||
| 19 | |||
| 20 | /* | ||
| 21 | * All voltages, currents, charges, energies, time and temperatures in uV, | ||
| 22 | * µA, µAh, µWh, seconds and tenths of degree Celsius unless otherwise | ||
| 23 | * stated. It's driver's job to convert its raw values to units in which | ||
| 24 | * this class operates. | ||
| 25 | */ | ||
| 26 | |||
| 27 | /* | ||
| 28 | * For systems where the charger determines the maximum battery capacity | ||
| 29 | * the min and max fields should be used to present these values to user | ||
| 30 | * space. Unused/unknown fields will not appear in sysfs. | ||
| 31 | */ | ||
| 32 | |||
| 33 | enum { | ||
| 34 | POWER_SUPPLY_STATUS_UNKNOWN = 0, | ||
| 35 | POWER_SUPPLY_STATUS_CHARGING, | ||
| 36 | POWER_SUPPLY_STATUS_DISCHARGING, | ||
| 37 | POWER_SUPPLY_STATUS_NOT_CHARGING, | ||
| 38 | POWER_SUPPLY_STATUS_FULL, | ||
| 39 | }; | ||
| 40 | |||
| 41 | enum { | ||
| 42 | POWER_SUPPLY_HEALTH_UNKNOWN = 0, | ||
| 43 | POWER_SUPPLY_HEALTH_GOOD, | ||
| 44 | POWER_SUPPLY_HEALTH_OVERHEAT, | ||
| 45 | POWER_SUPPLY_HEALTH_DEAD, | ||
| 46 | POWER_SUPPLY_HEALTH_OVERVOLTAGE, | ||
| 47 | POWER_SUPPLY_HEALTH_UNSPEC_FAILURE, | ||
| 48 | }; | ||
| 49 | |||
| 50 | enum { | ||
| 51 | POWER_SUPPLY_TECHNOLOGY_UNKNOWN = 0, | ||
| 52 | POWER_SUPPLY_TECHNOLOGY_NiMH, | ||
| 53 | POWER_SUPPLY_TECHNOLOGY_LION, | ||
| 54 | POWER_SUPPLY_TECHNOLOGY_LIPO, | ||
| 55 | POWER_SUPPLY_TECHNOLOGY_LiFe, | ||
| 56 | POWER_SUPPLY_TECHNOLOGY_NiCd, | ||
| 57 | }; | ||
| 58 | |||
| 59 | enum { | ||
| 60 | POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN = 0, | ||
| 61 | POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL, | ||
| 62 | POWER_SUPPLY_CAPACITY_LEVEL_LOW, | ||
| 63 | POWER_SUPPLY_CAPACITY_LEVEL_NORMAL, | ||
| 64 | POWER_SUPPLY_CAPACITY_LEVEL_HIGH, | ||
| 65 | POWER_SUPPLY_CAPACITY_LEVEL_FULL, | ||
| 66 | }; | ||
| 67 | |||
| 68 | enum power_supply_property { | ||
| 69 | /* Properties of type `int' */ | ||
| 70 | POWER_SUPPLY_PROP_STATUS = 0, | ||
| 71 | POWER_SUPPLY_PROP_HEALTH, | ||
| 72 | POWER_SUPPLY_PROP_PRESENT, | ||
| 73 | POWER_SUPPLY_PROP_ONLINE, | ||
| 74 | POWER_SUPPLY_PROP_TECHNOLOGY, | ||
| 75 | POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, | ||
| 76 | POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN, | ||
| 77 | POWER_SUPPLY_PROP_VOLTAGE_NOW, | ||
| 78 | POWER_SUPPLY_PROP_VOLTAGE_AVG, | ||
| 79 | POWER_SUPPLY_PROP_CURRENT_NOW, | ||
| 80 | POWER_SUPPLY_PROP_CURRENT_AVG, | ||
| 81 | POWER_SUPPLY_PROP_CHARGE_FULL_DESIGN, | ||
| 82 | POWER_SUPPLY_PROP_CHARGE_EMPTY_DESIGN, | ||
| 83 | POWER_SUPPLY_PROP_CHARGE_FULL, | ||
| 84 | POWER_SUPPLY_PROP_CHARGE_EMPTY, | ||
| 85 | POWER_SUPPLY_PROP_CHARGE_NOW, | ||
| 86 | POWER_SUPPLY_PROP_CHARGE_AVG, | ||
| 87 | POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN, | ||
| 88 | POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN, | ||
| 89 | POWER_SUPPLY_PROP_ENERGY_FULL, | ||
| 90 | POWER_SUPPLY_PROP_ENERGY_EMPTY, | ||
| 91 | POWER_SUPPLY_PROP_ENERGY_NOW, | ||
| 92 | POWER_SUPPLY_PROP_ENERGY_AVG, | ||
| 93 | POWER_SUPPLY_PROP_CAPACITY, /* in percents! */ | ||
| 94 | POWER_SUPPLY_PROP_CAPACITY_LEVEL, | ||
| 95 | POWER_SUPPLY_PROP_TEMP, | ||
| 96 | POWER_SUPPLY_PROP_TEMP_AMBIENT, | ||
| 97 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_NOW, | ||
| 98 | POWER_SUPPLY_PROP_TIME_TO_EMPTY_AVG, | ||
| 99 | POWER_SUPPLY_PROP_TIME_TO_FULL_NOW, | ||
| 100 | POWER_SUPPLY_PROP_TIME_TO_FULL_AVG, | ||
| 101 | /* Properties of type `const char *' */ | ||
| 102 | POWER_SUPPLY_PROP_MODEL_NAME, | ||
| 103 | POWER_SUPPLY_PROP_MANUFACTURER, | ||
| 104 | }; | ||
| 105 | |||
| 106 | enum power_supply_type { | ||
| 107 | POWER_SUPPLY_TYPE_BATTERY = 0, | ||
| 108 | POWER_SUPPLY_TYPE_UPS, | ||
| 109 | POWER_SUPPLY_TYPE_MAINS, | ||
| 110 | POWER_SUPPLY_TYPE_USB, | ||
| 111 | }; | ||
| 112 | |||
| 113 | union power_supply_propval { | ||
| 114 | int intval; | ||
| 115 | const char *strval; | ||
| 116 | }; | ||
| 117 | |||
| 118 | struct power_supply { | ||
| 119 | const char *name; | ||
| 120 | enum power_supply_type type; | ||
| 121 | enum power_supply_property *properties; | ||
| 122 | size_t num_properties; | ||
| 123 | |||
| 124 | char **supplied_to; | ||
| 125 | size_t num_supplicants; | ||
| 126 | |||
| 127 | int (*get_property)(struct power_supply *psy, | ||
| 128 | enum power_supply_property psp, | ||
| 129 | union power_supply_propval *val); | ||
| 130 | void (*external_power_changed)(struct power_supply *psy); | ||
| 131 | |||
| 132 | /* For APM emulation, think legacy userspace. */ | ||
| 133 | int use_for_apm; | ||
| 134 | |||
| 135 | /* private */ | ||
| 136 | struct device *dev; | ||
| 137 | struct work_struct changed_work; | ||
| 138 | |||
| 139 | #ifdef CONFIG_LEDS_TRIGGERS | ||
| 140 | struct led_trigger *charging_full_trig; | ||
| 141 | char *charging_full_trig_name; | ||
| 142 | struct led_trigger *charging_trig; | ||
| 143 | char *charging_trig_name; | ||
| 144 | struct led_trigger *full_trig; | ||
| 145 | char *full_trig_name; | ||
| 146 | struct led_trigger *online_trig; | ||
| 147 | char *online_trig_name; | ||
| 148 | #endif | ||
| 149 | }; | ||
| 150 | |||
| 151 | /* | ||
| 152 | * This is recommended structure to specify static power supply parameters. | ||
| 153 | * Generic one, parametrizable for different power supplies. Power supply | ||
| 154 | * class itself does not use it, but that's what implementing most platform | ||
| 155 | * drivers, should try reuse for consistency. | ||
| 156 | */ | ||
| 157 | |||
| 158 | struct power_supply_info { | ||
| 159 | const char *name; | ||
| 160 | int technology; | ||
| 161 | int voltage_max_design; | ||
| 162 | int voltage_min_design; | ||
| 163 | int charge_full_design; | ||
| 164 | int charge_empty_design; | ||
| 165 | int energy_full_design; | ||
| 166 | int energy_empty_design; | ||
| 167 | int use_for_apm; | ||
| 168 | }; | ||
| 169 | |||
| 170 | extern void power_supply_changed(struct power_supply *psy); | ||
| 171 | extern int power_supply_am_i_supplied(struct power_supply *psy); | ||
| 172 | |||
| 173 | extern int power_supply_register(struct device *parent, | ||
| 174 | struct power_supply *psy); | ||
| 175 | extern void power_supply_unregister(struct power_supply *psy); | ||
| 176 | |||
| 177 | /* For APM emulation, think legacy userspace. */ | ||
| 178 | extern struct class *power_supply_class; | ||
| 179 | |||
| 180 | #endif /* __LINUX_POWER_SUPPLY_H__ */ | ||
