mirror of
				git://git.openwrt.org/openwrt/openwrt.git
				synced 2025-11-04 06:54:27 -05:00 
			
		
		
		
	ramips: correct page read return value of the mt7621 nand driver
read_page() need to return maximum number of bitflips instead of the accumulated number. Change takes from upstream mt7621 u-boot [1]. * @read_page: function to read a page according to the ECC generator * requirements; returns maximum number of bitflips * corrected in any single ECC step, -EIO hw error [1] https://lore.kernel.org/all/cover.1653015383.git.weijie.gao@mediatek.com/ Signed-off-by: Shiji Yang <yangshiji66@qq.com>
This commit is contained in:
		
							parent
							
								
									959563fb81
								
							
						
					
					
						commit
						2fbb91d73f
					
				@ -1006,7 +1006,7 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
 | 
			
		||||
{
 | 
			
		||||
	struct mt7621_nfc *nfc = nand_get_controller_data(nand);
 | 
			
		||||
	struct mtd_info *mtd = nand_to_mtd(nand);
 | 
			
		||||
	int bitflips = 0;
 | 
			
		||||
	int bitflips = 0, ret = 0;
 | 
			
		||||
	int rc, i;
 | 
			
		||||
 | 
			
		||||
	nand_read_page_op(nand, page, 0, NULL, 0);
 | 
			
		||||
@ -1031,7 +1031,7 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
 | 
			
		||||
		mt7621_nfc_read_sector_fdm(nfc, i);
 | 
			
		||||
 | 
			
		||||
		if (rc < 0) {
 | 
			
		||||
			bitflips = -EIO;
 | 
			
		||||
			ret = -EIO;
 | 
			
		||||
			continue;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@ -1043,10 +1043,11 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
 | 
			
		||||
			dev_dbg(nfc->dev,
 | 
			
		||||
				 "Uncorrectable ECC error at page %d.%d\n",
 | 
			
		||||
				 page, i);
 | 
			
		||||
			bitflips = -EBADMSG;
 | 
			
		||||
			bitflips = nand->ecc.strength + 1;
 | 
			
		||||
			mtd->ecc_stats.failed++;
 | 
			
		||||
		} else if (bitflips >= 0) {
 | 
			
		||||
			bitflips += rc;
 | 
			
		||||
		} else {
 | 
			
		||||
			if (rc > bitflips)
 | 
			
		||||
				bitflips = rc;
 | 
			
		||||
			mtd->ecc_stats.corrected += rc;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
@ -1055,6 +1056,9 @@ static int mt7621_nfc_read_page_hwecc(struct nand_chip *nand, uint8_t *buf,
 | 
			
		||||
 | 
			
		||||
	nfi_write16(nfc, NFI_CON, 0);
 | 
			
		||||
 | 
			
		||||
	if (ret < 0)
 | 
			
		||||
		return ret;
 | 
			
		||||
 | 
			
		||||
	return bitflips;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user