Skip to content

Commit 15c85df

Browse files
Properly disable QSPI if not in use
1 parent 81abe9b commit 15c85df

File tree

2 files changed

+36
-3
lines changed

2 files changed

+36
-3
lines changed

system/libstm32l4_dragonfly/dosfs_sflash.c

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -483,7 +483,9 @@ static uint32_t dosfs_sflash_nor_identify(dosfs_sflash_t *sflash)
483483
QSPI_COMMAND_DATA_SINGLE | QSPI_COMMAND_ADDRESS_SINGLE | QSPI_COMMAND_INSTRUCTION_SINGLE | 0x0b);
484484
#endif
485485

486-
return data_size;
486+
stm32l4_qspi_unselect(&sflash->qspi);
487+
488+
return data_size;
487489
}
488490

489491
static bool dosfs_sflash_nor_erase(dosfs_sflash_t *sflash, uint32_t address)
@@ -2447,9 +2449,11 @@ static int dosfs_sflash_format(void *context)
24472449
int status = F_NO_ERROR;
24482450

24492451
#if (DOSFS_CONFIG_SFLASH_SIMULATE_TRACE == 1)
2450-
printf("SFLASH_INFO\n");
2452+
printf("SFLASH_FORMAT\n");
24512453
#endif /* (DOSFS_CONFIG_SFLASH_SIMULATE_TRACE == 1) */
24522454

2455+
stm32l4_qspi_select(&sflash->qspi);
2456+
24532457
dosfs_sflash_ftl_format(sflash);
24542458

24552459
if (!dosfs_sflash_ftl_mount(sflash))
@@ -2463,6 +2467,8 @@ static int dosfs_sflash_format(void *context)
24632467
sflash->state = DOSFS_SFLASH_STATE_READY;
24642468
}
24652469

2470+
stm32l4_qspi_unselect(&sflash->qspi);
2471+
24662472
return status;
24672473
}
24682474

@@ -2482,6 +2488,8 @@ static int dosfs_sflash_reclaim(void *context, uint32_t size)
24822488
}
24832489
else
24842490
{
2491+
stm32l4_qspi_select(&sflash->qspi);
2492+
24852493
if (size < sflash->xlate_count)
24862494
{
24872495
size = size * 3;
@@ -2499,6 +2507,8 @@ static int dosfs_sflash_reclaim(void *context, uint32_t size)
24992507

25002508
dosfs_sflash_ftl_reclaim(sflash, victim_offset);
25012509
}
2510+
2511+
stm32l4_qspi_unselect(&sflash->qspi);
25022512
}
25032513

25042514
return status;
@@ -2519,12 +2529,16 @@ static int dosfs_sflash_discard(void *context, uint32_t address, uint32_t length
25192529
}
25202530
else
25212531
{
2532+
stm32l4_qspi_select(&sflash->qspi);
2533+
25222534
while (length--)
25232535
{
25242536
dosfs_sflash_ftl_discard(sflash, address);
25252537

25262538
address++;
25272539
}
2540+
2541+
stm32l4_qspi_unselect(&sflash->qspi);
25282542
}
25292543

25302544
return status;
@@ -2545,7 +2559,11 @@ static int dosfs_sflash_read(void *context, uint32_t address, uint8_t *data)
25452559
}
25462560
else
25472561
{
2562+
stm32l4_qspi_select(&sflash->qspi);
2563+
25482564
dosfs_sflash_ftl_read(sflash, address, data);
2565+
2566+
stm32l4_qspi_unselect(&sflash->qspi);
25492567
}
25502568

25512569
return status;
@@ -2566,12 +2584,16 @@ static int dosfs_sflash_read_sequential(void *context, uint32_t address, uint32_
25662584
}
25672585
else
25682586
{
2587+
stm32l4_qspi_select(&sflash->qspi);
2588+
25692589
while (length--)
25702590
{
25712591
dosfs_sflash_ftl_read(sflash, address, data);
25722592

25732593
address++;
25742594
}
2595+
2596+
stm32l4_qspi_unselect(&sflash->qspi);
25752597
}
25762598

25772599
return status;
@@ -2592,7 +2614,11 @@ static int dosfs_sflash_write(void *context, uint32_t address, const uint8_t *da
25922614
}
25932615
else
25942616
{
2617+
stm32l4_qspi_select(&sflash->qspi);
2618+
25952619
dosfs_sflash_ftl_write(sflash, address, data);
2620+
2621+
stm32l4_qspi_unselect(&sflash->qspi);
25962622
}
25972623

25982624
return status;
@@ -2613,14 +2639,17 @@ static int dosfs_sflash_write_sequential(void *context, uint32_t address, uint32
26132639
}
26142640
else
26152641
{
2642+
stm32l4_qspi_select(&sflash->qspi);
2643+
26162644
while (length--)
26172645
{
26182646
dosfs_sflash_ftl_write(sflash, address, data);
26192647

26202648
address++;
26212649
}
2622-
}
26232650

2651+
stm32l4_qspi_unselect(&sflash->qspi);
2652+
}
26242653

26252654
return status;
26262655
}
@@ -2666,6 +2695,8 @@ int dosfs_sflash_init(uint32_t param, const F_INTERFACE **p_interface, void **p_
26662695
}
26672696
else
26682697
{
2698+
stm32l4_qspi_select(&sflash->qspi);
2699+
26692700
sflash->xlate_count = ((((sflash->data_size / DOSFS_SFLASH_ERASE_SIZE) * ((DOSFS_SFLASH_ERASE_SIZE / DOSFS_SFLASH_BLOCK_SIZE) -1)) -2) + (DOSFS_SFLASH_XLATE_ENTRIES -1)) / DOSFS_SFLASH_XLATE_ENTRIES;
26702701

26712702
sflash->cache[0] = &dosfs_sflash_cache[0];
@@ -2681,6 +2712,8 @@ int dosfs_sflash_init(uint32_t param, const F_INTERFACE **p_interface, void **p_
26812712
{
26822713
sflash->state = DOSFS_SFLASH_STATE_READY;
26832714
}
2715+
2716+
stm32l4_qspi_unselect(&sflash->qspi);
26842717
}
26852718
}
26862719

2.53 KB
Binary file not shown.

0 commit comments

Comments
 (0)