aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--os/hal/include/hal_sdc.h14
-rw-r--r--os/hal/src/hal_sdc.c4
-rw-r--r--readme.txt2
3 files changed, 18 insertions, 2 deletions
diff --git a/os/hal/include/hal_sdc.h b/os/hal/include/hal_sdc.h
index 98a0492ab..6466b1d97 100644
--- a/os/hal/include/hal_sdc.h
+++ b/os/hal/include/hal_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/hal_sdc.c b/os/hal/src/hal_sdc.c
index 80cbca3bf..70a85b10f 100644
--- a/os/hal/src/hal_sdc.c
+++ b/os/hal/src/hal_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 f6c758a81..1624614c8 100644
--- a/readme.txt
+++ b/readme.txt
@@ -157,6 +157,8 @@
- RT: Merged RT4.
- NIL: Merged NIL2.
- NIL: Added STM32F7 demo.
+- HAL: Fixed invalid SDC OCR initialization value (bug #826)(backported
+ to 16.1.8).
- HAL: Fixed osThreadSetPriority() returns old priority instead of a status
code (bug #823)(backported to 16.1.8).
- HAL: Fixed problem in rtcSTM32SetPeriodicWakeup() (bug #821)(backported