Show
Ignore:
Timestamp:
12/03/08 10:47:57 (5 years ago)
Author:
khali
Message:

Have scan_superio return a list of features instead of a boolean value.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • lm-sensors/branches/lm-sensors-3.0.0/prog/detect/sensors-detect

    r5506 r5507  
    29662966} 
    29672967 
    2968 # Returns: 1 if device added to chips_detected, undef if not 
     2968# Returns: features bitmask if device added to chips_detected, 0 if not 
    29692969sub probe_superio 
    29702970{ 
     
    29772977        if (!exists $chip->{driver}) { 
    29782978                print "\n    (no information available)\n"; 
    2979                 return; 
     2979                return 0; 
    29802980        } 
    29812981        if ($chip->{driver} eq "not-a-sensor") { 
    29822982                print "\n    (no hardware monitoring capabilities)\n"; 
    2983                 return; 
     2983                return 0; 
    29842984        } 
    29852985        if ($chip->{driver} eq "via-smbus-only") { 
    29862986                print "\n    (hardware monitoring capabilities accessible via SMBus only)\n"; 
    2987                 return; 
     2987                return 0; 
    29882988        } 
    29892989 
     
    29972997        if (!($val & $superio{actmask})) { 
    29982998                print "\n    (but not activated)\n"; 
    2999                 return; 
     2999                return 0; 
    30003000        } 
    30013001 
     
    30073007        if ($addr == 0) { 
    30083008                print "\n    (but no address specified)\n"; 
    3009                 return; 
     3009                return 0; 
    30103010        } 
    30113011        print "Success!\n"; 
     
    30173017        }; 
    30183018        add_isa_to_chips_detected($chip->{driver}, $new_hash); 
    3019         return 1; 
     3019        return $chip->{features}; 
    30203020} 
    30213021 
     
    30483048} 
    30493049 
    3050 # Returns: number of device added to chips_detected (0 or 1) 
     3050# Returns: features supported by the device added, if any 
    30513051sub scan_superio 
    30523052{ 
    30533053        my ($addrreg, $datareg) = @_; 
    30543054        my ($val, $found); 
    3055         my $added = 0; 
     3055        my $features = 0; 
    30563056 
    30573057        printf("Probing for Super-I/O at 0x\%x/0x\%x\n", $addrreg, $datareg); 
     
    30893089                         || ($chip->{devid} <= 0xff && 
    30903090                             ($val >> 8) == $chip->{devid})) { 
    3091                                 $added = 1 if probe_superio($addrreg, $datareg, $chip); 
     3091                                $features |= probe_superio($addrreg, $datareg, $chip); 
    30923092                                $found++; 
    30933093                        } 
     
    31043104        exit_superio($addrreg, $datareg); 
    31053105        $| = 0; 
    3106         return $added; 
     3106        return $features; 
    31073107} 
    31083108 
     
    49734973sub main 
    49744974{ 
    4975         my ($input, $superio_found); 
     4975        my ($input, $superio_features); 
    49764976 
    49774977        # We won't go very far if not root 
     
    50215021                unless (<STDIN> =~ /^\s*n/i) { 
    50225022                        initialize_ioports(); 
    5023                         $superio_found += scan_superio(0x2e, 0x2f); 
    5024                         $superio_found += scan_superio(0x4e, 0x4f); 
     5023                        $superio_features |= scan_superio(0x2e, 0x2f); 
     5024                        $superio_features |= scan_superio(0x4e, 0x4f); 
    50255025                        close_ioports(); 
    50265026                } 
     
    50315031                       "safe though. Yes, you do have ISA I/O ports even if you do not have any\n". 
    50325032                       "ISA slots! Do you want to scan the ISA I/O ports? (\%s): ", 
    5033                        $superio_found ? "yes/no/IPMI ONLY" : "YES/no/ipmi only"; 
     5033                       $superio_features ? "yes/no/IPMI ONLY" : "YES/no/ipmi only"; 
    50345034                $input = <STDIN>; 
    50355035                unless ($input =~ /^\s*n/i) { 
    5036                         my $ipmi_only = ($superio_found && $input !~ /^\s*y/i) 
    5037                                      || (!$superio_found && $input =~ /^\s*i/i); 
     5036                        my $ipmi_only = ($superio_features && $input !~ /^\s*y/i) 
     5037                                     || (!$superio_features && $input =~ /^\s*i/i); 
    50385038                        initialize_ioports(); 
    50395039                        scan_isa_bus($ipmi_only);