SPIREG_WRITE
SPIREG_WRITE(sc, SPI_ENR, 0);
SPIREG_WRITE(sc, SPI_IMR, 0);
SPIREG_WRITE(sc, SPI_ENR, 0);
SPIREG_WRITE(sc, SPI_SER, 0);
SPIREG_WRITE(sc, SPI_CTRLR0, ctrlr0);
SPIREG_WRITE(sc, SPI_BAUDR, divider);
SPIREG_WRITE(sc, SPI_DMACR, 0);
SPIREG_WRITE(sc, SPI_DMATDLR, 0);
SPIREG_WRITE(sc, SPI_DMARDLR, 0);
SPIREG_WRITE(sc, SPI_IPR, 0);
SPIREG_WRITE(sc, SPI_IMR, 0);
SPIREG_WRITE(sc, SPI_ICR, SPI_ICR_ALL);
SPIREG_WRITE(sc, SPI_ENR, 1);
SPIREG_WRITE(sc, SPI_RXFTLR, len - 1);
SPIREG_WRITE(sc, SPI_TXFTLR, SPI_FIFOLEN - len);
SPIREG_WRITE(sc, SPI_TXFTLR, 0);
SPIREG_WRITE(sc, SPI_IMR, imr);
SPIREG_WRITE(sc, SPI_SER, 1 << st->st_slave);
SPIREG_WRITE(sc, SPI_IMR, 0);
SPIREG_WRITE(sc, SPI_SER, 0);
SPIREG_WRITE(sc, SPI_ICR, icr);
SPIREG_WRITE(sc, SPI_CTL, SPI_CTL_SSPOL | SPI_CTL_RF_RST
SPIREG_WRITE(sc, SPI_DMACTL, 0);
SPIREG_WRITE(sc, SPI_WAIT, 0);
SPIREG_WRITE(sc, SPI_INTCTL, 0);
SPIREG_WRITE(sc, SPI_INT_STA, ~0);
SPIREG_WRITE(sc, SPI_CTL, (ctl | SPI_CTL_RF_RST | SPI_CTL_TF_RST) & ~SPI_CTL_EN);
SPIREG_WRITE(sc, SPI_CCTL, cctl);
SPIREG_WRITE(sc, SPI_CTL, ctl);
SPIREG_WRITE(sc, SPI_INTCTL, intctl);
SPIREG_WRITE(sc, SPI_BC, __SHIFTIN(burstcount, SPI_BC_BC));
SPIREG_WRITE(sc, SPI_TC, __SHIFTIN(burstcount, SPI_TC_WTC));
SPIREG_WRITE(sc, SPI_CTL, ctl);
SPIREG_WRITE(sc, SPI_INTCTL, 0);
SPIREG_WRITE(sc, SPI_INT_STA, isr);
SPIREG_WRITE(sc, SPI_INT_STA, isr);
SPIREG_WRITE(sc, SPI_GCR, gcr);
SPIREG_WRITE(sc, SPI_GCR, gcr);
SPIREG_WRITE(sc, SPI_IER, SPI_IER_DEFAULT);
SPIREG_WRITE(sc, SPI_CCTL, cctl);
SPIREG_WRITE(sc, SPI_INT_STA, isr);
SPIREG_WRITE(sc, SPI_BC, __SHIFTIN(burstcount, SPI_BC_MBC));
SPIREG_WRITE(sc, SPI_TC, __SHIFTIN(burstcount, SPI_TC_MWTC));
SPIREG_WRITE(sc, SPI_BCC, __SHIFTIN(burstcount, SPI_BCC_STC));
SPIREG_WRITE(sc, SPI_IER, ier);
SPIREG_WRITE(sc, SPI_TCR, tcr|SPI_TCR_XCH);
SPIREG_WRITE(sc, SPI_INT_STA, isr);
SPIREG_WRITE(sc, SPI_IER, SPI_IER_DEFAULT);