1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-20 14:55:21 +03:00

Fix use of sdcard.cardDetectPin before it is initialised. (#8557)

Fix use of sdcard.cardDetectPin before it is initialised.
This commit is contained in:
Michael Keller 2019-07-14 14:38:10 +12:00 committed by mikeller
parent 31c64540de
commit 119a65b64c
6 changed files with 12 additions and 20 deletions

View file

@ -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) { if (sdcard.cardDetectPin) {
IOInit(sdcard.cardDetectPin, OWNER_SDCARD_DETECT, 0); IOInit(sdcard.cardDetectPin, OWNER_SDCARD_DETECT, 0);
IOConfigGPIO(sdcard.cardDetectPin, IOCFG_IPU); IOConfigGPIO(sdcard.cardDetectPin, IOCFG_IPU);

View file

@ -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); sdcardOperationStatus_e sdcard_writeBlock(uint32_t blockIndex, uint8_t *buffer, sdcard_operationCompleteCallback_c callback, uint32_t callbackData);
void sdcardInsertionDetectDeinit(void); void sdcardInsertionDetectDeinit(void);
void sdcardInsertionDetectInit(void); void sdcardInsertionDetectInit(const sdcardConfig_t *config);
bool sdcard_isInserted(void); bool sdcard_isInserted(void);
bool sdcard_isInitialized(void); bool sdcard_isInitialized(void);

View file

@ -107,7 +107,7 @@ extern sdcard_t sdcard;
STATIC_ASSERT(sizeof(sdcardCSD_t) == 16, sdcard_csd_bitfields_didnt_pack_properly); STATIC_ASSERT(sizeof(sdcardCSD_t) == 16, sdcard_csd_bitfields_didnt_pack_properly);
void sdcardInsertionDetectInit(void); void sdcardInsertionDetectInit(const sdcardConfig_t *config);
void sdcardInsertionDetectDeinit(void); void sdcardInsertionDetectDeinit(void);
bool sdcard_isInserted(void); bool sdcard_isInserted(void);

View file

@ -211,14 +211,6 @@ static void sdcardSdio_init(const sdcardConfig_t *config, const spiPinConfig_t *
sdcard.state = SDCARD_STATE_NOT_PRESENT; sdcard.state = SDCARD_STATE_NOT_PRESENT;
return; return;
} }
if (config->cardDetectTag) {
sdcard.cardDetectPin = IOGetByTag(config->cardDetectTag);
} else {
sdcard.cardDetectPin = IO_NONE;
}
if (config->cardDetectInverted) {
sdcard.detectionInverted = 1;
}
if (sdioConfig()->useCache) { if (sdioConfig()->useCache) {
sdcard.useCache = 1; sdcard.useCache = 1;
} else { } else {

View file

@ -542,14 +542,6 @@ static void sdcardSpi_init(const sdcardConfig_t *config, const spiPinConfig_t *s
} }
sdcard.busdev.busdev_u.spi.csnPin = chipSelectIO; 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 // Max frequency is initially 400kHz
#ifdef USE_SPI_TRANSACTION #ifdef USE_SPI_TRANSACTION

View file

@ -721,7 +721,7 @@ void init(void)
#ifdef USE_SDCARD #ifdef USE_SDCARD
if (blackboxConfig()->device == BLACKBOX_DEVICE_SDCARD) { if (blackboxConfig()->device == BLACKBOX_DEVICE_SDCARD) {
if (sdcardConfig()->mode) { if (sdcardConfig()->mode) {
sdcardInsertionDetectInit(); sdcardInsertionDetectInit(sdcardConfig());
sdcard_init(sdcardConfig()); sdcard_init(sdcardConfig());
afatfs_init(); afatfs_init();
} else { } else {