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