cfi-flash: Add CFG_FLASH_AUTOPROTECT_LIST
PATCH v2 1/1 cfi-flash: Add CFG_FLASH_AUTOPROTECT_LIST
This patch adds a configurable flash auto protection list that can be used to make U-Boot protect flash regions in flash_init().
The idea has been discussed on the u-boot mailing list starting on Nov 18th, 2007.
Even this patch brings a new feature it is used as a bugfix for 4xx platforms where flash_init() does not completely protect the monitor's flash range in all situations.
U-Boot protects the flash range from CFG_MONITOR_BASE to (CFG_MONITOR_BASE + monitor_flash_len - 1) by default. This does not include the reset vector at 0xfffffffc.
Example:
#define CFG_FLASH_AUTOPROTECT_LIST {{0xfff80000, 0x80000}}
This config option will auto protect the last 512k of flash that contains the bootloader on board like APC405 and PMC405.
--- drivers/mtd/cfi_flash.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)
drivers/mtd/cfi_flash.c +21 -0
@@ -169,6 +169,17 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* FLASH chips info */#define CFG_FLASH_CFI_WIDTH FLASH_CFI_8BIT#endif +struct apl_s { +ulong start; +ulong size; +}; + +#if !defined(CFG_FLASH_AUTOPROTECT_LIST ) +struct apl_s apl[] = {}; +#else +struct apl_s apl[] =CFG_FLASH_AUTOPROTECT_LIST ; +#endif +typedef unsigned long flash_sect_t ;/* CFI standard query structure */
@@ -1966,6 +1977,16 @@ unsigned long flash_init (void)CFG_ENV_ADDR_REDUND +CFG_ENV_SIZE_REDUND -1 , flash_get_info(CFG_ENV_ADDR_REDUND));#endif + +for (i =0 ; i <ARRAY_SIZE (apl); i++) { +debug ("autoprotecting from %08x to %08x\n" , + apl[i].start, apl[i].start + apl[i].size -1 ); +flash_protect (FLAG_PROTECT_SET , + apl[i].start, + apl[i].start + apl[i].size -1 , +flash_get_info (apl[i].start)); + } +return (size); }
Signature · 1 line
1.5.3
Wolfgang Denk
NAKPATCH v2 1/1 cfi-flash: Add CFG_FLASH_AUTOPROTECT_LIST
Quoted 33 lines · In message <[email protected]> you wrote:
This patch adds a configurable flash auto protection list that can be used to make U-Boot protect flash regions in
flash_init().The idea has been discussed on the u-boot mailing list starting on Nov 18th, 2007.
Even this patch brings a new feature it is used as a bugfix for 4xx platforms where
flash_init()does not completely protect the monitor's flash range in all situations.U-Boot protects the flash range from
CFG_MONITOR_BASEto (CFG_MONITOR_BASE+monitor_flash_len- 1) by default. This does not include the reset vector at0xfffffffc.Example:
#defineCFG_FLASH_AUTOPROTECT_LIST{{0xfff80000,0x80000}}This config option will auto protect the last 512k of flash that contains the bootloader on board like APC405 and PMC405.
Signed-off-by Matthias Fuchs <[email protected]>--- drivers/mtd/cfi_flash.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)drivers/mtd/cfi_flash.c +0
-0@@ -169,6 +169,17 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* FLASH chips info */#define CFG_FLASH_CFI_WIDTH FLASH_CFI_8BIT#endif
drivers/mtd/cfi_flash.c flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* FLASH chips info */ · line 181
Quoted 10 lines
drivers/mtd/cfi_flash.c +10
-0+struct apl_s { +ulong start; +ulong size; +}; + +#if !defined(CFG_FLASH_AUTOPROTECT_LIST ) +struct apl_s apl[] = {}; +#else +struct apl_s apl[] =CFG_FLASH_AUTOPROTECT_LIST ; +#endif
No. Please don't add any code nor data when CFG_FLASH_AUTOPROTECT_LIST is undefined.
Quoted 7 lines
drivers/mtd/cfi_flash.c +0
-0typedef unsigned long flash_sect_t ;/* CFI standard query structure */ @@ -1966,6 +1977,16 @@ unsigned long flash_init (void)CFG_ENV_ADDR_REDUND +CFG_ENV_SIZE_REDUND -1 , flash_get_info(CFG_ENV_ADDR_REDUND));#endif
drivers/mtd/cfi_flash.c unsigned long flash_init (void) · line 1989
Quoted 10 lines
drivers/mtd/cfi_flash.c +10
-0+ +for (i =0 ; i <ARRAY_SIZE (apl); i++) { +debug ("autoprotecting from %08x to %08x\n" , + apl[i].start, apl[i].start + apl[i].size -1 ); +flash_protect (FLAG_PROTECT_SET , + apl[i].start, + apl[i].start + apl[i].size -1 , +flash_get_info (apl[i].start)); + } +
No. Please don't add any code nor data when CFG_FLASH_AUTOPROTECT_LIST is undefined.
NAK.
Best regards,
Wolfgang Denk
Signature · 7 lines
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-10 Fax: (+49)-8142-66989-80 Email: wd at denx.de
Lady Nancy Astor:
"Winston, if you were my husband, I'd put poison in your coffee."
Winston Churchill:
"Nancy, if you were my wife, I'd drink it."PATCH v2 1/1 cfi-flash: Add CFG_FLASH_AUTOPROTECT_LIST
Hi,
let me summarize: let's take my initial patch that I posted on Friday. At least two people will be satisfied :-)
Matthias
Quoted 75 lines · Wolfgang Denk
Quoted 33 lines · In message <[email protected]> you wrote:
This patch adds a configurable flash auto protection list that can be used to make U-Boot protect flash regions in
flash_init().The idea has been discussed on the u-boot mailing list starting on Nov 18th, 2007.
Even this patch brings a new feature it is used as a bugfix for 4xx platforms where
flash_init()does not completely protect the monitor's flash range in all situations.U-Boot protects the flash range from
CFG_MONITOR_BASEto (CFG_MONITOR_BASE+monitor_flash_len- 1) by default. This does not include the reset vector at0xfffffffc.Example:
#defineCFG_FLASH_AUTOPROTECT_LIST{{0xfff80000,0x80000}}This config option will auto protect the last 512k of flash that contains the bootloader on board like APC405 and PMC405.
Signed-off-by Matthias Fuchs <[email protected]>--- drivers/mtd/cfi_flash.c | 21 +++++++++++++++++++++ 1 files changed, 21 insertions(+), 0 deletions(-)drivers/mtd/cfi_flash.c +0
-0@@ -169,6 +169,17 @@ flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* FLASH chips info */#define CFG_FLASH_CFI_WIDTH FLASH_CFI_8BIT#endif drivers/mtd/cfi_flash.c flash_info_t flash_info[CFG_MAX_FLASH_BANKS]; /* FLASH chips info */ · line 181
Quoted 10 lines
drivers/mtd/cfi_flash.c +10
-0+struct apl_s { +ulong start; +ulong size; +}; + +#if !defined(CFG_FLASH_AUTOPROTECT_LIST ) +struct apl_s apl[] = {}; +#else +struct apl_s apl[] =CFG_FLASH_AUTOPROTECT_LIST ; +#endif No. Please don't add any code nor data when
CFG_FLASH_AUTOPROTECT_LISTis undefined.Quoted 7 lines
drivers/mtd/cfi_flash.c +0
-0typedef unsigned long flash_sect_t ;/* CFI standard query structure */ @@ -1966,6 +1977,16 @@ unsigned long flash_init (void)CFG_ENV_ADDR_REDUND +CFG_ENV_SIZE_REDUND -1 , flash_get_info(CFG_ENV_ADDR_REDUND));#endif drivers/mtd/cfi_flash.c unsigned long flash_init (void) · line 1989
Quoted 10 lines
drivers/mtd/cfi_flash.c +10
-0+ +for (i =0 ; i <ARRAY_SIZE (apl); i++) { +debug ("autoprotecting from %08x to %08x\n" , + apl[i].start, apl[i].start + apl[i].size -1 ); +flash_protect (FLAG_PROTECT_SET , + apl[i].start, + apl[i].start + apl[i].size -1 , +flash_get_info (apl[i].start)); + } +No. Please don't add any code nor data when
CFG_FLASH_AUTOPROTECT_LISTis undefined.NAK.
Best regards,
Wolfgang Denk
PATCH v2 1/1 cfi-flash: Add CFG_FLASH_AUTOPROTECT_LIST
Quoted 2 lines · Matthias Fuchs
let me summarize: let's take my initial patch that I posted on Friday. At least two people will be satisfied :-)
OK.
I applied the first version to the u-boot-cfi-flash repository.
Thanks.
Best regards,
Stefan
=====================================================================
DENX Software Engineering GmbH, MD: Wolfgang Denk & Detlev Zundel
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: +49-8142-66989-0 Fax: +49-8142-66989-80 Email: office at denx.de
=====================================================================