GL520SM Problem

Jean Delvare khali at
Sat May 8 22:10:29 CEST 2004

> I am attempting to hack together a 2.6 port of the GL520SM chip
> driver.

Hey, great. Let us know when you have something working.

Be sure to follow my porting guide and the sysfs interface standard
(Documentation/i2c/porting-clients and
Documentation/i2c/sysfs-interface, respectively). Comments on both
documents are welcome.

> I am a little confused as to the relationship between temp2_input, and
> vin4_input values.

> The way I understand it, the GL520SM can either be configured to
> monitor ambient temperature, or the 4th voltage input.  This is done
> by setting/unsetting the 4th bit of the config register.

Correct, except that it's in4_input, not vin4_input. And it's not
necessarily the ambient temperature, just about any temperature where
the thermistor is. And it's the 5th voltage input. And it's the bit 4 of
configuration register, so 5th bit since we always start at 0. But all
in all you're correct, that's how it works ;)

> However when I set the mode bit, the value of the temp2_input register
> does not change.  I would have expected it to switch over to the
> vin4_input reading, and not remain the exact same value.  Also the
> alarms do not trigger when the mode bit is set, and vin4_input is out
> of range of vin4_max, and vin4_min.
> Is there some kind of reset I have to do on the chip other than just
> setting the mode bit?

I don't particularly know the chip. It's a bit old and obviously not
very common. Neither the datasheet nor our docs mention the need of
changing anything. And the 2.4 driver wasn't restarting the chip or
anything similar. I don't know if it was tested though. All in all I
can't tell you why what you observe happens, sorry.

Anyway, you should probably not change that bit. The physical layout of
the chip isn't supposed to change. The BIOS should take care of properly
initializing the value at boot time, and it should not need to be
changed after that. If you really want it to be user-configurable (but
again I don't think you want to) it should probably be a module
parameter, not part of the interface.

As a result, I'd expect your driver to create either the temp2* or the
in4* sysfs files, not both sets.

I'd also like to insist on the fact that the 2.4 driver seems to be
broken in several places. For example, the init function destroys any
configuration that the BIOS could have set. I can't see any reason for
doing that. This is probably the reason for this bug report:

Also, I think that there's a condition error in gl520_temp:
  if ((nr == 0) && (!data->two_temps))
should most likely read
  if ((nr == 1) && (!data->two_temps))
Do you confirm that?

The update function writes the temp2/in4 registers to both temp*[1] and
voltage*[4] regardless of the configuration. This is no good. And
there's no check done in the detect function to see whether the chip is
actually a gl520sm or not.

Please do better than this in your 2.6 driver. You are also welcome to
provide patches for the 2.4 driver.

Last, could you please provide the output of i2cdump on your chip? The
detection function in sensors-detect is rather poor and I'd like to
improve it a bit.


Jean Delvare

More information about the lm-sensors mailing list