22 for (i = 0; i <
count; i++, start++) {
24 value |= (array[start / 32] >> (31 - (start % 32))) & 0x1;
35 static const int fbase[] = {
43 static const int multipliers[] = {
63 freq = fbase[csd0 & 0x7];
64 mult = multipliers[(csd0 >> 3) & 0xf];
155 if (
CONFIG(COMMONLIB_STORAGE_SD)) {
175 "Card did not respond to voltage select!\n");
250 sd_mmc_debug(
"mmc media info: version=%#x, tran_speed=%d\n",
void * memcpy(void *dest, const void *src, size_t n)
int mmc_complete_op_cond(struct storage_media *media)
int mmc_send_op_cond(struct storage_media *media)
#define MMC_STATUS_CURR_STATE
#define MMC_STATUS_RDY_FOR_DATA
int sd_send_if_cond(struct storage_media *media)
int sd_send_op_cond(struct storage_media *media)
void mdelay(unsigned int msecs)
#define MMC_VERSION_UNKNOWN
uint64_t sd_mmc_extract_uint32_bits(const uint32_t *array, int start, int count)
static uint32_t sd_mmc_calculate_transfer_speed(uint32_t csd0)
int sd_mmc_go_idle(struct storage_media *media)
int sd_mmc_send_status(struct storage_media *media, ssize_t tries)
int sd_mmc_enter_standby(struct storage_media *media)
int sd_mmc_set_blocklen(struct sd_mmc_ctrlr *ctrlr, int len)
#define sd_mmc_trace(format...)
#define SET_BUS_WIDTH(ctrlr, width)
#define SD_MMC_IO_RETRIES
#define sd_mmc_error(format...)
#define sd_mmc_debug(format...)
#define SET_CLOCK(ctrlr, clock_hz)
#define MMC_CMD_GO_IDLE_STATE
#define MMC_CMD_SEND_STATUS
#define CARD_UNUSABLE_ERR
#define MMC_CMD_SET_BLOCKLEN
#define MMC_CMD_ALL_SEND_CID
#define SD_CMD_SEND_RELATIVE_ADDR
unsigned long long uint64_t
uint32_t mdelay_before_cmd0
int(* send_cmd)(struct sd_mmc_ctrlr *ctrlr, struct mmc_command *cmd, struct mmc_data *data)
uint32_t mdelay_after_cmd0