You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

平台设备场景下,设备树对应驱动'data'字段的存储位置疑问

DesignWare PCIe平台驱动中data字段的逻辑解析
  • 你搞混了一个核心点:data字段根本不在设备树里,它是Linux内核驱动代码里of_device_id结构体的内置成员,和设备树节点的内容完全无关。
  • 打开drivers/pci/controller/dwc/pcie-designware-plat.c,能找到这样的匹配数组:
    static const struct of_device_id dw_plat_pcie_of_match[] = {
        { .compatible = "snps,dw-pcie", .data = &dw_pcie_rc_ops },
        { .compatible = "snps,dw-pcie-ep", .data = &dw_pcie_ep_ops },
        { /* 终止条目 */ }
    };
    MODULE_DEVICE_TABLE(of, dw_plat_pcie_of_match);
    
    这里每个compatible字符串都对应了驱动里预设好的data值——比如"snps,dw-pcie"对应根控制器(RC)的操作集,"snps,dw-pcie-ep"对应端点(EP)的操作集。
  • 驱动的probe函数调用of_match_device()时,会根据设备树节点的compatible字段,在上面这个数组里找到匹配的条目。一旦匹配成功,直接从该条目的data字段读取预设好的模式标识,不需要从设备树里读取任何额外字段。
  • 所以像uniphier-pro5.dtsi里的pcie_ep节点,只需要声明compatible = "snps,dw-pcie-ep",驱动就能自动匹配到对应的of_device_id条目,拿到EP模式的data值,完成对应模式的初始化——设备树里完全不需要写和data相关的内容。

内容的提问来源于stack exchange,提问作者Chan Kim

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 22:25:42