33 #ifndef __ALT_PHY_KSZ9031_H__
34 #define __ALT_PHY_KSZ9031_H__
37 #include "socal/hps.h"
38 #include "socal/alt_emac.h"
60 #define EMAC0_PHY_ADDRESS (0)
62 #define EMAC0_PHY_ADDRESS (4)
65 #define EMAC1_PHY_ADDRESS (0)
66 #define EMAC2_PHY_ADDRESS (0)
69 #define PHY_CONTROL_PAD_SKEW_REG (4)
70 #define PHY_CONTROL_PAD_SKEW_VALUE (0x70)
71 #define PHY_RX_DATA_PAD_SKEW_REG (5)
72 #define PHY_RX_DATA_PAD_SKEW_VALUE (0x7777)
73 #define PHY_TX_DATA_PAD_SKEW_REG (6)
74 #define PHY_TX_DATA_PAD_SKEW_VALUE (0x0)
75 #define PHY_CLK_PAD_SKEW_REG (8)
76 #define PHY_CLK_PAD_SKEW_VALUE (0x3FC)
79 #define PHY_MMD_D0_FLP_LO_REG (3)
80 #define PHY_MMD_D0_FLP_16MS_LO (0x1A80)
81 #define PHY_MMD_D0_FLP_HI_REG (4)
82 #define PHY_MMD_D0_FLP_16MS_HI (0x0006)
88 #define PHY_READ_TO ((uint32_t)0x0004FFFF)
89 #define PHY_WRITE_TO ((uint32_t)0x0004FFFF)
98 #define PHY_1GSTS (10)
102 #define PHY_RESET_DELAY ((uint32_t)0x000FFFFF)
105 #define PHY_SPEED_10 (0x0010)
106 #define PHY_SPEED_100 (0x0020)
107 #define PHY_SPEED_1000 (0x0040)
108 #define PHY_SPEED_MASK (0x0070)
109 #define PHY_DUPLEX_STATUS (0x0008)
112 #define PHYADVERTISE_1000FULL (0x0200)
113 #define PHYADVERTISE_1000HALF (0x0100)
116 #define PHYANA_SEL_MASK (0x1F)
117 #define PHYANA_10BASET (1 << 5)
118 #define PHYANA_10BASETFD (1 << 6)
119 #define PHYANA_100BASETX (1 << 7)
120 #define PHYANA_100BASETXFD (1 << 8)
121 #define PHYANA_PAUSE_OP_MASK (3 << 10)
122 #define PHYANA_REMOTE_FAULT (1 << 13)
125 #define PHY_MOD_DATA_NO_POST_INC (0x1)
126 #define PHY_MOD_DATA_POST_INC_RW (0x2)
127 #define PHY_MOD_DATA_POST_INC_W (0x3)
129 #define PHY_MMD_CTRL_REG (0x0d)
130 #define PHY_MMD_REGDATA_REG (0x0e)
132 #define PHY_MMD_DEV_ADDR_02 (2)
133 #define PHY_MMD_DEV_ADDR_00 (0)
136 #define PHY_COLLTEST (1 << 7 )
137 #define PHY_DUPLEX_MODE (1 << 8 )
138 #define PHY_RESTART_AUTONEGOTIATION (1 << 9 )
139 #define PHY_POWERDOWN (1 << 11)
140 #define PHY_AUTONEGOTIATION (1 << 12)
141 #define PHY_SPEEDSEL (1 << 13)
142 #define PHY_LOOPBACK (1 << 14)
143 #define PHY_RESET (1 << 15)
146 #define PHY_AUTONEGO_COMPLETE (0x0020)
147 #define PHY_LINKED_STATUS (0x0004)
148 #define PHY_JABBER_DETECTION (0x0002)
149 #define PHY_AUTOCAP (0x0008)
166 ALT_STATUS_CODE alt_eth_phy_write_register(uint32_t emac_instance, uint32_t phy_reg, uint32_t wrval);
183 ALT_STATUS_CODE alt_eth_phy_read_register(uint32_t emac_instance, uint32_t phy_reg, uint32_t * rdval);
202 ALT_STATUS_CODE alt_eth_phy_read_register_extended(uint32_t emac_instance, uint32_t dev_addr, uint32_t phy_reg, uint32_t * rdval);
221 ALT_STATUS_CODE alt_eth_phy_write_register_extended(uint32_t emac_instance, uint32_t dev_addr, uint32_t phy_reg, uint32_t wrval);
236 ALT_STATUS_CODE alt_eth_phy_loopback(uint32_t new_state, uint32_t emac_instance);