static int sdio_send_cmd52(sdio_ext_t *sdio, uint32_t cmdarg, uint8_t *resp) { sdio_cmd_t cmd; int i; for (i = 0; i < 5; i++) { cmd.opcode = 52; cmd.rsptype = SDIO_RSP_R5; cmd.eflags = SDMMC_CMD_INTR; cmd.argument = cmdarg; if (sdio_send_command(sdio, &cmd) == MMC_SUCCESS) break; } if (i >= 5) return (SDIO_FAILURE); if (((cmd.resp[0] & 0xCB00) != 0) || ((cmd.resp[0] & 0x3000) == 0)) return (SDIO_FAILURE); if (resp) *resp = (uint8_t)cmd.resp[0]; return (SDIO_SUCCESS); }
static sdio_error_t send_command_wait(uint32_t cmd, uint32_t arg) { sdio_error_t result; sdio_send_command(cmd, arg); while ((result = get_command_result()) == SDIO_EINPROGRESS); return result; }