|
@@ -2923,6 +2923,7 @@ static u16 wol_calc_crc(int size, u8 *pattern, u8 *mask_pattern)
|
|
|
static int velocity_set_wol(struct velocity_info *vptr)
|
|
|
{
|
|
|
struct mac_regs __iomem *regs = vptr->mac_regs;
|
|
|
+ enum speed_opt spd_dpx = vptr->options.spd_dpx;
|
|
|
static u8 buf[256];
|
|
|
int i;
|
|
|
|
|
@@ -2968,6 +2969,12 @@ static int velocity_set_wol(struct velocity_info *vptr)
|
|
|
|
|
|
writew(0x0FFF, ®s->WOLSRClr);
|
|
|
|
|
|
+ if (spd_dpx == SPD_DPX_1000_FULL)
|
|
|
+ goto mac_done;
|
|
|
+
|
|
|
+ if (spd_dpx != SPD_DPX_AUTO)
|
|
|
+ goto advertise_done;
|
|
|
+
|
|
|
if (vptr->mii_status & VELOCITY_AUTONEG_ENABLE) {
|
|
|
if (PHYID_GET_PHY_ID(vptr->phy_id) == PHYID_CICADA_CS8201)
|
|
|
MII_REG_BITS_ON(AUXCR_MDPPS, MII_NCONFIG, vptr->mac_regs);
|
|
@@ -2978,6 +2985,7 @@ static int velocity_set_wol(struct velocity_info *vptr)
|
|
|
if (vptr->mii_status & VELOCITY_SPEED_1000)
|
|
|
MII_REG_BITS_ON(BMCR_ANRESTART, MII_BMCR, vptr->mac_regs);
|
|
|
|
|
|
+advertise_done:
|
|
|
BYTE_REG_BITS_ON(CHIPGCR_FCMODE, ®s->CHIPGCR);
|
|
|
|
|
|
{
|
|
@@ -2987,6 +2995,7 @@ static int velocity_set_wol(struct velocity_info *vptr)
|
|
|
writeb(GCR, ®s->CHIPGCR);
|
|
|
}
|
|
|
|
|
|
+mac_done:
|
|
|
BYTE_REG_BITS_OFF(ISR_PWEI, ®s->ISR);
|
|
|
/* Turn on SWPTAG just before entering power mode */
|
|
|
BYTE_REG_BITS_ON(STICKHW_SWPTAG, ®s->STICKHW);
|