# qmss_qm.h File Reference

This is the Queue Manager module include file. More...

`#include <ti/csl/cslr_device.h>`
`#include <ti/csl/cslr_qm_config.h>`
`#include <ti/csl/cslr_qm_descriptor_region_config.h>`
`#include <ti/csl/cslr_qm_queue_management.h>`
`#include <ti/csl/cslr_qm_queue_status_config.h>`
`#include <ti/csl/cslr_pdsp.h>`
`#include <ti/csl/cslr_qm_intd.h>`
`#include <ti/csl/cslr_mcdma.h>`
`#include <ti/csl/cslr_cp_timer16.h>`
`#include <ti/csl/csl_qm_queue.h>`

## Data Structures

struct | Qmss_StartCfg
| QMSS start configuration structure. More...
struct | Qmss_Queue
| Queue definition. More...
struct | Qmss_QueueNumRange
| Queue definition. More...
struct | Qmss_DescCfg
| descriptor configuration structure More...
struct | Qmss_MemRegInfo
| Memory region configuration information structure. More...
struct | Qmss_MemRegCfg
| Memory region configuration information structure of all memory regions. More...
struct | Qmss_PdspCfg
| QMSS PDSP firmware download information structure. More...
struct | Qmss_InitCfg
| QMSS configuration structure. More...
struct | Qmss_GlobalConfigParams
| QMSS Global configuration structure definition. More...

## Defines

#define | QMSS_LINKING_RAM_OFFSET 0x80000
#define | QMSS_LINKING_RAM_REGION_0_DEFAULT_SIZE 0x3FFF
#define | QMSS_PARAM_NOT_SPECIFIED -1
#define | QMSS_HW_INIT_COMPLETE 0xABCD
#define | QMSS_SOK 0
#define | QMSS_LLD_EBASE (-128)
#define | QMSS_INVALID_PARAM QMSS_LLD_EBASE-1
#define | QMSS_NOT_INITIALIZED QMSS_LLD_EBASE-2
#define | QMSS_QUEUE_OPEN_ERROR QMSS_LLD_EBASE-3
#define | QMSS_MEMREGION_NOT_INITIALIZED QMSS_LLD_EBASE-4
#define | QMSS_MEMREGION_ALREADY_INITIALIZED QMSS_LLD_EBASE-5
#define | QMSS_MEMREGION_INVALID_PARAM QMSS_LLD_EBASE-6
#define | QMSS_MAX_DESCRIPTORS_CONFIGURED QMSS_LLD_EBASE-7
#define | QMSS_MEMREGION_INVALID_INDEX QMSS_LLD_EBASE-8
#define | QMSS_MEMREGION_OVERLAP QMSS_LLD_EBASE-9
#define | QMSS_MEMREGION_ORDERING QMSS_LLD_EBASE-10
#define | QMSS_FIRMWARE_DOWNLOAD_FAILED QMSS_LLD_EBASE-11
#define | QMSS_RESOURCE_INIT_DENIED QMSS_LLD_EBASE-12
#define | QMSS_RESOURCE_USE_DENIED QMSS_LLD_EBASE-13
#define | QMSS_RESOURCE_MEM_REGION_INIT_DENIED QMSS_LLD_EBASE-14
#define | QMSS_RESOURCE_MEM_REGION_USE_DENIED QMSS_LLD_EBASE-15
#define | QMSS_RESOURCE_LINKING_RAM_INIT_DENIED QMSS_LLD_EBASE-16
#define | QMSS_FIRMWARE_REVISION_DIFFERENCE QMSS_LLD_EBASE-17
#define | QMSS_MAX_MEM_REGIONS 20
#define | QMSS_DESC_PTR(desc) ((uint32_t)desc & 0xFFFFFFF0)
#define | QMSS_DESC_SIZE(desc) ((((uint32_t)desc & 0x0000000F) + 1) << 4)

## Typedefs

typedef void * | Qmss_RmHnd
| QMSS RM Handle.
typedef int32_t | Qmss_QueueHnd
| Queue handle.
typedef int32_t | Qmss_Result
| QMSS return result.
typedef uint32_t * | Qmss_QueuePushHnd
| Handle used in the "Fast Push" set of APIs.

## Enumerations

enum | Qmss_Location { Qmss_Location_TAIL = 0, Qmss_Location_HEAD }
| location where the packet is queued More...
enum | Qmss_ManageDesc { Qmss_ManageDesc_UNMANAGED_DESCRIPTOR = 0, Qmss_ManageDesc_MANAGE_DESCRIPTOR }
| Descriptor resource management. More...
enum | Qmss_MemRegion { Qmss_MemRegion_MEMORY_REGION_NOT_SPECIFIED = -1, Qmss_MemRegion_MEMORY_REGION0 = 0, Qmss_MemRegion_MEMORY_REGION1, Qmss_MemRegion_MEMORY_REGION2, Qmss_MemRegion_MEMORY_REGION3, Qmss_MemRegion_MEMORY_REGION4, Qmss_MemRegion_MEMORY_REGION5, Qmss_MemRegion_MEMORY_REGION6,
Qmss_MemRegion_MEMORY_REGION7, Qmss_MemRegion_MEMORY_REGION8, Qmss_MemRegion_MEMORY_REGION9, Qmss_MemRegion_MEMORY_REGION10,
Qmss_MemRegion_MEMORY_REGION11, Qmss_MemRegion_MEMORY_REGION12, Qmss_MemRegion_MEMORY_REGION13, Qmss_MemRegion_MEMORY_REGION14,
Qmss_MemRegion_MEMORY_REGION15, Qmss_MemRegion_MEMORY_REGION16, Qmss_MemRegion_MEMORY_REGION17, Qmss_MemRegion_MEMORY_REGION18,
Qmss_MemRegion_MEMORY_REGION19
}
| Queue Manager's memory regions. More...
enum | Qmss_PdspId { Qmss_PdspId_PDSP1 = 0, Qmss_PdspId_PDSP2 }
| PDSP ID. More...
enum | Qmss_IntdInterruptType { Qmss_IntdInterruptType_HIGH = 0, Qmss_IntdInterruptType_LOW, Qmss_IntdInterruptType_CDMA }
| INTD interrupt types. More...

## Functions

Qmss_Result | Qmss_init (Qmss_InitCfg *initCfg, Qmss_GlobalConfigParams *qmssGblCfgParams)
Qmss_Result | Qmss_start (void)
Qmss_Result | Qmss_startCfg (Qmss_StartCfg *startCfg)
Qmss_Result | Qmss_getMemoryRegionCfg (Qmss_MemRegCfg *memRegInfo)
Qmss_Result | Qmss_insertMemoryRegion (Qmss_MemRegInfo *memRegCfg)
Qmss_QueueHnd | Qmss_initDescriptor (Qmss_DescCfg *descCfg, uint32_t *numAllocated)
Qmss_QueueHnd | Qmss_queueOpen (Qmss_QueueType queType, int32_t queNum, uint8_t *isAllocated)
Qmss_QueueHnd | Qmss_queueOpenInRange (uint32_t startQueNum, uint32_t endQueNum, uint8_t *isAllocated)
Qmss_Result | Qmss_queueClose (Qmss_QueueHnd hnd)
uint32_t | Qmss_getQueueThreshold (Qmss_QueueHnd hnd)
Qmss_Result | Qmss_setQueueThreshold (Qmss_QueueHnd hnd, uint16_t hilo, uint8_t threshold)
uint32_t | Qmss_getStarvationCount (Qmss_QueueHnd hnd)
uint16_t | Qmss_getQueueThresholdStatus (Qmss_QueueHnd hnd)
Qmss_Queue | Qmss_getQueueNumber (Qmss_QueueHnd hnd)
Qmss_QueueHnd | Qmss_getQueueHandle (Qmss_Queue queue)
uint32_t | Qmss_getMemRegDescSize (uint32_t memRegion)
Qmss_Result | Qmss_downloadFirmware (Qmss_PdspId pdspId, void *image, uint32_t size)
Qmss_Result | Qmss_setEoiVector (Qmss_IntdInterruptType type, uint8_t accumCh)
Qmss_Result | Qmss_ackInterrupt (uint8_t interruptNum, uint8_t value)
uint32_t | Qmss_getVersion (void)
const char * | Qmss_getVersionStr (void)

## Detailed Description

This is the Queue Manager module include file.

  ============================================================================
  (C) Copyright 2009, Texas Instruments, Inc.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

Neither the name of Texas Instruments Incorporated nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

## Function Documentation

uint32_t Qmss_getMemRegDescSize | ( | uint32_t | memRegion | ) |

Description
The function returns size of the descriptors in the specified memory region.

This is for *internal* LLD usage.

Parameters:

  `[in]` | memRegion | Memory region number.

Return values:

  | Descriptor | size

Copyright 2012, Texas Instruments Incorporated