From de353010c314130d9d45b080142c0a9a4ad0d447 Mon Sep 17 00:00:00 2001 From: Andreas Fritiofson Date: Tue, 9 Jul 2013 23:59:22 +0200 Subject: [PATCH] flash/stm32*: Sync all device/rev IDs with reference manuals Uppercase device/family names and change them to be more specific and consistent across all STM32 families. High-density STM32F10x has a Rev Y according to RM0008 Rev 14, so add it. I have a STM32F30x Rev Y, sitting on my desk, but it isn't described in the reference manual. Add it as well. Split the STM32L1xx Medium+ Density devices based on ID, to match the reference manual. If I read it correctly, the Medium+ devices have different revision mappings depending on their package/device ID. I have no real devices to examine, however. Change-Id: I5b95e5fa3cdeba219aa96838ea06ec1bb62bd921 Signed-off-by: Andreas Fritiofson Reviewed-on: http://openocd.zylin.com/1497 Tested-by: jenkins Reviewed-by: Spencer Oliver --- src/flash/nor/stm32f1x.c | 30 +++++++++++++++++++----------- src/flash/nor/stm32f2x.c | 6 +++--- src/flash/nor/stm32lx.c | 17 +++++++++++++---- 3 files changed, 35 insertions(+), 18 deletions(-) diff --git a/src/flash/nor/stm32f1x.c b/src/flash/nor/stm32f1x.c index 3c360fcd0f..4244ba2458 100644 --- a/src/flash/nor/stm32f1x.c +++ b/src/flash/nor/stm32f1x.c @@ -1030,7 +1030,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) switch (device_id) { case 0x410: - device_str = "stm32x (Medium Density)"; + device_str = "STM32F10x (Medium Density)"; switch (rev_id) { case 0x0000: @@ -1052,7 +1052,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x412: - device_str = "stm32x (Low Density)"; + device_str = "STM32F10x (Low Density)"; switch (rev_id) { case 0x1000: @@ -1062,7 +1062,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x414: - device_str = "stm32x (High Density)"; + device_str = "STM32F10x (High Density)"; switch (rev_id) { case 0x1000: @@ -1072,11 +1072,15 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) case 0x1001: rev_str = "Z"; break; + + case 0x1003: + rev_str = "Y"; + break; } break; case 0x418: - device_str = "stm32x (Connectivity)"; + device_str = "STM32F10x (Connectivity)"; switch (rev_id) { case 0x1000: @@ -1090,7 +1094,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x420: - device_str = "stm32x (Value)"; + device_str = "STM32F100 (Low/Medium Density)"; switch (rev_id) { case 0x1000: @@ -1104,7 +1108,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x422: - device_str = "stm32f30x"; + device_str = "STM32F30x"; switch (rev_id) { case 0x1000: @@ -1115,6 +1119,10 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) rev_str = "Z"; break; + case 0x1003: + rev_str = "Y"; + break; + case 0x2000: rev_str = "B"; break; @@ -1122,7 +1130,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x428: - device_str = "stm32x (Value HD)"; + device_str = "STM32F100 (High Density)"; switch (rev_id) { case 0x1000: @@ -1136,7 +1144,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x430: - device_str = "stm32x (XL)"; + device_str = "STM32F10x (XL Density)"; switch (rev_id) { case 0x1000: @@ -1146,7 +1154,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; case 0x432: - device_str = "stm32f37x"; + device_str = "STM32F37x"; switch (rev_id) { case 0x1000: @@ -1161,7 +1169,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) case 0x440: case 0x444: - device_str = "stm32f0x"; + device_str = "STM32F0xx"; switch (rev_id) { case 0x1000: @@ -1175,7 +1183,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; default: - snprintf(buf, buf_size, "Cannot identify target as a stm32x\n"); + snprintf(buf, buf_size, "Cannot identify target as a STM32F0/1/3\n"); return ERROR_FAIL; } diff --git a/src/flash/nor/stm32f2x.c b/src/flash/nor/stm32f2x.c index 0593bfdda2..719fa1a412 100644 --- a/src/flash/nor/stm32f2x.c +++ b/src/flash/nor/stm32f2x.c @@ -871,7 +871,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) switch (device_id) { case 0x411: - device_str = "stm32f2x"; + device_str = "STM32F2xx"; switch (rev_id) { case 0x1000: @@ -898,7 +898,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) case 0x413: case 0x419: - device_str = "stm32f4x"; + device_str = "STM32F4xx"; switch (rev_id) { case 0x1000: @@ -912,7 +912,7 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size) break; default: - snprintf(buf, buf_size, "Cannot identify target as a stm32x\n"); + snprintf(buf, buf_size, "Cannot identify target as a STM32F2/4\n"); return ERROR_FAIL; } diff --git a/src/flash/nor/stm32lx.c b/src/flash/nor/stm32lx.c index b907ff2246..181c3118b4 100644 --- a/src/flash/nor/stm32lx.c +++ b/src/flash/nor/stm32lx.c @@ -709,7 +709,7 @@ static int stm32lx_get_info(struct flash_bank *bank, char *buf, int buf_size) switch (device_id) { case 0x416: - device_str = "stm32lx"; + device_str = "STM32L1xx (Low/Medium Density)"; switch (rev_id) { case 0x1000: @@ -734,9 +734,18 @@ static int stm32lx_get_info(struct flash_bank *bank, char *buf, int buf_size) } break; - case 0x436: case 0x427: - device_str = "stm32lx (HD)"; + device_str = "STM32L1xx (Medium+ Density)"; + + switch (rev_id) { + case 0x1018: + rev_str = "A"; + break; + } + break; + + case 0x436: + device_str = "STM32L1xx (Medium+/High Density)"; switch (rev_id) { case 0x1000: @@ -754,7 +763,7 @@ static int stm32lx_get_info(struct flash_bank *bank, char *buf, int buf_size) break; default: - snprintf(buf, buf_size, "Cannot identify target as a stm32lx"); + snprintf(buf, buf_size, "Cannot identify target as a STM32L1"); return ERROR_FAIL; } -- 2.30.2