X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fflash.h;h=b707b511c2f7034d62b22b332f2c55c50cdbd69a;hp=b90b64ebe2654d5904171e2a8858d768ba3a797c;hb=d17e1cd93384d56886be7e67cf2b31e97118d811;hpb=02f3765351c9e25185b745b84f1a2604fb2149c7 diff --git a/src/flash/flash.h b/src/flash/flash.h index b90b64ebe2..b707b511c2 100644 --- a/src/flash/flash.h +++ b/src/flash/flash.h @@ -40,13 +40,25 @@ typedef struct flash_driver_s char *name; int (*register_commands)(struct command_context_s *cmd_ctx); int (*flash_bank_command)(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank); + /* low level flash erase. Only invoke from flash_driver_erase() + * + * Will only be invoked when target is halted. + */ int (*erase)(struct flash_bank_s *bank, int first, int last); + /* invoked only from flash_driver_protect(). + * + * Only invoked if target is halted + */ int (*protect)(struct flash_bank_s *bank, int set, int first, int last); + /* low level flash write. Will only be invoked if the target is halted. + * use the flash_driver_write() wrapper to invoke. + */ int (*write)(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count); int (*probe)(struct flash_bank_s *bank); int (*erase_check)(struct flash_bank_s *bank); int (*protect_check)(struct flash_bank_s *bank); int (*info)(struct flash_bank_s *bank, char *buf, int buf_size); + int (*auto_probe)(struct flash_bank_s *bank); } flash_driver_t; typedef struct flash_bank_s @@ -63,18 +75,12 @@ typedef struct flash_bank_s struct flash_bank_s *next; } flash_bank_t; -enum flash_image_op -{ - flash_image_op_write = 0, - flash_image_op_verify, - flash_image_op_erase -}; - extern int flash_register_commands(struct command_context_s *cmd_ctx); -extern int flash_init(struct command_context_s *cmd_ctx); +extern int flash_init_drivers(struct command_context_s *cmd_ctx); -extern int flash_erase(target_t *target, u32 addr, u32 length); -extern int flash_image_operation(target_t *target, image_t *image, u32 *written, char **error_str, int *failed, enum flash_image_op op); +extern int flash_erase_address_range(target_t *target, u32 addr, u32 length); +extern int flash_write(target_t *target, image_t *image, u32 *written, int erase); +extern void flash_set_dirty(void); extern flash_bank_t *get_flash_bank_by_num(int num); extern flash_bank_t *get_flash_bank_by_addr(target_t *target, u32 addr);