Lines Matching refs:cmd

142 static uint8_t VirtblkIO(struct Virtblk *blk, uint32_t cmd, uint64_t startSector,
149 blk->req.type = cmd;
153 if (cmd == VIRTIO_BLK_T_IN) {
297 static void VirtMmcFillRespCid(struct MmcCmd *cmd, const struct Virtblk *blk)
299 uint8_t *b = (uint8_t *)cmd->resp;
302 FillCidCsdBits(cmd->resp, MMC_CID_CBX_SBIT, MMC_CID_CBX_WIDTH, 1);
353 static void VirtMmcFillRespCsd(struct MmcCmd *cmd, const struct Virtblk *blk)
355 FillCidCsdBits(cmd->resp, MMC_CSD_STRUCT_SBIT, MMC_CSD_STRUCT_WIDTH, MMC_CSD_STRUCTURE_VER_1_2);
356 FillCidCsdBits(cmd->resp, MMC_CSD_VERS_SBIT, MMC_CSD_VERS_WIDTH, MMC_CSD_SPEC_VER_4);
357 FillCidCsdBits(cmd->resp, MMC_CSD_CCC_SBIT, MMC_CSD_CCC_WIDTH, MMC_CSD_CCC_BASIC |
359 FillCidCsdBits(cmd->resp, MMC_CSD_RBPART_SBIT, 1, 0); /* READ_BL_PARTIAL: no */
360 FillCidCsdBits(cmd->resp, MMC_CSD_WBMISALIGN_SBIT, 1, 0); /* WRITE_BLK_MISALIGN: no */
361 FillCidCsdBits(cmd->resp, MMC_CSD_RBMISALIGN_SBIT, 1, 0); /* READ_BLK_MISALIGN: no */
362 FillCidCsdBits(cmd->resp, MMC_CSD_DSRIMP_SBIT, 1, 0); /* DSR_IMP: no */
365 FillCidCsdBits(cmd->resp, MMC_CSD_RBLEN_SBIT, MMC_CSD_RBLEN_WIDTH, e); /* READ_BL_LEN */
366 FillCidCsdBits(cmd->resp, MMC_CSD_WBLEN_SBIT, MMC_CSD_WBLEN_WIDTH, e); /* WRITE_BL_LEN */
367 FillCidCsdBits(cmd->resp, MMC_CSD_CSIZE_SBIT, MMC_CSD_CSIZE_WIDTH, MMC_CSD_CSIZE_VAL);
369 FillCidCsdBits(cmd->resp, MMC_CSD_RBLEN_SBIT, MMC_CSD_RBLEN_WIDTH, READ_BL_LEN);
370 FillCidCsdBits(cmd->resp, MMC_CSD_WBLEN_SBIT, MMC_CSD_WBLEN_WIDTH, READ_BL_LEN);
372 FillCidCsdBits(cmd->resp, MMC_CSD_CSIZE_SBIT, MMC_CSD_CSIZE_WIDTH, size); /* C_SIZE */
374 FillCidCsdBits(cmd->resp, MMC_CSD_CSIZEMUL_SBIT, MMC_CSD_CSIZEMUL_WIDTH, C_SIZE_MULT);
375 FillCidCsdBits(cmd->resp, MMC_CSD_EGRPSIZE_SBIT, MMC_CSD_EGRPSIZE_WIDTH, MMC_CSD_EGRPSIZE_VAL);
376 FillCidCsdBits(cmd->resp, MMC_CSD_EGRPMULT_SBIT, MMC_CSD_EGRPMULT_WIDTH, MMC_CSD_EGRPMULT_VAL);
377 FillCidCsdBits(cmd->resp, MMC_CSD_WBPART_SBIT, 1, 0); /* WRITE_BL_PARTIAL: no */
378 FillCidCsdBits(cmd->resp, MMC_CSD_FFORMGRP_SBIT, 1, 0); /* FILE_FORMAT_GRP */
379 FillCidCsdBits(cmd->resp, MMC_CSD_FFORMAT_SBIT, MMC_CSD_FFORMAT_WIDTH, 0); /* hard disk-like */
387 static void VirtMmcFillDataExtCsd(const struct MmcCmd *cmd, const struct Virtblk *blk)
389 uint8_t *b = (uint8_t *)cmd->data->dataBuffer;
405 static inline void VirtMmcFillRespR1(struct MmcCmd *cmd)
407 cmd->resp[0] = READY_FOR_DATA | (STATE_READY << MMC_RESP_STATE_BIT);
408 cmd->resp[1] = cmd->cmdCode;
411 static int32_t VirtMmcIO(const struct MmcCntlr *cntlr, const struct MmcCmd *cmd)
414 uint64_t startSector = (uint64_t)cmd->argument;
421 if (cmd->data->dataFlags == DATA_READ) {
427 ret = VirtblkIO(blk, io, startSector, cmd->data->dataBuffer, cmd->data->blockNum);
429 cmd->data->returnError = HDF_SUCCESS;
432 cmd->data->returnError = HDF_ERR_IO;
438 static int32_t VirtMmcDoRequest(struct MmcCntlr *cntlr, struct MmcCmd *cmd)
440 if ((cntlr == NULL) || (cntlr->priv == NULL) || (cmd == NULL)) {
445 cmd->returnError = HDF_SUCCESS;
446 switch (cmd->cmdCode) {
451 cmd->resp[0] = OCR_GT_2G;
453 cmd->resp[0] = OCR_LE_2G;
458 VirtMmcFillRespCid(cmd, blk);
461 VirtMmcFillDataExtCsd(cmd, blk);
462 cmd->data->returnError = HDF_SUCCESS;
467 VirtMmcFillRespR1(cmd);
470 VirtMmcFillRespCsd(cmd, blk);
476 return VirtMmcIO(cntlr, cmd);
478 HDF_LOGE("[%s]unsupported command: %u", __func__, cmd->cmdCode);
479 cmd->returnError = HDF_ERR_NOT_SUPPORT;
481 return cmd->returnError;