Patch for I2C + sysfs
greg at kroah.com
Sat Jan 10 01:17:00 CET 2004
On Fri, Jan 09, 2004 at 04:56:12PM -0700, Matthew Mastracci wrote:
> >But adapters are not on the i2c bus. They are the "root" of the i2c
> >bus. I2C adapters live as devices on other busses (PCI, platform, etc.)
> I'm modelling this after the usb sysfs entry. The usb adapters
> themselves appear in /sys/bus/usb/devices:
That is because those "usbX" devices _are_ real USB devices. They are
the USB root hub, which lives in the silicon inside the USB controller.
The kernel sees them as a real USB device, and they talk USB to the
I2C adapters are not like that.
> >What exactly is the problem that HAL can't see the devices in the place
> >where they are in the sysfs tree?
> Without this patch, the device only appears in two places:
> * under the class directory with class "i2c-adapter", and
This is why that class directory was created. In order that userspace
can find all of the i2c adapters.
> * under the root devices tree in its respective pci path.
> If you contrast this with the usb controllers, they appear in three places:
> * under the class directory with class "usb_host",
> * under the root devices tree in its repective pci path, and
> * under the /sys/bus/usb directory
Again, the USB root hubs are a different type of device, you can't
compare the two, sorry.
> HAL uses libsysfs, which parses the contents of the various bus/
> directories to determine the appropriate bus for the given subdevices
> beneath each device. It assumes that for each valid device directory
> directory in the /sys/devices/ tree, there is an entry in one of the bus
> Since the I2C-n directories don't appear in any of the bus directories,
> libsysfs can only print "unknown" bus for them and they can't be
> appropriately placed within the HAL tree.
But i2c adapters _are not_ on the i2c bus. They are the "bridge device"
between say the PCI bus and the i2c bus. They are really just a PCI
device, and so that's where they are in the tree.
> I had assumed that since the I2C adapters are similar in function to the
> usb_host devices, they should appear in the same place.
Nope, apples and oranges.
> If this is not the case, should the usb hosts be under the PCI bus tree
> as well? In that case, should the I2C adapters be there too?
USB hosts do show up in /sys/class/usb_hosts/ just like the i2c adapters
Hope this helps,
More information about the lm-sensors