openocd: src/flash: replace the GPL-2.0-or-later license tag
[fw/openocd] / src / flash / nor / efm32.c
index 653878ae7b9ddb5591c810fbf5bed18e90e2036f..54fdbd8cbd152589c46b7c06dc628e9f8033214c 100644 (file)
@@ -1,3 +1,5 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+
 /***************************************************************************
  *   Copyright (C) 2005 by Dominic Rath                                    *
  *   Dominic.Rath@gmx.de                                                   *
  *                                                                         *
  *   Copyright (C) 2021 Doug Brunner                                       *
  *   doug.a.brunner@gmail.com                                              *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program.  If not, see <http://www.gnu.org/licenses/>. *
  ***************************************************************************/
 
 #ifdef HAVE_CONFIG_H
@@ -257,23 +246,19 @@ static int efm32x_write_reg_u32(struct flash_bank *bank, target_addr_t offset,
 static int efm32x_read_info(struct flash_bank *bank)
 {
        int ret;
-       uint32_t cpuid = 0;
        struct efm32x_flash_chip *efm32x_info = bank->driver_priv;
        struct efm32_info *efm32_info = &(efm32x_info->info);
 
        memset(efm32_info, 0, sizeof(struct efm32_info));
 
-       ret = target_read_u32(bank->target, CPUID, &cpuid);
-       if (ret != ERROR_OK)
-               return ret;
+       const struct cortex_m_common *cortex_m = target_to_cm(bank->target);
 
-       if (((cpuid >> 4) & 0xfff) == 0xc23) {
-               /* Cortex-M3 device */
-       } else if (((cpuid >> 4) & 0xfff) == 0xc24) {
-               /* Cortex-M4 device (WONDER GECKO) */
-       } else if (((cpuid >> 4) & 0xfff) == 0xc60) {
-               /* Cortex-M0+ device */
-       } else {
+       switch (cortex_m->core_info->partno) {
+       case CORTEX_M3_PARTNO:
+       case CORTEX_M4_PARTNO:
+       case CORTEX_M0P_PARTNO:
+               break;
+       default:
                LOG_ERROR("Target is not Cortex-Mx Device");
                return ERROR_FAIL;
        }