xref: /aosp_15_r20/external/coreboot/src/commonlib/storage/mmc.h (revision b9411a12aaaa7e1e6a6fb7c5e057f44ee179a49c)
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 #ifndef __COMMONLIB_STORAGE_MMC_H__
4 #define __COMMONLIB_STORAGE_MMC_H__
5 
6 #include <commonlib/sd_mmc_ctrlr.h>
7 
8 #define MMC_HS_TIMING		0x00000100
9 #define MMC_HS_52MHZ		0x2
10 #define MMC_HS_200MHZ		0x10
11 #define MMC_HS400		0x40
12 
13 #define SECURE_ERASE		0x80000000
14 
15 #define MMC_STATUS_MASK		(~0x0206BF7F)
16 #define MMC_STATUS_RDY_FOR_DATA (1 << 8)
17 #define MMC_STATUS_CURR_STATE	(0xf << 9)
18 #define MMC_STATUS_ERROR	(1 << 19)
19 
20 #define MMC_SWITCH_MODE_CMD_SET		0x00 /* Change the command set */
21 #define MMC_SWITCH_MODE_SET_BITS	0x01 /* Set bits in EXT_CSD byte
22 						addressed by index which are
23 						1 in value field */
24 #define MMC_SWITCH_MODE_CLEAR_BITS	0x02 /* Clear bits in EXT_CSD byte
25 						addressed by index, which are
26 						1 in value field */
27 #define MMC_SWITCH_MODE_WRITE_BYTE	0x03 /* Set target byte to value */
28 
29 #define R1_ILLEGAL_COMMAND		(1 << 22)
30 #define R1_APP_CMD			(1 << 5)
31 
32 #define MMC_INIT_TIMEOUT_US	(1000 * 1000)
33 #define MMC_INIT_TIMEOUT_US_MS	1000
34 
35 int storage_block_setup_media(struct storage_media *media,
36 	struct sd_mmc_ctrlr *ctrlr);
37 
38 #endif /* __COMMONLIB_STORAGE_MMC_H__ */
39