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

基于PCI的MFD驱动问题:I2C opencores驱动未触发probe

PCI连接下FPGA子设备I2C opencores驱动probe不触发问题

我正在为一款基于定制FPGA的PCI设备编写驱动,该FPGA板载多个子设备,需为这些子设备创建合适的接口。其中部分子设备使用自研驱动,但I2C总线希望复用已有的opencores驱动。此前通过SPI连接CPU时,只需在FPGA设备的DTS中为对应子设备添加I2C兼容属性即可正常工作。

改为PCI连接后,FPGA驱动已被内核探测,自研部分也成功注册为字符设备,但添加了正确兼容属性的MFD cell后,I2C opencores驱动的->probe()函数始终未被触发,仅MFD cell添加成功。

使用环境:64位ARM平台,Linux 4.9内核

相关代码

struct x_my_dev {
    struct list_head        x_my_dev;
    struct mfd_cell         *mfd_cell;
    struct device_node      *of_node;
    struct property         *compat_prop;
    struct resource         *irq_resource;
    struct platform_device      *pdev; // 修正原代码拼写错误:platform_devive → platform_device
};

...

struct x_my_dev *my_dev;

...
ret = mfd_add_devices(priv->dev, PLATFORM_DEVID_NONE,
            my_dev->mfd_cell, 1, NULL, irq_base, NULL);

if (ret) {
    dev_err(priv->dev, "Failed to add mfd cell\n");
    goto err_mfd_add;
}

...

已排查项

  • 确认opencores驱动已在内核中启用
  • 内核/sys/class/my_fpga/device/I2C_bus/目录下仅包含driver_override、modalias、power、subsystem和uevent文件,无显示应匹配驱动的内容

内容的提问来源于stack exchange,提问作者Ayrton Leyssens

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 01:05:27