1*4882a593Smuzhiyun /* 2*4882a593Smuzhiyun * drivers/mtd/nand_ecc.h 3*4882a593Smuzhiyun * 4*4882a593Smuzhiyun * Copyright (C) 2000-2010 Steven J. Hill <sjhill@realitydiluted.com> 5*4882a593Smuzhiyun * David Woodhouse <dwmw2@infradead.org> 6*4882a593Smuzhiyun * Thomas Gleixner <tglx@linutronix.de> 7*4882a593Smuzhiyun * 8*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0 9*4882a593Smuzhiyun * 10*4882a593Smuzhiyun * This file is the header for the ECC algorithm. 11*4882a593Smuzhiyun */ 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun #ifndef __MTD_NAND_ECC_H__ 14*4882a593Smuzhiyun #define __MTD_NAND_ECC_H__ 15*4882a593Smuzhiyun 16*4882a593Smuzhiyun struct mtd_info; 17*4882a593Smuzhiyun 18*4882a593Smuzhiyun /* 19*4882a593Smuzhiyun * Calculate 3 byte ECC code for 256 byte block 20*4882a593Smuzhiyun */ 21*4882a593Smuzhiyun int nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code); 22*4882a593Smuzhiyun 23*4882a593Smuzhiyun /* 24*4882a593Smuzhiyun * Detect and correct a 1 bit error for 256 byte block 25*4882a593Smuzhiyun */ 26*4882a593Smuzhiyun int nand_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc); 27*4882a593Smuzhiyun 28*4882a593Smuzhiyun #endif /* __MTD_NAND_ECC_H__ */ 29