summaryrefslogtreecommitdiffstats
path: root/perl-install/detect_devices.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/detect_devices.pm')
-rw-r--r--perl-install/detect_devices.pm37
1 files changed, 33 insertions, 4 deletions
diff --git a/perl-install/detect_devices.pm b/perl-install/detect_devices.pm
index eb451923f..26d124d25 100644
--- a/perl-install/detect_devices.pm
+++ b/perl-install/detect_devices.pm
@@ -189,6 +189,37 @@ sub hasEthernet() { hasNetDevice("eth0"); }
sub hasTokenRing() { hasNetDevice("tr0"); }
sub hasNetDevice($) { c::hasNetDevice($_[0]) }
+# probe_type true means detect the type of hardware, this is unsafe for pci! (bug in kernel&hardware)
+# get_pcmcia_devices provides field "device", used in network.pm
+sub probeall {
+ my ($probe_type, $pcic) = @_;
+ require pci_probing::main;
+ require sbus_probing::main;
+ pci_probing::main::probe($probe_type), sbus_probing::main::probe(), modules::get_pcmcia_devices($pcic);
+}
+sub matching_type {
+ my ($type, $pcic) = @_;
+ grep {
+ my $ok = $_->{driver} !~ /(unknown|ignore)/;
+ $ok or log::l("skipping $_->{description}, no module available (if you know one, please mail pixel\@linux-mandrake.com)");
+ $ok
+ } grep { $_->{type} =~ /$type/i } probeall($type, $pcic);
+}
+sub matching_desc {
+ my ($regexp) = @_;
+ grep { $_->{description} =~ /$regexp/i } probeall();
+}
+sub stringlist {
+ map { " $_->{description} ($_->{class} $_->{driver})" } probeall(1);
+}
+sub check {
+ my ($l) = @_;
+ my $ok = $l->{driver} !~ /(unknown|ignore)/;
+ $ok or log::l("skipping $l->{description}, no module available (if you know one, please mail bugs\@linux-mandrake.com)");
+ $ok
+}
+
+
sub tryOpen($) {
local *F;
sysopen F, devices::make($_[0]), c::O_NONBLOCK() and *F;
@@ -212,8 +243,7 @@ sub hasUltra66 {
# #- disable hasUltra66 (now included in kernel)
# return;
- require pci_probing::main;
- my @l = map { $_->[0] } pci_probing::main::matching_desc('(HPT|Ultra66)') or return;
+ my @l = map { $_->{verbatim} } matching_desc('(HPT|Ultra66)') or return;
my $ide = sprintf "ide2=0x%x,0x%x ide3=0x%x,0x%x",
@l == 2 ?
@@ -251,11 +281,10 @@ sub whatPrinterPort() {
}
sub probeUSB {
- require pci_probing::main;
require modules;
defined($usb_interface) and return $usb_interface;
arch() =~ /sparc/ and return $usb_interface = '';
- if (($usb_interface) = grep { /usb-/ } map { $_->[1] } pci_probing::main::probe('')) {
+ if (($usb_interface) = grep { /usb-/ } map { $_->{driver} } probeall()) {
eval { modules::load($usb_interface, "SERIAL_USB") };
if ($@) {
$usb_interface = '';