All of lore.kernel.org
 help / color / mirror / Atom feed
From: greg@kroah.com (Greg KH)
To: Andrey Borzenkov <arvidjaar@mail.ru>
Cc: linux-kernel@vger.kernel.org, sensors@stimpy.netroedge.com
Subject: 2.6 - sysfs sensor nameing inconsistency
Date: Thu, 19 May 2005 06:24:13 +0000	[thread overview]
Message-ID: <20030819194533.GA5738@kroah.com> (raw)
In-Reply-To: <200308192319.01895.arvidjaar@mail.ru>

On Tue, Aug 19, 2003 at 11:19:01PM +0400, Andrey Borzenkov wrote:
> On Sat, Jul 26, 2003 at 10:00:51PM +0400, Andrey Borzenkov wrote:
> > Assuming this patch (or variant thereof) is accepted I can then
> > produce libsensors patch that will easily reuse current sensors.conf.
> > I have already done it for gkrellm and as Mandrake is going to
> > include 2.6 in next release sensors support becomes more of an issue.
> 
> There are more issues than just type_name.

Hey, one thing at a time :)

> In libsensors only one file need to be touched - proc.c (file that deals with 
> kernel interface). Unfortunately, not all information expected by libsensors 
> is currently available is sysfs. Here is output of first stab:
> 
> {pts/1}% LD_LIBRARY_PATH=$PWD/lib ./prog/sensors/sensors
> as99127f-i2c-0-2d
> Adapter: DUMMY
> Algorithm: DUMMY
> VCore 1:   +1.70 V  (min =  +1.49 V, max =  +1.81 V)
> +3.3V:     +3.47 V  (min =  +2.98 V, max =  +3.63 V)
> +5V:       +5.00 V  (min =  +4.52 V, max =  +5.48 V)
> +12V:     +11.37 V  (min = +10.82 V, max = +13.13 V)
> -12V:     -11.51 V  (min = -12.33 V, max = -15.07 V)       ALARM
> -5V:       -5.03 V  (min =  -4.50 V, max =  -5.49 V)
> CPU:      4753 RPM  (min = 3000 RPM, div = 2)
> Front:    2909 RPM  (min = 3000 RPM, div = 2)              ALARM
> ERROR: Can't get TEMP1 data!
> ERROR: Can't get TEMP2 data!
> ERROR: Can't get TEMP3 data!
> vid:      +1.650 V
> alarms:
> beep_enable:
>           Sound alarm enabled
> 
> So we have following problems:
> 
> 1. I do not know where to get information on adapters (called busses actually 
> in libsensors) and algorithms. I.e. the information corresponding to 2.4:
> 
> {pts/2}% cat ~/tmp/i2c-bus
> i2c-0   smbus           SMBus I801 adapter at e800              Non-I2C SMBus adapter

Look in /sys/class/i2c-adapter/  It shows all of the i2c adapters in the
system, and points to where they are in the device tree.  For example,
on my desktop:

$ tree ../class/i2c-adapter/
./class/i2c-adapter/
|-- i2c-0
|   |-- device -> ../../../devices/pci0000:00/0000:00:1f.3/i2c-0
|   `-- driver -> ../../../bus/i2c/drivers/i2c_adapter
`-- i2c-1
    |-- device -> ../../../devices/legacy/i2c-1
    `-- driver -> ../../../bus/i2c/drivers/i2c_adapter

Then look at the device directory for the i2c-0 adapter:

$ ls /sys/class/i2c-adapter/i2c-0/device/
0-0048/  0-0049/  0-0053/  detach_state  name  power/

Hm, a name file:
$ cat /sys/class/i2c-adapter/i2c-0/device/name 
SMBus I801 adapter at 8000

Ah, the same info as you showed for 2.4 :)

> 2. I do not know - and sysfs does not provide any information - how to 
> identify chips-of-interest as opposed to generic i2c devices. I.e. w83781d 
> has both clients and subclients (2.4 again):
> 
> {pts/2}% cat ~/tmp/i2c-0-bus
> 2d      AS99127F chip                           W83781D sensor driver
> 48      AS99127F subclient                      W83781D sensor driver
> 49      AS99127F subclient                      W83781D sensor driver
> 
> and we are interested in clients only. In 2.4 we get this information from 
> kernel as result of sysctl :))
> 
> {pts/2}% cat ~/tmp/i2c-sysctl-chips
> 256     as99127f-i2c-0-2d
> 
> while in 2.6 we see in sysfs all three devices:
> 
> pts/2}% l /sys/bus/i2c/devices
> 0-002d@  0-0048@  0-0049@
> 
> without any obvious way to know which one(s) to use.

That's what you are going to have to set the name file to in the
i2c_client structure, much like your patch did.  Then look at the
different name files in each device directory to see what kind of device
it is (chip, subclient, etc.)

> 3. libsensors asks for hysteresis value. This one does not exist in sysfs (so 
> all temp readings fail). Is it emulated by kernel or read off chip?

The kernel is exporting all of the info that it knows about through
sysfs.  If we missed a value somewhere, please let us know.  I'm pretty
sure they are all present:

$ ls /sys/class/i2c-adapter/i2c-0/device/0-0048/
detach_state  name  power/  temp_input  temp_max  temp_min

> 4. I do not have the slightest idea how ISA adapters look like in sysfs and 
> where they are located. Anyone can give me example?

They show up on the legacy bus:

$ tree /sys/class/i2c-adapter/i2c-1/
/sys/class/i2c-adapter/i2c-1/
|-- device -> ../../../devices/legacy/i2c-1
`-- driver -> ../../../bus/i2c/drivers/i2c_adapter

$ ls /sys/class/i2c-adapter/i2c-1/device/
detach_state  name  power

I don't have any drivers loaded that are attached to this adapter right
now, but I think you get the idea (it's the same as for pci devices.)

> So the patch to ibsensors is actually trivial enough. Main issue is contents 
> of sysfs

You might want to take a look at libsysfs, it makes finding all of the
devices and attributes in the sysfs tree a whole lot easer.

Hope this helps,

greg k-h

WARNING: multiple messages have this Message-ID (diff)
From: Greg KH <greg@kroah.com>
To: Andrey Borzenkov <arvidjaar@mail.ru>
Cc: linux-kernel@vger.kernel.org, sensors@stimpy.netroedge.com
Subject: Re: 2.6 - sysfs sensor nameing inconsistency
Date: Tue, 19 Aug 2003 12:45:33 -0700	[thread overview]
Message-ID: <20030819194533.GA5738@kroah.com> (raw)
In-Reply-To: <200308192319.01895.arvidjaar@mail.ru>

On Tue, Aug 19, 2003 at 11:19:01PM +0400, Andrey Borzenkov wrote:
> On Sat, Jul 26, 2003 at 10:00:51PM +0400, Andrey Borzenkov wrote:
> > Assuming this patch (or variant thereof) is accepted I can then
> > produce libsensors patch that will easily reuse current sensors.conf.
> > I have already done it for gkrellm and as Mandrake is going to
> > include 2.6 in next release sensors support becomes more of an issue.
> 
> There are more issues than just type_name.

Hey, one thing at a time :)

> In libsensors only one file need to be touched - proc.c (file that deals with 
> kernel interface). Unfortunately, not all information expected by libsensors 
> is currently available is sysfs. Here is output of first stab:
> 
> {pts/1}% LD_LIBRARY_PATH=$PWD/lib ./prog/sensors/sensors
> as99127f-i2c-0-2d
> Adapter: DUMMY
> Algorithm: DUMMY
> VCore 1:   +1.70 V  (min =  +1.49 V, max =  +1.81 V)
> +3.3V:     +3.47 V  (min =  +2.98 V, max =  +3.63 V)
> +5V:       +5.00 V  (min =  +4.52 V, max =  +5.48 V)
> +12V:     +11.37 V  (min = +10.82 V, max = +13.13 V)
> -12V:     -11.51 V  (min = -12.33 V, max = -15.07 V)       ALARM
> -5V:       -5.03 V  (min =  -4.50 V, max =  -5.49 V)
> CPU:      4753 RPM  (min = 3000 RPM, div = 2)
> Front:    2909 RPM  (min = 3000 RPM, div = 2)              ALARM
> ERROR: Can't get TEMP1 data!
> ERROR: Can't get TEMP2 data!
> ERROR: Can't get TEMP3 data!
> vid:      +1.650 V
> alarms:
> beep_enable:
>           Sound alarm enabled
> 
> So we have following problems:
> 
> 1. I do not know where to get information on adapters (called busses actually 
> in libsensors) and algorithms. I.e. the information corresponding to 2.4:
> 
> {pts/2}% cat ~/tmp/i2c-bus
> i2c-0   smbus           SMBus I801 adapter at e800              Non-I2C SMBus adapter

Look in /sys/class/i2c-adapter/  It shows all of the i2c adapters in the
system, and points to where they are in the device tree.  For example,
on my desktop:

$ tree ../class/i2c-adapter/
../class/i2c-adapter/
|-- i2c-0
|   |-- device -> ../../../devices/pci0000:00/0000:00:1f.3/i2c-0
|   `-- driver -> ../../../bus/i2c/drivers/i2c_adapter
`-- i2c-1
    |-- device -> ../../../devices/legacy/i2c-1
    `-- driver -> ../../../bus/i2c/drivers/i2c_adapter

Then look at the device directory for the i2c-0 adapter:

$ ls /sys/class/i2c-adapter/i2c-0/device/
0-0048/  0-0049/  0-0053/  detach_state  name  power/

Hm, a name file:
$ cat /sys/class/i2c-adapter/i2c-0/device/name 
SMBus I801 adapter at 8000

Ah, the same info as you showed for 2.4 :)

> 2. I do not know - and sysfs does not provide any information - how to 
> identify chips-of-interest as opposed to generic i2c devices. I.e. w83781d 
> has both clients and subclients (2.4 again):
> 
> {pts/2}% cat ~/tmp/i2c-0-bus
> 2d      AS99127F chip                           W83781D sensor driver
> 48      AS99127F subclient                      W83781D sensor driver
> 49      AS99127F subclient                      W83781D sensor driver
> 
> and we are interested in clients only. In 2.4 we get this information from 
> kernel as result of sysctl :))
> 
> {pts/2}% cat ~/tmp/i2c-sysctl-chips
> 256     as99127f-i2c-0-2d
> 
> while in 2.6 we see in sysfs all three devices:
> 
> pts/2}% l /sys/bus/i2c/devices
> 0-002d@  0-0048@  0-0049@
> 
> without any obvious way to know which one(s) to use.

That's what you are going to have to set the name file to in the
i2c_client structure, much like your patch did.  Then look at the
different name files in each device directory to see what kind of device
it is (chip, subclient, etc.)

> 3. libsensors asks for hysteresis value. This one does not exist in sysfs (so 
> all temp readings fail). Is it emulated by kernel or read off chip?

The kernel is exporting all of the info that it knows about through
sysfs.  If we missed a value somewhere, please let us know.  I'm pretty
sure they are all present:

$ ls /sys/class/i2c-adapter/i2c-0/device/0-0048/
detach_state  name  power/  temp_input  temp_max  temp_min

> 4. I do not have the slightest idea how ISA adapters look like in sysfs and 
> where they are located. Anyone can give me example?

They show up on the legacy bus:

$ tree /sys/class/i2c-adapter/i2c-1/
/sys/class/i2c-adapter/i2c-1/
|-- device -> ../../../devices/legacy/i2c-1
`-- driver -> ../../../bus/i2c/drivers/i2c_adapter

$ ls /sys/class/i2c-adapter/i2c-1/device/
detach_state  name  power

I don't have any drivers loaded that are attached to this adapter right
now, but I think you get the idea (it's the same as for pci devices.)

> So the patch to ibsensors is actually trivial enough. Main issue is contents 
> of sysfs

You might want to take a look at libsysfs, it makes finding all of the
devices and attributes in the sysfs tree a whole lot easer.

Hope this helps,

greg k-h

  reply	other threads:[~2005-05-19  6:24 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2003-07-15 18:14 2.6 - sysfs sensor nameing inconsistency Andrey Borzenkov
2003-07-15 20:18 ` Greg KH
2003-07-26 18:00   ` Andrey Borzenkov
2003-08-15 20:51     ` Greg KH
2003-08-16 15:38       ` Andrey Borzenkov
2003-08-16 16:50         ` Greg KH
2003-08-18 16:49           ` Andrey Borzenkov
2003-08-18 21:31             ` Greg KH
2005-05-19  6:24               ` Greg KH
2003-08-19 19:19           ` Andrey Borzenkov
2003-08-19 19:45             ` Greg KH [this message]
2005-05-19  6:24               ` Greg KH
2003-08-31 16:25               ` Andrey Borzenkov
2005-05-19  6:24                 ` Andrey Borzenkov
2003-09-22 22:29                 ` Greg KH
2005-05-19  6:24                   ` Greg KH
2003-11-02 18:50                   ` Andrey Borzenkov
2005-05-19  6:24                     ` Andrey Borzenkov
  -- strict thread matches above, loose matches on Subject: below --
2003-07-27  4:42 Margit Schubert-While
2003-07-27  6:23 Andrey Borzenkov

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20030819194533.GA5738@kroah.com \
    --to=greg@kroah.com \
    --cc=arvidjaar@mail.ru \
    --cc=linux-kernel@vger.kernel.org \
    --cc=sensors@stimpy.netroedge.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.