1diff --git a/platform/stm32f7xx/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h b/platform/stm32f7xx/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h 2index b9703b7..9571cd6 100644 3--- a/platform/stm32f7xx/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h 4+++ b/platform/stm32f7xx/STM32F7xx_HAL_Driver/Inc/stm32f7xx_hal_qspi.h 5@@ -535,21 +535,21 @@ void HAL_QSPI_MspDeInit(QSPI_HandleTypeDef *hqspi); 6 void HAL_QSPI_IRQHandler(QSPI_HandleTypeDef *hqspi); 7 8 /* QSPI indirect mode */ 9-HAL_StatusTypeDef HAL_QSPI_Command (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout); 10+HAL_StatusTypeDef HAL_QSPI_Command (QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, uint32_t Timeout); 11 HAL_StatusTypeDef HAL_QSPI_Transmit (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); 12 HAL_StatusTypeDef HAL_QSPI_Receive (QSPI_HandleTypeDef *hqspi, uint8_t *pData, uint32_t Timeout); 13-HAL_StatusTypeDef HAL_QSPI_Command_IT (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd); 14+HAL_StatusTypeDef HAL_QSPI_Command_IT (QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd); 15 HAL_StatusTypeDef HAL_QSPI_Transmit_IT (QSPI_HandleTypeDef *hqspi, uint8_t *pData); 16 HAL_StatusTypeDef HAL_QSPI_Receive_IT (QSPI_HandleTypeDef *hqspi, uint8_t *pData); 17 HAL_StatusTypeDef HAL_QSPI_Transmit_DMA (QSPI_HandleTypeDef *hqspi, uint8_t *pData); 18 HAL_StatusTypeDef HAL_QSPI_Receive_DMA (QSPI_HandleTypeDef *hqspi, uint8_t *pData); 19 20 /* QSPI status flag polling mode */ 21-HAL_StatusTypeDef HAL_QSPI_AutoPolling (QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout); 22-HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg); 23+HAL_StatusTypeDef HAL_QSPI_AutoPolling (QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout); 24+HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg); 25 26 /* QSPI memory-mapped mode */ 27-HAL_StatusTypeDef HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg); 28+HAL_StatusTypeDef HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg); 29 /** 30 * @} 31 */ 32diff --git a/platform/stm32f7xx/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c b/platform/stm32f7xx/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c 33index ae028c0..baafa7d 100644 34--- a/platform/stm32f7xx/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c 35+++ b/platform/stm32f7xx/STM32F7xx_HAL_Driver/Src/stm32f7xx_hal_qspi.c 36@@ -202,7 +202,7 @@ static void QSPI_DMARxHalfCplt(DMA_HandleTypeDef *hdma); 37 static void QSPI_DMATxHalfCplt(DMA_HandleTypeDef *hdma); 38 static void QSPI_DMAError(DMA_HandleTypeDef *hdma); 39 static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqspi, uint32_t Flag, FlagStatus State, uint32_t Timeout); 40-static void QSPI_Config(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode); 41+static void QSPI_Config(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode); 42 /** 43 * @} 44 */ 45@@ -540,7 +540,7 @@ void HAL_QSPI_IRQHandler(QSPI_HandleTypeDef *hqspi) 46 * @note This function is used only in Indirect Read or Write Modes 47 * @retval HAL status 48 */ 49-HAL_StatusTypeDef HAL_QSPI_Command(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t Timeout) 50+HAL_StatusTypeDef HAL_QSPI_Command(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, uint32_t Timeout) 51 { 52 HAL_StatusTypeDef status = HAL_ERROR; 53 54@@ -618,7 +618,7 @@ HAL_StatusTypeDef HAL_QSPI_Command(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDe 55 * @note This function is used only in Indirect Read or Write Modes 56 * @retval HAL status 57 */ 58-HAL_StatusTypeDef HAL_QSPI_Command_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd) 59+HAL_StatusTypeDef HAL_QSPI_Command_IT(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd) 60 { 61 HAL_StatusTypeDef status = HAL_ERROR; 62 63@@ -1059,7 +1059,7 @@ HAL_StatusTypeDef HAL_QSPI_Receive_DMA(QSPI_HandleTypeDef *hqspi, uint8_t *pData 64 * @note This function is used only in Automatic Polling Mode 65 * @retval HAL status 66 */ 67-HAL_StatusTypeDef HAL_QSPI_AutoPolling(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout) 68+HAL_StatusTypeDef HAL_QSPI_AutoPolling(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg, uint32_t Timeout) 69 { 70 HAL_StatusTypeDef status = HAL_ERROR; 71 72@@ -1118,8 +1118,18 @@ HAL_StatusTypeDef HAL_QSPI_AutoPolling(QSPI_HandleTypeDef *hqspi, QSPI_CommandTy 73 MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PMM | QUADSPI_CR_APMS), 74 (cfg->MatchMode | QSPI_AUTOMATIC_STOP_ENABLE)); 75 76+ //////////////////////////////////////////////////////////////////// 77+ 78+ // Removed by gkalsi <github.com/gkalsi> to permit const objects to 79+ // be passed into this function. 80+ // NOTE: The caller is now responsible for setting cmd->NbData == 81+ // cfg->StatusBytesSize prior to calling this function. 82+ 83+ // cmd->NbData = cfg->StatusBytesSize; 84+ 85+ //////////////////////////////////////////////////////////////////// 86+ 87 /* Call the configuration function */ 88- cmd->NbData = cfg->StatusBytesSize; 89 QSPI_Config(hqspi, cmd, QSPI_FUNCTIONAL_MODE_AUTO_POLLING); 90 91 /* Wait until SM flag is set to go back in idle state */ 92@@ -1150,7 +1160,7 @@ HAL_StatusTypeDef HAL_QSPI_AutoPolling(QSPI_HandleTypeDef *hqspi, QSPI_CommandTy 93 * @note This function is used only in Automatic Polling Mode 94 * @retval HAL status 95 */ 96-HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg) 97+HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_AutoPollingTypeDef *cfg) 98 { 99 HAL_StatusTypeDef status = HAL_ERROR; 100 101@@ -1208,8 +1218,18 @@ HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_Comman 102 MODIFY_REG(hqspi->Instance->CR, (QUADSPI_CR_PMM | QUADSPI_CR_APMS), 103 (cfg->MatchMode | cfg->AutomaticStop)); 104 105+ //////////////////////////////////////////////////////////////////// 106+ 107+ // Removed by gkalsi <github.com/gkalsi> to permit const objects to 108+ // be passed into this function. 109+ // NOTE: The caller is now responsible for setting cmd->NbData == 110+ // cfg->StatusBytesSize prior to calling this function. 111+ 112+ // cmd->NbData = cfg->StatusBytesSize; 113+ 114+ //////////////////////////////////////////////////////////////////// 115+ 116 /* Call the configuration function */ 117- cmd->NbData = cfg->StatusBytesSize; 118 QSPI_Config(hqspi, cmd, QSPI_FUNCTIONAL_MODE_AUTO_POLLING); 119 120 /* Enable the QSPI Transfer Error, FIFO threshold and status match Interrupt */ 121@@ -1234,7 +1254,7 @@ HAL_StatusTypeDef HAL_QSPI_AutoPolling_IT(QSPI_HandleTypeDef *hqspi, QSPI_Comman 122 * @note This function is used only in Memory mapped Mode 123 * @retval HAL status 124 */ 125-HAL_StatusTypeDef HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg) 126+HAL_StatusTypeDef HAL_QSPI_MemoryMapped(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, QSPI_MemoryMappedTypeDef *cfg) 127 { 128 HAL_StatusTypeDef status = HAL_ERROR; 129 130@@ -1647,7 +1667,7 @@ static HAL_StatusTypeDef QSPI_WaitFlagStateUntilTimeout(QSPI_HandleTypeDef *hqsp 131 * @arg QSPI_FUNCTIONAL_MODE_MEMORY_MAPPED: Memory-mapped mode 132 * @retval None 133 */ 134-static void QSPI_Config(QSPI_HandleTypeDef *hqspi, QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode) 135+static void QSPI_Config(QSPI_HandleTypeDef *hqspi, const QSPI_CommandTypeDef *cmd, uint32_t FunctionalMode) 136 { 137 assert_param(IS_QSPI_FUNCTIONAL_MODE(FunctionalMode)); 138 139