]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/mtd/nand/mxc_nand.c
Merge branch 'master' of git://git.denx.de/u-boot-video
[karo-tx-uboot.git] / drivers / mtd / nand / mxc_nand.c
index 507bbc25445c77a952a03ab8ceb9193af3a6a234..ac435f205045e8a5f1d55643f7cdea20af98beac 100644 (file)
@@ -30,8 +30,6 @@
 
 #define DRIVER_NAME "mxc_nand"
 
-typedef enum {false, true} bool;
-
 struct mxc_nand_host {
        struct mtd_info                 mtd;
        struct nand_chip                *nand;
@@ -398,7 +396,7 @@ static void mxc_nand_enable_hwecc(struct mtd_info *mtd, int mode)
 #if defined(MXC_NFC_V2_1) || defined(MXC_NFC_V3_2)
 static int mxc_nand_read_oob_syndrome(struct mtd_info *mtd,
                                      struct nand_chip *chip,
-                                     int page, int sndcmd)
+                                     int page)
 {
        struct mxc_nand_host *host = chip->priv;
        uint8_t *buf = chip->oob_poi;
@@ -452,6 +450,7 @@ static int mxc_nand_read_oob_syndrome(struct mtd_info *mtd,
 static int mxc_nand_read_page_raw_syndrome(struct mtd_info *mtd,
                                           struct nand_chip *chip,
                                           uint8_t *buf,
+                                          int oob_required,
                                           int page)
 {
        struct mxc_nand_host *host = chip->priv;
@@ -496,6 +495,7 @@ static int mxc_nand_read_page_raw_syndrome(struct mtd_info *mtd,
 static int mxc_nand_read_page_syndrome(struct mtd_info *mtd,
                                       struct nand_chip *chip,
                                       uint8_t *buf,
+                                      int oob_required,
                                       int page)
 {
        struct mxc_nand_host *host = chip->priv;
@@ -585,9 +585,10 @@ static int mxc_nand_write_oob_syndrome(struct mtd_info *mtd,
        return status & NAND_STATUS_FAIL ? -EIO : 0;
 }
 
-static void mxc_nand_write_page_raw_syndrome(struct mtd_info *mtd,
+static int mxc_nand_write_page_raw_syndrome(struct mtd_info *mtd,
                                             struct nand_chip *chip,
-                                            const uint8_t *buf)
+                                            const uint8_t *buf,
+                                            int oob_required)
 {
        struct mxc_nand_host *host = chip->priv;
        int eccsize = chip->ecc.size;
@@ -621,11 +622,13 @@ static void mxc_nand_write_page_raw_syndrome(struct mtd_info *mtd,
        size = mtd->oobsize - (oob - chip->oob_poi);
        if (size)
                chip->write_buf(mtd, oob, size);
+       return 0;
 }
 
-static void mxc_nand_write_page_syndrome(struct mtd_info *mtd,
+static int mxc_nand_write_page_syndrome(struct mtd_info *mtd,
                                         struct nand_chip *chip,
-                                        const uint8_t *buf)
+                                        const uint8_t *buf,
+                                        int oob_required)
 {
        struct mxc_nand_host *host = chip->priv;
        int i, n, eccsize = chip->ecc.size;
@@ -664,6 +667,7 @@ static void mxc_nand_write_page_syndrome(struct mtd_info *mtd,
        i = mtd->oobsize - (oob - chip->oob_poi);
        if (i)
                chip->write_buf(mtd, oob, i);
+       return 0;
 }
 
 static int mxc_nand_correct_data(struct mtd_info *mtd, u_char *dat,
@@ -1190,7 +1194,7 @@ int board_nand_init(struct nand_chip *this)
 #endif
 
 #ifdef CONFIG_SYS_NAND_USE_FLASH_BBT
-       this->options |= NAND_USE_FLASH_BBT;
+       this->bbt_options |= NAND_BBT_USE_FLASH;
        this->bbt_td = &bbt_main_descr;
        this->bbt_md = &bbt_mirror_descr;
 #endif
@@ -1238,6 +1242,13 @@ int board_nand_init(struct nand_chip *this)
                this->ecc.mode = NAND_ECC_HW;
        }
 
+       if (this->ecc.mode == NAND_ECC_HW) {
+               if (is_mxc_nfc_1())
+                       this->ecc.strength = 1;
+               else
+                       this->ecc.strength = 4;
+       }
+
        host->pagesize_2k = 0;
 
        this->ecc.size = 512;