首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Linux i2c驱动程序中进行芯片特定初始化的正确功能是什么?

在Linux i2c驱动程序中进行芯片特定初始化的正确功能是什么?
EN

Stack Overflow用户
提问于 2019-09-12 12:38:11
回答 1查看 105关注 0票数 0

我正在尝试初始化ADT746x芯片的状态寄存器。Linux内核有这个芯片的hwmon驱动程序,但是它没有配置。

当设备准备好通过sys接受i2c命令时,我需要初始化几组寄存器。这些寄存器将温度和电压传感器配置为有效,并将它们标记为监视。

有这些init代码的正确位置是什么?探测()或检测()或其他任何地方的用户?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-09-18 14:23:03

在普通内核中,这类传感器的驱动程序很少,即驱动程序/hwmon/adt7462.c(在内核文档中)、驱动程序/hwmon/ in 85.c(在内核文档中)、驱动程序/hwmon/lm90.c(在内核文档中)和驱动器/macintosh/therm_adt746x.c。

它们都通过sysfs拥有相应的接口:对于hwmon来说,它是一个通用的接口,而对于Macintosh驱动程序则是一个特定的接口。

要实现您所要求的目标,以下选项是可能的:

  • 黑名单模块(如果它们被自动加载)并通过脚本加载它们,脚本将通过sysfs接口应用必要的参数。
  • 通过硬编码必要的调用黑入驱动程序。

对于第二个变体,最好的选择是将代码放在->probe()回调中。对于hwmon驱动程序,在调用hwmon_device_register()之前这样做是有意义的,因为最后一个驱动程序将公开用户空间可能立即使用的sysfs属性。

->detect()专用于允许I 2 C核心检查驱动程序是否在总线上看到任何受支持的设备。在这个阶段,还不知道有问题的设备是连接的。即使在检测到了一些强制性的初始化步骤之后,也可能会忽略一些步骤,因此不建议在此阶段与设备进行通信。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57906912

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档