diff --git a/doc/chips/w83627hf b/doc/chips/w83627hf index 96847042..3b9497d7 100644 --- a/doc/chips/w83627hf +++ b/doc/chips/w83627hf @@ -8,6 +8,10 @@ Supported chips: Prefix 'w83627hf' Addresses scanned: ISA address retrieved from Super I/O registers Datasheet: Publicly available at the Winbond website + * Winbond W83627THF (ISA accesses ONLY) + Prefix 'w83627hf' + Addresses scanned: ISA address retrieved from Super I/O registers + Datasheet: unavailable * Winbond W83697HF (ISA accesses ONLY) Prefix 'w83697hf' Addresses scanned: ISA address retrieved from Super I/O registers @@ -46,8 +50,9 @@ Description ----------- This driver implements support for ISA accesses *only* for -the Winbond W83627HF and W83697HF Super I/O chips. +the Winbond W83627HF, W83627THF, and W83697HF Super I/O chips. We will refer to them collectively as Winbond chips. +The 627THF is treated as a 627HF. This driver supports ISA accesses, which should be more reliable than i2c accesses. Also, for Tyan boards which contain both a diff --git a/kernel/chips/w83627hf.c b/kernel/chips/w83627hf.c index 0d3624f0..ba9a5e89 100644 --- a/kernel/chips/w83627hf.c +++ b/kernel/chips/w83627hf.c @@ -25,6 +25,7 @@ Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA w83627hf 9 3 2 3 0x20 0x5ca3 no yes(LPC) + w83627thf 9 2 ? 3 ?? 0x5ca3 no yes(LPC) w83697hf 8 2 2 2 0x60 0x5ca3 no yes(LPC) For other winbond chips, and for i2c support in the above chips, @@ -115,6 +116,7 @@ superio_exit(void) } #define W627_DEVID 0x52 +#define W627THF_DEVID 0x82 #define W697_DEVID 0x60 #define WINB_ACT_REG 0x30 #define WINB_BASE_REG 0x60 @@ -629,7 +631,7 @@ static int w83627hf_find(int *address) superio_enter(); val= superio_inb(DEVID); - if(val != W627_DEVID && val != W697_DEVID) { + if(val != W627_DEVID && val !=W627THF_DEVID && val != W697_DEVID) { superio_exit(); return -ENODEV; } @@ -685,6 +687,9 @@ int w83627hf_detect(struct i2c_adapter *adapter, int address, kind = w83627hf; else if(val == W697_DEVID) kind = w83697hf; + else if(val == W627THF_DEVID) + kind = w83627hf; + superio_select(); if((val = 0x01 & superio_inb(WINB_ACT_REG)) == 0) superio_outb(WINB_ACT_REG, 1); diff --git a/prog/detect/sensors-detect b/prog/detect/sensors-detect index 37ddff15..e21401e4 100755 --- a/prog/detect/sensors-detect +++ b/prog/detect/sensors-detect @@ -1228,6 +1228,22 @@ use subs qw(mtp008_detect lm78_detect lm78_isa_detect lm78_alias_detect basereg => 0x60, exit => 0xaa, }, + { + name => "Winbond W83627THF Super IO Sensors", + driver => "w83627hf", + addrreg => 0x2e, + exitreg => 0x2e, + datareg => 0x2f, + enter => [0x87, 0x87], + devidreg => 0x20, + devid => 0x82, + logdevreg => 0x07, + logdev => 0x0b, + actreg => 0x30, + actmask => 0x01, + basereg => 0x60, + exit => 0xaa, + }, { name => "Winbond W83697HF Super IO Sensors", driver => "w83627hf",