mirror of https://github.com/ipxe/ipxe.git
[mii] Add mii_find()
Add the function mii_find() in order to locate the PHY address. Signed-off-by: Sylvie Barlow <sylvie.c.barlow@gmail.com> Signed-off-by: Michael Brown <mcb30@ipxe.org>pull/73/head
parent
6047b7ca7a
commit
7ed1dc98c3
|
@ -147,3 +147,28 @@ int mii_check_link ( struct mii_device *mii, struct net_device *netdev ) {
|
|||
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Find PHY address
|
||||
*
|
||||
* @v mii MII device
|
||||
* @ret rc Return status code
|
||||
*/
|
||||
int mii_find ( struct mii_device *mii ) {
|
||||
unsigned int address;
|
||||
int id;
|
||||
|
||||
/* Try all possible PHY addresses */
|
||||
for ( address = 0 ; address <= MII_MAX_PHY_ADDRESS ; address++ ) {
|
||||
mii->address = address;
|
||||
id = mii_read ( mii, MII_PHYSID1 );
|
||||
if ( ( id > 0x0000 ) && ( id < 0xffff ) ) {
|
||||
DBGC ( mii, "MII %p found PHY at address %d\n",
|
||||
mii, address );
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
DBGC ( mii, "MII %p failed to find an address\n", mii );
|
||||
return -ENOENT;
|
||||
}
|
||||
|
|
|
@ -141,9 +141,13 @@ mii_dump ( struct mii_device *mii ) {
|
|||
/** Maximum time to wait for a reset, in milliseconds */
|
||||
#define MII_RESET_MAX_WAIT_MS 500
|
||||
|
||||
/** Maximum PHY address */
|
||||
#define MII_MAX_PHY_ADDRESS 31
|
||||
|
||||
extern int mii_restart ( struct mii_device *mii );
|
||||
extern int mii_reset ( struct mii_device *mii );
|
||||
extern int mii_check_link ( struct mii_device *mii,
|
||||
struct net_device *netdev );
|
||||
extern int mii_find ( struct mii_device *mii );
|
||||
|
||||
#endif /* _IPXE_MII_H */
|
||||
|
|
Loading…
Reference in New Issue