linux/include/linux/platform_data/elm.h
<<
>>
Prefs
   1/* SPDX-License-Identifier: GPL-2.0-or-later */
   2/*
   3 * BCH Error Location Module
   4 *
   5 * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
   6 */
   7
   8#ifndef __ELM_H
   9#define __ELM_H
  10
  11enum bch_ecc {
  12        BCH4_ECC = 0,
  13        BCH8_ECC,
  14        BCH16_ECC,
  15};
  16
  17/* ELM support 8 error syndrome process */
  18#define ERROR_VECTOR_MAX                8
  19
  20/**
  21 * struct elm_errorvec - error vector for elm
  22 * @error_reported:             set true for vectors error is reported
  23 * @error_uncorrectable:        number of uncorrectable errors
  24 * @error_count:                number of correctable errors in the sector
  25 * @error_loc:                  buffer for error location
  26 *
  27 */
  28struct elm_errorvec {
  29        bool error_reported;
  30        bool error_uncorrectable;
  31        int error_count;
  32        int error_loc[16];
  33};
  34
  35#if IS_ENABLED(CONFIG_MTD_NAND_OMAP_BCH)
  36void elm_decode_bch_error_page(struct device *dev, u8 *ecc_calc,
  37                struct elm_errorvec *err_vec);
  38int elm_config(struct device *dev, enum bch_ecc bch_type,
  39        int ecc_steps, int ecc_step_size, int ecc_syndrome_size);
  40#else
  41static inline void
  42elm_decode_bch_error_page(struct device *dev, u8 *ecc_calc,
  43                          struct elm_errorvec *err_vec)
  44{
  45}
  46
  47static inline int elm_config(struct device *dev, enum bch_ecc bch_type,
  48                             int ecc_steps, int ecc_step_size,
  49                             int ecc_syndrome_size)
  50{
  51        return -ENOSYS;
  52}
  53#endif /* CONFIG_MTD_NAND_OMAP_BCH */
  54
  55#endif /* __ELM_H */
  56