diff options
author | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-09 21:16:09 -0800 |
---|---|---|
committer | David Brownell <dbrownell@users.sourceforge.net> | 2009-12-09 21:16:09 -0800 |
commit | 3d9cb516c2cf4f5c5d77fb96899f1c44eb3f3450 (patch) | |
tree | af8d4c7ded1db47e6eabb788f1b8bfbe1891a9df /src/flash/nor/stellaris.h | |
parent | 910dd664ceb6faef5e9029e9b0848d7ccc63bf4b (diff) |
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.h | 11 |
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 */ |