]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - drivers/mtd/nand/denali.h
mtd: nand: denali: support HW_ECC_FIXUP capability
[mirror_ubuntu-artful-kernel.git] / drivers / mtd / nand / denali.h
index 483c0e988f336074f29c74797ff9831378875df4..e532956b7177b01665056a2bf620a9e7b5a3e654 100644 (file)
@@ -20,6 +20,7 @@
 #ifndef __DENALI_H__
 #define __DENALI_H__
 
+#include <linux/bitops.h>
 #include <linux/mtd/nand.h>
 
 #define DEVICE_RESET                           0x0
 
 #define INTR_STATUS(__bank)    (0x410 + ((__bank) * 0x50))
 #define INTR_EN(__bank)                (0x420 + ((__bank) * 0x50))
-#define     INTR__ECC_TRANSACTION_DONE                 0x0001
-#define     INTR__ECC_ERR                              0x0002
+/* bit[1:0] is used differently depending on IP version */
+#define     INTR__ECC_UNCOR_ERR                                0x0001  /* new IP */
+#define     INTR__ECC_TRANSACTION_DONE                 0x0001  /* old IP */
+#define     INTR__ECC_ERR                              0x0002  /* old IP */
 #define     INTR__DMA_CMD_COMP                         0x0004
 #define     INTR__TIME_OUT                             0x0008
 #define     INTR__PROGRAM_FAIL                         0x0010
 #define     ERR_CORRECTION_INFO__ERROR_TYPE            0x4000
 #define     ERR_CORRECTION_INFO__LAST_ERR_INFO         0x8000
 
+#define ECC_COR_INFO(bank)                     (0x650 + (bank) / 2 * 0x10)
+#define     ECC_COR_INFO__SHIFT(bank)                  ((bank) % 2 * 8)
+#define     ECC_COR_INFO__MAX_ERRORS                   0x007f
+#define     ECC_COR_INFO__UNCOR_ERR                    0x0080
+
 #define DMA_ENABLE                             0x700
 #define     DMA_ENABLE__FLAG                           0x0001
 
@@ -338,6 +346,8 @@ struct denali_nand_info {
        unsigned int caps;
 };
 
+#define DENALI_CAP_HW_ECC_FIXUP                        BIT(0)
+
 extern int denali_init(struct denali_nand_info *denali);
 extern void denali_remove(struct denali_nand_info *denali);