u32 cmdcfg = bgmac_read(bgmac, BGMAC_CMDCFG);
        u32 new_val = (cmdcfg & mask) | set;
 
-       bgmac_set(bgmac, BGMAC_CMDCFG, BGMAC_CMDCFG_SR);
+       bgmac_set(bgmac, BGMAC_CMDCFG, BGMAC_CMDCFG_SR(bgmac->core->id.rev));
        udelay(2);
 
        if (new_val != cmdcfg || force)
                bgmac_write(bgmac, BGMAC_CMDCFG, new_val);
 
-       bgmac_mask(bgmac, BGMAC_CMDCFG, ~BGMAC_CMDCFG_SR);
+       bgmac_mask(bgmac, BGMAC_CMDCFG, ~BGMAC_CMDCFG_SR(bgmac->core->id.rev));
        udelay(2);
 }
 
                             BGMAC_CMDCFG_PROM |
                             BGMAC_CMDCFG_NLC |
                             BGMAC_CMDCFG_CFE |
-                            BGMAC_CMDCFG_SR,
+                            BGMAC_CMDCFG_SR(core->id.rev),
                             false);
        bgmac->mac_speed = SPEED_UNKNOWN;
        bgmac->mac_duplex = DUPLEX_UNKNOWN;
 
        cmdcfg = bgmac_read(bgmac, BGMAC_CMDCFG);
        bgmac_cmdcfg_maskset(bgmac, ~(BGMAC_CMDCFG_TE | BGMAC_CMDCFG_RE),
-                            BGMAC_CMDCFG_SR, true);
+                            BGMAC_CMDCFG_SR(bgmac->core->id.rev), true);
        udelay(2);
        cmdcfg |= BGMAC_CMDCFG_TE | BGMAC_CMDCFG_RE;
        bgmac_write(bgmac, BGMAC_CMDCFG, cmdcfg);
 
 #define  BGMAC_CMDCFG_TAI                      0x00000200
 #define  BGMAC_CMDCFG_HD                       0x00000400      /* Set if in half duplex mode */
 #define  BGMAC_CMDCFG_HD_SHIFT                 10
-#define  BGMAC_CMDCFG_SR                       0x00000800      /* Set to reset mode */
+#define  BGMAC_CMDCFG_SR_REV0                  0x00000800      /* Set to reset mode, for other revs */
+#define  BGMAC_CMDCFG_SR_REV4                  0x00002000      /* Set to reset mode, only for core rev 4 */
+#define  BGMAC_CMDCFG_SR(rev)  ((rev == 4) ? BGMAC_CMDCFG_SR_REV4 : BGMAC_CMDCFG_SR_REV0)
 #define  BGMAC_CMDCFG_ML                       0x00008000      /* Set to activate mac loopback mode */
 #define  BGMAC_CMDCFG_AE                       0x00400000
 #define  BGMAC_CMDCFG_CFE                      0x00800000