diff options
| -rw-r--r-- | Documentation/power/charger-manager.txt | 41 | ||||
| -rw-r--r-- | Documentation/power/power_supply_class.txt | 2 | ||||
| -rw-r--r-- | MAINTAINERS | 2 | ||||
| -rw-r--r-- | drivers/power/Kconfig | 10 | ||||
| -rw-r--r-- | drivers/power/ab8500_btemp.c | 12 | ||||
| -rw-r--r-- | drivers/power/ab8500_charger.c | 13 | ||||
| -rw-r--r-- | drivers/power/ab8500_fg.c | 12 | ||||
| -rw-r--r-- | drivers/power/charger-manager.c | 392 | ||||
| -rw-r--r-- | drivers/power/ds2781_battery.c | 20 | ||||
| -rw-r--r-- | drivers/power/isp1704_charger.c | 2 | ||||
| -rw-r--r-- | drivers/power/max17042_battery.c | 148 | ||||
| -rw-r--r-- | drivers/power/power_supply_sysfs.c | 1 | ||||
| -rw-r--r-- | drivers/power/sbs-battery.c | 2 | ||||
| -rw-r--r-- | drivers/power/smb347-charger.c | 712 | ||||
| -rw-r--r-- | include/linux/power/charger-manager.h | 50 | ||||
| -rw-r--r-- | include/linux/power/max17042_battery.h | 17 | ||||
| -rw-r--r-- | include/linux/power_supply.h | 4 |
17 files changed, 943 insertions, 497 deletions
diff --git a/Documentation/power/charger-manager.txt b/Documentation/power/charger-manager.txt index fdcca991df30..b4f7f4b23f64 100644 --- a/Documentation/power/charger-manager.txt +++ b/Documentation/power/charger-manager.txt | |||
| @@ -44,6 +44,16 @@ Charger Manager supports the following: | |||
| 44 | Normally, the platform will need to resume and suspend some devices | 44 | Normally, the platform will need to resume and suspend some devices |
| 45 | that are used by Charger Manager. | 45 | that are used by Charger Manager. |
| 46 | 46 | ||
| 47 | * Support for premature full-battery event handling | ||
| 48 | If the battery voltage drops by "fullbatt_vchkdrop_uV" after | ||
| 49 | "fullbatt_vchkdrop_ms" from the full-battery event, the framework | ||
| 50 | restarts charging. This check is also performed while suspended by | ||
| 51 | setting wakeup time accordingly and using suspend_again. | ||
| 52 | |||
| 53 | * Support for uevent-notify | ||
| 54 | With the charger-related events, the device sends | ||
| 55 | notification to users with UEVENT. | ||
| 56 | |||
| 47 | 2. Global Charger-Manager Data related with suspend_again | 57 | 2. Global Charger-Manager Data related with suspend_again |
| 48 | ======================================================== | 58 | ======================================================== |
| 49 | In order to setup Charger Manager with suspend-again feature | 59 | In order to setup Charger Manager with suspend-again feature |
| @@ -55,7 +65,7 @@ if there are multiple batteries. If there are multiple batteries, the | |||
| 55 | multiple instances of Charger Manager share the same charger_global_desc | 65 | multiple instances of Charger Manager share the same charger_global_desc |
| 56 | and it will manage in-suspend monitoring for all instances of Charger Manager. | 66 | and it will manage in-suspend monitoring for all instances of Charger Manager. |
| 57 | 67 | ||
| 58 | The user needs to provide all the two entries properly in order to activate | 68 | The user needs to provide all the three entries properly in order to activate |
| 59 | in-suspend monitoring: | 69 | in-suspend monitoring: |
| 60 | 70 | ||
| 61 | struct charger_global_desc { | 71 | struct charger_global_desc { |
| @@ -74,6 +84,11 @@ bool (*rtc_only_wakeup)(void); | |||
| 74 | same struct. If there is any other wakeup source triggered the | 84 | same struct. If there is any other wakeup source triggered the |
| 75 | wakeup, it should return false. If the "rtc" is the only wakeup | 85 | wakeup, it should return false. If the "rtc" is the only wakeup |
| 76 | reason, it should return true. | 86 | reason, it should return true. |
| 87 | |||
| 88 | bool assume_timer_stops_in_suspend; | ||
| 89 | : if true, Charger Manager assumes that | ||
| 90 | the timer (CM uses jiffies as timer) stops during suspend. Then, CM | ||
| 91 | assumes that the suspend-duration is same as the alarm length. | ||
| 77 | }; | 92 | }; |
| 78 | 93 | ||
| 79 | 3. How to setup suspend_again | 94 | 3. How to setup suspend_again |
| @@ -111,6 +126,16 @@ enum polling_modes polling_mode; | |||
| 111 | CM_POLL_CHARGING_ONLY: poll this battery if and only if the | 126 | CM_POLL_CHARGING_ONLY: poll this battery if and only if the |
| 112 | battery is being charged. | 127 | battery is being charged. |
| 113 | 128 | ||
| 129 | unsigned int fullbatt_vchkdrop_ms; | ||
| 130 | unsigned int fullbatt_vchkdrop_uV; | ||
| 131 | : If both have non-zero values, Charger Manager will check the | ||
| 132 | battery voltage drop fullbatt_vchkdrop_ms after the battery is fully | ||
| 133 | charged. If the voltage drop is over fullbatt_vchkdrop_uV, Charger | ||
| 134 | Manager will try to recharge the battery by disabling and enabling | ||
| 135 | chargers. Recharge with voltage drop condition only (without delay | ||
| 136 | condition) is needed to be implemented with hardware interrupts from | ||
| 137 | fuel gauges or charger devices/chips. | ||
| 138 | |||
| 114 | unsigned int fullbatt_uV; | 139 | unsigned int fullbatt_uV; |
| 115 | : If specified with a non-zero value, Charger Manager assumes | 140 | : If specified with a non-zero value, Charger Manager assumes |
| 116 | that the battery is full (capacity = 100) if the battery is not being | 141 | that the battery is full (capacity = 100) if the battery is not being |
| @@ -122,6 +147,8 @@ unsigned int polling_interval_ms; | |||
| 122 | this battery every polling_interval_ms or more frequently. | 147 | this battery every polling_interval_ms or more frequently. |
| 123 | 148 | ||
| 124 | enum data_source battery_present; | 149 | enum data_source battery_present; |
| 150 | : CM_BATTERY_PRESENT: assume that the battery exists. | ||
| 151 | CM_NO_BATTERY: assume that the battery does not exists. | ||
| 125 | CM_FUEL_GAUGE: get battery presence information from fuel gauge. | 152 | CM_FUEL_GAUGE: get battery presence information from fuel gauge. |
| 126 | CM_CHARGER_STAT: get battery presence from chargers. | 153 | CM_CHARGER_STAT: get battery presence from chargers. |
| 127 | 154 | ||
| @@ -151,7 +178,17 @@ bool measure_battery_temp; | |||
| 151 | the value of measure_battery_temp. | 178 | the value of measure_battery_temp. |
| 152 | }; | 179 | }; |
| 153 | 180 | ||
| 154 | 5. Other Considerations | 181 | 5. Notify Charger-Manager of charger events: cm_notify_event() |
| 182 | ========================================================= | ||
| 183 | If there is an charger event is required to notify | ||
| 184 | Charger Manager, a charger device driver that triggers the event can call | ||
| 185 | cm_notify_event(psy, type, msg) to notify the corresponding Charger Manager. | ||
| 186 | In the function, psy is the charger driver's power_supply pointer, which is | ||
| 187 | associated with Charger-Manager. The parameter "type" | ||
| 188 | is the same as irq's type (enum cm_event_types). The event message "msg" is | ||
| 189 | optional and is effective only if the event type is "UNDESCRIBED" or "OTHERS". | ||
| 190 | |||
| 191 | 6. Other Considerations | ||
| 155 | ======================= | 192 | ======================= |
| 156 | 193 | ||
| 157 | At the charger/battery-related events such as battery-pulled-out, | 194 | At the charger/battery-related events such as battery-pulled-out, |
diff --git a/Documentation/power/power_supply_class.txt b/Documentation/power/power_supply_class.txt index 9f16c5178b66..211831d4095f 100644 --- a/Documentation/power/power_supply_class.txt +++ b/Documentation/power/power_supply_class.txt | |||
| @@ -84,6 +84,8 @@ are already charged or discharging, 'n/a' can be displayed (or | |||
| 84 | HEALTH - represents health of the battery, values corresponds to | 84 | HEALTH - represents health of the battery, values corresponds to |
| 85 | POWER_SUPPLY_HEALTH_*, defined in battery.h. | 85 | POWER_SUPPLY_HEALTH_*, defined in battery.h. |
| 86 | 86 | ||
| 87 | VOLTAGE_OCV - open circuit voltage of the battery. | ||
| 88 | |||
| 87 | VOLTAGE_MAX_DESIGN, VOLTAGE_MIN_DESIGN - design values for maximal and | 89 | VOLTAGE_MAX_DESIGN, VOLTAGE_MIN_DESIGN - design values for maximal and |
| 88 | minimal power supply voltages. Maximal/minimal means values of voltages | 90 | minimal power supply voltages. Maximal/minimal means values of voltages |
| 89 | when battery considered "full"/"empty" at normal conditions. Yes, there is | 91 | when battery considered "full"/"empty" at normal conditions. Yes, there is |
diff --git a/MAINTAINERS b/MAINTAINERS index 8cad55b9db99..55f0fda602ec 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
| @@ -5337,7 +5337,7 @@ M: David Woodhouse <dwmw2@infradead.org> | |||
| 5337 | T: git git://git.infradead.org/battery-2.6.git | 5337 | T: git git://git.infradead.org/battery-2.6.git |
| 5338 | S: Maintained | 5338 | S: Maintained |
| 5339 | F: include/linux/power_supply.h | 5339 | F: include/linux/power_supply.h |
| 5340 | F: drivers/power/power_supply* | 5340 | F: drivers/power/ |
| 5341 | 5341 | ||
| 5342 | PNP SUPPORT | 5342 | PNP SUPPORT |
| 5343 | M: Adam Belay <abelay@mit.edu> | 5343 | M: Adam Belay <abelay@mit.edu> |
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index 99dc29f2f2f2..e3a3b4956f08 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | menuconfig POWER_SUPPLY | 1 | menuconfig POWER_SUPPLY |
| 2 | tristate "Power supply class support" | 2 | bool "Power supply class support" |
| 3 | help | 3 | help |
| 4 | Say Y here to enable power supply class support. This allows | 4 | Say Y here to enable power supply class support. This allows |
| 5 | power supply (batteries, AC, USB) monitoring by userspace | 5 | power supply (batteries, AC, USB) monitoring by userspace |
| @@ -77,7 +77,7 @@ config BATTERY_DS2780 | |||
| 77 | Say Y here to enable support for batteries with ds2780 chip. | 77 | Say Y here to enable support for batteries with ds2780 chip. |
| 78 | 78 | ||
| 79 | config BATTERY_DS2781 | 79 | config BATTERY_DS2781 |
| 80 | tristate "2781 battery driver" | 80 | tristate "DS2781 battery driver" |
| 81 | depends on HAS_IOMEM | 81 | depends on HAS_IOMEM |
| 82 | select W1 | 82 | select W1 |
| 83 | select W1_SLAVE_DS2781 | 83 | select W1_SLAVE_DS2781 |
| @@ -181,14 +181,15 @@ config BATTERY_MAX17040 | |||
| 181 | to operate with a single lithium cell | 181 | to operate with a single lithium cell |
| 182 | 182 | ||
| 183 | config BATTERY_MAX17042 | 183 | config BATTERY_MAX17042 |
| 184 | tristate "Maxim MAX17042/8997/8966 Fuel Gauge" | 184 | tristate "Maxim MAX17042/17047/17050/8997/8966 Fuel Gauge" |
| 185 | depends on I2C | 185 | depends on I2C |
| 186 | help | 186 | help |
| 187 | MAX17042 is fuel-gauge systems for lithium-ion (Li+) batteries | 187 | MAX17042 is fuel-gauge systems for lithium-ion (Li+) batteries |
| 188 | in handheld and portable equipment. The MAX17042 is configured | 188 | in handheld and portable equipment. The MAX17042 is configured |
| 189 | to operate with a single lithium cell. MAX8997 and MAX8966 are | 189 | to operate with a single lithium cell. MAX8997 and MAX8966 are |
| 190 | multi-function devices that include fuel gauages that are compatible | 190 | multi-function devices that include fuel gauages that are compatible |
