blob: 27330c23554b71b1ad9c8c12d2eb61e21a435553 [file] [log] [blame]
/*!
* \file eth.h
* \brief Definitions for Ethernet Physical Layer Interface
* \version $Revision: 1.3 $
* \author Michael Norman
* \modif b06862
*/
#ifndef _ETH_PHY_H
#define _ETH_PHY_H
#include "enet.h"
/*******************************************************************/
int
eth_phy_reset(int ch, int phy_addr);
int
eth_phy_autoneg(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex);
int
eth_phy_manual(int ch, int phy_addr, ENET_SPEED speed, ENET_DUPLEX duplex, int loop);
int
eth_phy_get_speed(int, int, int*);
int
eth_phy_get_duplex(int, int, int*);
int
eth_phy_get_manual_speed(int, int, int*);
int
eth_phy_get_manual_duplex(int, int, int*);
int
eth_phy_set_remote_loopback(int, int, int);
int
eth_phy_reg_dump(int, int);
/*******************************************************************/
/* MII Register Addresses */
#define PHY_BMCR (0x00)
#define PHY_BMSR (0x01)
#define PHY_PHYIDR1 (0x02)
#define PHY_PHYIDR2 (0x03)
#define PHY_ANAR (0x04)
#define PHY_ANLPAR (0x05)
#define PHY_ANLPARNP (0x05)
#define PHY_ANER (0x06)
#define PHY_ANNPTR (0x07)
#define PHY_PHYSTS (0x10)
#define PHY_MICR (0x11)
#define PHY_MISR (0x12)
#define PHY_PAGESEL (0x13)
/*TSI-EVB definition: National Semiconductor*/
#define PHY_PHYCR2 (0x1C)
/*TWR definition: Micrel*/
#define PHY_PHYCTRL1 (0x1E)
#define PHY_PHYCTRL2 (0x1F)
/* Bit definitions and macros for PHY_BMCR */
#define PHY_BMCR_RESET (0x8000)
#define PHY_BMCR_LOOP (0x4000)
#define PHY_BMCR_SPEED (0x2000)
#define PHY_BMCR_AN_ENABLE (0x1000)
#define PHY_BMCR_POWERDOWN (0x0800)
#define PHY_BMCR_ISOLATE (0x0400)
#define PHY_BMCR_AN_RESTART (0x0200)
#define PHY_BMCR_FDX (0x0100)
#define PHY_BMCR_COL_TEST (0x0080)
/* Bit definitions and macros for PHY_BMSR */
#define PHY_BMSR_100BT4 (0x8000)
#define PHY_BMSR_100BTX_FDX (0x4000)
#define PHY_BMSR_100BTX (0x2000)
#define PHY_BMSR_10BT_FDX (0x1000)
#define PHY_BMSR_10BT (0x0800)
#define PHY_BMSR_NO_PREAMBLE (0x0040)
#define PHY_BMSR_AN_COMPLETE (0x0020)
#define PHY_BMSR_REMOTE_FAULT (0x0010)
#define PHY_BMSR_AN_ABILITY (0x0008)
#define PHY_BMSR_LINK (0x0004)
#define PHY_BMSR_JABBER (0x0002)
#define PHY_BMSR_EXTENDED (0x0001)
/* Bit definitions and macros for PHY_ANAR */
#define PHY_ANAR_NEXT_PAGE (0x8001)
#define PHY_ANAR_REM_FAULT (0x2001)
#define PHY_ANAR_PAUSE (0x0401)
#define PHY_ANAR_100BT4 (0x0201)
#define PHY_ANAR_100BTX_FDX (0x0101)
#define PHY_ANAR_100BTX (0x0081)
#define PHY_ANAR_10BT_FDX (0x0041)
#define PHY_ANAR_10BT (0x0021)
#define PHY_ANAR_802_3 (0x0001)
/* Bit definitions and macros for PHY_ANLPAR */
#define PHY_ANLPAR_NEXT_PAGE (0x8000)
#define PHY_ANLPAR_ACK (0x4000)
#define PHY_ANLPAR_REM_FAULT (0x2000)
#define PHY_ANLPAR_PAUSE (0x0400)
#define PHY_ANLPAR_100BT4 (0x0200)
#define PHY_ANLPAR_100BTX_FDX (0x0100)
#define PHY_ANLPAR_100BTX (0x0080)
#define PHY_ANLPAR_10BTX_FDX (0x0040)
#define PHY_ANLPAR_10BT (0x0020)
/* Bit definitions of PHY_PHYSTS: National */
#define PHY_PHYSTS_MDIXMODE (0x4000)
#define PHY_PHYSTS_RX_ERR_LATCH (0x2000)
#define PHY_PHYSTS_POL_STATUS (0x1000)
#define PHY_PHYSTS_FALSECARRSENSLAT (0x0800)
#define PHY_PHYSTS_SIGNALDETECT (0x0400)
#define PHY_PHYSTS_PAGERECEIVED (0x0100)
#define PHY_PHYSTS_MIIINTERRUPT (0x0080)
#define PHY_PHYSTS_REMOTEFAULT (0x0040)
#define PHY_PHYSTS_JABBERDETECT (0x0020)
#define PHY_PHYSTS_AUTONEGCOMPLETE (0x0010)
#define PHY_PHYSTS_LOOPBACKSTATUS (0x0008)
#define PHY_PHYSTS_DUPLEXSTATUS (0x0004)
#define PHY_PHYSTS_SPEEDSTATUS (0x0002)
#define PHY_PHYSTS_LINKSTATUS (0x0001)
/* Bit definitions of PHY_PHYCR2 */
#define PHY_PHYCR2_SYNC_ENET_EN (0x2000)
#define PHY_PHYCR2_CLK_OUT_RXCLK (0x1000)
#define PHY_PHYCR2_BC_WRITE (0x0800)
#define PHY_PHYCR2_PHYTER_COMP (0x0400)
#define PHY_PHYCR2_SOFT_RESET (0x0200)
#define PHY_PHYCR2_CLK_OUT_DIS (0x0001)
/* Bit definition and macros for PHY_PHYCTRL1 */
#define PHY_PHYCTRL1_LED_MASK (0xC000)
#define PHY_PHYCTRL1_POLARITY (0x2000)
#define PHY_PHYCTRL1_MDX_STATE (0x0800)
#define PHY_PHYCTRL1_REMOTE_LOOP (0x0080)
/* Bit definition and macros for PHY_PHYCTRL2 */
#define PHY_PHYCTRL2_HP_MDIX (0x8000)
#define PHY_PHYCTRL2_MDIX_SELECT (0x4000)
#define PHY_PHYCTRL2_PAIRSWAP_DIS (0x2000)
#define PHY_PHYCTRL2_ENERGY_DET (0x1000)
#define PHY_PHYCTRL2_FORCE_LINK (0x0800)
#define PHY_PHYCTRL2_POWER_SAVING (0x0400)
#define PHY_PHYCTRL2_INT_LEVEL (0x0200)
#define PHY_PHYCTRL2_EN_JABBER (0x0100)
#define PHY_PHYCTRL2_AUTONEG_CMPLT (0x0080)
#define PHY_PHYCTRL2_ENABLE_PAUSE (0x0040)
#define PHY_PHYCTRL2_PHY_ISOLATE (0x0020)
#define PHY_PHYCTRL2_OP_MOD_MASK (0x001C)
#define PHY_PHYCTRL2_EN_SQE_TEST (0x0002)
#define PHY_PHYCTRL2_DATA_SCRAM_DIS (0x0001)
/* Bit definitions of PHY_PHYCTRL2_OP_MOD_MASK */
#define PHY_PHYCTRL2_OP_MOD_SHIFT 2
#define PHY_PHYCTRL2_MODE_OP_MOD_STILL_NEG 0
#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_HD 1
#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_HD 2
#define PHY_PHYCTRL2_MODE_OP_MOD_10MBPS_FD 5
#define PHY_PHYCTRL2_MODE_OP_MOD_100MBPS_FD 6
/*******************************************************************/
#endif /* _ETH_PHY_H */