[lm-sensors] Tyan S2696 and ADT7470

Rudolf Marek r.marek at assembler.cz
Sun Jan 7 11:42:43 CET 2007

>  As I work on a few free projects on my own, this is a situation I
> understand only too well...


> RM> Maybe you or your company can fund the driver devel? Hw/Money/whatever?
>  Well, I have hardware and am definitely available to do any (preferably
> non destructive :-) tests on it. And I can contribute some of my own time.
> Unfortunately not much in the way of money.

Ok never mind.

> RM> > 	# sensors-detect
> RM> > 	...
> RM> > 	Now follows a summary of the probes I have just done.
> RM> > 	Just press ENTER to continue:
> RM> > 
> RM> > 	Driver `to-be-written' (should be inserted):
> RM> > 	  Detects correctly:
> RM> > 	  * Bus `SMBus I801 adapter at 18c0'
> RM> > 	    Busdriver `i2c-i801', I2C address 0x2e
> RM> > 	    Chip `Analog Devices ADT7470' (confidence: 5)
> RM> > 	  * Chip `Intel AMB FB-DIMM thermal sensor' (confidence: 9)
> RM> 
> RM> Wow :) Even the FB-DIMM are there.
>  Yes, I was quite impressed by sensors-detect seeing them too. Too bad I
> can't see their temperature as then I could try simply running the machine
> without the (rear) fan, but I'm too afraid to fry the DIMMs -- they seem to
> be quite hot.

#include <sys/mman.h>
#include <sys/stat.h>
#include <fcntl.h>

void main(void) {
unsigned char * addr;
int fd = open("/dev/mem", O_RDONLY);
int i;
int idx;
addr = mmap(0, 128*1024*1024, PROT_READ, MAP_PRIVATE, fd, 0xFE000000);
//addr = mmap(0, 128, PROT_READ, MAP_PRIVATE, fd, 0xd5000000);

//we want function 3,
//4 channels, 16AMB/channel
for (i=0;i<64;i++) {
idx = i*2048;
printf("Intel sig: %02x %02x\n", addr[idx],addr[idx+1]);
//offset 85h function 3
printf("Current temp is: %f (0x%02x)C\n", (addr[idx+(256*3)+0x85] / (float)
2.0), addr[idx+(256*3)+0x85]);

munmap(adr, 128*1024*1024);

Compile this program and run as root. It should show the FB-DIMM temps. One user
in http://www.lm-sensors.org/ticket/2143 reported that the program hanged the
machine when run multiple times. I added the munmap so maybe it won't anymore.
Please can you try that? If it never displays 8086 it means the base address is
wrong and I would need lspci -xxx to fix it.

> RM> > Unfortunately it looks that the case fans -- which create the deafening
> RM> > noise making the machine all but unusable currently -- are connected to
> RM> > ADT7470 and not the W83627EHG
>  FWIW, I got a reply from Tyan and this is indeed the case.
> RM> If you know how to code in C it should not be a problem to write a driver.
>  Is there any sufficiently clean and simple driver I could use as an
> example/starting point by chance?

Yes maybe you can study the  w83l785ts.c  it is just temperature driver. Most
simple. Also you may read the docs in kernel Documentation/hwmon/ and /i2c/

I had in plan to create some example driver for i2c devices but no time yet :/

> RM> You can use also following commands to reprogram the fans to manual mode:
> RM> 
> RM> http://www.analog.com/en/prod/0,2877,ADT7470,00.html
> RM> 
> RM> CHeck page 23 of datasheet.
>  Ah, I started reading the datasheet but didn't reach the most interesting
> part, thanks for the page link! I'm going to try it out and report back.

Yes just run the command it should do the trick.


More information about the lm-sensors mailing list