NetDev_MII_Rd()
The next function to implement is the (R)MII read/Phy_RegRd()
function. This function is generally implemented within the Ethernet device driver file, since (R)MII bus reads are generally associated with the MAC device. In the case that the PHY communication mechanism is separate from the MAC, then a handler function may be provided within the net_bsp.c
file and called from the device driver file instead.
Note: This function must be implemented with a timeout and should not block indefinitely should the PHY fail to respond.
Files
Every device driver’s net_dev.c
Prototype
static void NetDev_MII_Rd (NET_IF *pif, CPU_INT08U phy_addr, CPU_INT08U reg_addr, CPU_INT16U *p_data, NET_ERR *perr);
Note that since every device driver’s Phy_RegRd()/MII_Rd()
function is accessed only by function pointer via the device driver’s API structure, it doesn’t need to be globally available and should therefore be declared as ‘static
’.
Arguments
pif
Pointer to the interface to read a (R)MII PHY register.
phy_addr
The bus address of the PHY.
reg_addr
The MII register number to read.
p_data
Pointer to a address to store the content of the PHY register being read.
perr
Pointer to variable that will receive the return error code from this function.
Returned Value
None.
Required Configuration
None.
Notes/Warnings
None.