SDI_REG
control = SDI_REG(SDI_CON);
SDI_REG(SDI_CON) = control & ~SDICON_ENCLK;
SDI_REG(SDI_PRE) = div-1;
SDI_REG(SDI_CON) = control | SDICON_ENCLK;
if (div-1 != SDI_REG(SDI_PRE)) {
SDI_REG(SDI_DAT_FSTA) = 0xFFFFFFFF;
SDI_REG(SDI_DAT_STA) = 0xFFFFFFFF;
SDI_REG(SDI_CMD_STA) = 0xFFFFFFFF;
SDI_REG(SDI_CMD_ARG) = cmd->c_arg;
SDI_REG(SDI_DTIMER) = 0x007FFFFF;
SDI_REG(SDI_BSIZE) = cmd->c_blklen;
SDI_REG(SDI_DAT_CON) = data_control;
SDI_REG(SDI_DAT_CON) = data_control;
SDI_REG(SDI_CMD_CON) = cmd_control;
DPRINTF(("Status before cmd sent: 0x%X\n", SDI_REG(SDI_CMD_STA)));
while( !(SDI_REG(SDI_CMD_STA) & SDICMDSTA_CMD_SENT));
SDI_REG(SDI_CMD_STA) |= SDICMDSTA_CMD_SENT;
status = SDI_REG(SDI_CMD_STA);
w[0] = SDI_REG(SDI_RSP3);
w[1] = SDI_REG(SDI_RSP2);
w[2] = SDI_REG(SDI_RSP1);
w[3] = SDI_REG(SDI_RSP0);
cmd->c_resp[0] = SDI_REG(SDI_RSP0);
cmd->c_resp[1] = SDI_REG(SDI_RSP1);
status = SDI_REG(SDI_DAT_CNT);
data_status = SDI_REG(SDI_DAT_STA);
data_status = SDI_REG(SDI_DAT_STA);
SDI_REG(SDI_CMD_STA) = 0xFFFFFFFF;
SDI_REG(SDI_DAT_CON) = 0x0;
status = SDI_REG(SDI_DAT_FSTA);
fifo_status = SDI_REG(SDI_DAT_FSTA);
buf = SDI_REG(SDI_DAT_LI_W);
DPRINTF(("SDI_INT_MASK: 0x%X\n", SDI_REG(SDI_INT_MASK)));
SDI_REG(SDI_INT_MASK) = 0x0;
SDI_REG(SDI_DTIMER) = 0x007FFFFF;
SDI_REG(SDI_CON) &= ~SDICON_ENCLK;
SDI_REG(SDI_CON) = SDICON_SD_RESET | SDICON_CTYP_SD;