Ethernet Media-Independent Interface (MII)

Utilities. More...

Detailed Description

Utilities.

This module contains constants and helpers as library to help working with Ethernet PHYs connected via the Media-Independent Interface (MII) or the Reduced Media-Independent Interface (RMII)

Files

file  mii.h
 Interface definition for MII/RMII h.
 

Functions

static bool mii_can_100_mbps_full_dp (uint16_t bmsr)
 Check if an Ethernet PHY supports 100 Mbps at full duplex. More...
 
static bool mii_can_100_mbps_half_dp (uint16_t bmsr)
 Check if an Ethernet PHY supports 100 Mbps at half duplex. More...
 
static bool mii_can_10_mbps_full_dp (uint16_t bmsr)
 Check if an Ethernet PHY supports 10 Mbps at full duplex. More...
 
static bool mii_can_10_mbps_half_dp (uint16_t bmsr)
 Check if an Ethernet PHY supports 10 Mbps at half duplex. More...
 

Common MII Management Register Set

All registers except MII_BMCR and MII_BMSR are extended registers.

Support for extended registers is indicated by the MII_BMSR_EXTENDED bit in the MII_BMSR register.

#define MII_BMCR   (0x00U)
 Basic mode control register.
 
#define MII_BMSR   (0x01U)
 Basic mode status register.
 
#define MII_PHYID1   (0x02U)
 PHY Identifier 1.
 
#define MII_PHYID2   (0x03U)
 PHY Identifier 2.
 
#define MII_ADVERTISE   (0x04U)
 Auto-Negotiation Advertisement.
 
#define MII_LPA   (0x05U)
 Link Parter Abilities.
 
#define MII_EXPANSION   (0x06U)
 Auto-Negotiation Expansion.
 
#define MII_ESTATUS   (0x0fU)
 Extended Status Register.
 

Bits in the MII Basic Mode Control Register

#define MII_BMCR_RESET   BIT15
 Set to perform PHY reset.
 
#define MII_BMCR_LOOP   BIT14
 Set to enable loopback mode.
 
#define MII_BMCR_AN_ENABLE   BIT12
 Set to enable auto-negotiation.
 
#define MII_BMCR_POWER_DOWN   BIT11
 Set to power down PHY.
 
#define MII_BMCR_ISOLATE   BIT10
 Set to electrically isolate PHY from MII (PHY becomes inoperational)
 
#define MII_BMCR_AN_RESTART   BIT9
 Set to restart auto-negotiation.
 
#define MII_BMCR_FULL_DPLX   BIT8
 Set for full duplex.
 
#define MII_BMCR_HALF_DPLX   (0)
 Set for half duplex.
 
#define MII_BMCR_COLL_TEST   BIT7
 Set to enable collision signal test.
 
#define MII_BMCR_SPEED_10   (0)
 Set speed to 10 Mbps.
 
#define MII_BMCR_SPEED_100   BIT13
 Set speed to 100 Mbps.
 
#define MII_BMCR_SPEED_1000   BIT6
 Set speed to 1 Gbps.
 

Bits in the MII Basic Mode Status Register

#define MII_BMSR_100_T4   BIT15
 PHY supports 100BASE-T4 (half-duplex)
 
#define MII_BMSR_100_TX_F   BIT14
 PHY supports 100BASE-TX, full duplex.
 
#define MII_BMSR_100_TX_H   BIT13
 PHY supports 100BASE-TX, half duplex.
 
#define MII_BMSR_10_F   BIT12
 PHY supports 10BASE-T, full duplex.
 
#define MII_BMSR_10_H   BIT11
 PHY supports 10BASE-T, half duplex.
 
#define MII_BMSR_100_T2_F   BIT10
 PHY supports 100BASE-T2, full duplex.
 
#define MII_BMSR_100_T2_H   BIT9
 PHY supports 100BASE-T2, half duplex.
 
#define MII_BMSR_ESTATUS   BIT8
 Set, if MII_ESTATUS is available.
 
#define MII_BMSR_AN_DONE   BIT5
 Set when auto-negotiation is done.
 
#define MII_BMSR_FAULT   BIT4
 Set when remote fault condition is detected.
 
#define MII_BMSR_HAS_AN   BIT3
 Set if PHY can auto-negotiate.
 
#define MII_BMSR_LINK   BIT2
 Set if link is up.
 
#define MII_BMSR_JABBER   BIT1
 Set when jabber condition detected.
 
#define MII_BMSR_EXTENDED   BIT0
 Extended MII registers available.
 

Bits in the MII Extended Mode Advertisement Register

#define MII_ADVERTISE_100_F   BIT8
 Advertise 100BASE-T, full duplex.
 
#define MII_ADVERTISE_100_H   BIT7
 Advertise 100BASE-T, half duplex.
 
#define MII_ADVERTISE_10_F   BIT6
 Advertise 10BASE-T, full duplex.
 
#define MII_ADVERTISE_10_H   BIT5
 Advertise 10BASE-T, half duplex.
 
#define MII_ADVERTISE_100   (BIT7 | BIT8)
 Advertise 100BASE-T.
 
#define MII_ADVERTISE_10   (BIT5 | BIT6)
 Advertise 10BASE-T.
 
#define MII_LPA_100_F   BIT8
 Partner can 100BASE-T, full duplex.
 
#define MII_LPA_100_H   BIT7
 Partner can 100BASE-T, half duplex.
 
#define MII_LPA_10_F   BIT6
 Partner can 10BASE-T, full duplex.
 
#define MII_LPA_10_H   BIT5
 Partner can 10BASE-T, half duplex.
 
#define MII_LPA_100   (BIT7 | BIT8)
 Partner can 100BASE-T.
 
#define MII_LPA_10   (BIT5 | BIT6)
 Partner can 10BASE-T.
 

Function Documentation

◆ mii_can_100_mbps_full_dp()

static bool mii_can_100_mbps_full_dp ( uint16_t  bmsr)
inlinestatic

Check if an Ethernet PHY supports 100 Mbps at full duplex.

Parameters
[in]bmsrValue of the MII basic mode status register
Return values
truePHY supports 100 Mbps at full duplex
falsePHY does not support 100 Mbps at full duplex

Definition at line 130 of file mii.h.

◆ mii_can_100_mbps_half_dp()

static bool mii_can_100_mbps_half_dp ( uint16_t  bmsr)
inlinestatic

Check if an Ethernet PHY supports 100 Mbps at half duplex.

Parameters
[in]bmsrValue of the MII basic mode status register
Return values
truePHY supports 100 Mbps at half duplex
falsePHY does not support 100 Mbps at half duplex

Definition at line 143 of file mii.h.

◆ mii_can_10_mbps_full_dp()

static bool mii_can_10_mbps_full_dp ( uint16_t  bmsr)
inlinestatic

Check if an Ethernet PHY supports 10 Mbps at full duplex.

Parameters
[in]bmsrValue of the MII basic mode status register
Return values
truePHY supports 10 Mbps at full duplex
falsePHY does not support 10 Mbps at full duplex

Definition at line 156 of file mii.h.

◆ mii_can_10_mbps_half_dp()

static bool mii_can_10_mbps_half_dp ( uint16_t  bmsr)
inlinestatic

Check if an Ethernet PHY supports 10 Mbps at half duplex.

Parameters
[in]bmsrValue of the MII basic mode status register
Return values
truePHY supports 10 Mbps at half duplex
falsePHY does not support 10 Mbps at half duplex

Definition at line 169 of file mii.h.