summaryrefslogtreecommitdiffstats
path: root/bsps/arm/atsam/include/libchip/include/hsmci.h
diff options
context:
space:
mode:
Diffstat (limited to 'bsps/arm/atsam/include/libchip/include/hsmci.h')
-rw-r--r--bsps/arm/atsam/include/libchip/include/hsmci.h155
1 files changed, 155 insertions, 0 deletions
diff --git a/bsps/arm/atsam/include/libchip/include/hsmci.h b/bsps/arm/atsam/include/libchip/include/hsmci.h
new file mode 100644
index 0000000000..f228a3e261
--- /dev/null
+++ b/bsps/arm/atsam/include/libchip/include/hsmci.h
@@ -0,0 +1,155 @@
+/* ---------------------------------------------------------------------------- */
+/* Atmel Microcontroller Software Support */
+/* SAM Software Package License */
+/* ---------------------------------------------------------------------------- */
+/* Copyright (c) 2015, Atmel Corporation */
+/* */
+/* All rights reserved. */
+/* */
+/* Redistribution and use in source and binary forms, with or without */
+/* modification, are permitted provided that the following condition is met: */
+/* */
+/* - Redistributions of source code must retain the above copyright notice, */
+/* this list of conditions and the disclaimer below. */
+/* */
+/* Atmel's name may not be used to endorse or promote products derived from */
+/* this software without specific prior written permission. */
+/* */
+/* DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR */
+/* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF */
+/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE */
+/* DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT, */
+/* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT */
+/* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, */
+/* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF */
+/* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING */
+/* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, */
+/* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */
+/* ---------------------------------------------------------------------------- */
+
+/** \file */
+
+/** \addtogroup hsmci_module Working with HSMCI
+ * \ingroup mcid_module
+ *
+ * \section Purpose
+ *
+ * The HSMCI driver provides the interface to configure and use the HSMCI
+ * peripheral.
+ *
+ * \section Usage
+ *
+ * -# HSMCI_Enable(), MCI_Disable(): Enable/Disable HSMCI interface.
+ * -# HSMCI_Reset(): Reset HSMCI interface.
+ * -# HSMCI_Select(): HSMCI slot and buswidth selection
+ * (\ref Hsmci::HSMCI_SDCR).
+ * -# HSMCI_ConfigureMode(): Configure the MCI CLKDIV in the _MR register
+ * (\ref Hsmci::HSMCI_MR).
+ * -# HSMCI_EnableIt(), HSMCI_DisableIt(), HSMCI_GetItMask(), HSMCI_GetStatus()
+ * HSMCI Interrupt control (\ref Hsmci::HSMCI_IER, \ref Hsmci::HSMCI_IDR,
+ * \ref Hsmci::HSMCI_IMR, \ref Hsmci::HSMCI_SR).
+ * -# HSMCI_ConfigureTransfer(): Setup block length and count for MCI transfer
+ * (\ref Hsmci::HSMCI_BLKR).
+ * -# HSMCI_SendCmd(): Send SD/MMC command with argument
+ * (\ref Hsmci::HSMCI_ARGR, \ref Hsmci::HSMCI_CMDR).
+ * -# HSMCI_GetResponse(): Get SD/MMC response after command finished
+ * (\ref Hsmci::HSMCI_RSPR).
+ * -# HSMCI_ConfigureDma(): Configure MCI DMA transfer
+ * (\ref Hsmci::HSMCI_DMA).
+ * -# HSMCI_Configure(): Configure the HSMCI interface (\ref Hsmci::HSMCI_CFG).
+ * -# HSMCI_HsEnable(), HSMCI_IsHsEnabled(): High Speed control.
+ *
+ * For more accurate information, please look at the HSMCI section of the
+ * Datasheet.
+ *
+ * \sa \ref mcid_module
+ *
+ * Related files :\n
+ * \ref hsmci.h\n
+ * \ref hsmci.c.\n
+ */
+
+#ifndef HSMCID_H
+#define HSMCID_H
+/** \addtogroup hsmci_module
+ *@{
+ */
+
+/*----------------------------------------------------------------------------
+ * Headers
+ *----------------------------------------------------------------------------*/
+
+#include "chip.h"
+
+#include <stdint.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+/*----------------------------------------------------------------------------
+ * Exported functions
+ *----------------------------------------------------------------------------*/
+/** \addtogroup hsmci_functions HSMCI Functions
+ * @{
+ */
+
+extern void HSMCI_Enable(Hsmci *pRMci);
+extern void HSMCI_Disable(Hsmci *pRMci);
+extern void HSMCI_Reset(Hsmci *pRMci, uint8_t bBackup);
+
+extern void HSMCI_Select(Hsmci *pRMci, uint8_t bSlot, uint8_t bBusWidth);
+extern void HSMCI_SetSlot(Hsmci *pRMci, uint8_t bSlot);
+extern void HSMCI_SetBusWidth(Hsmci *pRMci, uint8_t bBusWidth);
+extern uint8_t HSMCI_GetBusWidth(Hsmci *pRMci);
+
+extern void HSMCI_ConfigureMode(Hsmci *pRMci, uint32_t dwMode);
+extern uint32_t HSMCI_GetMode(Hsmci *pRMci);
+extern void HSMCI_ProofEnable(Hsmci *pRMci, uint8_t bRdProof, uint8_t bWrProof);
+extern void HSMCI_PadvCtl(Hsmci *pRMci, uint8_t bPadv);
+extern void HSMCI_FByteEnable(Hsmci *pRMci, uint8_t bFByteEn);
+extern uint8_t HSMCI_IsFByteEnabled(Hsmci *pRMci);
+extern void HSMCI_DivCtrl(Hsmci *pRMci, uint32_t bClkDiv, uint8_t bPwsDiv);
+
+extern void HSMCI_EnableIt(Hsmci *pRMci, uint32_t dwSources);
+extern void HSMCI_DisableIt(Hsmci *pRMci, uint32_t dwSources);
+extern uint32_t HSMCI_GetItMask(Hsmci *pRMci);
+
+extern void HSMCI_ConfigureTransfer(Hsmci *pRMci, uint16_t wBlkLen,
+ uint16_t wCnt);
+extern void HSMCI_SetBlockLen(Hsmci *pRMci, uint16_t wBlkSize);
+extern void HSMCI_SetBlockCount(Hsmci *pRMci, uint16_t wBlkCnt);
+
+extern void HSMCI_ConfigureCompletionTO(Hsmci *pRMci, uint32_t dwConfigure);
+extern void HSMCI_ConfigureDataTO(Hsmci *pRMci, uint32_t dwConfigure);
+
+extern void HSMCI_SendCmd(Hsmci *pRMci, uint32_t dwCmd, uint32_t dwArg);
+extern uint32_t HSMCI_GetResponse(Hsmci *pRMci);
+extern uint32_t HSMCI_Read(Hsmci *pRMci);
+extern void HSMCI_ReadFifo(Hsmci *pRMci, uint8_t *pdwData, uint32_t dwSize);
+extern void HSMCI_Write(Hsmci *pRMci, uint32_t dwData);
+extern void HSMCI_WriteFifo(Hsmci *pRMci, uint8_t *pdwData, uint32_t dwSize);
+
+extern uint32_t HSMCI_GetStatus(Hsmci *pRMci);
+
+extern void HSMCI_ConfigureDma(Hsmci *pRMci, uint32_t dwConfigure);
+extern void HSMCI_EnableDma(Hsmci *pRMci, uint8_t bEnable);
+
+extern void HSMCI_Configure(Hsmci *pRMci, uint32_t dwConfigure);
+extern void HSMCI_HsEnable(Hsmci *pRMci, uint8_t bHsEnable);
+extern uint8_t HSMCI_IsHsEnabled(Hsmci *pRMci);
+
+extern void HSMCI_BusWidthCtl(Hsmci *pRMci, uint8_t bBusWidth);
+extern void HSMCI_SlotCtl(Hsmci *pRMci, uint8_t bSlot);
+extern uint8_t HSMCI_GetSlot(Hsmci *pRMci);
+
+extern void HSMCI_ConfigureWP(Hsmci *pRMci, uint32_t dwConfigure);
+extern uint32_t HSMCI_GetWPStatus(Hsmci *pRMci);
+
+#ifdef __cplusplus
+}
+#endif
+
+/** @}*/
+/**@}*/
+#endif //#ifndef HSMCID_H
+