/**************************************************************************** * Function: DRV_EXTPHY_WOLConfiguration * * PreCondition: EthInit and EthPhyInit should have been called. * * Input: hClientObj - A valid open-instance handle, returned from the driver's open routine * bAddr[] - Source Mac Address , or a Magic Packet MAC address * * Output: none * * * Side Effects: None * * Overview: Configure WOL for SMSC8740 with a Source MAC address or a 6 byte magic packet mac address. * wuFrame = Frame type need to be set. * * Note: None *****************************************************************************/ void DRV_EXTPHY_WOLConfiguration(DRV_HANDLE hClientObj,unsigned char bAddr[]) { unsigned char bAddr1[6] = {0x11,0x22,0x33,0x44,0x55,0x66}; //eWOL_WAKEUP_FRAME wuframe = REMOTE_WAKEUP_FRAME; eWOL_WAKEUP_FRAME wuframe = MAGIC_PKT_RECEIVED; // eWOL_WAKEUP_FRAME wuframe = BROADCAST_FRAME_RCVD; //eWOL_WAKEUP_FRAME wuframe = PERFECT_DA_FRAME; #if defined (HARMONY_INT) INT_SOURCE src = DRV_ETHPHY_INTERRUPT_SOURCE; #else SYS_INT_SOURCE src = SYS_INT_Source(SYS_MODULE_ETH_PHY); #endif DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,PERFECT_DA_FRAME); DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,MAGIC_PKT_RECEIVED); DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,REMOTE_WAKEUP_FRAME); DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,BROADCAST_FRAME_RCVD); DRV_EXTPHY_WOLMACAddressSet(hClientObj,bAddr1); if(wuframe == REMOTE_WAKEUP_FRAME) { DRV_EXTPHY_WOLWakeupFrameSetup(hClientObj,bAddr); } DRV_EXTPHY_WOLWakeUpFrameSet(hClientObj,wuframe); DRV_EXTPHY_WOLInterruptMaskSet(hClientObj,WOL_INT_ENABLED); DRV_EXTPHY_IntInit(hClientObj,src,3,0); }
static void LAN8740WOLIsr(void *p) { DRV_HANDLE hClientObj = (DRV_HANDLE)p; eWOL_WAKEUP_FRAME wuframe = REMOTE_WAKEUP_FRAME; //eWOL_WAKEUP_FRAME wuframe = MAGIC_PKT_RECEIVED; // eWOL_WAKEUP_FRAME wuframe = BROADCAST_FRAME_RCVD; //eWOL_WAKEUP_FRAME wuframe = PERFECT_DA_FRAME; bool wol_status; wol_status = DRV_EXTPHY_WOLWakeUpFrameRXStatusGet(hClientObj,wuframe); INT_SOURCE src = DRV_ETHPHY_INTERRUPT_SOURCE; LEDstate ^= SYS_USERIO_LED_ASSERTED; SYS_USERIO_SetLED(SYS_USERIO_LED_1, LEDstate); DRV_EXTPHY_WOLInterruptMaskSet(hClientObj,WOL_INT_DISABLED); // clear the WOL wake up frame DRV_EXTPHY_WOLWakeUpFrameClear(hClientObj,wuframe); SYS_INT_SourceDisable(src); }