diff options
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/Kconfig | 518 | ||||
-rw-r--r-- | drivers/power/Makefile | 75 | ||||
-rw-r--r-- | drivers/power/reset/reboot-mode.c | 59 | ||||
-rw-r--r-- | drivers/power/reset/reboot-mode.h | 4 | ||||
-rw-r--r-- | drivers/power/reset/syscon-reboot-mode.c | 12 | ||||
-rw-r--r-- | drivers/power/supply/88pm860x_battery.c (renamed from drivers/power/88pm860x_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/88pm860x_charger.c (renamed from drivers/power/88pm860x_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/Kconfig | 514 | ||||
-rw-r--r-- | drivers/power/supply/Makefile | 74 | ||||
-rw-r--r-- | drivers/power/supply/ab8500_bmdata.c (renamed from drivers/power/ab8500_bmdata.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/ab8500_btemp.c (renamed from drivers/power/ab8500_btemp.c) | 2 | ||||
-rw-r--r-- | drivers/power/supply/ab8500_charger.c (renamed from drivers/power/ab8500_charger.c) | 4 | ||||
-rw-r--r-- | drivers/power/supply/ab8500_fg.c (renamed from drivers/power/ab8500_fg.c) | 2 | ||||
-rw-r--r-- | drivers/power/supply/abx500_chargalg.c (renamed from drivers/power/abx500_chargalg.c) | 4 | ||||
-rw-r--r-- | drivers/power/supply/act8945a_charger.c (renamed from drivers/power/act8945a_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/apm_power.c (renamed from drivers/power/apm_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/axp20x_usb_power.c (renamed from drivers/power/axp20x_usb_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/axp288_charger.c (renamed from drivers/power/axp288_charger.c) | 1 | ||||
-rw-r--r-- | drivers/power/supply/axp288_fuel_gauge.c (renamed from drivers/power/axp288_fuel_gauge.c) | 1 | ||||
-rw-r--r-- | drivers/power/supply/bq2415x_charger.c (renamed from drivers/power/bq2415x_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/bq24190_charger.c (renamed from drivers/power/bq24190_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/bq24257_charger.c (renamed from drivers/power/bq24257_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/bq24735-charger.c (renamed from drivers/power/bq24735-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/bq25890_charger.c (renamed from drivers/power/bq25890_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/bq27xxx_battery.c (renamed from drivers/power/bq27xxx_battery.c) | 5 | ||||
-rw-r--r-- | drivers/power/supply/bq27xxx_battery_i2c.c (renamed from drivers/power/bq27xxx_battery_i2c.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/charger-manager.c (renamed from drivers/power/charger-manager.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/collie_battery.c (renamed from drivers/power/collie_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/da9030_battery.c (renamed from drivers/power/da9030_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/da9052-battery.c (renamed from drivers/power/da9052-battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/da9150-charger.c (renamed from drivers/power/da9150-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/da9150-fg.c (renamed from drivers/power/da9150-fg.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/ds2760_battery.c (renamed from drivers/power/ds2760_battery.c) | 7 | ||||
-rw-r--r-- | drivers/power/supply/ds2780_battery.c (renamed from drivers/power/ds2780_battery.c) | 4 | ||||
-rw-r--r-- | drivers/power/supply/ds2781_battery.c (renamed from drivers/power/ds2781_battery.c) | 4 | ||||
-rw-r--r-- | drivers/power/supply/ds2782_battery.c (renamed from drivers/power/ds2782_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/generic-adc-battery.c (renamed from drivers/power/generic-adc-battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/goldfish_battery.c (renamed from drivers/power/goldfish_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/gpio-charger.c (renamed from drivers/power/gpio-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/intel_mid_battery.c (renamed from drivers/power/intel_mid_battery.c) | 3 | ||||
-rw-r--r-- | drivers/power/supply/ipaq_micro_battery.c (renamed from drivers/power/ipaq_micro_battery.c) | 2 | ||||
-rw-r--r-- | drivers/power/supply/isp1704_charger.c (renamed from drivers/power/isp1704_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/jz4740-battery.c (renamed from drivers/power/jz4740-battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/lp8727_charger.c (renamed from drivers/power/lp8727_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/lp8788-charger.c (renamed from drivers/power/lp8788-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/ltc2941-battery-gauge.c (renamed from drivers/power/ltc2941-battery-gauge.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max14577_charger.c (renamed from drivers/power/max14577_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max17040_battery.c (renamed from drivers/power/max17040_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max17042_battery.c (renamed from drivers/power/max17042_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max77693_charger.c (renamed from drivers/power/max77693_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max8903_charger.c (renamed from drivers/power/max8903_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max8925_power.c (renamed from drivers/power/max8925_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max8997_charger.c (renamed from drivers/power/max8997_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/max8998_charger.c (renamed from drivers/power/max8998_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/olpc_battery.c (renamed from drivers/power/olpc_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/pcf50633-charger.c (renamed from drivers/power/pcf50633-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/pda_power.c (renamed from drivers/power/pda_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/pm2301_charger.c (renamed from drivers/power/pm2301_charger.c) | 3 | ||||
-rw-r--r-- | drivers/power/supply/pm2301_charger.h (renamed from drivers/power/pm2301_charger.h) | 0 | ||||
-rw-r--r-- | drivers/power/supply/pmu_battery.c (renamed from drivers/power/pmu_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/power_supply.h (renamed from drivers/power/power_supply.h) | 0 | ||||
-rw-r--r-- | drivers/power/supply/power_supply_core.c (renamed from drivers/power/power_supply_core.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/power_supply_leds.c (renamed from drivers/power/power_supply_leds.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/power_supply_sysfs.c (renamed from drivers/power/power_supply_sysfs.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/qcom_smbb.c (renamed from drivers/power/qcom_smbb.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/rt5033_battery.c (renamed from drivers/power/rt5033_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/rt9455_charger.c (renamed from drivers/power/rt9455_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/rx51_battery.c (renamed from drivers/power/rx51_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/s3c_adc_battery.c (renamed from drivers/power/s3c_adc_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/sbs-battery.c (renamed from drivers/power/sbs-battery.c) | 48 | ||||
-rw-r--r-- | drivers/power/supply/smb347-charger.c (renamed from drivers/power/smb347-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/test_power.c (renamed from drivers/power/test_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/tosa_battery.c (renamed from drivers/power/tosa_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/tps65090-charger.c (renamed from drivers/power/tps65090-charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/tps65217_charger.c (renamed from drivers/power/tps65217_charger.c) | 40 | ||||
-rw-r--r-- | drivers/power/supply/twl4030_charger.c (renamed from drivers/power/twl4030_charger.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/twl4030_madc_battery.c (renamed from drivers/power/twl4030_madc_battery.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/wm831x_backup.c (renamed from drivers/power/wm831x_backup.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/wm831x_power.c (renamed from drivers/power/wm831x_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/wm8350_power.c (renamed from drivers/power/wm8350_power.c) | 0 | ||||
-rw-r--r-- | drivers/power/supply/wm97xx_battery.c (renamed from drivers/power/wm97xx_battery.c) | 2 | ||||
-rw-r--r-- | drivers/power/supply/z2_battery.c (renamed from drivers/power/z2_battery.c) | 1 |
82 files changed, 737 insertions, 652 deletions
diff --git a/drivers/power/Kconfig b/drivers/power/Kconfig index acd4a1524a1e..63454b5cac27 100644 --- a/drivers/power/Kconfig +++ b/drivers/power/Kconfig @@ -1,517 +1,3 @@ -menuconfig POWER_SUPPLY - bool "Power supply class support" - help - Say Y here to enable power supply class support. This allows - power supply (batteries, AC, USB) monitoring by userspace - via sysfs and uevent (if available) and/or APM kernel interface - (if selected below). - -if POWER_SUPPLY - -config POWER_SUPPLY_DEBUG - bool "Power supply debug" - help - Say Y here to enable debugging messages for power supply class - and drivers. - -config PDA_POWER - tristate "Generic PDA/phone power driver" - depends on !S390 - help - Say Y here to enable generic power driver for PDAs and phones with - one or two external power supplies (AC/USB) connected to main and - backup batteries, and optional builtin charger. - -config APM_POWER - tristate "APM emulation for class batteries" - depends on APM_EMULATION - help - Say Y here to enable support APM status emulation using - battery class devices. - -config GENERIC_ADC_BATTERY - tristate "Generic battery support using IIO" - depends on IIO - help - Say Y here to enable support for the generic battery driver - which uses IIO framework to read adc. - -config MAX8925_POWER - tristate "MAX8925 battery charger support" - depends on MFD_MAX8925 - help - Say Y here to enable support for the battery charger in the Maxim - MAX8925 PMIC. - -config WM831X_BACKUP - tristate "WM831X backup battery charger support" - depends on MFD_WM831X - help - Say Y here to enable support for the backup battery charger - in the Wolfson Microelectronics WM831x PMICs. - -config WM831X_POWER - tristate "WM831X PMU support" - depends on MFD_WM831X - help - Say Y here to enable support for the power management unit - provided by Wolfson Microelectronics WM831x PMICs. - -config WM8350_POWER - tristate "WM8350 PMU support" - depends on MFD_WM8350 - help - Say Y here to enable support for the power management unit - provided by the Wolfson Microelectronics WM8350 PMIC. - -config TEST_POWER - tristate "Test power driver" - help - This driver is used for testing. It's safe to say M here. - -config BATTERY_88PM860X - tristate "Marvell 88PM860x battery driver" - depends on MFD_88PM860X - help - Say Y here to enable battery monitor for Marvell 88PM860x chip. - -config BATTERY_ACT8945A - tristate "Active-semi ACT8945A charger driver" - depends on MFD_ACT8945A || COMPILE_TEST - help - Say Y here to enable support for power supply provided by - Active-semi ActivePath ACT8945A charger. - -config BATTERY_DS2760 - tristate "DS2760 battery driver (HP iPAQ & others)" - depends on W1 && W1_SLAVE_DS2760 - help - Say Y here to enable support for batteries with ds2760 chip. - -config BATTERY_DS2780 - tristate "DS2780 battery driver" - depends on HAS_IOMEM - select W1 - select W1_SLAVE_DS2780 - help - Say Y here to enable support for batteries with ds2780 chip. - -config BATTERY_DS2781 - tristate "DS2781 battery driver" - depends on HAS_IOMEM - select W1 - select W1_SLAVE_DS2781 - help - If you enable this you will have the DS2781 battery driver support. - - The battery monitor chip is used in many batteries/devices - as the one who is responsible for charging/discharging/monitoring - Li+ batteries. - - If you are unsure, say N. - -config BATTERY_DS2782 - tristate "DS2782/DS2786 standalone gas-gauge" - depends on I2C - help - Say Y here to enable support for the DS2782/DS2786 standalone battery - gas-gauge. - -config BATTERY_PMU - tristate "Apple PMU battery" - depends on PPC32 && ADB_PMU - help - Say Y here to expose battery information on Apple machines - through the generic battery class. - -config BATTERY_OLPC - tristate "One Laptop Per Child battery" - depends on X86_32 && OLPC - help - Say Y to enable support for the battery on the OLPC laptop. - -config BATTERY_TOSA - tristate "Sharp SL-6000 (tosa) battery" - depends on MACH_TOSA && MFD_TC6393XB && TOUCHSCREEN_WM97XX - help - Say Y to enable support for the battery on the Sharp Zaurus - SL-6000 (tosa) models. - -config BATTERY_COLLIE - tristate "Sharp SL-5500 (collie) battery" - depends on SA1100_COLLIE && MCP_UCB1200 - help - Say Y to enable support for the battery on the Sharp Zaurus - SL-5500 (collie) models. - -config BATTERY_IPAQ_MICRO - tristate "iPAQ Atmel Micro ASIC battery driver" - depends on MFD_IPAQ_MICRO - help - Choose this option if you want to monitor battery status on - Compaq/HP iPAQ h3100 and h3600. - -config BATTERY_WM97XX - bool "WM97xx generic battery driver" - depends on TOUCHSCREEN_WM97XX=y - help - Say Y to enable support for battery measured by WM97xx aux port. - -config BATTERY_SBS - tristate "SBS Compliant gas gauge" - depends on I2C - help - Say Y to include support for SBS battery driver for SBS-compliant - gas gauges. - -config BATTERY_BQ27XXX - tristate "BQ27xxx battery driver" - help - Say Y here to enable support for batteries with BQ27xxx chips. - -config BATTERY_BQ27XXX_I2C - tristate "BQ27xxx I2C support" - depends on BATTERY_BQ27XXX - depends on I2C - default y - help - Say Y here to enable support for batteries with BQ27xxx chips - connected over an I2C bus. - -config BATTERY_DA9030 - tristate "DA9030 battery driver" - depends on PMIC_DA903X - help - Say Y here to enable support for batteries charger integrated into - DA9030 PMIC. - -config BATTERY_DA9052 - tristate "Dialog DA9052 Battery" - depends on PMIC_DA9052 - help - Say Y here to enable support for batteries charger integrated into - DA9052 PMIC. - -config CHARGER_DA9150 - tristate "Dialog Semiconductor DA9150 Charger support" - depends on MFD_DA9150 - depends on DA9150_GPADC - depends on IIO - help - Say Y here to enable support for charger unit of the DA9150 - Integrated Charger & Fuel-Gauge IC. - - This driver can also be built as a module. If so, the module will be - called da9150-charger. - -config BATTERY_DA9150 - tristate "Dialog Semiconductor DA9150 Fuel Gauge support" - depends on MFD_DA9150 - help - Say Y here to enable support for the Fuel-Gauge unit of the DA9150 - Integrated Charger & Fuel-Gauge IC - - This driver can also be built as a module. If so, the module will be - called da9150-fg. - -config AXP288_CHARGER - tristate "X-Powers AXP288 Charger" - depends on MFD_AXP20X && EXTCON_AXP288 - help - Say yes here to have support X-Power AXP288 power management IC (PMIC) - integrated charger. - -config AXP288_FUEL_GAUGE - tristate "X-Powers AXP288 Fuel Gauge" - depends on MFD_AXP20X && IIO - help - Say yes here to have support for X-Power power management IC (PMIC) - Fuel Gauge. The device provides battery statistics and status - monitoring as well as alerts for battery over/under voltage and - over/under temperature. - -config BATTERY_MAX17040 - tristate "Maxim MAX17040 Fuel Gauge" - depends on I2C - help - MAX17040 is fuel-gauge systems for lithium-ion (Li+) batteries - in handheld and portable equipment. The MAX17040 is configured - to operate with a single lithium cell - -config BATTERY_MAX17042 - tristate "Maxim MAX17042/17047/17050/8997/8966 Fuel Gauge" - depends on I2C - select REGMAP_I2C - help - MAX17042 is fuel-gauge systems for lithium-ion (Li+) batteries - in handheld and portable equipment. The MAX17042 is configured - to operate with a single lithium cell. MAX8997 and MAX8966 are - multi-function devices that include fuel gauages that are compatible - with MAX17042. This driver also supports max17047/50 chips which are - improved version of max17042. - -config BATTERY_Z2 - tristate "Z2 battery driver" - depends on I2C && MACH_ZIPIT2 - help - Say Y to include support for the battery on the Zipit Z2. - -config BATTERY_S3C_ADC - tristate "Battery driver for Samsung ADC based monitoring" - depends on S3C_ADC - help - Say Y here to enable support for iPAQ h1930/h1940/rx1950 battery - -config BATTERY_TWL4030_MADC - tristate "TWL4030 MADC battery driver" - depends on TWL4030_MADC - help - Say Y here to enable this dumb driver for batteries managed - through the TWL4030 MADC. - -config CHARGER_88PM860X - tristate "Marvell 88PM860x Charger driver" - depends on MFD_88PM860X && BATTERY_88PM860X - help - Say Y here to enable charger for Marvell 88PM860x chip. - -config CHARGER_PCF50633 - tristate "NXP PCF50633 MBC" - depends on MFD_PCF50633 - help - Say Y to include support for NXP PCF50633 Main Battery Charger. - -config BATTERY_JZ4740 - tristate "Ingenic JZ4740 battery" - depends on MACH_JZ4740 - depends on MFD_JZ4740_ADC - help - Say Y to enable support for the battery on Ingenic JZ4740 based - boards. - - This driver can be build as a module. If so, the module will be - called jz4740-battery. - -config BATTERY_INTEL_MID - tristate "Battery driver for Intel MID platforms" - depends on INTEL_SCU_IPC && SPI - help - Say Y here to enable the battery driver on Intel MID - platforms. - -config BATTERY_RX51 - tristate "Nokia RX-51 (N900) battery driver" - depends on TWL4030_MADC - help - Say Y here to enable support for battery information on Nokia - RX-51, also known as N900 tablet. - -config CHARGER_ISP1704 - tristate "ISP1704 USB Charger Detection" - depends on USB_PHY - depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y' - help - Say Y to enable support for USB Charger Detection with - ISP1707/ISP1704 USB transceivers. - -config CHARGER_MAX8903 - tristate "MAX8903 Battery DC-DC Charger for USB and Adapter Power" - help - Say Y to enable support for the MAX8903 DC-DC charger and sysfs. - The driver supports controlling charger-enable and current-limit - pins based on the status of charger connections with interrupt - handlers. - -config CHARGER_TWL4030 - tristate "OMAP TWL4030 BCI charger driver" - depends on IIO && TWL4030_CORE - help - Say Y here to enable support for TWL4030 Battery Charge Interface. - -config CHARGER_LP8727 - tristate "TI/National Semiconductor LP8727 charger driver" - depends on I2C - help - Say Y here to enable support for LP8727 Charger Driver. - -config CHARGER_LP8788 - tristate "TI LP8788 charger driver" - depends on MFD_LP8788 - depends on LP8788_ADC - depends on IIO - help - Say Y to enable support for the LP8788 linear charger. - -config CHARGER_GPIO - tristate "GPIO charger" - depends on GPIOLIB || COMPILE_TEST - help - Say Y to include support for chargers which report their online status - through a GPIO pin. - - This driver can be build as a module. If so, the module will be - called gpio-charger. - -config CHARGER_MANAGER - bool "Battery charger manager for multiple chargers" - depends on REGULATOR - select EXTCON - help - Say Y to enable charger-manager support, which allows multiple - chargers attached to a battery and multiple batteries attached to a - system. The charger-manager also can monitor charging status in - runtime and in suspend-to-RAM by waking up the system periodically - with help of suspend_again support. - -config CHARGER_MAX14577 - tristate "Maxim MAX14577/77836 battery charger driver" - depends on MFD_MAX14577 - help - Say Y to enable support for the battery charger control sysfs and - platform data of MAX14577/77836 MUICs. - -config CHARGER_MAX77693 - tristate "Maxim MAX77693 battery charger driver" - depends on MFD_MAX77693 - help - Say Y to enable support for the Maxim MAX77693 battery charger. - -config CHARGER_MAX8997 - tristate "Maxim MAX8997/MAX8966 PMIC battery charger driver" - depends on MFD_MAX8997 && REGULATOR_MAX8997 - help - Say Y to enable support for the battery charger control sysfs and - platform data of MAX8997/LP3974 PMICs. - -config CHARGER_MAX8998 - tristate "Maxim MAX8998/LP3974 PMIC battery charger driver" - depends on MFD_MAX8998 && REGULATOR_MAX8998 - help - Say Y to enable support for the battery charger control sysfs and - platform data of MAX8998/LP3974 PMICs. - -config CHARGER_QCOM_SMBB - tristate "Qualcomm Switch-Mode Battery Charger and Boost" - depends on MFD_SPMI_PMIC || COMPILE_TEST - depends on OF - depends on EXTCON - help - Say Y to include support for the Switch-Mode Battery Charger and - Boost (SMBB) hardware found in Qualcomm PM8941 PMICs. The charger - is an integrated, single-cell lithium-ion battery charger. DT - configuration is required for loading, see the devicetree - documentation for more detail. The base name for this driver is - 'pm8941_charger'. - -config CHARGER_BQ2415X - tristate "TI BQ2415x battery charger driver" - depends on I2C - help - Say Y to enable support for the TI BQ2415x battery charger - PMICs. - - You'll need this driver to charge batteries on e.g. Nokia - RX-51/N900. - -config CHARGER_BQ24190 - tristate "TI BQ24190 battery charger driver" - depends on I2C - depends on GPIOLIB || COMPILE_TEST - help - Say Y to enable support for the TI BQ24190 battery charger. - -config CHARGER_BQ24257 - tristate "TI BQ24250/24251/24257 battery charger driver" - depends on I2C - depends on GPIOLIB || COMPILE_TEST - depends on REGMAP_I2C - help - Say Y to enable support for the TI BQ24250, BQ24251, and BQ24257 battery - chargers. - -config CHARGER_BQ24735 - tristate "TI BQ24735 battery charger support" - depends on I2C - depends on GPIOLIB || COMPILE_TEST - help - Say Y to enable support for the TI BQ24735 battery charger. - -config CHARGER_BQ25890 - tristate "TI BQ25890 battery charger driver" - depends on I2C - depends on GPIOLIB || COMPILE_TEST - select REGMAP_I2C - help - Say Y to enable support for the TI BQ25890 battery charger. - -config CHARGER_SMB347 - tristate "Summit Microelectronics SMB347 Battery Charger" - depends on I2C - select REGMAP_I2C - help - Say Y to include support for Summit Microelectronics SMB347 - Battery Charger. - -config CHARGER_TPS65090 - tristate "TPS65090 battery charger driver" - depends on MFD_TPS65090 - help - Say Y here to enable support for battery charging with TPS65090 - PMIC chips. - -config CHARGER_TPS65217 - tristate "TPS65217 battery charger driver" - depends on MFD_TPS65217 - help - Say Y here to enable support for battery charging with TPS65217 - PMIC chips. - -config BATTERY_GAUGE_LTC2941 - tristate "LTC2941/LTC2943 Battery Gauge Driver" - depends on I2C - help - Say Y here to include support for LTC2941 and LTC2943 Battery - Gauge IC. The driver reports the charge count continuously, and - measures the voltage and temperature every 10 seconds. - -config AB8500_BM - bool "AB8500 Battery Management Driver" - depends on AB8500_CORE && AB8500_GPADC - help - Say Y to include support for AB8500 battery management. - -config BATTERY_GOLDFISH - tristate "Goldfish battery driver" - depends on GOLDFISH || COMPILE_TEST - depends on HAS_IOMEM - help - Say Y to enable support for the battery and AC power in the - Goldfish emulator. - -config BATTERY_RT5033 - tristate "RT5033 fuel gauge support" - depends on MFD_RT5033 - help - This adds support for battery fuel gauge in Richtek RT5033 PMIC. - The fuelgauge calculates and determines the battery state of charge - according to battery open circuit voltage. - -config CHARGER_RT9455 - tristate "Richtek RT9455 battery charger driver" - depends on I2C - depends on GPIOLIB || COMPILE_TEST - select REGMAP_I2C - help - Say Y to enable support for Richtek RT9455 battery charger. - -config AXP20X_POWER - tristate "AXP20x power supply driver" - depends on MFD_AXP20X - help - This driver provides support for the power supply features of - AXP20x PMIC. - -endif # POWER_SUPPLY - -source "drivers/power/reset/Kconfig" source "drivers/power/avs/Kconfig" +source "drivers/power/reset/Kconfig" +source "drivers/power/supply/Kconfig" diff --git a/drivers/power/Makefile b/drivers/power/Makefile index e46b75d448a5..ff35c712d824 100644 --- a/drivers/power/Makefile +++ b/drivers/power/Makefile @@ -1,76 +1,3 @@ -subdir-ccflags-$(CONFIG_POWER_SUPPLY_DEBUG) := -DDEBUG - -power_supply-y := power_supply_core.o -power_supply-$(CONFIG_SYSFS) += power_supply_sysfs.o -power_supply-$(CONFIG_LEDS_TRIGGERS) += power_supply_leds.o - -obj-$(CONFIG_POWER_SUPPLY) += power_supply.o -obj-$(CONFIG_GENERIC_ADC_BATTERY) += generic-adc-battery.o - -obj-$(CONFIG_PDA_POWER) += pda_power.o -obj-$(CONFIG_APM_POWER) += apm_power.o -obj-$(CONFIG_AXP20X_POWER) += axp20x_usb_power.o -obj-$(CONFIG_MAX8925_POWER) += max8925_power.o -obj-$(CONFIG_WM831X_BACKUP) += wm831x_backup.o -obj-$(CONFIG_WM831X_POWER) += wm831x_power.o -obj-$(CONFIG_WM8350_POWER) += wm8350_power.o -obj-$(CONFIG_TEST_POWER) += test_power.o - -obj-$(CONFIG_BATTERY_88PM860X) += 88pm860x_battery.o -obj-$(CONFIG_BATTERY_ACT8945A) += act8945a_charger.o -obj-$(CONFIG_BATTERY_DS2760) += ds2760_battery.o -obj-$(CONFIG_BATTERY_DS2780) += ds2780_battery.o -obj-$(CONFIG_BATTERY_DS2781) += ds2781_battery.o -obj-$(CONFIG_BATTERY_DS2782) += ds2782_battery.o -obj-$(CONFIG_BATTERY_GAUGE_LTC2941) += ltc2941-battery-gauge.o -obj-$(CONFIG_BATTERY_GOLDFISH) += goldfish_battery.o -obj-$(CONFIG_BATTERY_PMU) += pmu_battery.o -obj-$(CONFIG_BATTERY_OLPC) += olpc_battery.o -obj-$(CONFIG_BATTERY_TOSA) += tosa_battery.o -obj-$(CONFIG_BATTERY_COLLIE) += collie_battery.o -obj-$(CONFIG_BATTERY_IPAQ_MICRO) += ipaq_micro_battery.o -obj-$(CONFIG_BATTERY_WM97XX) += wm97xx_battery.o -obj-$(CONFIG_BATTERY_SBS) += sbs-battery.o -obj-$(CONFIG_BATTERY_BQ27XXX) += bq27xxx_battery.o -obj-$(CONFIG_BATTERY_BQ27XXX_I2C) += bq27xxx_battery_i2c.o -obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o -obj-$(CONFIG_BATTERY_DA9052) += da9052-battery.o -obj-$(CONFIG_CHARGER_DA9150) += da9150-charger.o -obj-$(CONFIG_BATTERY_DA9150) += da9150-fg.o -obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o -obj-$(CONFIG_BATTERY_MAX17042) += max17042_battery.o -obj-$(CONFIG_BATTERY_Z2) += z2_battery.o -obj-$(CONFIG_BATTERY_RT5033) += rt5033_battery.o -obj-$(CONFIG_CHARGER_RT9455) += rt9455_charger.o -obj-$(CONFIG_BATTERY_S3C_ADC) += s3c_adc_battery.o -obj-$(CONFIG_BATTERY_TWL4030_MADC) += twl4030_madc_battery.o -obj-$(CONFIG_CHARGER_88PM860X) += 88pm860x_charger.o -obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o -obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o -obj-$(CONFIG_BATTERY_INTEL_MID) += intel_mid_battery.o -obj-$(CONFIG_BATTERY_RX51) += rx51_battery.o -obj-$(CONFIG_AB8500_BM) += ab8500_bmdata.o ab8500_charger.o ab8500_fg.o ab8500_btemp.o abx500_chargalg.o pm2301_charger.o -obj-$(CONFIG_CHARGER_ISP1704) += isp1704_charger.o -obj-$(CONFIG_CHARGER_MAX8903) += max8903_charger.o -obj-$(CONFIG_CHARGER_TWL4030) += twl4030_charger.o -obj-$(CONFIG_CHARGER_LP8727) += lp8727_charger.o -obj-$(CONFIG_CHARGER_LP8788) += lp8788-charger.o -obj-$(CONFIG_CHARGER_GPIO) += gpio-charger.o -obj-$(CONFIG_CHARGER_MANAGER) += charger-manager.o -obj-$(CONFIG_CHARGER_MAX14577) += max14577_charger.o -obj-$(CONFIG_CHARGER_MAX77693) += max77693_charger.o -obj-$(CONFIG_CHARGER_MAX8997) += max8997_charger.o -obj-$(CONFIG_CHARGER_MAX8998) += max8998_charger.o -obj-$(CONFIG_CHARGER_QCOM_SMBB) += qcom_smbb.o -obj-$(CONFIG_CHARGER_BQ2415X) += bq2415x_charger.o -obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o -obj-$(CONFIG_CHARGER_BQ24257) += bq24257_charger.o -obj-$(CONFIG_CHARGER_BQ24735) += bq24735-charger.o -obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o obj-$(CONFIG_POWER_AVS) += avs/ -obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o -obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o -obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o obj-$(CONFIG_POWER_RESET) += reset/ -obj-$(CONFIG_AXP288_FUEL_GAUGE) += axp288_fuel_gauge.o -obj-$(CONFIG_AXP288_CHARGER) += axp288_charger.o +obj-$(CONFIG_POWER_SUPPLY) += supply/ diff --git a/drivers/power/reset/reboot-mode.c b/drivers/power/reset/reboot-mode.c index 2dfbbce0f817..fb512183ace3 100644 --- a/drivers/power/reset/reboot-mode.c +++ b/drivers/power/reset/reboot-mode.c @@ -135,6 +135,65 @@ int reboot_mode_unregister(struct reboot_mode_driver *reboot) } EXPORT_SYMBOL_GPL(reboot_mode_unregister); +static void devm_reboot_mode_release(struct device *dev, void *res) +{ + reboot_mode_unregister(*(struct reboot_mode_driver **)res); +} + +/** + * devm_reboot_mode_register() - resource managed reboot_mode_register() + * @dev: device to associate this resource with + * @reboot: reboot mode driver + * + * Returns: 0 on success or a negative error code on failure. + */ +int devm_reboot_mode_register(struct device *dev, + struct reboot_mode_driver *reboot) +{ + struct reboot_mode_driver **dr; + int rc; + + dr = devres_alloc(devm_reboot_mode_release, sizeof(*dr), GFP_KERNEL); + if (!dr) + return -ENOMEM; + + rc = reboot_mode_register(reboot); + if (rc) { + devres_free(dr); + return rc; + } + + *dr = reboot; + devres_add(dev, dr); + + return 0; +} +EXPORT_SYMBOL_GPL(devm_reboot_mode_register); + +static int devm_reboot_mode_match(struct device *dev, void *res, void *data) +{ + struct reboot_mode_driver **p = res; + + if (WARN_ON(!p || !*p)) + return 0; + + return *p == data; +} + +/** + * devm_reboot_mode_unregister() - resource managed reboot_mode_unregister() + * @dev: device to associate this resource with + * @reboot: reboot mode driver + */ +void devm_reboot_mode_unregister(struct device *dev, + struct reboot_mode_driver *reboot) +{ + WARN_ON(devres_release(dev, + devm_reboot_mode_release, + devm_reboot_mode_match, reboot)); +} +EXPORT_SYMBOL_GPL(devm_reboot_mode_unregister); + MODULE_AUTHOR("Andy Yan <andy.yan@rock-chips.com"); MODULE_DESCRIPTION("System reboot mode core library"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/power/reset/reboot-mode.h b/drivers/power/reset/reboot-mode.h index 2491bb71f591..75f7fe5c881f 100644 --- a/drivers/power/reset/reboot-mode.h +++ b/drivers/power/reset/reboot-mode.h @@ -10,5 +10,9 @@ struct reboot_mode_driver { int reboot_mode_register(struct reboot_mode_driver *reboot); int reboot_mode_unregister(struct reboot_mode_driver *reboot); +int devm_reboot_mode_register(struct device *dev, + struct reboot_mode_driver *reboot); +void devm_reboot_mode_unregister(struct device *dev, + struct reboot_mode_driver *reboot); #endif diff --git a/drivers/power/reset/syscon-reboot-mode.c b/drivers/power/reset/syscon-reboot-mode.c index 9e1cba5dd58e..1ecb51d67149 100644 --- a/drivers/power/reset/syscon-reboot-mode.c +++ b/drivers/power/reset/syscon-reboot-mode.c @@ -53,8 +53,6 @@ static int syscon_reboot_mode_probe(struct platform_device *pdev) syscon_rbm->reboot.write = syscon_reboot_mode_write; syscon_rbm->mask = 0xffffffff; - dev_set_drvdata(&pdev->dev, syscon_rbm); - syscon_rbm->map = syscon_node_to_regmap(pdev->dev.parent->of_node); if (IS_ERR(syscon_rbm->map)) return PTR_ERR(syscon_rbm->map); @@ -65,20 +63,13 @@ static int syscon_reboot_mode_probe(struct platform_device *pdev) of_property_read_u32(pdev->dev.of_node, "mask", &syscon_rbm->mask); - ret = reboot_mode_register(&syscon_rbm->reboot); + ret = devm_reboot_mode_register(&pdev->dev, &syscon_rbm->reboot); if (ret) dev_err(&pdev->dev, "can't register reboot mode\n"); return ret; } -static int syscon_reboot_mode_remove(struct platform_device *pdev) -{ - struct syscon_reboot_mode *syscon_rbm = dev_get_drvdata(&pdev->dev); - - return reboot_mode_unregister(&syscon_rbm->reboot); -} - static const struct of_device_id syscon_reboot_mode_of_match[] = { { .compatible = "syscon-reboot-mode" }, {} @@ -86,7 +77,6 @@ static const struct of_device_id syscon_reboot_mode_of_match[] = { static struct platform_driver syscon_reboot_mode_driver = { .probe = syscon_reboot_mode_probe, - .remove = syscon_reboot_mode_remove, .driver = { .name = "syscon-reboot-mode", .of_match_table = syscon_reboot_mode_of_match, diff --git a/drivers/power/88pm860x_battery.c b/drivers/power/supply/88pm860x_battery.c index 63c57dc82ac1..63c57dc82ac1 100644 --- a/drivers/power/88pm860x_battery.c +++ b/drivers/power/supply/88pm860x_battery.c diff --git a/drivers/power/88pm860x_charger.c b/drivers/power/supply/88pm860x_charger.c index 2b82e44d9027..2b82e44d9027 100644 --- a/drivers/power/88pm860x_charger.c +++ b/drivers/power/supply/88pm860x_charger.c diff --git a/drivers/power/supply/Kconfig b/drivers/power/supply/Kconfig new file mode 100644 index 000000000000..76806a0be820 --- /dev/null +++ b/drivers/power/supply/Kconfig @@ -0,0 +1,514 @@ +menuconfig POWER_SUPPLY + bool "Power supply class support" + help + Say Y here to enable power supply class support. This allows + power supply (batteries, AC, USB) monitoring by userspace + via sysfs and uevent (if available) and/or APM kernel interface + (if selected below). + +if POWER_SUPPLY + +config POWER_SUPPLY_DEBUG + bool "Power supply debug" + help + Say Y here to enable debugging messages for power supply class + and drivers. + +config PDA_POWER + tristate "Generic PDA/phone power driver" + depends on !S390 + help + Say Y here to enable generic power driver for PDAs and phones with + one or two external power supplies (AC/USB) connected to main and + backup batteries, and optional builtin charger. + +config APM_POWER + tristate "APM emulation for class batteries" + depends on APM_EMULATION + help + Say Y here to enable support APM status emulation using + battery class devices. + +config GENERIC_ADC_BATTERY + tristate "Generic battery support using IIO" + depends on IIO + help + Say Y here to enable support for the generic battery driver + which uses IIO framework to read adc. + +config MAX8925_POWER + tristate "MAX8925 battery charger support" + depends on MFD_MAX8925 + help + Say Y here to enable support for the battery charger in the Maxim + MAX8925 PMIC. + +config WM831X_BACKUP + tristate "WM831X backup battery charger support" + depends on MFD_WM831X + help + Say Y here to enable support for the backup battery charger + in the Wolfson Microelectronics WM831x PMICs. + +config WM831X_POWER + tristate "WM831X PMU support" + depends on MFD_WM831X + help + Say Y here to enable support for the power management unit + provided by Wolfson Microelectronics WM831x PMICs. + +config WM8350_POWER + tristate "WM8350 PMU support" + depends on MFD_WM8350 + help + Say Y here to enable support for the power management unit + provided by the Wolfson Microelectronics WM8350 PMIC. + +config TEST_POWER + tristate "Test power driver" + help + This driver is used for testing. It's safe to say M here. + +config BATTERY_88PM860X + tristate "Marvell 88PM860x battery driver" + depends on MFD_88PM860X + help + Say Y here to enable battery monitor for Marvell 88PM860x chip. + +config BATTERY_ACT8945A + tristate "Active-semi ACT8945A charger driver" + depends on MFD_ACT8945A || COMPILE_TEST + help + Say Y here to enable support for power supply provided by + Active-semi ActivePath ACT8945A charger. + +config BATTERY_DS2760 + tristate "DS2760 battery driver (HP iPAQ & others)" + depends on W1 && W1_SLAVE_DS2760 + help + Say Y here to enable support for batteries with ds2760 chip. + +config BATTERY_DS2780 + tristate "DS2780 battery driver" + depends on HAS_IOMEM + select W1 + select W1_SLAVE_DS2780 + help + Say Y here to enable support for batteries with ds2780 chip. + +config BATTERY_DS2781 + tristate "DS2781 battery driver" + depends on HAS_IOMEM + select W1 + select W1_SLAVE_DS2781 + help + If you enable this you will have the DS2781 battery driver support. + + The battery monitor chip is used in many batteries/devices + as the one who is responsible for charging/discharging/monitoring + Li+ batteries. + + If you are unsure, say N. + +config BATTERY_DS2782 + tristate "DS2782/DS2786 standalone gas-gauge" + depends on I2C + help + Say Y here to enable support for the DS2782/DS2786 standalone battery + gas-gauge. + +config BATTERY_PMU + tristate "Apple PMU battery" + depends on PPC32 && ADB_PMU + help + Say Y here to expose battery information on Apple machines + through the generic battery class. + +config BATTERY_OLPC + tristate "One Laptop Per Child battery" + depends on X86_32 && OLPC + help + Say Y to enable support for the battery on the OLPC laptop. + +config BATTERY_TOSA + tristate "Sharp SL-6000 (tosa) battery" + depends on MACH_TOSA && MFD_TC6393XB && TOUCHSCREEN_WM97XX + help + Say Y to enable support for the battery on the Sharp Zaurus + SL-6000 (tosa) models. + +config BATTERY_COLLIE + tristate "Sharp SL-5500 (collie) battery" + depends on SA1100_COLLIE && MCP_UCB1200 + help + Say Y to enable support for the battery on the Sharp Zaurus + SL-5500 (collie) models. + +config BATTERY_IPAQ_MICRO + tristate "iPAQ Atmel Micro ASIC battery driver" + depends on MFD_IPAQ_MICRO + help + Choose this option if you want to monitor battery status on + Compaq/HP iPAQ h3100 and h3600. + +config BATTERY_WM97XX + bool "WM97xx generic battery driver" + depends on TOUCHSCREEN_WM97XX=y + help + Say Y to enable support for battery measured by WM97xx aux port. + +config BATTERY_SBS + tristate "SBS Compliant gas gauge" + depends on I2C + help + Say Y to include support for SBS battery driver for SBS-compliant + gas gauges. + +config BATTERY_BQ27XXX + tristate "BQ27xxx battery driver" + help + Say Y here to enable support for batteries with BQ27xxx chips. + +config BATTERY_BQ27XXX_I2C + tristate "BQ27xxx I2C support" + depends on BATTERY_BQ27XXX + depends on I2C + default y + help + Say Y here to enable support for batteries with BQ27xxx chips + connected over an I2C bus. + +config BATTERY_DA9030 + tristate "DA9030 battery driver" + depends on PMIC_DA903X + help + Say Y here to enable support for batteries charger integrated into + DA9030 PMIC. + +config BATTERY_DA9052 + tristate "Dialog DA9052 Battery" + depends on PMIC_DA9052 + help + Say Y here to enable support for batteries charger integrated into + DA9052 PMIC. + +config CHARGER_DA9150 + tristate "Dialog Semiconductor DA9150 Charger support" + depends on MFD_DA9150 + depends on DA9150_GPADC + depends on IIO + help + Say Y here to enable support for charger unit of the DA9150 + Integrated Charger & Fuel-Gauge IC. + + This driver can also be built as a module. If so, the module will be + called da9150-charger. + +config BATTERY_DA9150 + tristate "Dialog Semiconductor DA9150 Fuel Gauge support" + depends on MFD_DA9150 + help + Say Y here to enable support for the Fuel-Gauge unit of the DA9150 + Integrated Charger & Fuel-Gauge IC + + This driver can also be built as a module. If so, the module will be + called da9150-fg. + +config AXP288_CHARGER + tristate "X-Powers AXP288 Charger" + depends on MFD_AXP20X && EXTCON_AXP288 + help + Say yes here to have support X-Power AXP288 power management IC (PMIC) + integrated charger. + +config AXP288_FUEL_GAUGE + tristate "X-Powers AXP288 Fuel Gauge" + depends on MFD_AXP20X && IIO + help + Say yes here to have support for X-Power power management IC (PMIC) + Fuel Gauge. The device provides battery statistics and status + monitoring as well as alerts for battery over/under voltage and + over/under temperature. + +config BATTERY_MAX17040 + tristate "Maxim MAX17040 Fuel Gauge" + depends on I2C + help + MAX17040 is fuel-gauge systems for lithium-ion (Li+) batteries + in handheld and portable equipment. The MAX17040 is configured + to operate with a single lithium cell + +config BATTERY_MAX17042 + tristate "Maxim MAX17042/17047/17050/8997/8966 Fuel Gauge" + depends on I2C + select REGMAP_I2C + help + MAX17042 is fuel-gauge systems for lithium-ion (Li+) batteries + in handheld and portable equipment. The MAX17042 is configured + to operate with a single lithium cell. MAX8997 and MAX8966 are + multi-function devices that include fuel gauages that are compatible + with MAX17042. This driver also supports max17047/50 chips which are + improved version of max17042. + +config BATTERY_Z2 + tristate "Z2 battery driver" + depends on I2C && MACH_ZIPIT2 + help + Say Y to include support for the battery on the Zipit Z2. + +config BATTERY_S3C_ADC + tristate "Battery driver for Samsung ADC based monitoring" + depends on S3C_ADC + help + Say Y here to enable support for iPAQ h1930/h1940/rx1950 battery + +config BATTERY_TWL4030_MADC + tristate "TWL4030 MADC battery driver" + depends on TWL4030_MADC + help + Say Y here to enable this dumb driver for batteries managed + through the TWL4030 MADC. + +config CHARGER_88PM860X + tristate "Marvell 88PM860x Charger driver" + depends on MFD_88PM860X && BATTERY_88PM860X + help + Say Y here to enable charger for Marvell 88PM860x chip. + +config CHARGER_PCF50633 + tristate "NXP PCF50633 MBC" + depends on MFD_PCF50633 + help + Say Y to include support for NXP PCF50633 Main Battery Charger. + +config BATTERY_JZ4740 + tristate "Ingenic JZ4740 battery" + depends on MACH_JZ4740 + depends on MFD_JZ4740_ADC + help + Say Y to enable support for the battery on Ingenic JZ4740 based + boards. + + This driver can be build as a module. If so, the module will be + called jz4740-battery. + +config BATTERY_INTEL_MID + tristate "Battery driver for Intel MID platforms" + depends on INTEL_SCU_IPC && SPI + help + Say Y here to enable the battery driver on Intel MID + platforms. + +config BATTERY_RX51 + tristate "Nokia RX-51 (N900) battery driver" + depends on TWL4030_MADC + help + Say Y here to enable support for battery information on Nokia + RX-51, also known as N900 tablet. + +config CHARGER_ISP1704 + tristate "ISP1704 USB Charger Detection" + depends on USB_PHY + depends on USB_GADGET || !USB_GADGET # if USB_GADGET=m, this can't be 'y' + help + Say Y to enable support for USB Charger Detection with + ISP1707/ISP1704 USB transceivers. + +config CHARGER_MAX8903 + tristate "MAX8903 Battery DC-DC Charger for USB and Adapter Power" + help + Say Y to enable support for the MAX8903 DC-DC charger and sysfs. + The driver supports controlling charger-enable and current-limit + pins based on the status of charger connections with interrupt + handlers. + +config CHARGER_TWL4030 + tristate "OMAP TWL4030 BCI charger driver" + depends on IIO && TWL4030_CORE + help + Say Y here to enable support for TWL4030 Battery Charge Interface. + +config CHARGER_LP8727 + tristate "TI/National Semiconductor LP8727 charger driver" + depends on I2C + help + Say Y here to enable support for LP8727 Charger Driver. + +config CHARGER_LP8788 + tristate "TI LP8788 charger driver" + depends on MFD_LP8788 + depends on LP8788_ADC + depends on IIO + help + Say Y to enable support for the LP8788 linear charger. + +config CHARGER_GPIO + tristate "GPIO charger" + depends on GPIOLIB || COMPILE_TEST + help + Say Y to include support for chargers which report their online status + through a GPIO pin. + + This driver can be build as a module. If so, the module will be + called gpio-charger. + +config CHARGER_MANAGER + bool "Battery charger manager for multiple chargers" + depends on REGULATOR + select EXTCON + help + Say Y to enable charger-manager support, which allows multiple + chargers attached to a battery and multiple batteries attached to a + system. The charger-manager also can monitor charging status in + runtime and in suspend-to-RAM by waking up the system periodically + with help of suspend_again support. + +config CHARGER_MAX14577 + tristate "Maxim MAX14577/77836 battery charger driver" + depends on MFD_MAX14577 + help + Say Y to enable support for the battery charger control sysfs and + platform data of MAX14577/77836 MUICs. + +config CHARGER_MAX77693 + tristate "Maxim MAX77693 battery charger driver" + depends on MFD_MAX77693 + help + Say Y to enable support for the Maxim MAX77693 battery charger. + +config CHARGER_MAX8997 + tristate "Maxim MAX8997/MAX8966 PMIC battery charger driver" + depends on MFD_MAX8997 && REGULATOR_MAX8997 + help + Say Y to enable support for the battery charger control sysfs and + platform data of MAX8997/LP3974 PMICs. + +config CHARGER_MAX8998 + tristate "Maxim MAX8998/LP3974 PMIC battery charger driver" + depends on MFD_MAX8998 && REGULATOR_MAX8998 + help + Say Y to enable support for the battery charger control sysfs and + platform data of MAX8998/LP3974 PMICs. + +config CHARGER_QCOM_SMBB + tristate "Qualcomm Switch-Mode Battery Charger and Boost" + depends on MFD_SPMI_PMIC || COMPILE_TEST + depends on OF + depends on EXTCON + help + Say Y to include support for the Switch-Mode Battery Charger and + Boost (SMBB) hardware found in Qualcomm PM8941 PMICs. The charger + is an integrated, single-cell lithium-ion battery charger. DT + configuration is required for loading, see the devicetree + documentation for more detail. The base name for this driver is + 'pm8941_charger'. + +config CHARGER_BQ2415X + tristate "TI BQ2415x battery charger driver" + depends on I2C + help + Say Y to enable support for the TI BQ2415x battery charger + PMICs. + + You'll need this driver to charge batteries on e.g. Nokia + RX-51/N900. + +config CHARGER_BQ24190 + tristate "TI BQ24190 battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + help + Say Y to enable support for the TI BQ24190 battery charger. + +config CHARGER_BQ24257 + tristate "TI BQ24250/24251/24257 battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + depends on REGMAP_I2C + help + Say Y to enable support for the TI BQ24250, BQ24251, and BQ24257 battery + chargers. + +config CHARGER_BQ24735 + tristate "TI BQ24735 battery charger support" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + help + Say Y to enable support for the TI BQ24735 battery charger. + +config CHARGER_BQ25890 + tristate "TI BQ25890 battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + select REGMAP_I2C + help + Say Y to enable support for the TI BQ25890 battery charger. + +config CHARGER_SMB347 + tristate "Summit Microelectronics SMB347 Battery Charger" + depends on I2C + select REGMAP_I2C + help + Say Y to include support for Summit Microelectronics SMB347 + Battery Charger. + +config CHARGER_TPS65090 + tristate "TPS65090 battery charger driver" + depends on MFD_TPS65090 + help + Say Y here to enable support for battery charging with TPS65090 + PMIC chips. + +config CHARGER_TPS65217 + tristate "TPS65217 battery charger driver" + depends on MFD_TPS65217 + help + Say Y here to enable support for battery charging with TPS65217 + PMIC chips. + +config BATTERY_GAUGE_LTC2941 + tristate "LTC2941/LTC2943 Battery Gauge Driver" + depends on I2C + help + Say Y here to include support for LTC2941 and LTC2943 Battery + Gauge IC. The driver reports the charge count continuously, and + measures the voltage and temperature every 10 seconds. + +config AB8500_BM + bool "AB8500 Battery Management Driver" + depends on AB8500_CORE && AB8500_GPADC + help + Say Y to include support for AB8500 battery management. + +config BATTERY_GOLDFISH + tristate "Goldfish battery driver" + depends on GOLDFISH || COMPILE_TEST + depends on HAS_IOMEM + help + Say Y to enable support for the battery and AC power in the + Goldfish emulator. + +config BATTERY_RT5033 + tristate "RT5033 fuel gauge support" + depends on MFD_RT5033 + help + This adds support for battery fuel gauge in Richtek RT5033 PMIC. + The fuelgauge calculates and determines the battery state of charge + according to battery open circuit voltage. + +config CHARGER_RT9455 + tristate "Richtek RT9455 battery charger driver" + depends on I2C + depends on GPIOLIB || COMPILE_TEST + select REGMAP_I2C + help + Say Y to enable support for Richtek RT9455 battery charger. + +config AXP20X_POWER + tristate "AXP20x power supply driver" + depends on MFD_AXP20X + help + This driver provides support for the power supply features of + AXP20x PMIC. + +endif # POWER_SUPPLY diff --git a/drivers/power/supply/Makefile b/drivers/power/supply/Makefile new file mode 100644 index 000000000000..36c599d9a495 --- /dev/null +++ b/drivers/power/supply/Makefile @@ -0,0 +1,74 @@ +subdir-ccflags-$(CONFIG_POWER_SUPPLY_DEBUG) := -DDEBUG + +power_supply-y := power_supply_core.o +power_supply-$(CONFIG_SYSFS) += power_supply_sysfs.o +power_supply-$(CONFIG_LEDS_TRIGGERS) += power_supply_leds.o + +obj-$(CONFIG_POWER_SUPPLY) += power_supply.o +obj-$(CONFIG_GENERIC_ADC_BATTERY) += generic-adc-battery.o + +obj-$(CONFIG_PDA_POWER) += pda_power.o +obj-$(CONFIG_APM_POWER) += apm_power.o +obj-$(CONFIG_AXP20X_POWER) += axp20x_usb_power.o +obj-$(CONFIG_MAX8925_POWER) += max8925_power.o +obj-$(CONFIG_WM831X_BACKUP) += wm831x_backup.o +obj-$(CONFIG_WM831X_POWER) += wm831x_power.o +obj-$(CONFIG_WM8350_POWER) += wm8350_power.o +obj-$(CONFIG_TEST_POWER) += test_power.o + +obj-$(CONFIG_BATTERY_88PM860X) += 88pm860x_battery.o +obj-$(CONFIG_BATTERY_ACT8945A) += act8945a_charger.o +obj-$(CONFIG_BATTERY_DS2760) += ds2760_battery.o +obj-$(CONFIG_BATTERY_DS2780) += ds2780_battery.o +obj-$(CONFIG_BATTERY_DS2781) += ds2781_battery.o +obj-$(CONFIG_BATTERY_DS2782) += ds2782_battery.o +obj-$(CONFIG_BATTERY_GAUGE_LTC2941) += ltc2941-battery-gauge.o +obj-$(CONFIG_BATTERY_GOLDFISH) += goldfish_battery.o +obj-$(CONFIG_BATTERY_PMU) += pmu_battery.o +obj-$(CONFIG_BATTERY_OLPC) += olpc_battery.o +obj-$(CONFIG_BATTERY_TOSA) += tosa_battery.o +obj-$(CONFIG_BATTERY_COLLIE) += collie_battery.o +obj-$(CONFIG_BATTERY_IPAQ_MICRO) += ipaq_micro_battery.o +obj-$(CONFIG_BATTERY_WM97XX) += wm97xx_battery.o +obj-$(CONFIG_BATTERY_SBS) += sbs-battery.o +obj-$(CONFIG_BATTERY_BQ27XXX) += bq27xxx_battery.o +obj-$(CONFIG_BATTERY_BQ27XXX_I2C) += bq27xxx_battery_i2c.o +obj-$(CONFIG_BATTERY_DA9030) += da9030_battery.o +obj-$(CONFIG_BATTERY_DA9052) += da9052-battery.o +obj-$(CONFIG_CHARGER_DA9150) += da9150-charger.o +obj-$(CONFIG_BATTERY_DA9150) += da9150-fg.o +obj-$(CONFIG_BATTERY_MAX17040) += max17040_battery.o +obj-$(CONFIG_BATTERY_MAX17042) += max17042_battery.o +obj-$(CONFIG_BATTERY_Z2) += z2_battery.o +obj-$(CONFIG_BATTERY_RT5033) += rt5033_battery.o +obj-$(CONFIG_CHARGER_RT9455) += rt9455_charger.o +obj-$(CONFIG_BATTERY_S3C_ADC) += s3c_adc_battery.o +obj-$(CONFIG_BATTERY_TWL4030_MADC) += twl4030_madc_battery.o +obj-$(CONFIG_CHARGER_88PM860X) += 88pm860x_charger.o +obj-$(CONFIG_CHARGER_PCF50633) += pcf50633-charger.o +obj-$(CONFIG_BATTERY_JZ4740) += jz4740-battery.o +obj-$(CONFIG_BATTERY_INTEL_MID) += intel_mid_battery.o +obj-$(CONFIG_BATTERY_RX51) += rx51_battery.o +obj-$(CONFIG_AB8500_BM) += ab8500_bmdata.o ab8500_charger.o ab8500_fg.o ab8500_btemp.o abx500_chargalg.o pm2301_charger.o +obj-$(CONFIG_CHARGER_ISP1704) += isp1704_charger.o +obj-$(CONFIG_CHARGER_MAX8903) += max8903_charger.o +obj-$(CONFIG_CHARGER_TWL4030) += twl4030_charger.o +obj-$(CONFIG_CHARGER_LP8727) += lp8727_charger.o +obj-$(CONFIG_CHARGER_LP8788) += lp8788-charger.o +obj-$(CONFIG_CHARGER_GPIO) += gpio-charger.o +obj-$(CONFIG_CHARGER_MANAGER) += charger-manager.o +obj-$(CONFIG_CHARGER_MAX14577) += max14577_charger.o +obj-$(CONFIG_CHARGER_MAX77693) += max77693_charger.o +obj-$(CONFIG_CHARGER_MAX8997) += max8997_charger.o +obj-$(CONFIG_CHARGER_MAX8998) += max8998_charger.o +obj-$(CONFIG_CHARGER_QCOM_SMBB) += qcom_smbb.o +obj-$(CONFIG_CHARGER_BQ2415X) += bq2415x_charger.o +obj-$(CONFIG_CHARGER_BQ24190) += bq24190_charger.o +obj-$(CONFIG_CHARGER_BQ24257) += bq24257_charger.o +obj-$(CONFIG_CHARGER_BQ24735) += bq24735-charger.o +obj-$(CONFIG_CHARGER_BQ25890) += bq25890_charger.o +obj-$(CONFIG_CHARGER_SMB347) += smb347-charger.o +obj-$(CONFIG_CHARGER_TPS65090) += tps65090-charger.o +obj-$(CONFIG_CHARGER_TPS65217) += tps65217_charger.o +obj-$(CONFIG_AXP288_FUEL_GAUGE) += axp288_fuel_gauge.o +obj-$(CONFIG_AXP288_CHARGER) += axp288_charger.o diff --git a/drivers/power/ab8500_bmdata.c b/drivers/power/supply/ab8500_bmdata.c index d29864533093..d29864533093 100644 --- a/drivers/power/ab8500_bmdata.c +++ b/drivers/power/supply/ab8500_bmdata.c diff --git a/drivers/power/ab8500_btemp.c b/drivers/power/supply/ab8500_btemp.c index bf2e5dd301e7..6ffdc18f2599 100644 --- a/drivers/power/ab8500_btemp.c +++ b/drivers/power/supply/ab8500_btemp.c @@ -1095,7 +1095,7 @@ static int ab8500_btemp_probe(struct platform_device *pdev) /* Create a work queue for the btemp */ di->btemp_wq = - create_singlethread_workqueue("ab8500_btemp_wq"); + alloc_workqueue("ab8500_btemp_wq", WQ_MEM_RECLAIM, 0); if (di->btemp_wq == NULL) { dev_err(di->dev, "failed to create work queue\n"); return -ENOMEM; diff --git a/drivers/power/ab8500_charger.c b/drivers/power/supply/ab8500_charger.c index 30de5d42b26a..5cee9aa87aa3 100644 --- a/drivers/power/ab8500_charger.c +++ b/drivers/power/supply/ab8500_charger.c @@ -3540,8 +3540,8 @@ static int ab8500_charger_probe(struct platform_device *pdev) di->usb_state.usb_current = -1; /* Create a work queue for the charger */ - di->charger_wq = - create_singlethread_workqueue("ab8500_charger_wq"); + di->charger_wq = alloc_ordered_workqueue("ab8500_charger_wq", + WQ_MEM_RECLAIM); if (di->charger_wq == NULL) { dev_err(di->dev, "failed to create work queue\n"); return -ENOMEM; diff --git a/drivers/power/ab8500_fg.c b/drivers/power/supply/ab8500_fg.c index 5a36cf88578a..199f2dbb0044 100644 --- a/drivers/power/ab8500_fg.c +++ b/drivers/power/supply/ab8500_fg.c @@ -3096,7 +3096,7 @@ static int ab8500_fg_probe(struct platform_device *pdev) ab8500_fg_discharge_state_to(di, AB8500_FG_DISCHARGE_INIT); /* Create a work queue for running the FG algorithm */ - di->fg_wq = create_singlethread_workqueue("ab8500_fg_wq"); + di->fg_wq = alloc_ordered_workqueue("ab8500_fg_wq", WQ_MEM_RECLAIM); if (di->fg_wq == NULL) { dev_err(di->dev, "failed to create work queue\n"); return -ENOMEM; diff --git a/drivers/power/abx500_chargalg.c b/drivers/power/supply/abx500_chargalg.c index d9104b1ab7cf..a4411d6bbc96 100644 --- a/drivers/power/abx500_chargalg.c +++ b/drivers/power/supply/abx500_chargalg.c @@ -2091,8 +2091,8 @@ static int abx500_chargalg_probe(struct platform_device *pdev) abx500_chargalg_maintenance_timer_expired; /* Create a work queue for the chargalg */ - di->chargalg_wq = - create_singlethread_workqueue("abx500_chargalg_wq"); + di->chargalg_wq = alloc_ordered_workqueue("abx500_chargalg_wq", + WQ_MEM_RECLAIM); if (di->chargalg_wq == NULL) { dev_err(di->dev, "failed to create work queue\n"); return -ENOMEM; diff --git a/drivers/power/act8945a_charger.c b/drivers/power/supply/act8945a_charger.c index b5c00e45741e..b5c00e45741e 100644 --- a/drivers/power/act8945a_charger.c +++ b/drivers/power/supply/act8945a_charger.c diff --git a/drivers/power/apm_power.c b/drivers/power/supply/apm_power.c index 9d1a7fbcaed4..9d1a7fbcaed4 100644 --- a/drivers/power/apm_power.c +++ b/drivers/power/supply/apm_power.c diff --git a/drivers/power/axp20x_usb_power.c b/drivers/power/supply/axp20x_usb_power.c index 6af6feb7058d..6af6feb7058d 100644 --- a/drivers/power/axp20x_usb_power.c +++ b/drivers/power/supply/axp20x_usb_power.c diff --git a/drivers/power/axp288_charger.c b/drivers/power/supply/axp288_charger.c index 4030eeb7cf65..75b8e0c7402b 100644 --- a/drivers/power/axp288_charger.c +++ b/drivers/power/supply/axp288_charger.c @@ -23,7 +23,6 @@ #include <linux/usb/otg.h> #include <linux/notifier.h> #include <linux/power_supply.h> -#include <linux/notifier.h> #include <linux/property.h> #include <linux/mfd/axp20x.h> #include <linux/extcon.h> diff --git a/drivers/power/axp288_fuel_gauge.c b/drivers/power/supply/axp288_fuel_gauge.c index 50c0110d6b58..5bdde692f724 100644 --- a/drivers/power/axp288_fuel_gauge.c +++ b/drivers/power/supply/axp288_fuel_gauge.c @@ -22,7 +22,6 @@ #include <linux/regmap.h> #include <linux/jiffies.h> #include <linux/interrupt.h> -#include <linux/device.h> #include <linux/workqueue.h> #include <linux/mfd/axp20x.h> #include <linux/platform_device.h> diff --git a/drivers/power/bq2415x_charger.c b/drivers/power/supply/bq2415x_charger.c index 73e2f0b79dd4..73e2f0b79dd4 100644 --- a/drivers/power/bq2415x_charger.c +++ b/drivers/power/supply/bq2415x_charger.c diff --git a/drivers/power/bq24190_charger.c b/drivers/power/supply/bq24190_charger.c index f5746b9f4e83..f5746b9f4e83 100644 --- a/drivers/power/bq24190_charger.c +++ b/drivers/power/supply/bq24190_charger.c diff --git a/drivers/power/bq24257_charger.c b/drivers/power/supply/bq24257_charger.c index 1fea2c7ef97f..1fea2c7ef97f 100644 --- a/drivers/power/bq24257_charger.c +++ b/drivers/power/supply/bq24257_charger.c diff --git a/drivers/power/bq24735-charger.c b/drivers/power/supply/bq24735-charger.c index fa454c19ce17..fa454c19ce17 100644 --- a/drivers/power/bq24735-charger.c +++ b/drivers/power/supply/bq24735-charger.c diff --git a/drivers/power/bq25890_charger.c b/drivers/power/supply/bq25890_charger.c index f993a55cde20..f993a55cde20 100644 --- a/drivers/power/bq25890_charger.c +++ b/drivers/power/supply/bq25890_charger.c diff --git a/drivers/power/bq27xxx_battery.c b/drivers/power/supply/bq27xxx_battery.c index 323d05a12f9b..3f57dd54803a 100644 --- a/drivers/power/bq27xxx_battery.c +++ b/drivers/power/supply/bq27xxx_battery.c @@ -644,8 +644,9 @@ static bool bq27xxx_battery_dead(struct bq27xxx_device_info *di, u16 flags) static int bq27xxx_battery_read_health(struct bq27xxx_device_info *di) { int flags; + bool has_singe_flag = di->chip == BQ27000 || di->chip == BQ27010; - flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, false); + flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, has_singe_flag); if (flags < 0) { dev_err(di->dev, "error reading flag register:%d\n", flags); return flags; @@ -745,7 +746,7 @@ static int bq27xxx_battery_current(struct bq27xxx_device_info *di, } if (di->chip == BQ27000 || di->chip == BQ27010) { - flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, false); + flags = bq27xxx_read(di, BQ27XXX_REG_FLAGS, true); if (flags & BQ27000_FLAG_CHGS) { dev_dbg(di->dev, "negative current!\n"); curr = -curr; diff --git a/drivers/power/bq27xxx_battery_i2c.c b/drivers/power/supply/bq27xxx_battery_i2c.c index 85d4ea2a9c20..85d4ea2a9c20 100644 --- a/drivers/power/bq27xxx_battery_i2c.c +++ b/drivers/power/supply/bq27xxx_battery_i2c.c diff --git a/drivers/power/charger-manager.c b/drivers/power/supply/charger-manager.c index e664ca7c0afd..e664ca7c0afd 100644 --- a/drivers/power/charger-manager.c +++ b/drivers/power/supply/charger-manager.c diff --git a/drivers/power/collie_battery.c b/drivers/power/supply/collie_battery.c index 3a0bc608d4b5..3a0bc608d4b5 100644 --- a/drivers/power/collie_battery.c +++ b/drivers/power/supply/collie_battery.c diff --git a/drivers/power/da9030_battery.c b/drivers/power/supply/da9030_battery.c index 5ca0f4d90792..5ca0f4d90792 100644 --- a/drivers/power/da9030_battery.c +++ b/drivers/power/supply/da9030_battery.c diff --git a/drivers/power/da9052-battery.c b/drivers/power/supply/da9052-battery.c index 830ec46fe7d0..830ec46fe7d0 100644 --- a/drivers/power/da9052-battery.c +++ b/drivers/power/supply/da9052-battery.c diff --git a/drivers/power/da9150-charger.c b/drivers/power/supply/da9150-charger.c index 60099815296e..60099815296e 100644 --- a/drivers/power/da9150-charger.c +++ b/drivers/power/supply/da9150-charger.c diff --git a/drivers/power/da9150-fg.c b/drivers/power/supply/da9150-fg.c index 8b8ce978656a..8b8ce978656a 100644 --- a/drivers/power/da9150-fg.c +++ b/drivers/power/supply/da9150-fg.c diff --git a/drivers/power/ds2760_battery.c b/drivers/power/supply/ds2760_battery.c index 80f73ccb77ab..17225689e3f6 100644 --- a/drivers/power/ds2760_battery.c +++ b/drivers/power/supply/ds2760_battery.c @@ -28,8 +28,8 @@ #include <linux/platform_device.h> #include <linux/power_supply.h> -#include "../w1/w1.h" -#include "../w1/slaves/w1_ds2760.h" +#include "../../w1/w1.h" +#include "../../w1/slaves/w1_ds2760.h" struct ds2760_device_info { struct device *dev; @@ -566,7 +566,8 @@ static int ds2760_battery_probe(struct platform_device *pdev) INIT_DELAYED_WORK(&di->monitor_work, ds2760_battery_work); INIT_DELAYED_WORK(&di->set_charged_work, ds2760_battery_set_charged_work); - di->monitor_wqueue = create_singlethread_workqueue(dev_name(&pdev->dev)); + di->monitor_wqueue = alloc_ordered_workqueue(dev_name(&pdev->dev), + WQ_MEM_RECLAIM); if (!di->monitor_wqueue) { retval = -ESRCH; goto workqueue_failed; diff --git a/drivers/power/ds2780_battery.c b/drivers/power/supply/ds2780_battery.c index d3743d0ad55b..1b3b6fa89c28 100644 --- a/drivers/power/ds2780_battery.c +++ b/drivers/power/supply/ds2780_battery.c @@ -21,8 +21,8 @@ #include <linux/power_supply.h> #include <linux/idr.h> -#include "../w1/w1.h" -#include "../w1/slaves/w1_ds2780.h" +#include "../../w1/w1.h" +#include "../../w1/slaves/w1_ds2780.h" /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ #define DS2780_CURRENT_UNITS 1563 diff --git a/drivers/power/ds2781_battery.c b/drivers/power/supply/ds2781_battery.c index c3680024f399..cc0149131f89 100644 --- a/drivers/power/ds2781_battery.c +++ b/drivers/power/supply/ds2781_battery.c @@ -19,8 +19,8 @@ #include <linux/power_supply.h> #include <linux/idr.h> -#include "../w1/w1.h" -#include "../w1/slaves/w1_ds2781.h" +#include "../../w1/w1.h" +#include "../../w1/slaves/w1_ds2781.h" /* Current unit measurement in uA for a 1 milli-ohm sense resistor */ #define DS2781_CURRENT_UNITS 1563 diff --git a/drivers/power/ds2782_battery.c b/drivers/power/supply/ds2782_battery.c index a1b7e0592245..a1b7e0592245 100644 --- a/drivers/power/ds2782_battery.c +++ b/drivers/power/supply/ds2782_battery.c diff --git a/drivers/power/generic-adc-battery.c b/drivers/power/supply/generic-adc-battery.c index edb36bf781b0..edb36bf781b0 100644 --- a/drivers/power/generic-adc-battery.c +++ b/drivers/power/supply/generic-adc-battery.c diff --git a/drivers/power/goldfish_battery.c b/drivers/power/supply/goldfish_battery.c index f5c525e4482a..f5c525e4482a 100644 --- a/drivers/power/goldfish_battery.c +++ b/drivers/power/supply/goldfish_battery.c diff --git a/drivers/power/gpio-charger.c b/drivers/power/supply/gpio-charger.c index c5869b1941ac..c5869b1941ac 100644 --- a/drivers/power/gpio-charger.c +++ b/drivers/power/supply/gpio-charger.c diff --git a/drivers/power/intel_mid_battery.c b/drivers/power/supply/intel_mid_battery.c index 9fa4acc107ca..dc7feef1bea4 100644 --- a/drivers/power/intel_mid_battery.c +++ b/drivers/power/supply/intel_mid_battery.c @@ -689,8 +689,7 @@ static int probe(int irq, struct device *dev) /* initialize all required framework before enabling interrupts */ INIT_WORK(&pbi->handler, pmic_battery_handle_intrpt); INIT_DELAYED_WORK(&pbi->monitor_battery, pmic_battery_monitor); - pbi->monitor_wqueue = - create_singlethread_workqueue(dev_name(dev)); + pbi->monitor_wqueue = alloc_workqueue(dev_name(dev), WQ_MEM_RECLAIM, 0); if (!pbi->monitor_wqueue) { dev_err(dev, "%s(): wqueue init failed\n", __func__); retval = -ESRCH; diff --git a/drivers/power/ipaq_micro_battery.c b/drivers/power/supply/ipaq_micro_battery.c index 35b01c7d775b..4af7b770f293 100644 --- a/drivers/power/ipaq_micro_battery.c +++ b/drivers/power/supply/ipaq_micro_battery.c @@ -235,7 +235,7 @@ static int micro_batt_probe(struct platform_device *pdev) return -ENOMEM; mb->micro = dev_get_drvdata(pdev->dev.parent); - mb->wq = create_singlethread_workqueue("ipaq-battery-wq"); + mb->wq = alloc_workqueue("ipaq-battery-wq", WQ_MEM_RECLAIM, 0); if (!mb->wq) return -ENOMEM; diff --git a/drivers/power/isp1704_charger.c b/drivers/power/supply/isp1704_charger.c index 4cd6899b961e..4cd6899b961e 100644 --- a/drivers/power/isp1704_charger.c +++ b/drivers/power/supply/isp1704_charger.c diff --git a/drivers/power/jz4740-battery.c b/drivers/power/supply/jz4740-battery.c index 88f04f4d1a70..88f04f4d1a70 100644 --- a/drivers/power/jz4740-battery.c +++ b/drivers/power/supply/jz4740-battery.c diff --git a/drivers/power/lp8727_charger.c b/drivers/power/supply/lp8727_charger.c index 042fb3dacb46..042fb3dacb46 100644 --- a/drivers/power/lp8727_charger.c +++ b/drivers/power/supply/lp8727_charger.c diff --git a/drivers/power/lp8788-charger.c b/drivers/power/supply/lp8788-charger.c index 7321b727d484..7321b727d484 100644 --- a/drivers/power/lp8788-charger.c +++ b/drivers/power/supply/lp8788-charger.c diff --git a/drivers/power/ltc2941-battery-gauge.c b/drivers/power/supply/ltc2941-battery-gauge.c index 4adf2ba021ce..4adf2ba021ce 100644 --- a/drivers/power/ltc2941-battery-gauge.c +++ b/drivers/power/supply/ltc2941-battery-gauge.c diff --git a/drivers/power/max14577_charger.c b/drivers/power/supply/max14577_charger.c index a36bcaf62dd4..a36bcaf62dd4 100644 --- a/drivers/power/max14577_charger.c +++ b/drivers/power/supply/max14577_charger.c diff --git a/drivers/power/max17040_battery.c b/drivers/power/supply/max17040_battery.c index 8689c80202b5..8689c80202b5 100644 --- a/drivers/power/max17040_battery.c +++ b/drivers/power/supply/max17040_battery.c diff --git a/drivers/power/max17042_battery.c b/drivers/power/supply/max17042_battery.c index da7a75f82489..da7a75f82489 100644 --- a/drivers/power/max17042_battery.c +++ b/drivers/power/supply/max17042_battery.c diff --git a/drivers/power/max77693_charger.c b/drivers/power/supply/max77693_charger.c index 060cab5ae3aa..060cab5ae3aa 100644 --- a/drivers/power/max77693_charger.c +++ b/drivers/power/supply/max77693_charger.c diff --git a/drivers/power/max8903_charger.c b/drivers/power/supply/max8903_charger.c index fdc73d686153..fdc73d686153 100644 --- a/drivers/power/max8903_charger.c +++ b/drivers/power/supply/max8903_charger.c diff --git a/drivers/power/max8925_power.c b/drivers/power/supply/max8925_power.c index 3b94620ce5c1..3b94620ce5c1 100644 --- a/drivers/power/max8925_power.c +++ b/drivers/power/supply/max8925_power.c diff --git a/drivers/power/max8997_charger.c b/drivers/power/supply/max8997_charger.c index 0b2eab571528..0b2eab571528 100644 --- a/drivers/power/max8997_charger.c +++ b/drivers/power/supply/max8997_charger.c diff --git a/drivers/power/max8998_charger.c b/drivers/power/supply/max8998_charger.c index b64cf0f14142..b64cf0f14142 100644 --- a/drivers/power/max8998_charger.c +++ b/drivers/power/supply/max8998_charger.c diff --git a/drivers/power/olpc_battery.c b/drivers/power/supply/olpc_battery.c index 9e29b1321648..9e29b1321648 100644 --- a/drivers/power/olpc_battery.c +++ b/drivers/power/supply/olpc_battery.c diff --git a/drivers/power/pcf50633-charger.c b/drivers/power/supply/pcf50633-charger.c index d05597b4e40f..d05597b4e40f 100644 --- a/drivers/power/pcf50633-charger.c +++ b/drivers/power/supply/pcf50633-charger.c diff --git a/drivers/power/pda_power.c b/drivers/power/supply/pda_power.c index dfe1ee89f7c7..dfe1ee89f7c7 100644 --- a/drivers/power/pda_power.c +++ b/drivers/power/supply/pda_power.c diff --git a/drivers/power/pm2301_charger.c b/drivers/power/supply/pm2301_charger.c index fb62ed3fc38c..78561b6884fc 100644 --- a/drivers/power/pm2301_charger.c +++ b/drivers/power/supply/pm2301_charger.c @@ -1054,7 +1054,8 @@ static int pm2xxx_wall_charger_probe(struct i2c_client *i2c_client, pm2->ac_chg.external = true; /* Create a work queue for the charger */ - pm2->charger_wq = create_singlethread_workqueue("pm2xxx_charger_wq"); + pm2->charger_wq = alloc_ordered_workqueue("pm2xxx_charger_wq", + WQ_MEM_RECLAIM); if (pm2->charger_wq == NULL) { ret = -ENOMEM; dev_err(pm2->dev, "failed to create work queue\n"); diff --git a/drivers/power/pm2301_charger.h b/drivers/power/supply/pm2301_charger.h index 24181cf9717b..24181cf9717b 100644 --- a/drivers/power/pm2301_charger.h +++ b/drivers/power/supply/pm2301_charger.h diff --git a/drivers/power/pmu_battery.c b/drivers/power/supply/pmu_battery.c index 9c8d5253812c..9c8d5253812c 100644 --- a/drivers/power/pmu_battery.c +++ b/drivers/power/supply/pmu_battery.c diff --git a/drivers/power/power_supply.h b/drivers/power/supply/power_supply.h index cc439fd89d8d..cc439fd89d8d 100644 --- a/drivers/power/power_supply.h +++ b/drivers/power/supply/power_supply.h diff --git a/drivers/power/power_supply_core.c b/drivers/power/supply/power_supply_core.c index a74d8ca383a1..a74d8ca383a1 100644 --- a/drivers/power/power_supply_core.c +++ b/drivers/power/supply/power_supply_core.c diff --git a/drivers/power/power_supply_leds.c b/drivers/power/supply/power_supply_leds.c index 2277ad9c2f68..2277ad9c2f68 100644 --- a/drivers/power/power_supply_leds.c +++ b/drivers/power/supply/power_supply_leds.c diff --git a/drivers/power/power_supply_sysfs.c b/drivers/power/supply/power_supply_sysfs.c index bcde8d13476a..bcde8d13476a 100644 --- a/drivers/power/power_supply_sysfs.c +++ b/drivers/power/supply/power_supply_sysfs.c diff --git a/drivers/power/qcom_smbb.c b/drivers/power/supply/qcom_smbb.c index b5896ba2a602..b5896ba2a602 100644 --- a/drivers/power/qcom_smbb.c +++ b/drivers/power/supply/qcom_smbb.c diff --git a/drivers/power/rt5033_battery.c b/drivers/power/supply/rt5033_battery.c index bcdd83048492..bcdd83048492 100644 --- a/drivers/power/rt5033_battery.c +++ b/drivers/power/supply/rt5033_battery.c diff --git a/drivers/power/rt9455_charger.c b/drivers/power/supply/rt9455_charger.c index cfdbde9daf94..cfdbde9daf94 100644 --- a/drivers/power/rt9455_charger.c +++ b/drivers/power/supply/rt9455_charger.c diff --git a/drivers/power/rx51_battery.c b/drivers/power/supply/rx51_battery.c index af9383d23d12..af9383d23d12 100644 --- a/drivers/power/rx51_battery.c +++ b/drivers/power/supply/rx51_battery.c diff --git a/drivers/power/s3c_adc_battery.c b/drivers/power/supply/s3c_adc_battery.c index 0ffe5cd3abf6..0ffe5cd3abf6 100644 --- a/drivers/power/s3c_adc_battery.c +++ b/drivers/power/supply/s3c_adc_battery.c diff --git a/drivers/power/sbs-battery.c b/drivers/power/supply/sbs-battery.c index 768b9fcb58ea..e1dfb3e7aee4 100644 --- a/drivers/power/sbs-battery.c +++ b/drivers/power/supply/sbs-battery.c @@ -41,6 +41,7 @@ enum { REG_TIME_TO_EMPTY, REG_TIME_TO_FULL, REG_STATUS, + REG_CAPACITY_LEVEL, REG_CYCLE_COUNT, REG_SERIAL_NUMBER, REG_REMAINING_CAPACITY, @@ -68,6 +69,7 @@ enum sbs_battery_mode { #define MANUFACTURER_ACCESS_SLEEP 0x0011 /* battery status value bits */ +#define BATTERY_INITIALIZED 0x80 #define BATTERY_DISCHARGING 0x40 #define BATTERY_FULL_CHARGED 0x20 #define BATTERY_FULL_DISCHARGED 0x10 @@ -110,6 +112,8 @@ static const struct chip_data { SBS_DATA(POWER_SUPPLY_PROP_TIME_TO_FULL_AVG, 0x13, 0, 65535), [REG_STATUS] = SBS_DATA(POWER_SUPPLY_PROP_STATUS, 0x16, 0, 65535), + [REG_CAPACITY_LEVEL] = + SBS_DATA(POWER_SUPPLY_PROP_CAPACITY_LEVEL, 0x16, 0, 65535), [REG_CYCLE_COUNT] = SBS_DATA(POWER_SUPPLY_PROP_CYCLE_COUNT, 0x17, 0, 65535), [REG_DESIGN_CAPACITY] = @@ -131,6 +135,7 @@ static const struct chip_data { static enum power_supply_property sbs_properties[] = { POWER_SUPPLY_PROP_STATUS, + POWER_SUPPLY_PROP_CAPACITY_LEVEL, POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_TECHNOLOGY, @@ -162,7 +167,6 @@ struct sbs_info { bool is_present; bool gpio_detect; bool enable_detection; - int irq; int last_state; int poll_time; struct delayed_work work; @@ -377,8 +381,23 @@ static int sbs_get_battery_property(struct i2c_client *client, if (ret >= sbs_data[reg_offset].min_value && ret <= sbs_data[reg_offset].max_value) { val->intval = ret; - if (psp != POWER_SUPPLY_PROP_STATUS) + if (psp == POWER_SUPPLY_PROP_CAPACITY_LEVEL) { + if (!(ret & BATTERY_INITIALIZED)) + val->intval = + POWER_SUPPLY_CAPACITY_LEVEL_UNKNOWN; + else if (ret & BATTERY_FULL_CHARGED) + val->intval = + POWER_SUPPLY_CAPACITY_LEVEL_FULL; + else if (ret & BATTERY_FULL_DISCHARGED) + val->intval = + POWER_SUPPLY_CAPACITY_LEVEL_CRITICAL; + else + val->intval = + POWER_SUPPLY_CAPACITY_LEVEL_NORMAL; return 0; + } else if (psp != POWER_SUPPLY_PROP_STATUS) { + return 0; + } if (ret & BATTERY_FULL_CHARGED) val->intval = POWER_SUPPLY_STATUS_FULL; @@ -590,6 +609,7 @@ static int sbs_get_property(struct power_supply *psy, break; case POWER_SUPPLY_PROP_STATUS: + case POWER_SUPPLY_PROP_CAPACITY_LEVEL: case POWER_SUPPLY_PROP_CYCLE_COUNT: case POWER_SUPPLY_PROP_VOLTAGE_NOW: case POWER_SUPPLY_PROP_CURRENT_NOW: @@ -661,7 +681,8 @@ done: static irqreturn_t sbs_irq(int irq, void *devid) { - struct power_supply *battery = devid; + struct sbs_info *chip = devid; + struct power_supply *battery = chip->power_supply; power_supply_changed(battery); @@ -819,7 +840,7 @@ static int sbs_probe(struct i2c_client *client, if (!sbs_desc->name) return -ENOMEM; - chip = kzalloc(sizeof(struct sbs_info), GFP_KERNEL); + chip = devm_kzalloc(&client->dev, sizeof(struct sbs_info), GFP_KERNEL); if (!chip) return -ENOMEM; @@ -869,9 +890,9 @@ static int sbs_probe(struct i2c_client *client, goto skip_gpio; } - rc = request_irq(irq, sbs_irq, + rc = devm_request_threaded_irq(&client->dev, irq, NULL, sbs_irq, IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING, - dev_name(&client->dev), chip->power_supply); + dev_name(&client->dev), chip); if (rc) { dev_warn(&client->dev, "Failed to request irq: %d\n", rc); gpio_free(pdata->battery_detect); @@ -879,8 +900,6 @@ static int sbs_probe(struct i2c_client *client, goto skip_gpio; } - chip->irq = irq; - skip_gpio: /* * Before we register, we might need to make sure we can actually talk @@ -896,7 +915,7 @@ skip_gpio: } } - chip->power_supply = power_supply_register(&client->dev, sbs_desc, + chip->power_supply = devm_power_supply_register(&client->dev, sbs_desc, &psy_cfg); if (IS_ERR(chip->power_supply)) { dev_err(&client->dev, @@ -915,13 +934,9 @@ skip_gpio: return 0; exit_psupply: - if (chip->irq) - free_irq(chip->irq, chip->power_supply); if (chip->gpio_detect) gpio_free(pdata->battery_detect); - kfree(chip); - return rc; } @@ -929,18 +944,11 @@ static int sbs_remove(struct i2c_client *client) { struct sbs_info *chip = i2c_get_clientdata(client); - if (chip->irq) - free_irq(chip->irq, chip->power_supply); if (chip->gpio_detect) gpio_free(chip->pdata->battery_detect); - power_supply_unregister(chip->power_supply); - cancel_delayed_work_sync(&chip->work); - kfree(chip); - chip = NULL; - return 0; } diff --git a/drivers/power/smb347-charger.c b/drivers/power/supply/smb347-charger.c index 072c5189bd6d..072c5189bd6d 100644 --- a/drivers/power/smb347-charger.c +++ b/drivers/power/supply/smb347-charger.c diff --git a/drivers/power/test_power.c b/drivers/power/supply/test_power.c index 57246cdbd042..57246cdbd042 100644 --- a/drivers/power/test_power.c +++ b/drivers/power/supply/test_power.c diff --git a/drivers/power/tosa_battery.c b/drivers/power/supply/tosa_battery.c index 6e88c1b37945..6e88c1b37945 100644 --- a/drivers/power/tosa_battery.c +++ b/drivers/power/supply/tosa_battery.c diff --git a/drivers/power/tps65090-charger.c b/drivers/power/supply/tps65090-charger.c index 1b4b5e09538e..1b4b5e09538e 100644 --- a/drivers/power/tps65090-charger.c +++ b/drivers/power/supply/tps65090-charger.c diff --git a/drivers/power/tps65217_charger.c b/drivers/power/supply/tps65217_charger.c index 4c56e54af6ac..9fd019f9b88c 100644 --- a/drivers/power/tps65217_charger.c +++ b/drivers/power/supply/tps65217_charger.c @@ -46,6 +46,8 @@ struct tps65217_charger { int prev_ac_online; struct task_struct *poll_task; + + int irq; }; static enum power_supply_property tps65217_ac_props[] = { @@ -198,6 +200,7 @@ static int tps65217_charger_probe(struct platform_device *pdev) struct tps65217 *tps = dev_get_drvdata(pdev->dev.parent); struct tps65217_charger *charger; struct power_supply_config cfg = {}; + int irq; int ret; dev_dbg(&pdev->dev, "%s\n", __func__); @@ -221,18 +224,40 @@ static int tps65217_charger_probe(struct platform_device *pdev) return PTR_ERR(charger->ac); } + irq = platform_get_irq_byname(pdev, "AC"); + if (irq < 0) + irq = -ENXIO; + charger->irq = irq; + ret = tps65217_config_charger(charger); if (ret < 0) { dev_err(charger->dev, "charger config failed, err %d\n", ret); return ret; } - charger->poll_task = kthread_run(tps65217_charger_poll_task, - charger, "ktps65217charger"); - if (IS_ERR(charger->poll_task)) { - ret = PTR_ERR(charger->poll_task); - dev_err(charger->dev, "Unable to run kthread err %d\n", ret); - return ret; + if (irq != -ENXIO) { + ret = devm_request_threaded_irq(&pdev->dev, irq, NULL, + tps65217_charger_irq, + 0, "tps65217-charger", + charger); + if (ret) { + dev_err(charger->dev, + "Unable to register irq %d err %d\n", irq, + ret); + return ret; + } + + /* Check current state */ + tps65217_charger_irq(irq, charger); + } else { + charger->poll_task = kthread_run(tps65217_charger_poll_task, + charger, "ktps65217charger"); + if (IS_ERR(charger->poll_task)) { + ret = PTR_ERR(charger->poll_task); + dev_err(charger->dev, + "Unable to run kthread err %d\n", ret); + return ret; + } } return 0; @@ -242,7 +267,8 @@ static int tps65217_charger_remove(struct platform_device *pdev) { struct tps65217_charger *charger = platform_get_drvdata(pdev); - kthread_stop(charger->poll_task); + if (charger->irq == -ENXIO) + kthread_stop(charger->poll_task); return 0; } diff --git a/drivers/power/twl4030_charger.c b/drivers/power/supply/twl4030_charger.c index bcd4dc304f27..bcd4dc304f27 100644 --- a/drivers/power/twl4030_charger.c +++ b/drivers/power/supply/twl4030_charger.c diff --git a/drivers/power/twl4030_madc_battery.c b/drivers/power/supply/twl4030_madc_battery.c index f5817e422d64..f5817e422d64 100644 --- a/drivers/power/twl4030_madc_battery.c +++ b/drivers/power/supply/twl4030_madc_battery.c diff --git a/drivers/power/wm831x_backup.c b/drivers/power/supply/wm831x_backup.c index 2e33109ca8c7..2e33109ca8c7 100644 --- a/drivers/power/wm831x_backup.c +++ b/drivers/power/supply/wm831x_backup.c diff --git a/drivers/power/wm831x_power.c b/drivers/power/supply/wm831x_power.c index 7082301da945..7082301da945 100644 --- a/drivers/power/wm831x_power.c +++ b/drivers/power/supply/wm831x_power.c diff --git a/drivers/power/wm8350_power.c b/drivers/power/supply/wm8350_power.c index 5c5880664e09..5c5880664e09 100644 --- a/drivers/power/wm8350_power.c +++ b/drivers/power/supply/wm8350_power.c diff --git a/drivers/power/wm97xx_battery.c b/drivers/power/supply/wm97xx_battery.c index c2f09ed35050..6285626d142a 100644 --- a/drivers/power/wm97xx_battery.c +++ b/drivers/power/supply/wm97xx_battery.c @@ -1,6 +1,4 @@ /* - * linux/drivers/power/wm97xx_battery.c - * * Battery measurement code for WM97xx * * based on tosa_battery.c diff --git a/drivers/power/z2_battery.c b/drivers/power/supply/z2_battery.c index b201e3facf73..8a43b49cfd35 100644 --- a/drivers/power/z2_battery.c +++ b/drivers/power/supply/z2_battery.c @@ -317,7 +317,6 @@ MODULE_DEVICE_TABLE(i2c, z2_batt_id); static struct i2c_driver z2_batt_driver = { .driver = { .name = "z2-battery", - .owner = THIS_MODULE, .pm = Z2_BATTERY_PM_OPS }, .probe = z2_batt_probe, |