Lines Matching refs:cmd

347 sdhost_dma_transfer(struct sdhost_softc *sc, struct sdmmc_command *cmd)  in sdhost_dma_transfer()  argument
354 for (seg = 0; seg < cmd->c_dmamap->dm_nsegs; seg++) { in sdhost_dma_transfer()
358 cmd->c_dmamap->dm_segs[seg].ds_len; in sdhost_dma_transfer()
366 if (ISSET(cmd->c_flags, SCF_CMD_READ)) { in sdhost_dma_transfer()
377 cmd->c_dmamap->dm_segs[seg].ds_addr; in sdhost_dma_transfer()
389 cmd->c_dmamap->dm_segs[seg].ds_addr; in sdhost_dma_transfer()
393 if (seg == cmd->c_dmamap->dm_nsegs - 1) { in sdhost_dma_transfer()
424 sdhost_dma_wait(struct sdhost_softc *sc, struct sdmmc_command *cmd) in sdhost_dma_wait() argument
439 cmd->c_resid = 0; in sdhost_dma_wait()
477 const uint32_t cmd = SDHOST_READ(sc, SDCMD); in sdhost_wait_idle() local
478 if ((cmd & SDCMD_NEW) == 0) in sdhost_wait_idle()
600 sdhost_exec_command(sdmmc_chipset_handle_t sch, struct sdmmc_command *cmd) in sdhost_exec_command() argument
609 cmd->c_opcode, cmd->c_flags, cmd->c_data, cmd->c_datalen, in sdhost_exec_command()
610 cmd->c_blklen); in sdhost_exec_command()
620 cmd->c_error = sdhost_wait_idle(sc, 5000); in sdhost_exec_command()
621 if (cmd->c_error != 0) { in sdhost_exec_command()
629 if (!ISSET(cmd->c_flags, SCF_RSP_PRESENT)) in sdhost_exec_command()
631 if (ISSET(cmd->c_flags, SCF_RSP_136)) in sdhost_exec_command()
633 if (ISSET(cmd->c_flags, SCF_RSP_BSY)) in sdhost_exec_command()
636 if (cmd->c_datalen > 0) { in sdhost_exec_command()
637 if (ISSET(cmd->c_flags, SCF_CMD_READ)) in sdhost_exec_command()
642 nblks = cmd->c_datalen / cmd->c_blklen; in sdhost_exec_command()
643 if (nblks == 0 || (cmd->c_datalen % cmd->c_blklen) != 0) in sdhost_exec_command()
646 SDHOST_WRITE(sc, SDHBCT, cmd->c_blklen); in sdhost_exec_command()
649 cmd->c_resid = cmd->c_datalen; in sdhost_exec_command()
650 cmd->c_error = sdhost_dma_transfer(sc, cmd); in sdhost_exec_command()
651 if (cmd->c_error != 0) { in sdhost_exec_command()
654 cmd->c_error); in sdhost_exec_command()
660 SDHOST_WRITE(sc, SDARG, cmd->c_arg); in sdhost_exec_command()
661 SDHOST_WRITE(sc, SDCMD, cmdval | cmd->c_opcode); in sdhost_exec_command()
663 if (cmd->c_datalen > 0) { in sdhost_exec_command()
664 cmd->c_error = sdhost_dma_wait(sc, cmd); in sdhost_exec_command()
665 if (cmd->c_error != 0) { in sdhost_exec_command()
668 "wait dma failed: %d\n", cmd->c_error); in sdhost_exec_command()
674 cmd->c_error = sdhost_wait_idle(sc, 5000); in sdhost_exec_command()
675 if (cmd->c_error != 0) { in sdhost_exec_command()
679 SDHOST_READ(sc, SDCMD), cmd->c_error); in sdhost_exec_command()
688 cmd->c_error = EIO; in sdhost_exec_command()
692 if (ISSET(cmd->c_flags, SCF_RSP_PRESENT)) { in sdhost_exec_command()
693 if (ISSET(cmd->c_flags, SCF_RSP_136)) { in sdhost_exec_command()
694 cmd->c_resp[0] = SDHOST_READ(sc, SDRSP0); in sdhost_exec_command()
695 cmd->c_resp[1] = SDHOST_READ(sc, SDRSP1); in sdhost_exec_command()
696 cmd->c_resp[2] = SDHOST_READ(sc, SDRSP2); in sdhost_exec_command()
697 cmd->c_resp[3] = SDHOST_READ(sc, SDRSP3); in sdhost_exec_command()
698 if (ISSET(cmd->c_flags, SCF_RSP_CRC)) { in sdhost_exec_command()
699 cmd->c_resp[0] = (cmd->c_resp[0] >> 8) | in sdhost_exec_command()
700 (cmd->c_resp[1] << 24); in sdhost_exec_command()
701 cmd->c_resp[1] = (cmd->c_resp[1] >> 8) | in sdhost_exec_command()
702 (cmd->c_resp[2] << 24); in sdhost_exec_command()
703 cmd->c_resp[2] = (cmd->c_resp[2] >> 8) | in sdhost_exec_command()
704 (cmd->c_resp[3] << 24); in sdhost_exec_command()
705 cmd->c_resp[3] = (cmd->c_resp[3] >> 8); in sdhost_exec_command()
708 cmd->c_resp[0] = SDHOST_READ(sc, SDRSP0); in sdhost_exec_command()
713 cmd->c_flags |= SCF_ITSDONE; in sdhost_exec_command()
719 if (cmd->c_error != 0) in sdhost_exec_command()
721 cmd->c_error); in sdhost_exec_command()