[efm32] Formatting fixes

This commit is contained in:
Richard Meadows 2015-11-14 14:55:43 +00:00
parent b678b83062
commit fa7cccff23
4 changed files with 103 additions and 101 deletions

View File

@ -92,3 +92,4 @@ include/version.h: FORCE
$(Q)echo "#define FIRMWARE_VERSION \"`git describe --dirty`\"" > $@ $(Q)echo "#define FIRMWARE_VERSION \"`git describe --dirty`\"" > $@
-include *.d -include *.d

View File

@ -975,3 +975,4 @@ static void cortexm_hostio_reply(target *t, int32_t retcode, uint32_t errcode)
target_regs_write(t, arm_regs); target_regs_write(t, arm_regs);
priv->errno = errcode; priv->errno = errcode;
} }

View File

@ -49,7 +49,7 @@
static int efm32_flash_erase(struct target_flash *t, uint32_t addr, size_t len); static int efm32_flash_erase(struct target_flash *t, uint32_t addr, size_t len);
static int efm32_flash_write(struct target_flash *f, static int efm32_flash_write(struct target_flash *f,
uint32_t dest, const void *src, size_t len); uint32_t dest, const void *src, size_t len);
static const uint16_t efm32_flash_write_stub[] = { static const uint16_t efm32_flash_write_stub[] = {
#include "../flashstub/efm32.stub" #include "../flashstub/efm32.stub"
@ -70,18 +70,18 @@ const struct command_s efm32_cmd_list[] = {
/* Memory System Controller (MSC) Registers */ /* Memory System Controller (MSC) Registers */
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
#define EFM32_MSC 0x400c0000 #define EFM32_MSC 0x400c0000
#define EFM32_MSC_WRITECTRL (EFM32_MSC+0x008) #define EFM32_MSC_WRITECTRL (EFM32_MSC+0x008)
#define EFM32_MSC_WRITECMD (EFM32_MSC+0x00c) #define EFM32_MSC_WRITECMD (EFM32_MSC+0x00c)
#define EFM32_MSC_ADDRB (EFM32_MSC+0x010) #define EFM32_MSC_ADDRB (EFM32_MSC+0x010)
#define EFM32_MSC_WDATA (EFM32_MSC+0x018) #define EFM32_MSC_WDATA (EFM32_MSC+0x018)
#define EFM32_MSC_STATUS (EFM32_MSC+0x01c) #define EFM32_MSC_STATUS (EFM32_MSC+0x01c)
#define EFM32_MSC_LOCK (EFM32_MSC+0x03c) #define EFM32_MSC_LOCK (EFM32_MSC+0x03c)
#define EFM32_MSC_CMD (EFM32_MSC+0x040) #define EFM32_MSC_CMD (EFM32_MSC+0x040)
#define EFM32_MSC_TIMEBASE (EFM32_MSC+0x050) #define EFM32_MSC_TIMEBASE (EFM32_MSC+0x050)
#define EFM32_MSC_MASSLOCK (EFM32_MSC+0x054) #define EFM32_MSC_MASSLOCK (EFM32_MSC+0x054)
#define EFM32_MSC_LOCK_LOCKKEY 0x1b71 #define EFM32_MSC_LOCK_LOCKKEY 0x1b71
#define EFM32_MSC_MASSLOCK_LOCKKEY 0x631a #define EFM32_MSC_MASSLOCK_LOCKKEY 0x631a
#define EFM32_MSC_WRITECMD_LADDRIM (1<<0) #define EFM32_MSC_WRITECMD_LADDRIM (1<<0)
@ -169,14 +169,14 @@ const struct command_s efm32_cmd_list[] = {
/* top 24 bits of eui */ /* top 24 bits of eui */
#define EFM32_DI_EUI_SILABS 0x000b57 #define EFM32_DI_EUI_SILABS 0x000b57
#define EFM32_DI_PART_FAMILY_GECKO 71 #define EFM32_DI_PART_FAMILY_GECKO 71
#define EFM32_DI_PART_FAMILY_GIANT_GECKO 72 #define EFM32_DI_PART_FAMILY_GIANT_GECKO 72
#define EFM32_DI_PART_FAMILY_TINY_GECKO 73 #define EFM32_DI_PART_FAMILY_TINY_GECKO 73
#define EFM32_DI_PART_FAMILY_LEOPARD_GECKO 74 #define EFM32_DI_PART_FAMILY_LEOPARD_GECKO 74
#define EFM32_DI_PART_FAMILY_WONDER_GECKO 75 #define EFM32_DI_PART_FAMILY_WONDER_GECKO 75
#define EFM32_DI_PART_FAMILY_ZERO_GECKO 76 #define EFM32_DI_PART_FAMILY_ZERO_GECKO 76
#define EFM32_DI_PART_FAMILY_EZR_WONDER_GECKO 120 #define EFM32_DI_PART_FAMILY_EZR_WONDER_GECKO 120
#define EFM32_DI_PART_FAMILY_EZR_LEOPARD_GECKO 121 #define EFM32_DI_PART_FAMILY_EZR_LEOPARD_GECKO 121
/* -------------------------------------------------------------------------- */ /* -------------------------------------------------------------------------- */
/* Helper functions */ /* Helper functions */
@ -185,56 +185,56 @@ const struct command_s efm32_cmd_list[] = {
/** /**
* Reads the EFM32 Extended Unique Identifier * Reads the EFM32 Extended Unique Identifier
*/ */
uint64_t efm32_read_eui(target *t) uint64_t efm32_read_eui(target *t)
{ {
uint64_t eui; uint64_t eui;
eui = (uint64_t)target_mem_read32(t, EFM32_DI_EUI64_1) << 32; eui = (uint64_t)target_mem_read32(t, EFM32_DI_EUI64_1) << 32;
eui |= (uint64_t)target_mem_read32(t, EFM32_DI_EUI64_0) << 0; eui |= (uint64_t)target_mem_read32(t, EFM32_DI_EUI64_0) << 0;
return eui; return eui;
} }
/** /**
* Reads the EFM32 flash size in kiB * Reads the EFM32 flash size in kiB
*/ */
uint16_t efm32_read_flash_size(target *t) uint16_t efm32_read_flash_size(target *t)
{ {
return target_mem_read16(t, EFM32_DI_MEM_INFO_FLASH); return target_mem_read16(t, EFM32_DI_MEM_INFO_FLASH);
} }
/** /**
* Reads the EFM32 RAM size in kiB * Reads the EFM32 RAM size in kiB
*/ */
uint16_t efm32_read_ram_size(target *t) uint16_t efm32_read_ram_size(target *t)
{ {
return target_mem_read16(t, EFM32_DI_MEM_INFO_RAM); return target_mem_read16(t, EFM32_DI_MEM_INFO_RAM);
} }
/** /**
* Reads the EFM32 Part Number * Reads the EFM32 Part Number
*/ */
uint16_t efm32_read_part_number(target *t) uint16_t efm32_read_part_number(target *t)
{ {
return target_mem_read16(t, EFM32_DI_PART_NUMBER); return target_mem_read16(t, EFM32_DI_PART_NUMBER);
} }
/** /**
* Reads the EFM32 Part Family * Reads the EFM32 Part Family
*/ */
uint8_t efm32_read_part_family(target *t) uint8_t efm32_read_part_family(target *t)
{ {
return target_mem_read8(t, EFM32_DI_PART_FAMILY); return target_mem_read8(t, EFM32_DI_PART_FAMILY);
} }
/** /**
* Reads the EFM32 Radio part number (EZR parts only) * Reads the EFM32 Radio part number (EZR parts only)
*/ */
uint16_t efm32_read_radio_part_number(target *t) uint16_t efm32_read_radio_part_number(target *t)
{ {
return target_mem_read16(t, EFM32_DI_RADIO_OPN); return target_mem_read16(t, EFM32_DI_RADIO_OPN);
} }
static void efm32_add_flash(target *t, uint32_t addr, size_t length, static void efm32_add_flash(target *t, uint32_t addr, size_t length,
size_t page_size) size_t page_size)
{ {
struct target_flash *f = calloc(1, sizeof(*f)); struct target_flash *f = calloc(1, sizeof(*f));
f->start = addr; f->start = addr;
@ -251,85 +251,85 @@ static void efm32_add_flash(target *t, uint32_t addr, size_t length,
char variant_string[40]; char variant_string[40];
bool efm32_probe(target *t) bool efm32_probe(target *t)
{ {
/* Read the extended unique identifier */ /* Read the extended unique identifier */
uint64_t eui = efm32_read_eui(t); uint64_t eui = efm32_read_eui(t);
/* /\* Check top 24 bits of eui are silabs *\/ */ /* /\* Check top 24 bits of eui are silabs *\/ */
if (((eui >> 40) & 0xFFFFFF) != EFM32_DI_EUI_SILABS) if (((eui >> 40) & 0xFFFFFF) != EFM32_DI_EUI_SILABS)
return false; return false;
/* Read the part number and family */ /* Read the part number and family */
uint16_t part_number = efm32_read_part_number(t); uint16_t part_number = efm32_read_part_number(t);
uint8_t part_family = efm32_read_part_family(t); uint8_t part_family = efm32_read_part_family(t);
uint16_t radio_number, radio_number_short; /* optional, for ezr parts */ uint16_t radio_number, radio_number_short; /* optional, for ezr parts */
uint32_t flash_page_size; uint16_t flash_kb; uint32_t flash_page_size; uint16_t flash_kb;
switch(part_family) { switch(part_family) {
case EFM32_DI_PART_FAMILY_GECKO: case EFM32_DI_PART_FAMILY_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Gecko"); "EFM32 Gecko");
flash_page_size = 512; flash_page_size = 512;
break; break;
case EFM32_DI_PART_FAMILY_GIANT_GECKO: case EFM32_DI_PART_FAMILY_GIANT_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Giant Gecko"); "EFM32 Giant Gecko");
flash_page_size = 2048; /* Could be 2048 or 4096, assume 2048 */ flash_page_size = 2048; /* Could be 2048 or 4096, assume 2048 */
break; break;
case EFM32_DI_PART_FAMILY_TINY_GECKO: case EFM32_DI_PART_FAMILY_TINY_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Tiny Gecko"); "EFM32 Tiny Gecko");
flash_page_size = 512; flash_page_size = 512;
break; break;
case EFM32_DI_PART_FAMILY_LEOPARD_GECKO: case EFM32_DI_PART_FAMILY_LEOPARD_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Leopard Gecko"); "EFM32 Leopard Gecko");
flash_page_size = 2048; /* Could be 2048 or 4096, assume 2048 */ flash_page_size = 2048; /* Could be 2048 or 4096, assume 2048 */
break; break;
case EFM32_DI_PART_FAMILY_WONDER_GECKO: case EFM32_DI_PART_FAMILY_WONDER_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Wonder Gecko"); "EFM32 Wonder Gecko");
flash_page_size = 2048; flash_page_size = 2048;
break; break;
case EFM32_DI_PART_FAMILY_ZERO_GECKO: case EFM32_DI_PART_FAMILY_ZERO_GECKO:
sprintf(variant_string, sprintf(variant_string,
"EFM32 Zero Gecko"); "EFM32 Zero Gecko");
flash_page_size = 1024; flash_page_size = 1024;
break; break;
case EFM32_DI_PART_FAMILY_EZR_WONDER_GECKO: case EFM32_DI_PART_FAMILY_EZR_WONDER_GECKO:
radio_number = efm32_read_radio_part_number(t); /* on-chip radio */ radio_number = efm32_read_radio_part_number(t); /* on-chip radio */
radio_number_short = radio_number % 100; radio_number_short = radio_number % 100;
flash_kb = efm32_read_flash_size(t); flash_kb = efm32_read_flash_size(t);
sprintf(variant_string, sprintf(variant_string,
"EZR32WG%dF%dR%d (radio si%d)", "EZR32WG%dF%dR%d (radio si%d)",
part_number, flash_kb, part_number, flash_kb,
radio_number_short, radio_number); radio_number_short, radio_number);
flash_page_size = 2048; flash_page_size = 2048;
break; break;
case EFM32_DI_PART_FAMILY_EZR_LEOPARD_GECKO: case EFM32_DI_PART_FAMILY_EZR_LEOPARD_GECKO:
radio_number = efm32_read_radio_part_number(t); /* on-chip radio */ radio_number = efm32_read_radio_part_number(t); /* on-chip radio */
radio_number_short = radio_number % 100; radio_number_short = radio_number % 100;
flash_kb = efm32_read_flash_size(t); flash_kb = efm32_read_flash_size(t);
sprintf(variant_string, sprintf(variant_string,
"EZR32LG%dF%dR%d (radio si%d)", "EZR32LG%dF%dR%d (radio si%d)",
part_number, flash_kb, part_number, flash_kb,
radio_number_short, radio_number); radio_number_short, radio_number);
flash_page_size = 2048; flash_page_size = 2048;
break; break;
default: /* Unknown family */ default: /* Unknown family */
return false; return false;
} }
/* Read memory sizes, convert to bytes */ /* Read memory sizes, convert to bytes */
uint32_t flash_size = efm32_read_flash_size(t) * 0x400; uint32_t flash_size = efm32_read_flash_size(t) * 0x400;
uint32_t ram_size = efm32_read_ram_size(t) * 0x400; uint32_t ram_size = efm32_read_ram_size(t) * 0x400;
/* Setup Target */ /* Setup Target */
t->driver = variant_string; t->driver = variant_string;
gdb_outf("flash size %d page size %d\n", flash_size, flash_page_size); gdb_outf("flash size %d page size %d\n", flash_size, flash_page_size);
target_add_ram (t, SRAM_BASE, ram_size); target_add_ram (t, SRAM_BASE, ram_size);
efm32_add_flash(t, 0x00000000, flash_size, flash_page_size); efm32_add_flash(t, 0x00000000, flash_size, flash_page_size);
target_add_commands(t, efm32_cmd_list, "EFM32"); target_add_commands(t, efm32_cmd_list, "EFM32");
@ -344,8 +344,8 @@ static int efm32_flash_erase(struct target_flash *f, uint32_t addr, size_t len)
{ {
target *t = f->t; target *t = f->t;
/* Set WREN bit to enabel MSC write and erase functionality */ /* Set WREN bit to enabel MSC write and erase functionality */
target_mem_write32(t, EFM32_MSC_WRITECTRL, 1); target_mem_write32(t, EFM32_MSC_WRITECTRL, 1);
while (len) { while (len) {
/* Write address of first word in row to erase it */ /* Write address of first word in row to erase it */
@ -372,14 +372,14 @@ static int efm32_flash_erase(struct target_flash *f, uint32_t addr, size_t len)
* Write flash page by page * Write flash page by page
*/ */
static int efm32_flash_write(struct target_flash *f, static int efm32_flash_write(struct target_flash *f,
uint32_t dest, const void *src, size_t len) uint32_t dest, const void *src, size_t len)
{ {
(void)len; (void)len;
target *t = f->t; target *t = f->t;
/* Write flashloader */ /* Write flashloader */
target_mem_write(t, SRAM_BASE, efm32_flash_write_stub, target_mem_write(t, SRAM_BASE, efm32_flash_write_stub,
sizeof(efm32_flash_write_stub)); sizeof(efm32_flash_write_stub));
/* Write Buffer */ /* Write Buffer */
target_mem_write(t, STUB_BUFFER_BASE, src, len); target_mem_write(t, STUB_BUFFER_BASE, src, len);
/* Run flashloader */ /* Run flashloader */
@ -393,9 +393,8 @@ static int efm32_flash_write(struct target_flash *f,
*/ */
static bool efm32_cmd_erase_all(target *t) static bool efm32_cmd_erase_all(target *t)
{ {
/* Set WREN bit to enabel MSC write and erase functionality */ /* Set WREN bit to enabel MSC write and erase functionality */
target_mem_write32(t, EFM32_MSC_WRITECTRL, 1); target_mem_write32(t, EFM32_MSC_WRITECTRL, 1);
/* Unlock mass erase */ /* Unlock mass erase */
target_mem_write32(t, EFM32_MSC_MASSLOCK, EFM32_MSC_MASSLOCK_LOCKKEY); target_mem_write32(t, EFM32_MSC_MASSLOCK, EFM32_MSC_MASSLOCK_LOCKKEY);
@ -422,8 +421,8 @@ static bool efm32_cmd_erase_all(target *t)
*/ */
static bool efm32_cmd_serial(target *t) static bool efm32_cmd_serial(target *t)
{ {
/* Read the extended unique identifier */ /* Read the extended unique identifier */
uint64_t eui = efm32_read_eui(t) & 0xFFFFFFFFFF; uint64_t eui = efm32_read_eui(t) & 0xFFFFFFFFFF;
/* Bottom 40 bits are unique number */ /* Bottom 40 bits are unique number */
gdb_outf("Unique Number: 0x%010llx\n", eui); gdb_outf("Unique Number: 0x%010llx\n", eui);

View File

@ -274,3 +274,4 @@ bool kinetis_probe(target *t);
bool efm32_probe(target *t); bool efm32_probe(target *t);
#endif #endif