Mauro Carvalho Chehab | dc7a12b | 2019-04-14 15:51:10 -0300 | [diff] [blame] | 1 | ====================================================================== |
| 2 | Texas Instruments Keystone Navigator Queue Management SubSystem driver |
| 3 | ====================================================================== |
Murali Karicheri | 29204a8 | 2015-10-13 13:49:04 -0700 | [diff] [blame] | 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 |
Murali Karicheri | 96ee19b | 2015-10-13 13:49:04 -0700 | [diff] [blame] | 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. More description on the firmware is available in |
| 38 | CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at |
Mauro Carvalho Chehab | dc7a12b | 2019-04-14 15:51:10 -0300 | [diff] [blame] | 39 | |
Murali Karicheri | 96ee19b | 2015-10-13 13:49:04 -0700 | [diff] [blame] | 40 | git://git.ti.com/keystone-rtos/qmss-lld.git |
| 41 | |
| 42 | k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator |
| 43 | channels. This firmware is available under ti-keystone folder of |
| 44 | firmware.git at |
Mauro Carvalho Chehab | dc7a12b | 2019-04-14 15:51:10 -0300 | [diff] [blame] | 45 | |
Murali Karicheri | 96ee19b | 2015-10-13 13:49:04 -0700 | [diff] [blame] | 46 | git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git |
| 47 | |
| 48 | To use copy the firmware image to lib/firmware folder of the initramfs or |
| 49 | ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin |
| 50 | in the file system and boot up the kernel. User would see |
| 51 | |
| 52 | "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP" |
| 53 | |
| 54 | in the boot up log if loading of firmware to PDSP is successful. |
Murali Karicheri | 0450169 | 2015-10-13 13:49:04 -0700 | [diff] [blame] | 55 | |
| 56 | Use of accumulated queues requires the firmware image to be present in the |
| 57 | file system. The driver doesn't acc queues to the supported queue range if |
| 58 | PDSP is not running in the SoC. The API call fails if there is a queue open |
| 59 | request to an acc queue and PDSP is not running. So make sure to copy firmware |
| 60 | to file system before using these queue types. |