Skip to content
Snippets Groups Projects
Commit 6fb77c48 authored by Maxime Ripard's avatar Maxime Ripard Committed by Tom Rini
Browse files

fastboot: nand: Add pre erase and write hooks


Some devices might need to do some per-partition initialization
(ECC/Randomizer settings change for example) before actually accessing it.

Add some hooks before the write and erase operations to let the boards
define what they need to do if needed.

Signed-off-by: default avatarMaxime Ripard <maxime.ripard@free-electrons.com>
Reviewed-by: default avatarTom Rini <trini@konsulko.com>
parent bf8940d3
No related branches found
No related tags found
No related merge requests found
...@@ -23,6 +23,16 @@ struct fb_nand_sparse { ...@@ -23,6 +23,16 @@ struct fb_nand_sparse {
struct part_info *part; struct part_info *part;
}; };
__weak int board_fastboot_erase_partition_setup(char *name)
{
return 0;
}
__weak int board_fastboot_write_partition_setup(char *name)
{
return 0;
}
static int fb_nand_lookup(const char *partname, char *response, static int fb_nand_lookup(const char *partname, char *response,
nand_info_t **nand, nand_info_t **nand,
struct part_info **part) struct part_info **part)
...@@ -134,6 +144,10 @@ void fb_nand_flash_write(const char *partname, unsigned int session_id, ...@@ -134,6 +144,10 @@ void fb_nand_flash_write(const char *partname, unsigned int session_id,
return; return;
} }
ret = board_fastboot_write_partition_setup(part->name);
if (ret)
return;
if (is_sparse_image(download_buffer)) { if (is_sparse_image(download_buffer)) {
struct fb_nand_sparse sparse_priv; struct fb_nand_sparse sparse_priv;
sparse_storage_t sparse; sparse_storage_t sparse;
...@@ -184,6 +198,10 @@ void fb_nand_erase(const char *partname, char *response) ...@@ -184,6 +198,10 @@ void fb_nand_erase(const char *partname, char *response)
return; return;
} }
ret = board_fastboot_erase_partition_setup(part->name);
if (ret)
return;
ret = _fb_nand_erase(nand, part); ret = _fb_nand_erase(nand, part);
if (ret) { if (ret) {
error("failed erasing from device %s", nand->name); error("failed erasing from device %s", nand->name);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment