mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-18 05:45:31 +03:00
Fix use of sdcard.cardDetectPin before it is initialised.
* de-duplicate some SDIO/SPI sd-card detection code. * ensure detectionInverted is set to false for SDIO case where `cardDetectTag` is not configured.
This commit is contained in:
parent
7471ada0c1
commit
8d78e15a4b
6 changed files with 12 additions and 20 deletions
|
@ -75,8 +75,16 @@ void sdcardInsertionDetectDeinit(void)
|
|||
}
|
||||
}
|
||||
|
||||
void sdcardInsertionDetectInit(void)
|
||||
void sdcardInsertionDetectInit(const sdcardConfig_t *config)
|
||||
{
|
||||
if (config->cardDetectTag) {
|
||||
sdcard.cardDetectPin = IOGetByTag(config->cardDetectTag);
|
||||
sdcard.detectionInverted = config->cardDetectInverted;
|
||||
} else {
|
||||
sdcard.cardDetectPin = IO_NONE;
|
||||
sdcard.detectionInverted = false;
|
||||
}
|
||||
|
||||
if (sdcard.cardDetectPin) {
|
||||
IOInit(sdcard.cardDetectPin, OWNER_SDCARD_DETECT, 0);
|
||||
IOConfigGPIO(sdcard.cardDetectPin, IOCFG_IPU);
|
||||
|
|
|
@ -66,7 +66,7 @@ sdcardOperationStatus_e sdcard_beginWriteBlocks(uint32_t blockIndex, uint32_t bl
|
|||
sdcardOperationStatus_e sdcard_writeBlock(uint32_t blockIndex, uint8_t *buffer, sdcard_operationCompleteCallback_c callback, uint32_t callbackData);
|
||||
|
||||
void sdcardInsertionDetectDeinit(void);
|
||||
void sdcardInsertionDetectInit(void);
|
||||
void sdcardInsertionDetectInit(const sdcardConfig_t *config);
|
||||
|
||||
bool sdcard_isInserted(void);
|
||||
bool sdcard_isInitialized(void);
|
||||
|
|
|
@ -107,7 +107,7 @@ extern sdcard_t sdcard;
|
|||
|
||||
STATIC_ASSERT(sizeof(sdcardCSD_t) == 16, sdcard_csd_bitfields_didnt_pack_properly);
|
||||
|
||||
void sdcardInsertionDetectInit(void);
|
||||
void sdcardInsertionDetectInit(const sdcardConfig_t *config);
|
||||
void sdcardInsertionDetectDeinit(void);
|
||||
bool sdcard_isInserted(void);
|
||||
|
||||
|
|
|
@ -217,14 +217,6 @@ static void sdcardSdio_init(const sdcardConfig_t *config, const spiPinConfig_t *
|
|||
}
|
||||
#endif
|
||||
#endif
|
||||
if (config->cardDetectTag) {
|
||||
sdcard.cardDetectPin = IOGetByTag(config->cardDetectTag);
|
||||
} else {
|
||||
sdcard.cardDetectPin = IO_NONE;
|
||||
}
|
||||
if (config->cardDetectInverted) {
|
||||
sdcard.detectionInverted = 1;
|
||||
}
|
||||
if (sdioConfig()->useCache) {
|
||||
sdcard.useCache = 1;
|
||||
} else {
|
||||
|
|
|
@ -542,14 +542,6 @@ static void sdcardSpi_init(const sdcardConfig_t *config, const spiPinConfig_t *s
|
|||
}
|
||||
sdcard.busdev.busdev_u.spi.csnPin = chipSelectIO;
|
||||
|
||||
if (config->cardDetectTag) {
|
||||
sdcard.cardDetectPin = IOGetByTag(config->cardDetectTag);
|
||||
sdcard.detectionInverted = config->cardDetectInverted;
|
||||
} else {
|
||||
sdcard.cardDetectPin = IO_NONE;
|
||||
sdcard.detectionInverted = false;
|
||||
}
|
||||
|
||||
// Max frequency is initially 400kHz
|
||||
|
||||
#ifdef USE_SPI_TRANSACTION
|
||||
|
|
|
@ -252,7 +252,7 @@ static void configureSPIAndQuadSPI(void)
|
|||
|
||||
void sdCardAndFSInit()
|
||||
{
|
||||
sdcardInsertionDetectInit();
|
||||
sdcardInsertionDetectInit(sdcardConfig());
|
||||
sdcard_init(sdcardConfig());
|
||||
afatfs_init();
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue