stm32: add new stm32f0 device id
[fw/openocd] / src / flash / nor / stm32f1x.c
index 8f2e69e6858a89b13c3d0c8ca4273cd19759c21e..5ad0b62279d37d0f5578b55ef0c93b87cb627722 100644 (file)
@@ -21,7 +21,7 @@
  *   You should have received a copy of the GNU General Public License     *
  *   along with this program; if not, write to the                         *
  *   Free Software Foundation, Inc.,                                       *
- *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.           *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -125,6 +125,7 @@ struct stm32x_flash_bank {
        uint16_t default_rdp;
        int user_data_offset;
        int option_offset;
+       uint32_t user_bank_size;
 };
 
 static int stm32x_mass_erase(struct flash_bank *bank);
@@ -147,6 +148,7 @@ FLASH_BANK_COMMAND_HANDLER(stm32x_flash_bank_command)
        stm32x_info->probed = 0;
        stm32x_info->has_dual_banks = false;
        stm32x_info->register_base = FLASH_REG_BASE_B0;
+       stm32x_info->user_bank_size = bank->size;
 
        return ERROR_OK;
 }
@@ -925,6 +927,7 @@ static int stm32x_probe(struct flash_bank *bank)
                stm32x_info->default_rdp = 0x55AA;
                break;
        case 0x440: /* stm32f0x */
+       case 0x444:
                page_size = 1024;
                stm32x_info->ppage_size = 4;
                max_flash_size_in_kb = 64;
@@ -963,9 +966,9 @@ static int stm32x_probe(struct flash_bank *bank)
 
        /* if the user sets the size manually then ignore the probed value
         * this allows us to work around devices that have a invalid flash size register value */
-       if (bank->size) {
+       if (stm32x_info->user_bank_size) {
                LOG_INFO("ignoring flash probed value, using configured bank size");
-               flash_size_in_kb = bank->size / 1024;
+               flash_size_in_kb = stm32x_info->user_bank_size / 1024;
        }
 
        LOG_INFO("flash size = %dkbytes", flash_size_in_kb);
@@ -1192,7 +1195,8 @@ static int get_stm32x_info(struct flash_bank *bank, char *buf, int buf_size)
                                snprintf(buf, buf_size, "unknown");
                                break;
                }
-       } else if ((device_id & 0xfff) == 0x440) {
+       } else if (((device_id & 0xfff) == 0x440) ||
+                       ((device_id & 0xfff) == 0x444)) {
                printed = snprintf(buf, buf_size, "stm32f0x - Rev: ");
                buf += printed;
                buf_size -= printed;