diff options
Diffstat (limited to 'perl-install/harddrake/data.pm')
| -rw-r--r-- | perl-install/harddrake/data.pm | 300 |
1 files changed, 154 insertions, 146 deletions
diff --git a/perl-install/harddrake/data.pm b/perl-install/harddrake/data.pm index 10893da45..8d4d4de21 100644 --- a/perl-install/harddrake/data.pm +++ b/perl-install/harddrake/data.pm @@ -11,11 +11,20 @@ our ($version, $sbindir, $bindir) = ("10", "/usr/sbin", "/usr/bin"); my @devices = (detect_devices::probeall(), detect_devices::getSCSI()); +foreach my $dev (@devices) { + # normalize device IDs for devices that came from mouse.pm: + next if !defined $dev->{Synaptics}; + foreach my $field (qw(vendor id subvendor subid)) { + next if !defined $dev->{$field}; + $dev->{$field} = hex($dev->{$field}); + } +} + # Update me each time you handle one more devices class (aka configurator) sub unknown() { - grep { $_->{media_type} !~ /BRIDGE|class\|Mouse|DISPLAY|Hub|MEMORY_RAM|MULTIMEDIA_(VIDEO|AUDIO|OTHER)|NETWORK|Printer|SERIAL_(USB|SMBUS)|STORAGE_(IDE|OTHER|RAID|SCSI)|SYSTEM_OTHER|tape|UPS/ + grep { $_->{media_type} !~ /BRIDGE|class\|Mouse|DISPLAY|Hub|MEMORY_RAM|MULTIMEDIA_(VIDEO|AUDIO|OTHER)|NETWORK|Printer|SERIAL_(USB|SMBUS)|STORAGE_(IDE|OTHER|RAID|SCSI)|SYSTEM_(OTHER|SDHCI)|tape|UPS/ && !member($_->{driver}, qw(cpia_usb cyber2000fb forcedeth ibmcam megaraid mod_quickcam nvnet ohci1394 ov511 ov518_decomp scanner ultracam usbvideo usbvision)) - && $_->{driver} !~ /^ISDN|Mouse:USB|Removable:zip|class\|Mouse|sata|www.linmodems.org/ + && $_->{driver} !~ /^ISDN|Mouse:USB|Removable:zip|class\|Mouse|sata|www.linmodems.org|kbd|mouse|sysrq|usbhid/ && $_->{type} ne 'network' && $_->{description} !~ /Alcatel|ADSL Modem/; } @devices; @@ -36,29 +45,125 @@ sub f { # FIXME: add translated items sub is_removable { member($_[0], qw(FLOPPY ZIP DVDROM CDROM BURNER)) } -sub is_auto_configurable_media { is_removable($_[0]) || member($_[0], qw(HARDDISK)) } +sub is_auto_configurable_media { !detect_devices::isKeyUsb($_[0]) } sub set_removable_configurator { my ($class, $device) = @_; - return "/usr/sbin/diskdrake --removable=$device->{device}" if is_removable($class); + is_removable($class) ? "/usr/sbin/diskdrake --removable=$device->{device}" : undef; } -sub set_media_auto_configurator { - my ($class, $device) = @_; - return "/usr/sbin/drakupdate_fstab --no-flag --auto --add $device->{device}" if is_auto_configurable_media($class); -} - -sub set_media_remover { - my ($class, $device) = @_; - return "/usr/sbin/drakupdate_fstab --no-flag --del $device->{device}" if is_auto_configurable_media($class); -} - my $modules_conf = modules::any_conf->read; # Format is (HW class ID, l18n class name, icon, config tool , is_to_be_detected_on_boot) our @tree = ( { + class => "SATA_STORAGE", + string => N("SATA controllers"), + icon => "ide_hd.png", + configurator => "", + detector => sub { f(grep { $_->{driver} !~ /^pata/ } detect_devices::probe_category('disk/sata')), + f(grep { $_->{description} =~ /AHCI/ } @devices) }, + checked_on_boot => 1, + }, + + { + class => "RAID_STORAGE", + string => N("RAID controllers"), + icon => "ide_hd.png", + configurator => "", + detector => sub { f(detect_devices::probe_category('disk/hardware_raid')), + f(grep { $_->{media_type} =~ /STORAGE_RAID/ } @devices) }, + checked_on_boot => 1, + }, + + { + class => "ATA_STORAGE", + string => N("(E)IDE/ATA controllers"), + icon => "ide_hd.png", + configurator => "", + detector => sub { f(detect_devices::probe_category('disk/ide')), + f(grep { $_->{driver} =~ /^pata/ && $_->{media_type} =~ /IDE|STORAGE_SATA/ } @devices), + f(grep { $_->{media_type} =~ /STORAGE_(IDE|OTHER)/ } @devices) }, + checked_on_boot => 1, + }, + + { + class => "CARD_READER", + string => N("Card readers"), + icon => "ide_hd.png", + configurator => "", + detector => sub { f(detect_devices::probe_category('disk/card_reader')) }, + checked_on_boot => 1, + }, + + { + class => "FIREWIRE_CONTROLLER", + string => N("Firewire controllers"), + icon => "usb.png", + configurator => "", + detector => sub { f(grep { $_->{driver} =~ /firewire_ohci|ohci1394/ } @devices) }, + checked_on_boot => 1, + }, + + { + class => "PCMCIA_CONTROLLER", + string => N("PCMCIA controllers"), + icon => "hw-pcmcia.png", + configurator => "", + detector => sub { f(detect_devices::pcmcia_controller_probe()) }, + checked_on_boot => 1, + }, + + { + class => "SCSI_CONTROLLER", + string => N("SCSI controllers"), + icon => "scsi.png", + configurator => "", + detector => sub { f(detect_devices::probe_category('disk/scsi'), grep { $_->{media_type} =~ /STORAGE_SCSI/ } @devices) }, + checked_on_boot => 1, + }, + + { + class => "USB_CONTROLLER", + string => N("USB controllers"), + icon => "usb.png", + configurator => "", + detector => sub { f(grep { $_->{media_type} eq 'SERIAL_USB' } @devices) }, + checked_on_boot => 1, + }, + + { + class => "USB_HUB", + string => N("USB ports"), + icon => "hw-usb.png", + configurator => "", + detector => sub { f(grep { $_->{media_type} =~ /Hub/ } @devices) }, + checked_on_boot => 0, + }, + + { + class => "SMB_CONTROLLER", + string => N("SMBus controllers"), + icon => "hw-smbus.png", + configurator => "", + detector => sub { f(grep { $_->{media_type} =~ /SERIAL_SMBUS/ } @devices) }, + checked_on_boot => 0, + }, + + { + class => "BRIDGE", + string => N("Bridges and system controllers"), + icon => "memory.png", + configurator => "", + detector => sub { f(grep { $_->{media_type} =~ /BRIDGE|MEMORY_RAM|SYSTEM_(OTHER|SDHCI)|MEMORY_OTHER|SYSTEM_PIC|COMMUNICATION_OTHER/ + || $_->{description} =~ /Parallel Port Adapter/; + } @devices) }, + checked_on_boot => 0, + }, + + + { class => "FLOPPY", string => N("Floppy"), icon => "floppy.png", @@ -90,11 +195,20 @@ our @tree = icon => "harddisk.png", configurator => "$sbindir/diskdrake", detector => sub { f(detect_devices::hds()) }, - checked_on_boot => 1, + checked_on_boot => 0, automatic => 1, }, { + class => "USB_STORAGE", + string => N("USB Mass Storage Devices"), + icon => "usb.png", + configurator => "", + detector => sub { f(grep { member($_->{driver}, qw(usb_storage ub Removable:memory_card)) } @devices) }, + checked_on_boot => 0, + }, + + { class => "CDROM", string => N("CDROM"), icon => "cd.png", @@ -165,6 +279,7 @@ our @tree = class => "TV", string => N("Tvcard"), icon => "tv.png", + configurator => "/usr/sbin/drakxtv", detector => sub { f(detect_devices::probe_category('multimedia/tv')), f(grep { $_->{media_type} =~ /MULTIMEDIA_VIDEO/ && $_->{bus} eq 'PCI' } @devices) }, checked_on_boot => 1, @@ -187,7 +302,8 @@ our @tree = detector => sub { require list_modules; my @modules = list_modules::category2modules('multimedia/sound'); - f(grep { $_->{media_type} =~ /MULTIMEDIA_AUDIO/ || member($_->{driver}, @modules) } @devices); + f(grep { $_->{media_type} =~ /MULTIMEDIA_AUDIO|PROCESSOR_CO/ || member($_->{driver}, @modules) + || $_->{description} =~ /^\|?HDA |PC Speaker/ } @devices); }, checked_on_boot => 1, }, @@ -200,7 +316,8 @@ our @tree = detector => sub { require list_modules; my @modules = (list_modules::category2modules('multimedia/webcam'), 'Removable:camera'); - f(grep { $_->{media_type} =~ /MULTIMEDIA_VIDEO|Video\|Video Control/ && $_->{bus} ne 'PCI' || member($_->{driver}, @modules) } @devices); + f(grep { $_->{media_type} =~ /MULTIMEDIA_VIDEO|Video\|Video Control|Imaging|Camera/ && $_->{bus} ne 'PCI' + || member($_->{driver}, @modules) || $_->{driver} =~ /^gpsca/ } @devices); }, # managed by hotplug: checked_on_boot => 0, @@ -268,7 +385,7 @@ our @tree = string => N("Bluetooth devices"), icon => "hw_network.png", configurator => "", - detector => sub { f(detect_devices::probe_category('bus/bluetooth')) }, + detector => sub { f(detect_devices::probe_category('bus/bluetooth')), f(grep { $_->{description} =~ /Bluetooth Dongle/ } @devices) }, checked_on_boot => 1, }, @@ -283,7 +400,8 @@ our @tree = f(grep { $_->{media_type} && $_->{media_type} =~ /^NETWORK/ || $_->{type} && $_->{type} eq 'network' - || member($_->{driver}, @net_modules); + || member($_->{driver}, @net_modules) + || $_->{description} =~ /WLAN/; } @devices); }, checked_on_boot => 1, @@ -294,7 +412,7 @@ our @tree = string => N("Modem"), icon => "modem.png", configurator => "$sbindir/drakconnect", - detector => sub { f(detect_devices::getModem($modules_conf)) }, + detector => sub { f(detect_devices::getModem($modules_conf)), f(grep { $_->{description} =~ /SoftModem/ } @devices) }, # we do not check these b/c this need user interaction (auth, ...): checked_on_boot => 0, }, @@ -316,7 +434,7 @@ our @tree = string => N("Memory"), icon => "hw-memory.png", configurator => "", - detector => sub { grep { member($_->{name}, 'Cache', 'Memory Module') } detect_devices::dmidecode() }, + detector => sub { grep { member($_->{name}, 'Cache', 'Memory Module') || $_->{name} eq 'Memory Device' && $_->{Size} ne 'No Module Installed' } detect_devices::dmidecode() }, checked_on_boot => 0, }, @@ -325,7 +443,7 @@ our @tree = string => N("Printer"), icon => "hw_printer.png", configurator => "$sbindir/printerdrake", - detector => sub { require printer::detect; printer::detect::local_detect() }, + detector => sub {}, # we do not check these b/c this need user interaction (auth, ...): checked_on_boot => 0, }, @@ -354,126 +472,15 @@ our @tree = { - class => "SATA_STORAGE", - string => N("SATA controllers"), - icon => "ide_hd.png", - configurator => "", - detector => sub { f(detect_devices::probe_category('disk/sata')) }, - checked_on_boot => 1, - }, - - { - class => "RAID_STORAGE", - string => N("RAID controllers"), - icon => "ide_hd.png", - configurator => "", - detector => sub { f(detect_devices::probe_category('disk/hardware_raid')), - f(grep { $_->{media_type} =~ /STORAGE_RAID/ } @devices) }, - checked_on_boot => 1, - }, - - { - class => "ATA_STORAGE", - string => N("(E)IDE/ATA controllers"), - icon => "ide_hd.png", - configurator => "", - detector => sub { f(detect_devices::probe_category('disk/ide')), - f(grep { $_->{media_type} =~ /STORAGE_(IDE|OTHER)/ } @devices) }, - checked_on_boot => 1, - }, - - { - class => "USB_STORAGE", - string => N("USB Mass Storage Devices"), - icon => "usb.png", - configurator => "", - detector => sub { f(grep { member($_->{driver}, qw(usb_storage ub)) } @devices) }, - checked_on_boot => 0, - }, - - { - class => "CARD_READER", - string => N("Card readers"), - icon => "ide_hd.png", - configurator => "", - detector => sub { f(detect_devices::probe_category('disk/card_reader')) }, - checked_on_boot => 1, - }, - - { - class => "FIREWIRE_CONTROLLER", - string => N("Firewire controllers"), - icon => "usb.png", - configurator => "", - detector => sub { f(grep { $_->{driver} =~ /ohci1394/ } @devices) }, - checked_on_boot => 1, - }, - - { - class => "PCMCIA_CONTROLLER", - string => N("PCMCIA controllers"), - icon => "hw-pcmcia.png", - configurator => "", - detector => sub { f(detect_devices::pcmcia_controller_probe()) }, - checked_on_boot => 1, - }, - - { - class => "SCSI_CONTROLLER", - string => N("SCSI controllers"), - icon => "scsi.png", - configurator => "", - detector => sub { f(detect_devices::probe_category('disk/scsi'), grep { $_->{media_type} =~ /STORAGE_SCSI/ } @devices) }, - checked_on_boot => 1, - }, - - { - class => "USB_CONTROLLER", - string => N("USB controllers"), - icon => "usb.png", - configurator => "", - detector => sub { f(grep { $_->{media_type} eq 'SERIAL_USB' } @devices) }, - checked_on_boot => 1, - }, - - { - class => "USB_HUB", - string => N("USB ports"), - icon => "hw-usb.png", - configurator => "", - detector => sub { f(grep { $_->{media_type} =~ /Hub/ } @devices) }, - checked_on_boot => 0, - }, - - { - class => "SMB_CONTROLLER", - string => N("SMBus controllers"), - icon => "hw-smbus.png", - configurator => "", - detector => sub { f(grep { $_->{media_type} =~ /SERIAL_SMBUS/ } @devices) }, - checked_on_boot => 0, - }, - - { - class => "BRIDGE", - string => N("Bridges and system controllers"), - icon => "memory.png", - configurator => "", - detector => sub { f(grep { $_->{media_type} =~ /BRIDGE|MEMORY_RAM|SYSTEM_OTHER|MEMORY_OTHER|SYSTEM_PIC/ - || $_->{description} =~ /Parallel Port Adapter/; - } @devices) }, - checked_on_boot => 0, - }, - - { class => "KEYBOARD", string => N("Keyboard"), icon => "hw-keyboard.png", configurator => "$sbindir/keyboarddrake", detector => sub { - f(grep { $_->{description} =~ /Keyboard/i || $_->{media_type} =~ /Subclass\|Keyboard/i } @devices), - # USB devices are filtered out since we already catch them through probeall(): - grep { $_->{bus} ne 'usb' && $_->{driver} eq 'kbd' && $_->{description} !~ /PC Speaker/ } detect_devices::getInputDevices(); + f(grep { $_->{description} =~ /Keyboard/i || $_->{media_type} =~ /Keyboard/i || + # USB devices are filtered out since we already catch them through probeall(): + $_->{bus} ne 'usb' && $_->{driver} =~ /^event|kbd|^usbhid/ && $_->{description} !~ /PC Speaker/; + } @devices); }, checked_on_boot => 0, }, @@ -493,9 +500,10 @@ our @tree = icon => "hw_mouse.png", configurator => "$sbindir/mousedrake", detector => sub { - f(grep { $_->{driver} =~ /^Mouse:|^Tablet:/ || $_->{media_type} =~ /class\|Mouse/ } @devices), - # USB devices are filtered out since we already catch them through probeall(): - grep { $_->{bus} ne 'usb' && $_->{Handlers}{mouse} } detect_devices::getInputDevices(); + f(grep { $_->{driver} =~ /^Mouse:|^Tablet:|^mouse/ || $_->{media_type} =~ /class\|Mouse/ || + # USB devices are filtered out since we already catch them through probeall(): + $_->{bus} ne 'usb' && $_->{Handlers}{mouse}; + } @devices); }, checked_on_boot => 1, automatic => 1, @@ -505,7 +513,7 @@ our @tree = class => "BIOMETRIC", string => N("Biometry"), icon => "ups.png", - detector => sub { f(grep { $_->{description} =~ /fingerprint/i } @devices) }, + detector => sub { f(grep { $_->{description} =~ /fingerprint|biometric/i } @devices) }, checked_on_boot => 0, }, @@ -524,7 +532,7 @@ our @tree = icon => "scanner.png", configurator => "$sbindir/scannerdrake", detector => sub { - require scanner; f(map { $_->{drakx_device} } f(scanner::detect())); + require scanner; f(map { $_->{val}{drakx_device} } f(scanner::detect())); }, checked_on_boot => 0, }, @@ -550,7 +558,9 @@ sub pciusb_id { pci_device => 'usb_pci_device', vendor => 'usb_vendor', ); - join(':', map { $dev->{$alt{$_}} || $dev->{$_} } qw(bus pci_bus pci_device vendor id subvendor subid description)); + my @fields = ('bus', if_($dev->{bus} =~ /pci/, qw(pci_bus pci_device)), qw(vendor id subvendor subid), + if_($dev->{bus} !~ /usb/i, 'description')); + join(':', map { uc($dev->{$alt{$_}} || $dev->{$_}) } @fields); } @@ -562,9 +572,7 @@ sub custom_id { N("cpu # ") . $device->{processor} . ": " . $device->{'model name'} : $device->{"Socket Designation"} ? "$device->{name} (" . $device->{"Socket Designation"} . ")" : - $device->{name} ? $device->{name} : - (defined($device->{description}) ? $device->{description} : - (defined($device->{Vendor}) ? $device->{Vendor} : $str))); + $device->{name} || $device->{description} || $device->{Vendor} || $str); } 1; |
