Texas Instruments Keystone 导航器队列管理子系统驱动程序¶
- 驱动程序源代码路径
drivers/soc/ti/knav_qmss.c drivers/soc/ti/knav_qmss_acc.c
Keystone SOC 上的 QMSS(队列管理器子系统)是构成 Keystone 多核导航器主干的主要硬件子系统之一。 QMSS 由队列管理器、打包数据结构处理器 (PDSP)、链接 RAM、描述符池和基础设施数据包 DMA 组成。 队列管理器是一个硬件模块,负责加速数据包队列的管理。 数据包通过将描述符地址写入或读取到特定的内存映射位置来进行排队/出队。 PDSP 执行 QMSS 相关的功能,如累积、QoS 或事件管理。 链接 RAM 寄存器用于链接存储在描述符 RAM 中的描述符。 描述符 RAM 可配置为内部或外部存储器。 QMSS 驱动程序管理 PDSP 设置、链接 RAM 区域、队列池管理(分配、推送、弹出和通知)和描述符池管理。
knav qmss 驱动程序为驱动程序提供了一组 API,用于打开/关闭 qmss 队列、分配描述符池、映射描述符、推/弹出队列等。有关可用 API 的详细信息,请参考 include/linux/soc/ti/knav_qmss.h
DT 文档位于 Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
使用 PDSP 固件的累加器 QMSS 队列¶
QMSS PDSP 固件支持累加器通道,该通道可以监视单个队列或多个连续队列。 drivers/soc/ti/knav_qmss_acc.c 是与累加器 PDSP 连接的驱动程序。 它配置在 DTS(示例在 DT 文档中)中定义的累加器通道,以监视每个通道 1 个或 32 个队列。 有关固件的更多说明,请参见 CPPI/QMSS 低级驱动程序文档 (docs/CPPI_QMSS_LLD_SDS.pdf),网址为
git://git.ti.com/keystone-rtos/qmss-lld.git
k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin 固件最多支持 48 个累加器通道。 此固件可在 firmware.git 的 ti-keystone 文件夹下找到,网址为
git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
要使用,请将固件映像复制到 initramfs 或 ubifs 文件的 lib/firmware 文件夹中,并在文件系统中提供指向 k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin 的符号链接,然后启动内核。 用户将看到
“firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP”(已为 PDSP 下载固件文件 ks2_qmss_pdsp_acc48.bin)
如果成功将固件加载到 PDSP,则在启动日志中显示。
使用累积队列需要固件映像存在于文件系统中。 如果 PDSP 未在 SoC 中运行,则驱动程序不会将 acc 队列添加到支持的队列范围。 如果向 acc 队列发出队列打开请求且 PDSP 未运行,则 API 调用将失败。 因此,请确保在使用这些队列类型之前将固件复制到文件系统。