gpt4 book ai didi

Linux I2C 内核驱动绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-04 12:16:58 26 4
gpt4 key购买 nike

我正在学习如何开发 Linux I2C 内核驱动程序,我从以下网站学习。
How to instantiate I2C devices
I2C Driver for Linux Based Embedded System
...
接下来,我找到了一个演示如何实现 I2C 触摸板驱动程序的示例,但它确实让我感到困惑
linux/drivers/input/mouse/synaptics_i2c.c

我的问题是,Linux 内核如何将此驱动程序正确绑定(bind)到设备?
此驱动程序不提供“检测”回调,未通过 i2c_driver.address_list 指定 I2C 从属地址,而且似乎没有人可以调用 i2c_board_info 来注册地址信息(我 grep 了整个 Linux 代码库)。
我认为驱动程序必须指定从属地址或提供“检测”回调,就像
drivers/hwmon/adc128d818.c
或者 linux/drivers/rtc/rtc-ds1307.c (会通过i2c_board_info注册)

请让我知道我错过了什么,谢谢。

最佳答案

i2c 设备声明是从设备树开始的。

在设备树中声明 i2c 设备。

例子:

i2c1: i2c@400a0000 {
/* ... master properties skipped ... */
clock-frequency = <100000>;

flash@50 {
compatible = "atmel,24c256";
reg = <0x50>;
};

pca9532: gpio@60 {
compatible = "nxp,pca9532";
gpio-controller;
#gpio-cells = <2>;
reg = <0x60>;
};
};

在哪里,

1) 400a000是一个i2c总线地址2)pca9532和flash是驱动名3) @50 和@60 为从机地址4) 属性“compatible”来查找和映射设备与驱动程序5) 每个条目单元格内的其他属性特定于将在探测期间用于设备初始化的驱动程序

https://www.kernel.org/doc/Documentation/i2c/instantiating-devices

关于Linux I2C 内核驱动绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47155211/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com