gdb_connection_t -> struct gdb_connection
[fw/openocd] / src / flash / s3c2440_nand.c
index cd447104e346489db0a31bae170bfaa3e7843b0d..40037c7f262c09da77ed4be81cbaf4fc1bb0a308 100644 (file)
 #include "s3c24xx_nand.h"
 
 
-static int s3c2440_nand_device_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct nand_device_s *device);
-static int s3c2440_init(struct nand_device_s *device);
-//static int s3c2440_nand_ready(struct nand_device_s *device, int timeout);
-
-nand_flash_controller_t s3c2440_nand_controller =
-{
-       .name                   = "s3c2440",
-       .nand_device_command    = s3c2440_nand_device_command,
-       .register_commands      = s3c24xx_register_commands,
-       .init                   = s3c2440_init,
-       .reset                  = s3c24xx_reset,
-       .command                = s3c24xx_command,
-       .address                = s3c24xx_address,
-       .write_data             = s3c24xx_write_data,
-       .read_data              = s3c24xx_read_data,
-       .write_page             = s3c24xx_write_page,
-       .read_page              = s3c24xx_read_page,
-       .write_block_data       = s3c2440_write_block_data,
-       .read_block_data        = s3c2440_read_block_data,
-       .controller_ready       = s3c24xx_controller_ready,
-       .nand_ready             = s3c2440_nand_ready,
-};
-
-static int s3c2440_nand_device_command(struct command_context_s *cmd_ctx, char *cmd,
-                               char **args, int argc,
-                               struct nand_device_s *device)
+NAND_DEVICE_COMMAND_HANDLER(s3c2440_nand_device_command)
 {
-       s3c24xx_nand_controller_t *info;
-
-       info = s3c24xx_nand_device_command(cmd_ctx, cmd, args, argc, device);
-       if (info == NULL) {
-               return ERROR_NAND_DEVICE_INVALID;
-       }
+       struct s3c24xx_nand_controller *info;
+       CALL_S3C24XX_DEVICE_COMMAND(nand, &info);
 
        /* fill in the address fields for the core device */
        info->cmd = S3C2440_NFCMD;
@@ -74,9 +45,9 @@ static int s3c2440_nand_device_command(struct command_context_s *cmd_ctx, char *
        return ERROR_OK;
 }
 
-static int s3c2440_init(struct nand_device_s *device)
+static int s3c2440_init(struct nand_device_s *nand)
 {
-       s3c24xx_nand_controller_t *s3c24xx_info = device->controller_priv;
+       struct s3c24xx_nand_controller *s3c24xx_info = nand->controller_priv;
        target_t *target = s3c24xx_info->target;
 
        target_write_u32(target, S3C2410_NFCONF,
@@ -90,9 +61,9 @@ static int s3c2440_init(struct nand_device_s *device)
        return ERROR_OK;
 }
 
-int s3c2440_nand_ready(struct nand_device_s *device, int timeout)
+int s3c2440_nand_ready(struct nand_device_s *nand, int timeout)
 {
-       s3c24xx_nand_controller_t *s3c24xx_info = device->controller_priv;
+       struct s3c24xx_nand_controller *s3c24xx_info = nand->controller_priv;
        target_t *target = s3c24xx_info->target;
        uint8_t status;
 
@@ -116,14 +87,14 @@ int s3c2440_nand_ready(struct nand_device_s *device, int timeout)
 
 /* use the fact we can read/write 4 bytes in one go via a single 32bit op */
 
-int s3c2440_read_block_data(struct nand_device_s *device, uint8_t *data, int data_size)
+int s3c2440_read_block_data(struct nand_device_s *nand, uint8_t *data, int data_size)
 {
-       s3c24xx_nand_controller_t *s3c24xx_info = device->controller_priv;
+       struct s3c24xx_nand_controller *s3c24xx_info = nand->controller_priv;
        target_t *target = s3c24xx_info->target;
-       u32 nfdata = s3c24xx_info->data;
-       u32 tmp;
+       uint32_t nfdata = s3c24xx_info->data;
+       uint32_t tmp;
 
-       LOG_INFO("%s: reading data: %p, %p, %d\n", __func__, device, data, data_size);
+       LOG_INFO("%s: reading data: %p, %p, %d\n", __func__, nand, data, data_size);
 
        if (target->state != TARGET_HALTED) {
                LOG_ERROR("target must be halted to use S3C24XX NAND flash controller");
@@ -152,12 +123,12 @@ int s3c2440_read_block_data(struct nand_device_s *device, uint8_t *data, int dat
        return ERROR_OK;
 }
 
-int s3c2440_write_block_data(struct nand_device_s *device, uint8_t *data, int data_size)
+int s3c2440_write_block_data(struct nand_device_s *nand, uint8_t *data, int data_size)
 {
-       s3c24xx_nand_controller_t *s3c24xx_info = device->controller_priv;
+       struct s3c24xx_nand_controller *s3c24xx_info = nand->controller_priv;
        target_t *target = s3c24xx_info->target;
-       u32 nfdata = s3c24xx_info->data;
-       u32 tmp;
+       uint32_t nfdata = s3c24xx_info->data;
+       uint32_t tmp;
 
        if (target->state != TARGET_HALTED) {
                LOG_ERROR("target must be halted to use S3C24XX NAND flash controller");
@@ -181,3 +152,21 @@ int s3c2440_write_block_data(struct nand_device_s *device, uint8_t *data, int da
 
        return ERROR_OK;
 }
+
+struct nand_flash_controller s3c2440_nand_controller = {
+               .name = "s3c2440",
+               .nand_device_command = &s3c2440_nand_device_command,
+               .register_commands = &s3c24xx_register_commands,
+               .init = &s3c2440_init,
+               .reset = &s3c24xx_reset,
+               .command = &s3c24xx_command,
+               .address = &s3c24xx_address,
+               .write_data = &s3c24xx_write_data,
+               .read_data = &s3c24xx_read_data,
+               .write_page = s3c24xx_write_page,
+               .read_page = s3c24xx_read_page,
+               .write_block_data = &s3c2440_write_block_data,
+               .read_block_data = &s3c2440_read_block_data,
+               .controller_ready = &s3c24xx_controller_ready,
+               .nand_ready = &s3c2440_nand_ready,
+       };