diff --git a/os/hal/include/sdc.h b/os/hal/include/sdc.h index 0f070e322..5c9008442 100644 --- a/os/hal/include/sdc.h +++ b/os/hal/include/sdc.h @@ -92,6 +92,20 @@ #if !defined(SDC_NICE_WAITING) || defined(__DOXYGEN__) #define SDC_NICE_WAITING TRUE #endif + +/** + * @brief OCR initialization constant for V20 cards. + */ +#if !defined(SDC_INIT_OCR_V20) || defined(__DOXYGEN__) +#define SDC_INIT_OCR_V20 0x50FF8000U +#endif + +/** + * @brief OCR initialization constant for non-V20 cards. + */ +#if !defined(SDC_INIT_OCR) || defined(__DOXYGEN__) +#define SDC_INIT_OCR 0x80100000U +#endif /** @} */ /*===========================================================================*/ diff --git a/os/hal/src/sdc.c b/os/hal/src/sdc.c index a9dbb1534..498310a1f 100644 --- a/os/hal/src/sdc.c +++ b/os/hal/src/sdc.c @@ -183,10 +183,10 @@ static bool sdc_init(SDCDriver *sdcp) { uint32_t resp[1]; if ((sdcp->cardmode & SDC_MODE_CARDTYPE_MASK) == SDC_MODE_CARDTYPE_SDV20) { - ocr = 0xC0100000U; + ocr = SDC_INIT_OCR_V20; } else { - ocr = 0x80100000U; + ocr = SDC_INIT_OCR; } i = 0; diff --git a/readme.txt b/readme.txt index 6b4390037..8799dd6e8 100644 --- a/readme.txt +++ b/readme.txt @@ -73,6 +73,7 @@ ***************************************************************************** *** 16.1.8 *** +- HAL: Fixed invalid SDC OCR initialization value (bug #826). - HAL: Fixed osThreadSetPriority() returns old priority instead of a status code (bug #823)). - HAL: Fixed problem in rtcSTM32SetPeriodicWakeup() (bug #821).