#include "arm966e.h"
-static u32 bank1start = 0x00080000;
+static uint32_t bank1start = 0x00080000;
static int str9x_register_commands(struct command_context_s *cmd_ctx);
static int str9x_flash_bank_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);
static int str9x_erase(struct flash_bank_s *bank, int first, int last);
static int str9x_protect(struct flash_bank_s *bank, int set, int first, int last);
-static int str9x_write(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count);
+static int str9x_write(struct flash_bank_s *bank, uint8_t *buffer, uint32_t offset, uint32_t count);
static int str9x_probe(struct flash_bank_s *bank);
//static int str9x_handle_part_id_command(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc);
static int str9x_protect_check(struct flash_bank_s *bank);
int i;
int num_sectors;
int b0_sectors = 0, b1_sectors = 0;
- u32 offset = 0;
+ uint32_t offset = 0;
/* set if we have large flash str9 */
str9x_info->variant = 0;
bank->num_sectors = num_sectors;
bank->sectors = malloc(sizeof(flash_sector_t) * num_sectors);
- str9x_info->sector_bits = malloc(sizeof(u32) * num_sectors);
+ str9x_info->sector_bits = malloc(sizeof(uint32_t) * num_sectors);
num_sectors = 0;
offset += bank->sectors[i].size;
bank->sectors[num_sectors].is_erased = -1;
bank->sectors[num_sectors].is_protected = 1;
- str9x_info->sector_bits[num_sectors++] = (1<<i);
+ str9x_info->sector_bits[num_sectors++] = (1 << i);
}
for (i = 0; i < b1_sectors; i++)
bank->sectors[num_sectors].is_erased = -1;
bank->sectors[num_sectors].is_protected = 1;
if (str9x_info->variant)
- str9x_info->sector_bits[num_sectors++] = (1<<i);
+ str9x_info->sector_bits[num_sectors++] = (1 << i);
else
- str9x_info->sector_bits[num_sectors++] = (1<<(i+8));
+ str9x_info->sector_bits[num_sectors++] = (1 << (i+8));
}
return ERROR_OK;
target_t *target = bank->target;
int i;
- u32 adr;
- u32 status = 0;
- u16 hstatus = 0;
+ uint32_t adr;
+ uint32_t status = 0;
+ uint16_t hstatus = 0;
if (bank->target->state != TARGET_HALTED)
{
if (str9x_info->bank1)
{
adr = bank1start + 0x18;
- if ((retval=target_write_u16(target, adr, 0x90))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u16(target, adr, &hstatus))!=ERROR_OK)
+ if ((retval=target_read_u16(target, adr, &hstatus)) != ERROR_OK)
{
return retval;
}
else
{
adr = bank1start + 0x14;
- if ((retval=target_write_u16(target, adr, 0x90))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u32(target, adr, &status))!=ERROR_OK)
+ if ((retval=target_read_u32(target, adr, &status)) != ERROR_OK)
{
return retval;
}
else
{
adr = bank1start + 0x10;
- if ((retval=target_write_u16(target, adr, 0x90))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0x90)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_read_u16(target, adr, &hstatus))!=ERROR_OK)
+ if ((retval=target_read_u16(target, adr, &hstatus)) != ERROR_OK)
{
return retval;
}
}
/* read array command */
- if ((retval=target_write_u16(target, adr, 0xFF))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0xFF)) != ERROR_OK)
{
return retval;
}
{
target_t *target = bank->target;
int i;
- u32 adr;
- u8 status;
- u8 erase_cmd;
+ uint32_t adr;
+ uint8_t status;
+ uint8_t erase_cmd;
if (bank->target->state != TARGET_HALTED)
{
adr = bank->base + bank->sectors[i].offset;
/* erase sectors */
- if ((retval=target_write_u16(target, adr, erase_cmd))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, erase_cmd)) != ERROR_OK)
{
return retval;
}
- if ((retval=target_write_u16(target, adr, 0xD0))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0xD0)) != ERROR_OK)
{
return retval;
}
/* get status */
- if ((retval=target_write_u16(target, adr, 0x70))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0x70)) != ERROR_OK)
{
return retval;
}
int timeout;
for (timeout=0; timeout<1000; timeout++) {
- if ((retval=target_read_u8(target, adr, &status))!=ERROR_OK)
+ if ((retval=target_read_u8(target, adr, &status)) != ERROR_OK)
{
return retval;
}
- if( status & 0x80 )
+ if ( status & 0x80 )
break;
alive_sleep(1);
}
}
/* clear status, also clear read array */
- if ((retval=target_write_u16(target, adr, 0x50))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0x50)) != ERROR_OK)
{
return retval;
}
/* read array command */
- if ((retval=target_write_u16(target, adr, 0xFF))!=ERROR_OK)
+ if ((retval=target_write_u16(target, adr, 0xFF)) != ERROR_OK)
{
return retval;
}
- if( status & 0x22 )
+ if ( status & 0x22 )
{
LOG_ERROR("error erasing flash bank, status: 0x%x", status);
return ERROR_FLASH_OPERATION_FAILED;
{
target_t *target = bank->target;
int i;
- u32 adr;
- u8 status;
+ uint32_t adr;
+ uint8_t status;
if (bank->target->state != TARGET_HALTED)
{
adr = bank->base + bank->sectors[i].offset;
target_write_u16(target, adr, 0x60);
- if( set )
+ if ( set )
target_write_u16(target, adr, 0x01);
else
target_write_u16(target, adr, 0xD0);
}
static int str9x_write_block(struct flash_bank_s *bank,
- u8 *buffer, u32 offset, u32 count)
+ uint8_t *buffer, uint32_t offset, uint32_t count)
{
str9x_flash_bank_t *str9x_info = bank->driver_priv;
target_t *target = bank->target;
- u32 buffer_size = 8192;
+ uint32_t buffer_size = 8192;
working_area_t *source;
- u32 address = bank->base + offset;
+ uint32_t address = bank->base + offset;
reg_param_t reg_params[4];
armv4_5_algorithm_t armv4_5_info;
int retval = ERROR_OK;
- u32 str9x_flash_write_code[] = {
+ uint32_t str9x_flash_write_code[] = {
/* write: */
0xe3c14003, /* bic r4, r1, #3 */
0xe3a03040, /* mov r3, #0x40 */
return ERROR_TARGET_RESOURCE_NOT_AVAILABLE;
};
- target_write_buffer(target, str9x_info->write_algorithm->address, 19 * 4, (u8*)str9x_flash_write_code);
+ target_write_buffer(target, str9x_info->write_algorithm->address, 19 * 4, (uint8_t*)str9x_flash_write_code);
/* memory buffer */
while (target_alloc_working_area(target, buffer_size, &source) != ERROR_OK)
while (count > 0)
{
- u32 thisrun_count = (count > (buffer_size / 2)) ? (buffer_size / 2) : count;
+ uint32_t thisrun_count = (count > (buffer_size / 2)) ? (buffer_size / 2) : count;
target_write_buffer(target, source->address, thisrun_count * 2, buffer);
}
static int str9x_write(struct flash_bank_s *bank,
- u8 *buffer, u32 offset, u32 count)
+ uint8_t *buffer, uint32_t offset, uint32_t count)
{
target_t *target = bank->target;
- u32 words_remaining = (count / 2);
- u32 bytes_remaining = (count & 0x00000001);
- u32 address = bank->base + offset;
- u32 bytes_written = 0;
- u8 status;
+ uint32_t words_remaining = (count / 2);
+ uint32_t bytes_remaining = (count & 0x00000001);
+ uint32_t address = bank->base + offset;
+ uint32_t bytes_written = 0;
+ uint8_t status;
int retval;
- u32 check_address = offset;
- u32 bank_adr;
+ uint32_t check_address = offset;
+ uint32_t bank_adr;
int i;
if (bank->target->state != TARGET_HALTED)
if (offset & 0x1)
{
- LOG_WARNING("offset 0x%x breaks required 2-byte alignment", offset);
+ LOG_WARNING("offset 0x%" PRIx32 " breaks required 2-byte alignment", offset);
return ERROR_FLASH_DST_BREAKS_ALIGNMENT;
}
for (i = 0; i < bank->num_sectors; i++)
{
- u32 sec_start = bank->sectors[i].offset;
- u32 sec_end = sec_start + bank->sectors[i].size;
+ uint32_t sec_start = bank->sectors[i].offset;
+ uint32_t sec_end = sec_start + bank->sectors[i].size;
/* check if destination falls within the current sector */
if ((check_address >= sec_start) && (check_address < sec_end))
for (timeout=0; timeout<1000; timeout++)
{
target_read_u8(target, bank_adr, &status);
- if( status & 0x80 )
+ if ( status & 0x80 )
break;
alive_sleep(1);
}
if (bytes_remaining)
{
- u8 last_halfword[2] = {0xff, 0xff};
+ uint8_t last_halfword[2] = {0xff, 0xff};
int i = 0;
- while(bytes_remaining > 0)
+ while (bytes_remaining > 0)
{
last_halfword[i++] = *(buffer + bytes_written);
bytes_remaining--;
for (timeout=0; timeout<1000; timeout++)
{
target_read_u8(target, bank_adr, &status);
- if( status & 0x80 )
+ if ( status & 0x80 )
break;
alive_sleep(1);
}