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] |
uint32_t Udma_RmSharedResPrms::resId |
UDMA Resource Id
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
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
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
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.
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