The SDK provides an API to configure the PHYs.
PHYs not covered by the SDK must be registered as described below. Be aware if the new PHY supports EtherCAT network. For more information refer to the Application Note –PHY Selection Guide on the EtherCAT home page.
#define PHY_TLK110_ID 0x2000A211
int16_t EC_SLV_APP_TLK110_phyLibDetect(void* pPhyLibCtxt_p, uint32_t phyId_p, EC_API_SLV_SPhyDescriptor_t* pPhyLibDesc_p)
{
int16_t retVal = -6;
if (phyId_p == PHY_TLK110_ID)
{
OSAL_printf("TLK110 detected\r\n");
pPhyLibDesc_p->softwareReset = EC_SLV_APP_TLK110_softwareReset;
pPhyLibDesc_p->softwareRestart = NULL;
pPhyLibDesc_p->enablePhyAutoMDIX = EC_SLV_APP_TLK110_enablePhyAutoMDIX;
pPhyLibDesc_p->setMiiMode = EC_SLV_APP_TLK110_setMIIMode;
pPhyLibDesc_p->setPowerMode = EC_SLV_APP_TLK110_powerMode;
pPhyLibDesc_p->getPowerMode = NULL;
pPhyLibDesc_p->configMLED = EC_SLV_APP_TLK110_mLEDConfig;
pPhyLibDesc_p->enableExtFD = EC_SLV_APP_TLK110_extFDEnable;
pPhyLibDesc_p->enableODDNibbleDet = EC_SLV_APP_TLK110_oDDNibbleDetEnable;
pPhyLibDesc_p->enableRxErrIdle = EC_SLV_APP_TLK110_rxErrIdleEnable;
pPhyLibDesc_p->configLed = EC_SLV_APP_TLK110_ledConfig;
pPhyLibDesc_p->configLedBlink = EC_SLV_APP_TLK110_ledBlinkConfig;
pPhyLibDesc_p->enableFastLinkDownDet = EC_SLV_APP_TLK110_fastLinkDownDetEnable;
pPhyLibDesc_p->enableFastRXDVDet = EC_SLV_APP_TLK110_fastRXDVDetEnable;
pPhyLibDesc_p->configSwStrapDone = EC_SLV_APP_TLK110_swStrapConfigDone;
pPhyLibDesc_p->setLinkConfig = NULL;
pPhyLibDesc_p->getAutoNegotiation = NULL;
pPhyLibDesc_p->setMdixMode = NULL;
pPhyLibDesc_p->getMdixMode = NULL;
pPhyLibDesc_p->disable1GbAdver = NULL;
pPhyLibDesc_p->enableRgmiiLowLatency = NULL;
pPhyLibDesc_p->rgmiiTxHalfFullThreshold = NULL;
pPhyLibDesc_p->rgmiiRxHalfFullThreshold = NULL;
retVal = 0;
}
return retVal;
}
void EC_API_SLV_cbRegisterPhyLibDetect(CUST_PHY_CBextPhyLibDetect_t cbFunc_p, void *pContext_p)
Register an application specific Phy Library.
Definition: ecSlvApi_BoardStub.c:163