Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Merge tag 'for-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply

Pull power supply and reset updates from Sebastian Reichel:
- bq27xxx: Add BQ27426 support
- ab8500: Drop AB8540/9540 support
- Introduced new usb_type property
- Properly document the power-supply ABI
- misc. cleanups and fixes

* tag 'for-v4.18' of git://git.kernel.org/pub/scm/linux/kernel/git/sre/linux-power-supply:
MAINTAINERS: add entry for LEGO MINDSTORMS EV3
power: supply: ab8500_charger: fix spelling mistake: "faile" -> "failed"
power: supply: axp288_fuel_gauge: Remove polling from the driver
power: supply: axp288_fuelguage: Do not bind when the fg function is not used
power: supply: axp288_charger: Do not bind when the charge function is not used
power: supply: axp288_charger: Support 3500 and 4000 mA input current limit
power: supply: s3c-adc-battery: fix driver data initialization
power: supply: charger-manager: Verify polling interval only when polling requested
power: supply: sysfs: Use enum to specify property
power: supply: ab8500: Drop AB8540/9540 support
power: supply: ab8500_fg: fix spelling mistake: "Disharge" -> "Discharge"
power: supply: simplify getting .drvdata
power: supply: bq27xxx: Add support for BQ27426
gpio-poweroff: Use gpiod_set_value_cansleep

+146 -405
+1
Documentation/devicetree/bindings/power/supply/bq27xxx.txt
··· 25 25 * "ti,bq27545" - BQ27545 26 26 * "ti,bq27421" - BQ27421 27 27 * "ti,bq27425" - BQ27425 28 + * "ti,bq27426" - BQ27426 28 29 * "ti,bq27441" - BQ27441 29 30 * "ti,bq27621" - BQ27621 30 31 - reg: integer, I2C address of the fuel gauge.
+7
MAINTAINERS
··· 8052 8052 F: Documentation/misc-devices/eeprom 8053 8053 F: drivers/misc/eeprom/eeprom.c 8054 8054 8055 + LEGO MINDSTORMS EV3 8056 + R: David Lechner <david@lechnology.com> 8057 + S: Maintained 8058 + F: arch/arm/boot/dts/da850-lego-ev3.dts 8059 + F: Documentation/devicetree/bindings/power/supply/lego_ev3_battery.txt 8060 + F: drivers/power/supply/lego_ev3_battery.c 8061 + 8055 8062 LEGO USB Tower driver 8056 8063 M: Juergen Stuber <starblue@users.sourceforge.net> 8057 8064 L: legousb-devel@lists.sourceforge.net
+2 -2
drivers/power/reset/gpio-poweroff.c
··· 35 35 gpiod_direction_output(reset_gpio, 1); 36 36 mdelay(100); 37 37 /* drive inactive, also active->inactive edge */ 38 - gpiod_set_value(reset_gpio, 0); 38 + gpiod_set_value_cansleep(reset_gpio, 0); 39 39 mdelay(100); 40 40 41 41 /* drive it active, also inactive->active edge */ 42 - gpiod_set_value(reset_gpio, 1); 42 + gpiod_set_value_cansleep(reset_gpio, 1); 43 43 44 44 /* give it some time */ 45 45 mdelay(timeout);
-63
drivers/power/supply/ab8500_bmdata.c
··· 430 430 .charger_curr_step = 100, 431 431 }; 432 432 433 - static const struct abx500_maxim_parameters abx540_maxi_params = { 434 - .ena_maxi = true, 435 - .chg_curr = 3000, 436 - .wait_cycles = 10, 437 - .charger_curr_step = 200, 438 - }; 439 - 440 433 static const struct abx500_bm_charger_parameters chg = { 441 434 .usb_volt_max = 5500, 442 435 .usb_curr_max = 1500, ··· 446 453 900, 1000, 1100, 1200, 1300, 1400, 1500, 1500, 447 454 }; 448 455 449 - static int ab8540_charge_output_curr_map[] = { 450 - 0, 0, 0, 75, 100, 125, 150, 175, 451 - 200, 225, 250, 275, 300, 325, 350, 375, 452 - 400, 425, 450, 475, 500, 525, 550, 575, 453 - 600, 625, 650, 675, 700, 725, 750, 775, 454 - 800, 825, 850, 875, 900, 925, 950, 975, 455 - 1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175, 456 - 1200, 1225, 1250, 1275, 1300, 1325, 1350, 1375, 457 - 1400, 1425, 1450, 1500, 1600, 1700, 1900, 2000, 458 - }; 459 - 460 456 /* 461 457 * This array maps the raw hex value to charger input current used by the 462 458 * AB8500 values ··· 453 471 static int ab8500_charge_input_curr_map[] = { 454 472 50, 98, 193, 290, 380, 450, 500, 600, 455 473 700, 800, 900, 1000, 1100, 1300, 1400, 1500, 456 - }; 457 - 458 - static int ab8540_charge_input_curr_map[] = { 459 - 25, 50, 75, 100, 125, 150, 175, 200, 460 - 225, 250, 275, 300, 325, 350, 375, 400, 461 - 425, 450, 475, 500, 525, 550, 575, 600, 462 - 625, 650, 675, 700, 725, 750, 775, 800, 463 - 825, 850, 875, 900, 925, 950, 975, 1000, 464 - 1025, 1050, 1075, 1100, 1125, 1150, 1175, 1200, 465 - 1225, 1250, 1275, 1300, 1325, 1350, 1375, 1400, 466 - 1425, 1450, 1475, 1500, 1500, 1500, 1500, 1500, 467 474 }; 468 475 469 476 struct abx500_bm_data ab8500_bm_data = { ··· 487 516 .fg_params = &fg, 488 517 .chg_input_curr = ab8500_charge_input_curr_map, 489 518 .n_chg_in_curr = ARRAY_SIZE(ab8500_charge_input_curr_map), 490 - }; 491 - 492 - struct abx500_bm_data ab8540_bm_data = { 493 - .temp_under = 3, 494 - .temp_low = 8, 495 - .temp_high = 43, 496 - .temp_over = 48, 497 - .main_safety_tmr_h = 4, 498 - .temp_interval_chg = 20, 499 - .temp_interval_nochg = 120, 500 - .usb_safety_tmr_h = 4, 501 - .bkup_bat_v = BUP_VCH_SEL_2P6V, 502 - .bkup_bat_i = BUP_ICH_SEL_150UA, 503 - .no_maintenance = false, 504 - .capacity_scaling = false, 505 - .adc_therm = ABx500_ADC_THERM_BATCTRL, 506 - .chg_unknown_bat = false, 507 - .enable_overshoot = false, 508 - .fg_res = 100, 509 - .cap_levels = &cap_levels, 510 - .bat_type = bat_type_thermistor, 511 - .n_btypes = ARRAY_SIZE(bat_type_thermistor), 512 - .batt_id = 0, 513 - .interval_charging = 5, 514 - .interval_not_charging = 120, 515 - .temp_hysteresis = 3, 516 - .gnd_lift_resistance = 0, 517 - .maxi = &abx540_maxi_params, 518 - .chg_params = &chg, 519 - .fg_params = &fg, 520 - .chg_output_curr = ab8540_charge_output_curr_map, 521 - .n_chg_out_curr = ARRAY_SIZE(ab8540_charge_output_curr_map), 522 - .chg_input_curr = ab8540_charge_input_curr_map, 523 - .n_chg_in_curr = ARRAY_SIZE(ab8540_charge_input_curr_map), 524 519 }; 525 520 526 521 int ab8500_bm_of_probe(struct device *dev,
+18 -75
drivers/power/supply/ab8500_btemp.c
··· 214 214 /* Only do this for batteries with internal NTC */ 215 215 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && enable) { 216 216 217 - if (is_ab8540(di->parent)) { 218 - if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_60UA) 219 - curr = BAT_CTRL_60U_ENA; 220 - else 221 - curr = BAT_CTRL_120U_ENA; 222 - } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) { 223 - if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_16UA) 224 - curr = BAT_CTRL_16U_ENA; 225 - else 226 - curr = BAT_CTRL_18U_ENA; 227 - } else { 228 - if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA) 229 - curr = BAT_CTRL_7U_ENA; 230 - else 231 - curr = BAT_CTRL_20U_ENA; 232 - } 217 + if (di->curr_source == BTEMP_BATCTRL_CURR_SRC_7UA) 218 + curr = BAT_CTRL_7U_ENA; 219 + else 220 + curr = BAT_CTRL_20U_ENA; 233 221 234 222 dev_dbg(di->dev, "Set BATCTRL %duA\n", di->curr_source); 235 223 ··· 248 260 } else if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && !enable) { 249 261 dev_dbg(di->dev, "Disable BATCTRL curr source\n"); 250 262 251 - if (is_ab8540(di->parent)) { 252 - /* Write 0 to the curr bits */ 253 - ret = abx500_mask_and_set_register_interruptible( 254 - di->dev, 255 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 256 - BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA, 257 - ~(BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA)); 258 - } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) { 259 - /* Write 0 to the curr bits */ 260 - ret = abx500_mask_and_set_register_interruptible( 261 - di->dev, 262 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 263 - BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA, 264 - ~(BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA)); 265 - } else { 266 - /* Write 0 to the curr bits */ 267 - ret = abx500_mask_and_set_register_interruptible( 268 - di->dev, 269 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 270 - BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA, 271 - ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA)); 272 - } 263 + /* Write 0 to the curr bits */ 264 + ret = abx500_mask_and_set_register_interruptible( 265 + di->dev, 266 + AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 267 + BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA, 268 + ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA)); 273 269 274 270 if (ret) { 275 271 dev_err(di->dev, "%s failed disabling current source\n", ··· 296 324 * if we got an error above 297 325 */ 298 326 disable_curr_source: 299 - if (is_ab8540(di->parent)) { 300 - /* Write 0 to the curr bits */ 301 - ret = abx500_mask_and_set_register_interruptible(di->dev, 302 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 303 - BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA, 304 - ~(BAT_CTRL_60U_ENA | BAT_CTRL_120U_ENA)); 305 - } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) { 306 - /* Write 0 to the curr bits */ 307 - ret = abx500_mask_and_set_register_interruptible(di->dev, 308 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 309 - BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA, 310 - ~(BAT_CTRL_16U_ENA | BAT_CTRL_18U_ENA)); 311 - } else { 312 - /* Write 0 to the curr bits */ 313 - ret = abx500_mask_and_set_register_interruptible(di->dev, 314 - AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 315 - BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA, 316 - ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA)); 317 - } 327 + /* Write 0 to the curr bits */ 328 + ret = abx500_mask_and_set_register_interruptible(di->dev, 329 + AB8500_CHARGER, AB8500_BAT_CTRL_CURRENT_SOURCE, 330 + BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA, 331 + ~(BAT_CTRL_7U_ENA | BAT_CTRL_20U_ENA)); 318 332 319 333 if (ret) { 320 334 dev_err(di->dev, "%s failed disabling current source\n", ··· 514 556 { 515 557 int res; 516 558 u8 i; 517 - if (is_ab8540(di->parent)) 518 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_60UA; 519 - else if (is_ab9540(di->parent) || is_ab8505(di->parent)) 520 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_16UA; 521 - else 522 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA; 523 559 560 + di->curr_source = BTEMP_BATCTRL_CURR_SRC_7UA; 524 561 di->bm->batt_id = BATTERY_UNKNOWN; 525 562 526 563 res = ab8500_btemp_get_batctrl_res(di); ··· 553 600 */ 554 601 if (di->bm->adc_therm == ABx500_ADC_THERM_BATCTRL && 555 602 di->bm->batt_id == 1) { 556 - if (is_ab8540(di->parent)) { 557 - dev_dbg(di->dev, 558 - "Set BATCTRL current source to 60uA\n"); 559 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_60UA; 560 - } else if (is_ab9540(di->parent) || is_ab8505(di->parent)) { 561 - dev_dbg(di->dev, 562 - "Set BATCTRL current source to 16uA\n"); 563 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_16UA; 564 - } else { 565 - dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n"); 566 - di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA; 567 - } 603 + dev_dbg(di->dev, "Set BATCTRL current source to 20uA\n"); 604 + di->curr_source = BTEMP_BATCTRL_CURR_SRC_20UA; 568 605 } 569 606 570 607 return di->bm->batt_id;
+10 -123
drivers/power/supply/ab8500_charger.c
··· 58 58 59 59 #define MAIN_CH_INPUT_CURR_SHIFT 4 60 60 #define VBUS_IN_CURR_LIM_SHIFT 4 61 - #define AB8540_VBUS_IN_CURR_LIM_SHIFT 2 62 61 #define AUTO_VBUS_IN_CURR_LIM_SHIFT 4 63 - #define AB8540_AUTO_VBUS_IN_CURR_MASK 0x3F 64 62 #define VBUS_IN_CURR_LIM_RETRY_SET_TIME 30 /* seconds */ 65 63 66 64 #define LED_INDICATOR_PWM_ENA 0x01 ··· 1136 1138 no_stepping = true; 1137 1139 break; 1138 1140 case AB8500_USBCH_IPT_CRNTLVL_REG: 1139 - if (is_ab8540(di->parent)) 1140 - shift_value = AB8540_VBUS_IN_CURR_LIM_SHIFT; 1141 - else 1142 - shift_value = VBUS_IN_CURR_LIM_SHIFT; 1141 + shift_value = VBUS_IN_CURR_LIM_SHIFT; 1143 1142 prev_curr_index = (reg_value >> shift_value); 1144 1143 curr_index = ab8500_vbus_in_curr_to_regval(di, ich); 1145 1144 step_udelay = STEP_UDELAY * 100; ··· 1852 1857 /* Reset the main and usb drop input current measurement counter */ 1853 1858 ret = abx500_set_register_interruptible(di->dev, AB8500_CHARGER, 1854 1859 AB8500_CHARGER_CTRL, DROP_COUNT_RESET); 1855 - if (ret) { 1856 - dev_err(di->dev, "%s write failed\n", __func__); 1857 - return ret; 1858 - } 1859 - 1860 - return ret; 1861 - } 1862 - 1863 - /** 1864 - * ab8540_charger_power_path_enable() - enable usb power path mode 1865 - * @charger: pointer to the ux500_charger structure 1866 - * @enable: enable/disable flag 1867 - * 1868 - * Enable or disable the power path for usb mode 1869 - * Returns error code in case of failure else 0(on success) 1870 - */ 1871 - static int ab8540_charger_power_path_enable(struct ux500_charger *charger, 1872 - bool enable) 1873 - { 1874 - int ret; 1875 - struct ab8500_charger *di; 1876 - 1877 - if (charger->psy->desc->type == POWER_SUPPLY_TYPE_USB) 1878 - di = to_ab8500_charger_usb_device_info(charger); 1879 - else 1880 - return -ENXIO; 1881 - 1882 - ret = abx500_mask_and_set_register_interruptible(di->dev, 1883 - AB8500_CHARGER, AB8540_USB_PP_MODE_REG, 1884 - BUS_POWER_PATH_MODE_ENA, enable); 1885 - if (ret) { 1886 - dev_err(di->dev, "%s write failed\n", __func__); 1887 - return ret; 1888 - } 1889 - 1890 - return ret; 1891 - } 1892 - 1893 - 1894 - /** 1895 - * ab8540_charger_usb_pre_chg_enable() - enable usb pre change 1896 - * @charger: pointer to the ux500_charger structure 1897 - * @enable: enable/disable flag 1898 - * 1899 - * Enable or disable the pre-chage for usb mode 1900 - * Returns error code in case of failure else 0(on success) 1901 - */ 1902 - static int ab8540_charger_usb_pre_chg_enable(struct ux500_charger *charger, 1903 - bool enable) 1904 - { 1905 - int ret; 1906 - struct ab8500_charger *di; 1907 - 1908 - if (charger->psy->desc->type == POWER_SUPPLY_TYPE_USB) 1909 - di = to_ab8500_charger_usb_device_info(charger); 1910 - else 1911 - return -ENXIO; 1912 - 1913 - ret = abx500_mask_and_set_register_interruptible(di->dev, 1914 - AB8500_CHARGER, AB8540_USB_PP_CHR_REG, 1915 - BUS_POWER_PATH_PRECHG_ENA, enable); 1916 1860 if (ret) { 1917 1861 dev_err(di->dev, "%s write failed\n", __func__); 1918 1862 return ret; ··· 2638 2704 abx500_set_register_interruptible(di->dev, 2639 2705 AB8500_CHARGER, AB8500_CHARGER_CTRL, 0x01); 2640 2706 2641 - if (is_ab8540(di->parent)) 2642 - ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER, 2643 - AB8540_CH_USBCH_STAT3_REG, &reg_value); 2644 - else 2645 - ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER, 2646 - AB8500_CH_USBCH_STAT2_REG, &reg_value); 2707 + ret = abx500_get_register_interruptible(di->dev, AB8500_CHARGER, 2708 + AB8500_CH_USBCH_STAT2_REG, &reg_value); 2647 2709 if (ret < 0) { 2648 2710 dev_err(di->dev, "%s read failed\n", __func__); 2649 2711 return; 2650 2712 } 2651 2713 2652 - if (is_ab8540(di->parent)) 2653 - curr = di->bm->chg_input_curr[ 2654 - reg_value & AB8540_AUTO_VBUS_IN_CURR_MASK]; 2655 - else 2656 - curr = di->bm->chg_input_curr[ 2657 - reg_value >> AUTO_VBUS_IN_CURR_LIM_SHIFT]; 2714 + curr = di->bm->chg_input_curr[ 2715 + reg_value >> AUTO_VBUS_IN_CURR_LIM_SHIFT]; 2658 2716 2659 2717 if (di->max_usb_in_curr.calculated_max != curr) { 2660 2718 /* USB source is collapsing */ ··· 3023 3097 goto out; 3024 3098 } 3025 3099 3026 - if (is_ab8540(di->parent)) 3027 - ret = abx500_set_register_interruptible(di->dev, 3028 - AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG, 3029 - CH_OP_CUR_LVL_2P); 3030 - else 3031 - ret = abx500_set_register_interruptible(di->dev, 3032 - AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG, 3033 - CH_OP_CUR_LVL_1P6); 3100 + ret = abx500_set_register_interruptible(di->dev, 3101 + AB8500_CHARGER, AB8500_CH_OPT_CRNTLVL_MAX_REG, 3102 + CH_OP_CUR_LVL_1P6); 3034 3103 if (ret) { 3035 3104 dev_err(di->dev, 3036 3105 "failed to set CH_OPT_CRNTLVL_MAX_REG\n"); ··· 3033 3112 } 3034 3113 } 3035 3114 3036 - if (is_ab9540_2p0(di->parent) || is_ab9540_3p0(di->parent) 3037 - || is_ab8505_2p0(di->parent) || is_ab8540(di->parent)) 3115 + if (is_ab8505_2p0(di->parent)) 3038 3116 ret = abx500_mask_and_set_register_interruptible(di->dev, 3039 3117 AB8500_CHARGER, 3040 3118 AB8500_USBCH_CTRL2_REG, ··· 3066 3146 AB8500_SYS_CTRL2_BLOCK, 3067 3147 AB8500_MAIN_WDOG_CTRL_REG, MAIN_WDOG_ENA); 3068 3148 if (ret) { 3069 - dev_err(di->dev, "faile to enable main watchdog\n"); 3149 + dev_err(di->dev, "failed to enable main watchdog\n"); 3070 3150 goto out; 3071 3151 } 3072 3152 ··· 3125 3205 dev_err(di->dev, "failed to setup backup battery charging\n"); 3126 3206 goto out; 3127 3207 } 3128 - if (is_ab8540(di->parent)) { 3129 - ret = abx500_set_register_interruptible(di->dev, 3130 - AB8500_RTC, 3131 - AB8500_RTC_CTRL1_REG, 3132 - bup_vch_range | vbup33_vrtcn); 3133 - if (ret) { 3134 - dev_err(di->dev, 3135 - "failed to setup backup battery charging\n"); 3136 - goto out; 3137 - } 3138 - } 3139 3208 3140 3209 /* Enable backup battery charging */ 3141 3210 ret = abx500_mask_and_set_register_interruptible(di->dev, ··· 3133 3224 if (ret < 0) { 3134 3225 dev_err(di->dev, "%s mask and set failed\n", __func__); 3135 3226 goto out; 3136 - } 3137 - 3138 - if (is_ab8540(di->parent)) { 3139 - ret = abx500_mask_and_set_register_interruptible(di->dev, 3140 - AB8500_CHARGER, AB8540_USB_PP_MODE_REG, 3141 - BUS_VSYS_VOL_SELECT_MASK, BUS_VSYS_VOL_SELECT_3P6V); 3142 - if (ret) { 3143 - dev_err(di->dev, 3144 - "failed to setup usb power path vsys voltage\n"); 3145 - goto out; 3146 - } 3147 - ret = abx500_mask_and_set_register_interruptible(di->dev, 3148 - AB8500_CHARGER, AB8540_USB_PP_CHR_REG, 3149 - BUS_PP_PRECHG_CURRENT_MASK, 0); 3150 - if (ret) { 3151 - dev_err(di->dev, 3152 - "failed to setup usb power path precharge current\n"); 3153 - goto out; 3154 - } 3155 3227 } 3156 3228 3157 3229 out: ··· 3419 3529 di->usb_chg.ops.check_enable = &ab8500_charger_usb_check_enable; 3420 3530 di->usb_chg.ops.kick_wd = &ab8500_charger_watchdog_kick; 3421 3531 di->usb_chg.ops.update_curr = &ab8500_charger_update_charger_current; 3422 - di->usb_chg.ops.pp_enable = &ab8540_charger_power_path_enable; 3423 - di->usb_chg.ops.pre_chg_enable = &ab8540_charger_usb_pre_chg_enable; 3424 3532 di->usb_chg.max_out_volt = ab8500_charger_voltage_map[ 3425 3533 ARRAY_SIZE(ab8500_charger_voltage_map) - 1]; 3426 3534 di->usb_chg.max_out_curr = ··· 3426 3538 di->usb_chg.wdt_refresh = CHG_WD_INTERVAL; 3427 3539 di->usb_chg.enabled = di->bm->usb_enabled; 3428 3540 di->usb_chg.external = false; 3429 - di->usb_chg.power_path = di->bm->usb_power_path; 3430 3541 di->usb_state.usb_current = -1; 3431 3542 3432 3543 /* Create a work queue for the charger */
+4 -10
drivers/power/supply/ab8500_fg.c
··· 1408 1408 static void ab8500_fg_discharge_state_to(struct ab8500_fg *di, 1409 1409 enum ab8500_fg_discharge_state new_state) 1410 1410 { 1411 - dev_dbg(di->dev, "Disharge state from %d [%s] to %d [%s]\n", 1411 + dev_dbg(di->dev, "Discharge state from %d [%s] to %d [%s]\n", 1412 1412 di->discharge_state, 1413 1413 discharge_state[di->discharge_state], 1414 1414 new_state, ··· 2326 2326 goto out; 2327 2327 } 2328 2328 2329 - if (((is_ab8505(di->parent) || is_ab9540(di->parent)) && 2330 - abx500_get_chip_id(di->dev) >= AB8500_CUT2P0) 2331 - || is_ab8540(di->parent)) { 2329 + if (is_ab8505(di->parent)) { 2332 2330 ret = abx500_set_register_interruptible(di->dev, AB8500_RTC, 2333 2331 AB8505_RTC_PCUT_MAX_TIME_REG, di->bm->fg_params->pcut_max_time); 2334 2332 ··· 2913 2915 { 2914 2916 unsigned int i; 2915 2917 2916 - if (((is_ab8505(di->parent) || is_ab9540(di->parent)) && 2917 - abx500_get_chip_id(di->dev) >= AB8500_CUT2P0) 2918 - || is_ab8540(di->parent)) { 2918 + if (is_ab8505(di->parent)) { 2919 2919 for (i = 0; i < ARRAY_SIZE(ab8505_fg_sysfs_psy_attrs); i++) 2920 2920 if (device_create_file(&di->fg_psy->dev, 2921 2921 &ab8505_fg_sysfs_psy_attrs[i])) ··· 2933 2937 { 2934 2938 unsigned int i; 2935 2939 2936 - if (((is_ab8505(di->parent) || is_ab9540(di->parent)) && 2937 - abx500_get_chip_id(di->dev) >= AB8500_CUT2P0) 2938 - || is_ab8540(di->parent)) { 2940 + if (is_ab8505(di->parent)) { 2939 2941 for (i = 0; i < ARRAY_SIZE(ab8505_fg_sysfs_psy_attrs); i++) 2940 2942 (void)device_remove_file(&di->fg_psy->dev, 2941 2943 &ab8505_fg_sysfs_psy_attrs[i]);
-62
drivers/power/supply/abx500_chargalg.c
··· 44 44 /* Five minutes expressed in seconds */ 45 45 #define FIVE_MINUTES_IN_SECONDS 300 46 46 47 - /* Plus margin for the low battery threshold */ 48 - #define BAT_PLUS_MARGIN (100) 49 - 50 47 #define CHARGALG_CURR_STEP_LOW 0 51 48 #define CHARGALG_CURR_STEP_HIGH 100 52 49 ··· 98 101 STATE_HW_TEMP_PROTECT_INIT, 99 102 STATE_HW_TEMP_PROTECT, 100 103 STATE_NORMAL_INIT, 101 - STATE_USB_PP_PRE_CHARGE, 102 104 STATE_NORMAL, 103 105 STATE_WAIT_FOR_RECHARGE_INIT, 104 106 STATE_WAIT_FOR_RECHARGE, ··· 129 133 "HW_TEMP_PROTECT_INIT", 130 134 "HW_TEMP_PROTECT", 131 135 "NORMAL_INIT", 132 - "USB_PP_PRE_CHARGE", 133 136 "NORMAL", 134 137 "WAIT_FOR_RECHARGE_INIT", 135 138 "WAIT_FOR_RECHARGE", ··· 598 603 return di->usb_chg->ops.enable(di->usb_chg, enable, vset, iset); 599 604 } 600 605 601 - /** 602 - * ab8540_chargalg_usb_pp_en() - Enable/ disable USB power path 603 - * @di: pointer to the abx500_chargalg structure 604 - * @enable: power path enable/disable 605 - * 606 - * The USB power path will be enable/ disable 607 - */ 608 - static int ab8540_chargalg_usb_pp_en(struct abx500_chargalg *di, bool enable) 609 - { 610 - if (!di->usb_chg || !di->usb_chg->ops.pp_enable) 611 - return -ENXIO; 612 - 613 - return di->usb_chg->ops.pp_enable(di->usb_chg, enable); 614 - } 615 - 616 - /** 617 - * ab8540_chargalg_usb_pre_chg_en() - Enable/ disable USB pre-charge 618 - * @di: pointer to the abx500_chargalg structure 619 - * @enable: USB pre-charge enable/disable 620 - * 621 - * The USB USB pre-charge will be enable/ disable 622 - */ 623 - static int ab8540_chargalg_usb_pre_chg_en(struct abx500_chargalg *di, 624 - bool enable) 625 - { 626 - if (!di->usb_chg || !di->usb_chg->ops.pre_chg_enable) 627 - return -ENXIO; 628 - 629 - return di->usb_chg->ops.pre_chg_enable(di->usb_chg, enable); 630 - } 631 - 632 606 /** 633 607 * abx500_chargalg_update_chg_curr() - Update charger current 634 608 * @di: pointer to the abx500_chargalg structure ··· 797 833 di->batt_data.avg_curr > 0) { 798 834 if (++di->eoc_cnt >= EOC_COND_CNT) { 799 835 di->eoc_cnt = 0; 800 - if ((di->chg_info.charger_type & USB_CHG) && 801 - (di->usb_chg->power_path)) 802 - ab8540_chargalg_usb_pp_en(di, true); 803 836 di->charge_status = POWER_SUPPLY_STATUS_FULL; 804 837 di->maintenance_chg = true; 805 838 dev_dbg(di->dev, "EOC reached!\n"); ··· 1497 1536 break; 1498 1537 1499 1538 case STATE_NORMAL_INIT: 1500 - if ((di->chg_info.charger_type & USB_CHG) && 1501 - di->usb_chg->power_path) { 1502 - if (di->batt_data.volt > 1503 - (di->bm->fg_params->lowbat_threshold + 1504 - BAT_PLUS_MARGIN)) { 1505 - ab8540_chargalg_usb_pre_chg_en(di, false); 1506 - ab8540_chargalg_usb_pp_en(di, false); 1507 - } else { 1508 - ab8540_chargalg_usb_pp_en(di, true); 1509 - ab8540_chargalg_usb_pre_chg_en(di, true); 1510 - abx500_chargalg_state_to(di, 1511 - STATE_USB_PP_PRE_CHARGE); 1512 - break; 1513 - } 1514 - } 1515 - 1516 1539 if (di->curr_status.curr_step == CHARGALG_CURR_STEP_LOW) 1517 1540 abx500_chargalg_stop_charging(di); 1518 1541 else { ··· 1518 1573 di->maintenance_chg = false; 1519 1574 power_supply_changed(di->chargalg_psy); 1520 1575 1521 - break; 1522 - 1523 - case STATE_USB_PP_PRE_CHARGE: 1524 - if (di->batt_data.volt > 1525 - (di->bm->fg_params->lowbat_threshold + 1526 - BAT_PLUS_MARGIN)) 1527 - abx500_chargalg_state_to(di, STATE_NORMAL_INIT); 1528 1576 break; 1529 1577 1530 1578 case STATE_NORMAL:
+23 -3
drivers/power/supply/axp288_charger.c
··· 88 88 #define CHRG_VBUS_ILIM_2000MA 0x4 /* 2000mA */ 89 89 #define CHRG_VBUS_ILIM_2500MA 0x5 /* 2500mA */ 90 90 #define CHRG_VBUS_ILIM_3000MA 0x6 /* 3000mA */ 91 + #define CHRG_VBUS_ILIM_3500MA 0x7 /* 3500mA */ 92 + #define CHRG_VBUS_ILIM_4000MA 0x8 /* 4000mA */ 91 93 92 94 #define CHRG_VLTFC_0C 0xA5 /* 0 DegC */ 93 95 #define CHRG_VHTFC_45C 0x1F /* 45 DegC */ ··· 225 223 return 2500000; 226 224 case CHRG_VBUS_ILIM_3000MA: 227 225 return 3000000; 226 + case CHRG_VBUS_ILIM_3500MA: 227 + return 3500000; 228 228 default: 229 - dev_warn(&info->pdev->dev, "Unknown ilim reg val: %d\n", val); 230 - return 0; 229 + /* All b1xxx values map to 4000 mA */ 230 + return 4000000; 231 231 } 232 232 } 233 233 ··· 239 235 int ret; 240 236 u8 reg_val; 241 237 242 - if (inlmt >= 3000000) 238 + if (inlmt >= 4000000) 239 + reg_val = CHRG_VBUS_ILIM_4000MA << CHRG_VBUS_ILIM_BIT_POS; 240 + else if (inlmt >= 3500000) 241 + reg_val = CHRG_VBUS_ILIM_3500MA << CHRG_VBUS_ILIM_BIT_POS; 242 + else if (inlmt >= 3000000) 243 243 reg_val = CHRG_VBUS_ILIM_3000MA << CHRG_VBUS_ILIM_BIT_POS; 244 244 else if (inlmt >= 2500000) 245 245 reg_val = CHRG_VBUS_ILIM_2500MA << CHRG_VBUS_ILIM_BIT_POS; ··· 747 739 struct device *dev = &pdev->dev; 748 740 struct axp20x_dev *axp20x = dev_get_drvdata(pdev->dev.parent); 749 741 struct power_supply_config charger_cfg = {}; 742 + unsigned int val; 743 + 744 + /* 745 + * On some devices the fuelgauge and charger parts of the axp288 are 746 + * not used, check that the fuelgauge is enabled (CC_CTRL != 0). 747 + */ 748 + ret = regmap_read(axp20x->regmap, AXP20X_CC_CTRL, &val); 749 + if (ret < 0) 750 + return ret; 751 + if (val == 0) 752 + return -ENODEV; 753 + 750 754 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); 751 755 if (!info) 752 756 return -ENOMEM;
+11 -16
drivers/power/supply/axp288_fuel_gauge.c
··· 24 24 #include <linux/regmap.h> 25 25 #include <linux/jiffies.h> 26 26 #include <linux/interrupt.h> 27 - #include <linux/workqueue.h> 28 27 #include <linux/mfd/axp20x.h> 29 28 #include <linux/platform_device.h> 30 29 #include <linux/power_supply.h> ··· 87 88 #define FG_LOW_CAP_CRIT_THR 4 /* 4 perc */ 88 89 #define FG_LOW_CAP_SHDN_THR 0 /* 0 perc */ 89 90 90 - #define STATUS_MON_DELAY_JIFFIES (HZ * 60) /*60 sec */ 91 91 #define NR_RETRY_CNT 3 92 92 #define DEV_NAME "axp288_fuel_gauge" 93 93 ··· 126 128 struct mutex lock; 127 129 int status; 128 130 int max_volt; 129 - struct delayed_work status_monitor; 130 131 struct dentry *debug_file; 131 132 }; 132 133 ··· 589 592 return ret; 590 593 } 591 594 592 - static void fuel_gauge_status_monitor(struct work_struct *work) 593 - { 594 - struct axp288_fg_info *info = container_of(work, 595 - struct axp288_fg_info, status_monitor.work); 596 - 597 - fuel_gauge_get_status(info); 598 - power_supply_changed(info->bat); 599 - schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES); 600 - } 601 - 602 595 static irqreturn_t fuel_gauge_thread_handler(int irq, void *dev) 603 596 { 604 597 struct axp288_fg_info *info = dev; ··· 741 754 [BAT_D_CURR] = "axp288-chrg-d-curr", 742 755 [BAT_VOLT] = "axp288-batt-volt", 743 756 }; 757 + unsigned int val; 744 758 745 759 if (dmi_check_system(axp288_fuel_gauge_blacklist)) 760 + return -ENODEV; 761 + 762 + /* 763 + * On some devices the fuelgauge and charger parts of the axp288 are 764 + * not used, check that the fuelgauge is enabled (CC_CTRL != 0). 765 + */ 766 + ret = regmap_read(axp20x->regmap, AXP20X_CC_CTRL, &val); 767 + if (ret < 0) 768 + return ret; 769 + if (val == 0) 746 770 return -ENODEV; 747 771 748 772 info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL); ··· 768 770 platform_set_drvdata(pdev, info); 769 771 770 772 mutex_init(&info->lock); 771 - INIT_DELAYED_WORK(&info->status_monitor, fuel_gauge_status_monitor); 772 773 773 774 for (i = 0; i < IIO_CHANNEL_NUM; i++) { 774 775 /* ··· 827 830 828 831 fuel_gauge_create_debugfs(info); 829 832 fuel_gauge_init_irq(info); 830 - schedule_delayed_work(&info->status_monitor, STATUS_MON_DELAY_JIFFIES); 831 833 832 834 return 0; 833 835 ··· 849 853 struct axp288_fg_info *info = platform_get_drvdata(pdev); 850 854 int i; 851 855 852 - cancel_delayed_work_sync(&info->status_monitor); 853 856 power_supply_unregister(info->bat); 854 857 fuel_gauge_remove_debugfs(info); 855 858
+9
drivers/power/supply/bq27xxx_battery.c
··· 432 432 BQ27XXX_DM_REG_ROWS, 433 433 }; 434 434 #define bq27425_regs bq27421_regs 435 + #define bq27426_regs bq27421_regs 435 436 #define bq27441_regs bq27421_regs 436 437 #define bq27621_regs bq27421_regs 437 438 ··· 665 664 POWER_SUPPLY_PROP_MANUFACTURER, 666 665 }; 667 666 #define bq27425_props bq27421_props 667 + #define bq27426_props bq27421_props 668 668 #define bq27441_props bq27421_props 669 669 #define bq27621_props bq27421_props 670 670 ··· 736 734 [BQ27XXX_DM_TERMINATE_VOLTAGE] = { 82, 18, 2, 2800, 3700 }, 737 735 }; 738 736 737 + static struct bq27xxx_dm_reg bq27426_dm_regs[] = { 738 + [BQ27XXX_DM_DESIGN_CAPACITY] = { 82, 6, 2, 0, 8000 }, 739 + [BQ27XXX_DM_DESIGN_ENERGY] = { 82, 8, 2, 0, 32767 }, 740 + [BQ27XXX_DM_TERMINATE_VOLTAGE] = { 82, 10, 2, 2500, 3700 }, 741 + }; 742 + 739 743 #if 0 /* not yet tested */ 740 744 #define bq27441_dm_regs bq27421_dm_regs 741 745 #else ··· 803 795 [BQ27545] = BQ27XXX_DATA(bq27545, 0x04143672, BQ27XXX_O_OTDC), 804 796 [BQ27421] = BQ27XXX_DATA(bq27421, 0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM), 805 797 [BQ27425] = BQ27XXX_DATA(bq27425, 0x04143672, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP), 798 + [BQ27426] = BQ27XXX_DATA(bq27426, 0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM), 806 799 [BQ27441] = BQ27XXX_DATA(bq27441, 0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM), 807 800 [BQ27621] = BQ27XXX_DATA(bq27621, 0x80008000, BQ27XXX_O_UTOT | BQ27XXX_O_CFGUP | BQ27XXX_O_RAM), 808 801 };
+2
drivers/power/supply/bq27xxx_battery_i2c.c
··· 249 249 { "bq27545", BQ27545 }, 250 250 { "bq27421", BQ27421 }, 251 251 { "bq27425", BQ27425 }, 252 + { "bq27426", BQ27426 }, 252 253 { "bq27441", BQ27441 }, 253 254 { "bq27621", BQ27621 }, 254 255 {}, ··· 281 280 { .compatible = "ti,bq27545" }, 282 281 { .compatible = "ti,bq27421" }, 283 282 { .compatible = "ti,bq27425" }, 283 + { .compatible = "ti,bq27426" }, 284 284 { .compatible = "ti,bq27441" }, 285 285 { .compatible = "ti,bq27621" }, 286 286 {},
+3 -2
drivers/power/supply/charger-manager.c
··· 1700 1700 power_supply_put(psy); 1701 1701 } 1702 1702 1703 - if (desc->polling_interval_ms == 0 || 1704 - msecs_to_jiffies(desc->polling_interval_ms) <= CM_JIFFIES_SMALL) { 1703 + if (cm->desc->polling_mode != CM_POLL_DISABLE && 1704 + (desc->polling_interval_ms == 0 || 1705 + msecs_to_jiffies(desc->polling_interval_ms) <= CM_JIFFIES_SMALL)) { 1705 1706 dev_err(&pdev->dev, "polling_interval_ms is too small\n"); 1706 1707 return -EINVAL; 1707 1708 }
+1 -2
drivers/power/supply/gpio-charger.c
··· 212 212 213 213 static int gpio_charger_resume(struct device *dev) 214 214 { 215 - struct platform_device *pdev = to_platform_device(dev); 216 - struct gpio_charger *gpio_charger = platform_get_drvdata(pdev); 215 + struct gpio_charger *gpio_charger = dev_get_drvdata(dev); 217 216 218 217 if (device_may_wakeup(dev) && gpio_charger->wakeup_enabled) 219 218 disable_irq_wake(gpio_charger->irq);
+48 -36
drivers/power/supply/power_supply_sysfs.c
··· 116 116 static ssize_t power_supply_show_property(struct device *dev, 117 117 struct device_attribute *attr, 118 118 char *buf) { 119 - ssize_t ret = 0; 119 + ssize_t ret; 120 120 struct power_supply *psy = dev_get_drvdata(dev); 121 - const ptrdiff_t off = attr - power_supply_attrs; 121 + enum power_supply_property psp = attr - power_supply_attrs; 122 122 union power_supply_propval value; 123 123 124 - if (off == POWER_SUPPLY_PROP_TYPE) { 124 + if (psp == POWER_SUPPLY_PROP_TYPE) { 125 125 value.intval = psy->desc->type; 126 126 } else { 127 - ret = power_supply_get_property(psy, off, &value); 127 + ret = power_supply_get_property(psy, psp, &value); 128 128 129 129 if (ret < 0) { 130 130 if (ret == -ENODATA) ··· 137 137 } 138 138 } 139 139 140 - if (off == POWER_SUPPLY_PROP_STATUS) 141 - return sprintf(buf, "%s\n", 142 - power_supply_status_text[value.intval]); 143 - else if (off == POWER_SUPPLY_PROP_CHARGE_TYPE) 144 - return sprintf(buf, "%s\n", 145 - power_supply_charge_type_text[value.intval]); 146 - else if (off == POWER_SUPPLY_PROP_HEALTH) 147 - return sprintf(buf, "%s\n", 148 - power_supply_health_text[value.intval]); 149 - else if (off == POWER_SUPPLY_PROP_TECHNOLOGY) 150 - return sprintf(buf, "%s\n", 151 - power_supply_technology_text[value.intval]); 152 - else if (off == POWER_SUPPLY_PROP_CAPACITY_LEVEL) 153 - return sprintf(buf, "%s\n", 154 - power_supply_capacity_level_text[value.intval]); 155 - else if (off == POWER_SUPPLY_PROP_TYPE) 156 - return sprintf(buf, "%s\n", 157 - power_supply_type_text[value.intval]); 158 - else if (off == POWER_SUPPLY_PROP_USB_TYPE) 159 - return power_supply_show_usb_type(dev, psy->desc->usb_types, 160 - psy->desc->num_usb_types, 161 - &value, buf); 162 - else if (off == POWER_SUPPLY_PROP_SCOPE) 163 - return sprintf(buf, "%s\n", 164 - power_supply_scope_text[value.intval]); 165 - else if (off >= POWER_SUPPLY_PROP_MODEL_NAME) 166 - return sprintf(buf, "%s\n", value.strval); 140 + switch (psp) { 141 + case POWER_SUPPLY_PROP_STATUS: 142 + ret = sprintf(buf, "%s\n", 143 + power_supply_status_text[value.intval]); 144 + break; 145 + case POWER_SUPPLY_PROP_CHARGE_TYPE: 146 + ret = sprintf(buf, "%s\n", 147 + power_supply_charge_type_text[value.intval]); 148 + break; 149 + case POWER_SUPPLY_PROP_HEALTH: 150 + ret = sprintf(buf, "%s\n", 151 + power_supply_health_text[value.intval]); 152 + break; 153 + case POWER_SUPPLY_PROP_TECHNOLOGY: 154 + ret = sprintf(buf, "%s\n", 155 + power_supply_technology_text[value.intval]); 156 + break; 157 + case POWER_SUPPLY_PROP_CAPACITY_LEVEL: 158 + ret = sprintf(buf, "%s\n", 159 + power_supply_capacity_level_text[value.intval]); 160 + break; 161 + case POWER_SUPPLY_PROP_TYPE: 162 + ret = sprintf(buf, "%s\n", 163 + power_supply_type_text[value.intval]); 164 + break; 165 + case POWER_SUPPLY_PROP_USB_TYPE: 166 + ret = power_supply_show_usb_type(dev, psy->desc->usb_types, 167 + psy->desc->num_usb_types, 168 + &value, buf); 169 + break; 170 + case POWER_SUPPLY_PROP_SCOPE: 171 + ret = sprintf(buf, "%s\n", 172 + power_supply_scope_text[value.intval]); 173 + break; 174 + case POWER_SUPPLY_PROP_MODEL_NAME ... POWER_SUPPLY_PROP_SERIAL_NUMBER: 175 + ret = sprintf(buf, "%s\n", value.strval); 176 + break; 177 + default: 178 + ret = sprintf(buf, "%d\n", value.intval); 179 + } 167 180 168 - return sprintf(buf, "%d\n", value.intval); 181 + return ret; 169 182 } 170 183 171 184 static ssize_t power_supply_store_property(struct device *dev, ··· 186 173 const char *buf, size_t count) { 187 174 ssize_t ret; 188 175 struct power_supply *psy = dev_get_drvdata(dev); 189 - const ptrdiff_t off = attr - power_supply_attrs; 176 + enum power_supply_property psp = attr - power_supply_attrs; 190 177 union power_supply_propval value; 191 178 192 - /* maybe it is a enum property? */ 193 - switch (off) { 179 + switch (psp) { 194 180 case POWER_SUPPLY_PROP_STATUS: 195 181 ret = sysfs_match_string(power_supply_status_text, buf); 196 182 break; ··· 228 216 229 217 value.intval = ret; 230 218 231 - ret = power_supply_set_property(psy, off, &value); 219 + ret = power_supply_set_property(psy, psp, &value); 232 220 if (ret < 0) 233 221 return ret; 234 222
+5 -3
drivers/power/supply/s3c_adc_battery.c
··· 293 293 { 294 294 struct s3c_adc_client *client; 295 295 struct s3c_adc_bat_pdata *pdata = pdev->dev.platform_data; 296 + struct power_supply_config psy_cfg = {}; 296 297 int ret; 297 298 298 299 client = s3c_adc_register(pdev, NULL, NULL, 0); ··· 310 309 main_bat.cur_value = -1; 311 310 main_bat.cable_plugged = 0; 312 311 main_bat.status = POWER_SUPPLY_STATUS_DISCHARGING; 312 + psy_cfg.drv_data = &main_bat; 313 313 314 - main_bat.psy = power_supply_register(&pdev->dev, &main_bat_desc, NULL); 314 + main_bat.psy = power_supply_register(&pdev->dev, &main_bat_desc, &psy_cfg); 315 315 if (IS_ERR(main_bat.psy)) { 316 316 ret = PTR_ERR(main_bat.psy); 317 317 goto err_reg_main; 318 318 } 319 319 if (pdata->backup_volt_mult) { 320 - const struct power_supply_config psy_cfg 320 + const struct power_supply_config backup_psy_cfg 321 321 = { .drv_data = &backup_bat, }; 322 322 323 323 backup_bat.client = client; ··· 326 324 backup_bat.volt_value = -1; 327 325 backup_bat.psy = power_supply_register(&pdev->dev, 328 326 &backup_bat_desc, 329 - &psy_cfg); 327 + &backup_psy_cfg); 330 328 if (IS_ERR(backup_bat.psy)) { 331 329 ret = PTR_ERR(backup_bat.psy); 332 330 goto err_reg_backup;
-1
include/linux/mfd/abx500.h
··· 271 271 bool autopower_cfg; 272 272 bool ac_enabled; 273 273 bool usb_enabled; 274 - bool usb_power_path; 275 274 bool no_maintenance; 276 275 bool capacity_scaling; 277 276 bool chg_unknown_bat;
-2
include/linux/mfd/abx500/ab8500-bm.h
··· 248 248 #define BAT_CTRL_20U_ENA 0x02 249 249 #define BAT_CTRL_18U_ENA 0x01 250 250 #define BAT_CTRL_16U_ENA 0x02 251 - #define BAT_CTRL_60U_ENA 0x01 252 - #define BAT_CTRL_120U_ENA 0x02 253 251 #define BAT_CTRL_CMP_ENA 0x04 254 252 #define FORCE_BAT_CTRL_CMP_HIGH 0x08 255 253 #define BAT_CTRL_PULL_UP_ENA 0x10
-4
include/linux/mfd/abx500/ux500_chargalg.h
··· 25 25 int (*check_enable) (struct ux500_charger *, int, int); 26 26 int (*kick_wd) (struct ux500_charger *); 27 27 int (*update_curr) (struct ux500_charger *, int); 28 - int (*pp_enable) (struct ux500_charger *, bool); 29 - int (*pre_chg_enable) (struct ux500_charger *, bool); 30 28 }; 31 29 32 30 /** ··· 35 37 * @max_out_curr maximum output charger current in mA 36 38 * @enabled indicates if this charger is used or not 37 39 * @external external charger unit (pm2xxx) 38 - * @power_path USB power path support 39 40 */ 40 41 struct ux500_charger { 41 42 struct power_supply *psy; ··· 44 47 int wdt_refresh; 45 48 bool enabled; 46 49 bool external; 47 - bool power_path; 48 50 }; 49 51 50 52 extern struct blocking_notifier_head charger_notifier_list;
+2 -1
include/linux/power/bq27xxx_battery.h
··· 24 24 BQ27546, 25 25 BQ27742, 26 26 BQ27545, /* bq27545 */ 27 - BQ27421, /* bq27421, bq27425, bq27441, bq27621 */ 27 + BQ27421, /* bq27421, bq27441, bq27621 */ 28 28 BQ27425, 29 + BQ27426, 29 30 BQ27441, 30 31 BQ27621, 31 32 };