德州仪器 Keystone Navigator 队列管理子系统驱动程序

驱动程序源代码路径

drivers/soc/ti/knav_qmss.c drivers/soc/ti/knav_qmss_acc.c

在 Keystone SOC 上发现的 QMSS(队列管理器子系统)是构成 Keystone 多核 Navigator 主干的主要硬件子系统之一。 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 的符号链接,然后启动内核。 用户会看到

“为 PDSP 下载了固件文件 ks2_qmss_pdsp_acc48.bin”

如果固件加载到 PDSP 成功,则在启动日志中。

使用累积队列需要在文件系统中存在固件映像。 如果 PDSP 未在 SoC 中运行,则驱动程序不会将 acc 队列添加到支持的队列范围。 如果存在对 acc 队列的队列打开请求且 PDSP 未运行,则 API 调用会失败。 因此,请务必在使用这些队列类型之前将固件复制到文件系统。