728行的i2c_dw_init_recovery_info是在给dw_i2c_dev结构体(指代一个i2c controller ip)初始化lock-up recovery方法, recovery相关的方法保存在i2c_bus_recovery_info结构体中。 <include/linux/i2c.h> 611 struct i2c_bus_recovery_info { 612 int (*recover_bus)(struct i2c_adapter *adap); /* recovery...
staticconststructi2c_algorithm i2c_dw_algo ={ .master_xfer=i2c_dw_xfer, .functionality=i2c_dw_func, };inti2c_dw_probe_master(structdw_i2c_dev *dev) {structi2c_adapter *adap = &dev->adapter; unsignedlongirq_flags;intret; ... ret= dev->init(dev);if(ret)returnret; snprintf(adap->n...
i2c-dev.c提供了上层直接访问I2C设备的接口,其中包括了I2C控制器的注册,字符设备接口的提供等 i2c-dev.c注册过程: staticint__init i2c_dev_init(void) {intres; pr_err("i2c /dev entries driver\n"); res= register_chrdev_region(MKDEV(I2C_MAJOR,0), I2C_MINORS,"i2c");//注册字符设备的主设备号if...
static const struct i2c_algorithms3c24xx_i2c_algorithm = { .master_xfer = s3c24xx_i2c_xfer, .functionality = s3c24xx_i2c_func, }; 1. 2. 3. 4. 而不适合适配器只支持smbus算法的情况,如: static const struct i2c_algorithmsmbus_algorithm = { .smbus_xfer = i801_access, .functionality =...
@@ -461,9 +463,25 @@ static void i2c_dw_xfer_init(struct dw_i2c_dev *dev) { struct i2c_msg *msgs = dev->msgs; u32 ic_tar = 0; bool enabled;/* Disable the adapter */ __i2c_dw_enable_and_wait(dev, false); enabled = dw_readl(dev, DW_IC_ENABLE_STATUS) & 1;...
#include "hal_dw_i2c.h" void my_task_test() { uint8_t data= 0,data_read; hal_i2c_init(I2C0); printf("hal_i2c_init after\n"); uint8_t *data_write =&data; for (;;) { //i2c端口,从机地址,寄存器地址,7位从机地址,写入的数据,写1个数据 ...
static void i2c_dw_xfer_init(struct dw_i2c_dev *dev) {struct i2c_msg *msgs = dev->msgs; u32 ic_tar = 0; u32 ic_con, ic_tar = 0;/* Disable the adapter */ __i2c_dw_enable_and_wait(dev, false);/* if the slave address is ten bit address, enable 10BITADDR */if...
时钟使用常规的72M,这部分配置很多芯片都一样I2C的配置也是普普通通,保持默认就好,不使用DMA传输I2C初始化代码以下代码由CubeMX自动生成,在用户代码区(USER CODE)添加了解除写保护WR的代码,除此之外没有其它修改void MX_I2C1_Init(void){hi 秋风宜人 2021-08-11 08:33:04 如何...
1. int __init 2. i2c_register_board_info(int busnum, 3. struct i2c_board_info const *info, unsigned len) 4. { 5. int status; 6. 7. down_write(&__i2c_board_lock); 8. 9. /* dynamic bus numbers will be assigned after the last static one */ ...
/i2c-XXX.c 中的 xxx_i2c_xfer() ,xxx为具体cpu,这个xxxi2c_xfer() 真正读写了cpu的i2c 寄存器,实现了数据通信。 */static int i2c_mux_smbus_xfer(struct i2c_adapter *adap, u16 addr, unsignedshort flags, charreadwrite, u8 command, int size, union i2c_smbus_data *data { ...