]> git.gag.com Git - fw/openocd/blobdiff - src/flash/flash.h
- "flash write_binary" is now "flash write_bank" to clarify the focus of the
[fw/openocd] / src / flash / flash.h
index 1ef74c8909f79282fa6a05fbda3216e1a982aa0a..e8262efa63aff831911a58a22c26126ad7793c27 100644 (file)
@@ -1,86 +1,97 @@
-/***************************************************************************
- *   Copyright (C) 2005 by Dominic Rath                                    *
- *   Dominic.Rath@gmx.de                                                   *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   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.             *
- ***************************************************************************/
-#ifndef FLASH_H
-#define FLASH_H
-
-#include "target.h"
-#include "image.h"
-
-#define FLASH_MAX_ERROR_STR    (128)
-
-typedef struct flash_sector_s
-{
-       u32 offset;
-       u32 size;
-       int is_erased;
-       int is_protected;
-} flash_sector_t;
-
-struct flash_bank_s;
-
-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);
-       int (*erase)(struct flash_bank_s *bank, int first, int last);
-       int (*protect)(struct flash_bank_s *bank, int set, int first, int last);
-       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
-{
-       target_t *target;
-       flash_driver_t *driver;
-       void *driver_priv;
-       u32 base;
-       u32 size;
-       int chip_width;
-       int bus_width;
-       int num_sectors;
-       flash_sector_t *sectors;
-       struct flash_bank_s *next;
-} flash_bank_t;
-
-extern int flash_register_commands(struct command_context_s *cmd_ctx);
-extern int flash_init_drivers(struct command_context_s *cmd_ctx);
-
-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, char **error, int *failed, 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);
-
-#define                ERROR_FLASH_BANK_INVALID                (-900)
-#define                ERROR_FLASH_SECTOR_INVALID              (-901)
-#define                ERROR_FLASH_OPERATION_FAILED    (-902)
-#define                ERROR_FLASH_DST_OUT_OF_BANK             (-903)
-#define                ERROR_FLASH_DST_BREAKS_ALIGNMENT (-904)
-#define                ERROR_FLASH_BUSY                                (-905)
-#define                ERROR_FLASH_SECTOR_NOT_ERASED   (-906)
-#define                ERROR_FLASH_BANK_NOT_PROBED             (-907)
-
-#endif /* FLASH_H */
+/***************************************************************************\r
+ *   Copyright (C) 2005 by Dominic Rath                                    *\r
+ *   Dominic.Rath@gmx.de                                                   *\r
+ *                                                                         *\r
+ *   This program is free software; you can redistribute it and/or modify  *\r
+ *   it under the terms of the GNU General Public License as published by  *\r
+ *   the Free Software Foundation; either version 2 of the License, or     *\r
+ *   (at your option) any later version.                                   *\r
+ *                                                                         *\r
+ *   This program is distributed in the hope that it will be useful,       *\r
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *\r
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *\r
+ *   GNU General Public License for more details.                          *\r
+ *                                                                         *\r
+ *   You should have received a copy of the GNU General Public License     *\r
+ *   along with this program; if not, write to the                         *\r
+ *   Free Software Foundation, Inc.,                                       *\r
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *\r
+ ***************************************************************************/\r
+#ifndef FLASH_H\r
+#define FLASH_H\r
+\r
+#include "target.h"\r
+#include "image.h"\r
+\r
+#define FLASH_MAX_ERROR_STR    (128)\r
+\r
+typedef struct flash_sector_s\r
+{\r
+       u32 offset;\r
+       u32 size;\r
+       int is_erased;\r
+       int is_protected;\r
+} flash_sector_t;\r
+\r
+struct flash_bank_s;\r
+\r
+typedef struct flash_driver_s\r
+{\r
+       char *name;\r
+       int (*register_commands)(struct command_context_s *cmd_ctx);\r
+       int (*flash_bank_command)(struct command_context_s *cmd_ctx, char *cmd, char **args, int argc, struct flash_bank_s *bank);\r
+       /* low level flash erase. Only invoke from flash_driver_erase()\r
+        * \r
+        * Will only be invoked when target is halted. \r
+        */\r
+       int (*erase)(struct flash_bank_s *bank, int first, int last);\r
+       /* invoked only from flash_driver_protect().\r
+        *  \r
+        * Only invoked if target is halted\r
+        */\r
+       int (*protect)(struct flash_bank_s *bank, int set, int first, int last);\r
+       /* low level flash write. Will only be invoked if the target is halted.\r
+        * use the flash_driver_write() wrapper to invoke.\r
+        */\r
+       int (*write)(struct flash_bank_s *bank, u8 *buffer, u32 offset, u32 count);\r
+       int (*probe)(struct flash_bank_s *bank);\r
+       int (*erase_check)(struct flash_bank_s *bank);\r
+       int (*protect_check)(struct flash_bank_s *bank);\r
+       int (*info)(struct flash_bank_s *bank, char *buf, int buf_size);\r
+       int (*auto_probe)(struct flash_bank_s *bank);\r
+} flash_driver_t;\r
+\r
+typedef struct flash_bank_s\r
+{\r
+       target_t *target;\r
+       flash_driver_t *driver;\r
+       void *driver_priv;\r
+       u32 base;\r
+       u32 size;\r
+       int chip_width;\r
+       int bus_width;\r
+       int num_sectors;\r
+       flash_sector_t *sectors;\r
+       struct flash_bank_s *next;\r
+} flash_bank_t;\r
+\r
+extern int flash_register_commands(struct command_context_s *cmd_ctx);\r
+extern int flash_init_drivers(struct command_context_s *cmd_ctx);\r
+\r
+extern int flash_erase_address_range(target_t *target, u32 addr, u32 length);\r
+extern int flash_write(target_t *target, image_t *image, u32 *written, int erase);\r
+extern void flash_set_dirty(void);\r
+\r
+extern flash_bank_t *get_flash_bank_by_num(int num);\r
+extern flash_bank_t *get_flash_bank_by_addr(target_t *target, u32 addr);\r
+\r
+#define                ERROR_FLASH_BANK_INVALID                (-900)\r
+#define                ERROR_FLASH_SECTOR_INVALID              (-901)\r
+#define                ERROR_FLASH_OPERATION_FAILED    (-902)\r
+#define                ERROR_FLASH_DST_OUT_OF_BANK             (-903)\r
+#define                ERROR_FLASH_DST_BREAKS_ALIGNMENT (-904)\r
+#define                ERROR_FLASH_BUSY                                (-905)\r
+#define                ERROR_FLASH_SECTOR_NOT_ERASED   (-906)\r
+#define                ERROR_FLASH_BANK_NOT_PROBED             (-907)\r
+\r
+#endif /* FLASH_H */\r