![]() |
![]() |
Functions | |
| Uint32 | MDIO_open (int instNum, Uint32 mdioModeFlags, Uint32 phyAddr, Handle hMDIO) |
| void | MDIO_close (Handle hMDIO) |
| void | MDIO_getStatus (Handle hMDIO, Uint32 *pPhy, Uint32 *pLinkStatus) |
| Uint32 | MDIO_timerTick (Handle hMDIO) |
| Uint32 | MDIO_initPHY (Handle hMDIO, Uint32 phyAddr) |
| Uint32 | MDIO_phyRegRead (Uint32 phyIdx, Uint32 phyReg, Uint16 *pData) |
| Uint32 | MDIO_phyRegWrite (Uint32 phyIdx, Uint32 phyReg, Uint16 data) |
| void MDIO_close | ( | Handle | hMDIO | ) |
============================================================================
MDIO_close()
Description
Close the MDIO peripheral and disable further operation.
Arguments
hMDIO handle to the opened MDIO instance
Return Value None
Pre Condition
MDIO module must be reset and opened before calling this function.
Post Condition
MDIO module is closed. No further operations are possible.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_close( &mdioDev );
============================================================================
| void MDIO_getStatus | ( | Handle | hMDIO, | |
| Uint32 * | pPhy, | |||
| Uint32 * | pLinkStatus | |||
| ) |
============================================================================
MDIO_getStatus()
Description
Called to get the status of the MDIO/PHY
Arguments
hMDIO handle to the opened MDIO instance
pPhy pointer to the physical address
pLinkStatus pointer to the link status
Return Value None
Pre Condition
MDIO module must be reset and opened before calling this API
Post Condition
MDIO stauts is returned through the parameters paased in this API.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
//Open the MDIO module
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_getStatus( &mdioDev, &pPhy, &pLinkStatus );
============================================================================
| Uint32 MDIO_initPHY | ( | Handle | hMDIO, | |
| Uint32 | phyAddr | |||
| ) |
============================================================================
MDIO_initPHY()
Description
Force a switch to the specified PHY, and start the negotiation process.
Arguments
hMDIO handle to the opened MDIO instance
phyAddr Physical address
Return Value
Returns 1 if the PHY selection completed OK,
else 0
Pre Condition
MDIO module must be reset.
Post Condition
Initializes the specific PHY device.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
//Open the MDIO module
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_initPHY( &mdioDev, mdioPhyAddr );
============================================================================
| Uint32 MDIO_open | ( | int | instNum, | |
| Uint32 | mdioModeFlags, | |||
| Uint32 | phyAddr, | |||
| Handle | hMDIO | |||
| ) |
Interfaces for the MDIO.
Description
Opens the MDIO peripheral and initialize the MDIO state machine
It is assumed that the MDIO module is reset prior to calling this function.
Arguments
instNum Instance number when user is specifying a PHY address for monitoring
i.e., MDIO_MODEFLG_SPECPHYADDR mode flag is set.
It is hard-coded as 0 when MDIO_MODEFLG_SPECPHYADDR is not set.
mdioModeFlags Mode flags
phyAddr PHY address user specifies for monitoring. It is bypassed when
MDIO_MODEFLG_SPECPHYADDR mode flag is not set.
hMDIO Handle to the MDIO device which needs to be initialized.
Return Value Success (0)
MDIO_ERROR_INVALID - A calling parameter is invalid
Pre Condition
The MDIO module must be reset prior to calling this function.
Post Condition
Opens the MDIO peripheral and initialize the MDIO state machine.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
============================================================================
| Uint32 MDIO_phyRegRead | ( | Uint32 | phyIdx, | |
| Uint32 | phyReg, | |||
| Uint16 * | pData | |||
| ) |
============================================================================
MDIO_phyRegRead()
Description
Raw data read of a PHY register.
Arguments
phyIdx Physical Index
phyReg Physical register
pData Data read
Return Value
Returns 1 if the PHY ACK'd the read,
else 0
Pre Condition
MDIO module must be reset and opened. PHY device must be initialized.
Post Condition
Raw data is read from a PHY register.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
volatile Uint32 phyIdx = PHYREG_CONTROL;
volatile Uint32 phyReg;
Uint16 pData;
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
//Open the MDIO module
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_initPHY( &mdioDev, mdioPhyAddr );
MDIO_phyRegRead( phyIdx, ((MDIO_Device *)&mdioDev)->phyReg, pData );
============================================================================
| Uint32 MDIO_phyRegWrite | ( | Uint32 | phyIdx, | |
| Uint32 | phyReg, | |||
| Uint16 | data | |||
| ) |
============================================================================
MDIO_phyRegWrite()
Description
Raw data write of a PHY register.
Arguments
phyIdx Physical Index
phyReg Physical register
pData Data written
Return Value
Returns 1 if the PHY ACK'd the write,
else 0
Pre Condition
MDIO module must be reset and opened. PHY device must be initialized.
Post Condition
Raw data is written to a PHY register.
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
#define PHYREG_SHADOW_EXTLOOPBACK 0x8400
volatile Uint32 phyIdx = PHYREG_CONTROL;
volatile Uint32 phyReg;
Uint16 pData = PHYREG_SHADOW_EXTLOOPBACK;
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
//Open the MDIO module
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_initPHY( &mdioDev, mdioPhyAddr );
MDIO_phyRegWrite( phyIdx, ((MDIO_Device *)&mdioDev)->phyReg, pData );
============================================================================
| Uint32 MDIO_timerTick | ( | Handle | hMDIO | ) |
============================================================================
MDIO_timerTick()
Description
Called to signify that approx 100mS have elapsed
Arguments
hMDIO Handle to the opened MDIO instance
Return Value
MDIO event code (see MDIO Events).
Pre Condition
MDIO module must be reset and opened before calling this API.
Post Condition
Gets approximately 100mS delay
Example:
#define MDIO_MODEFLG_FD1000 0x0020
#define MDIO_MODEFLG_LOOPBACK 0x0040
MDIO_Device mdioDev;
int instNum = 0;
Uint32 mdioModeFlags = MDIO_MODEFLG_FD1000 | MDIO_MODEFLG_LOOPBACK;
Uint32 mdioPhyAddr = 0;
//Open the MDIO module
MDIO_open(instNum, mdioModeFlags, mdioPhyAddr, &mdioDev);
MDIO_timerTick( &mdioDev );
============================================================================