Linux I2C从设备树信息查看与添加方法

下面介绍如何查看一个i2c-adapter对应的设备书文件,i2c-client对应的设备树文件

我们知道I2C-client的信息和adapter的一些信息如寄存器等信息是放在设备树里面的,那么在设备树的什么位置呢?在arch/arm/boot/dts/xxx.dts

Linux I2C从设备树信息查看与添加方法

在默认的文件系统中查看默认只提供了一个,也是第0组的I2C,我们需要的其他组需要自己添加。

Linux I2C从设备树信息查看与添加方法

实际上,我们从SOC引出的scl和sda是不止一组的,有很多组,在我们的exynos4412 scp中能接9组,他们的控制器地址如下:每组寄存器都有I2CCONn,I2CSTATn,I2CADDn,I2CDSn,I2CLCn,(n=0,1,2,3,4,5,6,7,8)。

Linux I2C从设备树信息查看与添加方法

举例:由于我们需要确定当前的从设备是接在哪个控制器上的,每个控制器有不同的地址,所以要找到当前从设备的设备树的话需要知道控制器的地址是多少,那么我们以MPU6050为例的一个实际接线情况如下,

Linux I2C从设备树信息查看与添加方法Linux I2C从设备树信息查看与添加方法

如何添加其他组的设备树?首先看看控制器对应的信息设备树模板:我们的驱动pdrv就通过compatible中的名字找到对应的设备的。其中有status=’disabled’的时候是不会帮你创建i2c adpater的一些控制器代码

Linux I2C从设备树信息查看与添加方法

我们要怎么创建呢,,我们需要在arch/arm/boot/dts/exynos4412-fs4412.dts中创建,这里才是描述从设备信息的设备树文件,这里也提供了从设备信息的一个添加模板,并且可以从系统的/sys/bus/i2c/devices/i2c-0/目录下就可以看到是否已经有i2c的控制器信息了,还有是否有client从设备信息。

Linux I2C从设备树信息查看与添加方法

控制器及client信息举例:/sys/bus/i2c/devices/i2c-0/,i2c-0就是一个控制器了,里面目录下就创建了一个client,如0-0066 client

Linux I2C从设备树信息查看与添加方法

添加自己需要的i2c组:只需在arch/arm/boot/dts/exynos4412-fs4412.dts中增加控制器和从设备的信息即可,如下

Linux I2C从设备树信息查看与添加方法

然后编译设备树:make dtbs更新设备树,然后查看adapter(控制器)是否更新到总线中:

Linux I2C从设备树信息查看与添加方法

adapter(控制器)中属于I2C总线:

Linux I2C从设备树信息查看与添加方法

查看I2C总线中client信息

Linux I2C从设备树信息查看与添加方法

这样就将I2C的5号组控制器和client信息都添加完成了。。。剩下的就是驱动的问题了。