Back to home page

OSCL-LXR

 
 

    


0001 ======================================================================
0002 Texas Instruments Keystone Navigator Queue Management SubSystem driver
0003 ======================================================================
0004 
0005 Driver source code path
0006   drivers/soc/ti/knav_qmss.c
0007   drivers/soc/ti/knav_qmss_acc.c
0008 
0009 The QMSS (Queue Manager Sub System) found on Keystone SOCs is one of
0010 the main hardware sub system which forms the backbone of the Keystone
0011 multi-core Navigator. QMSS consist of queue managers, packed-data structure
0012 processors(PDSP), linking RAM, descriptor pools and infrastructure
0013 Packet DMA.
0014 The Queue Manager is a hardware module that is responsible for accelerating
0015 management of the packet queues. Packets are queued/de-queued by writing or
0016 reading descriptor address to a particular memory mapped location. The PDSPs
0017 perform QMSS related functions like accumulation, QoS, or event management.
0018 Linking RAM registers are used to link the descriptors which are stored in
0019 descriptor RAM. Descriptor RAM is configurable as internal or external memory.
0020 The QMSS driver manages the PDSP setups, linking RAM regions,
0021 queue pool management (allocation, push, pop and notify) and descriptor
0022 pool management.
0023 
0024 knav qmss driver provides a set of APIs to drivers to open/close qmss queues,
0025 allocate descriptor pools, map the descriptors, push/pop to queues etc. For
0026 details of the available APIs, please refers to include/linux/soc/ti/knav_qmss.h
0027 
0028 DT documentation is available at
0029 Documentation/devicetree/bindings/soc/ti/keystone-navigator-qmss.txt
0030 
0031 Accumulator QMSS queues using PDSP firmware
0032 ============================================
0033 The QMSS PDSP firmware support accumulator channel that can monitor a single
0034 queue or multiple contiguous queues. drivers/soc/ti/knav_qmss_acc.c is the
0035 driver that interface with the accumulator PDSP. This configures
0036 accumulator channels defined in DTS (example in DT documentation) to monitor
0037 1 or 32 queues per channel. More description on the firmware is available in
0038 CPPI/QMSS Low Level Driver document (docs/CPPI_QMSS_LLD_SDS.pdf) at
0039 
0040         git://git.ti.com/keystone-rtos/qmss-lld.git
0041 
0042 k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin firmware supports upto 48 accumulator
0043 channels. This firmware is available under ti-keystone folder of
0044 firmware.git at
0045 
0046    git://git.kernel.org/pub/scm/linux/kernel/git/firmware/linux-firmware.git
0047 
0048 To use copy the firmware image to lib/firmware folder of the initramfs or
0049 ubifs file system and provide a sym link to k2_qmss_pdsp_acc48_k2_le_1_0_0_9.bin
0050 in the file system and boot up the kernel. User would see
0051 
0052  "firmware file ks2_qmss_pdsp_acc48.bin downloaded for PDSP"
0053 
0054 in the boot up log if loading of firmware to PDSP is successful.
0055 
0056 Use of accumulated queues requires the firmware image to be present in the
0057 file system. The driver doesn't acc queues to the supported queue range if
0058 PDSP is not running in the SoC. The API call fails if there is a queue open
0059 request to an acc queue and PDSP is not running. So make sure to copy firmware
0060 to file system before using these queue types.