X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fnand.h;h=8d94b5cbd7536e4a5492b7cb28d9c6ef34a11534;hb=348de314be28e942c914a9815acc3e0746124137;hp=23f3ca1db823bdbe30bb8da70f2a83df9f1ac36a;hpb=ed01c4f59ddda1cb898d86c1ac0945c756ab88c2;p=u-boot diff --git a/include/nand.h b/include/nand.h index 23f3ca1db8..8d94b5cbd7 100644 --- a/include/nand.h +++ b/include/nand.h @@ -26,7 +26,6 @@ extern void nand_init(void); -#ifndef CONFIG_NAND_LEGACY #include #include #include @@ -99,21 +98,30 @@ struct nand_read_options { typedef struct nand_read_options nand_read_options_t; struct nand_erase_options { - ulong length; /* number of bytes to erase */ - ulong offset; /* first address in NAND to erase */ + loff_t length; /* number of bytes to erase */ + loff_t offset; /* first address in NAND to erase */ int quiet; /* don't display progress messages */ int jffs2; /* if true: format for jffs2 usage * (write appropriate cleanmarker blocks) */ int scrub; /* if true, really clean NAND by erasing * bad blocks (UNSAFE) */ + + /* Don't include skipped bad blocks in size to be erased */ + int spread; }; typedef struct nand_erase_options nand_erase_options_t; int nand_read_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, u_char *buffer); + +#define WITH_YAFFS_OOB (1 << 0) /* whether write with yaffs format. This flag + * is a 'mode' meaning it cannot be mixed with + * other flags */ +#define WITH_DROP_FFS (1 << 1) /* drop trailing all-0xff pages */ + int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, - u_char *buffer); + u_char *buffer, int flags); int nand_erase_opts(nand_info_t *meminfo, const nand_erase_options_t *opts); #define NAND_LOCK_STATUS_TIGHT 0x01 @@ -130,5 +138,13 @@ void board_nand_select_device(struct nand_chip *nand, int chip); __attribute__((noreturn)) void nand_boot(void); -#endif /* !CONFIG_NAND_LEGACY */ +#endif + +#ifdef CONFIG_ENV_OFFSET_OOB +#define ENV_OOB_MARKER 0x30425645 /*"EVB0" in little-endian -- offset is stored + as block number*/ +#define ENV_OOB_MARKER_OLD 0x30564e45 /*"ENV0" in little-endian -- offset is + stored as byte number */ +#define ENV_OFFSET_SIZE 8 +int get_nand_env_oob(nand_info_t *nand, unsigned long *result); #endif