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...
i2c_init_recovery(adap); /* create pre-declared device nodes */ of_i2c_register_devices(adap); i2c_acpi_register_devices(adap); i2c_acpi_install_space_handler(adap); if (adap->nr < __i2c_first_dynamic_bus_num) i2c_scan_static_board_info(adap); /* Notify drivers */ mutex_lock(&co...
i2c_init|__i2c_first_dynamic_bus_num=of_alias_get_highest_id("i2c")+1|//__i2c_first_dynamic_bus_num表示动态分配的i2c bus num,为静态分配bus num最大值加1|bus_register(&i2c_bus_type)|is_registered=true//表示 driver model 已经初始化完成|i2c_add_driver(&dummy_driver) i2c_init主要的工...
i2c->dev=&pdev->dev; spin_lock_init(&i2c->lock); init_waitqueue_head(&i2c->wait); i2c->i2c_restart_nb.notifier_call=rk3x_i2c_restart_notify; i2c->i2c_restart_nb.priority=128; ret=register_i2c_restart_handler(&i2c->i2c_restart_nb); if(ret){ dev_err(&pdev->dev,"failedtosetup...
int timeout;/* in jiffies */int retries;struct device dev;/* the adapter device */int nr;char name[48];struct completion dev_released;struct mutex userspace_clients_lock;struct list_head userspace_clients;struct i2c_bus_recovery_info*bus_recovery_info;conststruct i2c_adapter_quirks*quirks;}...
struct i2c_bus_recovery_info *bus_recovery_info; const struct i2c_adapter_quirks *quirks; }; /* @ i2c_add_adapter 使用动态的总线号注册 @ 而 i2c_add_numbered_adapter 使用静态总线号注册 @ adapter或adap 要添加到 Linux 内核中的 i2c_adapter,也就是I2C 适配器 ...
struct i2c_bus_recovery_info — I2C总线恢复信息?内核新加入的结构,不是很清楚。 //对外函数操作 module_i2c_driver — 注册I2C设备驱动的宏定义 i2c_register_board_info — 静态声明(注册)I2C设备,可多个 i2c_verify_client — 如果设备是i2c_client的dev成员则返回其父指针,否则返回NULL。用来校验设备是否为...
518struct i2c_bus_recovery_info *bus_recovery_info;519conststruct i2c_adapter_quirks *quirks;520};第501行,i2c_algorithm类型的指针变量algo,对于一个I2C适配器,肯定要对外提供读写API函数,设备驱动程序可以使用这些API函数来完成读写操作。i2c_algorithm就是I2C适配器与IIC设备进行通信的方法。i2c_algorithm...
[I2C_NAME_SIZE]; struct i2c_adapter *adapter; /* the adapter we sit on */ struct device dev; /* the device structure */ int init_irq; /* irq set at initialization */ int irq; /* irq issued by device */ struct list_head detected; #if IS_ENABLED(CONFIG_I2C_SLAVE) i2c_slave_...
1、/*File : i2c.hPurpose : */#ifndef _I2C_H_#define _I2C_H_/* Includes */* Defines */#define SENSORS_I2C I2C2#define I2C_SPEED 400000#define I2C_OWN_ADDRESS 0x00#define I2C_Config() I2cMaster_Init(); /* Prototypes */void I2cMaster_Init(void);unsigned long Sensors_I2C_Write...