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 呼叫將失敗。 因此,請確保在使用這些佇列型別之前將韌體複製到檔案系統。