linux I2C 驱动之----i2c_client 的注册
2012-04-19 23:24
417 查看
我们知道,linux的设备模型将设备分成了driver,device两大部分,driver即是设备的驱动,device即是硬件设备的具体描述,比如说:设备所拥有的中断,地址等,这里分析一下I2C驱动中device,也即i2c_client的注册。
(注:这里所说明的是linux 系统i2c设备新采用的方法。)
在注册i2c驱动的时候,会去linux系统中的全局变量_i2c_board_list链表中去匹配i2c_client,匹配的条件是:名字和i2c的地址。所以,在注册i2c设备驱动的时候要先注册好i2c设备。注册的方法如下:
首先,定义一个 i2c_board_info 的变量,i2c_board_info 是i2c系统定义的一个结构体,其定义如下:(include\linux\i2c.h)
struct i2c_board_info {
char type[I2C_NAME_SIZE];
unsigned short flags;
unsigned short addr;
void *platform_data;
struct dev_archdata *archdata;
struct device_node *of_node;
int irq;
};
其中最重要是type和addr,前者是名字,后者是地址,至于其他的不需要的话可以不用管他,给一个例子:struct i2c_board_info __initdata xxx_ls_cm3212 =
{
I2C_BOARD_INFO("cm3212",0x90),
// I2C_BOARD_INFO是个简单的宏:.type="cm3212",.addr=0x90.
};
然后,在板级系统初始化的时候注册:
i2c_register_board_info(int busnum,struct i2c_board_info const *info, unsigned len)
其中busnum表示你对应系统的那个 i2c 控制(adapter),len表示你注册的info的个数。
这样,系统中就存在了一个名字为type,地址为addr的i2c_client,当注册对应的驱动时,就会匹配成功,从而调用驱动的probe函数。
嗯,今天就到这,下次再说一下i2c_driver的注册。
(注:这里所说明的是linux 系统i2c设备新采用的方法。)
在注册i2c驱动的时候,会去linux系统中的全局变量_i2c_board_list链表中去匹配i2c_client,匹配的条件是:名字和i2c的地址。所以,在注册i2c设备驱动的时候要先注册好i2c设备。注册的方法如下:
首先,定义一个 i2c_board_info 的变量,i2c_board_info 是i2c系统定义的一个结构体,其定义如下:(include\linux\i2c.h)
struct i2c_board_info {
char type[I2C_NAME_SIZE];
unsigned short flags;
unsigned short addr;
void *platform_data;
struct dev_archdata *archdata;
struct device_node *of_node;
int irq;
};
其中最重要是type和addr,前者是名字,后者是地址,至于其他的不需要的话可以不用管他,给一个例子:struct i2c_board_info __initdata xxx_ls_cm3212 =
{
I2C_BOARD_INFO("cm3212",0x90),
// I2C_BOARD_INFO是个简单的宏:.type="cm3212",.addr=0x90.
};
然后,在板级系统初始化的时候注册:
i2c_register_board_info(int busnum,struct i2c_board_info const *info, unsigned len)
其中busnum表示你对应系统的那个 i2c 控制(adapter),len表示你注册的info的个数。
这样,系统中就存在了一个名字为type,地址为addr的i2c_client,当注册对应的驱动时,就会匹配成功,从而调用驱动的probe函数。
嗯,今天就到这,下次再说一下i2c_driver的注册。
相关文章推荐
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- Linux下I2C驱动client注册的方法
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_client 的注册
- linux I2C 驱动之----i2c_driver的注册 .
- linux I2C 驱动之----i2c驱动的注册过程(i2c_register_driver->driver_register(&driver->driver)->driver_find)
- linux I2C 驱动之----i2c驱动的注册过程(i2c_register_driver->driver_register(&driver->driver)->driver_find)
- Linux下面写i2c设备的驱动-如何枚举产生i2c_client
- linux I2C 驱动之----i2c_driver的注册
- linux驱动:i2c驱动(三)流程图之注册设备
- linux I2C驱动 i2c_set_clientdata函数和i2c_get_clientdata函数
- linux驱动:i2c驱动(四)流程图之注册驱动
- Linux内核里写i2c client 驱动的两种方式
- Linux下面写i2c设备的驱动-如何枚举产生i2c_client
- linux内核的I2C子系统详解5——i2c_driver的注册、i2c_client的来源
- linux-i2c驱动 之 i2c设备层的注册过程probe函数如何被调用分析
- linux I2C 驱动之----i2c_driver的注册
- linux i2c驱动注册流程