From 16277c88c4fdf74aad15f97123d3b2ad0e1c2cfe Mon Sep 17 00:00:00 2001 From: Jelle van der Waa Date: Mon, 22 Jul 2024 18:40:03 +0800 Subject: [PATCH] rules: add battery charge limit udev and hwdb files Set per battery-specific start/stop charge limits in udev as environment variable with the option to allow a user to override the default 60% start and 80% stop charge limit. Signed-off-by: Kate Hsuan --- rules/60-upower-battery.hwdb | 30 ++++++++++++++++++++++++++++++ rules/60-upower-battery.rules | 7 +++++++ rules/meson.build | 2 ++ 3 files changed, 39 insertions(+) create mode 100644 rules/60-upower-battery.hwdb create mode 100644 rules/60-upower-battery.rules diff --git a/rules/60-upower-battery.hwdb b/rules/60-upower-battery.hwdb new file mode 100644 index 0000000..609a82e --- /dev/null +++ b/rules/60-upower-battery.hwdb @@ -0,0 +1,30 @@ +# This file is part of upower. +# +# The lookup keys are composed in: +# 60-upower-battery.rules +# +# Match string format: +# battery:::dmi: +# +# The kernel is the name of battery in /sys/class/power_supply for +# differentiating between multiple batteries. +# +# The model_name is battery model name in for example +# /sys/class/power_supply/BAT0/model_name. +# +# The full DMI string of the running machine can be read from +# /sys/class/dmi/id/modalias +# That requires a kernel built with CONFIG_DMIID set, which is common. +# The full DMI string is not needed here and the meaning of individual parts +# can be seen in the source of the DMIID kernel module +# https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/drivers/firmware/dmi-id.c +# +# To add local overrides, create a new file +# /etc/udev/hwdb.d/61-battery-local.hwdb +# and add your rules there. To load the new rules execute (as root): +# systemd-hwdb update +# udevadm trigger -v -p /sys/class/power_supply/BAT +# where BAT is the battery in question. + +battery:*:*:dmi:* + CHARGE_LIMIT=60,80 diff --git a/rules/60-upower-battery.rules b/rules/60-upower-battery.rules new file mode 100644 index 0000000..65424a1 --- /dev/null +++ b/rules/60-upower-battery.rules @@ -0,0 +1,7 @@ +ACTION=="remove", GOTO="battery_end" + +SUBSYSTEM=="power_supply",ATTR{charge_control_start_threshold}!="" \ + IMPORT{builtin}="hwdb 'battery:$kernel:$attr{model_name}:$attr{[dmi/id]modalias}'", \ + GOTO="battery_end" + +LABEL="battery_end" diff --git a/rules/meson.build b/rules/meson.build index b780bb2..741de78 100644 --- a/rules/meson.build +++ b/rules/meson.build @@ -1,10 +1,12 @@ rules = [ + '60-upower-battery.rules', '95-upower-wup.rules', '95-upower-hid.rules', ] hwdb = [ '95-upower-hid.hwdb', + '60-upower-battery.hwdb', ] if os_backend == 'linux'