summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2010-11-27 00:00:38 +0800
committerJean-Christophe PLAGNIOL-VILLARD <plagnioj@jcrosoft.com>2010-12-03 01:53:12 +0800
commit322b9af8755472bdec13515dd61196d768f0b02b (patch)
treeed4ec611aaff16ed4d82bb0548d272f9730b57b0
parent4a7f56056d6aa12a0449f03eb038e4d2bf7fdd49 (diff)
downloadbarebox-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.c10
-rw-r--r--drivers/nor/cfi_flash.h1
-rw-r--r--drivers/nor/cfi_flash_amd.c6
-rw-r--r--drivers/nor/cfi_flash_intel.c13
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,
};