OSDN Git Service

LANドライバの共通関数を集約
[mimic/MiMicSDK.git] / lib / src / driver / ethernet / lpc17xx / EtherDev_LAN8720.c
index dce41ff..2a3c756 100644 (file)
@@ -90,7 +90,7 @@
 \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
@@ -117,15 +117,8 @@ static void prvConfigurePHY( void );
  * 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
@@ -166,8 +159,8 @@ NyLPC_TBool EthDev_LAN8720_getInterface(
        //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
@@ -313,14 +306,14 @@ static void prvSetupEMACHardware( void )
        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
@@ -328,70 +321,8 @@ static void prvSetupEMACHardware( void )
                }\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
  * デバイス依存部分
@@ -406,13 +337,13 @@ static void prvConfigurePHY( void )
        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
@@ -431,7 +362,7 @@ static long prvSetupLinkStatus( void )
        /* 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