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_AIC8800_HW_SDIO_H__
19#define __HAL_DRIVER_AIC8800_HW_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 SDIO_CMDOP_SINGLE_BLOCK = (1ul << 8), // MMC_CMDOP_RW
40 SDIO_CMDOP_MULTI_BLOCK = (1ul << 8) | (1ul << 10) | (1ul << 16),
41 // MMC_CMDOP_RW | SDMMC_MULTI_BLOCK_MODE | SDMMC_AUTOCMD12_ENABLE
42
43 SDIO_CMDOP_READ = (0ul << 9), // SDMMC_WRITE_MODE(0)
44 SDIO_CMDOP_WRITE = (1ul << 9), // SDMMC_WRITE_MODE(1)
45
46 __SDIO_CMDOP_RESP = (1ul << 4), // SDMMC_RESPONSE_ENABLE
47 __SDIO_CMDOP_RESP_SHORT = (1ul << 5), // SDMMC_CONFIG_R3
48 __SDIO_CMDOP_RESP_SHORT_CRC = (0ul << 5), // SDMMC_CONFIG_Rx
49 __SDIO_CMDOP_RESP_LONG_CRC = (2ul << 5), // SDMMC_CONFIG_R2
50
51 // not supported
52 SDIO_CMDOP_CLKHOLD = (1ul << 24),
53 SDIO_CMDOP_TRANS_STOP = (1ul << 25),
54 SDIO_CMDOP_BYTE = (1ul << 26),
55 SDIO_CMDOP_STREAM = (1ul << 27),
56 // not care
57 SDIO_RESP_BUSY = (1 << 28),
58
66
69#define SDIO_RESP_R1B (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
70#define SDIO_RESP_R2 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_LONG_CRC)
71#define SDIO_RESP_R3 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT)
72#define SDIO_RESP_R4 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT)
73#define SDIO_RESP_R5 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
74#define SDIO_RESP_R6 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
75#define SDIO_RESP_R7 (__SDIO_CMDOP_RESP | __SDIO_CMDOP_RESP_SHORT_CRC)
77
78typedef enum vsf_sdio_irq_mask_t {
79 SDIO_IRQ_MASK_HOST_RESP_DONE = (0x1ul << 9), // SDMMC_RESP_DONE_FLAG
80 SDIO_IRQ_MASK_HOST_DATA_DONE = (0x1ul << 4), // SDMMC_DATA_DONE_FLAG
84
85typedef enum vsf_sdio_reqsts_t {
89 SDIO_REQSTS_ERR_DATA_CRC = (0xFFul << 16),
90 SDIO_REQSTS_DATA_BUSY = (0x1ul << 2),
91 SDIO_REQSTS_BUSY = (0x1ul << 1),
96
97/*============================ INCLUDES ======================================*/
98
99#endif /* VSF_HAL_USE_SDIO */
100#endif /* __HAL_DRIVER_AIC8800_HW_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_RESP_BUSY
Definition sdio.h:57
@ 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
@ __VSF_HW_SDIO_CMDOP_MASK
Definition sdio.h:59
@ 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
#define SDIO_RESP_NONE
Definition sdio.h:67
#define SDIO_RESP_R1
Definition sdio.h:68
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