software/liblitespi: Fix speed test. (#911)

Before this patch, the loop would finish with lowest_div either set to the first failing value
or 0 even if it succeeded with 0. Fix it so that if all tests pass, it’ll end up being -1 before
the incrementation.

This patch also skips retesting the original value. If the retest failed, lowest_div would be incremented past the original value and could potentially wrap around.
This commit is contained in:
zyp 2021-05-17 08:30:38 +02:00 committed by GitHub
parent 53982acd9f
commit 1571da4989
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 3 additions and 4 deletions

View File

@ -47,12 +47,11 @@ int spiflash_freq_init(void)
return -1; return -1;
} }
for(int i = lowest_div; (crc == crc_test) && (i >= 0); i--) { while((crc == crc_test) && (lowest_div-- > 0)) {
lowest_div = i; spiflash_phy_clk_divisor_write((uint32_t)lowest_div);
spiflash_phy_clk_divisor_write((uint32_t)i);
crc_test = crc32((unsigned char *)SPIFLASH_BASE, SPI_FLASH_BLOCK_SIZE); crc_test = crc32((unsigned char *)SPIFLASH_BASE, SPI_FLASH_BLOCK_SIZE);
#if DEBUG #if DEBUG
printf("[DIV: %d] %08x\n\r", i, crc_test); printf("[DIV: %d] %08x\n\r", lowest_div, crc_test);
#endif #endif
} }
lowest_div++; lowest_div++;