Commit | Line | Data |
---|---|---|
29204a82 MK |
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 | |
96ee19be MK |
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. | |
04501690 MK |
51 | |
52 | Use of accumulated queues requires the firmware image to be present in the | |
53 | file system. The driver doesn't acc queues to the supported queue range if | |
54 | PDSP is not running in the SoC. The API call fails if there is a queue open | |
55 | request to an acc queue and PDSP is not running. So make sure to copy firmware | |
56 | to file system before using these queue types. |