Skip to content
Snippets Groups Projects
Commit 64ece848 authored by Steve Rae's avatar Steve Rae Committed by Tom Rini
Browse files

fastboot: sparse: remove session-id logic


This "session-id" alogrithm is not required, and currently corrupts
the stored image whenever more the one "session" is required.

Signed-off-by: default avatarSteve Rae <srae@broadcom.com>
parent ac6e5fed
No related branches found
No related tags found
No related merge requests found
...@@ -97,9 +97,8 @@ static void write_raw_image(struct blk_desc *dev_desc, disk_partition_t *info, ...@@ -97,9 +97,8 @@ static void write_raw_image(struct blk_desc *dev_desc, disk_partition_t *info,
fastboot_okay(response_str, ""); fastboot_okay(response_str, "");
} }
void fb_mmc_flash_write(const char *cmd, unsigned int session_id, void fb_mmc_flash_write(const char *cmd, void *download_buffer,
void *download_buffer, unsigned int download_bytes, unsigned int download_bytes, char *response)
char *response)
{ {
struct blk_desc *dev_desc; struct blk_desc *dev_desc;
disk_partition_t info; disk_partition_t info;
...@@ -153,8 +152,7 @@ void fb_mmc_flash_write(const char *cmd, unsigned int session_id, ...@@ -153,8 +152,7 @@ void fb_mmc_flash_write(const char *cmd, unsigned int session_id,
printf("Flashing sparse image at offset " LBAFU "\n", printf("Flashing sparse image at offset " LBAFU "\n",
info.start); info.start);
store_sparse_image(&sparse, &sparse_priv, session_id, store_sparse_image(&sparse, &sparse_priv, download_buffer);
download_buffer);
} else { } else {
write_raw_image(dev_desc, &info, cmd, download_buffer, write_raw_image(dev_desc, &info, cmd, download_buffer,
download_bytes); download_bytes);
......
...@@ -126,7 +126,7 @@ static int fb_nand_sparse_write(struct sparse_storage *storage, ...@@ -126,7 +126,7 @@ static int fb_nand_sparse_write(struct sparse_storage *storage,
return written / storage->block_sz; return written / storage->block_sz;
} }
void fb_nand_flash_write(const char *partname, unsigned int session_id, void fb_nand_flash_write(const char *partname,
void *download_buffer, unsigned int download_bytes, void *download_buffer, unsigned int download_bytes,
char *response) char *response)
{ {
...@@ -161,7 +161,7 @@ void fb_nand_flash_write(const char *partname, unsigned int session_id, ...@@ -161,7 +161,7 @@ void fb_nand_flash_write(const char *partname, unsigned int session_id,
sparse.name = part->name; sparse.name = part->name;
sparse.write = fb_nand_sparse_write; sparse.write = fb_nand_sparse_write;
ret = store_sparse_image(&sparse, &sparse_priv, session_id, ret = store_sparse_image(&sparse, &sparse_priv,
download_buffer); download_buffer);
} else { } else {
printf("Flashing raw image at offset 0x%llx\n", printf("Flashing raw image at offset 0x%llx\n",
......
...@@ -52,8 +52,6 @@ typedef struct sparse_buffer { ...@@ -52,8 +52,6 @@ typedef struct sparse_buffer {
u16 type; u16 type;
} sparse_buffer_t; } sparse_buffer_t;
static uint32_t last_offset;
static unsigned int sparse_get_chunk_data_size(sparse_header_t *sparse, static unsigned int sparse_get_chunk_data_size(sparse_header_t *sparse,
chunk_header_t *chunk) chunk_header_t *chunk)
{ {
...@@ -267,8 +265,8 @@ static void sparse_put_data_buffer(sparse_buffer_t *buffer) ...@@ -267,8 +265,8 @@ static void sparse_put_data_buffer(sparse_buffer_t *buffer)
free(buffer); free(buffer);
} }
int store_sparse_image(sparse_storage_t *storage, void *storage_priv, int store_sparse_image(sparse_storage_t *storage,
unsigned int session_id, void *data) void *storage_priv, void *data)
{ {
unsigned int chunk, offset; unsigned int chunk, offset;
sparse_header_t *sparse_header; sparse_header_t *sparse_header;
...@@ -303,19 +301,10 @@ int store_sparse_image(sparse_storage_t *storage, void *storage_priv, ...@@ -303,19 +301,10 @@ int store_sparse_image(sparse_storage_t *storage, void *storage_priv,
return -EINVAL; return -EINVAL;
} }
/* puts("Flashing Sparse Image\n");
* If it's a new flashing session, start at the beginning of
* the partition. If not, then simply resume where we were.
*/
if (session_id > 0)
start = last_offset;
else
start = storage->start;
printf("Flashing sparse image on partition %s at offset 0x%x (ID: %d)\n",
storage->name, start * storage->block_sz, session_id);
/* Start processing chunks */ /* Start processing chunks */
start = storage->start;
for (chunk = 0; chunk < sparse_header->total_chunks; chunk++) { for (chunk = 0; chunk < sparse_header->total_chunks; chunk++) {
uint32_t blkcnt; uint32_t blkcnt;
...@@ -390,7 +379,5 @@ int store_sparse_image(sparse_storage_t *storage, void *storage_priv, ...@@ -390,7 +379,5 @@ int store_sparse_image(sparse_storage_t *storage, void *storage_priv,
return -EIO; return -EIO;
} }
last_offset = start + total_blocks;
return 0; return 0;
} }
...@@ -59,7 +59,6 @@ static inline struct f_fastboot *func_to_fastboot(struct usb_function *f) ...@@ -59,7 +59,6 @@ static inline struct f_fastboot *func_to_fastboot(struct usb_function *f)
} }
static struct f_fastboot *fastboot_func; static struct f_fastboot *fastboot_func;
static unsigned int fastboot_flash_session_id;
static unsigned int download_size; static unsigned int download_size;
static unsigned int download_bytes; static unsigned int download_bytes;
...@@ -424,15 +423,6 @@ static void cb_getvar(struct usb_ep *ep, struct usb_request *req) ...@@ -424,15 +423,6 @@ static void cb_getvar(struct usb_ep *ep, struct usb_request *req)
sprintf(str_num, "0x%08x", CONFIG_FASTBOOT_BUF_SIZE); sprintf(str_num, "0x%08x", CONFIG_FASTBOOT_BUF_SIZE);
strncat(response, str_num, chars_left); strncat(response, str_num, chars_left);
/*
* This also indicates the start of a new flashing
* "session", in which we could have 1-N buffers to
* write to a partition.
*
* Reset our session counter.
*/
fastboot_flash_session_id = 0;
} else if (!strcmp_l1("serialno", cmd)) { } else if (!strcmp_l1("serialno", cmd)) {
s = getenv("serial#"); s = getenv("serial#");
if (s) if (s)
...@@ -600,16 +590,14 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req) ...@@ -600,16 +590,14 @@ static void cb_flash(struct usb_ep *ep, struct usb_request *req)
strcpy(response, "FAILno flash device defined"); strcpy(response, "FAILno flash device defined");
#ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV #ifdef CONFIG_FASTBOOT_FLASH_MMC_DEV
fb_mmc_flash_write(cmd, fastboot_flash_session_id, fb_mmc_flash_write(cmd, (void *)CONFIG_FASTBOOT_BUF_ADDR,
(void *)CONFIG_FASTBOOT_BUF_ADDR,
download_bytes, response); download_bytes, response);
#endif #endif
#ifdef CONFIG_FASTBOOT_FLASH_NAND_DEV #ifdef CONFIG_FASTBOOT_FLASH_NAND_DEV
fb_nand_flash_write(cmd, fastboot_flash_session_id, fb_nand_flash_write(cmd,
(void *)CONFIG_FASTBOOT_BUF_ADDR, (void *)CONFIG_FASTBOOT_BUF_ADDR,
download_bytes, response); download_bytes, response);
#endif #endif
fastboot_flash_session_id++;
fastboot_tx_write_str(response); fastboot_tx_write_str(response);
} }
#endif #endif
......
...@@ -4,7 +4,6 @@ ...@@ -4,7 +4,6 @@
* SPDX-License-Identifier: GPL-2.0+ * SPDX-License-Identifier: GPL-2.0+
*/ */
void fb_mmc_flash_write(const char *cmd, unsigned int session_id, void fb_mmc_flash_write(const char *cmd, void *download_buffer,
void *download_buffer, unsigned int download_bytes, unsigned int download_bytes, char *response);
char *response);
void fb_mmc_erase(const char *cmd, char *response); void fb_mmc_erase(const char *cmd, char *response);
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
* SPDX-License-Identifier: GPL-2.0+ * SPDX-License-Identifier: GPL-2.0+
*/ */
void fb_nand_flash_write(const char *cmd, unsigned int session_id, void fb_nand_flash_write(const char *cmd, void *download_buffer,
void *download_buffer, unsigned int download_bytes, unsigned int download_bytes, char *response);
char *response);
void fb_nand_erase(const char *cmd, char *response); void fb_nand_erase(const char *cmd, char *response);
...@@ -32,4 +32,4 @@ static inline int is_sparse_image(void *buf) ...@@ -32,4 +32,4 @@ static inline int is_sparse_image(void *buf)
} }
int store_sparse_image(sparse_storage_t *storage, void *storage_priv, int store_sparse_image(sparse_storage_t *storage, void *storage_priv,
unsigned int session_id, void *data); void *data);
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment