i2c_add_driver i2c_register_driver driver->driver.bus = &i2c_bus_type; driver_register(&driver->driver); list_for_each_entry(adapter, &adapters, list) { driver->attach_adapter(adapter); i2c_probe(adapter, &addr_data, eeprom_detect); i2c_probe_address // 发出S信号,发出设备地址(来自addr_data) i2c_smbus_xfer i2c_smbus_xfer_emulated i2c_transfer adap->algo->master_xfer // s3c24xx_i2c_xfer 怎么写I2C设备驱动程序? 1. 分配一个i2c_driver结构体 2. 设置 attach_adapter // 它直接调用 i2c_probe(adap, 设备地址, 发现这个设备后要调用的函数); detach_client // 卸载这个驱动后,如果之前发现能够支持的设备,则调用它来清理 3. 注册:i2c_add_driver 测试1th: 1. insmod at24cxx.ko 观察输出信息 2. 修改normal_addr里的0x50为0x60 编译加载,观察输出信息