summaryrefslogtreecommitdiff
path: root/tools/make-autosuspend-rules.py
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-06-13 17:52:41 +0200
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2020-06-22 14:45:20 +0200
commit79dc5d35dd7eb372afeb638cc1f86d1da2045623 (patch)
tree0922d1a0e9f99dd01e9fc1d0478ea4fbf611f11d /tools/make-autosuspend-rules.py
parent876c75fe870846b09b54423a6b719d80bc879b27 (diff)
downloadsystemd-79dc5d35dd7eb372afeb638cc1f86d1da2045623.tar.gz
tools: rewrite make-autosuspend-rules.py and add udev rules
Concatenating strings is not a very efficient approach. And in this case fully unnecessary. We also need some rules to make use of those hwdb entries. PCI needs to be 8 characters, not 4. And we need to use uppercase hexadecimal for both. With udev rules this made no difference, but hwdb match is case sensitive. Fixes #16119.
Diffstat (limited to 'tools/make-autosuspend-rules.py')
-rwxr-xr-xtools/make-autosuspend-rules.py41
1 files changed, 16 insertions, 25 deletions
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')