diff options
author | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2010-11-27 00:00:38 +0800 |
---|---|---|
committer | Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com> | 2010-12-03 01:53:12 +0800 |
commit | 322b9af8755472bdec13515dd61196d768f0b02b (patch) | |
tree | ed4ec611aaff16ed4d82bb0548d272f9730b57b0 | |
parent | 4a7f56056d6aa12a0449f03eb038e4d2bf7fdd49 (diff) | |
download | barebox-322b9af8755472bdec13515dd61196d768f0b02b.tar.gz barebox-322b9af8755472bdec13515dd61196d768f0b02b.tar.xz |
cfi_flash: move intel real protect flash support to cfi_flash_intel.c
let an empty function for amd as we will add later atmel real protect flash
Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>
-rw-r--r-- | drivers/nor/cfi_flash.c | 10 | ||||
-rw-r--r-- | drivers/nor/cfi_flash.h | 1 | ||||
-rw-r--r-- | drivers/nor/cfi_flash_amd.c | 6 | ||||
-rw-r--r-- | drivers/nor/cfi_flash_intel.c | 13 |
4 files changed, 24 insertions, 6 deletions
diff --git a/drivers/nor/cfi_flash.c b/drivers/nor/cfi_flash.c index fa5e5ee86c..08e45ef2bb 100644 --- a/drivers/nor/cfi_flash.c +++ b/drivers/nor/cfi_flash.c @@ -638,12 +638,10 @@ static int flash_real_protect (struct flash_info *info, long sector, int prot) { int retcode = 0; - flash_write_cmd (info, sector, 0, FLASH_CMD_CLEAR_STATUS); - flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT); - if (prot) - flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_SET); - else - flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_CLEAR); + retcode = info->cfi_cmd_set->flash_real_protect(info, sector, prot); + + if (retcode) + return retcode; if ((retcode = flash_status_check (info, sector, info->erase_blk_tout, diff --git a/drivers/nor/cfi_flash.h b/drivers/nor/cfi_flash.h index 057e56c6eb..ee1a6f0ed3 100644 --- a/drivers/nor/cfi_flash.h +++ b/drivers/nor/cfi_flash.h @@ -76,6 +76,7 @@ struct cfi_cmd_set { void (*flash_read_jedec_ids) (struct flash_info *info); void (*flash_prepare_write) (struct flash_info *info); int (*flash_status_check) (struct flash_info *info, flash_sect_t sector, uint64_t tout, char *prompt); + int (*flash_real_protect) (struct flash_info *info, long sector, int prot); }; extern struct cfi_cmd_set cfi_cmd_set_intel; diff --git a/drivers/nor/cfi_flash_amd.c b/drivers/nor/cfi_flash_amd.c index 45b7e5ce99..b10f7b267d 100644 --- a/drivers/nor/cfi_flash_amd.c +++ b/drivers/nor/cfi_flash_amd.c @@ -133,6 +133,11 @@ static int amd_flash_write_cfibuffer (struct flash_info *info, ulong dest, const #define amd_flash_write_cfibuffer NULL #endif /* CONFIG_CFI_BUFFER_WRITE */ +static int amd_flash_real_protect (struct flash_info *info, long sector, int prot) +{ + return 0; +} + struct cfi_cmd_set cfi_cmd_set_amd = { .flash_write_cfibuffer = amd_flash_write_cfibuffer, .flash_erase_one = amd_flash_erase_one, @@ -140,5 +145,6 @@ struct cfi_cmd_set cfi_cmd_set_amd = { .flash_read_jedec_ids = amd_read_jedec_ids, .flash_prepare_write = amd_flash_prepare_write, .flash_status_check = flash_generic_status_check, + .flash_real_protect = amd_flash_real_protect, }; diff --git a/drivers/nor/cfi_flash_intel.c b/drivers/nor/cfi_flash_intel.c index 43447609d8..a71f7c455d 100644 --- a/drivers/nor/cfi_flash_intel.c +++ b/drivers/nor/cfi_flash_intel.c @@ -126,6 +126,18 @@ static int intel_flash_status_check (struct flash_info *info, flash_sect_t secto return retcode; } +static int intel_flash_real_protect (struct flash_info *info, long sector, int prot) +{ + flash_write_cmd (info, sector, 0, FLASH_CMD_CLEAR_STATUS); + flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT); + if (prot) + flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_SET); + else + flash_write_cmd (info, sector, 0, FLASH_CMD_PROTECT_CLEAR); + + return 0; +} + struct cfi_cmd_set cfi_cmd_set_intel = { .flash_write_cfibuffer = intel_flash_write_cfibuffer, .flash_erase_one = intel_flash_erase_one, @@ -133,5 +145,6 @@ struct cfi_cmd_set cfi_cmd_set_intel = { .flash_read_jedec_ids = intel_read_jedec_ids, .flash_prepare_write = intel_flash_prepare_write, .flash_status_check = intel_flash_status_check, + .flash_real_protect = intel_flash_real_protect, }; |