diff options
author | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-06-13 17:52:41 +0200 |
---|---|---|
committer | Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> | 2020-06-22 14:45:20 +0200 |
commit | 79dc5d35dd7eb372afeb638cc1f86d1da2045623 (patch) | |
tree | 0922d1a0e9f99dd01e9fc1d0478ea4fbf611f11d /tools | |
parent | 876c75fe870846b09b54423a6b719d80bc879b27 (diff) | |
download | systemd-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')
-rwxr-xr-x | tools/make-autosuspend-rules.py | 41 |
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') |