Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
0002 /*
0003  * Copyright © 2019 Macronix
0004  * Author: Miquèl Raynal <miquel.raynal@bootlin.com>
0005  *
0006  * Header for the Macronix external ECC engine.
0007  */
0008 
0009 #ifndef __MTD_NAND_ECC_MXIC_H__
0010 #define __MTD_NAND_ECC_MXIC_H__
0011 
0012 #include <linux/platform_device.h>
0013 #include <linux/device.h>
0014 
0015 struct mxic_ecc_engine;
0016 
0017 #if IS_ENABLED(CONFIG_MTD_NAND_ECC_MXIC) && IS_REACHABLE(CONFIG_MTD_NAND_CORE)
0018 
0019 struct nand_ecc_engine_ops *mxic_ecc_get_pipelined_ops(void);
0020 struct nand_ecc_engine *mxic_ecc_get_pipelined_engine(struct platform_device *spi_pdev);
0021 void mxic_ecc_put_pipelined_engine(struct nand_ecc_engine *eng);
0022 int mxic_ecc_process_data_pipelined(struct nand_ecc_engine *eng,
0023                     unsigned int direction, dma_addr_t dirmap);
0024 
0025 #else /* !CONFIG_MTD_NAND_ECC_MXIC */
0026 
0027 static inline struct nand_ecc_engine_ops *mxic_ecc_get_pipelined_ops(void)
0028 {
0029     return NULL;
0030 }
0031 
0032 static inline struct nand_ecc_engine *
0033 mxic_ecc_get_pipelined_engine(struct platform_device *spi_pdev)
0034 {
0035     return ERR_PTR(-EOPNOTSUPP);
0036 }
0037 
0038 static inline void mxic_ecc_put_pipelined_engine(struct nand_ecc_engine *eng) {}
0039 
0040 static inline int mxic_ecc_process_data_pipelined(struct nand_ecc_engine *eng,
0041                           unsigned int direction,
0042                           dma_addr_t dirmap)
0043 {
0044     return -EOPNOTSUPP;
0045 }
0046 
0047 #endif /* CONFIG_MTD_NAND_ECC_MXIC */
0048 
0049 #endif /* __MTD_NAND_ECC_MXIC_H__ */