#
# geninitrd mod: sata
+# setup geninitrd module
+# @access public
+setup_mod_sata() {
+ lspci=$(find_tool /sbin/lspci)
+
+ pcimap="/lib/modules/$kernel/modules.pcimap"
+
+ if [ ! -x "$lspci" ]; then
+ warn "Failed to execute lspci. Is pciutils package installed?"
+ fi
+}
+
# private until only mod-sata uses the function
find_modules_by_class() {
local class=$1
- local pcimap="/lib/modules/$kernel/modules.pcimap"
# no pcimap, nothing to lookup from
if [ ! -f "$pcimap" ]; then
return
fi
- if [ ! -x /sbin/lspci ]; then
- warn "Failed to execute /sbin/lspci. Is pciutils package installed?"
+ if [ -z "$lspci" ]; then
return
fi
- set -- $(/sbin/lspci -n | awk -vclass=$class '$2 == class":" {split($3, p, ":"); printf("0x0000%s 0x0000%s\n", p[1], p[2])}')
+ set -- $($lspci -n | awk -vclass=$class '$2 == class":" {split($3, p, ":"); printf("0x0000%s 0x0000%s\n", p[1], p[2])}')
awk -vvendor=$1 -vdevice=$2 '$2 == vendor && $3 == device {print $1}' $pcimap
}
# 0101 - IDE/PATA
# 0106 - SATA/AHCI
# 0107 - SAS
- local m modules
- modules=$(find_modules_by_class 0106)
-
- if [ "$modules" ]; then
- # FIXME: how to handle if multiple modules returned?
- # i.e two modules can do same id
- # currently we load all of them...
- for m in $modules; do
- find_module $m
- done
- fi
+ local m modules=$(find_modules_by_class 0106)
+
+ # FIXME: how to handle if multiple modules returned?
+ # i.e two modules can do same id
+ # currently we load all of them...
+ for m in $modules; do
+ find_module $m
+ done
}