Exynos4412 IIC 总线驱动开发相关问题总结
2016-06-19 11:21
260 查看
一 、问题
1、IIC总线上的设备是怎么描述的?
struct i2c_client
{
struct device dev;
...
};
2、IIC总线上的驱动是怎么描述的?
struct i2c_driver
{
struct device_driver driver;
};
3、IIC总线上的设备和驱动是怎么匹配的
1)、对于 Cortex - A8 通过driver提供id_table和client->name匹配
2)、对于 Cortex - A9 参考下图
4、如何告诉系统我们从设备的信息
1)、对于 Cortex - A8
arch/arm/mach-s5c100/mac-smdkc100.c
struct i2c_borad_info i2c_des0[] = {
填写从设备的信息
}
2)、对于 Cortex - A9
通过设备树,内核转换
5、系统是如何找到我们的从设备信息,找到从设备信息后做了什么事情
1)、对于 Cortex - A8
系统启动的时候,会把从设备信息,注册到_i2c_borad_list。
总线驱动的匹配的时候,会调用
i2c_add_numbered_adapter()
|
i2c_register_adapter(adap)
|
i2c_scan_static_board_info()
|
i2c_new_device()
{
1.产生了i2c_client (填充了从设备信息)
2.注册了client->device
}
6、在IIC总线上驱动如何获取从设备的信息
//i2c_driver的probe函数在调用的时候,会将i2c_client结构体传递过去,i2c_client包含了从设备的信息
int xxx_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
}
7、数据如何接收
利用中断
8、数据如何发送
adap->algo->master_xfer
static const struct i2c_algorithm s3c24xx_i2c_algorithm = {
.master_xfer = s3c24xx_i2c_xfer,
.functionality = s3c24xx_i2c_func,
};
1、IIC总线上的设备是怎么描述的?
struct i2c_client
{
struct device dev;
...
};
2、IIC总线上的驱动是怎么描述的?
struct i2c_driver
{
struct device_driver driver;
};
3、IIC总线上的设备和驱动是怎么匹配的
1)、对于 Cortex - A8 通过driver提供id_table和client->name匹配
2)、对于 Cortex - A9 参考下图
4、如何告诉系统我们从设备的信息
1)、对于 Cortex - A8
arch/arm/mach-s5c100/mac-smdkc100.c
struct i2c_borad_info i2c_des0[] = {
填写从设备的信息
}
2)、对于 Cortex - A9
通过设备树,内核转换
5、系统是如何找到我们的从设备信息,找到从设备信息后做了什么事情
1)、对于 Cortex - A8
系统启动的时候,会把从设备信息,注册到_i2c_borad_list。
总线驱动的匹配的时候,会调用
i2c_add_numbered_adapter()
|
i2c_register_adapter(adap)
|
i2c_scan_static_board_info()
|
i2c_new_device()
{
1.产生了i2c_client (填充了从设备信息)
2.注册了client->device
}
6、在IIC总线上驱动如何获取从设备的信息
//i2c_driver的probe函数在调用的时候,会将i2c_client结构体传递过去,i2c_client包含了从设备的信息
int xxx_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
}
7、数据如何接收
利用中断
8、数据如何发送
adap->algo->master_xfer
static const struct i2c_algorithm s3c24xx_i2c_algorithm = {
.master_xfer = s3c24xx_i2c_xfer,
.functionality = s3c24xx_i2c_func,
};
相关文章推荐
- 冒泡排序
- C#快速生成数据数组
- Exynos4412 中断驱动开发相关问题总结
- 妙用php中的register_shutdown_function和fastcgi_finish_request
- java基础知识:break语句和continue语句
- 如何创建线程
- Exynos4412 中断处理流程详解
- MarkDown的vim插件安装
- 阿里云服务器web应用安全-异常登录
- iOS-UIStackView浅析
- ContentProvider的理解与使用
- linux下man手册简介
- C:数组和指针
- 高级I/O---多路复用---epoll
- Ubuntu安装jdk
- java 金字塔
- 实现应用专属通知铃声
- 九度OJ 1012 畅通工程 (深度遍历求强连通分量个数)
- LeetCode 360. Sort Transformed Array
- 【Debug】双击cpp文件无法直接打开,提示“向程序发送命令时出现问题”