summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--rules.d/60-autosuspend.rules14
-rw-r--r--rules.d/meson.build1
-rwxr-xr-xtools/make-autosuspend-rules.py41
3 files changed, 31 insertions, 25 deletions
diff --git a/rules.d/60-autosuspend.rules b/rules.d/60-autosuspend.rules
new file mode 100644
index 0000000000..1f9ebef631
--- /dev/null
+++ b/rules.d/60-autosuspend.rules
@@ -0,0 +1,14 @@
+# do not edit this file, it will be overwritten on update
+
+ACTION!="add", GOTO="autosuspend_end"
+
+# I2C rules
+SUBSYSTEM=="i2c", ATTR{name}=="cyapa", \
+ ATTR{power/control}="on", GOTO="autosuspend_end"
+
+# Enable autosuspend if hwdb says so. Here we are relying on
+# the hwdb import done earlier based on MODALIAS.
+ENV{ID_AUTOSUSPEND}=="1", TEST=="power/control", \
+ ATTR{power/control}="auto"
+
+LABEL="autosuspend_end"
diff --git a/rules.d/meson.build b/rules.d/meson.build
index b4684486c2..ffa010d8e3 100644
--- a/rules.d/meson.build
+++ b/rules.d/meson.build
@@ -1,6 +1,7 @@
# SPDX-License-Identifier: LGPL-2.1+
rules = files('''
+ 60-autosuspend.rules
60-block.rules
60-cdrom_id.rules
60-drm.rules
diff --git a/tools/make-autosuspend-rules.py b/tools/make-autosuspend-rules.py
index 3faf5f4d71..1a99e02aad 100755
--- a/tools/make-autosuspend-rules.py
+++ b/tools/make-autosuspend-rules.py
@@ -2,32 +2,23 @@
# SPDX-License-Identifier: LGPL-2.1+
# Generate autosuspend rules for devices that have been whitelisted (IE tested)
-# by the Chromium OS team. Please keep this script in sync with:
+# by the Chromium OS team. Based on
# https://chromium.googlesource.com/chromiumos/platform2/+/master/power_manager/udev/gen_autosuspend_rules.py
-import sys
import chromiumos.gen_autosuspend_rules
-HWDB_FILE = """\
-%(usb_entries)s\
-%(pci_entries)s\
-"""
-
-if __name__ == '__main__':
- if len(sys.argv) > 1:
- sys.stdout = open(sys.argv[1], 'w')
-
- pci_entries = ''
- for dev_ids in chromiumos.gen_autosuspend_rules.PCI_IDS:
- vendor, device = dev_ids.split(':')
-
- pci_entries += ('usb:v%sp%s*\n'
- ' ID_AUTOSUSPEND=1\n' % (vendor, device))
- usb_entries = ''
- for dev_ids in chromiumos.gen_autosuspend_rules.USB_IDS:
- vendor, device = dev_ids.split(':')
-
- usb_entries += ('pci:v%sp%s*\n'
- ' ID_AUTOSUSPEND=1\n' % (vendor, device))
-
- print(HWDB_FILE % {'pci_entries' : pci_entries, 'usb_entries': usb_entries})
+print('# pci:v<00VENDOR>d<00DEVICE> (8 uppercase hexadecimal digits twice)')
+for entry in chromiumos.gen_autosuspend_rules.PCI_IDS:
+ vendor, device = entry.split(':')
+ vendor = int(vendor, 16)
+ device = int(device, 16)
+ print(f'pci:v{vendor:08X}d{device:08X}*')
+
+print('# usb:v<VEND>p<PROD> (4 uppercase hexadecimal digits twice')
+for entry in chromiumos.gen_autosuspend_rules.USB_IDS:
+ vendor, product = entry.split(':')
+ vendor = int(vendor, 16)
+ product = int(product, 16)
+ print(f'usb:v{vendor:04X}p{product:04X}*')
+
+print(' ID_AUTOSUSPEND=1')