blob: 5ec96a9e053bf3082a734521d26276cb37f0e852 [file] [log] [blame]
#!/bin/sh
#
# Copyright (c) 2013 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.
#
# Collect information about the audio system from top to bottom.
dump_cards() {
for card in ${@}
do
echo '=== amixer -c' $card scontents '==='
amixer -c $card scontents
echo '=== amixer -c' $card contents '==='
amixer -c $card contents
done
}
echo '=== cras_test_client --dump_server_info ==='
cras_test_client --dump_server_info
echo '=== cras_test_client --dump_audio_thread ==='
cras_test_client --dump_audio_thread
echo '=== aplay -l ==='
aplay -l
echo '=== arecord -l ==='
arecord -l
output_cards=$(aplay -l | egrep ^card | sed 's/card \([0-9]\+\).*/\1/' | sort -u)
dump_cards $output_cards
input_cards=$(arecord -l | egrep ^card | sed 's/card \([0-9]\+\).*/\1/' | sort -u)
dump_cards $input_cards
# HDA codec for codecs on x86.
codecs=$(find /proc/asound -mindepth 2 -maxdepth 2 -path '*card*/codec#*')
for codec in $codecs
do
echo '=== codec:' $codec '==='
cat $codec
done
# I2C dump for codecs on arm.
# Find lines like "max98088.7-0010" and extract "7 0x0010" from it.
if [ -e /sys/kernel/debug/asoc/codecs ]; then
sed_expr='s/^\([^.-]\+\)\.\([0-9]\+\)-\([0-9]\+\)$/\2 0x\3/p'
sed -n "$sed_expr" /sys/kernel/debug/asoc/codecs |
while read i2c_addr
do
echo '===' i2cdump -f -y $i2c_addr '==='
i2cdump -f -y $i2c_addr
done
fi