]> git.sur5r.net Git - u-boot/blobdiff - drivers/mtd/nand/denali_spl.c
SPDX: Convert all of our single license tags to Linux Kernel style
[u-boot] / drivers / mtd / nand / denali_spl.c
index 15874135408334fd60ff9c74e3504f9af4c77a4a..dbaba3cab2a784363479553b3bf6d5f9138a7d6c 100644 (file)
@@ -1,16 +1,21 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Copyright (C) 2014       Panasonic Corporation
  * Copyright (C) 2014-2015  Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
 #include <asm/io.h>
 #include <asm/unaligned.h>
-#include <linux/mtd/nand.h>
+#include <linux/mtd/rawnand.h>
 #include "denali.h"
 
+#define DENALI_MAP01           (1 << 26)       /* read/write pages in PIO */
+#define DENALI_MAP10           (2 << 26)       /* high-level control plane */
+
+#define INDEX_CTRL_REG         0x0
+#define INDEX_DATA_REG         0x10
+
 #define SPARE_ACCESS           0x41
 #define MAIN_ACCESS            0x42
 #define PIPELINE_ACCESS                0x2000
@@ -39,9 +44,9 @@ static int wait_for_irq(uint32_t irq_mask)
        do {
                intr_status = readl(denali_flash_reg + INTR_STATUS(flash_bank));
 
-               if (intr_status & INTR_STATUS__ECC_UNCOR_ERR) {
+               if (intr_status & INTR__ECC_UNCOR_ERR) {
                        debug("Uncorrected ECC detected\n");
-                       return -EIO;
+                       return -EBADMSG;
                }
 
                if (intr_status & irq_mask)
@@ -106,16 +111,16 @@ int denali_send_pipeline_cmd(int page, int ecc_en, int access_type)
        addr = BANK(flash_bank) | page;
 
        /* setup the acccess type */
-       cmd = MODE_10 | addr;
+       cmd = DENALI_MAP10 | addr;
        index_addr(cmd, access_type);
 
        /* setup the pipeline command */
        index_addr(cmd, PIPELINE_ACCESS | page_count);
 
-       cmd = MODE_01 | addr;
+       cmd = DENALI_MAP01 | addr;
        writel(cmd, denali_flash_mem + INDEX_CTRL_REG);
 
-       return wait_for_irq(INTR_STATUS__LOAD_COMP);
+       return wait_for_irq(INTR__LOAD_COMP);
 }
 
 static int nand_read_oob(void *buf, int page)