blob: 09e08d67831afddcad1a9c95307d63e25dc9812d [file] [log] [blame]
Patrick Georgiac959032020-05-05 22:49:26 +02001/* SPDX-License-Identifier: GPL-2.0-or-later */
Lee Leahyeef40eb2017-03-23 10:54:57 -07002
Lee Leahy48dbc662017-05-08 16:56:03 -07003#ifndef __COMMONLIB_STORAGE_MMC_H__
4#define __COMMONLIB_STORAGE_MMC_H__
Lee Leahyeef40eb2017-03-23 10:54:57 -07005
Lee Leahy48dbc662017-05-08 16:56:03 -07006#include <commonlib/sd_mmc_ctrlr.h>
Lee Leahyeef40eb2017-03-23 10:54:57 -07007
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
35int storage_block_setup_media(struct storage_media *media,
36 struct sd_mmc_ctrlr *ctrlr);
37
Lee Leahy48dbc662017-05-08 16:56:03 -070038#endif /* __COMMONLIB_STORAGE_MMC_H__ */