On README.p4b?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear Developers of the lm_sensor project:

      My name is Yoshifumi Shimizu.  I have a question about the README.p4b,
which is on the SMBus problem of ASUS Pentimum4 motherbaords.

      In the "README.p4b" file, it says:

----------------------------------------------------------------------------
>It turnes off (!) the bits number 8 and 3 in the LPC register of the ICH2.
>This you can also try as root with setpci and pcitweak.
>First do a:
>
>setpci -d 8086:2440 f2.w
>
>You will get an hex number VAL - in my case 148 (Hex)-, where you have to 
>erase the two bits - in my case you get 40 (Hex).
>Then do a:
>
>setpci -d 8086:2440 f2.w=VAL
> (snip)
----------------------------------------------------------------------------

while in the "p4b_smbus.c"

----------------------------------------------------------------------------
>/* 
> * Checks whether SMBus is enabled and turns it on in case they are not. 
> * It's done by clearing Bit 8 and 4 in i801 config space F2h, PCI-Device 0x8086:0x2440(ICH2)/0x24c0(ICH4)
> */
>static int
>i801smbus_enable(struct pci_dev *dev){
>	u16  val   = 0;
>
>	pci_read_config_word(dev, 0xF2, &val);
>	DBG("i801smbus: i801smbus config byte reading 0x%X.\n", val);
>	if (val & 0x008) {
>		pci_write_config_word(dev, 0xF2, val & 0x77);
>		pci_read_config_word(dev, 0xF2, &val);
> (snip)
----------------------------------------------------------------------------

So it seems that the content of two are conflicting:

   README.p4b        --->   bits 8 and 3 (counting from 0)
   p4b_smbus.c       --->   bits 7 and 3 (counting from 0)

which is correct?   This is my first question.  The second is, of course,
related to the first:  If what is written in "p4b_smbus.c" is correct,
then the data is byte, so that it should be:

        pci_write_config_byte(dev, 0xF2, val & 0x77);
                         ^^^^

        pci_read_config_byte(dev, 0xF2, &val);
                        ^^^^
in stead of "***_word()".  And then, in the README.p4b, one has to change?:

        setpci -d 8086:2440 f2.b=VAL
                              ^^
(for this, I'm not sure.  Is it correct?  I am not a linux user!  Please,
let me know if it's correct).  If what is written in "README.p4b" is
correct, on the other hand, then the data is word, but, of course, then
the mask should be changed:

        pci_write_config_word(dev, 0xF2, val & 0xFEF7);
                                               ^^^^^^
What is correct?


     I am developing a motherboard monitor program for FreeBSD
(it also runs on Linux box, though), named "xmbmon/mbmon", which is
a userland program and not of device driver type like lm_sensors.

   http://www.nt.phys.kyushu-u.ac.jp/shimizu/download/download.html

Your project is a great help for developing the program. I appreciate
it so much.

     Now, many users of ASUS Pentium4 motherboards had the same
problem when using "xmbmon/mbmon", so I want to write down a kind of
FAQ for it.  So I looked into the your project files.  But, because of
the inconsistencies mentioned above, I cannot write down.  I cannot
either check by myself, since I don't have any ASUS Pen4 motherboards,
so I hope to clear out what is correct by asking you.  Thank you.

     With best regards,                   Yoshifumi R. Shimizu



[Index of Archives]     [Linux Kernel]     [Linux Hardware Monitoring]     [Linux USB Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Yosemite Backpacking]

  Powered by Linux