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