@@ -84,243 +84,6 @@ void *flexspi_memset(void *buf, int c, size_t n)
8484 return buf ;
8585}
8686
87- #ifdef HYPERFLASH_BOOT
88- AT_QUICKACCESS_SECTION_CODE (void flexspi_lower_clock_ram (void ));
89- AT_QUICKACCESS_SECTION_CODE (void flexspi_clock_update_ram (void ));
90- void flexspi_update_lut_ram (void )
91- {
92- flexspi_config_t config ;
93-
94- flexspi_memset (& config , 0 , sizeof (config ));
95-
96- /*Get FLEXSPI default settings and configure the flexspi. */
97- FLEXSPI_GetDefaultConfig (& config );
98-
99- /*Set AHB buffer size for reading data through AHB bus. */
100- config .ahbConfig .enableAHBPrefetch = true;
101- /*Allow AHB read start address do not follow the alignment requirement. */
102- config .ahbConfig .enableReadAddressOpt = true;
103- config .ahbConfig .enableAHBBufferable = true;
104- config .ahbConfig .enableAHBCachable = true;
105- /* enable diff clock and DQS */
106- config .enableSckBDiffOpt = true;
107- config .rxSampleClock = kFLEXSPI_ReadSampleClkExternalInputFromDqsPad ;
108- config .enableCombination = true;
109- FLEXSPI_Init (FLEXSPI , & config );
110-
111- /* Configure flash settings according to serial flash feature. */
112- FLEXSPI_SetFlashConfig (FLEXSPI , & deviceconfig , kFLEXSPI_PortA1 );
113-
114- /* Update LUT table. */
115- FLEXSPI_UpdateLUT (FLEXSPI , 0 , customLUT , CUSTOM_LUT_LENGTH );
116-
117- FLEXSPI_SoftwareReset (FLEXSPI );
118-
119- /* Wait for bus idle. */
120- while (!FLEXSPI_GetBusIdleStatus (FLEXSPI )) {
121- }
122- }
123-
124- status_t flexspi_nor_write_enable_ram (uint32_t baseAddr )
125- {
126- flexspi_transfer_t flashXfer ;
127- status_t status = kStatus_Success ;
128-
129- flexspi_memset (& flashXfer , 0 , sizeof (flashXfer ));
130-
131- /* Write enable */
132- flashXfer .deviceAddress = baseAddr ;
133- flashXfer .port = kFLEXSPI_PortA1 ;
134- flashXfer .cmdType = kFLEXSPI_Command ;
135- flashXfer .SeqNumber = 2 ;
136- flashXfer .seqIndex = HYPERFLASH_CMD_LUT_SEQ_IDX_WRITEENABLE ;
137-
138- status = FLEXSPI_TransferBlocking (FLEXSPI , & flashXfer );
139-
140- return status ;
141- }
142-
143- status_t flexspi_nor_wait_bus_busy_ram (void )
144- {
145- /* Wait status ready. */
146- bool isBusy = false;
147- uint32_t readValue = 0 ;
148- status_t status = kStatus_Success ;
149- flexspi_transfer_t flashXfer ;
150-
151- flexspi_memset (& flashXfer , 0 , sizeof (flashXfer ));
152-
153- flashXfer .deviceAddress = 0 ;
154- flashXfer .port = kFLEXSPI_PortA1 ;
155- flashXfer .cmdType = kFLEXSPI_Read ;
156- flashXfer .SeqNumber = 2 ;
157- flashXfer .seqIndex = HYPERFLASH_CMD_LUT_SEQ_IDX_READSTATUS ;
158- flashXfer .data = & readValue ;
159- flashXfer .dataSize = 2 ;
160-
161- do {
162- status = FLEXSPI_TransferBlocking (FLEXSPI , & flashXfer );
163-
164- if (status != kStatus_Success ) {
165- return status ;
166- }
167-
168- if (readValue & 0x8000 ) {
169- isBusy = false;
170- } else {
171- isBusy = true;
172- }
173-
174- if (readValue & 0x3200 ) {
175- status = kStatus_Fail ;
176- break ;
177- }
178-
179- } while (isBusy );
180-
181- return status ;
182-
183- }
184-
185- status_t flexspi_nor_flash_erase_sector_ram (uint32_t address )
186- {
187- status_t status = kStatus_Success ;
188- flexspi_transfer_t flashXfer ;
189-
190- flexspi_memset (& flashXfer , 0 , sizeof (flashXfer ));
191-
192- /* Write enable */
193- status = flexspi_nor_write_enable_ram (address );
194- if (status != kStatus_Success ) {
195- return status ;
196- }
197-
198- flashXfer .deviceAddress = address ;
199- flashXfer .port = kFLEXSPI_PortA1 ;
200- flashXfer .cmdType = kFLEXSPI_Command ;
201- flashXfer .SeqNumber = 4 ;
202- flashXfer .seqIndex = HYPERFLASH_CMD_LUT_SEQ_IDX_ERASESECTOR ;
203-
204- status = FLEXSPI_TransferBlocking (FLEXSPI , & flashXfer );
205- if (status != kStatus_Success ) {
206- return status ;
207- }
208-
209- status = flexspi_nor_wait_bus_busy_ram ();
210-
211- /* Do software reset. */
212- FLEXSPI_SoftwareReset (FLEXSPI );
213-
214- return status ;
215- }
216-
217- void flexspi_lower_clock_ram (void )
218- {
219- unsigned int reg = 0 ;
220-
221- /* Wait for bus idle. */
222- while (!FLEXSPI_GetBusIdleStatus (FLEXSPI )) {
223- }
224-
225- FLEXSPI_Enable (FLEXSPI , false);
226-
227- /* Disable FlexSPI clock */
228- CCM -> CCGR6 &= ~CCM_CCGR6_CG5_MASK ;
229-
230- /* flexspi clock 66M, DDR mode, internal clock 33M. */
231- reg = CCM -> CSCMR1 ;
232- reg &= ~CCM_CSCMR1_FLEXSPI_PODF_MASK ;
233- reg |= CCM_CSCMR1_FLEXSPI_PODF (3 );
234- CCM -> CSCMR1 = reg ;
235-
236- /* Enable FlexSPI clock */
237- CCM -> CCGR6 |= CCM_CCGR6_CG5_MASK ;
238-
239- FLEXSPI_Enable (FLEXSPI , true);
240-
241- /* Do software reset. */
242- FLEXSPI_SoftwareReset (FLEXSPI );
243-
244- /* Wait for bus idle. */
245- while (!FLEXSPI_GetBusIdleStatus (FLEXSPI )) {
246- }
247- }
248-
249- void flexspi_clock_update_ram (void )
250- {
251- /* Program finished, speed the clock to 133M. */
252- /* Wait for bus idle before change flash configuration. */
253- while (!FLEXSPI_GetBusIdleStatus (FLEXSPI )) {
254- }
255- FLEXSPI_Enable (FLEXSPI , false);
256- /* Disable FlexSPI clock */
257- CCM -> CCGR6 &= ~CCM_CCGR6_CG5_MASK ;
258-
259- /* flexspi clock 260M, DDR mode, internal clock 130M. */
260- CCM -> CSCMR1 &= ~CCM_CSCMR1_FLEXSPI_PODF_MASK ;
261-
262- /* Enable FlexSPI clock */
263- CCM -> CCGR6 |= CCM_CCGR6_CG5_MASK ;
264-
265- FLEXSPI_Enable (FLEXSPI , true);
266-
267- /* Do software reset. */
268- FLEXSPI_SoftwareReset (FLEXSPI );
269-
270- /* Wait for bus idle. */
271- while (!FLEXSPI_GetBusIdleStatus (FLEXSPI )) {
272- }
273- }
274-
275- status_t flexspi_nor_flash_page_program_ram (uint32_t address , const uint32_t * src , uint32_t size )
276- {
277- status_t status = kStatus_Success ;
278- flexspi_transfer_t flashXfer ;
279- uint32_t offset = 0 ;
280-
281- flexspi_memset (& flashXfer , 0 , sizeof (flashXfer ));
282-
283- flexspi_lower_clock_ram ();
284-
285- while (size > 0 ) {
286- /* Write enable */
287- status = flexspi_nor_write_enable_ram (address + offset );
288-
289- if (status != kStatus_Success ) {
290- return status ;
291- }
292-
293- /* Prepare page program command */
294- flashXfer .deviceAddress = address + offset ;
295- flashXfer .port = kFLEXSPI_PortA1 ;
296- flashXfer .cmdType = kFLEXSPI_Write ;
297- flashXfer .SeqNumber = 2 ;
298- flashXfer .seqIndex = HYPERFLASH_CMD_LUT_SEQ_IDX_PAGEPROGRAM ;
299- flashXfer .data = (uint32_t * )((uint32_t )src + offset );
300- flashXfer .dataSize = BOARD_FLASH_PAGE_SIZE ;
301-
302- status = FLEXSPI_TransferBlocking (FLEXSPI , & flashXfer );
303-
304- if (status != kStatus_Success ) {
305- return status ;
306- }
307-
308- status = flexspi_nor_wait_bus_busy_ram ();
309-
310- if (status != kStatus_Success ) {
311- return status ;
312- }
313-
314- size -= BOARD_FLASH_PAGE_SIZE ;
315- offset += BOARD_FLASH_PAGE_SIZE ;
316- }
317-
318- flexspi_clock_update_ram ();
319-
320- return status ;
321- }
322-
323- #else
32487AT_QUICKACCESS_SECTION_CODE (status_t flexspi_nor_enable_quad_mode_ram (void ));
32588status_t flexspi_nor_enable_quad_mode_ram (void )
32689{
@@ -373,7 +136,6 @@ void flexspi_update_lut_ram(void)
373136 config .ahbConfig .enableReadAddressOpt = true;
374137 config .ahbConfig .enableAHBCachable = true;
375138 config .rxSampleClock = kFLEXSPI_ReadSampleClkLoopbackFromDqsPad ;
376- FLEXSPI_Init (FLEXSPI , & config );
377139
378140 /* Configure flash settings according to serial flash feature. */
379141 FLEXSPI_SetFlashConfig (FLEXSPI , & deviceconfig , kFLEXSPI_PortA1 );
@@ -537,7 +299,6 @@ status_t flexspi_nor_flash_page_program_ram(uint32_t address, const uint32_t *sr
537299 return status ;
538300}
539301
540- #endif
541302void flexspi_nor_flash_read_data_ram (uint32_t addr , uint32_t * buffer , uint32_t size )
542303{
543304 memcpy (buffer , (void * )addr , size );
@@ -607,8 +368,8 @@ int32_t flash_free(flash_t *obj)
607368uint32_t flash_get_sector_size (const flash_t * obj , uint32_t address )
608369{
609370 uint32_t sectorsize = MBED_FLASH_INVALID_SIZE ;
610- uint32_t devicesize = BOARD_FLASH_SIZE ;
611- uint32_t startaddr = BOARD_FLASH_START_ADDR ;
371+ uint32_t devicesize = BOARD_FLASHIAP_SIZE ;
372+ uint32_t startaddr = BOARD_FLASHIAP_START_ADDR ;
612373
613374 if ((address >= startaddr ) && (address < (startaddr + devicesize ))) {
614375 sectorsize = BOARD_FLASH_SECTOR_SIZE ;
0 commit comments