1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- /*
- * © Copyright 2016 ATMEL
- * © Copyright 2016 Free Electrons
- *
- * Author: Boris Brezillon <boris.brezillon@free-electrons.com>
- *
- * Derived from the atmel_nand.c driver which contained the following
- * copyrights:
- *
- * Copyright © 2003 Rick Bronson
- *
- * Derived from drivers/mtd/nand/autcpu12.c (removed in v3.8)
- * Copyright © 2001 Thomas Gleixner (gleixner@autronix.de)
- *
- * Derived from drivers/mtd/spia.c (removed in v3.8)
- * Copyright © 2000 Steven J. Hill (sjhill@cotw.com)
- *
- *
- * Add Hardware ECC support for AT91SAM9260 / AT91SAM9263
- * Richard Genoud (richard.genoud@gmail.com), Adeneo Copyright © 2007
- *
- * Derived from Das U-Boot source code
- * (u-boot-1.1.5/board/atmel/at91sam9263ek/nand.c)
- * © Copyright 2006 ATMEL Rousset, Lacressonniere Nicolas
- *
- * Add Programmable Multibit ECC support for various AT91 SoC
- * © Copyright 2012 ATMEL, Hong Xu
- *
- * Add Nand Flash Controller support for SAMA5 SoC
- * © Copyright 2013 ATMEL, Josh Wu (josh.wu@atmel.com)
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 as
- * published by the Free Software Foundation.
- *
- */
- #ifndef ATMEL_PMECC_H
- #define ATMEL_PMECC_H
- #define ATMEL_PMECC_MAXIMIZE_ECC_STRENGTH 0
- #define ATMEL_PMECC_SECTOR_SIZE_AUTO 0
- #define ATMEL_PMECC_OOBOFFSET_AUTO -1
- struct atmel_pmecc_user_req {
- int pagesize;
- int oobsize;
- struct {
- int strength;
- int bytes;
- int sectorsize;
- int nsectors;
- int ooboffset;
- } ecc;
- };
- struct atmel_pmecc *devm_atmel_pmecc_get(struct device *dev);
- struct atmel_pmecc_user *
- atmel_pmecc_create_user(struct atmel_pmecc *pmecc,
- struct atmel_pmecc_user_req *req);
- void atmel_pmecc_destroy_user(struct atmel_pmecc_user *user);
- void atmel_pmecc_reset(struct atmel_pmecc *pmecc);
- int atmel_pmecc_enable(struct atmel_pmecc_user *user, int op);
- void atmel_pmecc_disable(struct atmel_pmecc_user *user);
- int atmel_pmecc_wait_rdy(struct atmel_pmecc_user *user);
- int atmel_pmecc_correct_sector(struct atmel_pmecc_user *user, int sector,
- void *data, void *ecc);
- bool atmel_pmecc_correct_erased_chunks(struct atmel_pmecc_user *user);
- void atmel_pmecc_get_generated_eccbytes(struct atmel_pmecc_user *user,
- int sector, void *ecc);
- #endif /* ATMEL_PMECC_H */
|