VSF Documented
sdio.h
Go to the documentation of this file.
1/*****************************************************************************
2 * Copyright(C)2009-2022 by VSF Team *
3 * *
4 * Licensed under the Apache License, Version 2.0 (the "License"); *
5 * you may not use this file except in compliance with the License. *
6 * You may obtain a copy of the License at *
7 * *
8 * http://www.apache.org/licenses/LICENSE-2.0 *
9 * *
10 * Unless required by applicable law or agreed to in writing, software *
11 * distributed under the License is distributed on an "AS IS" BASIS, *
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. *
13 * See the License for the specific language governing permissions and *
14 * limitations under the License. *
15 * *
16 ****************************************************************************/
17
18#ifndef __HAL_DRIVER_GIGADEVICE_GD32H7XX_SDIO_H__
19#define __HAL_DRIVER_GIGADEVICE_GD32H7XX_SDIO_H__
20
21/*============================ INCLUDES ======================================*/
22
23#include "hal/vsf_hal_cfg.h"
24
25#if VSF_HAL_USE_SDIO == ENABLED
26
27#include "../__device.h"
28
29/*============================ MACROS ========================================*/
30
31#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_REQOP ENABLED
32#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_IRQ_MASK ENABLED
33#define VSF_SDIO_CFG_REIMPLEMENT_TYPE_REQSTS ENABLED
34
35/*============================ MACROFIED FUNCTIONS ===========================*/
36/*============================ TYPES =========================================*/
37
38typedef enum vsf_sdio_reqop_t {
39 // 0 .. 7: DATAEN/DATADIR/TRANSMOD in SDIO.DATACTL
40 // 8 .. 15: TREN/TRSTOP/CMDRESP/HOLD in SDIO.CMDCTL shift left by 2
41
42 __SDIO_CMDOP_TREN = ((1ul << 6) << 2),
43 __SDIO_CMDOP_TRSTOP = ((1ul << 7) << 2),
44 __SDIO_CMDOP_HOLD = ((1ul << 13) << 2),
47 SDIO_CMDOP_BYTE = (1ul << 2),
48 SDIO_CMDOP_STREAM = (2ul << 2),
53
54 // CSMEN in SDIO.CMDCTL
55 __SDIO_CMDOP_RESP = ((1ul << 12) << 2),
56 // CMDRESP in SDIO.CMDCTL
57 __SDIO_CMDOP_RESP_NONE = ((0ul << 8) << 2),
58 __SDIO_CMDOP_RESP_SHORT_CRC = ((1ul << 8) << 2),
59 __SDIO_CMDOP_RESP_SHORT = ((2ul << 8) << 2),
60 __SDIO_CMDOP_RESP_LONG_CRC = ((3ul << 8) << 2),
61#define SDIO_RESP_NONE __SDIO_CMDOP_RESP_NONE
62#define SDIO_RESP_R1 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
63#define SDIO_RESP_R1B (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC | SDIO_CMDOP_RESP_BUSY)
64#define SDIO_RESP_R2 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_LONG_CRC)
65#define SDIO_RESP_R3 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT)
66#define SDIO_RESP_R4 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT)
67#define SDIO_RESP_R5 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
68#define SDIO_RESP_R6 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
69#define SDIO_RESP_R7 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
70
73
74 // 16 .. : not care
75 SDIO_CMDOP_RESP_BUSY = (1ul << 16),
77
78typedef enum vsf_sdio_irq_mask_t {
79 // CMDSEND/CMDRECV in SDIO.STAT
80 SDIO_IRQ_MASK_HOST_RESP_DONE = (0x1ul << 6) | (1 << 7),
81 // DTEND in SDIO.STAT
83 // DATABOR in SDIO.STAT
89
90typedef enum vsf_sdio_reqsts_t {
92 // CMDTMOUT in SDIO.STAT
94 // CCRCERR in SDIO.STAT
96 // DTCRCERR in SDIO.STAT
98 // DAT0BSY in SDIO.STAT
99 SDIO_REQSTS_DATA_BUSY = (0x1ul << 20),
100 // DAT0BSYEND in SDIO.STAT
101 SDIO_REQSTS_BUSY = (0x1ul << 21),
106
107/*============================ INCLUDES ======================================*/
108
109#endif // VSF_HAL_USE_SDIO
110#endif // __HAL_DRIVER_GIGADEVICE_GD32H7XX_SDIO_H__
vsf_sdio_reqop_t
Definition sdio.h:38
@ SDIO_CMDOP_READ
Definition sdio.h:43
@ SDIO_CMDOP_SINGLE_BLOCK
Definition sdio.h:39
@ __SDIO_CMDOP_RESP
Definition sdio.h:46
@ SDIO_CMDOP_BYTE
Definition sdio.h:54
@ SDIO_CMDOP_STREAM
Definition sdio.h:55
@ SDIO_CMDOP_TRANS_STOP
Definition sdio.h:53
@ __SDIO_CMDOP_RESP_LONG_CRC
Definition sdio.h:49
@ SDIO_CMDOP_WRITE
Definition sdio.h:44
@ __SDIO_CMDOP_RESP_SHORT
Definition sdio.h:47
@ SDIO_CMDOP_CLKHOLD
Definition sdio.h:52
@ SDIO_CMDOP_MULTI_BLOCK
Definition sdio.h:40
@ __SDIO_CMDOP_RESP_SHORT_CRC
Definition sdio.h:48
vsf_sdio_irq_mask_t
Definition sdio.h:78
@ SDIO_IRQ_MASK_HOST_DATA_DONE
Definition sdio.h:80
@ SDIO_IRQ_MASK_HOST_RESP_DONE
Definition sdio.h:79
@ SDIO_IRQ_MASK_HOST_ALL
Definition sdio.h:81
vsf_sdio_reqsts_t
Definition sdio.h:85
@ SDIO_REQSTS_ERR_MASK
Definition sdio.h:92
@ SDIO_REQSTS_BUSY
Definition sdio.h:91
@ SDIO_REQSTS_DATA_BUSY
Definition sdio.h:90
@ SDIO_REQSTS_DONE
Definition sdio.h:86
@ SDIO_REQSTS_ERR_RESP_CRC
Definition sdio.h:88
@ SDIO_REQSTS_ERR_RESP_NONE
Definition sdio.h:87
@ SDIO_REQSTS_ERR_DATA_CRC
Definition sdio.h:89
@ __SDIO_CMDOP_DATADIR
Definition sdio.h:46
@ __SDIO_CMDOP_HOLD
Definition sdio.h:44
@ __SDIO_CMDOP_DATAEN
Definition sdio.h:45
@ __SDIO_CMDOP_TRSTOP
Definition sdio.h:43
@ SDIO_CMDOP_RESP_BUSY
Definition sdio.h:75
@ __SDIO_CMDOP_TREN
Definition sdio.h:42
@ __SDIO_CMDOP_RESP_NONE
Definition sdio.h:57
@ SDIO_IRQ_MASK_HOST_DATA_ABORT
Definition sdio.h:84