blob: 9715a53d86d4ec3716b167a646dd3732da556d13 [file] [log] [blame]
Wolfgang Denk2f9b7e42005-08-17 12:55:25 +02001/*
2 * drivers/mtd/nand_ecc.h
3 *
4 * Copyright (C) 2000 Steven J. Hill (sjhill@realitydiluted.com)
5 *
Wolfgang Denk2f9b7e42005-08-17 12:55:25 +02006 * This program is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License version 2 as
8 * published by the Free Software Foundation.
9 *
10 * This file is the header for the ECC algorithm.
11 */
12
13#ifndef __MTD_NAND_ECC_H__
14#define __MTD_NAND_ECC_H__
15
16struct mtd_info;
17
Christian Hitzb7ed6562011-10-12 09:32:06 +020018#if defined(CONFIG_MTD_ECC_SOFT)
19
20static inline int mtd_nand_has_ecc_soft(void) { return 1; }
21
Wolfgang Denk2f9b7e42005-08-17 12:55:25 +020022/*
23 * Calculate 3 byte ECC code for 256 byte block
24 */
25int nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code);
26
27/*
28 * Detect and correct a 1 bit error for 256 byte block
29 */
30int nand_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc, u_char *calc_ecc);
31
Christian Hitzb7ed6562011-10-12 09:32:06 +020032#else
33
34static inline int mtd_nand_has_ecc_soft(void) { return 0; }
35
36static inline int
37nand_calculate_ecc(struct mtd_info *mtd, const u_char *dat, u_char *ecc_code)
38{
39 return -1;
40}
41
42static inline int
43nand_correct_data(struct mtd_info *mtd,
44 u_char *dat,
45 u_char *read_ecc,
46 u_char *calc_ecc)
47{
48 return -1;
49}
50
51#endif
52
Wolfgang Denk2f9b7e42005-08-17 12:55:25 +020053#endif /* __MTD_NAND_ECC_H__ */