|
@@ -95,8 +95,8 @@ static struct nand_ecclayout nand_oob_64 = {
|
|
static struct nand_ecclayout nand_oob_128 = {
|
|
static struct nand_ecclayout nand_oob_128 = {
|
|
.eccbytes = 48,
|
|
.eccbytes = 48,
|
|
.eccpos = {
|
|
.eccpos = {
|
|
- 80, 81, 82, 83, 84, 85, 86, 87,
|
|
|
|
- 88, 89, 90, 91, 92, 93, 94, 95,
|
|
|
|
|
|
+ 80, 81, 82, 83, 84, 85, 86, 87,
|
|
|
|
+ 88, 89, 90, 91, 92, 93, 94, 95,
|
|
96, 97, 98, 99, 100, 101, 102, 103,
|
|
96, 97, 98, 99, 100, 101, 102, 103,
|
|
104, 105, 106, 107, 108, 109, 110, 111,
|
|
104, 105, 106, 107, 108, 109, 110, 111,
|
|
112, 113, 114, 115, 116, 117, 118, 119,
|
|
112, 113, 114, 115, 116, 117, 118, 119,
|
|
@@ -1257,7 +1257,7 @@ static int nand_do_read_ops(struct mtd_info *mtd, loff_t from,
|
|
if (mtd->ecc_stats.failed - stats.failed)
|
|
if (mtd->ecc_stats.failed - stats.failed)
|
|
return -EBADMSG;
|
|
return -EBADMSG;
|
|
|
|
|
|
- return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
|
|
|
|
|
|
+ return mtd->ecc_stats.corrected - stats.corrected ? -EUCLEAN : 0;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -1455,7 +1455,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
|
|
uint8_t *buf = ops->oobbuf;
|
|
uint8_t *buf = ops->oobbuf;
|
|
|
|
|
|
MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08Lx, len = %i\n",
|
|
MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_read_oob: from = 0x%08Lx, len = %i\n",
|
|
- (unsigned long long)from, readlen);
|
|
|
|
|
|
+ (unsigned long long)from, readlen);
|
|
|
|
|
|
if (ops->mode == MTD_OOB_AUTO)
|
|
if (ops->mode == MTD_OOB_AUTO)
|
|
len = chip->ecc.layout->oobavail;
|
|
len = chip->ecc.layout->oobavail;
|
|
@@ -1464,7 +1464,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
|
|
|
|
|
|
if (unlikely(ops->ooboffs >= len)) {
|
|
if (unlikely(ops->ooboffs >= len)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt to start read outside oob\n");
|
|
|
|
|
|
+ "Attempt to start read outside oob\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1473,7 +1473,7 @@ static int nand_do_read_oob(struct mtd_info *mtd, loff_t from,
|
|
ops->ooboffs + readlen > ((mtd->size >> chip->page_shift) -
|
|
ops->ooboffs + readlen > ((mtd->size >> chip->page_shift) -
|
|
(from >> chip->page_shift)) * len)) {
|
|
(from >> chip->page_shift)) * len)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt read beyond end of device\n");
|
|
|
|
|
|
+ "Attempt read beyond end of device\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1548,7 +1548,7 @@ static int nand_read_oob(struct mtd_info *mtd, loff_t from,
|
|
/* Do not allow reads past end of device */
|
|
/* Do not allow reads past end of device */
|
|
if (ops->datbuf && (from + ops->len) > mtd->size) {
|
|
if (ops->datbuf && (from + ops->len) > mtd->size) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt read beyond end of device\n");
|
|
|
|
|
|
+ "Attempt read beyond end of device\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1981,7 +1981,7 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
|
|
struct nand_chip *chip = mtd->priv;
|
|
struct nand_chip *chip = mtd->priv;
|
|
|
|
|
|
MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n",
|
|
MTDDEBUG (MTD_DEBUG_LEVEL3, "nand_write_oob: to = 0x%08x, len = %i\n",
|
|
- (unsigned int)to, (int)ops->ooblen);
|
|
|
|
|
|
+ (unsigned int)to, (int)ops->ooblen);
|
|
|
|
|
|
if (ops->mode == MTD_OOB_AUTO)
|
|
if (ops->mode == MTD_OOB_AUTO)
|
|
len = chip->ecc.layout->oobavail;
|
|
len = chip->ecc.layout->oobavail;
|
|
@@ -1991,13 +1991,13 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
|
|
/* Do not allow write past end of page */
|
|
/* Do not allow write past end of page */
|
|
if ((ops->ooboffs + ops->ooblen) > len) {
|
|
if ((ops->ooboffs + ops->ooblen) > len) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_write_oob: "
|
|
- "Attempt to write past end of page\n");
|
|
|
|
|
|
+ "Attempt to write past end of page\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
if (unlikely(ops->ooboffs >= len)) {
|
|
if (unlikely(ops->ooboffs >= len)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt to start write outside oob\n");
|
|
|
|
|
|
+ "Attempt to start write outside oob\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2007,7 +2007,7 @@ static int nand_do_write_oob(struct mtd_info *mtd, loff_t to,
|
|
((mtd->size >> chip->page_shift) -
|
|
((mtd->size >> chip->page_shift) -
|
|
(to >> chip->page_shift)) * len)) {
|
|
(to >> chip->page_shift)) * len)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt write beyond end of device\n");
|
|
|
|
|
|
+ "Attempt write beyond end of device\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2063,7 +2063,7 @@ static int nand_write_oob(struct mtd_info *mtd, loff_t to,
|
|
/* Do not allow writes past end of device */
|
|
/* Do not allow writes past end of device */
|
|
if (ops->datbuf && (to + ops->len) > mtd->size) {
|
|
if (ops->datbuf && (to + ops->len) > mtd->size) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_read_oob: "
|
|
- "Attempt read beyond end of device\n");
|
|
|
|
|
|
+ "Attempt read beyond end of device\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2166,14 +2166,14 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
|
|
/* Length must align on block boundary */
|
|
/* Length must align on block boundary */
|
|
if (instr->len & ((1 << chip->phys_erase_shift) - 1)) {
|
|
if (instr->len & ((1 << chip->phys_erase_shift) - 1)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
- "nand_erase: Length not block aligned\n");
|
|
|
|
|
|
+ "nand_erase: Length not block aligned\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
/* Do not allow erase past end of device */
|
|
/* Do not allow erase past end of device */
|
|
if ((instr->len + instr->addr) > mtd->size) {
|
|
if ((instr->len + instr->addr) > mtd->size) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
- "nand_erase: Erase past end of device\n");
|
|
|
|
|
|
+ "nand_erase: Erase past end of device\n");
|
|
return -EINVAL;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -2195,7 +2195,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
|
|
/* Check, if it is write protected */
|
|
/* Check, if it is write protected */
|
|
if (nand_check_wp(mtd)) {
|
|
if (nand_check_wp(mtd)) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0,
|
|
- "nand_erase: Device is write protected!!!\n");
|
|
|
|
|
|
+ "nand_erase: Device is write protected!!!\n");
|
|
instr->state = MTD_ERASE_FAILED;
|
|
instr->state = MTD_ERASE_FAILED;
|
|
goto erase_exit;
|
|
goto erase_exit;
|
|
}
|
|
}
|
|
@@ -2249,7 +2249,7 @@ int nand_erase_nand(struct mtd_info *mtd, struct erase_info *instr,
|
|
/* See if block erase succeeded */
|
|
/* See if block erase succeeded */
|
|
if (status & NAND_STATUS_FAIL) {
|
|
if (status & NAND_STATUS_FAIL) {
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_erase: "
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "nand_erase: "
|
|
- "Failed erase, page 0x%08x\n", page);
|
|
|
|
|
|
+ "Failed erase, page 0x%08x\n", page);
|
|
instr->state = MTD_ERASE_FAILED;
|
|
instr->state = MTD_ERASE_FAILED;
|
|
instr->fail_addr = ((loff_t)page << chip->page_shift);
|
|
instr->fail_addr = ((loff_t)page << chip->page_shift);
|
|
goto erase_exit;
|
|
goto erase_exit;
|
|
@@ -2461,7 +2461,7 @@ static const struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
|
|
|
|
|
|
for (; type->name != NULL; type++)
|
|
for (; type->name != NULL; type++)
|
|
if (dev_id == type->id)
|
|
if (dev_id == type->id)
|
|
- break;
|
|
|
|
|
|
+ break;
|
|
|
|
|
|
if (!type->name) {
|
|
if (!type->name) {
|
|
/* supress warning if there is no nand */
|
|
/* supress warning if there is no nand */
|
|
@@ -2569,8 +2569,8 @@ static const struct nand_flash_dev *nand_get_flash_type(struct mtd_info *mtd,
|
|
chip->cmdfunc = nand_command_lp;
|
|
chip->cmdfunc = nand_command_lp;
|
|
|
|
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "NAND device: Manufacturer ID:"
|
|
MTDDEBUG (MTD_DEBUG_LEVEL0, "NAND device: Manufacturer ID:"
|
|
- " 0x%02x, Chip ID: 0x%02x (%s %s)\n", *maf_id, dev_id,
|
|
|
|
- nand_manuf_ids[maf_idx].name, type->name);
|
|
|
|
|
|
+ " 0x%02x, Chip ID: 0x%02x (%s %s)\n", *maf_id, dev_id,
|
|
|
|
+ nand_manuf_ids[maf_idx].name, type->name);
|
|
|
|
|
|
return type;
|
|
return type;
|
|
}
|
|
}
|