查看: 1651|回复: 1

[求助] 如何调整platform device 和driver的匹配优先级

[复制链接]

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
19
最后登录
2022-11-5
发表于 2022-11-1 14:32:27 | 显示全部楼层 |阅读模式
目前我遇到的问题是这样的:
我想要通过申请一个gpio口来控制一个buzzer,然后我在内核中添加了一个驱动,并且修改了dts。
当我将buzzer.c直接编译到内核中时,我发现buzzer中的probe函数无法成功执行,原因是通过dts中的配置获取gpio_desc时出错,在遍历gpio_devices时失败。
然后我发现buzzer.c申请gpio时gpio_devices此时是empty。
接下来我在gpio中的probe函数中添加了一行日志信息,发现出错的地方是       
port->clk = devm_clk_get_optional(&pdev->dev, NULL);
IS_ERR(port->clk)=true
接着我又在clk 的probe函数中添加了一行日志信息
通过内核启动时的日志信息可以看到,执行gpio probe()的时刻为0.1s,执行clk probe()的时刻为0.2s,执行buzzer probe()的时刻为2s。
所以我想请问大家是否有办法提前执行clk probe(),或者能否提供其他解决思路,谢谢大家。
我知道答案 目前已有1人回答
回复

使用道具 举报

该用户从未签到

2

主题

4

帖子

0

新手上路

Rank: 1

积分
19
最后登录
2022-11-5
 楼主| 发表于 2022-11-1 14:55:18 | 显示全部楼层
目前的解决办法是修改init函数的等级,我一直认为init函数不会影响probe的执行顺序,现在看来是我错了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-22 13:41 , Processed in 0.081634 second(s), 22 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

快速回复 返回顶部 返回列表