初次接触设备树

qq_34240815 2019-02-07 11:07:12
引入设备树之后,我有些疑问。如果我在驱动程序probe函数里面需要用到lcd controller相关寄存器的资源是用platform_get_resource函数来获取吗?引入设备树之后platform_device这部分是不是不用管了?引入设备树之后假如移植一个声卡驱动的大致流程是什么?三个问题。
...全文
803 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
酸菜鱼的鱼 2019-03-22
  • 打赏
  • 举报
回复
刚好经常接触。
其实上面的melo_fang回答还是很好的,我结合自己的工作心得说一下吧。
问题1:在linux 3.10之前的版本中还没有用到dts的,3.10之后才出现使用设备树的方式代替platform_device的。一般是用以of开头的函数获取设备的硬件平台资源。不过呢,内核也有好多api直接将of函数封装了一层,比如pinctrl子系统,具体可以查看如下例子:https://blog.csdn.net/u010299133/article/details/88646412

问题2:使用了设备树后就不会使用platform_device的方式了

问题3:自己没有移植过声卡,倒是移植过camera的。 一般芯片原厂都会提供一个sdk,里面都会包含,各种驱动,遇到新的硬件模块,多半还是就在现有的相类似的驱动上修改。主要就是dts节点,驱动代码中的probe中的部分
JT同学 2019-03-21
  • 打赏
  • 举报
回复
https://blog.csdn.net/weixin_42462202/article/details/86505992
melo_fang 2019-03-20
  • 打赏
  • 举报
回复
1.引入设备树后,硬件资源配置在设备树中,相关api应该都是of开头,具体你可以去查下
2.遗留的platform_device这块,基本上处于抛弃状态。不在由板级文件提供硬件资源。platform_device应该就是内核内部的一些在使用,例如USB host conctol的platform_device 就会由otg驱动创建。
3.移植声卡我之前没有做过,但是设备树引入后,大致步骤无非是:
a. 确定所有硬件资源,包括不限于寄存器/gpio/中断/power等,在设备树里配置正确
b. 移植厂商提供的驱动,确保驱动正确加载(makefile kconfig等)
c. 确保probe/中断/resume/suspend等关键函数的调用
fly 100% 2019-02-13
  • 打赏
  • 举报
回复
所有的获取信息都是通过device tree的接口过去,包括中断号 基地址和一些自己定义的

21,600

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 驱动开发/核心开发
社区管理员
  • 驱动开发/核心开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧