Lines Matching refs:cmd

152 plmmc_intr_xfer(struct plmmc_softc *sc, struct sdmmc_command *cmd)  in plmmc_intr_xfer()  argument
156 if (cmd == NULL) { in plmmc_intr_xfer()
161 if (cmd->c_buf == NULL) { in plmmc_intr_xfer()
172 if (cmd->c_flags & SCF_CMD_READ) in plmmc_intr_xfer()
180 if (cmd->c_flags & SCF_CMD_READ) in plmmc_intr_xfer()
181 MMCI_READ_MULTI(sc, MMCI_FIFO_REG, (uint32_t *)cmd->c_buf, len / 4); in plmmc_intr_xfer()
183 MMCI_WRITE_MULTI(sc, MMCI_FIFO_REG, (uint32_t *)cmd->c_buf, len / 4); in plmmc_intr_xfer()
186 cmd->c_resid -= len; in plmmc_intr_xfer()
187 cmd->c_buf += len; in plmmc_intr_xfer()
274 plmmc_pio_transfer(struct plmmc_softc *sc, struct sdmmc_command *cmd, in plmmc_pio_transfer() argument
380 plmmc_do_command(sdmmc_chipset_handle_t sch, struct sdmmc_command *cmd) in plmmc_do_command() argument
387 const int xferlen = uimin(cmd->c_resid, PLMMC_MAXXFER); in plmmc_do_command()
389 sc->sc_cmd = cmd; in plmmc_do_command()
397 cmd->c_opcode, cmd->c_flags, cmd->c_datalen, cmd->c_resid, xferlen); in plmmc_do_command()
405 if (cmd->c_flags & SCF_RSP_PRESENT) in plmmc_do_command()
407 if (cmd->c_flags & SCF_RSP_136) in plmmc_do_command()
410 uint32_t arg = cmd->c_arg; in plmmc_do_command()
413 unsigned int nblks = xferlen / cmd->c_blklen; in plmmc_do_command()
414 if (nblks == 0 || (xferlen % cmd->c_blklen) != 0) in plmmc_do_command()
417 const uint32_t dir = (cmd->c_flags & SCF_CMD_READ) ? 1 : 0; in plmmc_do_command()
418 const uint32_t blksize = ffs(cmd->c_blklen) - 1; in plmmc_do_command()
421 MMCI_WRITE(sc, MMCI_DATA_LENGTH_REG, nblks * cmd->c_blklen); in plmmc_do_command()
429 (cmd->c_datalen - cmd->c_resid) / SDMMC_SECTOR_SIZE; in plmmc_do_command()
430 if (!ISSET(cmd->c_flags, SCF_XFER_SDHC)) in plmmc_do_command()
436 MMCI_WRITE(sc, MMCI_COMMAND_REG, cmdval | cmd->c_opcode); in plmmc_do_command()
439 cmd->c_error = plmmc_pio_transfer(sc, cmd, xferlen); in plmmc_do_command()
440 if (cmd->c_error) { in plmmc_do_command()
446 "error (%d) waiting for xfer\n", cmd->c_error); in plmmc_do_command()
451 if ((cmd->c_flags & SCF_RSP_PRESENT) && cmd->c_resid == 0) { in plmmc_do_command()
452 cmd->c_error = plmmc_wait_cmd(sc); in plmmc_do_command()
453 if (cmd->c_error) { in plmmc_do_command()
456 "error (%d) waiting for resp\n", cmd->c_error); in plmmc_do_command()
461 if (cmd->c_flags & SCF_RSP_136) { in plmmc_do_command()
462 cmd->c_resp[3] = MMCI_READ(sc, MMCI_RESP0_REG); in plmmc_do_command()
463 cmd->c_resp[2] = MMCI_READ(sc, MMCI_RESP1_REG); in plmmc_do_command()
464 cmd->c_resp[1] = MMCI_READ(sc, MMCI_RESP2_REG); in plmmc_do_command()
465 cmd->c_resp[0] = MMCI_READ(sc, MMCI_RESP3_REG); in plmmc_do_command()
466 if (cmd->c_flags & SCF_RSP_CRC) { in plmmc_do_command()
467 cmd->c_resp[0] = (cmd->c_resp[0] >> 8) | in plmmc_do_command()
468 (cmd->c_resp[1] << 24); in plmmc_do_command()
469 cmd->c_resp[1] = (cmd->c_resp[1] >> 8) | in plmmc_do_command()
470 (cmd->c_resp[2] << 24); in plmmc_do_command()
471 cmd->c_resp[2] = (cmd->c_resp[2] >> 8) | in plmmc_do_command()
472 (cmd->c_resp[3] << 24); in plmmc_do_command()
473 cmd->c_resp[3] = (cmd->c_resp[3] >> 8); in plmmc_do_command()
476 cmd->c_resp[0] = MMCI_READ(sc, MMCI_RESP0_REG); in plmmc_do_command()
494 plmmc_exec_command(sdmmc_chipset_handle_t sch, struct sdmmc_command *cmd) in plmmc_exec_command() argument
500 cmd->c_opcode, cmd->c_flags, cmd->c_data, cmd->c_datalen); in plmmc_exec_command()
504 cmd->c_resid = cmd->c_datalen; in plmmc_exec_command()
505 cmd->c_buf = cmd->c_data; in plmmc_exec_command()
507 plmmc_do_command(sch, cmd); in plmmc_exec_command()
509 if (cmd->c_resid > 0 && cmd->c_error == 0) { in plmmc_exec_command()
521 } while (cmd->c_resid > 0 && cmd->c_error == 0); in plmmc_exec_command()
522 cmd->c_flags |= SCF_ITSDONE; in plmmc_exec_command()