* @param last The number of the last sector to erase, typically N-1.
* @returns ERROR_OK if successful; otherwise, an error code.
*/
- int (*erase)(struct flash_bank *bank, int first, int last);
+ int (*erase)(struct flash_bank *bank, unsigned int first,
+ unsigned int last);
/**
* 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
* @param last The last sector to (un)project, typically N-1.
* @returns ERROR_OK if successful; otherwise, an error code.
*/
- int (*protect)(struct flash_bank *bank, int set, int first, int last);
+ int (*protect)(struct flash_bank *bank, int set, unsigned int first,
+ unsigned int last);
/**
* Program data into the flash. Note CPU address will be
* 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.
*/
* @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) \
* @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 /* OPENOCD_FLASH_NOR_DRIVER_H */