add support for Asus ASB100 Bach. Patch from

"Mark M. Hoffman" <mhoffman@lightlink.com>


git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@1486 7894878c-1315-0410-8ee3-d5d059ff63e0
This commit is contained in:
Mark D. Studebaker committed 2002-08-04 19:01:35 +00:00
1 parent 325d5d81bc
commit 8a7d9d7d07
4 files changed
+25 -12

No files matched your search

+3 -1
View File
@@ -22,16 +22,18 @@ ask CVS about it:
Module dmi_scan: new
Module i2c-piix4: Refuse to load on IBM systems
Module lm92: Fix in-kernel initialization
Module w83781: recognize Asus "ASB100 Bach" as AS99127F
Program dmidecode: new
Programs i2cdetect, i2cdump, i2cset, isadump: Now installed by 'make install'
Program mkpatch: Add Config.in entries for, lm92,
pcf8574, pcf8591, smsc47m1, vt1211;
add dmi_scan
Program sensors: Add /usr/local/etc to config file path
Program sensord: Add /usr/local/etc to config file path;
add support for logging loadavg in RRD;
fix down-converting raw labels for RRD;
update chip support, still behind sensors
Program sensors: Add /usr/local/etc to config file path
Program sensors-detect: recognize Asus "ASB100 Bach" as AS99127F
2.6.4 (20020719)
NOTE: Requires i2c-2.6.1 or newer, or kernel 2.4.13 or newer.
+11 -4
View File
@@ -8,6 +8,8 @@ Status: W83781D support is complete and well-tested.
W83697HF support is complete but has not been well-tested.
AS99127F support is BETA and has known problems due to lack of a
chip datasheet. SEE BELOW.
ASB100 Bach support is BETA; presently this chip is treated
exactly like AS99127F.
Supported chips:
* Winbond W83781D
@@ -34,6 +36,11 @@ Supported chips:
Prefix 'as99127f'
Addresses scanned: I2C 0x20 - 0x2f (inclusive)
Datasheet: Unavailable from Asus
* Asus ASB100 Bach
Prefix 'as99127f'
Addresses scanned: I2C 0x20 - 0x2f (inclusive)
Datasheet: Unavailable from Asus
Authors: Frodo Looijaard <frodol@dds.nl>, Philip Edelbrock <phil@netroedge.com>,
@@ -81,13 +88,13 @@ Description
-----------
This driver implements support for the Winbond W83781D, W83782D,
W8783S, and W83627HF chips, and the Asus AS99127F.
W8783S, and W83627HF chips, and the Asus AS99127F/ASB100 chips.
We will refer to them collectively as W8378* chips.
There is quite some difference between these chips, but they are similar
enough that it was sensible to put them together in one driver.
The W83627HF chip is assumed to be identical to the ISA W83782D.
The AS99127F chip is similar to an I2C-only W83782D.
The Asus chips are similar to an I2C-only W83782D.
Detection of these chips can sometimes be foiled because they can be in
an internal state that allows no clean access. If you know the address
@@ -177,9 +184,9 @@ Known problems:
cat /proc/bus/i2c to see a list of bus numbers)
AS99127F PROBLEMS
AS99127F/ASB100 PROBLEMS
-----------------
The as99127f support was developed without the benefit of a datasheet.
The as99127f/asb100 support was developed without the benefit of a datasheet.
In most cases it is treated as a w83781d.
This support will be BETA until a datasheet is released.
One user has reported problems with fans stopping
+7 -5
View File
@@ -24,7 +24,8 @@
Supports following chips:
Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA
as99127f 7 3 1? 3 0x20 0x12c3 yes no
as99127f 7 3 1? 3 0x30 0x12c3 yes no
asb100 "bach" (type_name = as99127f) 0x30 0x0694 yes no
w83781d 7 3 0 3 0x10 0x5ca3 yes yes
w83627hf 9 3 2 3 0x20 0x5ca3 yes yes(LPC)
w83782d 9 3 2-4 3 0x30 0x5ca3 yes yes
@@ -840,9 +841,10 @@ int w83781d_detect(struct i2c_adapter *adapter, int address,
val2 = w83781d_read_value(new_client, W83781D_REG_CHIPMAN);
/* Check for Winbond or Asus ID if in bank 0 */
if ((!(val1 & 0x07)) &&
(((!(val1 & 0x80)) && (val2 != 0xa3) && (val2 != 0xc3))
|| ((val1 & 0x80) && (val2 != 0x5c)
&& (val2 != 0x12)))) goto ERROR1;
(((!(val1 & 0x80)) && (val2 != 0xa3) && (val2 != 0xc3)
&& (val2 != 0x94))
|| ((val1 & 0x80) && (val2 != 0x5c) && (val2 != 0x12)
&& (val2 != 0x06)))) goto ERROR1;
/* If Winbond SMBus, check address at 0x48. Asus doesn't support */
if ((!is_isa) && (((!(val1 & 0x80)) && (val2 == 0xa3)) ||
((val1 & 0x80) && (val2 == 0x5c)))) {
@@ -865,7 +867,7 @@ int w83781d_detect(struct i2c_adapter *adapter, int address,
val2 = w83781d_read_value(new_client, W83781D_REG_CHIPMAN);
if (val2 == 0x5c)
vendid = winbond;
else if (val2 == 0x12)
else if ((val2 == 0x12) || (val2 == 0x06))
vendid = asus;
else
goto ERROR1;
+4 -2
View File
@@ -2023,8 +2023,10 @@ sub w83781d_detect
(($reg1 & 0x80) == 0x80 and $reg2 == 0x5c);
}
if ($chip == 4) {
return unless (($reg1 & 0x80) == 0x00 and $reg2 == 0xc3) or
(($reg1 & 0x80) == 0x80 and $reg2 == 0x12);
return unless (($reg1 & 0x80) == 0x00 and
($reg2 == 0xc3 or $reg2 == 0x94)) or
(($reg1 & 0x80) == 0x80 and
($reg2 == 0x12 or $reg2 == 0x06));
}
return unless ($reg1 & 0x07) == 0x00;
$reg1 = i2c_smbus_read_byte_data($file,0x58) & 0xfe;