Andreas Fritiofson <andreas.fritiofson@gmail.com> UTF8 fixes
[fw/openocd] / src / flash / ecos.c
index bc31fdd464f0238a55bda1cb6b2564ba8855e62f..76859df5db90046fbd8894bf965f3d8b96cde1cb 100644 (file)
@@ -1,5 +1,5 @@
 /***************************************************************************
- *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
+ *   Copyright (C) 2007,2008 Øyvind Harboe                                 *
  *   oyvind.harboe@zylin.com                                               *
  *                                                                         *
  *   This program is free software; you can redistribute it and/or modify  *
 #include "config.h"
 #endif
 
-#include <string.h>
-
-#include "replacements.h"
-
 #include "flash.h"
+#include "embeddedice.h"
+#include "image.h"
 
-#include "target.h"
-
-#include "flash.h"
-#include "target.h"
-#include "log.h"
-#include "binarybuffer.h"
-#include "../target/embeddedice.h"
-#include "types.h"
 
 static int ecosflash_register_commands(struct command_context_s *cmd_ctx);
 static int ecosflash_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);
 static int ecosflash_erase(struct flash_bank_s *bank, int first, int last);
 static int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int last);
-static int ecosflash_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count);
+static int ecosflash_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count);
 static int ecosflash_probe(struct flash_bank_s *bank);
 static int ecosflash_protect_check(struct flash_bank_s *bank);
 static int ecosflash_info(struct flash_bank_s *bank, char *buf, int buf_size);
 
 #if 0
-static u32 ecosflash_get_flash_status(flash_bank_t *bank);
+static uint32_t ecosflash_get_flash_status(flash_bank_t *bank);
 static void ecosflash_set_flash_mode(flash_bank_t *bank,int mode);
-static u32 ecosflash_wait_status_busy(flash_bank_t *bank, u32 waitbits, int timeout);
+static uint32_t ecosflash_wait_status_busy(flash_bank_t *bank, uint32_t waitbits, int timeout);
 static int ecosflash_handle_gpnvm_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
 #endif
 
@@ -73,10 +63,10 @@ typedef struct ecosflash_flash_bank_s
        working_area_t *write_algorithm;
        working_area_t *erase_check_algorithm;
        char *driverPath;
-       u32 start_address;
+       uint32_t start_address;
 } ecosflash_flash_bank_t;
 
-static const int sectorSize=0x10000;
+static const int sectorSize = 0x10000;
 
 char *
 flash_errmsg(int err);
@@ -149,21 +139,21 @@ static int ecosflash_flash_bank_command(struct command_context_s *cmd_ctx, char
        }
 
        info = malloc(sizeof(ecosflash_flash_bank_t));
-       if(info == NULL)
+       if (info == NULL)
        {
                LOG_ERROR("no memory for flash bank info");
                exit(-1);
        }
        bank->driver_priv = info;
-       info->driverPath=strdup(args[6]);
+       info->driverPath = strdup(args[6]);
 
        /* eCos flash sector sizes are not exposed to OpenOCD, use 0x10000 as
         * a way to improve impeadance matach between OpenOCD and eCos flash
         * driver.
         */
        int i = 0;
-       u32 offset = 0;
-       bank->num_sectors=bank->size/sectorSize;
+       uint32_t offset = 0;
+       bank->num_sectors = bank->size/sectorSize;
        bank->sectors = malloc(sizeof(flash_sector_t) * bank->num_sectors);
        for (i = 0; i < bank->num_sectors; i++)
        {
@@ -174,10 +164,10 @@ static int ecosflash_flash_bank_command(struct command_context_s *cmd_ctx, char
                bank->sectors[i].is_protected = 0;
        }
 
-       info->target = get_target_by_num(strtoul(args[5], NULL, 0));
+       info->target = get_target(args[5]);
        if (info->target == NULL)
        {
-               LOG_ERROR("no target '%i' configured", (int)strtoul(args[5], NULL, 0));
+               LOG_ERROR("target '%s' not defined", args[5]);
                return ERROR_FAIL;
        }
        return ERROR_OK;
@@ -185,21 +175,21 @@ static int ecosflash_flash_bank_command(struct command_context_s *cmd_ctx, char
 
 static int loadDriver(ecosflash_flash_bank_t *info)
 {
-       u32 buf_cnt;
-       u32 image_size;
+       uint32_t buf_cnt;
+       uint32_t image_size;
        image_t image;
 
        image.base_address_set = 0;
        image.start_address_set = 0;
-       target_t *target=info->target;
+       target_t *target = info->target;
        int retval;
 
-       if ((retval=image_open(&image, info->driverPath, NULL)) != ERROR_OK)
+       if ((retval = image_open(&image, info->driverPath, NULL)) != ERROR_OK)
        {
                return retval;
        }
 
-       info->start_address=image.start_address;
+       info->start_address = image.start_address;
 
        image_size = 0x0;
        int i;
@@ -215,7 +205,7 @@ static int loadDriver(ecosflash_flash_bank_t *info)
                }
                target_write_buffer(target, image.sections[i].base_address, buf_cnt, buffer);
                image_size += buf_cnt;
-               LOG_DEBUG("%u byte written at address 0x%8.8x", buf_cnt, image.sections[i].base_address);
+               LOG_DEBUG("%" PRIu32 " byte written at address 0x%8.8" PRIx32 "", buf_cnt, image.sections[i].base_address);
 
                free(buffer);
        }
@@ -225,20 +215,20 @@ static int loadDriver(ecosflash_flash_bank_t *info)
        return ERROR_OK;
 }
 
-static int const OFFSET_ERASE=0x0;
-static int const OFFSET_ERASE_SIZE=0x8;
-static int const OFFSET_FLASH=0xc;
-static int const OFFSET_FLASH_SIZE=0x8;
-static int const OFFSET_GET_WORKAREA=0x18;
-static int const OFFSET_GET_WORKAREA_SIZE=0x4;
+static int const OFFSET_ERASE = 0x0;
+static int const OFFSET_ERASE_SIZE = 0x8;
+static int const OFFSET_FLASH = 0xc;
+static int const OFFSET_FLASH_SIZE = 0x8;
+static int const OFFSET_GET_WORKAREA = 0x18;
+static int const OFFSET_GET_WORKAREA_SIZE = 0x4;
 
 static int runCode(ecosflash_flash_bank_t *info,
-               u32 codeStart, u32 codeStop, u32 r0, u32 r1, u32 r2,
-               u32 *result,
+               uint32_t codeStart, uint32_t codeStop, uint32_t r0, uint32_t r1, uint32_t r2,
+               uint32_t *result,
                /* timeout in ms */
                int timeout)
 {
-       target_t *target=info->target;
+       target_t *target = info->target;
 
        reg_param_t reg_params[3];
        armv4_5_algorithm_t armv4_5_info;
@@ -255,7 +245,7 @@ static int runCode(ecosflash_flash_bank_t *info,
        buf_set_u32(reg_params[2].value, 0, 32, r2);
 
        int retval;
-       if ((retval = target->type->run_algorithm(target, 0, NULL, 3, reg_params,
+       if ((retval = target_run_algorithm(target, 0, NULL, 3, reg_params,
                        codeStart,
                        codeStop, timeout,
                        &armv4_5_info)) != ERROR_OK)
@@ -264,7 +254,7 @@ static int runCode(ecosflash_flash_bank_t *info,
                return retval;
        }
 
-       *result=buf_get_u32(reg_params[0].value, 0, 32);
+       *result = buf_get_u32(reg_params[0].value, 0, 32);
 
        destroy_reg_param(&reg_params[0]);
        destroy_reg_param(&reg_params[1]);
@@ -273,81 +263,81 @@ static int runCode(ecosflash_flash_bank_t *info,
        return ERROR_OK;
 }
 
-static int eCosBoard_erase(ecosflash_flash_bank_t *info, u32 address, u32 len)
+static int eCosBoard_erase(ecosflash_flash_bank_t *info, uint32_t address, uint32_t len)
 {
        int retval;
        int timeout = (len / 20480 + 1) * 1000; /*asume 20 KB/s*/
 
-       retval=loadDriver(info);
-       if (retval!=ERROR_OK)
+       retval = loadDriver(info);
+       if (retval != ERROR_OK)
                return retval;
 
-       u32 flashErr;
-       retval=runCode(info,
-                       info->start_address+OFFSET_ERASE,
-                       info->start_address+OFFSET_ERASE+OFFSET_ERASE_SIZE,
+       uint32_t flashErr;
+       retval = runCode(info,
+                       info->start_address + OFFSET_ERASE,
+                       info->start_address + OFFSET_ERASE + OFFSET_ERASE_SIZE,
                        address,
                        len,
                        0,
                        &flashErr,
                        timeout
-                       );
-       if (retval!=ERROR_OK)
+);
+       if (retval != ERROR_OK)
                return retval;
 
        if (flashErr != 0x0)
        {
-               LOG_ERROR("Flash erase failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
+               LOG_ERROR("Flash erase failed with %d (%s)\n", (int)flashErr, flash_errmsg(flashErr));
                return ERROR_FAIL;
        }
 
        return ERROR_OK;
 }
 
-static int eCosBoard_flash(ecosflash_flash_bank_t *info, void *data, u32 address, u32 len)
+static int eCosBoard_flash(ecosflash_flash_bank_t *info, void *data, uint32_t address, uint32_t len)
 {
-       target_t *target=info->target;
-       const int chunk=8192;
-       int retval=ERROR_OK;
+       target_t *target = info->target;
+       const int chunk = 8192;
+       int retval = ERROR_OK;
        int timeout = (chunk / 20480 + 1) * 1000; /*asume 20 KB/s + 1 second*/
 
-       retval=loadDriver(info);
-       if (retval!=ERROR_OK)
+       retval = loadDriver(info);
+       if (retval != ERROR_OK)
                return retval;
 
-       u32 buffer;
-       retval=runCode(info,
-                       info->start_address+OFFSET_GET_WORKAREA,
-                       info->start_address+OFFSET_GET_WORKAREA+OFFSET_GET_WORKAREA_SIZE,
+       uint32_t buffer;
+       retval = runCode(info,
+                       info->start_address + OFFSET_GET_WORKAREA,
+                       info->start_address + OFFSET_GET_WORKAREA + OFFSET_GET_WORKAREA_SIZE,
                        0,
                        0,
                        0,
                        &buffer,
                        1000);
-       if (retval!=ERROR_OK)
+       if (retval != ERROR_OK)
                return retval;
 
 
-       u32 i;
-       for (i=0; i<len; i+=chunk)
+       uint32_t i;
+       for (i = 0; i < len; i += chunk)
        {
-               int t=len-i;
-               if (t>chunk)
+               int t = len-i;
+               if (t > chunk)
                {
-                       t=chunk;
+                       t = chunk;
                }
 
                int retval;
-               retval=target_write_buffer(target, buffer, t, ((u8 *)data)+i);
+               retval = target_write_buffer(target, buffer, t, ((uint8_t *)data) + i);
                if (retval != ERROR_OK)
                        return retval;
 
-               u32 flashErr;
-               retval=runCode(info,
-                               info->start_address+OFFSET_FLASH,
-                               info->start_address+OFFSET_FLASH+OFFSET_FLASH_SIZE,
+               uint32_t flashErr;
+               retval = runCode(info,
+                               info->start_address + OFFSET_FLASH,
+                               info->start_address + OFFSET_FLASH + OFFSET_FLASH_SIZE,
                                buffer,
-                               address+i,
+                               address + i,
                                t,
                                &flashErr,
                                timeout);
@@ -356,7 +346,7 @@ static int eCosBoard_flash(ecosflash_flash_bank_t *info, void *data, u32 address
 
                if (flashErr != 0x0)
                {
-                       LOG_ERROR("Flash prog failed with %d (%s)\n", flashErr, flash_errmsg(flashErr));
+                       LOG_ERROR("Flash prog failed with %d (%s)\n", (int)flashErr, flash_errmsg(flashErr));
                        return ERROR_FAIL;
                }
        }
@@ -376,7 +366,7 @@ static int ecosflash_register_commands(struct command_context_s *cmd_ctx)
 }
 
 #if 0
-static void command(flash_bank_t *bank, u8 cmd, u8 *cmd_buf)
+static void command(flash_bank_t *bank, uint8_t cmd, uint8_t *cmd_buf)
 {
        ecosflash_flash_bank_t *info = bank->driver_priv;
        int i;
@@ -399,10 +389,10 @@ static void command(flash_bank_t *bank, u8 cmd, u8 *cmd_buf)
 #endif
 
 #if 0
-static u32 ecosflash_address(struct flash_bank_s *bank, u32 address)
+static uint32_t ecosflash_address(struct flash_bank_s *bank, uint32_t address)
 {
-       u32 retval = 0;
-       switch(bank->bus_width)
+       uint32_t retval = 0;
+       switch (bank->bus_width)
        {
                case 4:
                        retval = address & 0xfffffffc;
@@ -418,9 +408,9 @@ static u32 ecosflash_address(struct flash_bank_s *bank, u32 address)
 
 static int ecosflash_erase(struct flash_bank_s *bank, int first, int last)
 {
-       struct flash_bank_s *c=bank;
+       struct flash_bank_s *c = bank;
        ecosflash_flash_bank_t *info = bank->driver_priv;
-       return eCosBoard_erase(info, c->base+first*sectorSize, sectorSize*(last-first+1));
+       return eCosBoard_erase(info, c->base + first*sectorSize, sectorSize*(last-first + 1));
 }
 
 static int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int last)
@@ -428,11 +418,11 @@ static int ecosflash_protect(struct flash_bank_s *bank, int set, int first, int
        return ERROR_OK;
 }
 
-static int ecosflash_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count)
+static int ecosflash_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
 {
        ecosflash_flash_bank_t *info = bank->driver_priv;
-       struct flash_bank_s *c=bank;
-       return eCosBoard_flash(info, buffer, c->base+offset, count);
+       struct flash_bank_s *c = bank;
+       return eCosBoard_flash(info, buffer, c->base + offset, count);
 }
 
 static int ecosflash_protect_check(struct flash_bank_s *bank)
@@ -448,7 +438,7 @@ static int ecosflash_info(struct flash_bank_s *bank, char *buf, int buf_size)
 }
 
 #if 0
-static u32 ecosflash_get_flash_status(flash_bank_t *bank)
+static uint32_t ecosflash_get_flash_status(flash_bank_t *bank)
 {
        return ERROR_OK;
 }
@@ -458,7 +448,7 @@ static void ecosflash_set_flash_mode(flash_bank_t *bank,int mode)
 
 }
 
-static u32 ecosflash_wait_status_busy(flash_bank_t *bank, u32 waitbits, int timeout)
+static uint32_t ecosflash_wait_status_busy(flash_bank_t *bank, uint32_t waitbits, int timeout)
 {
        return ERROR_OK;
 }