[prev in list] [next in list] [prev in thread] [next in thread] 

List:       openocd-development
Subject:    [OpenOCD-devel] [PATCH]: 08d219b flash/nor: Export various functions from the CFI core
From:       gerrit () openocd ! org (gerrit)
Date:       2019-04-29 20:45:54
Message-ID: 20190429204554.CBF2E2522B62 () mail ! openocd ! org
[Download RAW message or body]

This is an automated email from Gerrit.

Marek Vasut (marek.vasut@gmail.com) just uploaded a new patch set to Gerrit, which \
you can find at http://openocd.zylin.com/5148

-- gerrit

commit 08d219bfd641ce021bee33db3cb4733a8f63864b
Author: Marek Vasut <marek.vasut@gmail.com>
Date:   Sat Apr 13 22:44:45 2019 +0200

    flash/nor: Export various functions from the CFI core
    
    Export various functions needed by other driver, specifically the
    upcoming Renesas RPC HF driver. No functional change.
    
    Change-Id: I551258979a7221288fb4f4382f857db5cfe0b0de
    Signed-off-by: Marek Vasut <marek.vasut@gmail.com>

diff --git a/src/flash/nor/cfi.c b/src/flash/nor/cfi.c
index 5806af1..a097b46 100644
--- a/src/flash/nor/cfi.c
+++ b/src/flash/nor/cfi.c
@@ -34,9 +34,6 @@
 #include <helper/binarybuffer.h>
 #include <target/algorithm.h>
 
-#define CFI_MAX_BUS_WIDTH       4
-#define CFI_MAX_CHIP_WIDTH      4
-
 /* defines internal maximum size for code fragment in cfi_intel_write_block() */
 #define CFI_MAX_INTEL_CODESIZE 256
 
@@ -112,7 +109,7 @@ static void cfi_fixup(struct flash_bank *bank, const struct \
cfi_fixup *fixups)  }
 }
 
-static inline uint32_t flash_address(struct flash_bank *bank, int sector, uint32_t \
offset) +uint32_t flash_address(struct flash_bank *bank, int sector, uint32_t offset)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 
@@ -172,7 +169,7 @@ static void cfi_command(struct flash_bank *bank, uint8_t cmd, \
uint8_t *cmd_buf)  }
 }
 
-static int cfi_send_command(struct flash_bank *bank, uint8_t cmd, uint32_t address)
+int cfi_send_command(struct flash_bank *bank, uint8_t cmd, uint32_t address)
 {
 	uint8_t command[CFI_MAX_BUS_WIDTH];
 
@@ -295,7 +292,7 @@ static int cfi_query_u32(struct flash_bank *bank, int sector, \
uint32_t offset, u  return ERROR_OK;
 }
 
-static int cfi_reset(struct flash_bank *bank)
+int cfi_reset(struct flash_bank *bank)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 	int retval = ERROR_OK;
@@ -376,7 +373,7 @@ static int cfi_intel_wait_status_busy(struct flash_bank *bank, \
int timeout, uint  return retval;
 }
 
-static int cfi_spansion_wait_status_busy(struct flash_bank *bank, int timeout)
+int cfi_spansion_wait_status_busy(struct flash_bank *bank, int timeout)
 {
 	uint8_t status, oldstatus;
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
@@ -816,14 +813,12 @@ static int cfi_intel_info(struct flash_bank *bank, char *buf, \
int buf_size)  return ERROR_OK;
 }
 
-/* flash_bank cfi <base> <size> <chip_width> <bus_width> <target#> [options]
- */
-FLASH_BANK_COMMAND_HANDLER(cfi_flash_bank_command)
+int cfi_flash_bank_cmd(struct flash_bank *bank, unsigned int argc, const char \
**argv)  {
 	struct cfi_flash_bank *cfi_info;
 	int bus_swap = 0;
 
-	if (CMD_ARGC < 6)
+	if (argc < 6)
 		return ERROR_COMMAND_SYNTAX_ERROR;
 
 	/* both widths must:
@@ -853,14 +848,14 @@ FLASH_BANK_COMMAND_HANDLER(cfi_flash_bank_command)
 	cfi_info->not_cfi = 0;
 	cfi_info->data_swap = 0;
 
-	for (unsigned i = 6; i < CMD_ARGC; i++) {
-		if (strcmp(CMD_ARGV[i], "x16_as_x8") == 0)
+	for (unsigned i = 6; i < argc; i++) {
+		if (strcmp(argv[i], "x16_as_x8") == 0)
 			cfi_info->x16_as_x8 = 1;
-		else if (strcmp(CMD_ARGV[i], "data_swap") == 0)
+		else if (strcmp(argv[i], "data_swap") == 0)
 			cfi_info->data_swap = 1;
-		else if (strcmp(CMD_ARGV[i], "bus_swap") == 0)
+		else if (strcmp(argv[i], "bus_swap") == 0)
 			bus_swap = 1;
-		else if (strcmp(CMD_ARGV[i], "jedec_probe") == 0)
+		else if (strcmp(argv[i], "jedec_probe") == 0)
 			cfi_info->jedec_probe = 1;
 	}
 
@@ -877,6 +872,13 @@ FLASH_BANK_COMMAND_HANDLER(cfi_flash_bank_command)
 	return ERROR_OK;
 }
 
+/* flash_bank cfi <base> <size> <chip_width> <bus_width> <target#> [options]
+ */
+FLASH_BANK_COMMAND_HANDLER(cfi_flash_bank_command)
+{
+	return cfi_flash_bank_cmd(bank, CMD_ARGC, CMD_ARGV);
+}
+
 static int cfi_intel_erase(struct flash_bank *bank, int first, int last)
 {
 	int retval;
@@ -915,7 +917,7 @@ static int cfi_intel_erase(struct flash_bank *bank, int first, \
int last)  return cfi_send_command(bank, 0xff, flash_address(bank, 0, 0x0));
 }
 
-static int cfi_spansion_unlock_seq(struct flash_bank *bank)
+int cfi_spansion_unlock_seq(struct flash_bank *bank)
 {
 	int retval;
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
@@ -972,7 +974,7 @@ static int cfi_spansion_erase(struct flash_bank *bank, int first, \
int last)  return cfi_send_command(bank, 0xf0, flash_address(bank, 0, 0x0));
 }
 
-static int cfi_erase(struct flash_bank *bank, int first, int last)
+int cfi_erase(struct flash_bank *bank, int first, int last)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 
@@ -1115,7 +1117,7 @@ static int cfi_intel_protect(struct flash_bank *bank, int set, \
int first, int la  return cfi_send_command(bank, 0xff, flash_address(bank, 0, 0x0));
 }
 
-static int cfi_protect(struct flash_bank *bank, int set, int first, int last)
+int cfi_protect(struct flash_bank *bank, int set, int first, int last)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 
@@ -2217,7 +2219,7 @@ static int cfi_spansion_write_words(struct flash_bank *bank, \
const uint8_t *word  return ERROR_OK;
 }
 
-static int cfi_write_word(struct flash_bank *bank, uint8_t *word, uint32_t address)
+int cfi_write_word(struct flash_bank *bank, uint8_t *word, uint32_t address)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 
@@ -2588,7 +2590,7 @@ static int cfi_query_string(struct flash_bank *bank, int \
address)  return ERROR_OK;
 }
 
-static int cfi_probe(struct flash_bank *bank)
+int cfi_probe(struct flash_bank *bank)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 	struct target *target = bank->target;
@@ -2924,7 +2926,7 @@ static int cfi_probe(struct flash_bank *bank)
 	return ERROR_OK;
 }
 
-static int cfi_auto_probe(struct flash_bank *bank)
+int cfi_auto_probe(struct flash_bank *bank)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 	if (cfi_info->probed)
@@ -2992,7 +2994,7 @@ static int cfi_spansion_protect_check(struct flash_bank *bank)
 	return cfi_send_command(bank, 0xf0, flash_address(bank, 0, 0x0));
 }
 
-static int cfi_protect_check(struct flash_bank *bank)
+int cfi_protect_check(struct flash_bank *bank)
 {
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
 
@@ -3020,7 +3022,7 @@ static int cfi_protect_check(struct flash_bank *bank)
 	return ERROR_OK;
 }
 
-static int get_cfi_info(struct flash_bank *bank, char *buf, int buf_size)
+int get_cfi_info(struct flash_bank *bank, char *buf, int buf_size)
 {
 	int printed;
 	struct cfi_flash_bank *cfi_info = bank->driver_priv;
diff --git a/src/flash/nor/cfi.h b/src/flash/nor/cfi.h
index e0fece0..7b1ab50 100644
--- a/src/flash/nor/cfi.h
+++ b/src/flash/nor/cfi.h
@@ -155,6 +155,27 @@ struct cfi_fixup {
 	const void *param;
 };
 
+int cfi_erase(struct flash_bank *bank, int first, int last);
+int cfi_protect(struct flash_bank *bank, int set, int first, int last);
+int cfi_probe(struct flash_bank *bank);
+int cfi_auto_probe(struct flash_bank *bank);
+int cfi_protect_check(struct flash_bank *bank);
+int get_cfi_info(struct flash_bank *bank, char *buf, int buf_size);
+int cfi_flash_bank_cmd(struct flash_bank *bank, unsigned int argc, const char \
**argv); +
+uint32_t flash_address(struct flash_bank *bank, int sector, uint32_t offset);
+int cfi_spansion_unlock_seq(struct flash_bank *bank);
+int cfi_send_command(struct flash_bank *bank, uint8_t cmd, uint32_t address);
+int cfi_write_word(struct flash_bank *bank, uint8_t *word, uint32_t address);
+int cfi_spansion_wait_status_busy(struct flash_bank *bank, int timeout);
+int cfi_reset(struct flash_bank *bank);
+
+int cfi_target_write_memory(struct flash_bank *bank, target_addr_t addr,
+			    uint32_t size, uint32_t count,
+			    const uint8_t *buffer);
+int cfi_target_read_memory(struct flash_bank *bank, target_addr_t addr,
+			   uint32_t size, uint32_t count, uint8_t *buffer);
+
 #define CFI_MFR_AMD		0x0001
 #define CFI_MFR_FUJITSU	0x0004
 #define CFI_MFR_ATMEL	0x001F
@@ -167,4 +188,7 @@ struct cfi_fixup {
 #define CFI_MFR_ANY		0xffff
 #define CFI_ID_ANY		0xffff
 
+#define CFI_MAX_BUS_WIDTH       4
+#define CFI_MAX_CHIP_WIDTH      4
+
 #endif /* OPENOCD_FLASH_NOR_CFI_H */

-- 


_______________________________________________
OpenOCD-devel mailing list
OpenOCD-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openocd-devel


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic