diff options
Diffstat (limited to 'scripts/asoc_dapm_graph')
-rwxr-xr-x | scripts/asoc_dapm_graph | 95 |
1 files changed, 0 insertions, 95 deletions
diff --git a/scripts/asoc_dapm_graph b/scripts/asoc_dapm_graph deleted file mode 100755 index fd43736d..00000000 --- a/scripts/asoc_dapm_graph +++ /dev/null @@ -1,95 +0,0 @@ -#!/usr/bin/env python -# Copyright 2014 The Chromium OS Authors. All rights reserved. -# Use of this source code is governed by a BSD-style license that can be -# found in the LICENSE file. - -"""Dump DAPM widgets status as a 'dot' graph file. - -To generate widget status for a device run - ssh $REMOTE asoc_dapm_graph > dot.txt && dot -Kfdp -Tpng dot.txt -o widgets.png -""" - -from __future__ import print_function -import os -import platform -import re -import sys -import time - -ROOTDIR = '/sys/kernel/debug/asoc/' -# Some widget names are widely used by many codecs, adding them to the graph -# creates a mess. -IGNORE_WIDGETS = ('Playback', 'Capture', 'bias_level') - - -def handle_widgets(path): - """Reads DAPM widget information from sysfs and generates dot graph entry. - - Args: - path: path for sysfs file that exports information about DAPM widget. - """ - for w in os.listdir(path): - if w in IGNORE_WIDGETS: - continue - - with open(os.path.join(path, w)) as f: - lines = f.readlines() - - active = lines[0].startswith(w + ': On ') - color = 'green' if active else 'red' - print('\t"%s" [color = %s]' % (w, color)) - - for l in lines[1:]: - l = l.rstrip() - # The string format is (in/out) "switch" "widget". - edge = list(filter(None, re.split(r' (in|out) "(.+)" "(.+)"', l))) - - if len(edge) != 3: - continue - - direction = edge[0] - source = edge[2] - - if source in IGNORE_WIDGETS: - continue - - # We need to output the edge only once (e.g. inbound). - if direction != 'in': - continue - - print('\t"%s" -> "%s"' % (source, w)) - - -def handle_card(path): - """Generates dot graph file for the given card. - - Args: - path: path to sysfs directory that exports DAPM information for a sound card. - """ - host = platform.uname()[1] - print('// Generated %s at %s.' % (time.strftime("%c"), host)) - print('// To visualize the graph run "dot -Kfdp -Tpng $SCRIPT_OUTPUT_FILE -o widgets.png".') - print('digraph G {') - print('\tbgcolor = grey') - for root, dirs, files in os.walk(path): - if 'dapm' in dirs: - handle_widgets(os.path.join(root, 'dapm')) - dirs.remove('dapm') - print('}') - - -def main(argv): - for c in os.listdir(ROOTDIR): - path = os.path.join(ROOTDIR, c) - # We assume that directories in ROOTDIR are cards. - if os.path.isdir(path): - handle_card(path) - sys.exit(0) - - print('No cards found', file=sys.stderr) - sys.exit(1) - - -if __name__ == '__main__': - main(sys.argv[1:]) - |