1 /* SPDX-License-Identifier: GPL-2.0 */
3 * © Copyright 2016 ATMEL
4 * © Copyright 2016 Free Electrons
6 * Author: Boris Brezillon <boris.brezillon@free-electrons.com>
8 * Derived from the atmel_nand.c driver which contained the following
11 * Copyright © 2003 Rick Bronson
13 * Derived from drivers/mtd/nand/autcpu12.c (removed in v3.8)
14 * Copyright © 2001 Thomas Gleixner (gleixner@autronix.de)
16 * Derived from drivers/mtd/spia.c (removed in v3.8)
17 * Copyright © 2000 Steven J. Hill (sjhill@cotw.com)
20 * Add Hardware ECC support for AT91SAM9260 / AT91SAM9263
21 * Richard Genoud (richard.genoud@gmail.com), Adeneo Copyright © 2007
23 * Derived from Das U-Boot source code
24 * (u-boot-1.1.5/board/atmel/at91sam9263ek/nand.c)
25 * © Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
27 * Add Programmable Multibit ECC support for various AT91 SoC
28 * © Copyright 2012 ATMEL, Hong Xu
30 * Add Nand Flash Controller support for SAMA5 SoC
31 * © Copyright 2013 ATMEL, Josh Wu (josh.wu@atmel.com)
37 #define ATMEL_PMECC_MAXIMIZE_ECC_STRENGTH 0
38 #define ATMEL_PMECC_SECTOR_SIZE_AUTO 0
39 #define ATMEL_PMECC_OOBOFFSET_AUTO -1
41 struct atmel_pmecc_user_req
{
53 struct atmel_pmecc
*devm_atmel_pmecc_get(struct device
*dev
);
55 struct atmel_pmecc_user
*
56 atmel_pmecc_create_user(struct atmel_pmecc
*pmecc
,
57 struct atmel_pmecc_user_req
*req
);
58 void atmel_pmecc_destroy_user(struct atmel_pmecc_user
*user
);
60 void atmel_pmecc_reset(struct atmel_pmecc
*pmecc
);
61 int atmel_pmecc_enable(struct atmel_pmecc_user
*user
, int op
);
62 void atmel_pmecc_disable(struct atmel_pmecc_user
*user
);
63 int atmel_pmecc_wait_rdy(struct atmel_pmecc_user
*user
);
64 int atmel_pmecc_correct_sector(struct atmel_pmecc_user
*user
, int sector
,
65 void *data
, void *ecc
);
66 bool atmel_pmecc_correct_erased_chunks(struct atmel_pmecc_user
*user
);
67 void atmel_pmecc_get_generated_eccbytes(struct atmel_pmecc_user
*user
,
68 int sector
, void *ecc
);
70 #endif /* ATMEL_PMECC_H */