X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fflash%2Fflash.h;h=9cd592321c3b3a946f8e34b06f9c97e81882730b;hb=d0dfec33b6d6844c3c1b817a464b9f040ce40087;hp=fd3c4c29512f890b790bdeb8c7abe7f4c1a00c23;hpb=81fbc637185fb0007dbe84c866794800851295b5;p=openocd diff --git a/src/flash/flash.h b/src/flash/flash.h index fd3c4c29..9cd59232 100644 --- a/src/flash/flash.h +++ b/src/flash/flash.h @@ -38,7 +38,7 @@ struct image_s; * within a flash bank. A single bank typically consists of multiple * sectors, each of which can be erased and protected independently. */ -typedef struct flash_sector_s +struct flash_sector { /// Bus offset from start of the flash chip (in bytes). uint32_t offset; @@ -55,10 +55,13 @@ typedef struct flash_sector_s * @c flash_driver_s::protect_check. */ int is_protected; -} flash_sector_t; +}; struct flash_bank_s; +#define __FLASH_BANK_COMMAND(name) \ + COMMAND_HELPER(name, struct flash_bank_s *bank) + /** * @brief Provides the implementation-independent structure that defines * all of the callbacks required by OpenOCD flash drivers. @@ -79,7 +82,7 @@ struct flash_bank_s; * corresponding static flash_driver_callback() * routine in flash.c. */ -typedef struct flash_driver_s +struct flash_driver { /** * Gives a human-readable name of this flash driver, @@ -102,12 +105,6 @@ typedef struct flash_driver_s * layer when this routine is called, and the driver can store * additional information in its flash_bank_t::driver_priv field. * - * @param cmd_ctx - the command context - * @param cmd - the command, in this case 'flash' - * @param args - parameters, see below - * @param argc - number of parameters on command line - * @param bank - new filled in flash bank. - * * The args are: @par * @code * args[0] = bank @@ -127,8 +124,7 @@ typedef struct flash_driver_s * * @returns ERROR_OK if successful; otherwise, an error code. */ - int (*flash_bank_command)(struct command_context_s *cmd_ctx, - char *cmd, char **args, int argc, struct flash_bank_s *bank); + __FLASH_BANK_COMMAND((*flash_bank_command)); /** * Bank/sector erase routine (target-specific). When @@ -228,7 +224,9 @@ typedef struct flash_driver_s * @returns ERROR_OK if successful; otherwise, an error code. */ int (*auto_probe)(struct flash_bank_s *bank); -} flash_driver_t; +}; + +#define FLASH_BANK_COMMAND_HANDLER(name) static __FLASH_BANK_COMMAND(name) /** * Provides details of a flash bank, available either on-chip or through @@ -244,7 +242,7 @@ typedef struct flash_bank_s { struct target_s *target; /**< Target to which this bank belongs. */ - flash_driver_t *driver; /**< Driver for this bank. */ + struct flash_driver *driver; /**< Driver for this bank. */ void *driver_priv; /**< Private driver storage pointer */ int bank_number; /**< The 'bank' (or chip number) of this instance. */ @@ -261,7 +259,7 @@ typedef struct flash_bank_s */ int num_sectors; /// Array of sectors, allocated and initilized by the flash driver - flash_sector_t *sectors; + struct flash_sector *sectors; struct flash_bank_s *next; /**< The next flash bank on this chip */ } flash_bank_t; @@ -326,7 +324,7 @@ flash_bank_t *get_flash_bank_by_num(int num); * @returns ERROR_OK on success, or an error indicating the problem. */ int flash_command_get_bank_by_num(struct command_context_s *cmd_ctx, - char *str, flash_bank_t **bank); + const char *str, flash_bank_t **bank); /** * Returns the flash bank like get_flash_bank_by_num(), without probing. * @param num The flash bank number.