Options for adding I2C devices and how-to

Anish Kumar anish198519851985 at gmail.com
Fri Sep 30 21:50:03 EDT 2016



> On Sep 30, 2016, at 6:23 PM, vibnwis <vibnwis at gmail.com> wrote:
> 
> Hi there,
> 
> My questions are about the options available for adding I2C devices onto existing single board computers, such as Panda Board or Raspberry Pi. Later then I would ask how to get it done. 
> 
> By far, I have found out the following options. Correct me if I am wrong as my understanding s still hazy.
> 
> 1. BitBanging method. That is by connecting it to existing unused GPIOs.  Need to create a Bitbanging client driver for the device with the two GPIOs for SDA, SCLK respectively

Right
> 
> 2. Use existing allocated I2C Pins. Assuming the kernel driver for the device is already available, then simply run make menuconfig to configure to use the right I2c device. However, if the driver is not available. One needs to create a new client driver. if up to now I am still not wrong, then I have a few questions.
>        a) what address is it and how to specify one for the new device? would like wise to use the existing allocated addresses which are not being used due to non-existence of those I2C devices on the system?

You need to find out the device address of your device. 
find out which device is not connected and connect your device on that bus and change the device tree to replace the device address.
>         b) if somehow, the new I2C device has somewhat similar architecture with the existing supporter I2C devices, would it wise to use it instead of developing a new client driver? I am trying to say that would it wise to trial and error some of the existing supporting driver if they are compatible. Only after testing then decide if new driver development is needed. Is it the right thing to do?

You mean if the regmap is similar? I don't think that would be the case unless both devices are from the same company with minor revision change.
> 
> 3. Writing/using user mode I2c driver.

You can certainly use i2c_detect and i2c_get user space tools to work with your device. However is there is a existing kernel space i2c device on that bus then it will certain lead to bus hogging problems.
> 
> Feel free to add any comments or suggestions.
Please add information about your device and kernel version which you are trying to use. May be there is already a driver for it in open source.
Best of luck!!
> 
> Thank you in advance.
> 
> Best regards,
> Lim
> 
> 
> _______________________________________________
> Kernelnewbies mailing list
> Kernelnewbies at kernelnewbies.org
> https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies



More information about the Kernelnewbies mailing list