xxx_init()
{
i2c_add_driver(); // struct i2c_driver -> xxx_probe、xxx_remove、of_match_table(dts)
}
xxx_exit()
{
i2c_del_driver(); // struct i2c_driver
}
以下与platform驱动一样
xxx_probe()
{
alloc_chrdev_region(); // 申请设备号
cdev_init(); // 初始化字符设备,struct file_operations -> xxx_read、xxx_write、xxx_ioctl
cdev_add(); // 添加设备到内核
// 创建类和设备节点
class_create();
device_create();
}
xxx_ioctl();
xxx_read()
{
copy_to_user();
}
xxx_write()
{
copy_from_user();
}
xxx_remove()
{
device_destroy();
class_destroy();
cdev_del();
unregister_chrdev_region();
}
网友评论