RapidIO 子系统 mport 字符设备驱动程序 (rio_mport_cdev.c)¶
1. 概述¶
该设备驱动程序是 RapidIO.org 软件任务组 (STG) 内德州仪器、Freescale、Prodrive Technologies、诺基亚网络、BAE 和 IDT 之间合作的成果。 还收到了来自 RapidIO.org 其他成员的额外意见。 目标是创建一个字符模式驱动程序接口,将 RapidIO 设备的功能直接暴露给应用程序,以便众多且多样的 RapidIO 实现可以互操作。
此驱动程序 (MPORT_CDEV) 提供对用户空间应用程序的基本 RapidIO 子系统操作的访问。 大多数 RapidIO 操作都通过 ‘ioctl’ 系统调用支持。
加载后,此设备驱动程序会在 /dev 目录中为每个注册的 RapidIO mport 设备创建名为 rio_mportX 的文件系统节点。 节点名称中的 ‘X’ 与分配给每个本地 mport 设备的唯一端口 ID 匹配。
使用可用的 ioctl 命令集,用户空间应用程序可以执行以下 RapidIO 总线和子系统操作
从 mport 设备的配置寄存器读取和写入(RIO_MPORT_MAINT_READ_LOCAL/RIO_MPORT_MAINT_WRITE_LOCAL)
从远程 RapidIO 设备的配置寄存器读取和写入。 此操作在 RIO 规范中定义为 RapidIO 维护读取/写入。(RIO_MPORT_MAINT_READ_REMOTE/RIO_MPORT_MAINT_WRITE_REMOTE)
设置 mport 设备的 RapidIO 目标 ID (RIO_MPORT_MAINT_HDID_SET)
设置 mport 设备的 RapidIO 组件标签 (RIO_MPORT_MAINT_COMPTAG_SET)
查询 mport 设备的逻辑索引 (RIO_MPORT_MAINT_PORT_IDX_GET)
查询 mport 设备的功能和 RapidIO 链路配置 (RIO_MPORT_GET_PROPERTIES)
启用/禁用向用户空间应用程序报告 RapidIO 门铃事件 (RIO_ENABLE_DOORBELL_RANGE/RIO_DISABLE_DOORBELL_RANGE)
启用/禁用向用户空间应用程序报告 RIO 端口写入事件 (RIO_ENABLE_PORTWRITE_RANGE/RIO_DISABLE_PORTWRITE_RANGE)
查询/控制通过此驱动程序报告的事件类型:门铃、端口写入或两者 (RIO_SET_EVENT_MASK/RIO_GET_EVENT_MASK)
为特定大小、RapidIO 目标 ID、跳数和请求类型配置/映射 mport 的出站请求窗口 (RIO_MAP_OUTBOUND/RIO_UNMAP_OUTBOUND)
为特定大小、RapidIO 基址和本地内存基址配置/映射 mport 的入站请求窗口 (RIO_MAP_INBOUND/RIO_UNMAP_INBOUND)
为与远程 RapidIO 设备进行 DMA 数据传输分配/释放连续的 DMA 连贯内存缓冲区 (RIO_ALLOC_DMA/RIO_FREE_DMA)
启动与远程 RapidIO 设备的 DMA 数据传输 (RIO_TRANSFER)。 支持阻塞、异步和发布(也称为“fire-and-forget”)数据传输模式。
检查/等待异步 DMA 数据传输完成 (RIO_WAIT_FOR_ASYNC)
管理 RapidIO 子系统支持的设备对象 (RIO_DEV_ADD/RIO_DEV_DEL)。 这允许将各种 RapidIO 结构枚举算法实现为用户空间应用程序,同时使用内核 RapidIO 子系统提供的剩余功能。
2. 硬件兼容性¶
此设备驱动程序使用内核 RapidIO 子系统定义的标准接口,因此它可以与 RapidIO 子系统注册的任何 mport 设备驱动程序一起使用,但受可用 mport 实现的限制。
目前最常见的限制是特定 mport 设备的 RapidIO 特定 DMA 引擎框架的可用性。 用户在计划使用此驱动程序时应验证其平台的可用功能
IDT Tsi721 PCIe-to-RapidIO 桥接设备及其 mport 设备驱动程序与此驱动程序完全兼容。
Freescale SoC ‘fsl_rio’ mport 驱动程序没有 RapidIO 特定 DMA 引擎支持的实现,因此 mport_cdev 驱动程序的 DMA 数据传输不可用。
3. 模块参数¶
- ‘dma_timeout’
DMA 传输完成超时(以毫秒为单位,默认值为 3000)。 此参数为 SYNC 模式 DMA 传输请求和 RIO_WAIT_FOR_ASYNC ioctl 请求设置最大完成等待时间。
- ‘dbg_level’
此参数允许控制此设备驱动程序生成的调试信息的数量。 此参数由对应于特定功能块的一组位掩码形成。 有关掩码定义,请参见 ‘drivers/rapidio/devices/rio_mport_cdev.c’ 此参数可以动态更改。 使用 CONFIG_RAPIDIO_DEBUG=y 启用顶层调试输出。
4. 已知问题¶
无。
5. 用户空间应用程序和 API¶
可从 RapidIO.org 获得使用此设备驱动程序的 API 库和应用程序。
6. TODO 列表¶
添加对发送/接收“原始”RapidIO 消息传递数据包的支持。
在 RapidIO 特定的 DMA 不可用时,添加内存映射的 DMA 数据传输作为选项。