Lines Matching refs:cmd

454 issp_exec_command(sdmmc_chipset_handle_t sch, struct sdmmc_command *cmd)  in issp_exec_command()  argument
461 if (cmd->c_data != NULL && cmd->c_datalen > MAX_TRANSFER_SIZE) { in issp_exec_command()
463 MAX_TRANSFER_SIZE, cmd->c_datalen); in issp_exec_command()
464 cmd->c_error = ENODEV; in issp_exec_command()
473 cmd->c_error = error; in issp_exec_command()
481 cmd->c_error = error; in issp_exec_command()
488 if (cmd->c_data != NULL && (cmd->c_datalen / cmd->c_blklen) > 1) { in issp_exec_command()
490 issp_create_dma_cmd_list_multi(sc, dma_chain, cmd); in issp_exec_command()
491 } else if (cmd->c_data != NULL && cmd->c_datalen) { in issp_exec_command()
493 issp_create_dma_cmd_list_single(sc, dma_chain, cmd); in issp_exec_command()
496 issp_create_dma_cmd_list(sc, dma_chain, cmd); in issp_exec_command()
509 cmd->c_error = 0; in issp_exec_command()
528 cmd->c_error = sc->sc_dma_error; in issp_exec_command()
533 cmd->c_error = sc->sc_dma_error; in issp_exec_command()
550 cmd->c_error = sc->sc_irq_error >> 8; in issp_exec_command()
554 if (ISSET(cmd->c_flags, SCF_RSP_PRESENT)) { in issp_exec_command()
555 cmd->c_resp[0] = SSP_RD(sc, HW_SSP_SDRESP0); in issp_exec_command()
556 if (ISSET(cmd->c_flags, SCF_RSP_136)) { in issp_exec_command()
557 cmd->c_resp[1] = SSP_RD(sc, HW_SSP_SDRESP1); in issp_exec_command()
558 cmd->c_resp[2] = SSP_RD(sc, HW_SSP_SDRESP2); in issp_exec_command()
559 cmd->c_resp[3] = SSP_RD(sc, HW_SSP_SDRESP3); in issp_exec_command()
564 cmd->c_resp[0] >>= 8; /* Remove CRC7 + LSB. */ in issp_exec_command()
565 cmd->c_resp[0] |= (0x000000FF & cmd->c_resp[1]) << 24; in issp_exec_command()
566 cmd->c_resp[1] >>= 8; in issp_exec_command()
567 cmd->c_resp[1] |= (0x000000FF & cmd->c_resp[2]) << 24; in issp_exec_command()
568 cmd->c_resp[2] >>= 8; in issp_exec_command()
569 cmd->c_resp[2] |= (0x000000FF & cmd->c_resp[3]) << 24; in issp_exec_command()
570 cmd->c_resp[3] >>= 8; in issp_exec_command()
807 struct sdmmc_command *cmd) in issp_create_dma_cmd_list_multi() argument
813 blocks = cmd->c_datalen / cmd->c_blklen; in issp_create_dma_cmd_list_multi()
818 apbdma_cmd_buf(&dma_cmd[nblk], cmd->c_blklen * nblk, cmd->c_dmamap); in issp_create_dma_cmd_list_multi()
823 __SHIFTIN(cmd->c_blklen, APBDMA_CMD_XFER_COUNT) | in issp_create_dma_cmd_list_multi()
827 if (!ISSET(cmd->c_flags, SCF_RSP_CRC)) { in issp_create_dma_cmd_list_multi()
835 __SHIFTIN(cmd->c_datalen, HW_SSP_CTRL0_XFER_COUNT); in issp_create_dma_cmd_list_multi()
837 if (ISSET(cmd->c_flags, SCF_RSP_PRESENT)) { in issp_create_dma_cmd_list_multi()
840 if (ISSET(cmd->c_flags, SCF_RSP_136)) { in issp_create_dma_cmd_list_multi()
849 __SHIFTIN(ffs(cmd->c_blklen) - 1, HW_SSP_CMD0_BLOCK_SIZE) | in issp_create_dma_cmd_list_multi()
851 __SHIFTIN(cmd->c_opcode, HW_SSP_CMD0_CMD); in issp_create_dma_cmd_list_multi()
853 dma_cmd[nblk].pio_words[PIO_WORD_CMD1] = cmd->c_arg; in issp_create_dma_cmd_list_multi()
855 if (ISSET(cmd->c_flags, SCF_CMD_READ)) { in issp_create_dma_cmd_list_multi()
869 apbdma_cmd_buf(&dma_cmd[nblk], cmd->c_blklen * nblk, in issp_create_dma_cmd_list_multi()
870 cmd->c_dmamap); in issp_create_dma_cmd_list_multi()
876 __SHIFTIN(cmd->c_blklen, APBDMA_CMD_XFER_COUNT) | in issp_create_dma_cmd_list_multi()
879 if (ISSET(cmd->c_flags, SCF_CMD_READ)) { in issp_create_dma_cmd_list_multi()
894 apbdma_cmd_buf(&dma_cmd[nblk], cmd->c_blklen * nblk, cmd->c_dmamap); in issp_create_dma_cmd_list_multi()
897 __SHIFTIN(cmd->c_blklen, APBDMA_CMD_XFER_COUNT) | in issp_create_dma_cmd_list_multi()
901 if (ISSET(cmd->c_flags, SCF_CMD_READ)) { in issp_create_dma_cmd_list_multi()
917 struct sdmmc_command *cmd) in issp_create_dma_cmd_list_single() argument
923 dma_cmd[0].control = __SHIFTIN(cmd->c_datalen, APBDMA_CMD_XFER_COUNT) | in issp_create_dma_cmd_list_single()
929 apbdma_cmd_buf(&dma_cmd[0], 0, cmd->c_dmamap); in issp_create_dma_cmd_list_single()
931 if (!ISSET(cmd->c_flags, SCF_RSP_CRC)) { in issp_create_dma_cmd_list_single()
940 __SHIFTIN(cmd->c_datalen, HW_SSP_CTRL0_XFER_COUNT); in issp_create_dma_cmd_list_single()
942 if (ISSET(cmd->c_flags, SCF_RSP_PRESENT)) { in issp_create_dma_cmd_list_single()
944 if (ISSET(cmd->c_flags, SCF_RSP_136)) { in issp_create_dma_cmd_list_single()
954 __SHIFTIN(cmd->c_opcode, HW_SSP_CMD0_CMD); in issp_create_dma_cmd_list_single()
955 dma_cmd[0].pio_words[PIO_WORD_CMD1] = cmd->c_arg; in issp_create_dma_cmd_list_single()
957 if (ISSET(cmd->c_flags, SCF_CMD_READ)) { in issp_create_dma_cmd_list_single()
974 struct sdmmc_command *cmd) in issp_create_dma_cmd_list() argument
985 if (!ISSET(cmd->c_flags, SCF_RSP_CRC)) { in issp_create_dma_cmd_list()
994 if (ISSET(cmd->c_flags, SCF_RSP_PRESENT)) { in issp_create_dma_cmd_list()
996 if (ISSET(cmd->c_flags, SCF_RSP_136)) { in issp_create_dma_cmd_list()
1005 __SHIFTIN(cmd->c_opcode, HW_SSP_CMD0_CMD); in issp_create_dma_cmd_list()
1006 dma_cmd[0].pio_words[PIO_WORD_CMD1] = cmd->c_arg; in issp_create_dma_cmd_list()