从零开始之驱动发开、linux驱动(五十三、linux下的IIC设备驱动cdev[7])

本文介绍Linux内核中的i2c-dev.c如何作为I2C设备驱动,提供临时虚拟i2c_client以方便用户空间操作。它为每个I2C适配器创建设备文件,并实现了i2c_driver成员函数及字符设备驱动。主要功能包括通过i2cdev_read和i2cdev_write函数调用I2C核心函数进行读写操作,以及在open函数中确定具体设备的交互。

i2c-dev.c文件完全可以被看作是一个I2C设备驱动, 不过, 它实现的i2c_client是虚拟、 临时的, 主要是为了便于从用户空间操作I2C外设。 i2c-dev.c针对每个I2C适配器生成一个主设备号为89的设备文件, 实现了i2c_driver的成员函数以及文件操作接口, 因此i2c-dev.c的主体是“i2c_driver成员函数+字符设备驱动”。
 

#define I2C_MAJOR	89		/* Device major number		*/

/*
 * module load/unload record keeping
 */

static int __init i2c_dev_init(void)
{
	int res;

	printk(KERN_INFO "i2c /dev entries driver\n");

    /* 注册一个设备号为89的主设备 */
	res = register_chrdev(I2C_MAJOR, "i2c", &i2cdev_fops);
	if (res)
		goto out;

    /* 创建一个类,自动创建设备节点 */
	i2c_dev_class = class_create(THIS_MODULE, "i2c-dev");
	if (IS_ERR(i2c_dev_class)) {
		res = PTR_ERR(i2c_dev_class);
		goto out_unreg_chrdev;
	}

    /* 注册一个i2c设备驱动,当然这个设备驱动,肯定是可以支持所有的设备的 */
	res = i2c_add_driver(&i2c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

奔跑的小刺猬

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值