95 lines
1.3 KiB
Bash
95 lines
1.3 KiB
Bash
#!/bin/rc
|
|
# pci [-bv] - dump pci configuration
|
|
rfork e
|
|
fn verbose {
|
|
if (! test -f /lib/pci)
|
|
echo $0: no /lib/pci >[1=2]
|
|
awk '
|
|
|
|
function lower(s) {
|
|
gsub(/A/, "a", s)
|
|
gsub(/B/, "b", s)
|
|
gsub(/C/, "c", s)
|
|
gsub(/D/, "d", s)
|
|
gsub(/E/, "e", s)
|
|
gsub(/F/, "f", s)
|
|
return s
|
|
}
|
|
BEGIN{
|
|
file="/lib/pci"
|
|
FS="\t"
|
|
while(getline <file > 0){
|
|
if(/^;/) continue
|
|
if(/^[0-9a-fA-F]/){
|
|
vid=lower($1)
|
|
vendor[vid] = $2
|
|
}
|
|
if(/^ [0-9a-fA-F]/){
|
|
did=lower($2)
|
|
id[vid "/" did] = $3
|
|
}
|
|
}
|
|
FS = " "
|
|
}
|
|
|
|
{
|
|
print $0
|
|
vid = $4
|
|
sub(/\/.*/, "", vid)
|
|
if(vid in vendor){
|
|
s = vendor[vid]
|
|
if($4 in id)
|
|
s = s " " id[$4]
|
|
print "\t" s
|
|
}
|
|
}
|
|
'
|
|
}
|
|
fn usage {
|
|
echo usage: $1 '[-bv]' >[1=2]
|
|
exit usage
|
|
}
|
|
|
|
filter=cat
|
|
bridges=yes
|
|
done=0
|
|
while (~ $done 0 && ! ~ $#* 0 && ~ $1 -*) {
|
|
if (~ $1 -*b*)
|
|
bridges=no
|
|
if (~ $1 -*v*)
|
|
filter=verbose
|
|
switch ($1) {
|
|
case --
|
|
done = 1 # no break in rc, alas
|
|
case -*[~bv]*
|
|
usage $0
|
|
}
|
|
shift
|
|
}
|
|
if (! ~ $#* 0)
|
|
usage $0
|
|
|
|
builtin cd '#$/pci' && grep . *ctl | {
|
|
if (~ $bridges no)
|
|
sed /:06/d
|
|
if not
|
|
cat
|
|
} |
|
|
sed '
|
|
s/ctl:/: /
|
|
t noop
|
|
: noop
|
|
s/: 01/: disk 01/
|
|
s/: 02/: net 02/
|
|
s/: 03/: vid 03/
|
|
s/: 04/: aud 04/
|
|
s/: 05/: mem 05/
|
|
s/: 06/: brg 06/
|
|
s/: 07/: ser 07/
|
|
s/: 0c\.03/: usb 0c.03/
|
|
s/: 0c\.05/: smb 0c.05/
|
|
s/: 0d/: rad 0d/
|
|
s/: 10/: cryp 10/
|
|
t
|
|
s/ / --- /
|
|
' | $filter
|