coreboot
coreboot is an Open Source project aimed at replacing the proprietary BIOS found in most computers.
sd_mmc.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef __COMMONLIB_STORAGE_SD_MMC_H__
4 #define __COMMONLIB_STORAGE_SD_MMC_H__
5 
7 #include <commonlib/storage.h>
8 #include <stddef.h>
9 #include <console/console.h>
10 
11 #define SD_MMC_IO_RETRIES 1000
12 
13 #define IS_SD(x) (x->version & SD_VERSION_SD)
14 
15 #define SET_BUS_WIDTH(ctrlr, width) \
16  do { \
17  ctrlr->bus_width = width; \
18  ctrlr->set_ios(ctrlr); \
19  } while (0)
20 
21 #define SET_CLOCK(ctrlr, clock_hz) \
22  do { \
23  ctrlr->request_hz = clock_hz; \
24  ctrlr->set_ios(ctrlr); \
25  } while (0)
26 
27 #define SET_TIMING(ctrlr, timing_value) \
28  do { \
29  ctrlr->timing = timing_value; \
30  ctrlr->set_ios(ctrlr); \
31  } while (0)
32 
33 /* Common support routines */
35 uint64_t sd_mmc_extract_uint32_bits(const uint32_t *array, int start,
36  int count);
38 int sd_mmc_send_status(struct storage_media *media, ssize_t tries);
39 int sd_mmc_set_blocklen(struct sd_mmc_ctrlr *ctrlr, int len);
40 
41 /* MMC support routines */
44 const char *mmc_partition_name(struct storage_media *media,
45  unsigned int partition_number);
46 int mmc_send_ext_csd(struct sd_mmc_ctrlr *ctrlr, unsigned char *ext_csd);
50  unsigned int partition_number);
52 
53 /* SD card support routines */
55 const char *sd_partition_name(struct storage_media *media,
56  unsigned int partition_number);
61  unsigned int partition_number);
62 
63 /* Controller debug functions */
64 #define sdhc_debug(format...) \
65  do { \
66  if (CONFIG(SDHC_DEBUG)) \
67  printk(BIOS_DEBUG, format); \
68  } while (0)
69 #define sdhc_trace(format...) \
70  do { \
71  if (CONFIG(SDHC_TRACE)) \
72  printk(BIOS_DEBUG, format); \
73  } while (0)
74 #define sdhc_error(format...) printk(BIOS_ERR, format)
75 
76 /* Card/device debug functions */
77 #define sd_mmc_debug(format...) \
78  do { \
79  if (CONFIG(SD_MMC_DEBUG)) \
80  printk(BIOS_DEBUG, format); \
81  } while (0)
82 #define sd_mmc_trace(format...) \
83  do { \
84  if (CONFIG(SD_MMC_TRACE)) \
85  printk(BIOS_DEBUG, format); \
86  } while (0)
87 #define sd_mmc_error(format...) printk(BIOS_ERR, format)
88 
89 #endif /* __COMMONLIB_STORAGE_SD_MMC_H__ */
static struct storage_media media
Definition: sd_media.c:21
uint64_t sd_mmc_extract_uint32_bits(const uint32_t *array, int start, int count)
Definition: sd_mmc.c:17
int sd_set_bus_width(struct storage_media *media)
Definition: sd.c:239
int sd_mmc_go_idle(struct storage_media *media)
Definition: sd_mmc.c:68
int mmc_set_partition(struct storage_media *media, unsigned int partition_number)
Definition: mmc.c:491
int sd_mmc_send_status(struct storage_media *media, ssize_t tries)
Definition: sd_mmc.c:94
int mmc_update_capacity(struct storage_media *media)
Definition: mmc.c:388
int mmc_change_freq(struct storage_media *media)
Definition: mmc.c:309
int mmc_set_bus_width(struct storage_media *media)
Definition: mmc.c:341
const char * mmc_partition_name(struct storage_media *media, unsigned int partition_number)
Definition: mmc.c:514
const char * sd_partition_name(struct storage_media *media, unsigned int partition_number)
Definition: sd.c:280
int sd_mmc_enter_standby(struct storage_media *media)
Definition: sd_mmc.c:139
int sd_mmc_set_blocklen(struct sd_mmc_ctrlr *ctrlr, int len)
Definition: sd_mmc.c:128
int sd_change_freq(struct storage_media *media)
Definition: sd.c:120
int mmc_complete_op_cond(struct storage_media *media)
Definition: mmc.c:65
int sd_send_if_cond(struct storage_media *media)
Definition: sd.c:15
int sd_set_partition(struct storage_media *media, unsigned int partition_number)
Definition: sd.c:268
int sd_send_op_cond(struct storage_media *media)
Definition: sd.c:35
int mmc_send_ext_csd(struct sd_mmc_ctrlr *ctrlr, unsigned char *ext_csd)
Definition: mmc.c:96
int mmc_send_op_cond(struct storage_media *media)
Definition: mmc.c:45
__SIZE_TYPE__ ssize_t
Definition: stddef.h:13
unsigned int uint32_t
Definition: stdint.h:14
unsigned long long uint64_t
Definition: stdint.h:17
#define count