summaryrefslogtreecommitdiff
path: root/src/flash/nor/stellaris.h
diff options
context:
space:
mode:
authorDavid Brownell <dbrownell@users.sourceforge.net>2009-12-09 21:16:09 -0800
committerDavid Brownell <dbrownell@users.sourceforge.net>2009-12-09 21:16:09 -0800
commit3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450 (patch)
treeaf8d4c7ded1db47e6eabb788f1b8bfbe1891a9df /src/flash/nor/stellaris.h
parent910dd664ceb6faef5e9029e9b0848d7ccc63bf4b (diff)
downloadopenocd+libswd-3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450.tar.gz
openocd+libswd-3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450.tar.bz2
openocd+libswd-3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450.tar.xz
openocd+libswd-3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450.zip
stellaris: flash protection updates, minor fixes
Bugfix the read side of flash protection: - read the right register(s)! - handle more than 64K - record the results in the right places - don't display garbage. Partially bugfix the write side: - use 2KB lock regions instead of 1KB pages (!) - validate input range - don't try to _remove_ protection (it's write-once) - #define values we'll need to commit writes. - ... still doesn't handle pages over 64KB mark, or commit writes And minor cleanup and fixes: - get rid of some forward decls - properly locate a doxygen comment - fix some bad indentation - remove superfluous #include - add a new part ID (many are still missing) - make the downloaded algorithm code be read-only Signed-off-by: David Brownell <dbrownell@users.sourceforge.net>
Diffstat (limited to 'src/flash/nor/stellaris.h')
-rw-r--r--src/flash/nor/stellaris.h11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/flash/nor/stellaris.h b/src/flash/nor/stellaris.h
index a5f04e48..4de4f00f 100644
--- a/src/flash/nor/stellaris.h
+++ b/src/flash/nor/stellaris.h
@@ -39,7 +39,6 @@ struct stellaris_flash_bank
/* nv memory bits */
uint16_t num_lockbits;
- uint32_t lockbits;
/* main clock status */
uint32_t rcc;
@@ -67,8 +66,14 @@ struct stellaris_flash_bank
#define PLLCFG 0x064
#define RCC2 0x070
+/* "legacy" flash memory protection registers (64KB max) */
#define FMPRE 0x130
#define FMPPE 0x134
+
+/* new flash memory protection registers (for more than 64KB) */
+#define FMPRE0 0x200 /* PRE1 = PRE0 + 4, etc */
+#define FMPPE0 0x400 /* PPE1 = PPE0 + 4, etc */
+
#define USECRL 0x140
#define FLASH_CONTROL_BASE 0x400FD000
@@ -94,4 +99,8 @@ struct stellaris_flash_bank
/* STELLARIS constants */
+/* values to write in FMA to commit write-"once" values */
+#define FLASH_FMA_PRE(x) (2 * (x)) /* for FMPPREx */
+#define FLASH_FMA_PPE(x) (2 * (x) + 1) /* for FMPPPEx */
+
#endif /* STELLARIS_H */