aboutsummaryrefslogtreecommitdiff
path: root/hwdetect
diff options
context:
space:
mode:
authorJudd Vinet <judd@archlinux.org>2005-11-15 01:18:14 +0000
committerJudd Vinet <judd@archlinux.org>2005-11-15 01:18:14 +0000
commitabdeaf8051aaadb9f5270a14e45481a8d61e0b95 (patch)
tree12d2e76fddeec2eeaec32bdc8bda04dec79b9ea9 /hwdetect
parent684a99329e37924e84344cb340e5022628d6777c (diff)
downloadinitscripts-abdeaf8051aaadb9f5270a14e45481a8d61e0b95.tar.xz
added tpowa's changes, cleaned up output and removed redundant code
Diffstat (limited to 'hwdetect')
-rwxr-xr-xhwdetect250
1 files changed, 73 insertions, 177 deletions
diff --git a/hwdetect b/hwdetect
index 55f2930..cb3bf1a 100755
--- a/hwdetect
+++ b/hwdetect
@@ -50,198 +50,94 @@ done
for i in `cat /tmp/modprobe`; do
modprobe --show-depends $i >> /tmp/modules-plain 2>/dev/null
done
+
+# find PNP devices, like parports etc. workaround for rtc and pcspkr included
+for i in `find /sys -name "id*" | grep pnp`; do
+ devid=`cat $i`
+ if [ "$devid" == "PNP0800" ]; then
+ modprobe --show-depends pcspkr >> /tmp/modules-plain 2>/dev/null
+ fi
+ if [ "$devid" == "PNP0b00" ]; then
+ modprobe --show-depends rtc >> /tmp/modules-plain 2>/dev/null
+ fi
+ modprobe --show-depends pnp:d${devid} >> /tmp/modules-plain 2>/dev/null
+done
+
sort -u /tmp/modules-plain >> /tmp/modules-sorted
sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" /tmp/modules-sorted >> /tmp/moduleslist
+listex() {
+ ln=$1 ; shift
+ if [ $# -gt 0 ]; then
+ ex=$1 ; shift
+ if [ "`echo $ln | grep -v $ex`" ]; then
+ listex "$ln" $*
+ fi
+ else
+ echo $ln | sed -ne "s#^/.*/\(.*\)\.ko.*#\1#p"
+ fi
+}
+listmods() {
+ key=$1 ; shift
+ for ln in `grep "$key" /tmp/modules-sorted | sed 's|^insmod ||g' | sort -u`; do
+ listex "$ln" $*
+ done
+}
+showlist() {
+ cat=$1 ; shift
+ [ $# -gt 0 ] || return
+ echo -n "$cat: "
+ for i in $*; do echo -n "$i "; done
+ echo ""
+}
+
# starting different actions
while [ $# -gt 0 ]; do
case $1 in
-load-modules)
# load all detected pci modules
- for i in `cat /tmp/modprobe`; do
+ for i in `cat /tmp/moduleslist`; do
modprobe $i > /dev/null 2>&1
done
;;
-show-modules)
- # show all detected modules
- echo "AGP modules"
- echo "-----------------------"
- grep "agp/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "IDE modules"
- echo "-----------------------"
- grep "ide/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "SCSI modules"
- echo "-----------------------"
- grep "scsi/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "sata" \
- | grep -v "ata_piix" | grep -v "libata"
- echo ""
- echo "SATA modules"
- echo "-----------------------"
- grep "ata" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "eata"
- echo ""
- echo "USB modules"
- echo "-----------------------"
- grep "usb/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "FIREWIRE modules"
- echo "-----------------------"
- grep "ieee1394/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "NETWORK modules"
- echo "-----------------------"
- grep "net/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "ISDN modules"
- echo "-----------------------"
- grep "isdn/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "PCMCIA modules"
- echo "-----------------------"
- grep "pcmcia/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "SOUND modules"
- echo "-----------------------"
- grep "sound/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "VIDEO modules"
- echo "-----------------------"
- grep "video/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- echo "OTHER modules"
- echo "-----------------------"
- grep -v "agp/" /tmp/modules-sorted | grep -v "ide/" | grep -v "scsi/" | grep -v "sata" \
- | grep -v "usb/" | grep -v "ieee1394" | grep -v "net/" | grep -v "pcmcia/" | grep -v "sound/"\
- | grep -v "video/" | grep -v "isdn/" | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" || echo "No module found"
- echo ""
- ;;
-
- -show-agp)
- #show detected IDE modules
- echo "AGP modules"
- echo "-----------------------"
- grep "agp/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-ide)
- #show detected IDE modules
- echo "IDE modules"
- echo "-----------------------"
- grep "ide/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-scsi)
- #show detected SCSI modules
- echo "SCSI modules"
- echo "-----------------------"
- grep "scsi/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "sata" \
- | grep -v "ata_piix" | grep -v "libata"
- echo ""
- ;;
-
- -show-sata)
- #show detected SATA modules
- echo "SATA modules"
- echo "-----------------------"
- grep "ata" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "eata"
- echo ""
- ;;
-
- -show-usb)
- #show detected USB modules
- echo "USB modules"
- echo "-----------------------"
- grep "usb/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-fw)
- #show detected FIREWIRE modules
- echo "FIREWIRE modules"
- echo "-----------------------"
- grep "ieee1394/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-net)
- #show detected NETWORK modules
- echo "NETWORK modules"
- echo "-----------------------"
- grep "net/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-isdn)
- #show detected ISDN modules
- echo "ISDN modules"
- echo "-----------------------"
- grep "isdn/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-pcmcia)
- #show detected PCMCIA modules
- echo "PCMCIA modules"
- echo "-----------------------"
- grep "pcmcia/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-sound)
- #show detected SOUND modules
- echo "SOUND modules"
- echo "-----------------------"
- grep "sound/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-video)
- #show detected VIDEO modules
- echo "VIDEO modules"
- echo "-----------------------"
- grep "video/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -show-other)
- #show detected OTHER modules
- echo "OTHER modules"
- echo "-----------------------"
- grep -v "agp/" /tmp/modules-sorted | grep -v "ide/" | grep -v "scsi/" | grep -v "sata" \
- | grep -v "usb/" | grep -v "ieee1394" | grep -v "net/" | grep -v "pcmcia/" | grep -v "sound/"\
- | grep -v "video/" | grep -v "isdn/" | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- echo ""
- ;;
-
- -ide)
- #show detected IDE modules
- grep "ide/pci" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- ;;
-
- -scsi)
- #show detected SCSI modules
- grep "scsi/" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "sata" \
- | grep -v "ata_piix" | grep -v "libata"
- ;;
-
- -sata)
- #show detected SATA modules
- grep "ata" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p" | grep -v "eata" \
- | grep -v "libata"
- ;;
-
- -usb)
- #show detected USB modules
- grep "usb/host" /tmp/modules-sorted | sed -ne "s#^insmod.*/\(.*\)\.ko.*#\1#p"
- ;;
-
- esac
+ showlist "AGP " `listmods agp/`
+ showlist "IDE " `listmods ide/`
+ showlist "SCSI " `listmods scsi/ sata ata_piix libata`
+ showlist "SATA " `listmods ata eata`
+ showlist "USB " `listmods usb/`
+ showlist "FW " `listmods ieee1394/`
+ showlist "NET " `listmods net/`
+ showlist "ISDN " `listmods isdn/`
+ showlist "PCMCIA" `listmods pcmcia/`
+ showlist "SOUND " `listmods sound/`
+ showlist "VIDEO " `listmods video/`
+ showlist "OTHER " `listmods modules/ agp/ ide/ scsi/ sata usb/ ieee1394 net/ isdn/ pcmcia/ sound/ video/`
+ ;;
+
+ -show-agp) showlist "AGP " `listmods agp/` ;;
+ -show-ide) showlist "IDE " `listmods ide/` ;;
+ -show-scsi) showlist "SCSI " `listmods scsi/ sata ata_piix libata` ;;
+ -show-sata) showlist "SATA " `listmods ata eata` ;;
+ -show-usb) showlist "USB " `listmods usb/` ;;
+ -show-fw) showlist "FW " `listmods ieee1394/` ;;
+ -show-net) showlist "NET " `listmods net/` ;;
+ -show-isdn) showlist "ISDN " `listmods isdn/` ;;
+ -show-pcmcia) showlist "PCMCIA" `listmods pcmcia/` ;;
+ -show-sound) showlist "SOUND " `listmods sound/` ;;
+ -show-video) showlist "VIDEO " `listmods video/` ;;
+ -show-other) showlist "OTHER " `listmods .ko agp/ ide/ scsi/ sata usb/ ieee1394 net/ isdn/ pcmcia/ sound/ video/` ;;
+
+ -ide) showlist "HOSTCONTROLLER_IDE" `listmods ide/pci` ;;
+ -scsi) showlist "HOSTCONTROLLER_SCSI" `listmods scsi/ sata ata_piix libata` ;;
+ -sata) showlist "HOSTCONTROLLER_SATA" `listmods ata eata libata` ;;
+ -usb) showlist "HOSTCONTROLLER_USB" `listmods usb/host` "" ;;
+ esac
shift
done
# cleanup
rm /tmp/{modules-plain,modules-sorted,moduleslist,modprobe,modules}
+
+# vim: set ts=2 sw=2: