soc/intel/alderlake: Add ADL-P 4+4 with 28W TDP
[coreboot.git] / src / commonlib / storage / sd_mmc.h
blob909652d8a53df55d88917fa8d94dba4ea570efa3
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
3 #ifndef __COMMONLIB_STORAGE_SD_MMC_H__
4 #define __COMMONLIB_STORAGE_SD_MMC_H__
6 #include <commonlib/sd_mmc_ctrlr.h>
7 #include <commonlib/storage.h>
8 #include <stddef.h>
9 #include <console/console.h>
11 #define SD_MMC_IO_RETRIES 1000
13 #define IS_SD(x) (x->version & SD_VERSION_SD)
15 #define SET_BUS_WIDTH(ctrlr, width) \
16 do { \
17 ctrlr->bus_width = width; \
18 ctrlr->set_ios(ctrlr); \
19 } while (0)
21 #define SET_CLOCK(ctrlr, clock_hz) \
22 do { \
23 ctrlr->request_hz = clock_hz; \
24 ctrlr->set_ios(ctrlr); \
25 } while (0)
27 #define SET_TIMING(ctrlr, timing_value) \
28 do { \
29 ctrlr->timing = timing_value; \
30 ctrlr->set_ios(ctrlr); \
31 } while (0)
33 /* Common support routines */
34 int sd_mmc_enter_standby(struct storage_media *media);
35 uint64_t sd_mmc_extract_uint32_bits(const uint32_t *array, int start,
36 int count);
37 int sd_mmc_go_idle(struct storage_media *media);
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);
41 /* MMC support routines */
42 int mmc_change_freq(struct storage_media *media);
43 int mmc_complete_op_cond(struct storage_media *media);
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);
47 int mmc_send_op_cond(struct storage_media *media);
48 int mmc_set_bus_width(struct storage_media *media);
49 int mmc_set_partition(struct storage_media *media,
50 unsigned int partition_number);
51 int mmc_update_capacity(struct storage_media *media);
52 void mmc_set_early_wake_status(int32_t status);
53 int mmc_send_cmd1(struct storage_media *media);
55 /* SD card support routines */
56 int sd_change_freq(struct storage_media *media);
57 const char *sd_partition_name(struct storage_media *media,
58 unsigned int partition_number);
59 int sd_send_if_cond(struct storage_media *media);
60 int sd_send_op_cond(struct storage_media *media);
61 int sd_set_bus_width(struct storage_media *media);
62 int sd_set_partition(struct storage_media *media,
63 unsigned int partition_number);
65 /* Controller debug functions */
66 #define sdhc_debug(format...) \
67 do { \
68 if (CONFIG(SDHC_DEBUG)) \
69 printk(BIOS_DEBUG, format); \
70 } while (0)
71 #define sdhc_trace(format...) \
72 do { \
73 if (CONFIG(SDHC_TRACE)) \
74 printk(BIOS_DEBUG, format); \
75 } while (0)
76 #define sdhc_error(format...) printk(BIOS_ERR, format)
78 /* Card/device debug functions */
79 #define sd_mmc_debug(format...) \
80 do { \
81 if (CONFIG(SD_MMC_DEBUG)) \
82 printk(BIOS_DEBUG, format); \
83 } while (0)
84 #define sd_mmc_trace(format...) \
85 do { \
86 if (CONFIG(SD_MMC_TRACE)) \
87 printk(BIOS_DEBUG, format); \
88 } while (0)
89 #define sd_mmc_error(format...) printk(BIOS_ERR, format)
91 #endif /* __COMMONLIB_STORAGE_SD_MMC_H__ */