Commit Graph

2126 Commits

Author SHA1 Message Date
Sebastian Reichel c4b12a2f3f power: supply: sbs-battery: simplify read_read_string_data
The SBS battery implements SMBus block reads. Currently the
driver "emulates" this by doing an I2C byte read for the
length followed by an I2C block read. The I2C subsystem
actually provides a proper API for doing SMBus block reads,
which can and should be used instead. The current implementation
does not properly handle packet error checking (PEC).

This change requires, that I2C bus drivers support I2C_M_RECV_LEN
or directly provide the SMBus API to access device manufacturer
and model name.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-29 00:39:12 +02:00
Sebastian Reichel d6f5632108 power: supply: sbs-battery: add POWER_SUPPLY_PROP_CAPACITY_ERROR_MARGIN support
Add support for reporting the MaxError register from
battery fuel gauges following the smart battery standard.

Reviewed-by: Emil Velikov <emil.velikov@collabora.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-29 00:38:53 +02:00
Sebastian Reichel 0ff969158a power: supply: sbs-battery: Add TI BQ20Z65 support
Add support for BQ20Z65 manufacturer data to the sbs-battery
driver. Implementation has been verified using the public TRM
available from [0] and tested using a GE Flex 3S2P battery.

[0] http://www.ti.com/lit/pdf/sluu386

Acked-by: Rob Herring <robh@kernel.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 19:27:38 +02:00
Sebastian Reichel 601c2a543f power: supply: core: add POWER_SUPPLY_HEALTH_CALIBRATION_REQUIRED
Some battery fuel gauges know when the battery needs to
be recalibrated before providing usable values. This
should be reported via the health property.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 19:25:31 +02:00
Sebastian Reichel feabe49e46 power: supply: core: add manufacture date properties
Some smart batteries store their manufacture date, which is
useful to identify the battery and/or to know about the cell
quality.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 19:25:31 +02:00
Sebastian Reichel bac705abcf power: supply: core: add capacity error margin property
Add a property for reporting the error margin expected
by fuel gauge chips.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 19:25:31 +02:00
Samuel Zou 2e9bcaccef power: supply: Make bd9995x_chip_reset static
Fix the following sparse warning:

drivers/power/supply/bd99954-charger.c:1028:6: warning: symbol 'bd9995x_chip_reset' was not declared.

The bd9995x_chip_reset() has only one call site within bd99954-charger.c
It should be static

Fixes: 0902f83664 ("power: supply: Support ROHM bd99954 charger")
Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Samuel Zou <zou_wei@huawei.com>
Reviewed-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 19:02:59 +02:00
Marek Szyprowski fac1cd327b power: charger: max14577: Add proper dt-compatible strings
Add device tree compatible strings and create proper modalias structures
to let this driver load automatically if compiled as module, because
max14577 MFD driver creates MFD cells with such compatible strings.

Signed-off-by: Marek Szyprowski <m.szyprowski@samsung.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 09:11:55 +02:00
Sebastian Reichel 6c2fe5cae5 Immutable branch between MFD, IIO and Power due for the v5.8 merge window
-----BEGIN PGP SIGNATURE-----
 
 iQIzBAABCgAdFiEEdrbJNaO+IJqU8IdIUa+KL4f8d2EFAl7M5H4ACgkQUa+KL4f8
 d2G3zg/8CR/GxzWumuf+N01PJZQI0725lYpLzrk2LdWn01FDv/opOX3M67gs9ZMV
 bYcugrmJJ23NvLYN1/DFz2HZ4g22HqICAZ+gdc4RXlxmYaz6BjrB1pmxdB1GvqCU
 I2htnQR1L1wvhSF7fl1zyZHmRd1V1jkBxp2pdZoFpcAHXpUq4EcyizYEs9ubwT8y
 GTUcVxfPTj6fIg+/OwCDuZXkzbxcvF5QbnkykS3XhRemBEUsPkriDjJ+VSR10opx
 EV0Dd81ZXV1x2gjA5Us4OoVr0RAECd3MrRg8D1tPOYp06NqDZF2qWPXFaT3gLq0w
 A9JELXQMar+e7WzV3VokMECSIaatHugCPwJYz3nVLpDBtHr7TaFu/55ZC9Li7Lgp
 hvowpJ4Q3+BHweWfOmnVY8Ah51tZF9GS1wBTIJcXqXaUnM1bQoV77bGM6M86hHsy
 39zyrPQNOgvwUWmCXWgs1J4K0GB48s02mXuJLYkg3YhGrfU0z3G0ptG03fI7D9/U
 17OUs9f8ZqKk21DBxXYJolj2J5NwqTjX9C0wEmYdalGNgAxj4f7nSrLTrwGiNRvX
 vPdR6ccDKAZScMizbhnv4u+c/seu8XJedei0OZWP+vtZ1j4PIr7exTOhKzPHi3i/
 F1+yyBEHYAPrITQI/j+hXAjwOlwqF1sAhdYsoiqb85O1XibMmHY=
 =89mP
 -----END PGP SIGNATURE-----

Merge tag 'tags/ib-mfd-iio-power-v5.8' into psy-next

This merges the MP2629 battery charge management immutable branch
between MFD, IIO and power-supply due for the v5.8 merge window
into power-supply for-next branch.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 09:04:26 +02:00
Serge Semin c3d8052223 power: reset: syscon-reboot: Add parental syscon support
Since normally syscon-reboot block is supposed to be a part of a system
controller, lets look for the syscon regmap in a parental DT node if
regmap property isn't specified. DT binding from now considers the regmap
property as deprecated.

Signed-off-by: Serge Semin <Sergey.Semin@baikalelectronics.ru>
Cc: Alexey Malahov <Alexey.Malahov@baikalelectronics.ru>
Cc: Thomas Bogendoerfer <tsbogend@alpha.franken.de>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-28 09:00:30 +02:00
Saravanan Sekar 3bc6d790c3 power: supply: Add support for mps mp2629 battery charger
The mp2629 provides switching-mode battery charge management for
single-cell Li-ion or Li-polymer battery. Driver supports the
access/control input source and battery charging parameters.

Signed-off-by: Saravanan Sekar <sravanhome@gmail.com>
Reviewed-by: Andy Shevchenko <andy.shevchenko@gmail.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Signed-off-by: Lee Jones <lee.jones@linaro.org>
2020-05-26 10:41:52 +01:00
Wolfram Sang 454b9c1ffd power: supply: bq24190_charger: convert to use i2c_new_client_device()
Move away from the deprecated API in this comment.

Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-12 19:06:45 +02:00
Michał Mirosław 478efc79ee power: bq25890: implement INPUT_CURRENT_LIMIT property
Report REG00.IINLIM value as INPUT_CURRENT_LIMIT property.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 23:44:20 +02:00
Michał Mirosław c942656ddb power: bq25890: implement PRECHARGE_CURRENT property
Report configured precharge current.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 23:43:50 +02:00
Michał Mirosław b302a0ae72 power: bq25890: implement CHARGE_TYPE property
Report charging type based on recently read state.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 23:42:51 +02:00
Michał Mirosław 3b4df57bef power: bq25890: update state on property read
Edge interrupts from the charger may be lost or stuck in fault mode
since probe(). Check if something changed everytime userspace wants
some data.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 23:41:53 +02:00
Michał Mirosław 21d90eda43 power: bq25890: fix ADC mode configuration
Datasheet describes two modes for reading ADC measurements:
1. continuous, 1 Hz - enabled and started by CONV_RATE bit
2. one-shot - triggered by CONV_START bit

In continuous mode, CONV_START is read-only and signifies an ongoing
conversion.

Change the code to follow the datasheet and really disable continuous
mode for power saving.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 23:06:33 +02:00
Michał Mirosław 1e4724d0b7 power: bq25890: use proper CURRENT_NOW property for I_BAT
Charge Current is more apropriately reflected by CURRENT_NOW property
(measured current) than CONSTANT_CURRENT_VOLTAGE (configured CC-phase
current limit). Fix the reference and make the sign reflect direction
of the current.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 22:55:22 +02:00
Jonathan Bakker 0383024f81 power: supply: max17040: Correct voltage reading
According to the datasheet available at (1), the bottom four
bits are always zero and the actual voltage is 1.25x this value
in mV.  Since the kernel API specifies that voltages should be in
uV, it should report 1250x the shifted value.

1) https://datasheets.maximintegrated.com/en/ds/MAX17040-MAX17041.pdf

Signed-off-by: Jonathan Bakker <xc-racer2@live.ca>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 22:00:02 +02:00
Lubomir Rintel 29e9eff40f power: supply: olpc_battery: fix the power supply name
The framework is unhappy about them, because it uses the names in sysfs
attributes:

  power_supply olpc-ac: hwmon: 'olpc-ac' is not a valid name attribute, please fix
  power_supply olpc-battery: hwmon: 'olpc-battery' is not a valid name attribute, please fix

See also commit 648cd48c9e ("hwmon: Do not accept invalid name
attributes") and commit 74d3b64197 ("hwmon: Relax name attribute
validation for new APIs").

Signed-off-by: Lubomir Rintel <lkundrak@v3.sk>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 18:56:30 +02:00
David Heidelberg fa7cc725a3 power: supply: smb347-charger: Add delay before getting IRQSTAT
This delay-fix is picked up from downstream driver,
we measured that 25 - 35 ms delay ensure that we get required data.

Tested on SMB347 on Nexus 7 2012. Otherwise IRQSTAT_E fails to provide
correct information.

Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: David Heidelberg <david@ixit.cz>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 18:23:50 +02:00
Dmitry Osipenko c32ea07a30 power: supply: smb347-charger: IRQSTAT_D is volatile
Fix failure when USB cable is connected:
smb347 2-006a: reading IRQSTAT_D failed

Fixes: 1502cfe19b ("smb347-charger: Fix battery status reporting logic for charger faults")

Tested-by: David Heidelberg <david@ixit.cz>
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Signed-off-by: David Heidelberg <david@ixit.cz>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 18:22:20 +02:00
Matti Vaittinen 75ffb420aa power: supply: KConfig cleanup default n
The "default n" is not needed as it is, well, default. Clean
the KConfig by removing "default n".

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 02:35:49 +02:00
Matti Vaittinen 72073aa1e2 power: supply: Fix Kconfig help text indentiation
Indent the help text as explained in
Documentation/process/coding-style.rst

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 02:35:49 +02:00
Matti Vaittinen 0902f83664 power: supply: Support ROHM bd99954 charger
The ROHM BD99954 is a Battery Management LSI for 1-4 cell Lithium-Ion
secondary battery intended to be used in space-constraint equipment such
as Low profile Notebook PC, Tablets and other applications. BD99954
provides a Dual-source Battery Charger, two port BC1.2 detection and a
Battery Monitor.

Support ROHM BD99954 Charger IC.

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 02:35:49 +02:00
Matti Vaittinen 5a63b7ba50 power: supply: add battery parameters
Add parsing of new device-tree battery bindings.

     - trickle-charge-current-microamp
     - precharge-upper-limit-microvolt
     - re-charge-voltage-microvolt
     - over-voltage-threshold-microvolt

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 02:35:49 +02:00
Matti Vaittinen 92f7d90972 power: supply: bd70528: use linear ranges
Change the bd70528 to use common linear_range code instead of
implementing a copy of it in this driver.

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 02:35:46 +02:00
Sebastian Reichel bf584e4dbd lib: Add linear ranges helper library and start using it
Series extracts a "linear ranges" helper out of the regulator
 framework. Linear ranges helper is intended to help converting
 real-world values to register values when conversion is linear. I
 suspect this is useful also for power subsystem and possibly for clk.
 -----BEGIN PGP SIGNATURE-----
 
 iQFHBAABCgAxFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAl61lKwTHGJyb29uaWVA
 a2VybmVsLm9yZwAKCRAk1otyXVSH0HxeB/9dblIbC+28MvcEHXCcYBZBouOnrM8E
 bIOMXkgEj1uL78ozOm7tMCgEpaKgv6BHdDuClCBvjbr0uOtAi0qUiv0IBotuVrdo
 lq73l8l7OPz6TFFKIt8WsgwKnzdkuQC08+qrZasAdluRQnqnmkU2tvl2y9zaaaR4
 6hGw+Nwx/pgeCXCa3pu+rCYwA7g0Tf8a6DDC6LyQWZameBJ1ey/YDjhJEeSmY7P7
 306zs8YVxHhQMLUQ5T7DA6r/KWMNkO1SOueCqTjxWZc/XamGEcbsZG1cWrAnkoE2
 VKLXBtYC75coNxIiu8ZxnQwLLdz1EQPdtg0qmzSjXJ68QjbWWzf4K1ra
 =LG9G
 -----END PGP SIGNATURE-----

Merge tag 'tags/linear-ranges-lib' into psy-next

lib: Add linear ranges helper library and start using it

Series extracts a "linear ranges" helper out of the regulator
framework. Linear ranges helper is intended to help converting
real-world values to register values when conversion is linear. I
suspect this is useful also for power subsystem and possibly for clk.

Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 01:56:03 +02:00
Hongbo Yao 1072ceada4 power: reset: ltc2952: remove unused variable
Fix gcc '-Wunused-but-set-variable' warning:
drivers/power/reset/ltc2952-poweroff.c:97:16: warning: variable
‘overruns’ set but not used [-Wunused-but-set-variable]
  unsigned long overruns;

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: Hongbo Yao <yaohongbo@huawei.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 01:20:41 +02:00
Christophe JAILLET 934ed3847a power: supply: lp8788: Fix an error handling path in 'lp8788_charger_probe()'
In the probe function, in case of error, resources allocated in
'lp8788_setup_adc_channel()' must be released.

This can be achieved easily by using the devm_ variant of
'iio_channel_get()'.
This has the extra benefit to simplify the remove function and to axe the
'lp8788_release_adc_channel()' function which is now useless.

Fixes: 98a2766493 ("power_supply: Add new lp8788 charger driver")
Signed-off-by: Christophe JAILLET <christophe.jaillet@wanadoo.fr>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-10 01:20:41 +02:00
ChenTao 1a45732926 power: supply: cw2015: Make some symbols static
Fix the following warning:

drivers/power/supply/cw2015_battery.c:96:5: warning:
'cw_update_profile' was not declared. Should it be static?
drivers/power/supply/cw2015_battery.c:712:1: warning:
'cw_bat_pm_ops' was not declared. Should it be static?

Reported-by: Hulk Robot <hulkci@huawei.com>
Signed-off-by: ChenTao <chentao107@huawei.com>
Acked-by: Tobias Schramm <t.schramm@manjaro.org>
Tested-by: Tobias Schramm <t.schramm@manjaro.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-09 02:19:25 +02:00
Dan Carpenter cf5701bf74 power: bq25890: unlock on error paths in bq25890_resume()
We introduced some new locking here, but need to update the error
paths so they unlock before returning.

Fixes: 72d9cd9cdc ("power: bq25890: protect view of the chip's state")
Signed-off-by: Dan Carpenter <dan.carpenter@oracle.com>
Reviewed-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-09 01:59:37 +02:00
Matti Vaittinen de824cc965
power: supply: bd70528: rename linear_range to avoid collision
Follow-up patches in this series will add a generic struct
linear_range. Rename bd70528 internal struct to avoid collision.

Signed-off-by: Matti Vaittinen <matti.vaittinen@fi.rohmeurope.com>
Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Link: https://lore.kernel.org/r/286b1ae0adc1c08e7b644cbdc1a43eb2e0644647.1588944082.git.matti.vaittinen@fi.rohmeurope.com
Signed-off-by: Mark Brown <broonie@kernel.org>
2020-05-08 18:18:13 +01:00
Mathew King 2ad3d74e3c power: supply: core: Add type property to uevent env
Add POWER_SUPPLY_TYPE to the uevent env for power supply. Type is a
property of all power supplies and there is a sysfs entry for it but it
is not included in the properties array of the power supply so
explicitly add it to the udev env.

Signed-off-by: Mathew King <mathewk@chromium.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-07 00:54:38 +02:00
Mathew King 5b505366ac power: supply: core: Add a macro that maps enum properties to text values
Reduce the number of touch points to add a new enum property to the
power_supply class by mapping the array of text values to the device
attribute descriptor. A new enum property can now added by creating an
array with the text values named POWER_SUPPLY_${PROPNAME}_TEXT and
adding POWER_SUPPLY_ENUM_ATTR(${PROPNAME}) to the power_supply_attrs
array.

Signed-off-by: Mathew King <mathewk@chromium.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-07 00:53:57 +02:00
Mathew King d960d91f86 power: supply: core: Use designated initializer for property text arrays
Use designated initializers for the sysfs power supply text values. This
will help ensure that the text values are kept in sync with the enum
values from power_supply.h.

Signed-off-by: Mathew King <mathewk@chromium.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-07 00:53:49 +02:00
Mathew King 2cabeaf151 power: supply: core: Cleanup power supply sysfs attribute list
Make the device attribute list used to create sysfs attributes more
robust by decoupling the list order from order of the enum defined in
power_supply.h. This is done by using a designated initializer in the
POWER_SUPPLY_ATTR macro.

Signed-off-by: Mathew King <mathewk@chromium.org>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-07 00:53:38 +02:00
Michał Mirosław 72d9cd9cdc power: bq25890: protect view of the chip's state
Extend bq->lock over whole updating of the chip's state. Might get
useful later for switching ADC modes correctly.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 22:33:35 +02:00
Michał Mirosław a9c2419406 power: bq25890: remove redundant I2C bus check
regmap initialization will check I2C adapter functionality.
Remove redundant check in the driver.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 21:51:03 +02:00
Michał Mirosław a6a48fac96 power: bq25890: make property table const
Property list should not change, so mark it const.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 21:50:21 +02:00
Michał Mirosław 5956fca78f power: bq25890: simplify chip name property getter
Driver rejects unknown chips early in the probe(), so when
bq25890_power_supply_get_property() is made reachable, bq->chip_version
will already be set to correct value - there is no need to check
it again.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 21:49:34 +02:00
Tobias Schramm b4c7715c10 power: supply: add CellWise cw2015 fuel gauge driver
This patch adds a driver for the CellWise cw2015 fuel gauge.

The CellWise cw2015 is a shuntless, single-cell Li-Ion fuel gauge used
in the pine64 Pinebook Pro laptop and some Raspberry Pi UPS HATs.

Signed-off-by: Tobias Schramm <t.schramm@manjaro.org>
Reviewed-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 17:40:39 +02:00
Qiushi Wu 1d7a7128a2 power: supply: core: fix memory leak in HWMON error path
In function power_supply_add_hwmon_sysfs(), psyhw->props is
allocated by bitmap_zalloc(). But this pointer is not deallocated
when devm_add_action fail,  which lead to a memory leak bug. To fix
this, we replace devm_add_action with devm_add_action_or_reset.

Cc: stable@kernel.org
Fixes: e67d4dfc9f ("power: supply: Add HWMON compatibility layer")
Signed-off-by: Qiushi Wu <wu000273@umn.edu>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-03 02:17:13 +02:00
Michał Mirosław e83a2e4434 power: supply: core: tabularize HWMON temperature labels
Rework power_supply_hwmon_read_string() to check it's parameters.
This allows to extend it later with labels for other types of
measurements.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 18:58:42 +02:00
Michał Mirosław 97ed79f493 power: charger-manager: clarify num_properties starting value
Initialize num_properties with length of the copied array instead
of relying on previously memcpy'd value. This makes it clear how
the array and the counter are related.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 16:48:02 +02:00
Michał Mirosław b0e4aa97ea power: supply: core: hide unused HWMON labels
Currently HWMON emulation shows all labels (temp and ambient temp)
regardless if power supply supports reading the values. Check that at
least one property is enabled for each label.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 15:43:04 +02:00
Michał Mirosław 6b20464ad9 power: supply: core: fix HWMON temperature labels
tempX_label files are swapped compared to what
power_supply_hwmon_temp_to_property() uses. Make them match.

Cc: stable@vger.kernel.org
Fixes: e67d4dfc9f ("power: supply: Add HWMON compatibility layer")
Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 15:43:04 +02:00
Sebastian Reichel 191e6bcf50 power: supply: generic-adc-battery: Prepare for const properties
This prepares the driver to work with the properties entry
in power_supply_desc marked as const.

Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 15:43:04 +02:00
Sebastian Reichel 4cb3825859 power: supply: charger-manager: Prepare for const properties
This prepares the driver to work with the properties entry
in power_supply_desc marked as const.

Reviewed-by: Enric Balletbo i Serra <enric.balletbo@collabora.com>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 15:42:18 +02:00
Michał Mirosław de46e02893 power: supply: core: reduce power_supply_show_usb_type() parameters
Reduce power_supply_show_usb_type() parameter count by folding
power_supply_desc dereference into the function.  This makes following
patch making usb_types const easier.

Signed-off-by: Michał Mirosław <mirq-linux@rere.qmqm.pl>
Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
2020-05-01 13:09:48 +02:00