X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fflash%2Fflash.h;h=9cd592321c3b3a946f8e34b06f9c97e81882730b;hb=d0dfec33b6d6844c3c1b817a464b9f040ce40087;hp=7f5875edde3dd79a2ac331748c81243c8c9629b8;hpb=2821115ab8c501e1db660df1fc18621847226d09;p=openocd diff --git a/src/flash/flash.h b/src/flash/flash.h index 7f5875ed..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, @@ -121,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 @@ -222,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 @@ -238,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. */ @@ -255,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;