QMSS Low Level Driver Documentation

02.01.00.08

The QMSS LLD supplies APIs to manage the Queue Manager subsystems within Keystone SoCs. It provides configuration APIs which typically involve Qmss_initSubSys (or Qmss_init) on a master core, and Qmss_startSubSysCfg (or Qmss_start or Qmss_startCfg) on the other cores. Qmss_initSubSys and Qmss_startSubSysCfg are run once per subsystem on the device, and return the Qmss_SubSysHnd used to refer to the subsystem in other APIs.

Next, descriptor regions are created using Qmss_insertMemoryRegionSubSys (or Qmss_insertMemoryRegion).

Next, descriptors are set up for DMAs using Cppi_initDescriptor or can be used as-is for software use only.

Single queues are allocated using Qmss_queueOpenSubSys (or Qmss_queueOpen). Contiguous blocks of queues are opened with Qmss_queueBlockOpenSubSys (or Qmss_queueBlockOpen).

Data transactions with virtual/physical address translation is are performed using Qmss_queuePush, Qmss_queuePushDesc, Qmss_queuePushDescSize, Qmss_queuePop, and Qmss_queuePopDescSize) depending whether sizes of the descriptors or payloads need to be set.

Data transactions that don't have virtual/physical address translation required is performed through Qmss_queuePopRaw and Qmss_queuePushDescSizeRaw.

Finally the QMSS LLD supplies APIs to control firmware running on PDSPs that support features like interrupt accumulation (see qmss_acc.h) and traffic shaping (QoS) (see qmss_qosSched.h qmss_qos.h).

Note on backwards/forwards compatibility strategy.

All APIs which contain "SubSys" in the name can address all QMSS subsystems on the device. Those APIs which do not have "SubSys" in the name nor take a Qmss_SubSysHnd nor a Qmss_QueueHnd can only address the global QMSS subsystem on the device.

There is no plan to deprecate the versions without "SubSys" in the name.


Copyright 2014, Texas Instruments Incorporated