mbed library sources

Dependents:   Encrypted my_mbed lklk CyaSSL_DTLS_Cellular ... more

Superseded

This library was superseded by mbed-dev - https://os.mbed.com/users/mbed_official/code/mbed-dev/.

Development branch of the mbed library sources. This library is kept in synch with the latest changes from the mbed SDK and it is not guaranteed to work.

If you are looking for a stable and tested release, please import one of the official mbed library releases:

Import librarymbed

The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Committer:
mbed_official
Date:
Thu Apr 03 11:45:06 2014 +0100
Revision:
149:1fb5f62b92bd
Parent:
targets/hal/TARGET_Freescale/TARGET_KSDK_MCUS/TARGET_KSDK_CODE/hal/sdhc/fsl_sdhc_hal.h@146:f64d43ff0c18
Child:
324:406fd2029f23
Synchronized with git revision 220c0bb39ceee40016e1e86350c058963d01ed42

Full URL: https://github.com/mbedmicro/mbed/commit/220c0bb39ceee40016e1e86350c058963d01ed42/

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 146:f64d43ff0c18 1 /*
mbed_official 146:f64d43ff0c18 2 * Copyright (c) 2013 - 2014, Freescale Semiconductor, Inc.
mbed_official 146:f64d43ff0c18 3 * All rights reserved.
mbed_official 146:f64d43ff0c18 4 *
mbed_official 146:f64d43ff0c18 5 * Redistribution and use in source and binary forms, with or without modification,
mbed_official 146:f64d43ff0c18 6 * are permitted provided that the following conditions are met:
mbed_official 146:f64d43ff0c18 7 *
mbed_official 146:f64d43ff0c18 8 * o Redistributions of source code must retain the above copyright notice, this list
mbed_official 146:f64d43ff0c18 9 * of conditions and the following disclaimer.
mbed_official 146:f64d43ff0c18 10 *
mbed_official 146:f64d43ff0c18 11 * o Redistributions in binary form must reproduce the above copyright notice, this
mbed_official 146:f64d43ff0c18 12 * list of conditions and the following disclaimer in the documentation and/or
mbed_official 146:f64d43ff0c18 13 * other materials provided with the distribution.
mbed_official 146:f64d43ff0c18 14 *
mbed_official 146:f64d43ff0c18 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
mbed_official 146:f64d43ff0c18 16 * contributors may be used to endorse or promote products derived from this
mbed_official 146:f64d43ff0c18 17 * software without specific prior written permission.
mbed_official 146:f64d43ff0c18 18 *
mbed_official 146:f64d43ff0c18 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
mbed_official 146:f64d43ff0c18 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
mbed_official 146:f64d43ff0c18 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
mbed_official 146:f64d43ff0c18 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
mbed_official 146:f64d43ff0c18 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
mbed_official 146:f64d43ff0c18 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
mbed_official 146:f64d43ff0c18 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
mbed_official 146:f64d43ff0c18 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
mbed_official 146:f64d43ff0c18 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
mbed_official 146:f64d43ff0c18 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
mbed_official 146:f64d43ff0c18 29 */
mbed_official 146:f64d43ff0c18 30 #ifndef __FSL_SDHC_HAL_H__
mbed_official 146:f64d43ff0c18 31 #define __FSL_SDHC_HAL_H__
mbed_official 146:f64d43ff0c18 32
mbed_official 146:f64d43ff0c18 33 #include <assert.h>
mbed_official 146:f64d43ff0c18 34 #include <stdbool.h>
mbed_official 146:f64d43ff0c18 35 #include "fsl_device_registers.h"
mbed_official 146:f64d43ff0c18 36
mbed_official 146:f64d43ff0c18 37 /*! @addtogroup sdhc_hal */
mbed_official 146:f64d43ff0c18 38 /*! @{ */
mbed_official 146:f64d43ff0c18 39
mbed_official 146:f64d43ff0c18 40 /* PRSSTA */
mbed_official 146:f64d43ff0c18 41 #define SDHC_HAL_DAT0_LEVEL (BM_SDHC_PRSSTAT_DLSL & (1 << 24))
mbed_official 146:f64d43ff0c18 42
mbed_official 146:f64d43ff0c18 43 /* XFERTYP */
mbed_official 146:f64d43ff0c18 44 #define SDHC_HAL_MAX_BLOCK_COUNT (BS_SDHC_BLKATTR_BLKCNT - 1)
mbed_official 146:f64d43ff0c18 45 #define SDHC_HAL_ENABLE_DMA BM_SDHC_XFERTYP_DMAEN
mbed_official 146:f64d43ff0c18 46 #define SDHC_HAL_DISABLE_DMA (0U)
mbed_official 146:f64d43ff0c18 47
mbed_official 146:f64d43ff0c18 48 #define SDHC_HAL_CMD_TYPE_SUSPEND (BF_SDHC_XFERTYP_CMDTYP(1))
mbed_official 146:f64d43ff0c18 49 #define SDHC_HAL_CMD_TYPE_RESUME (BF_SDHC_XFERTYP_CMDTYP(2))
mbed_official 146:f64d43ff0c18 50 #define SDHC_HAL_CMD_TYPE_ABORT (BF_SDHC_XFERTYP_CMDTYP(3))
mbed_official 146:f64d43ff0c18 51
mbed_official 146:f64d43ff0c18 52 #define SDHC_HAL_ENABLE_BLOCK_COUNT BM_SDHC_XFERTYP_BCEN
mbed_official 146:f64d43ff0c18 53 #define SDHC_HAL_DISABLE_BLOCK_COUNT (0U)
mbed_official 146:f64d43ff0c18 54
mbed_official 146:f64d43ff0c18 55 #define SDHC_HAL_ENABLE_AUTO_CMD12 BM_SDHC_XFERTYP_AC12EN
mbed_official 146:f64d43ff0c18 56 #define SDHC_HAL_DISABLE_AUTO_CMD12 (0U)
mbed_official 146:f64d43ff0c18 57
mbed_official 146:f64d43ff0c18 58 #define SDHC_HAL_ENABLE_DATA_READ BM_SDHC_XFERTYP_DTDSEL
mbed_official 146:f64d43ff0c18 59 #define SDHC_HAL_DISABLE_AUTO_CMD12 (0U)
mbed_official 146:f64d43ff0c18 60
mbed_official 146:f64d43ff0c18 61 #define SDHC_HAL_MULTIPLE_BLOCK BM_SDHC_XFERTYP_MSBSEL
mbed_official 146:f64d43ff0c18 62 #define SDHC_HAL_SINGLE_BLOCK (0U)
mbed_official 146:f64d43ff0c18 63
mbed_official 146:f64d43ff0c18 64 #define SDHC_HAL_NO_RESPONE (0U)
mbed_official 146:f64d43ff0c18 65 #define SDHC_HAL_RESP_LEN_136 ((0x1 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP)
mbed_official 146:f64d43ff0c18 66 #define SDHC_HAL_RESP_LEN_48 ((0x2 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP)
mbed_official 146:f64d43ff0c18 67 #define SDHC_HAL_RESP_LEN_48_BC ((0x3 << BP_SDHC_XFERTYP_RSPTYP) & BM_SDHC_XFERTYP_RSPTYP)
mbed_official 146:f64d43ff0c18 68
mbed_official 146:f64d43ff0c18 69 #define SDHC_HAL_ENABLE_CRC_CHECK BM_SDHC_XFERTYP_CCCEN
mbed_official 146:f64d43ff0c18 70 #define SDHC_HAL_DISABLE_CRC_CHECK (0U)
mbed_official 146:f64d43ff0c18 71
mbed_official 146:f64d43ff0c18 72 #define SDHC_HAL_ENABLE_INDEX_CHECK BM_SDHC_XFERTYP_CICEN
mbed_official 146:f64d43ff0c18 73 #define SDHC_HAL_DISABLE_INDEX_CHECK (0U)
mbed_official 146:f64d43ff0c18 74
mbed_official 146:f64d43ff0c18 75 #define SDHC_HAL_DATA_PRESENT BM_SDHC_XFERTYP_DPSEL
mbed_official 146:f64d43ff0c18 76 #define SDHC_HAL_NO_DATA_PRESENT (0U)
mbed_official 146:f64d43ff0c18 77
mbed_official 146:f64d43ff0c18 78 /* SYSCTL */
mbed_official 146:f64d43ff0c18 79 #define SDHC_HAL_MAX_DVS (16U)
mbed_official 146:f64d43ff0c18 80 #define SDHC_HAL_INITIAL_DVS (1U) /* initial value of divisor to calculate clock rate */
mbed_official 146:f64d43ff0c18 81 #define SDHC_HAL_INITIAL_CLKFS (2U) /* initial value of clock selector to calculate clock rate */
mbed_official 146:f64d43ff0c18 82 #define SDHC_HAL_NEXT_DVS(x) do { ((x) += 1); } while(0)
mbed_official 146:f64d43ff0c18 83 #define SDHC_HAL_PREV_DVS(x) do { ((x) -= 1); } while(0)
mbed_official 146:f64d43ff0c18 84 #define SDHC_HAL_MAX_CLKFS (256U)
mbed_official 146:f64d43ff0c18 85 #define SDHC_HAL_NEXT_CLKFS(x) do { ((x) <<= 1); } while(0)
mbed_official 146:f64d43ff0c18 86 #define SDHC_HAL_PREV_CLKFS(x) do { ((x) >>= 1); } while(0)
mbed_official 146:f64d43ff0c18 87
mbed_official 146:f64d43ff0c18 88 /* IRQSTAT */
mbed_official 146:f64d43ff0c18 89 #define SDHC_HAL_CMD_COMPLETE_INT BM_SDHC_IRQSTAT_CC
mbed_official 146:f64d43ff0c18 90 #define SDHC_HAL_TRANS_COMPLETE_INT BM_SDHC_IRQSTAT_TC
mbed_official 146:f64d43ff0c18 91 #define SDHC_HAL_BLOCK_GAP_EVENT_INT BM_SDHC_IRQSTAT_BGE
mbed_official 146:f64d43ff0c18 92 #define SDHC_HAL_DMA_INT BM_SDHC_IRQSTAT_DMAE
mbed_official 146:f64d43ff0c18 93 #define SDHC_HAL_BUF_WRITE_READY_INT BM_SDHC_IRQSTAT_BWR
mbed_official 146:f64d43ff0c18 94 #define SDHC_HAL_BUF_READ_READY_INT BM_SDHC_IRQSTAT_BRR
mbed_official 146:f64d43ff0c18 95 #define SDHC_HAL_CARD_INSERTION_INT BM_SDHC_IRQSTAT_CINS
mbed_official 146:f64d43ff0c18 96 #define SDHC_HAL_CARD_REMOVAL_INT BM_SDHC_IRQSTAT_CRM
mbed_official 146:f64d43ff0c18 97 #define SDHC_HAL_CARD_INT BM_SDHC_IRQSTAT_CINT
mbed_official 146:f64d43ff0c18 98 #define SDHC_HAL_CMD_TIMEOUT_ERR_INT BM_SDHC_IRQSTAT_CTOE
mbed_official 146:f64d43ff0c18 99 #define SDHC_HAL_CMD_CRC_ERR_INT BM_SDHC_IRQSTAT_CCE
mbed_official 146:f64d43ff0c18 100 #define SDHC_HAL_CMD_END_BIT_ERR_INT BM_SDHC_IRQSTAT_CEBE
mbed_official 146:f64d43ff0c18 101 #define SDHC_HAL_CMD_INDEX_ERR_INT BM_SDHC_IRQSTAT_CIE
mbed_official 146:f64d43ff0c18 102 #define SDHC_HAL_DATA_TIMEOUT_ERR_INT BM_SDHC_IRQSTAT_DTOE
mbed_official 146:f64d43ff0c18 103 #define SDHC_HAL_DATA_CRC_ERR_INT BM_SDHC_IRQSTAT_CCE
mbed_official 146:f64d43ff0c18 104 #define SDHC_HAL_DATA_END_BIT_ERR_INT BM_SDHC_IRQSTAT_DEBE
mbed_official 146:f64d43ff0c18 105 #define SDHC_HAL_AUTO_CMD12_ERR_INT BM_SDHC_IRQSTAT_AC12E
mbed_official 146:f64d43ff0c18 106 #define SDHC_HAL_DMA_ERR_INT BM_SDHC_IRQSTAT_DMAE
mbed_official 146:f64d43ff0c18 107
mbed_official 146:f64d43ff0c18 108 /* AC12ERR */
mbed_official 146:f64d43ff0c18 109 #define SDHC_HAL_ACMD12_NOT_EXEC_ERR BM_SDHC_AC12ERR_AC12NE
mbed_official 146:f64d43ff0c18 110 #define SDHC_HAL_ACMD12_TIMEOUT_ERR BM_SDHC_AC12ERR_AC12TOE
mbed_official 146:f64d43ff0c18 111 #define SDHC_HAL_ACMD12_END_BIT_ERR BM_SDHC_AC12ERR_AC12EBE
mbed_official 146:f64d43ff0c18 112 #define SDHC_HAL_ACMD12_CRC_ERR BM_SDHC_AC12ERR_AC12CE
mbed_official 146:f64d43ff0c18 113 #define SDHC_HAL_ACMD12_INDEX_ERR BM_SDHC_AC12ERR_AC12IE
mbed_official 146:f64d43ff0c18 114 #define SDHC_HAL_ACMD12_NOT_ISSUE_ERR BM_SDHC_AC12ERR_CNIBAC12E
mbed_official 146:f64d43ff0c18 115
mbed_official 146:f64d43ff0c18 116 /* HTCAPBLT */
mbed_official 146:f64d43ff0c18 117 #define SDHC_HAL_SUPPORT_ADMA BM_SDHC_HTCAPBLT_ADMAS
mbed_official 146:f64d43ff0c18 118 #define SDHC_HAL_SUPPORT_HIGHSPEED BM_SDHC_HTCAPBLT_HSS
mbed_official 146:f64d43ff0c18 119 #define SDHC_HAL_SUPPORT_DMA BM_SDHC_HTCAPBLT_DMAS
mbed_official 146:f64d43ff0c18 120 #define SDHC_HAL_SUPPORT_SUSPEND_RESUME BM_SDHC_HTCAPBLT_SRS
mbed_official 146:f64d43ff0c18 121 #define SDHC_HAL_SUPPORT_3_3_V BM_SDHC_HTCAPBLT_VS33
mbed_official 146:f64d43ff0c18 122 #define SDHC_HAL_SUPPORT_3_0_V BM_SDHC_HTCAPBLT_VS30
mbed_official 146:f64d43ff0c18 123 #define SDHC_HAL_SUPPORT_1_8_V BM_SDHC_HTCAPBLT_VS18
mbed_official 146:f64d43ff0c18 124
mbed_official 146:f64d43ff0c18 125 /* FEVT */
mbed_official 146:f64d43ff0c18 126 #define SDHC_HAL_ACMD12_NOT_EXEC_ERR_EVENT BM_SDHC_FEVT_AC12NE
mbed_official 146:f64d43ff0c18 127 #define SDHC_HAL_ACMD12_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_AC12TOE
mbed_official 146:f64d43ff0c18 128 #define SDHC_HAL_ACMD12_CRC_ERR_EVENT BM_SDHC_FEVT_AC12CE
mbed_official 146:f64d43ff0c18 129 #define SDHC_HAL_ACMD12_END_BIT_ERR_EVENT BM_SDHC_FEVT_AC12EBE
mbed_official 146:f64d43ff0c18 130 #define SDHC_HAL_ACMD12_INDEX_ERR_EVENT BM_SDHC_FEVT_AC12IE
mbed_official 146:f64d43ff0c18 131 #define SDHC_HAL_ACMD12_NOT_ISSUE_ERR_EVENT BM_SDHC_FEVT_CNIBAC12E
mbed_official 146:f64d43ff0c18 132 #define SDHC_HAL_CMD_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_CTOE
mbed_official 146:f64d43ff0c18 133 #define SDHC_HAL_CMD_CRC_ERR_EVENT BM_SDHC_FEVT_CCE
mbed_official 146:f64d43ff0c18 134 #define SDHC_HAL_CMD_END_BIT_ERR_EVENT BM_SDHC_FEVT_CEBE
mbed_official 146:f64d43ff0c18 135 #define SDHC_HAL_CMD_INDEX_ERR_EVENT BM_SDHC_FEVT_CIE
mbed_official 146:f64d43ff0c18 136 #define SDHC_HAL_DATA_TIMEOUT_ERR_EVENT BM_SDHC_FEVT_DTOE
mbed_official 146:f64d43ff0c18 137 #define SDHC_HAL_DATA_CRC_ERR_EVENT BM_SDHC_FEVT_DCE
mbed_official 146:f64d43ff0c18 138 #define SDHC_HAL_DATA_END_BIT_ERR_EVENT BM_SDHC_FEVT_DEBE
mbed_official 146:f64d43ff0c18 139 #define SDHC_HAL_ACMD12_ERR_EVENT BM_SDHC_FEVT_AC12E
mbed_official 146:f64d43ff0c18 140 #define SDHC_HAL_CARD_INT_EVENT BM_SDHC_FEVT_CINT
mbed_official 146:f64d43ff0c18 141 #define SDHC_HAL_DMA_ERROR_EVENT BM_SDHC_FEVT_DMAE
mbed_official 146:f64d43ff0c18 142
mbed_official 146:f64d43ff0c18 143 /* MMCBOOT */
mbed_official 146:f64d43ff0c18 144 typedef enum _sdhc_hal_mmcboot
mbed_official 146:f64d43ff0c18 145 {
mbed_official 146:f64d43ff0c18 146 kSDHC_HAL_MMCBOOT_Normal = 0,
mbed_official 146:f64d43ff0c18 147 kSDHC_HAL_MMCBOOT_Alter = 1,
mbed_official 146:f64d43ff0c18 148 } sdhc_hal_mmcboot_t;
mbed_official 146:f64d43ff0c18 149
mbed_official 146:f64d43ff0c18 150 /* PROCTL */
mbed_official 146:f64d43ff0c18 151 typedef enum _sdhc_hal_led
mbed_official 146:f64d43ff0c18 152 {
mbed_official 146:f64d43ff0c18 153 kSDHC_HAL_LED_Off = 0,
mbed_official 146:f64d43ff0c18 154 kSDHC_HAL_LED_On = 1,
mbed_official 146:f64d43ff0c18 155 } sdhc_hal_led_t;
mbed_official 146:f64d43ff0c18 156
mbed_official 146:f64d43ff0c18 157 typedef enum _sdhc_hal_dtw
mbed_official 146:f64d43ff0c18 158 {
mbed_official 146:f64d43ff0c18 159 kSDHC_HAL_DTW_1Bit = 0,
mbed_official 146:f64d43ff0c18 160 kSDHC_HAL_DTW_4Bit = 1,
mbed_official 146:f64d43ff0c18 161 kSDHC_HAL_DTW_8Bit = 2,
mbed_official 146:f64d43ff0c18 162 } sdhc_hal_dtw_t;
mbed_official 146:f64d43ff0c18 163
mbed_official 146:f64d43ff0c18 164 typedef enum _sdhc_hal_endian
mbed_official 146:f64d43ff0c18 165 {
mbed_official 146:f64d43ff0c18 166 kSDHC_HAL_ENDIAN_Big = 0,
mbed_official 146:f64d43ff0c18 167 kSDHC_HAL_ENDIAN_HalfWordBig = 1,
mbed_official 146:f64d43ff0c18 168 kSDHC_HAL_ENDIAN_Little = 2,
mbed_official 146:f64d43ff0c18 169 } sdhc_hal_endian_t;
mbed_official 146:f64d43ff0c18 170
mbed_official 146:f64d43ff0c18 171 typedef enum _sdhc_hal_dma_mode
mbed_official 146:f64d43ff0c18 172 {
mbed_official 146:f64d43ff0c18 173 kSDHC_HAL_DMA_NoOrSimple = 0,
mbed_official 146:f64d43ff0c18 174 kSDHC_HAL_DMA_Adma1 = 1,
mbed_official 146:f64d43ff0c18 175 kSDHC_HAL_DMA_Adma2 = 2,
mbed_official 146:f64d43ff0c18 176 } sdhc_hal_dma_mode_t;
mbed_official 146:f64d43ff0c18 177
mbed_official 146:f64d43ff0c18 178 #define SDHC_HAL_RST_TYPE_ALL BM_SDHC_SYSCTL_RSTA
mbed_official 146:f64d43ff0c18 179 #define SDHC_HAL_RST_TYPE_CMD BM_SDHC_SYSCTL_RSTC
mbed_official 146:f64d43ff0c18 180 #define SDHC_HAL_RST_TYPE_DATA BM_SDHC_SYSCTL_RSTD
mbed_official 146:f64d43ff0c18 181
mbed_official 146:f64d43ff0c18 182 #define SDHC_HAL_MAX_BLKLEN_512B (0U)
mbed_official 146:f64d43ff0c18 183 #define SDHC_HAL_MAX_BLKLEN_1024B (1U)
mbed_official 146:f64d43ff0c18 184 #define SDHC_HAL_MAX_BLKLEN_2048B (2U)
mbed_official 146:f64d43ff0c18 185 #define SDHC_HAL_MAX_BLKLEN_4096B (3U)
mbed_official 146:f64d43ff0c18 186
mbed_official 146:f64d43ff0c18 187 /*************************************************************************************************
mbed_official 146:f64d43ff0c18 188 * API
mbed_official 146:f64d43ff0c18 189 ************************************************************************************************/
mbed_official 146:f64d43ff0c18 190
mbed_official 146:f64d43ff0c18 191 #if defined(__cplusplus)
mbed_official 146:f64d43ff0c18 192 extern "C" {
mbed_official 146:f64d43ff0c18 193 #endif
mbed_official 146:f64d43ff0c18 194
mbed_official 146:f64d43ff0c18 195 /*! @name SDHC HAL FUNCTION */
mbed_official 146:f64d43ff0c18 196 /*@{ */
mbed_official 146:f64d43ff0c18 197
mbed_official 146:f64d43ff0c18 198 /*!
mbed_official 146:f64d43ff0c18 199 * @brief Checks whether the given instance is valid.
mbed_official 146:f64d43ff0c18 200 *
mbed_official 146:f64d43ff0c18 201 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 202 * @return true if valid
mbed_official 146:f64d43ff0c18 203 */
mbed_official 146:f64d43ff0c18 204 static inline bool sdhc_hal_is_valid_instance(uint8_t instance)
mbed_official 146:f64d43ff0c18 205 {
mbed_official 146:f64d43ff0c18 206 return (instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 207 }
mbed_official 146:f64d43ff0c18 208
mbed_official 146:f64d43ff0c18 209 /*!
mbed_official 146:f64d43ff0c18 210 * @brief Configures the DMA address.
mbed_official 146:f64d43ff0c18 211 *
mbed_official 146:f64d43ff0c18 212 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 213 * @param address the DMA address
mbed_official 146:f64d43ff0c18 214 */
mbed_official 146:f64d43ff0c18 215 static inline void sdhc_hal_set_dma_addr(uint8_t instance, uint32_t address)
mbed_official 146:f64d43ff0c18 216 {
mbed_official 146:f64d43ff0c18 217 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 218 HW_SDHC_DSADDR_WR(BF_SDHC_DSADDR_DSADDR(address));
mbed_official 146:f64d43ff0c18 219 }
mbed_official 146:f64d43ff0c18 220
mbed_official 146:f64d43ff0c18 221 /*!
mbed_official 146:f64d43ff0c18 222 * @brief Gets the DMA address.
mbed_official 146:f64d43ff0c18 223 *
mbed_official 146:f64d43ff0c18 224 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 225 * @return the DMA address
mbed_official 146:f64d43ff0c18 226 */
mbed_official 146:f64d43ff0c18 227 static inline uint32_t sdhc_hal_get_dma_addr(uint8_t instance)
mbed_official 146:f64d43ff0c18 228 {
mbed_official 146:f64d43ff0c18 229 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 230 return HW_SDHC_DSADDR_RD();
mbed_official 146:f64d43ff0c18 231 }
mbed_official 146:f64d43ff0c18 232
mbed_official 146:f64d43ff0c18 233 /*!
mbed_official 146:f64d43ff0c18 234 * @brief Gets the block size configured.
mbed_official 146:f64d43ff0c18 235 *
mbed_official 146:f64d43ff0c18 236 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 237 * @return the block size already configured
mbed_official 146:f64d43ff0c18 238 */
mbed_official 146:f64d43ff0c18 239 static inline uint32_t sdhc_hal_get_blksz(uint8_t instance)
mbed_official 146:f64d43ff0c18 240 {
mbed_official 146:f64d43ff0c18 241 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 242 return BR_SDHC_BLKATTR_BLKSIZE;
mbed_official 146:f64d43ff0c18 243 }
mbed_official 146:f64d43ff0c18 244
mbed_official 146:f64d43ff0c18 245 /*!
mbed_official 146:f64d43ff0c18 246 * @brief Sets the block size.
mbed_official 146:f64d43ff0c18 247 *
mbed_official 146:f64d43ff0c18 248 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 249 * @param blockSize the block size
mbed_official 146:f64d43ff0c18 250 */
mbed_official 146:f64d43ff0c18 251 static inline void sdhc_hal_set_blksz(uint8_t instance, uint32_t blockSize)
mbed_official 146:f64d43ff0c18 252 {
mbed_official 146:f64d43ff0c18 253 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 254 BW_SDHC_BLKATTR_BLKSIZE(blockSize);
mbed_official 146:f64d43ff0c18 255 }
mbed_official 146:f64d43ff0c18 256
mbed_official 146:f64d43ff0c18 257 /*!
mbed_official 146:f64d43ff0c18 258 * @brief Sets the block count.
mbed_official 146:f64d43ff0c18 259 *
mbed_official 146:f64d43ff0c18 260 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 261 * @param blockCount the block count
mbed_official 146:f64d43ff0c18 262 */
mbed_official 146:f64d43ff0c18 263 static inline void sdhc_hal_set_blkcnt(uint8_t instance, uint32_t blockCount)
mbed_official 146:f64d43ff0c18 264 {
mbed_official 146:f64d43ff0c18 265 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 266 BW_SDHC_BLKATTR_BLKCNT(blockCount);
mbed_official 146:f64d43ff0c18 267 }
mbed_official 146:f64d43ff0c18 268
mbed_official 146:f64d43ff0c18 269 /*!
mbed_official 146:f64d43ff0c18 270 * @brief Gets the block count configured.
mbed_official 146:f64d43ff0c18 271 *
mbed_official 146:f64d43ff0c18 272 * @param instance SDHC instance id
mbed_official 146:f64d43ff0c18 273 * @return the block count already configured
mbed_official 146:f64d43ff0c18 274 */
mbed_official 146:f64d43ff0c18 275 static inline uint32_t sdhc_hal_get_blkcnt(uint8_t instance)
mbed_official 146:f64d43ff0c18 276 {
mbed_official 146:f64d43ff0c18 277 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 278 return BR_SDHC_BLKATTR_BLKCNT;
mbed_official 146:f64d43ff0c18 279 }
mbed_official 146:f64d43ff0c18 280
mbed_official 146:f64d43ff0c18 281 /*!
mbed_official 146:f64d43ff0c18 282 * @brief Configures the command argument.
mbed_official 146:f64d43ff0c18 283 *
mbed_official 146:f64d43ff0c18 284 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 285 * @param arg the command argument
mbed_official 146:f64d43ff0c18 286 */
mbed_official 146:f64d43ff0c18 287 static inline void sdhc_hal_set_cmd_arg(uint8_t instance, uint32_t arg)
mbed_official 146:f64d43ff0c18 288 {
mbed_official 146:f64d43ff0c18 289 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 290 BW_SDHC_CMDARG_CMDARG(arg);
mbed_official 146:f64d43ff0c18 291 }
mbed_official 146:f64d43ff0c18 292
mbed_official 146:f64d43ff0c18 293 /*!
mbed_official 146:f64d43ff0c18 294 * @brief Sends a command.
mbed_official 146:f64d43ff0c18 295 *
mbed_official 146:f64d43ff0c18 296 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 297 * @param index command index
mbed_official 146:f64d43ff0c18 298 * @param flags transfer type flags
mbed_official 146:f64d43ff0c18 299 */
mbed_official 146:f64d43ff0c18 300 static inline void sdhc_hal_send_cmd(uint8_t instance, uint32_t index, uint32_t flags)
mbed_official 146:f64d43ff0c18 301 {
mbed_official 146:f64d43ff0c18 302 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 303 HW_SDHC_XFERTYP_WR(((index << BP_SDHC_XFERTYP_CMDINX) & BM_SDHC_XFERTYP_CMDINX)
mbed_official 146:f64d43ff0c18 304 | (flags & ( BM_SDHC_XFERTYP_DMAEN | BM_SDHC_XFERTYP_MSBSEL | BM_SDHC_XFERTYP_DPSEL
mbed_official 146:f64d43ff0c18 305 | BM_SDHC_XFERTYP_CMDTYP | BM_SDHC_XFERTYP_BCEN | BM_SDHC_XFERTYP_CICEN
mbed_official 146:f64d43ff0c18 306 | BM_SDHC_XFERTYP_CCCEN | BM_SDHC_XFERTYP_RSPTYP | BM_SDHC_XFERTYP_DTDSEL
mbed_official 146:f64d43ff0c18 307 | BM_SDHC_XFERTYP_AC12EN)));
mbed_official 146:f64d43ff0c18 308 }
mbed_official 146:f64d43ff0c18 309
mbed_official 146:f64d43ff0c18 310 /*!
mbed_official 146:f64d43ff0c18 311 * @brief Fills the the data port.
mbed_official 146:f64d43ff0c18 312 *
mbed_official 146:f64d43ff0c18 313 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 314 * @param data the data about to be sent
mbed_official 146:f64d43ff0c18 315 */
mbed_official 146:f64d43ff0c18 316 static inline void sdhc_hal_set_data(uint8_t instance, uint32_t data)
mbed_official 146:f64d43ff0c18 317 {
mbed_official 146:f64d43ff0c18 318 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 319 HW_SDHC_DATPORT_WR(data);
mbed_official 146:f64d43ff0c18 320 }
mbed_official 146:f64d43ff0c18 321
mbed_official 146:f64d43ff0c18 322 /*!
mbed_official 146:f64d43ff0c18 323 * @brief Retrieves the data from the data port.
mbed_official 146:f64d43ff0c18 324 *
mbed_official 146:f64d43ff0c18 325 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 326 * @return data the data read
mbed_official 146:f64d43ff0c18 327 */
mbed_official 146:f64d43ff0c18 328 static inline uint32_t sdhc_hal_get_data(uint8_t instance)
mbed_official 146:f64d43ff0c18 329 {
mbed_official 146:f64d43ff0c18 330 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 331 return BR_SDHC_DATPORT_DATCONT;
mbed_official 146:f64d43ff0c18 332 }
mbed_official 146:f64d43ff0c18 333
mbed_official 146:f64d43ff0c18 334 /*!
mbed_official 146:f64d43ff0c18 335 * @brief Checks whether the command inhibit bit is set or not.
mbed_official 146:f64d43ff0c18 336 *
mbed_official 146:f64d43ff0c18 337 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 338 * @return 1 if command inhibit, 0 if not.
mbed_official 146:f64d43ff0c18 339 */
mbed_official 146:f64d43ff0c18 340 static inline uint32_t sdhc_hal_is_cmd_inhibit(uint8_t instance)
mbed_official 146:f64d43ff0c18 341 {
mbed_official 146:f64d43ff0c18 342 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 343 return BR_SDHC_PRSSTAT_CIHB;
mbed_official 146:f64d43ff0c18 344 }
mbed_official 146:f64d43ff0c18 345
mbed_official 146:f64d43ff0c18 346 /*!
mbed_official 146:f64d43ff0c18 347 * @brief Checks whether data inhibit bit is set or not.
mbed_official 146:f64d43ff0c18 348 *
mbed_official 146:f64d43ff0c18 349 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 350 * @return 1 if data inhibit, 0 if not.
mbed_official 146:f64d43ff0c18 351 */
mbed_official 146:f64d43ff0c18 352 static inline uint32_t sdhc_hal_is_data_inhibit(uint8_t instance)
mbed_official 146:f64d43ff0c18 353 {
mbed_official 146:f64d43ff0c18 354 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 355 return BR_SDHC_PRSSTAT_CDIHB;
mbed_official 146:f64d43ff0c18 356 }
mbed_official 146:f64d43ff0c18 357
mbed_official 146:f64d43ff0c18 358 /*!
mbed_official 146:f64d43ff0c18 359 * @brief Checks whether data line is active.
mbed_official 146:f64d43ff0c18 360 *
mbed_official 146:f64d43ff0c18 361 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 362 * @return 1 if it's active, 0 if not.
mbed_official 146:f64d43ff0c18 363 */
mbed_official 146:f64d43ff0c18 364 static inline uint32_t sdhc_hal_is_data_line_active(uint8_t instance)
mbed_official 146:f64d43ff0c18 365 {
mbed_official 146:f64d43ff0c18 366 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 367 return BR_SDHC_PRSSTAT_DLA;
mbed_official 146:f64d43ff0c18 368 }
mbed_official 146:f64d43ff0c18 369
mbed_official 146:f64d43ff0c18 370 /*!
mbed_official 146:f64d43ff0c18 371 * @brief Checks whether the SD clock is stable or not.
mbed_official 146:f64d43ff0c18 372 *
mbed_official 146:f64d43ff0c18 373 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 374 * @return 1 if it's stable, 0 if not.
mbed_official 146:f64d43ff0c18 375 */
mbed_official 146:f64d43ff0c18 376 static inline uint32_t sdhc_hal_is_sd_clk_stable(uint8_t instance)
mbed_official 146:f64d43ff0c18 377 {
mbed_official 146:f64d43ff0c18 378 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 379 return BR_SDHC_PRSSTAT_SDSTB;
mbed_official 146:f64d43ff0c18 380 }
mbed_official 146:f64d43ff0c18 381
mbed_official 146:f64d43ff0c18 382 /*!
mbed_official 146:f64d43ff0c18 383 * @brief Checks whether the IPG clock is off or not.
mbed_official 146:f64d43ff0c18 384 *
mbed_official 146:f64d43ff0c18 385 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 386 * @return 1 if it's off, 0 if not.
mbed_official 146:f64d43ff0c18 387 */
mbed_official 146:f64d43ff0c18 388 static inline uint32_t sdhc_hal_is_ipg_clk_off(uint8_t instance)
mbed_official 146:f64d43ff0c18 389 {
mbed_official 146:f64d43ff0c18 390 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 391 return BR_SDHC_PRSSTAT_IPGOFF;
mbed_official 146:f64d43ff0c18 392 }
mbed_official 146:f64d43ff0c18 393
mbed_official 146:f64d43ff0c18 394 /*!
mbed_official 146:f64d43ff0c18 395 * @brief Checks whether the system clock is off or not.
mbed_official 146:f64d43ff0c18 396 *
mbed_official 146:f64d43ff0c18 397 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 398 * @return 1 if it's off, 0 if not.
mbed_official 146:f64d43ff0c18 399 */
mbed_official 146:f64d43ff0c18 400 static inline uint32_t sdhc_hal_is_sys_clk_off(uint8_t instance)
mbed_official 146:f64d43ff0c18 401 {
mbed_official 146:f64d43ff0c18 402 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 403 return BR_SDHC_PRSSTAT_HCKOFF;
mbed_official 146:f64d43ff0c18 404 }
mbed_official 146:f64d43ff0c18 405
mbed_official 146:f64d43ff0c18 406 /*!
mbed_official 146:f64d43ff0c18 407 * @brief Checks whether the peripheral clock is off or not.
mbed_official 146:f64d43ff0c18 408 *
mbed_official 146:f64d43ff0c18 409 * @param instance SDHC instance ID.
mbed_official 146:f64d43ff0c18 410 * @return 1 if it's off, 0 if not.
mbed_official 146:f64d43ff0c18 411 */
mbed_official 146:f64d43ff0c18 412 static inline uint32_t sdhc_hal_is_per_clk_off(uint8_t instance)
mbed_official 146:f64d43ff0c18 413 {
mbed_official 146:f64d43ff0c18 414 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 415 return BR_SDHC_PRSSTAT_PEROFF;
mbed_official 146:f64d43ff0c18 416 }
mbed_official 146:f64d43ff0c18 417
mbed_official 146:f64d43ff0c18 418 /*!
mbed_official 146:f64d43ff0c18 419 * @brief Checks whether the SD clock is off or not.
mbed_official 146:f64d43ff0c18 420 *
mbed_official 146:f64d43ff0c18 421 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 422 * @return 1 if it's off, 0 if not.
mbed_official 146:f64d43ff0c18 423 */
mbed_official 146:f64d43ff0c18 424 static inline uint32_t sdhc_hal_is_sd_clk_off(uint8_t instance)
mbed_official 146:f64d43ff0c18 425 {
mbed_official 146:f64d43ff0c18 426 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 427 return BR_SDHC_PRSSTAT_SDOFF;
mbed_official 146:f64d43ff0c18 428 }
mbed_official 146:f64d43ff0c18 429
mbed_official 146:f64d43ff0c18 430 /*!
mbed_official 146:f64d43ff0c18 431 * @brief Checks whether the write transfer is active or not.
mbed_official 146:f64d43ff0c18 432 *
mbed_official 146:f64d43ff0c18 433 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 434 * @return 1 if it's active, 0 if not.
mbed_official 146:f64d43ff0c18 435 */
mbed_official 146:f64d43ff0c18 436 static inline uint32_t sdhc_hal_is_write_trans_active(uint8_t instance)
mbed_official 146:f64d43ff0c18 437 {
mbed_official 146:f64d43ff0c18 438 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 439 return BR_SDHC_PRSSTAT_WTA;
mbed_official 146:f64d43ff0c18 440 }
mbed_official 146:f64d43ff0c18 441
mbed_official 146:f64d43ff0c18 442 /*!
mbed_official 146:f64d43ff0c18 443 * @brief Checks whether the read transfer is active or not.
mbed_official 146:f64d43ff0c18 444 *
mbed_official 146:f64d43ff0c18 445 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 446 * @return 1 if it's off, 0 if not.
mbed_official 146:f64d43ff0c18 447 */
mbed_official 146:f64d43ff0c18 448 static inline uint32_t sdhc_hal_is_read_trans_active(uint8_t instance)
mbed_official 146:f64d43ff0c18 449 {
mbed_official 146:f64d43ff0c18 450 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 451 return BR_SDHC_PRSSTAT_RTA;
mbed_official 146:f64d43ff0c18 452 }
mbed_official 146:f64d43ff0c18 453
mbed_official 146:f64d43ff0c18 454 /*!
mbed_official 146:f64d43ff0c18 455 * @brief Check whether the buffer write is enabled or not.
mbed_official 146:f64d43ff0c18 456 *
mbed_official 146:f64d43ff0c18 457 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 458 * @return 1 if it's isEnabledd, 0 if not.
mbed_official 146:f64d43ff0c18 459 */
mbed_official 146:f64d43ff0c18 460 static inline uint32_t sdhc_hal_is_buf_write_enabled(uint8_t instance)
mbed_official 146:f64d43ff0c18 461 {
mbed_official 146:f64d43ff0c18 462 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 463 return BR_SDHC_PRSSTAT_BWEN;
mbed_official 146:f64d43ff0c18 464 }
mbed_official 146:f64d43ff0c18 465
mbed_official 146:f64d43ff0c18 466 /*!
mbed_official 146:f64d43ff0c18 467 * @brief Checks whether the buffer read is enabled or not.
mbed_official 146:f64d43ff0c18 468 *
mbed_official 146:f64d43ff0c18 469 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 470 * @return 1 if it's isEnabledd, 0 if not.
mbed_official 146:f64d43ff0c18 471 */
mbed_official 146:f64d43ff0c18 472 static inline uint32_t sdhc_hal_is_buf_read_enabled(uint8_t instance)
mbed_official 146:f64d43ff0c18 473 {
mbed_official 146:f64d43ff0c18 474 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 475 return BR_SDHC_PRSSTAT_BREN;
mbed_official 146:f64d43ff0c18 476 }
mbed_official 146:f64d43ff0c18 477
mbed_official 146:f64d43ff0c18 478 /*!
mbed_official 146:f64d43ff0c18 479 * @brief Checks whether the card is inserted or not.
mbed_official 146:f64d43ff0c18 480 *
mbed_official 146:f64d43ff0c18 481 * @param instance SDHC instance ID.
mbed_official 146:f64d43ff0c18 482 * @return 1 if it's inserted, 0 if not.
mbed_official 146:f64d43ff0c18 483 */
mbed_official 146:f64d43ff0c18 484 static inline uint32_t sdhc_hal_is_card_inserted(uint8_t instance)
mbed_official 146:f64d43ff0c18 485 {
mbed_official 146:f64d43ff0c18 486 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 487 return BR_SDHC_PRSSTAT_CINS;
mbed_official 146:f64d43ff0c18 488 }
mbed_official 146:f64d43ff0c18 489
mbed_official 146:f64d43ff0c18 490 /*!
mbed_official 146:f64d43ff0c18 491 * @brief Checks whether the command line signal is high or not.
mbed_official 146:f64d43ff0c18 492 *
mbed_official 146:f64d43ff0c18 493 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 494 * @return 1 if it's high, 0 if not.
mbed_official 146:f64d43ff0c18 495 */
mbed_official 146:f64d43ff0c18 496 static inline uint32_t sdhc_hal_is_cmd_line_level_high(uint8_t instance)
mbed_official 146:f64d43ff0c18 497 {
mbed_official 146:f64d43ff0c18 498 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 499 return BR_SDHC_PRSSTAT_CLSL;
mbed_official 146:f64d43ff0c18 500 }
mbed_official 146:f64d43ff0c18 501
mbed_official 146:f64d43ff0c18 502 /*!
mbed_official 146:f64d43ff0c18 503 * @brief Gets the data line signal level or not.
mbed_official 146:f64d43ff0c18 504 *
mbed_official 146:f64d43ff0c18 505 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 506 * @return [7:0] data line signal level
mbed_official 146:f64d43ff0c18 507 */
mbed_official 146:f64d43ff0c18 508 static inline uint32_t sdhc_hal_get_data_line_level(uint8_t instance)
mbed_official 146:f64d43ff0c18 509 {
mbed_official 146:f64d43ff0c18 510 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 511 return BR_SDHC_PRSSTAT_DLSL;
mbed_official 146:f64d43ff0c18 512 }
mbed_official 146:f64d43ff0c18 513
mbed_official 146:f64d43ff0c18 514 /*!
mbed_official 146:f64d43ff0c18 515 * @brief Sets the LED state.
mbed_official 146:f64d43ff0c18 516 *
mbed_official 146:f64d43ff0c18 517 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 518 * @param state the LED state
mbed_official 146:f64d43ff0c18 519 */
mbed_official 146:f64d43ff0c18 520 static inline void sdhc_hal_set_led_state(uint8_t instance, sdhc_hal_led_t state)
mbed_official 146:f64d43ff0c18 521 {
mbed_official 146:f64d43ff0c18 522 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 523 BW_SDHC_PROCTL_LCTL(state);
mbed_official 146:f64d43ff0c18 524 }
mbed_official 146:f64d43ff0c18 525
mbed_official 146:f64d43ff0c18 526 /*!
mbed_official 146:f64d43ff0c18 527 * @brief Sets the data transfer width.
mbed_official 146:f64d43ff0c18 528 *
mbed_official 146:f64d43ff0c18 529 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 530 * @param dtw data transfer width
mbed_official 146:f64d43ff0c18 531 */
mbed_official 146:f64d43ff0c18 532 static inline void sdhc_hal_set_data_trans_width(uint8_t instance, sdhc_hal_dtw_t dtw)
mbed_official 146:f64d43ff0c18 533 {
mbed_official 146:f64d43ff0c18 534 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 535 BW_SDHC_PROCTL_DTW(dtw);
mbed_official 146:f64d43ff0c18 536 }
mbed_official 146:f64d43ff0c18 537
mbed_official 146:f64d43ff0c18 538 /*!
mbed_official 146:f64d43ff0c18 539 * @brief Checks whether the DAT3 is taken as card detect pin.
mbed_official 146:f64d43ff0c18 540 *
mbed_official 146:f64d43ff0c18 541 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 542 */
mbed_official 146:f64d43ff0c18 543 static inline bool sdhc_hal_is_d3cd_enabled(uint8_t instance)
mbed_official 146:f64d43ff0c18 544 {
mbed_official 146:f64d43ff0c18 545 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 546 return BR_SDHC_PROCTL_D3CD;
mbed_official 146:f64d43ff0c18 547 }
mbed_official 146:f64d43ff0c18 548
mbed_official 146:f64d43ff0c18 549 /*!
mbed_official 146:f64d43ff0c18 550 * @brief Enables the DAT3 as a card detect pin.
mbed_official 146:f64d43ff0c18 551 *
mbed_official 146:f64d43ff0c18 552 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 553 * @param isEnabled isEnabled the feature
mbed_official 146:f64d43ff0c18 554 */
mbed_official 146:f64d43ff0c18 555 static inline void sdhc_hal_enable_d3cd(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 556 {
mbed_official 146:f64d43ff0c18 557 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 558 BW_SDHC_PROCTL_D3CD(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 559 }
mbed_official 146:f64d43ff0c18 560
mbed_official 146:f64d43ff0c18 561 /*!
mbed_official 146:f64d43ff0c18 562 * @brief Configures the endian mode.
mbed_official 146:f64d43ff0c18 563 *
mbed_official 146:f64d43ff0c18 564 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 565 * @param endianMode endian mode
mbed_official 146:f64d43ff0c18 566 */
mbed_official 146:f64d43ff0c18 567 static inline void sdhc_hal_set_endian(uint8_t instance, sdhc_hal_endian_t endianMode)
mbed_official 146:f64d43ff0c18 568 {
mbed_official 146:f64d43ff0c18 569 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 570 BW_SDHC_PROCTL_EMODE(endianMode);
mbed_official 146:f64d43ff0c18 571 }
mbed_official 146:f64d43ff0c18 572
mbed_official 146:f64d43ff0c18 573 /*!
mbed_official 146:f64d43ff0c18 574 * @brief Gets the card detect test level.
mbed_official 146:f64d43ff0c18 575 *
mbed_official 146:f64d43ff0c18 576 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 577 * @return card detect test level
mbed_official 146:f64d43ff0c18 578 */
mbed_official 146:f64d43ff0c18 579 static inline uint32_t sdhc_hal_get_cd_test_level(uint8_t instance)
mbed_official 146:f64d43ff0c18 580 {
mbed_official 146:f64d43ff0c18 581 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 582 return BR_SDHC_PROCTL_CDTL;
mbed_official 146:f64d43ff0c18 583 }
mbed_official 146:f64d43ff0c18 584
mbed_official 146:f64d43ff0c18 585 /*!
mbed_official 146:f64d43ff0c18 586 * @brief Enables the card detect test.
mbed_official 146:f64d43ff0c18 587 *
mbed_official 146:f64d43ff0c18 588 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 589 * @param isEnabled
mbed_official 146:f64d43ff0c18 590 */
mbed_official 146:f64d43ff0c18 591 static inline void sdhc_hal_enable_cd_test(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 592 {
mbed_official 146:f64d43ff0c18 593 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 594 BW_SDHC_PROCTL_CDSS(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 595 }
mbed_official 146:f64d43ff0c18 596
mbed_official 146:f64d43ff0c18 597 /*!
mbed_official 146:f64d43ff0c18 598 * @brief Sets the DMA mode.
mbed_official 146:f64d43ff0c18 599 *
mbed_official 146:f64d43ff0c18 600 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 601 * @param dmaMode the DMA mode
mbed_official 146:f64d43ff0c18 602 */
mbed_official 146:f64d43ff0c18 603 static inline void sdhc_hal_set_dma_mode(uint8_t instance, sdhc_hal_dma_mode_t dmaMode)
mbed_official 146:f64d43ff0c18 604 {
mbed_official 146:f64d43ff0c18 605 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 606 BW_SDHC_PROCTL_DMAS(dmaMode);
mbed_official 146:f64d43ff0c18 607 }
mbed_official 146:f64d43ff0c18 608
mbed_official 146:f64d43ff0c18 609 /*!
mbed_official 146:f64d43ff0c18 610 * @brief Enables stop at the block gap.
mbed_official 146:f64d43ff0c18 611 *
mbed_official 146:f64d43ff0c18 612 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 613 * @param isEnabled
mbed_official 146:f64d43ff0c18 614 */
mbed_official 146:f64d43ff0c18 615 static inline void sdhc_hal_enable_stop_at_blkgap(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 616 {
mbed_official 146:f64d43ff0c18 617 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 618 BW_SDHC_PROCTL_SABGREQ(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 619 }
mbed_official 146:f64d43ff0c18 620
mbed_official 146:f64d43ff0c18 621 /*!
mbed_official 146:f64d43ff0c18 622 * @brief Restarts a transaction which has stopped at the block gap.
mbed_official 146:f64d43ff0c18 623 *
mbed_official 146:f64d43ff0c18 624 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 625 */
mbed_official 146:f64d43ff0c18 626 static inline void sdhc_hal_continue_req(uint8_t instance)
mbed_official 146:f64d43ff0c18 627 {
mbed_official 146:f64d43ff0c18 628 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 629 BW_SDHC_PROCTL_CREQ(1);
mbed_official 146:f64d43ff0c18 630 }
mbed_official 146:f64d43ff0c18 631
mbed_official 146:f64d43ff0c18 632 /*!
mbed_official 146:f64d43ff0c18 633 * @brief Enables teh read wait control for the SDIO cards.
mbed_official 146:f64d43ff0c18 634 *
mbed_official 146:f64d43ff0c18 635 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 636 * @param isEnabled
mbed_official 146:f64d43ff0c18 637 */
mbed_official 146:f64d43ff0c18 638 static inline void sdhc_hal_enable_read_wait_ctrl(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 639 {
mbed_official 146:f64d43ff0c18 640 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 641 BW_SDHC_PROCTL_RWCTL(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 642 }
mbed_official 146:f64d43ff0c18 643
mbed_official 146:f64d43ff0c18 644 /*!
mbed_official 146:f64d43ff0c18 645 * @brief Enables stop at the block gap requests.
mbed_official 146:f64d43ff0c18 646 *
mbed_official 146:f64d43ff0c18 647 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 648 * @param isEnabled
mbed_official 146:f64d43ff0c18 649 */
mbed_official 146:f64d43ff0c18 650 static inline void sdhc_hal_enable_intr_stop_at_blk_gap(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 651 {
mbed_official 146:f64d43ff0c18 652 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 653 BW_SDHC_PROCTL_IABG(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 654 }
mbed_official 146:f64d43ff0c18 655
mbed_official 146:f64d43ff0c18 656 /*!
mbed_official 146:f64d43ff0c18 657 * @brief Enables wakeup event on the card interrupt.
mbed_official 146:f64d43ff0c18 658 *
mbed_official 146:f64d43ff0c18 659 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 660 * @param isEnabled
mbed_official 146:f64d43ff0c18 661 */
mbed_official 146:f64d43ff0c18 662 static inline void sdhc_hal_enable_wakeup_on_card_intr(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 663 {
mbed_official 146:f64d43ff0c18 664 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 665 BW_SDHC_PROCTL_WECINT(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 666 }
mbed_official 146:f64d43ff0c18 667
mbed_official 146:f64d43ff0c18 668 /*!
mbed_official 146:f64d43ff0c18 669 * @brief Enables wakeup event on the card insertion.
mbed_official 146:f64d43ff0c18 670 *
mbed_official 146:f64d43ff0c18 671 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 672 * @param isEnabled
mbed_official 146:f64d43ff0c18 673 */
mbed_official 146:f64d43ff0c18 674 static inline void sdhc_hal_enable_wakeup_on_card_ins(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 675 {
mbed_official 146:f64d43ff0c18 676 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 677 BW_SDHC_PROCTL_WECINS(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 678 }
mbed_official 146:f64d43ff0c18 679
mbed_official 146:f64d43ff0c18 680 /*!
mbed_official 146:f64d43ff0c18 681 * @brief Enables wakeup event on card removal.
mbed_official 146:f64d43ff0c18 682 *
mbed_official 146:f64d43ff0c18 683 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 684 * @param isEnabled
mbed_official 146:f64d43ff0c18 685 */
mbed_official 146:f64d43ff0c18 686 static inline void sdhc_hal_enable_wakeup_on_card_rm(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 687 {
mbed_official 146:f64d43ff0c18 688 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 689 BW_SDHC_PROCTL_WECRM(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 690 }
mbed_official 146:f64d43ff0c18 691
mbed_official 146:f64d43ff0c18 692 /*!
mbed_official 146:f64d43ff0c18 693 * @brief Enables the IPG clock, then no automatic clock gating off.
mbed_official 146:f64d43ff0c18 694 *
mbed_official 146:f64d43ff0c18 695 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 696 * @param isEnabled
mbed_official 146:f64d43ff0c18 697 */
mbed_official 146:f64d43ff0c18 698 static inline void sdhc_hal_enable_ipg_clk(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 699 {
mbed_official 146:f64d43ff0c18 700 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 701 BW_SDHC_SYSCTL_IPGEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 702 }
mbed_official 146:f64d43ff0c18 703
mbed_official 146:f64d43ff0c18 704 /*!
mbed_official 146:f64d43ff0c18 705 * @brief Enables the system clock, then no automatic clock gating off.
mbed_official 146:f64d43ff0c18 706 *
mbed_official 146:f64d43ff0c18 707 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 708 * @param isEnabled
mbed_official 146:f64d43ff0c18 709 */
mbed_official 146:f64d43ff0c18 710 static inline void sdhc_hal_enable_sys_clk(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 711 {
mbed_official 146:f64d43ff0c18 712 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 713 BW_SDHC_SYSCTL_HCKEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 714 }
mbed_official 146:f64d43ff0c18 715
mbed_official 146:f64d43ff0c18 716 /*!
mbed_official 146:f64d43ff0c18 717 * @brief Enables the peripheral clock, then no automatic clock gating off.
mbed_official 146:f64d43ff0c18 718 *
mbed_official 146:f64d43ff0c18 719 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 720 * @param isEnabled
mbed_official 146:f64d43ff0c18 721 */
mbed_official 146:f64d43ff0c18 722 static inline void sdhc_hal_enable_per_clk(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 723 {
mbed_official 146:f64d43ff0c18 724 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 725 BW_SDHC_SYSCTL_PEREN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 726 }
mbed_official 146:f64d43ff0c18 727
mbed_official 146:f64d43ff0c18 728 /*!
mbed_official 146:f64d43ff0c18 729 * @brief Enables the SD clock. It should be disabled before changing SD clock
mbed_official 146:f64d43ff0c18 730 * frequency.
mbed_official 146:f64d43ff0c18 731 *
mbed_official 146:f64d43ff0c18 732 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 733 * @param isEnabled
mbed_official 146:f64d43ff0c18 734 */
mbed_official 146:f64d43ff0c18 735 static inline void sdhc_hal_enable_sd_clk(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 736 {
mbed_official 146:f64d43ff0c18 737 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 738 BW_SDHC_SYSCTL_SDCLKEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 739 }
mbed_official 146:f64d43ff0c18 740
mbed_official 146:f64d43ff0c18 741 /*!
mbed_official 146:f64d43ff0c18 742 * @brief Sets the SD clock frequency divisor.
mbed_official 146:f64d43ff0c18 743 *
mbed_official 146:f64d43ff0c18 744 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 745 * @param divisor the divisor
mbed_official 146:f64d43ff0c18 746 */
mbed_official 146:f64d43ff0c18 747 static inline void sdhc_hal_set_clk_div(uint8_t instance, uint32_t divisor)
mbed_official 146:f64d43ff0c18 748 {
mbed_official 146:f64d43ff0c18 749 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 750 BW_SDHC_SYSCTL_DVS(divisor);
mbed_official 146:f64d43ff0c18 751 }
mbed_official 146:f64d43ff0c18 752
mbed_official 146:f64d43ff0c18 753 /*!
mbed_official 146:f64d43ff0c18 754 * @brief Sets the SD clock frequency select.
mbed_official 146:f64d43ff0c18 755 *
mbed_official 146:f64d43ff0c18 756 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 757 * @param freq the frequency selector
mbed_official 146:f64d43ff0c18 758 */
mbed_official 146:f64d43ff0c18 759 static inline void sdhc_hal_set_clk_freq(uint8_t instance, uint32_t freq)
mbed_official 146:f64d43ff0c18 760 {
mbed_official 146:f64d43ff0c18 761 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 762 BW_SDHC_SYSCTL_SDCLKFS(freq);
mbed_official 146:f64d43ff0c18 763 }
mbed_official 146:f64d43ff0c18 764
mbed_official 146:f64d43ff0c18 765 /*!
mbed_official 146:f64d43ff0c18 766 * @brief Sets the data timeout counter value.
mbed_official 146:f64d43ff0c18 767 *
mbed_official 146:f64d43ff0c18 768 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 769 * @param timeout
mbed_official 146:f64d43ff0c18 770 */
mbed_official 146:f64d43ff0c18 771 static inline void sdhc_hal_set_data_timeout(uint8_t instance, uint32_t timeout)
mbed_official 146:f64d43ff0c18 772 {
mbed_official 146:f64d43ff0c18 773 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 774 BW_SDHC_SYSCTL_DTOCV(timeout);
mbed_official 146:f64d43ff0c18 775 }
mbed_official 146:f64d43ff0c18 776
mbed_official 146:f64d43ff0c18 777 /*!
mbed_official 146:f64d43ff0c18 778 * @brief Performs the kinds of SDHC reset.
mbed_official 146:f64d43ff0c18 779 *
mbed_official 146:f64d43ff0c18 780 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 781 * @param type the type of reset
mbed_official 146:f64d43ff0c18 782 */
mbed_official 146:f64d43ff0c18 783 static inline void sdhc_hal_reset(uint8_t instance, uint32_t type)
mbed_official 146:f64d43ff0c18 784 {
mbed_official 146:f64d43ff0c18 785 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 786 HW_SDHC_SYSCTL_SET(type & (BM_SDHC_SYSCTL_RSTA | BM_SDHC_SYSCTL_RSTC | BM_SDHC_SYSCTL_RSTD));
mbed_official 146:f64d43ff0c18 787 }
mbed_official 146:f64d43ff0c18 788
mbed_official 146:f64d43ff0c18 789 /*!
mbed_official 146:f64d43ff0c18 790 * @brief Checks whether the given SDHC reset is finished.
mbed_official 146:f64d43ff0c18 791 *
mbed_official 146:f64d43ff0c18 792 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 793 * @param type the type of reset
mbed_official 146:f64d43ff0c18 794 * @return if the given reset is done
mbed_official 146:f64d43ff0c18 795 */
mbed_official 146:f64d43ff0c18 796 static inline uint32_t sdhc_hal_is_reset_done(uint8_t instance, uint32_t type)
mbed_official 146:f64d43ff0c18 797 {
mbed_official 146:f64d43ff0c18 798 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 799 return !(HW_SDHC_SYSCTL_RD()
mbed_official 146:f64d43ff0c18 800 & (type & (BM_SDHC_SYSCTL_RSTA | BM_SDHC_SYSCTL_RSTC | BM_SDHC_SYSCTL_RSTD)));
mbed_official 146:f64d43ff0c18 801 }
mbed_official 146:f64d43ff0c18 802
mbed_official 146:f64d43ff0c18 803 /*!
mbed_official 146:f64d43ff0c18 804 * @brief Sends 80 SD clock cycles to the card.
mbed_official 146:f64d43ff0c18 805 *
mbed_official 146:f64d43ff0c18 806 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 807 */
mbed_official 146:f64d43ff0c18 808 static inline void sdhc_hal_init_card(uint8_t instance)
mbed_official 146:f64d43ff0c18 809 {
mbed_official 146:f64d43ff0c18 810 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 811 BW_SDHC_SYSCTL_INITA(1);
mbed_official 146:f64d43ff0c18 812 }
mbed_official 146:f64d43ff0c18 813
mbed_official 146:f64d43ff0c18 814 /*!
mbed_official 146:f64d43ff0c18 815 * @brief Checks whether sending 80 SD clock cycles to card is finished.
mbed_official 146:f64d43ff0c18 816 *
mbed_official 146:f64d43ff0c18 817 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 818 * @return if sending 80 SD clock cycles is finished
mbed_official 146:f64d43ff0c18 819 */
mbed_official 146:f64d43ff0c18 820 static inline uint32_t sdhc_hal_is_init_card_done(uint8_t instance)
mbed_official 146:f64d43ff0c18 821 {
mbed_official 146:f64d43ff0c18 822 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 823 return !(BR_SDHC_SYSCTL_INITA);
mbed_official 146:f64d43ff0c18 824 }
mbed_official 146:f64d43ff0c18 825
mbed_official 146:f64d43ff0c18 826 /*!
mbed_official 146:f64d43ff0c18 827 * @brief Gets the current interrupt status.
mbed_official 146:f64d43ff0c18 828 *
mbed_official 146:f64d43ff0c18 829 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 830 * @return current interrupt flags
mbed_official 146:f64d43ff0c18 831 */
mbed_official 146:f64d43ff0c18 832 static inline uint32_t sdhc_hal_get_intr_flags(uint8_t instance)
mbed_official 146:f64d43ff0c18 833 {
mbed_official 146:f64d43ff0c18 834 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 835 return HW_SDHC_IRQSTAT_RD();
mbed_official 146:f64d43ff0c18 836 }
mbed_official 146:f64d43ff0c18 837
mbed_official 146:f64d43ff0c18 838 /*!
mbed_official 146:f64d43ff0c18 839 * @brief Clears a specified interrupt status.
mbed_official 146:f64d43ff0c18 840 *
mbed_official 146:f64d43ff0c18 841 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 842 * @param mask to specify interrupts' flags to be cleared
mbed_official 146:f64d43ff0c18 843 */
mbed_official 146:f64d43ff0c18 844 static inline void sdhc_hal_clear_intr_flags(uint8_t instance, uint32_t mask)
mbed_official 146:f64d43ff0c18 845 {
mbed_official 146:f64d43ff0c18 846 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 847 HW_SDHC_IRQSTAT_WR(mask);
mbed_official 146:f64d43ff0c18 848 }
mbed_official 146:f64d43ff0c18 849
mbed_official 146:f64d43ff0c18 850 /*!
mbed_official 146:f64d43ff0c18 851 * @brief Gets the currently enabled interrupt signal.
mbed_official 146:f64d43ff0c18 852 *
mbed_official 146:f64d43ff0c18 853 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 854 * @return currently enabled interrupt signal
mbed_official 146:f64d43ff0c18 855 */
mbed_official 146:f64d43ff0c18 856 static inline uint32_t sdhc_hal_get_intr_signal(uint8_t instance)
mbed_official 146:f64d43ff0c18 857 {
mbed_official 146:f64d43ff0c18 858 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 859 return HW_SDHC_IRQSIGEN_RD();
mbed_official 146:f64d43ff0c18 860 }
mbed_official 146:f64d43ff0c18 861
mbed_official 146:f64d43ff0c18 862 /*!
mbed_official 146:f64d43ff0c18 863 * @brief Gets the currently enabled interrupt state.
mbed_official 146:f64d43ff0c18 864 *
mbed_official 146:f64d43ff0c18 865 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 866 * @return currently enabled interrupts' state
mbed_official 146:f64d43ff0c18 867 */
mbed_official 146:f64d43ff0c18 868 static inline uint32_t sdhc_hal_get_intr_state(uint8_t instance)
mbed_official 146:f64d43ff0c18 869 {
mbed_official 146:f64d43ff0c18 870 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 871 return HW_SDHC_IRQSTATEN_RD();
mbed_official 146:f64d43ff0c18 872 }
mbed_official 146:f64d43ff0c18 873
mbed_official 146:f64d43ff0c18 874 /*!
mbed_official 146:f64d43ff0c18 875 * @brief Gets the auto cmd12 error.
mbed_official 146:f64d43ff0c18 876 *
mbed_official 146:f64d43ff0c18 877 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 878 * @return auto cmd12 error status
mbed_official 146:f64d43ff0c18 879 */
mbed_official 146:f64d43ff0c18 880 static inline uint32_t sdhc_hal_get_ac12_error(uint8_t instance)
mbed_official 146:f64d43ff0c18 881 {
mbed_official 146:f64d43ff0c18 882 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 883 return HW_SDHC_AC12ERR_RD();
mbed_official 146:f64d43ff0c18 884 }
mbed_official 146:f64d43ff0c18 885
mbed_official 146:f64d43ff0c18 886 /*!
mbed_official 146:f64d43ff0c18 887 * @brief Gets the maximum block length supported.
mbed_official 146:f64d43ff0c18 888 *
mbed_official 146:f64d43ff0c18 889 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 890 * @return the maximum block length support
mbed_official 146:f64d43ff0c18 891 */
mbed_official 146:f64d43ff0c18 892 static inline uint32_t sdhc_hal_get_max_blklen(uint8_t instance)
mbed_official 146:f64d43ff0c18 893 {
mbed_official 146:f64d43ff0c18 894 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 895 return BR_SDHC_HTCAPBLT_MBL;
mbed_official 146:f64d43ff0c18 896 }
mbed_official 146:f64d43ff0c18 897
mbed_official 146:f64d43ff0c18 898 /*!
mbed_official 146:f64d43ff0c18 899 * @brief Checks whether the ADMA is supported.
mbed_official 146:f64d43ff0c18 900 *
mbed_official 146:f64d43ff0c18 901 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 902 * @return if ADMA is supported
mbed_official 146:f64d43ff0c18 903 */
mbed_official 146:f64d43ff0c18 904 static inline uint32_t sdhc_hal_host_can_do_adma(uint8_t instance)
mbed_official 146:f64d43ff0c18 905 {
mbed_official 146:f64d43ff0c18 906 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 907 return BR_SDHC_HTCAPBLT_ADMAS;
mbed_official 146:f64d43ff0c18 908 }
mbed_official 146:f64d43ff0c18 909
mbed_official 146:f64d43ff0c18 910 /*!
mbed_official 146:f64d43ff0c18 911 * @brief Checks whether the high speed is supported.
mbed_official 146:f64d43ff0c18 912 *
mbed_official 146:f64d43ff0c18 913 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 914 * @return if high speed is supported
mbed_official 146:f64d43ff0c18 915 */
mbed_official 146:f64d43ff0c18 916 static inline uint32_t sdhc_hal_host_can_do_highspeed(uint8_t instance)
mbed_official 146:f64d43ff0c18 917 {
mbed_official 146:f64d43ff0c18 918 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 919 return BR_SDHC_HTCAPBLT_HSS;
mbed_official 146:f64d43ff0c18 920 }
mbed_official 146:f64d43ff0c18 921
mbed_official 146:f64d43ff0c18 922 /*!
mbed_official 146:f64d43ff0c18 923 * @brief Checks whether the DMA is supported.
mbed_official 146:f64d43ff0c18 924 *
mbed_official 146:f64d43ff0c18 925 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 926 * @return if high speed is supported
mbed_official 146:f64d43ff0c18 927 */
mbed_official 146:f64d43ff0c18 928 static inline uint32_t sdhc_hal_host_can_do_dma(uint8_t instance)
mbed_official 146:f64d43ff0c18 929 {
mbed_official 146:f64d43ff0c18 930 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 931 return BR_SDHC_HTCAPBLT_DMAS;
mbed_official 146:f64d43ff0c18 932 }
mbed_official 146:f64d43ff0c18 933
mbed_official 146:f64d43ff0c18 934 /*!
mbed_official 146:f64d43ff0c18 935 * @brief Checks whether the suspend/resume is supported.
mbed_official 146:f64d43ff0c18 936 *
mbed_official 146:f64d43ff0c18 937 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 938 * @return if suspend and resume is supported
mbed_official 146:f64d43ff0c18 939 */
mbed_official 146:f64d43ff0c18 940 static inline uint32_t sdhc_hal_host_can_do_suspend_resume(uint8_t instance)
mbed_official 146:f64d43ff0c18 941 {
mbed_official 146:f64d43ff0c18 942 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 943 return BR_SDHC_HTCAPBLT_SRS;
mbed_official 146:f64d43ff0c18 944 }
mbed_official 146:f64d43ff0c18 945
mbed_official 146:f64d43ff0c18 946 /*!
mbed_official 146:f64d43ff0c18 947 * @brief Checks whether the voltage 3.3 is supported.
mbed_official 146:f64d43ff0c18 948 *
mbed_official 146:f64d43ff0c18 949 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 950 * @return if voltage 3.3 is supported
mbed_official 146:f64d43ff0c18 951 */
mbed_official 146:f64d43ff0c18 952 static inline uint32_t sdhc_hal_host_supports_v330(uint8_t instance)
mbed_official 146:f64d43ff0c18 953 {
mbed_official 146:f64d43ff0c18 954 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 955 return BR_SDHC_HTCAPBLT_VS33;
mbed_official 146:f64d43ff0c18 956 }
mbed_official 146:f64d43ff0c18 957
mbed_official 146:f64d43ff0c18 958 /*!
mbed_official 146:f64d43ff0c18 959 * @brief Checks whether the voltage 3.0 is supported.
mbed_official 146:f64d43ff0c18 960 *
mbed_official 146:f64d43ff0c18 961 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 962 * @return if voltage 3.0 is supported
mbed_official 146:f64d43ff0c18 963 */
mbed_official 146:f64d43ff0c18 964 static inline uint32_t sdhc_hal_host_supports_v300(uint8_t instance)
mbed_official 146:f64d43ff0c18 965 {
mbed_official 146:f64d43ff0c18 966 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 967 #if defined(FSL_FEATURE_SDHC_HAS_V300_SUPPORT) && FSL_FEATURE_SDHC_HAS_V300_SUPPORT
mbed_official 146:f64d43ff0c18 968 return BR_SDHC_HTCAPBLT_VS30;
mbed_official 146:f64d43ff0c18 969 #else
mbed_official 146:f64d43ff0c18 970 return 0;
mbed_official 146:f64d43ff0c18 971 #endif
mbed_official 146:f64d43ff0c18 972 }
mbed_official 146:f64d43ff0c18 973
mbed_official 146:f64d43ff0c18 974 /*!
mbed_official 146:f64d43ff0c18 975 * @brief Checks whether the voltage 1.8 is supported.
mbed_official 146:f64d43ff0c18 976 *
mbed_official 146:f64d43ff0c18 977 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 978 * @return if voltage 1.8 is supported
mbed_official 146:f64d43ff0c18 979 */
mbed_official 146:f64d43ff0c18 980 static inline uint32_t sdhc_hal_host_supports_v180(uint8_t instance)
mbed_official 146:f64d43ff0c18 981 {
mbed_official 146:f64d43ff0c18 982 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 983 #if defined(FSL_FEATURE_SDHC_HAS_V180_SUPPORT) && FSL_FEATURE_SDHC_HAS_V180_SUPPORT
mbed_official 146:f64d43ff0c18 984 return BR_SDHC_HTCAPBLT_VS18;
mbed_official 146:f64d43ff0c18 985 #else
mbed_official 146:f64d43ff0c18 986 return 0;
mbed_official 146:f64d43ff0c18 987 #endif
mbed_official 146:f64d43ff0c18 988 }
mbed_official 146:f64d43ff0c18 989
mbed_official 146:f64d43ff0c18 990 /*!
mbed_official 146:f64d43ff0c18 991 * @brief Sets the watermark for writing.
mbed_official 146:f64d43ff0c18 992 *
mbed_official 146:f64d43ff0c18 993 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 994 * @param watermark for writing
mbed_official 146:f64d43ff0c18 995 */
mbed_official 146:f64d43ff0c18 996 static inline void sdhc_hal_set_write_watermark(uint8_t instance, uint32_t watermark)
mbed_official 146:f64d43ff0c18 997 {
mbed_official 146:f64d43ff0c18 998 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 999 BW_SDHC_WML_WRWML(watermark);
mbed_official 146:f64d43ff0c18 1000 }
mbed_official 146:f64d43ff0c18 1001
mbed_official 146:f64d43ff0c18 1002 /*!
mbed_official 146:f64d43ff0c18 1003 * @brief Sets the watermark for reading.
mbed_official 146:f64d43ff0c18 1004 *
mbed_official 146:f64d43ff0c18 1005 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1006 * @param watermark for reading
mbed_official 146:f64d43ff0c18 1007 */
mbed_official 146:f64d43ff0c18 1008 static inline void sdhc_hal_set_read_watermark(uint8_t instance, uint32_t watermark)
mbed_official 146:f64d43ff0c18 1009 {
mbed_official 146:f64d43ff0c18 1010 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1011 BW_SDHC_WML_RDWML(watermark);
mbed_official 146:f64d43ff0c18 1012 }
mbed_official 146:f64d43ff0c18 1013
mbed_official 146:f64d43ff0c18 1014 /*!
mbed_official 146:f64d43ff0c18 1015 * @brief Sets the force events according to the given mask.
mbed_official 146:f64d43ff0c18 1016 *
mbed_official 146:f64d43ff0c18 1017 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1018 * @param mask to specify the force events' flags to be set
mbed_official 146:f64d43ff0c18 1019 */
mbed_official 146:f64d43ff0c18 1020 static inline void sdhc_hal_set_force_event_flags(uint8_t instance, uint32_t mask)
mbed_official 146:f64d43ff0c18 1021 {
mbed_official 146:f64d43ff0c18 1022 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1023 HW_SDHC_FEVT_WR(mask);
mbed_official 146:f64d43ff0c18 1024 }
mbed_official 146:f64d43ff0c18 1025
mbed_official 146:f64d43ff0c18 1026 /*!
mbed_official 146:f64d43ff0c18 1027 * @brief Checks whether the ADMA error is length mismatch.
mbed_official 146:f64d43ff0c18 1028 *
mbed_official 146:f64d43ff0c18 1029 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1030 * @return if ADMA error is length mismatch
mbed_official 146:f64d43ff0c18 1031 */
mbed_official 146:f64d43ff0c18 1032 static inline uint32_t sdhc_hal_is_adma_len_mismatch_err(uint8_t instance)
mbed_official 146:f64d43ff0c18 1033 {
mbed_official 146:f64d43ff0c18 1034 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1035 return BR_SDHC_ADMAES_ADMALME;
mbed_official 146:f64d43ff0c18 1036 }
mbed_official 146:f64d43ff0c18 1037
mbed_official 146:f64d43ff0c18 1038 /*!
mbed_official 146:f64d43ff0c18 1039 * @brief Gets back the state of the ADMA error.
mbed_official 146:f64d43ff0c18 1040 *
mbed_official 146:f64d43ff0c18 1041 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1042 * @return error state
mbed_official 146:f64d43ff0c18 1043 */
mbed_official 146:f64d43ff0c18 1044 static inline uint32_t sdhc_hal_get_adma_error_stat(uint8_t instance)
mbed_official 146:f64d43ff0c18 1045 {
mbed_official 146:f64d43ff0c18 1046 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1047 return BR_SDHC_ADMAES_ADMAES;
mbed_official 146:f64d43ff0c18 1048 }
mbed_official 146:f64d43ff0c18 1049
mbed_official 146:f64d43ff0c18 1050 /*!
mbed_official 146:f64d43ff0c18 1051 * @brief Checks whether the ADMA error is a descriptor error.
mbed_official 146:f64d43ff0c18 1052 *
mbed_official 146:f64d43ff0c18 1053 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1054 * @return if ADMA error is descriptor error
mbed_official 146:f64d43ff0c18 1055 */
mbed_official 146:f64d43ff0c18 1056 static inline uint32_t sdhc_hal_is_adma_desc_err(uint8_t instance)
mbed_official 146:f64d43ff0c18 1057 {
mbed_official 146:f64d43ff0c18 1058 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1059 return BR_SDHC_ADMAES_ADMADCE;
mbed_official 146:f64d43ff0c18 1060 }
mbed_official 146:f64d43ff0c18 1061
mbed_official 146:f64d43ff0c18 1062 /*!
mbed_official 146:f64d43ff0c18 1063 * @brief Sets the ADMA address.
mbed_official 146:f64d43ff0c18 1064 *
mbed_official 146:f64d43ff0c18 1065 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1066 * @param address for ADMA transfer
mbed_official 146:f64d43ff0c18 1067 */
mbed_official 146:f64d43ff0c18 1068 static inline void sdhc_hal_set_adma_addr(uint8_t instance, uint32_t address)
mbed_official 146:f64d43ff0c18 1069 {
mbed_official 146:f64d43ff0c18 1070 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1071 HW_SDHC_ADSADDR_WR(BF_SDHC_ADSADDR_ADSADDR(address));
mbed_official 146:f64d43ff0c18 1072 }
mbed_official 146:f64d43ff0c18 1073
mbed_official 146:f64d43ff0c18 1074 /*!
mbed_official 146:f64d43ff0c18 1075 * @brief Enables the external DMA request.
mbed_official 146:f64d43ff0c18 1076 *
mbed_official 146:f64d43ff0c18 1077 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1078 * @param isEnabled or not
mbed_official 146:f64d43ff0c18 1079 */
mbed_official 146:f64d43ff0c18 1080 static inline void sdhc_hal_enable_ext_dma_req(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 1081 {
mbed_official 146:f64d43ff0c18 1082 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1083 BW_SDHC_VENDOR_EXTDMAEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 1084 }
mbed_official 146:f64d43ff0c18 1085
mbed_official 146:f64d43ff0c18 1086 /*!
mbed_official 146:f64d43ff0c18 1087 * @brief Enables the exact block number for the SDIO CMD53.
mbed_official 146:f64d43ff0c18 1088 *
mbed_official 146:f64d43ff0c18 1089 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1090 * @param isEnabled or not
mbed_official 146:f64d43ff0c18 1091 */
mbed_official 146:f64d43ff0c18 1092 static inline void sdhc_hal_enable_exact_blk_num(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 1093 {
mbed_official 146:f64d43ff0c18 1094 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1095 BW_SDHC_VENDOR_EXBLKNU(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 1096 }
mbed_official 146:f64d43ff0c18 1097
mbed_official 146:f64d43ff0c18 1098 /*!
mbed_official 146:f64d43ff0c18 1099 * @brief Sets the timeout value for the boot ACK.
mbed_official 146:f64d43ff0c18 1100 *
mbed_official 146:f64d43ff0c18 1101 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1102 * @param timeout
mbed_official 146:f64d43ff0c18 1103 */
mbed_official 146:f64d43ff0c18 1104 static inline void sdhc_hal_set_boot_ack_timeout(uint8_t instance, uint32_t timeout)
mbed_official 146:f64d43ff0c18 1105 {
mbed_official 146:f64d43ff0c18 1106 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1107 BW_SDHC_MMCBOOT_DTOCVACK(timeout);
mbed_official 146:f64d43ff0c18 1108 }
mbed_official 146:f64d43ff0c18 1109
mbed_official 146:f64d43ff0c18 1110 /*!
mbed_official 146:f64d43ff0c18 1111 * @brief Enables the boot ACK.
mbed_official 146:f64d43ff0c18 1112 *
mbed_official 146:f64d43ff0c18 1113 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1114 * @param isEnabled
mbed_official 146:f64d43ff0c18 1115 */
mbed_official 146:f64d43ff0c18 1116 static inline void sdhc_hal_enable_boot_ack(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 1117 {
mbed_official 146:f64d43ff0c18 1118 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1119 BW_SDHC_MMCBOOT_BOOTACK(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 1120 }
mbed_official 146:f64d43ff0c18 1121
mbed_official 146:f64d43ff0c18 1122 /*!
mbed_official 146:f64d43ff0c18 1123 * @brief Configures the boot mode.
mbed_official 146:f64d43ff0c18 1124 *
mbed_official 146:f64d43ff0c18 1125 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1126 * @param mode the boot mode
mbed_official 146:f64d43ff0c18 1127 */
mbed_official 146:f64d43ff0c18 1128 static inline void sdhc_hal_set_boot_mode(uint8_t instance, sdhc_hal_mmcboot_t mode)
mbed_official 146:f64d43ff0c18 1129 {
mbed_official 146:f64d43ff0c18 1130 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1131 BW_SDHC_MMCBOOT_BOOTMODE(mode);
mbed_official 146:f64d43ff0c18 1132 }
mbed_official 146:f64d43ff0c18 1133
mbed_official 146:f64d43ff0c18 1134 /*!
mbed_official 146:f64d43ff0c18 1135 * @brief Enables the fast boot.
mbed_official 146:f64d43ff0c18 1136 *
mbed_official 146:f64d43ff0c18 1137 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1138 * @param isEnabled or not
mbed_official 146:f64d43ff0c18 1139 */
mbed_official 146:f64d43ff0c18 1140 static inline void sdhc_hal_enable_fastboot(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 1141 {
mbed_official 146:f64d43ff0c18 1142 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1143 BW_SDHC_MMCBOOT_BOOTEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 1144 }
mbed_official 146:f64d43ff0c18 1145
mbed_official 146:f64d43ff0c18 1146 /*!
mbed_official 146:f64d43ff0c18 1147 * @brief Enables the automatic stop at the block gap.
mbed_official 146:f64d43ff0c18 1148 *
mbed_official 146:f64d43ff0c18 1149 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1150 * @param isEnabled or not
mbed_official 146:f64d43ff0c18 1151 */
mbed_official 146:f64d43ff0c18 1152 static inline void sdhc_hal_enable_auto_stop_at_blkgap(uint8_t instance, bool isEnabled)
mbed_official 146:f64d43ff0c18 1153 {
mbed_official 146:f64d43ff0c18 1154 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1155 BW_SDHC_MMCBOOT_AUTOSABGEN(isEnabled ? 1 : 0);
mbed_official 146:f64d43ff0c18 1156 }
mbed_official 146:f64d43ff0c18 1157
mbed_official 146:f64d43ff0c18 1158 /*!
mbed_official 146:f64d43ff0c18 1159 * @brief Configures the the block count for the boot.
mbed_official 146:f64d43ff0c18 1160 *
mbed_official 146:f64d43ff0c18 1161 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1162 * @param blockCount the block count for boot
mbed_official 146:f64d43ff0c18 1163 */
mbed_official 146:f64d43ff0c18 1164 static inline void sdhc_hal_set_boot_blkcnt(uint8_t instance, uint32_t blockCount)
mbed_official 146:f64d43ff0c18 1165 {
mbed_official 146:f64d43ff0c18 1166 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1167 BW_SDHC_MMCBOOT_BOOTBLKCNT(blockCount);
mbed_official 146:f64d43ff0c18 1168 }
mbed_official 146:f64d43ff0c18 1169
mbed_official 146:f64d43ff0c18 1170 /*!
mbed_official 146:f64d43ff0c18 1171 * @brief Gets a specification version.
mbed_official 146:f64d43ff0c18 1172 *
mbed_official 146:f64d43ff0c18 1173 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1174 * @return specification version
mbed_official 146:f64d43ff0c18 1175 */
mbed_official 146:f64d43ff0c18 1176 static inline uint32_t sdhc_hal_get_spec_ver(uint8_t instance)
mbed_official 146:f64d43ff0c18 1177 {
mbed_official 146:f64d43ff0c18 1178 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1179 return BR_SDHC_HOSTVER_SVN;
mbed_official 146:f64d43ff0c18 1180 }
mbed_official 146:f64d43ff0c18 1181
mbed_official 146:f64d43ff0c18 1182 /*!
mbed_official 146:f64d43ff0c18 1183 * @brief Gets the vendor version.
mbed_official 146:f64d43ff0c18 1184 *
mbed_official 146:f64d43ff0c18 1185 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1186 * @return vendor version
mbed_official 146:f64d43ff0c18 1187 */
mbed_official 146:f64d43ff0c18 1188 static inline uint32_t sdhc_hal_get_vendor_ver(uint8_t instance)
mbed_official 146:f64d43ff0c18 1189 {
mbed_official 146:f64d43ff0c18 1190 assert(instance < HW_SDHC_INSTANCE_COUNT);
mbed_official 146:f64d43ff0c18 1191 return BR_SDHC_HOSTVER_VVN;
mbed_official 146:f64d43ff0c18 1192 }
mbed_official 146:f64d43ff0c18 1193
mbed_official 146:f64d43ff0c18 1194 /*!
mbed_official 146:f64d43ff0c18 1195 * @brief Gets the command response.
mbed_official 146:f64d43ff0c18 1196 *
mbed_official 146:f64d43ff0c18 1197 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1198 * @param resp an array of response, 4 bytes
mbed_official 146:f64d43ff0c18 1199 */
mbed_official 146:f64d43ff0c18 1200 void sdhc_hal_get_resp(uint8_t instance, uint32_t * resp);
mbed_official 146:f64d43ff0c18 1201
mbed_official 146:f64d43ff0c18 1202 /*!
mbed_official 146:f64d43ff0c18 1203 * @brief Enables the specified interrupts.
mbed_official 146:f64d43ff0c18 1204 *
mbed_official 146:f64d43ff0c18 1205 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1206 * @param isEnabled enable or disable
mbed_official 146:f64d43ff0c18 1207 * @param mask to specify interrupts to be isEnabledd
mbed_official 146:f64d43ff0c18 1208 */
mbed_official 146:f64d43ff0c18 1209 void sdhc_hal_enable_intr_signal(uint8_t instance, bool isEnabled, uint32_t mask);
mbed_official 146:f64d43ff0c18 1210
mbed_official 146:f64d43ff0c18 1211 /*!
mbed_official 146:f64d43ff0c18 1212 * @brief Enables the specified interrupt state.
mbed_official 146:f64d43ff0c18 1213 *
mbed_official 146:f64d43ff0c18 1214 * @param instance SDHC instance ID
mbed_official 146:f64d43ff0c18 1215 * @param isEnabled enable or disable
mbed_official 146:f64d43ff0c18 1216 * @param mask to specify interrupts' state to be enabled
mbed_official 146:f64d43ff0c18 1217 */
mbed_official 146:f64d43ff0c18 1218 void sdhc_hal_enable_intr_state(uint8_t instance, bool isEnabled, uint32_t mask);
mbed_official 146:f64d43ff0c18 1219
mbed_official 146:f64d43ff0c18 1220 /*@} */
mbed_official 146:f64d43ff0c18 1221
mbed_official 146:f64d43ff0c18 1222 #if defined(__cplusplus)
mbed_official 146:f64d43ff0c18 1223 }
mbed_official 146:f64d43ff0c18 1224 #endif
mbed_official 146:f64d43ff0c18 1225 /*! @} */
mbed_official 146:f64d43ff0c18 1226
mbed_official 146:f64d43ff0c18 1227 #endif
mbed_official 146:f64d43ff0c18 1228
mbed_official 146:f64d43ff0c18 1229 /*************************************************************************************************
mbed_official 146:f64d43ff0c18 1230 * EOF
mbed_official 146:f64d43ff0c18 1231 ************************************************************************************************/
mbed_official 146:f64d43ff0c18 1232