37#define msleep t3_os_sleep
74#define CFG_CHG_INTR_MASK (VSC_INTR_LINK_CHG | VSC_INTR_NEG_ERR | \
75 VSC_INTR_DPLX_CHG | VSC_INTR_SPD_CHG | \
77#define INTR_MASK (CFG_CHG_INTR_MASK | VSC_INTR_TX_FIFO | VSC_INTR_RX_FIFO | \
81#define S_ACSR_ACTIPHY_TMR 0
82#define M_ACSR_ACTIPHY_TMR 0x3
83#define V_ACSR_ACTIPHY_TMR(x) ((x) << S_ACSR_ACTIPHY_TMR)
86#define M_ACSR_SPEED 0x3
87#define G_ACSR_SPEED(x) (((x) >> S_ACSR_SPEED) & M_ACSR_SPEED)
89#define S_ACSR_DUPLEX 5
90#define F_ACSR_DUPLEX (1 << S_ACSR_DUPLEX)
92#define S_ACSR_ACTIPHY 6
93#define F_ACSR_ACTIPHY (1 << S_ACSR_ACTIPHY)
134 int *speed,
int *duplex,
int *fc)
136 unsigned int bmcr, status, lpa, adv;
137 int err, sp = -1, dplx = -1, pause = 0;
207 int *speed,
int *duplex,
int *fc)
209 unsigned int bmcr, status, lpa, adv;
210 int err, sp = -1, dplx = -1, pause = 0;
282 (err =
mdio_write(
phy, 0, 17, enable ? 0x2803 : 0x3003)) != 0 ||
302 enable ? BMCR_PDOWN : 0);
308 int err, cphy_cause = 0;
322#ifdef C99_NOT_SUPPORTED
382#define VSC8211_PHY_CTRL 24
384#define S_VSC8211_TXFIFODEPTH 7
385#define M_VSC8211_TXFIFODEPTH 0x7
386#define V_VSC8211_TXFIFODEPTH(x) ((x) << S_VSC8211_TXFIFODEPTH)
387#define G_VSC8211_TXFIFODEPTH(x) (((x) >> S_VSC8211_TXFIFODEPTH) & M_VSC8211_TXFIFODEPTH)
389#define S_VSC8211_RXFIFODEPTH 4
390#define M_VSC8211_RXFIFODEPTH 0x7
391#define V_VSC8211_RXFIFODEPTH(x) ((x) << S_VSC8211_RXFIFODEPTH)
392#define G_VSC8211_RXFIFODEPTH(x) (((x) >> S_VSC8211_RXFIFODEPTH) & M_VSC8211_RXFIFODEPTH)
397 unsigned int val = 4;
398 unsigned int currentregval;
static __inline struct port_info * adap2pinfo(struct adapter *adap, int idx)
static int mdio_read(struct cphy *phy, int mmd, int reg, unsigned int *valp)
int t3_mdio_change_bits(struct cphy *phy, int mmd, int reg, unsigned int clear, unsigned int set)
int t3_phy_reset(struct cphy *phy, int mmd, int wait)
int t3_phy_advertise(struct cphy *phy, unsigned int advert)
static int mdio_write(struct cphy *phy, int mmd, int reg, unsigned int val)
int t3_phy_advertise_fiber(struct cphy *phy, unsigned int advert)
int t3_set_phy_speed_duplex(struct cphy *phy, int speed, int duplex)
static void cphy_init(struct cphy *phy, adapter_t *adapter, pinfo_t *pinfo, int phy_addr, struct cphy_ops *phy_ops, const struct mdio_ops *mdio_ops, unsigned int caps, const char *desc)
#define ADVERTISE_1000XHALF
#define ADVERTISE_1000XPSE_ASYM
#define ADVERTISE_PAUSE_ASYM
#define ADVERTISE_1000XPAUSE
#define SUPPORTED_Autoneg
#define BMSR_ANEGCOMPLETE
#define SUPPORTED_1000baseT_Full
#define SUPPORTED_10baseT_Full
#define SUPPORTED_100baseT_Full
#define ADVERTISE_PAUSE_CAP
#define ADVERTISE_1000XFULL
static struct cphy_ops vsc8211_fiber_ops
static int vsc8211_intr_clear(struct cphy *cphy)
#define M_VSC8211_TXFIFODEPTH
int t3_vsc8211_phy_prep(pinfo_t *pinfo, int phy_addr, const struct mdio_ops *mdio_ops)
#define CFG_CHG_INTR_MASK
static int vsc8211_autoneg_restart(struct cphy *cphy)
static int vsc8211_set_automdi(struct cphy *phy, int enable)
static int vsc8211_get_link_status(struct cphy *cphy, int *link_state, int *speed, int *duplex, int *fc)
static int vsc8211_power_down(struct cphy *cphy, int enable)
static int vsc8211_get_link_status_fiber(struct cphy *cphy, int *link_state, int *speed, int *duplex, int *fc)
static int vsc8211_intr_handler(struct cphy *cphy)
static int vsc8211_intr_enable(struct cphy *cphy)
#define V_VSC8211_RXFIFODEPTH(x)
#define V_VSC8211_TXFIFODEPTH(x)
#define M_VSC8211_RXFIFODEPTH
static int vsc8211_set_speed_duplex(struct cphy *phy, int speed, int duplex)
int t3_vsc8211_fifo_depth(adapter_t *adap, unsigned int mtu, int port)
static struct cphy_ops vsc8211_ops
static int vsc8211_autoneg_enable(struct cphy *cphy)
static int vsc8211_intr_disable(struct cphy *cphy)
static int vsc8211_reset(struct cphy *cphy, int wait)
int(* reset)(struct cphy *phy, int wait)
const struct cphy_ops * ops