下面举例,如何在驱动里添加设备信息:
1. 设备信息已写在板级文件里
static int __init mmc328x_init(void)
{
pr_info("mmc328x driver: init\n");
return i2c_add_driver(&mmc328x_driver);
}
static void __exit mmc328x_exit(void)
{
pr_info("mmc328x driver: exit\n");
i2c_del_driver(&mmc328x_driver);
}
2. 设备信息写在驱动文件里
//将放在板级文件里的设备信息,拷贝到驱动里来
static struct i2c_board_info mmc328x_info = {
I2C_BOARD_INFO("mmc328x", 0x33),
.platform_data = NULL,
.irq = IRQ_EXTINT(23), //GPIO_A6
};
static int __init mmc328x_init(void)
{
pr_info("mmc328x driver: init\n");
struct i2c_adapter* i2c_adp = NULL;//定义适配结构指针
i2c_adp= i2c_get_adapter(1); //获得i2c总线1的适配器
if( i2c_adp==NULL ){
printk("Can't get i2c adapter");
}else{ //添加i2c设备信息
i2c_new_device(i2c_adp, &mmc328x_info);
}
return i2c_add_driver(&mmc328x_driver);
}
static void __exit mmc328x_exit(void)
{
pr_info("mmc328x driver: exit\n");
i2c_del_driver(&mmc328x_driver);
i2c_unregister_device(this_client); //驱动模块卸载时,删除设备信息
}