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;
}