diff options
author | Gurjant Kalsi <me@gurjantkalsi.com> | 2016-05-10 18:22:08 -0700 |
---|---|---|
committer | Gurjant Kalsi <me@gurjantkalsi.com> | 2016-05-10 18:22:08 -0700 |
commit | eaa41e1cb2cddcccf2fe20d151e6707bad32c62f (patch) | |
tree | d4f53cc4e10deec315cf8def9d3c9f12e1ab7f8a /platform | |
parent | 62c4f983ef5094f55b859c77b56a94cd495e3c9a (diff) | |
download | common-eaa41e1cb2cddcccf2fe20d151e6707bad32c62f.tar.gz |
[qspi][stm32f7] Implement IOCtl to test whether device is in linear mode.
Diffstat (limited to 'platform')
-rw-r--r-- | platform/stm32f7xx/qspi.c | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/platform/stm32f7xx/qspi.c b/platform/stm32f7xx/qspi.c index c670a4ab..1b20df3b 100644 --- a/platform/stm32f7xx/qspi.c +++ b/platform/stm32f7xx/qspi.c @@ -81,8 +81,9 @@ static HAL_StatusTypeDef qspi_cmd(QSPI_HandleTypeDef *, QSPI_CommandTypeDef *); static HAL_StatusTypeDef qspi_tx_dma(QSPI_HandleTypeDef *, QSPI_CommandTypeDef *, uint8_t *); static HAL_StatusTypeDef qspi_rx_dma(QSPI_HandleTypeDef *, QSPI_CommandTypeDef *, uint8_t *); -status_t qspi_enable_linear(void); -status_t qspi_disable_linear(void); +static status_t qspi_enable_linear(void); +static status_t qspi_disable_linear(void); +static bool qspi_is_linear(void); status_t qspi_dma_init(QSPI_HandleTypeDef *hqspi); @@ -476,6 +477,10 @@ static int spiflash_ioctl(struct bdev *device, int request, void *argp) case BIO_IOCTL_PUT_MEM_MAP: ret = qspi_disable_linear(); break; + case BIO_IOCTL_IS_MAPPED: + if (argp) + *(void **)argp = (void *)qspi_is_linear(); + break; default: ret = ERR_NOT_SUPPORTED; } @@ -996,7 +1001,7 @@ static uint32_t get_specialized_instruction(uint32_t instruction, uint32_t addre return instruction; } -status_t qspi_enable_linear(void) +static status_t qspi_enable_linear(void) { status_t result = NO_ERROR; @@ -1042,7 +1047,7 @@ finish: } -status_t qspi_disable_linear(void) +static status_t qspi_disable_linear(void) { status_t result = NO_ERROR; @@ -1065,4 +1070,13 @@ status_t qspi_disable_linear(void) finish: mutex_release(&spiflash_mutex); return result; +} + +static bool qspi_is_linear(void) +{ + bool result; + mutex_acquire(&spiflash_mutex); + result = (QSPI_STATE_LINEAR == device_state); + mutex_release(&spiflash_mutex); + return result; }
\ No newline at end of file |