1* Texas Instruments Keystone Navigator Queue Management SubSystem driver 2 3Driver source code path 4 drivers/soc/ti/knav_qmss.c 5 drivers/soc/ti/knav_qmss_acc.c 6 7The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of 8the main hardware sub system which forms the backbone of the Keystone 9multi-core Navigator. QMSS consist of queue managers, packed-data structure 10processors(PDSP), linking RAM, descriptor pools and infrastructure 11Packet DMA. 12The Queue Manager is a hardware module that is responsible for accelerating 13management of the packet queues. Packets are queued/de-queued by writing or 14reading descriptor address to a particular memory mapped location. The PDSPs 15perform QMSS related functions like accumulation, QoS, or event management. 16Linking RAM registers are used to link the descriptors which are stored in 17descriptor RAM. Descriptor RAM is configurable as internal or external memory. 18The QMSS driver manages the PDSP setups, linking RAM regions, 19queue pool management (allocation, push, pop and notify) and descriptor 20pool management. 21 22knav qmss driver provides a set of APIs to drivers to open/close qmss queues, 23allocate descriptor pools, map the descriptors, push/pop to queues etc. For 24details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h 25 26DT documentation is available at 27Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt 28 29Accumulator QMSS queues using PDSP firmware 30============================================ 31The QMSS PDSP firmware support accumulator channel that can monitor a single 32queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the 33driver that interface with the accumulator PDSP. This configures 34accumulator channels defined in DTS (example in DT documentation) to monitor 351 or 32 queues per channel. More description on the firmware is available in 36CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at 37 git://git.ti.com/keystone-rtos/qmss-lld.git 38 39k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator 40channels. This firmware is available under ti-keystone folder of 41firmware.git at 42 git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git 43 44To use copy the firmware image to lib/firmware folder of the initramfs or 45ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin 46in the file system and boot up the kernel. User would see 47 48 "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP" 49 50in the boot up log if loading of firmware to PDSP is successful. 51 52Use of accumulated queues requires the firmware image to be present in the 53file system. The driver doesn't acc queues to the supported queue range if 54PDSP is not running in the SoC. The API call fails if there is a queue open 55request to an acc queue and PDSP is not running. So make sure to copy firmware 56to file system before using these queue types. 57