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'