GNU Linux-libre 5.15.137-gnu
[releases.git] / Documentation / arm / keystone / knav-qmss.rst
1 ======================================================================
2 Texas Instruments Keystone Navigator Queue Management SubSystem driver
3 ======================================================================
4
5 Driver source code path
6   drivers/soc/ti/knav_qmss.c
7   drivers/soc/ti/knav_qmss_acc.c
8
9 The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
10 the main hardware sub system which forms the backbone of the Keystone
11 multi-core Navigator. QMSS consist of queue managers, packed-data structure
12 processors(PDSP), linking RAM, descriptor pools and infrastructure
13 Packet DMA.
14 The Queue Manager is a hardware module that is responsible for accelerating
15 management of the packet queues. Packets are queued/de-queued by writing or
16 reading descriptor address to a particular memory mapped location. The PDSPs
17 perform QMSS related functions like accumulation, QoS, or event management.
18 Linking RAM registers are used to link the descriptors which are stored in
19 descriptor RAM. Descriptor RAM is configurable as internal or external memory.
20 The QMSS driver manages the PDSP setups, linking RAM regions,
21 queue pool management (allocation, push, pop and notify) and descriptor
22 pool management.
23
24 knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
25 allocate descriptor pools, map the descriptors, push/pop to queues etc. For
26 details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
27
28 DT documentation is available at
29 Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
30
31 Accumulator QMSS queues using PDSP firmware
32 ============================================
33 The QMSS PDSP firmware support accumulator channel that can monitor a single
34 queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
35 driver that interface with the accumulator PDSP. This configures
36 accumulator channels defined in DTS (example in DT documentation) to monitor
37 1 or 32 queues per channel. /*(DEBLOBBED)*/