* Copyright (C) 2007 by Dominic Rath *
* Dominic.Rath@gmx.de *
* *
- * partially based on *
- * linux/include/linux/mtd/nand.h *
- * *
- * Copyright (c) 2000 David Woodhouse <dwmw2@mvhi.com> *
- * Steven J. Hill <sjhill@realitydiluted.com> *
- * Thomas Gleixner <tglx@linutronix.de> *
+ * Partially based on linux/include/linux/mtd/nand.h *
+ * Copyright (C) 2000 David Woodhouse <dwmw2@mvhi.com> *
+ * Copyright (C) 2000 Steven J. Hill <sjhill@realitydiluted.com> *
+ * Copyright (C) 2000 Thomas Gleixner <tglx@linutronix.de> *
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
int (*address)(struct nand_device_s *device, u8 address);
int (*write_data)(struct nand_device_s *device, u16 data);
int (*read_data)(struct nand_device_s *device, void *data);
+ int (*write_block_data)(struct nand_device_s *device, u8 *data, int size);
+ int (*read_block_data)(struct nand_device_s *device, u8 *data, int size);
int (*write_page)(struct nand_device_s *device, u32 page, u8 *data, u32 data_size, u8 *oob, u32 oob_size);
int (*read_page)(struct nand_device_s *device, u32 page, u8 *data, u32 data_size, u8 *oob, u32 oob_size);
int (*controller_ready)(struct nand_device_s *device, int timeout);
int is_bad;
} nand_block_t;
+struct nand_oobfree {
+ int offset;
+ int length;
+};
+
+typedef struct nand_ecclayout_s {
+ int eccbytes;
+ int eccpos[64];
+ int oobavail;
+ struct nand_oobfree oobfree[2];
+} nand_ecclayout_t;
+
typedef struct nand_device_s
{
nand_flash_controller_t *controller;
extern nand_device_t *get_nand_device_by_num(int num);
extern int nand_read_page_raw(struct nand_device_s *device, u32 page, u8 *data, u32 data_size, u8 *oob, u32 oob_size);
extern int nand_write_page_raw(struct nand_device_s *device, u32 page, u8 *data, u32 data_size, u8 *oob, u32 oob_size);
+extern int nand_read_status(struct nand_device_s *device, u8 *status);
+extern int nand_calculate_ecc(struct nand_device_s *device, const u8 *dat, u8 *ecc_code);
+
+extern int nand_register_commands(struct command_context_s *cmd_ctx);
+extern int nand_init(struct command_context_s *cmd_ctx);
#define ERROR_NAND_DEVICE_INVALID (-1100)
#define ERROR_NAND_OPERATION_FAILED (-1101)