uint32_t ioconfig_base;
uint32_t bank_num;
uint32_t max_spi_clock_mhz;
- struct flash_device *dev;
+ const struct flash_device *dev;
};
struct lpcspifi_target {
uint32_t ioconfig_base; /* base address for the port word pin registers */
};
-static struct lpcspifi_target target_devices[] = {
+static const struct lpcspifi_target target_devices[] = {
/* name, tap_idcode, spifi_base, ssp_base, io_base, ioconfig_base */
{ "LPC43xx/18xx", 0x4ba00477, 0x14000000, 0x40083000, 0x400F4000, 0x40086000 },
{ NULL, 0, 0, 0, 0, 0 }
return ERROR_OK;
}
-static int lpcspifi_write(struct flash_bank *bank, uint8_t *buffer,
+static int lpcspifi_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
uint32_t ssp_base = lpcspifi_info->ssp_base;
uint32_t io_base = lpcspifi_info->io_base;
uint32_t value;
+ uint8_t id_buf[3] = {0, 0, 0};
int retval;
if (target->state != TARGET_HALTED) {
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)
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)
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;
}
uint32_t ioconfig_base;
struct flash_sector *sectors;
uint32_t id = 0; /* silence uninitialized warning */
- struct lpcspifi_target *target_device;
+ const struct lpcspifi_target *target_device;
int retval;
/* If we've already probed, we should be fine to skip this time. */
return retval;
lpcspifi_info->dev = NULL;
- for (struct flash_device *p = flash_devices; p->name ; p++)
+ for (const struct flash_device *p = flash_devices; p->name ; p++)
if (p->device_id == id) {
lpcspifi_info->dev = p;
break;