首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >同引脚不同芯片的Linux设备树兼容特性及驱动探针

同引脚不同芯片的Linux设备树兼容特性及驱动探针
EN

Stack Overflow用户
提问于 2022-08-18 04:06:22
回答 1查看 221关注 0票数 1

我有一个带有spi到can芯片的arm64 linux自定义板,芯片有时是mcp2515,有时是mcp2518fd.But,它们使用不同的驱动程序(mcp251x.ko/mcp25xxfd.ko)。这是我的dts:

代码语言:javascript
运行
复制
&spi4 {
        status = "okay";
        canfd@0 {
                compatible = "microchip,mcp2515", "microchip,mcp2518fd";
                reg = <0x0>;
                clocks = <&clk20m>;
                #interrupts = <&gpio3 RK_PB6 IRQ_TYPE_LEVEL_LOW>;
                interrupt-parent = <&gpio3>;
                interrupts = <RK_PB6 IRQ_TYPE_LEVEL_LOW>;
                spi-max-frequency = <4000000>;
        };
};

问题是,如果芯片是mcp2518fd,内核只匹配第一个兼容的“微芯片,mcp2515,然后驱动程序(mcp251x.ko)探针失败。

我能修改dts或驱动程序src以满足这一需求吗?如果驱动程序探测失败和内核匹配下一个兼容?

或者唯一的解决方案是将两个驱动程序合并成一个?

EN

回答 1

Stack Overflow用户

发布于 2022-08-18 09:54:33

兼容的字符串应该是从最特定到最一般的层次顺序,例如为特定的芯片指定ID,然后是具有公共编程接口的“系列”相关芯片的ID (通常比特定于芯片的编程接口具有更少的特性)。这在这种情况下不适用,因为microchip,mcp2515microchip,mcp2518fd指的是没有分层关系的不同的特定芯片。

设备树节点需要指定安装哪种SPI到CAN控制器.这意味着您需要为每种类型的板加载不同的.dtb文件,或者有一个基本的.dtb文件,并在基本的.dtb文件之上加载不同的“设备树覆盖”(.dtbo)文件。引导加载程序可以根据引导加载器中的某些存储设置选择不同的.dtb文件。不同的.dtbo文件可以分别由引导加载程序或Linux操作系统根据引导加载程序中的某些存储设置或在Linux操作系统中加载。

可以在运行时使用"DT-Overlay configfs接口“(CONFIG_OF_CONFIGFS)在Linux操作系统中加载不同的设备树覆盖,但这需要修补内核源。这些补丁可以在主题/覆盖上找到。

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

https://stackoverflow.com/questions/73397334

复制
相关文章

相似问题

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