您好!我在调8168内核I2C驱动,发现I2C0可以正常访问,而I2C1一直访问不了,相应引脚上根本没有信号出来。
在《TI816x-PSP-04.00.00.09-DataSheet.pdf》P4页发现一句话:
“Though I2C1 control from kernel is not supported, it is possible to add this support by editing
arch/arm/plat-omap/i2c.c and arch/arm/mach-omap2/board-ti8168evm.c for 'Bus 2'”
如果想访问BUS2,具体应该怎么改上面那两个文件?谢谢!
目前我做的修改为下面标的红色部分,凡是还是没效果,i2c1一直没有信号出来。
在uboot中给了i2c1的时钟:
evm.c,peripheral_enable()中:
__raw_writel(0x2, CM_ALWON_I2C_1_CLKCTRL);
while(((__raw_readl(CM_ALWON_I2C_1_CLKCTRL) & 0x70000) >> 16) != 0) ;
在内核arch/arm/plat-omap/i2c.c
static struct resource i2c_resources[][2] = {
{ I2C_RESOURCE_BUILDER(0, 0) },
{ I2C_RESOURCE_BUILDER(0, 0) },
};
static struct platform_device omap_i2c_devices[] = {
I2C_DEV_BUILDER(1, i2c_resources[0], &i2c_pdata[0]),
I2C_DEV_BUILDER(2, i2c_resources[1], &i2c_pdata[1]),
};
xiaohui chen1:
我用到的是I2C1(设备节点/dev/i2c-2)
增加错误的打印信息,还请专家帮忙看看。谢谢!
/ # /mnt/i2cget -y 2 0x18 0
omap_i2c omap_i2c.2: controller timed out
Error: Read failed
Feng Dong:
回复 xiaohui chen1:
请首先检查pin脚定义是否正确
xiaohui chen1:
回复 Feng Dong:
管脚复用没有问题,我挂仿真器对比了下i2c0/i2c1的pinmux配置寄存器:
PINCTRL287、PINCTRL288、PINCTRL289、PINCTRL290的值都一样,都是0x18: i2c引脚模式,Pullup selected, Pullup/Pulldown disabled
外面都有上拉电阻。
xiaohui chen1:
回复 Feng Dong:
管脚复用没有修改,我挂仿真器对比了下i2c0/i2c1的pinmux配置寄存器:
PINCTRL287、PINCTRL288、PINCTRL289、PINCTRL290的值都一样,都是0x18: i2c引脚模式,Pullup selected, Pullup/Pulldown disabled
外面都有上拉电阻。