diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 22:26:04 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2012-12-13 22:26:04 -0500 |
| commit | 7313264b899bbf3988841296265a6e0e8a7b6521 (patch) | |
| tree | 59b5069980434945394152e94eeaef2b32cf4e72 /include | |
| parent | d8c532c40721f7507896d202b8cae3b3642d2b0d (diff) | |
| parent | 76d8a23b127020472207b281427d3e9f4f1227e4 (diff) | |
Merge tag 'for-v3.8-merged' of git://git.infradead.org/battery-2.6
Pull battery subsystem updates from Anton Vorontsov:
"Highlights:
- Two new drivers from Pali Rohár and N900 hackers: rx51_battery and
bq2415x_charger. The drivers are a part of a solution to replace
the proprietary Nokia BME stack
- Power supply core now registers devices with a thermal cooling
subsystem, so we can now automatically throttle charging. Thanks
to Ramakrishna Pallala!
- Device tree support for ab8500 and max8925_power drivers
- Random fixups and enhancements for a bunch of drivers."
* tag 'for-v3.8-merged' of git://git.infradead.org/battery-2.6: (22 commits)
max8925_power: Add support for device-tree initialization
ab8500: Add devicetree support for chargalg
ab8500: Add devicetree support for charger
ab8500: Add devicetree support for btemp
ab8500: Add devicetree support for fuelgauge
twl4030_charger: Change TWL4030_MODULE_* ids to TWL_MODULE_*
jz4740-battery: Use devm_request_and_ioremap
jz4740-battery: Use devm_kzalloc
bq27x00_battery: Fixup nominal available capacity reporting
bq2415x_charger: Fix style issues
bq2415x_charger: Add Kconfig/Makefile entries
power_supply: Add bq2415x charger driver
power_supply: Add new Nokia RX-51 (N900) power supply battery driver
max17042_battery: Fix missing verify_model_lock() return value check
ds2782_battery: Fix signedness bug in ds278x_read_reg16()
lp8788-charger: Fix ADC channel names
lp8788-charger: Fix wrong ADC conversion
lp8788-charger: Use consumer device name on setting IIO channels
power_supply: Register power supply for thermal cooling device
power_supply: Add support for CHARGE_CONTROL_* attributes
...
Diffstat (limited to 'include')
| -rw-r--r-- | include/linux/mfd/abx500.h | 34 | ||||
| -rw-r--r-- | include/linux/mfd/lp8788.h | 8 | ||||
| -rw-r--r-- | include/linux/power/bq2415x_charger.h | 95 | ||||
| -rw-r--r-- | include/linux/power_supply.h | 3 |
4 files changed, 110 insertions, 30 deletions
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 5d5298d56026..2138bd33021a 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
| @@ -267,39 +267,21 @@ struct abx500_bm_data { | |||
| 267 | int gnd_lift_resistance; | 267 | int gnd_lift_resistance; |
| 268 | const struct abx500_maxim_parameters *maxi; | 268 | const struct abx500_maxim_parameters *maxi; |
| 269 | const struct abx500_bm_capacity_levels *cap_levels; | 269 | const struct abx500_bm_capacity_levels *cap_levels; |
| 270 | const struct abx500_battery_type *bat_type; | 270 | struct abx500_battery_type *bat_type; |
| 271 | const struct abx500_bm_charger_parameters *chg_params; | 271 | const struct abx500_bm_charger_parameters *chg_params; |
| 272 | const struct abx500_fg_parameters *fg_params; | 272 | const struct abx500_fg_parameters *fg_params; |
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | struct abx500_chargalg_platform_data { | 275 | extern struct abx500_bm_data ab8500_bm_data; |
| 276 | char **supplied_to; | ||
| 277 | size_t num_supplicants; | ||
| 278 | }; | ||
| 279 | |||
| 280 | struct abx500_charger_platform_data { | ||
| 281 | char **supplied_to; | ||
| 282 | size_t num_supplicants; | ||
| 283 | bool autopower_cfg; | ||
| 284 | }; | ||
| 285 | 276 | ||
| 286 | struct abx500_btemp_platform_data { | 277 | enum { |
| 287 | char **supplied_to; | 278 | NTC_EXTERNAL = 0, |
| 288 | size_t num_supplicants; | 279 | NTC_INTERNAL, |
| 289 | }; | 280 | }; |
| 290 | 281 | ||
| 291 | struct abx500_fg_platform_data { | 282 | int bmdevs_of_probe(struct device *dev, |
| 292 | char **supplied_to; | 283 | struct device_node *np, |
| 293 | size_t num_supplicants; | 284 | struct abx500_bm_data **battery); |
| 294 | }; | ||
| 295 | |||
| 296 | struct abx500_bm_plat_data { | ||
| 297 | struct abx500_bm_data *battery; | ||
| 298 | struct abx500_charger_platform_data *charger; | ||
| 299 | struct abx500_btemp_platform_data *btemp; | ||
| 300 | struct abx500_fg_platform_data *fg; | ||
| 301 | struct abx500_chargalg_platform_data *chargalg; | ||
| 302 | }; | ||
| 303 | 285 | ||
| 304 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, | 286 | int abx500_set_register_interruptible(struct device *dev, u8 bank, u8 reg, |
| 305 | u8 value); | 287 | u8 value); |
diff --git a/include/linux/mfd/lp8788.h b/include/linux/mfd/lp8788.h index cec364bdccfa..2a32b16f79cb 100644 --- a/include/linux/mfd/lp8788.h +++ b/include/linux/mfd/lp8788.h | |||
| @@ -211,16 +211,16 @@ struct lp8788_chg_param { | |||
| 211 | 211 | ||
| 212 | /* | 212 | /* |
| 213 | * struct lp8788_charger_platform_data | 213 | * struct lp8788_charger_platform_data |
| 214 | * @vbatt_adc : adc selection id for battery voltage | 214 | * @adc_vbatt : adc channel name for battery voltage |
| 215 | * @batt_temp_adc : adc selection id for battery temperature | 215 | * @adc_batt_temp : adc channel name for battery temperature |
| 216 | * @max_vbatt_mv : used for calculating battery capacity | 216 | * @max_vbatt_mv : used for calculating battery capacity |
| 217 | * @chg_params : initial charging parameters | 217 | * @chg_params : initial charging parameters |
| 218 | * @num_chg_params : numbers of charging parameters | 218 | * @num_chg_params : numbers of charging parameters |
| 219 | * @charger_event : the charger event can be reported to the platform side | 219 | * @charger_event : the charger event can be reported to the platform side |
| 220 | */ | 220 | */ |
| 221 | struct lp8788_charger_platform_data { | 221 | struct lp8788_charger_platform_data { |
| 222 | enum lp8788_adc_id vbatt_adc; | 222 | const char *adc_vbatt; |
| 223 | enum lp8788_adc_id batt_temp_adc; | 223 | const char *adc_batt_temp; |
| 224 | unsigned int max_vbatt_mv; | 224 | unsigned int max_vbatt_mv; |
| 225 | struct lp8788_chg_param *chg_params; | 225 | struct lp8788_chg_param *chg_params; |
| 226 | int num_chg_params; | 226 | int num_chg_params; |
diff --git a/include/linux/power/bq2415x_charger.h b/include/linux/power/bq2415x_charger.h new file mode 100644 index 000000000000..97a1665eaeaf --- /dev/null +++ b/include/linux/power/bq2415x_charger.h | |||
| @@ -0,0 +1,95 @@ | |||
| 1 | /* | ||
| 2 | * bq2415x charger driver | ||
| 3 | * | ||
| 4 | * Copyright (C) 2011-2012 Pali Rohár <pali.rohar@gmail.com> | ||
| 5 | * | ||
| 6 | * This program is free software; you can redistribute it and/or modify | ||
| 7 | * it under the terms of the GNU General Public License as published by | ||
| 8 | * the Free Software Foundation; either version 2 of the License, or | ||
| 9 | * (at your option) any later version. | ||
| 10 | * | ||
| 11 | * This program is distributed in the hope that it will be useful, | ||
| 12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
| 13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
| 14 | * GNU General Public License for more details. | ||
| 15 | * | ||
| 16 | * You should have received a copy of the GNU General Public License along | ||
| 17 | * with this program; if not, write to the Free Software Foundation, Inc., | ||
| 18 | * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. | ||
| 19 | */ | ||
| 20 | |||
| 21 | #ifndef BQ2415X_CHARGER_H | ||
| 22 | #define BQ2415X_CHARGER_H | ||
| 23 | |||
| 24 | /* | ||
| 25 | * This is platform data for bq2415x chip. It contains default board | ||
| 26 | * voltages and currents which can be also later configured via sysfs. If | ||
| 27 | * value is -1 then default chip value (specified in datasheet) will be | ||
| 28 | * used. | ||
| 29 | * | ||
| 30 | * Value resistor_sense is needed for for configuring charge and | ||
| 31 | * termination current. It it is less or equal to zero, configuring charge | ||
| 32 | * and termination current will not be possible. | ||
| 33 | * | ||
| 34 | * Function set_mode_hook is needed for automode (setting correct current | ||
| 35 | * limit when charger is connected/disconnected or setting boost mode). | ||
| 36 | * When is NULL, automode function is disabled. When is not NULL, it must | ||
| 37 | * have this prototype: | ||
| 38 | * | ||
| 39 | * int (*set_mode_hook)( | ||
| 40 | * void (*hook)(enum bq2415x_mode mode, void *data), | ||
| 41 | * void *data) | ||
| 42 | * | ||
| 43 | * hook is hook function (see below) and data is pointer to driver private | ||
| 44 | * data | ||
| 45 | * | ||
| 46 | * bq2415x driver will call it as: | ||
| 47 | * | ||
| 48 | * platform_data->set_mode_hook(bq2415x_hook_function, bq2415x_device); | ||
| 49 | * | ||
| 50 | * Board/platform function set_mode_hook return non zero value when hook | ||
| 51 | * function was successful registered. Platform code should call that hook | ||
| 52 | * function (which get from pointer, with data) every time when charger | ||
| 53 | * was connected/disconnected or require to enable boost mode. bq2415x | ||
| 54 | * driver then will set correct current limit, enable/disable charger or | ||
| 55 | * boost mode. | ||
| 56 | * | ||
| 57 | * Hook function has this prototype: | ||
| 58 | * | ||
| 59 | * void hook(enum bq2415x_mode mode, void *data); | ||
| 60 | * | ||
| 61 | * mode is bq2415x mode (charger or boost) | ||
| 62 | * data is pointer to driver private data (which get from | ||
| 63 | * set_charger_type_hook) | ||
| 64 | * | ||
| 65 | * When bq driver is being unloaded, it call function: | ||
| 66 | * | ||
| 67 | * platform_data->set_mode_hook(NULL, NULL); | ||
| 68 | * | ||
| 69 | * (hook function and driver private data are NULL) | ||
| 70 | * | ||
| 71 | * After that board/platform code must not call driver hook function! It | ||
| 72 | * is possible that pointer to hook function will not be valid and calling | ||
| 73 | * will cause undefined result. | ||
| 74 | */ | ||
| 75 | |||
| 76 | /* Supported modes with maximal current limit */ | ||
| 77 | enum bq2415x_mode { | ||
| 78 | BQ2415X_MODE_NONE, /* unknown or no charger (100mA) */ | ||
| 79 | BQ2415X_MODE_HOST_CHARGER, /* usb host/hub charger (500mA) */ | ||
| 80 | BQ2415X_MODE_DEDICATED_CHARGER, /* dedicated charger (unlimited) */ | ||
| 81 | BQ2415X_MODE_BOOST, /* boost mode (charging disabled) */ | ||
| 82 | }; | ||
| 83 | |||
| 84 | struct bq2415x_platform_data { | ||
| 85 | int current_limit; /* mA */ | ||
| 86 | int weak_battery_voltage; /* mV */ | ||
| 87 | int battery_regulation_voltage; /* mV */ | ||
| 88 | int charge_current; /* mA */ | ||
| 89 | int termination_current; /* mA */ | ||
| 90 | int resistor_sense; /* m ohm */ | ||
| 91 | int (*set_mode_hook)(void (*hook)(enum bq2415x_mode mode, void *data), | ||
| 92 | void *data); | ||
| 93 | }; | ||
| 94 | |||
| 95 | #endif | ||
diff --git a/include/linux/power_supply.h b/include/linux/power_supply.h index e5ef45834c3c..1f0ab90aff00 100644 --- a/include/linux/power_supply.h +++ b/include/linux/power_supply.h | |||
| @@ -114,6 +114,8 @@ enum power_supply_property { | |||
| 114 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, | 114 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_CURRENT_MAX, |
| 115 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE, | 115 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE, |
| 116 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX, | 116 | POWER_SUPPLY_PROP_CONSTANT_CHARGE_VOLTAGE_MAX, |
| 117 | POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT, | ||
| 118 | POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX, | ||
| 117 | POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN, | 119 | POWER_SUPPLY_PROP_ENERGY_FULL_DESIGN, |
| 118 | POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN, | 120 | POWER_SUPPLY_PROP_ENERGY_EMPTY_DESIGN, |
| 119 | POWER_SUPPLY_PROP_ENERGY_FULL, | 121 | POWER_SUPPLY_PROP_ENERGY_FULL, |
| @@ -186,6 +188,7 @@ struct power_supply { | |||
| 186 | struct work_struct changed_work; | 188 | struct work_struct changed_work; |
| 187 | #ifdef CONFIG_THERMAL | 189 | #ifdef CONFIG_THERMAL |
| 188 | struct thermal_zone_device *tzd; | 190 | struct thermal_zone_device *tzd; |
| 191 | struct thermal_cooling_device *tcd; | ||
| 189 | #endif | 192 | #endif |
| 190 | 193 | ||
| 191 | #ifdef CONFIG_LEDS_TRIGGERS | 194 | #ifdef CONFIG_LEDS_TRIGGERS |
