sw32
sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxDESC);
sw32(cr, RxENA | sr32(cr));
sw32(ier, IE);
sw32(rfcr, rfcrSave & ~RFEN);
sw32(rfcr, i << RFADDR_shift);
sw32(rfdr, w);
sw32(rfcr, rfcrSave | RFEN);
sw32(txdp, sis_priv->tx_ring_dma);
sw32(rxdp, sis_priv->rx_ring_dma);
sw32(cfg, ~EXD & sr32(cfg));
sw32(cfg, EXD | sr32(cfg));
sw32(txcfg, tx_flags);
sw32(rxcfg, rx_flags);
sw32(imr, 0x0000);
sw32(txdp, sis_priv->tx_ring_dma);
sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxDESC);
sw32(cr, TxENA | sr32(cr));
sw32(cr , RxENA | sr32(cr));
sw32(imr, 0x0000);
sw32(ier, 0x0000);
sw32(cr, RxDIS | TxDIS | sr32(cr));
sw32(pmctrl, pmctrl_bits);
sw32(pmctrl, pmctrl_bits);
sw32(mear, EEREQ);
sw32(mear, EEDONE);
sw32(rfcr, (u32)(0x00000004 + i) << RFADDR_shift);
sw32(rfdr, mc_filter[i]);
sw32(rfcr, RFEN | rx_mode);
sw32(cr, cr_saved | TxDIS | RxDIS);
sw32(txcfg, sr32(txcfg) | TxMLB);
sw32(rxcfg, sr32(rxcfg) | RxATX);
sw32(cr, cr_saved);
sw32(ier, 0);
sw32(imr, 0);
sw32(rfcr, 0);
sw32(cr, RxRESET | TxRESET | RESET | sr32(cr));
sw32(cfg, PESEL | RND_CNT);
sw32(cfg, PESEL);
sw32(cr, RxDIS | TxDIS | sr32(cr));
sw32(imr, RxSOVR | RxORN | RxERR | RxOK | TxURN | TxERR | TxDESC);
sw32(cr, RxENA | sr32(cr));
sw32(ier, IE);
sw32(cr, rfcrSave | RELOAD);
sw32(cr, 0);
sw32(rfcr, rfcrSave & ~RFEN);
sw32(rfcr, (i << RFADDR_shift));
sw32(rfcr, rfcrSave | RFEN);
sw32(mear, EEREQ);
sw32(mear, EEDONE);
sw32(cr, ACCESSMODE | sr32(cr));
sw32(mear, 0);
sw32(mear, EECS);
sw32(mear, dataval);
sw32(mear, dataval | EECLK);
sw32(mear, EECS);
sw32(mear, EECS);
sw32(mear, EECS | EECLK);
sw32(mear, 0);
sw32(mear, MDIO | MDDIR);
sw32(mear, MDIO | MDDIR | MDC);
sw32(mear, MDDIR | MDIO);
sw32(mear, MDDIR | MDIO | MDC);
sw32(mear, dataval);
sw32(mear, dataval | MDC);
sw32(mear, 0);
sw32(mear, MDC);
sw32(mear, 0x00);
sw32(mear, dataval);
sw32(mear, dataval | MDC);
sw32(mear, 0x00);