\r
#define PHY_SPEED_FDUPLX 0x0010 /* Full Duplex */\r
#define PHY_SPEED_100 0x0008 /* 100Mbit */\r
-#define ETHDEV_PHY_DEF_ADR 0x0100 /* Default PHY device address */\r
+\r
\r
#ifndef configEMAC_INTERRUPT_PRIORITY\r
#define configEMAC_INTERRUPT_PRIORITY 5\r
* parameters.\r
*/\r
static long prvSetupLinkStatus( void );\r
-/*\r
- * Send lValue to the lPhyReg within the PHY.\r
- */\r
-static long prvWritePHY( long lPhyReg, long lValue );\r
-/*\r
- * Read a value from ucPhyReg within the PHY. *plStatus will be set to\r
- * pdFALSE if there is an error.\r
- */\r
-static unsigned short prvReadPHY( unsigned int ucPhyReg, NyLPC_TBool* o_status);\r
+\r
+\r
\r
\r
static NyLPC_TBool start(const struct NyLPC_TEthAddr* i_eth_addr,NyLPC_TiEthernetDevice_onEvent i_handler,void* i_param);\r
//Reset MCU Interface. and wait for reset.\r
prvSetupEMACHardware();\r
//Check peripheral name\r
- ulID1 = prvReadPHY( PHY_REG_IDR1, &ret );\r
- ulID2 = prvReadPHY( PHY_REG_IDR2, &ret );\r
+ ulID1 = EthDev_LPC17xx_prvReadPHY( PHY_REG_IDR1, &ret );\r
+ ulID2 = EthDev_LPC17xx_prvReadPHY( PHY_REG_IDR2, &ret );\r
if( ( (ulID1 << 16UL ) | ( ulID2 & 0xFFF0UL ) ) != LAN8720_ID)\r
{\r
return NyLPC_TBool_FALSE;\r
LPC_EMAC->SUPP = SUPP_SPEED;\r
\r
/* Put the PHY in reset mode */\r
- prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII );\r
+ EthDev_LPC17xx_prvWritePHY( PHY_REG_BMCR, MCFG_RES_MII );\r
NyLPC_cThread_sleep( emacSHORT_DELAY_MS * 5);\r
\r
/* Wait for hardware reset to end. */\r
for( x = 0; x < 100; x++ )\r
{\r
NyLPC_cThread_sleep( emacSHORT_DELAY_MS * 5 );\r
- us = prvReadPHY( PHY_REG_BMCR, &lDummy );\r
+ us = EthDev_LPC17xx_prvReadPHY( PHY_REG_BMCR, &lDummy );\r
if( !( us & MCFG_RES_MII ) )\r
{\r
/* Reset complete */\r
}\r
}\r
}\r
-/*-----------------------------------------------------------*/\r
-\r
-\r
-/*-----------------------------------------------------------*/\r
-\r
-static NyLPC_TBool prvWritePHY( long lPhyReg, long lValue )\r
-{\r
- const long lMaxTime = 10;\r
- long x;\r
-\r
- LPC_EMAC->MCMD = 0;\r
- LPC_EMAC->MADR = ETHDEV_PHY_DEF_ADR | lPhyReg;\r
- LPC_EMAC->MWTD = lValue;\r
-\r
- for( x = 0; x < lMaxTime; x++ )\r
- {\r
- if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 )\r
- {\r
- /* Operation has finished. */\r
- break;\r
- }\r
-\r
- NyLPC_cThread_sleep( emacSHORT_DELAY_MS);\r
- }\r
-\r
- if( x < lMaxTime )\r
- {\r
- return NyLPC_TBool_TRUE;\r
- }\r
- else\r
- {\r
- return NyLPC_TBool_FALSE;\r
- }\r
-}\r
-/*-----------------------------------------------------------*/\r
-\r
-static unsigned short prvReadPHY( unsigned int ucPhyReg, NyLPC_TBool *o_status)\r
-{\r
- long x;\r
- const long lMaxTime = 10;\r
\r
- LPC_EMAC->MCMD = 1;\r
- LPC_EMAC->MADR = ETHDEV_PHY_DEF_ADR | ucPhyReg;\r
- LPC_EMAC->MCMD = MCMD_READ;\r
\r
- for( x = 0; x < lMaxTime; x++ )\r
- {\r
- /* Operation has finished. */\r
- if( ( LPC_EMAC->MIND & MIND_BUSY ) == 0 )\r
- {\r
- break;\r
- }\r
- NyLPC_cThread_sleep( emacSHORT_DELAY_MS);\r
- }\r
-\r
- LPC_EMAC->MCMD = 0;\r
-\r
- if( x >= lMaxTime )\r
- {\r
- *o_status =NyLPC_TBool_FALSE;\r
- }\r
-\r
- return( LPC_EMAC->MRDD );\r
-}\r
/**\r
* Private function depend on configulation.\r
* デバイス依存部分
long x;\r
NyLPC_TBool lDummy;\r
/* Auto negotiate the configuration. */\r
- if( prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) )\r
+ if( EthDev_LPC17xx_prvWritePHY( PHY_REG_BMCR, PHY_AUTO_NEG ) )\r
{\r
NyLPC_cThread_sleep( emacSHORT_DELAY_MS * 5 );\r
\r
for( x = 0; x < 10; x++ )\r
{\r
- us = prvReadPHY( PHY_REG_PHY_CTRL, &lDummy );\r
+ us = EthDev_LPC17xx_prvReadPHY( PHY_REG_PHY_CTRL, &lDummy );\r
if( us & PHY_AUTO_NEG_COMPLETE )\r
{\r
break;\r
/* Wait with timeout for the link to be established. */\r
for( x = 0; x < 10; x++ )\r
{\r
- usLinkStatus = prvReadPHY (PHY_REG_PHY_CTRL, &lReturn );\r
+ usLinkStatus = EthDev_LPC17xx_prvReadPHY (PHY_REG_PHY_CTRL, &lReturn );\r
if( usLinkStatus & PHY_AUTO_NEG_COMPLETE )\r
{\r
/* Link is established. */\r