Raghavendra <arrao@xxxxxxx> writes: > Hello, > > I would like to know more about manually probing/removing the devices > through sysfs attributes. > After searching for a while I came across two attributes 'bind' and > 'unbind' present in all the drivers. > > Now how may I correctly use them to probe my devices. > I sense the probing syntax is different for different kinds of drivers > (I2C, SPI, PCI, USB, etc). > I am mainly looking for probing I2C and SPI devices. sysfs attributes are supposed to be documented under 'Documentation/ABI/' but there seems to be a few holes there: bjorn@nemi:/usr/local/src/git/linux$ git grep bind Documentation/ABI/ Documentation/ABI/testing/configfs-usb-gadget: UDC - bind a gadget to UDC/unbind a gadget; Documentation/ABI/testing/configfs-usb-gadget: to bind a gadget, empty string "" to unbind. Documentation/ABI/testing/sysfs-bus-pci:What: /sys/bus/pci/drivers/.../bind Documentation/ABI/testing/sysfs-bus-pci: the driver to attempt to bind to the device found at Documentation/ABI/testing/sysfs-bus-pci: bindings. The format for the location is: DDDD:BB:DD.F. Documentation/ABI/testing/sysfs-bus-pci: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/bind Documentation/ABI/testing/sysfs-bus-pci:What: /sys/bus/pci/drivers/.../unbind Documentation/ABI/testing/sysfs-bus-pci: driver to attempt to unbind from the device found at Documentation/ABI/testing/sysfs-bus-pci: bindings. The format for the location is: DDDD:BB:DD.F. Documentation/ABI/testing/sysfs-bus-pci: # echo 0000:00:19.0 > /sys/bus/pci/drivers/foo/unbind Documentation/ABI/testing/sysfs-bus-pci: for the device and attempt to bind to it. For example: Documentation/ABI/testing/sysfs-bus-pci: to driver_override will have an opportunity to bind to the Documentation/ABI/testing/sysfs-bus-pci: This returns the device to standard matching rules binding. Documentation/ABI/testing/sysfs-bus-pci: Writing to driver_override does not automatically unbind the Documentation/ABI/testing/sysfs-bus-pci: will not bind to any driver. This also allows devices to Documentation/ABI/testing/sysfs-bus-pci: opt-out of driver binding using a driver_override name such as Documentation/ABI/testing/sysfs-bus-usb: for the device and attempt to bind to it. For example: I am pretty sure patches to fix this are accepted... The bind/unbind attributes normally (always?) take a bus specific device name as input. I.e something like the '0000:00:19.0' shown above for PCI, or '4-2:1.2' for USB. > Also I found related attributes called 'new_id and remove_id' (for PCI > drivers) and also 'new_device and delete_device' (present in the i2c > adapter devices). These are better documented: bjorn@nemi:/usr/local/src/git/linux$ git grep new_id Documentation/ABI/ Documentation/ABI/testing/sysfs-bus-pci:What: /sys/bus/pci/drivers/.../new_id Documentation/ABI/testing/sysfs-bus-pci: # echo "8086 10f5" > /sys/bus/pci/drivers/foo/new_id Documentation/ABI/testing/sysfs-bus-pci: that was dynamically added via the new_id sysfs entry. Documentation/ABI/testing/sysfs-bus-usb:What: /sys/bus/usb/drivers/.../new_id Documentation/ABI/testing/sysfs-bus-usb: # echo "8086 10f5" > /sys/bus/usb/drivers/foo/new_id Documentation/ABI/testing/sysfs-bus-usb: # echo "0458 7045 0 0458 704c" > /sys/bus/usb/drivers/foo/new_id Documentation/ABI/testing/sysfs-bus-usb: # cat /sys/bus/usb/drivers/foo/new_id Documentation/ABI/testing/sysfs-bus-usb:What: /sys/bus/usb-serial/drivers/.../new_id Documentation/ABI/testing/sysfs-bus-usb: "/sys/bus/usb/drivers/.../new_id" apply. Documentation/ABI/testing/sysfs-bus-usb: that was dynamically added via the new_id sysfs entry. Documentation/ABI/testing/sysfs-bus-usb: "/sys/bus/usb/drivers/.../new_id" > Now how are they different from the bind/unbind > attributes, because as far as I know, even they do the same thing. No, they do different things. The bind/unbind attributes tries to attach/detach a driver to/from a device supported by that driver. The new_id/remove_id attributes adds/removes device IDs to/from the list of devices supported by the driver. Adding a new device ID to a driver will usually cause previously unbound devices with a matching ID to be bound though, which I guess is the part confusing you. > Could any one guide me through any documentation regarding all these issues Looks like you'll have to write some of that documentation ;-) Bjørn _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies