AM64x MCU+ SDK  08.02.00
Udma_RmSharedResPrms Struct Reference

Detailed Description

UDMA resource manager shared resource parameters.

Data Fields

uint32_t resId
 
uint32_t startResrvCnt
 
uint32_t endResrvCnt
 
uint32_t numInst
 
uint32_t minReq
 
uint32_t instShare [UDMA_RM_SHARED_RES_MAX_INST]
 

Field Documentation

◆ resId

uint32_t Udma_RmSharedResPrms::resId

UDMA Resource Id

◆ startResrvCnt

uint32_t Udma_RmSharedResPrms::startResrvCnt

No. of resources from the start left reserved and can't be used by UDMA Ex: Core Interrupts(IR Interrupts) used by IPC, CPSW9G etc

◆ endResrvCnt

uint32_t Udma_RmSharedResPrms::endResrvCnt

No. of resources from the end left reserved and can't be used by UDMA Ex: Core Interrupts(IR Interrupts) used by IPC, CPSW9G etc

◆ numInst

uint32_t Udma_RmSharedResPrms::numInst

No. of instances for which the available resources should be split. -This can be no. of UDMA Instances (UDMA_NUM_INST_ID) incase of resources like Gloable Events, IR Intr, VINT etc. -This can be no.of cores (UDMA_NUM_CORE) incase of splitting resources that are assigned TISCI_HOST_ID_ALL between different cores

◆ minReq

uint32_t Udma_RmSharedResPrms::minReq

Minimum no. of resources required per instance. This is validated with the unresrved number of resources. ie, UDMA Driver will return error (UDMA_EBADARGS) when: (numInst * minReq) > (total_num_res - startResrvCnt - endResrvCnt) where, total_num_res = range_num returned by Sciclient_rmGetResourceRange

For example, When numInst = 2; minReq = 50; range_num = 110; startResrvCnt = 10; endResrvCnt = 10;

no.of unreserved resources = 110-10-10 = 90 But, total requirment = minReq*numInst = 50*2 = 100 Since the requirment cant be met, UDMA Driver will return UDMA_EBADARGS

In this case either more no.of resources should be reserved in Sciclient_deafaultBoardCfg_rm.c OR Adjustments should be made in minReq/startResrvCnt/endResrvCnt.

◆ instShare

uint32_t Udma_RmSharedResPrms::instShare[UDMA_RM_SHARED_RES_MAX_INST]

No. of resources for each instance. This can be:

For example, When numInst = 4; minReq = 50; range_num = 410; startResrvCnt = 7; endResrvCnt = 3; (Here, no.of unreserved resources = 410-7-3 = 400)

Case 1: instShare[] = {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST, UDMA_RM_SHARED_RES_CNT_REST, 100U}

sum(instShare[]) = 50+50+50+100 = 250 This is less than no.of unreserved resources(400)

Therefore, final_share will be {50,125,125,100}

Case 2: instShare[] = {UDMA_RM_SHARED_RES_CNT_MIN, UDMA_RM_SHARED_RES_CNT_REST, 250U, 100U}

sum(instShare[]) = 50+50+250+100 = 450 Since this is greater than no.of unreserved resources(400), UDMA Driver will return UDMA_EINVALID_PARAMS