i2c-dev和spi-dev

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链表
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值