gpt4 book ai didi

linux - Linux DevFreq 驱动程序未被调用的探针

转载 作者:行者123 更新时间:2023-12-03 03:38:32 27 4
gpt4 key购买 nike

我正在尝试为 Linux 上的外围设备设置 devfreq 驱动程序。我的驱动程序初始化方法如下所示:

  static struct platform_driver zynq_csortfreq_driver = {
.probe = zynq_csortfreq_probe,
.driver = {
.name = "ZYNQ_CSORT_DEVFREQ",
.owner = THIS_MODULE,
},
};

static int __init zynq_csortfreq_init(void)
{
return platform_driver_register(&zynq_csortfreq_driver);
}
late_initcall(zynq_csortfreq_init);

但是,我的驱动程序中的探测函数(zynq_csortfreq_probe)似乎从未被调用。我读过,为了使探测调用正常工作,驱动程序的 .name 值必须与设备的名称匹配 - 在哪里可以找到设备的名称?

最佳答案

为了调用probe函数,您必须从machine文件或通过设备添加设备树。。这通常是通过机器文件中的 platform_device_register()platform_add_devices() 来完成的。或者,of_platform_populate() 用于设备树模型,但代码不直接使用它。 platform device documentation包含您的 Linux 内核版本的信息。看来您的 Linux 使用 device tree modelcpufree devicetree 中的文档将提供一些关于使用设备树激活此板的驱动程序的有用信息。

dtsi 文件需要类似的内容,

 soc {
zyncfreq@addr {
compatible="xxxx"
/* Other platform data */

这将为您的机器定义设备。我建议您首先修改机器文件 init_machine 条目并使用 platform_device_register() 将驱动程序与设备关联。然后,如果您愿意,您可以稍后尝试让设备树机制正常工作。

如果您可以查看this closed question ,如果 Linux 设备模型文档不完全清楚,我的回答可能会有所帮助。但是,我认为对于您的情况,Linux 文档就足够了。

关于linux - Linux DevFreq 驱动程序未被调用的探针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16259580/

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