]> git.alsa-project.org Git - alsa-utils.git/commitdiff
Add Sparc support in alsaconf
authorMartin Habets <errandir_news@mph.eclipse.co.uk>
Mon, 7 Nov 2005 14:57:07 +0000 (14:57 +0000)
committerTakashi Iwai <tiwai@suse.de>
Mon, 7 Nov 2005 14:57:07 +0000 (14:57 +0000)
I created the patch below against 1.0.10rc2 to make alsaconf work
for the Sparc and architectures.
It has been reviewed on the debian-sparc mailing list
(see http://lists.debian.org/debian-sparc/2005/10/msg00098.html).
I do not have positive confirmation it will work for the AMD7930
chip yet, but I expect it to. The other 2 chips have been tested
and work okay.

One of the feedbacks was that 'modprobe -a -l' is depreciated and
thus should be avoided (see the modprobe manpage), so I have taken
the oportunity to replace all use of this with a find equivalent.

Signed-off-by: Martin Habets <errandir_news@mph.eclipse.co.uk>
alsaconf/alsaconf.in

index a5d8895f0120d372777c6a12da8050b8a8a3d1d4..3c756608dce81d9cd880df2bdcf0ca0b607c7dac 100644 (file)
@@ -688,7 +688,8 @@ BEGIN {
     # PowerMac
     #
     if grep -q MacRISC $PROCFS/cpuinfo; then
-       /sbin/modprobe -a -l | grep 'snd-powermac' | \
+       MODDIR=/lib/modules/`uname -r`
+       find $MODDIR -name 'snd-powermac' -print | \
        while read i; do
            i=${i##*/}
            i=${i%%.o}
@@ -696,6 +697,43 @@ BEGIN {
            echo "PowerMac $i" >> $FOUND
        done
     fi
+
+    #
+    # Sparc
+    #
+    if grep -q Sparc $PROCFS/cpuinfo; then
+       test -r $PROCFS/openprom/name || /bin/mount -t openpromfs none $PROCFS/openprom >/dev/null 2>&1
+       # Check for an "audio" device
+       audio=
+       compat=
+       if test -r $PROCFS/openprom; then
+           audio=`find $PROCFS/openprom -follow -type d -name "audio*" -print`
+       fi
+       if test -n "$audio"; then
+           compat=`cat $audio/compatible`
+           compat=${compat#\'}
+           compat=${compat%\'}
+           compat=${compat#SUNW,}
+       fi
+       # Go through all cards we have
+       MODDIR=/lib/modules/`uname -r`
+       find $MODDIR -name 'snd-sun-*' -print | \
+       while read i; do
+           i=${i##*/}
+           i=${i%%.o}
+           i=${i%%.ko}
+           sdev=`echo ${i#snd-sun-} | tr "[a-z]" "[A-Z]"`
+
+           if test "$sdev" = "$compat"; then
+               echo "$sdev $i" >> $FOUND
+           elif test -r $PROCFS/openprom; then
+               find $PROCFS/openprom -follow -type d -name "SUNW,${sdev}*" \
+                   -exec echo "$sdev $i" \; 2>/dev/null >> $FOUND
+           else
+               echo "$sdev $i" >> $FOUND
+           fi
+       done
+    fi
 }
 
 #
@@ -1305,7 +1343,8 @@ devs_olist=""
 
 if [ -s "$FOUND" ]; then
     while read dev card ; do
-       /sbin/modprobe -a -l | grep -q -E $card'\.(o|ko)' || continue
+       MODDIR=/lib/modules/`uname -r`
+       find $MODDIR -type f | grep -q -E $card'\.(o|ko)' || continue
        cardname=`find_device_name $dev | cut -c 1-64`
        if [ -z "$cardname" ]; then
            cardname="$card"