OpenOCD
artery.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 
3 /*
4  * Copyright (C) 2023 by Marc Schink <dev@zapb.de>
5  */
6 
7 #ifndef OPENOCD_FLASH_NOR_ARTERY
8 #define OPENOCD_FLASH_NOR_ARTERY
9 
10 #define DEBUG_IDCODE 0xE0042000
11 
12 #define FLASH_BASE 0x08000000
13 
23 };
24 
36 };
37 
46 };
47 
52 };
53 
55  uint32_t pid;
56  const char *name;
57  enum artery_series series;
58  // Flash size in bytes.
59  uint32_t flash_size;
60  // Page / sector size in bytes.
61  uint32_t page_size;
62  // User system data (USD) area size including the inverse bytes.
63  uint32_t usd_size;
64  // User data area (part of the USD) size excluding the inverse bytes.
65  uint32_t usd_data_size;
66 };
67 
69  bool probed;
70  uint32_t idcode;
71  const struct artery_part_info *part_info;
72 };
73 
77  uint32_t flash_regs_base;
78  const uint32_t *flash_regs;
79  uint32_t crm_base;
80  uint32_t usd_base;
81  const uint32_t *usd_offsets;
82 };
83 
84 #define ARTERY_USD_DATA_MAX_SIZE 2012
85 
86 struct artery_usd {
88  uint8_t ssb;
89  uint32_t protection;
90  uint32_t protection_ext;
92 };
93 
94 #define CRM_REG_CTRL 0x000
95 
96 /* CRM_CTRL register bits. */
97 #define CRM_CTRL_HICKSTBL BIT(0)
98 #define CRM_CTRL_HICKEN BIT(1)
99 
100 /* FLASH_CTRL register bits. */
101 #define FLASH_CTRL_USDULKS BIT(9)
102 #define FLASH_CTRL_OPLK BIT(7)
103 #define FLASH_CTRL_ERSTR BIT(6)
104 #define FLASH_CTRL_USDERS BIT(5)
105 #define FLASH_CTRL_USDPRGM BIT(4)
106 #define FLASH_CTRL_BANKERS BIT(2)
107 #define FLASH_CTRL_SECERS BIT(1)
108 #define FLASH_CTRL_FPRGM BIT(0)
109 
110 /* FLASH_STS register bits. */
111 #define FLASH_STS_OBF BIT(0)
112 #define FLASH_STS_PRGMERR BIT(2)
113 #define FLASH_STS_EPPERR BIT(4)
114 #define FLASH_STS_ODF BIT(5)
115 
116 /* FLASH_USD register bits. */
117 #define FLASH_USD_FAP BIT(1)
118 #define FLASH_USD_FAP_HL BIT(26)
119 
120 #define FLASH_USD_SSB_OFFSET 2
121 #define FLASH_USD_USER_D0_OFFSET 10
122 #define FLASH_USD_USER_D1_OFFSET 18
123 
124 /* Flash and USD unlock keys. */
125 #define KEY1 0x45670123
126 #define KEY2 0xCDEF89AB
127 
128 #endif /* OPENOCD_FLASH_NOR_ARTERY */
artery_flash_reg_index
Definition: artery.h:25
@ ARTERY_FLASH_REG_USD
Definition: artery.h:32
@ ARTERY_FLASH_REG_USD_UNLOCK
Definition: artery.h:28
@ ARTERY_FLASH_REG_PSR
Definition: artery.h:26
@ ARTERY_FLASH_REG_ADDR
Definition: artery.h:31
@ ARTERY_FLASH_REG_INDEX_NUM
Definition: artery.h:35
@ ARTERY_FLASH_REG_EPPS1
Definition: artery.h:34
@ ARTERY_FLASH_REG_CTRL
Definition: artery.h:30
@ ARTERY_FLASH_REG_UNLOCK
Definition: artery.h:27
@ ARTERY_FLASH_REG_STS
Definition: artery.h:29
@ ARTERY_FLASH_REG_EPPS0
Definition: artery.h:33
artery_fap_level
Definition: artery.h:48
@ ARTERY_FAP_LEVEL_DISABLED
Definition: artery.h:49
@ ARTERY_FAP_LEVEL_LOW
Definition: artery.h:50
@ ARTERY_FAP_LEVEL_HIGH
Definition: artery.h:51
artery_usd_reg_index
Definition: artery.h:38
@ ARTERY_USD_FAP_INDEX
Definition: artery.h:39
@ ARTERY_USD_EPP_EXT_INDEX
Definition: artery.h:43
@ ARTERY_USD_INDEX_NUM
Definition: artery.h:45
@ ARTERY_USD_DATA_INDEX
Definition: artery.h:41
@ ARTERY_USD_DATA_EXT_INDEX
Definition: artery.h:44
@ ARTERY_USD_EPP_INDEX
Definition: artery.h:42
@ ARTERY_USD_SSB_INDEX
Definition: artery.h:40
artery_series
Definition: artery.h:14
@ ARTERY_SERIES_F413
Definition: artery.h:16
@ ARTERY_SERIES_F415
Definition: artery.h:17
@ ARTERY_SERIES_F425
Definition: artery.h:20
@ ARTERY_SERIES_F403A_F407
Definition: artery.h:15
@ ARTERY_SERIES_F423
Definition: artery.h:19
@ ARTERY_SERIES_WB415
Definition: artery.h:22
@ ARTERY_SERIES_F421
Definition: artery.h:18
@ ARTERY_SERIES_F435_F437
Definition: artery.h:21
#define ARTERY_USD_DATA_MAX_SIZE
Definition: artery.h:84
uint32_t idcode
Definition: artery.h:70
const struct artery_part_info * part_info
Definition: artery.h:71
const char * name
Definition: artery.h:56
uint32_t usd_data_size
Definition: artery.h:65
uint32_t page_size
Definition: artery.h:61
enum artery_series series
Definition: artery.h:57
uint32_t usd_size
Definition: artery.h:63
uint32_t flash_size
Definition: artery.h:59
uint32_t pid
Definition: artery.h:55
uint32_t flash_regs_base
Definition: artery.h:77
uint32_t usd_base
Definition: artery.h:80
bool has_fap_high_level
Definition: artery.h:75
uint32_t crm_base
Definition: artery.h:79
bool has_epp_ext
Definition: artery.h:76
const uint32_t * flash_regs
Definition: artery.h:78
const uint32_t * usd_offsets
Definition: artery.h:81
uint8_t data[ARTERY_USD_DATA_MAX_SIZE]
Definition: artery.h:91
uint32_t protection_ext
Definition: artery.h:90
uint32_t protection
Definition: artery.h:89
enum artery_fap_level fap_level
Definition: artery.h:87
uint8_t ssb
Definition: artery.h:88