NFC_CTL_RESET, MAX_RETRIES)) {
                printf("Couldn't initialize nand\n");
        }
+
+       /* reset NAND */
+       writel(NFC_SEND_CMD1 | NFC_WAIT_FLAG | NAND_CMD_RESET,
+              SUNXI_NFC_BASE + NFC_CMD);
+
+       if (!check_value(SUNXI_NFC_BASE + NFC_ST, NFC_CMD_INT_FLAG,
+                        MAX_RETRIES)) {
+               printf("Error timeout waiting for nand reset\n");
+               return;
+       }
 }
 
 static void nand_read_page(unsigned int real_addr, dma_addr_t dst,
                return;
        }
 
-       /* set CMD  */
-       writel(NFC_SEND_CMD1 | NFC_WAIT_FLAG | NAND_CMD_RESET,
-              SUNXI_NFC_BASE + NFC_CMD);
-
-       if (!check_value(SUNXI_NFC_BASE + NFC_ST, NFC_CMD_INT_FLAG,
-                        MAX_RETRIES)) {
-               printf("Error while initilizing command interrupt\n");
-               return;
-       }
-
        page = real_addr / CONFIG_NAND_SUNXI_SPL_PAGE_SIZE;
        column = real_addr % CONFIG_NAND_SUNXI_SPL_PAGE_SIZE;