diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 18:15:24 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2013-04-30 18:15:24 -0400 |
| commit | 151173e8ce9b95bbbbd7eedb9035cfaffbdb7cb2 (patch) | |
| tree | bca02f40bdd054fa2e30f4923e1513d40873c4d9 /include/linux | |
| parent | 30945669593df14692e933c557d00c4bb2727857 (diff) | |
| parent | 6b170807cd5cac8dc6353f47a88ccb14bbf76c4f (diff) | |
Merge tag 'for-v3.10' of git://git.infradead.org/battery-2.6
Pull battery updates from Anton Vorontsov:
"Highlights:
- OpenFirmware/DeviceTree support for the Power Supply core: the core
now automatically populates supplied_from hierarchy from the device
tree. With these patches chargers and batteries can now lookup
each other without the board files support shim. Rhyland Klein at
NVIDIA did the work
- New ST-Ericsson ABX500 hwmon driver. The driver is heavily using
the AB85xx core and depends on some recent changes to it, so that
is why the driver comes through the battery tree. It has an
appropriate ack from the hwmon maintainer (i.e. Guenter Roeck).
Martin Persson at ST-Ericsson and Hongbo Zhang at Linaro authored
the driver
- Final bits to sync AB85xx ST-Ericsson changes into mainline. The
changes touch mfd parts, but these were acked by the appropriate
MFD maintainer (ie Samuel Ortiz). Lee Jones at Linaro did most of
the work and lead the submission process.
Minor changes, but still worth mentioning:
- Battery temperature reporting fix for Nokia N900 phones
- Versatile Express poweroff driver moved into drivers/power/reset/
- Tree-wide: use devm_kzalloc() where appropriate
- Tree-wide: dev_pm_ops cleanups/fixes"
* tag 'for-v3.10' of git://git.infradead.org/battery-2.6: (112 commits)
pm2301-charger: Fix suspend/resume
charger-manager: Use kmemdup instead of kzalloc + memcpy
power_supply: Populate supplied_from hierarchy from the device tree
power_supply: Add core support for supplied_from
power_supply: Define Binding for power-supplies
rx51_battery: Fix reporting temperature
hwmon: Add ST-Ericsson ABX500 hwmon driver
ab8500_bmdata: Export abx500_res_to_temp tables for hwmon
ab8500_{bmdata,fg}: Add const attributes to some data arrays
ab8500_bmdata: Eliminate CamelCase warning of some variables
ab8500_btemp: Make ab8500_btemp_get* interfaces public
goldfish_battery: Use resource_size()
lp8788-charger: Use PAGE_SIZE for the sysfs read operation
max8925_power: Use devm_kzalloc()
da9030_battery: Use devm_kzalloc()
da9052-battery: Use devm_kzalloc()
ds2760_battery: Use devm_kzalloc()
ds2780_battery: Use devm_kzalloc()
gpio-charger: Use devm_kzalloc()
isp1704_charger: Use devm_kzalloc()
...
Diffstat (limited to 'include/linux')
| -rw-r--r-- | include/linux/mfd/abx500.h | 27 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ab8500-bm.h | 61 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ab8500-gpadc.h | 74 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ab8500-sysctrl.h | 6 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ab8500.h | 3 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ux500_chargalg.h | 7 | ||||
| -rw-r--r-- | include/linux/mfd/tps65090.h | 5 | ||||
| -rw-r--r-- | include/linux/pm2301_charger.h | 2 | ||||
| -rw-r--r-- | include/linux/power/ab8500.h | 16 | ||||
| -rw-r--r-- | include/linux/power_supply.h | 6 | ||||
| -rw-r--r-- | include/linux/vexpress.h | 3 |
11 files changed, 180 insertions, 30 deletions
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 9ead60bc66b7..3301b2031c8d 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
| @@ -89,6 +89,11 @@ struct abx500_fg; | |||
| 89 | * points. | 89 | * points. |
| 90 | * @maint_thres This is the threshold where we stop reporting | 90 | * @maint_thres This is the threshold where we stop reporting |
| 91 | * battery full while in maintenance, in per cent | 91 | * battery full while in maintenance, in per cent |
| 92 | * @pcut_enable: Enable power cut feature in ab8505 | ||
| 93 | * @pcut_max_time: Max time threshold | ||
| 94 | * @pcut_flag_time: Flagtime threshold | ||
| 95 | * @pcut_max_restart: Max number of restarts | ||
| 96 | * @pcut_debounce_time: Sets battery debounce time | ||
| 92 | */ | 97 | */ |
| 93 | struct abx500_fg_parameters { | 98 | struct abx500_fg_parameters { |
| 94 | int recovery_sleep_timer; | 99 | int recovery_sleep_timer; |
| @@ -106,6 +111,11 @@ struct abx500_fg_parameters { | |||
| 106 | int battok_raising_th_sel1; | 111 | int battok_raising_th_sel1; |
| 107 | int user_cap_limit; | 112 | int user_cap_limit; |
| 108 | int maint_thres; | 113 | int maint_thres; |
| 114 | bool pcut_enable; | ||
| 115 | u8 pcut_max_time; | ||
| 116 | u8 pcut_flag_time; | ||
| 117 | u8 pcut_max_restart; | ||
| 118 | u8 pcut_debounce_time; | ||
| 109 | }; | 119 | }; |
| 110 | 120 | ||
| 111 | /** | 121 | /** |
| @@ -173,11 +183,11 @@ struct abx500_battery_type { | |||
| 173 | int low_high_vol_lvl; | 183 | int low_high_vol_lvl; |
| 174 | int battery_resistance; | 184 | int battery_resistance; |
| 175 | int n_temp_tbl_elements; | 185 | int n_temp_tbl_elements; |
| 176 | struct abx500_res_to_temp *r_to_t_tbl; | 186 | const struct abx500_res_to_temp *r_to_t_tbl; |
| 177 | int n_v_cap_tbl_elements; | 187 | int n_v_cap_tbl_elements; |
| 178 | struct abx500_v_to_cap *v_to_cap_tbl; | 188 | const struct abx500_v_to_cap *v_to_cap_tbl; |
| 179 | int n_batres_tbl_elements; | 189 | int n_batres_tbl_elements; |
| 180 | struct batres_vs_temp *batres_tbl; | 190 | const struct batres_vs_temp *batres_tbl; |
| 181 | }; | 191 | }; |
| 182 | 192 | ||
| 183 | /** | 193 | /** |
| @@ -236,7 +246,11 @@ struct abx500_bm_charger_parameters { | |||
| 236 | * @interval_not_charging charge alg cycle period time when not charging (sec) | 246 | * @interval_not_charging charge alg cycle period time when not charging (sec) |
| 237 | * @temp_hysteresis temperature hysteresis | 247 | * @temp_hysteresis temperature hysteresis |
| 238 | * @gnd_lift_resistance Battery ground to phone ground resistance (mOhm) | 248 | * @gnd_lift_resistance Battery ground to phone ground resistance (mOhm) |
| 239 | * @maxi: maximization parameters | 249 | * @n_chg_out_curr number of elements in array chg_output_curr |
| 250 | * @n_chg_in_curr number of elements in array chg_input_curr | ||
| 251 | * @chg_output_curr charger output current level map | ||
| 252 | * @chg_input_curr charger input current level map | ||
| 253 | * @maxi maximization parameters | ||
| 240 | * @cap_levels capacity in percent for the different capacity levels | 254 | * @cap_levels capacity in percent for the different capacity levels |
| 241 | * @bat_type table of supported battery types | 255 | * @bat_type table of supported battery types |
| 242 | * @chg_params charger parameters | 256 | * @chg_params charger parameters |
| @@ -257,6 +271,7 @@ struct abx500_bm_data { | |||
| 257 | bool autopower_cfg; | 271 | bool autopower_cfg; |
| 258 | bool ac_enabled; | 272 | bool ac_enabled; |
| 259 | bool usb_enabled; | 273 | bool usb_enabled; |
| 274 | bool usb_power_path; | ||
| 260 | bool no_maintenance; | 275 | bool no_maintenance; |
| 261 | bool capacity_scaling; | 276 | bool capacity_scaling; |
| 262 | bool chg_unknown_bat; | 277 | bool chg_unknown_bat; |
| @@ -270,6 +285,10 @@ struct abx500_bm_data { | |||
| 270 | int interval_not_charging; | 285 | int interval_not_charging; |
| 271 | int temp_hysteresis; | 286 | int temp_hysteresis; |
| 272 | int gnd_lift_resistance; | 287 | int gnd_lift_resistance; |
| 288 | int n_chg_out_curr; | ||
| 289 | int n_chg_in_curr; | ||
| 290 | int *chg_output_curr; | ||
| 291 | int *chg_input_curr; | ||
| 273 | const struct abx500_maxim_parameters *maxi; | 292 | const struct abx500_maxim_parameters *maxi; |
| 274 | const struct abx500_bm_capacity_levels *cap_levels; | 293 | const struct abx500_bm_capacity_levels *cap_levels; |
| 275 | struct abx500_battery_type *bat_type; | 294 | struct abx500_battery_type *bat_type; |
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h index 8d35bfe164c8..cc892a8d8d6e 100644 --- a/include/linux/mfd/abx500/ab8500-bm.h +++ b/include/linux/mfd/abx500/ab8500-bm.h | |||
| @@ -23,6 +23,7 @@ | |||
| 23 | * Bank : 0x5 | 23 | * Bank : 0x5 |
| 24 | */ | 24 | */ |
| 25 | #define AB8500_USB_LINE_STAT_REG 0x80 | 25 | #define AB8500_USB_LINE_STAT_REG 0x80 |
| 26 | #define AB8500_USB_LINE_CTRL2_REG 0x82 | ||
| 26 | #define AB8500_USB_LINK1_STAT_REG 0x94 | 27 | #define AB8500_USB_LINK1_STAT_REG 0x94 |
| 27 | 28 | ||
| 28 | /* | 29 | /* |
| @@ -33,7 +34,7 @@ | |||
| 33 | #define AB8500_CH_STATUS2_REG 0x01 | 34 | #define AB8500_CH_STATUS2_REG 0x01 |
| 34 | #define AB8500_CH_USBCH_STAT1_REG 0x02 | 35 | #define AB8500_CH_USBCH_STAT1_REG 0x02 |
| 35 | #define AB8500_CH_USBCH_STAT2_REG 0x03 | 36 | #define AB8500_CH_USBCH_STAT2_REG 0x03 |
| 36 | #define AB8500_CH_FSM_STAT_REG 0x04 | 37 | #define AB8540_CH_USBCH_STAT3_REG 0x04 |
| 37 | #define AB8500_CH_STAT_REG 0x05 | 38 | #define AB8500_CH_STAT_REG 0x05 |
| 38 | 39 | ||
| 39 | /* | 40 | /* |
| @@ -69,6 +70,8 @@ | |||
| 69 | #define AB8500_USBCH_CTRL1_REG 0xC0 | 70 | #define AB8500_USBCH_CTRL1_REG 0xC0 |
| 70 | #define AB8500_USBCH_CTRL2_REG 0xC1 | 71 | #define AB8500_USBCH_CTRL2_REG 0xC1 |
| 71 | #define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2 | 72 | #define AB8500_USBCH_IPT_CRNTLVL_REG 0xC2 |
| 73 | #define AB8540_USB_PP_MODE_REG 0xC5 | ||
| 74 | #define AB8540_USB_PP_CHR_REG 0xC6 | ||
| 72 | 75 | ||
| 73 | /* | 76 | /* |
| 74 | * Gas Gauge register offsets | 77 | * Gas Gauge register offsets |
| @@ -105,6 +108,7 @@ | |||
| 105 | #define AB8500_RTC_BACKUP_CHG_REG 0x0C | 108 | #define AB8500_RTC_BACKUP_CHG_REG 0x0C |
| 106 | #define AB8500_RTC_CC_CONF_REG 0x01 | 109 | #define AB8500_RTC_CC_CONF_REG 0x01 |
| 107 | #define AB8500_RTC_CTRL_REG 0x0B | 110 | #define AB8500_RTC_CTRL_REG 0x0B |
| 111 | #define AB8500_RTC_CTRL1_REG 0x11 | ||
| 108 | 112 | ||
| 109 | /* | 113 | /* |
| 110 | * OTP register offsets | 114 | * OTP register offsets |
| @@ -154,6 +158,7 @@ | |||
| 154 | #define CH_OP_CUR_LVL_1P4 0x0D | 158 | #define CH_OP_CUR_LVL_1P4 0x0D |
| 155 | #define CH_OP_CUR_LVL_1P5 0x0E | 159 | #define CH_OP_CUR_LVL_1P5 0x0E |
| 156 | #define CH_OP_CUR_LVL_1P6 0x0F | 160 | #define CH_OP_CUR_LVL_1P6 0x0F |
| 161 | #define CH_OP_CUR_LVL_2P 0x3F | ||
| 157 | 162 | ||
| 158 | /* BTEMP High thermal limits */ | 163 | /* BTEMP High thermal limits */ |
| 159 | #define BTEMP_HIGH_TH_57_0 0x00 | 164 | #define BTEMP_HIGH_TH_57_0 0x00 |
| @@ -179,10 +184,25 @@ | |||
| 179 | #define BUP_ICH_SEL_300UA 0x08 | 184 | #define BUP_ICH_SEL_300UA 0x08 |
| 180 | #define BUP_ICH_SEL_700UA 0x0C | 185 | #define BUP_ICH_SEL_700UA 0x0C |
| 181 | 186 | ||
| 182 | #define BUP_VCH_SEL_2P5V 0x00 | 187 | enum bup_vch_sel { |
| 183 | #define BUP_VCH_SEL_2P6V 0x01 | 188 | BUP_VCH_SEL_2P5V, |
| 184 | #define BUP_VCH_SEL_2P8V 0x02 | 189 | BUP_VCH_SEL_2P6V, |
| 185 | #define BUP_VCH_SEL_3P1V 0x03 | 190 | BUP_VCH_SEL_2P8V, |
| 191 | BUP_VCH_SEL_3P1V, | ||
| 192 | /* | ||
| 193 | * Note that the following 5 values 2.7v, 2.9v, 3.0v, 3.2v, 3.3v | ||
| 194 | * are only available on ab8540. You can't choose these 5 | ||
| 195 | * voltage on ab8500/ab8505/ab9540. | ||
| 196 | */ | ||
| 197 | BUP_VCH_SEL_2P7V, | ||
| 198 | BUP_VCH_SEL_2P9V, | ||
| 199 | BUP_VCH_SEL_3P0V, | ||
| 200 | BUP_VCH_SEL_3P2V, | ||
| 201 | BUP_VCH_SEL_3P3V, | ||
| 202 | }; | ||
| 203 | |||
| 204 | #define BUP_VCH_RANGE 0x02 | ||
| 205 | #define VBUP33_VRTCN 0x01 | ||
| 186 | 206 | ||
| 187 | /* Battery OVV constants */ | 207 | /* Battery OVV constants */ |
| 188 | #define BATT_OVV_ENA 0x02 | 208 | #define BATT_OVV_ENA 0x02 |
| @@ -228,6 +248,8 @@ | |||
| 228 | #define BAT_CTRL_20U_ENA 0x02 | 248 | #define BAT_CTRL_20U_ENA 0x02 |
| 229 | #define BAT_CTRL_18U_ENA 0x01 | 249 | #define BAT_CTRL_18U_ENA 0x01 |
