File tree Expand file tree Collapse file tree 2 files changed +22
-9
lines changed
Expand file tree Collapse file tree 2 files changed +22
-9
lines changed Original file line number Diff line number Diff line change 3131#if defined(MICROPY_HW_ETH_MDC )
3232
3333#define PHY_SCSR_LAN87XX (0x001f)
34- #define PHY_SCSR_LAN87XX_SPEED_Pos (2)
35- #define PHY_SCSR_LAN87XX_SPEED_Msk (7)
34+ #define PHY_SCSR_LAN87XX_10M_Msk (0x0004)
35+ #define PHY_SCSR_LAN87XX_100M_Msk (0x0008)
36+ #define PHY_SCSR_LAN87XX_DUPLEX_Msk (0x0010)
3637
3738#define PHY_SCSR_DP838XX (0x0010)
3839#define PHY_RECR_DP838XX (0x0015)
4142
4243int16_t eth_phy_lan87xx_get_link_status (uint32_t phy_addr ) {
4344 // Get the link mode & speed
44- int16_t scsr = eth_phy_read (phy_addr , PHY_SCSR_LAN87XX );
45- return (scsr >> PHY_SCSR_LAN87XX_SPEED_Pos ) & PHY_SCSR_LAN87XX_SPEED_Msk ;
45+ uint16_t scsr = eth_phy_read (phy_addr , PHY_SCSR_LAN87XX );
46+ int16_t status = 0 ;
47+ if (scsr & PHY_SCSR_LAN87XX_10M_Msk ) {
48+ status |= PHY_SPEED_10HALF ;
49+ }
50+ if (scsr & PHY_SCSR_LAN87XX_100M_Msk ) {
51+ status |= PHY_SPEED_100HALF ;
52+ }
53+ if (scsr & PHY_SCSR_LAN87XX_DUPLEX_Msk ) {
54+ status |= PHY_DUPLEX ;
55+ }
56+ return status ;
4657}
4758
4859int16_t eth_phy_dp838xx_get_link_status (uint32_t phy_addr ) {
Original file line number Diff line number Diff line change 5050#define PHY_ANAR_SPEED_100FULL (0x0100)
5151#define PHY_ANAR_IEEE802_3 (0x0001)
5252
53- #define PHY_SPEED_10HALF (1)
54- #define PHY_SPEED_10FULL (5)
55- #define PHY_SPEED_100HALF (2)
56- #define PHY_SPEED_100FULL (6)
57- #define PHY_DUPLEX (4)
53+ #define PHY_SPEED_10HALF (0x01)
54+ #define PHY_SPEED_100HALF (0x02)
55+ #define PHY_SPEED_1000HALF (0x04)
56+ #define PHY_DUPLEX (0x08)
57+ #define PHY_SPEED_10FULL (PHY_DUPLEX | PHY_SPEED_10HALF)
58+ #define PHY_SPEED_100FULL (PHY_DUPLEX | PHY_SPEED_100HALF)
59+ #define PHY_SPEED_1000FULL (PHY_DUPLEX | PHY_SPEED_1000HALF)
5860
5961uint32_t eth_phy_read (uint32_t phy_addr , uint32_t reg );
6062void eth_phy_write (uint32_t phy_addr , uint32_t reg , uint32_t val );
You can’t perform that action at this time.
0 commit comments