SPRADS6 March 2026 AM68A , AM69A , TDA4VM
The order ID of each C7x is configurable using the DRU queue configuration registers.
C7x Subsystem | Address | Register | Bits | Field | Description |
|---|---|---|---|---|---|
COMPUTE_CLUSTER0_C71SS0 | 0x68A08000 + (j * 8); where j = 0 to 6 | DRU_QUEUE_cfg_j | 7:4 | ORDERID | This configures the order ID for QUEUE. |
COMPUTE_CLUSTER0_C71SS1 | 0x69A08000 + (j * 8); where j = 0 to 6 | DRU_QUEUE_cfg_j | 7:4 | ORDERID | This configures the order ID for QUEUE. |
COMPUTE_CLUSTER0_C71SS2 | 0x6AA08000 + (j * 8); where j = 0 to 6 | DRU_QUEUE_cfg_j | 7:4 | ORDERID | This configures the order ID for QUEUE. |
COMPUTE_CLUSTER0_C71SS3 | 0x6BA08000 + (j * 8); where j = 0 to 6 | DRU_QUEUE_cfg_j | 7:4 | ORDERID | This configures the order ID for QUEUE. |
...
/* DRU configuration */
uint32_t gDruQoS_Enable = 1;
uint32_t gQoS_DRU_Priority = 3;
uint32_t gQoS_DRU_OrderID = 0;
void setup_dru_qos(void)
{
uint64_t DRU_BASE = CSL_COMPUTE_CLUSTER0_MMR_DRU7_MMR_CFG_DRU_BASE;
volatile uint64_t* queue0CFG = (uint64_t*)(DRU_BASE + 0x8000);
if(gQoS_DRU_Priority > 7 || (gDruQoS_Enable == 0))
{
gQoS_DRU_Priority = 0;
}
if(gQoS_DRU_OrderID > 15 || (gDruQoS_Enable == 0))
{
gQoS_DRU_OrderID = 0;
}
uint64_t queue0CFG_VAL = 0x0;
queue0CFG_VAL |= ((uint64_t)gQoS_DRU_OrderID)<<4;
queue0CFG_VAL |= ((uint64_t)gQoS_DRU_Priority);
*queue0CFG = queue0CFG_VAL;
}
...