uboot/include/linux/mtd/nand_bch.h
<<
>>
Prefs
   1/*
   2 * Copyright © 2011 Ivan Djelic <ivan.djelic@parrot.com>
   3 *
   4 * This program is free software; you can redistribute it and/or modify
   5 * it under the terms of the GNU General Public License version 2 as
   6 * published by the Free Software Foundation.
   7 *
   8 * This file is the header for the NAND BCH ECC implementation.
   9 */
  10
  11#ifndef __MTD_NAND_BCH_H__
  12#define __MTD_NAND_BCH_H__
  13
  14struct mtd_info;
  15struct nand_bch_control;
  16
  17#if defined(CONFIG_NAND_ECC_BCH)
  18
  19static inline int mtd_nand_has_bch(void) { return 1; }
  20
  21/*
  22 * Calculate BCH ecc code
  23 */
  24int nand_bch_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
  25                           u_char *ecc_code);
  26
  27/*
  28 * Detect and correct bit errors
  29 */
  30int nand_bch_correct_data(struct mtd_info *mtd, u_char *dat, u_char *read_ecc,
  31                          u_char *calc_ecc);
  32/*
  33 * Initialize BCH encoder/decoder
  34 */
  35struct nand_bch_control *nand_bch_init(struct mtd_info *mtd);
  36/*
  37 * Release BCH encoder/decoder resources
  38 */
  39void nand_bch_free(struct nand_bch_control *nbc);
  40
  41#else /* !CONFIG_NAND_ECC_BCH */
  42
  43static inline int mtd_nand_has_bch(void) { return 0; }
  44
  45static inline int
  46nand_bch_calculate_ecc(struct mtd_info *mtd, const u_char *dat,
  47                       u_char *ecc_code)
  48{
  49        return -1;
  50}
  51
  52static inline int
  53nand_bch_correct_data(struct mtd_info *mtd, unsigned char *buf,
  54                      unsigned char *read_ecc, unsigned char *calc_ecc)
  55{
  56        return -ENOTSUPP;
  57}
  58
  59static inline struct nand_bch_control *nand_bch_init(struct mtd_info *mtd)
  60{
  61        return NULL;
  62}
  63
  64static inline void nand_bch_free(struct nand_bch_control *nbc) {}
  65
  66#endif /* CONFIG_NAND_ECC_BCH */
  67
  68#endif /* __MTD_NAND_BCH_H__ */
  69