05-I2C适配器驱动加载与卸载
15.3.1 I2C适配器驱动加载与卸载
I2C总线驱动模块的加载函数要完成两个工作。
● 初始化I2C适配器所使用的硬件资源,如申请I/O地址、中断号等。
● 通过i2c_add_adapter()添加i2c_adapter的数据结构,当然这个i2c_adapter数据结构的成员已经被xxx适配器的相应函数指针所初始化。
I2C总线驱动模块的卸载函数要完成的工作与加载函数相反。
● 释放I2C适配器所使用的硬件资源,如释放I/O地址、中断号等。
● 通过i2c_del_adapter()删除i2c_adapter的数据结构。
代码清单15.10所示为I2C适配器驱动的模块加载和卸载函数的模板。
代码清单15.10 I2C总线驱动的模块加载和卸载函数模板
1 static int _ _init i2c_adapter_xxx_init(void)
2 {
3 xxx_adpater_hw_init();
4 i2c_add_adapter(&xxx_adapter);
5 }
6
7 static void _ _exit i2c_adapter_xxx_exit(void)
8 {
9 xxx_adpater_hw_free();
10 i2c_del_adapter(&xxx_adapter);
11 }
上述代码中xxx_adpater_hw_init()和xxx_adpater_hw_free()函数的实现都与具体的CPU和I2C适配器硬件直接相关。