summaryrefslogtreecommitdiffstats
path: root/perl-install/modules.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/modules.pm')
-rw-r--r--perl-install/modules.pm59
1 files changed, 33 insertions, 26 deletions
diff --git a/perl-install/modules.pm b/perl-install/modules.pm
index 832a93127..1d801ff3f 100644
--- a/perl-install/modules.pm
+++ b/perl-install/modules.pm
@@ -89,6 +89,16 @@ sub load {
if ($network_module) {
set_alias($_, $network_module) foreach difference2([ detect_devices::getNet() ], \@network_devices);
}
+
+ @l = grep {
+ if (c::kernel_version() =~ /^\Q2.6/ && member($_, 'imm', 'ppa')
+ && ! -d "/proc/sys/dev/parport/parport0/devices/$_") {
+ log::l("$_ loaded but is not useful, removing");
+ unload($_);
+ 0;
+ } else { 1 }
+ } @l;
+
when_load($_, @{$options{$_}}) foreach @l;
}
@@ -379,41 +389,38 @@ sub when_load {
$name = mapping_26_24($name); #- need to stay with 2.4 names, modutils will allow booting 2.4 and 2.6
- if ($name =~ /[uo]hci/) {
- -f '/proc/bus/usb/devices' or eval {
- require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs');
- #- ensure keyboard is working, the kernel must do the job the BIOS was doing
- sleep 4;
- load("usbkbd", "keybdev") if detect_devices::usbKeyboards();
- }
- }
-
$conf{$name}{options} = join " ", @options if @options;
if (my $category = module2category($name)) {
- if (c::kernel_version() =~ /^\Q2.6/ && member($name, 'imm', 'ppa')
- && ! -d "/proc/sys/dev/parport/parport0/devices/$name") {
- unload($name);
- undef $category;
- }
- if ($category =~ m,disk/(scsi|hardware_raid|usb|firewire),) {
- add_probeall('scsi_hostadapter', $name);
- eval { load('sd_mod') };
- } elsif ($category eq 'bus/usb') {
- add_probeall('usb-interface', $name);
- } elsif ($category eq 'bus/firewire') {
- set_alias('ieee1394-controller', $name);
- } elsif ($category =~ /sound/) {
- my $sound_alias = find { /^sound-slot-[0-9]+$/ && $conf{$_}{alias} eq $name } keys %conf;
- $sound_alias ||= 'sound-slot-0';
- set_sound_slot($sound_alias, $name);
- }
+ when_load_category($name, $category);
}
if (my $above = $conf{$name}{above}) {
load($above); #- eg: for snd-pcm-oss set by set_sound_slot()
}
+}
+sub when_load_category {
+ my ($name, $category) = @_;
+
+ if ($category =~ m,disk/(scsi|hardware_raid|usb|firewire),) {
+ add_probeall('scsi_hostadapter', $name);
+ eval { load('sd_mod') };
+ } elsif ($category eq 'bus/usb') {
+ add_probeall('usb-interface', $name);
+ -f '/proc/bus/usb/devices' or eval {
+ require fs; fs::mount('/proc/bus/usb', '/proc/bus/usb', 'usbdevfs');
+ #- ensure keyboard is working, the kernel must do the job the BIOS was doing
+ sleep 4;
+ load("usbkbd", "keybdev") if detect_devices::usbKeyboards();
+ }
+ } elsif ($category eq 'bus/firewire') {
+ set_alias('ieee1394-controller', $name);
+ } elsif ($category =~ /sound/) {
+ my $sound_alias = find { /^sound-slot-[0-9]+$/ && $conf{$_}{alias} eq $name } keys %conf;
+ $sound_alias ||= 'sound-slot-0';
+ set_sound_slot($sound_alias, $name);
+ }
}
sub cz_file() {