Memory mapped mode implemented, to be tested.

git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@9536 35acf78f-673a-0410-8e92-d51de3d6d3f4
This commit is contained in:
Giovanni Di Sirio 2016-05-26 16:56:25 +00:00
parent 6f7ae6af72
commit 3fa83ef942
2 changed files with 21 additions and 2 deletions

View File

@ -291,7 +291,6 @@ void qspi_lld_receive(QSPIDriver *qspip, const qspi_command_t *cmdp,
dmaStreamEnable(qspip->dma);
}
#if (QSPI_SUPPORTS_MEMMAP == TRUE) || defined(__DOXYGEN__)
/**
* @brief Maps in memory space a QSPI flash device.
@ -309,6 +308,19 @@ void qspi_lld_map_flash(QSPIDriver *qspip,
const qspi_command_t *cmdp,
uint8_t **addrp) {
/* Disabling the DMA request while in memory mapped mode.*/
qspip->qspi->CR &= ~QUADSPI_CR_DMAEN;
/* Starting memory mapped mode using the passed parameters.*/
qspip->qspi->DLR = 0;
qspip->qspi->ABR = 0;
qspip->qspi->AR = 0;
qspip->qspi->CCR = cmdp->cfg | QUADSPI_CCR_FMODE_1 | QUADSPI_CCR_FMODE_0;
/* Mapped flash absolute base address.*/
if (addrp != NULL) {
*addrp = (uint8_t *)0x90000000;
}
}
/**
@ -322,6 +334,13 @@ void qspi_lld_map_flash(QSPIDriver *qspip,
*/
void qspi_lld_unmap_flash(QSPIDriver *qspip) {
/* Aborting memory mapped mode.*/
qspip->qspi->CR |= QUADSPI_CR_ABORT;
while ((qspip->qspi->CR & QUADSPI_CR_ABORT) != 0U) {
}
/* Re-enabling DMA request, we are going back to indirect mode.*/
qspip->qspi->CR |= QUADSPI_CR_DMAEN;
}
#endif /* QSPI_SUPPORTS_MEMMAP == TRUE */

View File

@ -35,7 +35,7 @@
* @name QSPI capabilities
* @{
*/
#define QSPI_SUPPORTS_MEMMAP FALSE
#define QSPI_SUPPORTS_MEMMAP TRUE
/** @} */
/**