summaryrefslogtreecommitdiffstats
path: root/drivers/power
Commit message (Collapse)AuthorAgeFilesLines
* scripts/spelling.txt: add "intialization" pattern and fix typo instancesMasahiro Yamada2017-02-271-3/+3
| | | | | | | | | | | | | | Fix typos and add the following to the scripts/spelling.txt: intialization||initialization The "inintialization" in drivers/acpi/spcr.c is a different pattern but I fixed it as well in this commit. Link: http://lkml.kernel.org/r/1481573103-11329-16-git-send-email-yamada.masahiro@socionext.com Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
* power: supply: add AC power supply driver for AXP20X and AXP22X PMICsQuentin Schulz2017-01-293-0/+266
| | | | | | | | | | | | | | | | | The X-Powers AXP20X and AXP22X PMICs expose the status of AC power supply. Moreover, the AXP20X can also expose the current current and voltage values of the AC power supply. This adds the driver which exposes the status of the AC power supply of the AXP20X and AXP22X PMICs. Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com> Acked-by: Jonathan Cameron <jic23@kernel.org> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> [removed unused elements from struct axp20x_ac_power] Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: axp20x_usb_power: use IIO channels when availableQuentin Schulz2017-01-291-4/+66
| | | | | | | | | | | | | | | | | The X-Powers AXP20X PMIC exposes the current current and voltage measures via an internal ADC. This adds the possibility to read IIO channels directly for processed values rather than reading the registers and computing the value. For backward compatibility purpose, if the IIO driver is not compiled, this driver will fall back on previous behaviour which is direct register readings. Signed-off-by: Quentin Schulz <quentin.schulz@free-electrons.com> Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com> Acked-by: Jonathan Cameron <jic23@kernel.org> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: max14656: Export I2C and OF device ID as module aliasesJavier Martinez Canillas2017-01-291-0/+2
| | | | | | | | | | | | | | | | | | | | | If the driver is built as a module, I2C module alias information is not filled so the module won't be autoloaded. Export the I2C and OF devices ID to the module by using the MODULE_DEVICE_TABLE() macro. Before this patch: $ modinfo drivers/power/supply/max14656_charger_detector.ko | grep alias $ After this patch: $ modinfo drivers/power/supply/max14656_charger_detector.ko | grep alias alias: i2c:max14656 alias: of:N*T*Cmaxim,max14656C* alias: of:N*T*Cmaxim,max14656 Signed-off-by: Javier Martinez Canillas <javier@osg.samsung.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq2415x: check for NULL acpi_id to avoid null pointer dereferenceColin Ian King2017-01-211-0/+5
| | | | | | | | | | acpi_match_device can potentially return NULL, so it is prudent to check if acpi_id is null before it is dereferenced. Add a check and an error message to indicate the failure. Signed-off-by: Colin Ian King <colin.king@canonical.com> Reviewed-by: Pali Rohár <pali.rohar@gmail.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Adjust formattingLiam Breck2017-01-201-1/+3
| | | | | | | | Add breathing room in probe() out* section. Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Handle fault before status on interruptLiam Breck2017-01-201-23/+23
| | | | | | | | | | | | | Reading both fault and status registers and logging any fault should take priority over handling status register update. Fix by moving the status handling to later in interrupt routine. Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Don't read fault register outside ↵Liam Breck2017-01-201-67/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | irq_handle_thread() Caching the fault register after a single I2C read may not keep an accurate value. Fix by doing two reads in irq_handle_thread() and using the cached value elsewhere. If a safety timer fault later clears itself, we apparently don't get an interrupt (INT), however other interrupts would refresh the register cache. From the data sheet: "When a fault occurs, the charger device sends out INT and keeps the fault state in REG09 until the host reads the fault register. Before the host reads REG09 and all the faults are cleared, the charger device would not send any INT upon new faults. In order to read the current fault status, the host has to read REG09 two times consecutively. The 1st reads fault register status from the last read [1] and the 2nd reads the current fault register status." [1] presumably a typo; should be "last fault" Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Call power_supply_changed() for relevant ↵Liam Breck2017-01-201-23/+27
| | | | | | | | | | | | | | | | component We wrongly get uevents for bq24190-charger and bq24190-battery on every register change. Fix by checking the association with charger and battery before emitting uevent(s). Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Install irq_handler_thread() at end of probe()Liam Breck2017-01-201-15/+16
| | | | | | | | | | | | | | The device specific data is not fully initialized on request_threaded_irq(). This may cause a crash when the IRQ handler tries to reference them. Fix the issue by installing IRQ handler at the end of the probe. Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Call set_mode_host() on pm_resume()Liam Breck2017-01-201-0/+1
| | | | | | | | | | | | pm_resume() does a register_reset() which clears charger host mode. Fix by calling set_mode_host() after the reset. Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: bq24190_charger: Fix irq trigger to IRQF_TRIGGER_FALLINGLiam Breck2017-01-201-1/+1
| | | | | | | | | | | | | | | | The interrupt signal is TRIGGER_FALLING. This is is specified in the data sheet PIN FUNCTIONS: "The INT pin sends active low, 256us pulse to host to report charger device status and fault." Also the direction can be seen in the data sheet Figure 37 "BQ24190 with D+/D- Detection and USB On-The-Go (OTG)" which shows a 10k pull-up resistor installed for the sample configurations. Fixes: d7bf353fd0aa3 ("bq24190_charger: Add support for TI BQ24190 Battery Charger") Signed-off-by: Liam Breck <kernel@networkimprov.net> Acked-by: Mark Greer <mgreer@animalcreek.com> Acked-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: qcom_smbb: add regulator dependencyArnd Bergmann2017-01-181-0/+1
| | | | | | | | | | | | | | | | The added regulator dependency in the smbb driver causes build errors when regulators are disabled, e.g. in randconfig build testing: drivers/power/supply/qcom_smbb.o: In function `smbb_chg_otg_is_enabled': qcom_smbb.c:(.text.smbb_chg_otg_is_enabled+0x18): undefined reference to `rdev_get_drvdata' drivers/power/supply/qcom_smbb.o: In function `smbb_charger_probe': qcom_smbb.c:(.text.smbb_charger_probe+0x410): undefined reference to `devm_regulator_register' This adds a Kconfig dependency to avoid the link error. Fixes: 61274eff0dde ("power: supply: qcom_smbb: Add otg regulator for control of vbus") Signed-off-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: reset: at91-reset: remove leftover platform_device_idAlexandre Belloni2017-01-181-8/+0
| | | | | | | | | commit eacd8d09db7f ("power/reset: at91-reset: remove useless at91_reset_platform_probe()") removed non DT probe support but forgot to remove the now useless id_table. Do that now. Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: reset: at91-reset: add samx7 supportSzemző András2017-01-181-0/+10
| | | | | | | | Add samx7 support. It is lacking a few bits and needs a new reset function. Signed-off-by: Szemző András <sza@esh.hu> Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: max14656: fix platform_no_drv_owner.cocci warningskbuild test robot2017-01-171-1/+0
| | | | | | | | | | | | | drivers/power/supply/max14656_charger_detector.c:317:3-8: No need to set .owner here. The core will do it. Remove .owner field if calls are used which set it automatically Generated by: scripts/coccinelle/api/platform_no_drv_owner.cocci CC: Alexander Kurz <akurz@blala.de> Signed-off-by: Fengguang Wu <fengguang.wu@intel.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: pcf50633-charger: Compress return logic into one line.Gustavo A. R. Silva2017-01-171-9/+4
| | | | | | | | | | | | | | | | | | Simplify return logic to avoid unnecessary variable assignments. These issues were detected using Coccinelle and the following semantic patch: @@ local idexpression ret; expression e; @@ -ret = +return e; -return ret; Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* power: supply: ab8500_btemp: Compress return logic into one line.Gustavo A. R. Silva2017-01-171-7/+3
| | | | | | | | | | | | | | | | | | Simplify return logic to avoid unnecessary variable assignments. These issues were detected using Coccinelle and the following semantic patch: @@ local idexpression ret; expression e; @@ -ret = +return e; -return ret; Signed-off-by: Gustavo A. R. Silva <garsilva@embeddedor.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* Merge branch 'psy-arm-at91-immutable' into psy-nextSebastian Reichel2017-01-163-3/+102
|\
| * power: reset: at91-poweroff: timely shutdown LPDDR memoriesAlexandre Belloni2017-01-163-3/+102
| | | | | | | | | | | | | | | | | | LPDDR memories can only handle up to 400 uncontrolled power off. Ensure the proper power off sequence is used before shutting down the platform. Cc: <stable@vger.kernel.org> # 4.4+ Signed-off-by: Alexandre Belloni <alexandre.belloni@free-electrons.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: Add support for MAX14656 USB charger detectorAlexander Kurz2017-01-163-0/+337
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The MAX14656 USB charger detector, also known as "AL32" is used to detect the presence and capabilities of attached USB chargers. The device is attached via I2C plus one interrupt line to signalize events. The device can be found in LG smartphones like LS665 and LS770, compatible devices are present in 4th/5th generation Amazon Kindle readers referenced in source code packages as "Maxim AL32". The initial version of this driver has been extracted from LG source code package LGLS665_Android_Lollipop_LS665ZV3, enriched with information from the Kindle_src_4.1.3 source code package and adapted to the current power class sysfs interface. Non-Standard Apple chargers which the device may detect are mapped to the USB Battery Charging Specification Revision 1.2 class USB_DCP. Signed-off-by: Alexander Kurz <akurz@blala.de> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: qcom_smbb: Add otg regulator for control of vbusBird, Tim2017-01-161-0/+70
| | | | | | | | | | | | | | | | | | | | | | | | | | | | Add a regulator to control the OTG chargepath switch. This is used by USB code to control VBUS direction - out for host mode on the OTG port, and in for charging mode. Signed-off-by: Tim Bird <tim.bird@sonymobile.com> Acked-by: Bjorn Andersson <bjorn.andersson@sonymobile.com> Reviewed-by: Andy Gross <andy.gross@linaro.org> [stephen.boyd@linaro.org: Fix supply name, constify ops, drop machine.h and of_regulator.h includes] Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27520-g4 revision.Chris Lapa2017-01-122-0/+41
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27520G4 chip definition to specifically match the bq27520-G4 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27520-g3 revision.Chris Lapa2017-01-122-0/+44
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27520G3 chip definition to specifically match the bq27520-G3 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27520-g2 revision.Chris Lapa2017-01-122-0/+45
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27520G2 chip definition to specifically match the bq27520-G2 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27520-g1 revision.Chris Lapa2017-01-122-0/+44
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27520G1 chip definition to specifically match the bq27520-G1 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27510-g3 revision.Chris Lapa2017-01-122-0/+41
| | | | | | | | | | | | | | | | | | | | | | This commit adds the BQ27510G3 chip definition to specifically match the bq27510-G3 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Tested-by: Chris Lapa <chris@lapa.com.au> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27510-g2 revision.Chris Lapa2017-01-122-0/+45
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27510G2 chip definition to specifically match the bq27510-G2 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27510-g1 revision.Chris Lapa2017-01-122-0/+45
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27510G1 chip definition to specifically match the bq27510-G1 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: adds specific support for bq27500/1 revision.Chris Lapa2017-01-122-0/+44
| | | | | | | | | | | | | | | | | | | | This commit adds the BQ27500 chip definition to specifically match the bq27500/1 functionality as described in the datasheet. Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: rename BQ27510 allow for deprecation in future.Chris Lapa2017-01-122-6/+6
| | | | | | | | | | | | | | The BQ2751X definition exists only to satisfy backwards compatibility. Signed-off-by: Chris Lapa <chris@lapa.com.au> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: rename BQ27500 allow for deprecation in future.Chris Lapa2017-01-122-5/+5
| | | | | | | | | | | | | | The BQ2750X definition exists only to satisfy backwards compatibility. Signed-off-by: Chris Lapa <chris@lapa.com.au> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp20x_usb_power: fix warning on 64bitMichal Suchanek2017-01-121-2/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Casting of_device_get_match_data return value to int causes warning on 64bit architectures. ../drivers/power/supply/axp20x_usb_power.c: In function 'axp20x_usb_power_probe': ../drivers/power/supply/axp20x_usb_power.c:297:21: warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] Fixes: 0dcc70ca8644 ("power: supply: axp20x_usb_power: use of_device_id data field instead of device_is_compatible") Signed-off-by: Michal Suchanek <msuchanek@suse.de> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq27xxx: move overtemp tests to a switch statement.Chris Lapa2017-01-101-5/+10
| | | | | | | | | | | | | | | | | | | | | | | | This is done for readability as the upcoming commits will add a lot of cases. tested: no Signed-off-by: Chris Lapa <chris@lapa.com.au> Acked-by: Pali Rohár <pali.rohar@gmail.com> Reviewed-by: Andrew F. Davis <afd@ti.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: remove Intel Moorestown battery supportAndy Shevchenko2017-01-063-803/+0
| | | | | | | | | | | | | | | | | | | | The Moorestown support was removed by commit 1a8359e411eb ("x86/mid: Remove Intel Moorestown"). Remove this leftover. Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: gpio_charger: switch to using GPIO descriptorsLinus Walleij2017-01-041-34/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The GPIO charger is using a mix of the legacy GPIO interface and <linux/of_gpio.h> which is not the modern way to use GPIOs. Refactor like this: - Use a GPIO descriptor for the GPIO line used to monitor the charger. - Fetch the descriptor with devm_gpiod_get() as the first method. - If this fails and we are *not* using device tree, then start looking to see if we can use platform data instead. - After looking up and requesting a GPIO number with the legacy API, convert it to a descriptor. This way we can later isolate and drop the legacy code as more platforms move over to using descriptors. Cc: Dmitry Eremin-Solenikov <dbaryshkov@gmail.com> Cc: Heiko Stuebner <heiko@sntech.de> Cc: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Linus Walleij <linus.walleij@linaro.org> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: fix spelling mistake: supply: "Celcius" -> "Celsius"Colin Ian King2017-01-042-4/+4
| | | | | | | | | | | | | | trivial fix to spelling mistake in comments in the headers Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: wm97xx_battery: remove redundant 2nd null check on pdataColin Ian King2017-01-041-5/+0
| | | | | | | | | | | | | | | | | | | | pdata is being null checked twice, the 2nd check is redundant code and can be removed. Fixes CoverityScan CID 1392340 "Logically dead code" Signed-off-by: Colin Ian King <colin.king@canonical.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_fuel_gauge: Remove unnecessary irq?_en register writesHans de Goede2017-01-041-27/+0
| | | | | | | | | | | | | | | | | | Setting the irq_enable bits is taken care of by the irq chip when we request the irqs and the driver should not be meddling with the irq?_en registers itself. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq24735: bring down the noise levelPeter Rosin2017-01-041-1/+1
| | | | | | | | | | | | | | | | | | If there is no ti,ac-detect-gpios configured, it is normal to have failed reads of the options register. So, hold back on the log spamming. Signed-off-by: Peter Rosin <peda@axentia.se> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: bq24735: allow polling even if there is no ac-detect gpioPeter Rosin2017-01-041-1/+1
| | | | | | | | | | | | | | | | | | It is possible to verify AC adapter presence via a register read, without any physical connection to the ACOK pin on the charger. Allow this. Signed-off-by: Peter Rosin <peda@axentia.se> Acked-by: Rob Herring <robh@kernel.org> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Use one notifier_block per extcon cableHans de Goede2017-01-041-9/+32
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Prior to this commit the code was using 1 notifier_block for all types of charger cable, this is incorrect as the notifier_block becomes part of a linked-list and now the same notifier_block is part of 3 linked lists. This commit fixes this by using a separate nb per extcon cable. Note this happened to work fine sofar because axp288_charger was the only listener, so when added to each of the 3 notifier chains, the next pointer in the nb would be set to 0, so we've 3 heads pointing to the same nb, with its next pointing to NULL. But as soon as we mix in a second extcon consumer things will go boom. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Fix the module not auto-loadingHans de Goede2017-01-041-0/+7
| | | | | | | | | | | | | | Add a MODULE_DEVICE_TABLE to fix the module not auto-loading. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Remove unnecessary irq?_en register writesHans de Goede2017-01-041-32/+0
| | | | | | | | | | | | | | | | | | Setting the irq_enable bits is taken care of by the irq chip when we request the irqs and the driver should not be meddling with the irq?_en registers itself. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Fix wrong regmap_update_bitsHans de Goede2017-01-041-1/+1
| | | | | | | | | | | | | | | | To set a bit to 1 one needs to pass the mask for the bit to set as second argument into regmap_update_bits, not "1". Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Get and process initial hardware-stateHans de Goede2017-01-041-15/+17
| | | | | | | | | | | | | | | | | | | | | | | | Do not wait for an extcon notification before processing the cable states, instead queue the otg / cable work on probe to make sure we immediately process the initial hardware state. Note this also requiree moving the getting of the USB_HOST cable state from the extcon notifier to the workqueue function. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Some minor cleanupsHans de Goede2017-01-041-18/+5
| | | | | | | | | | | | | | | | | | | | | | | | Remove info->health, info->present and info->online caching, as no code is reading the cached values. Remove if (changed) check before calling power_supply_changed(), we return early from axp288_charger_extcon_evt_worker if nothing has changed, so the check is not needed. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Handle charger type changing without disconnectHans de Goede2017-01-041-18/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Deal with the charger type changing without a vbus-disconnect being reported in between the 2 charger type states: -Do not return from axp288_charger_extcon_evt_worker early in this case (track old_chg_type) -Make calling axp288_charger_enable_charger with the same value as before a nop, to avoid the need for the caller to check this -Do no do a dev_err when axp288_charger_enable_charger returns an error, axp288_charger_enable_charger already returns an error itself -Disable the charger before changing the charge-current setting (nop if vbus was seen as disconnected before the change) Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Actually get and use the USB_HOST extcon deviceHans de Goede2017-01-041-6/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Nothing was setting info->otg.cable, so the extcon_get_cable_state_ calls on it would always return -EINVAL. This commit fixes this by actually setting info->otg.cable using the new extcon_get_extcon_dev_by_cable_id function. This commit also makes failing to register the extcon notifier for the USB_HOST cable an error rather then a warning, because we MUST have this notfier to properly disable the VBUS path when in host mode so that we're not drawing current from the 5V boost converter which is supplying power to the otg port when in host mode. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>
* | power: supply: axp288_charger: Move init_hw_regs call before supply registrationHans de Goede2017-01-041-4/+4
| | | | | | | | | | | | | | | | | | Move the charger_init_hw_regs() above the power_supply_register call, the axp288_charger_usb_set_property() uses axp288_chrg_info.max_cv and .max_cc which get set by charger_init_hw_regs(). Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Sebastian Reichel <sre@kernel.org>