X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fflash%2Fnor%2Fdriver.h;h=9c56d4ea8ccda07c285ddd9e88e8bc7c6aa7dbf6;hp=cbf9c5282a2ce61bb2fc97950ba7c4a3c2d09e77;hb=a7479fa89def9d8b1854d629dfdaa0ba17132617;hpb=39dbb516a4489c6a934669876774ebc711a0b781 diff --git a/src/flash/nor/driver.h b/src/flash/nor/driver.h index cbf9c5282a..9c56d4ea8c 100644 --- a/src/flash/nor/driver.h +++ b/src/flash/nor/driver.h @@ -16,12 +16,11 @@ * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * - * along with this program; if not, write to the * - * Free Software Foundation, Inc., * - * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * + * along with this program. If not, see . * ***************************************************************************/ -#ifndef FLASH_NOR_DRIVER_H -#define FLASH_NOR_DRIVER_H + +#ifndef OPENOCD_FLASH_NOR_DRIVER_H +#define OPENOCD_FLASH_NOR_DRIVER_H struct flash_bank; @@ -48,13 +47,17 @@ struct flash_bank; * corresponding static flash_driver_callback() * routine in flash.c. */ -struct flash_driver -{ +struct flash_driver { /** * Gives a human-readable name of this flash driver, * This field is used to select and initialize the driver. */ - char *name; + const char *name; + + /** + * Gives a human-readable description of arguments. + */ + const char *usage; /** * An array of driver-specific commands to register. When called @@ -106,6 +109,8 @@ struct flash_driver /** * Bank/sector protection routine (target-specific). * + * If protection is not implemented, set method to NULL + * * When called, the driver should enable/disable protection * for MINIMUM the range covered by first..last sectors * inclusive. Some chips have alignment requirements will @@ -132,7 +137,7 @@ struct flash_driver * @returns ERROR_OK if successful; otherwise, an error code. */ int (*write)(struct flash_bank *bank, - uint8_t *buffer, uint32_t offset, uint32_t count); + const uint8_t *buffer, uint32_t offset, uint32_t count); /** * Read data from the flash. Note CPU address will be @@ -175,6 +180,8 @@ struct flash_driver * flash_sector_s::is_protected field for each of the flash * bank's sectors. * + * If protection is not implemented, set method to NULL + * * @param bank - the bank to check * @returns ERROR_OK if successful; otherwise, an error code. */ @@ -195,7 +202,7 @@ struct flash_driver /** * A more gentle flavor of filash_driver_s::probe, performing * setup with less noise. Generally, driver routines should test - * to seee if the bank has already been probed; if it has, the + * to see if the bank has already been probed; if it has, the * driver probably should not perform its probe a second time. * * This callback is often called from the inside of other @@ -206,15 +213,24 @@ struct flash_driver * @returns ERROR_OK if successful; otherwise, an error code. */ int (*auto_probe)(struct flash_bank *bank); + + /** + * Deallocates private driver structures. + * Use default_flash_free_driver_priv() to simply free(bank->driver_priv) + * + * @param bank - the bank being destroyed + */ + void (*free_driver_priv)(struct flash_bank *bank); }; -#define FLASH_BANK_COMMAND_HANDLER(name) static __FLASH_BANK_COMMAND(name) +#define FLASH_BANK_COMMAND_HANDLER(name) \ + static __FLASH_BANK_COMMAND(name) /** * Find a NOR flash driver by its name. * @param name The name of the requested driver. * @returns The flash_driver called @c name, or NULL if not found. */ -struct flash_driver *flash_driver_find_by_name(const char *name); +const struct flash_driver *flash_driver_find_by_name(const char *name); -#endif // FLASH_NOR_DRIVER_H +#endif /* OPENOCD_FLASH_NOR_DRIVER_H */