- stellaris_info->num_lockbits = 1 + (stellaris_info->dc0 & 0xFFFF);
- stellaris_info->num_pages = 2 * (1 + (stellaris_info->dc0 & 0xFFFF));
- stellaris_info->pagesize = 1024;
- stellaris_info->pages_in_lockregion = 2;
+ if (stellaris_info->target_class == 5) { /* Blizzard */
+ target_read_u32(target, FLASH_FSIZE, &stellaris_info->fsize);
+ target_read_u32(target, FLASH_SSIZE, &stellaris_info->ssize);
+
+ stellaris_info->num_lockbits = 1 + (stellaris_info->fsize & 0xFFFF);
+ stellaris_info->num_pages = 2 * (1 + (stellaris_info->fsize & 0xFFFF));
+ stellaris_info->sramsiz = (1 + (stellaris_info->ssize & 0xFFFF)) / 4;
+ stellaris_info->pagesize = 1024;
+ stellaris_info->pages_in_lockregion = 2;
+ } else if (stellaris_info->target_class == 0xa) { /* Snowflake */
+ target_read_u32(target, FLASH_FSIZE, &stellaris_info->fsize);
+ target_read_u32(target, FLASH_SSIZE, &stellaris_info->ssize);
+
+ stellaris_info->pagesize = (1 << ((stellaris_info->fsize >> 16) & 7)) * 1024;
+ stellaris_info->num_pages = 2048 * (1 + (stellaris_info->fsize & 0xFFFF)) /
+ stellaris_info->pagesize;
+ stellaris_info->pages_in_lockregion = 1;
+
+ stellaris_info->num_lockbits = stellaris_info->pagesize * stellaris_info->num_pages /
+ 2048;
+ stellaris_info->sramsiz = (1 + (stellaris_info->ssize & 0xFFFF)) / 4;
+ } else {
+ stellaris_info->num_lockbits = 1 + (stellaris_info->dc0 & 0xFFFF);
+ stellaris_info->num_pages = 2 * (1 + (stellaris_info->dc0 & 0xFFFF));
+ stellaris_info->sramsiz = (1 + ((stellaris_info->dc0 >> 16) & 0xFFFF)) / 4;
+ stellaris_info->pagesize = 1024;
+ stellaris_info->pages_in_lockregion = 2;
+ }