DC_SIO
#define SIO_SET(x) DC_SETBIT(sc, DC_SIO, (x))
#define SIO_CLR(x) DC_CLRBIT(sc, DC_SIO, (x))
CSR_WRITE_4(sc, DC_SIO, DC_SIO_EESEL);
DC_SETBIT(sc, DC_SIO, DC_SIO_ROMCTL_READ);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CS);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_DATAIN);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_DATAIN);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CLK);
if (!(CSR_READ_4(sc, DC_SIO) & DC_SIO_EE_DATAOUT)) {
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
CSR_WRITE_4(sc, DC_SIO, DC_SIO_EESEL);
DC_SETBIT(sc, DC_SIO, DC_SIO_ROMCTL_READ);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CS);
CSR_WRITE_4(sc, DC_SIO, DC_SIO_EESEL);
DC_SETBIT(sc, DC_SIO, DC_SIO_ROMCTL_READ);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CS);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CS);
CSR_WRITE_4(sc, DC_SIO, 0x00000000);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_DATAIN);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_DATAIN);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
r = CSR_READ_4(sc, DC_SIO);
*dest = (u_int16_t)CSR_READ_4(sc, DC_SIO)&0xff;
*dest |= ((u_int16_t)CSR_READ_4(sc, DC_SIO)&0xff) << 8;
CSR_WRITE_4(sc, DC_SIO, DC_SIO_EESEL);
DC_SETBIT(sc, DC_SIO, DC_SIO_ROMCTL_READ);
DC_CLRBIT(sc, DC_SIO, DC_SIO_EE_CLK);
DC_SETBIT(sc, DC_SIO, DC_SIO_EE_CS);
if (CSR_READ_4(sc, DC_SIO) & DC_SIO_EE_DATAOUT)
CSR_WRITE_4(sc, DC_SIO,
CSR_WRITE_4(sc, DC_SIO, DC_SIO_ROMCTL_WRITE);
DC_SETBIT(sc, DC_SIO, DC_SIO_MII_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_MII_CLK);
CSR_WRITE_4(sc, DC_SIO, DC_SIO_ROMCTL_READ|DC_SIO_MII_DIR);
CSR_READ_4(sc, DC_SIO);
DC_SETBIT(sc, DC_SIO, DC_SIO_MII_CLK);
DC_CLRBIT(sc, DC_SIO, DC_SIO_MII_CLK);
if (CSR_READ_4(sc, DC_SIO) & DC_SIO_MII_DATAIN)
CSR_WRITE_4(sc, DC_SIO, DC_SIO_ROMCTL_WRITE);