您的位置:首页 > 其它

i2c-dev和spi-dev

2016-06-30 19:47 246 查看
i2c-dev.c

i2c_dev_init()

{

    注册字符设备  i2cdev_fops

    创造i2c_dev_class 用来创造设备 device_create

    创建总线事件提醒 i2cdev_notifier -> i2cdev_notifier_call -> i2cdev_attach_adapter

    链接已经存在的适配器

}

i2cdev_open()

{

    获取子设备号

    从子设备号获取 i2c_dev

    从i2c_dev获取adapter

    创建client

    把client塞到 file->private_data 中去 以后 read write ioctl 都从这里面取client

}

i2cdev_read()

{

    从file->private_data取出client

    创建数据缓存

    调用i2c_master_recv读数据

    把缓存copy到用户空间内存

}

i2cdev_write()

{

    从file->private_data取出client

    创建数据缓存

    把用户空间内存copy到缓存

    调用i2c_master_send发送数据    

}

i2cdev_attach_adapter()

{

    获取adapter

    获取i2c_dev

    get_free_i2c_dev()

    {

        把adapter加一层i2c_dev的壳

        把i2c_dev挂到i2c_dev_list链表上

    }

    创建设备和设备文件

}

spi_dev.c

spidev_init()

{

    注册字符设备 spidev_fops 

    创建spidev_class

    注册一个spidev_spi_driver  spidev_probe

}

spidev_open()

{

    遍历device_list找设备号

    把spidev_data塞到filp->private_data

}

spidev_probe()

{

    创建一个spidev_data

    初始化锁和链表

    找一个子设备号

    创建设备

    塞到device_list链表

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: