aboutsummaryrefslogtreecommitdiffstats
path: root/os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c
diff options
context:
space:
mode:
authorbarthess <barthess@yandex.ru>2017-01-06 11:06:40 +0300
committerbarthess <barthess@yandex.ru>2017-01-06 11:06:40 +0300
commit779ea88be79641ed35c6fe9cad3b5265e969dc35 (patch)
tree76fa5f844734019d82e1c47431e4ff1f71b8d4d9 /os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c
parent71a77db50fbac8b0018036ac78065a9fdec9a121 (diff)
downloadChibiOS-Contrib-779ea88be79641ed35c6fe9cad3b5265e969dc35.tar.gz
ChibiOS-Contrib-779ea88be79641ed35c6fe9cad3b5265e969dc35.tar.bz2
ChibiOS-Contrib-779ea88be79641ed35c6fe9cad3b5265e969dc35.zip
NAND. Added reset function.
Diffstat (limited to 'os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c')
-rw-r--r--os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c b/os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c
index f39ff35..5ba1b29 100644
--- a/os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c
+++ b/os/hal/ports/STM32/LLD/FSMCv1/hal_nand_lld.c
@@ -157,14 +157,9 @@ static void nand_isr_handler (NANDDriver *nandp) {
/* thread will be waked up from DMA ISR */
break;
- case NAND_ERASE:
- /* NAND reports about erase finish */
- nandp->state = NAND_READY;
- wakeup_isr(nandp);
- break;
-
- case NAND_PROGRAM:
- /* NAND reports about page programming finish */
+ case NAND_ERASE: /* NAND reports about erase finish */
+ case NAND_PROGRAM: /* NAND reports about page programming finish */
+ case NAND_RESET: /* NAND reports about finished reset recover */
nandp->state = NAND_READY;
wakeup_isr(nandp);
break;
@@ -411,6 +406,23 @@ uint8_t nand_lld_write_data(NANDDriver *nandp, const uint8_t *data,
}
/**
+ * @brief Soft reset NAND device.
+ *
+ * @param[in] nandp pointer to the @p NANDDriver object
+ *
+ * @notapi
+ */
+void nand_lld_reset(NANDDriver *nandp) {
+
+ nandp->state = NAND_RESET;
+
+ nand_lld_write_cmd (nandp, NAND_CMD_RESET);
+ osalSysLock();
+ nand_lld_suspend_thread(nandp);
+ osalSysUnlock();
+}
+
+/**
* @brief Erase block.
*
* @param[in] nandp pointer to the @p NANDDriver object