Lines Matching defs:p_FmPcd

52 static t_Error WriteKgarWait(t_FmPcd *p_FmPcd, uint32_t kgar)
54 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar, kgar);
56 while ((kgar = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgar)) & FM_PCD_KG_KGAR_GO) ;
650 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
661 intFlags = FmPcdLock(p_FmPcd);
665 if(!p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used)
669 FmPcdUnlock(p_FmPcd, intFlags);
672 p_FmPcd->p_FmPcdKg->clsPlanGrps[i].used = TRUE;
676 p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = (uint8_t)i;
678 if (!TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock))
680 FmPcdUnlock(p_FmPcd, intFlags);
683 FmPcdUnlock(p_FmPcd, intFlags);
685 p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[i];
688 FmPcdSetClsPlanGrpId(p_FmPcd, p_Grp->netEnvId, p_Grp->clsPlanGrpId);
689 FmPcdIncNetEnvOwners(p_FmPcd, p_Grp->netEnvId);
695 if(p_FmPcd->guestId == NCSW_MASTER_ID)
697 err = KgAllocClsPlanEntries(h_FmPcd, p_ClsPlanGrp->sizeOfGrp, p_FmPcd->guestId, &p_ClsPlanGrp->baseEntry);
701 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock);
716 kgAlloc.guestId = p_FmPcd->guestId;
721 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession,
729 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock);
735 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock);
740 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock);
795 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->clsPlanGrps[p_Grp->clsPlanGrpId].lock);
802 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
810 if(p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].owners)
816 FmPcdDecNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].netEnvId);
819 if(p_FmPcd->guestId == NCSW_MASTER_ID)
822 p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp,
823 p_FmPcd->guestId,
824 p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry);
830 kgAlloc.guestId = p_FmPcd->guestId;
831 kgAlloc.numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].sizeOfGrp;
832 kgAlloc.clsPlanBase = p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId].baseEntry;
836 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession,
859 if(grpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId)
860 p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId = ILLEGAL_CLS_PLAN;
862 memset(&p_FmPcd->p_FmPcdKg->clsPlanGrps[grpId], 0, sizeof(t_FmPcdKgClsPlanGrp));
867 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
874 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
875 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
876 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE);
881 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, p_BindPort->schemesIds[i]);
890 p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId];
901 ASSERT_COND(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].h_FmPort);
902 if(p_Scheme->relativeProfileId+j >= p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].numOfProfiles)
904 if(!FmPcdPlcrIsProfileValid(p_FmPcd, (uint16_t)(p_FmPcd->p_FmPcdPlcr->portsMapping[swPortIndex].profilesBase + p_Scheme->relativeProfileId + j)))
924 if(!PcdNetEnvIsUnitWithoutOpts(p_FmPcd, p_Scheme->netEnvId, walking1Mask))
943 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
950 p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]];
959 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
966 p_Scheme = &p_FmPcd->p_FmPcdKg->schemes[p_BindPort->schemesIds[i]];
974 static t_Error KgWriteSp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t spReg, bool add)
980 if (p_FmPcd->h_Hc)
981 return FmHcKgWriteSp(p_FmPcd->h_Hc, hardwarePortId, spReg, add);
983 p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs;
986 intFlags = FmPcdLock(p_FmPcd);
987 err = WriteKgarWait(p_FmPcd, tmpKgarReg);
990 FmPcdUnlock(p_FmPcd, intFlags);
1005 err = WriteKgarWait(p_FmPcd, tmpKgarReg);
1006 FmPcdUnlock(p_FmPcd, intFlags);
1010 static t_Error KgWriteCpp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint32_t cppReg)
1016 if (p_FmPcd->h_Hc)
1017 return FmHcKgWriteCpp(p_FmPcd->h_Hc, hardwarePortId, cppReg);
1019 p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs;
1020 intFlags = FmPcdLock(p_FmPcd);
1024 err = WriteKgarWait(p_FmPcd, tmpKgarReg);
1025 FmPcdUnlock(p_FmPcd, intFlags);
1030 static void FmPcdKgUnbindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId)
1032 KgWriteCpp(p_FmPcd, hardwarePortId, 0);
1035 static t_Error KgBindPortToClsPlanGrp(t_FmPcd *p_FmPcd, uint8_t hardwarePortId, uint8_t clsPlanGrpId)
1039 tmpKgpeCpp = FmPcdKgBuildCppReg(p_FmPcd, clsPlanGrpId);
1040 return KgWriteCpp(p_FmPcd, hardwarePortId, tmpKgpeCpp);
1045 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1053 err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, TRUE);
1064 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1072 err = KgWriteSp(p_FmPcd, p_SchemeBind->hardwarePortId, spReg, FALSE);
1083 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1085 return p_FmPcd->p_FmPcdKg->schemes[schemeId].valid;
1090 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1092 if(p_FmPcd->p_FmPcdKg->schemes[schemeId].matchVector == SCHEME_ALWAYS_DIRECT)
1100 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1104 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
1105 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
1107 intFlags = FmPcdLock(p_FmPcd);
1110 if(!p_FmPcd->p_FmPcdKg->schemesMng[i].allocated)
1112 p_FmPcd->p_FmPcdKg->schemesMng[i].allocated = TRUE;
1113 p_FmPcd->p_FmPcdKg->schemesMng[i].ownerId = guestId;
1124 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].allocated = FALSE;
1125 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[j]].ownerId = 0;
1128 FmPcdUnlock(p_FmPcd, intFlags);
1131 FmPcdUnlock(p_FmPcd, intFlags);
1138 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1142 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
1143 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
1145 intFlags = FmPcdLock(p_FmPcd);
1149 if(!p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated)
1151 FmPcdUnlock(p_FmPcd, intFlags);
1154 if(p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId != guestId)
1156 FmPcdUnlock(p_FmPcd, intFlags);
1159 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].allocated = FALSE;
1160 p_FmPcd->p_FmPcdKg->schemesMng[p_SchemesIds[i]].ownerId = 0;
1163 FmPcdUnlock(p_FmPcd, intFlags);
1169 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1174 intFlags = FmPcdLock(p_FmPcd);
1178 FmPcdUnlock(p_FmPcd, intFlags);
1184 FmPcdUnlock(p_FmPcd, intFlags);
1194 if(!p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated)
1214 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].allocated = TRUE;
1215 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[j].ownerId = guestId;
1217 FmPcdUnlock(p_FmPcd, intFlags);
1223 FmPcdUnlock(p_FmPcd, intFlags);
1230 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1237 intFlags = FmPcdLock(p_FmPcd);
1245 ASSERT_COND(p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated);
1246 ASSERT_COND(guestId == p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId);
1247 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].allocated = FALSE;
1248 p_FmPcd->p_FmPcdKg->clsPlanBlocksMng[i].ownerId = 0;
1250 FmPcdUnlock(p_FmPcd, intFlags);
1253 void KgEnable(t_FmPcd *p_FmPcd)
1255 t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs;
1257 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm));
1261 void KgDisable(t_FmPcd *p_FmPcd)
1263 t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs;
1265 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm));
1271 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1276 SANITY_CHECK_RETURN(p_FmPcd, E_INVALID_HANDLE);
1277 SANITY_CHECK_RETURN(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
1279 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm));
1280 p_FmPcdKgPortRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs;
1282 intFlags = FmPcdLock(p_FmPcd);
1293 if(WriteKgarWait(p_FmPcd, tmpKgarReg) != E_OK)
1299 FmPcdUnlock(p_FmPcd, intFlags);
1304 t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd;
1307 ASSERT_COND(FmIsMaster(p_FmPcd->h_Fm));
1308 event = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer);
1309 mask = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeeer);
1311 schemeIndexes = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer);
1312 schemeIndexes &= GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseeer);
1317 force = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer);
1319 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgfeer, force & ~event);
1321 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgeer, event);
1322 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->kgseer, schemeIndexes);
1325 p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_DOUBLE_ECC);
1333 p_FmPcd->f_FmPcdIndexedException(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW, (uint16_t)(31 - index));
1339 p_FmPcd->f_Exception(p_FmPcd->h_App,e_FM_PCD_KG_EXCEPTION_KEYSIZE_OVERFLOW);
1343 static t_Error KgInitGuest(t_FmPcd *p_FmPcd)
1351 ASSERT_COND(p_FmPcd->guestId != NCSW_MASTER_ID);
1357 kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes;
1358 kgAlloc.guestId = p_FmPcd->guestId;
1361 replyLength = sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t);
1362 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession,
1370 if(replyLength != (sizeof(uint32_t) + p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t)))
1372 memcpy(p_FmPcd->p_FmPcdKg->schemesIds, (uint8_t*)(reply.replyBody),p_FmPcd->p_FmPcdKg->numOfSchemes*sizeof(uint8_t));
1377 static t_Error KgInitMaster(t_FmPcd *p_FmPcd)
1380 t_FmPcdKgRegs *p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs;
1385 ASSERT_COND(p_FmPcd->guestId == NCSW_MASTER_ID);
1393 if(p_FmPcd->exceptions & FM_PCD_EX_KG_DOUBLE_ECC)
1395 FmEnableRamsEcc(p_FmPcd->h_Fm);
1398 if(p_FmPcd->exceptions & FM_PCD_EX_KG_KEYSIZE_OVERFLOW)
1420 FmRegisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR, PcdKgErrorException, p_FmPcd);
1427 err = KgWriteSp(p_FmPcd, hardwarePortId, 0xffffffff, FALSE);
1431 err = KgWriteCpp(p_FmPcd, hardwarePortId, 0);
1440 if(p_FmPcd->p_FmPcdKg->numOfSchemes)
1442 err = FmPcdKgAllocSchemes(p_FmPcd,
1443 p_FmPcd->p_FmPcdKg->numOfSchemes,
1444 p_FmPcd->guestId,
1445 p_FmPcd->p_FmPcdKg->schemesIds);
1459 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1462 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
1463 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER);
1464 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER);
1465 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER);
1467 p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs;
1468 if(!FmIsMaster(p_FmPcd->h_Fm))
1483 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1486 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
1488 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_NULL_POINTER);
1489 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_NULL_POINTER);
1490 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, E_NULL_POINTER);
1492 p_Regs = p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs;
1494 if(!FmIsMaster(p_FmPcd->h_Fm))
1507 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
1516 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
1517 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
1518 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE);
1520 if(p_FmPcd->guestId != NCSW_MASTER_ID)
1524 return XX_IpcSendMessage(p_FmPcd->h_IpcSession,
1533 DUMP_TITLE(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs, ("FmPcdKgRegs Regs"));
1535 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggcr);
1536 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeer);
1537 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgeeer);
1538 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseer);
1539 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgseeer);
1540 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggsr);
1541 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgtpc);
1542 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgserc);
1543 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfdor);
1544 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv0r);
1545 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kggdv1r);
1546 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfer);
1547 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgfeer);
1548 DUMP_VAR(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs,kgar);
1551 intFlags = FmPcdLock(p_FmPcd);
1555 if(WriteKgarWait(p_FmPcd, tmpKgarReg) != E_OK)
1558 DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs, ("FmPcdKgIndirectAccessSchemeRegs Scheme %d Regs", j));
1560 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mode);
1561 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekfc);
1562 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ekdv);
1563 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmch);
1564 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_bmcl);
1565 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_fqb);
1566 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_hc);
1567 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ppc);
1569 DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec, ("kgse_gec"));
1572 DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_gec[i], sizeof(uint32_t));
1575 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_spc);
1576 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv0);
1577 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_dv1);
1578 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_ccbs);
1579 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs,kgse_mv);
1589 err = WriteKgarWait(p_FmPcd, tmpKgarReg);
1593 DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, ("FmPcdKgIndirectAccessPortRegs PCD Port %d regs", hardwarePortId));
1595 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_sp);
1596 DUMP_VAR(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.portRegs, kgoe_cpp);
1602 DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs, ("FmPcdKgIndirectAccessClsPlanRegs Regs group %d", j));
1603 DUMP_TITLE(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe, ("kgcpe"));
1606 err = WriteKgarWait(p_FmPcd, tmpKgarReg);
1610 DUMP_MEMORY(&p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.clsPlanRegs.kgcpe[i], sizeof(uint32_t));
1612 FmPcdUnlock(p_FmPcd, intFlags);
1618 t_Handle KgConfig( t_FmPcd *p_FmPcd, t_FmPcdParams *p_FmPcdParams)
1622 UNUSED(p_FmPcd);
1639 if(FmIsMaster(p_FmPcd->h_Fm))
1642 p_FmPcd->exceptions |= DEFAULT_fmPcdKgErrorExceptions;
1646 if((p_FmPcd->guestId == NCSW_MASTER_ID) && !p_FmPcdKg->numOfSchemes)
1657 t_Error KgInit(t_FmPcd *p_FmPcd)
1659 if (p_FmPcd->guestId == NCSW_MASTER_ID)
1660 return KgInitMaster(p_FmPcd);
1662 return KgInitGuest(p_FmPcd);
1665 t_Error KgFree(t_FmPcd *p_FmPcd)
1673 FmUnregisterIntr(p_FmPcd->h_Fm, e_FM_MOD_KG, 0, e_FM_INTR_TYPE_ERR);
1675 if(p_FmPcd->guestId == NCSW_MASTER_ID)
1676 return FmPcdKgFreeSchemes(p_FmPcd,
1677 p_FmPcd->p_FmPcdKg->numOfSchemes,
1678 p_FmPcd->guestId,
1679 p_FmPcd->p_FmPcdKg->schemesIds);
1684 kgAlloc.numOfSchemes = p_FmPcd->p_FmPcdKg->numOfSchemes;
1685 kgAlloc.guestId = p_FmPcd->guestId;
1687 memcpy(kgAlloc.schemesIds, p_FmPcd->p_FmPcdKg->schemesIds , (sizeof(uint8_t))*kgAlloc.numOfSchemes);
1691 if ((err = XX_IpcSendMessage(p_FmPcd->h_IpcSession,
1707 t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd;
1737 if (p_FmPcd->h_Hc)
1740 err = FmHcPcdKgSetClsPlan(p_FmPcd->h_Hc, p_ClsPlanSet);
1749 KgSetClsPlan(p_FmPcd, p_ClsPlanSet);
1755 if(*p_ClsPlanGrpId == p_FmPcd->p_FmPcdKg->emptyClsPlanGrpId)
1760 p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId];
1766 memcpy(p_OptArray, &p_FmPcd->p_FmPcdKg->clsPlanGrps[*p_ClsPlanGrpId].optArray, FM_PCD_MAX_NUM_OF_OPTIONS(FM_PCD_MAX_NUM_OF_CLS_PLANS)*sizeof(protocolOpt_t));
1769 err = KgBindPortToClsPlanGrp(p_FmPcd, hardwarePortId, p_GrpParams->clsPlanGrpId);
1778 t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd;
1779 t_FmPcdKgClsPlanGrp *p_ClsPlanGrp = &p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId];
1782 FmPcdKgUnbindPortToClsPlanGrp(p_FmPcd, hardwarePortId);
1790 if (p_FmPcd->h_Hc)
1791 return FmHcPcdKgDeleteClsPlan(p_FmPcd->h_Hc, clsPlanGrpId);
1799 p_ClsPlanSet->baseEntry = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry;
1800 p_ClsPlanSet->numOfClsPlanEntries = p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp;
1801 KgSetClsPlan(p_FmPcd, p_ClsPlanSet);
1811 t_FmPcd *p_FmPcd = (t_FmPcd *)h_FmPcd;
1836 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, (uint8_t)(PTR_TO_UINT(p_Scheme->id.h_Scheme)-1));
1838 memset(&p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId], 0, sizeof(t_FmPcdKgScheme));
1849 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId =
1851 netEnvParams.netEnvId = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId;
1854 err = PcdGetUnitsVector(p_FmPcd, &netEnvParams);
1857 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = netEnvParams.vector;
1861 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector = SCHEME_ALWAYS_DIRECT;
1862 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId = ILLEGAL_NETENV;
1874 FM_GetRevision(p_FmPcd->h_Fm, &revInfo);
1889 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr = direct;
1914 FM_GetRevision(p_FmPcd->h_Fm, &revInfo);
1926 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].ccUnits = grpBits;
1963 if(!FmPcdPlcrIsProfileValid(p_FmPcd, profileId))
1965 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId;
1970 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile = TRUE;
1971 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId = profileId;
1972 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].numOfProfiles = numOfProfiles;
2068 p_SchemeRegs->kgse_mv = p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].matchVector;
2184 p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP);
2205 p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP);
2212 p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP);
2230 p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP);
2237 p_Extract->extractByHdr.hdr = FmPcdGetAliasHdr(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].netEnvId, HEADER_TYPE_UDP_ENCAP_ESP);
2421 p_LocalExtractsArray->extractsArray[p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1]].id))
2423 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] =
2424 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j-1];
2427 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[j] = (uint8_t)i;
2435 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].orderedArray[idx]= (uint8_t)i;
2470 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs = TRUE;
2559 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile = p_ExtractOr->bitOffsetInPlcrProfile;
2584 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine = p_Scheme->nextEngine;
2585 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction = p_Scheme->kgNextEngineParams.doneAction;
2591 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2593 ASSERT_COND(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2595 if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV)
2596 FmPcdIncNetEnvOwners(p_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId);
2597 p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = TRUE;
2603 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2605 if(p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId != ILLEGAL_NETENV)
2606 FmPcdDecNetEnvOwners(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[schemeId].netEnvId);
2607 p_FmPcd->p_FmPcdKg->schemes[schemeId].valid = FALSE;
2612 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2613 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2615 return p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction;
2620 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2622 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2624 return p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners;
2629 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2631 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2633 return p_FmPcd->p_FmPcdKg->schemes[schemeId].directPlcr;
2639 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2641 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2643 return p_FmPcd->p_FmPcdKg->schemes[schemeId].relativeProfileId;
2649 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2651 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2653 if((p_FmPcd->p_FmPcdKg->schemes[schemeId].extractedOrs &&
2654 p_FmPcd->p_FmPcdKg->schemes[schemeId].bitOffsetInPlcrProfile) ||
2655 p_FmPcd->p_FmPcdKg->schemes[schemeId].nextRelativePlcrProfile)
2663 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2665 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2668 p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners++;
2670 p_FmPcd->p_FmPcdKg->schemes[schemeId].pointedOwners--;
2675 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2677 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2679 return p_FmPcd->p_FmPcdKg->schemes[schemeId].nextEngine;
2684 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2686 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2688 return p_FmPcd->p_FmPcdKg->schemes[schemeId].doneAction;
2693 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2695 ASSERT_COND(p_FmPcd->p_FmPcdKg->schemes[schemeId].valid);
2697 p_FmPcd->p_FmPcdKg->schemes[schemeId].requiredAction = requiredAction;
2702 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2708 if(p_FmPcd->p_FmPcdKg->schemes[schemeId].owners)
2710 if(!p_FmPcd->p_FmPcdKg->schemes[schemeId].valid)
2717 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2720 tmpKgpeCpp = (uint32_t)(p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].baseEntry / 8);
2721 tmpKgpeCpp |= (uint32_t)(((p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrpId].sizeOfGrp / 8) - 1) << FM_PCD_KG_PE_CPP_MASK_SHIFT);
2816 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2818 return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].baseEntry;
2823 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2825 return p_FmPcd->p_FmPcdKg->clsPlanGrps[clsPlanGrp].sizeOfGrp;
2830 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2833 for(i=0;i<p_FmPcd->p_FmPcdKg->numOfSchemes;i++)
2834 if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeHwId)
2836 ASSERT_COND(i!=p_FmPcd->p_FmPcdKg->numOfSchemes);
2852 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2855 for(i = 0;i<p_FmPcd->p_FmPcdKg->numOfSchemes;i++)
2856 if(p_FmPcd->p_FmPcdKg->schemesIds[i] == schemeId)
2859 if(i == p_FmPcd->p_FmPcdKg->numOfSchemes)
2867 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2873 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0);
2874 SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0);
2876 if (p_FmPcd->h_Hc)
2877 return FmHcPcdKgCcGetSetParams(p_FmPcd->h_Hc, h_Scheme, requiredAction);
2881 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId);
2885 if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE))
2888 if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners ||
2889 !(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction & requiredAction))
2893 switch(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextEngine)
2896 if(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].doneAction == e_FM_PCD_ENQ_FRAME)
2899 intFlags = FmPcdLock(p_FmPcd);
2900 WriteKgarWait(p_FmPcd, tmpKgarReg);
2901 if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN))
2903 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
2906 tmpReg32 = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode);
2908 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, tmpReg32 | NIA_BMI_AC_ENQ_FRAME_WITHOUT_DMA);
2911 WriteKgarWait(p_FmPcd, tmpKgarReg);
2912 FmPcdUnlock(p_FmPcd, intFlags);
2916 if(!p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].directPlcr ||
2917 (p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].extractedOrs &&
2918 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].bitOffsetInPlcrProfile) ||
2919 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].nextRelativePlcrProfile)
2921 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
2924 err = FmPcdPlcrCcGetSetParams(h_FmPcd, p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].relativeProfileId, requiredAction);
2927 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
2936 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].pointedOwners += 1;
2937 p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].requiredAction |= requiredAction;
2939 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
2945 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2949 ans = TRY_LOCK(NULL, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock);
2951 ans = TRY_LOCK(p_FmPcd->h_Spinlock, &p_FmPcd->p_FmPcdKg->schemes[schemeId].lock);
2964 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
2974 SANITY_CHECK_RETURN_VALUE(p_FmPcd, E_INVALID_HANDLE, NULL);
2975 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, NULL);
2976 SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, NULL);
2978 if (p_FmPcd->h_Hc)
2979 return FmHcPcdKgSetScheme(p_FmPcd->h_Hc, p_Scheme);
2985 if(p_Scheme->id.relativeSchemeId >= p_FmPcd->p_FmPcdKg->numOfSchemes)
2992 if (FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE))
2995 physicalSchemeId = p_FmPcd->p_FmPcdKg->schemesIds[relativeSchemeId];
2999 intFlags = FmPcdLock(p_FmPcd);
3000 WriteKgarWait(p_FmPcd, tmpKgarReg);
3001 tmpReg = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode);
3002 FmPcdUnlock(p_FmPcd, intFlags);
3008 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
3016 intFlags = FmPcdLock(p_FmPcd);
3018 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId);
3024 FmPcdUnlock(p_FmPcd, intFlags);
3028 err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, TRUE);
3029 FmPcdUnlock(p_FmPcd, intFlags);
3039 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
3044 p_MemRegs = &p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs;
3045 intFlags = FmPcdLock(p_FmPcd);
3065 WriteKgarWait(p_FmPcd, tmpKgarReg);
3066 FmPcdUnlock(p_FmPcd, intFlags);
3070 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
3077 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
3083 SANITY_CHECK_RETURN_ERROR(p_FmPcd, E_INVALID_HANDLE);
3084 SANITY_CHECK_RETURN_ERROR(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE);
3085 SANITY_CHECK_RETURN_ERROR(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE);
3087 if (p_FmPcd->h_Hc)
3088 return FmHcPcdKgDeleteScheme(p_FmPcd->h_Hc, h_Scheme);
3091 relativeSchemeId = FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId);
3096 if ((err = FmPcdKgSchemeTryLock(p_FmPcd, relativeSchemeId, FALSE)) != E_OK)
3104 intFlags = FmPcdLock(p_FmPcd);
3106 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode, 0);
3111 WriteKgarWait(p_FmPcd, tmpKgarReg);
3112 FmPcdUnlock(p_FmPcd, intFlags);
3116 RELEASE_LOCK(p_FmPcd->p_FmPcdKg->schemes[relativeSchemeId].lock);
3123 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
3128 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0);
3129 SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0);
3131 if (p_FmPcd->h_Hc)
3132 return FmHcPcdKgGetSchemeCounter(p_FmPcd->h_Hc, h_Scheme);
3136 if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES)
3140 intFlags = FmPcdLock(p_FmPcd);
3141 WriteKgarWait(p_FmPcd, tmpKgarReg);
3142 if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN))
3144 spc = GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc);
3145 FmPcdUnlock(p_FmPcd, intFlags);
3152 t_FmPcd *p_FmPcd = (t_FmPcd*)h_FmPcd;
3157 SANITY_CHECK_RETURN_VALUE(p_FmPcd->p_FmPcdKg, E_INVALID_HANDLE, 0);
3158 SANITY_CHECK_RETURN_VALUE(!p_FmPcd->p_FmPcdDriverParam, E_INVALID_STATE, 0);
3160 if (p_FmPcd->h_Hc)
3161 return FmHcPcdKgSetSchemeCounter(p_FmPcd->h_Hc, h_Scheme, value);
3165 if(FmPcdKgGetRelativeSchemeId(p_FmPcd, physicalSchemeId) == FM_PCD_KG_NUM_OF_SCHEMES)
3170 intFlags = FmPcdLock(p_FmPcd);
3171 WriteKgarWait(p_FmPcd, tmpKgarReg);
3172 if (!(GET_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_mode) & KG_SCH_MODE_EN))
3174 FmPcdUnlock(p_FmPcd, intFlags);
3179 WRITE_UINT32(p_FmPcd->p_FmPcdKg->p_FmPcdKgRegs->indirectAccessRegs.schemeRegs.kgse_spc, value);
3184 WriteKgarWait(p_FmPcd, tmpKgarReg);
3185 FmPcdUnlock(p_FmPcd, intFlags);