- 25 Feb, 2023 3 commits
-
-
ChiaEn Wu authored
Revise RT9467 compatible name from "richtek,rt9467-charger" to "richtek,rt9467" because it has to match the "compatible name" in the source code. Fixes: e1b4620f ("dt-bindings: power: supply: Add Richtek RT9467 battery charger") Reported-by:
Rob Herring <robh@kernel.org> Signed-off-by:
ChiaEn Wu <chiaen_wu@richtek.com> Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Bastien Nocera authored
Document how the absence of the "present" property in the sysfs power_supply class should be handled. Link: https://gitlab.freedesktop.org/upower/upower/-/merge_requests/173 Cc: Mario Limonciello <mario.limonciello@amd.com> Signed-off-by:
Bastien Nocera <hadess@hadess.net> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
qinyu authored
There is an null pointer check order issue here: if we have to check !desc and !desc->name anyway, check it before dereferencing it in pr_warn(). Signed-off-by:
qinyu <qinyu32@huawei.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 15 Feb, 2023 4 commits
-
-
Arnd Bergmann authored
Since this driver can only be built-in, it fails to link when the I2C layer is in a loadable module: x86_64-linux-ld: drivers/power/reset/odroid-go-ultra-poweroff.o: in function `odroid_go_ultra_poweroff_get_pmic_device': odroid-go-ultra-poweroff.c:(.text+0x30): undefined reference to `i2c_find_device_by_fwnode' Tighten the dependency to only allow enabling POWER_RESET_ODROID_GO_ULTRA_POWEROFF is I2C is built-in as well. Fixes: cec3b46b ("power: reset: add Odroid Go Ultra poweroff driver") Signed-off-by:
Arnd Bergmann <arnd@arndb.de> Acked-by:
Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Thomas Weißschuh authored
Instead of relying on an accidental, transitive inclusion of linux/leds.h use it directly. Signed-off-by:
Thomas Weißschuh <linux@weissschuh.net> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Konrad Dybcio authored
It's fine for these properties to be absent, as the driver doesn't fail without them and functions with settings inherited from the reset/previous stage bootloader state. Fixes: 6c463222 ("dt-bindings: power: supply: pm8941-coincell: Convert to DT schema format") Signed-off-by:
Konrad Dybcio <konrad.dybcio@linaro.org> Acked-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Konrad Dybcio authored
Add a specific compatible for the coincell charger present on PM8998. Acked-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Signed-off-by:
Konrad Dybcio <konrad.dybcio@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 14 Feb, 2023 1 commit
-
-
Neil Armstrong authored
The Hardkernel Odroid Go Ultra poweroff scheme requires requesting a poweroff to its two PMICs in order, this represents the poweroff scheme needed to complete a clean poweroff of the system. This implement this scheme by implementing a self registering driver to permit using probe defer until both pmics are finally probed. Signed-off-by:
Neil Armstrong <neil.armstrong@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 13 Feb, 2023 3 commits
-
-
Colin Ian King authored
There is a spelling mistake in a dev_err message. Fix it. Signed-off-by:
Colin Ian King <colin.i.king@gmail.com> Reviewed-by:
ChiaEn Wu <chiaen_wu@richtek.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Yang Yingliang authored
Pass the correct 'ce_gpio' to IS_ERR(), and remove the ce_gpio in chip data, make it all by SW control only, not to control by HW pin. Fixes: 4a1a5f67 ("power: supply: rt9471: Add Richtek RT9471 charger driver") Reviewed-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
Yang Yingliang <yangyingliang@huawei.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Uwe Kleine-König authored
The return value of max77650_charger_disable() is ignored by all but one caller. That one caller propagates the error code in the platform driver's remove function. The only effect of that is that the driver core emits a generic error message (but still removes the device). As max77650_charger_disable() already emits an error message, this can better be changed to return zero. This is a preparation for making struct platform_driver::remove return void, too. Signed-off-by:
Uwe Kleine-König <u.kleine-koenig@pengutronix.de> Reviewed-by:
Bartosz Golaszewski <bartosz.golaszewski@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 03 Feb, 2023 14 commits
-
-
ChiaEn Wu authored
Document the settings exported by rt9467 charger driver through sysfs entries: - sysoff_enable Signed-off-by:
ChiaEn Wu <chiaen_wu@richtek.com> [update kernel version and date] Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ChiaEn Wu authored
RT9467 is a switch-mode single cell Li-Ion/Li-Polymer battery charger for portable applications. It integrates a synchronous PWM controller, power MOSFETs, input current sensing and regulation, high-accuracy voltage regulation, and charge termination. The charge current is regulated through integrated sensing resistors. The RT9467 also features USB On-The-Go (OTG) support. It also integrates D+/D- pin for USB host/charging port detection. Co-developed-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
ChiaEn Wu <chiaen_wu@richtek.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ChiaEn Wu authored
Add bindings for the Richtek RT9467 battery charger. Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Co-developed-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
ChiaEn Wu <chiaen_wu@richtek.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ChiYuan Huang authored
Document the settings exported by rt9471 charger driver through sysfs entries: - sysoff_enable - port_detect_enable Signed-off-by:
ChiYuan Huang <cy_huang@richtek.com> [update kernel version and date] Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ChiYuan Huang authored
Add support for the RT9471 3A 1-Cell Li+ battery charger. The RT9471 is a highly-integrated 3A switch mode battery charger with low impedance power path to better optimize the charging efficiency. Co-developed-by:
Alina Yu <alina_yu@richtek.com> Signed-off-by:
Alina Yu <alina_yu@richtek.com> Signed-off-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ChiYuan Huang authored
Add bindings for the Richtek RT9471 I2C controlled battery charger. Reviewed-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> Co-developed-by:
Alina Yu <alina_yu@richtek.com> Signed-off-by:
Alina Yu <alina_yu@richtek.com> Signed-off-by:
ChiYuan Huang <cy_huang@richtek.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Minghao Chi authored
The implementation of strscpy() is more robust and safer. That's now the recommended way to copy NUL terminated strings. Reported-by:
Zeal Robot <zealci@zte.com.cn> Signed-off-by:
Minghao Chi <chi.minghao@zte.com.cn> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Xu Panda authored
The implementation of strscpy() is more robust and safer. That's now the recommended way to copy NUL-terminated strings. Signed-off-by:
Xu Panda <xu.panda@zte.com.cn> Signed-off-by:
Yang Yang <yang.yang29@zte.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Sicelo A. Mhlongo authored
The EDV1/SOC1 flag is set when the battery voltage drops below the threshold set in EEPROM. From observing the capacity_level reported by the driver, and reading the datasheet, EDV1 remains set even when EDVF/SOCF gets set. Thus, bq27xxx_battery_capacity_level() never reaches the CAPACITY_LEVEL_CRITICAL code path, since CAPACITY_LEVEL_LOW takes precedence. This commit fixes the issue by swapping the order in which the flags are tested. It was tested with bq27200 in the Nokia N900. Signed-off-by:
Sicelo A. Mhlongo <absicsz@gmail.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Hermes Zhang authored
Init the ichg/vbat reg with chip default value instead of the max value used now. The max value set in driver will result an unsafe case (e.g. battery is over charging when in a hot environment) if no user space update the value later. Signed-off-by:
Hermes Zhang <chenhuiz@axis.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Andy Shevchenko authored
Finish the job started by the commit ba940ed8 ("power: supply: collie_battery: Convert to GPIO descriptors"), i.e. convert the use of gpio_to_irq() to gpiod_to_irq(). No functional changes intended. Signed-off-by:
Andy Shevchenko <andriy.shevchenko@linux.intel.com> Reviewed-by:
Linus Walleij <linus.walleij@linaro.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Andreas Kemnade authored
The rn5t618 power driver fails to register a cooling device because POWER_SUPPLY_PROP_CHARGE_CONTROL_LIMIT_MAX is missing but availability is not checked before registering cooling device. After improved error checking in the thermal code, the registration of the power supply fails entirely. Checking for availability of _MAX before registering cooling device fixes the rn5t618 problem. But the whole logic feels questionable. First, the logic is inverted here: the code tells: max_current = max_cooling but 0 = max_cooling, so there needs to be some inversion in the code which cannot be found. Comparing with other cooling devices, it can be found that value for fan speed is not inverted, value for cpufreq cooling is inverted (similar situation as here lowest frequency = max cooling) Second, analyzing usage of _MAX: it is seems that maximum capabilities of charging controller are specified and not of the battery. Probably there is not too much mismatch in the drivers actually implementing that. So nothing has exploded yet. So there is no easy and safe way to specifify a max cooling value now. Conclusion for now (as a regression fix) just remove the cooling device registration and do it properly later on. Fixes: e49a1e1e ("thermal/core: fix error code in __thermal_cooling_device_register()") Fixes: 952aeeb3 ("power_supply: Register power supply for thermal cooling device") Signed-off-by:
Andreas Kemnade <andreas@kemnade.info> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Pali Rohár authored
Read new optional device tree property priority for specifying priority level of reset handler. Default value is 192 as before. Signed-off-by:
Pali Rohár <pali@kernel.org> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Pali Rohár authored
This new optional priority property allows to specify custom priority level of reset device. Prior this change priority level was hardcoded to 192 and not possible to specify or change. Specifying other value is needed for some boards. Default level when not specified stays at 192 as before. Signed-off-by:
Pali Rohár <pali@kernel.org> Acked-by:
Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> [add $ref to existing allOf to fix duplication warning] Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 28 Jan, 2023 2 commits
-
-
Hans de Goede authored
Some devices, such as the Lenovo Yoga Tab 3 Pro (YT3-X90F) have multiple batteries with a separate bq25890 charger for each battery. This requires the maximum current the external power-supply can deliver to be divided over the chargers. The Android vendor kernel shipped on the YT3-X90F divides this current with a 40/60 percent split so that batteries are done charging at approx. the same time if both were fully empty at the start. Add support for a new "linux,iinlim-percentage" percentage property which can be set to indicate that a bq25890 charger should only use that percentage of the external power-supply's maximum current. So far this new property is only used on x86/ACPI (non devicetree) devs, IOW it is not used in actual devicetree files. The devicetree-bindings maintainers have requested properties like these to not be added to the devicetree-bindings, so the new property is deliberately not added to the existing devicetree-bindings. Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Reviewed-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Hans de Goede authored
Some devices, such as the Lenovo Yoga Tab 3 Pro (YT3-X90F) have multiple batteries with a separate bq25890 charger for each battery. This requires some coordination between the chargers specifically the main charger needs to put the secondary charger in Hi-Z mode when: 1. Enabling its 5V boost (OTG) output to power an external USB device, to avoid the secondary charger IC seeing this as external Vbus and then trying to charge the secondary battery from this. 2. Talking the Pump Express protocol to increase the external Vbus voltage. Having the secondary charger drawing current when the main charger is trying to talk the Pump Express protocol results in the external Vbus voltage not being raised. Add a new "linux,secondary-charger-name" string device-property, which can be set to the power_supply class device's name of the secondary charger when there is a secondary charger; and make the Vbus regulator and Pump Express code put the secondary charger in Hi-Z mode when necessary. So far this new property is only used on x86/ACPI (non devicetree) devs, IOW it is not used in actual devicetree files. The devicetree-bindings maintainers have requested properties like these to not be added to the devicetree-bindings, so the new property is deliberately not added to the existing devicetree-bindings. Reviewed-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 02 Jan, 2023 8 commits
-
-
Hans de Goede authored
Some devices, such as the Lenovo Yoga Tab 3 Pro (YT3-X90F) have multiple batteries with a separate bq25890 charger for each battery. This requires the bq25890_charger code to use a unique name per registered power_supply class device, rather then hardcoding "bq25890-charger" as power_supply class device name. Add a "-%d" prefix to the name, allocated through idr in the same way as several other power_supply drivers are already doing this. Note this also updates: drivers/platform/x86/x86-android-tablets.c which refers to the charger by power_supply-class-device-name for the purpose of setting the "supplied-from" property on the fuel-gauge to this name. Reviewed-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Hans de Goede authored
The code to check if F_CONV_RATE has been set, or if a manual ADC conversion needs to be triggered, as well as the code to set the initial F_CONV_RATE value at probe both where not taking HiZ mode into account. Add checks for this. Reviewed-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Hans de Goede authored
The recent "power: supply: bq25890: Add HiZ mode support" change leaves F_CONV_RATE rate unset when disabling HiZ mode (setting POWER_SUPPLY_PROP_ONLINE to 1) while a charger is connected. Separate the resetting HiZ mode (when necessary because of a charger (re)plug event) into its own "if {}" block which runs first. And fix the setting of F_CONV_RATE rate by adding helper variables for the old and new F_CONV_RATE state which check both the online and hiz bits and then compare the helper variables to see if a F_CONV_RATE update is necessary. Reviewed-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Marek Vasut authored
The bq25890 is capable of disconnecting itself from the external supply, in which case the system is supplied only from the battery. This can be useful e.g. to test the pure battery operation, or draw no power from USB port. Implement support for this mode, which can be toggled by writing 0 or non-zero to sysfs 'online' attribute, to select either offline or online mode. The IRQ handler has to be triggered to update chip state, as switching to and from HiZ mode does not generate an interrupt automatically. The IRQ handler reinstates the HiZ mode in case a cable is replugged by the user, the chip itself clears the HiZ mode bit when cable is plugged in by the user and the chip detects PG bad-to-good transition. Signed-off-by:
Marek Vasut <marex@denx.de> [hdegoede@redhat.com: Replace "&" with "&&" in a boolean check] Reviewed-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Marek Vasut authored
Pull the chip state and ADC conversion update functionality out into separate function, so it can be reused elsewhere in the driver. This is a preparatory patch, no functional change. Reviewed-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Marek Vasut <marex@denx.de> Signed-off-by:
Hans de Goede <hdegoede@redhat.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
Deepak R Varma authored
A call to platform_get_irq_byname() already prints an error on failure within its own implementation. So printing another error based on its return value in the caller is redundant and should be removed. The clean up also makes if condition block braces and the device pointer variable dev unnecessary. Remove those as well. Issue identified using platform_get_irq.cocci coccinelle semantic patch. Signed-off-by:
Deepak R Varma <drv@mailo.com> Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ye xingchen authored
As documented in Documentation/filesystems/sysfs.rst the sysfs show() function should use sysfs_emit() or sysfs_emit_at() to format the userspace return value. This replaces all sysfs related instances of sprintf() with sysfs_emit() in the power-supply subsystem. Signed-off-by:
ye xingchen <ye.xingchen@zte.com.cn> [Drop sysfs_emit changes done for code not related to sysfs show and reword commit message] Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
ye xingchen authored
As documented in Documentation/filesystems/sysfs.rst the sysfs show() function should use sysfs_emit() or sysfs_emit_at() to format the userspace return value. This replaces all instances of scnprintf() with sysfs_emit() in the power-supply subsystem. Signed-off-by:
ye xingchen <ye.xingchen@zte.com.cn> [reword commit message] Signed-off-by:
Sebastian Reichel <sebastian.reichel@collabora.com>
-
- 25 Dec, 2022 2 commits
-
-
Linus Torvalds authored
-
Steven Rostedt (Google) authored
Due to several bugs caused by timers being re-armed after they are shutdown and just before they are freed, a new state of timers was added called "shutdown". After a timer is set to this state, then it can no longer be re-armed. The following script was run to find all the trivial locations where del_timer() or del_timer_sync() is called in the same function that the object holding the timer is freed. It also ignores any locations where the timer->function is modified between the del_timer*() and the free(), as that is not considered a "trivial" case. This was created by using a coccinelle script and the following commands: $ cat timer.cocci @@ expression ptr, slab; identifier timer, rfield; @@ ( - del_timer(&ptr->timer); + timer_shutdown(&ptr->timer); | - del_timer_sync(&ptr->timer); + timer_shutdown_sync(&ptr->timer); ) ... when strict when != ptr->timer ( kfree_rcu(ptr, rfield); | kmem_cache_free(slab, ptr); | kfree(ptr); ) $ spatch timer.cocci . > /tmp/t.patch $ patch -p1 < /tmp/t.patch Link: https://lore.kernel.org/lkml/20221123201306.823305113@linutronix.de/Signed-off-by:
Steven Rostedt (Google) <rostedt@goodmis.org> Acked-by: Pavel Machek <pavel@ucw.cz> [ LED ] Acked-by: Kalle Valo <kvalo@kernel.org> [ wireless ] Acked-by: Paolo Abeni <pabeni@redhat.com> [ networking ] Signed-off-by:
Linus Torvalds <torvalds@linux-foundation.org>
-
- 23 Dec, 2022 3 commits
-
-
git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spiLinus Torvalds authored
Pull spi fix from Mark Brown: "One driver specific change here which handles the case where a SPI device for some reason tries to change the bus speed during a message on fsl_spi hardware, this should be very unusual" * tag 'spi-fix-v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi: spi: fsl_spi: Don't change speed while chipselect is active
-
Linus Torvalds authored
Merge tag 'regulator-fix-v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator Pull regulator fixes from Mark Brown: "Two core fixes here, one for a long standing race which some Qualcomm systems have started triggering with their UFS driver and another fixing a problem with supply lookup introduced by the fixes for devm related use after free issues that were introduced in this merge window" * tag 'regulator-fix-v6.2-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator: regulator: core: fix deadlock on regulator enable regulator: core: Fix resolve supply lookup issue
-
git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linuxLinus Torvalds authored
Pull coccicheck update from Julia Lawall: "Modernize use of grep in coccicheck: Use 'grep -E' instead of 'egrep'" * tag 'coccinelle-6.2' of git://git.kernel.org/pub/scm/linux/kernel/git/jlawall/linux: scripts: coccicheck: use "grep -E" instead of "egrep"
-