1214ec6bbSwdenk /*----------------------------------------------------------------------------+ 2214ec6bbSwdenk | 3214ec6bbSwdenk | This source code has been made available to you by IBM on an AS-IS 4214ec6bbSwdenk | basis. Anyone receiving this source is licensed under IBM 5214ec6bbSwdenk | copyrights to use it in any way he or she deems fit, including 6214ec6bbSwdenk | copying it, modifying it, compiling it, and redistributing it either 7214ec6bbSwdenk | with or without modifications. No license under IBM patents or 8214ec6bbSwdenk | patent applications is to be implied by the copyright license. 9214ec6bbSwdenk | 10214ec6bbSwdenk | Any user of this software should understand that IBM cannot provide 11214ec6bbSwdenk | technical support for this software and will not be responsible for 12214ec6bbSwdenk | any consequences resulting from the use of this software. 13214ec6bbSwdenk | 14214ec6bbSwdenk | Any person who transfers this source code or any derivative work 15214ec6bbSwdenk | must include the IBM copyright notice, this paragraph, and the 16214ec6bbSwdenk | preceding two paragraphs in the transferred software. 17214ec6bbSwdenk | 18214ec6bbSwdenk | COPYRIGHT I B M CORPORATION 1999 19214ec6bbSwdenk | LICENSED MATERIAL - PROGRAM PROPERTY OF I B M 20214ec6bbSwdenk +----------------------------------------------------------------------------*/ 21214ec6bbSwdenk /*----------------------------------------------------------------------------+ 22214ec6bbSwdenk | 23214ec6bbSwdenk | File Name: miiphy.h 24214ec6bbSwdenk | 25214ec6bbSwdenk | Function: Include file defining PHY registers. 26214ec6bbSwdenk | 27214ec6bbSwdenk | Author: Mark Wisner 28214ec6bbSwdenk | 29214ec6bbSwdenk | Change Activity- 30214ec6bbSwdenk | 31214ec6bbSwdenk | Date Description of Change BY 32214ec6bbSwdenk | --------- --------------------- --- 33214ec6bbSwdenk | 04-May-99 Created MKW 34214ec6bbSwdenk | 07-Jul-99 Added full duplex support MKW 35214ec6bbSwdenk | 08-Sep-01 Tweaks gvb 36214ec6bbSwdenk | 37214ec6bbSwdenk +----------------------------------------------------------------------------*/ 38214ec6bbSwdenk #ifndef _miiphy_h_ 39214ec6bbSwdenk #define _miiphy_h_ 40214ec6bbSwdenk 41*63ff004cSMarian Balakowicz #include <net.h> 42214ec6bbSwdenk 43*63ff004cSMarian Balakowicz int miiphy_read(char *devname, unsigned char addr, unsigned char reg, 44*63ff004cSMarian Balakowicz unsigned short *value); 45*63ff004cSMarian Balakowicz int miiphy_write(char *devname, unsigned char addr, unsigned char reg, 46*63ff004cSMarian Balakowicz unsigned short value); 47*63ff004cSMarian Balakowicz int miiphy_info(char *devname, unsigned char addr, unsigned int *oui, 48*63ff004cSMarian Balakowicz unsigned char *model, unsigned char *rev); 49*63ff004cSMarian Balakowicz int miiphy_reset(char *devname, unsigned char addr); 50*63ff004cSMarian Balakowicz int miiphy_speed(char *devname, unsigned char addr); 51*63ff004cSMarian Balakowicz int miiphy_duplex(char *devname, unsigned char addr); 52fc3e2165Swdenk #ifdef CFG_FAULT_ECHO_LINK_DOWN 53*63ff004cSMarian Balakowicz int miiphy_link(char *devname, unsigned char addr); 54fc3e2165Swdenk #endif 55214ec6bbSwdenk 56*63ff004cSMarian Balakowicz void miiphy_register(char *devname, 57*63ff004cSMarian Balakowicz int (* read)(char *devname, unsigned char addr, 58*63ff004cSMarian Balakowicz unsigned char reg, unsigned short *value), 59*63ff004cSMarian Balakowicz int (* write)(char *devname, unsigned char addr, 60*63ff004cSMarian Balakowicz unsigned char reg, unsigned short value)); 61*63ff004cSMarian Balakowicz 62*63ff004cSMarian Balakowicz int miiphy_set_current_dev(char *devname); 63*63ff004cSMarian Balakowicz char *miiphy_get_current_dev(void); 64*63ff004cSMarian Balakowicz 65*63ff004cSMarian Balakowicz void miiphy_listdev(void); 66*63ff004cSMarian Balakowicz 67*63ff004cSMarian Balakowicz #define BB_MII_DEVNAME "bbmii" 68*63ff004cSMarian Balakowicz 69*63ff004cSMarian Balakowicz int bb_miiphy_read (char *devname, unsigned char addr, 70*63ff004cSMarian Balakowicz unsigned char reg, unsigned short *value); 71*63ff004cSMarian Balakowicz int bb_miiphy_write (char *devname, unsigned char addr, 72*63ff004cSMarian Balakowicz unsigned char reg, unsigned short value); 73214ec6bbSwdenk 74214ec6bbSwdenk /* phy seed setup */ 75214ec6bbSwdenk #define AUTO 99 76855a496fSwdenk #define _1000BASET 1000 77214ec6bbSwdenk #define _100BASET 100 78214ec6bbSwdenk #define _10BASET 10 79214ec6bbSwdenk #define HALF 22 80214ec6bbSwdenk #define FULL 44 81214ec6bbSwdenk 82214ec6bbSwdenk /* phy register offsets */ 83214ec6bbSwdenk #define PHY_BMCR 0x00 84214ec6bbSwdenk #define PHY_BMSR 0x01 85214ec6bbSwdenk #define PHY_PHYIDR1 0x02 86214ec6bbSwdenk #define PHY_PHYIDR2 0x03 87214ec6bbSwdenk #define PHY_ANAR 0x04 88214ec6bbSwdenk #define PHY_ANLPAR 0x05 89214ec6bbSwdenk #define PHY_ANER 0x06 90214ec6bbSwdenk #define PHY_ANNPTR 0x07 91855a496fSwdenk #define PHY_ANLPNP 0x08 92855a496fSwdenk #define PHY_1000BTCR 0x09 93855a496fSwdenk #define PHY_1000BTSR 0x0A 94214ec6bbSwdenk #define PHY_PHYSTS 0x10 95214ec6bbSwdenk #define PHY_MIPSCR 0x11 96214ec6bbSwdenk #define PHY_MIPGSR 0x12 97214ec6bbSwdenk #define PHY_DCR 0x13 98214ec6bbSwdenk #define PHY_FCSCR 0x14 99214ec6bbSwdenk #define PHY_RECR 0x15 100214ec6bbSwdenk #define PHY_PCSR 0x16 101214ec6bbSwdenk #define PHY_LBR 0x17 102214ec6bbSwdenk #define PHY_10BTSCR 0x18 103214ec6bbSwdenk #define PHY_PHYCTRL 0x19 104214ec6bbSwdenk 105214ec6bbSwdenk /* PHY BMCR */ 106214ec6bbSwdenk #define PHY_BMCR_RESET 0x8000 107214ec6bbSwdenk #define PHY_BMCR_LOOP 0x4000 108214ec6bbSwdenk #define PHY_BMCR_100MB 0x2000 109214ec6bbSwdenk #define PHY_BMCR_AUTON 0x1000 110214ec6bbSwdenk #define PHY_BMCR_POWD 0x0800 111214ec6bbSwdenk #define PHY_BMCR_ISO 0x0400 112214ec6bbSwdenk #define PHY_BMCR_RST_NEG 0x0200 113214ec6bbSwdenk #define PHY_BMCR_DPLX 0x0100 114214ec6bbSwdenk #define PHY_BMCR_COL_TST 0x0080 115214ec6bbSwdenk 116b9711de1Swdenk #define PHY_BMCR_SPEED_MASK 0x2040 117b9711de1Swdenk #define PHY_BMCR_1000_MBPS 0x0040 118b9711de1Swdenk #define PHY_BMCR_100_MBPS 0x2000 119b9711de1Swdenk #define PHY_BMCR_10_MBPS 0x0000 120b9711de1Swdenk 121214ec6bbSwdenk /* phy BMSR */ 122214ec6bbSwdenk #define PHY_BMSR_100T4 0x8000 123214ec6bbSwdenk #define PHY_BMSR_100TXF 0x4000 124214ec6bbSwdenk #define PHY_BMSR_100TXH 0x2000 125214ec6bbSwdenk #define PHY_BMSR_10TF 0x1000 126214ec6bbSwdenk #define PHY_BMSR_10TH 0x0800 127214ec6bbSwdenk #define PHY_BMSR_PRE_SUP 0x0040 128214ec6bbSwdenk #define PHY_BMSR_AUTN_COMP 0x0020 129214ec6bbSwdenk #define PHY_BMSR_RF 0x0010 130214ec6bbSwdenk #define PHY_BMSR_AUTN_ABLE 0x0008 131214ec6bbSwdenk #define PHY_BMSR_LS 0x0004 132214ec6bbSwdenk #define PHY_BMSR_JD 0x0002 133214ec6bbSwdenk #define PHY_BMSR_EXT 0x0001 134214ec6bbSwdenk 135214ec6bbSwdenk /*phy ANLPAR */ 136214ec6bbSwdenk #define PHY_ANLPAR_NP 0x8000 137214ec6bbSwdenk #define PHY_ANLPAR_ACK 0x4000 138214ec6bbSwdenk #define PHY_ANLPAR_RF 0x2000 139214ec6bbSwdenk #define PHY_ANLPAR_T4 0x0200 140214ec6bbSwdenk #define PHY_ANLPAR_TXFD 0x0100 141214ec6bbSwdenk #define PHY_ANLPAR_TX 0x0080 142214ec6bbSwdenk #define PHY_ANLPAR_10FD 0x0040 143214ec6bbSwdenk #define PHY_ANLPAR_10 0x0020 144214ec6bbSwdenk #define PHY_ANLPAR_100 0x0380 /* we can run at 100 */ 145855a496fSwdenk 146b9711de1Swdenk #define PHY_ANLPAR_PSB_MASK 0x001f 147b9711de1Swdenk #define PHY_ANLPAR_PSB_802_3 0x0001 148b9711de1Swdenk #define PHY_ANLPAR_PSB_802_9 0x0002 149b9711de1Swdenk 150855a496fSwdenk /* PHY_1000BTSR */ 151855a496fSwdenk #define PHY_1000BTSR_MSCF 0x8000 152855a496fSwdenk #define PHY_1000BTSR_MSCR 0x4000 153855a496fSwdenk #define PHY_1000BTSR_LRS 0x2000 154855a496fSwdenk #define PHY_1000BTSR_RRS 0x1000 155855a496fSwdenk #define PHY_1000BTSR_1000FD 0x0800 156855a496fSwdenk #define PHY_1000BTSR_1000HD 0x0400 157855a496fSwdenk 158214ec6bbSwdenk #endif 159