基于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
相关产品推荐
相关产品推荐

