| | 1835 | # Non-standard SMSC detection callback and chip list. These chips differ |
| | 1836 | # from the standard ones listed above in that the device ID register |
| | 1837 | # address is 0x0d instead of 0x20 (as specified by the ISA PNP spec). |
| | 1838 | ns_detect => \&smsc_ns_detect_superio, |
| | 1839 | ns_chips => |
| | 1840 | [ |
| | 1841 | { |
| | 1842 | name => "SMSC FDC37C665 Super IO", |
| | 1843 | driver => "not-a-sensor", |
| | 1844 | devid => 0x65, |
| | 1845 | }, |
| | 1846 | { |
| | 1847 | name => "SMSC FDC37C666 Super IO", |
| | 1848 | driver => "not-a-sensor", |
| | 1849 | devid => 0x66, |
| | 1850 | }, |
| | 1851 | { |
| | 1852 | name => "SMSC FDC37C669 Super IO", |
| | 1853 | driver => "not-a-sensor", |
| | 1854 | devid => 0x03, |
| | 1855 | }, |
| | 1856 | { |
| | 1857 | name => "SMSC FDC37N769 Super IO", |
| | 1858 | driver => "not-a-sensor", |
| | 1859 | devid => 0x28, |
| | 1860 | }, |
| | 1861 | { |
| | 1862 | name => "SMSC LPC47N227 Super IO", |
| | 1863 | driver => "not-a-sensor", |
| | 1864 | devid => 0x5a, |
| | 1865 | }, |
| | 1866 | ], |
| | 3225 | # Detection routine for non-standard SMSC Super I/O chips |
| | 3226 | # $_[0]: Super I/O LPC config/index port |
| | 3227 | # $_[1]: Super I/O LPC data port |
| | 3228 | # $_[2]: Reference to array of non-standard chips |
| | 3229 | # Return values: 1 if non-standard chip found, 0 otherwise |
| | 3230 | sub smsc_ns_detect_superio |
| | 3231 | { |
| | 3232 | my ($addrreg, $datareg, $ns_chips) = @_; |
| | 3233 | my ($val, $chip); |
| | 3234 | |
| | 3235 | # read alternate device ID register |
| | 3236 | outb($addrreg, 0x0d); |
| | 3237 | $val = inb($datareg); |
| | 3238 | if ($val == 0x00 || $val == 0xff) { |
| | 3239 | return 0; |
| | 3240 | } |
| | 3241 | |
| | 3242 | print "Yes\n"; |
| | 3243 | |
| | 3244 | foreach $chip (@{$ns_chips}) { |
| | 3245 | if ($chip->{devid} == $val) { |
| | 3246 | probe_superio($addrreg, $datareg, $chip); |
| | 3247 | return 1; |
| | 3248 | } |
| | 3249 | } |
| | 3250 | |
| | 3251 | printf("Found unknown non-standard chip with ID 0x%02x\n", $val); |
| | 3252 | return 1; |
| | 3253 | } |
| | 3254 | |