i2c驱动分析

到了linux 3.0中i2c设备驱动的写法变得出奇的简单, 例子比如rtc/rtc-ds1672.c中,大体上是如下几个框框:

1.在init函数中, i2c_add_driver(&your_driver);

2.在exit函数中,i2c_del_driver(&your_driver);

3.struct i2c_driver your_driver = {

         .driver = {.name = "xxxxxx",),

          .probe = &xxxx_probe,

           .remove = &xxx_remove,

            .id_table = xxx_id,  /*struct i2c_device_id xxx_id*/

};

4.实现probe函数。有三步:第一,i2c_check_functionality();第二,具体设备的注册,比如rtc_device_register();第三,

i2c_setclientdata(client, xxx),以备后用;

5.实现remove函数。把设备unregister掉。

6.其它的和设备相关的部分,可能会用到i2c_msg结构体,i2c_transfer()函数,i2c_master_send()函数。其中的构建的i2c_msg数组中,第一个指明了基地址,第二个以后就是数据; 两个传输函数返回传送的信息数目就对了。

7.结束语,linux用驱动开发者情何以堪啊, 基本上费劲的地方都实现了,留给驱动开发者的只是xxx_register,xxx_unregister调用,糟蹋我的智商

 

转载于:https://my.oschina.net/u/204576/blog/75511

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值