From f486f86c6c1aff3248fb556541fe1a18ca456c46 Mon Sep 17 00:00:00 2001 From: ntfreak Date: Wed, 1 Jul 2009 10:15:53 +0000 Subject: [PATCH] - correct stm32 connectivity line programming as per latest manual git-svn-id: svn://svn.berlios.de/openocd/trunk@2439 b42882b7-edfa-0310-969c-e2dbd0fdcd60 --- src/flash/stm32x.c | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/flash/stm32x.c b/src/flash/stm32x.c index e9f121fc8..774b7d375 100644 --- a/src/flash/stm32x.c +++ b/src/flash/stm32x.c @@ -304,14 +304,15 @@ static int stm32x_protect_check(struct flash_bank_s *bank) if (stm32x_info->ppage_size == 2) { - /* high density flash */ + /* high density flash/connectivity line protection */ set = 1; if (protection & (1 << 31)) set = 0; - /* bit 31 controls sector 62 - 255 protection */ + /* bit 31 controls sector 62 - 255 protection for high density + * bit 31 controls sector 62 - 127 protection for connectivity line */ for (s = 62; s < bank->num_sectors; s++) { bank->sectors[s].is_protected = set; @@ -333,7 +334,7 @@ static int stm32x_protect_check(struct flash_bank_s *bank) } else { - /* medium density flash */ + /* low/medium density flash protection */ for (i = 0; i < num_bits; i++) { set = 1; @@ -776,10 +777,10 @@ static int stm32x_probe(struct flash_bank_s *bank) } else if ((device_id & 0x7ff) == 0x418) { - /* connectivity line density - we have 1k pages - * 4 pages for a protection area */ - page_size = 1024; - stm32x_info->ppage_size = 4; + /* connectivity line density - we have 2k pages + * 2 pages for a protection area */ + page_size = 2048; + stm32x_info->ppage_size = 2; /* check for early silicon */ if (num_pages == 0xffff) @@ -921,6 +922,10 @@ static int stm32x_info(struct flash_bank_s *bank, char *buf, int buf_size) snprintf(buf, buf_size, "A"); break; + case 0x1001: + snprintf(buf, buf_size, "Z"); + break; + default: snprintf(buf, buf_size, "unknown"); break;