Commit 565f8481 authored by Andreas Fritiofson's avatar Andreas Fritiofson Committed by Spencer Oliver
Browse files

flash: Constify write buffer



Change-Id: Ic812098d3ed5a2992c26bb57d08ae350e2c5d5d8
Signed-off-by: default avatarAndreas Fritiofson <andreas.fritiofson@gmail.com>
Reviewed-on: http://openocd.zylin.com/2040


Tested-by: jenkins
Reviewed-by: default avatarSpencer Oliver <spen@spen-soft.co.uk>
parent cd091c36
......@@ -144,7 +144,7 @@ static int aduc702x_protect(struct flash_bank *bank, int set, int first, int las
* Caller should not check for other return values specifically
*/
static int aduc702x_write_block(struct flash_bank *bank,
uint8_t *buffer,
const uint8_t *buffer,
uint32_t offset,
uint32_t count)
{
......@@ -285,7 +285,7 @@ static int aduc702x_write_block(struct flash_bank *bank,
/* All-JTAG, single-access method. Very slow. Used only if there is no
* working area available. */
static int aduc702x_write_single(struct flash_bank *bank,
uint8_t *buffer,
const uint8_t *buffer,
uint32_t offset,
uint32_t count)
{
......@@ -326,7 +326,7 @@ static int aduc702x_write_single(struct flash_bank *bank,
return ERROR_OK;
}
static int aduc702x_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int aduc702x_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
int retval;
......
......@@ -3285,7 +3285,7 @@ static const uint8_t
0x00, 0xBE /* bkpt #0 */
};
static int sam3_page_write(struct sam3_bank_private *pPrivate, unsigned pagenum, uint8_t *buf)
static int sam3_page_write(struct sam3_bank_private *pPrivate, unsigned pagenum, const uint8_t *buf)
{
uint32_t adr;
uint32_t status;
......@@ -3344,7 +3344,7 @@ static int sam3_page_write(struct sam3_bank_private *pPrivate, unsigned pagenum,
}
static int sam3_write(struct flash_bank *bank,
uint8_t *buffer,
const uint8_t *buffer,
uint32_t offset,
uint32_t count)
{
......
......@@ -1877,7 +1877,7 @@ static int sam4_page_read(struct sam4_bank_private *pPrivate, unsigned pagenum,
return r;
}
static int sam4_page_write(struct sam4_bank_private *pPrivate, unsigned pagenum, uint8_t *buf)
static int sam4_page_write(struct sam4_bank_private *pPrivate, unsigned pagenum, const uint8_t *buf)
{
uint32_t adr;
uint32_t status;
......@@ -1939,7 +1939,7 @@ static int sam4_page_write(struct sam4_bank_private *pPrivate, unsigned pagenum,
}
static int sam4_write(struct flash_bank *bank,
uint8_t *buffer,
const uint8_t *buffer,
uint32_t offset,
uint32_t count)
{
......
......@@ -495,7 +495,7 @@ static int sam4l_erase(struct flash_bank *bank, int first, int last)
/* Write an entire page from host buffer 'buf' to page-aligned 'address' in the
* Flash. */
static int sam4l_write_page(struct sam4l_info *chip, struct target *target,
uint32_t address, uint8_t *buf)
uint32_t address, const uint8_t *buf)
{
int res;
......@@ -527,7 +527,7 @@ static int sam4l_write_page(struct sam4l_info *chip, struct target *target,
/* Write partial contents into page-aligned 'address' on the Flash from host
* buffer 'buf' by writing 'nb' of 'buf' at 'offset' into the Flash page. */
static int sam4l_write_page_partial(struct sam4l_info *chip,
struct flash_bank *bank, uint32_t address, uint8_t *buf,
struct flash_bank *bank, uint32_t address, const uint8_t *buf,
uint32_t page_offset, uint32_t nb)
{
int res;
......@@ -556,7 +556,7 @@ static int sam4l_write_page_partial(struct sam4l_info *chip,
return res;
}
static int sam4l_write(struct flash_bank *bank, uint8_t *buffer,
static int sam4l_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
int res;
......
......@@ -98,7 +98,7 @@
#define FLASH_SIZE_2048KB 14
static int at91sam7_protect_check(struct flash_bank *bank);
static int at91sam7_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset,
static int at91sam7_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset,
uint32_t count);
static uint32_t at91sam7_get_flash_status(struct target *target, int bank_number);
......@@ -954,7 +954,7 @@ static int at91sam7_protect(struct flash_bank *bank, int set, int first, int las
return ERROR_OK;
}
static int at91sam7_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int at91sam7_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
int retval;
struct at91sam7_flash_bank *at91sam7_info = bank->driver_priv;
......
......@@ -385,7 +385,7 @@ static int samd_erase(struct flash_bank *bank, int first, int last)
/* Write an entire row (four pages) from host buffer 'buf' to row-aligned
* 'address' in the Flash. */
static int samd_write_row(struct flash_bank *bank, uint32_t address,
uint8_t *buf)
const uint8_t *buf)
{
int res;
struct samd_info *chip = (struct samd_info *)bank->driver_priv;
......@@ -424,7 +424,7 @@ static int samd_write_row(struct flash_bank *bank, uint32_t address,
/* Write partial contents into row-aligned 'address' on the Flash from host
* buffer 'buf' by writing 'nb' of 'buf' at 'row_offset' into the Flash row. */
static int samd_write_row_partial(struct flash_bank *bank, uint32_t address,
uint8_t *buf, uint32_t row_offset, uint32_t nb)
const uint8_t *buf, uint32_t row_offset, uint32_t nb)
{
int res;
struct samd_info *chip = (struct samd_info *)bank->driver_priv;
......@@ -453,7 +453,7 @@ static int samd_write_row_partial(struct flash_bank *bank, uint32_t address,
return res;
}
static int samd_write(struct flash_bank *bank, uint8_t *buffer,
static int samd_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
int res;
......
......@@ -142,7 +142,7 @@ static int avr_jtagprg_chiperase(struct avr_common *avr)
}
static int avr_jtagprg_writeflashpage(struct avr_common *avr,
uint8_t *page_buf,
const uint8_t *page_buf,
uint32_t buf_size,
uint32_t addr,
uint32_t page_size)
......@@ -239,7 +239,7 @@ static int avrf_protect(struct flash_bank *bank, int set, int first, int last)
return ERROR_OK;
}
static int avrf_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int avrf_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
struct avr_common *avr = target->arch_info;
......
......@@ -1126,7 +1126,7 @@ static uint32_t cfi_command_val(struct flash_bank *bank, uint8_t cmd)
}
}
static int cfi_intel_write_block(struct flash_bank *bank, uint8_t *buffer,
static int cfi_intel_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t address, uint32_t count)
{
struct target *target = bank->target;
......@@ -1379,7 +1379,7 @@ cleanup:
return retval;
}
static int cfi_spansion_write_block_mips(struct flash_bank *bank, uint8_t *buffer,
static int cfi_spansion_write_block_mips(struct flash_bank *bank, const uint8_t *buffer,
uint32_t address, uint32_t count)
{
struct cfi_flash_bank *cfi_info = bank->driver_priv;
......@@ -1592,7 +1592,7 @@ static int cfi_spansion_write_block_mips(struct flash_bank *bank, uint8_t *buffe
return retval;
}
static int cfi_spansion_write_block(struct flash_bank *bank, uint8_t *buffer,
static int cfi_spansion_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t address, uint32_t count)
{
struct cfi_flash_bank *cfi_info = bank->driver_priv;
......@@ -2002,7 +2002,7 @@ static int cfi_intel_write_word(struct flash_bank *bank, uint8_t *word, uint32_t
return ERROR_OK;
}
static int cfi_intel_write_words(struct flash_bank *bank, uint8_t *word,
static int cfi_intel_write_words(struct flash_bank *bank, const uint8_t *word,
uint32_t wordcount, uint32_t address)
{
int retval;
......@@ -2122,7 +2122,7 @@ static int cfi_spansion_write_word(struct flash_bank *bank, uint8_t *word, uint3
return ERROR_OK;
}
static int cfi_spansion_write_words(struct flash_bank *bank, uint8_t *word,
static int cfi_spansion_write_words(struct flash_bank *bank, const uint8_t *word,
uint32_t wordcount, uint32_t address)
{
int retval;
......@@ -2215,7 +2215,7 @@ static int cfi_write_word(struct flash_bank *bank, uint8_t *word, uint32_t addre
return ERROR_FLASH_OPERATION_FAILED;
}
static int cfi_write_words(struct flash_bank *bank, uint8_t *word,
static int cfi_write_words(struct flash_bank *bank, const uint8_t *word,
uint32_t wordcount, uint32_t address)
{
struct cfi_flash_bank *cfi_info = bank->driver_priv;
......@@ -2312,7 +2312,7 @@ static int cfi_read(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, u
return ERROR_OK;
}
static int cfi_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int cfi_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
struct cfi_flash_bank *cfi_info = bank->driver_priv;
struct target *target = bank->target;
......
......@@ -137,7 +137,7 @@ struct flash_driver {
* @returns ERROR_OK if successful; otherwise, an error code.
*/
int (*write)(struct flash_bank *bank,
uint8_t *buffer, uint32_t offset, uint32_t count);
const uint8_t *buffer, uint32_t offset, uint32_t count);
/**
* Read data from the flash. Note CPU address will be
......
......@@ -156,7 +156,7 @@ static int dsp5680xx_flash_protect(struct flash_bank *bank, int set, int first,
*
* @return
*/
static int dsp5680xx_flash_write(struct flash_bank *bank, uint8_t * buffer,
static int dsp5680xx_flash_write(struct flash_bank *bank, const uint8_t* buffer,
uint32_t offset, uint32_t count)
{
int retval;
......
......@@ -98,7 +98,7 @@ struct efm32_info {
uint16_t page_size;
};
static int efm32x_write(struct flash_bank *bank, uint8_t *buffer,
static int efm32x_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count);
static int efm32x_get_flash_size(struct flash_bank *bank, uint16_t *flash_sz)
......@@ -499,7 +499,7 @@ static int efm32x_protect(struct flash_bank *bank, int set, int first, int last)
return ERROR_OK;
}
static int efm32x_write_block(struct flash_bank *bank, uint8_t *buf,
static int efm32x_write_block(struct flash_bank *bank, const uint8_t *buf,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......@@ -735,7 +735,7 @@ static int efm32x_write_word(struct flash_bank *bank, uint32_t addr,
return ERROR_OK;
}
static int efm32x_write(struct flash_bank *bank, uint8_t *buffer,
static int efm32x_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......
......@@ -455,7 +455,7 @@ static int em357_protect(struct flash_bank *bank, int set, int first, int last)
return em357_write_options(bank);
}
static int em357_write_block(struct flash_bank *bank, uint8_t *buffer,
static int em357_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......@@ -583,7 +583,7 @@ static int em357_write_block(struct flash_bank *bank, uint8_t *buffer,
return retval;
}
static int em357_write(struct flash_bank *bank, uint8_t *buffer,
static int em357_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......
......@@ -93,7 +93,7 @@ static int faux_protect(struct flash_bank *bank, int set, int first, int last)
return ERROR_OK;
}
static int faux_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int faux_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
struct faux_flash_bank *info = bank->driver_priv;
memcpy(info->memory + offset, buffer, count);
......
......@@ -347,7 +347,7 @@ static int fm3_erase(struct flash_bank *bank, int first, int last)
return retval;
}
static int fm3_write_block(struct flash_bank *bank, uint8_t *buffer,
static int fm3_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct fm3_flash_bank *fm3_info = bank->driver_priv;
......
......@@ -278,7 +278,7 @@ static const uint8_t kinetis_flash_write_code[] = {
};
/* Program LongWord Block Write */
static int kinetis_write_block(struct flash_bank *bank, uint8_t *buffer,
static int kinetis_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t wcount)
{
struct target *target = bank->target;
......@@ -586,7 +586,7 @@ static int kinetis_erase(struct flash_bank *bank, int first, int last)
return ERROR_OK;
}
static int kinetis_write(struct flash_bank *bank, uint8_t *buffer,
static int kinetis_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
unsigned int i, result, fallback = 0;
......
......@@ -711,7 +711,7 @@ static int lpc2000_protect(struct flash_bank *bank, int set, int first, int last
return ERROR_OK;
}
static int lpc2000_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int lpc2000_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......@@ -746,6 +746,7 @@ static int lpc2000_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offs
/* check if exception vectors should be flashed */
if ((offset == 0) && (count >= 0x20) && lpc2000_info->calc_checksum) {
assert(lpc2000_info->checksum_vector < 8);
uint32_t checksum = 0;
for (int i = 0; i < 8; i++) {
LOG_DEBUG("Vector 0x%2.2x: 0x%8.8" PRIx32, i * 4, buf_get_u32(buffer + (i * 4), 0, 32));
......@@ -763,7 +764,8 @@ static int lpc2000_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offs
"checksum.");
}
buf_set_u32(buffer + (lpc2000_info->checksum_vector * 4), 0, 32, checksum);
/* FIXME: WARNING! This code is broken because it modifies the callers buffer in place. */
buf_set_u32((uint8_t *)buffer + (lpc2000_info->checksum_vector * 4), 0, 32, checksum);
}
struct working_area *iap_working_area;
......
......@@ -277,7 +277,7 @@ static int lpc288x_erase(struct flash_bank *bank, int first, int last)
return ERROR_OK;
}
static int lpc288x_write(struct flash_bank *bank, uint8_t *buffer, uint32_t offset, uint32_t count)
static int lpc288x_write(struct flash_bank *bank, const uint8_t *buffer, uint32_t offset, uint32_t count)
{
uint8_t page_buffer[FLASH_PAGE_SIZE];
uint32_t status, source_offset, dest_offset;
......
......@@ -1058,7 +1058,7 @@ static int lpc2900_protect(struct flash_bank *bank, int set, int first, int last
* @param offset Start address (relative to bank start)
* @param count Number of bytes to be programmed
*/
static int lpc2900_write(struct flash_bank *bank, uint8_t *buffer,
static int lpc2900_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
uint8_t page[FLASH_PAGE_SIZE];
......@@ -1186,7 +1186,7 @@ static int lpc2900_write(struct flash_bank *bank, uint8_t *buffer,
/* Write to flash in large blocks */
while (count != 0) {
uint32_t this_npages;
uint8_t *this_buffer;
const uint8_t *this_buffer;
int start_sector = lpc2900_address2sector(bank, offset);
/* First page / last page / rest */
......
......@@ -581,7 +581,7 @@ static int lpcspifi_protect(struct flash_bank *bank, int set,
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;
......
......@@ -223,7 +223,7 @@ static int mdr_protect(struct flash_bank *bank, int set, int first, int last)
return ERROR_OK;
}
static int mdr_write_block(struct flash_bank *bank, uint8_t *buffer,
static int mdr_write_block(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......@@ -314,7 +314,7 @@ static int mdr_write_block(struct flash_bank *bank, uint8_t *buffer,
return retval;
}
static int mdr_write(struct flash_bank *bank, uint8_t *buffer,
static int mdr_write(struct flash_bank *bank, const uint8_t *buffer,
uint32_t offset, uint32_t count)
{
struct target *target = bank->target;
......@@ -345,7 +345,7 @@ static int mdr_write(struct flash_bank *bank, uint8_t *buffer,
LOG_INFO("odd number of bytes to write, padding with 0xff");
buffer = memcpy(new_buffer, buffer, count);
while (rem--)
buffer[count++] = 0xff;
new_buffer[count++] = 0xff;
}
uint32_t flash_cmd, cur_per_clock;
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment