MMC_WRITE
MMC_WRITE(sc, SD_EMMC_START, desc_paddr | START_DESC_BUSY); /* starts transfer */
MMC_WRITE(sc, SD_EMMC_CMD_CFG, cmdflags | MESONGX_MMC_FLAGS_END_OF_CHAIN);
MMC_WRITE(sc, SD_EMMC_CMD_DAT, 0);
MMC_WRITE(sc, SD_EMMC_CMD_ARG, cmd->c_arg); /* starts transfer */
MMC_WRITE(sc, SD_EMMC_START, 0);
MMC_WRITE(sc, SD_EMMC_IRQ_EN, val & ~irq_mask);
MMC_WRITE(sc, SD_EMMC_IRQ_EN, val | IRQ_EN_IRQ_SDIO);
MMC_WRITE(sc, SD_EMMC_STATUS, STATUS_IRQ_SDIO);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SD_EMMC_CLOCK, val);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SD_EMMC_STATUS, irq_en);
MMC_WRITE(sc, SD_EMMC_START, 0);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SD_EMMC_START, 0);
MMC_WRITE(sc, SD_EMMC_STATUS, MMC_READ(sc, SD_EMMC_STATUS));
MMC_WRITE(sc, SD_EMMC_IRQ_EN, val | irq_mask);
MMC_WRITE(sc, SD_EMMC_CFG, val);
MMC_WRITE(sc, SUNXI_MMC_DLBA, desc_paddr >> sc->sc_config->idma_shift);
MMC_WRITE(sc, SUNXI_MMC_FTRGLEVEL, sc->sc_config->dma_ftrglevel);
MMC_WRITE(sc, SUNXI_MMC_GCTRL, val);
MMC_WRITE(sc, SUNXI_MMC_GCTRL, val);
MMC_WRITE(sc, SUNXI_MMC_DMAC, SUNXI_MMC_DMAC_SOFTRESET);
MMC_WRITE(sc, SUNXI_MMC_IDIE, val);
MMC_WRITE(sc, SUNXI_MMC_DMAC,
MMC_WRITE(sc, SUNXI_MMC_DMAC, 0);
MMC_WRITE(sc, SUNXI_MMC_IDIE, 0);
MMC_WRITE(sc, SUNXI_MMC_BLKSZ, cmd->c_blklen);
MMC_WRITE(sc, SUNXI_MMC_BYTECNT, nblks * cmd->c_blklen);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask | sc->sc_intr_card);
MMC_WRITE(sc, SUNXI_MMC_RINT, 0x7fff);
MMC_WRITE(sc, SUNXI_MMC_A12A,
MMC_WRITE(sc, SUNXI_MMC_ARG, cmd->c_arg);
MMC_WRITE(sc, SUNXI_MMC_CMD, cmdval | cmd->c_opcode);
MMC_WRITE(sc, SUNXI_MMC_IMASK, sc->sc_intr_card);
MMC_WRITE(sc, SUNXI_MMC_RINT, 0x7fff);
MMC_WRITE(sc, SUNXI_MMC_IDST, 0x337);
MMC_WRITE(sc, SUNXI_MMC_GCTRL,
MMC_WRITE(sc, SUNXI_MMC_GCTRL,
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask | sc->sc_intr_card);
MMC_WRITE(sc, SUNXI_MMC_HWRST, 0);
MMC_WRITE(sc, SUNXI_MMC_HWRST, 1);
MMC_WRITE(sc, SUNXI_MMC_IDST, idst);
MMC_WRITE(sc, SUNXI_MMC_RINT, mint);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask & ~SUNXI_MMC_INT_SDIO_INT);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask & ~SUNXI_MMC_INT_ERROR);
MMC_WRITE(sc, SUNXI_MMC_IDIE, 0);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask & ~SUNXI_MMC_INT_CMD_DONE);
MMC_WRITE(sc, SUNXI_MMC_IMASK, imask & ~dmadone_mask);
MMC_WRITE(sc, SUNXI_MMC_GCTRL, gctrl);
MMC_WRITE(sc, SUNXI_MMC_TIMEOUT, 0xffffffff);
MMC_WRITE(sc, SUNXI_MMC_IMASK, 0);
MMC_WRITE(sc, SUNXI_MMC_RINT, 0xffffffff);
MMC_WRITE(sc, SUNXI_MMC_GCTRL, gctrl);
MMC_WRITE(sc, SUNXI_MMC_CMD, cmd);
MMC_WRITE(sc, SUNXI_MMC_CLKCR, clkcr);
MMC_WRITE(sc, SUNXI_MMC_CLKCR, clkcr);
MMC_WRITE(sc, SUNXI_MMC_CLKCR, clkcr);
MMC_WRITE(sc, SUNXI_MMC_NTSR, ntsr);
MMC_WRITE(sc, SUNXI_MMC_SAMP_DL, SUNXI_MMC_SAMP_DL_SW_EN);
MMC_WRITE(sc, SUNXI_MMC_GCTRL, gctrl);
MMC_WRITE(sc, SUNXI_MMC_CLKCR, clkcr);
MMC_WRITE(sc, SUNXI_MMC_CLKCR, clkcr);
MMC_WRITE(sc, SUNXI_MMC_WIDTH, SUNXI_MMC_WIDTH_1);
MMC_WRITE(sc, SUNXI_MMC_WIDTH, SUNXI_MMC_WIDTH_4);
MMC_WRITE(sc, SUNXI_MMC_WIDTH, SUNXI_MMC_WIDTH_8);
MMC_WRITE(sc, DWC_MMC_PWREN, 0);
MMC_WRITE(sc, DWC_MMC_PWREN, 1);
MMC_WRITE(sc, DWC_MMC_GCTRL, ctrl);
MMC_WRITE(sc, DWC_MMC_DMAC, DWC_MMC_DMAC_SOFTRESET);
MMC_WRITE(sc, DWC_MMC_GCTRL,
MMC_WRITE(sc, DWC_MMC_CLKSRC, 0);
MMC_WRITE(sc, DWC_MMC_TIMEOUT, 0xffffffff);
MMC_WRITE(sc, DWC_MMC_IMASK, 0);
MMC_WRITE(sc, DWC_MMC_RINT, 0xffffffff);
MMC_WRITE(sc, DWC_MMC_FIFOTH, fifoth);
MMC_WRITE(sc, DWC_MMC_UHS, 0);
MMC_WRITE(sc, DWC_MMC_GCTRL, ctrl);
MMC_WRITE(sc, DWC_MMC_ARG, 0);
MMC_WRITE(sc, DWC_MMC_CMD, cmd);
MMC_WRITE(sc, DWC_MMC_CLKDIV, clk_div);
MMC_WRITE(sc, DWC_MMC_CLKSRC, 0);
MMC_WRITE(sc, DWC_MMC_CLKENA, 0);
MMC_WRITE(sc, DWC_MMC_CLKENA, clkena);
MMC_WRITE(sc, DWC_MMC_WIDTH, DWC_MMC_WIDTH_1);
MMC_WRITE(sc, DWC_MMC_WIDTH, DWC_MMC_WIDTH_4);
MMC_WRITE(sc, DWC_MMC_WIDTH, DWC_MMC_WIDTH_8);
MMC_WRITE(sc, DWC_MMC_DLBA, desc_paddr);
MMC_WRITE(sc, DWC_MMC_GCTRL, val);
MMC_WRITE(sc, DWC_MMC_GCTRL, val);
MMC_WRITE(sc, DWC_MMC_IDIE, val);
MMC_WRITE(sc, DWC_MMC_DMAC,
MMC_WRITE(sc, DWC_MMC_DMAC, 0);
MMC_WRITE(sc, DWC_MMC_IDIE, 0);
MMC_WRITE(sc, DWC_MMC_IDST, 0xffffffff);
MMC_WRITE(sc, DWC_MMC_GCTRL,
MMC_WRITE(sc, DWC_MMC_TIMEOUT, 0xffffffff);
MMC_WRITE(sc, DWC_MMC_BLKSZ, cmd->c_blklen);
MMC_WRITE(sc, DWC_MMC_BYTECNT,
MMC_WRITE(sc, DWC_MMC_CARDTHRCTL,
MMC_WRITE(sc, DWC_MMC_IMASK, imask | sc->sc_intr_card);
MMC_WRITE(sc, DWC_MMC_RINT, 0x7fff);
MMC_WRITE(sc, DWC_MMC_ARG, cmd->c_arg);
MMC_WRITE(sc, DWC_MMC_CMD, cmdval | cmd->c_opcode);
MMC_WRITE(sc, DWC_MMC_PLDMND, 1);
MMC_WRITE(sc, DWC_MMC_IMASK, sc->sc_intr_card);
MMC_WRITE(sc, DWC_MMC_IDIE, 0);
MMC_WRITE(sc, DWC_MMC_RINT, 0x7fff);
MMC_WRITE(sc, DWC_MMC_IDST, 0xffffffff);
MMC_WRITE(sc, DWC_MMC_DMAC, DWC_MMC_DMAC_SOFTRESET);
MMC_WRITE(sc, DWC_MMC_IMASK, imask);
MMC_WRITE(sc, DWC_MMC_IMASK, imask | sc->sc_intr_card);
MMC_WRITE(sc, DWC_MMC_IDST, idst);
MMC_WRITE(sc, DWC_MMC_RINT, mint);
MMC_WRITE(sc, DWC_MMC_IMASK, imask & ~sc->sc_intr_cardmask);
MMC_WRITE(sc, DWC_MMC_IMASK, imask & ~DWC_MMC_INT_ERROR);
MMC_WRITE(sc, DWC_MMC_IDIE, 0);
MMC_WRITE(sc, DWC_MMC_IMASK, imask & ~DWC_MMC_INT_CMD_DONE);
MMC_WRITE(sc, DWC_MMC_IMASK, imask & ~dmadone_mask);