X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Flpcspifi.c;h=7566c275f863e3a32209a126fa4cfbf1782f0a31;hp=757d6d1953155dc1ae391332646838175d457a1b;hb=32c4c18045599ddfed36f52b276166ce932b1bf7;hpb=516719b6b8ac35c14396f9a0cbdc355be4e45c10 diff --git a/src/flash/nor/lpcspifi.c b/src/flash/nor/lpcspifi.c index 757d6d1953..7566c275f8 100644 --- a/src/flash/nor/lpcspifi.c +++ b/src/flash/nor/lpcspifi.c @@ -15,7 +15,7 @@ * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the * * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. * ***************************************************************************/ #ifdef HAVE_CONFIG_H @@ -51,7 +51,7 @@ struct lpcspifi_flash_bank { 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 { @@ -63,7 +63,7 @@ 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 } @@ -182,7 +182,7 @@ static int lpcspifi_set_hw_mode(struct flash_bank *bank) }; armv7m_info.common_magic = ARMV7M_COMMON_MAGIC; - armv7m_info.core_mode = ARMV7M_MODE_ANY; + armv7m_info.core_mode = ARM_MODE_THREAD; LOG_DEBUG("Allocating working area for SPIFI init algorithm"); @@ -199,7 +199,7 @@ static int lpcspifi_set_hw_mode(struct flash_bank *bank) return retval; } - LOG_DEBUG("Writing algorithm to working area at 0x%08x", + LOG_DEBUG("Writing algorithm to working area at 0x%08" PRIx32, spifi_init_algorithm->address); /* Write algorithm to working area */ retval = target_write_buffer(target, @@ -519,7 +519,7 @@ static int lpcspifi_erase(struct flash_bank *bank, int first, int last) }; armv7m_info.common_magic = ARMV7M_COMMON_MAGIC; - armv7m_info.core_mode = ARMV7M_MODE_ANY; + armv7m_info.core_mode = ARM_MODE_THREAD; /* Get memory for spifi initialization algorithm */ @@ -715,7 +715,7 @@ static int lpcspifi_write(struct flash_bank *bank, uint8_t *buffer, LOG_WARNING("Working area size is limited; flash writes may be"\ " slow. Increase working area size to at least %zdB"\ " to reduce write times.", - sizeof(lpcspifi_flash_write_code) + page_size + (size_t)(sizeof(lpcspifi_flash_write_code) + page_size) ); else if (fifo_size > 0x2000) /* Beyond this point, we start to get diminishing returns */ fifo_size = 0x2000; @@ -726,7 +726,7 @@ static int lpcspifi_write(struct flash_bank *bank, uint8_t *buffer, }; armv7m_info.common_magic = ARMV7M_COMMON_MAGIC; - armv7m_info.core_mode = ARMV7M_MODE_ANY; + armv7m_info.core_mode = ARM_MODE_THREAD; init_reg_param(®_params[0], "r0", 32, PARAM_IN_OUT); /* buffer start, status (out) */ init_reg_param(®_params[1], "r1", 32, PARAM_OUT); /* buffer end */ @@ -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] = {0, 0, 0}; 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; } @@ -845,7 +848,7 @@ static int lpcspifi_probe(struct flash_bank *bank) 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. */ @@ -883,7 +886,7 @@ static int lpcspifi_probe(struct flash_bank *bank) 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; @@ -913,7 +916,7 @@ static int lpcspifi_probe(struct flash_bank *bank) sectors[sector].offset = sector * lpcspifi_info->dev->sectorsize; sectors[sector].size = lpcspifi_info->dev->sectorsize; sectors[sector].is_erased = -1; - sectors[sector].is_protected = 1; + sectors[sector].is_protected = 0; } bank->sectors = sectors; @@ -947,7 +950,7 @@ static int get_lpcspifi_info(struct flash_bank *bank, char *buf, int buf_size) } snprintf(buf, buf_size, "\nSPIFI flash information:\n" - " Device \'%s\' (ID 0x%08x)\n", + " Device \'%s\' (ID 0x%08" PRIx32 ")\n", lpcspifi_info->dev->name, lpcspifi_info->dev->device_id); return ERROR_OK;