#include "time_support.h"
#include "fileio.h"
-static int nand_read_page(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size);
-//static int nand_read_plain(struct nand_device_s *nand, uint32_t address, uint8_t *data, uint32_t data_size);
+static int nand_read_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size);
+//static int nand_read_plain(struct nand_device *nand, uint32_t address, uint8_t *data, uint32_t data_size);
-static int nand_write_page(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size);
+static int nand_write_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size);
/* NAND flash controller
*/
-extern nand_flash_controller_t davinci_nand_controller;
-extern nand_flash_controller_t lpc3180_nand_controller;
-extern nand_flash_controller_t orion_nand_controller;
-extern nand_flash_controller_t s3c2410_nand_controller;
-extern nand_flash_controller_t s3c2412_nand_controller;
-extern nand_flash_controller_t s3c2440_nand_controller;
-extern nand_flash_controller_t s3c2443_nand_controller;
-extern nand_flash_controller_t imx31_nand_flash_controller;
-
-/* extern nand_flash_controller_t boundary_scan_nand_controller; */
-
-static nand_flash_controller_t *nand_flash_controllers[] =
+extern struct nand_flash_controller davinci_nand_controller;
+extern struct nand_flash_controller lpc3180_nand_controller;
+extern struct nand_flash_controller orion_nand_controller;
+extern struct nand_flash_controller s3c2410_nand_controller;
+extern struct nand_flash_controller s3c2412_nand_controller;
+extern struct nand_flash_controller s3c2440_nand_controller;
+extern struct nand_flash_controller s3c2443_nand_controller;
+extern struct nand_flash_controller imx31_nand_flash_controller;
+
+/* extern struct nand_flash_controller boundary_scan_nand_controller; */
+
+static struct nand_flash_controller *nand_flash_controllers[] =
{
&davinci_nand_controller,
&lpc3180_nand_controller,
};
/* configured NAND devices and NAND Flash command handler */
-static nand_device_t *nand_devices = NULL;
+static struct nand_device *nand_devices = NULL;
static command_t *nand_cmd;
/* Chip ID list
* 256 256 Byte page size
* 512 512 Byte page size
*/
-static nand_info_t nand_flash_ids[] =
+static struct nand_info nand_flash_ids[] =
{
/* start "museum" IDs */
{"NAND 1MiB 5V 8-bit", 0x6e, 256, 1, 0x1000, 0},
/* Manufacturer ID list
*/
-static nand_manufacturer_t nand_manuf_ids[] =
+static struct nand_manufacturer nand_manuf_ids[] =
{
{0x0, "unknown"},
{NAND_MFR_TOSHIBA, "Toshiba"},
*/
#if 0
-static nand_ecclayout_t nand_oob_8 = {
+static struct nand_ecclayout nand_oob_8 = {
.eccbytes = 3,
.eccpos = {0, 1, 2},
.oobfree = {
};
#endif
-static nand_ecclayout_t nand_oob_16 = {
+static struct nand_ecclayout nand_oob_16 = {
.eccbytes = 6,
.eccpos = {0, 1, 2, 3, 6, 7},
.oobfree = {
. length = 8}}
};
-static nand_ecclayout_t nand_oob_64 = {
+static struct nand_ecclayout nand_oob_64 = {
.eccbytes = 24,
.eccpos = {
40, 41, 42, 43, 44, 45, 46, 47,
for (i = 0; nand_flash_controllers[i]; i++)
{
- nand_device_t *p, *c;
+ struct nand_device *p, *c;
if (strcmp(args[0], nand_flash_controllers[i]->name) == 0)
{
return retval;
}
- c = malloc(sizeof(nand_device_t));
+ c = malloc(sizeof(struct nand_device));
c->controller = nand_flash_controllers[i];
c->controller_priv = NULL;
return ERROR_OK;
}
-int nand_register_commands(struct command_context_s *cmd_ctx)
+int nand_register_commands(struct command_context *cmd_ctx)
{
nand_cmd = register_command(cmd_ctx, NULL, "nand", NULL, COMMAND_ANY, "NAND specific commands");
return ERROR_OK;
}
-nand_device_t *get_nand_device_by_num(int num)
+struct nand_device *get_nand_device_by_num(int num)
{
- nand_device_t *p;
+ struct nand_device *p;
int i = 0;
for (p = nand_devices; p; p = p->next)
return NULL;
}
-int nand_command_get_device_by_num(struct command_context_s *cmd_ctx,
- const char *str, nand_device_t **nand)
+int nand_command_get_device_by_num(struct command_context *cmd_ctx,
+ const char *str, struct nand_device **nand)
{
unsigned num;
COMMAND_PARSE_NUMBER(uint, str, num);
return ERROR_OK;
}
-static int nand_build_bbt(struct nand_device_s *nand, int first, int last)
+static int nand_build_bbt(struct nand_device *nand, int first, int last)
{
uint32_t page = 0x0;
int i;
return ERROR_OK;
}
-int nand_read_status(struct nand_device_s *nand, uint8_t *status)
+int nand_read_status(struct nand_device *nand, uint8_t *status)
{
if (!nand->device)
return ERROR_NAND_DEVICE_NOT_PROBED;
return ERROR_OK;
}
-static int nand_poll_ready(struct nand_device_s *nand, int timeout)
+static int nand_poll_ready(struct nand_device *nand, int timeout)
{
uint8_t status;
return (status & NAND_STATUS_READY) != 0;
}
-int nand_probe(struct nand_device_s *nand)
+int nand_probe(struct nand_device *nand)
{
uint8_t manufacturer_id, device_id;
uint8_t id_buff[6];
}
nand->num_blocks = (nand->device->chip_size * 1024) / (nand->erase_size / 1024);
- nand->blocks = malloc(sizeof(nand_block_t) * nand->num_blocks);
+ nand->blocks = malloc(sizeof(struct nand_block) * nand->num_blocks);
for (i = 0; i < nand->num_blocks; i++)
{
return ERROR_OK;
}
-static int nand_erase(struct nand_device_s *nand, int first_block, int last_block)
+static int nand_erase(struct nand_device *nand, int first_block, int last_block)
{
int i;
uint32_t page;
}
#if 0
-static int nand_read_plain(struct nand_device_s *nand, uint32_t address, uint8_t *data, uint32_t data_size)
+static int nand_read_plain(struct nand_device *nand, uint32_t address, uint8_t *data, uint32_t data_size)
{
uint8_t *page;
return ERROR_OK;
}
-static int nand_write_plain(struct nand_device_s *nand, uint32_t address, uint8_t *data, uint32_t data_size)
+static int nand_write_plain(struct nand_device *nand, uint32_t address, uint8_t *data, uint32_t data_size)
{
uint8_t *page;
}
#endif
-int nand_write_page(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
+int nand_write_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
{
uint32_t block;
return nand->controller->write_page(nand, page, data, data_size, oob, oob_size);
}
-static int nand_read_page(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
+static int nand_read_page(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
{
if (!nand->device)
return ERROR_NAND_DEVICE_NOT_PROBED;
return nand->controller->read_page(nand, page, data, data_size, oob, oob_size);
}
-int nand_read_page_raw(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
+int nand_read_page_raw(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
{
uint32_t i;
return ERROR_OK;
}
-int nand_write_page_raw(struct nand_device_s *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
+int nand_write_page_raw(struct nand_device *nand, uint32_t page, uint8_t *data, uint32_t data_size, uint8_t *oob, uint32_t oob_size)
{
uint32_t i;
int retval;
COMMAND_HANDLER(handle_nand_list_command)
{
- nand_device_t *p;
+ struct nand_device *p;
int i;
if (!nand_devices)
int first = -1;
int last = -1;
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
return ERROR_COMMAND_SYNTAX_ERROR;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
uint32_t buf_cnt;
enum oob_formats oob_format = NAND_OOB_NONE;
- fileio_t fileio;
+ struct fileio fileio;
if (argc < 3)
return ERROR_COMMAND_SYNTAX_ERROR;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
if (argc > 3)
{
- int i;
- for (i = 3; i < argc; i++)
+ for (unsigned i = 3; i < argc; i++)
{
if (!strcmp(args[i], "oob_raw"))
oob_format |= NAND_OOB_RAW;
return ERROR_COMMAND_SYNTAX_ERROR;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
return ERROR_OK;
}
- fileio_t fileio;
+ struct fileio fileio;
uint8_t *page = NULL;
uint32_t page_size = 0;
if (argc > 4)
{
- int i;
- for (i = 4; i < argc; i++)
+ for (unsigned i = 4; i < argc; i++)
{
if (!strcmp(args[i], "oob_raw"))
oob_format |= NAND_OOB_RAW;
return ERROR_COMMAND_SYNTAX_ERROR;
}
- nand_device_t *p;
+ struct nand_device *p;
int retval = nand_command_get_device_by_num(cmd_ctx, args[0], &p);
if (ERROR_OK != retval)
return retval;
return ERROR_OK;
}
-int nand_init(struct command_context_s *cmd_ctx)
+int nand_init(struct command_context *cmd_ctx)
{
if (!nand_devices)
return ERROR_OK;