SyterKit 0.4.0.x
SyterKit is a bare-metal framework
Loading...
Searching...
No Matches
sys-sdcard.h
Go to the documentation of this file.
1/* SPDX-License-Identifier: GPL-2.0+ */
2
3#ifndef __SDHCI_SDCARD_H__
4#define __SDHCI_SDCARD_H__
5
6#include <io.h>
7#include <stdarg.h>
8#include <stdbool.h>
9#include <stddef.h>
10#include <stdint.h>
11#include <types.h>
12
13#include "sys-sdhci.h"
14
15#include "log.h"
16
17#ifdef __cplusplus
18extern "C" {
19#endif// __cplusplus
20
21enum {
22 /* Class 1 */
39
40 /* Class 2 */
44
45 /* Class 3 */
47
48 /* Class 4 */
54
55 /* Class 5 */
59
60 /* Class 6 */
64
65 /* Class 7 */
67
68 /* Class 8 */
71
72 /* Class 9 */
75};
76
77enum {
86};
87
88enum {
89 MMC_RSP_PRESENT = (1 << 0),
90 MMC_RSP_136 = (1 << 1),
91 MMC_RSP_CRC = (1 << 2),
92 MMC_RSP_BUSY = (1 << 3),
93 MMC_RSP_OPCODE = (1 << 4),
94};
95
96enum {
97 MMC_RSP_NONE = (0 << 24),
106};
107
108enum {
120};
121
122enum {
123 OCR_BUSY = 0x80000000,
124 OCR_HCS = 0x40000000,
125 OCR_VOLTAGE_MASK = 0x00ffff80,
126 OCR_ACCESS_MODE = 0x60000000,
127};
128
129enum {
130 MMC_DATA_READ = (1 << 0),
131 MMC_DATA_WRITE = (1 << 1),
132};
133
134enum {
135 MMC_VDD_27_36 = (1 << 0),
136 MMC_VDD_165_195 = (1 << 1),
137};
138
139enum {
143};
144
145enum {
149};
150
151enum {
152 SD_VERSION_SD = 0x20000,
171};
172
188
189typedef struct {
192 uint8_t buf[512];
193 bool online;
195
199extern sdmmc_pdata_t card0;
200
208int sdmmc_init(sdmmc_pdata_t *data, sdhci_t *hci);
209
220
221#ifdef __cplusplus
222}
223#endif// __cplusplus
224
225#endif /* __SDHCI_SDCARD_H__ */
u64_t uint64_t
Definition stdint.h:16
u32_t uint32_t
Definition stdint.h:13
u8_t uint8_t
Definition stdint.h:7
int sdmmc_init(sdmmc_pdata_t *data, sunxi_sdhci_t *hci)
Initialize the SD/MMC interface.
Definition sys-sdcard.c:34
sdmmc_pdata_t card0
External declaration of the 'card0' SDMMC platform data structure.
Definition sys-sdcard.c:19
uint32_t sdmmc_blk_read(sdmmc_pdata_t *data, uint8_t *buf, uint32_t blkno, uint32_t blkcnt)
Read blocks from the SD/MMC device.
Definition sys-sdcard.c:62
@ MMC_GEN_CMD
Definition sys-sdcard.h:70
@ MMC_ERASE_GROUP_END
Definition sys-sdcard.h:57
@ MMC_CLR_WRITE_PROT
Definition sys-sdcard.h:62
@ MMC_ERASE_GROUP_START
Definition sys-sdcard.h:56
@ MMC_SET_BLOCK_COUNT
Definition sys-sdcard.h:49
@ MMC_GO_IDLE_STATE
Definition sys-sdcard.h:23
@ MMC_SET_BLOCKLEN
Definition sys-sdcard.h:41
@ MMC_SPI_CRC_ON_OFF
Definition sys-sdcard.h:38
@ MMC_SET_WRITE_PROT
Definition sys-sdcard.h:61
@ MMC_SELECT_CARD
Definition sys-sdcard.h:29
@ MMC_SET_DSR
Definition sys-sdcard.h:27
@ MMC_SEND_OP_COND
Definition sys-sdcard.h:24
@ MMC_SEND_CSD
Definition sys-sdcard.h:31
@ MMC_WRITE_SINGLE_BLOCK
Definition sys-sdcard.h:50
@ MMC_PROGRAM_CID
Definition sys-sdcard.h:52
@ MMC_PROGRAM_CSD
Definition sys-sdcard.h:53
@ MMC_APP_CMD
Definition sys-sdcard.h:69
@ MMC_LOCK_UNLOCK
Definition sys-sdcard.h:66
@ MMC_STOP_TRANSMISSION
Definition sys-sdcard.h:34
@ MMC_SEND_EXT_CSD
Definition sys-sdcard.h:30
@ MMC_SEND_CID
Definition sys-sdcard.h:32
@ MMC_GO_IRQ_STATE
Definition sys-sdcard.h:74
@ MMC_FAST_IO
Definition sys-sdcard.h:73
@ MMC_WRITE_DAT_UNTIL_STOP
Definition sys-sdcard.h:46
@ MMC_WRITE_MULTIPLE_BLOCK
Definition sys-sdcard.h:51
@ MMC_READ_SINGLE_BLOCK
Definition sys-sdcard.h:42
@ MMC_SPI_READ_OCR
Definition sys-sdcard.h:37
@ MMC_SET_RELATIVE_ADDR
Definition sys-sdcard.h:26
@ MMC_ERASE
Definition sys-sdcard.h:58
@ MMC_SWITCH
Definition sys-sdcard.h:28
@ MMC_READ_MULTIPLE_BLOCK
Definition sys-sdcard.h:43
@ MMC_GO_INACTIVE_STATE
Definition sys-sdcard.h:36
@ MMC_SEND_STATUS
Definition sys-sdcard.h:35
@ MMC_SEND_WRITE_PROT
Definition sys-sdcard.h:63
@ MMC_ALL_SEND_CID
Definition sys-sdcard.h:25
@ MMC_READ_DAT_UNTIL_STOP
Definition sys-sdcard.h:33
@ SD_CMD_ERASE_WR_BLK_END
Definition sys-sdcard.h:83
@ SD_CMD_APP_SEND_SCR
Definition sys-sdcard.h:85
@ SD_CMD_SEND_RELATIVE_ADDR
Definition sys-sdcard.h:78
@ SD_CMD_ERASE_WR_BLK_START
Definition sys-sdcard.h:82
@ SD_CMD_APP_SET_BUS_WIDTH
Definition sys-sdcard.h:81
@ SD_CMD_APP_SEND_OP_COND
Definition sys-sdcard.h:84
@ SD_CMD_SEND_IF_COND
Definition sys-sdcard.h:80
@ SD_CMD_SWITCH_FUNC
Definition sys-sdcard.h:79
@ MMC_CONTROLLER_1
Definition sys-sdcard.h:147
@ MMC_CONTROLLER_2
Definition sys-sdcard.h:148
@ MMC_CONTROLLER_0
Definition sys-sdcard.h:146
@ OCR_HCS
Definition sys-sdcard.h:124
@ OCR_VOLTAGE_MASK
Definition sys-sdcard.h:125
@ OCR_BUSY
Definition sys-sdcard.h:123
@ OCR_ACCESS_MODE
Definition sys-sdcard.h:126
@ MMC_STATUS_READY
Definition sys-sdcard.h:110
@ MMC_STATUS_BTST
Definition sys-sdcard.h:118
@ MMC_STATUS_TRAN
Definition sys-sdcard.h:113
@ MMC_STATUS_RCV
Definition sys-sdcard.h:115
@ MMC_STATUS_SLP
Definition sys-sdcard.h:119
@ MMC_STATUS_IDENT
Definition sys-sdcard.h:111
@ MMC_STATUS_PRG
Definition sys-sdcard.h:116
@ MMC_STATUS_DIS
Definition sys-sdcard.h:117
@ MMC_STATUS_DATA
Definition sys-sdcard.h:114
@ MMC_STATUS_IDLE
Definition sys-sdcard.h:109
@ MMC_STATUS_STBY
Definition sys-sdcard.h:112
@ MMC_BUS_WIDTH_4
Definition sys-sdcard.h:141
@ MMC_BUS_WIDTH_8
Definition sys-sdcard.h:142
@ MMC_BUS_WIDTH_1
Definition sys-sdcard.h:140
@ MMC_RSP_R6
Definition sys-sdcard.h:104
@ MMC_RSP_R2
Definition sys-sdcard.h:100
@ MMC_RSP_R7
Definition sys-sdcard.h:105
@ MMC_RSP_NONE
Definition sys-sdcard.h:97
@ MMC_RSP_R1
Definition sys-sdcard.h:98
@ MMC_RSP_R4
Definition sys-sdcard.h:102
@ MMC_RSP_R5
Definition sys-sdcard.h:103
@ MMC_RSP_R3
Definition sys-sdcard.h:101
@ MMC_RSP_R1B
Definition sys-sdcard.h:99
@ MMC_VERSION_4_5
Definition sys-sdcard.h:168
@ MMC_VERSION_2_2
Definition sys-sdcard.h:161
@ SD_VERSION_2
Definition sys-sdcard.h:154
@ MMC_VERSION_4_41
Definition sys-sdcard.h:167
@ MMC_VERSION_4_2
Definition sys-sdcard.h:165
@ MMC_VERSION_MMC
Definition sys-sdcard.h:157
@ SD_VERSION_SD
Definition sys-sdcard.h:152
@ MMC_VERSION_UNKNOWN
Definition sys-sdcard.h:158
@ MMC_VERSION_1_2
Definition sys-sdcard.h:159
@ MMC_VERSION_5_0
Definition sys-sdcard.h:169
@ MMC_VERSION_4_1
Definition sys-sdcard.h:164
@ SD_VERSION_1_10
Definition sys-sdcard.h:156
@ MMC_VERSION_3
Definition sys-sdcard.h:162
@ MMC_VERSION_1_4
Definition sys-sdcard.h:160
@ SD_VERSION_3
Definition sys-sdcard.h:153
@ MMC_VERSION_4_3
Definition sys-sdcard.h:166
@ SD_VERSION_1_0
Definition sys-sdcard.h:155
@ MMC_VERSION_5_1
Definition sys-sdcard.h:170
@ MMC_VERSION_4
Definition sys-sdcard.h:163
@ MMC_RSP_PRESENT
Definition sys-sdcard.h:89
@ MMC_RSP_136
Definition sys-sdcard.h:90
@ MMC_RSP_CRC
Definition sys-sdcard.h:91
@ MMC_RSP_BUSY
Definition sys-sdcard.h:92
@ MMC_RSP_OPCODE
Definition sys-sdcard.h:93
@ MMC_VDD_165_195
Definition sys-sdcard.h:136
@ MMC_VDD_27_36
Definition sys-sdcard.h:135
@ MMC_DATA_WRITE
Definition sys-sdcard.h:131
@ MMC_DATA_READ
Definition sys-sdcard.h:130
Definition sys-sdhci.h:68
Definition sys-sdcard.h:20
sdmmc_t card
Definition sys-sdcard.h:190
sdhci_t * hci
Definition sys-sdcard.h:191
Definition sys-sdcard.h:173
uint32_t read_bl_len
Definition sys-sdcard.h:184
uint32_t ocr
Definition sys-sdcard.h:175
uint32_t write_bl_len
Definition sys-sdcard.h:185
uint64_t capacity
Definition sys-sdcard.h:186
uint32_t version
Definition sys-sdcard.h:174
uint32_t high_capacity
Definition sys-sdcard.h:181
uint32_t tran_speed
Definition sys-sdcard.h:182
uint32_t dsr_imp
Definition sys-sdcard.h:183
uint32_t rca
Definition sys-sdcard.h:176