下面介绍如何查看一个i2c-adapter对应的设备书文件,i2c-client对应的设备树文件
我们知道I2C-client的信息和adapter的一些信息如寄存器等信息是放在设备树里面的,那么在设备树的什么位置呢?在arch/arm/boot/dts/xxx.dts
在默认的文件系统中查看默认只提供了一个,也是第0组的I2C,我们需要的其他组需要自己添加。
实际上,我们从SOC引出的scl和sda是不止一组的,有很多组,在我们的exynos4412 scp中能接9组,他们的控制器地址如下:每组寄存器都有I2CCONn,I2CSTATn,I2CADDn,I2CDSn,I2CLCn,(n=0,1,2,3,4,5,6,7,8)。
举例:由于我们需要确定当前的从设备是接在哪个控制器上的,每个控制器有不同的地址,所以要找到当前从设备的设备树的话需要知道控制器的地址是多少,那么我们以MPU6050为例的一个实际接线情况如下,
如何添加其他组的设备树?首先看看控制器对应的信息设备树模板:我们的驱动pdrv就通过compatible中的名字找到对应的设备的。其中有status=’disabled’的时候是不会帮你创建i2c adpater的一些控制器代码
我们要怎么创建呢,,我们需要在arch/arm/boot/dts/exynos4412-fs4412.dts中创建,这里才是描述从设备信息的设备树文件,这里也提供了从设备信息的一个添加模板,并且可以从系统的/sys/bus/i2c/devices/i2c-0/目录下就可以看到是否已经有i2c的控制器信息了,还有是否有client从设备信息。
控制器及client信息举例:/sys/bus/i2c/devices/i2c-0/,i2c-0就是一个控制器了,里面目录下就创建了一个client,如0-0066 client
添加自己需要的i2c组:只需在arch/arm/boot/dts/exynos4412-fs4412.dts中增加控制器和从设备的信息即可,如下
然后编译设备树:make dtbs更新设备树,然后查看adapter(控制器)是否更新到总线中:
adapter(控制器)中属于I2C总线:
查看I2C总线中client信息
这样就将I2C的5号组控制器和client信息都添加完成了。。。剩下的就是驱动的问题了。