aboutsummaryrefslogtreecommitdiff
path: root/src/flash
diff options
context:
space:
mode:
Diffstat (limited to 'src/flash')
-rw-r--r--src/flash/nor/lpcspifi.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/flash/nor/lpcspifi.c b/src/flash/nor/lpcspifi.c
index dc964b90..0400dd74 100644
--- a/src/flash/nor/lpcspifi.c
+++ b/src/flash/nor/lpcspifi.c
@@ -774,6 +774,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
uint32_t ssp_base = lpcspifi_info->ssp_base;
uint32_t io_base = lpcspifi_info->io_base;
uint32_t value;
+ uint8_t id_buf[3];
int retval;
if (target->state != TARGET_HALTED) {
@@ -808,7 +809,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
if (retval == ERROR_OK)
retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
if (retval == ERROR_OK)
- ((uint8_t *)id)[0] = value;
+ id_buf[0] = value;
/* Dummy write to clock in data */
if (retval == ERROR_OK)
@@ -818,7 +819,7 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
if (retval == ERROR_OK)
retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
if (retval == ERROR_OK)
- ((uint8_t *)id)[1] = value;
+ id_buf[1] = value;
/* Dummy write to clock in data */
if (retval == ERROR_OK)
@@ -828,10 +829,12 @@ static int lpcspifi_read_flash_id(struct flash_bank *bank, uint32_t *id)
if (retval == ERROR_OK)
retval = ssp_read_reg(target, ssp_base, SSP_DATA, &value);
if (retval == ERROR_OK)
- ((uint8_t *)id)[2] = value;
+ id_buf[2] = value;
if (retval == ERROR_OK)
retval = ssp_setcs(target, io_base, 1);
+ if (retval == ERROR_OK)
+ *id = id_buf[2] << 16 | id_buf[1] << 8 | id_buf[0];
return retval;
}