|
@@ -761,7 +761,8 @@ static int onenand_transfer_auto_oob(struct mtd_info *mtd, uint8_t *buf,
|
|
uint8_t *oob_buf = this->oob_buf;
|
|
uint8_t *oob_buf = this->oob_buf;
|
|
|
|
|
|
free = this->ecclayout->oobfree;
|
|
free = this->ecclayout->oobfree;
|
|
- for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES && free->length; i++, free++) {
|
|
|
|
|
|
+ for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES_LARGE && free->length;
|
|
|
|
+ i++, free++) {
|
|
if (readcol >= lastgap)
|
|
if (readcol >= lastgap)
|
|
readcol += free->offset - lastgap;
|
|
readcol += free->offset - lastgap;
|
|
if (readend >= lastgap)
|
|
if (readend >= lastgap)
|
|
@@ -770,7 +771,8 @@ static int onenand_transfer_auto_oob(struct mtd_info *mtd, uint8_t *buf,
|
|
}
|
|
}
|
|
this->read_bufferram(mtd, 0, ONENAND_SPARERAM, oob_buf, 0, mtd->oobsize);
|
|
this->read_bufferram(mtd, 0, ONENAND_SPARERAM, oob_buf, 0, mtd->oobsize);
|
|
free = this->ecclayout->oobfree;
|
|
free = this->ecclayout->oobfree;
|
|
- for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES && free->length; i++, free++) {
|
|
|
|
|
|
+ for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES_LARGE && free->length;
|
|
|
|
+ i++, free++) {
|
|
int free_end = free->offset + free->length;
|
|
int free_end = free->offset + free->length;
|
|
if (free->offset < readend && free_end > readcol) {
|
|
if (free->offset < readend && free_end > readcol) {
|
|
int st = max_t(int,free->offset,readcol);
|
|
int st = max_t(int,free->offset,readcol);
|
|
@@ -1356,7 +1358,8 @@ static int onenand_fill_auto_oob(struct mtd_info *mtd, u_char *oob_buf,
|
|
unsigned int i;
|
|
unsigned int i;
|
|
|
|
|
|
free = this->ecclayout->oobfree;
|
|
free = this->ecclayout->oobfree;
|
|
- for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES && free->length; i++, free++) {
|
|
|
|
|
|
+ for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES_LARGE && free->length;
|
|
|
|
+ i++, free++) {
|
|
if (writecol >= lastgap)
|
|
if (writecol >= lastgap)
|
|
writecol += free->offset - lastgap;
|
|
writecol += free->offset - lastgap;
|
|
if (writeend >= lastgap)
|
|
if (writeend >= lastgap)
|
|
@@ -1364,7 +1367,8 @@ static int onenand_fill_auto_oob(struct mtd_info *mtd, u_char *oob_buf,
|
|
lastgap = free->offset + free->length;
|
|
lastgap = free->offset + free->length;
|
|
}
|
|
}
|
|
free = this->ecclayout->oobfree;
|
|
free = this->ecclayout->oobfree;
|
|
- for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES && free->length; i++, free++) {
|
|
|
|
|
|
+ for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES_LARGE && free->length;
|
|
|
|
+ i++, free++) {
|
|
int free_end = free->offset + free->length;
|
|
int free_end = free->offset + free->length;
|
|
if (free->offset < writeend && free_end > writecol) {
|
|
if (free->offset < writeend && free_end > writecol) {
|
|
int st = max_t(int,free->offset,writecol);
|
|
int st = max_t(int,free->offset,writecol);
|
|
@@ -2750,7 +2754,8 @@ int onenand_scan(struct mtd_info *mtd, int maxchips)
|
|
* the out of band area
|
|
* the out of band area
|
|
*/
|
|
*/
|
|
this->ecclayout->oobavail = 0;
|
|
this->ecclayout->oobavail = 0;
|
|
- for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES &&
|
|
|
|
|
|
+
|
|
|
|
+ for (i = 0; i < MTD_MAX_OOBFREE_ENTRIES_LARGE &&
|
|
this->ecclayout->oobfree[i].length; i++)
|
|
this->ecclayout->oobfree[i].length; i++)
|
|
this->ecclayout->oobavail +=
|
|
this->ecclayout->oobavail +=
|
|
this->ecclayout->oobfree[i].length;
|
|
this->ecclayout->oobfree[i].length;
|