aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/include/hal_qspi.h
diff options
context:
space:
mode:
authorGiovanni Di Sirio <gdisirio@gmail.com>2016-05-26 12:42:14 +0000
committerGiovanni Di Sirio <gdisirio@gmail.com>2016-05-26 12:42:14 +0000
commitd22d4c839e7438786d23921641bdabffac4dd247 (patch)
treed5e1412222af208fadca9417de69fb9bf4be8c78 /os/hal/include/hal_qspi.h
parent61d215fb3ddf88f78077ac780401613da85f44d7 (diff)
downloadChibiOS-d22d4c839e7438786d23921641bdabffac4dd247.tar.gz
ChibiOS-d22d4c839e7438786d23921641bdabffac4dd247.tar.bz2
ChibiOS-d22d4c839e7438786d23921641bdabffac4dd247.zip
API for flash memory mapping, requires implementation.
git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9534 35acf78f-673a-0410-8e92-d51de3d6d3f4
Diffstat (limited to 'os/hal/include/hal_qspi.h')
-rw-r--r--os/hal/include/hal_qspi.h42
1 files changed, 41 insertions, 1 deletions
diff --git a/os/hal/include/hal_qspi.h b/os/hal/include/hal_qspi.h
index 67fc7ad10..0b67923b3 100644
--- a/os/hal/include/hal_qspi.h
+++ b/os/hal/include/hal_qspi.h
@@ -114,7 +114,8 @@ typedef enum {
QSPI_STOP = 1, /**< Stopped. */
QSPI_READY = 2, /**< Ready. */
QSPI_ACTIVE = 3, /**< Exchanging data. */
- QSPI_COMPLETE = 4 /**< Asynchronous operation complete. */
+ QSPI_COMPLETE = 4, /**< Asynchronous operation complete. */
+ QSPI_MEMMAP = 5 /**< In memory mapped mode. */
} qspistate_t;
/**
@@ -128,6 +129,10 @@ typedef struct {
#include "hal_qspi_lld.h"
+#if !defined(QSPI_SUPPORTS_MEMMAP)
+#error "low level does not define QSPI_SUPPORTS_MEMMAP"
+#endif
+
/*===========================================================================*/
/* Driver macros. */
/*===========================================================================*/
@@ -192,6 +197,35 @@ typedef struct {
(qspip)->state = QSPI_ACTIVE; \
qspi_lld_receive(qspip, cmdp, n, rxbuf); \
}
+
+#if (QSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
+/**
+ * @brief Maps in memory space a QSPI flash device.
+ * @pre The memory flash device must be initialized appropriately
+ * before mapping it in memory space.
+ *
+ * @param[in] qspip pointer to the @p QSPIDriver object
+ * @param[in] cmdp pointer to the command descriptor
+ * @param[out] addrp pointer to the memory start address of the mapped
+ * flash or @p NULL
+ *
+ * @iclass
+ */
+#define qspiMapFlashI(qspip, cmdp, addrp) \
+ qspi_lld_map_flash(qspip, cmdp, addrp)
+
+/**
+ * @brief Maps in memory space a QSPI flash device.
+ * @post The memory flash device must be re-initialized for normal
+ * commands exchange.
+ *
+ * @param[in] qspip pointer to the @p QSPIDriver object
+ *
+ * @iclass
+ */
+#define qspiUnmapFlashI(qspip) \
+ qspi_lld_unmap_flash(qspip)
+#endif /* QSPI_SUPPORTS_MEMMAP == TRUE */
/** @} */
/**
@@ -265,6 +299,12 @@ extern "C" {
void qspiReceive(QSPIDriver *qspip, const qspi_command_t *cmdp,
size_t n, uint8_t *rxbuf);
#endif
+#if QSPI_SUPPORTS_MEMMAP == TRUE
+void qspiMapFlash(QSPIDriver *qspip,
+ const qspi_command_t *cmdp,
+ uint8_t **addrp);
+void qspiUnmapFlash(QSPIDriver *qspip);
+#endif
#if QSPI_USE_MUTUAL_EXCLUSION == TRUE
void qspiAcquireBus(QSPIDriver *qspip);
void qspiReleaseBus(QSPIDriver *qspip);