Friday, March 31, 2017

Ubuntu 12.04, loading i801 I2C driver



I have a device connected to the following bus (I will discuss it once I explain what I'm trying to achieve), and I'm trying to debug the driver itself (generally it was working for earlier specifications and ubuntu versions and I'm trying to update the driver to work on the newest specification, in order to do that I must get it working on a newer version of ubuntu and once I have the infrastructure I will start developing) - I am trying to load the i2c bus driver i801 to no success. There are no /dev/i2c-x available, I tried to compile it as a built in as well as a module - none seem to make it available, maybe it shouldn't be there? I do see "something", which is /sys/modules/i2c_i801/drivers/pci:i801_smbus.



The motherboard I use is Intel's DB75EN. When I check the bus with scope I can see once in a few seconds an access to device in 44h. I'm using Torvalds latest kernel (3.14).



Any advice as to how do I load the driver and how does the bus drivers are selected and load?




Thank you!



Well, it seems like my main issue was that there was some collision between addresses I didn't look into. The acpi_check_address_range() from osl.c found a collision. This made the call of acpi_check_resource_conflict() from i2c-i801 probe fail. I commented it and compiled and it worked. To register my driver I also had to send it's address explicitly by:
sudo su
echo > /sys/bus/i2c/devices/i2c-0/new_device (i2c0 is i801)



I think another way to solve it is to undef ENFORCE_RESOURCES_STRICT which the acpi_check_resource_conflict() in osl.c checks before deciding to fail.



P.S




Now I see device 44h when I run i2cdetect.


No comments:

Post a Comment

11.10 - Can't boot from USB after installing Ubuntu

I bought a Samsung series 5 notebook and a very strange thing happened: I installed Ubuntu 11.10 from a usb pen drive but when I restarted (...