nand-ecc-mxic.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. /*
  3. * Copyright © 2019 Macronix
  4. * Author: Miquèl Raynal <[email protected]>
  5. *
  6. * Header for the Macronix external ECC engine.
  7. */
  8. #ifndef __MTD_NAND_ECC_MXIC_H__
  9. #define __MTD_NAND_ECC_MXIC_H__
  10. #include <linux/platform_device.h>
  11. #include <linux/device.h>
  12. struct mxic_ecc_engine;
  13. #if IS_ENABLED(CONFIG_MTD_NAND_ECC_MXIC) && IS_REACHABLE(CONFIG_MTD_NAND_CORE)
  14. struct nand_ecc_engine_ops *mxic_ecc_get_pipelined_ops(void);
  15. struct nand_ecc_engine *mxic_ecc_get_pipelined_engine(struct platform_device *spi_pdev);
  16. void mxic_ecc_put_pipelined_engine(struct nand_ecc_engine *eng);
  17. int mxic_ecc_process_data_pipelined(struct nand_ecc_engine *eng,
  18. unsigned int direction, dma_addr_t dirmap);
  19. #else /* !CONFIG_MTD_NAND_ECC_MXIC */
  20. static inline struct nand_ecc_engine_ops *mxic_ecc_get_pipelined_ops(void)
  21. {
  22. return NULL;
  23. }
  24. static inline struct nand_ecc_engine *
  25. mxic_ecc_get_pipelined_engine(struct platform_device *spi_pdev)
  26. {
  27. return ERR_PTR(-EOPNOTSUPP);
  28. }
  29. static inline void mxic_ecc_put_pipelined_engine(struct nand_ecc_engine *eng) {}
  30. static inline int mxic_ecc_process_data_pipelined(struct nand_ecc_engine *eng,
  31. unsigned int direction,
  32. dma_addr_t dirmap)
  33. {
  34. return -EOPNOTSUPP;
  35. }
  36. #endif /* CONFIG_MTD_NAND_ECC_MXIC */
  37. #endif /* __MTD_NAND_ECC_MXIC_H__ */