使用的是am335x,,sdk6.0开发包里面的Kernel,实时时钟使用芯片为ds1337,接am335x的I2C0口,现在的问题是,添加实时时钟驱动后,实时时钟可读可写,但我在board-am335xevm.c里面就是没有看到关于I2C0硬件端口初始化的代码(应该将I2C0_SCLy与I2C0_SDA初始化为I2C口),请问这是什么原因?
static struct i2c_board_info i2c0_boardinfo[] = {
{
I2C_BOARD_INFO("tps65217", TPS65217_I2C_ID),
.platform_data = &beaglebone_tps65217_info,
},
{
I2C_BOARD_INFO("ds1307", 0x68),
},
{
I2C_BOARD_INFO("24c256", 0x50),
},
};
static void __init am335x_evm_i2c_init(void)
{
/* Initially assume General Purpose EVM Config */
am335x_evm_id = EVM_SK;
omap_register_i2c_bus(1, 100, i2c0_boardinfo,ARRAY_SIZE(i2c0_boardinfo));
}
关于初始化的就只有上面这些代码,搜遍整个board-am335xevm.c文件均没有初始化I2C0硬件端口的代码。
WTMEC-Fone Chang:
omap_register_i2c_bus(1, 100, i2c0_boardinfo,ARRAY_SIZE(i2c0_boardinfo));
這裡的bus id 1就是I2C0, i2c底層在driver/i2c/busses/i2c-omap
Mak he:
回复 WTMEC-Fone Chang:
我感觉am335x芯片配置里面应该有一个关于I2C配置端口配置的,如将I2C_SCL引脚配置为/TIMER7/UART2_RTSN/ECAP1_IN_PWM1_OUT/GPIO3_6口的话,那么就不是I2C了,所以我觉得I2C端口应该有个配置,但就是找不到在哪里配置的。
Jian Zhou:
回复 Mak he:
请问你指的是对应管脚的pinmux么?
WTMEC-Fone Chang:
回复 Mak he:
應該是如上面TI所說的pinmux mode設置, 感覺樓主都忽視了Bootloader所設置過的部分
leo chen:
回复 WTMEC-Fone Chang:
有可能在uboot中已经初始化了
uboot的时候也会读EEPROM的信息
Steven Liu1:
回复 leo chen:
印象中I2C0的PINMUX信息等的初始化在UBOOT里面就配置了,而且kernel的前面部分也是会再次初始化的。因为这个接口是可以控制PMIC的,在进入kernel的时候,调频时会通过I2C0来进行PMIC的调压,所以此前就是需要初始化了的。
Mak he:
回复 Steven Liu1:
I2C0在UBOOT里面会配置,这个我倒是知道,但在kernel里面在哪个位置配置的就没有找到。