Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 22 Feb 2008 15:38:39 -0800
From:      Jeremy Chadwick <koitsu@freebsd.org>
To:        David Duchscher <daved@tamu.edu>
Cc:        hackers@freebsd.org
Subject:   Re: Winbond IO chip driver
Message-ID:  <20080222233839.GA59633@eos.sc1.parodius.com>
In-Reply-To: <49B17835-A03A-4186-8669-B942668FEBF2@tamu.edu>
References:  <49B17835-A03A-4186-8669-B942668FEBF2@tamu.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, Feb 22, 2008 at 09:53:09AM -0600, David Duchscher wrote:
> It was suggested that this list may be a better place to post my request.
>
> I have started work on a WinBond chip driver (currently only the W83627HF 
> chip) to provide access to the chips watchdog timer and sensors.  I have 
> never written a driver before and my C is rather rusty so I figured I would 
> post what I currently have in hopes that some kind soul would take pity on 
> me.  What I have so far is located here:
>
>  http://freebsd.tamu.edu/wbio/
>
> The driver does attach and the watchdog timer works for the chip in my test 
> machine running FreeBSD 6.3.  TData sheets are here:
>
>  http://www.winbond-usa.com/en/content/view/143/273/
>
> Any advice, pointers, documents would be much appreciated.

Somewhat related:

I can work with you on this, if need be.  I've been working with both
the Winbond W83627HF and (more so) the Winbond W83793G, talking to both
via SMBus, so that we have a way to monitor fans and thermal information
on our Supermicro boxes.

I've written an application that fetches said information per Supermicro
specs (they deviate from Winbond's specifications a bit, since they
appear to use resistors on some of the thermistors at different
resistances -- and to make matters worse, the ICs are silkscreened on
the board as W83627HFs but are actually W83793G -- really weird):

FAN1           = 0 rpm
FAN2           = 0 rpm
FAN3           = 0 rpm
FAN4           = 3366 rpm
FAN5           = 1475 rpm
FAN6           = 1193 rpm
VCOREA (Vcore) = 1.292 V
VCOREB (+1.5V) = 1.542 V
VTT (P_VTT)    = 1.204 V
VSEN1(-12V)    = -12.288 V
VSEN2 (Vdimm)  = 1.824 V
3VSEN (+3.3V)  = 3.360 V
12VSEN (+12V)  = 11.904 V
5VDD (+5V)     = 4.998 V
5VSB (5Vsb)    = 5.046 V
VBAT (Vbatt)   = 3.184 V
TD1            = 30 C
TR1            = 42 C
TR2            = 33 C

It would be ideal if we could get something going similar to Linux's
lmsensors project, though with watchdog support too.  However, I do not
agree with the "auto-probe" method of finding out what HW IC is used; I
would much rather have a configuration database of motherboards and what
actual chip code they should use, ditto with "one-offs" (where some
mainboard vendors use different slave addresses or I/O base ports).
Yes, it would require more work, but it would guarantee functionality,
and not present nightmare situations for users and developers, e.g.  "I
get SOME temperatures, but I don't know if they're right, and these
voltages are totally wrong", etc...

Finally, I have not played with the watchdog capabilities at all.
Watchdogs are pretty cool though.  :-)

I'll look at your code over the next few weeks...

-- 
| Jeremy Chadwick                                    jdc at parodius.com |
| Parodius Networking                           http://www.parodius.com/ |
| UNIX Systems Administrator                      Mountain View, CA, USA |
| Making life hard for others since 1977.                  PGP: 4BD6C0CB |




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20080222233839.GA59633>